@hestia-earth/ui-components 0.21.21 → 0.22.0
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.
- package/common/logs-utils.d.ts +1 -1
- package/common/utils.d.ts +3 -3
- package/esm2022/common/logs-utils.mjs +2 -2
- package/esm2022/common/utils.mjs +1 -1
- package/esm2022/files/files-error.model.mjs +13 -10
- package/esm2022/files/files-form.model.mjs +3 -3
- package/esm2022/files/files-upload-errors/files-upload-errors.component.mjs +2 -2
- package/esm2022/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.mjs +3 -3
- package/esm2022/node/node-csv-export-confirm/node-csv-export-confirm.component.mjs +3 -3
- package/esm2022/node/node-logs-file/node-logs-file.component.mjs +3 -3
- package/esm2022/node/node-logs-models/node-logs-models.component.mjs +3 -2
- package/esm2022/node/node-logs-models/node-logs-models.model.mjs +5 -3
- package/fesm2022/hestia-earth-ui-components.mjs +29 -23
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/package.json +4 -4
package/common/logs-utils.d.ts
CHANGED
|
@@ -14,4 +14,4 @@ export interface ILine {
|
|
|
14
14
|
export declare const parseData: (data: any) => ILine;
|
|
15
15
|
export declare const parseLines: (text: any) => ILine[];
|
|
16
16
|
export declare const parseMessage: (message: string) => {};
|
|
17
|
-
export declare const
|
|
17
|
+
export declare const logToCsv: (lines: ILine[]) => Promise<string>;
|
package/common/utils.d.ts
CHANGED
|
@@ -46,9 +46,9 @@ export declare const contactUsEmail = "community@hestia.earth";
|
|
|
46
46
|
export declare const externalLink: (href: string, text: string) => string;
|
|
47
47
|
export declare const glossaryLink: (text: string) => string;
|
|
48
48
|
export declare const nodeLink: ({ "@type": type, "@id": id, name }: {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
name
|
|
49
|
+
'@type': string;
|
|
50
|
+
'@id': string;
|
|
51
|
+
name?: string;
|
|
52
52
|
}) => string;
|
|
53
53
|
export declare const schemaLink: (type: string, title?: string) => string;
|
|
54
54
|
export declare const code: (text: string | number | boolean) => string;
|
|
@@ -49,7 +49,7 @@ const formatLine = ({ data: { timestamp, message } }) => ({
|
|
|
49
49
|
timestamp,
|
|
50
50
|
...parseMessage(message)
|
|
51
51
|
});
|
|
52
|
-
export const
|
|
52
|
+
export const logToCsv = (lines) => json2csvAsync(lines.map(formatLine).filter(data => Object.keys(data).length > 1), {
|
|
53
53
|
emptyFieldValue: ''
|
|
54
54
|
});
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbG9ncy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLE1BQU0sQ0FBTixJQUFZLEtBS1g7QUFMRCxXQUFZLEtBQUs7SUFDZix3QkFBZSxDQUFBO0lBQ2Ysc0JBQWEsQ0FBQTtJQUNiLDRCQUFtQixDQUFBO0lBQ25CLHdCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxXLEtBQUssS0FBTCxLQUFLLFFBS2hCO0FBRUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFTM0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUNqQyxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3pCO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUMvQjtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHO0lBQ25CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLGVBQWU7SUFDOUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsaUJBQWlCO0lBQ2hDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDaEIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsa0JBQWtCO0NBQ3BDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNyQyxDQUFDO0lBQ0MsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQzFCLElBQUk7SUFDSixLQUFLLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0NBQ2xCLENBQVUsQ0FBQztBQUVkLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ3RDLE9BQU8sSUFBSSxLQUFLLFFBQVE7SUFDdEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDL0UsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFFeEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUM3QixDQUNFLENBQUM7SUFDQyxHQUFHLEVBQUUsVUFBVTtJQUNmLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxFQUFFO0lBQ1IsSUFBSSxFQUFFLEVBQUU7Q0FDVCxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUNmLENBQUMsSUFBSSxFQUFFLENBQUM7QUFFWCxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRTNGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQzlDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ3hDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsT0FBTztRQUNMLEdBQUcsSUFBSTtRQUNQLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUM5QyxDQUFDO0FBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRVQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELFNBQVM7SUFDVCxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7Q0FDekIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDekMsYUFBYSxDQUNYLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQ2xFO0lBQ0UsZUFBZSxFQUFFLEVBQUU7Q0FDcEIsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganNvbjJjc3ZBc3luYyB9IGZyb20gJ2pzb24tMi1jc3YnO1xuXG5leHBvcnQgZW51bSBMZXZlbCB7XG4gIGRlYnVnID0gJ0RFQlVHJyxcbiAgaW5mbyA9ICdJTkZPJyxcbiAgd2FybmluZyA9ICdXQVJOSU5HJyxcbiAgZXJyb3IgPSAnRVJST1InXG59XG5cbmV4cG9ydCBjb25zdCBsZXZlbHMgPSBPYmplY3QudmFsdWVzKExldmVsKTtcblxuZXhwb3J0IGludGVyZmFjZSBJTGluZSB7XG4gIGNvZGU6IHN0cmluZztcbiAgZGF0YTogYW55O1xuICBjbGFzczogc3RyaW5nO1xuICBsZXZlbDogTGV2ZWw7XG59XG5cbmNvbnN0IHBhcnNlTGluZSA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIHsgbGV2ZWw6IExldmVsLmRlYnVnIH07XG4gIH1cbn07XG5cbmNvbnN0IGxldmVsVG9DbGFzcyA9IHtcbiAgW0xldmVsLmRlYnVnXTogJ2hhcy10ZXh0LWluZm8nLFxuICBbTGV2ZWwuZXJyb3JdOiAnaGFzLXRleHQtZGFuZ2VyJyxcbiAgW0xldmVsLmluZm9dOiAnJyxcbiAgW0xldmVsLndhcm5pbmddOiAnaGFzLXRleHQtd2FybmluZydcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZURhdGEgPSAoZGF0YTogYW55KSA9PlxuICAoe1xuICAgIGNvZGU6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgIGRhdGEsXG4gICAgY2xhc3M6IGxldmVsVG9DbGFzc1tkYXRhLmxldmVsXSxcbiAgICBsZXZlbDogZGF0YS5sZXZlbFxuICB9KSBhcyBJTGluZTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlTGluZXMgPSAodGV4dDogYW55KSA9PlxuICB0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZydcbiAgICA/ICh0ZXh0IHx8ICcnKS50cmltKCkuc3BsaXQoJ1xcbicpLmZpbHRlcihCb29sZWFuKS5tYXAocGFyc2VMaW5lKS5tYXAocGFyc2VEYXRhKVxuICAgIDogW3BhcnNlRGF0YSh0ZXh0KV07XG5cbmNvbnN0IGNzdktleSA9IChrZXk6IHN0cmluZykgPT5cbiAgKFxuICAgICh7XG4gICAgICBrZXk6ICdrZXkvdGVybScsXG4gICAgICB0ZXJtOiAna2V5L3Rlcm0nLFxuICAgICAgdGltZTogJycsXG4gICAgICB1bml0OiAnJ1xuICAgIH0pW2tleV0gfHwga2V5XG4gICkudHJpbSgpO1xuXG5jb25zdCBjc3ZWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiAodmFsdWUgfHwgJycpLnJlcGxhY2UoJ1snLCAnJykucmVwbGFjZSgnXScsICcnKS50cmltKCk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKSA9PlxuICBtZXNzYWdlLnNwbGl0KCcsJykucmVkdWNlKChwcmV2LCBwYXJ0cykgPT4ge1xuICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IHBhcnRzLnNwbGl0KCc9Jyk7XG4gICAgY29uc3QgdmFsID0gY3N2VmFsdWUodmFsdWUpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5wcmV2LFxuICAgICAgLi4uKGtleSAmJiB2YWwgPyB7IFtjc3ZLZXkoa2V5KV06IHZhbCB9IDoge30pXG4gICAgfTtcbiAgfSwge30pO1xuXG5jb25zdCBmb3JtYXRMaW5lID0gKHsgZGF0YTogeyB0aW1lc3RhbXAsIG1lc3NhZ2UgfSB9OiBJTGluZSkgPT4gKHtcbiAgdGltZXN0YW1wLFxuICAuLi5wYXJzZU1lc3NhZ2UobWVzc2FnZSlcbn0pO1xuXG5leHBvcnQgY29uc3QgbG9nVG9Dc3YgPSAobGluZXM6IElMaW5lW10pID0+XG4gIGpzb24yY3N2QXN5bmMoXG4gICAgbGluZXMubWFwKGZvcm1hdExpbmUpLmZpbHRlcihkYXRhID0+IE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCA+IDEpLFxuICAgIHtcbiAgICAgIGVtcHR5RmllbGRWYWx1ZTogJydcbiAgICB9XG4gICk7XG4iXX0=
|
package/esm2022/common/utils.mjs
CHANGED
|
@@ -105,4 +105,4 @@ export const schemaLink = (type, title = type) => `<a href="${baseUrl()}/schema/
|
|
|
105
105
|
export const code = (text) => `<code>${text}</code>`;
|
|
106
106
|
export const contactUsLink = (text = 'contact us') => `<a href="mailto:${contactUsEmail}">${text}</a>`;
|
|
107
107
|
export const reportIssueLink = (repository, template, text = 'here') => externalLink(reportIssueUrl(repository, template), text);
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxpQ0FBaUMsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcscUNBQXFDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFaEgsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDM0MsQ0FBQyxDQUFDLDhCQUE4QjtJQUNoQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUNsRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1FBQ3hCLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztBQUVqQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssTUFBTSxDQUFD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QUUsRUFBRSxDQUM3RCxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixJQUFJLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqRyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxFQUFFLENBQ3ZELFlBQVksT0FBTyxFQUFFLFdBQVcsSUFBSSxxQkFBcUIsS0FBSyxNQUFNLENBQUM7QUFDdkUsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBK0IsRUFBRSxFQUFFLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQztBQUNoRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLEdBQUcsWUFBWSxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsY0FBYyxLQUFLLElBQUksTUFBTSxDQUFDO0FBQ3ZHLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFVBQXNCLEVBQUUsUUFBbUIsRUFBRSxJQUFJLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FDNUYsWUFBWSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IHsgSVNpdGVKU09OTEQsIElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBTY2hlbWFUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuXG5leHBvcnQgY29uc3QgZ2l0SG9tZSA9ICdodHRwczovL2dpdGxhYi5jb20vaGVzdGlhLWVhcnRoJztcbmV4cG9ydCBjb25zdCBnaXRSYXdCYXNlVXJsID0gJ2h0dHBzOi8vZ2wuZ2l0aGFjay5jb20vaGVzdGlhLWVhcnRoJztcbmV4cG9ydCBjb25zdCBnaXRCcmFuY2ggPSAoKSA9PiAoWydkZXYnLCAnc3RhZ2luZyddLnNvbWUoZW52ID0+IGJhc2VVcmwoKS5pbmNsdWRlcyhlbnYpKSA/ICdkZXZlbG9wJyA6ICdtYXN0ZXInKTtcblxuZXhwb3J0IGNvbnN0IGlzQ2hyb21lID0gKCkgPT4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoJ0Nocm9tZScpO1xuXG5leHBvcnQgY29uc3QgYmFzZVVybCA9ICgpID0+XG4gIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4/LmluY2x1ZGVzKCdsb2NhbGhvc3QnKVxuICAgID8gJ2h0dHBzOi8vd3d3LWRldi5oZXN0aWEuZWFydGgnXG4gICAgOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luPy5pbmNsdWRlcygnaGVzdGlhLmVhcnRoJylcbiAgICA/IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAgICA6ICdodHRwczovL3d3dy5oZXN0aWEuZWFydGgnO1xuXG5leHBvcnQgY29uc3QgaXNFeHRlcm5hbCA9ICgpID0+IGJhc2VVcmwoKSAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcblxuY29uc3QgcGFyc2VFcnJvclN0YXR1cyA9IChlcnJvcjogYW55KSA9PiAoZXJyb3I/LnN0YXR1c1RleHQgfHwgJycpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzL2csICctJyk7XG5cbmNvbnN0IHBhcnNlRXJyb3JNZXNzYWdlID0gKGVycm9yOiBhbnkpID0+XG4gIGdldChlcnJvciwgJ2Vycm9yLmVycm9yJywgZ2V0KGVycm9yLCAnZXJyb3IubWVzc2FnZScsIGdldChlcnJvciwgJ2Vycm9yJywgZ2V0KGVycm9yLCAnbWVzc2FnZScsIGVycm9yKSkpKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUFQSUVycm9yID0gKGVycm9yOiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICBlcnJvciA9IHBhcnNlRXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gaWdub3JlIGVycm9yXG4gIH1cbiAgdGhyb3cgZXJyb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZXJyb3JUZXh0ID0gKGVycm9yOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuICBjb25zdCBlcnIgPSBwYXJzZUVycm9yTWVzc2FnZShlcnJvcik7XG4gIHJldHVybiBwYXJzZUVycm9yU3RhdHVzKGVycikgfHwgZXJyO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlclBhcmFtcyA9IChvYmo6IGFueSkgPT4ge1xuICBjb25zdCByZXM6IHtcbiAgICBbeDogc3RyaW5nXTogc3RyaW5nO1xuICB9ID0ge307XG4gIE9iamVjdC5rZXlzKG9iailcbiAgICAuc29ydCgpXG4gICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJlc1trZXldID0gYCR7dmFsdWV9YDtcbiAgICAgIH1cbiAgICB9KTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBjb25zdCB3YWl0Rm9yID0gKHZhcmlhYmxlOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PlxuICBnZXQod2luZG93LCB2YXJpYWJsZSwgZmFsc2UpID8gY2FsbGJhY2soKSA6IHNldFRpbWVvdXQoKCkgPT4gd2FpdEZvcih2YXJpYWJsZSwgY2FsbGJhY2spLCAxMDApO1xuXG5leHBvcnQgY29uc3QgYm90dG9tID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXG5leHBvcnQgY29uc3QgaXNTY3JvbGxlZEJlbG93ID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiAoZWxlbWVudCA/IHdpbmRvdy5zY3JvbGxZID4gYm90dG9tKGVsZW1lbnQpIDogZmFsc2UpO1xuXG5leHBvcnQgY29uc3Qgc2Nyb2xsVG9FbCA9IChpZDogc3RyaW5nLCByZXRyaWVzID0gMCkgPT4ge1xuICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgc2V0VGltZW91dCgoKSA9PiAoZWwgPyBlbC5zY3JvbGxJbnRvVmlldygpIDogcmV0cmllcyA8IDEwID8gc2Nyb2xsVG9FbChpZCwgcmV0cmllcyArIDEpIDogbnVsbCksIDEwMCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2Nyb2xsVG9wID0gKCkgPT4gd2luZG93LnNjcm9sbFRvKDAsIDApO1xuXG5leHBvcnQgY29uc3Qgc2FmZUpTT05QYXJzZSA9IDxUPih2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IChKU09OLnBhcnNlKHZhbHVlKSBhcyBUKSA6IHZhbHVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2FmZUpTT05TdHJpbmdpZnkgPSAodmFsdWU6IHN0cmluZykgPT4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG5cbmV4cG9ydCBjb25zdCBhcnJheVZhbHVlID0gKHZhbHVlczogYW55W10sIGlzQXZlcmFnZTogYm9vbGVhbikgPT5cbiAgKHZhbHVlcyB8fCBbXSkucmVkdWNlKChwcmV2OiBudW1iZXIsIGN1cnIpID0+IHByZXYgKyBwYXJzZUZsb2F0KGAke2N1cnJ9YCksIDApIC8gKGlzQXZlcmFnZSA/IHZhbHVlcy5sZW5ndGggOiAxKTtcblxuZXhwb3J0IGNvbnN0IGVsbGlwc2lzID0gKHRleHQgPSAnJywgbWF4bGVuZ3RoID0gMjApID0+XG4gIHRleHQubGVuZ3RoID4gbWF4bGVuZ3RoID8gYCR7dGV4dC5zdWJzdHJpbmcoMCwgbWF4bGVuZ3RoKX0uLi5gIDogdGV4dDtcblxuY29uc3QgbWFwc1F1ZXJ5ID0gJ2h0dHA6Ly9tYXBzLmdvb2dsZS5jb20vP3E9JztcblxuZXhwb3J0IGNvbnN0IG1hcHNVcmwgPSAobG9jYXRpb24/OiB7IGxhdD86IG51bWJlcjsgbG5nPzogbnVtYmVyOyBuYW1lPzogc3RyaW5nIH0pID0+XG4gIGxvY2F0aW9uXG4gICAgPyBsb2NhdGlvbi5sYXQgJiYgbG9jYXRpb24ubG5nXG4gICAgICA/IGAke21hcHNRdWVyeX0ke2xvY2F0aW9uLmxhdH0sJHtsb2NhdGlvbi5sbmd9YFxuICAgICAgOiBsb2NhdGlvbi5uYW1lXG4gICAgICA/IGAke21hcHNRdWVyeX0ke2VuY29kZVVSSShsb2NhdGlvbi5uYW1lKX1gXG4gICAgICA6IHVuZGVmaW5lZFxuICAgIDogdW5kZWZpbmVkO1xuXG5jb25zdCBub2RlRGVmYXVsdExhYmVsOiB7XG4gIFt0eXBlIGluIFNjaGVtYVR5cGVdPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xufSA9IHtcbiAgW1NjaGVtYVR5cGUuSW1wYWN0QXNzZXNzbWVudF06ICh7IG5hbWUsIGNvdW50cnksIGVuZERhdGUsIHByb2R1Y3QgfTogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpID0+XG4gICAgbmFtZVxuICAgICAgPyBuYW1lLnJlcGxhY2UoYCR7cHJvZHVjdD8udGVybT8ubmFtZX0sIGAsICcnKVxuICAgICAgOiBbcHJvZHVjdD8udGVybT8ubmFtZSwgY291bnRyeT8ubmFtZSwgZW5kRGF0ZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyksXG4gIFtTY2hlbWFUeXBlLlNpdGVdOiAoeyBuYW1lLCBkZXNjcmlwdGlvbiB9OiBJU2l0ZUpTT05MRCkgPT4gbmFtZSB8fCBkZXNjcmlwdGlvbiEsXG4gIFtTY2hlbWFUeXBlLlRyYW5zZm9ybWF0aW9uXTogKHsgbmFtZSwgdGVybSB9OiBhbnkpID0+IG5hbWUgfHwgdGVybT8ubmFtZVxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRMYWJlbCA9IChub2RlPzogYW55KSA9PlxuICBub2RlXG4gICAgPyAobm9kZVsnQHR5cGUnXSBpbiBub2RlRGVmYXVsdExhYmVsID8gbm9kZURlZmF1bHRMYWJlbFtub2RlWydAdHlwZSddXShub2RlKSA6IG5vZGUubmFtZSkgfHwgbm9kZVsnQGlkJ10gfHwgbm9kZS5pZFxuICAgIDogJyc7XG5cbmV4cG9ydCBjb25zdCByZXBlYXQgPSAodGltZXMgPSAwKSA9PiBBcnJheS5mcm9tKEFycmF5KHRpbWVzKSwgTWF0aC5yYW5kb20pO1xuXG5leHBvcnQgY29uc3QgY29weU9iamVjdCA9IChkYXRhPzogYW55KSA9PiAoZGF0YSA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpIDogbnVsbCk7XG5cbmV4cG9ydCBjb25zdCBpc0VxdWFsID0gKGE6IGFueSwgYjogYW55KSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYik7XG5cbmV4cG9ydCBlbnVtIFJlcG9zaXRvcnkge1xuICBnbG9zc2FyeSA9ICdoZXN0aWEtZ2xvc3NhcnknLFxuICBtb2RlbHMgPSAnaGVzdGlhLWVuZ2luZS1tb2RlbHMnLFxuICBvcmNoZXN0cmF0b3IgPSAnaGVzdGlhLWVuZ2luZS1vcmNoZXN0cmF0b3InLFxuICBhZ2dyZWdhdGlvbiA9ICdoZXN0aWEtYWdncmVnYXRpb24tZW5naW5lJyxcbiAgY29tbXVuaXR5ID0gJ2hlc3RpYS1jb21tdW5pdHktZWRpdGlvbicsXG4gIHBvb3JlbmVtZWNrID0gJ2hlc3RpYS1jb252ZXJ0LXBvb3JlLW5lbWVjZWsnLFxuICBmcm9udGVuZCA9ICdoZXN0aWEtZnJvbnQtZW5kJyxcbiAgc2NoZW1hID0gJ2hlc3RpYS1zY2hlbWEnXG59XG5cbmV4cG9ydCBlbnVtIFRlbXBsYXRlIHtcbiAgYnVnID0gJ2J1ZycsXG4gIGZlYXR1cmUgPSAnZmVhdHVyZSdcbn1cblxuZXhwb3J0IGNvbnN0IHJlcG9ydElzc3VlVXJsID0gKHJlcG9zaXRvcnk6IFJlcG9zaXRvcnksIHRlbXBsYXRlPzogVGVtcGxhdGUpID0+XG4gIGAke2dpdEhvbWV9LyR7cmVwb3NpdG9yeX0vLS9pc3N1ZXMvbmV3JHt0ZW1wbGF0ZSA/IGA/aXNzdWFibGVfdGVtcGxhdGU9JHt0ZW1wbGF0ZX1gIDogbnVsbH1gO1xuXG5leHBvcnQgY29uc3QgY29udGFjdFVzRW1haWwgPSAnY29tbXVuaXR5QGhlc3RpYS5lYXJ0aCc7XG5leHBvcnQgY29uc3QgZXh0ZXJuYWxMaW5rID0gKGhyZWY6IHN0cmluZywgdGV4dDogc3RyaW5nKSA9PiBgPGEgaHJlZj1cIiR7aHJlZn1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke3RleHR9PC9hPmA7XG5leHBvcnQgY29uc3QgZ2xvc3NhcnlMaW5rID0gKHRleHQ6IHN0cmluZykgPT4gZXh0ZXJuYWxMaW5rKGAke2Jhc2VVcmwoKX0vZ2xvc3NhcnlgLCB0ZXh0KTtcbmV4cG9ydCBjb25zdCBub2RlTGluayA9ICh7ICdAdHlwZSc6IHR5cGUsICdAaWQnOiBpZCwgbmFtZSB9KSA9PlxuICB0eXBlICYmIGlkID8gYDxhIGhyZWY9XCIvJHt0eXBlLnRvTG93ZXJDYXNlKCl9LyR7aWR9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+JHtuYW1lIHx8IGlkfTwvYT5gIDogbnVsbDtcbmV4cG9ydCBjb25zdCBzY2hlbWFMaW5rID0gKHR5cGU6IHN0cmluZywgdGl0bGUgPSB0eXBlKSA9PlxuICBgPGEgaHJlZj1cIiR7YmFzZVVybCgpfS9zY2hlbWEvJHt0eXBlfVwiIHRhcmdldD1cIl9ibGFua1wiPiR7dGl0bGV9PC9hPmA7XG5leHBvcnQgY29uc3QgY29kZSA9ICh0ZXh0OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKSA9PiBgPGNvZGU+JHt0ZXh0fTwvY29kZT5gO1xuZXhwb3J0IGNvbnN0IGNvbnRhY3RVc0xpbmsgPSAodGV4dCA9ICdjb250YWN0IHVzJykgPT4gYDxhIGhyZWY9XCJtYWlsdG86JHtjb250YWN0VXNFbWFpbH1cIj4ke3RleHR9PC9hPmA7XG5leHBvcnQgY29uc3QgcmVwb3J0SXNzdWVMaW5rID0gKHJlcG9zaXRvcnk6IFJlcG9zaXRvcnksIHRlbXBsYXRlPzogVGVtcGxhdGUsIHRleHQgPSAnaGVyZScpID0+XG4gIGV4dGVybmFsTGluayhyZXBvcnRJc3N1ZVVybChyZXBvc2l0b3J5LCB0ZW1wbGF0ZSksIHRleHQpO1xuIl19
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxpQ0FBaUMsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcscUNBQXFDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFaEgsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDM0MsQ0FBQyxDQUFDLDhCQUE4QjtJQUNoQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUNsRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1FBQ3hCLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztBQUVqQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssTUFBTSxDQUFD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QUFFLEVBQUUsQ0FDaEgsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxxQkFBcUIsSUFBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDakcsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUN2RCxZQUFZLE9BQU8sRUFBRSxXQUFXLElBQUkscUJBQXFCLEtBQUssTUFBTSxDQUFDO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLElBQStCLEVBQUUsRUFBRSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7QUFDaEYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxHQUFHLFlBQVksRUFBRSxFQUFFLENBQUMsbUJBQW1CLGNBQWMsS0FBSyxJQUFJLE1BQU0sQ0FBQztBQUN2RyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxVQUFzQixFQUFFLFFBQW1CLEVBQUUsSUFBSSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQzVGLFlBQVksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCB7IElTaXRlSlNPTkxELCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgU2NoZW1hVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcblxuZXhwb3J0IGNvbnN0IGdpdEhvbWUgPSAnaHR0cHM6Ly9naXRsYWIuY29tL2hlc3RpYS1lYXJ0aCc7XG5leHBvcnQgY29uc3QgZ2l0UmF3QmFzZVVybCA9ICdodHRwczovL2dsLmdpdGhhY2suY29tL2hlc3RpYS1lYXJ0aCc7XG5leHBvcnQgY29uc3QgZ2l0QnJhbmNoID0gKCkgPT4gKFsnZGV2JywgJ3N0YWdpbmcnXS5zb21lKGVudiA9PiBiYXNlVXJsKCkuaW5jbHVkZXMoZW52KSkgPyAnZGV2ZWxvcCcgOiAnbWFzdGVyJyk7XG5cbmV4cG9ydCBjb25zdCBpc0Nocm9tZSA9ICgpID0+IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCdDaHJvbWUnKTtcblxuZXhwb3J0IGNvbnN0IGJhc2VVcmwgPSAoKSA9PlxuICB3aW5kb3cubG9jYXRpb24ub3JpZ2luPy5pbmNsdWRlcygnbG9jYWxob3N0JylcbiAgICA/ICdodHRwczovL3d3dy1kZXYuaGVzdGlhLmVhcnRoJ1xuICAgIDogd2luZG93LmxvY2F0aW9uLm9yaWdpbj8uaW5jbHVkZXMoJ2hlc3RpYS5lYXJ0aCcpXG4gICAgPyB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICAgOiAnaHR0cHM6Ly93d3cuaGVzdGlhLmVhcnRoJztcblxuZXhwb3J0IGNvbnN0IGlzRXh0ZXJuYWwgPSAoKSA9PiBiYXNlVXJsKCkgIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG5cbmNvbnN0IHBhcnNlRXJyb3JTdGF0dXMgPSAoZXJyb3I6IGFueSkgPT4gKGVycm9yPy5zdGF0dXNUZXh0IHx8ICcnKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccy9nLCAnLScpO1xuXG5jb25zdCBwYXJzZUVycm9yTWVzc2FnZSA9IChlcnJvcjogYW55KSA9PlxuICBnZXQoZXJyb3IsICdlcnJvci5lcnJvcicsIGdldChlcnJvciwgJ2Vycm9yLm1lc3NhZ2UnLCBnZXQoZXJyb3IsICdlcnJvcicsIGdldChlcnJvciwgJ21lc3NhZ2UnLCBlcnJvcikpKSk7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVBUElFcnJvciA9IChlcnJvcjogYW55KSA9PiB7XG4gIHRyeSB7XG4gICAgZXJyb3IgPSBwYXJzZUVycm9yTWVzc2FnZShlcnJvcik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGlnbm9yZSBlcnJvclxuICB9XG4gIHRocm93IGVycm9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGVycm9yVGV4dCA9IChlcnJvcjogYW55KTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgY29uc3QgZXJyID0gcGFyc2VFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICByZXR1cm4gcGFyc2VFcnJvclN0YXR1cyhlcnIpIHx8IGVycjtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJQYXJhbXMgPSAob2JqOiBhbnkpID0+IHtcbiAgY29uc3QgcmVzOiB7XG4gICAgW3g6IHN0cmluZ106IHN0cmluZztcbiAgfSA9IHt9O1xuICBPYmplY3Qua2V5cyhvYmopXG4gICAgLnNvcnQoKVxuICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXNba2V5XSA9IGAke3ZhbHVlfWA7XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5leHBvcnQgY29uc3Qgd2FpdEZvciA9ICh2YXJpYWJsZTogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCkgPT5cbiAgZ2V0KHdpbmRvdywgdmFyaWFibGUsIGZhbHNlKSA/IGNhbGxiYWNrKCkgOiBzZXRUaW1lb3V0KCgpID0+IHdhaXRGb3IodmFyaWFibGUsIGNhbGxiYWNrKSwgMTAwKTtcblxuZXhwb3J0IGNvbnN0IGJvdHRvbSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcblxuZXhwb3J0IGNvbnN0IGlzU2Nyb2xsZWRCZWxvdyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4gKGVsZW1lbnQgPyB3aW5kb3cuc2Nyb2xsWSA+IGJvdHRvbShlbGVtZW50KSA6IGZhbHNlKTtcblxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvRWwgPSAoaWQ6IHN0cmluZywgcmV0cmllcyA9IDApID0+IHtcbiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gIHNldFRpbWVvdXQoKCkgPT4gKGVsID8gZWwuc2Nyb2xsSW50b1ZpZXcoKSA6IHJldHJpZXMgPCAxMCA/IHNjcm9sbFRvRWwoaWQsIHJldHJpZXMgKyAxKSA6IG51bGwpLCAxMDApO1xufTtcblxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvcCA9ICgpID0+IHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcblxuZXhwb3J0IGNvbnN0IHNhZmVKU09OUGFyc2UgPSA8VD4odmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55KSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyAoSlNPTi5wYXJzZSh2YWx1ZSkgYXMgVCkgOiB2YWx1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHNhZmVKU09OU3RyaW5naWZ5ID0gKHZhbHVlOiBzdHJpbmcpID0+ICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuXG5leHBvcnQgY29uc3QgYXJyYXlWYWx1ZSA9ICh2YWx1ZXM6IGFueVtdLCBpc0F2ZXJhZ2U6IGJvb2xlYW4pID0+XG4gICh2YWx1ZXMgfHwgW10pLnJlZHVjZSgocHJldjogbnVtYmVyLCBjdXJyKSA9PiBwcmV2ICsgcGFyc2VGbG9hdChgJHtjdXJyfWApLCAwKSAvIChpc0F2ZXJhZ2UgPyB2YWx1ZXMubGVuZ3RoIDogMSk7XG5cbmV4cG9ydCBjb25zdCBlbGxpcHNpcyA9ICh0ZXh0ID0gJycsIG1heGxlbmd0aCA9IDIwKSA9PlxuICB0ZXh0Lmxlbmd0aCA+IG1heGxlbmd0aCA/IGAke3RleHQuc3Vic3RyaW5nKDAsIG1heGxlbmd0aCl9Li4uYCA6IHRleHQ7XG5cbmNvbnN0IG1hcHNRdWVyeSA9ICdodHRwOi8vbWFwcy5nb29nbGUuY29tLz9xPSc7XG5cbmV4cG9ydCBjb25zdCBtYXBzVXJsID0gKGxvY2F0aW9uPzogeyBsYXQ/OiBudW1iZXI7IGxuZz86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9KSA9PlxuICBsb2NhdGlvblxuICAgID8gbG9jYXRpb24ubGF0ICYmIGxvY2F0aW9uLmxuZ1xuICAgICAgPyBgJHttYXBzUXVlcnl9JHtsb2NhdGlvbi5sYXR9LCR7bG9jYXRpb24ubG5nfWBcbiAgICAgIDogbG9jYXRpb24ubmFtZVxuICAgICAgPyBgJHttYXBzUXVlcnl9JHtlbmNvZGVVUkkobG9jYXRpb24ubmFtZSl9YFxuICAgICAgOiB1bmRlZmluZWRcbiAgICA6IHVuZGVmaW5lZDtcblxuY29uc3Qgbm9kZURlZmF1bHRMYWJlbDoge1xuICBbdHlwZSBpbiBTY2hlbWFUeXBlXT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbn0gPSB7XG4gIFtTY2hlbWFUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiAoeyBuYW1lLCBjb3VudHJ5LCBlbmREYXRlLCBwcm9kdWN0IH06IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSA9PlxuICAgIG5hbWVcbiAgICAgID8gbmFtZS5yZXBsYWNlKGAke3Byb2R1Y3Q/LnRlcm0/Lm5hbWV9LCBgLCAnJylcbiAgICAgIDogW3Byb2R1Y3Q/LnRlcm0/Lm5hbWUsIGNvdW50cnk/Lm5hbWUsIGVuZERhdGVdLmZpbHRlcihCb29sZWFuKS5qb2luKCcsICcpLFxuICBbU2NoZW1hVHlwZS5TaXRlXTogKHsgbmFtZSwgZGVzY3JpcHRpb24gfTogSVNpdGVKU09OTEQpID0+IG5hbWUgfHwgZGVzY3JpcHRpb24hLFxuICBbU2NoZW1hVHlwZS5UcmFuc2Zvcm1hdGlvbl06ICh7IG5hbWUsIHRlcm0gfTogYW55KSA9PiBuYW1lIHx8IHRlcm0/Lm5hbWVcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGFiZWwgPSAobm9kZT86IGFueSkgPT5cbiAgbm9kZVxuICAgID8gKG5vZGVbJ0B0eXBlJ10gaW4gbm9kZURlZmF1bHRMYWJlbCA/IG5vZGVEZWZhdWx0TGFiZWxbbm9kZVsnQHR5cGUnXV0obm9kZSkgOiBub2RlLm5hbWUpIHx8IG5vZGVbJ0BpZCddIHx8IG5vZGUuaWRcbiAgICA6ICcnO1xuXG5leHBvcnQgY29uc3QgcmVwZWF0ID0gKHRpbWVzID0gMCkgPT4gQXJyYXkuZnJvbShBcnJheSh0aW1lcyksIE1hdGgucmFuZG9tKTtcblxuZXhwb3J0IGNvbnN0IGNvcHlPYmplY3QgPSAoZGF0YT86IGFueSkgPT4gKGRhdGEgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKSA6IG51bGwpO1xuXG5leHBvcnQgY29uc3QgaXNFcXVhbCA9IChhOiBhbnksIGI6IGFueSkgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpO1xuXG5leHBvcnQgZW51bSBSZXBvc2l0b3J5IHtcbiAgZ2xvc3NhcnkgPSAnaGVzdGlhLWdsb3NzYXJ5JyxcbiAgbW9kZWxzID0gJ2hlc3RpYS1lbmdpbmUtbW9kZWxzJyxcbiAgb3JjaGVzdHJhdG9yID0gJ2hlc3RpYS1lbmdpbmUtb3JjaGVzdHJhdG9yJyxcbiAgYWdncmVnYXRpb24gPSAnaGVzdGlhLWFnZ3JlZ2F0aW9uLWVuZ2luZScsXG4gIGNvbW11bml0eSA9ICdoZXN0aWEtY29tbXVuaXR5LWVkaXRpb24nLFxuICBwb29yZW5lbWVjayA9ICdoZXN0aWEtY29udmVydC1wb29yZS1uZW1lY2VrJyxcbiAgZnJvbnRlbmQgPSAnaGVzdGlhLWZyb250LWVuZCcsXG4gIHNjaGVtYSA9ICdoZXN0aWEtc2NoZW1hJ1xufVxuXG5leHBvcnQgZW51bSBUZW1wbGF0ZSB7XG4gIGJ1ZyA9ICdidWcnLFxuICBmZWF0dXJlID0gJ2ZlYXR1cmUnXG59XG5cbmV4cG9ydCBjb25zdCByZXBvcnRJc3N1ZVVybCA9IChyZXBvc2l0b3J5OiBSZXBvc2l0b3J5LCB0ZW1wbGF0ZT86IFRlbXBsYXRlKSA9PlxuICBgJHtnaXRIb21lfS8ke3JlcG9zaXRvcnl9Ly0vaXNzdWVzL25ldyR7dGVtcGxhdGUgPyBgP2lzc3VhYmxlX3RlbXBsYXRlPSR7dGVtcGxhdGV9YCA6IG51bGx9YDtcblxuZXhwb3J0IGNvbnN0IGNvbnRhY3RVc0VtYWlsID0gJ2NvbW11bml0eUBoZXN0aWEuZWFydGgnO1xuZXhwb3J0IGNvbnN0IGV4dGVybmFsTGluayA9IChocmVmOiBzdHJpbmcsIHRleHQ6IHN0cmluZykgPT4gYDxhIGhyZWY9XCIke2hyZWZ9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+JHt0ZXh0fTwvYT5gO1xuZXhwb3J0IGNvbnN0IGdsb3NzYXJ5TGluayA9ICh0ZXh0OiBzdHJpbmcpID0+IGV4dGVybmFsTGluayhgJHtiYXNlVXJsKCl9L2dsb3NzYXJ5YCwgdGV4dCk7XG5leHBvcnQgY29uc3Qgbm9kZUxpbmsgPSAoeyAnQHR5cGUnOiB0eXBlLCAnQGlkJzogaWQsIG5hbWUgfTogeyAnQHR5cGUnOiBzdHJpbmc7ICdAaWQnOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmcgfSkgPT5cbiAgdHlwZSAmJiBpZCA/IGA8YSBocmVmPVwiLyR7dHlwZS50b0xvd2VyQ2FzZSgpfS8ke2lkfVwiIHRhcmdldD1cIl9ibGFua1wiPiR7bmFtZSB8fCBpZH08L2E+YCA6IG51bGw7XG5leHBvcnQgY29uc3Qgc2NoZW1hTGluayA9ICh0eXBlOiBzdHJpbmcsIHRpdGxlID0gdHlwZSkgPT5cbiAgYDxhIGhyZWY9XCIke2Jhc2VVcmwoKX0vc2NoZW1hLyR7dHlwZX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke3RpdGxlfTwvYT5gO1xuZXhwb3J0IGNvbnN0IGNvZGUgPSAodGV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbikgPT4gYDxjb2RlPiR7dGV4dH08L2NvZGU+YDtcbmV4cG9ydCBjb25zdCBjb250YWN0VXNMaW5rID0gKHRleHQgPSAnY29udGFjdCB1cycpID0+IGA8YSBocmVmPVwibWFpbHRvOiR7Y29udGFjdFVzRW1haWx9XCI+JHt0ZXh0fTwvYT5gO1xuZXhwb3J0IGNvbnN0IHJlcG9ydElzc3VlTGluayA9IChyZXBvc2l0b3J5OiBSZXBvc2l0b3J5LCB0ZW1wbGF0ZT86IFRlbXBsYXRlLCB0ZXh0ID0gJ2hlcmUnKSA9PlxuICBleHRlcm5hbExpbmsocmVwb3J0SXNzdWVVcmwocmVwb3NpdG9yeSwgdGVtcGxhdGUpLCB0ZXh0KTtcbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* eslint-disable complexity */
|
|
2
2
|
/* eslint-disable max-len */
|
|
3
3
|
/* eslint-disable no-useless-escape */
|
|
4
|
-
import { CycleFunctionalUnit, SchemaType, TermTermType } from '@hestia-earth/schema';
|
|
4
|
+
import { CycleFunctionalUnit, NodeType, SchemaType, TermTermType } from '@hestia-earth/schema';
|
|
5
5
|
import { toPrecision, keyToLabel, unique } from '@hestia-earth/utils';
|
|
6
6
|
import { termTypeLabel } from '../terms/terms.model';
|
|
7
7
|
import { pathToApiDocsPath } from '../engine/engine.service';
|
|
8
|
-
import { Repository, Template, baseUrl, code, contactUsLink, externalLink, glossaryLink, reportIssueLink, schemaLink } from '../common/utils';
|
|
8
|
+
import { Repository, Template, baseUrl, code, contactUsLink, externalLink, glossaryLink, nodeLink, reportIssueLink, schemaLink } from '../common/utils';
|
|
9
9
|
import { pluralize } from '../common/pluralize';
|
|
10
10
|
const mapErrorMessage = 'does not contain latitude and longitude';
|
|
11
11
|
export const parseDataPath = (dataPath = '') => {
|
|
@@ -19,7 +19,7 @@ export const parseDataPath = (dataPath = '') => {
|
|
|
19
19
|
}));
|
|
20
20
|
};
|
|
21
21
|
const allowedDataPathsLabels = Object.values(SchemaType);
|
|
22
|
-
// TODO: see if we want to ignore Term label and show the
|
|
22
|
+
// TODO: see if we want to ignore Term label and show the blank node instead
|
|
23
23
|
// const allowedDataPathsLabels = Object.values(SchemaType).filter(v => ![SchemaType.Term].includes(v));
|
|
24
24
|
export const dataPathLabel = (dataPath = '') => parseDataPath(dataPath)
|
|
25
25
|
.filter(({ label }) => allowedDataPathsLabels.includes(label))
|
|
@@ -193,9 +193,9 @@ const customErrorMessage = {
|
|
|
193
193
|
: 'You may want to add this Transformation.'}`,
|
|
194
194
|
'every node should be unique': ({ params }) => `This Node is duplicated. Every Node should be unique.
|
|
195
195
|
Uniqueness is determined by the following fields: ${(params?.keys || []).map(code).join(', ')}`,
|
|
196
|
-
'every item in the list should be unique': ({ params }) => `This
|
|
197
|
-
? `with the blank
|
|
198
|
-
: ''}. Every
|
|
196
|
+
'every item in the list should be unique': ({ params }) => `This blank node is duplicated${params?.duplicatedIndexes?.length
|
|
197
|
+
? ` with the blank ${pluralize('node', params.duplicatedIndexes.length)} with numbered: ${params.duplicatedIndexes.join(', ')}`
|
|
198
|
+
: ''}. Every blank node should be unique.
|
|
199
199
|
Uniqueness is determined by the following fields: ${(params?.keys || []).map(code).join(', ')}`,
|
|
200
200
|
'must contain as many items as values': ({ params, dataPath }) => `The number of ${code(dataPath.split('.').pop())} must match the number of ${code('value')}.
|
|
201
201
|
Currently there are ${params?.current} ${code(dataPath.split('.').pop())} but ${params?.expected} ${code('value')}.`,
|
|
@@ -331,17 +331,20 @@ const customErrorMessage = {
|
|
|
331
331
|
If this is incorrect, pelase add a value.`,
|
|
332
332
|
'should contain at least one management node': ({ params }) => `${params?.termType
|
|
333
333
|
? `Does not contain information about ${code(params.termType)}.
|
|
334
|
-
Please consider adding a history of ${code(params.termType)} for as many years as possible in the Management
|
|
334
|
+
Please consider adding a history of ${code(params.termType)} for as many years as possible in the Management blank nodes.`
|
|
335
335
|
: `There is no Management node present in this upload.
|
|
336
336
|
We recommend adding this to the Site, including information about current and historical tillage.
|
|
337
337
|
`}
|
|
338
338
|
We use this information to model CO2 emissions from soil organic carbon changes.`,
|
|
339
|
-
'can not be used on this termType': ({ params }) => `This Property can only be used on
|
|
339
|
+
'can not be used on this termType': ({ params }) => `This Property can only be used on blank nodes with the following ${code('term.termType')}: ${params.expected
|
|
340
340
|
.map(code)
|
|
341
341
|
.join(', ')}.`,
|
|
342
342
|
'not a valid GeoJSON': () => `This GeoJSON appears to be invalid.
|
|
343
343
|
Please validate your GeoJSON using an online tool like <a href="https://geojson.io/">geojson.io</a>.
|
|
344
|
-
If you think this is a mistake, please report the error ${reportIssueLink(Repository.schema, Template.bug)}
|
|
344
|
+
If you think this is a mistake, please report the error ${reportIssueLink(Repository.schema, Template.bug)}.`,
|
|
345
|
+
'should add the term stockingDensityPermanentPastureAverage': ({ params }) => `You did not specify ${nodeLink({ '@type': NodeType.Term, '@id': params.expected })}.
|
|
346
|
+
Adding this Practice is essential for Cycles with relative functional unit which happen entirely or partially on permanent pasture.
|
|
347
|
+
Without this information Hestia cannot calculate animal related emissions.`
|
|
345
348
|
};
|
|
346
349
|
export const formatCustomErrorMessage = (message, error, allErrors = []) => {
|
|
347
350
|
const formattedMessage = message && message in customErrorMessage
|
|
@@ -364,4 +367,4 @@ export const isMissingOneOfError = ({ keyword, schemaPath }) => keyword === 'req
|
|
|
364
367
|
const isFailingKeywordError = ({ params }) => !!params && 'failingKeyword' in params;
|
|
365
368
|
export const filterError = (error) => [isFailingKeywordError].every(func => !func(error));
|
|
366
369
|
export const missingNodeErrors = (errors) => errors.filter(({ keyword, params }) => keyword === 'required' && (params?.missingProperty === '@type' || params?.missingProperty === '@id'));
|
|
367
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixzQ0FBc0M7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBQ1IsT0FBTyxFQUNQLElBQUksRUFDSixhQUFhLEVBQ2IsWUFBWSxFQUNaLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNYLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBMkRoRCxNQUFNLGVBQWUsR0FBRyx5Q0FBeUMsQ0FBQztBQVVsRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFlLEVBQUU7SUFDMUQsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLFFBQVE7U0FDM0IsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztTQUM5QixPQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQztTQUM1QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFB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SyxDQUFDLENBQ3ZHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11c2VsZXNzLWVzY2FwZSAqL1xuaW1wb3J0IHsgQ3ljbGVGdW5jdGlvbmFsVW5pdCwgU2NoZW1hVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24sIGtleVRvTGFiZWwsIHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuXG5pbXBvcnQgeyB0ZXJtVHlwZUxhYmVsIH0gZnJvbSAnLi4vdGVybXMvdGVybXMubW9kZWwnO1xuaW1wb3J0IHsgcGF0aFRvQXBpRG9jc1BhdGggfSBmcm9tICcuLi9lbmdpbmUvZW5naW5lLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgUmVwb3NpdG9yeSxcbiAgVGVtcGxhdGUsXG4gIGJhc2VVcmwsXG4gIGNvZGUsXG4gIGNvbnRhY3RVc0xpbmssXG4gIGV4dGVybmFsTGluayxcbiAgZ2xvc3NhcnlMaW5rLFxuICByZXBvcnRJc3N1ZUxpbmssXG4gIHNjaGVtYUxpbmtcbn0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IHBsdXJhbGl6ZSB9IGZyb20gJy4uL2NvbW1vbi9wbHVyYWxpemUnO1xuXG4vLyBUT0RPOiBhZGQgbW9yZSB2YWxpZGF0aW9uIGtleXdvcmQgYW5kIHBhcmFtc1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yTGV2ZWwgPSAnZXJyb3InIHwgJ3dhcm5pbmcnO1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yUGFyYW0gPVxuICB8ICdtaXNzaW5nUHJvcGVydHknXG4gIHwgJ3R5cGUnXG4gIHwgJ3Rlcm0nXG4gIHwgJ3Rlcm1UeXBlJ1xuICB8ICdtb2RlbCdcbiAgfCAncHJvZHVjdCdcbiAgfCAncmFuZ2UnXG4gIHwgJ25vZGUnXG4gIHwgJ2FsbG93ZWRWYWx1ZXMnXG4gIHwgJ2FsbG93ZWRWYWx1ZSdcbiAgfCAnYWRkaXRpb25hbFByb3BlcnR5J1xuICB8ICdleHBlY3RlZCdcbiAgfCAnZGVmYXVsdCdcbiAgfCAnY3VycmVudCdcbiAgfCAncGVyY2VudGFnZSdcbiAgfCAna2V5cydcbiAgfCAndGhyZXNob2xkJ1xuICB8ICdvdXRsaWVycydcbiAgfCAnY291bnRyeSdcbiAgfCAnbWluJ1xuICB8ICdtYXgnXG4gIHwgJ2RlZmF1bHRTb3VyY2UnXG4gIHwgJ3NvdXJjZSdcbiAgfCAnZ3JvdXAnXG4gIHwgJ21lc3NhZ2UnXG4gIHwgJ2Rpc3RhbmNlJ1xuICB8ICdzaXRlVHlwZSdcbiAgfCAncHJvZHVjdHMnXG4gIHwgJ3VuaXRzJ1xuICB8ICdkdXBsaWNhdGVkSW5kZXhlcyc7XG5leHBvcnQgdHlwZSB2YWxpZGF0aW9uRXJyb3JLZXl3b3JkID0gJ3JlcXVpcmVkJyB8ICd0eXBlJyB8ICdpZicgfCAndGhlbicgfCAnbm90JztcblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbkVycm9yIHtcbiAgaW5kZXg/OiBudW1iZXI7XG4gIG5vZGVJbmRleD86IG51bWJlcjtcbiAgbGV2ZWw/OiB2YWxpZGF0aW9uRXJyb3JMZXZlbDtcbiAgZGF0YVBhdGg/OiBzdHJpbmc7XG4gIHNjaGVtYVBhdGg/OiBzdHJpbmc7XG4gIGtleXdvcmQ/OiB2YWxpZGF0aW9uRXJyb3JLZXl3b3JkO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBhcmFtcz86IHsgW2tleSBpbiB2YWxpZGF0aW9uRXJyb3JQYXJhbV0/OiBhbnkgfTtcbiAgbWFwRXJyb3I/OiBib29sZWFuO1xuICBzY2hlbWE/OiBhbnk7XG4gIHBhcmVudFNjaGVtYT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbkVycm9yV2l0aEluZGV4IHtcbiAgZXJyb3I6IElWYWxpZGF0aW9uRXJyb3JbXTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgY2hhbmdlZD86IGJvb2xlYW47XG59XG5cbnR5cGUgaGFuZGxlRXJyb3JGdW5jID0gKGVycm9yOiBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckNvdW50PzogbnVtYmVyLCBhbGxFcnJvcnM/OiBJVmFsaWRhdGlvbkVycm9yW10pID0+IHN0cmluZztcblxuY29uc3QgbWFwRXJyb3JNZXNzYWdlID0gJ2RvZXMgbm90IGNvbnRhaW4gbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSc7XG5cbmludGVyZmFjZSBJRGF0YVBhdGgge1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIdW1hbiByZWFkYWJsZSB2ZXJzaW9uIG9mIHRoZSBwYXRoLlxuICAgKi9cbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlRGF0YVBhdGggPSAoZGF0YVBhdGggPSAnJyk6IElEYXRhUGF0aFtdID0+IHtcbiAgY29uc3QgW18sIC4uLnBhdGhzXSA9IGRhdGFQYXRoXG4gICAgLnJlcGxhY2UoL1tcXFtcXF1cXCdcXCdcXFwiXFxcIl0vZywgJycpXG4gICAgLnJlcGxhY2UoLyhcXHcpKFxcQCkvZywgJyQxLkAnKVxuICAgIC5zcGxpdCgnLicpO1xuICByZXR1cm4gcGF0aHMubWFwKHBhdGggPT4gKHtcbiAgICBwYXRoOiBwYXRoLnJlcGxhY2UoLyhcXGQrKS9nLCAnWyQxXScpLFxuICAgIGxhYmVsOiBwbHVyYWxpemUoa2V5VG9MYWJlbChwYXRoLnJlcGxhY2UoL1tcXGRcXEBdKy9nLCAnJykpLCAxKVxuICB9KSk7XG59O1xuXG5jb25zdCBhbGxvd2VkRGF0YVBhdGhzTGFiZWxzID0gT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKTtcbi8vIFRPRE86IHNlZSBpZiB3ZSB3YW50IHRvIGlnbm9yZSBUZXJtIGxhYmVsIGFuZCBzaG93IHRoZSBCbGFuayBOb2RlIGluc3RlYWRcbi8vIGNvbnN0IGFsbG93ZWREYXRhUGF0aHNMYWJlbHMgPSBPYmplY3QudmFsdWVzKFNjaGVtYVR5cGUpLmZpbHRlcih2ID0+ICFbU2NoZW1hVHlwZS5UZXJtXS5pbmNsdWRlcyh2KSk7XG5cbmV4cG9ydCBjb25zdCBkYXRhUGF0aExhYmVsID0gKGRhdGFQYXRoID0gJycpID0+XG4gIHBhcnNlRGF0YVBhdGgoZGF0YVBhdGgpXG4gICAgLmZpbHRlcigoeyBsYWJlbCB9KSA9PiBhbGxvd2VkRGF0YVBhdGhzTGFiZWxzLmluY2x1ZGVzKGxhYmVsIGFzIFNjaGVtYVR5cGUpKVxuICAgIC5wb3AoKT8ubGFiZWw7XG5cbmNvbnN0IGdsb3NzYXJ5VHlwZUxpbmsgPSAodHlwZTogVGVybVRlcm1UeXBlLCB0ZXh0ID0gdGVybVR5cGVMYWJlbCh0eXBlKSkgPT5cbiAgZXh0ZXJuYWxMaW5rKGAke2Jhc2VVcmwoKX0vZ2xvc3Nhcnk/dGVybVR5cGU9JHt0eXBlfWAsIHRleHQpO1xuY29uc3QgdGVybUxpbmsgPSAoeyBpZCwgbmFtZSB9OiBQYXJ0aWFsPFRlcm0+KSA9PiBleHRlcm5hbExpbmsoYCR7YmFzZVVybCgpfS90ZXJtLyR7aWR9YCwgbmFtZSB8fCBpZCk7XG5jb25zdCBkYXRlRm9ybWF0TWVzc2FnZSA9IGBzaG91bGQgZm9sbG93IHRoZSBJU08gODYwMSBkYXRlIGZvcm1hdCwgZS5nLiAke2NvZGUoMjAwMCl9LCBvciAke2NvZGUoJzIwMDAtMTInKX0sIG9yICR7Y29kZShcbiAgJzIwMDAtMTItMzAnXG4pfWA7XG5jb25zdCBtb2RlbExpbmsgPSAodGVybTogVGVybSwgbW9kZWw6IFRlcm0pID0+IGBcbiAgPGEgaHJlZj1cIiR7cGF0aFRvQXBpRG9jc1BhdGgobW9kZWxbJ0BpZCddLCB0ZXJtWydAaWQnXSl9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+JHttb2RlbC5uYW1lfTwvc3Bhbj5cbiAgICA8c3Bhbj4oVmlldyBEb2NzKTwvc3Bhbj5cbiAgPC9hPlxuYDtcbmNvbnN0IHRocmVzaG9sZCA9ICh2YWx1ZTogbnVtYmVyKSA9PiBjb2RlKGAke3ZhbHVlICogMTAwfSVgKTtcblxuY29uc3Qgbm9UaWxsYWdlOiBQYXJ0aWFsPFRlcm0+ID0geyBpZDogJ25vVGlsbGFnZScsIG5hbWU6ICdObyB0aWxsYWdlJyB9O1xuY29uc3QgcGFzdHVyZUdyYXNzOiBQYXJ0aWFsPFRlcm0+ID0geyBpZDogJ3Bhc3R1cmVHcmFzcycsIG5hbWU6ICdQYXN0dXJlIGdyYXNzJyB9O1xuXG5jb25zdCBpZE5vdEZvdW5kRGVmYXVsdE1lc3NhZ2UgPSBgXG4gIElmIHlvdSBhcmUgdXNpbmcgdGhlICR7Y29kZSgnbmFtZScpfSBvZiB0aGUgVGVybSwgbWFrZSBzdXJlIHRvIHVzZSAke2NvZGUoJ3Rlcm0ubmFtZScpfSBjb2x1bW47XG4gIGlmIHlvdSBhcmUgdXNpbmcgdGhlICR7Y29kZSgnQGlkJyl9IG9mIHRoZSBUZXJtLCB1c2UgdGhlICR7Y29kZSgndGVybS5AaWQnKX0gY29sdW1uIGluc3RlYWQuXG5gLnRyaW0oKTtcblxuZXhwb3J0IGNvbnN0IGlzTWlncmF0aW9uRXJyb3IgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT4gcGFyYW1zPy5jdXJyZW50ICYmICdleHBlY3RlZCcgaW4gcGFyYW1zO1xuXG5leHBvcnQgY29uc3QgbWlncmF0aW9uRXJyb3JNZXNzYWdlID0gKHsgcGFyYW1zIH06IElWYWxpZGF0aW9uRXJyb3IpID0+XG4gIHBhcmFtcz8uZXhwZWN0ZWRcbiAgICA/IGBUaGUgVGVybSAke2NvZGUocGFyYW1zLmN1cnJlbnQpfSB3YXMgdXBkYXRlZCwgcGxlYXNlIHVzZSB0aGlzIFRlcm0gaW5zdGVhZDogJHtjb2RlKHBhcmFtcy5leHBlY3RlZCl9LmBcbiAgICA6IGBUaGUgVGVybSAke2NvZGUocGFyYW1zLmN1cnJlbnQpfSB3YXMgZGVsZXRlZC4gUGxlYXNlIHNlYXJjaCB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5Jyl9IGZvciBhIG5ldyBUZXJtLmA7XG5cbmNvbnN0IGlkTm90Rm91bmRFcnJvcjogaGFuZGxlRXJyb3JGdW5jID0gKF9lcnJvciwgX2Vycm9yQ291bnQsIGFsbEVycm9ycykgPT4ge1xuICBjb25zdCBtaWdyYXRpb25FcnJvcnMgPSBhbGxFcnJvcnMuZmlsdGVyKGlzTWlncmF0aW9uRXJyb3IpO1xuICBjb25zdCBub01pZ3JhdGlvbkVycm9ycyA9IGFsbEVycm9ycy5maWx0ZXIoZXJyb3IgPT4gIWlzTWlncmF0aW9uRXJyb3IoZXJyb3IpKTtcbiAgcmV0dXJuIGBcbiAgICA8cD5Eb2VzIG5vdCBleGlzdCBpbiBIZXN0aWEuPC9wPlxuICAgICR7bm9NaWdyYXRpb25FcnJvcnMubGVuZ3RoID8gYDxwPiR7aWROb3RGb3VuZERlZmF1bHRNZXNzYWdlfTwvcD5gIDogJyd9XG4gICAgJHt1bmlxdWUobWlncmF0aW9uRXJyb3JzLm1hcChtaWdyYXRpb25FcnJvck1lc3NhZ2UpKS5qb2luKCc8L2JyPicpfVxuICBgO1xufTtcblxuLy8gc2V0IG1lc3NhZ2UgYXMgZW1wdHkgdG8gbm90IGRpc3BsYXkgaXRcbmNvbnN0IGN1c3RvbUVycm9yTWVzc2FnZToge1xuICBba2V5OiBzdHJpbmddOiBoYW5kbGVFcnJvckZ1bmM7XG59ID0ge1xuICBcInNob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5ICdAaWQnXCI6IGlkTm90Rm91bmRFcnJvcixcbiAgXCJzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSAnQHR5cGUnXCI6ICgpID0+ICcnLFxuICBcInNob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5ICdpZCdcIjogaWROb3RGb3VuZEVycm9yLFxuICAnc2hvdWxkIG1hdGNoIGV4YWN0bHkgb25lIHNjaGVtYSBpbiBvbmVPZic6ICgpID0+ICcnLFxuICAnc2hvdWxkIG1hdGNoIHNvbWUgc2NoZW1hIGluIGFueU9mJzogKCkgPT4gJycsXG4gICdzaG91bGQgbWF0Y2ggXCJ0aGVuXCIgc2NoZW1hJzogKCkgPT4gJycsXG4gICdzaG91bGQgTk9UIGhhdmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgPyBgVGhlIGZvbGxvd2luZyBmaWVsZCBkb2VzIG5vdCBleGlzdDogJHtwYXJhbXM/LmFkZGl0aW9uYWxQcm9wZXJ0eX0gb3IgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjYXNlLmBcbiAgICAgIDogYFNob3VsZCBub3QgaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMuYCxcbiAgJ3Nob3VsZCBOT1QgYmUgdmFsaWQnOiAoeyBzY2hlbWEgfSkgPT5cbiAgICBzY2hlbWE/LnJlcXVpcmVkPy5pbmNsdWRlcygnYXJlYVBlcmNlbnQnKVxuICAgICAgPyBgSWYgdGhlIHRlcm0gdW5pdHMgaXMgYWxyZWFkeSBpbiAke2NvZGUoJyUgYXJlYScpfSwganVzdCB1c2UgJHtjb2RlKCd2YWx1ZScpfS4gRG9udCB1c2UgJHtjb2RlKCdhcmVhUGVyY2VudCcpfS5gXG4gICAgICA6IHNjaGVtYT8ucmVxdWlyZWQ/LmluY2x1ZGVzKCd0cmFuc2Zvcm1hdGlvbicpXG4gICAgICA/ICdBIHRyYW5zZm9ybWF0aW9uIGNhbiBub3QgYmUgYWRkZWQgaGVyZS4nXG4gICAgICA6ICdTaG91bGQgbm90IGJlIHVzZWQgaW4gdGhpcyBjYXNlLicsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl5cXFxcZHsxM30kXCInOiAoKSA9PiBgc2hvdWxkIGJlIGNvbXBvc2VkIG9mIDEzIG51bWJlcnNgLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeWzAtOV17NH0oLVswLTldezJ9KT8oLVswLTldezJ9KT8kXCInOiAoKSA9PiBkYXRlRm9ybWF0TWVzc2FnZSxcbiAgJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiXihbMC05XXs0fXwtKSgtWzAtOV17Mn0pPygtWzAtOV17Mn0pPyRcIic6ICgpID0+IGRhdGVGb3JtYXRNZXNzYWdlLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeKFswLTldezR9fC0pKC1bMC05XXsyfSk/KC1bMC05XXsyfSk/KFtUXVswLTJdWzAtOV06WzAtNV1bMC05XTpbMC01XVswLTldKCgrfC0pWzAtMV1bMC05XTpbMC01XVswLTldKT8pPyRcIic6XG4gICAgKCkgPT4gZGF0ZUZvcm1hdE1lc3NhZ2UsXG4gICdzaG91bGQgYmUgbGlua2VkIHRvIGFuIGV4aXN0aW5nIG5vZGUnOiAoZXJyb3IsIF9lcnJvckNvdW50LCBhbGxFcnJvcnMpID0+XG4gICAgYWxsRXJyb3JzPy5sZW5ndGhcbiAgICAgID8gYFlvdXIgdXBsb2FkIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZvbGxvd2luZyBOb2RlczpcbiAgICAgIDx1bCBjbGFzcz1cImlzLXBsLTMgaXMtbGlzdC1zdHlsZS1kaXNjIGlzLW5vd3JhcFwiPlxuICAgICAgJHt1bmlxdWUoXG4gICAgICAgIGFsbEVycm9ycy5tYXAoKHsgcGFyYW1zIH0pID0+IGA8bGk+JHtwYXJhbXM/Lm5vZGU/LnR5cGV9IHdpdGggJHtjb2RlKGBpZD0ke3BhcmFtcz8ubm9kZT8uaWR9YCl9PC9saT5gKVxuICAgICAgKS5qb2luKCdcXG4nKX1cbiAgICAgIDwvdWw+XG4gICAgICBJZiB5b3UgYXJlIHRyeWluZyB0byBsaW5rIHRvIGFuIGV4aXN0aW5nIE5vZGUgb24gdGhlIEhlc3RpYSBwbGF0Zm9ybSwgeW91IG11c3QgdXNlICR7Y29kZSgnQGlkJyl9IGZpZWxkIGluc3RlYWQuXG4gICAgICBPdGhlcndpc2UgeW91IG11c3QgaW5jbHVkZSBhIGZ1bGwgJHt1bmlxdWUoXG4gICAgICAgIGFsbEVycm9ycy5tYXAoKHsgcGFyYW1zIH0pID0+IGAke3BhcmFtcz8ubm9kZT8udHlwZX0gd2l0aCBpZCAke2NvZGUocGFyYW1zPy5ub2RlPy5pZCl9LmApXG4gICAgICApLmpvaW4oJywgJyl9YFxuICAgICAgOiBgWW91ciB1cGxvYWQgZG9lcyBub3QgY29udGFpbiBhICR7ZXJyb3IucGFyYW1zPy5ub2RlPy50eXBlfSB3aXRoICR7Y29kZShgaWQ9JHtlcnJvci5wYXJhbXM/Lm5vZGU/LmlkfWApfS5cbiAgICAgIElmIHlvdSBhcmUgdHJ5aW5nIHRvIGxpbmsgdG8gYW4gZXhpc3RpbmcgTm9kZSBvbiB0aGUgSGVzdGlhIHBsYXRmb3JtLCB5b3UgbXVzdCB1c2UgJHtjb2RlKCdAaWQnKX0gZmllbGQgaW5zdGVhZC5cbiAgICAgIE90aGVyd2lzZSB5b3UgbXVzdCBpbmNsdWRlIGEgZnVsbCAke2Vycm9yLnBhcmFtcz8ubm9kZT8udHlwZX0gd2l0aCBpZCAke2NvZGUoZXJyb3IucGFyYW1zPy5ub2RlPy5pZCl9LmAsXG4gICdtdXN0IGJlIHdpdGhpbiB0aGUgY291bnRyeSc6ICgpID0+IGBUaGUgY291bnRyeSBwcm92aWRlZCBkb2VzIG5vdCBjb250YWluIHRoZSByZWdpb24gcHJvdmlkZWQuIFBsZWFzZSBjaGVja1xuICB0aGUgY291bnRyeSBmb3IgZXJyb3JzIG9yIHRoZSByZWdpb24gZm9yIGVycm9ycywgYW5kIHJlZmVyZW5jZSB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LmAsXG4gIFttYXBFcnJvck1lc3NhZ2VdOiAoeyBkYXRhUGF0aCwgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgPyBgVGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgcHJvdmlkZWQgYXJlJHtcbiAgICAgICAgICBwYXJhbXM/LmRpc3RhbmNlID8gYCAke3BhcmFtcz8uZGlzdGFuY2V9a21zYCA6ICcnXG4gICAgICAgIH0gb3V0c2lkZSBvZiB0aGUgJHtkYXRhUGF0aC5zdWJzdHJpbmcoMSl9IHByb3ZpZGVkLlxuICAgICAgUGxlYXNlIGNoZWNrIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIGZvciBlcnJvcnMgb3IgY2hlY2sgaWYgdGhlIHdyb25nICR7ZGF0YVBhdGguc3Vic3RyaW5nKFxuICAgICAgICAxXG4gICAgICApfSBmcm9tIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnJlZ2lvbiwgJ0dsb3NzYXJ5Jyl9IHdhcyB1c2VkLlxuICAgICAgJHtcbiAgICAgICAgcGFyYW1zPy5leHBlY3RlZFxuICAgICAgICAgID8gYEhpbnQ6IHRoZSBjb29yZGluYXRlcyBhcHBlYXIgdG8gYmUgbG9jYXRlZCBpbiB0aGUgZm9sbG93aW5nICR7ZGF0YVBhdGguc3Vic3RyaW5nKDEpfTogJHt0ZXJtTGluayh7XG4gICAgICAgICAgICAgIGlkOiAncGFyYW1zLmV4cGVjdGVkJ1xuICAgICAgICAgICAgfSl9YFxuICAgICAgICAgIDogJydcbiAgICAgIH1gXG4gICAgICA6IGBUaGUgcmVnaW9uIHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgcHJvdmlkZWQuXG4gICAgICBQbGVhc2UgY2hlY2sgdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgZm9yIGVycm9ycyBvciB0aGUgcmVnaW9uIGZvciBlcnJvciwgYW5kIHJlZmVyZW5jZSB0aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFxuICAgICAgICBUZXJtVGVybVR5cGUucmVnaW9uLFxuICAgICAgICAnR2xvc3Nhcnkgb2YgVGVybXMnXG4gICAgICApfS5gLFxuICAnc3VtIG5vdCBlcXVhbCB0byAxMDAlIGZvciBzYW5kQ29udGVudCwgc2lsdENvbnRlbnQsIGNsYXlDb250ZW50JzogKCkgPT5cbiAgICBgVGhlIHN1bSBvZiBTYW5kLCBTaWx0LCBhbmQgQ2xheSBjb250ZW50IHNob3VsZCBlcXVhbCAxMDAlIGZvciBlYWNoIHNvaWwgZGVwdGggaW50ZXJ2YWwuYCxcbiAgJ2lzIG91dHNpZGUgdGhlIGFsbG93ZWQgcmFuZ2UnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgICAgPyBwYXJhbXM/LnRlcm1cbiAgICAgICAgICA/IGBUaGUgdmFsdWUgZm9yICR7Y29kZShcbiAgICAgICAgICAgICAgcGFyYW1zPy50ZXJtWydAaWQnXSB8fCBwYXJhbXM/LnRlcm0ubmFtZVxuICAgICAgICAgICAgKX0gaXMgb3V0c2lkZSB0aGUgcmFuZ2UgZXN0YWJsaXNoZWQgZm9yIHRoZSBzb2lsIHRleHR1cmUgeW91IHByb3ZpZGVkLlxuICAgICAgICAgICAgRm9yIHRoaXMgc29pbCB0ZXh0dXJlLCB0aGUgbWF4aW11bSAke2NvZGUocGFyYW1zPy50ZXJtWydAaWQnXSB8fCBwYXJhbXM/LnRlcm0ubmFtZSl9IGlzICR7cGFyYW1zPy5yYW5nZVxuICAgICAgICAgICAgICA/Lm1heH0gYW5kIHRoZSBtaW5pbXVtIGlzICR7cGFyYW1zPy5yYW5nZT8ubWlufS5gXG4gICAgICAgICAgOiBgRG9lcyBub3QgbWF0Y2ggdGhlIHBvc3NpYmxlIHJhbmdlcyBvZiBzYW5kLCBzaWx0IGFuZCBjbGF5IGNvbnRlbnQuYFxuICAgICAgICA6IGBFYWNoIHNvaWwgdGV4dHVyZSBoYXMgYSBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlIGZvciBzYW5kLCBzaWx0LCBhbmQgY2xheSBjb250ZW50LlxuICAgICAgICBBdCBsZWFzdCBvbmUgbWVhc3VyZW1lbnQgb2Ygc2FuZCwgc2lsdCwgb3IgY2xheSBjb250ZW50IGRvZXMgbm90IG1hdGNoIHRoZSBwb3NzaWJsZSByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBzb2lsIHRleHR1cmUuYFxuICAgIH1cbiAgICAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgICA/IGBQbGVhc2UgY2hlY2sgdGhlIG1lYXN1cmVtZW50LCBpdHMgZGVwdGggaW50ZXJ2YWxzLCBhbmQgdGhlIGRhdGVzIG9mIHRoZSBtZWFzdXJlbWVudCBvciB1cGRhdGUgdGhlIHNvaWwgdGV4dHVyZSBpZiBuZWVkZWQuYFxuICAgICAgICA6IGBQbGVhc2UgY2hlY2sgeW91ciBtZWFzdXJlbWVudHMsIHRoZWlyIGRlcHRoIGludGVydmFscywgYW5kIHRoZSBkYXRlcyBvZiB0aGUgbWVhc3VyZW1lbnRzIG9yIHVwZGF0ZSB0aGUgc29pbCB0ZXh0dXJlcyBpZiBuZWVkZWQuYFxuICAgIH1gLFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIG9uZSBvZiB0aGUgYWxsb3dlZCB2YWx1ZXMnOiAoeyBwYXJhbXMsIGRhdGFQYXRoIH0pID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGgpO1xuICAgIGNvbnN0IHZhbHVlcyA9XG4gICAgICBwYXRocy5sZW5ndGggPj0gMiA/IHBsdXJhbGl6ZShwYXRoc1twYXRocy5sZW5ndGggLSAxXS5wYXRoLCBwYXJhbXM/LmFsbG93ZWRWYWx1ZXM/Lmxlbmd0aCB8fCAwKSA6ICd2YWx1ZXMnO1xuICAgIHJldHVybiBgT25seSB0aGUgJHtwYXRocy5sZW5ndGggPT09IDMgPyBgJHtwYXRoc1sxXS5sYWJlbH0gd2l0aCB0aGUgYCA6ICcnfWZvbGxvd2luZyAke3ZhbHVlc30gYXJlIHBlcm1pdHRlZCBmb3IgJHtcbiAgICAgIHBhdGhzWzBdLmxhYmVsXG4gICAgfTogJHtwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubWFwKGNvZGUpLmpvaW4oJywgJyl9LlxuICAgICAgUGxlYXNlIGVpdGhlciBjaGFuZ2UgdGhlICR7XG4gICAgICAgIHBhdGhzLmxlbmd0aCA+PSAyID8gcGF0aHNbMV0ubGFiZWwgOiBwYXRoc1swXS5sYWJlbFxuICAgICAgfSB5b3UgYXJlIHVzaW5nIGFuZCBlbnN1cmUgaXQgaGFzIG9uZSBvZiB0aGUgJHt2YWx1ZXN9IGxpc3RlZCBhYm92ZSxcbiAgICAgIG9yIGZvbGxvdyB0aGUgc2NoZW1hIHRvIGlkZW50aWZ5IHdoZXJlIHRoaXMgJHtwYXRocy5sZW5ndGggPj0gMiA/IHBhdGhzWzFdLmxhYmVsIDogcGF0aHNbMF0ubGFiZWx9IGNhbiBiZSBhZGRlZC5gO1xuICB9LFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIGNvbnN0YW50JzogKHsgcGFyYW1zIH0pID0+IGBNdXN0IGJlOiAke2NvZGUocGFyYW1zPy5hbGxvd2VkVmFsdWUpfWAsXG4gICdpcyBub3QgYWxsb3dlZCBmb3IgdGhpcyBjaGFyYWN0ZXJpc2VkSW5kaWNhdG9yJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICAgID8gYCR7XG4gICAgICAgICAgICBwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubGVuZ3RoXG4gICAgICAgICAgICAgID8gYGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBvbmUgb2YgdGhlc2UgbWV0aG9kczogJHtwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubWFwKGNvZGUpLmpvaW4oJywgJyl9YFxuICAgICAgICAgICAgICA6IGBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhbnkgbWV0aG9kIGFsbG93ZWQuIFBsZWFzZSAke2NvbnRhY3RVc0xpbmsoKX0gdG8gY2hhbmdlIHRoaXMuYFxuICAgICAgICAgIH0uYFxuICAgICAgICA6IGBTb21lIFRlcm1zIGFyZSBub3QgYWxsb3dlZCB3aXRoIHRoZSBtZXRob2QgeW91IHNlbGVjdGVkLmBcbiAgICB9XG4gICAgWW91IGNhbiBmaW5kIHRoZSBsaXN0IG9mIGFsbG93ZWQgbWV0aG9kcyBmb3IgZWFjaCBUZXJtIGJ5IGNsaWNraW5nIG9uIHRoZW0uYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdmFsaWQgaXRlbSc6ICh7IGRhdGFQYXRoIH0pID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gcGF0aHMubGVuZ3RoID49IDJcbiAgICAgID8gYFRoZSAke3BhdGhzW3BhdGhzLmxlbmd0aCAtIDFdLnBhdGh9IHJlbGF0ZWQgdG8gdGhpcyAke3BsdXJhbGl6ZShwYXRoc1twYXRocy5sZW5ndGggLSAyXS5sYWJlbCwgMSl9IGFyZSBpbnZhbGlkYFxuICAgICAgOiBgVGhlICR7cGF0aHNbMF0ucGF0aH0gYXJlIGludmFsaWRgO1xuICB9LFxuICAnbWF5IGJlIGJldHdlZW4gMCBhbmQgMTAwJzogKCkgPT4gJ1BlcmNlbnRhZ2VzIHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCwgbm90IDAgYW5kIDEuIFRoaXMgbWF5IGJlIGFuIGVycm9yLicsXG4gICdtYXkgbm90IGFsbCBiZSBzZXQgdG8gZmFsc2UnOiAoKSA9PlxuICAgIGBFdmVyeSB2YWx1ZSBpbiB0aGUgZGF0YSBjb21wbGV0ZW5lc3MgYXNzZXNzbWVudCBpcyAke2NvZGUoZmFsc2UpfS4gWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBmaWxsIGl0IGluLlxuICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGZpbGwgaXQgaW4sIHBsZWFzZSBzZWUgdGhlICR7c2NoZW1hTGluaygnQ3ljbGUjY29tcGxldGVuZXNzJywgJ3NjaGVtYScpfS5gLFxuICAnbWF5IG5vdCBiZSBlbXB0eSc6ICgpID0+ICdpZiB0aGlzIHZhbHVlIHNpZ25pZmllcyBubyBkYXRhLCBIZXN0aWEgb25seSBhY2NlcHRzIFwiLVwiIG9yIGVtcHR5IGZvciBubyBkYXRhJyxcbiAgJ21heSBub3QgYmUgMCc6ICh7IGRhdGFQYXRoIH0sIGVycm9yQ291bnQpID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gYEFkZGluZyBhIHZhbHVlICR7ZXJyb3JDb3VudCA9PT0gMSA/IGAgdG8gZXZlcnkgJHtwYXRoc1swXS5sYWJlbH0gYCA6ICcgJ30gaXMgaGlnaGx5IHJlY29tbWVuZGVkXG4gICAgICBhcyB3aXRob3V0IHRoaXMgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgSW1wYWN0IEFzc2Vzc21lbnQuXG4gICAgICBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHdlIHJlY29tbWVuZCBzZXR0aW5nIHZhbHVlIHRvIDAuYDtcbiAgfSxcbiAgJ2xvbmdGYWxsb3dQZXJpb2QgbXVzdCBiZSBsb3dlciB0aGFuIDUgeWVhcnMnOiAoKSA9PlxuICAgIGBZb3VyIGxvbmdGYWxsb3dQZXJpb2QgaXMgZ3JlYXRlciB0aGFuIGZpdmUgeWVhcnMuXG4gICAgRmFsbG93IGlzIGRlZmluZWQgYnkgRkFPU1RBVCBhcyBsYW5kIGxlZnQgdW5jdWx0aXZhdGVkIGZvciBiZXR3ZWVuIDEgYW5kIDUgeWVhcnMsXG4gICAgYW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB1c2VkIGZvciBIZXN0aWEgYWxzby5gLFxuICAnc2hvdWxkIGJlIHdpdGhpbiBwZXJjZW50YWdlIG9mIGRlZmF1bHQgdmFsdWUnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICA/IGBUaGlzIHZhbHVlIGlzIMKxJHt0aHJlc2hvbGQocGFyYW1zPy50aHJlc2hvbGQpfSBkaWZmZXJlbnQgdG8gb3VyIGRlZmF1bHQgdmFsdWUgd2hpY2ggaXMgJHtwYXJhbXM/LmRlZmF1bHR9LlxuICAgICAgUGxlYXNlIGNoZWNrIHlvdXIgdXBsb2FkZWQgZGF0YSBhcyB0aGlzIG1heSBiZSBhbiBlcnJvci5gXG4gICAgICA6IGBUaGlzIHZhbHVlIGlzIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50IHRoYW4gb3VyIGRlZmF1bHQgdmFsdWUuXG4gICAgICBQbGVhc2UgY2hlY2sgeW91ciB1cGxvYWRlZCBkYXRhIGFzIHRoaXMgbWF5IGJlIGFuIGVycm9yLmAsXG4gICd0aGUgdmFsdWUgcHJvdmlkZWQgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0JzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYFRoZSBleHBlY3RlZCByZXN1bHQgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9XG4gICAgJHtwYXJhbXM/Lm1vZGVsPy5uYW1lID8gYHVzaW5nICR7bW9kZWxMaW5rKHBhcmFtcz8udGVybSwgcGFyYW1zPy5tb2RlbCl9IGAgOiAnJ31cbiAgICBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgICAgPyBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUoXG4gICAgICAgICAgICB0b1ByZWNpc2lvbihwYXJhbXM/LmN1cnJlbnQsIDMpXG4gICAgICAgICAgKX0uXG4gICAgICAgICR7cGFyYW1zPy50aHJlc2hvbGQgPyBgT3VyIHRocmVzaG9sZCBpcyDCsSR7dGhyZXNob2xkKHBhcmFtcz8udGhyZXNob2xkKX0uYCA6ICcnfVxuICAgICAgICBQbGVhc2UgZWl0aGVyOlxuICAgICAgICA8dWwgY2xhc3M9XCJpcy1wbC0zIGlzLWxpc3Qtc3R5bGUtZGVjaW1hbFwiPlxuICAgICAgICA8bGk+Q2hlY2sgdGhlICR7cGFyYW1zPy50ZXJtLnRlcm1UeXBlfSB2YWx1ZSB5b3UgcHJvdmlkZWQ7PC9saT5cbiAgICAgICAgPGxpPkNoZWNrIHRoZSBkYXRhIHlvdSBwcm92aWRlZCB3aGljaCBpcyB0aGUgaW5wdXQgaW50byB0aGlzIG1vZGVsOzwvbGk+XG4gICAgICAgIDxsaT5DYXJlZnVsbHkgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiB0byB1bmRlcnN0YW5kIGlmIHdlIHVzZWQgYSBkZWZhdWx0IHByb3BlcnR5IGFzIHBhcnQgb2YgdGhlIGNhbGN1bGF0aW9ucy48L2xpPlxuICAgICAgICA8L3VsPmBcbiAgICAgICAgOiAnbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0LidcbiAgICB9YCxcbiAgJ3RoZSBtZWFzdXJlbWVudCBwcm92aWRlZCBtaWdodCBiZSBpbiBlcnJvcic6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBUaGUgZXhwZWN0ZWQgdmFsdWUgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9XG4gICAgJHtwYXJhbXM/Lm1vZGVsPy5uYW1lID8gYHVzaW5nICR7bW9kZWxMaW5rKHBhcmFtcz8udGVybSwgcGFyYW1zPy5tb2RlbCl9IGAgOiAnJ31cbiAgICBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgICAgPyBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUoXG4gICAgICAgICAgICB0b1ByZWNpc2lvbihwYXJhbXM/LmN1cnJlbnQsIDMpXG4gICAgICAgICAgKX0uXG4gICAgICAgICR7cGFyYW1zPy50aHJlc2hvbGQgPyBgT3VyIHRocmVzaG9sZCBpcyDCsSR7dGhyZXNob2xkKHBhcmFtcz8udGhyZXNob2xkKX0uYCA6ICcnfWBcbiAgICAgICAgOiBgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0LmBcbiAgICB9YCxcbiAgJ211c3QgYmUgZXF1YWwgdG8gcHJldmlvdXMgcHJvZHVjdCBtdWx0aXBsaWVkIGJ5IHRoZSBzaGFyZSc6ICgpID0+XG4gICAgYFByb2R1Y3RzIGZyb20gYSB0cmFuc2Zvcm1hdGlvbiB3aGljaCBhcmUgYW4gSW5wdXQgaW4gdG8gdGhlIG5leHQgdHJhbnNmb3JtYXRpb24gbXVzdCBmb2xsb3cgdGhlIGZvbGxvd2luZyBydWxlOlxuICAgICR7Y29kZSgncHJldmlvdXMucHJvZHVjdC52YWx1ZSAqIGN1cnJlbnQudHJhbnNmb3JtZWRTaGFyZSAvIDEwMCA9PSBjdXJyZW50LmlucHV0LnZhbHVlJyl9YCxcbiAgJ2F0IGxlYXN0IG9uZSBJbnB1dCBtdXN0IGJlIGEgUHJvZHVjdCBvZiB0aGUgQ3ljbGUnOiAoKSA9PlxuICAgIGBBIFRyYW5zZm9ybWF0aW9uIGNvbnZlcnRzIGEgUHJvZHVjdCBmcm9tIGEgQ3ljbGUgaW50byBhbm90aGVyIFByb2R1Y3QuXG4gICAgVGhlcmVmb3JlLCBhdCBsZWFzdCBvbmUgSW5wdXQgaW50byB0aGUgVHJhbnNmb3JtYXRpb24gbXVzdCBiZSBhIFByb2R1Y3Qgb2YgdGhlIEN5Y2xlLmAsXG4gICdtdXN0IGhhdmUgb25seSBvbmUgZW50cnkgd2l0aCB0aGUgc2FtZSB0ZXJtLnRlcm1UeXBlID0gZXhjcmV0YU1hbmFnZW1lbnQnOiAoKSA9PlxuICAgIGBUaGVyZSBjYW4gb25seSBiZSBvbmUgUHJhY3RpY2Ugb2YgdHlwZSBleGNyZXRhTWFuYWdlbWVudCBpbiBhIEN5Y2xlLlxuICAgIFRvIHJlcHJlc2VudCBtdWx0aXBsZSBleGNyZXRhIG1hbmFnZW1lbnQgc3lzdGVtcyBlaXRoZXIgdXNlIG11bHRpcGxlIEN5Y2xlcyBhbmQgbGluayB0aGVtIHRvZ2V0aGVyLFxuICAgIG9yIHVzZSBUcmFuc2Zvcm1hdGlvbnMgd2l0aGluIGEgQ3ljbGUgYW5kIGxpbmsgdGhvc2UgdG9nZXRoZXIuYCxcbiAgJ211c3QgYmUgaW5jbHVkZWQgYXMgYW4gSW5wdXQnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgVGhlIGV4Y3JldGEgUHJvZHVjdHMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBleGNyZXRhIElucHV0cy5cbiAgICAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgICA/IGBFLmcuLCB5b3UgY2Fubm90IGdldCAke2NvZGUocGFyYW1zPy50ZXJtPy5uYW1lKX0gZnJvbSAkeyhwYXJhbXM/LmV4cGVjdGVkIHx8IFtdKVxuICAgICAgICAgICAgLm1hcCh2ID0+IGNvZGUoa2V5VG9MYWJlbCh2KSkpXG4gICAgICAgICAgICAuam9pbignIG9yICcpfS5gXG4gICAgICAgIDogJydcbiAgICB9XG4gICAgUGxlYXNlIGNoZWNrIHRoZSBJbnB1dHMgYW5kIFByb2R1Y3RzIG9mIHRoZSBUcmFuc2Zvcm1hdGlvbi5gLFxuICAnbXVzdCBhZGQgdGhlIGxpbmtlZCBpbnB1dHMgdG8gdGhlIGN5Y2xlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICAgID8gYFlvdSBoYXZlIHN0YXRlZCB0aGF0ICR7Y29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpfSB3YXMgY3JlYXRlZCBieSB0aGUgZm9sbG93aW5nIElucHV0cyAke3BhcmFtcz8uZXhwZWN0ZWRcbiAgICAgICAgICAgID8ubWFwKGUgPT4gY29kZShlLm5hbWUpKVxuICAgICAgICAgICAgLmpvaW4oJyAsICcpfWBcbiAgICAgICAgOiAnWW91IGhhdmUgc3RhdGVkIHNvbWUgRW1pc3Npb25zIHdlcmUgY3JlYXRlZCBieSBzb21lIElucHV0cydcbiAgICB9LlxuICAgIEhvd2V2ZXIsIHRoZXNlIElucHV0cyBkbyBub3QgZXhpc3QgaW4gdGhlIEN5Y2xlLlxuICAgIFBsZWFzZSBhZGQgdGhlc2UgSW5wdXRzLCBldmVuIGlmIHlvdSBkbyBub3QgaGF2ZSBhIHZhbHVlIGZvciB0aGVtLmAsXG4gICdtdXN0IGFkZCB0aGUgbGlua2VkIHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgY3ljbGUnOiAoeyBsZXZlbCwgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICAgID8gYFlvdSBoYXZlIHNwZWNpZmllZCB0aGF0JHtjb2RlKFxuICAgICAgICAgICAgcGFyYW1zPy50ZXJtPy5uYW1lXG4gICAgICAgICAgKX0gd2FzIGNyZWF0ZWQgZHVyaW5nIGEgVHJhbnNmb3JtYXRpb24gd2l0aCB0aGUgVGVybSBuYW1lICR7Y29kZShwYXJhbXM/LmV4cGVjdGVkPy5uYW1lKX1gXG4gICAgICAgIDogJ1lvdSBoYXZlIHN0YXRlZCBzb21lIEVtaXNzaW9ucyB3ZXJlIGNyZWF0ZWQgYnkgc29tZSBUcmFuc2Zvcm1hdGlvbnMnXG4gICAgfS5cbiAgICBIb3dldmVyLCB3ZSBjYW5ub3QgZmluZCBhIFRyYW5zZm9ybWF0aW9uIHdpdGhpbiB0aGUgQ3ljbGUgd2l0aCB0aGlzIFRlcm0gbmFtZS5cbiAgICAke1xuICAgICAgbGV2ZWwgPT09ICdlcnJvcidcbiAgICAgICAgPyAnUGxlYXNlIGNoZWNrIHRoZSBUZXJtcyB1c2VkIGluIHRoZSBFbWlzc2lvbnMgYW5kL29yIHRoZSBUcmFuc2Zvcm1hdGlvbnMuJ1xuICAgICAgICA6ICdZb3UgbWF5IHdhbnQgdG8gYWRkIHRoaXMgVHJhbnNmb3JtYXRpb24uJ1xuICAgIH1gLFxuICAnZXZlcnkgbm9kZSBzaG91bGQgYmUgdW5pcXVlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoaXMgTm9kZSBpcyBkdXBsaWNhdGVkLiBFdmVyeSBOb2RlIHNob3VsZCBiZSB1bmlxdWUuXG4gICAgVW5pcXVlbmVzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgZmllbGRzOiAkeyhwYXJhbXM/LmtleXMgfHwgW10pLm1hcChjb2RlKS5qb2luKCcsICcpfWAsXG4gICdldmVyeSBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBiZSB1bmlxdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhpcyBCbGFuayBOb2RlIGlzIGR1cGxpY2F0ZWQke1xuICAgICAgcGFyYW1zPy5kdXBsaWNhdGVkSW5kZXhlcz8ubGVuZ3RoXG4gICAgICAgID8gYHdpdGggdGhlIGJsYW5rIG5vZGVzIHdpdGggbnVtYmVyOiAke3BhcmFtcy5kdXBsaWNhdGVkSW5kZXhlcy5qb2luKCcsICcpfWBcbiAgICAgICAgOiAnJ1xuICAgIH0uIEV2ZXJ5IEJsYW5rIE5vZGUgc2hvdWxkIGJlIHVuaXF1ZS5cbiAgICBVbmlxdWVuZXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBmaWVsZHM6ICR7KHBhcmFtcz8ua2V5cyB8fCBbXSkubWFwKGNvZGUpLmpvaW4oJywgJyl9YCxcbiAgJ211c3QgY29udGFpbiBhcyBtYW55IGl0ZW1zIGFzIHZhbHVlcyc6ICh7IHBhcmFtcywgZGF0YVBhdGggfSkgPT5cbiAgICBgVGhlIG51bWJlciBvZiAke2NvZGUoZGF0YVBhdGguc3BsaXQoJy4nKS5wb3AoKSl9IG11c3QgbWF0Y2ggdGhlIG51bWJlciBvZiAke2NvZGUoJ3ZhbHVlJyl9LlxuICAgIEN1cnJlbnRseSB0aGVyZSBhcmUgJHtwYXJhbXM/LmN1cnJlbnR9ICR7Y29kZShkYXRhUGF0aC5zcGxpdCgnLicpLnBvcCgpKX0gYnV0ICR7cGFyYW1zPy5leHBlY3RlZH0gJHtjb2RlKFxuICAgICAgJ3ZhbHVlJ1xuICAgICl9LmAsXG4gICdpcyB0b28gZ2VuZXJpYyc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBZb3UgaGF2ZSB0aGUgZm9sbG93aW5nIFByb2R1Y3QgJHtjb2RlKHBhcmFtcz8ucHJvZHVjdD8ubmFtZSl9IGhvd2V2ZXIsXG4gICAgeW91IGhhdmUgdXNlZCBhIGdlbmVyaWMgJHtnbG9zc2FyeVR5cGVMaW5rKHBhcmFtcz8udGVybT8udGVybVR5cGUpfSB0ZXJtICR7Y29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpfS5cbiAgICBVc2UgYSBtb3JlIHNwZWNpZmljIHRlcm0gZm9yIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoXG4gICAgICBwYXJhbXM/LnRlcm0/LnRlcm1UeXBlXG4gICAgKX0gd2hpY2ggcmVmbGVjdHMgdGhlIHNwZWNpZmljICR7Z2xvc3NhcnlUeXBlTGluayhwYXJhbXM/LnByb2R1Y3Q/LnRlcm1UeXBlKX0uYCxcbiAgJ3Nob3VsZCBub3QgdXNlIGlkZW50aWNhbCB0ZXJtcyB3aXRoIGRpZmZlcmVudCB1bml0cyc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBZb3UgaGF2ZSBhZGRlZCB0aGUgc2FtZSAke2NvZGUocGFyYW1zPy50ZXJtPy50ZXJtVHlwZSl9IGluICR7cGFyYW1zPy51bml0c1xuICAgICAgPy5tYXAodW5pdCA9PiBjb2RlKHVuaXQpKVxuICAgICAgLmpvaW4oJyBhbmQgJyl9IHVuaXRzLlxuICAgIElmIHRoZXNlIHRlcm1zIHJlZmVyIHRvIHRoZSBzYW1lICR7Y29kZShwYXJhbXM/LnRlcm0/LnRlcm1UeXBlKX0sIHRoaXMgd2lsbCBsZWFkIHRvIGRvdWJsZSBjb3VudGluZy4ke1xuICAgICAgcGFyYW1zPy51bml0cz8uaW5jbHVkZXMoJ2tnIE4nKVxuICAgICAgICA/IGAgSW5zdGVhZCB1c2UgdGhlICR7dGVybUxpbmsoeyBpZDogJ25pdHJvZ2VuQ29udGVudCcsIG5hbWU6ICdOaXRyb2dlbiBDb250ZW50JyB9KX0gUHJvcGVydHkgb24gdGhlICR7Y29kZShcbiAgICAgICAgICAgICdrZydcbiAgICAgICAgICApfSB0ZXJtIHRvIGRlZmluZSB0aGUgbml0cm9nZW4gY29udGVudCBvZiB0aGUgJHtjb2RlKHBhcmFtcz8udGVybT8udGVybVR5cGUpfS5gXG4gICAgICAgIDogJydcbiAgICB9YCxcbiAgJ2lzIG1pc3NpbmcgcmVxdWlyZWQgYmlibGlvZ3JhcGhpYyBpbmZvcm1hdGlvbic6ICgpID0+XG4gICAgYFRoZSBhdXRvbWF0aWMgYmlibGlvZ3JhcGh5IHNlYXJjaCBmYWlsZWQgZm9yIHRoaXMgQmlibGlvZ3JhcGh5LiBFaXRoZXI6XG4gICAgPHVsIGNsYXNzPVwiaXMtcGwtMyBpcy1saXN0LXN0eWxlLWRlY2ltYWxcIj5cbiAgICA8bGk+TWFudWFsbHkgZmlsbC1pbiB0aGUgPGI+cmVxdWlyZWQ8L2I+IGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24gYXMgcGVyICR7c2NoZW1hTGluayhcbiAgICAgIFNjaGVtYVR5cGUuQmlibGlvZ3JhcGh5LFxuICAgICAgJ291ciBzY2hlbWEnXG4gICAgKX0uPC9saT5cbiAgICA8bGk+UHJvdmlkZSB0aGUgJHtjb2RlKCdkb2N1bWVudERPSScpfSBhcyB3ZWxsIGFzIHRoZSAke2NvZGUoJ3RpdGxlJyl9LjwvbGk+XG4gICAgPGxpPkNoZWNrIHRoZSAke2NvZGUoJ2RvY3VtZW50RE9JJyl9IGFuZCAke2NvZGUoJ3RpdGxlJyl9IGZvciB0eXBvcyBhZ2FpbnN0IHRoZSAke2V4dGVybmFsTGluayhcbiAgICAgICdodHRwczovL3d3dy5tZW5kZWxleS5jb20nLFxuICAgICAgJ01lbmRlbGV5IGNhdGFsb2d1ZSdcbiAgICApfS48L2xpPlxuICAgIDwvdWw+YCxcbiAgJ3Nob3VsZCBiZSBsb3dlciB0aGFuIG1heCBzaXplJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBib3VuZGFyeSBvciByZWdpb24gaXMgPiR7cGFyYW1zPy5leHBlY3RlZH1rbTIgYW5kIGlzIHRvbyBsYXJnZSB0byByZWxpYWJseSBnYXAgZmlsbCBNZWFzdXJlbWVudHMuXG4gICAgSWYgeW91IGFyZSBhYmxlIHRvIHVzZSBhIG1vcmUgc3BlY2lmaWMgcmVnaW9uIG9yIHNtYWxsZXIgYm91bmRhcnksIHBsZWFzZSBkby5gLFxuICAnYW4gZXhjcmV0YSBpbnB1dCBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIGFuIGV4Y3JldGFNYW5hZ2VtZW50IHByYWN0aWNlJzogKHsgZGF0YVBhdGggfSkgPT4ge1xuICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgIHJldHVybiBgRXhjcmV0YSBtYW5hZ2VtZW50IGlzIHRoZSBjb252ZXJzaW9uIG9mIGV4Y3JldGEgdG8gYW5vdGhlciB0eXBlIG9mIGV4Y3JldGEuXG4gICAgICBZb3UgaGF2ZSBhZGRlZCBhbiBleGNyZXRhTWFuYWdlbWVudCBQcmFjdGljZSB0byB0aGlzICR7cGF0aHNbMF0ubGFiZWx9IGJ1dCB0aGVyZSBpcyBubyBleGNyZXRhIElucHV0LlxuICAgICAgVG8gcmVwcmVzZW50IGV4Y3JldGEgbWFuYWdlbWVudCwgdXNlIGEgJHtwYXRoc1swXS5sYWJlbH0gd2l0aCBleGNyZXRhIGFzIGFuIElucHV0IGFuZCBleGNyZXRhTWFuYWdlbWVudCBhcyBhIFByYWN0aWNlLmA7XG4gIH0sXG4gICdvbmx5IDEgcHJpbWFyeSBwcm9kdWN0IGFsbG93ZWQnOiAoKSA9PiAnVGhlcmUgY2FuIG9ubHkgYmUgb25lIHByaW1hcnkgcHJvZHVjdCBpbiBlYWNoIEN5Y2xlLicsXG4gICdpcyBub3QgYWxsb3dlZCBpbiBjb21iaW5hdGlvbiB3aXRoIG5vVGlsbGFnZSc6ICgpID0+XG4gICAgYFRoaXMgb3BlcmF0aW9uIGludm9sdmVzIHRpbGxhZ2UsIHlldCB5b3UgaGF2ZSBzcGVjaWZpZWQgdGhlIFByYWN0aWNlICR7dGVybUxpbmsobm9UaWxsYWdlKX0uXG4gICAgRWl0aGVyIGNoYW5nZSB0aGlzIG9wZXJhdGlvbiBvciB0aGUgUHJhY3RpY2UuYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdGlsbGFnZSBwcmFjdGljZSc6ICgpID0+XG4gICAgYFdlIHJlY29tbWVuZCBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIHRpbGxhZ2UgdXNlZCBmb3IgdGhpcyBDeWNsZS5cbiAgICBQbGVhc2Ugc2VlIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBnbG9zc2FyeS5gLFxuICAnbXVzdCBzZXQgdmFsdWUgZm9yIGV2ZXJ5IHRpbGxhZ2UgcHJhY3RpY2UnOiAoKSA9PlxuICAgIGBFaXRoZXIgc3BlY2lmeSBhIHNpbmdsZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZSBvciBhZGQgYSB2YWx1ZSB0byBhbGwgcHJhY3RpY2VzLmAsXG4gICdzdW0gbm90IGVxdWFsIHRvIDEwMCUgZm9yIHRpbGxhZ2UgcHJhY3RpY2VzJzogKCkgPT5cbiAgICBgVGhlIHN1bSBvZiAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZXMgbXVzdCBlcXVhbCAxMDAlLmAsXG4gICdjYW4gb25seSBoYXZlIDEgdGlsbGFnZSBwcmFjdGljZSB3aXRob3V0IGEgdmFsdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgSXQgaXMgbm90IHBvc3NpYmxlIGZvciBhIEN5Y2xlIHRvIGhhdmUgdGhlIGZvbGxvd2luZyB0aWxsYWdlIFByYWN0aWNlczpcbiAgICAkeyhwYXJhbXM/LmN1cnJlbnQgPz8gW10pLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oJyBhbmQgJyl9IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgSWYgbXVsdGlwbGUgdGlsbGFnZSBwcmFjdGljZXMgZGlkIG9jY3VyLCBwbGVhc2Ugc3BlY2lmeSB0aGUgcGVyY2VudGFnZSBvZiBhcmVhIHRoZXkgb2NjdXJyZWQgb24uYCxcbiAgJ2NhbiBub3QgYmUgbGlua2VkIHRvIHRoZSBzYW1lIEN5Y2xlJzogKCkgPT4gJ1lvdSBjYW4gbm90IGxpbmsgYW4gSW5wdXQgdG8gdGhlIEltcGFjdCBBc3Nlc3NtZW50IG9mIHRoZSBzYW1lIEN5Y2xlLicsXG4gIC8vIGRlcHJlY2F0ZWQsIHJlbW92ZSB3aGVuIG1lc3NhZ2UgaXMgbm90IGJlaW5nIHVzZWQgYW55bW9yZVxuICAnbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBkYXRhUGF0aCwgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYElmIHRoZSBhbW91bnQgcHJvZHVjZWQgaXMgemVybywgdGhlICR7Y29kZShkYXRhUGF0aD8uc3BsaXQoJy4nKS5wb3AoKSl9IG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ2Vjb25vbWljVmFsdWVTaGFyZSBtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHRoZSBlY29ub21pY1ZhbHVlU2hhcmUgb2YgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgPyBjb2RlKHBhcmFtcz8udGVybS5uYW1lKSA6ICd0aGF0IHByb2R1Y3QnXG4gICAgfSBtdXN0IGFsc28gYmUgemVyby5gLFxuICAncmV2ZW51ZSBtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHRoZSByZXZlbnVlIG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ3Nob3VsZCBhZGQgYSBzb3VyY2UnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgV2UgcmVjb21tZW5kIGFkZGluZyBhIFNvdXJjZSB0byBhbGwgZGF0YSBpdGVtcy5cbiAgICBUaGlzIGNhbiBiZSBkb25lIGJ5IGFkZGluZyB0aGUgJHtjb2RlKHBhcmFtcz8uY3VycmVudCl9IGZpZWxkLlxuICAgIFNvdXJjZXMgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGZvciBlYWNoIGRhdGEgaXRlbSAoaS5lLiwgZWFjaCBJbnB1dCwgRW1pc3Npb24sIFByb2R1Y3QsIFByYWN0aWNlLCBNZWFzdXJlbWVudCwgb3IgSW5mcmFzdHJ1Y3R1cmUpLmAsXG4gICdjb3ZlciBjcm9wIGN5Y2xlIGNvbnRhaW5zIG5vbiBjb3ZlciBjcm9wIHByb2R1Y3QnOiAoKSA9PlxuICAgIGBZb3UgaGF2ZSBzcGVjaWZpZWQgdGhhdCB0aGlzIGNyb3AgaXMgYSBjb3ZlciBjcm9wIHVzaW5nIGEgUHJhY3RpY2UuXG4gICAgQSBjb3ZlciBjcm9wIGlzIGRlZmluZWQgYXMgXCJhIGNyb3Agd2hpY2ggaXMgbGVmdCBpbiB0aGUgZmllbGQgd2l0aG91dCBhbnkgZnJhY3Rpb24gaGFydmVzdGVkIGJ5IHRoZSBlbmQgb2YgdGhlIEN5Y2xlXCIuXG4gICAgVGhlIFByb2R1Y3RzIG9mIHRoaXMgQ3ljbGUgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoaXMgY3JvcCBiZWluZyBhIGNvdmVyIGNyb3AuXG4gICAgUGxlYXNlIGNoZWNrIHRoZSBQcm9kdWN0cyBvciB0aGUgUHJhY3RpY2VzLmAsXG4gICdzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGN5Y2xlIHByb2R1Y3RzJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICAgID8gYFRoZSBQcm9kdWN0ICR7Y29kZShwYXJhbXMucHJvZHVjdC5uYW1lKX0gZG9lcyBub3QgZXhpc3QgaW4gdGhlIEN5Y2xlIHdpdGggaWQgJHtjb2RlKHBhcmFtcy5ub2RlLmlkKX1gXG4gICAgICAgIDogJ1RoZSBJbXBhY3RBc3Nlc3NtZW50IFByb2R1Y3QgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGxpbmtlZCBDeWNsZSdcbiAgICB9LlxuICAgIFBsZWFzZSBhZGQgdGhlIFByb2R1Y3QgaW4gdGhlIEN5Y2xlIG9yIHJlbW92ZSB0aGUgbGluayB3aXRoIHRoZSBDeWNsZS5gLFxuICAnbXVsdGlwbGUgSW1wYWN0QXNzZXNzbWVudCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIFByb2R1Y3Qgb2YgdGhlIHNhbWUgQ3ljbGUnOiAoKSA9PlxuICAgIGBPbmx5IDEgSW1wYWN0IEFzc2Vzc21lbnQgY2FuIGJlIHJlbGF0ZWQgdG8gdGhpcyBQcm9kdWN0LlxuICAgIFBsZWFzZSBtYWtlIHN1cmUgdGhlIHByb2R1Y3QgaXMgY29ycmVjdCBvciB0aGUgY3ljbGUuaWQgeW91IGFyZSByZWZlcnJpbmcgdG8gaXMgY29ycmVjdC5gLFxuICAnbXVsdGlwbGUgSW1wYWN0QXNzZXNzbWVudCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUHJvZHVjdCc6ICgpID0+XG4gICAgYE9ubHkgMSBJbXBhY3QgQXNzZXNzbWVudCBjYW4gYmUgcmVsYXRlZCB0byB0aGlzIFByb2R1Y3QuXG4gICAgUGxlYXNlIG1ha2Ugc3VyZSB0aGUgcHJvZHVjdCBvZiB0aGUgcmVsYXRlZCBJbXBhY3RBc3Nlc3NtZW50cyBhcmUgY29ycmVjdCBvciB0aGUgY3ljbGUuaWQgaXMgY29ycmVjdC5gLFxuICAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbGFuZCBvY2N1cGF0aW9uJzogKCkgPT5cbiAgICBgTGFuZCB0cmFuc2Zvcm1hdGlvbiBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGxhbmQgb2NjdXBhdGlvblxuICAgIChsYW5kIHRyYW5zZm9ybWF0aW9uIGlzIHRoZSBhbW91bnQgb2YgbGFuZCBjb252ZXJ0ZWQgYmV0d2VlbiBzb21lIGRhdGUgaW4gdGhlIHBhc3QgYW5kIHRoZSBjdXJyZW50IHllYXIsXG4gICAgZGl2aWRlZCBieSBhbiBhbW9ydGl6YXRpb24gcGVyaW9kLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIGxlc3MgdGhhbiBsYW5kIG9jY3VwYXRpb24gYnkgZGVmaW5pdGlvbikuYCxcbiAgJ3Nob3VsZCBiZSBsaW5rZWQgdG8gYW4gZW1pc3Npb24gaW4gdGhlIEN5Y2xlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gYCR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9IGV4aXN0c2AgOiAnU29tZSBFbWlzc2lvbnMgZXhpc3QnXG4gICAgfSBpbiBib3RoIHRoZSBDeWNsZSBhbmQgdGhlIFRyYW5zZm9ybWF0aW9uIGJ1dCAke2Vycm9yQ291bnQgPT09IDEgPyAnaXQgaXMnIDogJ3RoZXkgYXJlJ30gbm90IGxpbmtlZCB1c2luZyAke2NvZGUoXG4gICAgICAnY3ljbGUuZW1pc3Npb25zLlgudHJhbnNmb3JtYXRpb24udGVybSdcbiAgICApfS4gVGhpcyBtYXkgYmUgYW4gZXJyb3IuYCxcbiAgJ3Nob3VsZCBhZGQgYW4gYW5pbWFsIHByb2R1Y3Rpb24gc3lzdGVtJzogKCkgPT5cbiAgICBgRm9yIGFuaW1hbCBwcm9kdWN0aW9uIGN5Y2xlcywgd2UgcmVjb21tZW5kIHNwZWNpZnlpbmcgdGhlIGFuaW1hbCBwcm9kdWN0aW9uICR7Z2xvc3NhcnlUeXBlTGluayhcbiAgICAgIFRlcm1UZXJtVHlwZS5zeXN0ZW1cbiAgICApfSBhcyBhIFByYWN0aWNlLlxuICAgIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2Ygc3lzdGVtcyBpbiB0aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS5zeXN0ZW0sICdHbG9zc2FyeScpfS5gLFxuICAnbXVzdCBiZSBzZXQgdG8gZmFsc2Ugd2hlbiBzcGVjaWZ5aW5nIGZ1ZWwgdXNlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYElmIG1hY2hpbmVyeSBmdWVsICgke3BhcmFtcz8uYWxsb3dlZFZhbHVlcy5tYXAoY29kZSkuam9pbignLCAnKX0pIGlzIHVzZWQgZHVyaW5nIGEgQ3ljbGUsXG4gICAgYnV0IHRoZXJlIGlzIG5vIGRhdGEgb24gdGhlIGFtb3VudCBvZiAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLm1hdGVyaWFsKX0gdXNlZCBmb3IgYWdyaWN1bHR1cmFsIGVxdWlwbWVudCxcbiAgICB0aGVuICR7Y29kZSgnY29tcGxldGVuZXNzLm1hdGVyaWFsJyl9IG11c3QgYmUgJHtjb2RlKCdmYWxzZScpfS5gLFxuICAnbXVzdCBiZSBiZWxvdyBvciBlcXVhbCB0byAxIGZvciB1bml0IGluIGhhJzogKCkgPT5cbiAgICBgVGhlIG1heGltdW0gdmFsdWUgZm9yIGEgcHJvZHVjdCB3aXRoIHVuaXRzICR7Y29kZSgnaGEnKX0gb24gYSBDeWNsZSB3aXRoIGEgJHtzY2hlbWFMaW5rKFxuICAgICAgJ0N5Y2xlI2Z1bmN0aW9uYWxVbml0JyxcbiAgICAgICdmdW5jdGlvbmFsIHVuaXQnXG4gICAgKX0gb2YgJHtjb2RlKCcxIGhhJyl9IGlzICR7Y29kZSgnMScpfS5cbiAgICBJZiB5b3UgYXJlIHRyeWluZyB0byBhZGQgYSBwcm9kdWN0IHdpdGggdGhlIHVuaXRzICR7Y29kZSgna2cnKX0sIHVzZSBhIGRpZmZlcmVudCB0ZXJtLmAsXG4gIFwicGFzdHVyZUdyYXNzIGtleSB1bml0cyBtdXN0IGJlICdoYSdcIjogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBUZXJtICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9IGNhbid0IGJlIHVzZWQgYXMgYSBrZXkgZm9yICR7dGVybUxpbmsocGFzdHVyZUdyYXNzKX0uXG4gICAgUGxlYXNlIHVzZSB0aGUgVGVybSBkZXNjcmliaW5nIHRoZSBwbGFudCB3aXRoIHRoZSB1bml0cyAke2NvZGUocGFyYW1zLmV4cGVjdGVkKX0gaW5zdGVhZC5cbiAgICBUaGlzIHdpbGwgaGVscCB1cyBnYXAtZmlsbCB0aGUgYW1vdW50IG9mIGdyYXNzIGNvbnN1bWVkIGJ5IHRoZSBoZXJkLmAsXG4gICd0aGUgc3VtIG9mIGFsbCBwYXN0dXJlR3Jhc3MgdmFsdWVzIG11c3QgYmUgMTAwJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBzdW0gb2YgYWxsICR7dGVybUxpbmsocGFzdHVyZUdyYXNzKX0gdmFsdWVzIG11c3QgYmUgZXF1YWwgdG8gJHtwYXJhbXMuZXhwZWN0ZWR9JS5gLFxuICAnaXMgb3V0c2lkZSBjb25maWRlbmNlIGludGVydmFsJzogKGVycm9yLCBlcnJvckNvdW50LCBhbGxFcnJvcnMpID0+XG4gICAgYCR7dW5pcXVlKFxuICAgICAgKGFsbEVycm9ycy5sZW5ndGggPyBhbGxFcnJvcnMgOiBbZXJyb3JdKS5mbGF0TWFwKFxuICAgICAgICAoeyBkYXRhUGF0aCwgcGFyYW1zIH0pID0+XG4gICAgICAgICAgcGFyYW1zPy5vdXRsaWVycz8ubWFwKFxuICAgICAgICAgICAgdmFsdWUgPT5cbiAgICAgICAgICAgICAgYFRoZSAke2RhdGFQYXRoLmluY2x1ZGVzKCdwcm9kdWN0JykgPyAncHJvZHVjdCcgOiAnaW5wdXQnfSB2YWx1ZSAke1xuICAgICAgICAgICAgICAgIGVycm9yQ291bnQgPT09IDEgPyBgJHtjb2RlKHZhbHVlKX0gYCA6ICcnXG4gICAgICAgICAgICAgIH1pcyAke3ZhbHVlID4gcGFyYW1zPy5taW4gPyAnYWJvdmUnIDogJ2JlbG93J30gJHtcbiAgICAgICAgICAgICAgICBwYXJhbXM/LnRocmVzaG9sZCA/IGAke2NvZGUoYCR7KHBhcmFtcy50aHJlc2hvbGQgKyAoMSAtIHBhcmFtcy50aHJlc2hvbGQpIC8gMikgKiAxMDB9JWApfSBvZmAgOiAnJ1xuICAgICAgICAgICAgICB9IGFsbCAke3BhcmFtcz8uZ3JvdXAgPyBjb2RlKHBhcmFtcy5ncm91cCkgOiBjb2RlKHBhcmFtcz8udGVybT8ubmFtZSl9IGRhdGEgaW4gJHtjb2RlKFxuICAgICAgICAgICAgICAgIHBhcmFtcz8uY291bnRyeS5uYW1lXG4gICAgICAgICAgICAgICl9IG9uIHRoZSBIZXN0aWEgcGxhdGZvcm0uYFxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApLmpvaW4oJzwvYnI+Jyl9XG4gICAgPC9icj5cbiAgICBQbGVhc2UgZG91YmxlLWNoZWNrIHRoZXNlIHZhbHVlcyBiZWZvcmUgc3VibWl0dGluZy5gLFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIGJvdW5kYXJ5JzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBjYWxjdWxhdGVkIGFyZWEgZnJvbSAke2NvZGUoJ2JvdW5kYXJ5Jyl9IGlzICR7Y29kZShwYXJhbXM/LmV4cGVjdGVkKX0uXG4gICAgVGhpcyBtYXkgYmUgYW4gZXJyb3IgaWYgdGhlIGJvdW5kYXJ5IHJlcHJlc2VudHMgdGhlIGFyZWEgdW5kZXIgY3VsdGl2YXRpb24uYCxcbiAgJ211c3Qgc3BlY2lmeSB0aGUgZmF0ZSBvZiBjcm9wUmVzaWR1ZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBGb3Igc2l0ZXMgb2YgdHlwZSAke3BhcmFtcy5zaXRlVHlwZS5tYXAoY29kZSkuam9pbignIG9yICcpfSxcbiAgICBpZiBkYXRhIGNvbXBsZXRlbmVzcyBpcyBtYXJrZWQgJHtjb2RlKFxuICAgICAgdHJ1ZVxuICAgICl9IGZvciBjcm9wIHJlc2lkdWUsIHRoZSBmYXRlcyBhbmQgcXVhbnRpdGllcyBvZiB0aGUgcmVzaWR1ZSBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICA8YnIvPlxuICAgIFRoZSBxdWFudGl0eSBtdXN0IGluY2x1ZGUgYm90aCBhYm92ZSBhbmQgYmVsb3cgZ3JvdW5kIGNyb3AgcmVzaWR1ZSwgd2hlcmUgdGhlIHN1bSBvZiBhYm92ZSBncm91bmQgY3JvcCByZXNpZHVlIGFuZCBiZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uXG4gICAgVGhpcyBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIHRlcm1zOlxuICAgIDx1bCBjbGFzcz1cImlzLXBsLTMgaXMtbGlzdC1zdHlsZS1kaXNjIGlzLW5vd3JhcFwiPlxuICAgIDxsaT4ke3Rlcm1MaW5rKHsgaWQ6ICdiZWxvd0dyb3VuZENyb3BSZXNpZHVlJywgbmFtZTogJ0JlbG93IGdyb3VuZCBjcm9wIHJlc2lkdWUnIH0pfTsgYW5kPC9saT5cbiAgICA8bGk+JHt0ZXJtTGluayh7IGlkOiAnYWJvdmVHcm91bmRDcm9wUmVzaWR1ZVRvdGFsJywgbmFtZTogJ0Fib3ZlIGdyb3VuZCBjcm9wIHJlc2lkdWUgdG90YWwnIH0pfS48L2xpPlxuICAgIDwvdWw+XG4gICAgPGJyLz5cbiAgICBUaGUgZmF0ZSBjYW4gYmUgYWRkZWQgdXNpbmc6XG4gICAgPHVsIGNsYXNzPVwiaXMtcGwtMyBpcy1saXN0LXN0eWxlLWRpc2MgaXMtbm93cmFwXCI+XG4gICAgPGxpPnRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLmNyb3BSZXNpZHVlTWFuYWdlbWVudCl9IHByYWN0aWNlczsgYW5kL29yPC9saT5cbiAgICA8bGk+dGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuY3JvcFJlc2lkdWUpfSBwcm9kdWN0czwvbGk+XG4gICAgPC91bD5cbiAgICBgLFxuICAnc2hvdWxkIHNwZWNpZnkgdGhlIGZhdGUgb2YgY3JvcFJlc2lkdWUnOiAoKSA9PlxuICAgIGBZb3UgaGF2ZSBub3Qgc3BlY2lmaWVkIHRoZSBmYXRlIG9mIHRoZSBjcm9wIHJlc2lkdWUuXG4gICAgQWRkaW5nIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbXByb3ZlIGVtaXNzaW9ucyBhbmQgc29pbCBjYXJib24gc3RvY2sgY2FsY3VsYXRpb25zLlxuICAgIFRoZSBmYXRlIGNhbiBiZSBhZGRlZCB1c2luZzpcbiAgICA8dWwgY2xhc3M9XCJpcy1wbC0zIGlzLWxpc3Qtc3R5bGUtZGlzYyBpcy1ub3dyYXBcIj5cbiAgICA8bGk+dGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuY3JvcFJlc2lkdWVNYW5hZ2VtZW50KX0gcHJhY3RpY2VzOyBhbmQvb3I8L2xpPlxuICAgIDxsaT50aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS5jcm9wUmVzaWR1ZSl9IHByb2R1Y3RzOzwvbGk+XG4gICAgPC91bD5cbiAgICBSZW1lbWJlciB0byBzZXQgJHtjb2RlKCdjb21wbGV0ZW5lc3MuY3JvcFJlc2lkdWUnKX0gdG8gJHtjb2RlKFxuICAgICAgdHJ1ZVxuICAgICl9IGlmIGJvdGggdGhlIGFib3ZlIGFuZCBiZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIHF1YW50aXRpZXMgYW5kIGZhdGVzIGFyZSBzcGVjaWZpZWQuYCxcbiAgJ3Nob3VsZCBoYXZlIHRoZSBzYW1lIHByaXZhY3kgYXMgdGhlIHJlbGF0ZWQgc291cmNlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRvIGxpbmsgdG8gYSAkeyhwYXJhbXM/LmRlZmF1bHRTb3VyY2UgfHwgcGFyYW1zPy5zb3VyY2UpPy5kYXRhUHJpdmF0ZSA/ICdwcml2YXRlJyA6ICdwdWJsaWMnfSBTb3VyY2UsXG4gICAgdGhpcyBOb2RlIG5lZWRzIHRvIGJlICR7KHBhcmFtcz8uZGVmYXVsdFNvdXJjZSB8fCBwYXJhbXM/LnNvdXJjZSk/LmRhdGFQcml2YXRlID8gJ3ByaXZhdGUnIDogJ3B1YmxpYyd9IGFzIHdlbGwuXG4gICAgUGxlYXNlIHNldCAke2NvZGUoJ2RhdGFQcml2YXRlJyl9PSR7Y29kZShgJHsocGFyYW1zPy5kZWZhdWx0U291cmNlIHx8IHBhcmFtcz8uc291cmNlKT8uZGF0YVByaXZhdGV9YCl9LmAsXG4gICdzaG91bGQgbm90IHVzZSBub3QgcmVsZXZhbnQgbW9kZWwnOiAoKSA9PlxuICAgIGBBbGwgZW1pc3Npb25zIHNob3VsZCBnZW5lcmFsbHkgaGF2ZSBhIG1ldGhvZCB0aWVyLCB3aGljaCBzdGF0ZXMgaG93IHRoZSBkYXRhIHdlcmUgbW9kZWxsZWQgb3IgaG93IHRoZSBkYXRhIHdlcmUgY29sbGVjdGVkLlxuICAgIFBsZWFzZSBzZWUgdGhlICR7c2NoZW1hTGluayhcbiAgICAgICdFbWlzc2lvbiNtZXRob2RUaWVyJyxcbiAgICAgICdzY2hlbWEnXG4gICAgKX0gZm9yIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBhbmQgZGVmaW5pdGlvbnMgb2YgdGhlIG9wdGlvbnMuYCxcbiAgJ3Nob3VsZCBub3QgdXNlIG5vdCByZWxldmFudCBtZXRob2RUaWVyJzogKCkgPT5cbiAgICBgQWxsIGVtaXNzaW9ucyBzaG91bGQgZ2VuZXJhbGx5IGhhdmUgYSBtZXRob2QgdGllciwgd2hpY2ggc3RhdGVzIGhvdyB0aGUgZGF0YSB3ZXJlIG1vZGVsbGVkIG9yIGhvdyB0aGUgZGF0YSB3ZXJlIGNvbGxlY3RlZC5cbiAgICBQbGVhc2Ugc2VlIHRoZSAke3NjaGVtYUxpbmsoXG4gICAgICAnRW1pc3Npb24jbWV0aG9kVGllcicsXG4gICAgICAnc2NoZW1hJ1xuICAgICl9IGZvciB0aGUgb3B0aW9ucyBhdmFpbGFibGUgYW5kIGRlZmluaXRpb25zIG9mIHRoZSBvcHRpb25zLmAsXG4gICdtdXN0IGhhdmUgaW5wdXRzIHJlcHJlc2VudGluZyB0aGUgZm9yYWdlIHdoZW4gc2V0IHRvIHRydWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhpcyBDeWNsZSBpbmNsdWRlcyBhbmltYWxzICR7cGFyYW1zPy5zaXRlVHlwZSA/IGBvbiAke3BhcmFtcy5zaXRlVHlwZX1gIDogJyd9IGFuZCBjb21wbGV0ZW5lc3MgaXMgc2V0IHRvICR7Y29kZShcbiAgICAgIHRydWVcbiAgICApfSBmb3IgJHtjb2RlKCdhbmltYWxGZWVkJyl9LlxuICAgIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBJbnB1dHMgcmVwcmVzZW50aW5nIHRoZSBmb3JhZ2UgaW50YWtlIGJ5IGFuaW1hbHMgaW4gdGhlIEN5Y2xlIChJbnB1dHMgd2l0aCB0ZXJtcyB3aGljaCBjb250YWluIHRoZSB3b3JkcyBcImZyZXNoIGZvcmFnZVwiIGFuZCBhICR7Y29kZShcbiAgICAgICd2YWx1ZSdcbiAgICApfSkuXG4gICAgRWl0aGVyLCBzZXQgY29tcGxldGVuZXNzIHRvICR7Y29kZShmYWxzZSl9IGZvciAke2NvZGUoXG4gICAgICAnYW5pbWFsRmVlZCdcbiAgICApfSwgbWFrZSBzdXJlIGFsbCBcImZyZXNoIGZvcmFnZVwiIElucHV0cyBoYXZlIGEgJHtjb2RlKFxuICAgICAgJ3ZhbHVlJ1xuICAgICl9LCBvciBhZGQgb25lIG9yIG1vcmUgSW5wdXRzIHJlcHJlc2VudGluZyB0aGUgZm9yYWdlIGludGFrZS5gLFxuICAnbXVzdCBzcGVjaWZ5IGlzIGl0IGFuIGFuaW1hbCBmZWVkJzogKCkgPT5cbiAgICBgVGhpcyBDeWNsZSBpcyBhbiBhbmltYWwgcHJvZHVjdGlvbiBDeWNsZSBhbmQgdGhpcyBJbnB1dCBjb3VsZCBiZSBhbiBhbmltYWwgZmVlZCBvciBjb3VsZCBiZSBmb3IgYW5vdGhlciB1c2UuXG4gICAgUGxlYXNlIHNwZWNpZnkgdGhlICR7c2NoZW1hTGluaygnSW5wdXQjaXNBbmltYWxGZWVkJywgJ2lzQW5pbWFsRmVlZCcpfSBmaWVsZCBvbiB0aGlzIElucHV0LlxuICAgIEtub3dpbmcgdGhlIGZhdGUgaXMgZXNzZW50aWFsIHRvIGRpc3Rpbmd1aXNoIElucHV0cyBiZXR3ZWVuIHRob3NlIHdoaWNoIGFyZSBmZWQgdG8gYW5pbWFscyBhbmQgdGhvc2Ugd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLmAsXG4gICdzaG91bGQgc3BlY2lmeSBhIHRyZWF0bWVudCB3aGVuIGV4cGVyaW1lbnREZXNpZ24gaXMgc3BlY2lmaWVkJzogKCkgPT5cbiAgICBgWW91IGhhdmUgc3BlY2lmaWVkIHRoYXQgdGhpcyBTb3VyY2UgdXNlcyBhbiBleHBlcmltZW50YWwgZGVzaWduLCBidXQgaGF2ZSBub3Qgc3BlY2lmaWVkIHRoZSB0cmVhdG1lbnQgZm9yIHRoaXMgQ3ljbGUuXG4gICAgQWRkaW5nIHRoZSB0cmVhdG1lbnQgcHJvdmlkZXMgaW1wb3J0YW50IG1ldGEtZGF0YSBhbmQgd2lsbCBlbmFibGUgZ3JlYXRlciByZS11c2Ugb2YgdGhlc2UgZGF0YS5cbiAgICBBZGQgdGhlICR7c2NoZW1hTGluaygnQ3ljbGUjdHJlYXRtZW50JywgJ3RyZWF0bWVudCcpfSBmaWVsZCB0byB0aGUgQ3ljbGUuXG4gICAgTm90ZSB0aGF0IHRoZSBmaWVsZCAke3NjaGVtYUxpbmsoXG4gICAgICAnQ3ljbGUjY29tbWVyY2lhbFByYWN0aWNlVHJlYXRtZW50JyxcbiAgICAgICdjb21tZXJjaWFsUHJhY3RpY2VUcmVhdG1lbnQnXG4gICAgKX0gYmVjb21lcyByZXF1aXJlZCBpZiB0cmVhdG1lbnQgaXMgc3BlY2lmaWVkLmAsXG4gICdzaG91bGQgbm90IHNwZWNpZnkgYm90aCBsaXZlQW5pbWFsIGFuZCBhbmltYWxQcm9kdWN0JzogKCkgPT5cbiAgICBgWW91IGhhdmUgYWRkZWQgYm90aCBhICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUubGl2ZUFuaW1hbCl9IGFuZCAke2dsb3NzYXJ5VHlwZUxpbmsoXG4gICAgICBUZXJtVGVybVR5cGUuYW5pbWFsUHJvZHVjdFxuICAgICl9IHRlcm0gYXMgUHJvZHVjdHMuXG4gICAgSWYgdGhlc2UgdGVybXMgcmVmZXIgdG8gdGhlIHNhbWUgYW5pbWFscywgdGhpcyB3aWxsIGxlYWQgdG8gZG91YmxlIGNvdW50aW5nOlxuICAgIGluc3RlYWQgdXNlIGEgUHJvcGVydHkgb24gdGhlICR7Z2xvc3NhcnlUeXBlTGluayhcbiAgICAgIFRlcm1UZXJtVHlwZS5saXZlQW5pbWFsXG4gICAgKX0gdGVybSB0byBkZWZpbmUgdGhlIHF1YW50aXR5IG9mIGxpdmV3ZWlnaHQgcGVyIGhlYWQsIGNhcmNhc3Mgd2VpZ2h0IHBlciBoZWFkLCBldGMuYCxcbiAgJ211c3QgYWRkIGFuIGV4Y3JldGEgcHJvZHVjdCB3aXRoIGEgbGl2ZUFuaW1hbCBwcm9kdWN0JzogKCkgPT5cbiAgICBgQW5pbWFsIHByb2R1Y3Rpb24gQ3ljbGVzIGNyZWF0ZSBleGNyZXRhLlxuICAgIFRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lICR7Y29kZShUZXJtVGVybVR5cGUuZXhjcmV0YSl9IHByb2R1Y3QgaW4gdGhpcyBDeWNsZS5cbiAgICBQbGVhc2UgYWRkIGFuICR7Y29kZShUZXJtVGVybVR5cGUuZXhjcmV0YSl9IFByb2R1Y3QgdG8gdGhlIEN5Y2xlLlxuICAgIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgYSAke2NvZGUoJ3ZhbHVlJyl9IGZvciB0aGUgUHJvZHVjdCwgYnV0IGFkZGluZyBhICR7Y29kZSgndmFsdWUnKX0gaXMgZGVzaXJhYmxlLmAsXG4gICd2YWx1ZSBzaG91bGQgc3VtIHRvIDEwMCBvciBsZXNzIGFjcm9zcyB3YXRlciByZWdpbWUgcHJhY3RpY2VzJzogKCkgPT5cbiAgICBgVGhlIHRvdGFsICUgYXJlYSBjb3ZlcmVkIGJ5IHRoZSAke2NvZGUoVGVybVRlcm1UeXBlLndhdGVyUmVnaW1lKX0gcHJhY3RpY2VzIHlvdSBzcGVjaWZpZWQgaXMgbm90IGVxdWFsIHRvICR7Y29kZShcbiAgICAgIDEwMFxuICAgICl9LlxuICAgIE1ha2Ugc3VyZSB0byBhZGQgYW55IG1pc3NpbmcgcHJhY3RpY2UgaWYgbmVlZGVkIGFuZC9vciBhZGp1c3QgdGhlIHZhbHVlcyBvZiB0aGUgJHtjb2RlKFxuICAgICAgVGVybVRlcm1UeXBlLndhdGVyUmVnaW1lXG4gICAgKX0gcHJhY3RpY2VzIHlvdSBhbHJlYWR5IHJlY29yZGVkLmAsXG4gICdyaWNlIHByb2R1Y3RzIG5vdCBhbGxvd2VkIGZvciB0aGlzIHdhdGVyIHJlZ2ltZSBwcmFjdGljZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBUaGlzIHByYWN0aWNlIGlzIG5vdCBhbGxvd2VkIHdpdGggdGhlIHByb2R1Y3RzICR7cGFyYW1zLnByb2R1Y3RzPy5tYXAocCA9PiBjb2RlKHAubmFtZSB8fCBwWydAaWQnXSkpfS5cbiAgICBSZWNvcmRpbmcgdGhlIHJpZ2h0IHdhdGVyIHJlZ2ltZSBmb3IgcmljZSBlbnN1cmVzIG1ldGhhbmUgZW1pc3Npb25zIGZyb20gZmxvb2RlZCBmaWVsZHMgYXJlIGNvcnJlY3RseSByZWNhbGN1bGF0ZWQuXG4gICAgVG8gZml4IHRoaXMgZXJyb3IsIGVpdGhlciBjaGFuZ2UgdGhlIHByYWN0aWNlIG9yIHRoZSBwcm9kdWN0cy5gLFxuICAnbXVzdCBub3QgYmUgZXF1YWwgdG8gMSBoYSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGAke2NvZGUoQ3ljbGVGdW5jdGlvbmFsVW5pdFsnMSBoYSddKX0gY2Fubm90IGJlIHVzZWQgYXMgJHtzY2hlbWFMaW5rKFxuICAgICAgJ0N5Y2xlI2Z1bmN0aW9uYWxVbml0JyxcbiAgICAgICdmdW5jdGlvbmFsVW5pdCdcbiAgICApfSBmb3IgQ3ljbGVzIGxpbmtlZCB0byBTaXRlcyB3aXRoICR7c2NoZW1hTGluaygnU2l0ZSNzaXRlVHlwZScsICdzaXRlVHlwZScpfSA9ICR7Y29kZShwYXJhbXM/LnNpdGVUeXBlKX0uXG4gICAgRWl0aGVyIGNoYW5nZSB0aGUgJHtzY2hlbWFMaW5rKCdDeWNsZSNmdW5jdGlvbmFsVW5pdCcsICdmdW5jdGlvbmFsVW5pdCcpfSB0byAke2NvZGUoXG4gICAgICBDeWNsZUZ1bmN0aW9uYWxVbml0LnJlbGF0aXZlXG4gICAgKX0gb3IgY2hhbmdlIHRoZSAke3NjaGVtYUxpbmsoJ1NpdGUjc2l0ZVR5cGUnLCAnc2l0ZVR5cGUnKX0uYCxcbiAgJ3Nob3VsZCBzcGVjaWZ5IGEgdmFsdWUgd2hlbiBIZXN0aWEgaGFzIGEgZGVmYXVsdCBvbmUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgQXMgeW91IGhhdmUgbm90IHNwZWNpZmllZCBhICR7Y29kZSgndmFsdWUnKX0sIHdlIHdpbGwgYXNzdW1lIHRoZSB2YWx1ZSBpcyAke2NvZGUocGFyYW1zPy5leHBlY3RlZCl9LlxuICAgIElmIHRoaXMgaXMgaW5jb3JyZWN0LCBwZWxhc2UgYWRkIGEgdmFsdWUuYCxcbiAgJ3Nob3VsZCBjb250YWluIGF0IGxlYXN0IG9uZSBtYW5hZ2VtZW50IG5vZGUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgJHtcbiAgICAgIHBhcmFtcz8udGVybVR5cGVcbiAgICAgICAgPyBgRG9lcyBub3QgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCAke2NvZGUocGFyYW1zLnRlcm1UeXBlKX0uXG4gICAgICAgIFBsZWFzZSBjb25zaWRlciBhZGRpbmcgYSBoaXN0b3J5IG9mICR7Y29kZShcbiAgICAgICAgICBwYXJhbXMudGVybVR5cGVcbiAgICAgICAgKX0gZm9yIGFzIG1hbnkgeWVhcnMgYXMgcG9zc2libGUgaW4gdGhlIE1hbmFnZW1lbnQgQmxhbmsgTm9kZXMuYFxuICAgICAgICA6IGBUaGVyZSBpcyBubyBNYW5hZ2VtZW50IG5vZGUgcHJlc2VudCBpbiB0aGlzIHVwbG9hZC5cbiAgICAgICAgV2UgcmVjb21tZW5kIGFkZGluZyB0aGlzIHRvIHRoZSBTaXRlLCBpbmNsdWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBhbmQgaGlzdG9yaWNhbCB0aWxsYWdlLlxuICAgICAgICBgXG4gICAgfVxuICAgIFdlIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIG1vZGVsIENPMiBlbWlzc2lvbnMgZnJvbSBzb2lsIG9yZ2FuaWMgY2FyYm9uIGNoYW5nZXMuYCxcbiAgJ2NhbiBub3QgYmUgdXNlZCBvbiB0aGlzIHRlcm1UeXBlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoaXMgUHJvcGVydHkgY2FuIG9ubHkgYmUgdXNlZCBvbiBCbGFuayBOb2RlcyB3aXRoIHRoZSBmb2xsb3dpbmcgJHtjb2RlKCd0ZXJtLnRlcm1UeXBlJyl9OiAke3BhcmFtcy5leHBlY3RlZFxuICAgICAgLm1hcChjb2RlKVxuICAgICAgLmpvaW4oJywgJyl9LmAsXG4gICdub3QgYSB2YWxpZCBHZW9KU09OJzogKCkgPT4gYFRoaXMgR2VvSlNPTiBhcHBlYXJzIHRvIGJlIGludmFsaWQuXG4gIFBsZWFzZSB2YWxpZGF0ZSB5b3VyIEdlb0pTT04gdXNpbmcgYW4gb25saW5lIHRvb2wgbGlrZSA8YSBocmVmPVwiaHR0cHM6Ly9nZW9qc29uLmlvL1wiPmdlb2pzb24uaW88L2E+LlxuICBJZiB5b3UgdGhpbmsgdGhpcyBpcyBhIG1pc3Rha2UsIHBsZWFzZSByZXBvcnQgdGhlIGVycm9yICR7cmVwb3J0SXNzdWVMaW5rKFJlcG9zaXRvcnkuc2NoZW1hLCBUZW1wbGF0ZS5idWcpfS5gXG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VzdG9tRXJyb3JNZXNzYWdlID0gKFxuICBtZXNzYWdlPzogc3RyaW5nLFxuICBlcnJvcj86IElWYWxpZGF0aW9uRXJyb3IsXG4gIGFsbEVycm9yczogSVZhbGlkYXRpb25FcnJvcltdID0gW11cbikgPT4ge1xuICBjb25zdCBmb3JtYXR0ZWRNZXNzYWdlID1cbiAgICBtZXNzYWdlICYmIG1lc3NhZ2UgaW4gY3VzdG9tRXJyb3JNZXNzYWdlXG4gICAgICA/IGN1c3RvbUVycm9yTWVzc2FnZVttZXNzYWdlXShlcnJvciEsIGFsbEVycm9ycy5sZW5ndGgsIGFsbEVycm9ycylcbiAgICAgIDogbWVzc2FnZTtcbiAgcmV0dXJuIGZvcm1hdHRlZE1lc3NhZ2UgPyBgPHAgY2xhc3M9XCJpcy1ub3JtYWxcIj4ke2Zvcm1hdHRlZE1lc3NhZ2V9PC9wPmAgOiAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRFcnJvciA9IChcbiAgZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yLFxuICBhbGxFcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSA9IFtdXG4pOiBJVmFsaWRhdGlvbkVycm9yIHwgdW5kZWZpbmVkID0+XG4gIGVycm9yXG4gICAgPyB7XG4gICAgICAgIGxldmVsOiAnZXJyb3InLFxuICAgICAgICAuLi5lcnJvcixcbiAgICAgICAgbWFwRXJyb3I6IGVycm9yLm1lc3NhZ2UgPT09IG1hcEVycm9yTWVzc2FnZSxcbiAgICAgICAgbWVzc2FnZTogZm9ybWF0Q3VzdG9tRXJyb3JNZXNzYWdlKGVycm9yLm1lc3NhZ2UsIGVycm9yLCBhbGxFcnJvcnMpXG4gICAgICB9XG4gICAgOiB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjb25zdCBlcnJvckhhc0Vycm9yID0gKGVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT4gZXJyb3IgJiYgKGVycm9yLmxldmVsID09PSAnZXJyb3InIHx8ICFlcnJvci5sZXZlbCk7XG5cbmV4cG9ydCBjb25zdCBlcnJvckhhc1dhcm5pbmcgPSAoZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yKSA9PiBlcnJvciAmJiBlcnJvci5sZXZlbCA9PT0gJ3dhcm5pbmcnO1xuXG5leHBvcnQgY29uc3QgaXNNaXNzaW5nUHJvcGVydHlFcnJvciA9ICh7IHBhcmFtcyB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PiAhIXBhcmFtcyAmJiAnbWlzc2luZ1Byb3BlcnR5JyBpbiBwYXJhbXM7XG5cbmV4cG9ydCBjb25zdCBpc01pc3NpbmdPbmVPZkVycm9yID0gKHsga2V5d29yZCwgc2NoZW1hUGF0aCB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PlxuICBrZXl3b3JkID09PSAncmVxdWlyZWQnICYmIChzY2hlbWFQYXRoIHx8ICcnKS5pbmNsdWRlcygnb25lT2YnKTtcblxuY29uc3QgaXNGYWlsaW5nS2V5d29yZEVycm9yID0gKHsgcGFyYW1zIH06IElWYWxpZGF0aW9uRXJyb3IpID0+ICEhcGFyYW1zICYmICdmYWlsaW5nS2V5d29yZCcgaW4gcGFyYW1zO1xuXG5leHBvcnQgY29uc3QgZmlsdGVyRXJyb3IgPSAoZXJyb3I6IElWYWxpZGF0aW9uRXJyb3IpID0+IFtpc0ZhaWxpbmdLZXl3b3JkRXJyb3JdLmV2ZXJ5KGZ1bmMgPT4gIWZ1bmMoZXJyb3IpKTtcblxuZXhwb3J0IGNvbnN0IG1pc3NpbmdOb2RlRXJyb3JzID0gKGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdKSA9PlxuICBlcnJvcnMuZmlsdGVyKFxuICAgICh7IGtleXdvcmQsIHBhcmFtcyB9KSA9PlxuICAgICAga2V5d29yZCA9PT0gJ3JlcXVpcmVkJyAmJiAocGFyYW1zPy5taXNzaW5nUHJvcGVydHkgPT09ICdAdHlwZScgfHwgcGFyYW1zPy5taXNzaW5nUHJvcGVydHkgPT09ICdAaWQnKVxuICApO1xuIl19
|
|
370
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixzQ0FBc0M7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQVEsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE9BQU8sRUFDUCxJQUFJLEVBQ0osYUFBYSxFQUNiLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLGVBQWUsRUFDZixVQUFVLEVBQ1gsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUEyRGhELE1BQU0sZUFBZSxHQUFHLHlDQUF5QyxDQUFDO0FBVWxFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQWUsRUFBRTtJQUMxRCxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsUUFBUTtTQUMzQixPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1NBQzlCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO1NBQzVCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsSUFBSSxFQUFFLElB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Q0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRTVHLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBMEIsRUFBRSxFQUFFLENBQzlELE1BQU0sQ0FBQyxNQUFNLENBQ1gsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQ3RCLE9BQU8sS0FBSyxVQUFVLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxLQUFLLE9BQU8sSUFBSSxNQUFNLEVBQUUsZUFBZSxLQUFLLEtBQUssQ0FBQyxDQUN2RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdXNlbGVzcy1lc2NhcGUgKi9cbmltcG9ydCB7IEN5Y2xlRnVuY3Rpb25hbFVuaXQsIE5vZGVUeXBlLCBTY2hlbWFUeXBlLCBUZXJtLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB0b1ByZWNpc2lvbiwga2V5VG9MYWJlbCwgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmltcG9ydCB7IHRlcm1UeXBlTGFiZWwgfSBmcm9tICcuLi90ZXJtcy90ZXJtcy5tb2RlbCc7XG5pbXBvcnQgeyBwYXRoVG9BcGlEb2NzUGF0aCB9IGZyb20gJy4uL2VuZ2luZS9lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQge1xuICBSZXBvc2l0b3J5LFxuICBUZW1wbGF0ZSxcbiAgYmFzZVVybCxcbiAgY29kZSxcbiAgY29udGFjdFVzTGluayxcbiAgZXh0ZXJuYWxMaW5rLFxuICBnbG9zc2FyeUxpbmssXG4gIG5vZGVMaW5rLFxuICByZXBvcnRJc3N1ZUxpbmssXG4gIHNjaGVtYUxpbmtcbn0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IHBsdXJhbGl6ZSB9IGZyb20gJy4uL2NvbW1vbi9wbHVyYWxpemUnO1xuXG4vLyBUT0RPOiBhZGQgbW9yZSB2YWxpZGF0aW9uIGtleXdvcmQgYW5kIHBhcmFtc1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yTGV2ZWwgPSAnZXJyb3InIHwgJ3dhcm5pbmcnO1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yUGFyYW0gPVxuICB8ICdtaXNzaW5nUHJvcGVydHknXG4gIHwgJ3R5cGUnXG4gIHwgJ3Rlcm0nXG4gIHwgJ3Rlcm1UeXBlJ1xuICB8ICdtb2RlbCdcbiAgfCAncHJvZHVjdCdcbiAgfCAncmFuZ2UnXG4gIHwgJ25vZGUnXG4gIHwgJ2FsbG93ZWRWYWx1ZXMnXG4gIHwgJ2FsbG93ZWRWYWx1ZSdcbiAgfCAnYWRkaXRpb25hbFByb3BlcnR5J1xuICB8ICdleHBlY3RlZCdcbiAgfCAnZGVmYXVsdCdcbiAgfCAnY3VycmVudCdcbiAgfCAncGVyY2VudGFnZSdcbiAgfCAna2V5cydcbiAgfCAndGhyZXNob2xkJ1xuICB8ICdvdXRsaWVycydcbiAgfCAnY291bnRyeSdcbiAgfCAnbWluJ1xuICB8ICdtYXgnXG4gIHwgJ2RlZmF1bHRTb3VyY2UnXG4gIHwgJ3NvdXJjZSdcbiAgfCAnZ3JvdXAnXG4gIHwgJ21lc3NhZ2UnXG4gIHwgJ2Rpc3RhbmNlJ1xuICB8ICdzaXRlVHlwZSdcbiAgfCAncHJvZHVjdHMnXG4gIHwgJ3VuaXRzJ1xuICB8ICdkdXBsaWNhdGVkSW5kZXhlcyc7XG5leHBvcnQgdHlwZSB2YWxpZGF0aW9uRXJyb3JLZXl3b3JkID0gJ3JlcXVpcmVkJyB8ICd0eXBlJyB8ICdpZicgfCAndGhlbicgfCAnbm90JztcblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbkVycm9yIHtcbiAgaW5kZXg/OiBudW1iZXI7XG4gIG5vZGVJbmRleD86IG51bWJlcjtcbiAgbGV2ZWw/OiB2YWxpZGF0aW9uRXJyb3JMZXZlbDtcbiAgZGF0YVBhdGg/OiBzdHJpbmc7XG4gIHNjaGVtYVBhdGg/OiBzdHJpbmc7XG4gIGtleXdvcmQ/OiB2YWxpZGF0aW9uRXJyb3JLZXl3b3JkO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBhcmFtcz86IHsgW2tleSBpbiB2YWxpZGF0aW9uRXJyb3JQYXJhbV0/OiBhbnkgfTtcbiAgbWFwRXJyb3I/OiBib29sZWFuO1xuICBzY2hlbWE/OiBhbnk7XG4gIHBhcmVudFNjaGVtYT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbkVycm9yV2l0aEluZGV4IHtcbiAgZXJyb3I6IElWYWxpZGF0aW9uRXJyb3JbXTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgY2hhbmdlZD86IGJvb2xlYW47XG59XG5cbnR5cGUgaGFuZGxlRXJyb3JGdW5jID0gKGVycm9yOiBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckNvdW50PzogbnVtYmVyLCBhbGxFcnJvcnM/OiBJVmFsaWRhdGlvbkVycm9yW10pID0+IHN0cmluZztcblxuY29uc3QgbWFwRXJyb3JNZXNzYWdlID0gJ2RvZXMgbm90IGNvbnRhaW4gbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSc7XG5cbmludGVyZmFjZSBJRGF0YVBhdGgge1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIdW1hbiByZWFkYWJsZSB2ZXJzaW9uIG9mIHRoZSBwYXRoLlxuICAgKi9cbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlRGF0YVBhdGggPSAoZGF0YVBhdGggPSAnJyk6IElEYXRhUGF0aFtdID0+IHtcbiAgY29uc3QgW18sIC4uLnBhdGhzXSA9IGRhdGFQYXRoXG4gICAgLnJlcGxhY2UoL1tcXFtcXF1cXCdcXCdcXFwiXFxcIl0vZywgJycpXG4gICAgLnJlcGxhY2UoLyhcXHcpKFxcQCkvZywgJyQxLkAnKVxuICAgIC5zcGxpdCgnLicpO1xuICByZXR1cm4gcGF0aHMubWFwKHBhdGggPT4gKHtcbiAgICBwYXRoOiBwYXRoLnJlcGxhY2UoLyhcXGQrKS9nLCAnWyQxXScpLFxuICAgIGxhYmVsOiBwbHVyYWxpemUoa2V5VG9MYWJlbChwYXRoLnJlcGxhY2UoL1tcXGRcXEBdKy9nLCAnJykpLCAxKVxuICB9KSk7XG59O1xuXG5jb25zdCBhbGxvd2VkRGF0YVBhdGhzTGFiZWxzID0gT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKTtcbi8vIFRPRE86IHNlZSBpZiB3ZSB3YW50IHRvIGlnbm9yZSBUZXJtIGxhYmVsIGFuZCBzaG93IHRoZSBibGFuayBub2RlIGluc3RlYWRcbi8vIGNvbnN0IGFsbG93ZWREYXRhUGF0aHNMYWJlbHMgPSBPYmplY3QudmFsdWVzKFNjaGVtYVR5cGUpLmZpbHRlcih2ID0+ICFbU2NoZW1hVHlwZS5UZXJtXS5pbmNsdWRlcyh2KSk7XG5cbmV4cG9ydCBjb25zdCBkYXRhUGF0aExhYmVsID0gKGRhdGFQYXRoID0gJycpID0+XG4gIHBhcnNlRGF0YVBhdGgoZGF0YVBhdGgpXG4gICAgLmZpbHRlcigoeyBsYWJlbCB9KSA9PiBhbGxvd2VkRGF0YVBhdGhzTGFiZWxzLmluY2x1ZGVzKGxhYmVsIGFzIFNjaGVtYVR5cGUpKVxuICAgIC5wb3AoKT8ubGFiZWw7XG5cbmNvbnN0IGdsb3NzYXJ5VHlwZUxpbmsgPSAodHlwZTogVGVybVRlcm1UeXBlLCB0ZXh0ID0gdGVybVR5cGVMYWJlbCh0eXBlKSkgPT5cbiAgZXh0ZXJuYWxMaW5rKGAke2Jhc2VVcmwoKX0vZ2xvc3Nhcnk/dGVybVR5cGU9JHt0eXBlfWAsIHRleHQpO1xuY29uc3QgdGVybUxpbmsgPSAoeyBpZCwgbmFtZSB9OiBQYXJ0aWFsPFRlcm0+KSA9PiBleHRlcm5hbExpbmsoYCR7YmFzZVVybCgpfS90ZXJtLyR7aWR9YCwgbmFtZSB8fCBpZCk7XG5jb25zdCBkYXRlRm9ybWF0TWVzc2FnZSA9IGBzaG91bGQgZm9sbG93IHRoZSBJU08gODYwMSBkYXRlIGZvcm1hdCwgZS5nLiAke2NvZGUoMjAwMCl9LCBvciAke2NvZGUoJzIwMDAtMTInKX0sIG9yICR7Y29kZShcbiAgJzIwMDAtMTItMzAnXG4pfWA7XG5jb25zdCBtb2RlbExpbmsgPSAodGVybTogVGVybSwgbW9kZWw6IFRlcm0pID0+IGBcbiAgPGEgaHJlZj1cIiR7cGF0aFRvQXBpRG9jc1BhdGgobW9kZWxbJ0BpZCddLCB0ZXJtWydAaWQnXSl9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+JHttb2RlbC5uYW1lfTwvc3Bhbj5cbiAgICA8c3Bhbj4oVmlldyBEb2NzKTwvc3Bhbj5cbiAgPC9hPlxuYDtcbmNvbnN0IHRocmVzaG9sZCA9ICh2YWx1ZTogbnVtYmVyKSA9PiBjb2RlKGAke3ZhbHVlICogMTAwfSVgKTtcblxuY29uc3Qgbm9UaWxsYWdlOiBQYXJ0aWFsPFRlcm0+ID0geyBpZDogJ25vVGlsbGFnZScsIG5hbWU6ICdObyB0aWxsYWdlJyB9O1xuY29uc3QgcGFzdHVyZUdyYXNzOiBQYXJ0aWFsPFRlcm0+ID0geyBpZDogJ3Bhc3R1cmVHcmFzcycsIG5hbWU6ICdQYXN0dXJlIGdyYXNzJyB9O1xuXG5jb25zdCBpZE5vdEZvdW5kRGVmYXVsdE1lc3NhZ2UgPSBgXG4gIElmIHlvdSBhcmUgdXNpbmcgdGhlICR7Y29kZSgnbmFtZScpfSBvZiB0aGUgVGVybSwgbWFrZSBzdXJlIHRvIHVzZSAke2NvZGUoJ3Rlcm0ubmFtZScpfSBjb2x1bW47XG4gIGlmIHlvdSBhcmUgdXNpbmcgdGhlICR7Y29kZSgnQGlkJyl9IG9mIHRoZSBUZXJtLCB1c2UgdGhlICR7Y29kZSgndGVybS5AaWQnKX0gY29sdW1uIGluc3RlYWQuXG5gLnRyaW0oKTtcblxuZXhwb3J0IGNvbnN0IGlzTWlncmF0aW9uRXJyb3IgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT4gcGFyYW1zPy5jdXJyZW50ICYmICdleHBlY3RlZCcgaW4gcGFyYW1zO1xuXG5leHBvcnQgY29uc3QgbWlncmF0aW9uRXJyb3JNZXNzYWdlID0gKHsgcGFyYW1zIH06IElWYWxpZGF0aW9uRXJyb3IpID0+XG4gIHBhcmFtcz8uZXhwZWN0ZWRcbiAgICA/IGBUaGUgVGVybSAke2NvZGUocGFyYW1zLmN1cnJlbnQpfSB3YXMgdXBkYXRlZCwgcGxlYXNlIHVzZSB0aGlzIFRlcm0gaW5zdGVhZDogJHtjb2RlKHBhcmFtcy5leHBlY3RlZCl9LmBcbiAgICA6IGBUaGUgVGVybSAke2NvZGUocGFyYW1zLmN1cnJlbnQpfSB3YXMgZGVsZXRlZC4gUGxlYXNlIHNlYXJjaCB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5Jyl9IGZvciBhIG5ldyBUZXJtLmA7XG5cbmNvbnN0IGlkTm90Rm91bmRFcnJvcjogaGFuZGxlRXJyb3JGdW5jID0gKF9lcnJvciwgX2Vycm9yQ291bnQsIGFsbEVycm9ycykgPT4ge1xuICBjb25zdCBtaWdyYXRpb25FcnJvcnMgPSBhbGxFcnJvcnMuZmlsdGVyKGlzTWlncmF0aW9uRXJyb3IpO1xuICBjb25zdCBub01pZ3JhdGlvbkVycm9ycyA9IGFsbEVycm9ycy5maWx0ZXIoZXJyb3IgPT4gIWlzTWlncmF0aW9uRXJyb3IoZXJyb3IpKTtcbiAgcmV0dXJuIGBcbiAgICA8cD5Eb2VzIG5vdCBleGlzdCBpbiBIZXN0aWEuPC9wPlxuICAgICR7bm9NaWdyYXRpb25FcnJvcnMubGVuZ3RoID8gYDxwPiR7aWROb3RGb3VuZERlZmF1bHRNZXNzYWdlfTwvcD5gIDogJyd9XG4gICAgJHt1bmlxdWUobWlncmF0aW9uRXJyb3JzLm1hcChtaWdyYXRpb25FcnJvck1lc3NhZ2UpKS5qb2luKCc8L2JyPicpfVxuICBgO1xufTtcblxuLy8gc2V0IG1lc3NhZ2UgYXMgZW1wdHkgdG8gbm90IGRpc3BsYXkgaXRcbmNvbnN0IGN1c3RvbUVycm9yTWVzc2FnZToge1xuICBba2V5OiBzdHJpbmddOiBoYW5kbGVFcnJvckZ1bmM7XG59ID0ge1xuICBcInNob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5ICdAaWQnXCI6IGlkTm90Rm91bmRFcnJvcixcbiAgXCJzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSAnQHR5cGUnXCI6ICgpID0+ICcnLFxuICBcInNob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5ICdpZCdcIjogaWROb3RGb3VuZEVycm9yLFxuICAnc2hvdWxkIG1hdGNoIGV4YWN0bHkgb25lIHNjaGVtYSBpbiBvbmVPZic6ICgpID0+ICcnLFxuICAnc2hvdWxkIG1hdGNoIHNvbWUgc2NoZW1hIGluIGFueU9mJzogKCkgPT4gJycsXG4gICdzaG91bGQgbWF0Y2ggXCJ0aGVuXCIgc2NoZW1hJzogKCkgPT4gJycsXG4gICdzaG91bGQgTk9UIGhhdmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgPyBgVGhlIGZvbGxvd2luZyBmaWVsZCBkb2VzIG5vdCBleGlzdDogJHtwYXJhbXM/LmFkZGl0aW9uYWxQcm9wZXJ0eX0gb3IgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjYXNlLmBcbiAgICAgIDogYFNob3VsZCBub3QgaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMuYCxcbiAgJ3Nob3VsZCBOT1QgYmUgdmFsaWQnOiAoeyBzY2hlbWEgfSkgPT5cbiAgICBzY2hlbWE/LnJlcXVpcmVkPy5pbmNsdWRlcygnYXJlYVBlcmNlbnQnKVxuICAgICAgPyBgSWYgdGhlIHRlcm0gdW5pdHMgaXMgYWxyZWFkeSBpbiAke2NvZGUoJyUgYXJlYScpfSwganVzdCB1c2UgJHtjb2RlKCd2YWx1ZScpfS4gRG9udCB1c2UgJHtjb2RlKCdhcmVhUGVyY2VudCcpfS5gXG4gICAgICA6IHNjaGVtYT8ucmVxdWlyZWQ/LmluY2x1ZGVzKCd0cmFuc2Zvcm1hdGlvbicpXG4gICAgICA/ICdBIHRyYW5zZm9ybWF0aW9uIGNhbiBub3QgYmUgYWRkZWQgaGVyZS4nXG4gICAgICA6ICdTaG91bGQgbm90IGJlIHVzZWQgaW4gdGhpcyBjYXNlLicsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl5cXFxcZHsxM30kXCInOiAoKSA9PiBgc2hvdWxkIGJlIGNvbXBvc2VkIG9mIDEzIG51bWJlcnNgLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeWzAtOV17NH0oLVswLTldezJ9KT8oLVswLTldezJ9KT8kXCInOiAoKSA9PiBkYXRlRm9ybWF0TWVzc2FnZSxcbiAgJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiXihbMC05XXs0fXwtKSgtWzAtOV17Mn0pPygtWzAtOV17Mn0pPyRcIic6ICgpID0+IGRhdGVGb3JtYXRNZXNzYWdlLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeKFswLTldezR9fC0pKC1bMC05XXsyfSk/KC1bMC05XXsyfSk/KFtUXVswLTJdWzAtOV06WzAtNV1bMC05XTpbMC01XVswLTldKCgrfC0pWzAtMV1bMC05XTpbMC01XVswLTldKT8pPyRcIic6XG4gICAgKCkgPT4gZGF0ZUZvcm1hdE1lc3NhZ2UsXG4gICdzaG91bGQgYmUgbGlua2VkIHRvIGFuIGV4aXN0aW5nIG5vZGUnOiAoZXJyb3IsIF9lcnJvckNvdW50LCBhbGxFcnJvcnMpID0+XG4gICAgYWxsRXJyb3JzPy5sZW5ndGhcbiAgICAgID8gYFlvdXIgdXBsb2FkIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZvbGxvd2luZyBOb2RlczpcbiAgICAgIDx1bCBjbGFzcz1cImlzLXBsLTMgaXMtbGlzdC1zdHlsZS1kaXNjIGlzLW5vd3JhcFwiPlxuICAgICAgJHt1bmlxdWUoXG4gICAgICAgIGFsbEVycm9ycy5tYXAoKHsgcGFyYW1zIH0pID0+IGA8bGk+JHtwYXJhbXM/Lm5vZGU/LnR5cGV9IHdpdGggJHtjb2RlKGBpZD0ke3BhcmFtcz8ubm9kZT8uaWR9YCl9PC9saT5gKVxuICAgICAgKS5qb2luKCdcXG4nKX1cbiAgICAgIDwvdWw+XG4gICAgICBJZiB5b3UgYXJlIHRyeWluZyB0byBsaW5rIHRvIGFuIGV4aXN0aW5nIE5vZGUgb24gdGhlIEhlc3RpYSBwbGF0Zm9ybSwgeW91IG11c3QgdXNlICR7Y29kZSgnQGlkJyl9IGZpZWxkIGluc3RlYWQuXG4gICAgICBPdGhlcndpc2UgeW91IG11c3QgaW5jbHVkZSBhIGZ1bGwgJHt1bmlxdWUoXG4gICAgICAgIGFsbEVycm9ycy5tYXAoKHsgcGFyYW1zIH0pID0+IGAke3BhcmFtcz8ubm9kZT8udHlwZX0gd2l0aCBpZCAke2NvZGUocGFyYW1zPy5ub2RlPy5pZCl9LmApXG4gICAgICApLmpvaW4oJywgJyl9YFxuICAgICAgOiBgWW91ciB1cGxvYWQgZG9lcyBub3QgY29udGFpbiBhICR7ZXJyb3IucGFyYW1zPy5ub2RlPy50eXBlfSB3aXRoICR7Y29kZShgaWQ9JHtlcnJvci5wYXJhbXM/Lm5vZGU/LmlkfWApfS5cbiAgICAgIElmIHlvdSBhcmUgdHJ5aW5nIHRvIGxpbmsgdG8gYW4gZXhpc3RpbmcgTm9kZSBvbiB0aGUgSGVzdGlhIHBsYXRmb3JtLCB5b3UgbXVzdCB1c2UgJHtjb2RlKCdAaWQnKX0gZmllbGQgaW5zdGVhZC5cbiAgICAgIE90aGVyd2lzZSB5b3UgbXVzdCBpbmNsdWRlIGEgZnVsbCAke2Vycm9yLnBhcmFtcz8ubm9kZT8udHlwZX0gd2l0aCBpZCAke2NvZGUoZXJyb3IucGFyYW1zPy5ub2RlPy5pZCl9LmAsXG4gICdtdXN0IGJlIHdpdGhpbiB0aGUgY291bnRyeSc6ICgpID0+IGBUaGUgY291bnRyeSBwcm92aWRlZCBkb2VzIG5vdCBjb250YWluIHRoZSByZWdpb24gcHJvdmlkZWQuIFBsZWFzZSBjaGVja1xuICB0aGUgY291bnRyeSBmb3IgZXJyb3JzIG9yIHRoZSByZWdpb24gZm9yIGVycm9ycywgYW5kIHJlZmVyZW5jZSB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LmAsXG4gIFttYXBFcnJvck1lc3NhZ2VdOiAoeyBkYXRhUGF0aCwgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgPyBgVGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgcHJvdmlkZWQgYXJlJHtcbiAgICAgICAgICBwYXJhbXM/LmRpc3RhbmNlID8gYCAke3BhcmFtcz8uZGlzdGFuY2V9a21zYCA6ICcnXG4gICAgICAgIH0gb3V0c2lkZSBvZiB0aGUgJHtkYXRhUGF0aC5zdWJzdHJpbmcoMSl9IHByb3ZpZGVkLlxuICAgICAgUGxlYXNlIGNoZWNrIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIGZvciBlcnJvcnMgb3IgY2hlY2sgaWYgdGhlIHdyb25nICR7ZGF0YVBhdGguc3Vic3RyaW5nKFxuICAgICAgICAxXG4gICAgICApfSBmcm9tIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnJlZ2lvbiwgJ0dsb3NzYXJ5Jyl9IHdhcyB1c2VkLlxuICAgICAgJHtcbiAgICAgICAgcGFyYW1zPy5leHBlY3RlZFxuICAgICAgICAgID8gYEhpbnQ6IHRoZSBjb29yZGluYXRlcyBhcHBlYXIgdG8gYmUgbG9jYXRlZCBpbiB0aGUgZm9sbG93aW5nICR7ZGF0YVBhdGguc3Vic3RyaW5nKDEpfTogJHt0ZXJtTGluayh7XG4gICAgICAgICAgICAgIGlkOiAncGFyYW1zLmV4cGVjdGVkJ1xuICAgICAgICAgICAgfSl9YFxuICAgICAgICAgIDogJydcbiAgICAgIH1gXG4gICAgICA6IGBUaGUgcmVnaW9uIHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgcHJvdmlkZWQuXG4gICAgICBQbGVhc2UgY2hlY2sgdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgZm9yIGVycm9ycyBvciB0aGUgcmVnaW9uIGZvciBlcnJvciwgYW5kIHJlZmVyZW5jZSB0aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFxuICAgICAgICBUZXJtVGVybVR5cGUucmVnaW9uLFxuICAgICAgICAnR2xvc3Nhcnkgb2YgVGVybXMnXG4gICAgICApfS5gLFxuICAnc3VtIG5vdCBlcXVhbCB0byAxMDAlIGZvciBzYW5kQ29udGVudCwgc2lsdENvbnRlbnQsIGNsYXlDb250ZW50JzogKCkgPT5cbiAgICBgVGhlIHN1bSBvZiBTYW5kLCBTaWx0LCBhbmQgQ2xheSBjb250ZW50IHNob3VsZCBlcXVhbCAxMDAlIGZvciBlYWNoIHNvaWwgZGVwdGggaW50ZXJ2YWwuYCxcbiAgJ2lzIG91dHNpZGUgdGhlIGFsbG93ZWQgcmFuZ2UnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgICAgPyBwYXJhbXM/LnRlcm1cbiAgICAgICAgICA/IGBUaGUgdmFsdWUgZm9yICR7Y29kZShcbiAgICAgICAgICAgICAgcGFyYW1zPy50ZXJtWydAaWQnXSB8fCBwYXJhbXM/LnRlcm0ubmFtZVxuICAgICAgICAgICAgKX0gaXMgb3V0c2lkZSB0aGUgcmFuZ2UgZXN0YWJsaXNoZWQgZm9yIHRoZSBzb2lsIHRleHR1cmUgeW91IHByb3ZpZGVkLlxuICAgICAgICAgICAgRm9yIHRoaXMgc29pbCB0ZXh0dXJlLCB0aGUgbWF4aW11bSAke2NvZGUocGFyYW1zPy50ZXJtWydAaWQnXSB8fCBwYXJhbXM/LnRlcm0ubmFtZSl9IGlzICR7cGFyYW1zPy5yYW5nZVxuICAgICAgICAgICAgICA/Lm1heH0gYW5kIHRoZSBtaW5pbXVtIGlzICR7cGFyYW1zPy5yYW5nZT8ubWlufS5gXG4gICAgICAgICAgOiBgRG9lcyBub3QgbWF0Y2ggdGhlIHBvc3NpYmxlIHJhbmdlcyBvZiBzYW5kLCBzaWx0IGFuZCBjbGF5IGNvbnRlbnQuYFxuICAgICAgICA6IGBFYWNoIHNvaWwgdGV4dHVyZSBoYXMgYSBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlIGZvciBzYW5kLCBzaWx0LCBhbmQgY2xheSBjb250ZW50LlxuICAgICAgICBBdCBsZWFzdCBvbmUgbWVhc3VyZW1lbnQgb2Ygc2FuZCwgc2lsdCwgb3IgY2xheSBjb250ZW50IGRvZXMgbm90IG1hdGNoIHRoZSBwb3NzaWJsZSByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBzb2lsIHRleHR1cmUuYFxuICAgIH1cbiAgICAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgICA/IGBQbGVhc2UgY2hlY2sgdGhlIG1lYXN1cmVtZW50LCBpdHMgZGVwdGggaW50ZXJ2YWxzLCBhbmQgdGhlIGRhdGVzIG9mIHRoZSBtZWFzdXJlbWVudCBvciB1cGRhdGUgdGhlIHNvaWwgdGV4dHVyZSBpZiBuZWVkZWQuYFxuICAgICAgICA6IGBQbGVhc2UgY2hlY2sgeW91ciBtZWFzdXJlbWVudHMsIHRoZWlyIGRlcHRoIGludGVydmFscywgYW5kIHRoZSBkYXRlcyBvZiB0aGUgbWVhc3VyZW1lbnRzIG9yIHVwZGF0ZSB0aGUgc29pbCB0ZXh0dXJlcyBpZiBuZWVkZWQuYFxuICAgIH1gLFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIG9uZSBvZiB0aGUgYWxsb3dlZCB2YWx1ZXMnOiAoeyBwYXJhbXMsIGRhdGFQYXRoIH0pID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGgpO1xuICAgIGNvbnN0IHZhbHVlcyA9XG4gICAgICBwYXRocy5sZW5ndGggPj0gMiA/IHBsdXJhbGl6ZShwYXRoc1twYXRocy5sZW5ndGggLSAxXS5wYXRoLCBwYXJhbXM/LmFsbG93ZWRWYWx1ZXM/Lmxlbmd0aCB8fCAwKSA6ICd2YWx1ZXMnO1xuICAgIHJldHVybiBgT25seSB0aGUgJHtwYXRocy5sZW5ndGggPT09IDMgPyBgJHtwYXRoc1sxXS5sYWJlbH0gd2l0aCB0aGUgYCA6ICcnfWZvbGxvd2luZyAke3ZhbHVlc30gYXJlIHBlcm1pdHRlZCBmb3IgJHtcbiAgICAgIHBhdGhzWzBdLmxhYmVsXG4gICAgfTogJHtwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubWFwKGNvZGUpLmpvaW4oJywgJyl9LlxuICAgICAgUGxlYXNlIGVpdGhlciBjaGFuZ2UgdGhlICR7XG4gICAgICAgIHBhdGhzLmxlbmd0aCA+PSAyID8gcGF0aHNbMV0ubGFiZWwgOiBwYXRoc1swXS5sYWJlbFxuICAgICAgfSB5b3UgYXJlIHVzaW5nIGFuZCBlbnN1cmUgaXQgaGFzIG9uZSBvZiB0aGUgJHt2YWx1ZXN9IGxpc3RlZCBhYm92ZSxcbiAgICAgIG9yIGZvbGxvdyB0aGUgc2NoZW1hIHRvIGlkZW50aWZ5IHdoZXJlIHRoaXMgJHtwYXRocy5sZW5ndGggPj0gMiA/IHBhdGhzWzFdLmxhYmVsIDogcGF0aHNbMF0ubGFiZWx9IGNhbiBiZSBhZGRlZC5gO1xuICB9LFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIGNvbnN0YW50JzogKHsgcGFyYW1zIH0pID0+IGBNdXN0IGJlOiAke2NvZGUocGFyYW1zPy5hbGxvd2VkVmFsdWUpfWAsXG4gICdpcyBub3QgYWxsb3dlZCBmb3IgdGhpcyBjaGFyYWN0ZXJpc2VkSW5kaWNhdG9yJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICAgID8gYCR7XG4gICAgICAgICAgICBwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubGVuZ3RoXG4gICAgICAgICAgICAgID8gYGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBvbmUgb2YgdGhlc2UgbWV0aG9kczogJHtwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubWFwKGNvZGUpLmpvaW4oJywgJyl9YFxuICAgICAgICAgICAgICA6IGBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhbnkgbWV0aG9kIGFsbG93ZWQuIFBsZWFzZSAke2NvbnRhY3RVc0xpbmsoKX0gdG8gY2hhbmdlIHRoaXMuYFxuICAgICAgICAgIH0uYFxuICAgICAgICA6IGBTb21lIFRlcm1zIGFyZSBub3QgYWxsb3dlZCB3aXRoIHRoZSBtZXRob2QgeW91IHNlbGVjdGVkLmBcbiAgICB9XG4gICAgWW91IGNhbiBmaW5kIHRoZSBsaXN0IG9mIGFsbG93ZWQgbWV0aG9kcyBmb3IgZWFjaCBUZXJtIGJ5IGNsaWNraW5nIG9uIHRoZW0uYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdmFsaWQgaXRlbSc6ICh7IGRhdGFQYXRoIH0pID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gcGF0aHMubGVuZ3RoID49IDJcbiAgICAgID8gYFRoZSAke3BhdGhzW3BhdGhzLmxlbmd0aCAtIDFdLnBhdGh9IHJlbGF0ZWQgdG8gdGhpcyAke3BsdXJhbGl6ZShwYXRoc1twYXRocy5sZW5ndGggLSAyXS5sYWJlbCwgMSl9IGFyZSBpbnZhbGlkYFxuICAgICAgOiBgVGhlICR7cGF0aHNbMF0ucGF0aH0gYXJlIGludmFsaWRgO1xuICB9LFxuICAnbWF5IGJlIGJldHdlZW4gMCBhbmQgMTAwJzogKCkgPT4gJ1BlcmNlbnRhZ2VzIHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCwgbm90IDAgYW5kIDEuIFRoaXMgbWF5IGJlIGFuIGVycm9yLicsXG4gICdtYXkgbm90IGFsbCBiZSBzZXQgdG8gZmFsc2UnOiAoKSA9PlxuICAgIGBFdmVyeSB2YWx1ZSBpbiB0aGUgZGF0YSBjb21wbGV0ZW5lc3MgYXNzZXNzbWVudCBpcyAke2NvZGUoZmFsc2UpfS4gWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBmaWxsIGl0IGluLlxuICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGZpbGwgaXQgaW4sIHBsZWFzZSBzZWUgdGhlICR7c2NoZW1hTGluaygnQ3ljbGUjY29tcGxldGVuZXNzJywgJ3NjaGVtYScpfS5gLFxuICAnbWF5IG5vdCBiZSBlbXB0eSc6ICgpID0+ICdpZiB0aGlzIHZhbHVlIHNpZ25pZmllcyBubyBkYXRhLCBIZXN0aWEgb25seSBhY2NlcHRzIFwiLVwiIG9yIGVtcHR5IGZvciBubyBkYXRhJyxcbiAgJ21heSBub3QgYmUgMCc6ICh7IGRhdGFQYXRoIH0sIGVycm9yQ291bnQpID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gYEFkZGluZyBhIHZhbHVlICR7ZXJyb3JDb3VudCA9PT0gMSA/IGAgdG8gZXZlcnkgJHtwYXRoc1swXS5sYWJlbH0gYCA6ICcgJ30gaXMgaGlnaGx5IHJlY29tbWVuZGVkXG4gICAgICBhcyB3aXRob3V0IHRoaXMgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgSW1wYWN0IEFzc2Vzc21lbnQuXG4gICAgICBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHdlIHJlY29tbWVuZCBzZXR0aW5nIHZhbHVlIHRvIDAuYDtcbiAgfSxcbiAgJ2xvbmdGYWxsb3dQZXJpb2QgbXVzdCBiZSBsb3dlciB0aGFuIDUgeWVhcnMnOiAoKSA9PlxuICAgIGBZb3VyIGxvbmdGYWxsb3dQZXJpb2QgaXMgZ3JlYXRlciB0aGFuIGZpdmUgeWVhcnMuXG4gICAgRmFsbG93IGlzIGRlZmluZWQgYnkgRkFPU1RBVCBhcyBsYW5kIGxlZnQgdW5jdWx0aXZhdGVkIGZvciBiZXR3ZWVuIDEgYW5kIDUgeWVhcnMsXG4gICAgYW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB1c2VkIGZvciBIZXN0aWEgYWxzby5gLFxuICAnc2hvdWxkIGJlIHdpdGhpbiBwZXJjZW50YWdlIG9mIGRlZmF1bHQgdmFsdWUnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICA/IGBUaGlzIHZhbHVlIGlzIMKxJHt0aHJlc2hvbGQocGFyYW1zPy50aHJlc2hvbGQpfSBkaWZmZXJlbnQgdG8gb3VyIGRlZmF1bHQgdmFsdWUgd2hpY2ggaXMgJHtwYXJhbXM/LmRlZmF1bHR9LlxuICAgICAgUGxlYXNlIGNoZWNrIHlvdXIgdXBsb2FkZWQgZGF0YSBhcyB0aGlzIG1heSBiZSBhbiBlcnJvci5gXG4gICAgICA6IGBUaGlzIHZhbHVlIGlzIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50IHRoYW4gb3VyIGRlZmF1bHQgdmFsdWUuXG4gICAgICBQbGVhc2UgY2hlY2sgeW91ciB1cGxvYWRlZCBkYXRhIGFzIHRoaXMgbWF5IGJlIGFuIGVycm9yLmAsXG4gICd0aGUgdmFsdWUgcHJvdmlkZWQgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0JzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYFRoZSBleHBlY3RlZCByZXN1bHQgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9XG4gICAgJHtwYXJhbXM/Lm1vZGVsPy5uYW1lID8gYHVzaW5nICR7bW9kZWxMaW5rKHBhcmFtcz8udGVybSwgcGFyYW1zPy5tb2RlbCl9IGAgOiAnJ31cbiAgICBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgICAgPyBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUoXG4gICAgICAgICAgICB0b1ByZWNpc2lvbihwYXJhbXM/LmN1cnJlbnQsIDMpXG4gICAgICAgICAgKX0uXG4gICAgICAgICR7cGFyYW1zPy50aHJlc2hvbGQgPyBgT3VyIHRocmVzaG9sZCBpcyDCsSR7dGhyZXNob2xkKHBhcmFtcz8udGhyZXNob2xkKX0uYCA6ICcnfVxuICAgICAgICBQbGVhc2UgZWl0aGVyOlxuICAgICAgICA8dWwgY2xhc3M9XCJpcy1wbC0zIGlzLWxpc3Qtc3R5bGUtZGVjaW1hbFwiPlxuICAgICAgICA8bGk+Q2hlY2sgdGhlICR7cGFyYW1zPy50ZXJtLnRlcm1UeXBlfSB2YWx1ZSB5b3UgcHJvdmlkZWQ7PC9saT5cbiAgICAgICAgPGxpPkNoZWNrIHRoZSBkYXRhIHlvdSBwcm92aWRlZCB3aGljaCBpcyB0aGUgaW5wdXQgaW50byB0aGlzIG1vZGVsOzwvbGk+XG4gICAgICAgIDxsaT5DYXJlZnVsbHkgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiB0byB1bmRlcnN0YW5kIGlmIHdlIHVzZWQgYSBkZWZhdWx0IHByb3BlcnR5IGFzIHBhcnQgb2YgdGhlIGNhbGN1bGF0aW9ucy48L2xpPlxuICAgICAgICA8L3VsPmBcbiAgICAgICAgOiAnbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0LidcbiAgICB9YCxcbiAgJ3RoZSBtZWFzdXJlbWVudCBwcm92aWRlZCBtaWdodCBiZSBpbiBlcnJvcic6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBUaGUgZXhwZWN0ZWQgdmFsdWUgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9XG4gICAgJHtwYXJhbXM/Lm1vZGVsPy5uYW1lID8gYHVzaW5nICR7bW9kZWxMaW5rKHBhcmFtcz8udGVybSwgcGFyYW1zPy5tb2RlbCl9IGAgOiAnJ31cbiAgICBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgICAgPyBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUoXG4gICAgICAgICAgICB0b1ByZWNpc2lvbihwYXJhbXM/LmN1cnJlbnQsIDMpXG4gICAgICAgICAgKX0uXG4gICAgICAgICR7cGFyYW1zPy50aHJlc2hvbGQgPyBgT3VyIHRocmVzaG9sZCBpcyDCsSR7dGhyZXNob2xkKHBhcmFtcz8udGhyZXNob2xkKX0uYCA6ICcnfWBcbiAgICAgICAgOiBgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0LmBcbiAgICB9YCxcbiAgJ211c3QgYmUgZXF1YWwgdG8gcHJldmlvdXMgcHJvZHVjdCBtdWx0aXBsaWVkIGJ5IHRoZSBzaGFyZSc6ICgpID0+XG4gICAgYFByb2R1Y3RzIGZyb20gYSB0cmFuc2Zvcm1hdGlvbiB3aGljaCBhcmUgYW4gSW5wdXQgaW4gdG8gdGhlIG5leHQgdHJhbnNmb3JtYXRpb24gbXVzdCBmb2xsb3cgdGhlIGZvbGxvd2luZyBydWxlOlxuICAgICR7Y29kZSgncHJldmlvdXMucHJvZHVjdC52YWx1ZSAqIGN1cnJlbnQudHJhbnNmb3JtZWRTaGFyZSAvIDEwMCA9PSBjdXJyZW50LmlucHV0LnZhbHVlJyl9YCxcbiAgJ2F0IGxlYXN0IG9uZSBJbnB1dCBtdXN0IGJlIGEgUHJvZHVjdCBvZiB0aGUgQ3ljbGUnOiAoKSA9PlxuICAgIGBBIFRyYW5zZm9ybWF0aW9uIGNvbnZlcnRzIGEgUHJvZHVjdCBmcm9tIGEgQ3ljbGUgaW50byBhbm90aGVyIFByb2R1Y3QuXG4gICAgVGhlcmVmb3JlLCBhdCBsZWFzdCBvbmUgSW5wdXQgaW50byB0aGUgVHJhbnNmb3JtYXRpb24gbXVzdCBiZSBhIFByb2R1Y3Qgb2YgdGhlIEN5Y2xlLmAsXG4gICdtdXN0IGhhdmUgb25seSBvbmUgZW50cnkgd2l0aCB0aGUgc2FtZSB0ZXJtLnRlcm1UeXBlID0gZXhjcmV0YU1hbmFnZW1lbnQnOiAoKSA9PlxuICAgIGBUaGVyZSBjYW4gb25seSBiZSBvbmUgUHJhY3RpY2Ugb2YgdHlwZSBleGNyZXRhTWFuYWdlbWVudCBpbiBhIEN5Y2xlLlxuICAgIFRvIHJlcHJlc2VudCBtdWx0aXBsZSBleGNyZXRhIG1hbmFnZW1lbnQgc3lzdGVtcyBlaXRoZXIgdXNlIG11bHRpcGxlIEN5Y2xlcyBhbmQgbGluayB0aGVtIHRvZ2V0aGVyLFxuICAgIG9yIHVzZSBUcmFuc2Zvcm1hdGlvbnMgd2l0aGluIGEgQ3ljbGUgYW5kIGxpbmsgdGhvc2UgdG9nZXRoZXIuYCxcbiAgJ211c3QgYmUgaW5jbHVkZWQgYXMgYW4gSW5wdXQnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgVGhlIGV4Y3JldGEgUHJvZHVjdHMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBleGNyZXRhIElucHV0cy5cbiAgICAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgICA/IGBFLmcuLCB5b3UgY2Fubm90IGdldCAke2NvZGUocGFyYW1zPy50ZXJtPy5uYW1lKX0gZnJvbSAkeyhwYXJhbXM/LmV4cGVjdGVkIHx8IFtdKVxuICAgICAgICAgICAgLm1hcCh2ID0+IGNvZGUoa2V5VG9MYWJlbCh2KSkpXG4gICAgICAgICAgICAuam9pbignIG9yICcpfS5gXG4gICAgICAgIDogJydcbiAgICB9XG4gICAgUGxlYXNlIGNoZWNrIHRoZSBJbnB1dHMgYW5kIFByb2R1Y3RzIG9mIHRoZSBUcmFuc2Zvcm1hdGlvbi5gLFxuICAnbXVzdCBhZGQgdGhlIGxpbmtlZCBpbnB1dHMgdG8gdGhlIGN5Y2xlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICAgID8gYFlvdSBoYXZlIHN0YXRlZCB0aGF0ICR7Y29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpfSB3YXMgY3JlYXRlZCBieSB0aGUgZm9sbG93aW5nIElucHV0cyAke3BhcmFtcz8uZXhwZWN0ZWRcbiAgICAgICAgICAgID8ubWFwKGUgPT4gY29kZShlLm5hbWUpKVxuICAgICAgICAgICAgLmpvaW4oJyAsICcpfWBcbiAgICAgICAgOiAnWW91IGhhdmUgc3RhdGVkIHNvbWUgRW1pc3Npb25zIHdlcmUgY3JlYXRlZCBieSBzb21lIElucHV0cydcbiAgICB9LlxuICAgIEhvd2V2ZXIsIHRoZXNlIElucHV0cyBkbyBub3QgZXhpc3QgaW4gdGhlIEN5Y2xlLlxuICAgIFBsZWFzZSBhZGQgdGhlc2UgSW5wdXRzLCBldmVuIGlmIHlvdSBkbyBub3QgaGF2ZSBhIHZhbHVlIGZvciB0aGVtLmAsXG4gICdtdXN0IGFkZCB0aGUgbGlua2VkIHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgY3ljbGUnOiAoeyBsZXZlbCwgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICAgID8gYFlvdSBoYXZlIHNwZWNpZmllZCB0aGF0JHtjb2RlKFxuICAgICAgICAgICAgcGFyYW1zPy50ZXJtPy5uYW1lXG4gICAgICAgICAgKX0gd2FzIGNyZWF0ZWQgZHVyaW5nIGEgVHJhbnNmb3JtYXRpb24gd2l0aCB0aGUgVGVybSBuYW1lICR7Y29kZShwYXJhbXM/LmV4cGVjdGVkPy5uYW1lKX1gXG4gICAgICAgIDogJ1lvdSBoYXZlIHN0YXRlZCBzb21lIEVtaXNzaW9ucyB3ZXJlIGNyZWF0ZWQgYnkgc29tZSBUcmFuc2Zvcm1hdGlvbnMnXG4gICAgfS5cbiAgICBIb3dldmVyLCB3ZSBjYW5ub3QgZmluZCBhIFRyYW5zZm9ybWF0aW9uIHdpdGhpbiB0aGUgQ3ljbGUgd2l0aCB0aGlzIFRlcm0gbmFtZS5cbiAgICAke1xuICAgICAgbGV2ZWwgPT09ICdlcnJvcidcbiAgICAgICAgPyAnUGxlYXNlIGNoZWNrIHRoZSBUZXJtcyB1c2VkIGluIHRoZSBFbWlzc2lvbnMgYW5kL29yIHRoZSBUcmFuc2Zvcm1hdGlvbnMuJ1xuICAgICAgICA6ICdZb3UgbWF5IHdhbnQgdG8gYWRkIHRoaXMgVHJhbnNmb3JtYXRpb24uJ1xuICAgIH1gLFxuICAnZXZlcnkgbm9kZSBzaG91bGQgYmUgdW5pcXVlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoaXMgTm9kZSBpcyBkdXBsaWNhdGVkLiBFdmVyeSBOb2RlIHNob3VsZCBiZSB1bmlxdWUuXG4gICAgVW5pcXVlbmVzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgZmllbGRzOiAkeyhwYXJhbXM/LmtleXMgfHwgW10pLm1hcChjb2RlKS5qb2luKCcsICcpfWAsXG4gICdldmVyeSBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBiZSB1bmlxdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhpcyBibGFuayBub2RlIGlzIGR1cGxpY2F0ZWQke1xuICAgICAgcGFyYW1zPy5kdXBsaWNhdGVkSW5kZXhlcz8ubGVuZ3RoXG4gICAgICAgID8gYCB3aXRoIHRoZSBibGFuayAke3BsdXJhbGl6ZShcbiAgICAgICAgICAgICdub2RlJyxcbiAgICAgICAgICAgIHBhcmFtcy5kdXBsaWNhdGVkSW5kZXhlcy5sZW5ndGhcbiAgICAgICAgICApfSB3aXRoIG51bWJlcmVkOiAke3BhcmFtcy5kdXBsaWNhdGVkSW5kZXhlcy5qb2luKCcsICcpfWBcbiAgICAgICAgOiAnJ1xuICAgIH0uIEV2ZXJ5IGJsYW5rIG5vZGUgc2hvdWxkIGJlIHVuaXF1ZS5cbiAgICBVbmlxdWVuZXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBmaWVsZHM6ICR7KHBhcmFtcz8ua2V5cyB8fCBbXSkubWFwKGNvZGUpLmpvaW4oJywgJyl9YCxcbiAgJ211c3QgY29udGFpbiBhcyBtYW55IGl0ZW1zIGFzIHZhbHVlcyc6ICh7IHBhcmFtcywgZGF0YVBhdGggfSkgPT5cbiAgICBgVGhlIG51bWJlciBvZiAke2NvZGUoZGF0YVBhdGguc3BsaXQoJy4nKS5wb3AoKSl9IG11c3QgbWF0Y2ggdGhlIG51bWJlciBvZiAke2NvZGUoJ3ZhbHVlJyl9LlxuICAgIEN1cnJlbnRseSB0aGVyZSBhcmUgJHtwYXJhbXM/LmN1cnJlbnR9ICR7Y29kZShkYXRhUGF0aC5zcGxpdCgnLicpLnBvcCgpKX0gYnV0ICR7cGFyYW1zPy5leHBlY3RlZH0gJHtjb2RlKFxuICAgICAgJ3ZhbHVlJ1xuICAgICl9LmAsXG4gICdpcyB0b28gZ2VuZXJpYyc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBZb3UgaGF2ZSB0aGUgZm9sbG93aW5nIFByb2R1Y3QgJHtjb2RlKHBhcmFtcz8ucHJvZHVjdD8ubmFtZSl9IGhvd2V2ZXIsXG4gICAgeW91IGhhdmUgdXNlZCBhIGdlbmVyaWMgJHtnbG9zc2FyeVR5cGVMaW5rKHBhcmFtcz8udGVybT8udGVybVR5cGUpfSB0ZXJtICR7Y29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpfS5cbiAgICBVc2UgYSBtb3JlIHNwZWNpZmljIHRlcm0gZm9yIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoXG4gICAgICBwYXJhbXM/LnRlcm0/LnRlcm1UeXBlXG4gICAgKX0gd2hpY2ggcmVmbGVjdHMgdGhlIHNwZWNpZmljICR7Z2xvc3NhcnlUeXBlTGluayhwYXJhbXM/LnByb2R1Y3Q/LnRlcm1UeXBlKX0uYCxcbiAgJ3Nob3VsZCBub3QgdXNlIGlkZW50aWNhbCB0ZXJtcyB3aXRoIGRpZmZlcmVudCB1bml0cyc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBZb3UgaGF2ZSBhZGRlZCB0aGUgc2FtZSAke2NvZGUocGFyYW1zPy50ZXJtPy50ZXJtVHlwZSl9IGluICR7cGFyYW1zPy51bml0c1xuICAgICAgPy5tYXAodW5pdCA9PiBjb2RlKHVuaXQpKVxuICAgICAgLmpvaW4oJyBhbmQgJyl9IHVuaXRzLlxuICAgIElmIHRoZXNlIHRlcm1zIHJlZmVyIHRvIHRoZSBzYW1lICR7Y29kZShwYXJhbXM/LnRlcm0/LnRlcm1UeXBlKX0sIHRoaXMgd2lsbCBsZWFkIHRvIGRvdWJsZSBjb3VudGluZy4ke1xuICAgICAgcGFyYW1zPy51bml0cz8uaW5jbHVkZXMoJ2tnIE4nKVxuICAgICAgICA/IGAgSW5zdGVhZCB1c2UgdGhlICR7dGVybUxpbmsoeyBpZDogJ25pdHJvZ2VuQ29udGVudCcsIG5hbWU6ICdOaXRyb2dlbiBDb250ZW50JyB9KX0gUHJvcGVydHkgb24gdGhlICR7Y29kZShcbiAgICAgICAgICAgICdrZydcbiAgICAgICAgICApfSB0ZXJtIHRvIGRlZmluZSB0aGUgbml0cm9nZW4gY29udGVudCBvZiB0aGUgJHtjb2RlKHBhcmFtcz8udGVybT8udGVybVR5cGUpfS5gXG4gICAgICAgIDogJydcbiAgICB9YCxcbiAgJ2lzIG1pc3NpbmcgcmVxdWlyZWQgYmlibGlvZ3JhcGhpYyBpbmZvcm1hdGlvbic6ICgpID0+XG4gICAgYFRoZSBhdXRvbWF0aWMgYmlibGlvZ3JhcGh5IHNlYXJjaCBmYWlsZWQgZm9yIHRoaXMgQmlibGlvZ3JhcGh5LiBFaXRoZXI6XG4gICAgPHVsIGNsYXNzPVwiaXMtcGwtMyBpcy1saXN0LXN0eWxlLWRlY2ltYWxcIj5cbiAgICA8bGk+TWFudWFsbHkgZmlsbC1pbiB0aGUgPGI+cmVxdWlyZWQ8L2I+IGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24gYXMgcGVyICR7c2NoZW1hTGluayhcbiAgICAgIFNjaGVtYVR5cGUuQmlibGlvZ3JhcGh5LFxuICAgICAgJ291ciBzY2hlbWEnXG4gICAgKX0uPC9saT5cbiAgICA8bGk+UHJvdmlkZSB0aGUgJHtjb2RlKCdkb2N1bWVudERPSScpfSBhcyB3ZWxsIGFzIHRoZSAke2NvZGUoJ3RpdGxlJyl9LjwvbGk+XG4gICAgPGxpPkNoZWNrIHRoZSAke2NvZGUoJ2RvY3VtZW50RE9JJyl9IGFuZCAke2NvZGUoJ3RpdGxlJyl9IGZvciB0eXBvcyBhZ2FpbnN0IHRoZSAke2V4dGVybmFsTGluayhcbiAgICAgICdodHRwczovL3d3dy5tZW5kZWxleS5jb20nLFxuICAgICAgJ01lbmRlbGV5IGNhdGFsb2d1ZSdcbiAgICApfS48L2xpPlxuICAgIDwvdWw+YCxcbiAgJ3Nob3VsZCBiZSBsb3dlciB0aGFuIG1heCBzaXplJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBib3VuZGFyeSBvciByZWdpb24gaXMgPiR7cGFyYW1zPy5leHBlY3RlZH1rbTIgYW5kIGlzIHRvbyBsYXJnZSB0byByZWxpYWJseSBnYXAgZmlsbCBNZWFzdXJlbWVudHMuXG4gICAgSWYgeW91IGFyZSBhYmxlIHRvIHVzZSBhIG1vcmUgc3BlY2lmaWMgcmVnaW9uIG9yIHNtYWxsZXIgYm91bmRhcnksIHBsZWFzZSBkby5gLFxuICAnYW4gZXhjcmV0YSBpbnB1dCBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIGFuIGV4Y3JldGFNYW5hZ2VtZW50IHByYWN0aWNlJzogKHsgZGF0YVBhdGggfSkgPT4ge1xuICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgIHJldHVybiBgRXhjcmV0YSBtYW5hZ2VtZW50IGlzIHRoZSBjb252ZXJzaW9uIG9mIGV4Y3JldGEgdG8gYW5vdGhlciB0eXBlIG9mIGV4Y3JldGEuXG4gICAgICBZb3UgaGF2ZSBhZGRlZCBhbiBleGNyZXRhTWFuYWdlbWVudCBQcmFjdGljZSB0byB0aGlzICR7cGF0aHNbMF0ubGFiZWx9IGJ1dCB0aGVyZSBpcyBubyBleGNyZXRhIElucHV0LlxuICAgICAgVG8gcmVwcmVzZW50IGV4Y3JldGEgbWFuYWdlbWVudCwgdXNlIGEgJHtwYXRoc1swXS5sYWJlbH0gd2l0aCBleGNyZXRhIGFzIGFuIElucHV0IGFuZCBleGNyZXRhTWFuYWdlbWVudCBhcyBhIFByYWN0aWNlLmA7XG4gIH0sXG4gICdvbmx5IDEgcHJpbWFyeSBwcm9kdWN0IGFsbG93ZWQnOiAoKSA9PiAnVGhlcmUgY2FuIG9ubHkgYmUgb25lIHByaW1hcnkgcHJvZHVjdCBpbiBlYWNoIEN5Y2xlLicsXG4gICdpcyBub3QgYWxsb3dlZCBpbiBjb21iaW5hdGlvbiB3aXRoIG5vVGlsbGFnZSc6ICgpID0+XG4gICAgYFRoaXMgb3BlcmF0aW9uIGludm9sdmVzIHRpbGxhZ2UsIHlldCB5b3UgaGF2ZSBzcGVjaWZpZWQgdGhlIFByYWN0aWNlICR7dGVybUxpbmsobm9UaWxsYWdlKX0uXG4gICAgRWl0aGVyIGNoYW5nZSB0aGlzIG9wZXJhdGlvbiBvciB0aGUgUHJhY3RpY2UuYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdGlsbGFnZSBwcmFjdGljZSc6ICgpID0+XG4gICAgYFdlIHJlY29tbWVuZCBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIHRpbGxhZ2UgdXNlZCBmb3IgdGhpcyBDeWNsZS5cbiAgICBQbGVhc2Ugc2VlIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBnbG9zc2FyeS5gLFxuICAnbXVzdCBzZXQgdmFsdWUgZm9yIGV2ZXJ5IHRpbGxhZ2UgcHJhY3RpY2UnOiAoKSA9PlxuICAgIGBFaXRoZXIgc3BlY2lmeSBhIHNpbmdsZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZSBvciBhZGQgYSB2YWx1ZSB0byBhbGwgcHJhY3RpY2VzLmAsXG4gICdzdW0gbm90IGVxdWFsIHRvIDEwMCUgZm9yIHRpbGxhZ2UgcHJhY3RpY2VzJzogKCkgPT5cbiAgICBgVGhlIHN1bSBvZiAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZXMgbXVzdCBlcXVhbCAxMDAlLmAsXG4gICdjYW4gb25seSBoYXZlIDEgdGlsbGFnZSBwcmFjdGljZSB3aXRob3V0IGEgdmFsdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgSXQgaXMgbm90IHBvc3NpYmxlIGZvciBhIEN5Y2xlIHRvIGhhdmUgdGhlIGZvbGxvd2luZyB0aWxsYWdlIFByYWN0aWNlczpcbiAgICAkeyhwYXJhbXM/LmN1cnJlbnQgPz8gW10pLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oJyBhbmQgJyl9IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgSWYgbXVsdGlwbGUgdGlsbGFnZSBwcmFjdGljZXMgZGlkIG9jY3VyLCBwbGVhc2Ugc3BlY2lmeSB0aGUgcGVyY2VudGFnZSBvZiBhcmVhIHRoZXkgb2NjdXJyZWQgb24uYCxcbiAgJ2NhbiBub3QgYmUgbGlua2VkIHRvIHRoZSBzYW1lIEN5Y2xlJzogKCkgPT4gJ1lvdSBjYW4gbm90IGxpbmsgYW4gSW5wdXQgdG8gdGhlIEltcGFjdCBBc3Nlc3NtZW50IG9mIHRoZSBzYW1lIEN5Y2xlLicsXG4gIC8vIGRlcHJlY2F0ZWQsIHJlbW92ZSB3aGVuIG1lc3NhZ2UgaXMgbm90IGJlaW5nIHVzZWQgYW55bW9yZVxuICAnbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBkYXRhUGF0aCwgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYElmIHRoZSBhbW91bnQgcHJvZHVjZWQgaXMgemVybywgdGhlICR7Y29kZShkYXRhUGF0aD8uc3BsaXQoJy4nKS5wb3AoKSl9IG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ2Vjb25vbWljVmFsdWVTaGFyZSBtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHRoZSBlY29ub21pY1ZhbHVlU2hhcmUgb2YgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgPyBjb2RlKHBhcmFtcz8udGVybS5uYW1lKSA6ICd0aGF0IHByb2R1Y3QnXG4gICAgfSBtdXN0IGFsc28gYmUgemVyby5gLFxuICAncmV2ZW51ZSBtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHRoZSByZXZlbnVlIG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ3Nob3VsZCBhZGQgYSBzb3VyY2UnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgV2UgcmVjb21tZW5kIGFkZGluZyBhIFNvdXJjZSB0byBhbGwgZGF0YSBpdGVtcy5cbiAgICBUaGlzIGNhbiBiZSBkb25lIGJ5IGFkZGluZyB0aGUgJHtjb2RlKHBhcmFtcz8uY3VycmVudCl9IGZpZWxkLlxuICAgIFNvdXJjZXMgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGZvciBlYWNoIGRhdGEgaXRlbSAoaS5lLiwgZWFjaCBJbnB1dCwgRW1pc3Npb24sIFByb2R1Y3QsIFByYWN0aWNlLCBNZWFzdXJlbWVudCwgb3IgSW5mcmFzdHJ1Y3R1cmUpLmAsXG4gICdjb3ZlciBjcm9wIGN5Y2xlIGNvbnRhaW5zIG5vbiBjb3ZlciBjcm9wIHByb2R1Y3QnOiAoKSA9PlxuICAgIGBZb3UgaGF2ZSBzcGVjaWZpZWQgdGhhdCB0aGlzIGNyb3AgaXMgYSBjb3ZlciBjcm9wIHVzaW5nIGEgUHJhY3RpY2UuXG4gICAgQSBjb3ZlciBjcm9wIGlzIGRlZmluZWQgYXMgXCJhIGNyb3Agd2hpY2ggaXMgbGVmdCBpbiB0aGUgZmllbGQgd2l0aG91dCBhbnkgZnJhY3Rpb24gaGFydmVzdGVkIGJ5IHRoZSBlbmQgb2YgdGhlIEN5Y2xlXCIuXG4gICAgVGhlIFByb2R1Y3RzIG9mIHRoaXMgQ3ljbGUgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoaXMgY3JvcCBiZWluZyBhIGNvdmVyIGNyb3AuXG4gICAgUGxlYXNlIGNoZWNrIHRoZSBQcm9kdWN0cyBvciB0aGUgUHJhY3RpY2VzLmAsXG4gICdzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGN5Y2xlIHByb2R1Y3RzJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICAgID8gYFRoZSBQcm9kdWN0ICR7Y29kZShwYXJhbXMucHJvZHVjdC5uYW1lKX0gZG9lcyBub3QgZXhpc3QgaW4gdGhlIEN5Y2xlIHdpdGggaWQgJHtjb2RlKHBhcmFtcy5ub2RlLmlkKX1gXG4gICAgICAgIDogJ1RoZSBJbXBhY3RBc3Nlc3NtZW50IFByb2R1Y3QgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGxpbmtlZCBDeWNsZSdcbiAgICB9LlxuICAgIFBsZWFzZSBhZGQgdGhlIFByb2R1Y3QgaW4gdGhlIEN5Y2xlIG9yIHJlbW92ZSB0aGUgbGluayB3aXRoIHRoZSBDeWNsZS5gLFxuICAnbXVsdGlwbGUgSW1wYWN0QXNzZXNzbWVudCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIFByb2R1Y3Qgb2YgdGhlIHNhbWUgQ3ljbGUnOiAoKSA9PlxuICAgIGBPbmx5IDEgSW1wYWN0IEFzc2Vzc21lbnQgY2FuIGJlIHJlbGF0ZWQgdG8gdGhpcyBQcm9kdWN0LlxuICAgIFBsZWFzZSBtYWtlIHN1cmUgdGhlIHByb2R1Y3QgaXMgY29ycmVjdCBvciB0aGUgY3ljbGUuaWQgeW91IGFyZSByZWZlcnJpbmcgdG8gaXMgY29ycmVjdC5gLFxuICAnbXVsdGlwbGUgSW1wYWN0QXNzZXNzbWVudCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUHJvZHVjdCc6ICgpID0+XG4gICAgYE9ubHkgMSBJbXBhY3QgQXNzZXNzbWVudCBjYW4gYmUgcmVsYXRlZCB0byB0aGlzIFByb2R1Y3QuXG4gICAgUGxlYXNlIG1ha2Ugc3VyZSB0aGUgcHJvZHVjdCBvZiB0aGUgcmVsYXRlZCBJbXBhY3RBc3Nlc3NtZW50cyBhcmUgY29ycmVjdCBvciB0aGUgY3ljbGUuaWQgaXMgY29ycmVjdC5gLFxuICAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbGFuZCBvY2N1cGF0aW9uJzogKCkgPT5cbiAgICBgTGFuZCB0cmFuc2Zvcm1hdGlvbiBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGxhbmQgb2NjdXBhdGlvblxuICAgIChsYW5kIHRyYW5zZm9ybWF0aW9uIGlzIHRoZSBhbW91bnQgb2YgbGFuZCBjb252ZXJ0ZWQgYmV0d2VlbiBzb21lIGRhdGUgaW4gdGhlIHBhc3QgYW5kIHRoZSBjdXJyZW50IHllYXIsXG4gICAgZGl2aWRlZCBieSBhbiBhbW9ydGl6YXRpb24gcGVyaW9kLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIGxlc3MgdGhhbiBsYW5kIG9jY3VwYXRpb24gYnkgZGVmaW5pdGlvbikuYCxcbiAgJ3Nob3VsZCBiZSBsaW5rZWQgdG8gYW4gZW1pc3Npb24gaW4gdGhlIEN5Y2xlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gYCR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9IGV4aXN0c2AgOiAnU29tZSBFbWlzc2lvbnMgZXhpc3QnXG4gICAgfSBpbiBib3RoIHRoZSBDeWNsZSBhbmQgdGhlIFRyYW5zZm9ybWF0aW9uIGJ1dCAke2Vycm9yQ291bnQgPT09IDEgPyAnaXQgaXMnIDogJ3RoZXkgYXJlJ30gbm90IGxpbmtlZCB1c2luZyAke2NvZGUoXG4gICAgICAnY3ljbGUuZW1pc3Npb25zLlgudHJhbnNmb3JtYXRpb24udGVybSdcbiAgICApfS4gVGhpcyBtYXkgYmUgYW4gZXJyb3IuYCxcbiAgJ3Nob3VsZCBhZGQgYW4gYW5pbWFsIHByb2R1Y3Rpb24gc3lzdGVtJzogKCkgPT5cbiAgICBgRm9yIGFuaW1hbCBwcm9kdWN0aW9uIGN5Y2xlcywgd2UgcmVjb21tZW5kIHNwZWNpZnlpbmcgdGhlIGFuaW1hbCBwcm9kdWN0aW9uICR7Z2xvc3NhcnlUeXBlTGluayhcbiAgICAgIFRlcm1UZXJtVHlwZS5zeXN0ZW1cbiAgICApfSBhcyBhIFByYWN0aWNlLlxuICAgIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2Ygc3lzdGVtcyBpbiB0aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS5zeXN0ZW0sICdHbG9zc2FyeScpfS5gLFxuICAnbXVzdCBiZSBzZXQgdG8gZmFsc2Ugd2hlbiBzcGVjaWZ5aW5nIGZ1ZWwgdXNlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYElmIG1hY2hpbmVyeSBmdWVsICgke3BhcmFtcz8uYWxsb3dlZFZhbHVlcy5tYXAoY29kZSkuam9pbignLCAnKX0pIGlzIHVzZWQgZHVyaW5nIGEgQ3ljbGUsXG4gICAgYnV0IHRoZXJlIGlzIG5vIGRhdGEgb24gdGhlIGFtb3VudCBvZiAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLm1hdGVyaWFsKX0gdXNlZCBmb3IgYWdyaWN1bHR1cmFsIGVxdWlwbWVudCxcbiAgICB0aGVuICR7Y29kZSgnY29tcGxldGVuZXNzLm1hdGVyaWFsJyl9IG11c3QgYmUgJHtjb2RlKCdmYWxzZScpfS5gLFxuICAnbXVzdCBiZSBiZWxvdyBvciBlcXVhbCB0byAxIGZvciB1bml0IGluIGhhJzogKCkgPT5cbiAgICBgVGhlIG1heGltdW0gdmFsdWUgZm9yIGEgcHJvZHVjdCB3aXRoIHVuaXRzICR7Y29kZSgnaGEnKX0gb24gYSBDeWNsZSB3aXRoIGEgJHtzY2hlbWFMaW5rKFxuICAgICAgJ0N5Y2xlI2Z1bmN0aW9uYWxVbml0JyxcbiAgICAgICdmdW5jdGlvbmFsIHVuaXQnXG4gICAgKX0gb2YgJHtjb2RlKCcxIGhhJyl9IGlzICR7Y29kZSgnMScpfS5cbiAgICBJZiB5b3UgYXJlIHRyeWluZyB0byBhZGQgYSBwcm9kdWN0IHdpdGggdGhlIHVuaXRzICR7Y29kZSgna2cnKX0sIHVzZSBhIGRpZmZlcmVudCB0ZXJtLmAsXG4gIFwicGFzdHVyZUdyYXNzIGtleSB1bml0cyBtdXN0IGJlICdoYSdcIjogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBUZXJtICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9IGNhbid0IGJlIHVzZWQgYXMgYSBrZXkgZm9yICR7dGVybUxpbmsocGFzdHVyZUdyYXNzKX0uXG4gICAgUGxlYXNlIHVzZSB0aGUgVGVybSBkZXNjcmliaW5nIHRoZSBwbGFudCB3aXRoIHRoZSB1bml0cyAke2NvZGUocGFyYW1zLmV4cGVjdGVkKX0gaW5zdGVhZC5cbiAgICBUaGlzIHdpbGwgaGVscCB1cyBnYXAtZmlsbCB0aGUgYW1vdW50IG9mIGdyYXNzIGNvbnN1bWVkIGJ5IHRoZSBoZXJkLmAsXG4gICd0aGUgc3VtIG9mIGFsbCBwYXN0dXJlR3Jhc3MgdmFsdWVzIG11c3QgYmUgMTAwJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBzdW0gb2YgYWxsICR7dGVybUxpbmsocGFzdHVyZUdyYXNzKX0gdmFsdWVzIG11c3QgYmUgZXF1YWwgdG8gJHtwYXJhbXMuZXhwZWN0ZWR9JS5gLFxuICAnaXMgb3V0c2lkZSBjb25maWRlbmNlIGludGVydmFsJzogKGVycm9yLCBlcnJvckNvdW50LCBhbGxFcnJvcnMpID0+XG4gICAgYCR7dW5pcXVlKFxuICAgICAgKGFsbEVycm9ycy5sZW5ndGggPyBhbGxFcnJvcnMgOiBbZXJyb3JdKS5mbGF0TWFwKFxuICAgICAgICAoeyBkYXRhUGF0aCwgcGFyYW1zIH0pID0+XG4gICAgICAgICAgcGFyYW1zPy5vdXRsaWVycz8ubWFwKFxuICAgICAgICAgICAgdmFsdWUgPT5cbiAgICAgICAgICAgICAgYFRoZSAke2RhdGFQYXRoLmluY2x1ZGVzKCdwcm9kdWN0JykgPyAncHJvZHVjdCcgOiAnaW5wdXQnfSB2YWx1ZSAke1xuICAgICAgICAgICAgICAgIGVycm9yQ291bnQgPT09IDEgPyBgJHtjb2RlKHZhbHVlKX0gYCA6ICcnXG4gICAgICAgICAgICAgIH1pcyAke3ZhbHVlID4gcGFyYW1zPy5taW4gPyAnYWJvdmUnIDogJ2JlbG93J30gJHtcbiAgICAgICAgICAgICAgICBwYXJhbXM/LnRocmVzaG9sZCA/IGAke2NvZGUoYCR7KHBhcmFtcy50aHJlc2hvbGQgKyAoMSAtIHBhcmFtcy50aHJlc2hvbGQpIC8gMikgKiAxMDB9JWApfSBvZmAgOiAnJ1xuICAgICAgICAgICAgICB9IGFsbCAke3BhcmFtcz8uZ3JvdXAgPyBjb2RlKHBhcmFtcy5ncm91cCkgOiBjb2RlKHBhcmFtcz8udGVybT8ubmFtZSl9IGRhdGEgaW4gJHtjb2RlKFxuICAgICAgICAgICAgICAgIHBhcmFtcz8uY291bnRyeS5uYW1lXG4gICAgICAgICAgICAgICl9IG9uIHRoZSBIZXN0aWEgcGxhdGZvcm0uYFxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApLmpvaW4oJzwvYnI+Jyl9XG4gICAgPC9icj5cbiAgICBQbGVhc2UgZG91YmxlLWNoZWNrIHRoZXNlIHZhbHVlcyBiZWZvcmUgc3VibWl0dGluZy5gLFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIGJvdW5kYXJ5JzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBjYWxjdWxhdGVkIGFyZWEgZnJvbSAke2NvZGUoJ2JvdW5kYXJ5Jyl9IGlzICR7Y29kZShwYXJhbXM/LmV4cGVjdGVkKX0uXG4gICAgVGhpcyBtYXkgYmUgYW4gZXJyb3IgaWYgdGhlIGJvdW5kYXJ5IHJlcHJlc2VudHMgdGhlIGFyZWEgdW5kZXIgY3VsdGl2YXRpb24uYCxcbiAgJ211c3Qgc3BlY2lmeSB0aGUgZmF0ZSBvZiBjcm9wUmVzaWR1ZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBGb3Igc2l0ZXMgb2YgdHlwZSAke3BhcmFtcy5zaXRlVHlwZS5tYXAoY29kZSkuam9pbignIG9yICcpfSxcbiAgICBpZiBkYXRhIGNvbXBsZXRlbmVzcyBpcyBtYXJrZWQgJHtjb2RlKFxuICAgICAgdHJ1ZVxuICAgICl9IGZvciBjcm9wIHJlc2lkdWUsIHRoZSBmYXRlcyBhbmQgcXVhbnRpdGllcyBvZiB0aGUgcmVzaWR1ZSBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICA8YnIvPlxuICAgIFRoZSBxdWFudGl0eSBtdXN0IGluY2x1ZGUgYm90aCBhYm92ZSBhbmQgYmVsb3cgZ3JvdW5kIGNyb3AgcmVzaWR1ZSwgd2hlcmUgdGhlIHN1bSBvZiBhYm92ZSBncm91bmQgY3JvcCByZXNpZHVlIGFuZCBiZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uXG4gICAgVGhpcyBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIHRlcm1zOlxuICAgIDx1bCBjbGFzcz1cImlzLXBsLTMgaXMtbGlzdC1zdHlsZS1kaXNjIGlzLW5vd3JhcFwiPlxuICAgIDxsaT4ke3Rlcm1MaW5rKHsgaWQ6ICdiZWxvd0dyb3VuZENyb3BSZXNpZHVlJywgbmFtZTogJ0JlbG93IGdyb3VuZCBjcm9wIHJlc2lkdWUnIH0pfTsgYW5kPC9saT5cbiAgICA8bGk+JHt0ZXJtTGluayh7IGlkOiAnYWJvdmVHcm91bmRDcm9wUmVzaWR1ZVRvdGFsJywgbmFtZTogJ0Fib3ZlIGdyb3VuZCBjcm9wIHJlc2lkdWUgdG90YWwnIH0pfS48L2xpPlxuICAgIDwvdWw+XG4gICAgPGJyLz5cbiAgICBUaGUgZmF0ZSBjYW4gYmUgYWRkZWQgdXNpbmc6XG4gICAgPHVsIGNsYXNzPVwiaXMtcGwtMyBpcy1saXN0LXN0eWxlLWRpc2MgaXMtbm93cmFwXCI+XG4gICAgPGxpPnRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLmNyb3BSZXNpZHVlTWFuYWdlbWVudCl9IHByYWN0aWNlczsgYW5kL29yPC9saT5cbiAgICA8bGk+dGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuY3JvcFJlc2lkdWUpfSBwcm9kdWN0czwvbGk+XG4gICAgPC91bD5cbiAgICBgLFxuICAnc2hvdWxkIHNwZWNpZnkgdGhlIGZhdGUgb2YgY3JvcFJlc2lkdWUnOiAoKSA9PlxuICAgIGBZb3UgaGF2ZSBub3Qgc3BlY2lmaWVkIHRoZSBmYXRlIG9mIHRoZSBjcm9wIHJlc2lkdWUuXG4gICAgQWRkaW5nIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbXByb3ZlIGVtaXNzaW9ucyBhbmQgc29pbCBjYXJib24gc3RvY2sgY2FsY3VsYXRpb25zLlxuICAgIFRoZSBmYXRlIGNhbiBiZSBhZGRlZCB1c2luZzpcbiAgICA8dWwgY2xhc3M9XCJpcy1wbC0zIGlzLWxpc3Qtc3R5bGUtZGlzYyBpcy1ub3dyYXBcIj5cbiAgICA8bGk+dGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuY3JvcFJlc2lkdWVNYW5hZ2VtZW50KX0gcHJhY3RpY2VzOyBhbmQvb3I8L2xpPlxuICAgIDxsaT50aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS5jcm9wUmVzaWR1ZSl9IHByb2R1Y3RzOzwvbGk+XG4gICAgPC91bD5cbiAgICBSZW1lbWJlciB0byBzZXQgJHtjb2RlKCdjb21wbGV0ZW5lc3MuY3JvcFJlc2lkdWUnKX0gdG8gJHtjb2RlKFxuICAgICAgdHJ1ZVxuICAgICl9IGlmIGJvdGggdGhlIGFib3ZlIGFuZCBiZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIHF1YW50aXRpZXMgYW5kIGZhdGVzIGFyZSBzcGVjaWZpZWQuYCxcbiAgJ3Nob3VsZCBoYXZlIHRoZSBzYW1lIHByaXZhY3kgYXMgdGhlIHJlbGF0ZWQgc291cmNlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRvIGxpbmsgdG8gYSAkeyhwYXJhbXM/LmRlZmF1bHRTb3VyY2UgfHwgcGFyYW1zPy5zb3VyY2UpPy5kYXRhUHJpdmF0ZSA/ICdwcml2YXRlJyA6ICdwdWJsaWMnfSBTb3VyY2UsXG4gICAgdGhpcyBOb2RlIG5lZWRzIHRvIGJlICR7KHBhcmFtcz8uZGVmYXVsdFNvdXJjZSB8fCBwYXJhbXM/LnNvdXJjZSk/LmRhdGFQcml2YXRlID8gJ3ByaXZhdGUnIDogJ3B1YmxpYyd9IGFzIHdlbGwuXG4gICAgUGxlYXNlIHNldCAke2NvZGUoJ2RhdGFQcml2YXRlJyl9PSR7Y29kZShgJHsocGFyYW1zPy5kZWZhdWx0U291cmNlIHx8IHBhcmFtcz8uc291cmNlKT8uZGF0YVByaXZhdGV9YCl9LmAsXG4gICdzaG91bGQgbm90IHVzZSBub3QgcmVsZXZhbnQgbW9kZWwnOiAoKSA9PlxuICAgIGBBbGwgZW1pc3Npb25zIHNob3VsZCBnZW5lcmFsbHkgaGF2ZSBhIG1ldGhvZCB0aWVyLCB3aGljaCBzdGF0ZXMgaG93IHRoZSBkYXRhIHdlcmUgbW9kZWxsZWQgb3IgaG93IHRoZSBkYXRhIHdlcmUgY29sbGVjdGVkLlxuICAgIFBsZWFzZSBzZWUgdGhlICR7c2NoZW1hTGluayhcbiAgICAgICdFbWlzc2lvbiNtZXRob2RUaWVyJyxcbiAgICAgICdzY2hlbWEnXG4gICAgKX0gZm9yIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBhbmQgZGVmaW5pdGlvbnMgb2YgdGhlIG9wdGlvbnMuYCxcbiAgJ3Nob3VsZCBub3QgdXNlIG5vdCByZWxldmFudCBtZXRob2RUaWVyJzogKCkgPT5cbiAgICBgQWxsIGVtaXNzaW9ucyBzaG91bGQgZ2VuZXJhbGx5IGhhdmUgYSBtZXRob2QgdGllciwgd2hpY2ggc3RhdGVzIGhvdyB0aGUgZGF0YSB3ZXJlIG1vZGVsbGVkIG9yIGhvdyB0aGUgZGF0YSB3ZXJlIGNvbGxlY3RlZC5cbiAgICBQbGVhc2Ugc2VlIHRoZSAke3NjaGVtYUxpbmsoXG4gICAgICAnRW1pc3Npb24jbWV0aG9kVGllcicsXG4gICAgICAnc2NoZW1hJ1xuICAgICl9IGZvciB0aGUgb3B0aW9ucyBhdmFpbGFibGUgYW5kIGRlZmluaXRpb25zIG9mIHRoZSBvcHRpb25zLmAsXG4gICdtdXN0IGhhdmUgaW5wdXRzIHJlcHJlc2VudGluZyB0aGUgZm9yYWdlIHdoZW4gc2V0IHRvIHRydWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhpcyBDeWNsZSBpbmNsdWRlcyBhbmltYWxzICR7cGFyYW1zPy5zaXRlVHlwZSA/IGBvbiAke3BhcmFtcy5zaXRlVHlwZX1gIDogJyd9IGFuZCBjb21wbGV0ZW5lc3MgaXMgc2V0IHRvICR7Y29kZShcbiAgICAgIHRydWVcbiAgICApfSBmb3IgJHtjb2RlKCdhbmltYWxGZWVkJyl9LlxuICAgIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBJbnB1dHMgcmVwcmVzZW50aW5nIHRoZSBmb3JhZ2UgaW50YWtlIGJ5IGFuaW1hbHMgaW4gdGhlIEN5Y2xlIChJbnB1dHMgd2l0aCB0ZXJtcyB3aGljaCBjb250YWluIHRoZSB3b3JkcyBcImZyZXNoIGZvcmFnZVwiIGFuZCBhICR7Y29kZShcbiAgICAgICd2YWx1ZSdcbiAgICApfSkuXG4gICAgRWl0aGVyLCBzZXQgY29tcGxldGVuZXNzIHRvICR7Y29kZShmYWxzZSl9IGZvciAke2NvZGUoXG4gICAgICAnYW5pbWFsRmVlZCdcbiAgICApfSwgbWFrZSBzdXJlIGFsbCBcImZyZXNoIGZvcmFnZVwiIElucHV0cyBoYXZlIGEgJHtjb2RlKFxuICAgICAgJ3ZhbHVlJ1xuICAgICl9LCBvciBhZGQgb25lIG9yIG1vcmUgSW5wdXRzIHJlcHJlc2VudGluZyB0aGUgZm9yYWdlIGludGFrZS5gLFxuICAnbXVzdCBzcGVjaWZ5IGlzIGl0IGFuIGFuaW1hbCBmZWVkJzogKCkgPT5cbiAgICBgVGhpcyBDeWNsZSBpcyBhbiBhbmltYWwgcHJvZHVjdGlvbiBDeWNsZSBhbmQgdGhpcyBJbnB1dCBjb3VsZCBiZSBhbiBhbmltYWwgZmVlZCBvciBjb3VsZCBiZSBmb3IgYW5vdGhlciB1c2UuXG4gICAgUGxlYXNlIHNwZWNpZnkgdGhlICR7c2NoZW1hTGluaygnSW5wdXQjaXNBbmltYWxGZWVkJywgJ2lzQW5pbWFsRmVlZCcpfSBmaWVsZCBvbiB0aGlzIElucHV0LlxuICAgIEtub3dpbmcgdGhlIGZhdGUgaXMgZXNzZW50aWFsIHRvIGRpc3Rpbmd1aXNoIElucHV0cyBiZXR3ZWVuIHRob3NlIHdoaWNoIGFyZSBmZWQgdG8gYW5pbWFscyBhbmQgdGhvc2Ugd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLmAsXG4gICdzaG91bGQgc3BlY2lmeSBhIHRyZWF0bWVudCB3aGVuIGV4cGVyaW1lbnREZXNpZ24gaXMgc3BlY2lmaWVkJzogKCkgPT5cbiAgICBgWW91IGhhdmUgc3BlY2lmaWVkIHRoYXQgdGhpcyBTb3VyY2UgdXNlcyBhbiBleHBlcmltZW50YWwgZGVzaWduLCBidXQgaGF2ZSBub3Qgc3BlY2lmaWVkIHRoZSB0cmVhdG1lbnQgZm9yIHRoaXMgQ3ljbGUuXG4gICAgQWRkaW5nIHRoZSB0cmVhdG1lbnQgcHJvdmlkZXMgaW1wb3J0YW50IG1ldGEtZGF0YSBhbmQgd2lsbCBlbmFibGUgZ3JlYXRlciByZS11c2Ugb2YgdGhlc2UgZGF0YS5cbiAgICBBZGQgdGhlICR7c2NoZW1hTGluaygnQ3ljbGUjdHJlYXRtZW50JywgJ3RyZWF0bWVudCcpfSBmaWVsZCB0byB0aGUgQ3ljbGUuXG4gICAgTm90ZSB0aGF0IHRoZSBmaWVsZCAke3NjaGVtYUxpbmsoXG4gICAgICAnQ3ljbGUjY29tbWVyY2lhbFByYWN0aWNlVHJlYXRtZW50JyxcbiAgICAgICdjb21tZXJjaWFsUHJhY3RpY2VUcmVhdG1lbnQnXG4gICAgKX0gYmVjb21lcyByZXF1aXJlZCBpZiB0cmVhdG1lbnQgaXMgc3BlY2lmaWVkLmAsXG4gICdzaG91bGQgbm90IHNwZWNpZnkgYm90aCBsaXZlQW5pbWFsIGFuZCBhbmltYWxQcm9kdWN0JzogKCkgPT5cbiAgICBgWW91IGhhdmUgYWRkZWQgYm90aCBhICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUubGl2ZUFuaW1hbCl9IGFuZCAke2dsb3NzYXJ5VHlwZUxpbmsoXG4gICAgICBUZXJtVGVybVR5cGUuYW5pbWFsUHJvZHVjdFxuICAgICl9IHRlcm0gYXMgUHJvZHVjdHMuXG4gICAgSWYgdGhlc2UgdGVybXMgcmVmZXIgdG8gdGhlIHNhbWUgYW5pbWFscywgdGhpcyB3aWxsIGxlYWQgdG8gZG91YmxlIGNvdW50aW5nOlxuICAgIGluc3RlYWQgdXNlIGEgUHJvcGVydHkgb24gdGhlICR7Z2xvc3NhcnlUeXBlTGluayhcbiAgICAgIFRlcm1UZXJtVHlwZS5saXZlQW5pbWFsXG4gICAgKX0gdGVybSB0byBkZWZpbmUgdGhlIHF1YW50aXR5IG9mIGxpdmV3ZWlnaHQgcGVyIGhlYWQsIGNhcmNhc3Mgd2VpZ2h0IHBlciBoZWFkLCBldGMuYCxcbiAgJ211c3QgYWRkIGFuIGV4Y3JldGEgcHJvZHVjdCB3aXRoIGEgbGl2ZUFuaW1hbCBwcm9kdWN0JzogKCkgPT5cbiAgICBgQW5pbWFsIHByb2R1Y3Rpb24gQ3ljbGVzIGNyZWF0ZSBleGNyZXRhLlxuICAgIFRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lICR7Y29kZShUZXJtVGVybVR5cGUuZXhjcmV0YSl9IHByb2R1Y3QgaW4gdGhpcyBDeWNsZS5cbiAgICBQbGVhc2UgYWRkIGFuICR7Y29kZShUZXJtVGVybVR5cGUuZXhjcmV0YSl9IFByb2R1Y3QgdG8gdGhlIEN5Y2xlLlxuICAgIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgYSAke2NvZGUoJ3ZhbHVlJyl9IGZvciB0aGUgUHJvZHVjdCwgYnV0IGFkZGluZyBhICR7Y29kZSgndmFsdWUnKX0gaXMgZGVzaXJhYmxlLmAsXG4gICd2YWx1ZSBzaG91bGQgc3VtIHRvIDEwMCBvciBsZXNzIGFjcm9zcyB3YXRlciByZWdpbWUgcHJhY3RpY2VzJzogKCkgPT5cbiAgICBgVGhlIHRvdGFsICUgYXJlYSBjb3ZlcmVkIGJ5IHRoZSAke2NvZGUoVGVybVRlcm1UeXBlLndhdGVyUmVnaW1lKX0gcHJhY3RpY2VzIHlvdSBzcGVjaWZpZWQgaXMgbm90IGVxdWFsIHRvICR7Y29kZShcbiAgICAgIDEwMFxuICAgICl9LlxuICAgIE1ha2Ugc3VyZSB0byBhZGQgYW55IG1pc3NpbmcgcHJhY3RpY2UgaWYgbmVlZGVkIGFuZC9vciBhZGp1c3QgdGhlIHZhbHVlcyBvZiB0aGUgJHtjb2RlKFxuICAgICAgVGVybVRlcm1UeXBlLndhdGVyUmVnaW1lXG4gICAgKX0gcHJhY3RpY2VzIHlvdSBhbHJlYWR5IHJlY29yZGVkLmAsXG4gICdyaWNlIHByb2R1Y3RzIG5vdCBhbGxvd2VkIGZvciB0aGlzIHdhdGVyIHJlZ2ltZSBwcmFjdGljZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBUaGlzIHByYWN0aWNlIGlzIG5vdCBhbGxvd2VkIHdpdGggdGhlIHByb2R1Y3RzICR7cGFyYW1zLnByb2R1Y3RzPy5tYXAocCA9PiBjb2RlKHAubmFtZSB8fCBwWydAaWQnXSkpfS5cbiAgICBSZWNvcmRpbmcgdGhlIHJpZ2h0IHdhdGVyIHJlZ2ltZSBmb3IgcmljZSBlbnN1cmVzIG1ldGhhbmUgZW1pc3Npb25zIGZyb20gZmxvb2RlZCBmaWVsZHMgYXJlIGNvcnJlY3RseSByZWNhbGN1bGF0ZWQuXG4gICAgVG8gZml4IHRoaXMgZXJyb3IsIGVpdGhlciBjaGFuZ2UgdGhlIHByYWN0aWNlIG9yIHRoZSBwcm9kdWN0cy5gLFxuICAnbXVzdCBub3QgYmUgZXF1YWwgdG8gMSBoYSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGAke2NvZGUoQ3ljbGVGdW5jdGlvbmFsVW5pdFsnMSBoYSddKX0gY2Fubm90IGJlIHVzZWQgYXMgJHtzY2hlbWFMaW5rKFxuICAgICAgJ0N5Y2xlI2Z1bmN0aW9uYWxVbml0JyxcbiAgICAgICdmdW5jdGlvbmFsVW5pdCdcbiAgICApfSBmb3IgQ3ljbGVzIGxpbmtlZCB0byBTaXRlcyB3aXRoICR7c2NoZW1hTGluaygnU2l0ZSNzaXRlVHlwZScsICdzaXRlVHlwZScpfSA9ICR7Y29kZShwYXJhbXM/LnNpdGVUeXBlKX0uXG4gICAgRWl0aGVyIGNoYW5nZSB0aGUgJHtzY2hlbWFMaW5rKCdDeWNsZSNmdW5jdGlvbmFsVW5pdCcsICdmdW5jdGlvbmFsVW5pdCcpfSB0byAke2NvZGUoXG4gICAgICBDeWNsZUZ1bmN0aW9uYWxVbml0LnJlbGF0aXZlXG4gICAgKX0gb3IgY2hhbmdlIHRoZSAke3NjaGVtYUxpbmsoJ1NpdGUjc2l0ZVR5cGUnLCAnc2l0ZVR5cGUnKX0uYCxcbiAgJ3Nob3VsZCBzcGVjaWZ5IGEgdmFsdWUgd2hlbiBIZXN0aWEgaGFzIGEgZGVmYXVsdCBvbmUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgQXMgeW91IGhhdmUgbm90IHNwZWNpZmllZCBhICR7Y29kZSgndmFsdWUnKX0sIHdlIHdpbGwgYXNzdW1lIHRoZSB2YWx1ZSBpcyAke2NvZGUocGFyYW1zPy5leHBlY3RlZCl9LlxuICAgIElmIHRoaXMgaXMgaW5jb3JyZWN0LCBwZWxhc2UgYWRkIGEgdmFsdWUuYCxcbiAgJ3Nob3VsZCBjb250YWluIGF0IGxlYXN0IG9uZSBtYW5hZ2VtZW50IG5vZGUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgJHtcbiAgICAgIHBhcmFtcz8udGVybVR5cGVcbiAgICAgICAgPyBgRG9lcyBub3QgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCAke2NvZGUocGFyYW1zLnRlcm1UeXBlKX0uXG4gICAgICAgIFBsZWFzZSBjb25zaWRlciBhZGRpbmcgYSBoaXN0b3J5IG9mICR7Y29kZShcbiAgICAgICAgICBwYXJhbXMudGVybVR5cGVcbiAgICAgICAgKX0gZm9yIGFzIG1hbnkgeWVhcnMgYXMgcG9zc2libGUgaW4gdGhlIE1hbmFnZW1lbnQgYmxhbmsgbm9kZXMuYFxuICAgICAgICA6IGBUaGVyZSBpcyBubyBNYW5hZ2VtZW50IG5vZGUgcHJlc2VudCBpbiB0aGlzIHVwbG9hZC5cbiAgICAgICAgV2UgcmVjb21tZW5kIGFkZGluZyB0aGlzIHRvIHRoZSBTaXRlLCBpbmNsdWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBhbmQgaGlzdG9yaWNhbCB0aWxsYWdlLlxuICAgICAgICBgXG4gICAgfVxuICAgIFdlIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIG1vZGVsIENPMiBlbWlzc2lvbnMgZnJvbSBzb2lsIG9yZ2FuaWMgY2FyYm9uIGNoYW5nZXMuYCxcbiAgJ2NhbiBub3QgYmUgdXNlZCBvbiB0aGlzIHRlcm1UeXBlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoaXMgUHJvcGVydHkgY2FuIG9ubHkgYmUgdXNlZCBvbiBibGFuayBub2RlcyB3aXRoIHRoZSBmb2xsb3dpbmcgJHtjb2RlKCd0ZXJtLnRlcm1UeXBlJyl9OiAke3BhcmFtcy5leHBlY3RlZFxuICAgICAgLm1hcChjb2RlKVxuICAgICAgLmpvaW4oJywgJyl9LmAsXG4gICdub3QgYSB2YWxpZCBHZW9KU09OJzogKCkgPT4gYFRoaXMgR2VvSlNPTiBhcHBlYXJzIHRvIGJlIGludmFsaWQuXG4gIFBsZWFzZSB2YWxpZGF0ZSB5b3VyIEdlb0pTT04gdXNpbmcgYW4gb25saW5lIHRvb2wgbGlrZSA8YSBocmVmPVwiaHR0cHM6Ly9nZW9qc29uLmlvL1wiPmdlb2pzb24uaW88L2E+LlxuICBJZiB5b3UgdGhpbmsgdGhpcyBpcyBhIG1pc3Rha2UsIHBsZWFzZSByZXBvcnQgdGhlIGVycm9yICR7cmVwb3J0SXNzdWVMaW5rKFJlcG9zaXRvcnkuc2NoZW1hLCBUZW1wbGF0ZS5idWcpfS5gLFxuICAnc2hvdWxkIGFkZCB0aGUgdGVybSBzdG9ja2luZ0RlbnNpdHlQZXJtYW5lbnRQYXN0dXJlQXZlcmFnZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBZb3UgZGlkIG5vdCBzcGVjaWZ5ICR7bm9kZUxpbmsoeyAnQHR5cGUnOiBOb2RlVHlwZS5UZXJtLCAnQGlkJzogcGFyYW1zLmV4cGVjdGVkIH0pfS5cbiAgICBBZGRpbmcgdGhpcyBQcmFjdGljZSBpcyBlc3NlbnRpYWwgZm9yIEN5Y2xlcyB3aXRoIHJlbGF0aXZlIGZ1bmN0aW9uYWwgdW5pdCB3aGljaCBoYXBwZW4gZW50aXJlbHkgb3IgcGFydGlhbGx5IG9uIHBlcm1hbmVudCBwYXN0dXJlLlxuICAgIFdpdGhvdXQgdGhpcyBpbmZvcm1hdGlvbiBIZXN0aWEgY2Fubm90IGNhbGN1bGF0ZSBhbmltYWwgcmVsYXRlZCBlbWlzc2lvbnMuYFxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZSA9IChcbiAgbWVzc2FnZT86IHN0cmluZyxcbiAgZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yLFxuICBhbGxFcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSA9IFtdXG4pID0+IHtcbiAgY29uc3QgZm9ybWF0dGVkTWVzc2FnZSA9XG4gICAgbWVzc2FnZSAmJiBtZXNzYWdlIGluIGN1c3RvbUVycm9yTWVzc2FnZVxuICAgICAgPyBjdXN0b21FcnJvck1lc3NhZ2VbbWVzc2FnZV0oZXJyb3IhLCBhbGxFcnJvcnMubGVuZ3RoLCBhbGxFcnJvcnMpXG4gICAgICA6IG1lc3NhZ2U7XG4gIHJldHVybiBmb3JtYXR0ZWRNZXNzYWdlID8gYDxwIGNsYXNzPVwiaXMtbm9ybWFsXCI+JHtmb3JtYXR0ZWRNZXNzYWdlfTwvcD5gIDogJyc7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0RXJyb3IgPSAoXG4gIGVycm9yPzogSVZhbGlkYXRpb25FcnJvcixcbiAgYWxsRXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10gPSBbXVxuKTogSVZhbGlkYXRpb25FcnJvciB8IHVuZGVmaW5lZCA9PlxuICBlcnJvclxuICAgID8ge1xuICAgICAgICBsZXZlbDogJ2Vycm9yJyxcbiAgICAgICAgLi4uZXJyb3IsXG4gICAgICAgIG1hcEVycm9yOiBlcnJvci5tZXNzYWdlID09PSBtYXBFcnJvck1lc3NhZ2UsXG4gICAgICAgIG1lc3NhZ2U6IGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZShlcnJvci5tZXNzYWdlLCBlcnJvciwgYWxsRXJyb3JzKVxuICAgICAgfVxuICAgIDogdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNFcnJvciA9IChlcnJvcj86IElWYWxpZGF0aW9uRXJyb3IpID0+IGVycm9yICYmIChlcnJvci5sZXZlbCA9PT0gJ2Vycm9yJyB8fCAhZXJyb3IubGV2ZWwpO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNXYXJuaW5nID0gKGVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT4gZXJyb3IgJiYgZXJyb3IubGV2ZWwgPT09ICd3YXJuaW5nJztcblxuZXhwb3J0IGNvbnN0IGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT4gISFwYXJhbXMgJiYgJ21pc3NpbmdQcm9wZXJ0eScgaW4gcGFyYW1zO1xuXG5leHBvcnQgY29uc3QgaXNNaXNzaW5nT25lT2ZFcnJvciA9ICh7IGtleXdvcmQsIHNjaGVtYVBhdGggfTogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAga2V5d29yZCA9PT0gJ3JlcXVpcmVkJyAmJiAoc2NoZW1hUGF0aCB8fCAnJykuaW5jbHVkZXMoJ29uZU9mJyk7XG5cbmNvbnN0IGlzRmFpbGluZ0tleXdvcmRFcnJvciA9ICh7IHBhcmFtcyB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PiAhIXBhcmFtcyAmJiAnZmFpbGluZ0tleXdvcmQnIGluIHBhcmFtcztcblxuZXhwb3J0IGNvbnN0IGZpbHRlckVycm9yID0gKGVycm9yOiBJVmFsaWRhdGlvbkVycm9yKSA9PiBbaXNGYWlsaW5nS2V5d29yZEVycm9yXS5ldmVyeShmdW5jID0+ICFmdW5jKGVycm9yKSk7XG5cbmV4cG9ydCBjb25zdCBtaXNzaW5nTm9kZUVycm9ycyA9IChlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSkgPT5cbiAgZXJyb3JzLmZpbHRlcihcbiAgICAoeyBrZXl3b3JkLCBwYXJhbXMgfSkgPT5cbiAgICAgIGtleXdvcmQgPT09ICdyZXF1aXJlZCcgJiYgKHBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5ID09PSAnQHR5cGUnIHx8IHBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5ID09PSAnQGlkJylcbiAgKTtcbiJdfQ==
|