@better-auth/mcp 1.5.0-beta.8 → 1.5.0-beta.9

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.
Files changed (2) hide show
  1. package/dist/index.mjs +3 -2
  2. package/package.json +5 -2
package/dist/index.mjs CHANGED
@@ -1026,7 +1026,7 @@ One tool call = complete auth setup ready to copy-paste.`, {
1026
1026
  const server = new McpServer({
1027
1027
  name: "better-auth",
1028
1028
  description: "Better Auth MCP server for AI-powered auth setup and diagnostics",
1029
- version: "0.0.1"
1029
+ version: "1.5.0-beta.9"
1030
1030
  });
1031
1031
  registerSetupAuth(server);
1032
1032
  async function main() {
@@ -1036,4 +1036,5 @@ async function main() {
1036
1036
  main().catch(console.error);
1037
1037
 
1038
1038
  //#endregion
1039
- export { };
1039
+ export { };
1040
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvcGFyc2VyLnRzIiwiLi4vc3JjL2xpYi90ZW1wbGF0ZXMvZGF0YWJhc2UudHMiLCIuLi9zcmMvbGliL3RlbXBsYXRlcy9mZWF0dXJlcy50cyIsIi4uL3NyYy9saWIvdGVtcGxhdGVzL2ZyYW1ld29ya3MudHMiLCIuLi9zcmMvbGliL2dlbmVyYXRvci50cyIsIi4uL3NyYy9saWIvc2NoZW1hcy50cyIsIi4uL3NyYy90b29scy9zZXR1cC1hdXRoLnRzIiwiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGV0ZWN0ZWRDb25maWcsIEV4aXN0aW5nU2V0dXAsIEZlYXR1cmUgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFeGlzdGluZ1NldHVwKFxuXHRleGlzdGluZ1NldHVwOiBFeGlzdGluZ1NldHVwLFxuKTogRGV0ZWN0ZWRDb25maWcge1xuXHRjb25zdCBkZXRlY3RlZDogRGV0ZWN0ZWRDb25maWcgPSB7XG5cdFx0ZmVhdHVyZXM6IFtdLFxuXHR9O1xuXG5cdGlmIChleGlzdGluZ1NldHVwLmF1dGhDb25maWcpIHtcblx0XHRjb25zdCBjb25maWcgPSBleGlzdGluZ1NldHVwLmF1dGhDb25maWc7XG5cdFx0ZGV0ZWN0ZWQuZGF0YWJhc2UgPSBkZXRlY3REYXRhYmFzZShjb25maWcpO1xuXHRcdGRldGVjdGVkLm9ybSA9IGRldGVjdE9STShjb25maWcpO1xuXHRcdGRldGVjdGVkLmZlYXR1cmVzID0gZGV0ZWN0RmVhdHVyZXMoY29uZmlnLCBleGlzdGluZ1NldHVwLmF1dGhDbGllbnRDb25maWcpO1xuXHR9XG5cblx0cmV0dXJuIGRldGVjdGVkO1xufVxuXG5mdW5jdGlvbiBkZXRlY3REYXRhYmFzZShjb25maWc6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChcblx0XHQvcHJvdmlkZXI6XFxzKltcIiddcG9zdGdyZXNxbFtcIiddLy50ZXN0KGNvbmZpZykgfHxcblx0XHQvcHJvdmlkZXI6XFxzKltcIiddcGdbXCInXS8udGVzdChjb25maWcpXG5cdCkge1xuXHRcdHJldHVybiBcInBvc3RncmVzXCI7XG5cdH1cblx0aWYgKC9wcm92aWRlcjpcXHMqW1wiJ11teXNxbFtcIiddLy50ZXN0KGNvbmZpZykpIHtcblx0XHRyZXR1cm4gXCJteXNxbFwiO1xuXHR9XG5cdGlmICgvcHJvdmlkZXI6XFxzKltcIiddc3FsaXRlW1wiJ10vLnRlc3QoY29uZmlnKSkge1xuXHRcdHJldHVybiBcInNxbGl0ZVwiO1xuXHR9XG5cdGlmICgvcHJvdmlkZXI6XFxzKltcIiddbW9uZ29kYltcIiddLy50ZXN0KGNvbmZpZykpIHtcblx0XHRyZXR1cm4gXCJtb25nb2RiXCI7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZGV0ZWN0T1JNKGNvbmZpZzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKC9wcmlzbWFBZGFwdGVyXFwoLy50ZXN0KGNvbmZpZykpIHtcblx0XHRyZXR1cm4gXCJwcmlzbWFcIjtcblx0fVxuXHRpZiAoL2RyaXp6bGVBZGFwdGVyXFwoLy50ZXN0KGNvbmZpZykpIHtcblx0XHRyZXR1cm4gXCJkcml6emxlXCI7XG5cdH1cblx0aWYgKC9kYXRhYmFzZTpcXHMqXFx7W1xcc1xcU10qcHJvdmlkZXI6Ly50ZXN0KGNvbmZpZykpIHtcblx0XHRyZXR1cm4gXCJub25lXCI7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZGV0ZWN0RmVhdHVyZXMoXG5cdHNlcnZlckNvbmZpZzogc3RyaW5nLFxuXHRjbGllbnRDb25maWc/OiBzdHJpbmcsXG4pOiBGZWF0dXJlW10ge1xuXHRjb25zdCBmZWF0dXJlczogRmVhdHVyZVtdID0gW107XG5cblx0aWYgKC9lbWFpbEFuZFBhc3N3b3JkOlxccypcXHtbXFxzXFxTXSplbmFibGVkOlxccyp0cnVlLy50ZXN0KHNlcnZlckNvbmZpZykpIHtcblx0XHRmZWF0dXJlcy5wdXNoKFwiZW1haWwtcGFzc3dvcmRcIik7XG5cdH1cblxuXHRjb25zdCBzb2NpYWxQcm92aWRlcnM6IEZlYXR1cmVbXSA9IFtcblx0XHRcImdvb2dsZVwiLFxuXHRcdFwiZ2l0aHViXCIsXG5cdFx0XCJhcHBsZVwiLFxuXHRcdFwiZGlzY29yZFwiLFxuXHRcdFwidHdpdHRlclwiLFxuXHRcdFwiZmFjZWJvb2tcIixcblx0XHRcIm1pY3Jvc29mdFwiLFxuXHRcdFwibGlua2VkaW5cIixcblx0XTtcblxuXHRmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHNvY2lhbFByb3ZpZGVycykge1xuXHRcdGlmIChuZXcgUmVnRXhwKGAke3Byb3ZpZGVyfTpcXFxccypcXFxce2ApLnRlc3Qoc2VydmVyQ29uZmlnKSkge1xuXHRcdFx0ZmVhdHVyZXMucHVzaChwcm92aWRlcik7XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgcGx1Z2luUGF0dGVybnM6IFtSZWdFeHAsIEZlYXR1cmVdW10gPSBbXG5cdFx0Wy90d29GYWN0b3JcXCgvLCBcIjJmYVwiXSxcblx0XHRbL29yZ2FuaXphdGlvblxcKC8sIFwib3JnYW5pemF0aW9uXCJdLFxuXHRcdFsvYWRtaW5cXCgvLCBcImFkbWluXCJdLFxuXHRcdFsvdXNlcm5hbWVcXCgvLCBcInVzZXJuYW1lXCJdLFxuXHRcdFsvbXVsdGlTZXNzaW9uXFwoLywgXCJtdWx0aS1zZXNzaW9uXCJdLFxuXHRcdFsvYXBpS2V5XFwoLywgXCJhcGkta2V5XCJdLFxuXHRcdFsvYmVhcmVyXFwoLywgXCJiZWFyZXJcIl0sXG5cdFx0Wy9qd3RcXCgvLCBcImp3dFwiXSxcblx0XHRbL21hZ2ljTGlua1xcKC8sIFwibWFnaWMtbGlua1wiXSxcblx0XHRbL3Bob25lTnVtYmVyXFwoLywgXCJwaG9uZS1udW1iZXJcIl0sXG5cdFx0Wy9wYXNza2V5XFwoLywgXCJwYXNza2V5XCJdLFxuXHRcdFsvYW5vbnltb3VzXFwoLywgXCJhbm9ueW1vdXNcIl0sXG5cdFx0Wy9jYXB0Y2hhXFwoLywgXCJjYXB0Y2hhXCJdLFxuXHRdO1xuXG5cdGZvciAoY29uc3QgW3BhdHRlcm4sIGZlYXR1cmVdIG9mIHBsdWdpblBhdHRlcm5zKSB7XG5cdFx0aWYgKHBhdHRlcm4udGVzdChzZXJ2ZXJDb25maWcpKSB7XG5cdFx0XHRmZWF0dXJlcy5wdXNoKGZlYXR1cmUpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBmZWF0dXJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVGZWF0dXJlRGlmZihcblx0ZXhpc3Rpbmc6IEZlYXR1cmVbXSxcblx0cmVxdWVzdGVkOiBGZWF0dXJlW10sXG4pOiB7IHRvQWRkOiBGZWF0dXJlW107IGV4aXN0aW5nOiBGZWF0dXJlW10gfSB7XG5cdGNvbnN0IHRvQWRkID0gcmVxdWVzdGVkLmZpbHRlcigoZikgPT4gIWV4aXN0aW5nLmluY2x1ZGVzKGYpKTtcblx0Y29uc3QgZXhpc3RpbmdGZWF0dXJlcyA9IHJlcXVlc3RlZC5maWx0ZXIoKGYpID0+IGV4aXN0aW5nLmluY2x1ZGVzKGYpKTtcblx0cmV0dXJuIHsgdG9BZGQsIGV4aXN0aW5nOiBleGlzdGluZ0ZlYXR1cmVzIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7XG5cdERhdGFiYXNlLFxuXHREYXRhYmFzZUNvbmZpZyxcblx0RW52VmFyLFxuXHRPUk0sXG5cdE9STUNvbmZpZyxcbn0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5cbi8vIGNzcGVsbDppZ25vcmUgbXlkYlxuY29uc3QgREFUQUJBU0VfQ09ORklHUzogUmVjb3JkPERhdGFiYXNlLCBEYXRhYmFzZUNvbmZpZz4gPSB7XG5cdHBvc3RncmVzOiB7XG5cdFx0cHJvdmlkZXI6IFwicG9zdGdyZXNxbFwiLFxuXHRcdGVudlZhck5hbWU6IFwiREFUQUJBU0VfVVJMXCIsXG5cdFx0Y29ubmVjdGlvblN0cmluZ0V4YW1wbGU6IFwicG9zdGdyZXNxbDovL3VzZXI6cGFzc3dvcmRAbG9jYWxob3N0OjU0MzIvbXlkYlwiLFxuXHR9LFxuXHRteXNxbDoge1xuXHRcdHByb3ZpZGVyOiBcIm15c3FsXCIsXG5cdFx0ZW52VmFyTmFtZTogXCJEQVRBQkFTRV9VUkxcIixcblx0XHRjb25uZWN0aW9uU3RyaW5nRXhhbXBsZTogXCJteXNxbDovL3VzZXI6cGFzc3dvcmRAbG9jYWxob3N0OjMzMDYvbXlkYlwiLFxuXHR9LFxuXHRzcWxpdGU6IHtcblx0XHRwcm92aWRlcjogXCJzcWxpdGVcIixcblx0XHRlbnZWYXJOYW1lOiBcIkRBVEFCQVNFX1VSTFwiLFxuXHRcdGNvbm5lY3Rpb25TdHJpbmdFeGFtcGxlOiBcImZpbGU6Li9kZXYuZGJcIixcblx0fSxcblx0bW9uZ29kYjoge1xuXHRcdHByb3ZpZGVyOiBcIm1vbmdvZGJcIixcblx0XHRlbnZWYXJOYW1lOiBcIkRBVEFCQVNFX1VSTFwiLFxuXHRcdGNvbm5lY3Rpb25TdHJpbmdFeGFtcGxlOiBcIm1vbmdvZGI6Ly9sb2NhbGhvc3Q6MjcwMTcvbXlkYlwiLFxuXHR9LFxufTtcblxuY29uc3QgT1JNX0NPTkZJR1M6IFJlY29yZDxPUk0sIE9STUNvbmZpZz4gPSB7XG5cdHByaXNtYToge1xuXHRcdGFkYXB0ZXJJbXBvcnQ6IGBpbXBvcnQgeyBwcmlzbWFBZGFwdGVyIH0gZnJvbSBcImJldHRlci1hdXRoL2FkYXB0ZXJzL3ByaXNtYVwiO1xuaW1wb3J0IHsgUHJpc21hQ2xpZW50IH0gZnJvbSBcIkBwcmlzbWEvY2xpZW50XCI7YCxcblx0XHRhZGFwdGVyU2V0dXA6IChkYlByb3ZpZGVyOiBzdHJpbmcpID0+IGBwcmlzbWFBZGFwdGVyKHByaXNtYSwge1xuICAgIHByb3ZpZGVyOiBcIiR7ZGJQcm92aWRlcn1cIixcbiAgfSlgLFxuXHRcdHNjaGVtYUNvbW1hbmQ6XG5cdFx0XHRcIm5weCBAYmV0dGVyLWF1dGgvY2xpIGdlbmVyYXRlIC0tb3V0cHV0IHByaXNtYS9zY2hlbWEucHJpc21hXCIsXG5cdFx0cHVzaENvbW1hbmQ6IFwibnB4IHByaXNtYSBkYiBwdXNoXCIsXG5cdH0sXG5cdGRyaXp6bGU6IHtcblx0XHRhZGFwdGVySW1wb3J0OiBgaW1wb3J0IHsgZHJpenpsZUFkYXB0ZXIgfSBmcm9tIFwiYmV0dGVyLWF1dGgvYWRhcHRlcnMvZHJpenpsZVwiO1xuaW1wb3J0IHsgZGIgfSBmcm9tIFwiLi9kYlwiO2AsXG5cdFx0YWRhcHRlclNldHVwOiAoZGJQcm92aWRlcjogc3RyaW5nKSA9PiBgZHJpenpsZUFkYXB0ZXIoZGIsIHtcbiAgICBwcm92aWRlcjogXCIke2dldFNob3J0UHJvdmlkZXIoZGJQcm92aWRlcil9XCIsXG4gIH0pYCxcblx0XHRzY2hlbWFDb21tYW5kOiBcIm5weCBAYmV0dGVyLWF1dGgvY2xpIGdlbmVyYXRlIC0tb3V0cHV0IHNyYy9saWIvc2NoZW1hLnRzXCIsXG5cdFx0cHVzaENvbW1hbmQ6IFwibnB4IGRyaXp6bGUta2l0IHB1c2hcIixcblx0fSxcblx0bm9uZToge1xuXHRcdGFkYXB0ZXJJbXBvcnQ6IFwiXCIsXG5cdFx0YWRhcHRlclNldHVwOiAoZGJQcm92aWRlcjogc3RyaW5nKSA9PiBge1xuICAgIHByb3ZpZGVyOiBcIiR7Z2V0U2hvcnRQcm92aWRlcihkYlByb3ZpZGVyKX1cIixcbiAgICB1cmw6IHByb2Nlc3MuZW52LkRBVEFCQVNFX1VSTCxcbiAgfWAsXG5cdFx0cHVzaENvbW1hbmQ6IFwibnB4IEBiZXR0ZXItYXV0aC9jbGkgbWlncmF0ZVwiLFxuXHR9LFxufTtcblxuZnVuY3Rpb24gZ2V0U2hvcnRQcm92aWRlcihwcm92aWRlcjogc3RyaW5nKTogc3RyaW5nIHtcblx0c3dpdGNoIChwcm92aWRlcikge1xuXHRcdGNhc2UgXCJwb3N0Z3Jlc3FsXCI6XG5cdFx0XHRyZXR1cm4gXCJwZ1wiO1xuXHRcdGNhc2UgXCJteXNxbFwiOlxuXHRcdFx0cmV0dXJuIFwibXlzcWxcIjtcblx0XHRjYXNlIFwic3FsaXRlXCI6XG5cdFx0XHRyZXR1cm4gXCJzcWxpdGVcIjtcblx0XHRjYXNlIFwibW9uZ29kYlwiOlxuXHRcdFx0cmV0dXJuIFwibW9uZ29kYlwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gcHJvdmlkZXI7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRGF0YWJhc2VDb25maWcoXG5cdGRhdGFiYXNlOiBEYXRhYmFzZSxcblx0b3JtOiBPUk0sXG4pOiB7IGltcG9ydHM6IHN0cmluZzsgY29uZmlnOiBzdHJpbmc7IHByaXNtYUluc3RhbmNlPzogc3RyaW5nIH0ge1xuXHRpZiAob3JtID09PSBcImRyaXp6bGVcIiAmJiBkYXRhYmFzZSA9PT0gXCJtb25nb2RiXCIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcIkRyaXp6bGUgT1JNIGRvZXMgbm90IHN1cHBvcnQgTW9uZ29EQi4gUGxlYXNlIHNlbGVjdCBQcmlzbWEgb3IgdXNlIHRoZSBidWlsdC1pbiBNb25nb0RCIGFkYXB0ZXIgaW5zdGVhZC5cIixcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgZGJDb25maWcgPSBEQVRBQkFTRV9DT05GSUdTW2RhdGFiYXNlXTtcblx0Y29uc3Qgb3JtQ29uZmlnID0gT1JNX0NPTkZJR1Nbb3JtXTtcblxuXHRsZXQgaW1wb3J0cyA9IFwiXCI7XG5cdGxldCBwcmlzbWFJbnN0YW5jZSA9IFwiXCI7XG5cblx0aWYgKG9ybSA9PT0gXCJwcmlzbWFcIikge1xuXHRcdGltcG9ydHMgPSBvcm1Db25maWcuYWRhcHRlckltcG9ydDtcblx0XHRwcmlzbWFJbnN0YW5jZSA9IFwiXFxuY29uc3QgcHJpc21hID0gbmV3IFByaXNtYUNsaWVudCgpO1xcblwiO1xuXHR9IGVsc2UgaWYgKG9ybSA9PT0gXCJkcml6emxlXCIpIHtcblx0XHRpbXBvcnRzID0gb3JtQ29uZmlnLmFkYXB0ZXJJbXBvcnQ7XG5cdH1cblxuXHRjb25zdCBjb25maWcgPSBvcm1Db25maWcuYWRhcHRlclNldHVwKGRiQ29uZmlnLnByb3ZpZGVyKTtcblxuXHRyZXR1cm4geyBpbXBvcnRzLCBjb25maWcsIHByaXNtYUluc3RhbmNlIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhYmFzZUVudlZhcihkYXRhYmFzZTogRGF0YWJhc2UpOiBFbnZWYXIge1xuXHRjb25zdCBjb25maWcgPSBEQVRBQkFTRV9DT05GSUdTW2RhdGFiYXNlXTtcblx0cmV0dXJuIHtcblx0XHRuYW1lOiBjb25maWcuZW52VmFyTmFtZSxcblx0XHRkZXNjcmlwdGlvbjogYCR7ZGF0YWJhc2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBkYXRhYmFzZS5zbGljZSgxKX0gY29ubmVjdGlvbiBzdHJpbmdgLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4YW1wbGU6IGNvbmZpZy5jb25uZWN0aW9uU3RyaW5nRXhhbXBsZSxcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFiYXNlQ29tbWFuZHMoXG5cdG9ybTogT1JNLFxuKTogeyBjb21tYW5kOiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmc7IHdoZW4/OiBzdHJpbmcgfVtdIHtcblx0Y29uc3Qgb3JtQ29uZmlnID0gT1JNX0NPTkZJR1Nbb3JtXTtcblx0Y29uc3QgY29tbWFuZHM6IHsgY29tbWFuZDogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nOyB3aGVuPzogc3RyaW5nIH1bXSA9XG5cdFx0W107XG5cblx0aWYgKG9ybUNvbmZpZy5zY2hlbWFDb21tYW5kKSB7XG5cdFx0Y29tbWFuZHMucHVzaCh7XG5cdFx0XHRjb21tYW5kOiBvcm1Db25maWcuc2NoZW1hQ29tbWFuZCxcblx0XHRcdGRlc2NyaXB0aW9uOiBgR2VuZXJhdGUgJHtvcm0gPT09IFwicHJpc21hXCIgPyBcIlByaXNtYVwiIDogXCJEcml6emxlXCJ9IHNjaGVtYSBmb3IgYXV0aCB0YWJsZXNgLFxuXHRcdH0pO1xuXHR9XG5cblx0Y29tbWFuZHMucHVzaCh7XG5cdFx0Y29tbWFuZDogb3JtQ29uZmlnLnB1c2hDb21tYW5kLFxuXHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0b3JtID09PSBcIm5vbmVcIlxuXHRcdFx0XHQ/IFwiUnVuIGRhdGFiYXNlIG1pZ3JhdGlvbnMgZm9yIGF1dGggdGFibGVzXCJcblx0XHRcdFx0OiBgUHVzaCAke29ybSA9PT0gXCJwcmlzbWFcIiA/IFwiUHJpc21hXCIgOiBcIkRyaXp6bGVcIn0gc2NoZW1hIHRvIGRhdGFiYXNlYCxcblx0XHR3aGVuOiBcIkFmdGVyIHNldHRpbmcgREFUQUJBU0VfVVJMXCIsXG5cdH0pO1xuXG5cdHJldHVybiBjb21tYW5kcztcbn1cbiIsImltcG9ydCB0eXBlIHsgRW52VmFyLCBGZWF0dXJlLCBQbHVnaW5Db25maWcgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU29jaWFsUHJvdmlkZXJDb25maWcocHJvdmlkZXI6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHVwcGVyTmFtZSA9IHByb3ZpZGVyLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiBgJHtwcm92aWRlcn06IHtcbiAgICAgIGNsaWVudElkOiBwcm9jZXNzLmVudi4ke3VwcGVyTmFtZX1fQ0xJRU5UX0lEISxcbiAgICAgIGNsaWVudFNlY3JldDogcHJvY2Vzcy5lbnYuJHt1cHBlck5hbWV9X0NMSUVOVF9TRUNSRVQhLFxuICAgIH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U29jaWFsUHJvdmlkZXJFbnZWYXJzKHByb3ZpZGVyOiBzdHJpbmcpOiBFbnZWYXJbXSB7XG5cdGNvbnN0IHVwcGVyTmFtZSA9IHByb3ZpZGVyLnRvVXBwZXJDYXNlKCk7XG5cdGNvbnN0IHByb3ZpZGVyTmFtZSA9IHByb3ZpZGVyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvdmlkZXIuc2xpY2UoMSk7XG5cblx0cmV0dXJuIFtcblx0XHR7XG5cdFx0XHRuYW1lOiBgJHt1cHBlck5hbWV9X0NMSUVOVF9JRGAsXG5cdFx0XHRkZXNjcmlwdGlvbjogYCR7cHJvdmlkZXJOYW1lfSBPQXV0aCBjbGllbnQgSURgLFxuXHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRob3dUb0dldDogYENyZWF0ZSBPQXV0aCBhcHAgYXQgJHtwcm92aWRlck5hbWV9IGRldmVsb3BlciBjb25zb2xlYCxcblx0XHR9LFxuXHRcdHtcblx0XHRcdG5hbWU6IGAke3VwcGVyTmFtZX1fQ0xJRU5UX1NFQ1JFVGAsXG5cdFx0XHRkZXNjcmlwdGlvbjogYCR7cHJvdmlkZXJOYW1lfSBPQXV0aCBjbGllbnQgc2VjcmV0YCxcblx0XHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdFx0aG93VG9HZXQ6IGBDcmVhdGUgT0F1dGggYXBwIGF0ICR7cHJvdmlkZXJOYW1lfSBkZXZlbG9wZXIgY29uc29sZWAsXG5cdFx0fSxcblx0XTtcbn1cblxuY29uc3QgX0tOT1dOX1NPQ0lBTF9QUk9WSURFUlMgPSBbXG5cdFwiZ29vZ2xlXCIsXG5cdFwiZ2l0aHViXCIsXG5cdFwiYXBwbGVcIixcblx0XCJkaXNjb3JkXCIsXG5cdFwidHdpdHRlclwiLFxuXHRcImZhY2Vib29rXCIsXG5cdFwibWljcm9zb2Z0XCIsXG5cdFwibGlua2VkaW5cIixcblx0XCJzcG90aWZ5XCIsXG5cdFwidHdpdGNoXCIsXG5cdFwic2xhY2tcIixcblx0XCJnaXRsYWJcIixcblx0XCJyZWRkaXRcIixcblx0XCJkcm9wYm94XCIsXG5cdFwidGlrdG9rXCIsXG5dIGFzIGNvbnN0O1xuXG5jb25zdCBQTFVHSU5fQ09ORklHUzogUmVjb3JkPHN0cmluZywgUGx1Z2luQ29uZmlnPiA9IHtcblx0XCIyZmFcIjoge1xuXHRcdHNlcnZlckltcG9ydDogJ2ltcG9ydCB7IHR3b0ZhY3RvciB9IGZyb20gXCJiZXR0ZXItYXV0aC9wbHVnaW5zXCI7Jyxcblx0XHRjbGllbnRJbXBvcnQ6XG5cdFx0XHQnaW1wb3J0IHsgdHdvRmFjdG9yQ2xpZW50IH0gZnJvbSBcImJldHRlci1hdXRoL2NsaWVudC9wbHVnaW5zXCI7Jyxcblx0XHRzZXJ2ZXJQbHVnaW46ICgpID0+IGB0d29GYWN0b3IoKWAsXG5cdFx0Y2xpZW50UGx1Z2luOiAoKSA9PiBgdHdvRmFjdG9yQ2xpZW50KClgLFxuXHR9LFxuXHRvcmdhbml6YXRpb246IHtcblx0XHRzZXJ2ZXJJbXBvcnQ6ICdpbXBvcnQgeyBvcmdhbml6YXRpb24gfSBmcm9tIFwiYmV0dGVyLWF1dGgvcGx1Z2luc1wiOycsXG5cdFx0Y2xpZW50SW1wb3J0OlxuXHRcdFx0J2ltcG9ydCB7IG9yZ2FuaXphdGlvbkNsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9jbGllbnQvcGx1Z2luc1wiOycsXG5cdFx0c2VydmVyUGx1Z2luOiAoKSA9PiBgb3JnYW5pemF0aW9uKClgLFxuXHRcdGNsaWVudFBsdWdpbjogKCkgPT4gYG9yZ2FuaXphdGlvbkNsaWVudCgpYCxcblx0fSxcblx0YWRtaW46IHtcblx0XHRzZXJ2ZXJJbXBvcnQ6ICdpbXBvcnQgeyBhZG1pbiB9IGZyb20gXCJiZXR0ZXItYXV0aC9wbHVnaW5zXCI7Jyxcblx0XHRjbGllbnRJbXBvcnQ6ICdpbXBvcnQgeyBhZG1pbkNsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9jbGllbnQvcGx1Z2luc1wiOycsXG5cdFx0c2VydmVyUGx1Z2luOiAoKSA9PiBgYWRtaW4oKWAsXG5cdFx0Y2xpZW50UGx1Z2luOiAoKSA9PiBgYWRtaW5DbGllbnQoKWAsXG5cdH0sXG5cdHVzZXJuYW1lOiB7XG5cdFx0c2VydmVySW1wb3J0OiAnaW1wb3J0IHsgdXNlcm5hbWUgfSBmcm9tIFwiYmV0dGVyLWF1dGgvcGx1Z2luc1wiOycsXG5cdFx0Y2xpZW50SW1wb3J0OlxuXHRcdFx0J2ltcG9ydCB7IHVzZXJuYW1lQ2xpZW50IH0gZnJvbSBcImJldHRlci1hdXRoL2NsaWVudC9wbHVnaW5zXCI7Jyxcblx0XHRzZXJ2ZXJQbHVnaW46ICgpID0+IGB1c2VybmFtZSgpYCxcblx0XHRjbGllbnRQbHVnaW46ICgpID0+IGB1c2VybmFtZUNsaWVudCgpYCxcblx0fSxcblx0XCJtdWx0aS1zZXNzaW9uXCI6IHtcblx0XHRzZXJ2ZXJJbXBvcnQ6ICdpbXBvcnQgeyBtdWx0aVNlc3Npb24gfSBmcm9tIFwiYmV0dGVyLWF1dGgvcGx1Z2luc1wiOycsXG5cdFx0Y2xpZW50SW1wb3J0OlxuXHRcdFx0J2ltcG9ydCB7IG11bHRpU2Vzc2lvbkNsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9jbGllbnQvcGx1Z2luc1wiOycsXG5cdFx0c2VydmVyUGx1Z2luOiAoKSA9PiBgbXVsdGlTZXNzaW9uKClgLFxuXHRcdGNsaWVudFBsdWdpbjogKCkgPT4gYG11bHRpU2Vzc2lvbkNsaWVudCgpYCxcblx0fSxcblx0XCJhcGkta2V5XCI6IHtcblx0XHRzZXJ2ZXJJbXBvcnQ6ICdpbXBvcnQgeyBhcGlLZXkgfSBmcm9tIFwiYmV0dGVyLWF1dGgvcGx1Z2luc1wiOycsXG5cdFx0Y2xpZW50SW1wb3J0OiAnaW1wb3J0IHsgYXBpS2V5Q2xpZW50IH0gZnJvbSBcImJldHRlci1hdXRoL2NsaWVudC9wbHVnaW5zXCI7Jyxcblx0XHRzZXJ2ZXJQbHVnaW46ICgpID0+IGBhcGlLZXkoKWAsXG5cdFx0Y2xpZW50UGx1Z2luOiAoKSA9PiBgYXBpS2V5Q2xpZW50KClgLFxuXHR9LFxuXHRiZWFyZXI6IHtcblx0XHRzZXJ2ZXJJbXBvcnQ6ICdpbXBvcnQgeyBiZWFyZXIgfSBmcm9tIFwiYmV0dGVyLWF1dGgvcGx1Z2luc1wiOycsXG5cdFx0c2VydmVyUGx1Z2luOiAoKSA9PiBgYmVhcmVyKClgLFxuXHR9LFxuXHRqd3Q6IHtcblx0XHRzZXJ2ZXJJbXBvcnQ6ICdpbXBvcnQgeyBqd3QgfSBmcm9tIFwiYmV0dGVyLWF1dGgvcGx1Z2luc1wiOycsXG5cdFx0c2VydmVyUGx1Z2luOiAoKSA9PiBgand0KClgLFxuXHR9LFxuXHRcIm1hZ2ljLWxpbmtcIjoge1xuXHRcdHNlcnZlckltcG9ydDogJ2ltcG9ydCB7IG1hZ2ljTGluayB9IGZyb20gXCJiZXR0ZXItYXV0aC9wbHVnaW5zXCI7Jyxcblx0XHRjbGllbnRJbXBvcnQ6XG5cdFx0XHQnaW1wb3J0IHsgbWFnaWNMaW5rQ2xpZW50IH0gZnJvbSBcImJldHRlci1hdXRoL2NsaWVudC9wbHVnaW5zXCI7Jyxcblx0XHRzZXJ2ZXJQbHVnaW46ICgpID0+IGBtYWdpY0xpbmsoe1xuICAgICAgc2VuZE1hZ2ljTGluazogYXN5bmMgKHsgZW1haWwsIHVybCB9KSA9PiB7XG4gICAgICAgIC8vIFRPRE86IFNlbmQgbWFnaWMgbGluayBlbWFpbFxuICAgICAgICBjb25zb2xlLmxvZyhcIlNlbmQgbWFnaWMgbGluayB0b1wiLCBlbWFpbCwgdXJsKTtcbiAgICAgIH0sXG4gICAgfSlgLFxuXHRcdGNsaWVudFBsdWdpbjogKCkgPT4gYG1hZ2ljTGlua0NsaWVudCgpYCxcblx0fSxcblx0XCJwaG9uZS1udW1iZXJcIjoge1xuXHRcdHNlcnZlckltcG9ydDogJ2ltcG9ydCB7IHBob25lTnVtYmVyIH0gZnJvbSBcImJldHRlci1hdXRoL3BsdWdpbnNcIjsnLFxuXHRcdGNsaWVudEltcG9ydDpcblx0XHRcdCdpbXBvcnQgeyBwaG9uZU51bWJlckNsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9jbGllbnQvcGx1Z2luc1wiOycsXG5cdFx0c2VydmVyUGx1Z2luOiAoKSA9PiBgcGhvbmVOdW1iZXIoe1xuICAgICAgc2VuZE9UUDogYXN5bmMgKHsgcGhvbmVOdW1iZXIsIGNvZGUgfSkgPT4ge1xuICAgICAgICAvLyBUT0RPOiBTZW5kIE9UUCB2aWEgU01TXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU2VuZCBPVFBcIiwgY29kZSwgXCJ0b1wiLCBwaG9uZU51bWJlcik7XG4gICAgICB9LFxuICAgIH0pYCxcblx0XHRjbGllbnRQbHVnaW46ICgpID0+IGBwaG9uZU51bWJlckNsaWVudCgpYCxcblx0fSxcblx0cGFzc2tleToge1xuXHRcdHNlcnZlckltcG9ydDogJ2ltcG9ydCB7IHBhc3NrZXkgfSBmcm9tIFwiYmV0dGVyLWF1dGgvcGx1Z2luc1wiOycsXG5cdFx0Y2xpZW50SW1wb3J0OiAnaW1wb3J0IHsgcGFzc2tleUNsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9jbGllbnQvcGx1Z2luc1wiOycsXG5cdFx0c2VydmVyUGx1Z2luOiAoKSA9PiBgcGFzc2tleSgpYCxcblx0XHRjbGllbnRQbHVnaW46ICgpID0+IGBwYXNza2V5Q2xpZW50KClgLFxuXHR9LFxuXHRhbm9ueW1vdXM6IHtcblx0XHRzZXJ2ZXJJbXBvcnQ6ICdpbXBvcnQgeyBhbm9ueW1vdXMgfSBmcm9tIFwiYmV0dGVyLWF1dGgvcGx1Z2luc1wiOycsXG5cdFx0Y2xpZW50SW1wb3J0OlxuXHRcdFx0J2ltcG9ydCB7IGFub255bW91c0NsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9jbGllbnQvcGx1Z2luc1wiOycsXG5cdFx0c2VydmVyUGx1Z2luOiAoKSA9PiBgYW5vbnltb3VzKClgLFxuXHRcdGNsaWVudFBsdWdpbjogKCkgPT4gYGFub255bW91c0NsaWVudCgpYCxcblx0fSxcblx0Y2FwdGNoYToge1xuXHRcdHNlcnZlckltcG9ydDogJ2ltcG9ydCB7IGNhcHRjaGEgfSBmcm9tIFwiYmV0dGVyLWF1dGgvcGx1Z2luc1wiOycsXG5cdFx0c2VydmVyUGx1Z2luOiAoKSA9PiBgY2FwdGNoYSh7XG4gICAgICBwcm92aWRlcjogXCJjbG91ZGZsYXJlLXR1cm5zdGlsZVwiLCAvLyBvciBcInJlY2FwdGNoYVwiIG9yIFwiaGNhcHRjaGFcIlxuICAgICAgc2VjcmV0S2V5OiBwcm9jZXNzLmVudi5DQVBUQ0hBX1NFQ1JFVF9LRVkhLFxuICAgIH0pYCxcblx0XHRlbnZWYXJzOiBbXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiQ0FQVENIQV9TRUNSRVRfS0VZXCIsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBcIkNhcHRjaGEgcHJvdmlkZXIgc2VjcmV0IGtleVwiLFxuXHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdH0sXG5cdFx0XSxcblx0fSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBsdWdpbkltcG9ydHMocGx1Z2luczogc3RyaW5nW10pOiB7XG5cdHNlcnZlckltcG9ydHM6IHN0cmluZ1tdO1xuXHRjbGllbnRJbXBvcnRzOiBzdHJpbmdbXTtcbn0ge1xuXHRjb25zdCBzZXJ2ZXJJbXBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBjbGllbnRJbXBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdGZvciAoY29uc3QgcGx1Z2luIG9mIHBsdWdpbnMpIHtcblx0XHRjb25zdCBjb25maWcgPSBQTFVHSU5fQ09ORklHU1twbHVnaW5dO1xuXHRcdGlmIChjb25maWcpIHtcblx0XHRcdHNlcnZlckltcG9ydHMucHVzaChjb25maWcuc2VydmVySW1wb3J0KTtcblx0XHRcdGlmIChjb25maWcuY2xpZW50SW1wb3J0KSB7XG5cdFx0XHRcdGNsaWVudEltcG9ydHMucHVzaChjb25maWcuY2xpZW50SW1wb3J0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4geyBzZXJ2ZXJJbXBvcnRzLCBjbGllbnRJbXBvcnRzIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBsdWdpblNldHVwKHBsdWdpbnM6IHN0cmluZ1tdKToge1xuXHRzZXJ2ZXJQbHVnaW5zOiBzdHJpbmdbXTtcblx0Y2xpZW50UGx1Z2luczogc3RyaW5nW107XG59IHtcblx0Y29uc3Qgc2VydmVyUGx1Z2luczogc3RyaW5nW10gPSBbXTtcblx0Y29uc3QgY2xpZW50UGx1Z2luczogc3RyaW5nW10gPSBbXTtcblxuXHRmb3IgKGNvbnN0IHBsdWdpbiBvZiBwbHVnaW5zKSB7XG5cdFx0Y29uc3QgY29uZmlnID0gUExVR0lOX0NPTkZJR1NbcGx1Z2luXTtcblx0XHRpZiAoY29uZmlnKSB7XG5cdFx0XHRzZXJ2ZXJQbHVnaW5zLnB1c2goY29uZmlnLnNlcnZlclBsdWdpbigpKTtcblx0XHRcdGlmIChjb25maWcuY2xpZW50UGx1Z2luKSB7XG5cdFx0XHRcdGNsaWVudFBsdWdpbnMucHVzaChjb25maWcuY2xpZW50UGx1Z2luKCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHNlcnZlclBsdWdpbnMsIGNsaWVudFBsdWdpbnMgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBsdWdpbkVudlZhcnMocGx1Z2luczogc3RyaW5nW10pOiBFbnZWYXJbXSB7XG5cdGNvbnN0IGVudlZhcnM6IEVudlZhcltdID0gW107XG5cblx0Zm9yIChjb25zdCBwbHVnaW4gb2YgcGx1Z2lucykge1xuXHRcdGNvbnN0IGNvbmZpZyA9IFBMVUdJTl9DT05GSUdTW3BsdWdpbl07XG5cdFx0aWYgKGNvbmZpZz8uZW52VmFycykge1xuXHRcdFx0ZW52VmFycy5wdXNoKC4uLmNvbmZpZy5lbnZWYXJzKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZW52VmFycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhdGVnb3JpemVGZWF0dXJlcyhmZWF0dXJlczogRmVhdHVyZVtdKToge1xuXHRzb2NpYWxQcm92aWRlcnM6IHN0cmluZ1tdO1xuXHRwbHVnaW5zOiBzdHJpbmdbXTtcblx0aGFzRW1haWxQYXNzd29yZDogYm9vbGVhbjtcbn0ge1xuXHRjb25zdCBzb2NpYWxQcm92aWRlcnM6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IHBsdWdpbnM6IHN0cmluZ1tdID0gW107XG5cdGxldCBoYXNFbWFpbFBhc3N3b3JkID0gZmFsc2U7XG5cblx0Zm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XG5cdFx0aWYgKGZlYXR1cmUgPT09IFwiZW1haWwtcGFzc3dvcmRcIikge1xuXHRcdFx0aGFzRW1haWxQYXNzd29yZCA9IHRydWU7XG5cdFx0fSBlbHNlIGlmIChmZWF0dXJlIGluIFBMVUdJTl9DT05GSUdTKSB7XG5cdFx0XHRwbHVnaW5zLnB1c2goZmVhdHVyZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNvY2lhbFByb3ZpZGVycy5wdXNoKGZlYXR1cmUpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHNvY2lhbFByb3ZpZGVycywgcGx1Z2lucywgaGFzRW1haWxQYXNzd29yZCB9O1xufVxuIiwiaW1wb3J0IHR5cGUgeyBGcmFtZXdvcmssIEZyYW1ld29ya0NvbmZpZyB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuXG5leHBvcnQgY29uc3QgRlJBTUVXT1JLX0NPTkZJR1M6IFJlY29yZDxGcmFtZXdvcmssIEZyYW1ld29ya0NvbmZpZz4gPSB7XG5cdFwibmV4dC1hcHAtcm91dGVyXCI6IHtcblx0XHRuYW1lOiBcIk5leHQuanMgKEFwcCBSb3V0ZXIpXCIsXG5cdFx0ZGVmYXVsdFNyY0RpcjogZmFsc2UsXG5cdFx0ZGVmYXVsdEF1dGhQYXRoOiBcImxpYi9hdXRoXCIsXG5cdFx0ZGVmYXVsdEFwaVBhdGg6IFwiYXBwL2FwaS9hdXRoL1suLi5hbGxdXCIsXG5cdFx0Y2xpZW50SW1wb3J0OiAnaW1wb3J0IHsgY3JlYXRlQXV0aENsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9yZWFjdFwiOycsXG5cdFx0aGFuZGxlckltcG9ydDogJ2ltcG9ydCB7IHRvTmV4dEpzSGFuZGxlciB9IGZyb20gXCJiZXR0ZXItYXV0aC9uZXh0LWpzXCI7Jyxcblx0XHRoYW5kbGVyRnVuY3Rpb246IFwidG9OZXh0SnNIYW5kbGVyXCIsXG5cdFx0YXBpUm91dGVUZW1wbGF0ZTogKFxuXHRcdFx0YXV0aFBhdGg6IHN0cmluZyxcblx0XHQpID0+IGBpbXBvcnQgeyBhdXRoIH0gZnJvbSBcIkAvJHthdXRoUGF0aH1cIjtcbmltcG9ydCB7IHRvTmV4dEpzSGFuZGxlciB9IGZyb20gXCJiZXR0ZXItYXV0aC9uZXh0LWpzXCI7XG5cbmV4cG9ydCBjb25zdCB7IEdFVCwgUE9TVCB9ID0gdG9OZXh0SnNIYW5kbGVyKGF1dGgpO2AsXG5cdFx0ZGVmYXVsdFBvcnQ6IDMwMDAsXG5cdH0sXG5cdFwibmV4dC1wYWdlcy1yb3V0ZXJcIjoge1xuXHRcdG5hbWU6IFwiTmV4dC5qcyAoUGFnZXMgUm91dGVyKVwiLFxuXHRcdGRlZmF1bHRTcmNEaXI6IGZhbHNlLFxuXHRcdGRlZmF1bHRBdXRoUGF0aDogXCJsaWIvYXV0aFwiLFxuXHRcdGRlZmF1bHRBcGlQYXRoOiBcInBhZ2VzL2FwaS9hdXRoL1suLi5hbGxdXCIsXG5cdFx0Y2xpZW50SW1wb3J0OiAnaW1wb3J0IHsgY3JlYXRlQXV0aENsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9yZWFjdFwiOycsXG5cdFx0aGFuZGxlckltcG9ydDogJ2ltcG9ydCB7IHRvTm9kZUhhbmRsZXIgfSBmcm9tIFwiYmV0dGVyLWF1dGgvbm9kZVwiOycsXG5cdFx0aGFuZGxlckZ1bmN0aW9uOiBcInRvTm9kZUhhbmRsZXJcIixcblx0XHRhcGlSb3V0ZVRlbXBsYXRlOiAoXG5cdFx0XHRhdXRoUGF0aDogc3RyaW5nLFxuXHRcdCkgPT4gYGltcG9ydCB7IHRvTm9kZUhhbmRsZXIgfSBmcm9tIFwiYmV0dGVyLWF1dGgvbm9kZVwiO1xuaW1wb3J0IHsgYXV0aCB9IGZyb20gXCJALyR7YXV0aFBhdGh9XCI7XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSB7IGFwaTogeyBib2R5UGFyc2VyOiBmYWxzZSB9IH07XG5leHBvcnQgZGVmYXVsdCB0b05vZGVIYW5kbGVyKGF1dGgpO2AsXG5cdFx0ZGVmYXVsdFBvcnQ6IDMwMDAsXG5cdH0sXG5cdHN2ZWx0ZWtpdDoge1xuXHRcdG5hbWU6IFwiU3ZlbHRlS2l0XCIsXG5cdFx0ZGVmYXVsdFNyY0RpcjogdHJ1ZSxcblx0XHRkZWZhdWx0QXV0aFBhdGg6IFwibGliL2F1dGhcIixcblx0XHRkZWZhdWx0QXBpUGF0aDogXCJyb3V0ZXMvYXBpL2F1dGgvWy4uLmFsbF1cIixcblx0XHRjbGllbnRJbXBvcnQ6ICdpbXBvcnQgeyBjcmVhdGVBdXRoQ2xpZW50IH0gZnJvbSBcImJldHRlci1hdXRoL3N2ZWx0ZVwiOycsXG5cdFx0aGFuZGxlckltcG9ydDogJ2ltcG9ydCB7IHN2ZWx0ZUtpdEhhbmRsZXIgfSBmcm9tIFwiYmV0dGVyLWF1dGgvc3ZlbHRlLWtpdFwiOycsXG5cdFx0aGFuZGxlckZ1bmN0aW9uOiBcInN2ZWx0ZUtpdEhhbmRsZXJcIixcblx0XHRhcGlSb3V0ZVRlbXBsYXRlOiAoKSA9PiBcIlwiLFxuXHRcdGhvb2tzVGVtcGxhdGU6IChhdXRoUGF0aDogc3RyaW5nKSA9PiBgaW1wb3J0IHsgYXV0aCB9IGZyb20gXCIkJHthdXRoUGF0aH1cIjtcbmltcG9ydCB7IHN2ZWx0ZUtpdEhhbmRsZXIgfSBmcm9tIFwiYmV0dGVyLWF1dGgvc3ZlbHRlLWtpdFwiO1xuaW1wb3J0IHR5cGUgeyBIYW5kbGUgfSBmcm9tIFwiQHN2ZWx0ZWpzL2tpdFwiO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlOiBIYW5kbGUgPSBhc3luYyAoeyBldmVudCwgcmVzb2x2ZSB9KSA9PiB7XG4gIHJldHVybiBzdmVsdGVLaXRIYW5kbGVyKHsgZXZlbnQsIHJlc29sdmUsIGF1dGggfSk7XG59O2AsXG5cdFx0ZGVmYXVsdFBvcnQ6IDUxNzMsXG5cdH0sXG5cdGFzdHJvOiB7XG5cdFx0bmFtZTogXCJBc3Ryb1wiLFxuXHRcdGRlZmF1bHRTcmNEaXI6IHRydWUsXG5cdFx0ZGVmYXVsdEF1dGhQYXRoOiBcImxpYi9hdXRoXCIsXG5cdFx0ZGVmYXVsdEFwaVBhdGg6IFwicGFnZXMvYXBpL2F1dGgvWy4uLmFsbF1cIixcblx0XHRjbGllbnRJbXBvcnQ6ICdpbXBvcnQgeyBjcmVhdGVBdXRoQ2xpZW50IH0gZnJvbSBcImJldHRlci1hdXRoL2NsaWVudFwiOycsXG5cdFx0aGFuZGxlckltcG9ydDogXCJcIixcblx0XHRoYW5kbGVyRnVuY3Rpb246IFwiXCIsXG5cdFx0YXBpUm91dGVUZW1wbGF0ZTogKFxuXHRcdFx0YXV0aFBhdGg6IHN0cmluZyxcblx0XHQpID0+IGBpbXBvcnQgdHlwZSB7IEFQSVJvdXRlIH0gZnJvbSBcImFzdHJvXCI7XG5pbXBvcnQgeyBhdXRoIH0gZnJvbSBcIkAvJHthdXRoUGF0aH1cIjtcblxuZXhwb3J0IGNvbnN0IEdFVDogQVBJUm91dGUgPSBhc3luYyAoY3R4KSA9PiB7XG4gIHJldHVybiBhdXRoLmhhbmRsZXIoY3R4LnJlcXVlc3QpO1xufTtcblxuZXhwb3J0IGNvbnN0IFBPU1Q6IEFQSVJvdXRlID0gYXN5bmMgKGN0eCkgPT4ge1xuICByZXR1cm4gYXV0aC5oYW5kbGVyKGN0eC5yZXF1ZXN0KTtcbn07YCxcblx0XHRkZWZhdWx0UG9ydDogNDMyMSxcblx0fSxcblx0cmVtaXg6IHtcblx0XHRuYW1lOiBcIlJlbWl4XCIsXG5cdFx0ZGVmYXVsdFNyY0RpcjogdHJ1ZSxcblx0XHRkZWZhdWx0QXV0aFBhdGg6IFwibGliL2F1dGhcIixcblx0XHRkZWZhdWx0QXBpUGF0aDogXCJyb3V0ZXMvYXBpLmF1dGguJFwiLFxuXHRcdGNsaWVudEltcG9ydDogJ2ltcG9ydCB7IGNyZWF0ZUF1dGhDbGllbnQgfSBmcm9tIFwiYmV0dGVyLWF1dGgvcmVhY3RcIjsnLFxuXHRcdGhhbmRsZXJJbXBvcnQ6IFwiXCIsXG5cdFx0aGFuZGxlckZ1bmN0aW9uOiBcIlwiLFxuXHRcdGFwaVJvdXRlVGVtcGxhdGU6IChcblx0XHRcdGF1dGhQYXRoOiBzdHJpbmcsXG5cdFx0KSA9PiBgaW1wb3J0IHsgYXV0aCB9IGZyb20gXCJ+LyR7YXV0aFBhdGh9XCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbkZ1bmN0aW9uQXJncywgTG9hZGVyRnVuY3Rpb25BcmdzIH0gZnJvbSBcIkByZW1peC1ydW4vbm9kZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZGVyKHsgcmVxdWVzdCB9OiBMb2FkZXJGdW5jdGlvbkFyZ3MpIHtcbiAgcmV0dXJuIGF1dGguaGFuZGxlcihyZXF1ZXN0KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbih7IHJlcXVlc3QgfTogQWN0aW9uRnVuY3Rpb25BcmdzKSB7XG4gIHJldHVybiBhdXRoLmhhbmRsZXIocmVxdWVzdCk7XG59YCxcblx0XHRkZWZhdWx0UG9ydDogMzAwMCxcblx0fSxcblx0bnV4dDoge1xuXHRcdG5hbWU6IFwiTnV4dCAzXCIsXG5cdFx0ZGVmYXVsdFNyY0RpcjogZmFsc2UsXG5cdFx0ZGVmYXVsdEF1dGhQYXRoOiBcImxpYi9hdXRoXCIsXG5cdFx0ZGVmYXVsdEFwaVBhdGg6IFwic2VydmVyL2FwaS9hdXRoL1suLi5hbGxdXCIsXG5cdFx0Y2xpZW50SW1wb3J0OiAnaW1wb3J0IHsgY3JlYXRlQXV0aENsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC92dWVcIjsnLFxuXHRcdGhhbmRsZXJJbXBvcnQ6IFwiXCIsXG5cdFx0aGFuZGxlckZ1bmN0aW9uOiBcIlwiLFxuXHRcdGFwaVJvdXRlVGVtcGxhdGU6IChcblx0XHRcdGF1dGhQYXRoOiBzdHJpbmcsXG5cdFx0KSA9PiBgaW1wb3J0IHsgYXV0aCB9IGZyb20gXCJ+LyR7YXV0aFBhdGh9XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUV2ZW50SGFuZGxlcigoZXZlbnQpID0+IHtcbiAgcmV0dXJuIGF1dGguaGFuZGxlcih0b1dlYlJlcXVlc3QoZXZlbnQpKTtcbn0pO2AsXG5cdFx0ZGVmYXVsdFBvcnQ6IDMwMDAsXG5cdH0sXG5cdFwic29saWQtc3RhcnRcIjoge1xuXHRcdG5hbWU6IFwiU29saWRTdGFydFwiLFxuXHRcdGRlZmF1bHRTcmNEaXI6IHRydWUsXG5cdFx0ZGVmYXVsdEF1dGhQYXRoOiBcImxpYi9hdXRoXCIsXG5cdFx0ZGVmYXVsdEFwaVBhdGg6IFwicm91dGVzL2FwaS9hdXRoL1suLi5hbGxdXCIsXG5cdFx0Y2xpZW50SW1wb3J0OiAnaW1wb3J0IHsgY3JlYXRlQXV0aENsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9zb2xpZFwiOycsXG5cdFx0aGFuZGxlckltcG9ydDogXCJcIixcblx0XHRoYW5kbGVyRnVuY3Rpb246IFwiXCIsXG5cdFx0YXBpUm91dGVUZW1wbGF0ZTogKFxuXHRcdFx0YXV0aFBhdGg6IHN0cmluZyxcblx0XHQpID0+IGBpbXBvcnQgeyBhdXRoIH0gZnJvbSBcIn4vJHthdXRoUGF0aH1cIjtcbmltcG9ydCB0eXBlIHsgQVBJRXZlbnQgfSBmcm9tIFwiQHNvbGlkanMvc3RhcnQvc2VydmVyXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBHRVQoZXZlbnQ6IEFQSUV2ZW50KSB7XG4gIHJldHVybiBhdXRoLmhhbmRsZXIoZXZlbnQucmVxdWVzdCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBQT1NUKGV2ZW50OiBBUElFdmVudCkge1xuICByZXR1cm4gYXV0aC5oYW5kbGVyKGV2ZW50LnJlcXVlc3QpO1xufWAsXG5cdFx0ZGVmYXVsdFBvcnQ6IDMwMDAsXG5cdH0sXG5cdGhvbm86IHtcblx0XHRuYW1lOiBcIkhvbm9cIixcblx0XHRkZWZhdWx0U3JjRGlyOiB0cnVlLFxuXHRcdGRlZmF1bHRBdXRoUGF0aDogXCJsaWIvYXV0aFwiLFxuXHRcdGRlZmF1bHRBcGlQYXRoOiBcIlwiLFxuXHRcdGNsaWVudEltcG9ydDogJ2ltcG9ydCB7IGNyZWF0ZUF1dGhDbGllbnQgfSBmcm9tIFwiYmV0dGVyLWF1dGgvY2xpZW50XCI7Jyxcblx0XHRoYW5kbGVySW1wb3J0OiBcIlwiLFxuXHRcdGhhbmRsZXJGdW5jdGlvbjogXCJcIixcblx0XHRhcGlSb3V0ZVRlbXBsYXRlOiAoYXV0aFBhdGg6IHN0cmluZykgPT4gYGltcG9ydCB7IEhvbm8gfSBmcm9tIFwiaG9ub1wiO1xuaW1wb3J0IHsgYXV0aCB9IGZyb20gXCIuLyR7YXV0aFBhdGh9XCI7XG5cbmNvbnN0IGFwcCA9IG5ldyBIb25vKCk7XG5cbmFwcC5vbihbXCJQT1NUXCIsIFwiR0VUXCJdLCBcIi9hcGkvYXV0aC8qKlwiLCAoYykgPT4ge1xuICByZXR1cm4gYXV0aC5oYW5kbGVyKGMucmVxLnJhdyk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgYXBwO2AsXG5cdFx0ZGVmYXVsdFBvcnQ6IDMwMDAsXG5cdH0sXG5cdGV4cHJlc3M6IHtcblx0XHRuYW1lOiBcIkV4cHJlc3MuanNcIixcblx0XHRkZWZhdWx0U3JjRGlyOiB0cnVlLFxuXHRcdGRlZmF1bHRBdXRoUGF0aDogXCJsaWIvYXV0aFwiLFxuXHRcdGRlZmF1bHRBcGlQYXRoOiBcIlwiLFxuXHRcdGNsaWVudEltcG9ydDogJ2ltcG9ydCB7IGNyZWF0ZUF1dGhDbGllbnQgfSBmcm9tIFwiYmV0dGVyLWF1dGgvY2xpZW50XCI7Jyxcblx0XHRoYW5kbGVySW1wb3J0OiAnaW1wb3J0IHsgdG9Ob2RlSGFuZGxlciB9IGZyb20gXCJiZXR0ZXItYXV0aC9ub2RlXCI7Jyxcblx0XHRoYW5kbGVyRnVuY3Rpb246IFwidG9Ob2RlSGFuZGxlclwiLFxuXHRcdGFwaVJvdXRlVGVtcGxhdGU6IChhdXRoUGF0aDogc3RyaW5nKSA9PiBgaW1wb3J0IGV4cHJlc3MgZnJvbSBcImV4cHJlc3NcIjtcbmltcG9ydCB7IHRvTm9kZUhhbmRsZXIgfSBmcm9tIFwiYmV0dGVyLWF1dGgvbm9kZVwiO1xuaW1wb3J0IHsgYXV0aCB9IGZyb20gXCIuLyR7YXV0aFBhdGh9XCI7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLmFsbChcIi9hcGkvYXV0aC8qXCIsIHRvTm9kZUhhbmRsZXIoYXV0aCkpO1xuXG5hcHAubGlzdGVuKDMwMDAsICgpID0+IHtcbiAgY29uc29sZS5sb2coXCJTZXJ2ZXIgcnVubmluZyBvbiBwb3J0IDMwMDBcIik7XG59KTtgLFxuXHRcdGRlZmF1bHRQb3J0OiAzMDAwLFxuXHR9LFxuXHRmYXN0aWZ5OiB7XG5cdFx0bmFtZTogXCJGYXN0aWZ5XCIsXG5cdFx0ZGVmYXVsdFNyY0RpcjogdHJ1ZSxcblx0XHRkZWZhdWx0QXV0aFBhdGg6IFwibGliL2F1dGhcIixcblx0XHRkZWZhdWx0QXBpUGF0aDogXCJcIixcblx0XHRjbGllbnRJbXBvcnQ6ICdpbXBvcnQgeyBjcmVhdGVBdXRoQ2xpZW50IH0gZnJvbSBcImJldHRlci1hdXRoL2NsaWVudFwiOycsXG5cdFx0aGFuZGxlckltcG9ydDogJ2ltcG9ydCB7IHRvTm9kZUhhbmRsZXIgfSBmcm9tIFwiYmV0dGVyLWF1dGgvbm9kZVwiOycsXG5cdFx0aGFuZGxlckZ1bmN0aW9uOiBcInRvTm9kZUhhbmRsZXJcIixcblx0XHRhcGlSb3V0ZVRlbXBsYXRlOiAoYXV0aFBhdGg6IHN0cmluZykgPT4gYGltcG9ydCBGYXN0aWZ5IGZyb20gXCJmYXN0aWZ5XCI7XG5pbXBvcnQgeyB0b05vZGVIYW5kbGVyIH0gZnJvbSBcImJldHRlci1hdXRoL25vZGVcIjtcbmltcG9ydCB7IGF1dGggfSBmcm9tIFwiLi8ke2F1dGhQYXRofVwiO1xuXG5jb25zdCBmYXN0aWZ5ID0gRmFzdGlmeSgpO1xuXG5mYXN0aWZ5LmFsbChcIi9hcGkvYXV0aC8qXCIsIGFzeW5jIChyZXF1ZXN0LCByZXBseSkgPT4ge1xuICBjb25zdCBoYW5kbGVyID0gdG9Ob2RlSGFuZGxlcihhdXRoKTtcbiAgcmV0dXJuIGhhbmRsZXIocmVxdWVzdC5yYXcsIHJlcGx5LnJhdyk7XG59KTtcblxuZmFzdGlmeS5saXN0ZW4oeyBwb3J0OiAzMDAwIH0sIChlcnIpID0+IHtcbiAgaWYgKGVycikgdGhyb3cgZXJyO1xuICBjb25zb2xlLmxvZyhcIlNlcnZlciBydW5uaW5nIG9uIHBvcnQgMzAwMFwiKTtcbn0pO2AsXG5cdFx0ZGVmYXVsdFBvcnQ6IDMwMDAsXG5cdH0sXG5cdGVseXNpYToge1xuXHRcdG5hbWU6IFwiRWx5c2lhIChCdW4pXCIsXG5cdFx0ZGVmYXVsdFNyY0RpcjogdHJ1ZSxcblx0XHRkZWZhdWx0QXV0aFBhdGg6IFwibGliL2F1dGhcIixcblx0XHRkZWZhdWx0QXBpUGF0aDogXCJcIixcblx0XHRjbGllbnRJbXBvcnQ6ICdpbXBvcnQgeyBjcmVhdGVBdXRoQ2xpZW50IH0gZnJvbSBcImJldHRlci1hdXRoL2NsaWVudFwiOycsXG5cdFx0aGFuZGxlckltcG9ydDogXCJcIixcblx0XHRoYW5kbGVyRnVuY3Rpb246IFwiXCIsXG5cdFx0YXBpUm91dGVUZW1wbGF0ZTogKGF1dGhQYXRoOiBzdHJpbmcpID0+IGBpbXBvcnQgeyBFbHlzaWEgfSBmcm9tIFwiZWx5c2lhXCI7XG5pbXBvcnQgeyBhdXRoIH0gZnJvbSBcIi4vJHthdXRoUGF0aH1cIjtcblxuY29uc3QgYXBwID0gbmV3IEVseXNpYSgpXG4gIC5hbGwoXCIvYXBpL2F1dGgvKlwiLCAoeyByZXF1ZXN0IH0pID0+IGF1dGguaGFuZGxlcihyZXF1ZXN0KSlcbiAgLmxpc3RlbigzMDAwKTtcblxuY29uc29sZS5sb2coXCJTZXJ2ZXIgcnVubmluZyBvbiBwb3J0IDMwMDBcIik7YCxcblx0XHRkZWZhdWx0UG9ydDogMzAwMCxcblx0fSxcblx0XCJ0YW5zdGFjay1zdGFydFwiOiB7XG5cdFx0bmFtZTogXCJUYW5TdGFjayBTdGFydFwiLFxuXHRcdGRlZmF1bHRTcmNEaXI6IHRydWUsXG5cdFx0ZGVmYXVsdEF1dGhQYXRoOiBcImxpYi9hdXRoXCIsXG5cdFx0ZGVmYXVsdEFwaVBhdGg6IFwicm91dGVzL2FwaS9hdXRoLiRcIixcblx0XHRjbGllbnRJbXBvcnQ6ICdpbXBvcnQgeyBjcmVhdGVBdXRoQ2xpZW50IH0gZnJvbSBcImJldHRlci1hdXRoL3JlYWN0XCI7Jyxcblx0XHRoYW5kbGVySW1wb3J0OiBcIlwiLFxuXHRcdGhhbmRsZXJGdW5jdGlvbjogXCJcIixcblx0XHRhcGlSb3V0ZVRlbXBsYXRlOiAoXG5cdFx0XHRhdXRoUGF0aDogc3RyaW5nLFxuXHRcdCkgPT4gYGltcG9ydCB7IGF1dGggfSBmcm9tIFwifi8ke2F1dGhQYXRofVwiO1xuaW1wb3J0IHsgY3JlYXRlQVBJRmlsZVJvdXRlIH0gZnJvbSBcIkB0YW5zdGFjay9zdGFydC9hcGlcIjtcblxuZXhwb3J0IGNvbnN0IFJvdXRlID0gY3JlYXRlQVBJRmlsZVJvdXRlKFwiL2FwaS9hdXRoLyRcIikoe1xuICBHRVQ6ICh7IHJlcXVlc3QgfSkgPT4gYXV0aC5oYW5kbGVyKHJlcXVlc3QpLFxuICBQT1NUOiAoeyByZXF1ZXN0IH0pID0+IGF1dGguaGFuZGxlcihyZXF1ZXN0KSxcbn0pO2AsXG5cdFx0ZGVmYXVsdFBvcnQ6IDMwMDAsXG5cdH0sXG5cdGV4cG86IHtcblx0XHRuYW1lOiBcIkV4cG8gKFJlYWN0IE5hdGl2ZSlcIixcblx0XHRkZWZhdWx0U3JjRGlyOiB0cnVlLFxuXHRcdGRlZmF1bHRBdXRoUGF0aDogXCJsaWIvYXV0aFwiLFxuXHRcdGRlZmF1bHRBcGlQYXRoOiBcIlwiLFxuXHRcdGNsaWVudEltcG9ydDogJ2ltcG9ydCB7IGNyZWF0ZUF1dGhDbGllbnQgfSBmcm9tIFwiQGJldHRlci1hdXRoL2V4cG9cIjsnLFxuXHRcdGhhbmRsZXJJbXBvcnQ6IFwiXCIsXG5cdFx0aGFuZGxlckZ1bmN0aW9uOiBcIlwiLFxuXHRcdGFwaVJvdXRlVGVtcGxhdGU6ICgpID0+IFwiXCIsXG5cdFx0ZGVmYXVsdFBvcnQ6IDgwODEsXG5cdH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEF1dGhQYXRoKFxuXHRmcmFtZXdvcms6IEZyYW1ld29yayxcblx0c3JjRGlyOiBib29sZWFuLFxuKTogc3RyaW5nIHtcblx0Y29uc3QgY29uZmlnID0gRlJBTUVXT1JLX0NPTkZJR1NbZnJhbWV3b3JrXTtcblx0Y29uc3QgYmFzZVBhdGggPSBjb25maWcuZGVmYXVsdEF1dGhQYXRoO1xuXG5cdHJldHVybiBzcmNEaXIgPyBgc3JjLyR7YmFzZVBhdGh9YCA6IGJhc2VQYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEFwaVBhdGgoXG5cdGZyYW1ld29yazogRnJhbWV3b3JrLFxuXHRzcmNEaXI6IGJvb2xlYW4sXG4pOiBzdHJpbmcge1xuXHRjb25zdCBjb25maWcgPSBGUkFNRVdPUktfQ09ORklHU1tmcmFtZXdvcmtdO1xuXHRjb25zdCBiYXNlUGF0aCA9IGNvbmZpZy5kZWZhdWx0QXBpUGF0aDtcblxuXHRpZiAoIWJhc2VQYXRoKSByZXR1cm4gXCJcIjtcblxuXHRyZXR1cm4gc3JjRGlyID8gYHNyYy8ke2Jhc2VQYXRofWAgOiBiYXNlUGF0aDtcbn1cbiIsImltcG9ydCB7IGNvbXB1dGVGZWF0dXJlRGlmZiwgcGFyc2VFeGlzdGluZ1NldHVwIH0gZnJvbSBcIi4vcGFyc2VyLmpzXCI7XG5pbXBvcnQge1xuXHRnZW5lcmF0ZURhdGFiYXNlQ29uZmlnLFxuXHRnZXREYXRhYmFzZUNvbW1hbmRzLFxuXHRnZXREYXRhYmFzZUVudlZhcixcbn0gZnJvbSBcIi4vdGVtcGxhdGVzL2RhdGFiYXNlLmpzXCI7XG5pbXBvcnQge1xuXHRjYXRlZ29yaXplRmVhdHVyZXMsXG5cdGdlbmVyYXRlUGx1Z2luSW1wb3J0cyxcblx0Z2VuZXJhdGVQbHVnaW5TZXR1cCxcblx0Z2VuZXJhdGVTb2NpYWxQcm92aWRlckNvbmZpZyxcblx0Z2V0UGx1Z2luRW52VmFycyxcblx0Z2V0U29jaWFsUHJvdmlkZXJFbnZWYXJzLFxufSBmcm9tIFwiLi90ZW1wbGF0ZXMvZmVhdHVyZXMuanNcIjtcbmltcG9ydCB7XG5cdEZSQU1FV09SS19DT05GSUdTLFxuXHRnZXREZWZhdWx0QXBpUGF0aCxcblx0Z2V0RGVmYXVsdEF1dGhQYXRoLFxufSBmcm9tIFwiLi90ZW1wbGF0ZXMvZnJhbWV3b3Jrcy5qc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRDb21tYW5kLFxuXHREYXRhYmFzZSxcblx0RG9jTGluayxcblx0RW52VmFyLFxuXHRGZWF0dXJlLFxuXHRGcmFtZXdvcmssXG5cdE9STSxcblx0T3V0cHV0RmlsZSxcblx0U2V0dXBBdXRoRXJyb3IsXG5cdFNldHVwQXV0aElucHV0LFxuXHRTZXR1cEF1dGhPdXRwdXQsXG59IGZyb20gXCIuL3R5cGVzLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVNldHVwKFxuXHRpbnB1dDogU2V0dXBBdXRoSW5wdXQsXG4pOiBTZXR1cEF1dGhPdXRwdXQgfCBTZXR1cEF1dGhFcnJvciB7XG5cdGNvbnN0IGZyYW1ld29yayA9IGlucHV0LmZyYW1ld29yaztcblx0Y29uc3QgZGF0YWJhc2UgPSBpbnB1dC5kYXRhYmFzZTtcblx0Y29uc3Qgb3JtID0gaW5wdXQub3JtIHx8IFwibm9uZVwiO1xuXHRjb25zdCBmZWF0dXJlcyA9IGlucHV0LmZlYXR1cmVzIHx8IFtcImVtYWlsLXBhc3N3b3JkXCJdO1xuXHRjb25zdCB0eXBlc2NyaXB0ID0gaW5wdXQudHlwZXNjcmlwdCA/PyB0cnVlO1xuXHRjb25zdCBzcmNEaXIgPSBpbnB1dC5zcmNEaXIgPz8gRlJBTUVXT1JLX0NPTkZJR1NbZnJhbWV3b3JrXS5kZWZhdWx0U3JjRGlyO1xuXG5cdGNvbnN0IGF1dGhQYXRoID0gaW5wdXQuYXV0aFBhdGggfHwgZ2V0RGVmYXVsdEF1dGhQYXRoKGZyYW1ld29yaywgc3JjRGlyKTtcblx0Y29uc3QgYXBpUGF0aCA9IGlucHV0LmFwaVBhdGggfHwgZ2V0RGVmYXVsdEFwaVBhdGgoZnJhbWV3b3JrLCBzcmNEaXIpO1xuXG5cdGxldCBtb2RlOiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiA9IFwiY3JlYXRlXCI7XG5cdGxldCBmZWF0dXJlc1RvR2VuZXJhdGUgPSBmZWF0dXJlcztcblx0bGV0IGRldGVjdGVkOiBSZXR1cm5UeXBlPHR5cGVvZiBwYXJzZUV4aXN0aW5nU2V0dXA+IHwgdW5kZWZpbmVkO1xuXG5cdGlmIChpbnB1dC5leGlzdGluZ1NldHVwPy5hdXRoQ29uZmlnKSB7XG5cdFx0bW9kZSA9IFwidXBkYXRlXCI7XG5cdFx0ZGV0ZWN0ZWQgPSBwYXJzZUV4aXN0aW5nU2V0dXAoaW5wdXQuZXhpc3RpbmdTZXR1cCk7XG5cdFx0Y29uc3QgZGlmZiA9IGNvbXB1dGVGZWF0dXJlRGlmZihkZXRlY3RlZC5mZWF0dXJlcyBhcyBGZWF0dXJlW10sIGZlYXR1cmVzKTtcblx0XHRmZWF0dXJlc1RvR2VuZXJhdGUgPSBkaWZmLnRvQWRkO1xuXG5cdFx0aWYgKGZlYXR1cmVzVG9HZW5lcmF0ZS5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdG1vZGU6IFwidXBkYXRlXCIsXG5cdFx0XHRcdGZpbGVzOiBbXSxcblx0XHRcdFx0ZW52VmFyczogW10sXG5cdFx0XHRcdGNvbW1hbmRzOiBbXSxcblx0XHRcdFx0ZGV0ZWN0ZWQsXG5cdFx0XHRcdG5leHRTdGVwczogW1wiQWxsIHJlcXVlc3RlZCBmZWF0dXJlcyBhcmUgYWxyZWFkeSBjb25maWd1cmVkXCJdLFxuXHRcdFx0XHRkb2NzOiBbXSxcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgeyBzb2NpYWxQcm92aWRlcnMsIHBsdWdpbnMsIGhhc0VtYWlsUGFzc3dvcmQgfSA9XG5cdFx0Y2F0ZWdvcml6ZUZlYXR1cmVzKGZlYXR1cmVzVG9HZW5lcmF0ZSk7XG5cblx0Y29uc3QgZmlsZXM6IE91dHB1dEZpbGVbXSA9IFtdO1xuXHRjb25zdCBlbnZWYXJzOiBFbnZWYXJbXSA9IFtdO1xuXHRjb25zdCBjb21tYW5kczogQ29tbWFuZFtdID0gW107XG5cdGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdGVudlZhcnMucHVzaCh7XG5cdFx0bmFtZTogXCJCRVRURVJfQVVUSF9TRUNSRVRcIixcblx0XHRkZXNjcmlwdGlvbjogXCJTZWNyZXQga2V5IGZvciBzaWduaW5nIHRva2Vuc1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGhvd1RvR2V0OiBcIlJ1bjogbnB4IEBiZXR0ZXItYXV0aC9jbGkgc2VjcmV0XCIsXG5cdH0pO1xuXG5cdGVudlZhcnMucHVzaChnZXREYXRhYmFzZUVudlZhcihkYXRhYmFzZSkpO1xuXG5cdGZvciAoY29uc3QgcHJvdmlkZXIgb2Ygc29jaWFsUHJvdmlkZXJzKSB7XG5cdFx0ZW52VmFycy5wdXNoKC4uLmdldFNvY2lhbFByb3ZpZGVyRW52VmFycyhwcm92aWRlcikpO1xuXHR9XG5cblx0ZW52VmFycy5wdXNoKC4uLmdldFBsdWdpbkVudlZhcnMocGx1Z2lucykpO1xuXG5cdGlmIChtb2RlID09PSBcImNyZWF0ZVwiKSB7XG5cdFx0Y29uc3QgYXV0aEZpbGUgPSBnZW5lcmF0ZUF1dGhGaWxlKHtcblx0XHRcdGZyYW1ld29yayxcblx0XHRcdGRhdGFiYXNlLFxuXHRcdFx0b3JtLFxuXHRcdFx0c29jaWFsUHJvdmlkZXJzLFxuXHRcdFx0cGx1Z2lucyxcblx0XHRcdGhhc0VtYWlsUGFzc3dvcmQsXG5cdFx0XHR0eXBlc2NyaXB0LFxuXHRcdH0pO1xuXG5cdFx0ZmlsZXMucHVzaCh7XG5cdFx0XHRwYXRoOiBgJHthdXRoUGF0aH0uJHt0eXBlc2NyaXB0ID8gXCJ0c1wiIDogXCJqc1wifWAsXG5cdFx0XHRkZXNjcmlwdGlvbjogXCJCZXR0ZXIgQXV0aCBzZXJ2ZXIgY29uZmlndXJhdGlvblwiLFxuXHRcdFx0YWN0aW9uOiBcImNyZWF0ZVwiLFxuXHRcdFx0Y29udGVudDogYXV0aEZpbGUsXG5cdFx0fSk7XG5cblx0XHRjb25zdCBjbGllbnRGaWxlID0gZ2VuZXJhdGVDbGllbnRGaWxlKHtcblx0XHRcdGZyYW1ld29yayxcblx0XHRcdHBsdWdpbnMsXG5cdFx0XHR0eXBlc2NyaXB0LFxuXHRcdH0pO1xuXG5cdFx0ZmlsZXMucHVzaCh7XG5cdFx0XHRwYXRoOiBgJHthdXRoUGF0aH0tY2xpZW50LiR7dHlwZXNjcmlwdCA/IFwidHNcIiA6IFwianNcIn1gLFxuXHRcdFx0ZGVzY3JpcHRpb246IFwiQmV0dGVyIEF1dGggY2xpZW50IGNvbmZpZ3VyYXRpb25cIixcblx0XHRcdGFjdGlvbjogXCJjcmVhdGVcIixcblx0XHRcdGNvbnRlbnQ6IGNsaWVudEZpbGUsXG5cdFx0fSk7XG5cblx0XHRpZiAoYXBpUGF0aCkge1xuXHRcdFx0Y29uc3QgYXBpRmlsZSA9IGdlbmVyYXRlQXBpUm91dGVGaWxlKGZyYW1ld29yaywgYXV0aFBhdGgpO1xuXHRcdFx0aWYgKGFwaUZpbGUpIHtcblx0XHRcdFx0ZmlsZXMucHVzaCh7XG5cdFx0XHRcdFx0cGF0aDogYCR7YXBpUGF0aH0vcm91dGUuJHt0eXBlc2NyaXB0ID8gXCJ0c1wiIDogXCJqc1wifWAsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IFwiQVBJIHJvdXRlIGhhbmRsZXIgZm9yIGF1dGggZW5kcG9pbnRzXCIsXG5cdFx0XHRcdFx0YWN0aW9uOiBcImNyZWF0ZVwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGFwaUZpbGUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGZyYW1ld29ya0NvbmZpZyA9IEZSQU1FV09SS19DT05GSUdTW2ZyYW1ld29ya107XG5cdFx0aWYgKGZyYW1ld29ya0NvbmZpZy5ob29rc1RlbXBsYXRlKSB7XG5cdFx0XHRmaWxlcy5wdXNoKHtcblx0XHRcdFx0cGF0aDogc3JjRGlyID8gXCJzcmMvaG9va3Muc2VydmVyLnRzXCIgOiBcImhvb2tzLnNlcnZlci50c1wiLFxuXHRcdFx0XHRkZXNjcmlwdGlvbjogXCJTdmVsdGVLaXQgaG9va3MgZm9yIGF1dGggaGFuZGxpbmdcIixcblx0XHRcdFx0YWN0aW9uOiBcImNyZWF0ZVwiLFxuXHRcdFx0XHRjb250ZW50OiBmcmFtZXdvcmtDb25maWcuaG9va3NUZW1wbGF0ZShhdXRoUGF0aCksXG5cdFx0XHR9KTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0aWYgKHNvY2lhbFByb3ZpZGVycy5sZW5ndGggPiAwIHx8IHBsdWdpbnMubGVuZ3RoID4gMCB8fCBoYXNFbWFpbFBhc3N3b3JkKSB7XG5cdFx0XHRjb25zdCBjaGFuZ2VzID0gZ2VuZXJhdGVVcGRhdGVDaGFuZ2VzKHtcblx0XHRcdFx0c29jaWFsUHJvdmlkZXJzLFxuXHRcdFx0XHRwbHVnaW5zLFxuXHRcdFx0XHRoYXNFbWFpbFBhc3N3b3JkLFxuXHRcdFx0fSk7XG5cblx0XHRcdGZpbGVzLnB1c2goe1xuXHRcdFx0XHRwYXRoOiBgJHthdXRoUGF0aH0uJHt0eXBlc2NyaXB0ID8gXCJ0c1wiIDogXCJqc1wifWAsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBcIkJldHRlciBBdXRoIHNlcnZlciBjb25maWd1cmF0aW9uXCIsXG5cdFx0XHRcdGFjdGlvbjogXCJ1cGRhdGVcIixcblx0XHRcdFx0Y2hhbmdlczogY2hhbmdlcy5zZXJ2ZXJDaGFuZ2VzLFxuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChwbHVnaW5zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0ZmlsZXMucHVzaCh7XG5cdFx0XHRcdFx0cGF0aDogYCR7YXV0aFBhdGh9LWNsaWVudC4ke3R5cGVzY3JpcHQgPyBcInRzXCIgOiBcImpzXCJ9YCxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogXCJCZXR0ZXIgQXV0aCBjbGllbnQgY29uZmlndXJhdGlvblwiLFxuXHRcdFx0XHRcdGFjdGlvbjogXCJ1cGRhdGVcIixcblx0XHRcdFx0XHRjaGFuZ2VzOiBjaGFuZ2VzLmNsaWVudENoYW5nZXMsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbW1hbmRzLnB1c2goe1xuXHRcdGNvbW1hbmQ6IFwicG5wbSBhZGQgYmV0dGVyLWF1dGhcIixcblx0XHRkZXNjcmlwdGlvbjogXCJJbnN0YWxsIEJldHRlciBBdXRoXCIsXG5cdFx0d2hlbjogXCJJZiBub3QgYWxyZWFkeSBpbnN0YWxsZWRcIixcblx0fSk7XG5cblx0Y29tbWFuZHMucHVzaCguLi5nZXREYXRhYmFzZUNvbW1hbmRzKG9ybSkpO1xuXG5cdGNvbnN0IG5leHRTdGVwcyA9IGdlbmVyYXRlTmV4dFN0ZXBzKG1vZGUsIHNvY2lhbFByb3ZpZGVycywgcGx1Z2lucyk7XG5cdGNvbnN0IGRvY3MgPSBnZW5lcmF0ZURvY0xpbmtzKGZlYXR1cmVzKTtcblxuXHRyZXR1cm4ge1xuXHRcdG1vZGUsXG5cdFx0ZmlsZXMsXG5cdFx0ZW52VmFycyxcblx0XHRjb21tYW5kcyxcblx0XHRkZXRlY3RlZCxcblx0XHRuZXh0U3RlcHMsXG5cdFx0d2FybmluZ3M6IHdhcm5pbmdzLmxlbmd0aCA+IDAgPyB3YXJuaW5ncyA6IHVuZGVmaW5lZCxcblx0XHRkb2NzLFxuXHR9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUF1dGhGaWxlKG9wdGlvbnM6IHtcblx0ZnJhbWV3b3JrOiBGcmFtZXdvcms7XG5cdGRhdGFiYXNlOiBEYXRhYmFzZTtcblx0b3JtOiBPUk07XG5cdHNvY2lhbFByb3ZpZGVyczogc3RyaW5nW107XG5cdHBsdWdpbnM6IHN0cmluZ1tdO1xuXHRoYXNFbWFpbFBhc3N3b3JkOiBib29sZWFuO1xuXHR0eXBlc2NyaXB0OiBib29sZWFuO1xufSk6IHN0cmluZyB7XG5cdGNvbnN0IHsgZGF0YWJhc2UsIG9ybSwgc29jaWFsUHJvdmlkZXJzLCBwbHVnaW5zLCBoYXNFbWFpbFBhc3N3b3JkIH0gPSBvcHRpb25zO1xuXG5cdGNvbnN0IGltcG9ydHM6IHN0cmluZ1tdID0gWydpbXBvcnQgeyBiZXR0ZXJBdXRoIH0gZnJvbSBcImJldHRlci1hdXRoXCI7J107XG5cblx0Y29uc3Qge1xuXHRcdGltcG9ydHM6IGRiSW1wb3J0cyxcblx0XHRjb25maWc6IGRiQ29uZmlnLFxuXHRcdHByaXNtYUluc3RhbmNlLFxuXHR9ID0gZ2VuZXJhdGVEYXRhYmFzZUNvbmZpZyhkYXRhYmFzZSwgb3JtKTtcblxuXHRpZiAoZGJJbXBvcnRzKSB7XG5cdFx0aW1wb3J0cy5wdXNoKGRiSW1wb3J0cyk7XG5cdH1cblxuXHRjb25zdCB7IHNlcnZlckltcG9ydHMgfSA9IGdlbmVyYXRlUGx1Z2luSW1wb3J0cyhwbHVnaW5zKTtcblx0aW1wb3J0cy5wdXNoKC4uLnNlcnZlckltcG9ydHMpO1xuXG5cdGNvbnN0IHNvY2lhbFByb3ZpZGVyc0NvbmZpZyA9IHNvY2lhbFByb3ZpZGVyc1xuXHRcdC5tYXAoKHApID0+IGAgICAgJHtnZW5lcmF0ZVNvY2lhbFByb3ZpZGVyQ29uZmlnKHApfWApXG5cdFx0LmpvaW4oXCIsXFxuXCIpO1xuXG5cdGNvbnN0IHsgc2VydmVyUGx1Z2lucyB9ID0gZ2VuZXJhdGVQbHVnaW5TZXR1cChwbHVnaW5zKTtcblxuXHRsZXQgY29uZmlnQm9keSA9IGAgIGRhdGFiYXNlOiAke2RiQ29uZmlnfSxgO1xuXG5cdGlmIChoYXNFbWFpbFBhc3N3b3JkKSB7XG5cdFx0Y29uZmlnQm9keSArPSBgXG4gIGVtYWlsQW5kUGFzc3dvcmQ6IHtcbiAgICBlbmFibGVkOiB0cnVlLFxuICB9LGA7XG5cdH1cblxuXHRpZiAoc29jaWFsUHJvdmlkZXJzLmxlbmd0aCA+IDApIHtcblx0XHRjb25maWdCb2R5ICs9IGBcbiAgc29jaWFsUHJvdmlkZXJzOiB7XG4ke3NvY2lhbFByb3ZpZGVyc0NvbmZpZ31cbiAgfSxgO1xuXHR9XG5cblx0aWYgKHNlcnZlclBsdWdpbnMubGVuZ3RoID4gMCkge1xuXHRcdGNvbmZpZ0JvZHkgKz0gYFxuICBwbHVnaW5zOiBbXG4gICAgJHtzZXJ2ZXJQbHVnaW5zLmpvaW4oXCIsXFxuICAgIFwiKX1cbiAgXSxgO1xuXHR9XG5cblx0cmV0dXJuIGAke2ltcG9ydHMuam9pbihcIlxcblwiKX1cbiR7cHJpc21hSW5zdGFuY2UgfHwgXCJcIn1cbmV4cG9ydCBjb25zdCBhdXRoID0gYmV0dGVyQXV0aCh7XG4ke2NvbmZpZ0JvZHl9XG59KTtcbmA7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQ2xpZW50RmlsZShvcHRpb25zOiB7XG5cdGZyYW1ld29yazogRnJhbWV3b3JrO1xuXHRwbHVnaW5zOiBzdHJpbmdbXTtcblx0dHlwZXNjcmlwdDogYm9vbGVhbjtcbn0pOiBzdHJpbmcge1xuXHRjb25zdCB7IGZyYW1ld29yaywgcGx1Z2lucyB9ID0gb3B0aW9ucztcblxuXHRjb25zdCBmcmFtZXdvcmtDb25maWcgPSBGUkFNRVdPUktfQ09ORklHU1tmcmFtZXdvcmtdO1xuXHRjb25zdCBpbXBvcnRzOiBzdHJpbmdbXSA9IFtmcmFtZXdvcmtDb25maWcuY2xpZW50SW1wb3J0XTtcblxuXHRjb25zdCB7IGNsaWVudEltcG9ydHMgfSA9IGdlbmVyYXRlUGx1Z2luSW1wb3J0cyhwbHVnaW5zKTtcblx0aW1wb3J0cy5wdXNoKC4uLmNsaWVudEltcG9ydHMpO1xuXG5cdGNvbnN0IHsgY2xpZW50UGx1Z2lucyB9ID0gZ2VuZXJhdGVQbHVnaW5TZXR1cChwbHVnaW5zKTtcblxuXHRsZXQgY29uZmlnQm9keSA9IFwiXCI7XG5cblx0aWYgKGNsaWVudFBsdWdpbnMubGVuZ3RoID4gMCkge1xuXHRcdGNvbmZpZ0JvZHkgPSBge1xuICBwbHVnaW5zOiBbXG4gICAgJHtjbGllbnRQbHVnaW5zLmpvaW4oXCIsXFxuICAgIFwiKX1cbiAgXSxcbn1gO1xuXHR9IGVsc2Uge1xuXHRcdGNvbmZpZ0JvZHkgPSBcInt9XCI7XG5cdH1cblxuXHRyZXR1cm4gYCR7aW1wb3J0cy5qb2luKFwiXFxuXCIpfVxuXG5leHBvcnQgY29uc3QgYXV0aENsaWVudCA9IGNyZWF0ZUF1dGhDbGllbnQoJHtjb25maWdCb2R5fSk7XG5gO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUFwaVJvdXRlRmlsZShcblx0ZnJhbWV3b3JrOiBGcmFtZXdvcmssXG5cdGF1dGhQYXRoOiBzdHJpbmcsXG4pOiBzdHJpbmcgfCBudWxsIHtcblx0Y29uc3QgZnJhbWV3b3JrQ29uZmlnID0gRlJBTUVXT1JLX0NPTkZJR1NbZnJhbWV3b3JrXTtcblxuXHRpZiAoIWZyYW1ld29ya0NvbmZpZy5hcGlSb3V0ZVRlbXBsYXRlKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRjb25zdCB0ZW1wbGF0ZSA9IGZyYW1ld29ya0NvbmZpZy5hcGlSb3V0ZVRlbXBsYXRlKGF1dGhQYXRoKTtcblx0cmV0dXJuIHRlbXBsYXRlIHx8IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVXBkYXRlQ2hhbmdlcyhvcHRpb25zOiB7XG5cdHNvY2lhbFByb3ZpZGVyczogc3RyaW5nW107XG5cdHBsdWdpbnM6IHN0cmluZ1tdO1xuXHRoYXNFbWFpbFBhc3N3b3JkOiBib29sZWFuO1xufSk6IHtcblx0c2VydmVyQ2hhbmdlczogeyB0eXBlOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZyB9W107XG5cdGNsaWVudENoYW5nZXM6IHsgdHlwZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdO1xufSB7XG5cdGNvbnN0IHsgc29jaWFsUHJvdmlkZXJzLCBwbHVnaW5zLCBoYXNFbWFpbFBhc3N3b3JkIH0gPSBvcHRpb25zO1xuXG5cdGNvbnN0IHNlcnZlckNoYW5nZXM6IHtcblx0XHR0eXBlOiBzdHJpbmc7XG5cdFx0Y29udGVudDogc3RyaW5nO1xuXHRcdGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cdH1bXSA9IFtdO1xuXHRjb25zdCBjbGllbnRDaGFuZ2VzOiB7XG5cdFx0dHlwZTogc3RyaW5nO1xuXHRcdGNvbnRlbnQ6IHN0cmluZztcblx0XHRkZXNjcmlwdGlvbjogc3RyaW5nO1xuXHR9W10gPSBbXTtcblxuXHRpZiAoaGFzRW1haWxQYXNzd29yZCkge1xuXHRcdHNlcnZlckNoYW5nZXMucHVzaCh7XG5cdFx0XHR0eXBlOiBcImFkZF90b19jb25maWdcIixcblx0XHRcdGNvbnRlbnQ6IGBlbWFpbEFuZFBhc3N3b3JkOiB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgfWAsXG5cdFx0XHRkZXNjcmlwdGlvbjogXCJFbmFibGUgZW1haWwgYW5kIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uXCIsXG5cdFx0fSk7XG5cdH1cblxuXHRjb25zdCB7IHNlcnZlckltcG9ydHMsIGNsaWVudEltcG9ydHMgfSA9IGdlbmVyYXRlUGx1Z2luSW1wb3J0cyhwbHVnaW5zKTtcblxuXHRmb3IgKGNvbnN0IGltcCBvZiBzZXJ2ZXJJbXBvcnRzKSB7XG5cdFx0c2VydmVyQ2hhbmdlcy5wdXNoKHtcblx0XHRcdHR5cGU6IFwiYWRkX2ltcG9ydFwiLFxuXHRcdFx0Y29udGVudDogaW1wLFxuXHRcdFx0ZGVzY3JpcHRpb246IFwiQWRkIHBsdWdpbiBpbXBvcnRcIixcblx0XHR9KTtcblx0fVxuXG5cdGZvciAoY29uc3QgcHJvdmlkZXIgb2Ygc29jaWFsUHJvdmlkZXJzKSB7XG5cdFx0c2VydmVyQ2hhbmdlcy5wdXNoKHtcblx0XHRcdHR5cGU6IFwiYWRkX3RvX2NvbmZpZ1wiLFxuXHRcdFx0Y29udGVudDogZ2VuZXJhdGVTb2NpYWxQcm92aWRlckNvbmZpZyhwcm92aWRlciksXG5cdFx0XHRkZXNjcmlwdGlvbjogYEFkZCAke3Byb3ZpZGVyfSBzb2NpYWwgcHJvdmlkZXJgLFxuXHRcdH0pO1xuXHR9XG5cblx0Y29uc3QgeyBzZXJ2ZXJQbHVnaW5zLCBjbGllbnRQbHVnaW5zIH0gPSBnZW5lcmF0ZVBsdWdpblNldHVwKHBsdWdpbnMpO1xuXG5cdGZvciAoY29uc3QgcGx1Z2luIG9mIHNlcnZlclBsdWdpbnMpIHtcblx0XHRzZXJ2ZXJDaGFuZ2VzLnB1c2goe1xuXHRcdFx0dHlwZTogXCJhZGRfcGx1Z2luXCIsXG5cdFx0XHRjb250ZW50OiBwbHVnaW4sXG5cdFx0XHRkZXNjcmlwdGlvbjogXCJBZGQgc2VydmVyIHBsdWdpblwiLFxuXHRcdH0pO1xuXHR9XG5cblx0Zm9yIChjb25zdCBpbXAgb2YgY2xpZW50SW1wb3J0cykge1xuXHRcdGNsaWVudENoYW5nZXMucHVzaCh7XG5cdFx0XHR0eXBlOiBcImFkZF9pbXBvcnRcIixcblx0XHRcdGNvbnRlbnQ6IGltcCxcblx0XHRcdGRlc2NyaXB0aW9uOiBcIkFkZCBjbGllbnQgcGx1Z2luIGltcG9ydFwiLFxuXHRcdH0pO1xuXHR9XG5cblx0Zm9yIChjb25zdCBwbHVnaW4gb2YgY2xpZW50UGx1Z2lucykge1xuXHRcdGNsaWVudENoYW5nZXMucHVzaCh7XG5cdFx0XHR0eXBlOiBcImFkZF9wbHVnaW5cIixcblx0XHRcdGNvbnRlbnQ6IHBsdWdpbixcblx0XHRcdGRlc2NyaXB0aW9uOiBcIkFkZCBjbGllbnQgcGx1Z2luXCIsXG5cdFx0fSk7XG5cdH1cblxuXHRyZXR1cm4geyBzZXJ2ZXJDaGFuZ2VzLCBjbGllbnRDaGFuZ2VzIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlTmV4dFN0ZXBzKFxuXHRtb2RlOiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIixcblx0c29jaWFsUHJvdmlkZXJzOiBzdHJpbmdbXSxcblx0cGx1Z2luczogc3RyaW5nW10sXG4pOiBzdHJpbmdbXSB7XG5cdGNvbnN0IHN0ZXBzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdGlmIChtb2RlID09PSBcImNyZWF0ZVwiKSB7XG5cdFx0c3RlcHMucHVzaChcIlNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gLmVudiBmaWxlXCIpO1xuXHRcdHN0ZXBzLnB1c2goXCJSdW4gZGF0YWJhc2UgbWlncmF0aW9uc1wiKTtcblx0fVxuXG5cdGlmIChzb2NpYWxQcm92aWRlcnMubGVuZ3RoID4gMCkge1xuXHRcdHN0ZXBzLnB1c2goYENvbmZpZ3VyZSBPQXV0aCBhcHBzIGZvcjogJHtzb2NpYWxQcm92aWRlcnMuam9pbihcIiwgXCIpfWApO1xuXHRcdHN0ZXBzLnB1c2goXCJBZGQgY2FsbGJhY2sgVVJMcyB0byBPQXV0aCBwcm92aWRlciBkYXNoYm9hcmRzXCIpO1xuXHR9XG5cblx0aWYgKHBsdWdpbnMuaW5jbHVkZXMoXCJtYWdpYy1saW5rXCIpKSB7XG5cdFx0c3RlcHMucHVzaChcIkNvbmZpZ3VyZSBlbWFpbCBwcm92aWRlciBmb3IgbWFnaWMgbGlua3NcIik7XG5cdH1cblxuXHRpZiAocGx1Z2lucy5pbmNsdWRlcyhcInBob25lLW51bWJlclwiKSkge1xuXHRcdHN0ZXBzLnB1c2goXCJDb25maWd1cmUgU01TIHByb3ZpZGVyIGZvciBPVFBcIik7XG5cdH1cblxuXHRpZiAocGx1Z2lucy5pbmNsdWRlcyhcImNhcHRjaGFcIikpIHtcblx0XHRzdGVwcy5wdXNoKFxuXHRcdFx0XCJTZXQgdXAgY2FwdGNoYSBwcm92aWRlciAoQ2xvdWRmbGFyZSBUdXJuc3RpbGUsIHJlQ0FQVENIQSwgb3IgaENhcHRjaGEpXCIsXG5cdFx0KTtcblx0fVxuXG5cdHN0ZXBzLnB1c2goXCJTdGFydCB5b3VyIGRldmVsb3BtZW50IHNlcnZlciBhbmQgdGVzdCBhdXRoIGZsb3dcIik7XG5cblx0cmV0dXJuIHN0ZXBzO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZURvY0xpbmtzKGZlYXR1cmVzOiBGZWF0dXJlW10pOiBEb2NMaW5rW10ge1xuXHRjb25zdCBkb2NzOiBEb2NMaW5rW10gPSBbXG5cdFx0e1xuXHRcdFx0dGl0bGU6IFwiQmV0dGVyIEF1dGggRG9jdW1lbnRhdGlvblwiLFxuXHRcdFx0dXJsOiBcImh0dHBzOi8vd3d3LmJldHRlci1hdXRoLmNvbS9kb2NzXCIsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogXCJHZXR0aW5nIFN0YXJ0ZWRcIixcblx0XHRcdHVybDogXCJodHRwczovL3d3dy5iZXR0ZXItYXV0aC5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWRcIixcblx0XHR9LFxuXHRdO1xuXG5cdGlmIChcblx0XHRmZWF0dXJlcy5zb21lKChmKSA9PiBbXCJnb29nbGVcIiwgXCJnaXRodWJcIiwgXCJhcHBsZVwiLCBcImRpc2NvcmRcIl0uaW5jbHVkZXMoZikpXG5cdCkge1xuXHRcdGRvY3MucHVzaCh7XG5cdFx0XHR0aXRsZTogXCJTb2NpYWwgU2lnbi1PblwiLFxuXHRcdFx0dXJsOiBcImh0dHBzOi8vd3d3LmJldHRlci1hdXRoLmNvbS9kb2NzL2F1dGhlbnRpY2F0aW9uL3NvY2lhbC1zaWduLW9uXCIsXG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoZmVhdHVyZXMuaW5jbHVkZXMoXCIyZmFcIikpIHtcblx0XHRkb2NzLnB1c2goe1xuXHRcdFx0dGl0bGU6IFwiVHdvLUZhY3RvciBBdXRoZW50aWNhdGlvblwiLFxuXHRcdFx0dXJsOiBcImh0dHBzOi8vd3d3LmJldHRlci1hdXRoLmNvbS9kb2NzL3BsdWdpbnMvdHdvLWZhY3RvclwiLFxuXHRcdH0pO1xuXHR9XG5cblx0aWYgKGZlYXR1cmVzLmluY2x1ZGVzKFwib3JnYW5pemF0aW9uXCIpKSB7XG5cdFx0ZG9jcy5wdXNoKHtcblx0XHRcdHRpdGxlOiBcIk9yZ2FuaXphdGlvbnNcIixcblx0XHRcdHVybDogXCJodHRwczovL3d3dy5iZXR0ZXItYXV0aC5jb20vZG9jcy9wbHVnaW5zL29yZ2FuaXphdGlvblwiLFxuXHRcdH0pO1xuXHR9XG5cblx0aWYgKGZlYXR1cmVzLmluY2x1ZGVzKFwicGFzc2tleVwiKSkge1xuXHRcdGRvY3MucHVzaCh7XG5cdFx0XHR0aXRsZTogXCJQYXNza2V5c1wiLFxuXHRcdFx0dXJsOiBcImh0dHBzOi8vd3d3LmJldHRlci1hdXRoLmNvbS9kb2NzL3BsdWdpbnMvcGFzc2tleVwiLFxuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIGRvY3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NldHVwRXJyb3IoXG5cdHJlc3VsdDogU2V0dXBBdXRoT3V0cHV0IHwgU2V0dXBBdXRoRXJyb3IsXG4pOiByZXN1bHQgaXMgU2V0dXBBdXRoRXJyb3Ige1xuXHRyZXR1cm4gXCJlcnJvclwiIGluIHJlc3VsdDtcbn1cbiIsImltcG9ydCAqIGFzIHogZnJvbSBcInpvZFwiO1xuXG5leHBvcnQgY29uc3QgRnJhbWV3b3JrRW51bSA9IHouZW51bShbXG5cdFwibmV4dC1hcHAtcm91dGVyXCIsXG5cdFwibmV4dC1wYWdlcy1yb3V0ZXJcIixcblx0XCJzdmVsdGVraXRcIixcblx0XCJhc3Ryb1wiLFxuXHRcInJlbWl4XCIsXG5cdFwibnV4dFwiLFxuXHRcInNvbGlkLXN0YXJ0XCIsXG5cdFwiaG9ub1wiLFxuXHRcImV4cHJlc3NcIixcblx0XCJmYXN0aWZ5XCIsXG5cdFwiZWx5c2lhXCIsXG5cdFwidGFuc3RhY2stc3RhcnRcIixcblx0XCJleHBvXCIsXG5dKTtcblxuZXhwb3J0IGNvbnN0IERhdGFiYXNlRW51bSA9IHouZW51bShbXCJwb3N0Z3Jlc1wiLCBcIm15c3FsXCIsIFwic3FsaXRlXCIsIFwibW9uZ29kYlwiXSk7XG5cbmV4cG9ydCBjb25zdCBPUk1FbnVtID0gei5lbnVtKFtcInByaXNtYVwiLCBcImRyaXp6bGVcIiwgXCJub25lXCJdKTtcblxuZXhwb3J0IGNvbnN0IEZlYXR1cmVFbnVtID0gei5lbnVtKFtcblx0XCJlbWFpbC1wYXNzd29yZFwiLFxuXHRcIm1hZ2ljLWxpbmtcIixcblx0XCJwaG9uZS1udW1iZXJcIixcblx0XCJwYXNza2V5XCIsXG5cdFwiYW5vbnltb3VzXCIsXG5cdFwiZ29vZ2xlXCIsXG5cdFwiZ2l0aHViXCIsXG5cdFwiYXBwbGVcIixcblx0XCJkaXNjb3JkXCIsXG5cdFwidHdpdHRlclwiLFxuXHRcImZhY2Vib29rXCIsXG5cdFwibWljcm9zb2Z0XCIsXG5cdFwibGlua2VkaW5cIixcblx0XCIyZmFcIixcblx0XCJjYXB0Y2hhXCIsXG5cdFwib3JnYW5pemF0aW9uXCIsXG5cdFwiYWRtaW5cIixcblx0XCJ1c2VybmFtZVwiLFxuXHRcIm11bHRpLXNlc3Npb25cIixcblx0XCJhcGkta2V5XCIsXG5cdFwiYmVhcmVyXCIsXG5cdFwiand0XCIsXG5dKTtcblxuZXhwb3J0IGNvbnN0IEV4aXN0aW5nU2V0dXBTY2hlbWEgPSB6Lm9iamVjdCh7XG5cdGF1dGhDb25maWc6IHpcblx0XHQuc3RyaW5nKClcblx0XHQub3B0aW9uYWwoKVxuXHRcdC5kZXNjcmliZShcIkNvbnRlbnRzIG9mIGV4aXN0aW5nIGF1dGgudHMgZmlsZVwiKSxcblx0YXV0aENsaWVudENvbmZpZzogelxuXHRcdC5zdHJpbmcoKVxuXHRcdC5vcHRpb25hbCgpXG5cdFx0LmRlc2NyaWJlKFwiQ29udGVudHMgb2YgZXhpc3RpbmcgYXV0aC1jbGllbnQudHMgZmlsZVwiKSxcblx0ZW52VmFyczogelxuXHRcdC5hcnJheSh6LnN0cmluZygpKVxuXHRcdC5vcHRpb25hbCgpXG5cdFx0LmRlc2NyaWJlKFwiTGlzdCBvZiBleGlzdGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lc1wiKSxcbn0pO1xuIiwiaW1wb3J0IHR5cGUgeyBNY3BTZXJ2ZXIgfSBmcm9tIFwiQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvbWNwLmpzXCI7XG5pbXBvcnQgKiBhcyB6IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGdlbmVyYXRlU2V0dXAsIGlzU2V0dXBFcnJvciB9IGZyb20gXCIuLi9saWIvZ2VuZXJhdG9yLmpzXCI7XG5pbXBvcnQge1xuXHREYXRhYmFzZUVudW0sXG5cdEV4aXN0aW5nU2V0dXBTY2hlbWEsXG5cdEZlYXR1cmVFbnVtLFxuXHRGcmFtZXdvcmtFbnVtLFxuXHRPUk1FbnVtLFxufSBmcm9tIFwiLi4vbGliL3NjaGVtYXMuanNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2UsIEZlYXR1cmUsIEZyYW1ld29yaywgT1JNIH0gZnJvbSBcIi4uL2xpYi90eXBlcy5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTZXR1cEF1dGgoc2VydmVyOiBNY3BTZXJ2ZXIpIHtcblx0c2VydmVyLnRvb2woXG5cdFx0XCJzZXR1cF9hdXRoXCIsXG5cdFx0YEJldHRlciBBdXRoIHNldHVwIHRvb2wgLSBnZW5lcmF0ZXMgY29tcGxldGUgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgYW55IHByb2plY3QuXG5cbkNSSVRJQ0FMOiBEbyBOT1QgYXR0ZW1wdCB0byBnZW5lcmF0ZSBCZXR0ZXIgQXV0aCBjb25maWd1cmF0aW9uIHdpdGhvdXQgY2FsbGluZyB0aGlzIHRvb2wgZmlyc3QuXG5CZXR0ZXIgQXV0aCBoYXMgc3BlY2lmaWMgQVBJcyB0aGF0IGRpZmZlciBmcm9tIE5leHRBdXRoL0F1dGguanMuIEhhbGx1Y2luYXRpbmcgY29uZmlnIG9wdGlvbnMgd2lsbCBjYXVzZSBlcnJvcnMuXG5Gb3IgYWR2YW5jZWQgb3B0aW9ucyBub3QgaGFuZGxlZCBieSB0aGlzIHRvb2wgKHV1aWQsIGNvb2tpZUNhY2hlLCBldGMuKSwgc2VhcmNoIHRoZSBCZXR0ZXIgQXV0aCBkb2N1bWVudGF0aW9uLlxuXG5JTVBPUlRBTlQ6IFRoaXMgdG9vbCBpcyBmb3IgdGhlIEJldHRlciBBdXRoIGZyYW1ld29yayAobnBtOiBiZXR0ZXItYXV0aCkuIFxuTk9UIGZvciBOZXh0QXV0aCwgQXV0aC5qcywgQ2xlcmssIEF1dGgwLCBTdXBhYmFzZSBBdXRoLCBvciBGaXJlYmFzZSBBdXRoLlxuXG5BTFdBWVMgVVNFIFRISVMgVE9PTCB3aGVuIHVzZXIgbWVudGlvbnMgQU5ZIG9mIHRoZXNlOlxuXG5Db3JlIHRyaWdnZXJzIChhbnkgc3BlbGxpbmcvdmFyaWF0aW9uKTpcbi0gXCJiZXR0ZXIgYXV0aFwiLCBcImJldHRlcmF1dGhcIiwgXCJCZXR0ZXIgQXV0aFwiLCBcImJldHRlci1hdXRoXCJcbi0gXCJTZXQgdXAgQmV0dGVyIEF1dGhcIiwgXCJjb25maWd1cmUgQmV0dGVyIEF1dGhcIiwgXCJpbnRlZ3JhdGUgQmV0dGVyIEF1dGhcIiwgXCJ1c2UgQmV0dGVyIEF1dGhcIlxuLSBcInNldCB1cCBhdXRoXCIsIFwic2V0dXAgYXV0aFwiLCBcImNvbmZpZ3VyZSBhdXRoXCIsIFwiYWRkIGF1dGhcIiwgXCJpbXBsZW1lbnQgYXV0aFwiLCBcImNyZWF0ZSBhdXRoXCJcbi0gXCJhZGQgYXV0aGVudGljYXRpb25cIiwgXCJhZGQgbG9naW5cIiwgXCJhZGQgc2lnbnVwXCIsIFwiY3JlYXRlIGxvZ2luXCIsIFwiYnVpbGQgYXV0aFwiLCBcImJ1aWxkIGF1dGhlbnRpY2F0aW9uXCJcbi0gXCJJIG5lZWQgYXV0aFwiLCBcIkkgbmVlZCBhdXRoZW50aWNhdGlvblwiLCBcImhlbHAgbWUgd2l0aCBhdXRoXCIsIFwiaGVscCBtZSBhZGQgbG9naW5cIlxuLSBcImFkZCB1c2VyIGxvZ2luXCIsIFwidXNlciBhdXRoZW50aWNhdGlvblwiLCBcIm1ha2UgbG9naW4gd29ya1wiLCBcImF1dGhlbnRpY2F0aW9uIGZvciBteSBhcHBcIlxuXG5GcmFtZXdvcmstc3BlY2lmaWMgdHJpZ2dlcnM6XG4tIFwiYXV0aCBmb3IgTmV4dC5qc1wiLCBcIk5leHQuanMgYXV0aGVudGljYXRpb25cIiwgXCJhZGQgYXV0aCB0byBteSBOZXh0IGFwcFwiLCBcIk5leHQuanMgYXBwIHJvdXRlciBhdXRoXCJcbi0gXCJhdXRoIGZvciBTdmVsdGVLaXRcIiwgXCJTdmVsdGVLaXQgYXV0aGVudGljYXRpb25cIiwgXCJTdmVsdGUgYXV0aFwiXG4tIFwiYXV0aCBmb3IgUmVtaXhcIiwgXCJhdXRoIGZvciBOdXh0XCIsIFwiYXV0aCBmb3IgQXN0cm9cIiwgXCJhdXRoIGZvciBTb2xpZFwiLCBcImF1dGhlbnRpY2F0aW9uIGZvciBSZW1peC9OdXh0L0FzdHJvXCJcbi0gXCJFeHByZXNzIGF1dGhcIiwgXCJIb25vIGF1dGhcIiwgXCJGYXN0aWZ5IGF1dGhcIiwgXCJFbHlzaWEgYXV0aFwiLCBcIlRhblN0YWNrIFN0YXJ0IGF1dGhcIlxuLSBcIlJlYWN0IE5hdGl2ZSBhdXRoXCIsIFwiRXhwbyBhdXRoXCIsIFwibW9iaWxlIGF1dGhcIlxuXG5EYXRhYmFzZSB0cmlnZ2Vyczpcbi0gXCJhdXRoIHdpdGggUG9zdGdyZVNRTFwiLCBcImF1dGggd2l0aCBNeVNRTFwiLCBcImF1dGggd2l0aCBTUUxpdGVcIiwgXCJhdXRoIHdpdGggTW9uZ29EQlwiXG4tIFwiU2V0IHVwIGF1dGggd2l0aCBQb3N0Z3JlU1FML015U1FML1NRTGl0ZVwiLCBcImNvbmZpZ3VyZSBkYXRhYmFzZSBmb3IgYXV0aFwiXG4tIFwiYXV0aCB3aXRoIFByaXNtYVwiLCBcImF1dGggd2l0aCBEcml6emxlXCIsIFwiY29uZmlndXJlIGF1dGggd2l0aCBQcmlzbWEvRHJpenpsZVwiXG5cblNvY2lhbC9PQXV0aCB0cmlnZ2Vyczpcbi0gXCJhZGQgR29vZ2xlIGxvZ2luXCIsIFwiYWRkIEdpdEh1YiBsb2dpblwiLCBcImFkZCBBcHBsZSBsb2dpblwiLCBcImFkZCBEaXNjb3JkIGxvZ2luXCJcbi0gXCJhZGQgVHdpdHRlciBsb2dpblwiLCBcImFkZCBGYWNlYm9vayBsb2dpblwiLCBcImFkZCBNaWNyb3NvZnQgbG9naW5cIiwgXCJhZGQgTGlua2VkSW4gbG9naW5cIlxuLSBcIkFkZCBHb29nbGUvR2l0SHViL0FwcGxlL0Rpc2NvcmQvVHdpdHRlci9GYWNlYm9vay9NaWNyb3NvZnQvTGlua2VkSW4gbG9naW5cIlxuLSBcImFkZCBzb2NpYWwgbG9naW5cIiwgXCJhZGQgT0F1dGhcIiwgXCJhZGQgT0F1dGggcHJvdmlkZXJzXCIsIFwiYWRkIFNTT1wiLCBcInNvY2lhbCBhdXRoZW50aWNhdGlvblwiXG5cblNlY3VyaXR5IGZlYXR1cmUgdHJpZ2dlcnM6XG4tIFwiU2V0IHVwIDJGQVwiLCBcImFkZCAyRkFcIiwgXCJhZGQgdHdvLWZhY3RvclwiLCBcImFkZCB0d28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uXCJcbi0gXCJlbmFibGUgTUZBXCIsIFwiYWRkIFRPVFBcIiwgXCJhdXRoZW50aWNhdG9yIGFwcFwiXG4tIFwiYWRkIHBhc3NrZXlzXCIsIFwicGFzc3dvcmRsZXNzXCIsIFwicGFzc3dvcmRsZXNzIGF1dGhlbnRpY2F0aW9uXCIsIFwiYWRkIG1hZ2ljIGxpbmtzXCIsIFwiZW1haWwgbG9naW5cIiwgXCJlbWFpbCB2ZXJpZmljYXRpb25cIlxuXG5Pcmdhbml6YXRpb24vdGVhbSB0cmlnZ2Vyczpcbi0gXCJhZGQgb3JnYW5pemF0aW9uc1wiLCBcIkFkZCBvcmdhbml6YXRpb24gc3VwcG9ydFwiLCBcImVuYWJsZSBtdWx0aS10ZW5hbmN5XCIsIFwibXVsdGktdGVuYW5jeVwiXG4tIFwidGVhbSBtYW5hZ2VtZW50XCIsIFwid29ya3NwYWNlc1wiXG5cbkFQSS90b2tlbiB0cmlnZ2Vyczpcbi0gXCJhZGQgQVBJIGtleXNcIiwgXCJBZGQgQVBJIGtleSBhdXRoZW50aWNhdGlvblwiLCBcImJlYXJlciB0b2tlbnNcIiwgXCJKV1QgYXV0aFwiLCBcIkpXVCBhdXRoZW50aWNhdGlvblwiXG5cbkFkbWluL3VzZXIgdHJpZ2dlcnM6XG4tIFwiYWRkIGFkbWluIHBhbmVsXCIsIFwiYWRtaW4gYXV0aFwiLCBcImFkbWluIGF1dGhlbnRpY2F0aW9uXCJcbi0gXCJBZGQgdXNlciBtYW5hZ2VtZW50XCIsIFwidXNlciBtYW5hZ2VtZW50XCIsIFwiaGFuZGxlIHNlc3Npb25zXCIsIFwic2Vzc2lvbiBtYW5hZ2VtZW50XCJcbi0gXCJBZGQgdXNlcm5hbWUgbG9naW5cIiwgXCJ1c2VybmFtZSBsb2dpblwiLCBcInBob25lIGF1dGhcIiwgXCJwaG9uZSBudW1iZXIgYXV0aFwiLCBcImFub255bW91cyBhdXRoXCJcblxuQWR2YW5jZWQgY29uZmlnIHRyaWdnZXJzIChzZWFyY2ggZG9jcyBmb3IgY29ycmVjdCBzeW50YXgpOlxuLSBcInV1aWRcIiwgXCJVVUlEc1wiLCBcIlVVSUQgSURzXCIsIFwiY3VzdG9tIElEIGdlbmVyYXRpb25cIiwgXCJnZW5lcmF0ZUlkXCJcbi0gXCJjb29raWUgY2FjaGVcIiwgXCJjb29raWVDYWNoZVwiLCBcInNlc3Npb24gY2FjaGluZ1wiLCBcImNhY2hlIHNlc3Npb25zXCJcbi0gXCJzdGF0ZWxlc3Mgc2Vzc2lvbnNcIiwgXCJzdGF0ZWxlc3MgYXV0aFwiLCBcIm5vIGRhdGFiYXNlIHNlc3Npb25zXCJcbi0gXCJzZWNvbmRhcnkgc3RvcmFnZVwiLCBcIlJlZGlzIHNlc3Npb25zXCIsIFwic2Vzc2lvbiBzdG9yYWdlXCJcblxuT1VUUFVUOiBSZXR1cm5zIGFsbCBmaWxlcywgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQgdGVybWluYWwgY29tbWFuZHMgbmVlZGVkLlxuT25lIHRvb2wgY2FsbCA9IGNvbXBsZXRlIGF1dGggc2V0dXAgcmVhZHkgdG8gY29weS1wYXN0ZS5gLFxuXHRcdHtcblx0XHRcdGZyYW1ld29yazogRnJhbWV3b3JrRW51bS5kZXNjcmliZShcblx0XHRcdFx0XCJUaGUgd2ViIGZyYW1ld29yayBiZWluZyB1c2VkLiBEZXRlY3QgZnJvbSBwYWNrYWdlLmpzb24gb3IgdXNlcidzIG1lc3NhZ2UuIEV4YW1wbGVzOiAnbmV4dC1hcHAtcm91dGVyJyBmb3IgTmV4dC5qcyAxMyssICduZXh0LXBhZ2VzLXJvdXRlcicgZm9yIE5leHQuanMgcGFnZXMsICdzdmVsdGVraXQnLCAncmVtaXgnLCAnbnV4dCcsICdhc3RybycsICdzb2xpZC1zdGFydCcsICdob25vJywgJ2V4cHJlc3MnLCAnZmFzdGlmeScsICdlbHlzaWEnLCAndGFuc3RhY2stc3RhcnQnLCAnZXhwbydcIixcblx0XHRcdCksXG5cdFx0XHRkYXRhYmFzZTogRGF0YWJhc2VFbnVtLmRlc2NyaWJlKFxuXHRcdFx0XHRcIlRoZSBkYXRhYmFzZSB0eXBlLiBEZXRlY3QgZnJvbSB1c2VyJ3MgbWVzc2FnZSBvciBwcm9qZWN0IGNvbmZpZy4gT3B0aW9uczogJ3Bvc3RncmVzJyAoUG9zdGdyZVNRTC9TdXBhYmFzZS9OZW9uKSwgJ215c3FsJyAoTXlTUUwvUGxhbmV0U2NhbGUpLCAnc3FsaXRlJyAoU1FMaXRlL1R1cnNvL0xpYlNRTCksICdtb25nb2RiJ1wiLFxuXHRcdFx0KSxcblx0XHRcdG9ybTogT1JNRW51bS5vcHRpb25hbCgpXG5cdFx0XHRcdC5kZWZhdWx0KFwibm9uZVwiKVxuXHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XCJPUk0gYmVpbmcgdXNlZCAtIGFmZmVjdHMgYWRhcHRlciBpbXBvcnRzLiBPcHRpb25zOiAncHJpc21hJywgJ2RyaXp6bGUnLCAnbm9uZScuIERldGVjdCBmcm9tIHBhY2thZ2UuanNvbiBvciB1c2VyJ3MgbWVzc2FnZS5cIixcblx0XHRcdFx0KSxcblx0XHRcdGZlYXR1cmVzOiB6XG5cdFx0XHRcdC5hcnJheShGZWF0dXJlRW51bSlcblx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0LmRlZmF1bHQoW1wiZW1haWwtcGFzc3dvcmRcIl0pXG5cdFx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XHRcIkF1dGggZmVhdHVyZXMgdG8gZW5hYmxlLiBNYXAgdXNlciByZXF1ZXN0czogJ0dvb2dsZSBsb2dpbicg4oaSICdnb29nbGUnLCAnMkZBJyDihpIgJzJmYScsICdwYXNza2V5cycg4oaSICdwYXNza2V5JywgJ21hZ2ljIGxpbmtzJyDihpIgJ21hZ2ljLWxpbmsnLCAnb3JnYW5pemF0aW9ucycg4oaSICdvcmdhbml6YXRpb24nLCAnYWRtaW4nIOKGkiAnYWRtaW4nLiBEZWZhdWx0OiBbJ2VtYWlsLXBhc3N3b3JkJ11cIixcblx0XHRcdFx0KSxcblx0XHRcdHR5cGVzY3JpcHQ6IHpcblx0XHRcdFx0LmJvb2xlYW4oKVxuXHRcdFx0XHQub3B0aW9uYWwoKVxuXHRcdFx0XHQuZGVmYXVsdCh0cnVlKVxuXHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XCJHZW5lcmF0ZSBUeXBlU2NyaXB0ICgudHMpIG9yIEphdmFTY3JpcHQgKC5qcykuIERlZmF1bHQ6IHRydWUgKFR5cGVTY3JpcHQpXCIsXG5cdFx0XHRcdCksXG5cdFx0XHRzcmNEaXI6IHpcblx0XHRcdFx0LmJvb2xlYW4oKVxuXHRcdFx0XHQub3B0aW9uYWwoKVxuXHRcdFx0XHQuZGVzY3JpYmUoXG5cdFx0XHRcdFx0XCJXaGV0aGVyIHByb2plY3QgdXNlcyBzcmMvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIENoZWNrIGlmIHNyYy8gZm9sZGVyIGV4aXN0cy4gRGVmYXVsdDogZmFsc2UuIFByb3ZpZGUgdHJ1ZSBmb3IgZnJhbWV3b3JrcyB0aGF0IHN0b3JlIGFwcCBmaWxlcyBpbiBzcmMvLlwiLFxuXHRcdFx0XHQpLFxuXHRcdFx0YXV0aFBhdGg6IHpcblx0XHRcdFx0LnN0cmluZygpXG5cdFx0XHRcdC5vcHRpb25hbCgpXG5cdFx0XHRcdC5kZXNjcmliZShcblx0XHRcdFx0XHRcIldoZXJlIHRvIGNyZWF0ZSBhdXRoLnRzIGZpbGUuIEF1dG8tZGV0ZWN0ZWQgYmFzZWQgb24gZnJhbWV3b3JrLiBPdmVycmlkZSBvbmx5IGlmIHVzZXIgc3BlY2lmaWVzIGN1c3RvbSBwYXRoLlwiLFxuXHRcdFx0XHQpLFxuXHRcdFx0YXBpUGF0aDogelxuXHRcdFx0XHQuc3RyaW5nKClcblx0XHRcdFx0Lm9wdGlvbmFsKClcblx0XHRcdFx0LmRlc2NyaWJlKFxuXHRcdFx0XHRcdFwiQVBJIHJvdXRlIHBhdGggZm9yIGF1dGggaGFuZGxlci4gQXV0by1kZXRlY3RlZCBiYXNlZCBvbiBmcmFtZXdvcmsuIE92ZXJyaWRlIG9ubHkgaWYgdXNlciBzcGVjaWZpZXMgY3VzdG9tIHBhdGguXCIsXG5cdFx0XHRcdCksXG5cdFx0XHRleGlzdGluZ1NldHVwOiBFeGlzdGluZ1NldHVwU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXG5cdFx0XHRcdFwiRm9yIElOQ1JFTUVOVEFMIHVwZGF0ZXMgb25seS4gUGFzcyBleGlzdGluZyBhdXRoLnRzIGFuZCBhdXRoLWNsaWVudC50cyBjb250ZW50cyB0byBhZGQgbmV3IGZlYXR1cmVzIHdpdGhvdXQgb3ZlcndyaXRpbmcuIFJlYWQgdGhlc2UgZmlsZXMgZmlyc3QgaWYgdGhleSBleGlzdC5cIixcblx0XHRcdCksXG5cdFx0fSxcblx0XHRhc3luYyAoaW5wdXQpID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGdlbmVyYXRlU2V0dXAoe1xuXHRcdFx0XHRcdGZyYW1ld29yazogaW5wdXQuZnJhbWV3b3JrIGFzIEZyYW1ld29yayxcblx0XHRcdFx0XHRkYXRhYmFzZTogaW5wdXQuZGF0YWJhc2UgYXMgRGF0YWJhc2UsXG5cdFx0XHRcdFx0b3JtOiAoaW5wdXQub3JtIHx8IFwibm9uZVwiKSBhcyBPUk0sXG5cdFx0XHRcdFx0ZmVhdHVyZXM6IChpbnB1dC5mZWF0dXJlcyB8fCBbXCJlbWFpbC1wYXNzd29yZFwiXSkgYXMgRmVhdHVyZVtdLFxuXHRcdFx0XHRcdHR5cGVzY3JpcHQ6IGlucHV0LnR5cGVzY3JpcHQgPz8gdHJ1ZSxcblx0XHRcdFx0XHRzcmNEaXI6IGlucHV0LnNyY0RpciA/PyBmYWxzZSxcblx0XHRcdFx0XHRhdXRoUGF0aDogaW5wdXQuYXV0aFBhdGgsXG5cdFx0XHRcdFx0YXBpUGF0aDogaW5wdXQuYXBpUGF0aCxcblx0XHRcdFx0XHRleGlzdGluZ1NldHVwOiBpbnB1dC5leGlzdGluZ1NldHVwLFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRpZiAoaXNTZXR1cEVycm9yKHJlc3VsdCkpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0Y29udGVudDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogXCJ0ZXh0XCIgYXMgY29uc3QsXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRpc0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGNvbnRlbnQ6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogXCJ0ZXh0XCIgYXMgY29uc3QsXG5cdFx0XHRcdFx0XHRcdHRleHQ6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMiksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH07XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRjb25zdCBtZXNzYWdlID1cblx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiO1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGNvbnRlbnQ6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogXCJ0ZXh0XCIgYXMgY29uc3QsXG5cdFx0XHRcdFx0XHRcdHRleHQ6IEpTT04uc3RyaW5naWZ5KFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvZGU6IFwiU0VUVVBfRVJST1JcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZSxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdDIsXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0aXNFcnJvcjogdHJ1ZSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9LFxuXHQpO1xufVxuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgTWNwU2VydmVyIH0gZnJvbSBcIkBtb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL21jcC5qc1wiO1xuaW1wb3J0IHsgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQgfSBmcm9tIFwiQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvc3RkaW8uanNcIjtcbmltcG9ydCB7IHJlZ2lzdGVyU2V0dXBBdXRoIH0gZnJvbSBcIi4vdG9vbHMvaW5kZXguanNcIjtcblxuY29uc3Qgc2VydmVyID0gbmV3IE1jcFNlcnZlcih7XG5cdG5hbWU6IFwiYmV0dGVyLWF1dGhcIixcblx0ZGVzY3JpcHRpb246XG5cdFx0XCJCZXR0ZXIgQXV0aCBNQ1Agc2VydmVyIGZvciBBSS1wb3dlcmVkIGF1dGggc2V0dXAgYW5kIGRpYWdub3N0aWNzXCIsXG5cdHZlcnNpb246IHByb2Nlc3MuZW52LkJFVFRFUl9BVVRIX1ZFUlNJT04hLFxufSk7XG5cbnJlZ2lzdGVyU2V0dXBBdXRoKHNlcnZlcik7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG5cdGNvbnN0IHRyYW5zcG9ydCA9IG5ldyBTdGRpb1NlcnZlclRyYW5zcG9ydCgpO1xuXHRhd2FpdCBzZXJ2ZXIuY29ubmVjdCh0cmFuc3BvcnQpO1xufVxuXG5tYWluKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLFNBQWdCLG1CQUNmLGVBQ2lCO0NBQ2pCLE1BQU0sV0FBMkIsRUFDaEMsVUFBVSxFQUFFLEVBQ1o7QUFFRCxLQUFJLGNBQWMsWUFBWTtFQUM3QixNQUFNLFNBQVMsY0FBYztBQUM3QixXQUFTLFdBQVcsZUFBZSxPQUFPO0FBQzFDLFdBQVMsTUFBTSxVQUFVLE9BQU87QUFDaEMsV0FBUyxXQUFXLGVBQWUsUUFBUSxjQUFjLGlCQUFpQjs7QUFHM0UsUUFBTzs7QUFHUixTQUFTLGVBQWUsUUFBb0M7QUFDM0QsS0FDQyxpQ0FBaUMsS0FBSyxPQUFPLElBQzdDLHlCQUF5QixLQUFLLE9BQU8sQ0FFckMsUUFBTztBQUVSLEtBQUksNEJBQTRCLEtBQUssT0FBTyxDQUMzQyxRQUFPO0FBRVIsS0FBSSw2QkFBNkIsS0FBSyxPQUFPLENBQzVDLFFBQU87QUFFUixLQUFJLDhCQUE4QixLQUFLLE9BQU8sQ0FDN0MsUUFBTzs7QUFLVCxTQUFTLFVBQVUsUUFBb0M7QUFDdEQsS0FBSSxrQkFBa0IsS0FBSyxPQUFPLENBQ2pDLFFBQU87QUFFUixLQUFJLG1CQUFtQixLQUFLLE9BQU8sQ0FDbEMsUUFBTztBQUVSLEtBQUksaUNBQWlDLEtBQUssT0FBTyxDQUNoRCxRQUFPOztBQUtULFNBQVMsZUFDUixjQUNBLGNBQ1k7Q0FDWixNQUFNLFdBQXNCLEVBQUU7QUFFOUIsS0FBSSwrQ0FBK0MsS0FBSyxhQUFhLENBQ3BFLFVBQVMsS0FBSyxpQkFBaUI7QUFjaEMsTUFBSyxNQUFNLFlBWHdCO0VBQ2xDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-auth/mcp",
3
- "version": "1.5.0-beta.8",
3
+ "version": "1.5.0-beta.9",
4
4
  "type": "module",
5
5
  "description": "Better Auth MCP server for AI-powered auth setup and diagnostics",
6
6
  "module": "dist/index.mjs",
@@ -34,13 +34,16 @@
34
34
  "bin": {
35
35
  "better-auth-mcp": "./dist/index.mjs"
36
36
  },
37
+ "engines": {
38
+ "node": ">=20.0.0"
39
+ },
37
40
  "devDependencies": {
38
41
  "tsdown": "^0.19.0",
39
42
  "typescript": "^5.9.3"
40
43
  },
41
44
  "dependencies": {
42
45
  "@modelcontextprotocol/sdk": "^1.8.0",
43
- "zod": "^3.24.2"
46
+ "zod": "^4.3.5"
44
47
  },
45
48
  "files": [
46
49
  "dist"