@mnaoumov/typescript-dev-toolkit 6.0.2 → 6.2.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/README.md +36 -0
- package/dist/lib/cjs/changelog-grouping.cjs +132 -0
- package/dist/lib/cjs/changelog-grouping.d.cts +59 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/linters/eslint-config.cjs +4 -1
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +3 -1
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +4 -1
- package/dist/lib/cjs/linters/eslint-rules/index.d.cts +1 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-spread.cjs +114 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-spread.d.cts +12 -0
- package/dist/lib/cjs/version.cjs +111 -23
- package/dist/lib/cjs/version.d.cts +41 -0
- package/dist/lib/esm/changelog-grouping.d.mts +59 -0
- package/dist/lib/esm/changelog-grouping.mjs +106 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/linters/eslint-config.mjs +4 -1
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +3 -1
- package/dist/lib/esm/linters/eslint-rules/index.d.mts +1 -0
- package/dist/lib/esm/linters/eslint-rules/index.mjs +3 -1
- package/dist/lib/esm/linters/eslint-rules/prefer-spread.d.mts +12 -0
- package/dist/lib/esm/linters/eslint-rules/prefer-spread.mjs +80 -0
- package/dist/lib/esm/version.d.mts +41 -0
- package/dist/lib/esm/version.mjs +114 -23
- package/linters/eslint-rules/prefer-spread/package.json +6 -0
- package/package.json +21 -21
|
@@ -486,6 +486,7 @@ function getInHousePluginConfigs(context) {
|
|
|
486
486
|
"typescript-dev-toolkit/prefer-dedent": "error",
|
|
487
487
|
"typescript-dev-toolkit/prefer-logical-operator-over-ternary": "error",
|
|
488
488
|
"typescript-dev-toolkit/prefer-noop-async": "error",
|
|
489
|
+
"typescript-dev-toolkit/prefer-spread": "error",
|
|
489
490
|
"typescript-dev-toolkit/readonly-interface-members": "error",
|
|
490
491
|
"typescript-dev-toolkit/require-method-template": "error",
|
|
491
492
|
"typescript-dev-toolkit/require-super-call": "off"
|
|
@@ -1016,6 +1017,8 @@ function getUnicornConfigs(context) {
|
|
|
1016
1017
|
* reported before the state it contradicts.
|
|
1017
1018
|
*/
|
|
1018
1019
|
"unicorn/prefer-simple-condition-first": "off",
|
|
1020
|
+
// The replacement proves slice receivers are arrays before proposing a spread, preserving typed-array copies.
|
|
1021
|
+
"unicorn/prefer-spread": "off",
|
|
1019
1022
|
/*
|
|
1020
1023
|
* `URL.canParse` requires Node 18.17, well above the Node 16.16.0 floor that shipped source targets
|
|
1021
1024
|
* (see the Obsidian plugin layer's `minimumNodeVersion`). The rule can therefore never be satisfied there, so it is off at the
|
|
@@ -1088,4 +1091,4 @@ function getUnicornConfigs(context) {
|
|
|
1088
1091
|
getGlobalIgnoreConfigs,
|
|
1089
1092
|
getTypeScriptEslintConfigs
|
|
1090
1093
|
});
|
|
1091
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBnZW5lcmljIGhhbGYgb2YgdGhlIHNoYXJlZCBFU0xpbnQgY29uZmlndXJhdGlvbiwgZm9yIGFueSBUeXBlU2NyaXB0IHByb2plY3QuXG4gKlxuICogSXQgaW50ZWdyYXRlcyBFU0xpbnQncyBvd24gcmVjb21tZW5kZWQgcnVsZXMsIGB0eXBlc2NyaXB0LWVzbGludGAsIGBAc3R5bGlzdGljL2VzbGludC1wbHVnaW5gLFxuICogYGVzbGludC1wbHVnaW4taW1wb3J0LXhgIHdpdGggaXRzIFR5cGVTY3JpcHQgcmVzb2x2ZXIsIGBlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3RgLCBgZXNsaW50LXBsdWdpbi11bmljb3JuYCxcbiAqIGBlc2xpbnQtcGx1Z2luLW5gIGFuZCB0aGUgZ2VuZXJpYyBpbi1ob3VzZSBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgKHRoZSBPYnNpZGlhbiBwbHVnaW4gb25lIGxpdmVzIGluXG4gKiBgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0YCkgYnVpbGRzIG9uIHtAbGluayBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc30gYW5kIGFkZHMgb25seSB3aGF0IGlzIHNwZWNpZmljIHRvIGl0LlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWNsYXJhdGl2ZSBFU0xpbnQgcnVsZS9wbHVnaW4gY29uZmlndXJhdGlvbjsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyBFU0xpbnQsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gJ2VzbGludCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gV2UgZGlzYWJsZWQgbWFnaWMgbnVtYmVycyBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYWxsIG92ZXIgdGhlIGNvbmZpZ3MuICovXG5pbXBvcnQgY29tbWVudHNDb25maWdzIGZyb20gJ0Blc2xpbnQtY29tbXVuaXR5L2VzbGludC1wbHVnaW4tZXNsaW50LWNvbW1lbnRzL2NvbmZpZ3MnO1xuaW1wb3J0IHsgaW5jbHVkZUlnbm9yZUZpbGUgfSBmcm9tICdAZXNsaW50L2NvbmZpZy1oZWxwZXJzJztcbmltcG9ydCBlc2xpbnQgZnJvbSAnQGVzbGludC9qcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgc3R5bGlzdGljIGZyb20gJ0BzdHlsaXN0aWMvZXNsaW50LXBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIgfSBmcm9tICdlc2xpbnQtaW1wb3J0LXJlc29sdmVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZmxhdENvbmZpZ3MgYXMgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzIH0gZnJvbSAnZXNsaW50LXBsdWdpbi1pbXBvcnQteCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IG5vZGVQbHVnaW4gZnJvbSAnZXNsaW50LXBsdWdpbi1uJztcbmltcG9ydCB7IGNvbmZpZ3MgYXMgcGVyZmVjdGlvbmlzdENvbmZpZ3MgfSBmcm9tICdlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBpbmRleGAgaXMgdG9vIGNvbmZ1c2luZy5cbmltcG9ydCB1bmljb3JuIGZyb20gJ2VzbGludC1wbHVnaW4tdW5pY29ybic7XG5pbXBvcnQge1xuICBkZWZpbmVDb25maWcsXG4gIGdsb2JhbElnbm9yZXNcbn0gZnJvbSAnZXNsaW50L2NvbmZpZyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IHRzZXNsaW50IGZyb20gJ3R5cGVzY3JpcHQtZXNsaW50JztcblxuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBnZXRSb290Rm9sZGVyIH0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQgeyBub1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cmllcyB9IGZyb20gJy4vZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzJztcbmltcG9ydCB7XG4gIElOX0hPVVNFX0VTTElOVF9QTFVHSU5fTkFNRSxcbiAgaW5Ib3VzZUVzbGludFBsdWdpblxufSBmcm9tICcuL2VzbGludC1ydWxlcy9pbi1ob3VzZS1wbHVnaW4udHMnO1xuaW1wb3J0IHsgQ0xBVURFX1dPUktUUkVFU19JR05PUkVfR0xPQiB9IGZyb20gJy4vbGludC1pZ25vcmVzLnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUVzbGludENvbmZpZ3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBidWlsZHMgY3VzdG9tIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICogQHJldHVybnMgVGhlIGN1c3RvbSBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Db25maWdzPzogKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpID0+IExpbnRlci5Db25maWdbXTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGVkaXRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdENvbnRleHQ/OiAoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIG9sZGVzdCBOb2RlIHZlcnNpb24gc2hpcHBlZCBzb3VyY2UgaGFzIHRvIHJ1biBvbiwgYXMgYSBzZW12ZXIgcmFuZ2U6IGEgbGlicmFyeSB0aGF0IGFsc28gcnVucyBpbnNpZGUgYW5cbiAgICogb2xkZXIgcnVudGltZSB0aGFuIGl0cyBvd24gdG9vbGluZyAoYW4gT2JzaWRpYW4gcmVuZGVyZXIsIHNheSkgbmFtZXMgdGhhdCBydW50aW1lJ3MgTm9kZSBoZXJlLiBXaGVuIG9taXR0ZWQsXG4gICAqIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGRlc3QgTm9kZSB2ZXJzaW9uIHNoaXBwZWQgc291cmNlIGhhcyB0byBydW4gb24sIGFzIGEgc2VtdmVyIHJhbmdlLiBXaGVuIG9taXR0ZWQsIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzXG4gICAqIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdldE5vZGVDb21wYXRDb25maWdzUGFyYW1zIHtcbiAgcmVhZG9ubHkgY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dDtcbiAgcmVhZG9ubHkgbWluaW11bU5vZGVWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZm9yIGRlZmluaW5nIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVzbGludENvbmZpZ0NvbnRleHQge1xuICAvKipcbiAgICogVGhlIHJvb3QgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb290Q29uZmlnRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JpcHQgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXJzIGhvbGRpbmcgdGhlIHByb2plY3QncyBzb3VyY2VzLCBieSBkZWZhdWx0IGBzcmNgIGFsb25lLiBBIHdvcmtzcGFjZSB3aG9zZSBwYWNrYWdlcyBlYWNoIGhhdmUgdGhlaXIgb3duXG4gICAqIGBzcmNgIGFkZHMgdGhlbSBoZXJlLCBzbyB0aGUgcnVsZXMga2V5ZWQgb24gYSBmaWxlJ3MgbmFtZSBpbnNpZGUgYSBzb3VyY2UgZm9sZGVyIHJlYWNoIHRob3NlIHBhY2thZ2VzIHRvby5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2VGb2xkZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdGVzdCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBhbGwgZmlsZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhbGwgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgYWxsRmlsZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy50ZXN0RmlsZXMsIC4uLnRoaXMuc2NyaXB0RmlsZXMsIC4uLnRoaXMucm9vdENvbmZpZ0ZpbGVzLCAuLi50aGlzLnNvdXJjZUZpbGVzXTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbnRleHQgb2YgYSBwcm9qZWN0IGxhaWQgb3V0IHRoZSBjb252ZW50aW9uYWwgd2F5OiBzb3VyY2VzIHVuZGVyIGBzcmNgLCBzY3JpcHRzIHVuZGVyIGBzY3JpcHRzYCwgdGVzdHNcbiAqIGJlc2lkZSB0aGUgc291cmNlcyBvciB1bmRlciBgX190ZXN0c19fYCwgYW5kIHRoZSBjb21taXRsaW50LCBFU0xpbnQgYW5kIFZpdGVzdCBjb25maWd1cmF0aW9ucyBhdCB0aGUgcm9vdC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk6IEVzbGludENvbmZpZ0NvbnRleHQge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEVzbGludENvbmZpZ0NvbnRleHQoKTtcbiAgY29udGV4dC5zb3VyY2VGb2xkZXJzLnB1c2goUmVwb1BhdGhzLlNyYyk7XG4gIGNvbnRleHQucm9vdENvbmZpZ0ZpbGVzLnB1c2goXG4gICAgUmVwb1BhdGhzLkNvbW1pdGxpbnRDb25maWdUcyxcbiAgICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzLFxuICAgIFJlcG9QYXRocy5WaXRlc3RDb25maWdUc1xuICApO1xuICBjb250ZXh0LnNjcmlwdEZpbGVzLnB1c2goXG4gICAgam9pbihSZXBvUGF0aHMuU2NyaXB0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcylcbiAgKTtcbiAgY29udGV4dC5zb3VyY2VGaWxlcy5wdXNoKFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuU3JjLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRzeClcbiAgKTtcbiAgY29udGV4dC50ZXN0RmlsZXMucHVzaChcbiAgICBqb2luKFJlcG9QYXRocy5UZXN0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuTW9ja3MsIFJlcG9QYXRocy5BbnlQYXRoLCBSZXBvUGF0aHMuQW55VHMpLFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUZXN0VHMpLFxuICAgIC8qXG4gICAgICogQSBidWlsZC1zY3JpcHQgdGVzdCBpcyBhIFRFU1QsIGFuZCB0aGlzIGNvbnZlbnRpb24gcHV0cyBpdCBpbiBhIGAqLnRlc3QudHNgIHVuZGVyIGBzY3JpcHRzL2AgLS0gYmVzaWRlIHRoZVxuICAgICAqIHNjcmlwdCBpdCBjb3ZlcnMgcmF0aGVyIHRoYW4gdW5kZXIgYHNyYy9gLiBXaXRob3V0IHRoaXMgZ2xvYiBpdCBtYXRjaGVkIGBzY3JpcHRGaWxlc2AgYWxvbmUsIHNvIGV2ZXJ5IHJlbGF4YXRpb25cbiAgICAgKiB0aGF0IGtleXMgb24gYGNvbnRleHQudGVzdEZpbGVzYCBtaXNzZWQgaXQ6IGBuby1tYWdpYy1udW1iZXJzYCBmaXJlZCBvbiBhIHN1aXRlIHdob3NlIHdob2xlIHN1YmplY3QgaXMgcmVjb3JkZWRcbiAgICAgKiBudW1iZXJzLCBhbmQgYHVuaWNvcm4vY29uc2lzdGVudC1mdW5jdGlvbi1zY29waW5nYCBvbiB0aGUgcGVyLXN1aXRlIGZpeHR1cmUgZmFjdG9yaWVzIHRoZSBibG9jayBhdCB0aGUgYm90dG9tXG4gICAgICogb2YgYGdldFVuaWNvcm5Db25maWdzYCBzYXlzIHRlc3RzIGV4aXN0IHRvIGFsbG93LlxuICAgICAqXG4gICAgICogVGhlIGZpbGUgbm93IG1hdGNoZXMgQk9USCBsaXN0cywgYW5kIHRoYXQgaXMgZGVsaWJlcmF0ZSByYXRoZXIgdGhhbiBhbiBvdmVybGFwIHRvIHJlc29sdmU6IGV2ZXJ5dGhpbmcgc2NvcGVkIHRvXG4gICAgICogYGNvbnRleHQuc2NyaXB0RmlsZXNgIG9ubHkgdHVybnMgcnVsZXMgT0ZGIChgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXNgLCBgdW5pY29ybi9uby1wcm9jZXNzLWV4aXRgKSwgYm90aCBvZlxuICAgICAqIHdoaWNoIGEgc2NyaXB0IHRlc3Qgd2FudHMgYXMgbXVjaCBhcyB0aGUgc2NyaXB0IGRvZXMsIHNvIHRoZSB0d28gc2V0cyBjb21wb3NlIGluc3RlYWQgb2YgY29tcGV0aW5nLiBLZWVwIGl0IHRoYXRcbiAgICAgKiB3YXkgLS0gYSBydWxlIHR1cm5lZCBPTiBmb3IgYHNjcmlwdEZpbGVzYCB3b3VsZCBsYW5kIG9uIHRoZXNlIGZpbGVzIHRvbywgYW5kIGZsYXQtY29uZmlnIG9yZGVyLCBub3QgaW50ZW50LFxuICAgICAqIHdvdWxkIGRlY2lkZSB3aGljaCBzaWRlIHdvbi5cbiAgICAgKi9cbiAgICBqb2luKFJlcG9QYXRocy5TY3JpcHRzLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRlc3RUcylcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbnMgb2YgYSBnZW5lcmljIFR5cGVTY3JpcHQgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBkZWZpbmluZyBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lRXNsaW50Q29uZmlncyhvcHRpb25zOiBEZWZpbmVFc2xpbnRDb25maWdzT3B0aW9ucyA9IHt9KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk7XG4gIG9wdGlvbnMuZWRpdENvbnRleHQ/Lihjb250ZXh0KTtcbiAgY29uc3QgY3VzdG9tQ29uZmlncyA9IG9wdGlvbnMuY3VzdG9tQ29uZmlncz8uKGNvbnRleHQpID8/IFtdO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpLFxuICAgIC4uLmdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICAuLi4ob3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW1Ob2RlVmVyc2lvbjogb3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gfSlcbiAgICB9KSxcbiAgICAuLi5jdXN0b21Db25maWdzXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb25zIG9mIEVTTGludCdzIG93biBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgcmVhZHMgaXQgdG8gbGVhcm4gd2hpY2ggY29yZSBydWxlcyB0aGlzXG4gKiBjb25maWd1cmF0aW9uIHNldHMgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIEVTTGludCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW2VzbGludC5jb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnYWNjZXNzb3ItcGFpcnMnOiAnZXJyb3InLFxuICAgICAgICAnYXJyYXktY2FsbGJhY2stcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NhbWVsY2FzZSc6ICdlcnJvcicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIHJlcG9ydHMgcGVyIGNvbW1lbnQgVE9LRU4sIHNvIGV2ZXJ5IGNvbnRpbnVhdGlvbiBsaW5lIG9mIGEgd3JhcHBlZCBgLy9gIGNvbW1lbnQgaXMgaXRzIG93biB0b2tlblxuICAgICAgICAgKiB0aGF0IHdvdWxkIGhhdmUgdG8gc3RhcnQgd2l0aCBhIGNhcGl0YWwg4oCUIHdoaWNoIGlzIGhvdyBwcm9zZSBlbmRzIHVwIHdpdGggY2FwaXRhbHMgbWlkLXNlbnRlbmNlLlxuICAgICAgICAgKiBgaWdub3JlQ29uc2VjdXRpdmVDb21tZW50c2AgZXhlbXB0cyBhIGxpbmUgY29tbWVudCB0aGF0IGRpcmVjdGx5IGZvbGxvd3MgYW5vdGhlciBvbmUsIHdoaWNoIGlzIGV4YWN0bHkgdGhlXG4gICAgICAgICAqIHNoYXBlIG9mIGEgd3JhcHBlZCBibG9jaywgd2hpbGUgc3RpbGwgaG9sZGluZyBpdHMgRklSU1QgbGluZSB0byBhIGNhcGl0YWwuIEJsb2NrIGNvbW1lbnRzIG5lZWQgbm8gc3VjaFxuICAgICAgICAgKiBvcHRpb246IGEgYmxvY2sgY29tbWVudCBpcyBhIHNpbmdsZSB0b2tlbiBob3dldmVyIG1hbnkgbGluZXMgaXQgc3BhbnMuXG4gICAgICAgICAqIGBpZ25vcmVQYXR0ZXJuYCBjb3ZlcnMgdGhlIGhhbGYgdGhhdCBsZWF2ZXMgYmVoaW5kOiBhIGNvbW1lbnQgd2hvc2UgRklSU1Qgd29yZCBpcyBhIGNhbWVsQ2FzZSBpZGVudGlmaWVyIGlzXG4gICAgICAgICAqIGV4ZW1wdCwgc28gYSBjb21tZW50IHRoYXQgb3BlbnMgYnkgbmFtaW5nIGEgc3ltYm9sIGtlZXBzIHRoZSBuYW1lIGEgcmVhZGVyIGNhbiBncmVwIGluc3RlYWQgb2YgYSBQYXNjYWxDYXNlXG4gICAgICAgICAqIG9uZSB0aGF0IGV4aXN0cyBub3doZXJlLiBUaGUgcnVsZSBhbmNob3JzIHRoZSBwYXR0ZXJuIGF0IHRoZSBzdGFydCBvZiB0aGUgY29tbWVudCBhbmQgYFthLXpBLVowLTldYCBtYXRjaGVzXG4gICAgICAgICAqIG5vIHdoaXRlc3BhY2UsIHNvIGl0IGNhbiBvbmx5IGV2ZXIgbWF0Y2ggdGhhdCBmaXJzdCB3b3JkIOKAlCBvcmRpbmFyeSBsb3dlcmNhc2UgcHJvc2Ugc3RheXMgcmVwb3J0ZWQuIEJvdGhcbiAgICAgICAgICogb3B0aW9uIGJhZ3MgbmVlZCBpdCwgYW5kIGBibG9ja2Aga2VlcHMgaXRzIGB2OGAgZXhlbXB0aW9uIGJ5IGFsdGVybmF0aW9uIHJhdGhlciB0aGFuIGxvc2luZyBpdC5cbiAgICAgICAgICovXG4gICAgICAgICdjYXBpdGFsaXplZC1jb21tZW50cyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdhbHdheXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsb2NrOiB7IGlnbm9yZVBhdHRlcm46ICd2OHxbYS16XVthLXpBLVowLTldKltBLVpdJyB9LFxuICAgICAgICAgICAgbGluZTogeyBpZ25vcmVDb25zZWN1dGl2ZUNvbW1lbnRzOiB0cnVlLCBpZ25vcmVQYXR0ZXJuOiAnW2Etel1bYS16QS1aMC05XSpbQS1aXScgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2NvbXBsZXhpdHknOiAnZXJyb3InLFxuICAgICAgICAnY29uc2lzdGVudC10aGlzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2N1cmx5JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZSc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LWNhc2UtbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LXBhcmFtLWxhc3QnOiAnZXJyb3InLFxuICAgICAgICAnZXFlcWVxJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZS1tYXRjaGluZyc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnZGVjbGFyYXRpb24nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93QXJyb3dGdW5jdGlvbnM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnZ3JvdXBlZC1hY2Nlc3Nvci1wYWlycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdnZXRCZWZvcmVTZXQnXG4gICAgICAgIF0sXG4gICAgICAgICdndWFyZC1mb3ItaW4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tYWxlcnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tYXJyYXktY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tYml0d2lzZSc6ICdlcnJvcicsXG4gICAgICAgICduby1jYWxsZXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tY29uc29sZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWNvbnN0cnVjdG9yLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICduby1kaXYtcmVnZXgnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZWxzZS1yZXR1cm4nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd0Vsc2VJZjogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1lbXB0eS1mdW5jdGlvbic6ICdlcnJvcicsXG4gICAgICAgICduby1leHRlbmQtbmF0aXZlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dHJhLWJpbmQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtbGFiZWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW1wbGljaXQtY29lcmNpb24nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICAnISEnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWlubmVyLWRlY2xhcmF0aW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbC12YXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbGFiZWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmUtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmVseS1pZic6ICdlcnJvcicsXG4gICAgICAgICduby1sb29wLWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbWFnaWMtbnVtYmVycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldGVjdE9iamVjdHM6IHRydWUsXG4gICAgICAgICAgICBlbmZvcmNlQ29uc3Q6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmU6IFtcbiAgICAgICAgICAgICAgLTEsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1tdWx0aS1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbXVsdGktc3RyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lZ2F0ZWQtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lc3RlZC10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICduby1vYmplY3QtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tb2N0YWwtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXJlc3RyaWN0ZWQtc3ludGF4JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgLi4ubm9SZXN0cmljdGVkU3ludGF4UnVsZUVudHJpZXNcbiAgICAgICAgXSxcbiAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2NyaXB0LXVybCc6ICdlcnJvcicsXG4gICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNoYWRvdyc6ICdlcnJvcicsXG4gICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubmVlZGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbmNhdCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAnb3BlcmF0b3ItYXNzaWdubWVudCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbmFtZWQtY2FwdHVyZS1ncm91cCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LWhhcy1vd24nOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3JhZGl4JzogJ2Vycm9yJyxcbiAgICAgICAgJ3JlcXVpcmUtYXRvbWljLXVwZGF0ZXMnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAndW5pY29kZS1ib20nOiAnZXJyb3InLFxuICAgICAgICAndmFycy1vbi10b3AnOiAnZXJyb3InLFxuICAgICAgICAneW9kYSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduby1tYWdpYy1udW1iZXJzJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKipcbiAqIFRoZSBnbG9iYWwgaWdub3JlczogZXZlcnl0aGluZyBgLmdpdGlnbm9yZWAgbmFtZXMsIHBsdXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLmdldEdpdElnbm9yZUNvbmZpZ3MoKSxcbiAgICAvKlxuICAgICAqIE9uIHRvcCBvZiBgLmdpdGlnbm9yZWAsIG5vdCBpbnN0ZWFkIG9mIGl0OiBnaXQgZXhjbHVkZXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIgdGhyb3VnaFxuICAgICAqIGAuZ2l0L2luZm8vZXhjbHVkZWAsIHdoaWNoIGBpbmNsdWRlSWdub3JlRmlsZWAgYWJvdmUgZG9lcyBub3QgcmVhZC4gU2VlIGBsaW50LWlnbm9yZXMudHNgLlxuICAgICAqL1xuICAgIGdsb2JhbElnbm9yZXMoW0NMQVVERV9XT1JLVFJFRVNfSUdOT1JFX0dMT0JdLCAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9jbGF1ZGUtd29ya3RyZWVzJylcbiAgKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2VuZXJpYyBsYXllcnMgb2YgdGhlIHNoYXJlZCBjb25maWd1cmF0aW9uLCB3aXRob3V0IHRoZSBnbG9iYWwgaWdub3Jlcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlncyhwYXJhbXM6IEdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzUGFyYW1zKTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgeyBjb250ZXh0IH0gPSBwYXJhbXM7XG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0RXNsaW50Q29yZUNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0VHNlc2xpbnRDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldFN0eWxpc3RpY0NvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0SW1wb3J0WENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0VW5pY29ybkNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpLFxuICAgIC4uLmdldEVzbGludENvbW1lbnRzQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRJbkhvdXNlUGx1Z2luQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXROb2RlQ29tcGF0Q29uZmlncyh7IGNvbnRleHQsIG1pbmltdW1Ob2RlVmVyc2lvbjogcGFyYW1zLm1pbmltdW1Ob2RlVmVyc2lvbiB9KVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRFc2xpbnRDb21tZW50c0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgcmVjb21tZW5kZWRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICBleHRlbmRzOiBbY29tbWVudHNDb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQGVzbGludC1jb21tdW5pdHkvZXNsaW50LWNvbW1lbnRzL3JlcXVpcmUtZGVzY3JpcHRpb24nOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAnaW1wb3J0LXgvcmVzb2x2ZXItbmV4dCc6IFtcbiAgICAgICAgICBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIoe1xuICAgICAgICAgICAgYWx3YXlzVHJ5VHlwZXM6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0R2l0SWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBnaXRpZ25vcmVQYXRoID0gam9pbihnZXRSb290Rm9sZGVyKCkgPz8gJycsICcuZ2l0aWdub3JlJyk7XG4gIHJldHVybiBleGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpID8gW2luY2x1ZGVJZ25vcmVGaWxlKGdpdGlnbm9yZVBhdGgpXSA6IFtdO1xufVxuXG5mdW5jdGlvbiBnZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy50eXBlc2NyaXB0LFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MuZXJyb3JzLFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3Mud2FybmluZ3NcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L2NvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvZXh0ZW5zaW9ucyc6IFsnZXJyb3InLCAnaWdub3JlUGFja2FnZXMnXSxcbiAgICAgICAgJ2ltcG9ydC14L2ZpcnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L2ltcG9ydHMtZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbmV3bGluZS1hZnRlci1pbXBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYWJzb2x1dGUtcGF0aCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWNvbW1vbmpzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWN5Y2xlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlcHJlY2F0ZWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1keW5hbWljLXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1tdXRhYmxlLWV4cG9ydHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lc3BhY2UnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVsYXRpdmUtcGFja2FnZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVzdHJpY3RlZC1wYXRocyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1zZWxmLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby11bmFzc2lnbmVkLWltcG9ydCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICcqKi8qLmNzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNhc3MnLFxuICAgICAgICAgICAgICAnKiovKi5zY3NzJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVudXNlZC1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdpbXBvcnQteC9uby11c2VsZXNzLXBhdGgtc2VnbWVudHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8td2VicGFjay1sb2FkZXItc3ludGF4JzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc2NyaXB0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQSB0ZXN0IHJ1bnMgdW5kZXIgdGhlIHRlc3QgcnVubmVyIGluIE5vZGUgYW5kIGlzIG5ldmVyIGJ1bmRsZWQgaW50byBhbnl0aGluZyB0aGF0IHNoaXBzLlxuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnJvb3RDb25maWdGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5Ib3VzZVBsdWdpbkNvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIFtJTl9IT1VTRV9FU0xJTlRfUExVR0lOX05BTUVdOiBpbkhvdXNlRXNsaW50UGx1Z2luXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLWtleXdvcmQtaWRlbnRpZmllcnMnOiAnZXJyb3InLFxuICAgICAgICAvKlxuICAgICAgICAgKiBNZWFzdXJlZCBvdmVyIDMyIHBsdWdpbnMgYnVpbHQgb24gdGhpcyBjb25maWcgYmVmb3JlIGl0IHdhcyB0dXJuZWQgb24gKDIwMjYtMDktMjQpOiAyOSBoYWQgbm8gZmluZGluZyxcbiAgICAgICAgICogdGhlIG90aGVyIHRocmVlIGhhZCA4IGJldHdlZW4gdGhlbSwgZXZlcnkgb25lIGEgZ2VudWluZWx5IGRlYWQgbGluay5cbiAgICAgICAgICovXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVucmVzb2x2ZWQtanNkb2MtbGluayc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVudXNlZC1wYXJhbXMtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnOiAnZXJyb3InLFxuICAgICAgICAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoJzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcHJlZmVyLWRlZGVudCc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3ByZWZlci1sb2dpY2FsLW9wZXJhdG9yLW92ZXItdGVybmFyeSc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3ByZWZlci1ub29wLWFzeW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMnOiAnZXJyb3InLFxuICAgICAgICAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZXF1aXJlLW1ldGhvZC10ZW1wbGF0ZSc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3JlcXVpcmUtc3VwZXItY2FsbCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZUNvbXBhdENvbmZpZ3MocGFyYW1zOiBHZXROb2RlQ29tcGF0Q29uZmlnc1BhcmFtcyk6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IHsgY29udGV4dCwgbWluaW11bU5vZGVWZXJzaW9uIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZlcnNpb25PcHRpb25zID0gbWluaW11bU5vZGVWZXJzaW9uID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdmVyc2lvbjogbWluaW11bU5vZGVWZXJzaW9uIH07XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc291cmNlRmlsZXMsXG4gICAgICBpZ25vcmVzOiBbXG4gICAgICAgIC4uLmNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgICAvLyBEZXYtb25seSB0b29saW5nIChidWlsZCwgbGludCwgdmVyc2lvbikgcnVucyB2aWEgYGppdGlgIGluIHRoZSBkZXZlbG9wZXIncyBOb2RlIGVudmlyb25tZW50IGFuZCBuZXZlciBzaGlwcywgc28gdGhlIHNoaXBwZWQgc291cmNlJ3MgTm9kZSBmbG9vciBkb2VzIG5vdCBhcHBseSB0byBpdC5cbiAgICAgICAgLi4uY29udGV4dC5zY3JpcHRGaWxlc1xuICAgICAgXSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgbjogbm9kZVBsdWdpblxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL2VzLWJ1aWx0aW5zJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgdmVyc2lvbk9wdGlvbnNcbiAgICAgICAgXSxcbiAgICAgICAgJ24vbm8tdW5zdXBwb3J0ZWQtZmVhdHVyZXMvbm9kZS1idWlsdGlucyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGBCbG9iYCBhbmQgYEZpbGVgIGFyZSBET00gd2ViIGdsb2JhbHMgcHJlc2VudCBpbiBldmVyeSBzdXBwb3J0ZWQgYnJvd3NlciBlbmdpbmUsIGJ1dCB0aGUgcnVsZSBhbHNvIGtub3dzIHRoZW0gYXMgTm9kZSdzIGV4cGVyaW1lbnRhbCBidWlsdGlucyBhbmQgY2Fubm90IHRlbGwgd2hpY2ggaXMgbWVhbnQuIElnbm9yZSB0aGVtIGdsb2JhbGx5OyBnZW51aW5lbHkgbmV3ZXIgQVBJcyAoZS5nLiBgQWJvcnRTaWduYWwuYW55YCkgc3RheSBmbGFnZ2VkLlxuICAgICAgICAgICAgaWdub3JlczogW1xuICAgICAgICAgICAgICAnQmxvYicsXG4gICAgICAgICAgICAgICdGaWxlJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC4uLnZlcnNpb25PcHRpb25zXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW3tcbiAgICBleHRlbmRzOiBbcGVyZmVjdGlvbmlzdENvbmZpZ3NbJ3JlY29tbWVuZGVkLWFscGhhYmV0aWNhbCddXSxcbiAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpXG4gIH1dKTtcbn1cblxuLyoqXG4gKiBMYXlvdXQgYmVsb25ncyB0byBkcHJpbnQuIE9ubHkgdGhlIGBAc3R5bGlzdGljYCBydWxlcyBkcHJpbnQgY2Fubm90IGV4cHJlc3MgYXJlIGtlcHQsIGVhY2ggdmVyaWZpZWQgYnkgZm9ybWF0dGluZyBhXG4gKiB2aW9sYXRpbmcgcHJvYmUgd2l0aCB0aGUgc2hhcmVkIGBkcHJpbnQuanNvbmAgYW5kIGxpbnRpbmcgdGhlIHJlc3VsdDogdGhlIHJ1bGUgc3RpbGwgcmVwb3J0cyB0aGVyZS4gRXZlcnkgb3RoZXJcbiAqIHJ1bGUgb2YgYHN0eWxpc3RpYy5jb25maWdzLnJlY29tbWVuZGVkYCB3YXMgZHJvcHBlZCwgYmVjYXVzZSBkcHJpbnQgZml4ZXMgaXQgYWxyZWFkeSwgb3IgYmVjYXVzZSBpdCBmb3VnaHQgZHByaW50XG4gKiAoYHdyYXAtaWlmZWAsIHdob3NlIHBhcmVudGhlc2VzIGRwcmludCBzdHJpcHMsIGBqc3gtcXVvdGVzYCBhZ2FpbnN0IGBxdW90ZVN0eWxlYCwgYG9wZXJhdG9yLWxpbmVicmVha2AsIGBpbmRlbnRgKS5cbiAqIFRoZSBrZXB0IHJ1bGVzIGFncmVlIHdpdGggdGhlIHNoYXJlZCBQcmV0dGllciBhbmQgQmlvbWUgY29uZmlndXJhdGlvbnMgdG9vLCBzbyBlaXRoZXIgY2FuIG93biBsYXlvdXQgaW5zdGVhZC5cbiAqXG4gKiBAcGFyYW0gY29udGV4dCAtIFRoZSB7QGxpbmsgRXNsaW50Q29uZmlnQ29udGV4dH0uXG4gKiBAcmV0dXJucyBUaGUgY29uZmlncy5cbiAqL1xuZnVuY3Rpb24gZ2V0U3R5bGlzdGljQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuYWxsRmlsZXMoKSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgJ0BzdHlsaXN0aWMnOiBzdHlsaXN0aWNcbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAvLyBUaGUgZHByaW50IGBhcnJvd0Z1bmN0aW9uLnVzZVBhcmVudGhlc2VzYCBkZWZhdWx0LCBgbWFpbnRhaW5gLCBrZWVwcyBgeCA9PiB4YC5cbiAgICAgICAgJ0BzdHlsaXN0aWMvYXJyb3ctcGFyZW5zJzogWydlcnJvcicsICdhbHdheXMnXSxcbiAgICAgICAgLy8gTm90IGxheW91dDogaXQgcmVtb3ZlcyBvciBhZGRzIHRoZSBicmFjZXMgdGhlbXNlbHZlcywgd2hpY2ggZHByaW50IG5ldmVyIGRvZXMuXG4gICAgICAgICdAc3R5bGlzdGljL2pzeC1jdXJseS1icmFjZS1wcmVzZW5jZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiAnbmV2ZXInLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHByb3BFbGVtZW50VmFsdWVzYCBpcyB0aGUgcnVsZSdzIG93biBvcHRpb24gbmFtZS5cbiAgICAgICAgICAgIHByb3BFbGVtZW50VmFsdWVzOiAnYWx3YXlzJyxcbiAgICAgICAgICAgIHByb3BzOiAnbmV2ZXInXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAvLyBUaGUgZHByaW50IGZvcm1hdHRlciBrZWVwcyBibGFuayBsaW5lcyBhcyB3cml0dGVuIGFuZCBuZXZlciBpbnNlcnRzIG9uZS5cbiAgICAgICAgJ0BzdHlsaXN0aWMvbGluZXMtYmV0d2Vlbi1jbGFzcy1tZW1iZXJzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ2Fsd2F5cycsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZXhjZXB0QWZ0ZXJPdmVybG9hZDogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2VwdEFmdGVyU2luZ2xlTGluZTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gVGhlIGRwcmludCBmb3JtYXR0ZXIga2VlcHMgYSBudW1lcmljIGxpdGVyYWwncyB0ZXh0LCBzbyBgLjVgIGFuZCBgMi5gIHN0YXkuXG4gICAgICAgICdAc3R5bGlzdGljL25vLWZsb2F0aW5nLWRlY2ltYWwnOiAnZXJyb3InLFxuICAgICAgICAvLyBOb3QgbGF5b3V0OiBpdCBhc2tzIGZvciBwYXJlbnRoZXNlcyB0aGF0IGNoYW5nZSBob3cgdGhlIGV4cHJlc3Npb24gcmVhZHMsIHdoaWNoIGRwcmludCBuZXZlciBhZGRzLlxuICAgICAgICAnQHN0eWxpc3RpYy9uby1taXhlZC1vcGVyYXRvcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd1NhbWVQcmVjZWRlbmNlOiB0cnVlLFxuICAgICAgICAgICAgZ3JvdXBzOiBbXG4gICAgICAgICAgICAgIFsnPT0nLCAnIT0nLCAnPT09JywgJyE9PScsICc+JywgJz49JywgJzwnLCAnPD0nXSxcbiAgICAgICAgICAgICAgWycmJicsICd8fCddLFxuICAgICAgICAgICAgICBbJ2luJywgJ2luc3RhbmNlb2YnXVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gVGhlIGRwcmludCBmb3JtYXR0ZXIgcmVwbGFjZXMgdGFiIGluZGVudGF0aW9uIGJ1dCBsZWF2ZXMgYSB0YWIgaW5zaWRlIGEgY29tbWVudC5cbiAgICAgICAgJ0BzdHlsaXN0aWMvbm8tdGFicyc6ICdlcnJvcicsXG4gICAgICAgIC8vIFRoZSBkcHJpbnQgYHF1b3RlUHJvcHNgIGRlZmF1bHQgaXMgYHByZXNlcnZlYC5cbiAgICAgICAgJ0BzdHlsaXN0aWMvcXVvdGUtcHJvcHMnOiBbJ2Vycm9yJywgJ2NvbnNpc3RlbnQtYXMtbmVlZGVkJ10sXG4gICAgICAgIC8vIFRoZSBkcHJpbnQgYHF1b3RlU3R5bGVgIGNvdmVycyBzdHJpbmcgbGl0ZXJhbHMgb25seSwgYW5kIGxlYXZlcyBhIHRlbXBsYXRlIGxpdGVyYWwgd2l0aCBubyBzdWJzdGl0dXRpb24uXG4gICAgICAgICdAc3R5bGlzdGljL3F1b3Rlcyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdzaW5nbGUnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93VGVtcGxhdGVMaXRlcmFsczogJ25ldmVyJ1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gVGhlIGRwcmludCBmb3JtYXR0ZXIgYWRkcyB0aGUgc3BhY2UgYWZ0ZXIgYC8vYCBidXQgbm90IGFmdGVyIGAvKmAgb3IgYmVmb3JlIGAqL2AuXG4gICAgICAgICdAc3R5bGlzdGljL3NwYWNlZC1jb21tZW50JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ2Fsd2F5cycsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgYmFsYW5jZWQ6IHRydWUsXG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnM6IFsnKiddLFxuICAgICAgICAgICAgICBtYXJrZXJzOiBbJyEnXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpbmU6IHtcbiAgICAgICAgICAgICAgZXhjZXB0aW9uczogWycvJywgJyMnXSxcbiAgICAgICAgICAgICAgbWFya2VyczogWycvJ11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRUc2VzbGludENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGV4dGVuZHM6IFtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHJpY3RUeXBlQ2hlY2tlZCxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHlsaXN0aWNUeXBlQ2hlY2tlZFxuICAgICAgXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgIGVjbWFGZWF0dXJlczoge1xuICAgICAgICAgICAganN4OiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9qZWN0U2VydmljZTogdHJ1ZSxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgdHNjb25maWdSb290RGlyYCBpcyBhIGB0eXBlc2NyaXB0LWVzbGludGAgcGFyc2VyIG9wdGlvbi5cbiAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGdldFJvb3RGb2xkZXIoKSA/PyAnJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbWVtYmVyLWFjY2Vzc2liaWxpdHknOiAnZXJyb3InLFxuICAgICAgICAvLyBUaGUgcnVsZSdzIG93biBgcHJvcGVydHlgIGRlZmF1bHQsIHNwZWxsZWQgYXMgYSBiYXJlIHNldmVyaXR5IHNvIGl0IHN0YXlzIHRoZSBydWxlJ3MgZGVmYXVsdCByYXRoZXIgdGhhbiBhIGNvcHkgb2YgaXQuXG4gICAgICAgIC8vIERvIE5PVCBwYXNzIGAnbWV0aG9kJ2AgZm9yIHRpZGluZXNzOiB0aGUgbWV0aG9kIGZvcm0ga2VlcHMgcGFyYW1ldGVycyBiaXZhcmlhbnQsIGRyb3BzIGByZWFkb25seWAgKHRoZSBydWxlJ3Mgb3duIGZpeGVyXG4gICAgICAgIC8vIG1lc3NhZ2Ugc2F5cyBzbyksIGFuZCBtYWtlcyBgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kYCBmaXJlIG9uIGV2ZXJ5IGZvcndhcmRlZCBiYWcgbWVtYmVyLCB3aGljaCBpcyB3aGF0IHRoZVxuICAgICAgICAvLyBgdGhpczogdm9pZGAgYm9pbGVycGxhdGUgdXNlZCB0byBwYXkgZm9yLiBEbyBOT1QgZGVsZXRlIHRoZSBsaW5lIGVpdGhlciAtIHRoZSBydWxlIGlzIGluIG5vIHByZXNldCwgc28gdGhhdCB0dXJucyBpdCBvZmYuXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbWV0aG9kLXNpZ25hdHVyZS1zdHlsZSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXMnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGNoZWNrVGhlbmFibGVzOiB0cnVlXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd0FzVGhpc1BhcmFtZXRlcjogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd2VkTmFtZXM6IFtcbiAgICAgICAgICAgICd0aGF0J1xuICAgICAgICAgIF1cbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgYXJnc2AgaXMgYW4gRVNMaW50IHJ1bGUgb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICBhcmdzOiAnYWxsJyxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBhcmdzSWdub3JlUGF0dGVybmAgaXMgYSBgdHlwZXNjcmlwdC1lc2xpbnRgIHJ1bGUgb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICBhcmdzSWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGNhdWdodEVycm9yczogJ2FsbCcsXG4gICAgICAgICAgICBjYXVnaHRFcnJvcnNJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgZGVzdHJ1Y3R1cmVkQXJyYXlJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgaWdub3JlUmVzdFNpYmxpbmdzOiB0cnVlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHZhcnNJZ25vcmVQYXR0ZXJuYCBpcyBhIGB0eXBlc2NyaXB0LWVzbGludGAgcnVsZSBvcHRpb24gbmFtZS5cbiAgICAgICAgICAgIHZhcnNJZ25vcmVQYXR0ZXJuOiAnXl8nXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1yZWFkb25seSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd1ByaXZhdGVDbGFzc1Byb3BlcnR5QWNjZXNzOiB0cnVlLFxuICAgICAgICAgIGFsbG93UHJvdGVjdGVkQ2xhc3NQcm9wZXJ0eUFjY2VzczogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICByZWFjdDoge1xuICAgICAgICAgIHZlcnNpb246ICdkZXRlY3QnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRVbmljb3JuQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW3VuaWNvcm4uY29uZmlncy5yZWNvbW1lbmRlZF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlc2UgZW50cmllcyBhcmUgbm90IGFiYnJldmlhdGlvbnMgdG8gYmUgZXhwYW5kZWQg4oCUIHRoZXkgYXJlIGVzdGFibGlzaGVkIHZvY2FidWxhcnkgaGVyZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQnJhbmQ6IGBkZXZgLCBgbGliYCwgYHV0aWxgL2B1dGlsc2Agc3BlbGwgdGhlIHByb2R1Y3QncyBvd24gbmFtZS4gTGVmdCBvbiwgdGhlIHJ1bGUgcmV3cml0ZXNcbiAgICAgICAgICogYFJlcG9QYXRoc2AgdG8gYE9ic2lkaWFuRGV2ZWxvcG1lbnRVdGlsaXRpZXNSZXBvUGF0aHNgIGFuZCBgZ2V0TGliRGVidWdnZXJgIHRvXG4gICAgICAgICAqIGBnZXRMaWJyYXJ5RGVidWdnZXJgLCByZW5hbWluZyBleHBvcnRlZCBBUEkgYWZ0ZXIgdGhlIHBhY2thZ2UgaXQgYmVsb25ncyB0by5cbiAgICAgICAgICpcbiAgICAgICAgICogQ29udmVudGlvbjogYHBhcmFtc2AgaXMgdGhlIHBhcmFtZXRlci1iYWcgY29udmVudGlvbiwgZW5mb3JjZWQgYnlcbiAgICAgICAgICogYHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaGAsIHdoaWNoIHJlcXVpcmVzIGJhZyB0eXBlcyB0byBiZSBuYW1lZFxuICAgICAgICAgKiBgPE93bmVyPlBhcmFtc2AgLyBgPE93bmVyPk9wdGlvbnNgLiBFeHBhbmRpbmcgaXQgdG8gYFBhcmFtZXRlcnNgIHdvdWxkIHB1dCB0aGUgdHdvIHJ1bGVzIGluIGRpcmVjdFxuICAgICAgICAgKiBjb250cmFkaWN0aW9uIGFuZCBicmVhayAzMDArIGV4cG9ydGVkIHR5cGUgbmFtZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEJhcmUga2V5d29yZCBhbmQgY29sbGlkaW5nIGdsb2JhbCBiaW5kaW5ncyB1c2UgYCRuYW1lYCwgZW5mb3JjZWQgYnlcbiAgICAgICAgICogYHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvbm8ta2V5d29yZC1pZGVudGlmaWVyc2A6IGBvYmplY3RgIGJlY29tZXMgYCRvYmplY3RgLCBgc3RyaW5nYCBiZWNvbWVzIGAkc3RyaW5nYCxcbiAgICAgICAgICogYW5kIHNvIG9uLCBldmVuIHdoZW4gbm8gYWJicmV2aWF0aW9uIHdhcyBleHBhbmRlZC4gUHJvcGVydHkga2V5cyBhbmQgYnVpbHRpbiByZWFkcyBzdGF5IGxlZ2FsLlxuICAgICAgICAgKiBBIGJhcmUgYGFyZ3NgLCBgZm5gLCBgc3RyYCwgYG1vZGAgb3IgYGV2dGAgbGlrZXdpc2UgdGFrZXMgYCRhcmd1bWVudHNgLCBgJGZ1bmN0aW9uYCwgYW5kIHNvIG9uLlxuICAgICAgICAgKiBUaGlzIGlzIGRlbGliZXJhdGVseSBOT1QgY29uZmlndXJlZCBhcyBhIGN1c3RvbSByZXBsYWNlbWVudDogdW5pY29ybiBzdWJzdGl0dXRlcyBhdCB0aGUgd29yZCBsZXZlbCBpbnNpZGUgY29tcG91bmQgbmFtZXMsIHNvXG4gICAgICAgICAqIHJlZGlyZWN0aW5nIHRoZSB3aG9sZSBlbnRyeSB0dXJucyBgYXN5bmNGbmAgaW50byBgYXN5bmMkZnVuY3Rpb25gLiBDb21wb3VuZHMgd2FudCB0aGUgcGxhaW4gZXhwYW5zaW9uXG4gICAgICAgICAqIChgYXN5bmNGdW5jdGlvbmApOyBvbmx5IHRoZSBiYXJlLCBnZW51aW5lbHktY29sbGlkaW5nIGlkZW50aWZpZXJzIHRha2UgdGhlIGAkYCBmb3JtLlxuICAgICAgICAgKlxuICAgICAgICAgKiBEb21haW4gd29yZHM6IGBkb2NgL2Bkb2NzYCwgYGVudmAsIGBkaXN0YCBhbmQgYHNyY2AgYXJlIHRoZSBjbGVhcmVyIHNwZWxsaW5nIGluIHRoaXMgY29kZWJhc2UuXG4gICAgICAgICAqIEV4cGFuZGluZyBgZG9jYCBhbHNvIHBpY2tzIHRoZSB3cm9uZyB3b3JkIOKAlCB0aGUgYGFwaS1kb2MtKmAgbW9kdWxlcyBnZW5lcmF0ZSBBUEkgKmRvY3VtZW50YXRpb24qLCBub3RcbiAgICAgICAgICogZG9jdW1lbnRzLiBgc3JjYCBhZGRpdGlvbmFsbHkgY29ycnVwdHMgY29kZTogdGhlIGZpeGVyIHJlbmFtZXMgdGhlIGBTcmNgIG1lbWJlciBvZiB0aGUgZXhwb3J0ZWRcbiAgICAgICAgICogYE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzYCAvIGBSZXBvUGF0aHNgIGVudW1zIHdoaWxlIGxlYXZpbmcgZXZlcnkgYC5TcmNgIHJlZmVyZW5jZVxuICAgICAgICAgKiBkYW5nbGluZywgYmVjYXVzZSBgY2hlY2tQcm9wZXJ0aWVzYCBleGVtcHRzIHByb3BlcnR5IGFjY2Vzc2VzIGJ1dCBub3QgdGhlIGRlY2xhcmF0aW9ucyB0aGV5IHBvaW50IGF0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBEaXNhYmxpbmcgdGhlIHJlcGxhY2VtZW50IGVudHJpZXMgcHJvdGVjdHMgdGhlc2UgcGVybWFuZW50bHk7IGFuIGBhbGxvd0xpc3RgIHdvdWxkIGluc3RlYWQgbmVlZCBldmVyeVxuICAgICAgICAgKiBhZmZlY3RlZCBpZGVudGlmaWVyIGVudW1lcmF0ZWQgYnkgaGFuZCBhbmQgcmUtZW51bWVyYXRlZCBmb3IgZXZlcnkgbmV3IG9uZS5cbiAgICAgICAgICpcbiAgICAgICAgICogTk9URTogdGhpcyBydWxlJ3MgYXV0b2ZpeCBpcyBOT1QgcmVmZXJlbmNlLWF3YXJlIGZvciBkZWNsYXJhdGlvbnMgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBhIGNvbnRyYWN0IOKAlFxuICAgICAgICAgKiBlbnVtIG1lbWJlcnMsIGludGVyZmFjZSBtZW1iZXJzLCBhbmQgVHlwZVNjcmlwdCBwYXJhbWV0ZXIgcHJvcGVydGllcyAoYGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHlcbiAgICAgICAgICogZWw6IEhUTUxFbGVtZW50KWApIGFyZSByZW5hbWVkIHdoaWxlIGB0aGlzLmVsYCBhbmQgYEVudW0uTWVtYmVyYCByZWZlcmVuY2VzIGFyZSBsZWZ0IGRhbmdsaW5nLiBBcHBseVxuICAgICAgICAgKiBpdHMgcmVwb3J0cyBieSBoYW5kOyBuZXZlciBydW4gYC0tZml4YCBvdmVyIGl0LlxuICAgICAgICAgKi9cbiAgICAgICAgLypcbiAgICAgICAgICogQSBnb29kIHJ1bGUsIGJ1dCBpdHMgZGVmYXVsdCBwcmVmaXhlcyBmb3JjZSB1bmdyYW1tYXRpY2FsIG5hbWVzOiBgbWVtYmVyUGFnZUV4aXN0c2Agd291bGQgYmVjb21lXG4gICAgICAgICAqIGBpc01lbWJlclBhZ2VFeGlzdHNgIHJhdGhlciB0aGFuIGBkb2VzTWVtYmVyUGFnZUV4aXN0YC4gVGhlc2UgZW50cmllcyBFWFRFTkQgdGhlIGRlZmF1bHRzIChgaXNgLFxuICAgICAgICAgKiBgaGFzYCwgYGNhbmAsIGBzaG91bGRgLCAuLi4pIHJhdGhlciB0aGFuIHJlcGxhY2luZyB0aGVtLCBzbyBhIGJvb2xlYW4gd2l0aCBubyBib29sZWFuLXJlYWRpbmcgcHJlZml4XG4gICAgICAgICAqIGF0IGFsbCBpcyBzdGlsbCByZWplY3RlZCAtLSB0aGUgcnVsZSBqdXN0IHN0b3BzIGluc2lzdGluZyB0aGUgcHJlZml4IGNvbWUgZnJvbSBhIHNob3J0ZXIgbGlzdC5cbiAgICAgICAgICpcbiAgICAgICAgICogVGhlIGxpc3QgaXMgYmlkaXJlY3Rpb25hbDogYWRkaW5nIGEgcHJlZml4IGFsc28gYXNzZXJ0cyB0aGF0IGV2ZXJ5dGhpbmcgbmFtZWQgd2l0aCBpdCBJUyBhIGJvb2xlYW4uXG4gICAgICAgICAqIGBjaGVja2AgZWFybnMgaXRzIHBsYWNlIG9uIGJvdGggY291bnRzLCBzaW5jZSB0aGUgaGFuZGZ1bCBvZiBub24tYm9vbGVhbiBgY2hlY2sqYCBuYW1lcyBpdCBzdXJmYWNlZFxuICAgICAgICAgKiB3ZXJlIGdlbnVpbmVseSBtaXMtbmFtZWQgKHZvaWQgZnVuY3Rpb25zIHRoYXQgdGhyb3csIGEgcHJvYmUgcmV0dXJuaW5nIGFuIEhUVFAgc3RhdHVzKS4gYHRlc3RgIHdhc1xuICAgICAgICAgKiBtZWFzdXJlZCBhbmQgcmVqZWN0ZWQ6IGl0IHdvdWxkIHZhbGlkYXRlIGZpdmUgYHRlc3QqYCBsaW5rIHByZWRpY2F0ZXMgdGhhdCByZWFkIGJldHRlciBhcyBgaXMqYFxuICAgICAgICAgKiBhbnl3YXksIGF0IHRoZSBjb3N0IG9mIHJlbmFtaW5nIFNDUkVBTUlOR19DQVNFIHRlc3QgZml4dHVyZXMgYW5kIHRoZSBgdGVzdENvdmVyYWdlYC9gdGVzdFdhdGNoYFxuICAgICAgICAgKiBydW5uZXJzIHRoYXQgZGVsaWJlcmF0ZWx5IG1pcnJvciB0aGUgYHRlc3Q6Y292ZXJhZ2VgL2B0ZXN0OndhdGNoYCBucG0gc2NyaXB0cy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2NvbnNpc3RlbnQtYm9vbGVhbi1uYW1lJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJlZml4ZXM6IHtcbiAgICAgICAgICAgICAgYWxsb3dzOiB0cnVlLFxuICAgICAgICAgICAgICBjaGVjazogdHJ1ZSxcbiAgICAgICAgICAgICAgY29udGFpbnM6IHRydWUsXG4gICAgICAgICAgICAgIGRvZXM6IHRydWUsXG4gICAgICAgICAgICAgIGluY2x1ZGVzOiB0cnVlLFxuICAgICAgICAgICAgICBtdXN0OiB0cnVlLFxuICAgICAgICAgICAgICBuZWVkczogdHJ1ZSxcbiAgICAgICAgICAgICAgc3VwcG9ydHM6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8qXG4gICAgICAgICAqIFVuc2F0aXNmaWFibGUgYWxvbmdzaWRlIGBwZXJmZWN0aW9uaXN0L3NvcnQtY2xhc3Nlc2AsIHdoaWNoIGlzIGNvbmZpZ3VyZWQgaGVyZSBhcyBhIHBsYWluXG4gICAgICAgICAqIGFscGhhYmV0aWNhbCBzb3J0LiBUaGlzIHJ1bGUgd2FudHMgYSBjYXRlZ29yeSBvcmRlciAoYWxsIGZpZWxkcywgdGhlbiB0aGUgY29uc3RydWN0b3IsIHRoZW4gYWxsXG4gICAgICAgICAqIG1ldGhvZHMpLCBzbyB0aGUgZXh0cmVtZWx5IGNvbW1vbiBgcHJpdmF0ZSBfeGAgZmllbGQgcGFpcmVkIHdpdGggYSBgcHVibGljIGdldCB4KClgIGFjY2Vzc29yIGlzXG4gICAgICAgICAqIHJlamVjdGVkIGJ5IHdoaWNoZXZlciBydWxlIGxvc2VzOiBhbHBoYWJldGljYWxseSB0aGUgYWNjZXNzb3IgcHJlY2VkZXMgdGhlIGZpZWxkLCBieSBjYXRlZ29yeSB0aGVcbiAgICAgICAgICogZmllbGQgcHJlY2VkZXMgdGhlIGFjY2Vzc29yLiBVbmxpa2UgYHByZWZlci1nbG9iYWwtdGhpc2AgdGhlIGNsYXNoIHByb2R1Y2VzIG5vXG4gICAgICAgICAqIGBFU0xpbnRDaXJjdWxhckZpeGVzV2FybmluZ2AsIG9ubHkgYmVjYXVzZSB0aGlzIHJ1bGUgc2hpcHMgbm8gZml4ZXIgLS0gYm90aCBydWxlcyBhcmUgYGVycm9yYCwgc28gbm9cbiAgICAgICAgICogYXJyYW5nZW1lbnQgb2YgbWVtYmVycyBzYXRpc2ZpZXMgdGhlbSBib3RoLiBUaGUgYWxwaGFiZXRpY2FsIHNvcnQgaXMgdGhlIG9uZSBhbHJlYWR5IHJvbGxlZCBvdXRcbiAgICAgICAgICogYWNyb3NzIHRoZSBwbHVnaW5zIGNvbnN1bWluZyB0aGlzIGNvbmZpZywgc28gaXQga2VlcHMgcHJlY2VkZW5jZS4gUmUtZW5hYmxpbmcgdGhpcyBydWxlIHdvdWxkIG1lYW5cbiAgICAgICAgICogZ2l2aW5nIGBwZXJmZWN0aW9uaXN0L3NvcnQtY2xhc3Nlc2AgYSBtYXRjaGluZyBgZ3JvdXBzYCBvcHRpb24gYW5kIHJlb3JkZXJpbmcgZXZlcnkgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9jb25zaXN0ZW50LWNsYXNzLW1lbWJlci1vcmRlcic6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBFdmVyeSByZXBvcnQgaXMgYG5ldyBFcnJvcigpLnN0YWNrYCwgd2hpY2ggY2FwdHVyZXMgYSBzdGFjayB0cmFjZSBhbmQgbmV2ZXIgc3VyZmFjZXMgaXRzIG1lc3NhZ2UuXG4gICAgICAgICAqIFRoZSBydWxlIGNhbm5vdCB0ZWxsIHRoYXQgZnJvbSBhbiBlcnJvciB0aGF0IGlzIGFjdHVhbGx5IHRocm93biBhdCBhIHVzZXIuXG4gICAgICAgICAqXG4gICAgICAgICAqIE5vIGJhcmUgYG5ldyBBZ2dyZWdhdGVFcnJvcihlcnJvcnMpYCBpcyBsZWZ0IGZvciBpdCB0byBjYXRjaDogZXZlcnkgc2l0ZSBub3cgYnVpbGRzIGl0cyBhZ2dyZWdhdGVcbiAgICAgICAgICogdGhyb3VnaCBgY3JlYXRlQWdncmVnYXRlRXJyb3JgLCB3aGljaCBnaXZlcyBpdCBhIG1lc3NhZ2UgdGhhdCBuYW1lcyB0aGUgZmFpbHVyZS4gQW4gZW1wdHkgb25lIGlzXG4gICAgICAgICAqIGxvc3N5IGluIGEgd2F5IHRoYXQgb25seSBzaG93cyB1cCBvdXRzaWRlIHRoaXMgbGlicmFyeSDigJQgYGVycm9yVG9TdHJpbmdgIHdhbGtzIGBlcnJvcnNgIGFuZCBwcmludHNcbiAgICAgICAgICogdGhlIHdob2xlIHRyZWUsIHdoaWxlIGV2ZXJ5dGhpbmcgcmVhZGluZyBgbWVzc2FnZWAgc2VlcyBhbiBlbXB0eSBzZW50ZW5jZS4gVGhlIGhlbHBlciBsaXZlcyBpbiBpdHNcbiAgICAgICAgICogb3duIGxlYWYgYGFnZ3JlZ2F0ZS1lcnJvci50c2AgcmF0aGVyIHRoYW4gaW4gYGVycm9yLnRzYCBwcmVjaXNlbHkgc28gdGhhdCBgZGlzcG9zYWJsZS50c2AgY2FuIHJlYWNoXG4gICAgICAgICAqIGl0LCB3aGljaCBpdCBjb3VsZCBub3Qgd2hpbGUgdGhlIG9ubHkgY29weSBzYXQgaW4gYSBtb2R1bGUgaW1wb3J0aW5nIGl0IGJhY2suXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9lcnJvci1tZXNzYWdlJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBkZWZhdWx0IHN0eWxlIGZvciBgbm9kZTpwYXRoYCBpcyBhIGRlZmF1bHQgaW1wb3J0LCBidXQgdGhpcyBjb2RlYmFzZSBpbXBvcnRzIGl0cyBtZW1iZXJzIGJ5IG5hbWVcbiAgICAgICAgICogdGhyb3VnaG91dCwgY29uc2lzdGVudGx5IHdpdGggZXZlcnkgb3RoZXIgYG5vZGU6YCBtb2R1bGUgaXQgdXNlcy4gQ29uZmlndXJlIHRoZSBydWxlIHRvIGVuZm9yY2UgdGhlXG4gICAgICAgICAqIHN0eWxlIGFjdHVhbGx5IGluIHVzZSByYXRoZXIgdGhhbiBhbm5vdGF0ZSAxNyBzaXRlcyB0aGF0IGFyZSBub3QgZ29pbmcgdG8gY2hhbmdlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vaW1wb3J0LXN0eWxlJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3R5bGVzOiB7XG4gICAgICAgICAgICAgIC8vIEtleWVkIGJ5IHRoZSBVTlBSRUZJWEVEIG1vZHVsZSBuYW1lOiB0aGUgcnVsZSdzIG93biB0YWJsZSB1c2VzIGBwYXRoYCwgc28gYSBgbm9kZTpwYXRoYCBrZXkgbmV2ZXIgbWF0Y2hlcy5cbiAgICAgICAgICAgICAgcGF0aDoge1xuICAgICAgICAgICAgICAgIG5hbWVkOiB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIGNvdW50cyBjb25zdHJ1Y3RvciBjYWxscyBhbmQgY291bnRzIHRocm91Z2ggYXJyYXkgYW5kIG9iamVjdCBsaXRlcmFscywgc28gaXRzIGRlZmF1bHQgb2YgM1xuICAgICAgICAgKiByZXBvcnRzIG9yZGluYXJ5IGNvbXBvc2l0aW9uOiBgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdib29tJykpYCBpbnNpZGUgYW4gYXNzZXJ0aW9uLCBhIHRlc3QgZml4dHVyZVxuICAgICAgICAgKiBidWlsdCBhcyBgY3JlYXRlVHlwZUluZm8oeyBtZXRob2RzOiBbY3JlYXRlTWVtYmVySW5mbyh7IC4uLiB9KV0gfSlgLCBgdGhpcy5hZGRDaGlsZChuZXcgQyh0aGlzLmFwcCkpYFxuICAgICAgICAgKiBpbnNpZGUgYSBwYXJhbXMgYmFnLiBSYWlzaW5nIHRoZSBsaW1pdCBieSBvbmUgY2xlYXJzIGV2ZXJ5IHJlcG9ydCBoZXJlIHdoaWxlIHN0aWxsIGNhdGNoaW5nIHRoZVxuICAgICAgICAgKiBnZW51aW5lbHkgdW5yZWFkYWJsZSBuZXN0aW5nIHRoZSBydWxlIGlzIGZvci5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL21heC1uZXN0ZWQtY2FsbHMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXg6IDRcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICd1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIFByb3BlcnR5IGFuZCBtZW1iZXIgbmFtZXMgYXJlIGNoZWNrZWQgdG9vLCBzbyBhbiBhYmJyZXZpYXRpb24gY2Fubm90IHN1cnZpdmUgYnkgbGl2aW5nIG9uIGFuXG4gICAgICAgICAgICAgKiBvYmplY3QgcmF0aGVyIHRoYW4gaW4gYSB2YXJpYWJsZS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGUgcnVsZSBpcyBwdXJlbHkgc3ludGFjdGljOiBpdCBjYW5ub3QgdGVsbCBhIG1lbWJlciB3ZSBkZWNsYXJlIGZyb20gb25lIGJlbG9uZ2luZyB0byBhXG4gICAgICAgICAgICAgKiBkZXBlbmRlbmN5LCBhbmQgaXQgb2ZmZXJzIG5vIGF1dG9maXggZm9yIHByb3BlcnRpZXMgKG1lYXN1cmVkOiA2ODEgaGl0cywgMCB3aXRoIGEgZml4ZXIpLiBTaXRlc1xuICAgICAgICAgICAgICogbmFtaW5nIGEgZm9yZWlnbiBtZW1iZXIgLS0gYERvbUVsZW1lbnRJbmZvLmF0dHJgLCBgRXZhbEluT2JzaWRpYW5QYXJhbXMuZm5gLCBhbmQgdGhlIGxpa2UgLS0gYXJlXG4gICAgICAgICAgICAgKiB0aGVyZWZvcmUgaW1wb3NzaWJsZSB0byBzYXRpc2Z5IGFuZCBjYXJyeSBhbiBpbmxpbmUgZGlzYWJsZSwgc28gZXZlcnl0aGluZyBzdGlsbCByZXBvcnRlZCBpcyBvdXJzXG4gICAgICAgICAgICAgKiB0byByZW5hbWUuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogV2hlbiByZW5hbWluZyB0aGUgcmVzdCwgbm90ZSB0aGF0IGB0c2NgIGFsb25lIGlzIE5PVCBhIHN1ZmZpY2llbnQgZ2F0ZTogb2JqZWN0LWxpdGVyYWwga2V5cyBpblxuICAgICAgICAgICAgICogbG9vc2VseSB0eXBlZCBwb3NpdGlvbnMgKGBleHBlY3QuYXJyYXlDb250YWluaW5nKFt7IGJhdGNoZWRBcmd1bWVudHM6IC4uLiB9XSlgKSBhcmUgbm90IGNvbnRleHR1YWxseVxuICAgICAgICAgICAgICogdHlwZWQsIHNvIGEgcmVuYW1lIGxlYXZlcyB0aGVtIGJlaGluZCBhbmQgYnJlYWtzIHRoZSBzdWl0ZSB3aGVyZSB0aGUgdHlwZSBjaGVja2VyIHNlZXMgbm90aGluZy5cbiAgICAgICAgICAgICAqIFJlbmFtZSBpbiBzbWFsbCBiYXRjaGVzIHdpdGggdGhlIGZ1bGwgdGVzdCBydW4gaW4gdGhlIGxvb3AuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogVGhlIGRpc2FibGVkIHJlcGxhY2VtZW50cyBiZWxvdyBhcmUgZXN0YWJsaXNoZWQgdm9jYWJ1bGFyeSByYXRoZXIgdGhhbiBhYmJyZXZpYXRpb25zIHRvIGJlXG4gICAgICAgICAgICAgKiBleHBhbmRlZC4gYGVsYCBpcyBleGVtcHQgYmVjYXVzZSBPYnNpZGlhbiBuYW1lcyBldmVyeSBlbGVtZW50IG1lbWJlciB0aGF0IHdheSAtLSBgY29udGFpbmVyRWxgLFxuICAgICAgICAgICAgICogYGNvbnRlbnRFbGAsIGBpbnB1dEVsYCwgYHNlbGVjdEVsYCAtLSBzbyBleHBhbmRpbmcgb3VycyB0byBgKkVsZW1lbnRgIHdvdWxkIGxlYXZlIG91ciBjb21wb25lbnRzXG4gICAgICAgICAgICAgKiByZWFkaW5nIGluY29uc2lzdGVudGx5IGJlc2lkZSB0aGUgT2JzaWRpYW4gb25lcyB0aGV5IHNpdCBuZXh0IHRvLiBEaXNhYmxpbmcgdGhlIHJlcGxhY2VtZW50IGFsc29cbiAgICAgICAgICAgICAqIGNvdmVycyBjb21wb3VuZCBuYW1lcywgd2hpY2ggaXMgNzIgc2l0ZXMgdGhhdCB3b3VsZCBvdGhlcndpc2UgZWFjaCBuZWVkIGFuIGlubGluZSBkaXNhYmxlLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIGByZWZgIGlzIGV4ZW1wdCBmb3IgdGhlIHNhbWUgcmVhc29uOiBgQXN5bmNFdmVudFJlZmAgaXMgdGhlIGFzeW5jIGNvdW50ZXJwYXJ0IG9mIE9ic2lkaWFuJ3NcbiAgICAgICAgICAgICAqIGBFdmVudFJlZmAsIGhhbmRlZCB0byB0aGUgc2FtZSBgb2ZmcmVmYCAvIGByZWdpc3RlckV2ZW50YCBzaGFwZXMsIHNvIHRoZSB0d28gbmFtZXMgaGF2ZSB0byBtYXRjaFxuICAgICAgICAgICAgICogdG8gcmVhZCBhcyBhIHBhaXIuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNoZWNrUHJvcGVydGllczogdHJ1ZSxcbiAgICAgICAgICAgIHJlcGxhY2VtZW50czoge1xuICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgKiBgYXR0cmAgLyBgYXR0cnNgIGFyZSBPYnNpZGlhbidzIG93bjogYGNyZWF0ZUVsKCdhJywgeyBhdHRyOiB7IC4uLiB9IH0pYCB0YWtlcyB0aGVtIGJ5IHRob3NlXG4gICAgICAgICAgICAgICAqIG5hbWVzIG9uIGBEb21FbGVtZW50SW5mb2AsIHNvIG91cnMgaGF2ZSB0byBtYXRjaCB0byBiZSBwYXNzZWQgdGhyb3VnaC4gYHByb3BzYCBpcyB0aGVcbiAgICAgICAgICAgICAgICogdW5pdmVyc2FsIGNvbXBvbmVudCB2b2NhYnVsYXJ5LCBleGVtcHQgZm9yIHRoZSBzYW1lIHJlYXNvbiBgcGFyYW1zYCBpcy5cbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIGF0dHI6IGZhbHNlLFxuICAgICAgICAgICAgICBhdHRyczogZmFsc2UsXG4gICAgICAgICAgICAgIGRldjogZmFsc2UsXG4gICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAqIEV2ZXJ5IGBkaXJgIGhlcmUgaXMgYSBmaWxlc3lzdGVtIGRpcmVjdG9yeSwgbmV2ZXIgYSBkaXJlY3Rpb24sIHNvIHRoZSBydWxlIGlzIG5hcnJvd2VkIHRvIHRoZVxuICAgICAgICAgICAgICAgKiBvbmUgZXhwYW5zaW9uIHJhdGhlciB0aGFuIGxlZnQgb2ZmZXJpbmcgYSBjaG9pY2UgaXQgY2Fubm90IG1ha2UuXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBUaGlzIGlzIHRoZSBydWxlJ3Mgb3duIHJlcGxhY2VtZW50IGtleSwgd2hpY2ggaGFzIHRvIGJlIHNwZWxsZWQgdGhlIHdheSB0aGUgcnVsZSByZWFkcyBpdC5cbiAgICAgICAgICAgICAgZGlyOiB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6IHRydWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZGlzdDogZmFsc2UsXG4gICAgICAgICAgICAgIGRvYzogZmFsc2UsXG4gICAgICAgICAgICAgIGRvY3M6IGZhbHNlLFxuICAgICAgICAgICAgICBlbDogZmFsc2UsXG4gICAgICAgICAgICAgIGVudjogZmFsc2UsXG4gICAgICAgICAgICAgIGxpYjogZmFsc2UsXG4gICAgICAgICAgICAgIHBhcmFtczogZmFsc2UsXG4gICAgICAgICAgICAgIHByb3BzOiBmYWxzZSxcbiAgICAgICAgICAgICAgcmVmOiBmYWxzZSxcbiAgICAgICAgICAgICAgcmVmczogZmFsc2UsXG4gICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAqIGByZXBvYCBpcyB0aGUgd29yZCBnaXQgYW5kIEdpdEh1YiB1c2UgdGhlbXNlbHZlcyAoYGdoIHJlcG9gLCBgUmVwb1BhdGhzYCwgYERvY3NTaXRlQ29uZmlnLnJlcG9gKSxcbiAgICAgICAgICAgICAgICogc28gaXQgaXMgdm9jYWJ1bGFyeSByYXRoZXIgdGhhbiBhbiBhYmJyZXZpYXRpb24uIHVuaWNvcm4gNzkgYWRkZWQgdGhlIHJlcGxhY2VtZW50OyBmb2xsb3dpbmcgaXRcbiAgICAgICAgICAgICAgICogd291bGQgcmVuYW1lIGV4cG9ydGVkIEFQSSBpbiB0aGlzIHBhY2thZ2UgYW5kIHJlcG9ydCBldmVyeSBjb25zdW1lcidzIGByZXBvKmAgbmFtZXMuXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICByZXBvOiBmYWxzZSxcbiAgICAgICAgICAgICAgc3JjOiBmYWxzZSxcbiAgICAgICAgICAgICAgdXRpbDogZmFsc2UsXG4gICAgICAgICAgICAgIHV0aWxzOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIG5leHQgc2l4IHJ1bGVzIGFsbCBzdWdnZXN0IGFuIEFQSSBuZXdlciB0aGFuIHRoaXMgcHJvamVjdCdzIGBsaWJgIChgRVMyMDIyYCksIHNvIGZvbGxvd2luZyBhbnkgb2ZcbiAgICAgICAgICogdGhlbSBmYWlscyB0byBjb21waWxlLiBUaGUgT2JzaWRpYW4gcGx1Z2luIGxheWVyIHRha2VzIHRoZSBmbG9vciBmcm9tIHRoZSBvbGRlc3QgT2JzaWRpYW4gaW5zdGFsbGVyIHRoYXRcbiAgICAgICAgICogY2FuIHN0aWxsIHJ1biBjdXJyZW50IE9ic2lkaWFuLCB3aGljaCByZWNvcmRzIGBlY21hU2NyaXB0VmVyc2lvbjogXCJFUzIwMjJcImAuIEVhY2ggaXMgb2ZmIGF0IHRoZSBjb25maWdcbiAgICAgICAgICogbGV2ZWwgcmF0aGVyIHRoYW4gYW5ub3RhdGVkIHBlciBzaXRlLCBiZWNhdXNlIG5vbmUgY2FuIGV2ZXIgYmUgc2F0aXNmaWVkIHdoaWxlIHRoYXQgZmxvb3IgaG9sZHMuIFJldmlzaXRcbiAgICAgICAgICogdGhlbSB0b2dldGhlciBpZiB0aGUgZmxvb3IgbW92ZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIGBBcnJheSN0b1JldmVyc2VkYCBhbmQgYEFycmF5I3RvU29ydGVkYCBhcmUgRVMyMDIzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tYXJyYXktcmV2ZXJzZSc6ICdvZmYnLFxuICAgICAgICAndW5pY29ybi9uby1hcnJheS1zb3J0JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBob3VzZSBzdHlsZSB3cml0ZXMgZXZlcnkgYmxvY2sgY29tbWVudCB3aXRoIGEgYCAqIGAgcHJlZml4IG9uIGVhY2ggbGluZSwgdGhlIGBAZmlsZWAgaGVhZGVyIG9mXG4gICAgICAgICAqIGV2ZXJ5IG1vZHVsZSBpbmNsdWRlZC4gdW5pY29ybiA3OSBwdXQgdGhpcyBydWxlIGluIGByZWNvbW1lbmRlZGAsIHdoZXJlIGl0IHJlcG9ydGVkIDEsNTUzIGxpbmVzIGhlcmVcbiAgICAgICAgICogYWxvbmU7IGFkb3B0aW5nIGl0IHdvdWxkIHJld3JpdGUgZXZlcnkgY29tbWVudCBpbiBldmVyeSBjb25zdW1lciB0byBzZXR0bGUgYSBtYXR0ZXIgb2YgdGFzdGUuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1hc3Rlcmlzay1wcmVmaXgtaW4tZG9jdW1lbnRhdGlvbi1jb21tZW50cyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBgY29udGludWVgIGluc2lkZSBhIG5lc3RlZCBsb29wIGlzIG9yZGluYXJ5LCByZWFkYWJsZSBjb250cm9sIGZsb3cgaGVyZS4gVGhlIHJ1bGUncyByZW1lZHkgaXMgdG9cbiAgICAgICAgICogZXh0cmFjdCBldmVyeSBzdWNoIGxvb3AgaW50byBpdHMgb3duIGZ1bmN0aW9uLCB3aGljaCBzcHJlYWRzIG9uZSBjb2hlcmVudCB0cmF2ZXJzYWwgYWNyb3NzIHR3b1xuICAgICAgICAgKiBkZWNsYXJhdGlvbnMgd2l0aG91dCBtYWtpbmcgYW55dGhpbmcgY2xlYXJlci5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLWJyZWFrLWluLW5lc3RlZC1sb29wJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIGNhbm5vdCBzZWUgdGhyb3VnaCBhIGhvaXN0ZWQgZnVuY3Rpb24gZGVjbGFyYXRpb24sIHNvIGl0IHRyZWF0cyBhIGJpbmRpbmcgdGhhdCBhIG5lc3RlZFxuICAgICAgICAgKiBmdW5jdGlvbiBhbHJlYWR5IHJlYWQgYXMgdW51c2VkIGJlZm9yZSB0aGUgZXhpdC4gSW4gYHJ1bldpdGhUaW1lb3V0YCB0aGF0IGlzIGBsZXQgaXNDb21wbGV0ZWRgLCB3aGljaFxuICAgICAgICAgKiBgcnVuKClgIGFuZCBgaW5uZXJUaW1lb3V0KClgIGJvdGggdG91Y2ggd2hpbGUgdGhlIGBQcm9taXNlLnJhY2VgIGFib3ZlIHRoZSBleGl0IGlzIHN0aWxsIHJ1bm5pbmcgLS1cbiAgICAgICAgICogbW92aW5nIHRoZSBkZWNsYXJhdGlvbiBwYXN0IHRoZSBleGl0LCBhcyB0aGUgcnVsZSBhc2tzLCB3b3VsZCBsZWF2ZSB0aG9zZSByZWFkcyBpbiB0aGUgdGVtcG9yYWwgZGVhZFxuICAgICAgICAgKiB6b25lLiBJdHMgb3duIGZpeGVyIGRlY2xpbmVzIGFsbCAxNSBzaXRlcyBmb3IgdGhlIHNhbWUgcmVhc29uIGl0IGNhbm5vdCBwcm92ZSB0aGVtIHNhZmUsIHNvIGZvbGxvd2luZ1xuICAgICAgICAgKiB0aGUgcnVsZSBpcyBlbnRpcmVseSBtYW51YWwuIFdoYXQgaXMgbGVmdCBhZnRlciB0aGF0IGlzIHBsYWNlbWVudCBzdHlsZTogdGhlIHJlbWFpbmluZyByZXBvcnRzIGFyZVxuICAgICAgICAgKiBuYW1lZCBjb25zdGFudHMgYW5kIGRlcml2ZWQgcGF0aHMgZGVsaWJlcmF0ZWx5IGdyb3VwZWQgYXQgdGhlIHRvcCBvZiBhIGZ1bmN0aW9uLCBhbmQgcHVzaGluZyBlYWNoIG9uZVxuICAgICAgICAgKiBiZWxvdyB0aGUgZmlyc3QgZ3VhcmQgc3BsaXRzIGEgY29oZXNpdmUgYmxvY2sgdG8gbm8gYmVuZWZpdC4gVGhlIHRocmVlIHNpdGVzIHdoZXJlIGRlZmVycmluZyBza2lwcGVkXG4gICAgICAgICAqIHJlYWwgd29yayAoYSBzZWNvbmQgYGNvbXB1dGVOZWVkZWRFeHBvc3VyZWAgd2FsaywgYSBgdG9Kc29uYCBzZXJpYWxpemF0aW9uLCBhbiBgZW5zdXJlTGZFbmRpbmdzYCBwYXNzKVxuICAgICAgICAgKiB3ZXJlIGFwcGxpZWQgYnkgaGFuZCBpbnN0ZWFkLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tZGVjbGFyYXRpb25zLWJlZm9yZS1lYXJseS1leGl0JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEFzc2lnbmluZyBvbnRvIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGhvdyB0aGlzIGxpYnJhcnkgaW5zdGFsbHMgYW5kIHJlc3RvcmVzIHRlc3QgZG91YmxlcywgYW5kIGhvdyBhXG4gICAgICAgICAqIGZldyBPYnNpZGlhbi1ydW50aW1lIGdsb2JhbHMgYXJlIHJlYWNoZWQgYXQgYWxsLiBUaGUgcnVsZSBjYW5ub3Qgc2VwYXJhdGUgdGhhdCBmcm9tIGFuIGFjY2lkZW50YWxcbiAgICAgICAgICogZ2xvYmFsIHdyaXRlLCBhbmQgaXQgaGFzIG5vIGZpeGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tZ2xvYmFsLW9iamVjdC1wcm9wZXJ0eS1hc3NpZ25tZW50JzogJ29mZicsXG4gICAgICAgIC8vIGBudWxsYCBpcyBsb2FkLWJlYXJpbmcgaGVyZTogYW4gb3B0aW9uYWwgY29sbGFib3JhdG9yIGlzIG1vZGVsbGVkIGFzIGEgcmVxdWlyZWQgYG51bGwgfCBYYCBmaWVsZCByYXRoZXIgdGhhbiBhbiBvcHRpb25hbCBgWGAsIHNvIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUuXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlJ3MgbGlzdCBvZiBzdGFuZGFyZCBgU3ltYm9sYCBwcm9wZXJ0aWVzIHByZWRhdGVzIGV4cGxpY2l0IHJlc291cmNlIG1hbmFnZW1lbnQsIHNvIGl0IHJlcG9ydHNcbiAgICAgICAgICogYFN5bWJvbC5kaXNwb3NlYCBhbmQgYFN5bWJvbC5hc3luY0Rpc3Bvc2VgIGFzIG5vbi1zdGFuZGFyZC4gQm90aCBhcmUgcGFydCBvZiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzXG4gICAgICAgICAqIGxpYnJhcnkgaXMgYnVpbHQgb24gLS0gMTE0IGZpbGVzIGhlcmUgdXNlIGB1c2luZ2AgZGVjbGFyYXRpb25zLCBhbmQgdGhlIGRpc3Bvc2FibGUgdHlwZXMgYXJlIGFcbiAgICAgICAgICogcHVibGljIHBhcnQgb2YgaXRzIHN1cmZhY2UgLS0gc28gYWxsIDU5IHJlcG9ydHMgYXJlIHRoZSBydWxlIGJlaW5nIG91dCBvZiBkYXRlIHJhdGhlciB0aGFuIGEgZmluZGluZy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLW5vbnN0YW5kYXJkLWJ1aWx0aW4tcHJvcGVydGllcyc6ICdvZmYnLFxuICAgICAgICAndW5pY29ybi9uby1udWxsJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFR5cGVTY3JpcHQncyBleHBsaWNpdCBgdGhpc2AgcGFyYW1ldGVyIChgZnVuY3Rpb24gZ2V0KHRoaXM6IEhvbGRlcikgeyByZXR1cm4gdGhpcy52YWx1ZTsgfWApIG1ha2VzXG4gICAgICAgICAqIGB0aGlzYCBvdXRzaWRlIGEgY2xhc3MgYm90aCBsZWdhbCBhbmQgdHlwZS1jaGVja2VkLCBidXQgdGhlIHJ1bGUgaXMgc3ludGFjdGljIGFuZCBmbGFncyBpdCBpZGVudGljYWxseVxuICAgICAgICAgKiB0byBhIGdlbnVpbmVseSB1bmJvdW5kIGB0aGlzYC4gSXQgaGFzIG5vIG9wdGlvbnMgKGBzY2hlbWE6IFtdYCkgYW5kIG5vIGZpeGVyLCBzbyB0aGVyZSBpcyBubyB3YXkgdG9cbiAgICAgICAgICogc2VwYXJhdGUgdGhlIGlkaW9tIGZyb20gdGhlIGJ1ZyBpdCB0YXJnZXRzLiBNb3N0IGhpdHMgaGVyZSB3ZXJlIHR5cGVkIGB0aGlzYCBwYXJhbWV0ZXJzIGFuZCB0ZXN0cyB0aGF0XG4gICAgICAgICAqIGRlbGliZXJhdGVseSBhc3NlcnQgYHRoaXNgIGJpbmRpbmcuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby10aGlzLW91dHNpZGUtb2YtY2xhc3MnOiAnb2ZmJyxcbiAgICAgICAgLy8gU2FtZSBjYWxsIGFzIGl0cyBvYmplY3QgY291bnRlcnBhcnQgYWJvdmU6IHRoZSBkZXN0cnVjdHVyaW5nIGRlcHRoIGZsYWdnZWQgaGVyZSBpcyBkZWxpYmVyYXRlIGFuZCByZWFkcyB3ZWxsLlxuICAgICAgICAndW5pY29ybi9uby11bnJlYWRhYmxlLWFycmF5LWRlc3RydWN0dXJpbmcnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJlcG9ydHMgYXJlIGFsbCBgZm9yIChjb25zdCBmaWxlIG9mIGF3YWl0IHJlYWRkaXJQb3NpeCguLi4pKWAsIHdoaWNoIHJlYWRzIGV4YWN0bHkgYXMgaW50ZW5kZWQuXG4gICAgICAgICAqIEhvaXN0aW5nIHRoZSBhd2FpdGVkIGNhbGwgaW50byBhIHZhcmlhYmxlIG5hbWVkIGFmdGVyIHRoZSBsb29wJ3Mgb3duIGl0ZXJhYmxlIGFkZHMgYSBsaW5lIGFuZCBhIG5hbWVcbiAgICAgICAgICogd2l0aG91dCBhZGRpbmcgaW5mb3JtYXRpb24uXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby11bnJlYWRhYmxlLWZvci1vZi1leHByZXNzaW9uJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBuZXN0ZWQgZGVzdHJ1Y3R1cmluZyB0aGlzIGZsYWdzIGlzIGRlbGliZXJhdGUgaGVyZSBhbmQgcmVhZHMgd2VsbDogcHVsbGluZyBhIG1lbWJlciBvdXQgb2YgYVxuICAgICAgICAgKiBwYXJhbXMgYmFnIGluIG9uZSBzdGVwIHN0YXRlcyB3aGVyZSB0aGUgdmFsdWUgY29tZXMgZnJvbSwgd2hpY2ggYSBzZWNvbmQgaW50ZXJtZWRpYXRlIGJpbmRpbmcgb25seVxuICAgICAgICAgKiBvYnNjdXJlcy4gVGhlIHJ1bGUgdGFrZXMgbm8gb3B0aW9ucywgc28gdGhlcmUgaXMgbm8gd2F5IHRvIGtlZXAgdGhlIGRlcHRoIGxpbWl0IGl0IGlzIHJlYWxseSBhZnRlclxuICAgICAgICAgKiB3aGlsZSBhbGxvd2luZyB0aGUgc2hhcGUgaW4gdXNlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tdW5yZWFkYWJsZS1vYmplY3QtZGVzdHJ1Y3R1cmluZyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBgY2hlY2tBcmd1bWVudHNgIHN0cmlwcyBgdW5kZWZpbmVkYCBhcmd1bWVudHMsIHdoaWNoIHNoaWZ0cyB0aGUgcmVtYWluaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG9cbiAgICAgICAgICogdGhlIHdyb25nIHNsb3RzOyBgY2hlY2tBcnJvd0Z1bmN0aW9uQm9keWAgcmVtb3ZlcyBgcmV0dXJuIHVuZGVmaW5lZDtgIGZyb20gYXJyb3cgYm9kaWVzIHdob3NlIG90aGVyXG4gICAgICAgICAqIGJyYW5jaGVzIGRvIHJldHVybiBhIHZhbHVlLCB3aGljaCB2aW9sYXRlcyB0aGUgYG5vSW1wbGljaXRSZXR1cm5zYCBzZXR0aW5nIHRoaXMgcHJvamVjdCBjb21waWxlcyB3aXRoLlxuICAgICAgICAgKiBUaGUgcnVsZSdzIHJlbWFpbmluZyBjYXNlcyAoYSBiYXJlIGB1bmRlZmluZWRgIGluaXRpYWxpemVyLCBgcmV0dXJuIHVuZGVmaW5lZDtgIGluIGEgdm9pZCBmdW5jdGlvbilcbiAgICAgICAgICogYXJlIHN0aWxsIHdvcnRoIGhhdmluZy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLXVzZWxlc3MtdW5kZWZpbmVkJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2hlY2tBcmd1bWVudHM6IGZhbHNlLFxuICAgICAgICAgICAgY2hlY2tBcnJvd0Z1bmN0aW9uQm9keTogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8vIGBBcnJheS5mcm9tQXN5bmNgIGlzIEVTMjAyNC4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWFycmF5LWZyb20tYXN5bmMnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogRXZlcnkgaGl0IGhlcmUgaXMgYSBwcm9taXNlIGRlbGliZXJhdGVseSBOT1QgYXdhaXRlZCwgYW5kIGBhd2FpdGAgd291bGQgY2hhbmdlIHdoYXQgdGhlIGNvZGUgZG9lcy5cbiAgICAgICAgICogYHJlc3VsdC5jYXRjaCh0aHJvd0RlbGF5ZWQpYCBpbiBgYXN5bmMtZXZlbnRzLnRzYCBpcyB0aGUgZmlyZS1hbmQtZm9yZ2V0IGVycm9yIHBhdGggdGhlIG1vZHVsZSBpc1xuICAgICAgICAgKiBidWlsdCBvbjsgdGhlIHJlc3QgaG9sZCBhbiB1bnJlc29sdmVkIHByb21pc2UgYW5kIGFzc2VydCB0aGUgY2FsbGJhY2sgaGFzIG5vdCBmaXJlZCB5ZXQsIHNvIGF3YWl0aW5nXG4gICAgICAgICAqIHdvdWxkIGhhbmcgdGhlIHRlc3Qgb3IgaW52ZXJ0IHdoYXQgaXQgcHJvdmVzLiBUaGUgcnVsZSBjYW5ub3QgdGVsbCBhIGZvcmdvdHRlbiBgYXdhaXRgIGZyb20gYW5cbiAgICAgICAgICogaW50ZW50aW9uYWwgb25lLCBhbmQgdGhpcyBjb2RlYmFzZSBzY2hlZHVsZXMgZmlyZS1hbmQtZm9yZ2V0IHdvcmsgYXMgYSBjb3JlIHBhdHRlcm4uXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItYXdhaXQnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogQWxsIHRocmVlIHJlcG9ydHMgcmVhZCBIVE1MIG91dCAoYGNvbnN0IGh0bWwgPSBlbC5pbm5lckhUTUxgKSwgbmV2ZXIgd3JpdGUgaXQsIGFuZCBmb3IgYSByZWFkXG4gICAgICAgICAqIGBnZXRIVE1MKClgIHJldHVybnMgdGhlIHNhbWUgc3RyaW5nLiBXaGF0IGl0IGFkZHMgaXMgc2hhZG93LXJvb3Qgc2VyaWFsaXphdGlvbiBvcHRpb25zIHRoYXQgbm90aGluZ1xuICAgICAgICAgKiBoZXJlIGFza3MgZm9yLCBpbiBleGNoYW5nZSBmb3IgYSBtdWNoIG5ld2VyIHBsYXRmb3JtIGZsb29yIHRoYW4gYGlubmVySFRNTGAgLS0gYSBiYWQgdHJhZGUgZm9yIGFcbiAgICAgICAgICogbGlicmFyeSB0aGF0IGhhcyB0byBydW4gb24gd2hhdGV2ZXIgQ2hyb21pdW0gdGhlIGluc3RhbGxlZCBPYnNpZGlhbiBzaGlwcy4gVGhlIHJ1bGUncyBvdGhlciBoYWxmLFxuICAgICAgICAgKiByZXdyaXRpbmcgd3JpdGVzIHRvIHRoZSBzYW5pdGl6aW5nIGBzZXRIVE1MKClgLCB3b3VsZCBiZSB3b3J0aCBoYXZpbmc7IGl0IGp1c3QgbmV2ZXIgZmlyZXMgaGVyZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1kb20tbm9kZS1odG1sLW1ldGhvZHMnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogSXRlcmF0b3IgaGVscGVycyAoYEl0ZXJhdG9yI3NvbWVgIGFuZCBmcmllbmRzKSBhcmUgRVMyMDI1LCBzbyB0aGlzIGJlbG9uZ3Mgd2l0aCBgbm8tYXJyYXktcmV2ZXJzZWAgYW5kXG4gICAgICAgICAqIGBuby1hcnJheS1zb3J0YCBhYm92ZTogdGhlIHNhbWUgRVMyMDIyIGZsb29yIHJ1bGVzIGl0IG91dCwgYW5kIHRoZSBzYW1lIG5vdGUgYXBwbGllcyAtLSByZXZpc2l0IHRoZW1cbiAgICAgICAgICogdG9nZXRoZXIgaWYgdGhhdCBmbG9vciBtb3Zlcy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1pdGVyYXRvci1oZWxwZXJzJzogJ29mZicsXG4gICAgICAgIC8vIGBJdGVyYXRvciN0b0FycmF5YCBpcyBFUzIwMjUuIFNlZSB0aGUgRVMyMDIyIGZsb29yIG5vdGUgYWJvdmUuXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1pdGVyYXRvci10by1hcnJheSc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBSZXBsYWNlZCBieSBgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9wcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnlgLCB3aGljaCByZXBvcnRzIHRoZSBzYW1lIGFuZFxuICAgICAgICAgKiBhbHNvIGZpeGVzIGEgYm9vbGVhbiBsaXRlcmFsIGJyYW5jaCBpbiBUeXBlU2NyaXB0LiBVbmljb3JuIHdpdGhob2xkcyB0aGF0IGZpeCB0aGVyZSwgd2hpbGVcbiAgICAgICAgICogYHVuaWNvcm4vcHJlZmVyLXRlcm5hcnlgIGtlZXBzIHByb2R1Y2luZyB0aGUgc2hhcGUsIHNvIGBsaW50OmZpeGAgbGVmdCBhbiBlcnJvciBpdCBoYWQganVzdCBjcmVhdGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBzdWdnZXN0ZWQgcmVwbGFjZW1lbnQgaXMgYE1hdGgudHJ1bmMoTnVtYmVyKHgpKWAsIHdoaWNoIGlzIGxvbmdlciB0aGFuIGBwYXJzZUludCh4LCAxMClgIGFuZCBub1xuICAgICAgICAgKiBjbGVhcmVyLCBhbmQgaXQgaXMgbm90IHRoZSBzYW1lIGZ1bmN0aW9uOiBgcGFyc2VJbnRgIHN0b3BzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBjYW5ub3QgYmUgcGFydFxuICAgICAgICAgKiBvZiB0aGUgbnVtYmVyLCBzbyBgJzEyYWJjJ2AgcGFyc2VzIHRvIDEyIHdoZXJlIGBOdW1iZXJgIHlpZWxkcyBgTmFOYC4gVHdvIG9mIHRoZSByZXBvcnRzIHJlYWQgdXNlclxuICAgICAgICAgKiBpbnB1dCB0aHJvdWdoIHRoYXQgZGlmZmVyZW5jZSAtLSB0aGUgcGFnZS1qdW1wIGJveCBpbiB0aGUgYERhdGF2aWV3YCBoZWxwZXIsIGFuZFxuICAgICAgICAgKiBgTnVtYmVyQ29tcG9uZW50LnZhbHVlRnJvbVN0cmluZ2AsIHdob3NlIGxlbmllbnQgcGFyc2UgaXMgcGFydCBvZiBhIHB1Ymxpc2hlZCBjb21wb25lbnQncyBiZWhhdmlvci5cbiAgICAgICAgICogVGhlIHJlc3QgcGFyc2UgbWFjaGluZS1nZW5lcmF0ZWQgc3RyaW5ncywgd2hlcmUgdGhlIHR3byBhZ3JlZSBidXQgdGhlIHNob3J0ZXIgc3BlbGxpbmcgc3RpbGwgd2lucy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1udW1iZXItY29lcmNpb24nOiAnb2ZmJyxcbiAgICAgICAgLy8gYFByb21pc2Uud2l0aFJlc29sdmVyc2AgaXMgRVMyMDI0LiBTZWUgdGhlIEVTMjAyMiBmbG9vciBub3RlIGFib3ZlLlxuICAgICAgICAndW5pY29ybi9wcmVmZXItcHJvbWlzZS13aXRoLXJlc29sdmVycyc6ICdvZmYnLFxuICAgICAgICAvLyBgU2V0I3VuaW9uYCBhbmQgZnJpZW5kcyBhcmUgRVMyMDI1LiBTZWUgdGhlIEVTMjAyMiBmbG9vciBub3RlIGFib3ZlLlxuICAgICAgICAndW5pY29ybi9wcmVmZXItc2V0LW1ldGhvZHMnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUgcmFua3Mgb3BlcmFuZHMgYnkgc3ludGFjdGljIHNoYXBlLCBub3QgY29zdCwgc28gZXZlcnkgcmVwb3J0IGhlcmUgc3dhcHMgb25lIHByb3BlcnR5IHJlYWRcbiAgICAgICAgICogYWhlYWQgb2YgYW5vdGhlciBhbmQgYnV5cyBub3RoaW5nLiBJdHMgb3duIG1lc3NhZ2UgY29uY2VkZXMgaXQgY2Fubm90IGNoZWNrIHRoZSBwYXJ0IHRoYXQgbWF0dGVycyAtLVxuICAgICAgICAgKiBcImFmdGVyIHZlcmlmeWluZyBzaG9ydC1jaXJjdWl0IGJlaGF2aW9yXCIgLS0gYW5kIG9uZSByZXBvcnQgc2l0cyBkaXJlY3RseSB1bmRlciBhIGNvbW1lbnQgcmVjb3JkaW5nXG4gICAgICAgICAqIHRoYXQgdGhlIG9wZXJhbmRzIGNoYW5nZSBpbnNpZGUgYSBgcmVuYW1lYCBldmVudCBoYW5kbGVyLCB3aGljaCBpcyB3aGVyZSBvcmRlciBzdG9wcyBiZWluZyBmcmVlLlxuICAgICAgICAgKiBUaGUgY3VycmVudCBvcmRlcnMgYWxzbyBjYXJyeSBpbnRlbnQ6IGEgbnVsbCBndWFyZCBiZWZvcmUgdGhlIHVzZSBpdCBndWFyZHMsIGFuZCB0aGUgY29uZGl0aW9uIGJlaW5nXG4gICAgICAgICAqIHJlcG9ydGVkIGJlZm9yZSB0aGUgc3RhdGUgaXQgY29udHJhZGljdHMuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItc2ltcGxlLWNvbmRpdGlvbi1maXJzdCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBgVVJMLmNhblBhcnNlYCByZXF1aXJlcyBOb2RlIDE4LjE3LCB3ZWxsIGFib3ZlIHRoZSBOb2RlIDE2LjE2LjAgZmxvb3IgdGhhdCBzaGlwcGVkIHNvdXJjZSB0YXJnZXRzXG4gICAgICAgICAqIChzZWUgdGhlIE9ic2lkaWFuIHBsdWdpbiBsYXllcidzIGBtaW5pbXVtTm9kZVZlcnNpb25gKS4gVGhlIHJ1bGUgY2FuIHRoZXJlZm9yZSBuZXZlciBiZSBzYXRpc2ZpZWQgdGhlcmUsIHNvIGl0IGlzIG9mZiBhdCB0aGVcbiAgICAgICAgICogY29uZmlnIGxldmVsIHJhdGhlciB0aGFuIGFubm90YXRlZCBhdCBlYWNoIGNhbGwgc2l0ZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci11cmwtY2FuLXBhcnNlJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEV2ZXJ5IGFycmF5IHJlcG9ydGVkIGhlcmUgaG9sZHMgc3RyaW5ncywgd2hlcmUgdGhlIGRlZmF1bHQgc29ydCBpcyBhbHJlYWR5IHdlbGwgZGVmaW5lZCBhbmQgY29ycmVjdC5cbiAgICAgICAgICogQWRkaW5nIHRoZSBjb21wYXJhdG9yIHRoZSBydWxlIGFza3MgZm9yIHdvdWxkIG1lYW4gY2hvb3NpbmcgYmV0d2VlbiBjb2RlLXVuaXQgYW5kIGxvY2FsZSBvcmRlcmluZyxcbiAgICAgICAgICogc28gZm9sbG93aW5nIGl0IHdvdWxkIENIQU5HRSB0aGUgc29ydCByYXRoZXIgdGhhbiBkb2N1bWVudCBpdC4gVGhlIHJ1bGUgZWFybnMgaXRzIHBsYWNlIG9uIG51bWVyaWNcbiAgICAgICAgICogYXJyYXlzOyBpdCBkb2VzIG5vdCBoYXZlIGFueSBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcmVxdWlyZS1hcnJheS1zb3J0LWNvbXBhcmUnOiAnb2ZmJyxcbiAgICAgICAgLy8gVGhlIGNvZGViYXNlIGFscmVhZHkgc3BlbGxzIGVuY29kaW5ncyB0aGUgd2F5IHRoZSBFbmNvZGluZyBTdGFuZGFyZCBkb2VzIChgdXRmLThgKSwgd2hpY2ggaXMgYWxzbyB3aGF0IGBUZXh0RGVjb2RlcmAgcmVwb3J0cy4gS2VlcCB0aGUgcnVsZSBlbmZvcmNpbmcgY29uc2lzdGVuY3ksIGp1c3QgaW4gdGhlIGRpcmVjdGlvbiBhbHJlYWR5IGluIHVzZS5cbiAgICAgICAgJ3VuaWNvcm4vdGV4dC1lbmNvZGluZy1pZGVudGlmaWVyLWNhc2UnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3aXRoRGFzaDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQnVpbGQvbGludC92ZXJzaW9uIHNjcmlwdHMgYXJlIENMSSBlbnRyeSBwb2ludHMsIHdoZXJlIGV4aXRpbmcgd2l0aCBhIHN0YXR1cyBjb2RlIGlzIHRoZSBpbnRlcmZhY2UuXG4gICAgICBmaWxlczogY29udGV4dC5zY3JpcHRGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICd1bmljb3JuL25vLXByb2Nlc3MtZXhpdCc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAvKlxuICAgICAgICogQSBtb2R1bGUtbGV2ZWwgZml4dHVyZSBhc3NpZ25lZCBmcm9tIGBiZWZvcmVFYWNoYCBpcyB0aGUgc3RhbmRhcmQgdGVzdCBzaGFwZTpcbiAgICAgICAqXG4gICAgICAgKiAgIGxldCBhcHA6IEFwcDtcbiAgICAgICAqICAgYmVmb3JlRWFjaCgoKSA9PiB7IGFwcCA9IEFwcC5jcmVhdGVDb25maWd1cmVkX18oKTsgfSk7XG4gICAgICAgKlxuICAgICAgICogVGhlIHJ1bGUgaXMgcmlnaHQgYWJvdXQgcHJvZHVjdGlvbiBjb2RlIC0tIG1vZHVsZSBzdGF0ZSByZWFzc2lnbmVkIGZyb20gaW5zaWRlIGEgZnVuY3Rpb24gaXMgd29ydGhcbiAgICAgICAqIGZsYWdnaW5nLCBhbmQgdGhlIGZpeCBpcyB0byBob2xkIGl0IGluIGEgYGNvbnN0YCBvYmplY3QgaW5zdGVhZC4gSW4gdGVzdHMgdGhhdCB3b3VsZCByZXBsYWNlIGV2ZXJ5XG4gICAgICAgKiBgYXBwYCB3aXRoIGBTVEFURS5hcHBgIGFuZCBtYWtlIGVhY2ggZmlsZSByZWFkIHdvcnNlIGZvciBubyBnYWluLCBzaW5jZSB0aGUgZml4dHVyZSBpcyByZXNldCBwZXIgdGVzdFxuICAgICAgICogYnkgZGVzaWduLiBTY29wZWQgb2ZmIGhlcmUgcmF0aGVyIHRoYW4gZGlzYWJsZWQgb3V0cmlnaHQsIHNvIHByb2R1Y3Rpb24gY29kZSBrZWVwcyB0aGUgY2hlY2suXG4gICAgICAgKi9cbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIFR3byBzaGFwZXMgaGVyZSBjYW5ub3QgZm9sbG93IHRoZSBhZHZpY2UuIEEgaGVscGVyIGRlZmluZWQgaW5zaWRlIGFuIGBldmFsSW5PYnNpZGlhbmAgY2FsbGJhY2tcbiAgICAgICAgICogY2Fubm90IGJlIGhvaXN0ZWQgYXQgYWxsOiB0aGUgY2FsbGJhY2sgaXMgc2VyaWFsaXplZCB3aXRoIGB0b1N0cmluZygpYCBhbmQgcnVucyBpbnNpZGUgT2JzaWRpYW4sIHNvXG4gICAgICAgICAqIGFueXRoaW5nIGxlZnQgYmVoaW5kIGluIHRoZSBtb2R1bGUgc2NvcGUgaXMgc2ltcGx5IG5vdCB0aGVyZS4gQW5kIGEgcGVyLXN1aXRlIGZhY3RvcnlcbiAgICAgICAgICogKGBjcmVhdGVDb21wb25lbnRgLCBgY3JlYXRlTW9ja1BsdWdpbmApIGlzIGRlbGliZXJhdGVseSBsb2NhbCwga2VlcGluZyBlYWNoIHN1aXRlJ3MgZml4dHVyZSBuZXh0IHRvXG4gICAgICAgICAqIHRoZSBhc3NlcnRpb25zIHRoYXQgcmVhZCBpdC4gUHJvZHVjdGlvbiBjb2RlIGtlZXBzIHRoZSBjaGVjay5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2NvbnNpc3RlbnQtZnVuY3Rpb24tc2NvcGluZyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBBIHRlc3QgYmluZGluZyBpcyBuYW1lZCBhZnRlciB0aGUgdGhpbmcgaXQgY2FwdHVyZXMsIG5vdCBhZnRlciB3aGF0IGl0IGRvZXM6IGBjcmVhdGVFbGVtZW50U3B5YFxuICAgICAgICAgKiBob2xkcyB0aGUgc3B5IG9uIGBjcmVhdGVFbGVtZW50YCwgYW5kIGBjcmVhdGVQcm9ncmFtT3B0aW9uc2AgaG9sZHMgdGhlIG9wdGlvbnMgYGNyZWF0ZVByb2dyYW1gIHdhc1xuICAgICAgICAgKiBjYWxsZWQgd2l0aC4gVGhlIHZlcmIgYmVsb25ncyB0byB0aGUgbmFtZSBiZWluZyByZWZlcmVuY2VkLCBzbyB0aGUgcnVsZSByZWFkcyBpdCBhcyBhIGZ1bmN0aW9uIG5hbWVcbiAgICAgICAgICogdGhhdCBpcyBub3QgYSBmdW5jdGlvbi4gTGVmdCBvbiBmb3IgcHJvZHVjdGlvbiBjb2RlLCB3aGVyZSB0aGUgY29tcGxhaW50IGlzIHRoZSByaWdodCBvbmUuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1ub24tZnVuY3Rpb24tdmVyYi1wcmVmaXgnOiAnb2ZmJyxcbiAgICAgICAgJ3VuaWNvcm4vbm8tdG9wLWxldmVsLWFzc2lnbm1lbnQtaW4tZnVuY3Rpb24nOiAnb2ZmJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qIGVzbGludC1lbmFibGUgbm8tbWFnaWMtbnVtYmVycyAtLSBXZSBkaXNhYmxlZCBtYWdpYyBudW1iZXJzIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBhbGwgb3ZlciB0aGUg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QTtBQUFBO0FBQUE7QUFBQSxRQVE5QyxnQ0FBZ0M7QUFBQSxVQUM5QjtBQUFBLFVBQ0E7QUFBQSxZQUNFLGdCQUFnQjtBQUFBLFlBQ2hCLHdCQUF3QjtBQUFBLFVBQzFCO0FBQUEsUUFDRjtBQUFBO0FBQUEsUUFFQSxtQ0FBbUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUW5DLHdCQUF3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFReEIsd0NBQXdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBTXhDLG1DQUFtQztBQUFBO0FBQUEsUUFFbkMsb0NBQW9DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBTXBDLGdEQUFnRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVNoRCxrQ0FBa0M7QUFBQTtBQUFBLFFBRWxDLHlDQUF5QztBQUFBO0FBQUEsUUFFekMsOEJBQThCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUzlCLHlDQUF5QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU16QyxnQ0FBZ0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU9oQyxzQ0FBc0M7QUFBQTtBQUFBLFFBRXRDLHlDQUF5QztBQUFBLFVBQ3ZDO0FBQUEsVUFDQTtBQUFBLFlBQ0UsVUFBVTtBQUFBLFVBQ1o7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUE7QUFBQSxNQUVFLE9BQU8sUUFBUTtBQUFBLE1BQ2YsT0FBTztBQUFBLFFBQ0wsMkJBQTJCO0FBQUEsTUFDN0I7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQVlFLE9BQU8sUUFBUTtBQUFBLE1BQ2YsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFRTCx1Q0FBdUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU92Qyx1Q0FBdUM7QUFBQSxRQUN2QywrQ0FBK0M7QUFBQSxNQUNqRDtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDsiLCJuYW1lcyI6WyJlc2xpbnQiLCJjb21tZW50c0NvbmZpZ3MiLCJlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MiLCJub2RlUGx1Z2luIiwicGVyZmVjdGlvbmlzdENvbmZpZ3MiLCJzdHlsaXN0aWMiLCJ0c2VzbGludCIsInVuaWNvcm4iXX0=
|
|
1094
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBnZW5lcmljIGhhbGYgb2YgdGhlIHNoYXJlZCBFU0xpbnQgY29uZmlndXJhdGlvbiwgZm9yIGFueSBUeXBlU2NyaXB0IHByb2plY3QuXG4gKlxuICogSXQgaW50ZWdyYXRlcyBFU0xpbnQncyBvd24gcmVjb21tZW5kZWQgcnVsZXMsIGB0eXBlc2NyaXB0LWVzbGludGAsIGBAc3R5bGlzdGljL2VzbGludC1wbHVnaW5gLFxuICogYGVzbGludC1wbHVnaW4taW1wb3J0LXhgIHdpdGggaXRzIFR5cGVTY3JpcHQgcmVzb2x2ZXIsIGBlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3RgLCBgZXNsaW50LXBsdWdpbi11bmljb3JuYCxcbiAqIGBlc2xpbnQtcGx1Z2luLW5gIGFuZCB0aGUgZ2VuZXJpYyBpbi1ob3VzZSBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgKHRoZSBPYnNpZGlhbiBwbHVnaW4gb25lIGxpdmVzIGluXG4gKiBgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0YCkgYnVpbGRzIG9uIHtAbGluayBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc30gYW5kIGFkZHMgb25seSB3aGF0IGlzIHNwZWNpZmljIHRvIGl0LlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWNsYXJhdGl2ZSBFU0xpbnQgcnVsZS9wbHVnaW4gY29uZmlndXJhdGlvbjsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyBFU0xpbnQsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gJ2VzbGludCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gV2UgZGlzYWJsZWQgbWFnaWMgbnVtYmVycyBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYWxsIG92ZXIgdGhlIGNvbmZpZ3MuICovXG5pbXBvcnQgY29tbWVudHNDb25maWdzIGZyb20gJ0Blc2xpbnQtY29tbXVuaXR5L2VzbGludC1wbHVnaW4tZXNsaW50LWNvbW1lbnRzL2NvbmZpZ3MnO1xuaW1wb3J0IHsgaW5jbHVkZUlnbm9yZUZpbGUgfSBmcm9tICdAZXNsaW50L2NvbmZpZy1oZWxwZXJzJztcbmltcG9ydCBlc2xpbnQgZnJvbSAnQGVzbGludC9qcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgc3R5bGlzdGljIGZyb20gJ0BzdHlsaXN0aWMvZXNsaW50LXBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIgfSBmcm9tICdlc2xpbnQtaW1wb3J0LXJlc29sdmVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZmxhdENvbmZpZ3MgYXMgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzIH0gZnJvbSAnZXNsaW50LXBsdWdpbi1pbXBvcnQteCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IG5vZGVQbHVnaW4gZnJvbSAnZXNsaW50LXBsdWdpbi1uJztcbmltcG9ydCB7IGNvbmZpZ3MgYXMgcGVyZmVjdGlvbmlzdENvbmZpZ3MgfSBmcm9tICdlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBpbmRleGAgaXMgdG9vIGNvbmZ1c2luZy5cbmltcG9ydCB1bmljb3JuIGZyb20gJ2VzbGludC1wbHVnaW4tdW5pY29ybic7XG5pbXBvcnQge1xuICBkZWZpbmVDb25maWcsXG4gIGdsb2JhbElnbm9yZXNcbn0gZnJvbSAnZXNsaW50L2NvbmZpZyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IHRzZXNsaW50IGZyb20gJ3R5cGVzY3JpcHQtZXNsaW50JztcblxuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBnZXRSb290Rm9sZGVyIH0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQgeyBub1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cmllcyB9IGZyb20gJy4vZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzJztcbmltcG9ydCB7XG4gIElOX0hPVVNFX0VTTElOVF9QTFVHSU5fTkFNRSxcbiAgaW5Ib3VzZUVzbGludFBsdWdpblxufSBmcm9tICcuL2VzbGludC1ydWxlcy9pbi1ob3VzZS1wbHVnaW4udHMnO1xuaW1wb3J0IHsgQ0xBVURFX1dPUktUUkVFU19JR05PUkVfR0xPQiB9IGZyb20gJy4vbGludC1pZ25vcmVzLnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUVzbGludENvbmZpZ3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBidWlsZHMgY3VzdG9tIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICogQHJldHVybnMgVGhlIGN1c3RvbSBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Db25maWdzPzogKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpID0+IExpbnRlci5Db25maWdbXTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGVkaXRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdENvbnRleHQ/OiAoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIG9sZGVzdCBOb2RlIHZlcnNpb24gc2hpcHBlZCBzb3VyY2UgaGFzIHRvIHJ1biBvbiwgYXMgYSBzZW12ZXIgcmFuZ2U6IGEgbGlicmFyeSB0aGF0IGFsc28gcnVucyBpbnNpZGUgYW5cbiAgICogb2xkZXIgcnVudGltZSB0aGFuIGl0cyBvd24gdG9vbGluZyAoYW4gT2JzaWRpYW4gcmVuZGVyZXIsIHNheSkgbmFtZXMgdGhhdCBydW50aW1lJ3MgTm9kZSBoZXJlLiBXaGVuIG9taXR0ZWQsXG4gICAqIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGRlc3QgTm9kZSB2ZXJzaW9uIHNoaXBwZWQgc291cmNlIGhhcyB0byBydW4gb24sIGFzIGEgc2VtdmVyIHJhbmdlLiBXaGVuIG9taXR0ZWQsIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzXG4gICAqIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdldE5vZGVDb21wYXRDb25maWdzUGFyYW1zIHtcbiAgcmVhZG9ubHkgY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dDtcbiAgcmVhZG9ubHkgbWluaW11bU5vZGVWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZm9yIGRlZmluaW5nIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVzbGludENvbmZpZ0NvbnRleHQge1xuICAvKipcbiAgICogVGhlIHJvb3QgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb290Q29uZmlnRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JpcHQgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXJzIGhvbGRpbmcgdGhlIHByb2plY3QncyBzb3VyY2VzLCBieSBkZWZhdWx0IGBzcmNgIGFsb25lLiBBIHdvcmtzcGFjZSB3aG9zZSBwYWNrYWdlcyBlYWNoIGhhdmUgdGhlaXIgb3duXG4gICAqIGBzcmNgIGFkZHMgdGhlbSBoZXJlLCBzbyB0aGUgcnVsZXMga2V5ZWQgb24gYSBmaWxlJ3MgbmFtZSBpbnNpZGUgYSBzb3VyY2UgZm9sZGVyIHJlYWNoIHRob3NlIHBhY2thZ2VzIHRvby5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2VGb2xkZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdGVzdCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBhbGwgZmlsZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhbGwgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgYWxsRmlsZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy50ZXN0RmlsZXMsIC4uLnRoaXMuc2NyaXB0RmlsZXMsIC4uLnRoaXMucm9vdENvbmZpZ0ZpbGVzLCAuLi50aGlzLnNvdXJjZUZpbGVzXTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbnRleHQgb2YgYSBwcm9qZWN0IGxhaWQgb3V0IHRoZSBjb252ZW50aW9uYWwgd2F5OiBzb3VyY2VzIHVuZGVyIGBzcmNgLCBzY3JpcHRzIHVuZGVyIGBzY3JpcHRzYCwgdGVzdHNcbiAqIGJlc2lkZSB0aGUgc291cmNlcyBvciB1bmRlciBgX190ZXN0c19fYCwgYW5kIHRoZSBjb21taXRsaW50LCBFU0xpbnQgYW5kIFZpdGVzdCBjb25maWd1cmF0aW9ucyBhdCB0aGUgcm9vdC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk6IEVzbGludENvbmZpZ0NvbnRleHQge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEVzbGludENvbmZpZ0NvbnRleHQoKTtcbiAgY29udGV4dC5zb3VyY2VGb2xkZXJzLnB1c2goUmVwb1BhdGhzLlNyYyk7XG4gIGNvbnRleHQucm9vdENvbmZpZ0ZpbGVzLnB1c2goXG4gICAgUmVwb1BhdGhzLkNvbW1pdGxpbnRDb25maWdUcyxcbiAgICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzLFxuICAgIFJlcG9QYXRocy5WaXRlc3RDb25maWdUc1xuICApO1xuICBjb250ZXh0LnNjcmlwdEZpbGVzLnB1c2goXG4gICAgam9pbihSZXBvUGF0aHMuU2NyaXB0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcylcbiAgKTtcbiAgY29udGV4dC5zb3VyY2VGaWxlcy5wdXNoKFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuU3JjLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRzeClcbiAgKTtcbiAgY29udGV4dC50ZXN0RmlsZXMucHVzaChcbiAgICBqb2luKFJlcG9QYXRocy5UZXN0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuTW9ja3MsIFJlcG9QYXRocy5BbnlQYXRoLCBSZXBvUGF0aHMuQW55VHMpLFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUZXN0VHMpLFxuICAgIC8qXG4gICAgICogQSBidWlsZC1zY3JpcHQgdGVzdCBpcyBhIFRFU1QsIGFuZCB0aGlzIGNvbnZlbnRpb24gcHV0cyBpdCBpbiBhIGAqLnRlc3QudHNgIHVuZGVyIGBzY3JpcHRzL2AgLS0gYmVzaWRlIHRoZVxuICAgICAqIHNjcmlwdCBpdCBjb3ZlcnMgcmF0aGVyIHRoYW4gdW5kZXIgYHNyYy9gLiBXaXRob3V0IHRoaXMgZ2xvYiBpdCBtYXRjaGVkIGBzY3JpcHRGaWxlc2AgYWxvbmUsIHNvIGV2ZXJ5IHJlbGF4YXRpb25cbiAgICAgKiB0aGF0IGtleXMgb24gYGNvbnRleHQudGVzdEZpbGVzYCBtaXNzZWQgaXQ6IGBuby1tYWdpYy1udW1iZXJzYCBmaXJlZCBvbiBhIHN1aXRlIHdob3NlIHdob2xlIHN1YmplY3QgaXMgcmVjb3JkZWRcbiAgICAgKiBudW1iZXJzLCBhbmQgYHVuaWNvcm4vY29uc2lzdGVudC1mdW5jdGlvbi1zY29waW5nYCBvbiB0aGUgcGVyLXN1aXRlIGZpeHR1cmUgZmFjdG9yaWVzIHRoZSBibG9jayBhdCB0aGUgYm90dG9tXG4gICAgICogb2YgYGdldFVuaWNvcm5Db25maWdzYCBzYXlzIHRlc3RzIGV4aXN0IHRvIGFsbG93LlxuICAgICAqXG4gICAgICogVGhlIGZpbGUgbm93IG1hdGNoZXMgQk9USCBsaXN0cywgYW5kIHRoYXQgaXMgZGVsaWJlcmF0ZSByYXRoZXIgdGhhbiBhbiBvdmVybGFwIHRvIHJlc29sdmU6IGV2ZXJ5dGhpbmcgc2NvcGVkIHRvXG4gICAgICogYGNvbnRleHQuc2NyaXB0RmlsZXNgIG9ubHkgdHVybnMgcnVsZXMgT0ZGIChgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXNgLCBgdW5pY29ybi9uby1wcm9jZXNzLWV4aXRgKSwgYm90aCBvZlxuICAgICAqIHdoaWNoIGEgc2NyaXB0IHRlc3Qgd2FudHMgYXMgbXVjaCBhcyB0aGUgc2NyaXB0IGRvZXMsIHNvIHRoZSB0d28gc2V0cyBjb21wb3NlIGluc3RlYWQgb2YgY29tcGV0aW5nLiBLZWVwIGl0IHRoYXRcbiAgICAgKiB3YXkgLS0gYSBydWxlIHR1cm5lZCBPTiBmb3IgYHNjcmlwdEZpbGVzYCB3b3VsZCBsYW5kIG9uIHRoZXNlIGZpbGVzIHRvbywgYW5kIGZsYXQtY29uZmlnIG9yZGVyLCBub3QgaW50ZW50LFxuICAgICAqIHdvdWxkIGRlY2lkZSB3aGljaCBzaWRlIHdvbi5cbiAgICAgKi9cbiAgICBqb2luKFJlcG9QYXRocy5TY3JpcHRzLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRlc3RUcylcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbnMgb2YgYSBnZW5lcmljIFR5cGVTY3JpcHQgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBkZWZpbmluZyBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lRXNsaW50Q29uZmlncyhvcHRpb25zOiBEZWZpbmVFc2xpbnRDb25maWdzT3B0aW9ucyA9IHt9KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk7XG4gIG9wdGlvbnMuZWRpdENvbnRleHQ/Lihjb250ZXh0KTtcbiAgY29uc3QgY3VzdG9tQ29uZmlncyA9IG9wdGlvbnMuY3VzdG9tQ29uZmlncz8uKGNvbnRleHQpID8/IFtdO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpLFxuICAgIC4uLmdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICAuLi4ob3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW1Ob2RlVmVyc2lvbjogb3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gfSlcbiAgICB9KSxcbiAgICAuLi5jdXN0b21Db25maWdzXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb25zIG9mIEVTTGludCdzIG93biBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgcmVhZHMgaXQgdG8gbGVhcm4gd2hpY2ggY29yZSBydWxlcyB0aGlzXG4gKiBjb25maWd1cmF0aW9uIHNldHMgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIEVTTGludCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW2VzbGludC5jb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnYWNjZXNzb3ItcGFpcnMnOiAnZXJyb3InLFxuICAgICAgICAnYXJyYXktY2FsbGJhY2stcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NhbWVsY2FzZSc6ICdlcnJvcicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIHJlcG9ydHMgcGVyIGNvbW1lbnQgVE9LRU4sIHNvIGV2ZXJ5IGNvbnRpbnVhdGlvbiBsaW5lIG9mIGEgd3JhcHBlZCBgLy9gIGNvbW1lbnQgaXMgaXRzIG93biB0b2tlblxuICAgICAgICAgKiB0aGF0IHdvdWxkIGhhdmUgdG8gc3RhcnQgd2l0aCBhIGNhcGl0YWwg4oCUIHdoaWNoIGlzIGhvdyBwcm9zZSBlbmRzIHVwIHdpdGggY2FwaXRhbHMgbWlkLXNlbnRlbmNlLlxuICAgICAgICAgKiBgaWdub3JlQ29uc2VjdXRpdmVDb21tZW50c2AgZXhlbXB0cyBhIGxpbmUgY29tbWVudCB0aGF0IGRpcmVjdGx5IGZvbGxvd3MgYW5vdGhlciBvbmUsIHdoaWNoIGlzIGV4YWN0bHkgdGhlXG4gICAgICAgICAqIHNoYXBlIG9mIGEgd3JhcHBlZCBibG9jaywgd2hpbGUgc3RpbGwgaG9sZGluZyBpdHMgRklSU1QgbGluZSB0byBhIGNhcGl0YWwuIEJsb2NrIGNvbW1lbnRzIG5lZWQgbm8gc3VjaFxuICAgICAgICAgKiBvcHRpb246IGEgYmxvY2sgY29tbWVudCBpcyBhIHNpbmdsZSB0b2tlbiBob3dldmVyIG1hbnkgbGluZXMgaXQgc3BhbnMuXG4gICAgICAgICAqIGBpZ25vcmVQYXR0ZXJuYCBjb3ZlcnMgdGhlIGhhbGYgdGhhdCBsZWF2ZXMgYmVoaW5kOiBhIGNvbW1lbnQgd2hvc2UgRklSU1Qgd29yZCBpcyBhIGNhbWVsQ2FzZSBpZGVudGlmaWVyIGlzXG4gICAgICAgICAqIGV4ZW1wdCwgc28gYSBjb21tZW50IHRoYXQgb3BlbnMgYnkgbmFtaW5nIGEgc3ltYm9sIGtlZXBzIHRoZSBuYW1lIGEgcmVhZGVyIGNhbiBncmVwIGluc3RlYWQgb2YgYSBQYXNjYWxDYXNlXG4gICAgICAgICAqIG9uZSB0aGF0IGV4aXN0cyBub3doZXJlLiBUaGUgcnVsZSBhbmNob3JzIHRoZSBwYXR0ZXJuIGF0IHRoZSBzdGFydCBvZiB0aGUgY29tbWVudCBhbmQgYFthLXpBLVowLTldYCBtYXRjaGVzXG4gICAgICAgICAqIG5vIHdoaXRlc3BhY2UsIHNvIGl0IGNhbiBvbmx5IGV2ZXIgbWF0Y2ggdGhhdCBmaXJzdCB3b3JkIOKAlCBvcmRpbmFyeSBsb3dlcmNhc2UgcHJvc2Ugc3RheXMgcmVwb3J0ZWQuIEJvdGhcbiAgICAgICAgICogb3B0aW9uIGJhZ3MgbmVlZCBpdCwgYW5kIGBibG9ja2Aga2VlcHMgaXRzIGB2OGAgZXhlbXB0aW9uIGJ5IGFsdGVybmF0aW9uIHJhdGhlciB0aGFuIGxvc2luZyBpdC5cbiAgICAgICAgICovXG4gICAgICAgICdjYXBpdGFsaXplZC1jb21tZW50cyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdhbHdheXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsb2NrOiB7IGlnbm9yZVBhdHRlcm46ICd2OHxbYS16XVthLXpBLVowLTldKltBLVpdJyB9LFxuICAgICAgICAgICAgbGluZTogeyBpZ25vcmVDb25zZWN1dGl2ZUNvbW1lbnRzOiB0cnVlLCBpZ25vcmVQYXR0ZXJuOiAnW2Etel1bYS16QS1aMC05XSpbQS1aXScgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2NvbXBsZXhpdHknOiAnZXJyb3InLFxuICAgICAgICAnY29uc2lzdGVudC10aGlzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2N1cmx5JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZSc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LWNhc2UtbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LXBhcmFtLWxhc3QnOiAnZXJyb3InLFxuICAgICAgICAnZXFlcWVxJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZS1tYXRjaGluZyc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnZGVjbGFyYXRpb24nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93QXJyb3dGdW5jdGlvbnM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnZ3JvdXBlZC1hY2Nlc3Nvci1wYWlycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdnZXRCZWZvcmVTZXQnXG4gICAgICAgIF0sXG4gICAgICAgICdndWFyZC1mb3ItaW4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tYWxlcnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tYXJyYXktY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tYml0d2lzZSc6ICdlcnJvcicsXG4gICAgICAgICduby1jYWxsZXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tY29uc29sZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWNvbnN0cnVjdG9yLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICduby1kaXYtcmVnZXgnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZWxzZS1yZXR1cm4nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd0Vsc2VJZjogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1lbXB0eS1mdW5jdGlvbic6ICdlcnJvcicsXG4gICAgICAgICduby1leHRlbmQtbmF0aXZlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dHJhLWJpbmQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtbGFiZWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW1wbGljaXQtY29lcmNpb24nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICAnISEnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWlubmVyLWRlY2xhcmF0aW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbC12YXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbGFiZWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmUtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmVseS1pZic6ICdlcnJvcicsXG4gICAgICAgICduby1sb29wLWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbWFnaWMtbnVtYmVycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldGVjdE9iamVjdHM6IHRydWUsXG4gICAgICAgICAgICBlbmZvcmNlQ29uc3Q6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmU6IFtcbiAgICAgICAgICAgICAgLTEsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1tdWx0aS1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbXVsdGktc3RyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lZ2F0ZWQtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lc3RlZC10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICduby1vYmplY3QtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tb2N0YWwtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXJlc3RyaWN0ZWQtc3ludGF4JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgLi4ubm9SZXN0cmljdGVkU3ludGF4UnVsZUVudHJpZXNcbiAgICAgICAgXSxcbiAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2NyaXB0LXVybCc6ICdlcnJvcicsXG4gICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNoYWRvdyc6ICdlcnJvcicsXG4gICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubmVlZGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbmNhdCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAnb3BlcmF0b3ItYXNzaWdubWVudCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbmFtZWQtY2FwdHVyZS1ncm91cCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LWhhcy1vd24nOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3JhZGl4JzogJ2Vycm9yJyxcbiAgICAgICAgJ3JlcXVpcmUtYXRvbWljLXVwZGF0ZXMnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAndW5pY29kZS1ib20nOiAnZXJyb3InLFxuICAgICAgICAndmFycy1vbi10b3AnOiAnZXJyb3InLFxuICAgICAgICAneW9kYSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduby1tYWdpYy1udW1iZXJzJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKipcbiAqIFRoZSBnbG9iYWwgaWdub3JlczogZXZlcnl0aGluZyBgLmdpdGlnbm9yZWAgbmFtZXMsIHBsdXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLmdldEdpdElnbm9yZUNvbmZpZ3MoKSxcbiAgICAvKlxuICAgICAqIE9uIHRvcCBvZiBgLmdpdGlnbm9yZWAsIG5vdCBpbnN0ZWFkIG9mIGl0OiBnaXQgZXhjbHVkZXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIgdGhyb3VnaFxuICAgICAqIGAuZ2l0L2luZm8vZXhjbHVkZWAsIHdoaWNoIGBpbmNsdWRlSWdub3JlRmlsZWAgYWJvdmUgZG9lcyBub3QgcmVhZC4gU2VlIGBsaW50LWlnbm9yZXMudHNgLlxuICAgICAqL1xuICAgIGdsb2JhbElnbm9yZXMoW0NMQVVERV9XT1JLVFJFRVNfSUdOT1JFX0dMT0JdLCAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9jbGF1ZGUtd29ya3RyZWVzJylcbiAgKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2VuZXJpYyBsYXllcnMgb2YgdGhlIHNoYXJlZCBjb25maWd1cmF0aW9uLCB3aXRob3V0IHRoZSBnbG9iYWwgaWdub3Jlcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlncyhwYXJhbXM6IEdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzUGFyYW1zKTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgeyBjb250ZXh0IH0gPSBwYXJhbXM7XG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0RXNsaW50Q29yZUNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0VHNlc2xpbnRDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldFN0eWxpc3RpY0NvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0SW1wb3J0WENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0VW5pY29ybkNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpLFxuICAgIC4uLmdldEVzbGludENvbW1lbnRzQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRJbkhvdXNlUGx1Z2luQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXROb2RlQ29tcGF0Q29uZmlncyh7IGNvbnRleHQsIG1pbmltdW1Ob2RlVmVyc2lvbjogcGFyYW1zLm1pbmltdW1Ob2RlVmVyc2lvbiB9KVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRFc2xpbnRDb21tZW50c0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgcmVjb21tZW5kZWRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICBleHRlbmRzOiBbY29tbWVudHNDb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQGVzbGludC1jb21tdW5pdHkvZXNsaW50LWNvbW1lbnRzL3JlcXVpcmUtZGVzY3JpcHRpb24nOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAnaW1wb3J0LXgvcmVzb2x2ZXItbmV4dCc6IFtcbiAgICAgICAgICBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIoe1xuICAgICAgICAgICAgYWx3YXlzVHJ5VHlwZXM6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0R2l0SWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBnaXRpZ25vcmVQYXRoID0gam9pbihnZXRSb290Rm9sZGVyKCkgPz8gJycsICcuZ2l0aWdub3JlJyk7XG4gIHJldHVybiBleGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpID8gW2luY2x1ZGVJZ25vcmVGaWxlKGdpdGlnbm9yZVBhdGgpXSA6IFtdO1xufVxuXG5mdW5jdGlvbiBnZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy50eXBlc2NyaXB0LFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MuZXJyb3JzLFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3Mud2FybmluZ3NcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L2NvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvZXh0ZW5zaW9ucyc6IFsnZXJyb3InLCAnaWdub3JlUGFja2FnZXMnXSxcbiAgICAgICAgJ2ltcG9ydC14L2ZpcnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L2ltcG9ydHMtZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbmV3bGluZS1hZnRlci1pbXBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYWJzb2x1dGUtcGF0aCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWNvbW1vbmpzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWN5Y2xlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlcHJlY2F0ZWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1keW5hbWljLXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1tdXRhYmxlLWV4cG9ydHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lc3BhY2UnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVsYXRpdmUtcGFja2FnZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVzdHJpY3RlZC1wYXRocyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1zZWxmLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby11bmFzc2lnbmVkLWltcG9ydCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICcqKi8qLmNzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNhc3MnLFxuICAgICAgICAgICAgICAnKiovKi5zY3NzJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVudXNlZC1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdpbXBvcnQteC9uby11c2VsZXNzLXBhdGgtc2VnbWVudHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8td2VicGFjay1sb2FkZXItc3ludGF4JzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc2NyaXB0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQSB0ZXN0IHJ1bnMgdW5kZXIgdGhlIHRlc3QgcnVubmVyIGluIE5vZGUgYW5kIGlzIG5ldmVyIGJ1bmRsZWQgaW50byBhbnl0aGluZyB0aGF0IHNoaXBzLlxuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnJvb3RDb25maWdGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5Ib3VzZVBsdWdpbkNvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIFtJTl9IT1VTRV9FU0xJTlRfUExVR0lOX05BTUVdOiBpbkhvdXNlRXNsaW50UGx1Z2luXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLWtleXdvcmQtaWRlbnRpZmllcnMnOiAnZXJyb3InLFxuICAgICAgICAvKlxuICAgICAgICAgKiBNZWFzdXJlZCBvdmVyIDMyIHBsdWdpbnMgYnVpbHQgb24gdGhpcyBjb25maWcgYmVmb3JlIGl0IHdhcyB0dXJuZWQgb24gKDIwMjYtMDktMjQpOiAyOSBoYWQgbm8gZmluZGluZyxcbiAgICAgICAgICogdGhlIG90aGVyIHRocmVlIGhhZCA4IGJldHdlZW4gdGhlbSwgZXZlcnkgb25lIGEgZ2VudWluZWx5IGRlYWQgbGluay5cbiAgICAgICAgICovXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVucmVzb2x2ZWQtanNkb2MtbGluayc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVudXNlZC1wYXJhbXMtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnOiAnZXJyb3InLFxuICAgICAgICAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoJzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcHJlZmVyLWRlZGVudCc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3ByZWZlci1sb2dpY2FsLW9wZXJhdG9yLW92ZXItdGVybmFyeSc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3ByZWZlci1ub29wLWFzeW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcHJlZmVyLXNwcmVhZCc6ICdlcnJvcicsXG4gICAgICAgICd0eXBlc2NyaXB0LWRldi10b29sa2l0L3JlYWRvbmx5LWludGVyZmFjZS1tZW1iZXJzJzogJ2Vycm9yJyxcbiAgICAgICAgJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVxdWlyZS1tZXRob2QtdGVtcGxhdGUnOiAnZXJyb3InLFxuICAgICAgICAndHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZXF1aXJlLXN1cGVyLWNhbGwnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldE5vZGVDb21wYXRDb25maWdzKHBhcmFtczogR2V0Tm9kZUNvbXBhdENvbmZpZ3NQYXJhbXMpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCB7IGNvbnRleHQsIG1pbmltdW1Ob2RlVmVyc2lvbiB9ID0gcGFyYW1zO1xuICBjb25zdCB2ZXJzaW9uT3B0aW9ucyA9IG1pbmltdW1Ob2RlVmVyc2lvbiA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHZlcnNpb246IG1pbmltdW1Ob2RlVmVyc2lvbiB9O1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnNvdXJjZUZpbGVzLFxuICAgICAgaWdub3JlczogW1xuICAgICAgICAuLi5jb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgICAgLy8gRGV2LW9ubHkgdG9vbGluZyAoYnVpbGQsIGxpbnQsIHZlcnNpb24pIHJ1bnMgdmlhIGBqaXRpYCBpbiB0aGUgZGV2ZWxvcGVyJ3MgTm9kZSBlbnZpcm9ubWVudCBhbmQgbmV2ZXIgc2hpcHMsIHNvIHRoZSBzaGlwcGVkIHNvdXJjZSdzIE5vZGUgZmxvb3IgZG9lcyBub3QgYXBwbHkgdG8gaXQuXG4gICAgICAgIC4uLmNvbnRleHQuc2NyaXB0RmlsZXNcbiAgICAgIF0sXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIG46IG5vZGVQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnbi9uby11bnN1cHBvcnRlZC1mZWF0dXJlcy9lcy1idWlsdGlucyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHZlcnNpb25PcHRpb25zXG4gICAgICAgIF0sXG4gICAgICAgICduL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL25vZGUtYnVpbHRpbnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBgQmxvYmAgYW5kIGBGaWxlYCBhcmUgRE9NIHdlYiBnbG9iYWxzIHByZXNlbnQgaW4gZXZlcnkgc3VwcG9ydGVkIGJyb3dzZXIgZW5naW5lLCBidXQgdGhlIHJ1bGUgYWxzbyBrbm93cyB0aGVtIGFzIE5vZGUncyBleHBlcmltZW50YWwgYnVpbHRpbnMgYW5kIGNhbm5vdCB0ZWxsIHdoaWNoIGlzIG1lYW50LiBJZ25vcmUgdGhlbSBnbG9iYWxseTsgZ2VudWluZWx5IG5ld2VyIEFQSXMgKGUuZy4gYEFib3J0U2lnbmFsLmFueWApIHN0YXkgZmxhZ2dlZC5cbiAgICAgICAgICAgIGlnbm9yZXM6IFtcbiAgICAgICAgICAgICAgJ0Jsb2InLFxuICAgICAgICAgICAgICAnRmlsZSdcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAuLi52ZXJzaW9uT3B0aW9uc1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldFBlcmZlY3Rpb25pc3RDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFt7XG4gICAgZXh0ZW5kczogW3BlcmZlY3Rpb25pc3RDb25maWdzWydyZWNvbW1lbmRlZC1hbHBoYWJldGljYWwnXV0sXG4gICAgZmlsZXM6IGNvbnRleHQuYWxsRmlsZXMoKVxuICB9XSk7XG59XG5cbi8qKlxuICogTGF5b3V0IGJlbG9uZ3MgdG8gZHByaW50LiBPbmx5IHRoZSBgQHN0eWxpc3RpY2AgcnVsZXMgZHByaW50IGNhbm5vdCBleHByZXNzIGFyZSBrZXB0LCBlYWNoIHZlcmlmaWVkIGJ5IGZvcm1hdHRpbmcgYVxuICogdmlvbGF0aW5nIHByb2JlIHdpdGggdGhlIHNoYXJlZCBgZHByaW50Lmpzb25gIGFuZCBsaW50aW5nIHRoZSByZXN1bHQ6IHRoZSBydWxlIHN0aWxsIHJlcG9ydHMgdGhlcmUuIEV2ZXJ5IG90aGVyXG4gKiBydWxlIG9mIGBzdHlsaXN0aWMuY29uZmlncy5yZWNvbW1lbmRlZGAgd2FzIGRyb3BwZWQsIGJlY2F1c2UgZHByaW50IGZpeGVzIGl0IGFscmVhZHksIG9yIGJlY2F1c2UgaXQgZm91Z2h0IGRwcmludFxuICogKGB3cmFwLWlpZmVgLCB3aG9zZSBwYXJlbnRoZXNlcyBkcHJpbnQgc3RyaXBzLCBganN4LXF1b3Rlc2AgYWdhaW5zdCBgcXVvdGVTdHlsZWAsIGBvcGVyYXRvci1saW5lYnJlYWtgLCBgaW5kZW50YCkuXG4gKiBUaGUga2VwdCBydWxlcyBhZ3JlZSB3aXRoIHRoZSBzaGFyZWQgUHJldHRpZXIgYW5kIEJpb21lIGNvbmZpZ3VyYXRpb25zIHRvbywgc28gZWl0aGVyIGNhbiBvd24gbGF5b3V0IGluc3RlYWQuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgLSBUaGUge0BsaW5rIEVzbGludENvbmZpZ0NvbnRleHR9LlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3MuXG4gKi9cbmZ1bmN0aW9uIGdldFN0eWxpc3RpY0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgICdAc3R5bGlzdGljJzogc3R5bGlzdGljXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLy8gVGhlIGRwcmludCBgYXJyb3dGdW5jdGlvbi51c2VQYXJlbnRoZXNlc2AgZGVmYXVsdCwgYG1haW50YWluYCwga2VlcHMgYHggPT4geGAuXG4gICAgICAgICdAc3R5bGlzdGljL2Fycm93LXBhcmVucyc6IFsnZXJyb3InLCAnYWx3YXlzJ10sXG4gICAgICAgIC8vIE5vdCBsYXlvdXQ6IGl0IHJlbW92ZXMgb3IgYWRkcyB0aGUgYnJhY2VzIHRoZW1zZWx2ZXMsIHdoaWNoIGRwcmludCBuZXZlciBkb2VzLlxuICAgICAgICAnQHN0eWxpc3RpYy9qc3gtY3VybHktYnJhY2UtcHJlc2VuY2UnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjaGlsZHJlbjogJ25ldmVyJyxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBwcm9wRWxlbWVudFZhbHVlc2AgaXMgdGhlIHJ1bGUncyBvd24gb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICBwcm9wRWxlbWVudFZhbHVlczogJ2Fsd2F5cycsXG4gICAgICAgICAgICBwcm9wczogJ25ldmVyJ1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gVGhlIGRwcmludCBmb3JtYXR0ZXIga2VlcHMgYmxhbmsgbGluZXMgYXMgd3JpdHRlbiBhbmQgbmV2ZXIgaW5zZXJ0cyBvbmUuXG4gICAgICAgICdAc3R5bGlzdGljL2xpbmVzLWJldHdlZW4tY2xhc3MtbWVtYmVycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdhbHdheXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGV4Y2VwdEFmdGVyT3ZlcmxvYWQ6IHRydWUsXG4gICAgICAgICAgICBleGNlcHRBZnRlclNpbmdsZUxpbmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8vIFRoZSBkcHJpbnQgZm9ybWF0dGVyIGtlZXBzIGEgbnVtZXJpYyBsaXRlcmFsJ3MgdGV4dCwgc28gYC41YCBhbmQgYDIuYCBzdGF5LlxuICAgICAgICAnQHN0eWxpc3RpYy9uby1mbG9hdGluZy1kZWNpbWFsJzogJ2Vycm9yJyxcbiAgICAgICAgLy8gTm90IGxheW91dDogaXQgYXNrcyBmb3IgcGFyZW50aGVzZXMgdGhhdCBjaGFuZ2UgaG93IHRoZSBleHByZXNzaW9uIHJlYWRzLCB3aGljaCBkcHJpbnQgbmV2ZXIgYWRkcy5cbiAgICAgICAgJ0BzdHlsaXN0aWMvbm8tbWl4ZWQtb3BlcmF0b3JzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3dTYW1lUHJlY2VkZW5jZTogdHJ1ZSxcbiAgICAgICAgICAgIGdyb3VwczogW1xuICAgICAgICAgICAgICBbJz09JywgJyE9JywgJz09PScsICchPT0nLCAnPicsICc+PScsICc8JywgJzw9J10sXG4gICAgICAgICAgICAgIFsnJiYnLCAnfHwnXSxcbiAgICAgICAgICAgICAgWydpbicsICdpbnN0YW5jZW9mJ11cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8vIFRoZSBkcHJpbnQgZm9ybWF0dGVyIHJlcGxhY2VzIHRhYiBpbmRlbnRhdGlvbiBidXQgbGVhdmVzIGEgdGFiIGluc2lkZSBhIGNvbW1lbnQuXG4gICAgICAgICdAc3R5bGlzdGljL25vLXRhYnMnOiAnZXJyb3InLFxuICAgICAgICAvLyBUaGUgZHByaW50IGBxdW90ZVByb3BzYCBkZWZhdWx0IGlzIGBwcmVzZXJ2ZWAuXG4gICAgICAgICdAc3R5bGlzdGljL3F1b3RlLXByb3BzJzogWydlcnJvcicsICdjb25zaXN0ZW50LWFzLW5lZWRlZCddLFxuICAgICAgICAvLyBUaGUgZHByaW50IGBxdW90ZVN0eWxlYCBjb3ZlcnMgc3RyaW5nIGxpdGVyYWxzIG9ubHksIGFuZCBsZWF2ZXMgYSB0ZW1wbGF0ZSBsaXRlcmFsIHdpdGggbm8gc3Vic3RpdHV0aW9uLlxuICAgICAgICAnQHN0eWxpc3RpYy9xdW90ZXMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnc2luZ2xlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd1RlbXBsYXRlTGl0ZXJhbHM6ICduZXZlcidcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8vIFRoZSBkcHJpbnQgZm9ybWF0dGVyIGFkZHMgdGhlIHNwYWNlIGFmdGVyIGAvL2AgYnV0IG5vdCBhZnRlciBgLypgIG9yIGJlZm9yZSBgKi9gLlxuICAgICAgICAnQHN0eWxpc3RpYy9zcGFjZWQtY29tbWVudCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdhbHdheXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsb2NrOiB7XG4gICAgICAgICAgICAgIGJhbGFuY2VkOiB0cnVlLFxuICAgICAgICAgICAgICBleGNlcHRpb25zOiBbJyonXSxcbiAgICAgICAgICAgICAgbWFya2VyczogWychJ11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaW5lOiB7XG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnM6IFsnLycsICcjJ10sXG4gICAgICAgICAgICAgIG1hcmtlcnM6IFsnLyddXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHNlc2xpbnRDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBleHRlbmRzOiBbXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgX2RlZmF1bHRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICAgIC4uLnRzZXNsaW50LmNvbmZpZ3Muc3RyaWN0VHlwZUNoZWNrZWQsXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgX2RlZmF1bHRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICAgIC4uLnRzZXNsaW50LmNvbmZpZ3Muc3R5bGlzdGljVHlwZUNoZWNrZWRcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgbGFuZ3VhZ2VPcHRpb25zOiB7XG4gICAgICAgIHBhcnNlck9wdGlvbnM6IHtcbiAgICAgICAgICBlY21hRmVhdHVyZXM6IHtcbiAgICAgICAgICAgIGpzeDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJvamVjdFNlcnZpY2U6IHRydWUsXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHRzY29uZmlnUm9vdERpcmAgaXMgYSBgdHlwZXNjcmlwdC1lc2xpbnRgIHBhcnNlciBvcHRpb24uXG4gICAgICAgICAgdHNjb25maWdSb290RGlyOiBnZXRSb290Rm9sZGVyKCkgPz8gJydcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtZnVuY3Rpb24tcmV0dXJuLXR5cGUnOiAnZXJyb3InLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1lbWJlci1hY2Nlc3NpYmlsaXR5JzogJ2Vycm9yJyxcbiAgICAgICAgLy8gVGhlIHJ1bGUncyBvd24gYHByb3BlcnR5YCBkZWZhdWx0LCBzcGVsbGVkIGFzIGEgYmFyZSBzZXZlcml0eSBzbyBpdCBzdGF5cyB0aGUgcnVsZSdzIGRlZmF1bHQgcmF0aGVyIHRoYW4gYSBjb3B5IG9mIGl0LlxuICAgICAgICAvLyBEbyBOT1QgcGFzcyBgJ21ldGhvZCdgIGZvciB0aWRpbmVzczogdGhlIG1ldGhvZCBmb3JtIGtlZXBzIHBhcmFtZXRlcnMgYml2YXJpYW50LCBkcm9wcyBgcmVhZG9ubHlgICh0aGUgcnVsZSdzIG93biBmaXhlclxuICAgICAgICAvLyBtZXNzYWdlIHNheXMgc28pLCBhbmQgbWFrZXMgYEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZGAgZmlyZSBvbiBldmVyeSBmb3J3YXJkZWQgYmFnIG1lbWJlciwgd2hpY2ggaXMgd2hhdCB0aGVcbiAgICAgICAgLy8gYHRoaXM6IHZvaWRgIGJvaWxlcnBsYXRlIHVzZWQgdG8gcGF5IGZvci4gRG8gTk9UIGRlbGV0ZSB0aGUgbGluZSBlaXRoZXIgLSB0aGUgcnVsZSBpcyBpbiBubyBwcmVzZXQsIHNvIHRoYXQgdHVybnMgaXQgb2ZmLlxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L21ldGhvZC1zaWduYXR1cmUtc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzJzogWydlcnJvcicsIHtcbiAgICAgICAgICBjaGVja1RoZW5hYmxlczogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZSc6IFsnZXJyb3InLCB7XG4gICAgICAgICAgYWxsb3dBc1RoaXNQYXJhbWV0ZXI6IHRydWVcbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhcyc6IFsnZXJyb3InLCB7XG4gICAgICAgICAgYWxsb3dlZE5hbWVzOiBbXG4gICAgICAgICAgICAndGhhdCdcbiAgICAgICAgICBdXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYGFyZ3NgIGlzIGFuIEVTTGludCBydWxlIG9wdGlvbiBuYW1lLlxuICAgICAgICAgICAgYXJnczogJ2FsbCcsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgYXJnc0lnbm9yZVBhdHRlcm5gIGlzIGEgYHR5cGVzY3JpcHQtZXNsaW50YCBydWxlIG9wdGlvbiBuYW1lLlxuICAgICAgICAgICAgYXJnc0lnbm9yZVBhdHRlcm46ICdeXycsXG4gICAgICAgICAgICBjYXVnaHRFcnJvcnM6ICdhbGwnLFxuICAgICAgICAgICAgY2F1Z2h0RXJyb3JzSWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGRlc3RydWN0dXJlZEFycmF5SWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGlnbm9yZVJlc3RTaWJsaW5nczogdHJ1ZSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGB2YXJzSWdub3JlUGF0dGVybmAgaXMgYSBgdHlwZXNjcmlwdC1lc2xpbnRgIHJ1bGUgb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICB2YXJzSWdub3JlUGF0dGVybjogJ15fJ1xuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItcmVhZG9ubHknOiAnZXJyb3InXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlczogY29udGV4dC50ZXN0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L2RvdC1ub3RhdGlvbic6IFsnZXJyb3InLCB7XG4gICAgICAgICAgYWxsb3dQcml2YXRlQ2xhc3NQcm9wZXJ0eUFjY2VzczogdHJ1ZSxcbiAgICAgICAgICBhbGxvd1Byb3RlY3RlZENsYXNzUHJvcGVydHlBY2Nlc3M6IHRydWVcbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgcmVhY3Q6IHtcbiAgICAgICAgICB2ZXJzaW9uOiAnZGV0ZWN0J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0VW5pY29ybkNvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGV4dGVuZHM6IFt1bmljb3JuLmNvbmZpZ3MucmVjb21tZW5kZWRdLFxuICAgICAgZmlsZXM6IGNvbnRleHQuYWxsRmlsZXMoKSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZXNlIGVudHJpZXMgYXJlIG5vdCBhYmJyZXZpYXRpb25zIHRvIGJlIGV4cGFuZGVkIOKAlCB0aGV5IGFyZSBlc3RhYmxpc2hlZCB2b2NhYnVsYXJ5IGhlcmUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEJyYW5kOiBgZGV2YCwgYGxpYmAsIGB1dGlsYC9gdXRpbHNgIHNwZWxsIHRoZSBwcm9kdWN0J3Mgb3duIG5hbWUuIExlZnQgb24sIHRoZSBydWxlIHJld3JpdGVzXG4gICAgICAgICAqIGBSZXBvUGF0aHNgIHRvIGBPYnNpZGlhbkRldmVsb3BtZW50VXRpbGl0aWVzUmVwb1BhdGhzYCBhbmQgYGdldExpYkRlYnVnZ2VyYCB0b1xuICAgICAgICAgKiBgZ2V0TGlicmFyeURlYnVnZ2VyYCwgcmVuYW1pbmcgZXhwb3J0ZWQgQVBJIGFmdGVyIHRoZSBwYWNrYWdlIGl0IGJlbG9uZ3MgdG8uXG4gICAgICAgICAqXG4gICAgICAgICAqIENvbnZlbnRpb246IGBwYXJhbXNgIGlzIHRoZSBwYXJhbWV0ZXItYmFnIGNvbnZlbnRpb24sIGVuZm9yY2VkIGJ5XG4gICAgICAgICAqIGB0eXBlc2NyaXB0LWRldi10b29sa2l0L3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2hgLCB3aGljaCByZXF1aXJlcyBiYWcgdHlwZXMgdG8gYmUgbmFtZWRcbiAgICAgICAgICogYDxPd25lcj5QYXJhbXNgIC8gYDxPd25lcj5PcHRpb25zYC4gRXhwYW5kaW5nIGl0IHRvIGBQYXJhbWV0ZXJzYCB3b3VsZCBwdXQgdGhlIHR3byBydWxlcyBpbiBkaXJlY3RcbiAgICAgICAgICogY29udHJhZGljdGlvbiBhbmQgYnJlYWsgMzAwKyBleHBvcnRlZCB0eXBlIG5hbWVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBCYXJlIGtleXdvcmQgYW5kIGNvbGxpZGluZyBnbG9iYWwgYmluZGluZ3MgdXNlIGAkbmFtZWAsIGVuZm9yY2VkIGJ5XG4gICAgICAgICAqIGB0eXBlc2NyaXB0LWRldi10b29sa2l0L25vLWtleXdvcmQtaWRlbnRpZmllcnNgOiBgb2JqZWN0YCBiZWNvbWVzIGAkb2JqZWN0YCwgYHN0cmluZ2AgYmVjb21lcyBgJHN0cmluZ2AsXG4gICAgICAgICAqIGFuZCBzbyBvbiwgZXZlbiB3aGVuIG5vIGFiYnJldmlhdGlvbiB3YXMgZXhwYW5kZWQuIFByb3BlcnR5IGtleXMgYW5kIGJ1aWx0aW4gcmVhZHMgc3RheSBsZWdhbC5cbiAgICAgICAgICogQSBiYXJlIGBhcmdzYCwgYGZuYCwgYHN0cmAsIGBtb2RgIG9yIGBldnRgIGxpa2V3aXNlIHRha2VzIGAkYXJndW1lbnRzYCwgYCRmdW5jdGlvbmAsIGFuZCBzbyBvbi5cbiAgICAgICAgICogVGhpcyBpcyBkZWxpYmVyYXRlbHkgTk9UIGNvbmZpZ3VyZWQgYXMgYSBjdXN0b20gcmVwbGFjZW1lbnQ6IHVuaWNvcm4gc3Vic3RpdHV0ZXMgYXQgdGhlIHdvcmQgbGV2ZWwgaW5zaWRlIGNvbXBvdW5kIG5hbWVzLCBzb1xuICAgICAgICAgKiByZWRpcmVjdGluZyB0aGUgd2hvbGUgZW50cnkgdHVybnMgYGFzeW5jRm5gIGludG8gYGFzeW5jJGZ1bmN0aW9uYC4gQ29tcG91bmRzIHdhbnQgdGhlIHBsYWluIGV4cGFuc2lvblxuICAgICAgICAgKiAoYGFzeW5jRnVuY3Rpb25gKTsgb25seSB0aGUgYmFyZSwgZ2VudWluZWx5LWNvbGxpZGluZyBpZGVudGlmaWVycyB0YWtlIHRoZSBgJGAgZm9ybS5cbiAgICAgICAgICpcbiAgICAgICAgICogRG9tYWluIHdvcmRzOiBgZG9jYC9gZG9jc2AsIGBlbnZgLCBgZGlzdGAgYW5kIGBzcmNgIGFyZSB0aGUgY2xlYXJlciBzcGVsbGluZyBpbiB0aGlzIGNvZGViYXNlLlxuICAgICAgICAgKiBFeHBhbmRpbmcgYGRvY2AgYWxzbyBwaWNrcyB0aGUgd3Jvbmcgd29yZCDigJQgdGhlIGBhcGktZG9jLSpgIG1vZHVsZXMgZ2VuZXJhdGUgQVBJICpkb2N1bWVudGF0aW9uKiwgbm90XG4gICAgICAgICAqIGRvY3VtZW50cy4gYHNyY2AgYWRkaXRpb25hbGx5IGNvcnJ1cHRzIGNvZGU6IHRoZSBmaXhlciByZW5hbWVzIHRoZSBgU3JjYCBtZW1iZXIgb2YgdGhlIGV4cG9ydGVkXG4gICAgICAgICAqIGBPYnNpZGlhblBsdWdpblJlcG9QYXRoc2AgLyBgUmVwb1BhdGhzYCBlbnVtcyB3aGlsZSBsZWF2aW5nIGV2ZXJ5IGAuU3JjYCByZWZlcmVuY2VcbiAgICAgICAgICogZGFuZ2xpbmcsIGJlY2F1c2UgYGNoZWNrUHJvcGVydGllc2AgZXhlbXB0cyBwcm9wZXJ0eSBhY2Nlc3NlcyBidXQgbm90IHRoZSBkZWNsYXJhdGlvbnMgdGhleSBwb2ludCBhdC5cbiAgICAgICAgICpcbiAgICAgICAgICogRGlzYWJsaW5nIHRoZSByZXBsYWNlbWVudCBlbnRyaWVzIHByb3RlY3RzIHRoZXNlIHBlcm1hbmVudGx5OyBhbiBgYWxsb3dMaXN0YCB3b3VsZCBpbnN0ZWFkIG5lZWQgZXZlcnlcbiAgICAgICAgICogYWZmZWN0ZWQgaWRlbnRpZmllciBlbnVtZXJhdGVkIGJ5IGhhbmQgYW5kIHJlLWVudW1lcmF0ZWQgZm9yIGV2ZXJ5IG5ldyBvbmUuXG4gICAgICAgICAqXG4gICAgICAgICAqIE5PVEU6IHRoaXMgcnVsZSdzIGF1dG9maXggaXMgTk9UIHJlZmVyZW5jZS1hd2FyZSBmb3IgZGVjbGFyYXRpb25zIHRoYXQgcGFydGljaXBhdGUgaW4gYSBjb250cmFjdCDigJRcbiAgICAgICAgICogZW51bSBtZW1iZXJzLCBpbnRlcmZhY2UgbWVtYmVycywgYW5kIFR5cGVTY3JpcHQgcGFyYW1ldGVyIHByb3BlcnRpZXMgKGBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5XG4gICAgICAgICAqIGVsOiBIVE1MRWxlbWVudClgKSBhcmUgcmVuYW1lZCB3aGlsZSBgdGhpcy5lbGAgYW5kIGBFbnVtLk1lbWJlcmAgcmVmZXJlbmNlcyBhcmUgbGVmdCBkYW5nbGluZy4gQXBwbHlcbiAgICAgICAgICogaXRzIHJlcG9ydHMgYnkgaGFuZDsgbmV2ZXIgcnVuIGAtLWZpeGAgb3ZlciBpdC5cbiAgICAgICAgICovXG4gICAgICAgIC8qXG4gICAgICAgICAqIEEgZ29vZCBydWxlLCBidXQgaXRzIGRlZmF1bHQgcHJlZml4ZXMgZm9yY2UgdW5ncmFtbWF0aWNhbCBuYW1lczogYG1lbWJlclBhZ2VFeGlzdHNgIHdvdWxkIGJlY29tZVxuICAgICAgICAgKiBgaXNNZW1iZXJQYWdlRXhpc3RzYCByYXRoZXIgdGhhbiBgZG9lc01lbWJlclBhZ2VFeGlzdGAuIFRoZXNlIGVudHJpZXMgRVhURU5EIHRoZSBkZWZhdWx0cyAoYGlzYCxcbiAgICAgICAgICogYGhhc2AsIGBjYW5gLCBgc2hvdWxkYCwgLi4uKSByYXRoZXIgdGhhbiByZXBsYWNpbmcgdGhlbSwgc28gYSBib29sZWFuIHdpdGggbm8gYm9vbGVhbi1yZWFkaW5nIHByZWZpeFxuICAgICAgICAgKiBhdCBhbGwgaXMgc3RpbGwgcmVqZWN0ZWQgLS0gdGhlIHJ1bGUganVzdCBzdG9wcyBpbnNpc3RpbmcgdGhlIHByZWZpeCBjb21lIGZyb20gYSBzaG9ydGVyIGxpc3QuXG4gICAgICAgICAqXG4gICAgICAgICAqIFRoZSBsaXN0IGlzIGJpZGlyZWN0aW9uYWw6IGFkZGluZyBhIHByZWZpeCBhbHNvIGFzc2VydHMgdGhhdCBldmVyeXRoaW5nIG5hbWVkIHdpdGggaXQgSVMgYSBib29sZWFuLlxuICAgICAgICAgKiBgY2hlY2tgIGVhcm5zIGl0cyBwbGFjZSBvbiBib3RoIGNvdW50cywgc2luY2UgdGhlIGhhbmRmdWwgb2Ygbm9uLWJvb2xlYW4gYGNoZWNrKmAgbmFtZXMgaXQgc3VyZmFjZWRcbiAgICAgICAgICogd2VyZSBnZW51aW5lbHkgbWlzLW5hbWVkICh2b2lkIGZ1bmN0aW9ucyB0aGF0IHRocm93LCBhIHByb2JlIHJldHVybmluZyBhbiBIVFRQIHN0YXR1cykuIGB0ZXN0YCB3YXNcbiAgICAgICAgICogbWVhc3VyZWQgYW5kIHJlamVjdGVkOiBpdCB3b3VsZCB2YWxpZGF0ZSBmaXZlIGB0ZXN0KmAgbGluayBwcmVkaWNhdGVzIHRoYXQgcmVhZCBiZXR0ZXIgYXMgYGlzKmBcbiAgICAgICAgICogYW55d2F5LCBhdCB0aGUgY29zdCBvZiByZW5hbWluZyBTQ1JFQU1JTkdfQ0FTRSB0ZXN0IGZpeHR1cmVzIGFuZCB0aGUgYHRlc3RDb3ZlcmFnZWAvYHRlc3RXYXRjaGBcbiAgICAgICAgICogcnVubmVycyB0aGF0IGRlbGliZXJhdGVseSBtaXJyb3IgdGhlIGB0ZXN0OmNvdmVyYWdlYC9gdGVzdDp3YXRjaGAgbnBtIHNjcmlwdHMuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9jb25zaXN0ZW50LWJvb2xlYW4tbmFtZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByZWZpeGVzOiB7XG4gICAgICAgICAgICAgIGFsbG93czogdHJ1ZSxcbiAgICAgICAgICAgICAgY2hlY2s6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRhaW5zOiB0cnVlLFxuICAgICAgICAgICAgICBkb2VzOiB0cnVlLFxuICAgICAgICAgICAgICBpbmNsdWRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgbXVzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgbmVlZHM6IHRydWUsXG4gICAgICAgICAgICAgIHN1cHBvcnRzOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAvKlxuICAgICAgICAgKiBVbnNhdGlzZmlhYmxlIGFsb25nc2lkZSBgcGVyZmVjdGlvbmlzdC9zb3J0LWNsYXNzZXNgLCB3aGljaCBpcyBjb25maWd1cmVkIGhlcmUgYXMgYSBwbGFpblxuICAgICAgICAgKiBhbHBoYWJldGljYWwgc29ydC4gVGhpcyBydWxlIHdhbnRzIGEgY2F0ZWdvcnkgb3JkZXIgKGFsbCBmaWVsZHMsIHRoZW4gdGhlIGNvbnN0cnVjdG9yLCB0aGVuIGFsbFxuICAgICAgICAgKiBtZXRob2RzKSwgc28gdGhlIGV4dHJlbWVseSBjb21tb24gYHByaXZhdGUgX3hgIGZpZWxkIHBhaXJlZCB3aXRoIGEgYHB1YmxpYyBnZXQgeCgpYCBhY2Nlc3NvciBpc1xuICAgICAgICAgKiByZWplY3RlZCBieSB3aGljaGV2ZXIgcnVsZSBsb3NlczogYWxwaGFiZXRpY2FsbHkgdGhlIGFjY2Vzc29yIHByZWNlZGVzIHRoZSBmaWVsZCwgYnkgY2F0ZWdvcnkgdGhlXG4gICAgICAgICAqIGZpZWxkIHByZWNlZGVzIHRoZSBhY2Nlc3Nvci4gVW5saWtlIGBwcmVmZXItZ2xvYmFsLXRoaXNgIHRoZSBjbGFzaCBwcm9kdWNlcyBub1xuICAgICAgICAgKiBgRVNMaW50Q2lyY3VsYXJGaXhlc1dhcm5pbmdgLCBvbmx5IGJlY2F1c2UgdGhpcyBydWxlIHNoaXBzIG5vIGZpeGVyIC0tIGJvdGggcnVsZXMgYXJlIGBlcnJvcmAsIHNvIG5vXG4gICAgICAgICAqIGFycmFuZ2VtZW50IG9mIG1lbWJlcnMgc2F0aXNmaWVzIHRoZW0gYm90aC4gVGhlIGFscGhhYmV0aWNhbCBzb3J0IGlzIHRoZSBvbmUgYWxyZWFkeSByb2xsZWQgb3V0XG4gICAgICAgICAqIGFjcm9zcyB0aGUgcGx1Z2lucyBjb25zdW1pbmcgdGhpcyBjb25maWcsIHNvIGl0IGtlZXBzIHByZWNlZGVuY2UuIFJlLWVuYWJsaW5nIHRoaXMgcnVsZSB3b3VsZCBtZWFuXG4gICAgICAgICAqIGdpdmluZyBgcGVyZmVjdGlvbmlzdC9zb3J0LWNsYXNzZXNgIGEgbWF0Y2hpbmcgYGdyb3Vwc2Agb3B0aW9uIGFuZCByZW9yZGVyaW5nIGV2ZXJ5IGNsYXNzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vY29uc2lzdGVudC1jbGFzcy1tZW1iZXItb3JkZXInOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogRXZlcnkgcmVwb3J0IGlzIGBuZXcgRXJyb3IoKS5zdGFja2AsIHdoaWNoIGNhcHR1cmVzIGEgc3RhY2sgdHJhY2UgYW5kIG5ldmVyIHN1cmZhY2VzIGl0cyBtZXNzYWdlLlxuICAgICAgICAgKiBUaGUgcnVsZSBjYW5ub3QgdGVsbCB0aGF0IGZyb20gYW4gZXJyb3IgdGhhdCBpcyBhY3R1YWxseSB0aHJvd24gYXQgYSB1c2VyLlxuICAgICAgICAgKlxuICAgICAgICAgKiBObyBiYXJlIGBuZXcgQWdncmVnYXRlRXJyb3IoZXJyb3JzKWAgaXMgbGVmdCBmb3IgaXQgdG8gY2F0Y2g6IGV2ZXJ5IHNpdGUgbm93IGJ1aWxkcyBpdHMgYWdncmVnYXRlXG4gICAgICAgICAqIHRocm91Z2ggYGNyZWF0ZUFnZ3JlZ2F0ZUVycm9yYCwgd2hpY2ggZ2l2ZXMgaXQgYSBtZXNzYWdlIHRoYXQgbmFtZXMgdGhlIGZhaWx1cmUuIEFuIGVtcHR5IG9uZSBpc1xuICAgICAgICAgKiBsb3NzeSBpbiBhIHdheSB0aGF0IG9ubHkgc2hvd3MgdXAgb3V0c2lkZSB0aGlzIGxpYnJhcnkg4oCUIGBlcnJvclRvU3RyaW5nYCB3YWxrcyBgZXJyb3JzYCBhbmQgcHJpbnRzXG4gICAgICAgICAqIHRoZSB3aG9sZSB0cmVlLCB3aGlsZSBldmVyeXRoaW5nIHJlYWRpbmcgYG1lc3NhZ2VgIHNlZXMgYW4gZW1wdHkgc2VudGVuY2UuIFRoZSBoZWxwZXIgbGl2ZXMgaW4gaXRzXG4gICAgICAgICAqIG93biBsZWFmIGBhZ2dyZWdhdGUtZXJyb3IudHNgIHJhdGhlciB0aGFuIGluIGBlcnJvci50c2AgcHJlY2lzZWx5IHNvIHRoYXQgYGRpc3Bvc2FibGUudHNgIGNhbiByZWFjaFxuICAgICAgICAgKiBpdCwgd2hpY2ggaXQgY291bGQgbm90IHdoaWxlIHRoZSBvbmx5IGNvcHkgc2F0IGluIGEgbW9kdWxlIGltcG9ydGluZyBpdCBiYWNrLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vZXJyb3ItbWVzc2FnZSc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgZGVmYXVsdCBzdHlsZSBmb3IgYG5vZGU6cGF0aGAgaXMgYSBkZWZhdWx0IGltcG9ydCwgYnV0IHRoaXMgY29kZWJhc2UgaW1wb3J0cyBpdHMgbWVtYmVycyBieSBuYW1lXG4gICAgICAgICAqIHRocm91Z2hvdXQsIGNvbnNpc3RlbnRseSB3aXRoIGV2ZXJ5IG90aGVyIGBub2RlOmAgbW9kdWxlIGl0IHVzZXMuIENvbmZpZ3VyZSB0aGUgcnVsZSB0byBlbmZvcmNlIHRoZVxuICAgICAgICAgKiBzdHlsZSBhY3R1YWxseSBpbiB1c2UgcmF0aGVyIHRoYW4gYW5ub3RhdGUgMTcgc2l0ZXMgdGhhdCBhcmUgbm90IGdvaW5nIHRvIGNoYW5nZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2ltcG9ydC1zdHlsZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0eWxlczoge1xuICAgICAgICAgICAgICAvLyBLZXllZCBieSB0aGUgVU5QUkVGSVhFRCBtb2R1bGUgbmFtZTogdGhlIHJ1bGUncyBvd24gdGFibGUgdXNlcyBgcGF0aGAsIHNvIGEgYG5vZGU6cGF0aGAga2V5IG5ldmVyIG1hdGNoZXMuXG4gICAgICAgICAgICAgIHBhdGg6IHtcbiAgICAgICAgICAgICAgICBuYW1lZDogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgcnVsZSBjb3VudHMgY29uc3RydWN0b3IgY2FsbHMgYW5kIGNvdW50cyB0aHJvdWdoIGFycmF5IGFuZCBvYmplY3QgbGl0ZXJhbHMsIHNvIGl0cyBkZWZhdWx0IG9mIDNcbiAgICAgICAgICogcmVwb3J0cyBvcmRpbmFyeSBjb21wb3NpdGlvbjogYFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignYm9vbScpKWAgaW5zaWRlIGFuIGFzc2VydGlvbiwgYSB0ZXN0IGZpeHR1cmVcbiAgICAgICAgICogYnVpbHQgYXMgYGNyZWF0ZVR5cGVJbmZvKHsgbWV0aG9kczogW2NyZWF0ZU1lbWJlckluZm8oeyAuLi4gfSldIH0pYCwgYHRoaXMuYWRkQ2hpbGQobmV3IEModGhpcy5hcHApKWBcbiAgICAgICAgICogaW5zaWRlIGEgcGFyYW1zIGJhZy4gUmFpc2luZyB0aGUgbGltaXQgYnkgb25lIGNsZWFycyBldmVyeSByZXBvcnQgaGVyZSB3aGlsZSBzdGlsbCBjYXRjaGluZyB0aGVcbiAgICAgICAgICogZ2VudWluZWx5IHVucmVhZGFibGUgbmVzdGluZyB0aGUgcnVsZSBpcyBmb3IuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9tYXgtbmVzdGVkLWNhbGxzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWF4OiA0XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAndW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgKiBQcm9wZXJ0eSBhbmQgbWVtYmVyIG5hbWVzIGFyZSBjaGVja2VkIHRvbywgc28gYW4gYWJicmV2aWF0aW9uIGNhbm5vdCBzdXJ2aXZlIGJ5IGxpdmluZyBvbiBhblxuICAgICAgICAgICAgICogb2JqZWN0IHJhdGhlciB0aGFuIGluIGEgdmFyaWFibGUuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogVGhlIHJ1bGUgaXMgcHVyZWx5IHN5bnRhY3RpYzogaXQgY2Fubm90IHRlbGwgYSBtZW1iZXIgd2UgZGVjbGFyZSBmcm9tIG9uZSBiZWxvbmdpbmcgdG8gYVxuICAgICAgICAgICAgICogZGVwZW5kZW5jeSwgYW5kIGl0IG9mZmVycyBubyBhdXRvZml4IGZvciBwcm9wZXJ0aWVzIChtZWFzdXJlZDogNjgxIGhpdHMsIDAgd2l0aCBhIGZpeGVyKS4gU2l0ZXNcbiAgICAgICAgICAgICAqIG5hbWluZyBhIGZvcmVpZ24gbWVtYmVyIC0tIGBEb21FbGVtZW50SW5mby5hdHRyYCwgYEV2YWxJbk9ic2lkaWFuUGFyYW1zLmZuYCwgYW5kIHRoZSBsaWtlIC0tIGFyZVxuICAgICAgICAgICAgICogdGhlcmVmb3JlIGltcG9zc2libGUgdG8gc2F0aXNmeSBhbmQgY2FycnkgYW4gaW5saW5lIGRpc2FibGUsIHNvIGV2ZXJ5dGhpbmcgc3RpbGwgcmVwb3J0ZWQgaXMgb3Vyc1xuICAgICAgICAgICAgICogdG8gcmVuYW1lLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFdoZW4gcmVuYW1pbmcgdGhlIHJlc3QsIG5vdGUgdGhhdCBgdHNjYCBhbG9uZSBpcyBOT1QgYSBzdWZmaWNpZW50IGdhdGU6IG9iamVjdC1saXRlcmFsIGtleXMgaW5cbiAgICAgICAgICAgICAqIGxvb3NlbHkgdHlwZWQgcG9zaXRpb25zIChgZXhwZWN0LmFycmF5Q29udGFpbmluZyhbeyBiYXRjaGVkQXJndW1lbnRzOiAuLi4gfV0pYCkgYXJlIG5vdCBjb250ZXh0dWFsbHlcbiAgICAgICAgICAgICAqIHR5cGVkLCBzbyBhIHJlbmFtZSBsZWF2ZXMgdGhlbSBiZWhpbmQgYW5kIGJyZWFrcyB0aGUgc3VpdGUgd2hlcmUgdGhlIHR5cGUgY2hlY2tlciBzZWVzIG5vdGhpbmcuXG4gICAgICAgICAgICAgKiBSZW5hbWUgaW4gc21hbGwgYmF0Y2hlcyB3aXRoIHRoZSBmdWxsIHRlc3QgcnVuIGluIHRoZSBsb29wLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFRoZSBkaXNhYmxlZCByZXBsYWNlbWVudHMgYmVsb3cgYXJlIGVzdGFibGlzaGVkIHZvY2FidWxhcnkgcmF0aGVyIHRoYW4gYWJicmV2aWF0aW9ucyB0byBiZVxuICAgICAgICAgICAgICogZXhwYW5kZWQuIGBlbGAgaXMgZXhlbXB0IGJlY2F1c2UgT2JzaWRpYW4gbmFtZXMgZXZlcnkgZWxlbWVudCBtZW1iZXIgdGhhdCB3YXkgLS0gYGNvbnRhaW5lckVsYCxcbiAgICAgICAgICAgICAqIGBjb250ZW50RWxgLCBgaW5wdXRFbGAsIGBzZWxlY3RFbGAgLS0gc28gZXhwYW5kaW5nIG91cnMgdG8gYCpFbGVtZW50YCB3b3VsZCBsZWF2ZSBvdXIgY29tcG9uZW50c1xuICAgICAgICAgICAgICogcmVhZGluZyBpbmNvbnNpc3RlbnRseSBiZXNpZGUgdGhlIE9ic2lkaWFuIG9uZXMgdGhleSBzaXQgbmV4dCB0by4gRGlzYWJsaW5nIHRoZSByZXBsYWNlbWVudCBhbHNvXG4gICAgICAgICAgICAgKiBjb3ZlcnMgY29tcG91bmQgbmFtZXMsIHdoaWNoIGlzIDcyIHNpdGVzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGVhY2ggbmVlZCBhbiBpbmxpbmUgZGlzYWJsZS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBgcmVmYCBpcyBleGVtcHQgZm9yIHRoZSBzYW1lIHJlYXNvbjogYEFzeW5jRXZlbnRSZWZgIGlzIHRoZSBhc3luYyBjb3VudGVycGFydCBvZiBPYnNpZGlhbidzXG4gICAgICAgICAgICAgKiBgRXZlbnRSZWZgLCBoYW5kZWQgdG8gdGhlIHNhbWUgYG9mZnJlZmAgLyBgcmVnaXN0ZXJFdmVudGAgc2hhcGVzLCBzbyB0aGUgdHdvIG5hbWVzIGhhdmUgdG8gbWF0Y2hcbiAgICAgICAgICAgICAqIHRvIHJlYWQgYXMgYSBwYWlyLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjaGVja1Byb3BlcnRpZXM6IHRydWUsXG4gICAgICAgICAgICByZXBsYWNlbWVudHM6IHtcbiAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICogYGF0dHJgIC8gYGF0dHJzYCBhcmUgT2JzaWRpYW4ncyBvd246IGBjcmVhdGVFbCgnYScsIHsgYXR0cjogeyAuLi4gfSB9KWAgdGFrZXMgdGhlbSBieSB0aG9zZVxuICAgICAgICAgICAgICAgKiBuYW1lcyBvbiBgRG9tRWxlbWVudEluZm9gLCBzbyBvdXJzIGhhdmUgdG8gbWF0Y2ggdG8gYmUgcGFzc2VkIHRocm91Z2guIGBwcm9wc2AgaXMgdGhlXG4gICAgICAgICAgICAgICAqIHVuaXZlcnNhbCBjb21wb25lbnQgdm9jYWJ1bGFyeSwgZXhlbXB0IGZvciB0aGUgc2FtZSByZWFzb24gYHBhcmFtc2AgaXMuXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBhdHRyOiBmYWxzZSxcbiAgICAgICAgICAgICAgYXR0cnM6IGZhbHNlLFxuICAgICAgICAgICAgICBkZXY6IGZhbHNlLFxuICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgKiBFdmVyeSBgZGlyYCBoZXJlIGlzIGEgZmlsZXN5c3RlbSBkaXJlY3RvcnksIG5ldmVyIGEgZGlyZWN0aW9uLCBzbyB0aGUgcnVsZSBpcyBuYXJyb3dlZCB0byB0aGVcbiAgICAgICAgICAgICAgICogb25lIGV4cGFuc2lvbiByYXRoZXIgdGhhbiBsZWZ0IG9mZmVyaW5nIGEgY2hvaWNlIGl0IGNhbm5vdCBtYWtlLlxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gVGhpcyBpcyB0aGUgcnVsZSdzIG93biByZXBsYWNlbWVudCBrZXksIHdoaWNoIGhhcyB0byBiZSBzcGVsbGVkIHRoZSB3YXkgdGhlIHJ1bGUgcmVhZHMgaXQuXG4gICAgICAgICAgICAgIGRpcjoge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGlyZWN0b3J5OiB0cnVlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRpc3Q6IGZhbHNlLFxuICAgICAgICAgICAgICBkb2M6IGZhbHNlLFxuICAgICAgICAgICAgICBkb2NzOiBmYWxzZSxcbiAgICAgICAgICAgICAgZWw6IGZhbHNlLFxuICAgICAgICAgICAgICBlbnY6IGZhbHNlLFxuICAgICAgICAgICAgICBsaWI6IGZhbHNlLFxuICAgICAgICAgICAgICBwYXJhbXM6IGZhbHNlLFxuICAgICAgICAgICAgICBwcm9wczogZmFsc2UsXG4gICAgICAgICAgICAgIHJlZjogZmFsc2UsXG4gICAgICAgICAgICAgIHJlZnM6IGZhbHNlLFxuICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgKiBgcmVwb2AgaXMgdGhlIHdvcmQgZ2l0IGFuZCBHaXRIdWIgdXNlIHRoZW1zZWx2ZXMgKGBnaCByZXBvYCwgYFJlcG9QYXRoc2AsIGBEb2NzU2l0ZUNvbmZpZy5yZXBvYCksXG4gICAgICAgICAgICAgICAqIHNvIGl0IGlzIHZvY2FidWxhcnkgcmF0aGVyIHRoYW4gYW4gYWJicmV2aWF0aW9uLiB1bmljb3JuIDc5IGFkZGVkIHRoZSByZXBsYWNlbWVudDsgZm9sbG93aW5nIGl0XG4gICAgICAgICAgICAgICAqIHdvdWxkIHJlbmFtZSBleHBvcnRlZCBBUEkgaW4gdGhpcyBwYWNrYWdlIGFuZCByZXBvcnQgZXZlcnkgY29uc3VtZXIncyBgcmVwbypgIG5hbWVzLlxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgcmVwbzogZmFsc2UsXG4gICAgICAgICAgICAgIHNyYzogZmFsc2UsXG4gICAgICAgICAgICAgIHV0aWw6IGZhbHNlLFxuICAgICAgICAgICAgICB1dGlsczogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBuZXh0IHNpeCBydWxlcyBhbGwgc3VnZ2VzdCBhbiBBUEkgbmV3ZXIgdGhhbiB0aGlzIHByb2plY3QncyBgbGliYCAoYEVTMjAyMmApLCBzbyBmb2xsb3dpbmcgYW55IG9mXG4gICAgICAgICAqIHRoZW0gZmFpbHMgdG8gY29tcGlsZS4gVGhlIE9ic2lkaWFuIHBsdWdpbiBsYXllciB0YWtlcyB0aGUgZmxvb3IgZnJvbSB0aGUgb2xkZXN0IE9ic2lkaWFuIGluc3RhbGxlciB0aGF0XG4gICAgICAgICAqIGNhbiBzdGlsbCBydW4gY3VycmVudCBPYnNpZGlhbiwgd2hpY2ggcmVjb3JkcyBgZWNtYVNjcmlwdFZlcnNpb246IFwiRVMyMDIyXCJgLiBFYWNoIGlzIG9mZiBhdCB0aGUgY29uZmlnXG4gICAgICAgICAqIGxldmVsIHJhdGhlciB0aGFuIGFubm90YXRlZCBwZXIgc2l0ZSwgYmVjYXVzZSBub25lIGNhbiBldmVyIGJlIHNhdGlzZmllZCB3aGlsZSB0aGF0IGZsb29yIGhvbGRzLiBSZXZpc2l0XG4gICAgICAgICAqIHRoZW0gdG9nZXRoZXIgaWYgdGhlIGZsb29yIG1vdmVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBgQXJyYXkjdG9SZXZlcnNlZGAgYW5kIGBBcnJheSN0b1NvcnRlZGAgYXJlIEVTMjAyMy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLWFycmF5LXJldmVyc2UnOiAnb2ZmJyxcbiAgICAgICAgJ3VuaWNvcm4vbm8tYXJyYXktc29ydCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgaG91c2Ugc3R5bGUgd3JpdGVzIGV2ZXJ5IGJsb2NrIGNvbW1lbnQgd2l0aCBhIGAgKiBgIHByZWZpeCBvbiBlYWNoIGxpbmUsIHRoZSBgQGZpbGVgIGhlYWRlciBvZlxuICAgICAgICAgKiBldmVyeSBtb2R1bGUgaW5jbHVkZWQuIHVuaWNvcm4gNzkgcHV0IHRoaXMgcnVsZSBpbiBgcmVjb21tZW5kZWRgLCB3aGVyZSBpdCByZXBvcnRlZCAxLDU1MyBsaW5lcyBoZXJlXG4gICAgICAgICAqIGFsb25lOyBhZG9wdGluZyBpdCB3b3VsZCByZXdyaXRlIGV2ZXJ5IGNvbW1lbnQgaW4gZXZlcnkgY29uc3VtZXIgdG8gc2V0dGxlIGEgbWF0dGVyIG9mIHRhc3RlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tYXN0ZXJpc2stcHJlZml4LWluLWRvY3VtZW50YXRpb24tY29tbWVudHMnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogYGNvbnRpbnVlYCBpbnNpZGUgYSBuZXN0ZWQgbG9vcCBpcyBvcmRpbmFyeSwgcmVhZGFibGUgY29udHJvbCBmbG93IGhlcmUuIFRoZSBydWxlJ3MgcmVtZWR5IGlzIHRvXG4gICAgICAgICAqIGV4dHJhY3QgZXZlcnkgc3VjaCBsb29wIGludG8gaXRzIG93biBmdW5jdGlvbiwgd2hpY2ggc3ByZWFkcyBvbmUgY29oZXJlbnQgdHJhdmVyc2FsIGFjcm9zcyB0d29cbiAgICAgICAgICogZGVjbGFyYXRpb25zIHdpdGhvdXQgbWFraW5nIGFueXRoaW5nIGNsZWFyZXIuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1icmVhay1pbi1uZXN0ZWQtbG9vcCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgcnVsZSBjYW5ub3Qgc2VlIHRocm91Z2ggYSBob2lzdGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBzbyBpdCB0cmVhdHMgYSBiaW5kaW5nIHRoYXQgYSBuZXN0ZWRcbiAgICAgICAgICogZnVuY3Rpb24gYWxyZWFkeSByZWFkIGFzIHVudXNlZCBiZWZvcmUgdGhlIGV4aXQuIEluIGBydW5XaXRoVGltZW91dGAgdGhhdCBpcyBgbGV0IGlzQ29tcGxldGVkYCwgd2hpY2hcbiAgICAgICAgICogYHJ1bigpYCBhbmQgYGlubmVyVGltZW91dCgpYCBib3RoIHRvdWNoIHdoaWxlIHRoZSBgUHJvbWlzZS5yYWNlYCBhYm92ZSB0aGUgZXhpdCBpcyBzdGlsbCBydW5uaW5nIC0tXG4gICAgICAgICAqIG1vdmluZyB0aGUgZGVjbGFyYXRpb24gcGFzdCB0aGUgZXhpdCwgYXMgdGhlIHJ1bGUgYXNrcywgd291bGQgbGVhdmUgdGhvc2UgcmVhZHMgaW4gdGhlIHRlbXBvcmFsIGRlYWRcbiAgICAgICAgICogem9uZS4gSXRzIG93biBmaXhlciBkZWNsaW5lcyBhbGwgMTUgc2l0ZXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCBjYW5ub3QgcHJvdmUgdGhlbSBzYWZlLCBzbyBmb2xsb3dpbmdcbiAgICAgICAgICogdGhlIHJ1bGUgaXMgZW50aXJlbHkgbWFudWFsLiBXaGF0IGlzIGxlZnQgYWZ0ZXIgdGhhdCBpcyBwbGFjZW1lbnQgc3R5bGU6IHRoZSByZW1haW5pbmcgcmVwb3J0cyBhcmVcbiAgICAgICAgICogbmFtZWQgY29uc3RhbnRzIGFuZCBkZXJpdmVkIHBhdGhzIGRlbGliZXJhdGVseSBncm91cGVkIGF0IHRoZSB0b3Agb2YgYSBmdW5jdGlvbiwgYW5kIHB1c2hpbmcgZWFjaCBvbmVcbiAgICAgICAgICogYmVsb3cgdGhlIGZpcnN0IGd1YXJkIHNwbGl0cyBhIGNvaGVzaXZlIGJsb2NrIHRvIG5vIGJlbmVmaXQuIFRoZSB0aHJlZSBzaXRlcyB3aGVyZSBkZWZlcnJpbmcgc2tpcHBlZFxuICAgICAgICAgKiByZWFsIHdvcmsgKGEgc2Vjb25kIGBjb21wdXRlTmVlZGVkRXhwb3N1cmVgIHdhbGssIGEgYHRvSnNvbmAgc2VyaWFsaXphdGlvbiwgYW4gYGVuc3VyZUxmRW5kaW5nc2AgcGFzcylcbiAgICAgICAgICogd2VyZSBhcHBsaWVkIGJ5IGhhbmQgaW5zdGVhZC5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLWRlY2xhcmF0aW9ucy1iZWZvcmUtZWFybHktZXhpdCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBBc3NpZ25pbmcgb250byB0aGUgZ2xvYmFsIG9iamVjdCBpcyBob3cgdGhpcyBsaWJyYXJ5IGluc3RhbGxzIGFuZCByZXN0b3JlcyB0ZXN0IGRvdWJsZXMsIGFuZCBob3cgYVxuICAgICAgICAgKiBmZXcgT2JzaWRpYW4tcnVudGltZSBnbG9iYWxzIGFyZSByZWFjaGVkIGF0IGFsbC4gVGhlIHJ1bGUgY2Fubm90IHNlcGFyYXRlIHRoYXQgZnJvbSBhbiBhY2NpZGVudGFsXG4gICAgICAgICAqIGdsb2JhbCB3cml0ZSwgYW5kIGl0IGhhcyBubyBmaXhlci5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLWdsb2JhbC1vYmplY3QtcHJvcGVydHktYXNzaWdubWVudCc6ICdvZmYnLFxuICAgICAgICAvLyBgbnVsbGAgaXMgbG9hZC1iZWFyaW5nIGhlcmU6IGFuIG9wdGlvbmFsIGNvbGxhYm9yYXRvciBpcyBtb2RlbGxlZCBhcyBhIHJlcXVpcmVkIGBudWxsIHwgWGAgZmllbGQgcmF0aGVyIHRoYW4gYW4gb3B0aW9uYWwgYFhgLCBzbyBgbnVsbGAgYW5kIGB1bmRlZmluZWRgIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLlxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgcnVsZSdzIGxpc3Qgb2Ygc3RhbmRhcmQgYFN5bWJvbGAgcHJvcGVydGllcyBwcmVkYXRlcyBleHBsaWNpdCByZXNvdXJjZSBtYW5hZ2VtZW50LCBzbyBpdCByZXBvcnRzXG4gICAgICAgICAqIGBTeW1ib2wuZGlzcG9zZWAgYW5kIGBTeW1ib2wuYXN5bmNEaXNwb3NlYCBhcyBub24tc3RhbmRhcmQuIEJvdGggYXJlIHBhcnQgb2YgdGhlIGxhbmd1YWdlIHRoYXQgdGhpc1xuICAgICAgICAgKiBsaWJyYXJ5IGlzIGJ1aWx0IG9uIC0tIDExNCBmaWxlcyBoZXJlIHVzZSBgdXNpbmdgIGRlY2xhcmF0aW9ucywgYW5kIHRoZSBkaXNwb3NhYmxlIHR5cGVzIGFyZSBhXG4gICAgICAgICAqIHB1YmxpYyBwYXJ0IG9mIGl0cyBzdXJmYWNlIC0tIHNvIGFsbCA1OSByZXBvcnRzIGFyZSB0aGUgcnVsZSBiZWluZyBvdXQgb2YgZGF0ZSByYXRoZXIgdGhhbiBhIGZpbmRpbmcuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1ub25zdGFuZGFyZC1idWlsdGluLXByb3BlcnRpZXMnOiAnb2ZmJyxcbiAgICAgICAgJ3VuaWNvcm4vbm8tbnVsbCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUeXBlU2NyaXB0J3MgZXhwbGljaXQgYHRoaXNgIHBhcmFtZXRlciAoYGZ1bmN0aW9uIGdldCh0aGlzOiBIb2xkZXIpIHsgcmV0dXJuIHRoaXMudmFsdWU7IH1gKSBtYWtlc1xuICAgICAgICAgKiBgdGhpc2Agb3V0c2lkZSBhIGNsYXNzIGJvdGggbGVnYWwgYW5kIHR5cGUtY2hlY2tlZCwgYnV0IHRoZSBydWxlIGlzIHN5bnRhY3RpYyBhbmQgZmxhZ3MgaXQgaWRlbnRpY2FsbHlcbiAgICAgICAgICogdG8gYSBnZW51aW5lbHkgdW5ib3VuZCBgdGhpc2AuIEl0IGhhcyBubyBvcHRpb25zIChgc2NoZW1hOiBbXWApIGFuZCBubyBmaXhlciwgc28gdGhlcmUgaXMgbm8gd2F5IHRvXG4gICAgICAgICAqIHNlcGFyYXRlIHRoZSBpZGlvbSBmcm9tIHRoZSBidWcgaXQgdGFyZ2V0cy4gTW9zdCBoaXRzIGhlcmUgd2VyZSB0eXBlZCBgdGhpc2AgcGFyYW1ldGVycyBhbmQgdGVzdHMgdGhhdFxuICAgICAgICAgKiBkZWxpYmVyYXRlbHkgYXNzZXJ0IGB0aGlzYCBiaW5kaW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tdGhpcy1vdXRzaWRlLW9mLWNsYXNzJzogJ29mZicsXG4gICAgICAgIC8vIFNhbWUgY2FsbCBhcyBpdHMgb2JqZWN0IGNvdW50ZXJwYXJ0IGFib3ZlOiB0aGUgZGVzdHJ1Y3R1cmluZyBkZXB0aCBmbGFnZ2VkIGhlcmUgaXMgZGVsaWJlcmF0ZSBhbmQgcmVhZHMgd2VsbC5cbiAgICAgICAgJ3VuaWNvcm4vbm8tdW5yZWFkYWJsZS1hcnJheS1kZXN0cnVjdHVyaW5nJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSByZXBvcnRzIGFyZSBhbGwgYGZvciAoY29uc3QgZmlsZSBvZiBhd2FpdCByZWFkZGlyUG9zaXgoLi4uKSlgLCB3aGljaCByZWFkcyBleGFjdGx5IGFzIGludGVuZGVkLlxuICAgICAgICAgKiBIb2lzdGluZyB0aGUgYXdhaXRlZCBjYWxsIGludG8gYSB2YXJpYWJsZSBuYW1lZCBhZnRlciB0aGUgbG9vcCdzIG93biBpdGVyYWJsZSBhZGRzIGEgbGluZSBhbmQgYSBuYW1lXG4gICAgICAgICAqIHdpdGhvdXQgYWRkaW5nIGluZm9ybWF0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tdW5yZWFkYWJsZS1mb3Itb2YtZXhwcmVzc2lvbic6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgbmVzdGVkIGRlc3RydWN0dXJpbmcgdGhpcyBmbGFncyBpcyBkZWxpYmVyYXRlIGhlcmUgYW5kIHJlYWRzIHdlbGw6IHB1bGxpbmcgYSBtZW1iZXIgb3V0IG9mIGFcbiAgICAgICAgICogcGFyYW1zIGJhZyBpbiBvbmUgc3RlcCBzdGF0ZXMgd2hlcmUgdGhlIHZhbHVlIGNvbWVzIGZyb20sIHdoaWNoIGEgc2Vjb25kIGludGVybWVkaWF0ZSBiaW5kaW5nIG9ubHlcbiAgICAgICAgICogb2JzY3VyZXMuIFRoZSBydWxlIHRha2VzIG5vIG9wdGlvbnMsIHNvIHRoZXJlIGlzIG5vIHdheSB0byBrZWVwIHRoZSBkZXB0aCBsaW1pdCBpdCBpcyByZWFsbHkgYWZ0ZXJcbiAgICAgICAgICogd2hpbGUgYWxsb3dpbmcgdGhlIHNoYXBlIGluIHVzZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLXVucmVhZGFibGUtb2JqZWN0LWRlc3RydWN0dXJpbmcnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogYGNoZWNrQXJndW1lbnRzYCBzdHJpcHMgYHVuZGVmaW5lZGAgYXJndW1lbnRzLCB3aGljaCBzaGlmdHMgdGhlIHJlbWFpbmluZyBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvXG4gICAgICAgICAqIHRoZSB3cm9uZyBzbG90czsgYGNoZWNrQXJyb3dGdW5jdGlvbkJvZHlgIHJlbW92ZXMgYHJldHVybiB1bmRlZmluZWQ7YCBmcm9tIGFycm93IGJvZGllcyB3aG9zZSBvdGhlclxuICAgICAgICAgKiBicmFuY2hlcyBkbyByZXR1cm4gYSB2YWx1ZSwgd2hpY2ggdmlvbGF0ZXMgdGhlIGBub0ltcGxpY2l0UmV0dXJuc2Agc2V0dGluZyB0aGlzIHByb2plY3QgY29tcGlsZXMgd2l0aC5cbiAgICAgICAgICogVGhlIHJ1bGUncyByZW1haW5pbmcgY2FzZXMgKGEgYmFyZSBgdW5kZWZpbmVkYCBpbml0aWFsaXplciwgYHJldHVybiB1bmRlZmluZWQ7YCBpbiBhIHZvaWQgZnVuY3Rpb24pXG4gICAgICAgICAqIGFyZSBzdGlsbCB3b3J0aCBoYXZpbmcuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby11c2VsZXNzLXVuZGVmaW5lZCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNoZWNrQXJndW1lbnRzOiBmYWxzZSxcbiAgICAgICAgICAgIGNoZWNrQXJyb3dGdW5jdGlvbkJvZHk6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAvLyBgQXJyYXkuZnJvbUFzeW5jYCBpcyBFUzIwMjQuIFNlZSB0aGUgRVMyMDIyIGZsb29yIG5vdGUgYWJvdmUuXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1hcnJheS1mcm9tLWFzeW5jJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEV2ZXJ5IGhpdCBoZXJlIGlzIGEgcHJvbWlzZSBkZWxpYmVyYXRlbHkgTk9UIGF3YWl0ZWQsIGFuZCBgYXdhaXRgIHdvdWxkIGNoYW5nZSB3aGF0IHRoZSBjb2RlIGRvZXMuXG4gICAgICAgICAqIGByZXN1bHQuY2F0Y2godGhyb3dEZWxheWVkKWAgaW4gYGFzeW5jLWV2ZW50cy50c2AgaXMgdGhlIGZpcmUtYW5kLWZvcmdldCBlcnJvciBwYXRoIHRoZSBtb2R1bGUgaXNcbiAgICAgICAgICogYnVpbHQgb247IHRoZSByZXN0IGhvbGQgYW4gdW5yZXNvbHZlZCBwcm9taXNlIGFuZCBhc3NlcnQgdGhlIGNhbGxiYWNrIGhhcyBub3QgZmlyZWQgeWV0LCBzbyBhd2FpdGluZ1xuICAgICAgICAgKiB3b3VsZCBoYW5nIHRoZSB0ZXN0IG9yIGludmVydCB3aGF0IGl0IHByb3Zlcy4gVGhlIHJ1bGUgY2Fubm90IHRlbGwgYSBmb3Jnb3R0ZW4gYGF3YWl0YCBmcm9tIGFuXG4gICAgICAgICAqIGludGVudGlvbmFsIG9uZSwgYW5kIHRoaXMgY29kZWJhc2Ugc2NoZWR1bGVzIGZpcmUtYW5kLWZvcmdldCB3b3JrIGFzIGEgY29yZSBwYXR0ZXJuLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWF3YWl0JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEFsbCB0aHJlZSByZXBvcnRzIHJlYWQgSFRNTCBvdXQgKGBjb25zdCBodG1sID0gZWwuaW5uZXJIVE1MYCksIG5ldmVyIHdyaXRlIGl0LCBhbmQgZm9yIGEgcmVhZFxuICAgICAgICAgKiBgZ2V0SFRNTCgpYCByZXR1cm5zIHRoZSBzYW1lIHN0cmluZy4gV2hhdCBpdCBhZGRzIGlzIHNoYWRvdy1yb290IHNlcmlhbGl6YXRpb24gb3B0aW9ucyB0aGF0IG5vdGhpbmdcbiAgICAgICAgICogaGVyZSBhc2tzIGZvciwgaW4gZXhjaGFuZ2UgZm9yIGEgbXVjaCBuZXdlciBwbGF0Zm9ybSBmbG9vciB0aGFuIGBpbm5lckhUTUxgIC0tIGEgYmFkIHRyYWRlIGZvciBhXG4gICAgICAgICAqIGxpYnJhcnkgdGhhdCBoYXMgdG8gcnVuIG9uIHdoYXRldmVyIENocm9taXVtIHRoZSBpbnN0YWxsZWQgT2JzaWRpYW4gc2hpcHMuIFRoZSBydWxlJ3Mgb3RoZXIgaGFsZixcbiAgICAgICAgICogcmV3cml0aW5nIHdyaXRlcyB0byB0aGUgc2FuaXRpemluZyBgc2V0SFRNTCgpYCwgd291bGQgYmUgd29ydGggaGF2aW5nOyBpdCBqdXN0IG5ldmVyIGZpcmVzIGhlcmUuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItZG9tLW5vZGUtaHRtbC1tZXRob2RzJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEl0ZXJhdG9yIGhlbHBlcnMgKGBJdGVyYXRvciNzb21lYCBhbmQgZnJpZW5kcykgYXJlIEVTMjAyNSwgc28gdGhpcyBiZWxvbmdzIHdpdGggYG5vLWFycmF5LXJldmVyc2VgIGFuZFxuICAgICAgICAgKiBgbm8tYXJyYXktc29ydGAgYWJvdmU6IHRoZSBzYW1lIEVTMjAyMiBmbG9vciBydWxlcyBpdCBvdXQsIGFuZCB0aGUgc2FtZSBub3RlIGFwcGxpZXMgLS0gcmV2aXNpdCB0aGVtXG4gICAgICAgICAqIHRvZ2V0aGVyIGlmIHRoYXQgZmxvb3IgbW92ZXMuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItaXRlcmF0b3ItaGVscGVycyc6ICdvZmYnLFxuICAgICAgICAvLyBgSXRlcmF0b3IjdG9BcnJheWAgaXMgRVMyMDI1LiBTZWUgdGhlIEVTMjAyMiBmbG9vciBub3RlIGFib3ZlLlxuICAgICAgICAndW5pY29ybi9wcmVmZXItaXRlcmF0b3ItdG8tYXJyYXknOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogUmVwbGFjZWQgYnkgYHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5YCwgd2hpY2ggcmVwb3J0cyB0aGUgc2FtZSBhbmRcbiAgICAgICAgICogYWxzbyBmaXhlcyBhIGJvb2xlYW4gbGl0ZXJhbCBicmFuY2ggaW4gVHlwZVNjcmlwdC4gVW5pY29ybiB3aXRoaG9sZHMgdGhhdCBmaXggdGhlcmUsIHdoaWxlXG4gICAgICAgICAqIGB1bmljb3JuL3ByZWZlci10ZXJuYXJ5YCBrZWVwcyBwcm9kdWNpbmcgdGhlIHNoYXBlLCBzbyBgbGludDpmaXhgIGxlZnQgYW4gZXJyb3IgaXQgaGFkIGp1c3QgY3JlYXRlZC5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1sb2dpY2FsLW9wZXJhdG9yLW92ZXItdGVybmFyeSc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgc3VnZ2VzdGVkIHJlcGxhY2VtZW50IGlzIGBNYXRoLnRydW5jKE51bWJlcih4KSlgLCB3aGljaCBpcyBsb25nZXIgdGhhbiBgcGFyc2VJbnQoeCwgMTApYCBhbmQgbm9cbiAgICAgICAgICogY2xlYXJlciwgYW5kIGl0IGlzIG5vdCB0aGUgc2FtZSBmdW5jdGlvbjogYHBhcnNlSW50YCBzdG9wcyBhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIHRoYXQgY2Fubm90IGJlIHBhcnRcbiAgICAgICAgICogb2YgdGhlIG51bWJlciwgc28gYCcxMmFiYydgIHBhcnNlcyB0byAxMiB3aGVyZSBgTnVtYmVyYCB5aWVsZHMgYE5hTmAuIFR3byBvZiB0aGUgcmVwb3J0cyByZWFkIHVzZXJcbiAgICAgICAgICogaW5wdXQgdGhyb3VnaCB0aGF0IGRpZmZlcmVuY2UgLS0gdGhlIHBhZ2UtanVtcCBib3ggaW4gdGhlIGBEYXRhdmlld2AgaGVscGVyLCBhbmRcbiAgICAgICAgICogYE51bWJlckNvbXBvbmVudC52YWx1ZUZyb21TdHJpbmdgLCB3aG9zZSBsZW5pZW50IHBhcnNlIGlzIHBhcnQgb2YgYSBwdWJsaXNoZWQgY29tcG9uZW50J3MgYmVoYXZpb3IuXG4gICAgICAgICAqIFRoZSByZXN0IHBhcnNlIG1hY2hpbmUtZ2VuZXJhdGVkIHN0cmluZ3MsIHdoZXJlIHRoZSB0d28gYWdyZWUgYnV0IHRoZSBzaG9ydGVyIHNwZWxsaW5nIHN0aWxsIHdpbnMuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItbnVtYmVyLWNvZXJjaW9uJzogJ29mZicsXG4gICAgICAgIC8vIGBQcm9taXNlLndpdGhSZXNvbHZlcnNgIGlzIEVTMjAyNC4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXByb21pc2Utd2l0aC1yZXNvbHZlcnMnOiAnb2ZmJyxcbiAgICAgICAgLy8gYFNldCN1bmlvbmAgYW5kIGZyaWVuZHMgYXJlIEVTMjAyNS4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXNldC1tZXRob2RzJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIHJhbmtzIG9wZXJhbmRzIGJ5IHN5bnRhY3RpYyBzaGFwZSwgbm90IGNvc3QsIHNvIGV2ZXJ5IHJlcG9ydCBoZXJlIHN3YXBzIG9uZSBwcm9wZXJ0eSByZWFkXG4gICAgICAgICAqIGFoZWFkIG9mIGFub3RoZXIgYW5kIGJ1eXMgbm90aGluZy4gSXRzIG93biBtZXNzYWdlIGNvbmNlZGVzIGl0IGNhbm5vdCBjaGVjayB0aGUgcGFydCB0aGF0IG1hdHRlcnMgLS1cbiAgICAgICAgICogXCJhZnRlciB2ZXJpZnlpbmcgc2hvcnQtY2lyY3VpdCBiZWhhdmlvclwiIC0tIGFuZCBvbmUgcmVwb3J0IHNpdHMgZGlyZWN0bHkgdW5kZXIgYSBjb21tZW50IHJlY29yZGluZ1xuICAgICAgICAgKiB0aGF0IHRoZSBvcGVyYW5kcyBjaGFuZ2UgaW5zaWRlIGEgYHJlbmFtZWAgZXZlbnQgaGFuZGxlciwgd2hpY2ggaXMgd2hlcmUgb3JkZXIgc3RvcHMgYmVpbmcgZnJlZS5cbiAgICAgICAgICogVGhlIGN1cnJlbnQgb3JkZXJzIGFsc28gY2FycnkgaW50ZW50OiBhIG51bGwgZ3VhcmQgYmVmb3JlIHRoZSB1c2UgaXQgZ3VhcmRzLCBhbmQgdGhlIGNvbmRpdGlvbiBiZWluZ1xuICAgICAgICAgKiByZXBvcnRlZCBiZWZvcmUgdGhlIHN0YXRlIGl0IGNvbnRyYWRpY3RzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXNpbXBsZS1jb25kaXRpb24tZmlyc3QnOiAnb2ZmJyxcbiAgICAgICAgLy8gVGhlIHJlcGxhY2VtZW50IHByb3ZlcyBzbGljZSByZWNlaXZlcnMgYXJlIGFycmF5cyBiZWZvcmUgcHJvcG9zaW5nIGEgc3ByZWFkLCBwcmVzZXJ2aW5nIHR5cGVkLWFycmF5IGNvcGllcy5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXNwcmVhZCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBgVVJMLmNhblBhcnNlYCByZXF1aXJlcyBOb2RlIDE4LjE3LCB3ZWxsIGFib3ZlIHRoZSBOb2RlIDE2LjE2LjAgZmxvb3IgdGhhdCBzaGlwcGVkIHNvdXJjZSB0YXJnZXRzXG4gICAgICAgICAqIChzZWUgdGhlIE9ic2lkaWFuIHBsdWdpbiBsYXllcidzIGBtaW5pbXVtTm9kZVZlcnNpb25gKS4gVGhlIHJ1bGUgY2FuIHRoZXJlZm9yZSBuZXZlciBiZSBzYXRpc2ZpZWQgdGhlcmUsIHNvIGl0IGlzIG9mZiBhdCB0aGVcbiAgICAgICAgICogY29uZmlnIGxldmVsIHJhdGhlciB0aGFuIGFubm90YXRlZCBhdCBlYWNoIGNhbGwgc2l0ZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci11cmwtY2FuLXBhcnNlJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEV2ZXJ5IGFycmF5IHJlcG9ydGVkIGhlcmUgaG9sZHMgc3RyaW5ncywgd2hlcmUgdGhlIGRlZmF1bHQgc29ydCBpcyBhbHJlYWR5IHdlbGwgZGVmaW5lZCBhbmQgY29ycmVjdC5cbiAgICAgICAgICogQWRkaW5nIHRoZSBjb21wYXJhdG9yIHRoZSBydWxlIGFza3MgZm9yIHdvdWxkIG1lYW4gY2hvb3NpbmcgYmV0d2VlbiBjb2RlLXVuaXQgYW5kIGxvY2FsZSBvcmRlcmluZyxcbiAgICAgICAgICogc28gZm9sbG93aW5nIGl0IHdvdWxkIENIQU5HRSB0aGUgc29ydCByYXRoZXIgdGhhbiBkb2N1bWVudCBpdC4gVGhlIHJ1bGUgZWFybnMgaXRzIHBsYWNlIG9uIG51bWVyaWNcbiAgICAgICAgICogYXJyYXlzOyBpdCBkb2VzIG5vdCBoYXZlIGFueSBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcmVxdWlyZS1hcnJheS1zb3J0LWNvbXBhcmUnOiAnb2ZmJyxcbiAgICAgICAgLy8gVGhlIGNvZGViYXNlIGFscmVhZHkgc3BlbGxzIGVuY29kaW5ncyB0aGUgd2F5IHRoZSBFbmNvZGluZyBTdGFuZGFyZCBkb2VzIChgdXRmLThgKSwgd2hpY2ggaXMgYWxzbyB3aGF0IGBUZXh0RGVjb2RlcmAgcmVwb3J0cy4gS2VlcCB0aGUgcnVsZSBlbmZvcmNpbmcgY29uc2lzdGVuY3ksIGp1c3QgaW4gdGhlIGRpcmVjdGlvbiBhbHJlYWR5IGluIHVzZS5cbiAgICAgICAgJ3VuaWNvcm4vdGV4dC1lbmNvZGluZy1pZGVudGlmaWVyLWNhc2UnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3aXRoRGFzaDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQnVpbGQvbGludC92ZXJzaW9uIHNjcmlwdHMgYXJlIENMSSBlbnRyeSBwb2ludHMsIHdoZXJlIGV4aXRpbmcgd2l0aCBhIHN0YXR1cyBjb2RlIGlzIHRoZSBpbnRlcmZhY2UuXG4gICAgICBmaWxlczogY29udGV4dC5zY3JpcHRGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICd1bmljb3JuL25vLXByb2Nlc3MtZXhpdCc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAvKlxuICAgICAgICogQSBtb2R1bGUtbGV2ZWwgZml4dHVyZSBhc3NpZ25lZCBmcm9tIGBiZWZvcmVFYWNoYCBpcyB0aGUgc3RhbmRhcmQgdGVzdCBzaGFwZTpcbiAgICAgICAqXG4gICAgICAgKiAgIGxldCBhcHA6IEFwcDtcbiAgICAgICAqICAgYmVmb3JlRWFjaCgoKSA9PiB7IGFwcCA9IEFwcC5jcmVhdGVDb25maWd1cmVkX18oKTsgfSk7XG4gICAgICAgKlxuICAgICAgICogVGhlIHJ1bGUgaXMgcmlnaHQgYWJvdXQgcHJvZHVjdGlvbiBjb2RlIC0tIG1vZHVsZSBzdGF0ZSByZWFzc2lnbmVkIGZyb20gaW5zaWRlIGEgZnVuY3Rpb24gaXMgd29ydGhcbiAgICAgICAqIGZsYWdnaW5nLCBhbmQgdGhlIGZpeCBpcyB0byBob2xkIGl0IGluIGEgYGNvbnN0YCBvYmplY3QgaW5zdGVhZC4gSW4gdGVzdHMgdGhhdCB3b3VsZCByZXBsYWNlIGV2ZXJ5XG4gICAgICAgKiBgYXBwYCB3aXRoIGBTVEFURS5hcHBgIGFuZCBtYWtlIGVhY2ggZmlsZSByZWFkIHdvcnNlIGZvciBubyBnYWluLCBzaW5jZSB0aGUgZml4dHVyZSBpcyByZXNldCBwZXIgdGVzdFxuICAgICAgICogYnkgZGVzaWduLiBTY29wZWQgb2ZmIGhlcmUgcmF0aGVyIHRoYW4gZGlzYWJsZWQgb3V0cmlnaHQsIHNvIHByb2R1Y3Rpb24gY29kZSBrZWVwcyB0aGUgY2hlY2suXG4gICAgICAgKi9cbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIFR3byBzaGFwZXMgaGVyZSBjYW5ub3QgZm9sbG93IHRoZSBhZHZpY2UuIEEgaGVscGVyIGRlZmluZWQgaW5zaWRlIGFuIGBldmFsSW5PYnNpZGlhbmAgY2FsbGJhY2tcbiAgICAgICAgICogY2Fubm90IGJlIGhvaXN0ZWQgYXQgYWxsOiB0aGUgY2FsbGJhY2sgaXMgc2VyaWFsaXplZCB3aXRoIGB0b1N0cmluZygpYCBhbmQgcnVucyBpbnNpZGUgT2JzaWRpYW4sIHNvXG4gICAgICAgICAqIGFueXRoaW5nIGxlZnQgYmVoaW5kIGluIHRoZSBtb2R1bGUgc2NvcGUgaXMgc2ltcGx5IG5vdCB0aGVyZS4gQW5kIGEgcGVyLXN1aXRlIGZhY3RvcnlcbiAgICAgICAgICogKGBjcmVhdGVDb21wb25lbnRgLCBgY3JlYXRlTW9ja1BsdWdpbmApIGlzIGRlbGliZXJhdGVseSBsb2NhbCwga2VlcGluZyBlYWNoIHN1aXRlJ3MgZml4dHVyZSBuZXh0IHRvXG4gICAgICAgICAqIHRoZSBhc3NlcnRpb25zIHRoYXQgcmVhZCBpdC4gUHJvZHVjdGlvbiBjb2RlIGtlZXBzIHRoZSBjaGVjay5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2NvbnNpc3RlbnQtZnVuY3Rpb24tc2NvcGluZyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBBIHRlc3QgYmluZGluZyBpcyBuYW1lZCBhZnRlciB0aGUgdGhpbmcgaXQgY2FwdHVyZXMsIG5vdCBhZnRlciB3aGF0IGl0IGRvZXM6IGBjcmVhdGVFbGVtZW50U3B5YFxuICAgICAgICAgKiBob2xkcyB0aGUgc3B5IG9uIGBjcmVhdGVFbGVtZW50YCwgYW5kIGBjcmVhdGVQcm9ncmFtT3B0aW9uc2AgaG9sZHMgdGhlIG9wdGlvbnMgYGNyZWF0ZVByb2dyYW1gIHdhc1xuICAgICAgICAgKiBjYWxsZWQgd2l0aC4gVGhlIHZlcmIgYmVsb25ncyB0byB0aGUgbmFtZSBiZWluZyByZWZlcmVuY2VkLCBzbyB0aGUgcnVsZSByZWFkcyBpdCBhcyBhIGZ1bmN0aW9uIG5hbWVcbiAgICAgICAgICogdGhhdCBpcyBub3QgYSBmdW5jdGlvbi4gTGVmdCBvbiBmb3IgcHJvZHVjdGlvbiBjb2RlLCB3aGVyZSB0aGUgY29tcGxhaW50IGlzIHRoZSByaWdodCBvbmUuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1ub24tZnVuY3Rpb24tdmVyYi1wcmVmaXgnOiAnb2ZmJyxcbiAgICAgICAgJ3VuaWNvcm4vbm8tdG9wLWxldmVsLWFzc2lnbm1lbnQtaW4tZnVuY3Rpb24nOiAnb2ZmJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qIGVzbGludC1lbmFibGUgbm8tbWFnaWMtbnVtYmVycyAtLSBXZSBkaXNhYmxlZCBtYWdpYyBudW1iZXJzIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBhbGwgb3ZlciB0aGUgY29uZmlncy4gKi9cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkEscUJBQTRCO0FBQzVCLDRCQUFrQztBQUNsQyxnQkFBbUI7QUFDbkIsa0JBQXFCO0FBRXJCLDJCQUFzQjtBQUN0QiwrQ0FBK0M7QUFDL0Msb0NBQThEO0FBRTlELDZCQUF1QjtBQUN2Qix5Q0FBZ0Q7QUFFaEQsbUNBQW9CO0FBQ3BCLG9CQUdPO0FBQ1AscUJBQTJCO0FBRTNCLCtCQUFxQjtBQUVyQix3QkFBMEI7QUFDMUIsa0JBQThCO0FBQzlCLHlDQUE4QztBQUM5Qyw2QkFHTztBQUNQLDBCQUE2QztBQXFEdEMsTUFBTSxvQkFBb0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlmLGtCQUE0QixDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLN0IsY0FBd0IsQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS3pCLGNBQXdCLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXpCLGdCQUEwQixDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLM0IsWUFBc0IsQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9oQyxXQUFxQjtBQUMxQixXQUFPLENBQUMsR0FBRyxLQUFLLFdBQVcs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O0FBQUEsWUFDRSxVQUFVO0FBQUEsVUFDWjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQTtBQUFBLE1BRUUsT0FBTyxRQUFRO0FBQUEsTUFDZixPQUFPO0FBQUEsUUFDTCwyQkFBMkI7QUFBQSxNQUM3QjtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BWUUsT0FBTyxRQUFRO0FBQUEsTUFDZixPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVFMLHVDQUF1QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBT3ZDLHVDQUF1QztBQUFBLFFBQ3ZDLCtDQUErQztBQUFBLE1BQ2pEO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIOyIsIm5hbWVzIjpbImVzbGludCIsImNvbW1lbnRzQ29uZmlncyIsImVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncyIsIm5vZGVQbHVnaW4iLCJwZXJmZWN0aW9uaXN0Q29uZmlncyIsInN0eWxpc3RpYyIsInRzZXNsaW50IiwidW5pY29ybiJdfQ==
|
|
@@ -37,6 +37,7 @@ var import_params_options_name_match = require('./params-options-name-match.cjs'
|
|
|
37
37
|
var import_prefer_dedent = require('./prefer-dedent.cjs');
|
|
38
38
|
var import_prefer_logical_operator_over_ternary = require('./prefer-logical-operator-over-ternary.cjs');
|
|
39
39
|
var import_prefer_noop_async = require('./prefer-noop-async.cjs');
|
|
40
|
+
var import_prefer_spread = require('./prefer-spread.cjs');
|
|
40
41
|
var import_readonly_interface_members = require('./readonly-interface-members.cjs');
|
|
41
42
|
var import_readonly_member_arrays = require('./readonly-member-arrays.cjs');
|
|
42
43
|
var import_require_method_template = require('./require-method-template.cjs');
|
|
@@ -52,6 +53,7 @@ const genericInHouseEslintRules = {
|
|
|
52
53
|
"prefer-dedent": import_prefer_dedent.preferDedent,
|
|
53
54
|
"prefer-logical-operator-over-ternary": import_prefer_logical_operator_over_ternary.preferLogicalOperatorOverTernary,
|
|
54
55
|
"prefer-noop-async": import_prefer_noop_async.preferNoopAsync,
|
|
56
|
+
"prefer-spread": import_prefer_spread.preferSpread,
|
|
55
57
|
"readonly-interface-members": import_readonly_interface_members.readonlyInterfaceMembers,
|
|
56
58
|
"readonly-member-arrays": import_readonly_member_arrays.readonlyMemberArrays,
|
|
57
59
|
"require-method-template": import_require_method_template.requireMethodTemplate,
|
|
@@ -66,4 +68,4 @@ const inHouseEslintPlugin = {
|
|
|
66
68
|
genericInHouseEslintRules,
|
|
67
69
|
inHouseEslintPlugin
|
|
68
70
|
});
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL2luLWhvdXNlLXBsdWdpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBnZW5lcmljIGluLWhvdXNlIEVTTGludCBydWxlcywgYW5kIHRoZSBwbHVnaW4gdGhhdCByZWdpc3RlcnMgdGhlbS5cbiAqXG4gKiBUaGUgZ2VuZXJpYyBydWxlcyBhcmUgcmVnaXN0ZXJlZCB1bmRlciB7QGxpbmsgSU5fSE9VU0VfRVNMSU5UX1BMVUdJTl9OQU1FfSwgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgdGhhdCBkZWZpbmVzXG4gKiB0aGVtLiBBIHBhY2thZ2UgYWRkaW5nIHJ1bGVzIG9mIGl0cyBvd24gcmVnaXN0ZXJzIHRoZW0gdW5kZXIgaXRzIG93biBuYW1lLCBhcyBhIHBsdWdpbiBvZiBpdHMgb3duIGJlc2lkZVxuICoge0BsaW5rIGluSG91c2VFc2xpbnRQbHVnaW59LlxuICovXG5cbmltcG9ydCB0eXBlIHsgRVNMaW50IH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgbm9Bc3luY0NhbGxiYWNrVG9VbnNhZmVSZXR1cm4gfSBmcm9tICcuL25vLWFzeW5jLWNhbGxiYWNrLXRvLXVuc2FmZS1yZXR1cm4udHMnO1xuaW1wb3J0IHsgbm9LZXl3b3JkSWRlbnRpZmllcnMgfSBmcm9tICcuL25vLWtleXdvcmQtaWRlbnRpZmllcnMudHMnO1xuaW1wb3J0IHsgbm9VbnJlc29sdmVkSnNkb2NMaW5rIH0gZnJvbSAnLi9uby11bnJlc29sdmVkLWpzZG9jLWxpbmsudHMnO1xuaW1wb3J0IHsgbm9VbnVzZWRQYXJhbXNNZW1iZXJzIH0gZnJvbSAnLi9uby11bnVzZWQtcGFyYW1zLW1lbWJlcnMudHMnO1xuaW1wb3J0IHsgbm9Vc2VkVW5kZXJzY29yZVZhcmlhYmxlcyB9IGZyb20gJy4vbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlcy50cyc7XG5pbXBvcnQgeyBwYXJhbXNPcHRpb25zTmFtZU1hdGNoIH0gZnJvbSAnLi9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoLnRzJztcbmltcG9ydCB7IHByZWZlckRlZGVudCB9IGZyb20gJy4vcHJlZmVyLWRlZGVudC50cyc7XG5pbXBvcnQgeyBwcmVmZXJMb2dpY2FsT3BlcmF0b3JPdmVyVGVybmFyeSB9IGZyb20gJy4vcHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5LnRzJztcbmltcG9ydCB7IHByZWZlck5vb3BBc3luYyB9IGZyb20gJy4vcHJlZmVyLW5vb3AtYXN5bmMudHMnO1xuaW1wb3J0IHsgcHJlZmVyU3ByZWFkIH0gZnJvbSAnLi9wcmVmZXItc3ByZWFkLnRzJztcbmltcG9ydCB7IHJlYWRvbmx5SW50ZXJmYWNlTWVtYmVycyB9IGZyb20gJy4vcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMudHMnO1xuaW1wb3J0IHsgcmVhZG9ubHlNZW1iZXJBcnJheXMgfSBmcm9tICcuL3JlYWRvbmx5LW1lbWJlci1hcnJheXMudHMnO1xuaW1wb3J0IHsgcmVxdWlyZU1ldGhvZFRlbXBsYXRlIH0gZnJvbSAnLi9yZXF1aXJlLW1ldGhvZC10ZW1wbGF0ZS50cyc7XG5pbXBvcnQgeyByZXF1aXJlU3VwZXJDYWxsIH0gZnJvbSAnLi9yZXF1aXJlLXN1cGVyLWNhbGwudHMnO1xuXG4vKipcbiAqIFRoZSBuYW1lc3BhY2UgdGhlIGdlbmVyaWMgaW4taG91c2UgcnVsZXMgYXJlIHJlZ2lzdGVyZWQgdW5kZXI6IHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIHRoYXQgZGVmaW5lcyB0aGVtLlxuICovXG5leHBvcnQgY29uc3QgSU5fSE9VU0VfRVNMSU5UX1BMVUdJTl9OQU1FID0gJ3R5cGVzY3JpcHQtZGV2LXRvb2xraXQnO1xuXG4vKipcbiAqIFRoZSBnZW5lcmljIGluLWhvdXNlIHJ1bGVzLCBrZXllZCBieSB0aGVpciBuYW1lIGluc2lkZSB7QGxpbmsgSU5fSE9VU0VfRVNMSU5UX1BMVUdJTl9OQU1FfS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyaWNJbkhvdXNlRXNsaW50UnVsZXM6IE5vbk51bGxhYmxlPEVTTGludC5QbHVnaW5bJ3J1bGVzJ10+ID0ge1xuICAnbm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybic6IG5vQXN5bmNDYWxsYmFja1RvVW5zYWZlUmV0dXJuLFxuICAnbm8ta2V5d29yZC1pZGVudGlmaWVycyc6IG5vS2V5d29yZElkZW50aWZpZXJzLFxuICAnbm8tdW5yZXNvbHZlZC1qc2RvYy1saW5rJzogbm9VbnJlc29sdmVkSnNkb2NMaW5rLFxuICAnbm8tdW51c2VkLXBhcmFtcy1tZW1iZXJzJzogbm9VbnVzZWRQYXJhbXNNZW1iZXJzLFxuICAnbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlcyc6IG5vVXNlZFVuZGVyc2NvcmVWYXJpYWJsZXMsXG4gICdwYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoJzogcGFyYW1zT3B0aW9uc05hbWVNYXRjaCxcbiAgJ3ByZWZlci1kZWRlbnQnOiBwcmVmZXJEZWRlbnQsXG4gICdwcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnknOiBwcmVmZXJMb2dpY2FsT3BlcmF0b3JPdmVyVGVybmFyeSxcbiAgJ3ByZWZlci1ub29wLWFzeW5jJzogcHJlZmVyTm9vcEFzeW5jLFxuICAncHJlZmVyLXNwcmVhZCc6IHByZWZlclNwcmVhZCxcbiAgJ3JlYWRvbmx5LWludGVyZmFjZS1tZW1iZXJzJzogcmVhZG9ubHlJbnRlcmZhY2VNZW1iZXJzLFxuICAncmVhZG9ubHktbWVtYmVyLWFycmF5cyc6IHJlYWRvbmx5TWVtYmVyQXJyYXlzLFxuICAncmVxdWlyZS1tZXRob2QtdGVtcGxhdGUnOiByZXF1aXJlTWV0aG9kVGVtcGxhdGUsXG4gICdyZXF1aXJlLXN1cGVyLWNhbGwnOiByZXF1aXJlU3VwZXJDYWxsXG59O1xuXG4vKipcbiAqIFRoZSBFU0xpbnQgcGx1Z2luIHJlZ2lzdGVyaW5nIHRoZSBnZW5lcmljIGluLWhvdXNlIHJ1bGVzIGFsb25lLCBmb3IgYSBwcm9qZWN0IHRoYXQgYWRkcyBub25lIG9mIGl0cyBvd24uXG4gKi9cbmV4cG9ydCBjb25zdCBpbkhvdXNlRXNsaW50UGx1Z2luOiBFU0xpbnQuUGx1Z2luID0ge1xuICBydWxlczogZ2VuZXJpY0luSG91c2VFc2xpbnRSdWxlc1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZQSxnREFBOEM7QUFDOUMsb0NBQXFDO0FBQ3JDLHNDQUFzQztBQUN0QyxzQ0FBc0M7QUFDdEMsMENBQTBDO0FBQzFDLHVDQUF1QztBQUN2QywyQkFBNkI7QUFDN0Isa0RBQWlEO0FBQ2pELCtCQUFnQztBQUNoQywyQkFBNkI7QUFDN0Isd0NBQXlDO0FBQ3pDLG9DQUFxQztBQUNyQyxxQ0FBc0M7QUFDdEMsZ0NBQWlDO0FBSzFCLE1BQU0sOEJBQThCO0FBS3BDLE1BQU0sNEJBQWlFO0FBQUEsRUFDNUUsc0NBQXNDO0FBQUEsRUFDdEMsMEJBQTBCO0FBQUEsRUFDMUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsZ0NBQWdDO0FBQUEsRUFDaEMsNkJBQTZCO0FBQUEsRUFDN0IsaUJBQWlCO0FBQUEsRUFDakIsd0NBQXdDO0FBQUEsRUFDeEMscUJBQXFCO0FBQUEsRUFDckIsaUJBQWlCO0FBQUEsRUFDakIsOEJBQThCO0FBQUEsRUFDOUIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0Isc0JBQXNCO0FBQ3hCO0FBS08sTUFBTSxzQkFBcUM7QUFBQSxFQUNoRCxPQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -44,6 +44,7 @@ __export(eslint_rules_exports, {
|
|
|
44
44
|
"prefer-dedent": () => prefer_dedent,
|
|
45
45
|
"prefer-logical-operator-over-ternary": () => prefer_logical_operator_over_ternary,
|
|
46
46
|
"prefer-noop-async": () => prefer_noop_async,
|
|
47
|
+
"prefer-spread": () => prefer_spread,
|
|
47
48
|
"readonly-interface-members": () => readonly_interface_members,
|
|
48
49
|
"readonly-member-arrays": () => readonly_member_arrays,
|
|
49
50
|
"require-method-template": () => require_method_template,
|
|
@@ -63,6 +64,7 @@ var params_options_name_match = __toESM(((module) => module && module.__esModule
|
|
|
63
64
|
var prefer_dedent = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./prefer-dedent.cjs')), 1);
|
|
64
65
|
var prefer_logical_operator_over_ternary = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./prefer-logical-operator-over-ternary.cjs')), 1);
|
|
65
66
|
var prefer_noop_async = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./prefer-noop-async.cjs')), 1);
|
|
67
|
+
var prefer_spread = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./prefer-spread.cjs')), 1);
|
|
66
68
|
var readonly_interface_members = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./readonly-interface-members.cjs')), 1);
|
|
67
69
|
var readonly_member_arrays = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./readonly-member-arrays.cjs')), 1);
|
|
68
70
|
var require_method_template = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./require-method-template.cjs')), 1);
|
|
@@ -82,6 +84,7 @@ var ts_estree_node = __toESM(((module) => module && module.__esModule && 'defaul
|
|
|
82
84
|
"prefer-dedent": null,
|
|
83
85
|
"prefer-logical-operator-over-ternary": null,
|
|
84
86
|
"prefer-noop-async": null,
|
|
87
|
+
"prefer-spread": null,
|
|
85
88
|
"readonly-interface-members": null,
|
|
86
89
|
"readonly-member-arrays": null,
|
|
87
90
|
"require-method-template": null,
|
|
@@ -89,4 +92,4 @@ var ts_estree_node = __toESM(((module) => module && module.__esModule && 'defaul
|
|
|
89
92
|
"rule-tester-helper": null,
|
|
90
93
|
"ts-estree-node": null
|
|
91
94
|
});
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2ltcG9ydC1maXgnIGZyb20gJy4vaW1wb3J0LWZpeC50cyc7XG5leHBvcnQgKiBhcyAnaW4taG91c2UtcGx1Z2luJyBmcm9tICcuL2luLWhvdXNlLXBsdWdpbi50cyc7XG5leHBvcnQgKiBhcyAnbm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybicgZnJvbSAnLi9uby1hc3luYy1jYWxsYmFjay10by11bnNhZmUtcmV0dXJuLnRzJztcbmV4cG9ydCAqIGFzICduby1rZXl3b3JkLWlkZW50aWZpZXJzJyBmcm9tICcuL25vLWtleXdvcmQtaWRlbnRpZmllcnMudHMnO1xuZXhwb3J0ICogYXMgJ25vLXVucmVzb2x2ZWQtanNkb2MtbGluaycgZnJvbSAnLi9uby11bnJlc29sdmVkLWpzZG9jLWxpbmsudHMnO1xuZXhwb3J0ICogYXMgJ25vLXVudXNlZC1wYXJhbXMtbWVtYmVycycgZnJvbSAnLi9uby11bnVzZWQtcGFyYW1zLW1lbWJlcnMudHMnO1xuZXhwb3J0ICogYXMgJ25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnIGZyb20gJy4vbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlcy50cyc7XG5leHBvcnQgKiBhcyAncGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCcgZnJvbSAnLi9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoLnRzJztcbmV4cG9ydCAqIGFzICdwcmVmZXItZGVkZW50JyBmcm9tICcuL3ByZWZlci1kZWRlbnQudHMnO1xuZXhwb3J0ICogYXMgJ3ByZWZlci1sb2dpY2FsLW9wZXJhdG9yLW92ZXItdGVybmFyeScgZnJvbSAnLi9wcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnkudHMnO1xuZXhwb3J0ICogYXMgJ3ByZWZlci1ub29wLWFzeW5jJyBmcm9tICcuL3ByZWZlci1ub29wLWFzeW5jLnRzJztcbmV4cG9ydCAqIGFzICdwcmVmZXItc3ByZWFkJyBmcm9tICcuL3ByZWZlci1zcHJlYWQudHMnO1xuZXhwb3J0ICogYXMgJ3JlYWRvbmx5LWludGVyZmFjZS1tZW1iZXJzJyBmcm9tICcuL3JlYWRvbmx5LWludGVyZmFjZS1tZW1iZXJzLnRzJztcbmV4cG9ydCAqIGFzICdyZWFkb25seS1tZW1iZXItYXJyYXlzJyBmcm9tICcuL3JlYWRvbmx5LW1lbWJlci1hcnJheXMudHMnO1xuZXhwb3J0ICogYXMgJ3JlcXVpcmUtbWV0aG9kLXRlbXBsYXRlJyBmcm9tICcuL3JlcXVpcmUtbWV0aG9kLXRlbXBsYXRlLnRzJztcbmV4cG9ydCAqIGFzICdyZXF1aXJlLXN1cGVyLWNhbGwnIGZyb20gJy4vcmVxdWlyZS1zdXBlci1jYWxsLnRzJztcbmV4cG9ydCAqIGFzICdydWxlLXRlc3Rlci1oZWxwZXInIGZyb20gJy4vcnVsZS10ZXN0ZXItaGVscGVyLnRzJztcbmV4cG9ydCAqIGFzICd0cy1lc3RyZWUtbm9kZScgZnJvbSAnLi90cy1lc3RyZWUtbm9kZS50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUEsc0JBQUFBO0FBQUEsRUFBQSx5QkFBQUM7QUFBQSxFQUFBLDRDQUFBQztBQUFBLEVBQUEsZ0NBQUFDO0FBQUEsRUFBQSxrQ0FBQUM7QUFBQSxFQUFBLGtDQUFBQztBQUFBLEVBQUEsc0NBQUFDO0FBQUEsRUFBQSxtQ0FBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBLEVBQUEsOENBQUFDO0FBQUEsRUFBQSwyQkFBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBLEVBQUEsb0NBQUFDO0FBQUEsRUFBQSxnQ0FBQUM7QUFBQSxFQUFBLGlDQUFBQztBQUFBLEVBQUEsNEJBQUFDO0FBQUEsRUFBQSw0QkFBQUM7QUFBQSxFQUFBLHdCQUFBQztBQUFBO0FBQUE7QUFFQSxJQUFBakIsYUFBOEI7QUFDOUIsSUFBQUMsa0JBQW1DO0FBQ25DLElBQUFDLHFDQUFzRDtBQUN0RCxJQUFBQyx5QkFBMEM7QUFDMUMsSUFBQUMsMkJBQTRDO0FBQzVDLElBQUFDLDJCQUE0QztBQUM1QyxJQUFBQywrQkFBZ0Q7QUFDaEQsSUFBQUMsNEJBQTZDO0FBQzdDLElBQUFDLGdCQUFpQztBQUNqQyxJQUFBQyx1Q0FBd0Q7QUFDeEQsSUFBQUMsb0JBQXFDO0FBQ3JDLElBQUFDLGdCQUFpQztBQUNqQyxJQUFBQyw2QkFBOEM7QUFDOUMsSUFBQUMseUJBQTBDO0FBQzFDLElBQUFDLDBCQUEyQztBQUMzQyxJQUFBQyxxQkFBc0M7QUFDdEMsSUFBQUMscUJBQXNDO0FBQ3RDLElBQUFDLGlCQUFrQzsiLAogICJuYW1lcyI6IFsiaW1wb3J0LWZpeCIsICJpbi1ob3VzZS1wbHVnaW4iLCAibm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybiIsICJuby1rZXl3b3JkLWlkZW50aWZpZXJzIiwgIm5vLXVucmVzb2x2ZWQtanNkb2MtbGluayIsICJuby11bnVzZWQtcGFyYW1zLW1lbWJlcnMiLCAibm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlcyIsICJwYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIiwgInByZWZlci1kZWRlbnQiLCAicHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5IiwgInByZWZlci1ub29wLWFzeW5jIiwgInByZWZlci1zcHJlYWQiLCAicmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMiLCAicmVhZG9ubHktbWVtYmVyLWFycmF5cyIsICJyZXF1aXJlLW1ldGhvZC10ZW1wbGF0ZSIsICJyZXF1aXJlLXN1cGVyLWNhbGwiLCAicnVsZS10ZXN0ZXItaGVscGVyIiwgInRzLWVzdHJlZS1ub2RlIl0KfQo=
|
|
@@ -10,6 +10,7 @@ export * as 'params-options-name-match' from './params-options-name-match.cjs';
|
|
|
10
10
|
export * as 'prefer-dedent' from './prefer-dedent.cjs';
|
|
11
11
|
export * as 'prefer-logical-operator-over-ternary' from './prefer-logical-operator-over-ternary.cjs';
|
|
12
12
|
export * as 'prefer-noop-async' from './prefer-noop-async.cjs';
|
|
13
|
+
export * as 'prefer-spread' from './prefer-spread.cjs';
|
|
13
14
|
export * as 'readonly-interface-members' from './readonly-interface-members.cjs';
|
|
14
15
|
export * as 'readonly-member-arrays' from './readonly-member-arrays.cjs';
|
|
15
16
|
export * as 'require-method-template' from './require-method-template.cjs';
|