ctt-puro 0.57.2 → 0.57.3
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.
|
@@ -882,7 +882,7 @@ export class MapperService {
|
|
|
882
882
|
const rawItems = destinations.flatMap((dest) => {
|
|
883
883
|
const children = dest?.children ?? [];
|
|
884
884
|
return children
|
|
885
|
-
?.filter((hotel) => hotel?.id !==
|
|
885
|
+
?.filter((hotel) => hotel?.id !== 6)
|
|
886
886
|
.map((child) => {
|
|
887
887
|
const tr = child?.translations?.[0] ?? {};
|
|
888
888
|
const title = tr?.name ?? child?.name ?? child?.name_identifier;
|
|
@@ -2767,4 +2767,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
2767
2767
|
providedIn: 'root',
|
|
2768
2768
|
}]
|
|
2769
2769
|
}] });
|
|
2770
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBOEc1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBTW5FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0Fxa0hMO0lBN2tIRyxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBUU8sa0JBQWtCLENBQUMsR0FBVztRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJO1lBQ0EsR0FBRyxDQUFDLElB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QUM7SUFDckIsQ0FBQzsrR0Eva0hRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gICAgUHVybzQwNEksXG4gICAgUHVyb0FkdmFudGFnZXNJLFxuICAgIFB1cm9BZHZhbnRhZ2VzSXRlbSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSXRlbSxcbiAgICBQdXJvQmFubmVyNENvbEksXG4gICAgUHVyb0Jhbm5lckluZm8ySSxcbiAgICBQdXJvQmFubmVySW5mb0ksXG4gICAgUHVyb0Jhbm5lclNsaWRlckksXG4gICAgUHVyb0JyZWFkY3J1bWJJLFxuICAgIFB1cm9DYXJlZXJzRm9ybUksXG4gICAgUHVyb0NhcnRhSSxcbiAgICBQdXJvQ29udGFjdEZvcm1JLFxuICAgIFB1cm9EdWFsTGlzdEksXG4gICAgUHVyb0VuZ2luZUksXG4gICAgUHVyb0VuZ2luZU1vZGFsSSxcbiAgICBQdXJvRXZlbnRzRm9ybUksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0ksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckhvdGVsc0ksXG4gICAgUHVyb0Zvb3RlckhvdGVsc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckluZm9JLFxuICAgIFB1cm9Gb290ZXJJbmZvU29jaWFsTWVkaWFJbmZvLFxuICAgIFB1cm9Gb290ZXJMaW5rc0ksXG4gICAgUHVyb0dhbGxlcnlGaWx0ZXIsXG4gICAgUHVyb0dhbGxlcnlJLFxuICAgIFB1cm9HYWxsZXJ5SXRlbSxcbiAgICBQdXJvR3JpZDNDb2xGaWx0ZXJJLFxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckl0ZW0sXG4gICAgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckksXG4gICAgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckl0ZW0sXG4gICAgUHVyb0dyaWQzY29sU2xpZGVySSxcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtLFxuICAgIFB1cm9HcmlkNGl0ZW1zSSxcbiAgICBQdXJvR3JpZDRpdGVtc0l0ZW0sXG4gICAgUHVyb0dyaWQ1aXRlbXNJLFxuICAgIFB1cm9HcmlkNWl0ZW1zSXRlbSxcbiAgICBQdXJvR3JpZDZpdGVtc0ksXG4gICAgUHVyb0hlYWRlckksXG4gICAgUHVyb0hlYWRJbnRyb0ksXG4gICAgUHVyb0ltZ0luZm9JLFxuICAgIFB1cm9JbmZvQmFubmVySSxcbiAgICBQdXJvSW5mb0Jhbm5lckl0ZW0sXG4gICAgUHVyb0luZm9CaWdJLFxuICAgIFB1cm9JbmZvRGV0YWlsc0ksXG4gICAgUHVyb0luZm9HYWxsZXJ5SSxcbiAgICBQdXJvSW5mb0ludHJvSSxcbiAgICBQdXJvSW5mb0xpc3RJLFxuICAgIFB1cm9JbmZvU2VydmljZXNJLFxuICAgIFB1cm9JbmZvU2VydmljZXNJdGVtLFxuICAgIFB1cm9JbmZvU2xpZGVySSxcbiAgICBQdXJvSW5mb1NsaWRlckl0ZW0sXG4gICAgUHVyb0luZm9UYWJsZUksXG4gICAgUHVyb0luZm9WaWRlb0ksXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSSxcbiAgICBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtLFxuICAgIFB1cm9MaXN0QXdhcmRzSSxcbiAgICBQdXJvTGlzdEF3YXJkc0l0ZW1JLFxuICAgIFB1cm9MaXN0R2VuZXJhbEksXG4gICAgUHVyb0xpc3RHZW5lcmFsSXRlbSxcbiAgICBQdXJvTWFwTGlzdEksXG4gICAgUHVyb01hcExpc3RJdGVtLFxuICAgIFB1cm9NZW51SSxcbiAgICBQdXJvTW9kYWxJbmZvSSxcbiAgICBQdXJvTW9kYWxPcHRpb25zSSxcbiAgICBQdXJvTXVzaWNTbGlkZXJJLFxuICAgIFB1cm9OZXdzbGV0dGVySSxcbiAgICBQdXJvT2ZmZXIsXG4gICAgUHVyb09mZmVyQmFubmVySSxcbiAgICBQdXJvUGhvdG9TbGlkZXJJLFxuICAgIFB1cm9Qcm9qZWN0c0Zvcm1JLFxuICAgIFB1cm9GYXFzSSxcbiAgICBQdXJvRmFxc0ltZ0ksXG4gICAgUHVyb1NjaGVkdWxlSSxcbiAgICBQdXJvU2NoZWR1bGVJdGVtLFxuICAgIFB1cm9TbGlkZXIxY29sSSxcbiAgICBQdXJvU2xpZGVyMWNvbEl0ZW0sXG4gICAgUHVyb1NsaWRlcjJjb2xJLFxuICAgIFB1cm9TbGlkZXIzQ2FyZEksXG4gICAgUHVyb1NsaWRlcjNDYXJkSXRlbUksXG4gICAgUHVyb1NsaWRlcjNjb2xJLFxuICAgIFB1cm9TbGlkZXIzQ29sSXRlbSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbSxcbiAgICBQdXJvU2xpZGVyNEl0ZW1zSSxcbiAgICBQdXJvVGhhbmtzSSxcbiAgICBQdXJvVGltZWxpbmVJLFxuICAgIFB1cm9Ub3BTbGlkZXJJLFxuICAgIFB1cm9XZWJtYXBJLFxuICAgIFB1cm9aaWdaYWcyY29sSSxcbiAgICBQdXJvSW5mb0RldGFpbHMzQ29sSSxcbiAgICBQdXJvSW5mb0RldGFpbEl0ZW1JLFxuICAgIFB1cm9JbmZvRGV0YWlsczJDb2xJLFxuICAgIFB1cm9CbG9nTGlzdEksXG4gICAgUHVyb0Jsb2dEZXRhaWxzSSxcbiAgICBQdXJvSW5uZXJDb250ZW50SSxcbiAgICBQdXJvU2xpZGVyMmNvbEl0ZW0sXG4gICAgUHVyb1N1Ym1lbnVNb2JpbGVJdGVtSSxcbiAgICBQdXJvR3JpZDZpdGVtc0l0ZW0sXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50c0ksXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUksXG4gICAgUHVyb0lmcmFtZUksXG4gICAgUHVyb1RpbWVsaW5lWWVhckl0ZW0sXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgUHVyb0luZm8yQ29sSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcHVyby1pbmZvMmNvbC9wdXJvLWluZm8yY29sLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCb2R5Q29tcG9uZW50LCBQdXJvQnV0dG9uSSwgUHVyb0ltYWdlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3B1cm8tZHJvcGRvd24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL21hcHBlci5zZXJ2aWNlLnRva2VuJztcbmltcG9ydCB7IFB1cm9WaWV3c1R5cGUgfSBmcm9tICcuLi8uLi9FbnVtL3ZpZXdzLmVudW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBwZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpdGVTdmMgPSBpbmplY3QoU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5TaXplciA9IGluamVjdChTY3JlZW5TaXplclNlcnZpY2UpO1xuICAgIGdldCBpc01heFNtYWxsRGVza3RvcEluc3RhbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjcmVlblNpemVyLm1heFNtYWxsRGVza3RvcEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgcHJpdmF0ZSB0aHVtYm5haWxBdmFpbGFibGUodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgIHhoci5vcGVuKCdIRUFEJywgdXJsLCBmYWxzZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICAgICAgcmV0dXJuIHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCA0MDA7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIVV0aWxzLmlzQWN0aXZlSW1hZ2UoaW1hZ2UpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5pc01vYmlsZUluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMzc1XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc01lZGl1bVRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5taW5GdWxsRGVza3RvcCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnBhdGg/LndlYnA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2VsZWN0ZWRJbWFnZSB8fCAhaW1hZ2U/LnBhdGg/LndlYnApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgY2RuID0gdGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnQ7XG4gICAgICAgIGNvbnN0IHRodW1iVXJsID0gY2RuICsgc2VsZWN0ZWRJbWFnZTtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmwgPSBjZG4gKyBpbWFnZT8ucGF0aC53ZWJwO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsU3JjID0gdGhpcy50aHVtYm5haWxBdmFpbGFibGUodGh1bWJVcmwpXG4gICAgICAgICAgICA/IHRodW1iVXJsXG4gICAgICAgICAgICA6IG9yaWdpbmFsVXJsO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzcmM6IGZpbmFsU3JjLFxuICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZXM/OiBJbWFnZVJlc3BvbnNlW11cbiAgICApOiBQdXJvSW1hZ2VJW10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB2YWxpZEltYWdlcyA9IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhpbWFnZXMpO1xuXG4gICAgICAgIGlmICghdmFsaWRJbWFnZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB2YWxpZEltYWdlc1xuICAgICAgICAgICAgLm1hcCgoaW1nKSA9PiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpKVxuICAgICAgICAgICAgLmZpbHRlcigoaW1nKTogaW1nIGlzIFB1cm9JbWFnZUkgPT4gISFpbWcpO1xuICAgIH1cblxuICAgIGdldFZpZXcodmlldzogUHVyb1ZpZXdzVHlwZSB8IHVuZGVmaW5lZCk6ICdsZWZ0JyB8ICdyaWdodCcge1xuICAgICAgICByZXR1cm4gdmlldyA9PT0gJ3JpZ2h0JyA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgfVxuXG4gICAgc2FuaXRpemUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5hbWVcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpIC8vIHF1aXRhciB0aWxkZXNcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOSBdL2csICcgJykgLy8gcXVpdGFyIHPDrW1ib2xvcyByYXJvc1xuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgIC5tYXAoKHBhcnQsIGkpID0+XG4gICAgICAgICAgICAgICAgaSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IHBhcnQudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICA6IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0LnNsaWNlKDEpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlQWdlc09wdGlvbnMobWF4TGVuZ3RoOiBudW1iZXIsIG1pbkxlbmd0aCA9IDApOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7IGNvZGU6IGksIG5hbWU6IGkgPCAxMCA/IGAwJHtpfWAgOiBgJHtpfWAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgbWFwQ29tcG9uZW50czxUPihcbiAgICAgICAgYm9keTogYW55W10sXG4gICAgICAgIGFkZG9ucz86IENvbXBvbmVudHNBZGRvbnNcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xuICAgICAgICBsZXQgemlnemFnMmNvbEluZGV4ID0gMDtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keS5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Py5vcmRlcixcbiAgICAgICAgICAgICAgICBwcm9wczogY29tcG9uZW50Py5wcm9wcyxcbiAgICAgICAgICAgICAgICB2aWV3OiBjb21wb25lbnQ/LnZpZXcsXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50LmlkZW50aWZpZXIsXG4gICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8VD47XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Py5uYW1lICYmIGNvbXBvbmVudD8ucHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQzY29sRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHBsdXNmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xQbHVzRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjFjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMWNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckJlYWNocyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJob3RlbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVySG90ZWxzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VibWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckJ1dHRvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXNzbWFsbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9MaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29scm91bmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbWdpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW1naW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW1nSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm90YWJsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVGFibGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ1aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ2aXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0b2ZmZXJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RuZXdzcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3NsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Ryb29tcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R2VuZXJhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RyZXN0YXVyYW50cyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0UmVzdGF1cmFudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzQwNCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2VydmljZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2Jhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2hlZHVsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTY2hlZHVsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ0aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppZ3phZzJjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwWmlnemFnMmNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aWd6YWcyY29sSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgemlnemFnMmNvbEluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkM2NvbFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb3NsaWRlcmxlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhvdG9zbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUGhvdG9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGhvdG9zbGlkZXJsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcjRjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyNENvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yQ29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtYXBsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1hcExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaG90ZWxzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RhZG9iZWFjaCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMYW5ndWFnZXNNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJiYW5uZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGF3YXJkcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0QXdhcmRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY2FyZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzQ2FyZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmluZm8yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZGV0YWlscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2RldGFpbHMyY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9kZXRhaWxzM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlsc0NvbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ211c2ljc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE11c2ljU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjYXJ0YSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDYXJ0YShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjRJdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZHVhbGxpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRHVhbExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Byb2plY3RzZm9ybSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQcm9qZWN0c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibG9nbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nUG9zdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxvcHRpb25zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1vZGFsT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5uZXJjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElubmVyQ29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGltZWxpbmUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGltZWxpbmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIZWFkSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhcmVlcnNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENhcmVlcnNGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdldmVudHNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV2ZW50c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbGluZm9sZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaW5mb3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1vZGFsSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2RhbGluZm9sZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJZnJhbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhcXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmFxcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFxc2ltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGYXFzSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoY29tcG9uZW50TWFwcGVkLm5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNjb2xTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgaG90ZWxzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtW10gPSBbXTtcbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gVXRpbHMubm9ybWFsaXplSW1hZ2VzKG11bHRpbWVkaWE/LmltYWdlbmVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnM/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltZz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQzY29sU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGhvdGVsOiBhbnkpID0+IGhvdGVsPy5pZCAhPT0gNSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWw/LmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaG90ZWw/LmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChob3RlbC50ZXh0cz8ubmFtZSB8fCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaG90ZWwudGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcgPGJyPiAnICsgaG90ZWwudGV4dHMuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsLm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEdhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HYWxsZXJ5SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIGZpbHRlcnMgPSBbXSB9ID0gcHJvcHM7XG5cbiAgICAgICAgY29uc3QgdmFsaWRGaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoKGY6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gTWFudGVuZXIgXCJUb2Rvc1wiIHNpZW1wcmVcbiAgICAgICAgICAgIGlmIChmLmFsbCkgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgICAgIC8vIE1hbnRlbmVyIGhhYml0YWNpb25lcyBwYXJlbnQgKHJvb21zOnRydWUpIHNpZW1wcmVcbiAgICAgICAgICAgIGlmIChmLnJvb21zKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gSGFiaXRhY2lvbmVzIGluZGl2aWR1YWxlcyDihpIgcmVxdWllcmVuIG11bHRpbWVkaWFcbiAgICAgICAgICAgIGlmIChmLnJvb20pXG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZi5tdWx0aW1lZGlhKSAmJiBmLm11bHRpbWVkaWEubGVuZ3RoID4gMDtcblxuICAgICAgICAgICAgLy8gUmVzdG8gZGUgZmlsdHJvcyDihpIgcmVxdWllcmVuIG11bHRpbWVkaWFcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGYubXVsdGltZWRpYSkgJiYgZi5tdWx0aW1lZGlhLmxlbmd0aCA+IDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGluZGV4TWFwID0gbmV3IE1hcDxhbnksIG51bWJlcj4oKTtcbiAgICAgICAgdmFsaWRGaWx0ZXJzLmZvckVhY2goKGY6IGFueSwgaTogYW55KSA9PiBpbmRleE1hcC5zZXQoZiwgaSkpO1xuXG4gICAgICAgIGNvbnN0IG1hcHBlZEZpbHRlcnMgPSB2YWxpZEZpbHRlcnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICBpZDogaW5kZXgsXG4gICAgICAgICAgICBhbGw6IGl0ZW0uYWxsLFxuICAgICAgICAgICAgcm9vbTogaXRlbS5yb29tLFxuICAgICAgICAgICAgcm9vbXM6IGl0ZW0ucm9vbXMsXG4gICAgICAgICAgICB0ZXh0OiBpdGVtLm5hbWUsXG4gICAgICAgIH0pKSBhcyBQdXJvR2FsbGVyeUZpbHRlcltdO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdmFsaWRGaWx0ZXJzLmZsYXRNYXAoKGZpbHRlcjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVyLm11bHRpbWVkaWEpKSByZXR1cm4gW107XG5cbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXIubXVsdGltZWRpYS5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGluZGV4TWFwLmdldChmaWx0ZXIpLCAvLyBpbmRleCBjb3JyZWN0b1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyczogbWFwcGVkRmlsdGVycyxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlclRpdGxlOiB0ZXh0cz8ucm9vbXNGaWx0ZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICB9IGFzIFB1cm9HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBNYXBMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTWFwTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBob3RlbHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9NYXBMaXN0SXRlbVtdID0gW107XG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ01hcExpc3RQaG90bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdNYXBMaXN0UGhvdG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ01hcExpc3RNYXAnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTWFwTGlzdE1hcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHRleHRzPy5uZHRpdGxlLFxuICAgICAgICAgICAgbmREZXNjcmlwdGlvbjogdGV4dHM/Lm5kZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/Lm1hcD8uWzBdKSxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb01hcExpc3RJO1xuICAgIH1cblxuICAgIG1hcE9mZmVyQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvT2ZmZXJCYW5uZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgICAgIC8vVE9ETzpiYWNrXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogJycsXG4gICAgICAgICAgICAgICAgZnJvbTogdGV4dHM/LmZyb20sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmljZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB9IGFzIFB1cm9PZmZlckJhbm5lckk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcExhbmd1YWdlc01vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbGFuZ3VhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBsYW5ndWFnZXMgYXMgUHVyb0xhbmd1YWdlc01vZGFsSXRlbVtdLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGxhbmd1YWdlcy5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtLmlkID09PSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmlkXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvTGFuZ3VhZ2VzTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcEhlYWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbWVudTogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0hlYWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG5hdiwgbXVsdGltZWRpYSwgbGlua3MgfSA9IG1lbnUgfHwge307XG4gICAgICAgIGNvbnN0IHsgYm90dG9tTGlua3MgfSA9IGxpbmtzID8/IHt9O1xuXG4gICAgICAgIGNvbnN0IHRleHRzID0gcHJvcHM/LmhlYWRlckJ1dHRvbnM/LnRleHRzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZU1lbnU6IHRleHRzPy5tZW51LFxuICAgICAgICAgICAgdGl0bGVMYW5nOiB0ZXh0cz8ubGFuZ3VhZ2UsXG4gICAgICAgICAgICBidG5Cb29rOiB0ZXh0cz8uYm9va25vdyxcbiAgICAgICAgICAgIGJ0bkNoZWNraW46IHRleHRzPy5jaGVja2luLFxuICAgICAgICAgICAgYnRuQ2hlY2tpbk9ubGluZTogdGV4dHM/LmNoZWNraW5vbmxpbmUsXG4gICAgICAgICAgICBuYXZMaW5rczogbmF2Py5tYXAoKGxpbms6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9XG4gICAgICAgICAgICAgICAgICAgIGxpbms/LnNpdGVJZCA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnL3B1cm9ob3RlbHMnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGxpbms/LnNpdGVJZCA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcvcHVyb2JlYWNoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHByZWZpeCArIGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IGxpbmsubGlua1R5cGUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvQnV0dG9uSTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBib3R0b21MaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJvdHRvbUxpbmtzPy5bMF0/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5sYWJlbClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBob3RlbEJyYW5kOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxuICAgICAgICB9IGFzIFB1cm9IZWFkZXJJO1xuICAgIH1cblxuICAgIG1hcEluZm9CaWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvQmlnSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbmREZXNjcmlwdGlvbjogdGV4dHM/Lm5kRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9JbmZvQmlnSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIxY29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyMWNvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG11bHRpbWVkaWEsIGJ1dHRvbnMsIHRleHRzLCBwb3N0cyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb1NsaWRlcjFjb2xJdGVtW10gPSBbXTtcblxuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjFjb2xJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHBvc3RzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHBvc3RzLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJsb2dzPy5bMF0/Lm5hbWVJZGVudGlmaWVyPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBpZGVudGlmaWVyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgICAgICAgICAgICAgbGV0IHNpdGVJZCA9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2hvdGVscycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCA9IDI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkLmluY2x1ZGVzKCdwdXJvYmVhY2gnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucyB8fCBbXVxuICAgICAgICAgICAgICAgICk/LlswXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgbGluazogYnV0dG9uLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb1NsaWRlcjFjb2xJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIxY29sSTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQWR2YW50YWdlc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IEFkdmFudGFnZXMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IEFkdmFudGFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbT8uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzSTtcbiAgICB9XG5cbiAgICBtYXBaaWd6YWcyY29sKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpbmRleCA9IDBcbiAgICApOiBQdXJvWmlnWmFnMmNvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXByb3BzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuXG4gICAgICAgIC8vIENBU086IG11bHRpbWVkaWEuaW1hZ2VuZXMgKGFycmF5IGxhcmdvKVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtdWx0aW1lZGlhPy5pbWFnZW5lcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKiAyO1xuICAgICAgICAgICAgY29uc3QgaW1nID0gbXVsdGltZWRpYS5pbWFnZW5lc1tzdGFydF07XG4gICAgICAgICAgICBjb25zdCBuZEltZyA9IG11bHRpbWVkaWEuaW1hZ2VuZXNbc3RhcnQgKyAxXTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTI6IGltZz8ubmRUaXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTI6IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgbmRUaXRsZTogbmRJbWc/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG5kSW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgbmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG5kSW1nKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb1ppZ1phZzJjb2xJO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ0FTTyBsZWdhY3lcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgIG5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5bMV0pLFxuICAgICAgICB9IGFzIFB1cm9aaWdaYWcyY29sSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkNGl0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDRpdGVtc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogKEFycmF5LmlzQXJyYXkobXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICA/IG11bHRpbWVkaWFcbiAgICAgICAgICAgICAgICA6IG11bHRpbWVkaWE/LmltYWdlbmVzXG4gICAgICAgICAgICApPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDRpdGVtc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQ0aXRlbXNJO1xuICAgIH1cblxuICAgIG1hcEluZm9WaWRlbyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZTogJ2luZm92aWRlb3JpZ2h0JyB8ICdpbmZvdmlkZW9sZWZ0J1xuICAgICk6IFB1cm9JbmZvVmlkZW9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICByZXZlcnNlOiBuYW1lLmluY2x1ZGVzKCdyaWdodCcpLFxuICAgICAgICAgICAgdmlkZW86IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHByb3BzLnZpZGVvPy5zcmMsXG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHMudmlkZW8/LnR5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb1ZpZGVvSTtcbiAgICB9XG5cbiAgICBtYXBCcmVhZGNydW1icyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0JyZWFkY3J1bWJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiAocHJvcHM/Lml0ZW1zIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgID8uc29ydCgoYSwgYikgPT4gYSAtIGIpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbT8ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LmNoYXJBdChpdGVtPy51cmw/Lmxlbmd0aCAtIDEpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0JyZWFkY3J1bWJJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJJbmZvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9wcz8uYWRkcmVzcz8uWzBdID8/IHByb3BzPy5hZGRyZXNzO1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBsaW5rcywgc29jaWFsTWVkaWEsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZGRyZXNzSW5mbzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVBZGRyZXNzLFxuICAgICAgICAgICAgICAgIHRleHQ6IGAke2FkZHJlc3M/LmFkZHJlc3MgPz8gJyd9LCAke2FkZHJlc3M/LmNpdHkgPz8gJyd9LCAke2FkZHJlc3M/LmNwID8/ICcnfSAke2FkZHJlc3M/LnByb3ZpbmNlID8/ICcnfWAsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgIClbMV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBjb250YWN0SW5mbzoge1xuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcz8uY29udGFjdExpbmtzPy5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVDb250YWN0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvZ29JbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8ubG9nbz8uWzBdKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXJJbmZvOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZU5ld3NsZXR0ZXIsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiB0ZXh0cz8ubmV3c2xldHRlckNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgaW5wdXRQbGFjZWhvbGRlcjogdGV4dHM/Lm5ld3NsZXR0ZXJQbGFjZWhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzb2NpYWxNZWRpYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVTb2NpYWxNZWRpYSxcbiAgICAgICAgICAgICAgICBpdGVtczogc29jaWFsTWVkaWE/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogVXRpbHMubWFwU29jaWFsY29ucyhpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyM2NvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBldmVudCwgZXhwZXJpZW5jZSwgbXVsdGltZWRpYSwgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIzQ29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV2ZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBleHBlcmllbmNlPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBVdGlscy5ub3JtYWxpemVJbWFnZXMobXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAvLyBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgLy8gZGF0ZTogaXRlbS5kYXRldGltZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gaWNvbjogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uMyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyM2NvbEk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyMmNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjJjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyByb29tcywgbXVsdGltZWRpYSwgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIyY29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKHJvb21zKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHJvb21zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnU2xpZGVyMkNvbCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnU2xpZGVyMkNvbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uZGVzY3JpdGlvbixcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIyY29sSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkNWl0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDVpdGVtc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjb21iaW5lZEltYWdlczogSW1hZ2VSZXNwb25zZVtdID0gW107XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgbGV0IGogPSAwO1xuXG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIGkgPCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgaiA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbD8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uW2ldKSB7XG4gICAgICAgICAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzW2ldKTtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsPy5bal0pIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2Vzc21hbGxbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlc3NtYWxsWzFdKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPz8gcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBjb21iaW5lZEltYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQ1aXRlbXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDVpdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwR3JpZDZpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ2aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSBhcyBQdXJvR3JpZDZpdGVtc0l0ZW1bXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQ2aXRlbXNJO1xuICAgIH1cblxuICAgIG1hcEFkdmFudGFnZXNTbWFsbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9BZHZhbnRhZ2VzU21hbGxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiAocHJvcHMuc2VydmljZXNBZHZhbnRhZ2VzIHx8IHByb3BzPy5BZHZhbnRhZ2VzKT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSB8fCBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyAoaXRlbT8uY2xhc3MgfHwgaXRlbT8uaWNvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCB8fCBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNTbWFsbEl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0FkdmFudGFnZXNTbWFsbEk7XG4gICAgfVxuXG4gICAgbWFwR3JpZDNjb2xGaWx0ZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkM0NvbEZpbHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXByb3BzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IHJhd0Rlc3RpbmF0aW9uczogYW55W10gPSAocHJvcHMuZGVzdGluYXRpb25zID8/IFtdKVxuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb25zOiBhbnlbXSA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBuZXcgTWFwKHJhd0Rlc3RpbmF0aW9ucy5tYXAoKGQ6IGFueSkgPT4gW051bWJlcihkLmlkKSwgZF0pKS52YWx1ZXMoKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHJhd0l0ZW1zID0gZGVzdGluYXRpb25zLmZsYXRNYXAoKGRlc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBkZXN0Py5jaGlsZHJlbiA/PyBbXTtcblxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGhvdGVsOiBhbnkpID0+IGhvdGVsPy5pZCAhPT0gNSlcbiAgICAgICAgICAgICAgICAubWFwKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gY2hpbGQ/LnRyYW5zbGF0aW9ucz8uWzBdID8/IHt9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0cj8ubmFtZSA/PyBjaGlsZD8ubmFtZSA/PyBjaGlsZD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV0aXRsZSA9IGRlc3Q/Lm5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gKFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LmhvdGVscz8uWzBdPy5saW5rcz8uWzBdXG4gICAgICAgICAgICAgICAgICAgICkgPz8gW10pWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZ0NvdmVyID0gY2hpbGQ/LmhvdGVscz8uWzBdPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWcuY292ZXJcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nQ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoY2hpbGQ/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogTnVtYmVyKGRlc3Q/LmlkID8/IGNoaWxkPy5wYXJlbnRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUHVyb0dyaWQzQ29sRmlsdGVySXRlbVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBNYXAocmF3SXRlbXMubWFwKChpKSA9PiBbaS5maWx0ZXIsIGldKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICBjb25zdCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gZGVzdGluYXRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChkZXN0OiBhbnkpID0+IHZhbGlkUGFyZW50SWRzLmhhcyhOdW1iZXIoZGVzdD8uaWQpKSlcbiAgICAgICAgICAgIC5tYXAoKGRlc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBOdW1iZXIoZGVzdD8uaWQpLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRlc3Q/Lm5hbWUgfHwgZGVzdD8ubmFtZV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID8/IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucykgPz8gW10sXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sUGx1c0ZpbHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCB7IHRleHRzLCBldmVudCwgZXhwZXJpZW5jZSwgaG90ZWxzLCBtdWx0aW1lZGlhLCBkZXN0aW5hdGlvbnMgfSA9XG4gICAgICAgICAgICBwcm9wcztcblxuICAgICAgICBsZXQgaXRlbXM6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gPSBbXTtcbiAgICAgICAgbGV0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXTtcbiAgICAgICAgY29uc3QgZXhwID0gISEoZXhwZXJpZW5jZSB8fCBob3RlbHMpO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgY29uc3QgcmF3RGVzdGluYXRpb25zOiBhbnlbXSA9IChldmVudCA/PyBbXSkuZmxhdCgpLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25zOiBhbnlbXSA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgbmV3IE1hcChcbiAgICAgICAgICAgICAgICAgICAgcmF3RGVzdGluYXRpb25zLm1hcCgoZDogYW55KSA9PiBbTnVtYmVyKGQuaWQpLCBkXSlcbiAgICAgICAgICAgICAgICApLnZhbHVlcygpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCByYXdJdGVtcyA9IGRlc3RpbmF0aW9ucy5tYXAoKGRlc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gZGVzdD8udGV4dHMgPz8gZGVzdD8udHJhbnNsYXRpb25zID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgdHI/LnRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/Lm5hbWUgPz9cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubmFtZV9pZGVudGlmaWVyID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/LnRyYW5zbGF0aW9ucz8udGl0bGU7XG4gICAgICAgICAgICAgICAgY29uc3QgbmRUaXRsZSA9IHRyPy5sb2NhdGlvbiA/PyBkZXN0Py50cmFuc2xhdGlvbnM/LmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBkZXN0Py5kYXRldGltZT8uc3BsaXQoJyAnKT8uWzBdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgZGVzdD8uYnV0dG9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGRlc3Q/LmxpbmtzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0SW1nID1cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubXVsdGltZWRpYT8uZmluZCgobTogYW55KSA9PiBtPy5jb3ZlcikgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoZmlyc3RJbWcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGRlc3Q/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiB0cj8ubG9jYXRpb24sIC8vIHVzYW1vcyBsb2NhdGlvbiBjb21vIGFncnVwYWRvci9maWx0cm9cbiAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcyxcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGl0ZW1zID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICBuZXcgTWFwKHJhd0l0ZW1zLm1hcCgoaSkgPT4gW2kuZmlsdGVyLCBpXSkpLnZhbHVlcygpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRQYXJlbnRJZHMpLm1hcCgobG9jOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogbG9jLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvYyxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleHBlcmllbmNlKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV4cGVyaWVuY2U/Lm1hcCgoZXhwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZXhwPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiBleHA/LmRhdGV0aW1lPy5zcGxpdCgnICcpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGV4cD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGV4cD8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHA/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cD8ubGlua3M/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZExvYyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRMb2MpLm1hcCgobG9jOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogbG9jLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvYyxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzLm1hcCgoaG90ZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gaG90ZWw/LnRleHRzID8/IGhvdGVsPy50cmFuc2xhdGlvbnMgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0cj8ubmFtZSA/PyBob3RlbD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gaG90ZWw/LmNpdHk7XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zdCBidXR0b25zID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAvLyAgICAgaG90ZWw/LmJ1dHRvbnM/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgLy8gICAgIGhvdGVsPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3M/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEltZyA9XG4gICAgICAgICAgICAgICAgICAgIGhvdGVsPy5tdWx0aW1lZGlhPy5maW5kKChtOiBhbnkpID0+IG0/LmNvdmVyKSA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShmaXJzdEltZyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogbG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoaG90ZWw/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBob3RlbC5jaXR5LFxuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcyxcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQ2l0aWVzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZENpdGllcykubWFwKChjaXR5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogY2l0eSxcbiAgICAgICAgICAgICAgICBuYW1lOiBjaXR5LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogaW1nPy5uZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGltZz8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IGltZy5hbHQsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3M/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZEFsdHMgPSBuZXcgU2V0KGl0ZW1zLm1hcCgoaSkgPT4gaS5maWx0ZXJQYXJlbnQpKTtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBBcnJheS5mcm9tKHZhbGlkQWx0cykubWFwKChhbHQ6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBhbHQsXG4gICAgICAgICAgICAgICAgbmFtZTogYWx0LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc3RpbmF0aW9ucykge1xuICAgICAgICAgICAgaXRlbXMgPSBkZXN0aW5hdGlvbnM/Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlID8/IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGl0ZW0/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkU3VidGl0bGVzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZFN1YnRpdGxlcykubWFwKChzdWJ0aXRsZTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IHN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IHN1YnRpdGxlLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSA/PyBbXSxcbiAgICAgICAgICAgIC8vIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgLy8gICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgZXhwLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckk7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVySG90ZWxzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySG90ZWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGhvdGVsOiBhbnkpID0+IGhvdGVsPy5pZCAhPT0gNSlcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucygyLCBob3RlbC5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSA/PyBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaG90ZWw/LnRleHRzPy5sb2NhdGlvbkRlc2NyaXB0aW9uID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvRm9vdGVySG90ZWxzSXRlbVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckhvdGVsc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJMaW5rc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy50ZXh0cz8uaWNvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBtZW1iZXJUaXRsZTogcHJvcHMudGV4dHM/Lm1lbWJlclRpdGxlLFxuICAgICAgICAgICAgICAgIG1lbWJlclByZXRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyUHJldGl0bGUsXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcy50ZXh0cz8uY29weXJpZ2h0LFxuICAgICAgICAgICAgICAgIGxpbmtzOiBwcm9wcy5saW5rc1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzLmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGxpbms6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5zaXRlSWQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNpdGVfaWQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNpdGUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVXRpbHMubWFwQnV0dG9ucyhzaXRlLCBsaW5rKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVyTGlua3NJO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJCZWFjaHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJCZWFjaHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKDMsIGhvdGVsLmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUgPz8gaG90ZWwubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LmxvY2F0aW9uRGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0Zvb3RlckJlYWNoc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckJlYWNoc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgeyBiYWNrZ3JvdW5kaW1hZ2UsIGltYWdlbmVzLCBzbWFsbGltYWdlIH0gPSBtdWx0aW1lZGlhO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IEFycmF5KC4uLihBZHZhbnRhZ2VzIHx8IFtdKSk/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpdGxlIGFzIHN0cmluZ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBzbWFsbEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoc21hbGxpbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGJhY2tncm91bmRpbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9JbmZvTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1NsaWRlcjNDb2xSb3VuZEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhLCBwb3N0cyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3MgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHBvc3RzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHBvc3RzPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPVxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5ibG9ncz8uWzBdPy5uYW1lSWRlbnRpZmllcj8udG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gaWRlbnRpZmllci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgICAgICAgICAgICAgIGxldCBzaXRlSWQgPSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3B1cm9ob3RlbHMnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2JlYWNoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZUlkID0gMztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBzaXRlSWQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMgfHwgW11cbiAgICAgICAgICAgICAgICApPy5bMF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGxpbms6IGJ1dHRvbixcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA/IHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW5cbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uSGlkZGVuOlxuICAgICAgICAgICAgICAgICAgICB0ZXh0cz8uZGVzY3JpcHRpb25BZGRpdGlvbmFsID8/IHRleHRzLmRlc2NyaXB0aW9uQWRpY2lvbmFsLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIHNlZUxlc3M6IHRleHRzPy5idXR0b25NZW5vc2luZm8sXG4gICAgICAgICAgICAgICAgc2VlTW9yZTogdGV4dHM/LmJ1dHRvbk1hc2luZm8sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG1hcEltZ0luZm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnaW1naW5mb3JpZ2h0JyB8ICdpbWdpbmZvbGVmdCdcbiAgICApOiBQdXJvSW1nSW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiBuYW1lPy5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgfSBhcyBQdXJvSW1nSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1RvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VzIHx8IG11bHRpbWVkaWE/Lm11bHRpbWVkaWEgfHwgbXVsdGltZWRpYT8uaW1hZ2VuZXNcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbWFnZXNNb2JpbGUgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYS5pbWFnZW5lc21vYmlsZSB8fCBbXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFByZWNhcmdhIGRpbsOhbWljYSBkZSBsYSBwcmltZXJhIGltYWdlbiBkZWwgc2xpZGVyXG4gICAgICAgIGlmIChpbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbWFnZXNNb2JpbGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNNb2JpbGVbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzTW9iaWxlPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNNb2JpbGVbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlID8/IG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSA/PyBtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUgPz8gbXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICBzcG90aWZ5OiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFjdGlvbnM/Llsnc3BvdGlmeSddLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIHVybDogYWN0aW9ucz8uWydzcG9ydGlmeUxpbmsnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWRlbGl0eToge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5J10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5TGluayddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXI6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ25ld3NsZXR0ZXJMaW5rJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBhY3Rpb25zPy5bJ2xhbmd1YWdlJ10sXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlPy50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgdmlkZW86IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1haW5UaXRsZTogdGV4dHM/Lm1haW5UaXRsZSxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIGltYWdlc01vYmlsZSxcbiAgICAgICAgfSBhcyBQdXJvVG9wU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0Jhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBVdGlscy5ub3JtYWxpemVJbWFnZXMobXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcuYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9CYW5uZXJJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0luZm9CYW5uZXJJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwU2NoZWR1bGUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TY2hlZHVsZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/Lmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TY2hlZHVsZUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSBhcyBQdXJvU2NoZWR1bGVJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICB2aWV3OiBQdXJvVmlld3NUeXBlIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0luZm9TZXJ2aWNlc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBzZXJ2aWNlc1NlcnZpY2UsIEFkdmFudGFnZXMsIG11bHRpbWVkaWEsIGJ1dHRvbnMgfSA9XG4gICAgICAgICAgICBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zID0gW107XG4gICAgICAgIGlmIChBZHZhbnRhZ2VzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IEFkdmFudGFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uZGVzY3JpcHRpb24gPz8gaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3MgPz8gaXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChzZXJ2aWNlc1NlcnZpY2UpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gc2VydmljZXNTZXJ2aWNlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lID8/IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LmRlc2NyaXB0aW9uID8/IGl0ZW0/LnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzID8/IGl0ZW0/Lmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9TZXJ2aWNlc0l0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBidXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXSksXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICB2aWV3OiB0aGlzLmdldFZpZXcodmlldyksXG4gICAgICAgIH0gYXMgUHVyb0luZm9TZXJ2aWNlc0k7XG4gICAgfVxuXG4gICAgbWFwTGlzdEdlbmVyYWwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnbGlzdG5ld3NyaWdodCcgfCAnbGlzdG5ld3NsZWZ0J1xuICAgICk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgb2ZmZXJzLCByb29tcywgbXVsdGltZWRpYSwgaG90ZWxzLCB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb0xpc3RHZW5lcmFsSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG9mZmVycykge1xuICAgICAgICAgICAgaXRlbXMgPSBvZmZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAob2ZmZXI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXIubXVsdGltZWRpYSB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHJvb21zKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHJvb21zPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IHRleHRzLCBlcXVpcG1lbnQsIG11bHRpbWVkaWEgfSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGVxdWlwbWVudD8uc2xpY2UoMCwgMyk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdMaXN0Um9vbXMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdMaXN0Um9vbXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBob3RlbD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaG90ZWw/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShob3RlbD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBob3RlbD8ubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50aXRsZSAmJiBpbWc/LnRpdGxlLnRyaW0oKSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWcudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmRlc2NyaXB0aW9uICYmIGltZz8uZGVzY3JpcHRpb24udHJpbSgpICE9PSAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogbmFtZT8uaW5jbHVkZXMoJ3JpZ2h0JyksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSTtcbiAgICB9XG5cbiAgICBtYXBMaXN0UmVzdGF1cmFudHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MaXN0UmVzdGF1cmFudHNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yZXN0YXVyYW50cz8ubWFwKFxuICAgICAgICAgICAgICAgIChyZXN0YXVyYW50OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVzdGF1cmFudD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzdGF1cmFudD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHJlc3RhdXJhbnQ/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiByZXN0YXVyYW50Py50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdGF1cmFudD8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ0xpc3RSZXN0YXVyYW50cycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdMaXN0UmVzdGF1cmFudHMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLihyZXN0YXVyYW50Py5sb2dvcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHJlc3RhdXJhbnQ/LmxvZ29zPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogcmVzdGF1cmFudD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdFJlc3RhdXJhbnRJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvTGlzdFJlc3RhdXJhbnRzSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9FbmdpbmVJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VySW46IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRhdGVUaXRsZT8uc3BsaXQoJy0nKT8uWzBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGVwaWNrZXJPdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRhdGVUaXRsZT8uc3BsaXQoJy0nKT8uWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGd1ZXN0c0lucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JHdWVzdHNJbnB1dEhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9tb0lucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JQcm9tb0hvbGRlcixcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGJ0bkFwcGx5OiB7IGxhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yQXBwbHkgfSxcbiAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JBZHVsdHNUaXRsZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heEFkdWx0cywgMSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2lkc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRzVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhDaGlsZHJlbiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9jYXRpb25Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25Ib2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3BzPy50ZXh0cz8ubW90b3JEcm9wRG93bk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIC4uLihwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBob3RlbD8ubW9kZWxJZCA/PyA0LCAvLyBmYWx0YSBtb2RlbElkIHBhcmEgbGEgVVJMIGdlbmVyYWRhIHBvciBwYXJ0ZSBkZSBCYWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGhvdGVsPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKSA/PyBbXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclRpdGxlLFxuICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbHM/LlswXSxcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmVNb2RhbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgZW5naW5lTWFwcGVkOiBQdXJvRW5naW5lSVxuICAgICk6IFB1cm9FbmdpbmVNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGVBZHZhbnRhZ2VzOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5naW5lOiBlbmdpbmVNYXBwZWQsXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbT8uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9FbmdpbmVNb2RhbEk7XG4gICAgfVxuXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvV2VibWFwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogcHJvcHM/LnBhZ2VzXG4gICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IFB1cm9CdXR0b25JKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFV0aWxzLnVybFZhbGlkYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcFBob3RvU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByZXZlcnNlOiBib29sZWFuXG4gICAgKTogUHVyb1Bob3RvU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByZXZlcnNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJhbm5lcjRDb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXI0Q29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4pID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm11bHRpbWVkaWEuaW1hZ2ViaWc/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcblxuICAgICAgICAgICAgYmlnYmFubmVyOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViaWc/LlswXVxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYS5pbWFnZWJpZ1swXSlcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNbMF0pXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJpZ3RpdGxlOiAnJyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lcjRDb2xJO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RGb3JtKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQ29udGFjdEZvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNMaW5rcyxcbiAgICAgICAgICAgIHByb21vdGlvbnM6IHByb3BzPy50ZXh0cz8ucHJvbW90aW9ucyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnbWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmREcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnN1bHR0eXBlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5Db25zdWx0eVRwZT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wPy5jb25zdWx0VHlwZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3A/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJlZml4VmFsdWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHJlZml4ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXROYW1lOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWU6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgJ3N1cm5hbWUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0NvbnRhY3RGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQsIHJldmVyc2U6IGJvb2xlYW4pOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG11bHRpbWVkaWEsIGV4cGVyaWVuY2UsIHRleHRzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvSW5mb1NsaWRlckl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBVdGlscy5ub3JtYWxpemVJbWFnZXMobXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpIGFzIFB1cm9JbWFnZUksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHBlcmllbmNlKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV4cGVyaWVuY2U/Lm1hcChcbiAgICAgICAgICAgICAgICAoZXhwOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cD8ubXVsdGltZWRpYT8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIFB1cm9JbWFnZUksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZXhwPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogZXhwPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZXhwPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXRpdGxlOiBleHAucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgcmV2ZXJzZTogcmV2ZXJzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyLm11bHRpbWVkaWFbMF0pLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvT2ZmZXJcbiAgICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvVGhhbmtzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvVGhhbmtzSTtcbiAgICB9XG5cbiAgICBtYXA0MDQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm80MDRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHByb3BzPy5hZGRyZXNzPy5bMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBgJHthZGRyZXNzLmFkZHJlc3N9PC9icj4ke2FkZHJlc3MuY2l0eX0sICR7YWRkcmVzcy5jcH0gJHthZGRyZXNzLnByb3ZpbmNlfWAsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zPy5bMV0pWzBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRhY3Q6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGUsXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8uQ29udGFjdD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnM/LlsyXSlbMF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm80MDRJO1xuICAgIH1cblxuICAgIG1hcEluZm9HYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG1vcmVpbmZvOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC8vIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMucmV2ZXJzZSgpKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1R5cGUgIT09ICdzZWxmX2xpbmsnKVxuICAgICAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LmVxdWlwbWVudD8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBpdGVtPy5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NjaGVkdWxlSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBJbmZvVGFibGUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvVGFibGVJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgbGlzdHMgPSBwcm9wcz8uTGlzdHM7XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3RzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgY29sdW1uczogbGlzdHMubWFwKChsaXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGxpc3QuaXRlbXMgPz8gW107XG4gICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gaXRlbXNbMF0/LnRpdGxlID8/ICcnO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uSXRlbXMgPSBpdGVtcy5zbGljZSgxKS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IGNvbHVtbkl0ZW1zLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGluZm9JdGVtczogcHJvcHM/LmluZm9JdGVtcyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMkNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm8yQ29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5saW5rKSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLmltYWdlKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvSW5mbzJDb2xJO1xuICAgIH1cblxuICAgIG1hcFN1Ym1lbnUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9NZW51SSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcHJvcHM/Lml0ZW1zPy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICBsZXQgc2l0ZVVybCA9ICcnO1xuICAgICAgICBpZiAodGhpcy5zaXRlSWQoKSA9PT0gMikge1xuICAgICAgICAgICAgc2l0ZVVybCA9ICcvcHVyb2hvdGVscyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaXRlSWQoKSA9PT0gMykge1xuICAgICAgICAgICAgc2l0ZVVybCA9ICcvcHVyb2JlYWNoJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWJtZW51ID0ge1xuICAgICAgICAgICAgLy8gaG90ZWw6IHByb3BzPy5ob3RlbCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBzaXRlVXJsICsgbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zTW9iaWxlOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSAmJiAhaXRlbS5tb2JpbGUpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc2l0ZVVybCArIGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBsaW5rPy5pY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZTogbGluaz8ubW9iaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1N1Ym1lbnVNb2JpbGVJdGVtSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBzZWxlY3RlZD8ubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICB9IGFzIFB1cm9CdXR0b25JLFxuICAgICAgICAgICAgYm90dG9tTGlua3M6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ubW9iaWxlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHNpdGVVcmwgKyBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvTWVudUk7XG5cbiAgICAgICAgcmV0dXJuIHN1Ym1lbnUgYXMgUHVyb01lbnVJO1xuICAgIH1cblxuICAgIG1hcExpc3RBd2FyZHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MaXN0QXdhcmRzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWcuYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdWzBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdEF3YXJkc0l0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9MaXN0QXdhcmRzSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIzQ2FyZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNDYXJkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lkl0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcjogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ2FyZEl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIzQ2FyZEk7XG4gICAgfVxuXG4gICAgbWFwTmV3c2xldHRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb05ld3NsZXR0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1haWxQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBuYW1lOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1haWxQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5tYWlsRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZzoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lmxhbmd1YWdlUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lmxhbmd1YWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGFuZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogbGFuZz8uaWQsIG5hbWU6IGxhbmc/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvdW50cnk6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5jb3VudHJ5UGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvdW50cmllc1xuICAgICAgICAgICAgICAgICAgICA/LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjb3VudHJ5OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogY291bnRyeT8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvdW50cnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5jZW50ZXJQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wcz8udGV4dHM/LmFsbENlbnRlcnMsXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgRHJvcGRvd25PcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIC4uLihwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2VudGVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogY2VudGVyPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY2VudGVyPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICApID8/IFtdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2lkZW50OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucmVzaWRlbnRQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uUmVzaWRlbnQ/LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpXG4gICAgICAgICAgICAgICAgKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoY291bnRyeTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjb3VudHJ5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb3VudHJ5Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb05ld3NsZXR0ZXJJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lckluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXJJbmZvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgZnJhbWVVcmw6IHByb3BzPy50ZXh0cz8uZnJhbWVVcmwsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVySW5mb0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwQmFubmVySW5mbzIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXJJbmZvMkkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVySW5mbzJJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcEluZm9EZXRhaWxzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0RldGFpbHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSBhcyBQdXJvSW5mb0RldGFpbHNJO1xuICAgIH1cblxuICAgIG1hcEluZm9EZXRhaWxzQ29scyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9JbmZvRGV0YWlsczNDb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uSXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgPz8gaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24gPz8gaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb0RldGFpbEl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9JbmZvRGV0YWlsczNDb2xJO1xuICAgIH1cblxuICAgIG1hcEZhcXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9GYXFzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lkl0ZW1zPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gaXRlbT8udGl0bGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGl0ZW0/LmNvbnRlbnQgPz8gaXRlbT8udGV4dDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aXRsZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUudHJpbSgpLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSkubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUudHJpbSgpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IChpdGVtLmNvbnRlbnQgPz8gaXRlbS50ZXh0KS50cmltKCksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb0ZhcXNJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcE11c2ljU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTXVzaWNTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/Lml0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBhdWRpbzogaXRlbS5hdWRpbyxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxuICAgICAgICAgICAgICAgIGRhdGU6IGl0ZW0uZGF0ZSxcbiAgICAgICAgICAgICAgICBoZWFkaW5nOiBpdGVtLmhlYWRpbmcsXG4gICAgICAgICAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBoZWFkaW5nOiBpdGVtLnRleHQ/LmhlYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQ/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb011c2ljU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBDYXJ0YShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NhcnRhSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb0NhcnRhSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXI0SXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXI0SXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyNEl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBEdWFsTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0R1YWxMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaXN0czogT2JqZWN0LmtleXMocHJvcHMudGV4dHMpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkubWF0Y2goL15saXN0XFxkK1RpdGxlJC8pKVxuICAgICAgICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAgICAgICAubWFwKCh0aXRsZUtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0TnVtYmVyID0gdGl0bGVLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdsaXN0JywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnVGl0bGUnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IGBsaXN0JHtsaXN0TnVtYmVyfUl0ZW1gO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1LZXlzID0gT2JqZWN0LmtleXMocHJvcHMudGV4dHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChrKSA9PiBrLnN0YXJ0c1dpdGgocHJlZml4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYS5yZXBsYWNlKHByZWZpeCwgJycpKSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihiLnJlcGxhY2UocHJlZml4LCAnJykpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbUtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0c1tpdGVtS2V5c1tpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzW2l0ZW1LZXlzW2kgKyAxXV0gPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHNbdGl0bGVLZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgUHVyb0R1YWxMaXN0STtcbiAgICB9XG5cbiAgICBtYXBQcm9qZWN0c0Zvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9Qcm9qZWN0c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB5ZFRpdGxlOiBwcm9wcz8udGV4dHM/LnlkdGl0bGUsXG4gICAgICAgICAgICBhaVRpdGxlOiBwcm9wcz8udGV4dHM/LmFpdGl0bGUsXG4gICAgICAgICAgICBpY1RpdGxlOiBwcm9wcz8udGV4dHM/LmljdGl0bGUsXG4gICAgICAgICAgICBkVGl0bGU6IHByb3BzPy50ZXh0cz8uZHRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zbGluayxcbiAgICAgICAgICAgIG90aGVyczogcHJvcHM/LnRleHRzPy5vdGhlcnMsXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGFwcGx5QnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHNlZUFsbEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICB3aHlUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0V2h5TWVzc2FnZSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2h5IGRvIHlvdSBiZWxpZXZlIHRoaXMgaXMgYW4gaWRlYWwgbG9jYXRpb24gZm9yIGEgUHVybyBlc3RhYmxpc2htZW50PycsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRXaHlNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdXaHkgZG8geW91IGJlbGlldmUgdGhpcyBpcyBhbiBpZGVhbCBsb2NhdGlvbiBmb3IgYSBQdXJvIGVzdGFibGlzaG1lbnQ/JyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnd2h5TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2FUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0V2FNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGF0IGF0dHJhY3RzIHlvdSB0byB0aGUgUHVybyBHcm91cCBicmFuZCwgYW5kIGhvdyBkbyB5b3UgZW52aXNpb24gaW50ZWdyYXRpbmcgaXQgaW50byB5b3VyIGJ1c2luZXNzIGNvbmNlcHQ/JyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFdhTWVzc2FnZSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hhdCBhdHRyYWN0cyB5b3UgdG8gdGhlIFB1cm8gR3JvdXAgYnJhbmQsIGFuZCBob3cgZG8geW91IGVudmlzaW9uIGludGVncmF0aW5nIGl0IGludG8geW91ciBidXNpbmVzcyBjb25jZXB0PycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3dhTWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHBUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0UFBNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBkZXRhaWxzIGFib3V0IHlvdXIgY29tcGFueSwgc2hhcmVob2xkZXJzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGV4cGVyaWVuY2UgaW4gdGhlIHNlY3Rvci4nLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0UFBNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBkZXRhaWxzIGFib3V0IHlvdXIgY29tcGFueSwgc2hhcmVob2xkZXJzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGV4cGVyaWVuY2UgaW4gdGhlIHNlY3Rvci4nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdwcE1lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5wRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ucERyb3Bkb3duID8/ICdOYXR1cmUgb2YgdGhlIFByb2plY3QnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBicERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uYnBEcm9wZG93biA/PyAnRG8geW91IGhhdmUgYSBidXNpbmVzcyBwbGFuPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRiRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy50YkRyb3Bkb3duID8/ICdUeXBlIG9mIEJ1c2luZXNzJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBvRHJvcGRvd24gPz8gJ1BsYW5uZWQgT3BlbmluZyBEYXRlJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmVtRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0VzdGltYXRlZCBNb250aHMgb2YgT3BlcmF0aW9uIHBlciBZZWFyJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGJwRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5oYnBEcm9wZG93biA/PyAnRG8geW91IGhhdmUgYSBidXNpbmVzcyBwbGFuPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByZWZpeFZhbHVlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnByZWZpeGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZHJlc3NJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFkZHJlc3NJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3MnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5hZGRyZXNzSW5wdXQgPz8gJ0VzdGFibGlzaG1lbnQgQWRkcmVzcycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckFkZHJlc3MsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2l6ZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0ID8/ICdzaXplJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zaXplSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdzaXplJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0ID8/ICdWZW51ZSBTaXplIChtwrIpJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yU2l6ZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lID8/ICdGaXJzdCBOYW1lJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyA/PyAnc3VybmFtZScsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMgPz8gJ0xhc3QgTmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdFbWFpbCBBZGRyZXNzJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm1FbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnZW1haWxjJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWxjJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnQ29uZmlybSB5b3VyIGVtYWlsJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lID8/ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAnVGVsw6lmb25vJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXRlcmlhbHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0TWF0ZXJpYWxzLFxuICAgICAgICAgICAgICAgICAgICAnbWF0ZXJpYWxzJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHM/LnRleHRzPy5pbnB1dE1hdGVyaWFscyxcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5pbnB1dE1hdGVyaWFscyA/PyAnU3VwcG9ydGluZyBtYXRlcmlhbHMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsIGFzIEZpbGUgfCBGaWxlW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb1Byb2plY3RzRm9ybUk7XG4gICAgfVxuXG4gICAgbWFwRmFxc0ltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgdmlldzogUHVyb1ZpZXdzVHlwZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0ZhcXNJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBJdGVtcywgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWdzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzKSxcbiAgICAgICAgICAgIGl0ZW1zOiBJdGVtcz8uZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGl0ZW0/LnRpdGxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBpdGVtPy5jb250ZW50ID8/IGl0ZW0/LnRleHQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGl0bGUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLnRyaW0oKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAoaXRlbS5jb250ZW50ID8/IGl0ZW0udGV4dCkudHJpbSgpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYXBwbGljYXRpb25CdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB2aWV3OiB0aGlzLmdldFZpZXcodmlldyksXG4gICAgICAgICAgICBjb250YWN0QnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB9IGFzIFB1cm9GYXFzSW1nSTtcbiAgICB9XG5cbiAgICBtYXBCbG9nTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jsb2dMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBwb3N0cyA9IHByb3BzPy5wb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSA/PyBwb3N0Py50cmFuc2xhdGlvbnM/LlswXT8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBwb3N0Py50cmFuc2xhdGlvbnM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHBvc3Q/Lm11bHRpbWVkaWE/LlswXSkgPz8ge1xuICAgICAgICAgICAgICAgIHNyYzogJ2h0dHBzOi8vcHVyby1hcGktZGV2LmItY2RuLm5ldC9tdWx0aW1lZGlhL2ltYWdlcy90aHVtYm5haWxzLzEyODAvMjAzQ2FwdHVyYS0yMGRlLTIwcGFudGFsbGEtMjAyMDE3LTA0LTI0LTIwYS0yMGxhcy0yMDE5LTQ1LTU2LXBuZy53ZWJwJyxcbiAgICAgICAgICAgICAgICBhbHQ6IHBvc3Q/LnRleHRzPy50aXRsZSA/PyBwb3N0Py50cmFuc2xhdGlvbnM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwb3N0Py5jYXRlZ29yeS50cmFuc2xhdGlvbnM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IG5ldyBEYXRlKHBvc3QuY3JlYXRlZEF0KSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHBvc3RzID0gcG9zdHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gYi5kYXRlIC0gYS5kYXRlOyAvLyBhbWJvcyBjb24gZmVjaGFcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgIWIuZGF0ZSkgcmV0dXJuIC0xOyAvLyBhIHRpZW5lIGZlY2hhLCBiIG5vXG4gICAgICAgICAgICBpZiAoIWEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiAxOyAvLyBiIHRpZW5lIGZlY2hhLCBhIG5vXG4gICAgICAgICAgICByZXR1cm4gMDsgLy8gbmluZ3VubyB0aWVuZSBmZWNoYVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBPYnRlbmVyIGxvcyA0IHBvc3RzIG3DoXMgcmVjaWVudGVzXG4gICAgICAgIGNvbnN0IGxhdGVzdFBvc3RzID0gcG9zdHM/LnNsaWNlKDAsIDQpO1xuXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBBcnJheS5pc0FycmF5KHByb3BzPy5wb3N0Q2F0ZWdvcmllcylcbiAgICAgICAgICAgID8gcHJvcHMucG9zdENhdGVnb3JpZXNcbiAgICAgICAgICAgIDogT2JqZWN0LnZhbHVlcyhwcm9wcz8ucG9zdENhdGVnb3JpZXMgfHwge30pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBub3Rmb3VuZFRleHQ6IHByb3BzPy50ZXh0cz8uc2VhcmNoTm90Rm91bmQsXG4gICAgICAgICAgICBwb3N0czogcG9zdHMsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOlxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXMubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyxcbiAgICAgICAgICAgICAgICB9KSkgPz8gW10sXG4gICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHM6IGxhdGVzdFBvc3RzLFxuICAgICAgICAgICAgYW50ZXJpb3I6IHByb3BzPy50ZXh0cz8uYW50ZXJpb3IsXG4gICAgICAgICAgICBzaWd1aWVudGU6IHByb3BzPy50ZXh0cz8uc2lndWllbnRlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJsb2dQb3N0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmxvZ0RldGFpbHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBvc3RJZCA9IHByb3BzPy5wb3N0Py5pZDtcbiAgICAgICAgY29uc3QgcG9zdHMgPSBwcm9wcz8ucmVsYXRlZFBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gKHBvc3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAocDogYW55KSA9PiBwPy5pZCAhPT0gY3VycmVudFBvc3RJZFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByZWxhdGVkUG9zdHNDb25zdCA9XG4gICAgICAgICAgICBjYW5kaWRhdGVzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocDogYW55KSA9PiBwPy5kYXRlKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGIuZGF0ZSBhcyBhbnkpIC0gKGEuZGF0ZSBhcyBhbnkpKVxuICAgICAgICAgICAgICAgIC5zbGljZSgwLCA0KSB8fCBbXTtcbiAgICAgICAgaWYgKHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpdGhvdXREYXRlID0gY2FuZGlkYXRlcy5maWx0ZXIoKHA6IGFueSkgPT4gIXA/LmRhdGUpO1xuICAgICAgICAgICAgcmVsYXRlZFBvc3RzQ29uc3QgPSByZWxhdGVkUG9zdHNDb25zdC5jb25jYXQoXG4gICAgICAgICAgICAgICAgd2l0aG91dERhdGUuc2xpY2UoMCwgNCAtIHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gQXJyYXkuaXNBcnJheShwcm9wcz8ucG9zdENhdGVnb3JpZXMpXG4gICAgICAgICAgICA/IHByb3BzLnBvc3RDYXRlZ29yaWVzXG4gICAgICAgICAgICA6IE9iamVjdC52YWx1ZXMocHJvcHM/LnBvc3RDYXRlZ29yaWVzIHx8IHt9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8ucG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgYWRkaXRpb25hbDQ6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICBkYXRlOiBwcm9wcz8ucG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHByb3BzPy5wb3N0Py5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwcm9wcz8ucG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IGNhdGVnb3JpZXMubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxfcG9zdHMsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICByZWxhdGVkUG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29udGFpbixcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0czogcmVsYXRlZFBvc3RzQ29uc3QsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBzaGFyZTogcHJvcHM/LnRleHRzPy5zaGFyZSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Jsb2dEZXRhaWxzSTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXJTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBVdGlscy5ub3JtYWxpemVJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nLmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJTbGlkZXJJO1xuICAgIH1cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBNb2RhbE9wdGlvbnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Nb2RhbE9wdGlvbnNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0ubGlua3MpWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvTW9kYWxPcHRpb25zSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBJbm5lckNvbnRlbnQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Jbm5lckNvbnRlbnRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8uY29udGVudCxcbiAgICAgICAgfSBhcyBQdXJvSW5uZXJDb250ZW50STtcbiAgICB9XG5cbiAgICBtYXBUaW1lbGluZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1RpbWVsaW5lSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogVXRpbHMubm9ybWFsaXplSW1hZ2VzKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHllYXI6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApIGFzIFB1cm9UaW1lbGluZVllYXJJdGVtLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9UaW1lbGluZUk7XG4gICAgfVxuXG4gICAgbWFwSGVhZEludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSGVhZEludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0hlYWRJbnRyb0k7XG4gICAgfVxuXG4gICAgbWFwQ2FyZWVyc0Zvcm0ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9DYXJlZXJzRm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwcmVmaXhWYWx1ZXMgPSBPYmplY3QudmFsdWVzKHByb3BzPy5wcmVmaXhlcyB8fCB7fSkgYXMgc3RyaW5nW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5ZFRpdGxlOiBwcm9wcz8udGV4dHM/LnlkdGl0bGUsXG4gICAgICAgICAgICBvZFRpdGxlOiBwcm9wcz8udGV4dHM/Lm9kdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNsaW5rLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIHd3VGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy53d1RleHRhcmVhLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lnd3VGV4dGFyZWEgPz9cbiAgICAgICAgICAgICAgICAgICAgJ1dlIHdvdWxkIGxvdmUgdG8ga25vdyBtb3JlIGFib3V0IHlvdSwgcGxlYXNlIHNoYXJlIHlvdXIgY292ZXIgbGV0dGVyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnd3dUZXh0YXJlYScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2xEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LndsRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ1doaWNoIGxvY2F0aW9uIHdvdWxkIHlvdSBsaWtlIHRvIGFwcGx5IGZvcj8nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3cERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud3BEcm9wZG93biA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hpY2ggcG9zaXRpb24gd291bGQgeW91IGxpa2UgdG8gYXBwbHkgZm9yPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFvRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5hb0Ryb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdBbnkgb3RoZXIgbG9jYXRpb24gdGhhdCB5b3UgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiB3b3JraW5nIGF0PycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdsYW5nRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy53bGFuZ0Ryb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGljaCBsYW5ndWFnZXMgZG8geW91IHNwZWFrPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhkRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5oZERyb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdIb3cgZGlkIHlvdSBoZWFyIGFib3V0IFB1cm8gR3JvdXA/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJlZml4VmFsdWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHJlZml4ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdGaXJzdCBuYW1lJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUgPz8gJ0ZpcnN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1cm5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdMYXN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzID8/ICdMYXN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdFbWFpbCBhZGRyZXNzJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm1FbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnZW1haWwgMicsXG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZW1haWxjJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdlbWFpbCAyJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdDb25maXJtIHlvdXIgZW1haWwnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUgPz8gJ3Bob25lJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwaG9uZSdcbiAgICAgICAgICAgICAgICAgICAgKSA/PyAncGhvbmUnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUgPz8gJ1RlbMOpZm9ubycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUGhvbmUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsZXNJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5maWxlc0lucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZGl0aW9uYWxGaWxlcydcbiAgICAgICAgICAgICAgICAgICAgKSA/PyAnYWRkaXRpb25hbEZpbGVzJyxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQgPz8gJ0FkZGl0aW9uYWwgZmlsZXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3ZJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKHByb3BzPy50ZXh0cz8uY3ZJbnB1dCwgJ2N2JykgPz9cbiAgICAgICAgICAgICAgICAgICAgJ2N2JyxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcz8udGV4dHM/LmN2SW5wdXQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uY3ZJbnB1dCA/PyAnVXBsb2FkIHlvIHVyIENWIGhlcmUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsIGFzIEZpbGUgfCBGaWxlW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQ2FyZWVyc0Zvcm1JO1xuICAgIH1cblxuICAgIG1hcEV2ZW50c0Zvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9FdmVudHNGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjaVRpdGxlOiBwcm9wcz8udGV4dHM/LmNpdGl0bGUsXG4gICAgICAgICAgICBkVGl0bGU6IHByb3BzPy50ZXh0cz8uZHRpdGxlLFxuICAgICAgICAgICAgaG93VGl0bGU6IHByb3BzPy50ZXh0cz8uaG93VGl0bGUsXG4gICAgICAgICAgICBvdGhlcnM6IHByb3BzPy50ZXh0cz8ub3RoZXJzLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc2xpbmssXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBhcHBseUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzZWVBbGxCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgaG93VGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaG93TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5mb1RleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5mb1RpdGxlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmluZm9UaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaW5mb01lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5lRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5uZURyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5uYXR1cmU/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdGhlcnNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm90aGVyc0Ryb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3dIZWFyZFVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJlZml4VmFsdWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHJlZml4ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmFtZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5hbWVUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5hbWVFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXNUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lbWFpbEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBhbnlOYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb21wYW55VGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdjb21wYW55TmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvbXBhbnlUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmNvbXBhbnlFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ucGhvbmVUaXRsZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAncGhvbmUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5waG9uZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5wSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ucFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnbnBUaXRsZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5wVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5ucEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmRhdGVUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kYXRlVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5kYXRlRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc0hvdXJJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnNIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdzdGFydEhvdXInXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc0hvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmSG91cklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZkhvdXJUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2VuZEhvdXInXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5mSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZkhvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlRXZlbnRJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm5lRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgICAgICdldmVudFR5cGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5uZURyb3Bkb3duLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmFtZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb0V2ZW50c0Zvcm1JO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcE1vZGFsSW5mbyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmV2ZXJzZTogYm9vbGVhblxuICAgICk6IFB1cm9Nb2RhbEluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGV4dHJhRGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZXh0cmFEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIHJldmVyc2UsXG4gICAgICAgIH0gYXMgUHVyb01vZGFsSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSWZyYW1lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSWZyYW1lSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgfSBhcyBQdXJvSWZyYW1lSTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZSB7XG4gICAgcGF0aDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgdGh1bWJuYWlsczoge1xuICAgICAgICAzNzU6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA1NDA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA3Njg6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA4MDA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMDI0OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTI4MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgfTtcbiAgICBjb3ZlcjogbnVtYmVyO1xuICAgIHRhZ3M/OiBhbnlbXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBwcmV0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGxpbmtzPzogYW55W107XG4gICAgYnV0dG9ucz86IGFueVtdO1xuICAgIGFsdD86IHN0cmluZztcbiAgICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xuICAgIG9yaWdpbmFsOiBzdHJpbmc7XG4gICAgd2VicDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xuICAgIGNvbnN1bHRUeXBlPzogQ29uc3VsdFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogRmlsdGVyT3B0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb25zdWx0VHlwZSB7XG4gICAgY29uc3VsdFR5cGVJZD86IG51bWJlcjtcbiAgICBJZD86IG51bWJlcjtcbiAgICBsYW5ndWFnZUlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG59XG4iXX0=
|
|
2770
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBOEc1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBTW5FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0Fxa0hMO0lBN2tIRyxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBUU8sa0JBQWtCLENBQUMsR0FBVztRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJO1lBQ0EsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1gsT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztTQUNoRDtRQUFDLE1BQU07WUFDSixPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FDZCxLQUFnQztRQUVoQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVsRCxJQUFJLGFBQWEsR0FBdUIsRUFBRSxDQUFDO1FBRTNDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNwQyxhQUFhLEdBQUcsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQztTQUNsRDthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFO1lBQ2hELGFBQWEsR0FBRyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDO1NBQ2xEO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLEVBQUU7WUFDakQsYUFBYSxHQUFHLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUM7U0FDbEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUMvQyxhQUFhLEdBQUcsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztTQUNuRDthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUMxQyxhQUFhLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7U0FDckM7YUFBTTtZQUNILGFBQWEsR0FBRyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDO1NBQ25EO1FBRUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRTNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxHQUFHLGFBQWEsQ0FBQztRQUNyQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztZQUM5QyxDQUFDLENBQUMsUUFBUTtZQUNWLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFFbEIsT0FBTztZQUNILEdBQUcsRUFBRSxRQUFRO1lBQ2IsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHO1NBQ2xCLENBQUM7SUFDTixDQUFDO0lBRUQsdUJBQXVCLENBQ25CLE1BQXdCO1FBRXhCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFMUMsT0FBTyxXQUFXO2FBQ2IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBK0I7UUFDbkMsT0FBTyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDakIsT0FBTyxJQUFJO2FBQ04sU0FBUyxDQUFDLEtBQUssQ0FBQzthQUNoQixPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQWdCO2FBQ2hELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQyx3QkFBd0I7YUFDdkQsSUFBSSxFQUFFO2FBQ04sS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNiLENBQUMsS0FBSyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FDbkU7YUFDQSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFNBQWlCLEVBQUUsU0FBUyxHQUFHLENBQUM7UUFDeEQsTUFBTSxPQUFPLEdBQVUsRUFBRSxDQUFDO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELGFBQWEsQ0FDVCxJQUFXLEVBQ1gsTUFBeUI7UUFFekIsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sVUFBVSxHQUF1QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDMUQsTUFBTSxlQUFlLEdBQXFCO2dCQUN0QyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3BDLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSztnQkFDdkIsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLO2dCQUN2QixJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUk7Z0JBQ3JCLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVTthQUNmLENBQUM7WUFFdEIsSUFBSSxTQUFTLElBQUksU0FBUyxFQUFFLElBQUksSUFBSSxTQUFTLEVBQUUsS0FBSyxFQUFFO2dCQUNsRCxJQUFJO29CQUNBLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRTt3QkFDbkMsS0FBSyxTQUFTOzRCQUNWLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDbkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxnQkFBZ0I7NEJBQ2pCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUMxQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLG9CQUFvQjs0QkFDckIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQzlDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssU0FBUzs0QkFDVixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssUUFBUTs0QkFDVCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQ2xDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssV0FBVzs0QkFDWixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQ3JDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUNsQixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxpQkFBaUI7NEJBQ2xCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUMzQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFVBQVU7NEJBQ1gsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUNwQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGlCQUFpQjs0QkFDbEIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQzNDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssV0FBVzs0QkFDWixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQ3JDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYyxDQUFDO3dCQUNwQixLQUFLLGFBQWE7NEJBQ2QsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUNuQyxTQUFTLENBQUMsS0FBSyxFQUNmLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQzNCLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFdBQVc7NEJBQ1osZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUNyQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFlBQVk7NEJBQ2IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFlBQVk7NEJBQ2IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFlBQVk7NEJBQ2IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFlBQVk7NEJBQ2IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGdCQUFnQixDQUFDO3dCQUN0QixLQUFLLGVBQWU7NEJBQ2hCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FDckMsU0FBUyxDQUFDLEtBQUssRUFDZixTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUMzQixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxZQUFZLENBQUM7d0JBQ2xCLEtBQUssZUFBZSxDQUFDO3dCQUNyQixLQUFLLGNBQWMsQ0FBQzt3QkFDcEIsS0FBSyxXQUFXOzRCQUNaLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssRUFDZixTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUMzQixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxpQkFBaUI7NEJBQ2xCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUMzQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLEtBQUs7NEJBQ04sZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUMvQixTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFFBQVE7NEJBQ1QsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUNsQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGFBQWE7NEJBQ2QsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGNBQWM7NEJBQ2YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUN4QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGNBQWM7NEJBQ2YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUN4QyxTQUFTLENBQUMsS0FBSyxFQUNmLFNBQVMsQ0FBQyxJQUFJLENBQ1osQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssVUFBVTs0QkFDWCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ3BDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsZUFBZSxDQUNiLENBQUM7NEJBQ1AsZUFBZSxFQUFFLENBQUM7NEJBQ2xCLE1BQU07d0JBQ1YsS0FBSyxnQkFBZ0I7NEJBQ2pCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUMxQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGdCQUFnQixDQUFDO3dCQUN0QixLQUFLLGlCQUFpQjs0QkFDbEIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxTQUFTLENBQUMsS0FBSyxFQUNmLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO2dDQUN6QixnQkFBZ0IsQ0FDbEIsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssaUJBQWlCLENBQUM7d0JBQ3ZCLEtBQUssa0JBQWtCOzRCQUNuQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsU0FBUyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7Z0NBQ3pCLGlCQUFpQixDQUNuQixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxVQUFVOzRCQUNYLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDcEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxTQUFTOzRCQUNWLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDbkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxhQUFhLENBQUM7d0JBQ25CLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssZ0JBQWdCOzRCQUNqQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDMUMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxNQUFNOzRCQUNQLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDbkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxpQkFBaUIsQ0FBQzt3QkFDdkIsS0FBSyxpQkFBaUI7NEJBQ2xCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUMzQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGFBQWE7NEJBQ2QsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLE9BQU87NEJBQ1IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUNqQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGNBQWM7NEJBQ2YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUN4QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFVBQVU7NEJBQ1gsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUNwQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGNBQWM7NEJBQ2YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUN4QyxTQUFTLENBQUMsS0FBSyxFQUNmLFNBQVMsQ0FBQyxVQUFVLENBQ2xCLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFVBQVU7NEJBQ1gsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUNwQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFlBQVk7NEJBQ2IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUNwQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGNBQWM7NEJBQ2YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUN4QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGNBQWM7NEJBQ2YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUN4QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGNBQWM7NEJBQ2YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUN4QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFVBQVU7NEJBQ1gsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUNwQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFdBQVc7NEJBQ1osZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUNyQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGFBQWE7NEJBQ2QsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFlBQVk7NEJBQ2IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxTQUFTLENBQUMsS0FBSyxFQUNmLFNBQVMsQ0FBQyxVQUFVLENBQ2xCLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGVBQWUsQ0FBQzt3QkFDckIsS0FBSyxnQkFBZ0I7NEJBQ2pCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FDckMsU0FBUyxDQUFDLEtBQUssRUFDZixTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQ0FDekIsZUFBZSxDQUNqQixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxRQUFROzRCQUNULGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDbEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxNQUFNOzRCQUNQLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDaEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxTQUFTOzRCQUNWLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDbkMsU0FBUyxDQUFDLEtBQUssRUFDZixTQUFTLENBQUMsSUFBSSxFQUNkLFNBQVMsQ0FBQyxVQUFVLENBQ2xCLENBQUM7NEJBQ1AsTUFBTTt3QkFDVjs0QkFDSSxNQUFNO3FCQUNiO2lCQUNKO2dCQUFDLE9BQU8sS0FBVSxFQUFFO29CQUNqQixzQ0FBc0M7b0JBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDMUI7YUFDSjtZQUVELE9BQU8sZUFBZSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQXNCO1FBQ3BDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDckQsSUFBSSxLQUFLLEdBQTZCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLFVBQVUsRUFBRTtZQUNaLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQ25ELENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQ25CLENBQUM7Z0JBQ0csTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3BCLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUMxQyxHQUFHLEVBQUUsT0FBTyxDQUNmLENBQUMsQ0FBQyxDQUFDO2dCQUNKLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUTtnQkFDdkIsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLO2dCQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQzthQUNwQyxDQUEyQixDQUNuQyxDQUFDO1NBQ0w7YUFBTSxJQUFJLE1BQU0sRUFBRTtZQUNmLEtBQUssR0FBRyxNQUFNO2dCQUNWLEVBQUUsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDekMsRUFBRSxHQUFHLENBQ0QsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUNYLENBQUM7Z0JBQ0csTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixLQUFLLEVBQUUsS0FBSyxDQUNmLENBQUMsQ0FBQyxDQUFDO2dCQUNKLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDckIsS0FBSyxFQUNELENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUN6QixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVzt3QkFDckIsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVc7d0JBQ3BDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQ2xCLENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDcEMsQ0FDSjthQUNKLENBQTJCLENBQ25DLENBQUM7U0FDVDtRQUNELE9BQU87WUFDSCxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSztnQkFDZCxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQy9CLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUMzQjtZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQ3JDO1NBQ21CLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFzQjtRQUM3QixNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRS9DLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUMzQywyQkFBMkI7WUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUV2QixvREFBb0Q7WUFDcEQsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUV6QixtREFBbUQ7WUFDbkQsSUFBSSxDQUFDLENBQUMsSUFBSTtnQkFDTixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUVsRSwwQ0FBMEM7WUFDMUMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ3hDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdELE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQXdCLENBQUM7UUFFM0IsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFFakQsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDeEMsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSztnQkFDakIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsaUJBQWlCO2FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0gsT0FBTyxFQUFFLGFBQWE7WUFDdEIsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUMvQixDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVE7Z0JBQ2pCLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDbEMsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUM1QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUs7Z0JBQ2QsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUMvQixJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDOUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUMzQjtZQUNELFVBQVUsRUFBRTtnQkFDUixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN4QyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQ3JDO1lBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQy9CLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxLQUFLO1NBQ1EsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXNCO1FBQzdCLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUM1QyxJQUFJLEtBQUssR0FBc0IsRUFBRSxDQUFDO1FBQ2xDLElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQ2YsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDeEIsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUIsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNsQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FDWCxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1QsR0FBRyxLQUFLLGNBQWM7b0JBQ3RCLEdBQUcsRUFBRSxJQUFJLEtBQUssY0FBYyxDQUNuQyxDQUNKLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDVDtnQkFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUM3QixJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ2xDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUNYLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDVCxHQUFHLEtBQUssWUFBWTtvQkFDcEIsR0FBRyxFQUFFLElBQUksS0FBSyxZQUFZLENBQ2pDLENBQ0osRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNUO2FBQ0osQ0FBb0IsQ0FDNUIsQ0FBQztTQUNMO2FBQU0sSUFBSSxVQUFVLEVBQUU7WUFDbkIsS0FBSyxHQUFHLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUM3QixDQUFDLEdBQWtCLEVBQUUsRUFBRSxDQUNuQixDQUFDO2dCQUNHLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSztnQkFDakIsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXO2dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztnQkFDbkMsUUFBUSxFQUFFLFNBQVM7YUFDdEIsQ0FBb0IsQ0FDNUIsQ0FBQztTQUNMO1FBRUQsT0FBTztZQUNILFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVztZQUMvQixRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQy9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUTtnQkFDakIsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztZQUNsQyxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSztnQkFDZCxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQy9CLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdkIsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhO1lBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxLQUFLO1lBQ0wsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQzlCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDM0I7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDeEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUNyQztTQUNZLENBQUM7SUFDdEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxJQUFJLEtBQUssRUFBRTtZQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLFdBQVc7WUFDWCxPQUFPO2dCQUNILE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELFFBQVEsRUFBRSxFQUFFO2dCQUNaLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDakIsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7YUFDRixDQUFDO1NBQ3pCO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQXNCO1FBQ3BDLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ25DLE9BQU87WUFDSCxLQUFLLEVBQUUsU0FBcUM7WUFDNUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQ3BCLENBQUMsSUFBNEIsRUFBRSxFQUFFLENBQzdCLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQzNEO1lBQ0QsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUM1QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUs7Z0JBQ2QsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUMvQixJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUMzQjtZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQ3JDO1NBQ21CLENBQUM7SUFDN0IsQ0FBQztJQUVELFNBQVMsQ0FDTCxLQUFzQixFQUN0QixJQUFxQjtRQUVyQixNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzlDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRXBDLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDO1FBRTFDLE9BQU87WUFDSCxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDdEIsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQzFCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN2QixVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDMUIsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGFBQWE7WUFDdEMsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxNQUFNLEdBQ1IsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDO29CQUNkLENBQUMsQ0FBQyxhQUFhO29CQUNmLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUM7d0JBQ2xCLENBQUMsQ0FBQyxZQUFZO3dCQUNkLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBRWYsT0FBTztvQkFDSCxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUk7b0JBQ3BDLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUFFLFNBQVM7b0JBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO2lCQUNKLENBQUM7WUFDckIsQ0FBQyxDQUFDO1lBRUYsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQ3ZEO1lBQ0QsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsYUFBYSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEQsQ0FBQztJQUNyQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXNCO1FBQzdCLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUM3QyxPQUFPO1lBQ0gsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUMvQixDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVE7Z0JBQ2pCLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDbEMsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUM1QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUs7Z0JBQ2QsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUMvQixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDekIsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQy9CLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYTtZQUNuQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDO1lBQ2pELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUM5QixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQzNCO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3hDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDckM7U0FDWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDaEMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNwRCxJQUFJLEtBQUssR0FBeUIsRUFBRSxDQUFDO1FBRXJDLElBQUksVUFBVSxFQUFFO1lBQ1osS0FBSyxHQUFHLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUM3QixDQUFDLEdBQWtCLEVBQUUsRUFBRSxDQUNuQixDQUFDO2dCQUNHLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDO2dCQUNqQyxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVc7YUFDaEMsQ0FBdUIsQ0FDL0IsQ0FBQztTQUNMO2FBQU0sSUFBSSxLQUFLLEVBQUU7WUFDZCxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUM1QixNQUFNLFVBQVUsR0FDWixJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDMUQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFFZixJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ25DLE1BQU0sR0FBRyxDQUFDLENBQUM7aUJBQ2Q7cUJBQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUN6QyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUNkO2dCQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQzNCLE1BQU0sRUFDTixJQUFJLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FDdEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVQLE9BQU87b0JBQ0gsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSztvQkFDL0IsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25ELElBQUksRUFBRSxNQUFNO2lCQUNPLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELE9BQU87WUFDSCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTtnQkFDL0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRO2dCQUNqQixDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ2xDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDNUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLO2dCQUNkLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDL0IsS0FBSyxFQUFFLEtBQUs7WUFDWixJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDOUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUMzQjtZQUNELFVBQVUsRUFBRTtnQkFDUixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN4QyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQ3JDO1NBQ2UsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXNCO1FBQ2hDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDN0IsT0FBTztZQUNILEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUNsQixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztnQkFDRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Z0JBQ2hCLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSzthQUNyQixDQUF1QixDQUMvQjtTQUNlLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FDVCxLQUFzQixFQUN0QixLQUFLLEdBQUcsQ0FBQztRQUVULElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFN0IsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRTdDLDBDQUEwQztRQUMxQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDeEIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUU3QyxPQUFPO2dCQUNILFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUTtnQkFDdkIsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLO2dCQUNqQixTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU87Z0JBQ3ZCLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVztnQkFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPO2dCQUN2QixXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQy9CLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckQsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO2FBQ3JCLENBQUM7U0FDeEI7UUFFRCxjQUFjO1FBQ2QsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDM0IsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQy9CLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVztZQUM1QixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQixDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDaEMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzdDLE9BQU87WUFDSCxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSztnQkFDZCxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQy9CLElBQUksRUFBRTtnQkFDRixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQzNCO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDckM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLFVBQVU7Z0JBQ1osQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQ3pCLEVBQUUsR0FBRyxDQUNGLENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQ25CLENBQUM7Z0JBQ0csS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLO2dCQUNqQixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRO2dCQUN2QixHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQzthQUNwQyxDQUF1QixDQUMvQjtZQUNELE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkMsQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFBWSxDQUNSLEtBQXNCLEVBQ3RCLElBQXdDO1FBRXhDLE9BQU87WUFDSCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3RDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQy9CLEtBQUssRUFBRTtnQkFDSCxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHO2dCQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJO2FBQzFCO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQzVDO1NBQ2MsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXNCO1FBQ2pDLE9BQU87WUFDSCxLQUFLLEVBQUcsS0FBSyxFQUFFLEtBQWU7Z0JBQzFCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsRUFBRSxHQUFHLENBQ0QsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNMLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO2dCQUNsQixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHO29CQUNWLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBQ3hDLEdBQUc7d0JBQ0QsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDekIsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHO29CQUNmLENBQUMsQ0FBQyxTQUFTO2FBQ2xCLENBQWdCLENBQ3hCO1NBQ1csQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXNCO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsT0FBTyxDQUFDO1FBQ3RELE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRWpFLE9BQU87WUFDSCxXQUFXLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZO2dCQUMxQixJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsT0FBTyxJQUFJLEVBQUUsS0FBSyxPQUFPLEVBQUUsSUFBSSxJQUFJLEVBQUUsS0FBSyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsRUFBRTtnQkFDMUcsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUNsRCxDQUFDLENBQUMsQ0FBQzthQUNQO1lBQ0QsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUNsRCxDQUFDLENBQUMsQ0FBQztZQUNKLFdBQVcsRUFBRTtnQkFDVCxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUNiLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDM0I7Z0JBQ0QsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUNsRCxDQUFDLENBQUMsQ0FBQztnQkFDSixLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVk7YUFDN0I7WUFDRCxTQUFTLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxjQUFjLEVBQUU7Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlO2dCQUM3QixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxjQUFjLEVBQUUsS0FBSyxFQUFFLG9CQUFvQjtnQkFDM0MsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLHFCQUFxQjthQUNqRDtZQUNELFdBQVcsRUFBRTtnQkFDVCxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQjtnQkFDOUIsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3BDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSTtvQkFDakIsSUFBSSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDcEQsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHO2lCQUNqQixDQUFDLENBQUM7YUFDMkI7WUFDbEMsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUMvQixDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVE7Z0JBQ2pCLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDbEMsSUFBSSxFQUFFO2dCQUNGLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQzVDO1NBQ2UsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXNCO1FBQ2hDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2hFLElBQUksS0FBSyxHQUF5QixFQUFFLENBQUM7UUFFckMsSUFBSSxLQUFLLEVBQUU7WUFDUCxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0IsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDekIsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDL0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckQsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZO2FBQ2xDLENBQUMsQ0FBQyxDQUFDO1NBQ1A7YUFBTSxJQUFJLFVBQVUsRUFBRTtZQUNuQixLQUFLLEdBQUcsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDcEMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDekIsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDL0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckQsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZO2FBQ2xDLENBQUMsQ0FBQyxDQUFDO1NBQ1A7YUFBTSxJQUFJLFVBQVUsRUFBRTtZQUNuQixLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUNuRCxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDWixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7Z0JBQ2xCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtnQkFDeEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO2dCQUNsQyx5REFBeUQ7Z0JBQ3pELHVCQUF1QjtnQkFDdkIsbUNBQW1DO2FBQ3RDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFDRCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDaEMsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNwRCxJQUFJLEtBQUssR0FBeUIsRUFBRSxDQUFDO1FBRXJDLElBQUksS0FBSyxFQUFFO1lBQ1AsS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9CLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDbEMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQ1gsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNULEdBQUcsS0FBSyxZQUFZO29CQUNwQixHQUFHLEVBQUUsSUFBSSxLQUFLLFlBQVksQ0FDakMsQ0FDSixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ1Q7Z0JBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVTtnQkFDaEMsT0FBTyxFQUFFO29CQUNMLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3BEO2FBQ0osQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNLElBQUksVUFBVSxFQUFFO1lBQ25CLEtBQUssR0FBRyxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUMsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixPQUFPLEVBQUU7b0JBQ0wsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEQ7YUFDSixDQUFDLENBQUMsQ0FBQztTQUNQO1FBRUQsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUNuQixLQUFLLEVBQUUsS0FBSztTQUNJLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFzQjtRQUNoQyxNQUFNLGNBQWMsR0FBb0IsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVWLE9BQ0ksQ0FBQyxHQUFHLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU07WUFDdkMsQ0FBQyxHQUFHLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFDNUM7WUFDRSxJQUFJLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsQ0FBQyxFQUFFLENBQUM7YUFDUDtZQUNELElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNULGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDeEQ7Z0JBQ0QsQ0FBQyxFQUFFLENBQUM7YUFDUDtTQUNKO1FBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJELE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ3BELEtBQUssRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUN0QixDQUFDLEdBQWtCLEVBQUUsRUFBRSxDQUNuQixDQUFDO2dCQUNHLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUs7Z0JBQ2pCLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUTtnQkFDdkIsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkQsQ0FBdUIsQ0FDL0I7WUFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDaEMsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQ3pELENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNYLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7YUFDbkIsQ0FBQyxDQUNtQjtZQUN6QixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0IsQ0FDZCxLQUFzQjtRQUV0QixPQUFPO1lBQ0gsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxHQUFHLENBQ3ZELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO2dCQUNHLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLO2dCQUNoQyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDO2dCQUMzQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsV0FBVzthQUMvQyxDQUE0QixDQUNwQztTQUNvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFzQjtRQUNwQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRTdCLE1BQU0sZUFBZSxHQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7YUFDcEQsSUFBSSxFQUFFO2FBQ04sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sWUFBWSxHQUFVLEtBQUssQ0FBQyxJQUFJLENBQ2xDLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQ3ZFLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFFdEMsT0FBTyxRQUFRO2dCQUNYLEVBQUUsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDeEMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ2hCLE1BQU0sRUFBRSxHQUFHLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sS0FBSyxHQUNQLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsZUFBZSxDQUFDO2dCQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDO2dCQUU1QixNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQzVCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2pDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRVosTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQ2pELENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUMxQixDQUFDO2dCQUNGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFOUMsT0FBTztvQkFDSCxLQUFLO29CQUNMLFFBQVE7b0JBQ1IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUN6QixZQUFZLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksS0FBSyxFQUFFLFNBQVMsQ0FBQztvQkFDbEQsTUFBTTtvQkFDTixHQUFHO29CQUNILGFBQWEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ2xDLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUNyQztpQkFDc0IsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLEdBQTZCLEtBQUssQ0FBQyxJQUFJLENBQzlDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQ3ZELENBQUM7UUFFRixNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBcUIsWUFBWTthQUN6QyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzNELEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLGVBQWU7U0FDNUMsQ0FBQyxDQUFDLENBQUM7UUFFUixPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQzFELEtBQUs7WUFDTCxNQUFNLEVBQUU7Z0JBQ0osV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDdEMsT0FBTzthQUNWO1lBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQzlELGFBQWEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ2xDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ25DO1NBQ21CLENBQUM7SUFDN0IsQ0FBQztJQUVELHFCQUFxQixDQUNqQixLQUFzQjtRQUV0QixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRTdCLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUNoRSxLQUFLLENBQUM7UUFFVixJQUFJLEtBQUssR0FBaUMsRUFBRSxDQUFDO1FBQzdDLElBQUksT0FBTyxHQUFxQixFQUFFLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxlQUFlLEdBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXBFLE1BQU0sWUFBWSxHQUFVLEtBQUssQ0FBQyxJQUFJLENBQ2xDLElBQUksR0FBRyxDQUNILGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNyRCxDQUFDLE1BQU0sRUFBRSxDQUNiLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sS0FBSyxHQUNQLEVBQUUsRUFBRSxLQUFLO29CQUNULElBQUksRUFBRSxJQUFJO29CQUNWLElBQUksRUFBRSxlQUFlO29CQUNyQixJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQztnQkFDOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxFQUFFLFFBQVEsSUFBSSxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztnQkFDN0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFN0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMvRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRTNELE1BQU0sUUFBUSxHQUNWLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRTlDLE9BQU87b0JBQ0gsS0FBSztvQkFDTCxPQUFPO29CQUNQLElBQUk7b0JBQ0osTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUN4QixZQUFZLEVBQUUsRUFBRSxFQUFFLFFBQVE7b0JBQzFCLEdBQUc7b0JBQ0gsT0FBTztvQkFDUCxLQUFLO2lCQUNzQixDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1lBRUgsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQ2QsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FDdkQsQ0FBQztZQUVGLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsSUFBSSxFQUFFLEdBQUc7YUFDWixDQUFDLENBQUMsQ0FBQztTQUNQO1FBRUQsSUFBSSxVQUFVLEVBQUU7WUFDWixLQUFLLEdBQUcsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQyxPQUFPO29CQUNILEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUs7b0JBQ3hCLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVE7b0JBQzdCLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDcEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUN2QixZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRO29CQUNsQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbEQsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FDdkQ7b0JBQ0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FDckQ7aUJBQ0osQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDM0QsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLEVBQUUsR0FBRztnQkFDVCxJQUFJLEVBQUUsR0FBRzthQUNaLENBQUMsQ0FBQyxDQUFDO1NBQ1A7UUFFRCxJQUFJLE1BQU0sRUFBRTtZQUNSLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sRUFBRSxHQUFHLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7Z0JBQ3JELE1BQU0sS0FBSyxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLGVBQWUsQ0FBQztnQkFDakQsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQztnQkFFN0Isb0NBQW9DO2dCQUNwQyxvREFBb0Q7Z0JBQ3BELDZEQUE2RDtnQkFDN0QsS0FBSztnQkFDTCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUMxQixLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDMUMsS0FBSyxFQUFFLEtBQUssQ0FDZixDQUFDO2dCQUVGLE1BQU0sUUFBUSxHQUNWLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRTlDLE9BQU87b0JBQ0gsS0FBSztvQkFDTCxPQUFPLEVBQUUsUUFBUTtvQkFDakIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUN6QixZQUFZLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ3hCLEdBQUc7b0JBQ0gsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsS0FBSztpQkFDc0IsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzlELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsSUFBSSxFQUFFLElBQUk7YUFDYixDQUFDLENBQUMsQ0FBQztTQUNQO1FBRUQsSUFBSSxVQUFVLEVBQUU7WUFDWixLQUFLLEdBQUcsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDM0MsT0FBTztvQkFDSCxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUs7b0JBQ2pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTztvQkFDckIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUN2QixZQUFZLEVBQUUsR0FBRyxDQUFDLEdBQUc7b0JBQ3JCLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDO29CQUNqQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDckIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUNiLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUN2RDtvQkFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUNiLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUNyRDtpQkFDSixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM1RCxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9DLElBQUksRUFBRSxHQUFHO2dCQUNULElBQUksRUFBRSxHQUFHO2FBQ1osQ0FBQyxDQUFDLENBQUM7U0FDUDtRQUVELElBQUksWUFBWSxFQUFFO1lBQ2QsS0FBSyxHQUFHLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDcEMsT0FBTztvQkFDSCxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSTtvQkFDaEMsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRO29CQUN2QixJQUFJLEVBQUUsU0FBUztvQkFDZixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ3hCLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDM0IsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ2IsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3hEO29CQUNELEtBQUssRUFBRSxTQUFTO2lCQUNuQixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNqRSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3pELElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxRQUFRO2FBQ2pCLENBQUMsQ0FBQyxDQUFDO1NBQ1A7UUFFRCxPQUFPO1lBQ0gsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUM1QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUs7Z0JBQ2QsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUMvQixRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQy9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUTtnQkFDakIsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztZQUNsQyxLQUFLO1lBQ0wsTUFBTSxFQUFFO2dCQUNKLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDL0IsT0FBTzthQUNWO1lBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQzlELDBDQUEwQztZQUMxQyx1Q0FBdUM7WUFDdkMsS0FBSztZQUNMLEdBQUc7WUFDSCxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDOUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUMzQjtZQUNELFVBQVUsRUFBRTtnQkFDUixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN4QyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQ3JDO1NBQ3VCLENBQUM7SUFDakMsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFzQjtRQUNsQyxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTTtnQkFDaEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUN4QyxHQUFHLENBQ0EsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUNYLENBQUM7Z0JBQ0csSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsSUFBSTtnQkFDeEMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsbUJBQW1CLElBQUksSUFBSTthQUN0RCxDQUF5QixDQUNqQztTQUNhLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxJQUFJLEtBQUssRUFBRTtZQUNQLE9BQU87Z0JBQ0gsR0FBRyxFQUFFO29CQUNELEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNELEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUk7aUJBQzFCO2dCQUNELElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUQsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSztnQkFDekIsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDckMsY0FBYyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsY0FBYztnQkFDM0MsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUztnQkFDakMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO29CQUNkLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSzt5QkFDTixHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTt3QkFDZixNQUFNLElBQUksR0FDTixJQUFJLENBQUMsTUFBTTs0QkFDWCxJQUFJLENBQUMsT0FBTzs0QkFDWixJQUFJLENBQUMsSUFBSTs0QkFDVCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBRWxCLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNDLENBQUMsQ0FBQzt5QkFDRCxNQUFNLENBQUMsT0FBTyxDQUFDO29CQUN0QixDQUFDLENBQUMsRUFBRTthQUNTLENBQUM7U0FDekI7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQXNCO1FBQ2xDLE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQ3JCLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDWCxDQUFDO2dCQUNHLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUk7Z0JBQ3ZDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixJQUFJLElBQUk7YUFDdEQsQ0FBeUIsQ0FDakM7U0FDaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQzlCLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNoRCxNQUFNLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDN0QsT0FBTztZQUNILEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDNUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLO2dCQUNkLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDL0IsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQy9CLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FDcEMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFlLENBQ3RDO1lBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xELGFBQWEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsSUFBSSxFQUFFO2dCQUNGLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDM0I7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUNyQztTQUNhLENBQUM7SUFDdkIsQ0FBQztJQUVELGtCQUFrQixDQUNkLEtBQXNCO1FBRXRCLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDcEQsSUFBSSxLQUFLLEdBQThCLEVBQUUsQ0FBQztRQUUxQyxJQUFJLFVBQVUsRUFBRTtZQUNaLEtBQUssR0FBRyxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FDN0IsQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FDbkIsQ0FBQztnQkFDRyxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVc7Z0JBQzdCLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDO2dCQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDbEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUNiLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxDQUNuQixDQUFDLENBQUMsQ0FBQzthQUNQLENBQTRCLENBQ3BDLENBQUM7U0FDTDthQUFNLElBQUksS0FBSyxFQUFFO1lBQ2QsS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxVQUFVLEdBQ1osSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBRWYsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUNuQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUNkO3FCQUFNLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDekMsTUFBTSxHQUFHLENBQUMsQ0FBQztpQkFDZDtnQkFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUMzQixNQUFNLEVBQ04sSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQ3RCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFUCxPQUFPO29CQUNILFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUs7b0JBQy9CLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuRCxJQUFJLEVBQUUsTUFBTTtpQkFDWSxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUN6QixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELEtBQUs7U0FDZ0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXNCO1FBQy9CLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDakMsT0FBTztnQkFDSCxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7b0JBQy9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUTtvQkFDakIsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztnQkFFbEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO29CQUNmLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTt3QkFDOUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLO3dCQUNkLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87b0JBQzNCLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSTtnQkFDakIsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO2dCQUMvQixpQkFBaUIsRUFDYixLQUFLLEVBQUUscUJBQXFCLElBQUksS0FBSyxDQUFDLG9CQUFvQjtnQkFDOUQsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUNsRCxDQUFDLENBQUMsQ0FBQztnQkFDSixPQUFPLEVBQUUsS0FBSyxFQUFFLGVBQWU7Z0JBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYTtnQkFDN0IsYUFBYSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDbEMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDbkM7Z0JBQ0QsSUFBSSxFQUFFO29CQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7b0JBQzlCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7aUJBQzNCO2dCQUNELFVBQVUsRUFBRTtvQkFDUixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO29CQUN4QyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2lCQUNyQzthQUNjLENBQUM7U0FDdkI7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsVUFBVSxDQUNOLEtBQXNCLEVBQ3RCLElBQXFDO1FBRXJDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDbkIsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDdEMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDbkMsSUFBSSxFQUFFLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQztxQkFDOUMsQ0FBQyxDQUFDO29CQUNILFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDaEMsQ0FBQyxDQUFDO2FBQ04sQ0FBQyxDQUFDO1lBQ0gsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQ3JCLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVksQ0FDUixLQUFzQixFQUN0QixPQUEyQztRQUUzQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUVwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQ3ZDLFVBQVUsRUFBRSxNQUFNLElBQUksVUFBVSxFQUFFLFVBQVUsSUFBSSxVQUFVLEVBQUUsUUFBUSxDQUN2RSxDQUFDO1FBRUYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUM3QyxVQUFVLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FDbEMsQ0FBQztRQUVGLG9EQUFvRDtRQUNwRCxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUU7WUFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDNUIsT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7WUFDM0IsT0FBTyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFFMUIsSUFBSSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDN0IsUUFBUSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUM3QixRQUFRLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQzthQUMvQjtTQUNKO1FBRUQsSUFBSSxZQUFZLEVBQUUsTUFBTSxFQUFFO1lBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBRTFCLElBQUksWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzdCLFFBQVEsQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDbkMsUUFBUSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7YUFDL0I7U0FDSjtRQUVELE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSztZQUN2RCxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUTtZQUNoRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUTtZQUNoRSxPQUFPLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDM0IsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDakM7WUFDRCxRQUFRLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQztnQkFDNUIsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDakM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDOUIsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzthQUNuQztZQUNELFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDaEMsZ0JBQWdCLEVBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUU7WUFDckUsS0FBSyxFQUFFLFNBQVM7WUFDaEIsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTO1lBQzNCLE1BQU07WUFDTixZQUFZO1NBQ0csQ0FBQztJQUN4QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXNCO1FBQ2hDLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDcEMsT0FBTztnQkFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ25CLEtBQUssRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQ2xELENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQ25CLENBQUM7b0JBQ0csTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixHQUFHLENBQUMsT0FBTyxDQUNkLENBQUMsQ0FBQyxDQUFDO29CQUNKLFdBQVcsRUFBRSxHQUFHLEVBQUUsV0FBVztvQkFDN0IsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLO29CQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztpQkFDcEMsQ0FBdUIsQ0FDL0I7YUFDZSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFzQjtRQUM5QixJQUFJLEtBQUssRUFBRTtZQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLE9BQU87Z0JBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNuQixLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQ3BDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO29CQUNHLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztvQkFDbEIsSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRTtvQkFDMUIsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJO2lCQUMxQixDQUFxQixDQUM3QjthQUNhLENBQUM7U0FDdEI7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZSxDQUNYLEtBQXNCLEVBQ3RCLElBQStCO1FBRS9CLE1BQU0sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQzdELEtBQUssQ0FBQztRQUNWLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksVUFBVSxFQUFFO1lBQ1osS0FBSyxHQUFHLFVBQVUsRUFBRSxHQUFHLENBQ25CLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO2dCQUNHLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLO2dCQUNoQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsSUFBSSxJQUFJLEVBQUUsSUFBSTtnQkFDekMsSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFO2FBQzVDLENBQXlCLENBQ2pDLENBQUM7U0FDTDthQUFNLElBQUksZUFBZSxFQUFFO1lBQ3hCLEtBQUssR0FBRyxlQUFlLEVBQUUsR0FBRyxDQUN4QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztnQkFDRyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSztnQkFDaEMsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLElBQUksSUFBSSxFQUFFLElBQUk7Z0JBQ3pDLElBQUksRUFBRSxRQUFRLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRTthQUM1QyxDQUF5QixDQUNqQyxDQUFDO1NBQ0w7UUFDRCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ2IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FDbEQsQ0FBQyxDQUFDLENBQUM7WUFDSixNQUFNLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2hFLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ04sQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYyxDQUNWLEtBQXNCLEVBQ3RCLElBQXVDO1FBRXZDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNwRSxJQUFJLEtBQUssR0FBMEIsRUFBRSxDQUFDO1FBRXRDLElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQ2YsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUNYLENBQUM7Z0JBQ0csS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDMUIsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDdEMsTUFBTSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FDaEMsS0FBSyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQ3pCO2dCQUNELE9BQU8sRUFBRTtvQkFDTCxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7b0JBQ2hELEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztpQkFDckQ7YUFDSixDQUF3QixDQUNoQyxDQUFDO1NBQ0w7YUFBTSxJQUFJLEtBQUssRUFBRTtZQUNkLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ1AsT0FBTyxTQUFTLENBQUM7aUJBQ3BCO2dCQUNELE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDOUMsT0FBTztvQkFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUk7b0JBQ2xCLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVztvQkFDL0IsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO29CQUN6QixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7b0JBQ3pCLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ25ELElBQUksRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLEtBQUs7d0JBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtxQkFDbEIsQ0FBQyxDQUFDO29CQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQ2hDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUM1QixHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FDWCxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1QsR0FBRyxLQUFLLFdBQVc7d0JBQ25CLEdBQUcsRUFBRSxJQUFJLEtBQUssV0FBVyxDQUNoQyxDQUNKLENBQ0o7b0JBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUMxQjtpQkFDbUIsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU0sSUFBSSxNQUFNLEVBQUU7WUFDZixLQUFLLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FDZixDQUFDLEtBQVUsRUFBRSxFQUFFLENBQ1gsQ0FBQztnQkFDRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJO2dCQUN6QixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO2dCQUN0QyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUNoQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7Z0JBQ3ZELE9BQU8sRUFBRTtvQkFDTCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoRCxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7aUJBQ3JEO2FBQ0osQ0FBd0IsQ0FDaEMsQ0FBQztTQUNMO2FBQU0sSUFBSSxVQUFVLEVBQUU7WUFDbkIsS0FBSyxHQUFHLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUM3QixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1QsQ0FBQztnQkFDRyxLQUFLLEVBQ0QsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7b0JBQ2xDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSztvQkFDWCxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUs7Z0JBQ3RCLFdBQVcsRUFDUCxHQUFHLEVBQUUsV0FBVyxJQUFJLEdBQUcsRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtvQkFDOUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXO29CQUNqQixDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVc7Z0JBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQ2hDLFVBQVUsRUFBRSxRQUFRLElBQUksRUFBRSxDQUM3QjtnQkFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEQsT0FBTyxFQUFFO29CQUNMLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQztpQkFDbkQ7YUFDSixDQUF3QixDQUNoQyxDQUFDO1NBQ0w7UUFDRCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLO1lBQ0wsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQ2pCLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQXNCO1FBQ3JDLE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FDMUIsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUNoQixDQUFDO2dCQUNHLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUk7Z0JBQzlCLFdBQVcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQzNDLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3JDLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3JDLE1BQU0sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQ2hDLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDeEMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQ1gsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNULEdBQUcsS0FBSyxpQkFBaUI7b0JBQ3pCLEdBQUcsRUFBRSxJQUFJLEtBQUssaUJBQWlCLENBQ3RDLENBQ0osQ0FDSjtnQkFDRCxPQUFPLEVBQUU7b0JBQ0wsS0FBSyxDQUFDLFVBQVUsQ0FDWixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ2IsVUFBVSxFQUFFLE9BQU8sQ0FDdEI7aUJBQ0o7Z0JBQ0QsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTTtvQkFDekIsQ0FBQyxDQUFDO3dCQUNJLElBQUksRUFBRTs0QkFDRixHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDM0IsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSTt5QkFDakI7cUJBQ2xCO29CQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDWixDQUE0QixDQUNwQztTQUNvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBc0I7UUFDNUIsT0FBTztZQUNILE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUM3RCxZQUFZLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN2RDtZQUNELGFBQWEsRUFBRTtnQkFDWCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsV0FBVyxFQUFFO2dCQUNULEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHNCQUFzQjthQUM5QztZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0I7YUFDeEM7WUFFRCxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDN0MsY0FBYyxFQUFFO2dCQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQjtnQkFDckMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUN6RDtZQUNELFlBQVksRUFBRTtnQkFDVixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjO2dCQUNuQyxPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7YUFDeEQ7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDZCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxtQkFBbUI7Z0JBQ3hDLE9BQU8sRUFBRTtvQkFDTDt3QkFDSSxJQUFJLEVBQUUsS0FBSzt3QkFDWCxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxpQkFBaUI7d0JBQ3JDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRztxQkFDbEI7b0JBQ0QsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUNsQixDQUFDLEtBQVUsRUFBRSxFQUFFLENBQ1gsQ0FBQzt3QkFDRyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxDQUFDO3dCQUN6QixJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7d0JBQ2pCLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRztxQkFDbEIsQ0FBbUIsQ0FDM0IsSUFBSSxFQUFFLENBQUM7aUJBQ1g7YUFDSjtZQUNELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7WUFDL0IsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHO1lBQ2YsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDYixDQUFDO0lBQ3JCLENBQUM7SUFFRCxjQUFjLENBQ1YsS0FBc0IsRUFDdEIsWUFBeUI7UUFFekIsT0FBTztZQUNILGVBQWUsRUFDWCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxLQUFLLFFBQVE7Z0JBQzdDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWU7Z0JBQy9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxPQUFPO1lBQ2hELElBQUksRUFBRTtnQkFDRixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsR0FBRzthQUM1QztZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUN0RDtZQUNELE1BQU0sRUFBRSxZQUFZO1lBQ3BCLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FDekIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUNoQixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7YUFDckIsQ0FBdUIsQ0FDL0I7U0FDZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXNCO1FBQzVCLE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7aUJBQ2QsTUFBTSxDQUNILENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQ2xCLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQ25EO2dCQUNELEVBQUUsR0FBRyxDQUNELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO2dCQUNHLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDaEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQ3BCLElBQUksQ0FBQyxHQUFHLEVBQ1IsVUFBVSxFQUNWLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FDaEI7Z0JBQ0QsUUFBUSxFQUFFLFVBQVU7YUFDdkIsQ0FBZ0IsQ0FDeEI7WUFDTCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3JCO1NBQ2xCLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYyxDQUNWLEtBQXNCLEVBQ3RCLE9BQWdCO1FBRWhCLE9BQU87WUFDSCxLQUFLLEVBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLO1lBQ2xFLFFBQVEsRUFDSixLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3RCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUTtZQUM5QyxRQUFRLEVBQ0osS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUN0QixLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVE7WUFDOUMsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDekIsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXO1lBQ2pELE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ2IsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3pELENBQUMsQ0FBQyxDQUFDO1lBQ0osR0FBRyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FDN0IsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLElBQUksRUFBRSxDQUNwQztZQUNELE9BQU87U0FDVixDQUFDO0lBQ04sQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFzQjtRQUNoQyxPQUFPO1lBQ0gsS0FBSyxFQUNELENBQUMsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNwQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO2dCQUNuQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUs7WUFDM0MsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDekIsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXO1lBQ2pELE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFELE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNO2dCQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUN4QixLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNO29CQUM3QixDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO29CQUMzQixDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUMzQztnQkFDSCxDQUFDLENBQUMsRUFBRTtZQUVSLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2RCxDQUFDLENBQUMsU0FBUztZQUNqQixRQUFRLEVBQUUsRUFBRTtZQUNaLElBQUksRUFBRTtnQkFDRixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUM1QztTQUNlLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRSxDQUFhLENBQUM7UUFDdEUsT0FBTztZQUNILEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQy9DLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQzVDO1lBQ0QsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZTtZQUM3QyxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO1lBQ3BDLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWE7WUFDMUMsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFELFFBQVEsRUFBRTtnQkFDTixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZO2dCQUNqQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZO2dCQUN2QyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDbkIsSUFBSSxFQUFFLFNBQVM7YUFDbEI7WUFDRCxRQUFRLEVBQUU7Z0JBQ04sV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUN2QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDaEMsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUM1QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztvQkFDRyxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWE7b0JBQ3pCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtpQkFDbkIsQ0FBbUIsQ0FDM0I7YUFDSjtZQUNELE1BQU0sRUFBRTtnQkFDSixPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FDckIsQ0FBQyxNQUFjLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FDOUIsQ0FBQztvQkFDRyxJQUFJLEVBQUUsS0FBSztvQkFDWCxJQUFJLEVBQUUsTUFBTTtpQkFDZixDQUFtQixDQUMzQjtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2FBQ3RDO1lBQ0QsU0FBUyxFQUFFO2dCQUNQLElBQUksRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQzVCLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUN2QixNQUFNLENBQ1Q7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztnQkFDcEMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztnQkFDOUIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxZQUFZLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDN0IsSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQ3RCLFNBQVMsQ0FDWjtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUNuQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO2dCQUM5QixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQzthQUN0QjtZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUMvQixJQUFJLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUM1QixLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFDeEIsT0FBTyxDQUNWO2dCQUNELFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7Z0JBQ3JDLEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxPQUFPO2dCQUNiLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7Z0JBQy9CLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDL0IsSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQ3hCLE9BQU8sQ0FDVjtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUNyQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUMvQixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQzthQUN0QjtTQUNnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0IsRUFBRSxPQUFnQjtRQUNsRCxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDaEQsSUFBSSxLQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLFVBQVUsRUFBRTtZQUNaLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQ25ELENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQ25CLENBQUM7Z0JBQ0csR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQWU7Z0JBQy9DLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztnQkFDaEIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO2dCQUN0QixXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7Z0JBQzVCLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ2IsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3ZEO2dCQUNELFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTthQUN6QixDQUF1QixDQUMvQixDQUFDO1NBQ0w7YUFBTSxJQUFJLFVBQVUsRUFBRTtZQUNuQixLQUFLLEdBQUcsVUFBVSxFQUFFLEdBQUcsQ0FDbkIsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNULENBQUM7Z0JBQ0csR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNUO2dCQUNmLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQzlCLFdBQVcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ3BDLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ2IsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3ZEO2dCQUNELDBCQUEwQjthQUM3QixDQUF1QixDQUMvQixDQUFDO1NBQ0w7UUFDRCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUs7WUFDWixPQUFPLEVBQUUsT0FBTztTQUNuQixDQUFDO0lBQ04sQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFzQjtRQUNsQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQ3JCLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDWCxDQUFDO2dCQUNHLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ2hDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQzlCLE9BQU8sRUFBRTtvQkFDTCxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7b0JBQ2hELEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztpQkFDckQ7Z0JBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3BELENBQWMsQ0FDdEI7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFzQjtRQUM1QixPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3RDLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3JCO1lBQ2YsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQXNCO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxPQUFPO1lBQ0gsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTtnQkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDekMsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVztZQUNyQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxPQUFPLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWTtnQkFDakMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sUUFBUSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDakYsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsRTtZQUNELE9BQU8sRUFBRTtnQkFDTCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZO2dCQUNqQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUNiLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzdCO2dCQUNELE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEU7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2dCQUMvQixZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRztnQkFDN0MsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEdBQUc7YUFDaEQ7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQy9DLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN6QyxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDdkQsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDMUQ7U0FDUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBc0I7UUFDakMsT0FBTztZQUNILEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDdEMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUNuQyxNQUFNLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUNoQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQ3BDO1lBQ0Qsc0VBQXNFO1lBQ3RFLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ2IsS0FBSyxFQUFFLE9BQU87Z0JBQ1YsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEtBQUssV0FBVyxDQUFDO2lCQUNwRCxPQUFPLEVBQUUsQ0FDakI7WUFDRCxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQzdCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO2dCQUNHLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSTtnQkFDakIsSUFBSSxFQUFFLE9BQU8sR0FBRyxJQUFJLEVBQUUsS0FBSztnQkFDM0IsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXO2FBQ2pDLENBQXFCLENBQzdCO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQzVDO1NBQ2dCLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFzQjtRQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBRTNCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBRUQsT0FBTztZQUNILFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBRXJDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNuRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7aUJBQ2xCLENBQUMsQ0FBQyxDQUFDO2dCQUVKLE9BQU87b0JBQ0gsTUFBTTtvQkFDTixLQUFLLEVBQUUsV0FBVztpQkFDckIsQ0FBQztZQUNOLENBQUMsQ0FBQztZQUNGLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUztTQUM5QixDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFzQjtRQUM5QixPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDaEQsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3RELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMzQyxDQUFDLENBQUM7U0FDVyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBc0I7UUFDN0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sR0FBRyxhQUFhLENBQUM7U0FDM0I7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxHQUFHLFlBQVksQ0FBQztTQUMxQjtRQUNELE1BQU0sT0FBTyxHQUFHO1lBQ1osdUJBQXVCO1lBQ3ZCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDZixFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDcEMsRUFBRSxHQUFHLENBQ0QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUNqQixHQUFHLEVBQUUsT0FBTyxHQUFHLElBQUksRUFBRSxTQUFTO2dCQUM5QixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUNoQixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU07YUFDdkIsQ0FBMkIsQ0FDbkM7WUFDTCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDcEQsRUFBRSxHQUFHLENBQ0QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUNqQixHQUFHLEVBQUUsT0FBTyxHQUFHLElBQUksRUFBRSxTQUFTO2dCQUM5QixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUNoQixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU07YUFDdkIsQ0FBMkIsQ0FDbkM7WUFDTCxRQUFRLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJO2dCQUNyQixHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVM7YUFDWjtZQUNoQixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNwQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDcEMsRUFBRSxHQUFHLENBQ0QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUNqQixHQUFHLEVBQUUsT0FBTyxHQUFHLElBQUksRUFBRSxTQUFTO2dCQUM5QixRQUFRLEVBQUUsVUFBVTthQUN2QixDQUEyQixDQUNuQztTQUNLLENBQUM7UUFFZixPQUFPLE9BQW9CLENBQUM7SUFDaEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFzQjtRQUNoQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUNuQyxDQUFDLEdBQWtCLEVBQUUsRUFBRSxDQUNuQixDQUFDO2dCQUNHLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSztnQkFDakIsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXO2dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztnQkFDbkMsTUFBTSxFQUFFO29CQUNKLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQztpQkFDbEQsQ0FBQyxDQUFDLENBQUM7YUFDUCxDQUF3QixDQUNoQztTQUNlLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUNwQixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztnQkFDRyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSTthQUN6QixDQUF5QixDQUNqQztTQUNnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDaEMsT0FBTztZQUNILEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDdEMsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLEtBQUssRUFBRTtnQkFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlO2dCQUNwQyxJQUFJLEVBQUUsT0FBTztnQkFDYixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlO2dCQUMxQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO2dCQUM5QixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLG1CQUFtQjtnQkFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUMxQixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxPQUFPLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsa0JBQWtCO2dCQUM3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVM7b0JBQ3JCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4RCxFQUFFLEdBQUcsQ0FDRCxDQUFDLE9BQVksRUFBRSxFQUFFLENBQ2IsQ0FBQztvQkFDRyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUU7b0JBQ2pCLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSTtpQkFDdEIsQ0FBbUIsQ0FDM0I7YUFDUjtZQUNELE1BQU0sRUFBRTtnQkFDSixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxpQkFBaUI7Z0JBQzVDLE9BQU8sRUFBRTtvQkFDTDt3QkFDSSxJQUFJLEVBQUUsQ0FBQzt3QkFDUCxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO3FCQUNmO29CQUNuQixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQ2xCLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FDWixDQUFDO3dCQUNHLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRTt3QkFDaEIsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSTtxQkFDNUIsQ0FBbUIsQ0FDM0IsSUFBSSxFQUFFLENBQUM7aUJBQ1g7YUFDSjtZQUNELFFBQVEsRUFBRTtnQkFDTixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQy9CLEVBQUUsR0FBRyxDQUNGLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FDYixDQUFDO29CQUNHLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJO2lCQUN0QixDQUFtQixDQUMzQjthQUNKO1lBQ0QsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtZQUNwQyxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUMvQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUM1QztTQUNlLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFzQjtRQUNoQyxPQUFPO1lBQ0gsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFELElBQUksRUFBRTtnQkFDRixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUM1QztTQUNlLENBQUM7SUFDekIsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixjQUFjLENBQUMsS0FBc0I7UUFDakMsT0FBTztZQUNILFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQy9DLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQzVDO1NBQ2dCLENBQUM7SUFDMUIsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixjQUFjLENBQUMsS0FBc0I7UUFDakMsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1NBQ3JCLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQixDQUNkLEtBQXNCO1FBRXRCLE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQ3BCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO2dCQUNHLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSTthQUM3QyxDQUF3QixDQUNoQztTQUNvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBc0I7UUFDMUIsT0FBTztZQUNILEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLElBQUksRUFBRTtnQkFDRixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUM1QztZQUNELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUMxQixNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsT0FBTyxJQUFJLElBQUksRUFBRSxJQUFJLENBQUM7Z0JBRTVDLE9BQU8sQ0FDSCxPQUFPLEtBQUssS0FBSyxRQUFRO29CQUN6QixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ3ZCLE9BQU8sT0FBTyxLQUFLLFFBQVE7b0JBQzNCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUM1QixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTthQUM5QyxDQUFDLENBQUM7U0FDTyxDQUFDO0lBQ25CLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsY0FBYyxDQUFDLEtBQXNCO1FBQ2pDLE9BQU87WUFDSCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRCxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDeEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsSUFBSSxFQUFFO29CQUNGLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU87b0JBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVc7aUJBQ3RDO2FBQ0osQ0FBQyxDQUFDO1NBQ2MsQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQXNCO1FBQzNCLE9BQU87WUFDSCxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN0QyxJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDNUM7WUFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFELEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDcEIsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNuQyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDO3FCQUM5QyxDQUFDLENBQUM7b0JBQ0gsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2lCQUNoQyxDQUFDLENBQUM7YUFDTixDQUFDLENBQUM7U0FDUSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBc0I7UUFDbEMsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztnQkFDakMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLO2dCQUNqQixXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVc7YUFDaEMsQ0FBQyxDQUFDO1NBQ2UsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQzlCLE9BQU87WUFDSCxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUN4QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztZQUN6QyxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN0QyxXQUFXLEVBQ1AsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsS0FBSyxRQUFRO2dCQUN6QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO2dCQUMzQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTztZQUM1QyxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUMvQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUM1QztZQUNELEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQzFCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUM1QyxJQUFJLEVBQUU7aUJBQ04sR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxVQUFVLEdBQUcsUUFBUTtxQkFDdEIsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7cUJBQ25CLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sVUFBVSxNQUFNLENBQUM7Z0JBRXZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztxQkFDcEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNuQyxJQUFJLENBQ0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDTCxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNwQyxDQUFDO2dCQUVOLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDekMsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDUCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQy9CLFdBQVcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO3FCQUNsRCxDQUFDLENBQUM7aUJBQ047Z0JBRUQsT0FBTztvQkFDSCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7b0JBQzVCLEtBQUs7aUJBQ1IsQ0FBQztZQUNOLENBQUMsQ0FBQztTQUNRLENBQUM7SUFDdkIsQ0FBQztJQUVELGVBQWUsQ0FDWCxLQUFzQixFQUN0QixVQUE4QjtRQUU5QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRSxDQUFhLENBQUM7UUFDdEUsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUM5QixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDOUIsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTTtZQUM1QixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3RDLGNBQWMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWM7WUFDNUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTTtZQUM1QixhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhO1lBQzFDLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRCxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRSxXQUFXLEVBQUU7Z0JBQ1QsS0FBSyxFQUNELEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZTtvQkFDN0Isd0VBQXdFO2dCQUM1RSxXQUFXLEVBQ1AsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlO29CQUM3Qix3RUFBd0U7Z0JBQzVFLEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsWUFBWTthQUNyQjtZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjO29CQUM1QiwrR0FBK0c7Z0JBQ25ILFdBQVcsRUFDUCxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWM7b0JBQzVCLCtHQUErRztnQkFDbkgsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLElBQUksRUFBRSxXQUFXO2FBQ3BCO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLEtBQUssRUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWM7b0JBQzVCLHdHQUF3RztnQkFDNUcsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYztvQkFDNUIsd0dBQXdHO2dCQUM1RyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDbkIsSUFBSSxFQUFFLFdBQVc7YUFDcEI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLHVCQUF1QjtnQkFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUM3QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLDhCQUE4QjtnQkFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUM3QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLGtCQUFrQjtnQkFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUM3QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLHNCQUFzQjtnQkFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUM3QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtvQkFDeEIsd0NBQXdDO2dCQUM1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQzdCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBbUIsQ0FDL0Q7YUFDSjtZQUNELFdBQVcsRUFBRTtnQkFDVCxXQUFXLEVBQ1AsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLElBQUksOEJBQThCO2dCQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQzdCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBbUIsQ0FDL0Q7YUFDSjtZQUNELE1BQU0sRUFBRTtnQkFDSixPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FDckIsQ0FBQyxNQUFjLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FDOUIsQ0FBQztvQkFDRyxJQUFJLEVBQUUsS0FBSztvQkFDWCxJQUFJLEVBQUUsTUFBTTtpQkFDZixDQUFtQixDQUMzQjtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2FBQ3RDO1lBQ0QsWUFBWSxFQUFFO2dCQUNWLElBQUksRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQzVCLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUMxQixTQUFTLENBQ1o7Z0JBQ0QsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxJQUFJLHVCQUF1QjtnQkFDekQsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWTtnQkFDakMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxJQUFJLE1BQU07Z0JBQ3hDLElBQUksRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQzVCLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUN2QixNQUFNLENBQ1Q7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxJQUFJLGlCQUFpQjtnQkFDekQsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztnQkFDOUIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQ3ZCLE1BQU0sQ0FDVDtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLElBQUksWUFBWTtnQkFDcEQsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztnQkFDOUIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxZQUFZLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFNBQVM7Z0JBQzFDLElBQUksRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQzVCLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUN0QixTQUFTLENBQ1o7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFdBQVc7Z0JBQ2xELEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7Z0JBQzlCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsSUFBSSxPQUFPO2dCQUMxQyxJQUFJLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUM1QixLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFDeEIsT0FBTyxDQUNWO2dCQUNELFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsSUFBSSxlQUFlO2dCQUN4RCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUMvQixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLFFBQVE7Z0JBQzNDLElBQUksRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQzVCLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUN4QixRQUFRLENBQ1g7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLG9CQUFvQjtnQkFDN0QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDL0IsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNuRCxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQzthQUN0QjtZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLElBQUksT0FBTztnQkFDMUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQ3hCLE9BQU8sQ0FDVjtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLElBQUksVUFBVTtnQkFDbkQsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDL0IsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxjQUFjLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQzVCLFdBQVcsQ0FDZDtnQkFDRCxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjO2dCQUNsQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjLElBQUksc0JBQXNCO2dCQUM3RCxLQUFLLEVBQUUsSUFBd0M7Z0JBQy9DLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNuQixxQ0FBcUM7YUFDeEM7WUFDRCxVQUFVLEVBQUUsVUFBVTtTQUNKLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVUsQ0FDTixLQUFzQixFQUN0QixJQUErQixFQUMvQixVQUE4QjtRQUU5QixNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3BELE9BQU87WUFDSCxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSztnQkFDZCxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQy9CLElBQUksRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQztZQUN4RCxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUMxQixNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsT0FBTyxJQUFJLElBQUksRUFBRSxJQUFJLENBQUM7Z0JBRTVDLE9BQU8sQ0FDSCxPQUFPLEtBQUssS0FBSyxRQUFRO29CQUN6QixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ3ZCLE9BQU8sT0FBTyxLQUFLLFFBQVE7b0JBQzNCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUM1QixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTthQUM5QyxDQUFDLENBQUM7WUFDSCxpQkFBaUIsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3hCLGFBQWEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsSUFBSSxFQUFFO2dCQUNGLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDM0I7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUNyQztZQUNELFVBQVUsRUFBRSxVQUFVO1NBQ1QsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQzlCLElBQUksS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNaLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSztZQUMzRCxRQUFRLEVBQ0osSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVE7WUFDOUQsV0FBVyxFQUNQLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDeEIsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVc7WUFDeEMsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDbkQsR0FBRyxFQUFFLHdJQUF3STtnQkFDN0ksR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLO2FBQzVEO1lBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7WUFDdkQsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1RCxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLO1lBQ2pELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSixLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUk7Z0JBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxrQkFBa0I7WUFDaEUsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtZQUN4RCxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSTtnQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtZQUN2RCxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV2QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUM7WUFDbkQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjO1lBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakQsT0FBTztZQUNILFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7Z0JBQy9CLGVBQWUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHO2dCQUM5QyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxHQUFHO2FBQ3JEO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUMvQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDekMsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3hELGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDL0Q7WUFDRCxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGlCQUFpQjtZQUNsRCxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjO1lBQzFDLEtBQUssRUFBRSxLQUFLO1lBQ1osZUFBZSxFQUNYLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEtBQUssUUFBUTtnQkFDeEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDMUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU87WUFDM0MsVUFBVSxFQUNOLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDaEIsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJO2dCQUNyQixLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVU7YUFDOUIsQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNiLGdCQUFnQixFQUNaLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEtBQUssUUFBUTtnQkFDM0MsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtnQkFDN0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU87WUFDOUMsV0FBVyxFQUFFLFdBQVc7WUFDeEIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO1NBQ3JDLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQzlCLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNaLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDekIsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUMvQixXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3JDLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztZQUN2RCxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVELFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUN4QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUosTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNuQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxhQUFhLENBQ3RDLENBQUM7UUFFRixJQUFJLGlCQUFpQixHQUNqQixVQUFVO2FBQ0wsTUFBTSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO2FBQzNCLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFFLENBQUMsQ0FBQyxJQUFZLEdBQUksQ0FBQyxDQUFDLElBQVksQ0FBQzthQUMzRCxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUN4QyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQ3JELENBQUM7U0FDTDtRQUVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztZQUNuRCxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWM7WUFDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVqRCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDaEMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDdEMsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDNUMsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDNUMsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDNUMsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDNUMsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDNUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2pFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVE7WUFDL0IsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRztnQkFDL0IsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUc7Z0JBQzlDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUc7YUFDckQ7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQy9DLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN6QyxlQUFlLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDeEQsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUMvRDtZQUNELGlCQUFpQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsaUJBQWlCO1lBQ2xELGVBQWUsRUFDWCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxLQUFLLFFBQVE7Z0JBQ3hDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7Z0JBQzFCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPO1lBQzNDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQ2hCLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtnQkFDckIsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXO2FBQy9CLENBQUMsQ0FBQztZQUNILGlCQUFpQixFQUNiLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEtBQUssUUFBUTtnQkFDM0MsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtnQkFDN0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU87WUFDOUMsWUFBWSxFQUFFLGlCQUFpQjtZQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3pDO1NBQ2dCLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFzQjtRQUNsQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQ3pELENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO2dCQUNoQixXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7Z0JBQzVCLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDO2dCQUNqQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxRCxDQUFDLENBQ0w7U0FDaUIsQ0FBQztJQUMzQixDQUFDO0lBQ0Qsd0JBQXdCO0lBQ3hCLGVBQWUsQ0FBQyxLQUFzQjtRQUNsQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2RCxDQUFDLENBQUM7WUFDSCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QyxDQUFDO0lBQzNCLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsZUFBZSxDQUFDLEtBQXNCO1FBQ2xDLE9BQU87WUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1NBQ1osQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQzlCLE9BQU87WUFDSCxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN0QyxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUN4QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztZQUN6QyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3RDLEtBQUssRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUN6RCxDQUFDLEdBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JCLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSztnQkFDaEIsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRO2dCQUN2QixXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVc7Z0JBQzdCLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDO2FBQ3BDLENBQUMsQ0FDbUI7WUFDekIsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELFVBQVUsRUFBRTtnQkFDUixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDL0MsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDNUM7U0FDYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBc0I7UUFDL0IsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDdEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDYixLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FDekQ7U0FDYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBc0I7UUFDakMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBYSxDQUFDO1FBQ3RFLE9BQU87WUFDSCxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN0QyxJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDNUM7WUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDOUIsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxjQUFjLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjO1lBQzVDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDNUIsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtZQUMxQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsWUFBWSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEUsVUFBVSxFQUFFO2dCQUNSLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7Z0JBQy9CLFdBQVcsRUFDUCxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7b0JBQ3hCLHNFQUFzRTtnQkFDMUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLElBQUksRUFBRSxZQUFZO2FBQ3JCO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFdBQVcsRUFDUCxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7b0JBQ3hCLDZDQUE2QztnQkFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUM3QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtvQkFDeEIsNkNBQTZDO2dCQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQzdCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBbUIsQ0FDL0Q7YUFDSjtZQUNELFVBQVUsRUFBRTtnQkFDUixXQUFXLEVBQ1AsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO29CQUN4QixnRUFBZ0U7Z0JBQ3BFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEdBQUcsQ0FDN0IsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFtQixDQUMvRDthQUNKO1lBQ0QsYUFBYSxFQUFFO2dCQUNYLFdBQVcsRUFDUCxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWE7b0JBQzNCLCtCQUErQjtnQkFDbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUM3QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtvQkFDeEIsb0NBQW9DO2dCQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQzdCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBbUIsQ0FDL0Q7YUFDSjtZQUNELE1BQU0sRUFBRTtnQkFDSixPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FDckIsQ0FBQyxNQUFjLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FDOUIsQ0FBQztvQkFDRyxJQUFJLEVBQUUsS0FBSztvQkFDWCxJQUFJLEVBQUUsTUFBTTtpQkFDZixDQUFtQixDQUMzQjtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2FBQ3RDO1lBQ0QsU0FBUyxFQUFFO2dCQUNQLElBQUksRUFDQSxLQUFLLENBQUMsb0JBQW9CLENBQ3RCLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUN2QixNQUFNLENBQ1QsSUFBSSxZQUFZO2dCQUNyQixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLElBQUksWUFBWTtnQkFDcEQsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztnQkFDOUIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxZQUFZLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDN0IsSUFBSSxFQUNBLEtBQUssQ0FBQyxvQkFBb0IsQ0FDdEIsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQ3RCLFNBQVMsQ0FDWixJQUFJLFdBQVc7Z0JBQ3BCLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxXQUFXO2dCQUNsRCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO2dCQUM5QixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQzthQUN0QjtZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLElBQUksT0FBTztnQkFDMUMsSUFBSSxFQUNBLEtBQUssQ0FBQyxvQkFBb0IsQ0FDdEIsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQ3hCLE9BQU8sQ0FDVixJQUFJLE9BQU87Z0JBQ2hCLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsSUFBSSxlQUFlO2dCQUN4RCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUMvQixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLFNBQVM7Z0JBQzVDLElBQUksRUFDQSxLQUFLLENBQUMsb0JBQW9CLENBQ3RCLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUN4QixRQUFRLENBQ1gsSUFBSSxTQUFTO2dCQUNsQixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLElBQUksb0JBQW9CO2dCQUM3RCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUMvQixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsSUFBSSxPQUFPO2dCQUMxQyxJQUFJLEVBQ0EsS0FBSyxDQUFDLG9CQUFvQixDQUN0QixLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFDeEIsT0FBTyxDQUNWLElBQUksT0FBTztnQkFDaEIsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLFVBQVU7Z0JBQ25ELEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxLQUFLO2dCQUNYLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7Z0JBQy9CLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLElBQUksRUFDQSxLQUFLLENBQUMsb0JBQW9CLENBQ3RCLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUN4QixpQkFBaUIsQ0FDcEIsSUFBSSxpQkFBaUI7Z0JBQzFCLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsSUFBSSxrQkFBa0I7Z0JBQ3BELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7Z0JBQy9CLEtBQUssRUFBRSxJQUF3QztnQkFDL0MsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLHFDQUFxQzthQUN4QztZQUNELE9BQU8sRUFBRTtnQkFDTCxJQUFJLEVBQ0EsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztvQkFDdkQsSUFBSTtnQkFDUixJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO2dCQUMzQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUksc0JBQXNCO2dCQUN0RCxLQUFLLEVBQUUsSUFBd0M7Z0JBQy9DLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNuQixxQ0FBcUM7YUFDeEM7U0FDZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsYUFBYSxDQUNULEtBQXNCLEVBQ3RCLFVBQThCO1FBRTlCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQWEsQ0FBQztRQUN0RSxPQUFPO1lBQ0gsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQzlCLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDNUIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNO1lBQzVCLGNBQWMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWM7WUFDNUMsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtZQUMxQyxJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDNUM7WUFDRCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsWUFBWSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEUsV0FBVyxFQUFFO2dCQUNULEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQzdCLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ25DLEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsWUFBWTthQUNyQjtZQUNELFlBQVksRUFBRTtnQkFDVixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO2dCQUM5QixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO2dCQUNwQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDbkIsSUFBSSxFQUFFLGFBQWE7YUFDdEI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDckMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUN2QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxjQUFjLEVBQUU7Z0JBQ1osV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYztnQkFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUMzQixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQW1CLENBQy9EO2FBQ0o7WUFDRCxNQUFNLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQ3JCLENBQUMsTUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQzlCLENBQUM7b0JBQ0csSUFBSSxFQUFFLEtBQUs7b0JBQ1gsSUFBSSxFQUFFLE1BQU07aUJBQ2YsQ0FBbUIsQ0FDM0I7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTthQUN0QztZQUNELFNBQVMsRUFBRTtnQkFDUCxJQUFJLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUM1QixLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFDdkIsTUFBTSxDQUNUO2dCQUNELFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7Z0JBQ3BDLEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7Z0JBQzlCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsWUFBWSxFQUFFO2dCQUNWLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWE7Z0JBQ2xDLElBQUksRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQzVCLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUMzQixTQUFTLENBQ1o7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtnQkFDeEMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtnQkFDbEMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDL0IsSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQ3hCLE9BQU8sQ0FDVjtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUNyQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUMvQixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsZ0JBQWdCLEVBQUU7Z0JBQ2QsSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQzFCLGFBQWEsQ0FDaEI7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWTtnQkFDdkMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWTtnQkFDakMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDL0IsSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQ3hCLE9BQU8sQ0FDVjtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUNyQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUMvQixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQzthQUN0QjtZQUNELE9BQU8sRUFBRTtnQkFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUM1QixLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFDckIsU0FBUyxDQUNaO2dCQUNELFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87Z0JBQ2xDLEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87Z0JBQzVCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsU0FBUyxFQUFFO2dCQUNQLElBQUksRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQzVCLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUN2QixNQUFNLENBQ1Q7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztnQkFDcEMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztnQkFDOUIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQ3hCLFdBQVcsQ0FDZDtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUNyQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2dCQUMvQixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQzthQUN0QjtZQUNELFVBQVUsRUFBRTtnQkFDUixJQUFJLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUM1QixLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFDeEIsU0FBUyxDQUNaO2dCQUNELFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7Z0JBQ3JDLEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7Z0JBQy9CLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3RCO1lBQ0QsY0FBYyxFQUFFO2dCQUNaLElBQUksRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQzVCLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUN4QixXQUFXLENBQ2Q7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDckMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztnQkFDOUIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFDRCxVQUFVLEVBQUUsVUFBVTtTQUNOLENBQUM7SUFDekIsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixZQUFZLENBQ1IsS0FBc0IsRUFDdEIsT0FBZ0I7UUFFaEIsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3RDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZ0JBQWdCO1lBQ2hELE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxPQUFPO1NBQ1EsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXNCO1FBQzVCLE9BQU87WUFDSCxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1NBQ3BCLENBQUM7SUFDckIsQ0FBQzsrR0Eva0hRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gICAgUHVybzQwNEksXG4gICAgUHVyb0FkdmFudGFnZXNJLFxuICAgIFB1cm9BZHZhbnRhZ2VzSXRlbSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSXRlbSxcbiAgICBQdXJvQmFubmVyNENvbEksXG4gICAgUHVyb0Jhbm5lckluZm8ySSxcbiAgICBQdXJvQmFubmVySW5mb0ksXG4gICAgUHVyb0Jhbm5lclNsaWRlckksXG4gICAgUHVyb0JyZWFkY3J1bWJJLFxuICAgIFB1cm9DYXJlZXJzRm9ybUksXG4gICAgUHVyb0NhcnRhSSxcbiAgICBQdXJvQ29udGFjdEZvcm1JLFxuICAgIFB1cm9EdWFsTGlzdEksXG4gICAgUHVyb0VuZ2luZUksXG4gICAgUHVyb0VuZ2luZU1vZGFsSSxcbiAgICBQdXJvRXZlbnRzRm9ybUksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0ksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckhvdGVsc0ksXG4gICAgUHVyb0Zvb3RlckhvdGVsc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckluZm9JLFxuICAgIFB1cm9Gb290ZXJJbmZvU29jaWFsTWVkaWFJbmZvLFxuICAgIFB1cm9Gb290ZXJMaW5rc0ksXG4gICAgUHVyb0dhbGxlcnlGaWx0ZXIsXG4gICAgUHVyb0dhbGxlcnlJLFxuICAgIFB1cm9HYWxsZXJ5SXRlbSxcbiAgICBQdXJvR3JpZDNDb2xGaWx0ZXJJLFxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckl0ZW0sXG4gICAgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckksXG4gICAgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckl0ZW0sXG4gICAgUHVyb0dyaWQzY29sU2xpZGVySSxcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtLFxuICAgIFB1cm9HcmlkNGl0ZW1zSSxcbiAgICBQdXJvR3JpZDRpdGVtc0l0ZW0sXG4gICAgUHVyb0dyaWQ1aXRlbXNJLFxuICAgIFB1cm9HcmlkNWl0ZW1zSXRlbSxcbiAgICBQdXJvR3JpZDZpdGVtc0ksXG4gICAgUHVyb0hlYWRlckksXG4gICAgUHVyb0hlYWRJbnRyb0ksXG4gICAgUHVyb0ltZ0luZm9JLFxuICAgIFB1cm9JbmZvQmFubmVySSxcbiAgICBQdXJvSW5mb0Jhbm5lckl0ZW0sXG4gICAgUHVyb0luZm9CaWdJLFxuICAgIFB1cm9JbmZvRGV0YWlsc0ksXG4gICAgUHVyb0luZm9HYWxsZXJ5SSxcbiAgICBQdXJvSW5mb0ludHJvSSxcbiAgICBQdXJvSW5mb0xpc3RJLFxuICAgIFB1cm9JbmZvU2VydmljZXNJLFxuICAgIFB1cm9JbmZvU2VydmljZXNJdGVtLFxuICAgIFB1cm9JbmZvU2xpZGVySSxcbiAgICBQdXJvSW5mb1NsaWRlckl0ZW0sXG4gICAgUHVyb0luZm9UYWJsZUksXG4gICAgUHVyb0luZm9WaWRlb0ksXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSSxcbiAgICBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtLFxuICAgIFB1cm9MaXN0QXdhcmRzSSxcbiAgICBQdXJvTGlzdEF3YXJkc0l0ZW1JLFxuICAgIFB1cm9MaXN0R2VuZXJhbEksXG4gICAgUHVyb0xpc3RHZW5lcmFsSXRlbSxcbiAgICBQdXJvTWFwTGlzdEksXG4gICAgUHVyb01hcExpc3RJdGVtLFxuICAgIFB1cm9NZW51SSxcbiAgICBQdXJvTW9kYWxJbmZvSSxcbiAgICBQdXJvTW9kYWxPcHRpb25zSSxcbiAgICBQdXJvTXVzaWNTbGlkZXJJLFxuICAgIFB1cm9OZXdzbGV0dGVySSxcbiAgICBQdXJvT2ZmZXIsXG4gICAgUHVyb09mZmVyQmFubmVySSxcbiAgICBQdXJvUGhvdG9TbGlkZXJJLFxuICAgIFB1cm9Qcm9qZWN0c0Zvcm1JLFxuICAgIFB1cm9GYXFzSSxcbiAgICBQdXJvRmFxc0ltZ0ksXG4gICAgUHVyb1NjaGVkdWxlSSxcbiAgICBQdXJvU2NoZWR1bGVJdGVtLFxuICAgIFB1cm9TbGlkZXIxY29sSSxcbiAgICBQdXJvU2xpZGVyMWNvbEl0ZW0sXG4gICAgUHVyb1NsaWRlcjJjb2xJLFxuICAgIFB1cm9TbGlkZXIzQ2FyZEksXG4gICAgUHVyb1NsaWRlcjNDYXJkSXRlbUksXG4gICAgUHVyb1NsaWRlcjNjb2xJLFxuICAgIFB1cm9TbGlkZXIzQ29sSXRlbSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbSxcbiAgICBQdXJvU2xpZGVyNEl0ZW1zSSxcbiAgICBQdXJvVGhhbmtzSSxcbiAgICBQdXJvVGltZWxpbmVJLFxuICAgIFB1cm9Ub3BTbGlkZXJJLFxuICAgIFB1cm9XZWJtYXBJLFxuICAgIFB1cm9aaWdaYWcyY29sSSxcbiAgICBQdXJvSW5mb0RldGFpbHMzQ29sSSxcbiAgICBQdXJvSW5mb0RldGFpbEl0ZW1JLFxuICAgIFB1cm9JbmZvRGV0YWlsczJDb2xJLFxuICAgIFB1cm9CbG9nTGlzdEksXG4gICAgUHVyb0Jsb2dEZXRhaWxzSSxcbiAgICBQdXJvSW5uZXJDb250ZW50SSxcbiAgICBQdXJvU2xpZGVyMmNvbEl0ZW0sXG4gICAgUHVyb1N1Ym1lbnVNb2JpbGVJdGVtSSxcbiAgICBQdXJvR3JpZDZpdGVtc0l0ZW0sXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50c0ksXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUksXG4gICAgUHVyb0lmcmFtZUksXG4gICAgUHVyb1RpbWVsaW5lWWVhckl0ZW0sXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgUHVyb0luZm8yQ29sSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcHVyby1pbmZvMmNvbC9wdXJvLWluZm8yY29sLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCb2R5Q29tcG9uZW50LCBQdXJvQnV0dG9uSSwgUHVyb0ltYWdlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3B1cm8tZHJvcGRvd24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL21hcHBlci5zZXJ2aWNlLnRva2VuJztcbmltcG9ydCB7IFB1cm9WaWV3c1R5cGUgfSBmcm9tICcuLi8uLi9FbnVtL3ZpZXdzLmVudW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBwZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpdGVTdmMgPSBpbmplY3QoU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5TaXplciA9IGluamVjdChTY3JlZW5TaXplclNlcnZpY2UpO1xuICAgIGdldCBpc01heFNtYWxsRGVza3RvcEluc3RhbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjcmVlblNpemVyLm1heFNtYWxsRGVza3RvcEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgcHJpdmF0ZSB0aHVtYm5haWxBdmFpbGFibGUodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgIHhoci5vcGVuKCdIRUFEJywgdXJsLCBmYWxzZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICAgICAgcmV0dXJuIHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCA0MDA7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIVV0aWxzLmlzQWN0aXZlSW1hZ2UoaW1hZ2UpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5pc01vYmlsZUluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMzc1XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc01lZGl1bVRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5taW5GdWxsRGVza3RvcCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnBhdGg/LndlYnA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2VsZWN0ZWRJbWFnZSB8fCAhaW1hZ2U/LnBhdGg/LndlYnApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgY2RuID0gdGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnQ7XG4gICAgICAgIGNvbnN0IHRodW1iVXJsID0gY2RuICsgc2VsZWN0ZWRJbWFnZTtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmwgPSBjZG4gKyBpbWFnZT8ucGF0aC53ZWJwO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsU3JjID0gdGhpcy50aHVtYm5haWxBdmFpbGFibGUodGh1bWJVcmwpXG4gICAgICAgICAgICA/IHRodW1iVXJsXG4gICAgICAgICAgICA6IG9yaWdpbmFsVXJsO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzcmM6IGZpbmFsU3JjLFxuICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZXM/OiBJbWFnZVJlc3BvbnNlW11cbiAgICApOiBQdXJvSW1hZ2VJW10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB2YWxpZEltYWdlcyA9IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhpbWFnZXMpO1xuXG4gICAgICAgIGlmICghdmFsaWRJbWFnZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB2YWxpZEltYWdlc1xuICAgICAgICAgICAgLm1hcCgoaW1nKSA9PiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpKVxuICAgICAgICAgICAgLmZpbHRlcigoaW1nKTogaW1nIGlzIFB1cm9JbWFnZUkgPT4gISFpbWcpO1xuICAgIH1cblxuICAgIGdldFZpZXcodmlldzogUHVyb1ZpZXdzVHlwZSB8IHVuZGVmaW5lZCk6ICdsZWZ0JyB8ICdyaWdodCcge1xuICAgICAgICByZXR1cm4gdmlldyA9PT0gJ3JpZ2h0JyA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgfVxuXG4gICAgc2FuaXRpemUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5hbWVcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpIC8vIHF1aXRhciB0aWxkZXNcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOSBdL2csICcgJykgLy8gcXVpdGFyIHPDrW1ib2xvcyByYXJvc1xuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgIC5tYXAoKHBhcnQsIGkpID0+XG4gICAgICAgICAgICAgICAgaSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IHBhcnQudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICA6IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0LnNsaWNlKDEpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlQWdlc09wdGlvbnMobWF4TGVuZ3RoOiBudW1iZXIsIG1pbkxlbmd0aCA9IDApOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7IGNvZGU6IGksIG5hbWU6IGkgPCAxMCA/IGAwJHtpfWAgOiBgJHtpfWAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgbWFwQ29tcG9uZW50czxUPihcbiAgICAgICAgYm9keTogYW55W10sXG4gICAgICAgIGFkZG9ucz86IENvbXBvbmVudHNBZGRvbnNcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xuICAgICAgICBsZXQgemlnemFnMmNvbEluZGV4ID0gMDtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keS5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Py5vcmRlcixcbiAgICAgICAgICAgICAgICBwcm9wczogY29tcG9uZW50Py5wcm9wcyxcbiAgICAgICAgICAgICAgICB2aWV3OiBjb21wb25lbnQ/LnZpZXcsXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50LmlkZW50aWZpZXIsXG4gICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8VD47XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Py5uYW1lICYmIGNvbXBvbmVudD8ucHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQzY29sRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHBsdXNmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xQbHVzRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjFjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMWNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckJlYWNocyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJob3RlbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVySG90ZWxzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VibWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckJ1dHRvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXNzbWFsbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9MaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29scm91bmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbWdpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW1naW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW1nSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm90YWJsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVGFibGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ1aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ2aXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0b2ZmZXJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RuZXdzcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3NsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Ryb29tcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R2VuZXJhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RyZXN0YXVyYW50cyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0UmVzdGF1cmFudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzQwNCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2VydmljZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2Jhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2hlZHVsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTY2hlZHVsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ0aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppZ3phZzJjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwWmlnemFnMmNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aWd6YWcyY29sSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgemlnemFnMmNvbEluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkM2NvbFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb3NsaWRlcmxlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhvdG9zbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUGhvdG9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGhvdG9zbGlkZXJsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcjRjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyNENvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yQ29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtYXBsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1hcExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaG90ZWxzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RhZG9iZWFjaCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMYW5ndWFnZXNNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJiYW5uZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGF3YXJkcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0QXdhcmRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY2FyZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzQ2FyZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmluZm8yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZGV0YWlscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2RldGFpbHMyY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9kZXRhaWxzM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlsc0NvbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ211c2ljc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE11c2ljU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjYXJ0YSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDYXJ0YShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjRJdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZHVhbGxpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRHVhbExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Byb2plY3RzZm9ybSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQcm9qZWN0c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibG9nbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nUG9zdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxvcHRpb25zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1vZGFsT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5uZXJjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElubmVyQ29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGltZWxpbmUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGltZWxpbmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIZWFkSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhcmVlcnNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENhcmVlcnNGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdldmVudHNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV2ZW50c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbGluZm9sZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaW5mb3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1vZGFsSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2RhbGluZm9sZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJZnJhbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhcXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmFxcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFxc2ltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGYXFzSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoY29tcG9uZW50TWFwcGVkLm5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNjb2xTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgaG90ZWxzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtW10gPSBbXTtcbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gVXRpbHMubm9ybWFsaXplSW1hZ2VzKG11bHRpbWVkaWE/LmltYWdlbmVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnM/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltZz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQzY29sU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGhvdGVsOiBhbnkpID0+IGhvdGVsPy5pZCAhPT0gNSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWw/LmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaG90ZWw/LmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChob3RlbC50ZXh0cz8ubmFtZSB8fCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaG90ZWwudGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcgPGJyPiAnICsgaG90ZWwudGV4dHMuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsLm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEdhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HYWxsZXJ5SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIGZpbHRlcnMgPSBbXSB9ID0gcHJvcHM7XG5cbiAgICAgICAgY29uc3QgdmFsaWRGaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoKGY6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gTWFudGVuZXIgXCJUb2Rvc1wiIHNpZW1wcmVcbiAgICAgICAgICAgIGlmIChmLmFsbCkgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgICAgIC8vIE1hbnRlbmVyIGhhYml0YWNpb25lcyBwYXJlbnQgKHJvb21zOnRydWUpIHNpZW1wcmVcbiAgICAgICAgICAgIGlmIChmLnJvb21zKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gSGFiaXRhY2lvbmVzIGluZGl2aWR1YWxlcyDihpIgcmVxdWllcmVuIG11bHRpbWVkaWFcbiAgICAgICAgICAgIGlmIChmLnJvb20pXG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZi5tdWx0aW1lZGlhKSAmJiBmLm11bHRpbWVkaWEubGVuZ3RoID4gMDtcblxuICAgICAgICAgICAgLy8gUmVzdG8gZGUgZmlsdHJvcyDihpIgcmVxdWllcmVuIG11bHRpbWVkaWFcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGYubXVsdGltZWRpYSkgJiYgZi5tdWx0aW1lZGlhLmxlbmd0aCA+IDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGluZGV4TWFwID0gbmV3IE1hcDxhbnksIG51bWJlcj4oKTtcbiAgICAgICAgdmFsaWRGaWx0ZXJzLmZvckVhY2goKGY6IGFueSwgaTogYW55KSA9PiBpbmRleE1hcC5zZXQoZiwgaSkpO1xuXG4gICAgICAgIGNvbnN0IG1hcHBlZEZpbHRlcnMgPSB2YWxpZEZpbHRlcnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICBpZDogaW5kZXgsXG4gICAgICAgICAgICBhbGw6IGl0ZW0uYWxsLFxuICAgICAgICAgICAgcm9vbTogaXRlbS5yb29tLFxuICAgICAgICAgICAgcm9vbXM6IGl0ZW0ucm9vbXMsXG4gICAgICAgICAgICB0ZXh0OiBpdGVtLm5hbWUsXG4gICAgICAgIH0pKSBhcyBQdXJvR2FsbGVyeUZpbHRlcltdO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdmFsaWRGaWx0ZXJzLmZsYXRNYXAoKGZpbHRlcjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVyLm11bHRpbWVkaWEpKSByZXR1cm4gW107XG5cbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXIubXVsdGltZWRpYS5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGluZGV4TWFwLmdldChmaWx0ZXIpLCAvLyBpbmRleCBjb3JyZWN0b1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyczogbWFwcGVkRmlsdGVycyxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlclRpdGxlOiB0ZXh0cz8ucm9vbXNGaWx0ZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICB9IGFzIFB1cm9HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBNYXBMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTWFwTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBob3RlbHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9NYXBMaXN0SXRlbVtdID0gW107XG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ01hcExpc3RQaG90bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdNYXBMaXN0UGhvdG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ01hcExpc3RNYXAnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTWFwTGlzdE1hcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHRleHRzPy5uZHRpdGxlLFxuICAgICAgICAgICAgbmREZXNjcmlwdGlvbjogdGV4dHM/Lm5kZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/Lm1hcD8uWzBdKSxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb01hcExpc3RJO1xuICAgIH1cblxuICAgIG1hcE9mZmVyQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvT2ZmZXJCYW5uZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgICAgIC8vVE9ETzpiYWNrXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogJycsXG4gICAgICAgICAgICAgICAgZnJvbTogdGV4dHM/LmZyb20sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmljZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB9IGFzIFB1cm9PZmZlckJhbm5lckk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcExhbmd1YWdlc01vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbGFuZ3VhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBsYW5ndWFnZXMgYXMgUHVyb0xhbmd1YWdlc01vZGFsSXRlbVtdLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGxhbmd1YWdlcy5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtLmlkID09PSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmlkXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvTGFuZ3VhZ2VzTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcEhlYWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbWVudTogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0hlYWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG5hdiwgbXVsdGltZWRpYSwgbGlua3MgfSA9IG1lbnUgfHwge307XG4gICAgICAgIGNvbnN0IHsgYm90dG9tTGlua3MgfSA9IGxpbmtzID8/IHt9O1xuXG4gICAgICAgIGNvbnN0IHRleHRzID0gcHJvcHM/LmhlYWRlckJ1dHRvbnM/LnRleHRzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZU1lbnU6IHRleHRzPy5tZW51LFxuICAgICAgICAgICAgdGl0bGVMYW5nOiB0ZXh0cz8ubGFuZ3VhZ2UsXG4gICAgICAgICAgICBidG5Cb29rOiB0ZXh0cz8uYm9va25vdyxcbiAgICAgICAgICAgIGJ0bkNoZWNraW46IHRleHRzPy5jaGVja2luLFxuICAgICAgICAgICAgYnRuQ2hlY2tpbk9ubGluZTogdGV4dHM/LmNoZWNraW5vbmxpbmUsXG4gICAgICAgICAgICBuYXZMaW5rczogbmF2Py5tYXAoKGxpbms6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9XG4gICAgICAgICAgICAgICAgICAgIGxpbms/LnNpdGVJZCA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnL3B1cm9ob3RlbHMnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGxpbms/LnNpdGVJZCA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcvcHVyb2JlYWNoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHByZWZpeCArIGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IGxpbmsubGlua1R5cGUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvQnV0dG9uSTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBib3R0b21MaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJvdHRvbUxpbmtzPy5bMF0/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5sYWJlbClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBob3RlbEJyYW5kOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxuICAgICAgICB9IGFzIFB1cm9IZWFkZXJJO1xuICAgIH1cblxuICAgIG1hcEluZm9CaWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvQmlnSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbmREZXNjcmlwdGlvbjogdGV4dHM/Lm5kRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9JbmZvQmlnSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIxY29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyMWNvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG11bHRpbWVkaWEsIGJ1dHRvbnMsIHRleHRzLCBwb3N0cyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb1NsaWRlcjFjb2xJdGVtW10gPSBbXTtcblxuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjFjb2xJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHBvc3RzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHBvc3RzLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJsb2dzPy5bMF0/Lm5hbWVJZGVudGlmaWVyPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBpZGVudGlmaWVyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgICAgICAgICAgICAgbGV0IHNpdGVJZCA9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2hvdGVscycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCA9IDI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkLmluY2x1ZGVzKCdwdXJvYmVhY2gnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucyB8fCBbXVxuICAgICAgICAgICAgICAgICk/LlswXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgbGluazogYnV0dG9uLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb1NsaWRlcjFjb2xJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIxY29sSTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQWR2YW50YWdlc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IEFkdmFudGFnZXMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IEFkdmFudGFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbT8uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzSTtcbiAgICB9XG5cbiAgICBtYXBaaWd6YWcyY29sKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpbmRleCA9IDBcbiAgICApOiBQdXJvWmlnWmFnMmNvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXByb3BzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuXG4gICAgICAgIC8vIENBU086IG11bHRpbWVkaWEuaW1hZ2VuZXMgKGFycmF5IGxhcmdvKVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtdWx0aW1lZGlhPy5pbWFnZW5lcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKiAyO1xuICAgICAgICAgICAgY29uc3QgaW1nID0gbXVsdGltZWRpYS5pbWFnZW5lc1tzdGFydF07XG4gICAgICAgICAgICBjb25zdCBuZEltZyA9IG11bHRpbWVkaWEuaW1hZ2VuZXNbc3RhcnQgKyAxXTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTI6IGltZz8ubmRUaXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTI6IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgbmRUaXRsZTogbmRJbWc/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG5kSW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgbmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG5kSW1nKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb1ppZ1phZzJjb2xJO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ0FTTyBsZWdhY3lcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgIG5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5bMV0pLFxuICAgICAgICB9IGFzIFB1cm9aaWdaYWcyY29sSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkNGl0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDRpdGVtc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogKEFycmF5LmlzQXJyYXkobXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICA/IG11bHRpbWVkaWFcbiAgICAgICAgICAgICAgICA6IG11bHRpbWVkaWE/LmltYWdlbmVzXG4gICAgICAgICAgICApPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDRpdGVtc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQ0aXRlbXNJO1xuICAgIH1cblxuICAgIG1hcEluZm9WaWRlbyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZTogJ2luZm92aWRlb3JpZ2h0JyB8ICdpbmZvdmlkZW9sZWZ0J1xuICAgICk6IFB1cm9JbmZvVmlkZW9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICByZXZlcnNlOiBuYW1lLmluY2x1ZGVzKCdyaWdodCcpLFxuICAgICAgICAgICAgdmlkZW86IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHByb3BzLnZpZGVvPy5zcmMsXG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHMudmlkZW8/LnR5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb1ZpZGVvSTtcbiAgICB9XG5cbiAgICBtYXBCcmVhZGNydW1icyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0JyZWFkY3J1bWJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiAocHJvcHM/Lml0ZW1zIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgID8uc29ydCgoYSwgYikgPT4gYSAtIGIpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbT8ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LmNoYXJBdChpdGVtPy51cmw/Lmxlbmd0aCAtIDEpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0JyZWFkY3J1bWJJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJJbmZvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9wcz8uYWRkcmVzcz8uWzBdID8/IHByb3BzPy5hZGRyZXNzO1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBsaW5rcywgc29jaWFsTWVkaWEsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZGRyZXNzSW5mbzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVBZGRyZXNzLFxuICAgICAgICAgICAgICAgIHRleHQ6IGAke2FkZHJlc3M/LmFkZHJlc3MgPz8gJyd9LCAke2FkZHJlc3M/LmNpdHkgPz8gJyd9LCAke2FkZHJlc3M/LmNwID8/ICcnfSAke2FkZHJlc3M/LnByb3ZpbmNlID8/ICcnfWAsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgIClbMV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBjb250YWN0SW5mbzoge1xuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcz8uY29udGFjdExpbmtzPy5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVDb250YWN0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvZ29JbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8ubG9nbz8uWzBdKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXJJbmZvOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZU5ld3NsZXR0ZXIsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiB0ZXh0cz8ubmV3c2xldHRlckNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgaW5wdXRQbGFjZWhvbGRlcjogdGV4dHM/Lm5ld3NsZXR0ZXJQbGFjZWhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzb2NpYWxNZWRpYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVTb2NpYWxNZWRpYSxcbiAgICAgICAgICAgICAgICBpdGVtczogc29jaWFsTWVkaWE/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogVXRpbHMubWFwU29jaWFsY29ucyhpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyM2NvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBldmVudCwgZXhwZXJpZW5jZSwgbXVsdGltZWRpYSwgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIzQ29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV2ZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBleHBlcmllbmNlPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBVdGlscy5ub3JtYWxpemVJbWFnZXMobXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAvLyBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgLy8gZGF0ZTogaXRlbS5kYXRldGltZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gaWNvbjogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uMyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyM2NvbEk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyMmNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjJjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyByb29tcywgbXVsdGltZWRpYSwgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIyY29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKHJvb21zKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHJvb21zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnU2xpZGVyMkNvbCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnU2xpZGVyMkNvbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uZGVzY3JpdGlvbixcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIyY29sSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkNWl0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDVpdGVtc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjb21iaW5lZEltYWdlczogSW1hZ2VSZXNwb25zZVtdID0gW107XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgbGV0IGogPSAwO1xuXG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIGkgPCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgaiA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbD8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uW2ldKSB7XG4gICAgICAgICAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzW2ldKTtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsPy5bal0pIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2Vzc21hbGxbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlc3NtYWxsWzFdKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPz8gcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBjb21iaW5lZEltYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQ1aXRlbXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDVpdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwR3JpZDZpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ2aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IFV0aWxzLm5vcm1hbGl6ZUltYWdlcyhwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSBhcyBQdXJvR3JpZDZpdGVtc0l0ZW1bXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQ2aXRlbXNJO1xuICAgIH1cblxuICAgIG1hcEFkdmFudGFnZXNTbWFsbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9BZHZhbnRhZ2VzU21hbGxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiAocHJvcHMuc2VydmljZXNBZHZhbnRhZ2VzIHx8IHByb3BzPy5BZHZhbnRhZ2VzKT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSB8fCBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyAoaXRlbT8uY2xhc3MgfHwgaXRlbT8uaWNvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCB8fCBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNTbWFsbEl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0FkdmFudGFnZXNTbWFsbEk7XG4gICAgfVxuXG4gICAgbWFwR3JpZDNjb2xGaWx0ZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkM0NvbEZpbHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXByb3BzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IHJhd0Rlc3RpbmF0aW9uczogYW55W10gPSAocHJvcHMuZGVzdGluYXRpb25zID8/IFtdKVxuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb25zOiBhbnlbXSA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBuZXcgTWFwKHJhd0Rlc3RpbmF0aW9ucy5tYXAoKGQ6IGFueSkgPT4gW051bWJlcihkLmlkKSwgZF0pKS52YWx1ZXMoKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHJhd0l0ZW1zID0gZGVzdGluYXRpb25zLmZsYXRNYXAoKGRlc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBkZXN0Py5jaGlsZHJlbiA/PyBbXTtcblxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGhvdGVsOiBhbnkpID0+IGhvdGVsPy5pZCAhPT0gNilcbiAgICAgICAgICAgICAgICAubWFwKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gY2hpbGQ/LnRyYW5zbGF0aW9ucz8uWzBdID8/IHt9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0cj8ubmFtZSA/PyBjaGlsZD8ubmFtZSA/PyBjaGlsZD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV0aXRsZSA9IGRlc3Q/Lm5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gKFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LmhvdGVscz8uWzBdPy5saW5rcz8uWzBdXG4gICAgICAgICAgICAgICAgICAgICkgPz8gW10pWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZ0NvdmVyID0gY2hpbGQ/LmhvdGVscz8uWzBdPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWcuY292ZXJcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nQ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoY2hpbGQ/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogTnVtYmVyKGRlc3Q/LmlkID8/IGNoaWxkPy5wYXJlbnRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUHVyb0dyaWQzQ29sRmlsdGVySXRlbVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBNYXAocmF3SXRlbXMubWFwKChpKSA9PiBbaS5maWx0ZXIsIGldKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICBjb25zdCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gZGVzdGluYXRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChkZXN0OiBhbnkpID0+IHZhbGlkUGFyZW50SWRzLmhhcyhOdW1iZXIoZGVzdD8uaWQpKSlcbiAgICAgICAgICAgIC5tYXAoKGRlc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBOdW1iZXIoZGVzdD8uaWQpLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRlc3Q/Lm5hbWUgfHwgZGVzdD8ubmFtZV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID8/IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucykgPz8gW10sXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sUGx1c0ZpbHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCB7IHRleHRzLCBldmVudCwgZXhwZXJpZW5jZSwgaG90ZWxzLCBtdWx0aW1lZGlhLCBkZXN0aW5hdGlvbnMgfSA9XG4gICAgICAgICAgICBwcm9wcztcblxuICAgICAgICBsZXQgaXRlbXM6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gPSBbXTtcbiAgICAgICAgbGV0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXTtcbiAgICAgICAgY29uc3QgZXhwID0gISEoZXhwZXJpZW5jZSB8fCBob3RlbHMpO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgY29uc3QgcmF3RGVzdGluYXRpb25zOiBhbnlbXSA9IChldmVudCA/PyBbXSkuZmxhdCgpLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25zOiBhbnlbXSA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgbmV3IE1hcChcbiAgICAgICAgICAgICAgICAgICAgcmF3RGVzdGluYXRpb25zLm1hcCgoZDogYW55KSA9PiBbTnVtYmVyKGQuaWQpLCBkXSlcbiAgICAgICAgICAgICAgICApLnZhbHVlcygpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCByYXdJdGVtcyA9IGRlc3RpbmF0aW9ucy5tYXAoKGRlc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gZGVzdD8udGV4dHMgPz8gZGVzdD8udHJhbnNsYXRpb25zID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgdHI/LnRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/Lm5hbWUgPz9cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubmFtZV9pZGVudGlmaWVyID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/LnRyYW5zbGF0aW9ucz8udGl0bGU7XG4gICAgICAgICAgICAgICAgY29uc3QgbmRUaXRsZSA9IHRyPy5sb2NhdGlvbiA/PyBkZXN0Py50cmFuc2xhdGlvbnM/LmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBkZXN0Py5kYXRldGltZT8uc3BsaXQoJyAnKT8uWzBdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgZGVzdD8uYnV0dG9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGRlc3Q/LmxpbmtzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0SW1nID1cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubXVsdGltZWRpYT8uZmluZCgobTogYW55KSA9PiBtPy5jb3ZlcikgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoZmlyc3RJbWcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGRlc3Q/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiB0cj8ubG9jYXRpb24sIC8vIHVzYW1vcyBsb2NhdGlvbiBjb21vIGFncnVwYWRvci9maWx0cm9cbiAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcyxcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGl0ZW1zID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICBuZXcgTWFwKHJhd0l0ZW1zLm1hcCgoaSkgPT4gW2kuZmlsdGVyLCBpXSkpLnZhbHVlcygpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRQYXJlbnRJZHMpLm1hcCgobG9jOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogbG9jLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvYyxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleHBlcmllbmNlKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV4cGVyaWVuY2U/Lm1hcCgoZXhwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZXhwPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiBleHA/LmRhdGV0aW1lPy5zcGxpdCgnICcpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGV4cD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGV4cD8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHA/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cD8ubGlua3M/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZExvYyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRMb2MpLm1hcCgobG9jOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogbG9jLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvYyxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzLm1hcCgoaG90ZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gaG90ZWw/LnRleHRzID8/IGhvdGVsPy50cmFuc2xhdGlvbnMgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0cj8ubmFtZSA/PyBob3RlbD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gaG90ZWw/LmNpdHk7XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zdCBidXR0b25zID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAvLyAgICAgaG90ZWw/LmJ1dHRvbnM/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgLy8gICAgIGhvdGVsPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3M/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEltZyA9XG4gICAgICAgICAgICAgICAgICAgIGhvdGVsPy5tdWx0aW1lZGlhPy5maW5kKChtOiBhbnkpID0+IG0/LmNvdmVyKSA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShmaXJzdEltZyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogbG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoaG90ZWw/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBob3RlbC5jaXR5LFxuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcyxcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQ2l0aWVzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZENpdGllcykubWFwKChjaXR5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogY2l0eSxcbiAgICAgICAgICAgICAgICBuYW1lOiBjaXR5LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogaW1nPy5uZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGltZz8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IGltZy5hbHQsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3M/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZEFsdHMgPSBuZXcgU2V0KGl0ZW1zLm1hcCgoaSkgPT4gaS5maWx0ZXJQYXJlbnQpKTtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBBcnJheS5mcm9tKHZhbGlkQWx0cykubWFwKChhbHQ6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBhbHQsXG4gICAgICAgICAgICAgICAgbmFtZTogYWx0LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc3RpbmF0aW9ucykge1xuICAgICAgICAgICAgaXRlbXMgPSBkZXN0aW5hdGlvbnM/Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlID8/IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGl0ZW0/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkU3VidGl0bGVzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZFN1YnRpdGxlcykubWFwKChzdWJ0aXRsZTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IHN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IHN1YnRpdGxlLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSA/PyBbXSxcbiAgICAgICAgICAgIC8vIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgLy8gICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAvLyApLFxuICAgICAgICAgICAgZXhwLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckk7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVySG90ZWxzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySG90ZWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGhvdGVsOiBhbnkpID0+IGhvdGVsPy5pZCAhPT0gNSlcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucygyLCBob3RlbC5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSA/PyBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaG90ZWw/LnRleHRzPy5sb2NhdGlvbkRlc2NyaXB0aW9uID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvRm9vdGVySG90ZWxzSXRlbVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckhvdGVsc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJMaW5rc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy50ZXh0cz8uaWNvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBtZW1iZXJUaXRsZTogcHJvcHMudGV4dHM/Lm1lbWJlclRpdGxlLFxuICAgICAgICAgICAgICAgIG1lbWJlclByZXRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyUHJldGl0bGUsXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcy50ZXh0cz8uY29weXJpZ2h0LFxuICAgICAgICAgICAgICAgIGxpbmtzOiBwcm9wcy5saW5rc1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzLmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGxpbms6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5zaXRlSWQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNpdGVfaWQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNpdGUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVXRpbHMubWFwQnV0dG9ucyhzaXRlLCBsaW5rKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVyTGlua3NJO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJCZWFjaHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJCZWFjaHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKDMsIGhvdGVsLmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUgPz8gaG90ZWwubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LmxvY2F0aW9uRGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0Zvb3RlckJlYWNoc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckJlYWNoc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgeyBiYWNrZ3JvdW5kaW1hZ2UsIGltYWdlbmVzLCBzbWFsbGltYWdlIH0gPSBtdWx0aW1lZGlhO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IEFycmF5KC4uLihBZHZhbnRhZ2VzIHx8IFtdKSk/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpdGxlIGFzIHN0cmluZ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBzbWFsbEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoc21hbGxpbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGJhY2tncm91bmRpbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9JbmZvTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1NsaWRlcjNDb2xSb3VuZEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhLCBwb3N0cyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3MgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHBvc3RzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHBvc3RzPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPVxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5ibG9ncz8uWzBdPy5uYW1lSWRlbnRpZmllcj8udG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gaWRlbnRpZmllci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgICAgICAgICAgICAgIGxldCBzaXRlSWQgPSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3B1cm9ob3RlbHMnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2JlYWNoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZUlkID0gMztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBzaXRlSWQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMgfHwgW11cbiAgICAgICAgICAgICAgICApPy5bMF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGxpbms6IGJ1dHRvbixcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA/IHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW5cbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uSGlkZGVuOlxuICAgICAgICAgICAgICAgICAgICB0ZXh0cz8uZGVzY3JpcHRpb25BZGRpdGlvbmFsID8/IHRleHRzLmRlc2NyaXB0aW9uQWRpY2lvbmFsLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIHNlZUxlc3M6IHRleHRzPy5idXR0b25NZW5vc2luZm8sXG4gICAgICAgICAgICAgICAgc2VlTW9yZTogdGV4dHM/LmJ1dHRvbk1hc2luZm8sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG1hcEltZ0luZm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnaW1naW5mb3JpZ2h0JyB8ICdpbWdpbmZvbGVmdCdcbiAgICApOiBQdXJvSW1nSW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiBuYW1lPy5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgfSBhcyBQdXJvSW1nSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1RvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VzIHx8IG11bHRpbWVkaWE/Lm11bHRpbWVkaWEgfHwgbXVsdGltZWRpYT8uaW1hZ2VuZXNcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbWFnZXNNb2JpbGUgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYS5pbWFnZW5lc21vYmlsZSB8fCBbXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFByZWNhcmdhIGRpbsOhbWljYSBkZSBsYSBwcmltZXJhIGltYWdlbiBkZWwgc2xpZGVyXG4gICAgICAgIGlmIChpbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbWFnZXNNb2JpbGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNNb2JpbGVbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzTW9iaWxlPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNNb2JpbGVbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlID8/IG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSA/PyBtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUgPz8gbXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICBzcG90aWZ5OiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFjdGlvbnM/Llsnc3BvdGlmeSddLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIHVybDogYWN0aW9ucz8uWydzcG9ydGlmeUxpbmsnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWRlbGl0eToge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5J10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5TGluayddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXI6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ25ld3NsZXR0ZXJMaW5rJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBhY3Rpb25zPy5bJ2xhbmd1YWdlJ10sXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlPy50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgdmlkZW86IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1haW5UaXRsZTogdGV4dHM/Lm1haW5UaXRsZSxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIGltYWdlc01vYmlsZSxcbiAgICAgICAgfSBhcyBQdXJvVG9wU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0Jhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBVdGlscy5ub3JtYWxpemVJbWFnZXMobXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcuYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9CYW5uZXJJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0luZm9CYW5uZXJJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwU2NoZWR1bGUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TY2hlZHVsZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/Lmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TY2hlZHVsZUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSBhcyBQdXJvU2NoZWR1bGVJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICB2aWV3OiBQdXJvVmlld3NUeXBlIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0luZm9TZXJ2aWNlc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBzZXJ2aWNlc1NlcnZpY2UsIEFkdmFudGFnZXMsIG11bHRpbWVkaWEsIGJ1dHRvbnMgfSA9XG4gICAgICAgICAgICBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zID0gW107XG4gICAgICAgIGlmIChBZHZhbnRhZ2VzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IEFkdmFudGFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uZGVzY3JpcHRpb24gPz8gaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3MgPz8gaXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChzZXJ2aWNlc1NlcnZpY2UpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gc2VydmljZXNTZXJ2aWNlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lID8/IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LmRlc2NyaXB0aW9uID8/IGl0ZW0/LnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzID8/IGl0ZW0/Lmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9TZXJ2aWNlc0l0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBidXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXSksXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICB2aWV3OiB0aGlzLmdldFZpZXcodmlldyksXG4gICAgICAgIH0gYXMgUHVyb0luZm9TZXJ2aWNlc0k7XG4gICAgfVxuXG4gICAgbWFwTGlzdEdlbmVyYWwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnbGlzdG5ld3NyaWdodCcgfCAnbGlzdG5ld3NsZWZ0J1xuICAgICk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgb2ZmZXJzLCByb29tcywgbXVsdGltZWRpYSwgaG90ZWxzLCB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb0xpc3RHZW5lcmFsSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG9mZmVycykge1xuICAgICAgICAgICAgaXRlbXMgPSBvZmZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAob2ZmZXI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXIubXVsdGltZWRpYSB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHJvb21zKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHJvb21zPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IHRleHRzLCBlcXVpcG1lbnQsIG11bHRpbWVkaWEgfSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGVxdWlwbWVudD8uc2xpY2UoMCwgMyk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdMaXN0Um9vbXMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdMaXN0Um9vbXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBob3RlbD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaG90ZWw/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShob3RlbD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBob3RlbD8ubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50aXRsZSAmJiBpbWc/LnRpdGxlLnRyaW0oKSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWcudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmRlc2NyaXB0aW9uICYmIGltZz8uZGVzY3JpcHRpb24udHJpbSgpICE9PSAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogbmFtZT8uaW5jbHVkZXMoJ3JpZ2h0JyksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSTtcbiAgICB9XG5cbiAgICBtYXBMaXN0UmVzdGF1cmFudHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MaXN0UmVzdGF1cmFudHNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yZXN0YXVyYW50cz8ubWFwKFxuICAgICAgICAgICAgICAgIChyZXN0YXVyYW50OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVzdGF1cmFudD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzdGF1cmFudD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHJlc3RhdXJhbnQ/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiByZXN0YXVyYW50Py50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdGF1cmFudD8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ0xpc3RSZXN0YXVyYW50cycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdMaXN0UmVzdGF1cmFudHMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLihyZXN0YXVyYW50Py5sb2dvcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHJlc3RhdXJhbnQ/LmxvZ29zPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogcmVzdGF1cmFudD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdFJlc3RhdXJhbnRJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvTGlzdFJlc3RhdXJhbnRzSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9FbmdpbmVJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VySW46IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRhdGVUaXRsZT8uc3BsaXQoJy0nKT8uWzBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGVwaWNrZXJPdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRhdGVUaXRsZT8uc3BsaXQoJy0nKT8uWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGd1ZXN0c0lucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JHdWVzdHNJbnB1dEhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9tb0lucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JQcm9tb0hvbGRlcixcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGJ0bkFwcGx5OiB7IGxhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yQXBwbHkgfSxcbiAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JBZHVsdHNUaXRsZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heEFkdWx0cywgMSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2lkc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRzVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhDaGlsZHJlbiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9jYXRpb25Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25Ib2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3BzPy50ZXh0cz8ubW90b3JEcm9wRG93bk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIC4uLihwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBob3RlbD8ubW9kZWxJZCA/PyA0LCAvLyBmYWx0YSBtb2RlbElkIHBhcmEgbGEgVVJMIGdlbmVyYWRhIHBvciBwYXJ0ZSBkZSBCYWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGhvdGVsPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKSA/PyBbXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclRpdGxlLFxuICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbHM/LlswXSxcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmVNb2RhbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgZW5naW5lTWFwcGVkOiBQdXJvRW5naW5lSVxuICAgICk6IFB1cm9FbmdpbmVNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGVBZHZhbnRhZ2VzOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5naW5lOiBlbmdpbmVNYXBwZWQsXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbT8uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9FbmdpbmVNb2RhbEk7XG4gICAgfVxuXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvV2VibWFwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogcHJvcHM/LnBhZ2VzXG4gICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IFB1cm9CdXR0b25JKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFV0aWxzLnVybFZhbGlkYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcFBob3RvU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByZXZlcnNlOiBib29sZWFuXG4gICAgKTogUHVyb1Bob3RvU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByZXZlcnNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJhbm5lcjRDb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXI0Q29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4pID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm11bHRpbWVkaWEuaW1hZ2ViaWc/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcblxuICAgICAgICAgICAgYmlnYmFubmVyOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViaWc/LlswXVxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYS5pbWFnZWJpZ1swXSlcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNbMF0pXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJpZ3RpdGxlOiAnJyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lcjRDb2xJO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RGb3JtKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQ29udGFjdEZvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNMaW5rcyxcbiAgICAgICAgICAgIHByb21vdGlvbnM6IHByb3BzPy50ZXh0cz8ucHJvbW90aW9ucyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnbWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmREcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnN1bHR0eXBlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5Db25zdWx0eVRwZT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wPy5jb25zdWx0VHlwZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3A/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJlZml4VmFsdWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHJlZml4ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXROYW1lOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWU6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgJ3N1cm5hbWUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0NvbnRhY3RGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQsIHJldmVyc2U6IGJvb2xlYW4pOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG11bHRpbWVkaWEsIGV4cGVyaWVuY2UsIHRleHRzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvSW5mb1NsaWRlckl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBVdGlscy5ub3JtYWxpemVJbWFnZXMobXVsdGltZWRpYT8uaW1hZ2VuZXMpLm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpIGFzIFB1cm9JbWFnZUksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHBlcmllbmNlKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV4cGVyaWVuY2U/Lm1hcChcbiAgICAgICAgICAgICAgICAoZXhwOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cD8ubXVsdGltZWRpYT8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIFB1cm9JbWFnZUksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZXhwPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogZXhwPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZXhwPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXRpdGxlOiBleHAucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgcmV2ZXJzZTogcmV2ZXJzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyLm11bHRpbWVkaWFbMF0pLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvT2ZmZXJcbiAgICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvVGhhbmtzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvVGhhbmtzSTtcbiAgICB9XG5cbiAgICBtYXA0MDQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm80MDRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHByb3BzPy5hZGRyZXNzPy5bMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBgJHthZGRyZXNzLmFkZHJlc3N9PC9icj4ke2FkZHJlc3MuY2l0eX0sICR7YWRkcmVzcy5jcH0gJHthZGRyZXNzLnByb3ZpbmNlfWAsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zPy5bMV0pWzBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRhY3Q6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGUsXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8uQ29udGFjdD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnM/LlsyXSlbMF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm80MDRJO1xuICAgIH1cblxuICAgIG1hcEluZm9HYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG1vcmVpbmZvOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC8vIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMucmV2ZXJzZSgpKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1R5cGUgIT09ICdzZWxmX2xpbmsnKVxuICAgICAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LmVxdWlwbWVudD8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBpdGVtPy5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NjaGVkdWxlSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBJbmZvVGFibGUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvVGFibGVJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgbGlzdHMgPSBwcm9wcz8uTGlzdHM7XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3RzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgY29sdW1uczogbGlzdHMubWFwKChsaXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGxpc3QuaXRlbXMgPz8gW107XG4gICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gaXRlbXNbMF0/LnRpdGxlID8/ICcnO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uSXRlbXMgPSBpdGVtcy5zbGljZSgxKS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IGNvbHVtbkl0ZW1zLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGluZm9JdGVtczogcHJvcHM/LmluZm9JdGVtcyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMkNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm8yQ29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5saW5rKSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLmltYWdlKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvSW5mbzJDb2xJO1xuICAgIH1cblxuICAgIG1hcFN1Ym1lbnUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9NZW51SSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcHJvcHM/Lml0ZW1zPy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICBsZXQgc2l0ZVVybCA9ICcnO1xuICAgICAgICBpZiAodGhpcy5zaXRlSWQoKSA9PT0gMikge1xuICAgICAgICAgICAgc2l0ZVVybCA9ICcvcHVyb2hvdGVscyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaXRlSWQoKSA9PT0gMykge1xuICAgICAgICAgICAgc2l0ZVVybCA9ICcvcHVyb2JlYWNoJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWJtZW51ID0ge1xuICAgICAgICAgICAgLy8gaG90ZWw6IHByb3BzPy5ob3RlbCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBzaXRlVXJsICsgbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zTW9iaWxlOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSAmJiAhaXRlbS5tb2JpbGUpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc2l0ZVVybCArIGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBsaW5rPy5pY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZTogbGluaz8ubW9iaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1N1Ym1lbnVNb2JpbGVJdGVtSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBzZWxlY3RlZD8ubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICB9IGFzIFB1cm9CdXR0b25JLFxuICAgICAgICAgICAgYm90dG9tTGlua3M6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ubW9iaWxlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHNpdGVVcmwgKyBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvTWVudUk7XG5cbiAgICAgICAgcmV0dXJuIHN1Ym1lbnUgYXMgUHVyb01lbnVJO1xuICAgIH1cblxuICAgIG1hcExpc3RBd2FyZHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MaXN0QXdhcmRzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWcuYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdWzBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdEF3YXJkc0l0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9MaXN0QXdhcmRzSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIzQ2FyZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNDYXJkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lkl0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcjogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ2FyZEl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIzQ2FyZEk7XG4gICAgfVxuXG4gICAgbWFwTmV3c2xldHRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb05ld3NsZXR0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1haWxQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBuYW1lOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1haWxQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5tYWlsRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZzoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lmxhbmd1YWdlUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lmxhbmd1YWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGFuZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogbGFuZz8uaWQsIG5hbWU6IGxhbmc/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvdW50cnk6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5jb3VudHJ5UGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvdW50cmllc1xuICAgICAgICAgICAgICAgICAgICA/LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjb3VudHJ5OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogY291bnRyeT8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvdW50cnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5jZW50ZXJQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wcz8udGV4dHM/LmFsbENlbnRlcnMsXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgRHJvcGRvd25PcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIC4uLihwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2VudGVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogY2VudGVyPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY2VudGVyPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICApID8/IFtdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2lkZW50OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucmVzaWRlbnRQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uUmVzaWRlbnQ/LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpXG4gICAgICAgICAgICAgICAgKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoY291bnRyeTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjb3VudHJ5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb3VudHJ5Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb05ld3NsZXR0ZXJJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lckluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXJJbmZvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgZnJhbWVVcmw6IHByb3BzPy50ZXh0cz8uZnJhbWVVcmwsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVySW5mb0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwQmFubmVySW5mbzIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXJJbmZvMkkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVySW5mbzJJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcEluZm9EZXRhaWxzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0RldGFpbHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSBhcyBQdXJvSW5mb0RldGFpbHNJO1xuICAgIH1cblxuICAgIG1hcEluZm9EZXRhaWxzQ29scyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9JbmZvRGV0YWlsczNDb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uSXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgPz8gaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24gPz8gaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb0RldGFpbEl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9JbmZvRGV0YWlsczNDb2xJO1xuICAgIH1cblxuICAgIG1hcEZhcXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9GYXFzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lkl0ZW1zPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gaXRlbT8udGl0bGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGl0ZW0/LmNvbnRlbnQgPz8gaXRlbT8udGV4dDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aXRsZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUudHJpbSgpLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSkubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUudHJpbSgpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IChpdGVtLmNvbnRlbnQgPz8gaXRlbS50ZXh0KS50cmltKCksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb0ZhcXNJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcE11c2ljU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTXVzaWNTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/Lml0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBhdWRpbzogaXRlbS5hdWRpbyxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxuICAgICAgICAgICAgICAgIGRhdGU6IGl0ZW0uZGF0ZSxcbiAgICAgICAgICAgICAgICBoZWFkaW5nOiBpdGVtLmhlYWRpbmcsXG4gICAgICAgICAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBoZWFkaW5nOiBpdGVtLnRleHQ/LmhlYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQ/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb011c2ljU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBDYXJ0YShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NhcnRhSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb0NhcnRhSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXI0SXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXI0SXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyNEl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBEdWFsTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0R1YWxMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaXN0czogT2JqZWN0LmtleXMocHJvcHMudGV4dHMpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkubWF0Y2goL15saXN0XFxkK1RpdGxlJC8pKVxuICAgICAgICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAgICAgICAubWFwKCh0aXRsZUtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0TnVtYmVyID0gdGl0bGVLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdsaXN0JywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnVGl0bGUnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IGBsaXN0JHtsaXN0TnVtYmVyfUl0ZW1gO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1LZXlzID0gT2JqZWN0LmtleXMocHJvcHMudGV4dHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChrKSA9PiBrLnN0YXJ0c1dpdGgocHJlZml4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYS5yZXBsYWNlKHByZWZpeCwgJycpKSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihiLnJlcGxhY2UocHJlZml4LCAnJykpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbUtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0c1tpdGVtS2V5c1tpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzW2l0ZW1LZXlzW2kgKyAxXV0gPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHNbdGl0bGVLZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgUHVyb0R1YWxMaXN0STtcbiAgICB9XG5cbiAgICBtYXBQcm9qZWN0c0Zvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9Qcm9qZWN0c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB5ZFRpdGxlOiBwcm9wcz8udGV4dHM/LnlkdGl0bGUsXG4gICAgICAgICAgICBhaVRpdGxlOiBwcm9wcz8udGV4dHM/LmFpdGl0bGUsXG4gICAgICAgICAgICBpY1RpdGxlOiBwcm9wcz8udGV4dHM/LmljdGl0bGUsXG4gICAgICAgICAgICBkVGl0bGU6IHByb3BzPy50ZXh0cz8uZHRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zbGluayxcbiAgICAgICAgICAgIG90aGVyczogcHJvcHM/LnRleHRzPy5vdGhlcnMsXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGFwcGx5QnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHNlZUFsbEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICB3aHlUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0V2h5TWVzc2FnZSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2h5IGRvIHlvdSBiZWxpZXZlIHRoaXMgaXMgYW4gaWRlYWwgbG9jYXRpb24gZm9yIGEgUHVybyBlc3RhYmxpc2htZW50PycsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRXaHlNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdXaHkgZG8geW91IGJlbGlldmUgdGhpcyBpcyBhbiBpZGVhbCBsb2NhdGlvbiBmb3IgYSBQdXJvIGVzdGFibGlzaG1lbnQ/JyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnd2h5TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2FUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0V2FNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGF0IGF0dHJhY3RzIHlvdSB0byB0aGUgUHVybyBHcm91cCBicmFuZCwgYW5kIGhvdyBkbyB5b3UgZW52aXNpb24gaW50ZWdyYXRpbmcgaXQgaW50byB5b3VyIGJ1c2luZXNzIGNvbmNlcHQ/JyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFdhTWVzc2FnZSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hhdCBhdHRyYWN0cyB5b3UgdG8gdGhlIFB1cm8gR3JvdXAgYnJhbmQsIGFuZCBob3cgZG8geW91IGVudmlzaW9uIGludGVncmF0aW5nIGl0IGludG8geW91ciBidXNpbmVzcyBjb25jZXB0PycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3dhTWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHBUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0UFBNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBkZXRhaWxzIGFib3V0IHlvdXIgY29tcGFueSwgc2hhcmVob2xkZXJzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGV4cGVyaWVuY2UgaW4gdGhlIHNlY3Rvci4nLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0UFBNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBkZXRhaWxzIGFib3V0IHlvdXIgY29tcGFueSwgc2hhcmVob2xkZXJzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGV4cGVyaWVuY2UgaW4gdGhlIHNlY3Rvci4nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdwcE1lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5wRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ucERyb3Bkb3duID8/ICdOYXR1cmUgb2YgdGhlIFByb2plY3QnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBicERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uYnBEcm9wZG93biA/PyAnRG8geW91IGhhdmUgYSBidXNpbmVzcyBwbGFuPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRiRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy50YkRyb3Bkb3duID8/ICdUeXBlIG9mIEJ1c2luZXNzJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBvRHJvcGRvd24gPz8gJ1BsYW5uZWQgT3BlbmluZyBEYXRlJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmVtRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0VzdGltYXRlZCBNb250aHMgb2YgT3BlcmF0aW9uIHBlciBZZWFyJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGJwRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5oYnBEcm9wZG93biA/PyAnRG8geW91IGhhdmUgYSBidXNpbmVzcyBwbGFuPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByZWZpeFZhbHVlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnByZWZpeGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZHJlc3NJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFkZHJlc3NJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3MnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5hZGRyZXNzSW5wdXQgPz8gJ0VzdGFibGlzaG1lbnQgQWRkcmVzcycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckFkZHJlc3MsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2l6ZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0ID8/ICdzaXplJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zaXplSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdzaXplJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0ID8/ICdWZW51ZSBTaXplIChtwrIpJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yU2l6ZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lID8/ICdGaXJzdCBOYW1lJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyA/PyAnc3VybmFtZScsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMgPz8gJ0xhc3QgTmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdFbWFpbCBBZGRyZXNzJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm1FbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnZW1haWxjJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWxjJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnQ29uZmlybSB5b3VyIGVtYWlsJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lID8/ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAnVGVsw6lmb25vJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXRlcmlhbHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0TWF0ZXJpYWxzLFxuICAgICAgICAgICAgICAgICAgICAnbWF0ZXJpYWxzJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHM/LnRleHRzPy5pbnB1dE1hdGVyaWFscyxcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5pbnB1dE1hdGVyaWFscyA/PyAnU3VwcG9ydGluZyBtYXRlcmlhbHMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsIGFzIEZpbGUgfCBGaWxlW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb1Byb2plY3RzRm9ybUk7XG4gICAgfVxuXG4gICAgbWFwRmFxc0ltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgdmlldzogUHVyb1ZpZXdzVHlwZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0ZhcXNJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBJdGVtcywgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWdzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzKSxcbiAgICAgICAgICAgIGl0ZW1zOiBJdGVtcz8uZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGl0ZW0/LnRpdGxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBpdGVtPy5jb250ZW50ID8/IGl0ZW0/LnRleHQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGl0bGUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLnRyaW0oKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAoaXRlbS5jb250ZW50ID8/IGl0ZW0udGV4dCkudHJpbSgpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYXBwbGljYXRpb25CdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB2aWV3OiB0aGlzLmdldFZpZXcodmlldyksXG4gICAgICAgICAgICBjb250YWN0QnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB9IGFzIFB1cm9GYXFzSW1nSTtcbiAgICB9XG5cbiAgICBtYXBCbG9nTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jsb2dMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBwb3N0cyA9IHByb3BzPy5wb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSA/PyBwb3N0Py50cmFuc2xhdGlvbnM/LlswXT8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBwb3N0Py50cmFuc2xhdGlvbnM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHBvc3Q/Lm11bHRpbWVkaWE/LlswXSkgPz8ge1xuICAgICAgICAgICAgICAgIHNyYzogJ2h0dHBzOi8vcHVyby1hcGktZGV2LmItY2RuLm5ldC9tdWx0aW1lZGlhL2ltYWdlcy90aHVtYm5haWxzLzEyODAvMjAzQ2FwdHVyYS0yMGRlLTIwcGFudGFsbGEtMjAyMDE3LTA0LTI0LTIwYS0yMGxhcy0yMDE5LTQ1LTU2LXBuZy53ZWJwJyxcbiAgICAgICAgICAgICAgICBhbHQ6IHBvc3Q/LnRleHRzPy50aXRsZSA/PyBwb3N0Py50cmFuc2xhdGlvbnM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwb3N0Py5jYXRlZ29yeS50cmFuc2xhdGlvbnM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IG5ldyBEYXRlKHBvc3QuY3JlYXRlZEF0KSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHBvc3RzID0gcG9zdHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gYi5kYXRlIC0gYS5kYXRlOyAvLyBhbWJvcyBjb24gZmVjaGFcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgIWIuZGF0ZSkgcmV0dXJuIC0xOyAvLyBhIHRpZW5lIGZlY2hhLCBiIG5vXG4gICAgICAgICAgICBpZiAoIWEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiAxOyAvLyBiIHRpZW5lIGZlY2hhLCBhIG5vXG4gICAgICAgICAgICByZXR1cm4gMDsgLy8gbmluZ3VubyB0aWVuZSBmZWNoYVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBPYnRlbmVyIGxvcyA0IHBvc3RzIG3DoXMgcmVjaWVudGVzXG4gICAgICAgIGNvbnN0IGxhdGVzdFBvc3RzID0gcG9zdHM/LnNsaWNlKDAsIDQpO1xuXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBBcnJheS5pc0FycmF5KHByb3BzPy5wb3N0Q2F0ZWdvcmllcylcbiAgICAgICAgICAgID8gcHJvcHMucG9zdENhdGVnb3JpZXNcbiAgICAgICAgICAgIDogT2JqZWN0LnZhbHVlcyhwcm9wcz8ucG9zdENhdGVnb3JpZXMgfHwge30pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBub3Rmb3VuZFRleHQ6IHByb3BzPy50ZXh0cz8uc2VhcmNoTm90Rm91bmQsXG4gICAgICAgICAgICBwb3N0czogcG9zdHMsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOlxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXMubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyxcbiAgICAgICAgICAgICAgICB9KSkgPz8gW10sXG4gICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHM6IGxhdGVzdFBvc3RzLFxuICAgICAgICAgICAgYW50ZXJpb3I6IHByb3BzPy50ZXh0cz8uYW50ZXJpb3IsXG4gICAgICAgICAgICBzaWd1aWVudGU6IHByb3BzPy50ZXh0cz8uc2lndWllbnRlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJsb2dQb3N0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmxvZ0RldGFpbHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBvc3RJZCA9IHByb3BzPy5wb3N0Py5pZDtcbiAgICAgICAgY29uc3QgcG9zdHMgPSBwcm9wcz8ucmVsYXRlZFBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gKHBvc3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAocDogYW55KSA9PiBwPy5pZCAhPT0gY3VycmVudFBvc3RJZFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByZWxhdGVkUG9zdHNDb25zdCA9XG4gICAgICAgICAgICBjYW5kaWRhdGVzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocDogYW55KSA9PiBwPy5kYXRlKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGIuZGF0ZSBhcyBhbnkpIC0gKGEuZGF0ZSBhcyBhbnkpKVxuICAgICAgICAgICAgICAgIC5zbGljZSgwLCA0KSB8fCBbXTtcbiAgICAgICAgaWYgKHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpdGhvdXREYXRlID0gY2FuZGlkYXRlcy5maWx0ZXIoKHA6IGFueSkgPT4gIXA/LmRhdGUpO1xuICAgICAgICAgICAgcmVsYXRlZFBvc3RzQ29uc3QgPSByZWxhdGVkUG9zdHNDb25zdC5jb25jYXQoXG4gICAgICAgICAgICAgICAgd2l0aG91dERhdGUuc2xpY2UoMCwgNCAtIHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gQXJyYXkuaXNBcnJheShwcm9wcz8ucG9zdENhdGVnb3JpZXMpXG4gICAgICAgICAgICA/IHByb3BzLnBvc3RDYXRlZ29yaWVzXG4gICAgICAgICAgICA6IE9iamVjdC52YWx1ZXMocHJvcHM/LnBvc3RDYXRlZ29yaWVzIHx8IHt9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8ucG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgYWRkaXRpb25hbDQ6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICBkYXRlOiBwcm9wcz8ucG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHByb3BzPy5wb3N0Py5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwcm9wcz8ucG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IGNhdGVnb3JpZXMubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxfcG9zdHMsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICByZWxhdGVkUG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29udGFpbixcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0czogcmVsYXRlZFBvc3RzQ29uc3QsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBzaGFyZTogcHJvcHM/LnRleHRzPy5zaGFyZSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Jsb2dEZXRhaWxzSTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXJTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBVdGlscy5ub3JtYWxpemVJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nLmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJTbGlkZXJJO1xuICAgIH1cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBNb2RhbE9wdGlvbnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Nb2RhbE9wdGlvbnNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0ubGlua3MpWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvTW9kYWxPcHRpb25zSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBJbm5lckNvbnRlbnQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Jbm5lckNvbnRlbnRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8uY29udGVudCxcbiAgICAgICAgfSBhcyBQdXJvSW5uZXJDb250ZW50STtcbiAgICB9XG5cbiAgICBtYXBUaW1lbGluZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1RpbWVsaW5lSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogVXRpbHMubm9ybWFsaXplSW1hZ2VzKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHllYXI6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApIGFzIFB1cm9UaW1lbGluZVllYXJJdGVtLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9UaW1lbGluZUk7XG4gICAgfVxuXG4gICAgbWFwSGVhZEludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSGVhZEludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0hlYWRJbnRyb0k7XG4gICAgfVxuXG4gICAgbWFwQ2FyZWVyc0Zvcm0ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9DYXJlZXJzRm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwcmVmaXhWYWx1ZXMgPSBPYmplY3QudmFsdWVzKHByb3BzPy5wcmVmaXhlcyB8fCB7fSkgYXMgc3RyaW5nW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5ZFRpdGxlOiBwcm9wcz8udGV4dHM/LnlkdGl0bGUsXG4gICAgICAgICAgICBvZFRpdGxlOiBwcm9wcz8udGV4dHM/Lm9kdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNsaW5rLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIHd3VGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy53d1RleHRhcmVhLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lnd3VGV4dGFyZWEgPz9cbiAgICAgICAgICAgICAgICAgICAgJ1dlIHdvdWxkIGxvdmUgdG8ga25vdyBtb3JlIGFib3V0IHlvdSwgcGxlYXNlIHNoYXJlIHlvdXIgY292ZXIgbGV0dGVyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnd3dUZXh0YXJlYScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2xEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LndsRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ1doaWNoIGxvY2F0aW9uIHdvdWxkIHlvdSBsaWtlIHRvIGFwcGx5IGZvcj8nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3cERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud3BEcm9wZG93biA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hpY2ggcG9zaXRpb24gd291bGQgeW91IGxpa2UgdG8gYXBwbHkgZm9yPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFvRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5hb0Ryb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdBbnkgb3RoZXIgbG9jYXRpb24gdGhhdCB5b3UgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiB3b3JraW5nIGF0PycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdsYW5nRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy53bGFuZ0Ryb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGljaCBsYW5ndWFnZXMgZG8geW91IHNwZWFrPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhkRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5oZERyb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdIb3cgZGlkIHlvdSBoZWFyIGFib3V0IFB1cm8gR3JvdXA/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJlZml4VmFsdWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHJlZml4ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdGaXJzdCBuYW1lJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUgPz8gJ0ZpcnN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1cm5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdMYXN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzID8/ICdMYXN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdFbWFpbCBhZGRyZXNzJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm1FbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnZW1haWwgMicsXG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZW1haWxjJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdlbWFpbCAyJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdDb25maXJtIHlvdXIgZW1haWwnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUgPz8gJ3Bob25lJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwaG9uZSdcbiAgICAgICAgICAgICAgICAgICAgKSA/PyAncGhvbmUnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUgPz8gJ1RlbMOpZm9ubycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUGhvbmUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsZXNJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5maWxlc0lucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZGl0aW9uYWxGaWxlcydcbiAgICAgICAgICAgICAgICAgICAgKSA/PyAnYWRkaXRpb25hbEZpbGVzJyxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQgPz8gJ0FkZGl0aW9uYWwgZmlsZXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3ZJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKHByb3BzPy50ZXh0cz8uY3ZJbnB1dCwgJ2N2JykgPz9cbiAgICAgICAgICAgICAgICAgICAgJ2N2JyxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcz8udGV4dHM/LmN2SW5wdXQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uY3ZJbnB1dCA/PyAnVXBsb2FkIHlvIHVyIENWIGhlcmUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsIGFzIEZpbGUgfCBGaWxlW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQ2FyZWVyc0Zvcm1JO1xuICAgIH1cblxuICAgIG1hcEV2ZW50c0Zvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9FdmVudHNGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjaVRpdGxlOiBwcm9wcz8udGV4dHM/LmNpdGl0bGUsXG4gICAgICAgICAgICBkVGl0bGU6IHByb3BzPy50ZXh0cz8uZHRpdGxlLFxuICAgICAgICAgICAgaG93VGl0bGU6IHByb3BzPy50ZXh0cz8uaG93VGl0bGUsXG4gICAgICAgICAgICBvdGhlcnM6IHByb3BzPy50ZXh0cz8ub3RoZXJzLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc2xpbmssXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBhcHBseUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzZWVBbGxCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgaG93VGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaG93TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5mb1RleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5mb1RpdGxlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmluZm9UaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaW5mb01lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5lRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5uZURyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5uYXR1cmU/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdGhlcnNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm90aGVyc0Ryb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3dIZWFyZFVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJlZml4VmFsdWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHJlZml4ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmFtZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5hbWVUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5hbWVFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXNUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lbWFpbEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBhbnlOYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb21wYW55VGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdjb21wYW55TmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvbXBhbnlUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmNvbXBhbnlFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ucGhvbmVUaXRsZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAncGhvbmUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5waG9uZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5wSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ucFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnbnBUaXRsZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5wVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5ucEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmRhdGVUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kYXRlVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5kYXRlRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc0hvdXJJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnNIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdzdGFydEhvdXInXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc0hvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmSG91cklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZkhvdXJUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2VuZEhvdXInXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5mSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZkhvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlRXZlbnRJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm5lRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgICAgICdldmVudFR5cGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5uZURyb3Bkb3duLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmFtZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb0V2ZW50c0Zvcm1JO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcE1vZGFsSW5mbyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmV2ZXJzZTogYm9vbGVhblxuICAgICk6IFB1cm9Nb2RhbEluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGV4dHJhRGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZXh0cmFEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIHJldmVyc2UsXG4gICAgICAgIH0gYXMgUHVyb01vZGFsSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSWZyYW1lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSWZyYW1lSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgfSBhcyBQdXJvSWZyYW1lSTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZSB7XG4gICAgcGF0aDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgdGh1bWJuYWlsczoge1xuICAgICAgICAzNzU6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA1NDA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA3Njg6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA4MDA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMDI0OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTI4MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgfTtcbiAgICBjb3ZlcjogbnVtYmVyO1xuICAgIHRhZ3M/OiBhbnlbXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBwcmV0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGxpbmtzPzogYW55W107XG4gICAgYnV0dG9ucz86IGFueVtdO1xuICAgIGFsdD86IHN0cmluZztcbiAgICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xuICAgIG9yaWdpbmFsOiBzdHJpbmc7XG4gICAgd2VicDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xuICAgIGNvbnN1bHRUeXBlPzogQ29uc3VsdFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogRmlsdGVyT3B0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb25zdWx0VHlwZSB7XG4gICAgY29uc3VsdFR5cGVJZD86IG51bWJlcjtcbiAgICBJZD86IG51bWJlcjtcbiAgICBsYW5ndWFnZUlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG59XG4iXX0=
|