claude-code-sync 0.1.5 → 0.1.6
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/dist/cli.js +2 -2
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -92,7 +92,7 @@ program
|
|
|
92
92
|
.description("Configure Convex URL and API Key")
|
|
93
93
|
.action(async () => {
|
|
94
94
|
console.log("\n Claude Code Sync - Login\n");
|
|
95
|
-
console.log("Get your API key from your OpenSync
|
|
95
|
+
console.log("Get your API key from your OpenSync.dev Settings page, starts with osk_. Enter it here:");
|
|
96
96
|
console.log(" 1. Go to Settings");
|
|
97
97
|
console.log(" 2. Click 'Generate API Key'");
|
|
98
98
|
console.log(" 3. Copy the key (starts with osk_)\n");
|
|
@@ -563,4 +563,4 @@ program
|
|
|
563
563
|
});
|
|
564
564
|
// Parse and run
|
|
565
565
|
program.parse();
|
|
566
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBOzs7Ozs7OztHQVFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHlDQUFvQztBQUNwQyxtREFBcUM7QUFDckMsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixtQ0FRaUI7QUF5Q2pCLGlDQUFpQztBQUNqQyxTQUFTLFVBQVU7SUFDakIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQWdCLENBQUM7UUFDekUsT0FBTyxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUFDO0tBQ3hCLFdBQVcsQ0FBQyxpREFBaUQsQ0FBQztLQUM5RCxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUV6QiwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUUvRSxTQUFTLE1BQU0sQ0FBQyxRQUFnQjtJQUM5QixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2xDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFB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QUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSztvQkFDL0QsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2lCQUNwQyxDQUFDO2dCQUNGLE1BQU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLENBQUM7WUFFRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ1osa0RBQWtEO2dCQUNsRCxtREFBbUQ7Z0JBQ25ELE1BQU07WUFDUixDQUFDO1lBRUQ7Z0JBQ0Usd0JBQXdCO2dCQUN4QixNQUFNO1FBQ1YsQ0FBQztRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZiw0Q0FBNEM7UUFDNUMsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVMLGdCQUFnQjtBQUNoQixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbi8qKlxuICogQ2xhdWRlIENvZGUgU3luYyBDTElcbiAqXG4gKiBDb21tYW5kczpcbiAqICAgbG9naW4gICAtIENvbmZpZ3VyZSBDb252ZXggVVJMIGFuZCBBUEkgS2V5XG4gKiAgIGxvZ291dCAgLSBDbGVhciBzdG9yZWQgY3JlZGVudGlhbHNcbiAqICAgc3RhdHVzICAtIFNob3cgY29ubmVjdGlvbiBzdGF0dXNcbiAqICAgY29uZmlnICAtIFNob3cgY3VycmVudCBjb25maWd1cmF0aW9uXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCAqIGFzIHJlYWRsaW5lIGZyb20gXCJyZWFkbGluZVwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge1xuICBsb2FkQ29uZmlnLFxuICBzYXZlQ29uZmlnLFxuICBjbGVhckNvbmZpZyxcbiAgU3luY0NsaWVudCxcbiAgQ29uZmlnLFxuICBTZXNzaW9uRGF0YSxcbiAgTWVzc2FnZURhdGEsXG59IGZyb20gXCIuL2luZGV4XCI7XG5cbi8vIFR5cGVzIGZvciBDbGF1ZGUgQ29kZSBob29rIGV2ZW50IGRhdGEgZnJvbSBzdGRpblxuaW50ZXJmYWNlIEhvb2tTZXNzaW9uU3RhcnREYXRhIHtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICBjd2Q/OiBzdHJpbmc7XG4gIHBlcm1pc3Npb25fbW9kZT86IHN0cmluZztcbiAgc291cmNlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSG9va1Nlc3Npb25FbmREYXRhIHtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICByZWFzb24/OiBcInVzZXJfc3RvcFwiIHwgXCJtYXhfdHVybnNcIiB8IFwiZXJyb3JcIiB8IFwiY29tcGxldGVkXCI7XG59XG5cbmludGVyZmFjZSBIb29rVXNlclByb21wdERhdGEge1xuICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gIHByb21wdDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSG9va1Rvb2xVc2VEYXRhIHtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICB0b29sX25hbWU6IHN0cmluZztcbiAgdG9vbF9pbnB1dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB0b29sX3Jlc3VsdD86IHtcbiAgICBvdXRwdXQ/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8vIFR5cGVzIGZvciBDbGF1ZGUgQ29kZSBzZXR0aW5ncy5qc29uXG5pbnRlcmZhY2UgQ2xhdWRlU2V0dGluZ3Mge1xuICBob29rcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vLyBUeXBlIGZvciBwYWNrYWdlLmpzb24gdmVyc2lvbiBmaWVsZFxuaW50ZXJmYWNlIFBhY2thZ2VKc29uIHtcbiAgdmVyc2lvbj86IHN0cmluZztcbn1cblxuLy8gUmVhZCB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG5mdW5jdGlvbiBnZXRWZXJzaW9uKCk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnUGF0aCwgXCJ1dGYtOFwiKSkgYXMgUGFja2FnZUpzb247XG4gICAgcmV0dXJuIHBrZy52ZXJzaW9uIHx8IFwiMC4wLjBcIjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFwiMC4wLjBcIjtcbiAgfVxufVxuXG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQoKTtcblxucHJvZ3JhbVxuICAubmFtZShcImNsYXVkZS1jb2RlLXN5bmNcIilcbiAgLmRlc2NyaXB0aW9uKFwiU3luYyBDbGF1ZGUgQ29kZSBzZXNzaW9ucyB0byBPcGVuU3luYyBkYXNoYm9hcmRcIilcbiAgLnZlcnNpb24oZ2V0VmVyc2lvbigpKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVscGVyIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBwcm9tcHQocXVlc3Rpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICB9KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBybC5xdWVzdGlvbihxdWVzdGlvbiwgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIHJlc29sdmUoYW5zd2VyLnRyaW0oKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtYXNrQXBpS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGtleS5sZW5ndGggPD0gOCkgcmV0dXJuIFwiKioqKlwiO1xuICByZXR1cm4ga2V5LnN1YnN0cmluZygwLCA0KSArIFwiKioqKlwiICsga2V5LnN1YnN0cmluZyhrZXkubGVuZ3RoIC0gNCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbW1hbmRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoXCJsb2dpblwiKVxuICAuZGVzY3JpcHRpb24oXCJDb25maWd1cmUgQ29udmV4IFVSTCBhbmQgQVBJIEtleVwiKVxuICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcIlxcbiAgQ2xhdWRlIENvZGUgU3luYyAtIExvZ2luXFxuXCIpO1xuICAgIGNvbnNvbGUubG9nKFwiR2V0IHlvdXIgQVBJIGtleSBmcm9tIHlvdXIgT3BlblN5bmMgZGFzaGJvYXJkOlwiKTtcbiAgICBjb25zb2xlLmxvZyhcIiAgMS4gR28gdG8gU2V0dGluZ3NcIik7XG4gICAgY29uc29sZS5sb2coXCIgIDIuIENsaWNrICdHZW5lcmF0ZSBBUEkgS2V5J1wiKTtcbiAgICBjb25zb2xlLmxvZyhcIiAgMy4gQ29weSB0aGUga2V5IChzdGFydHMgd2l0aCBvc2tfKVxcblwiKTtcblxuICAgIGNvbnN0IGNvbnZleFVybCA9IGF3YWl0IHByb21wdChcIkNvbnZleCBVUkwgKGUuZy4sIGh0dHBzOi8veW91ci1wcm9qZWN0LmNvbnZleC5jbG91ZCk6IFwiKTtcblxuICAgIGlmICghY29udmV4VXJsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3I6IENvbnZleCBVUkwgaXMgcmVxdWlyZWRcIik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKCFjb252ZXhVcmwuaW5jbHVkZXMoXCJjb252ZXguY2xvdWRcIikgJiYgIWNvbnZleFVybC5pbmNsdWRlcyhcImNvbnZleC5zaXRlXCIpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3I6IEludmFsaWQgQ29udmV4IFVSTC4gTXVzdCBjb250YWluIGNvbnZleC5jbG91ZCBvciBjb252ZXguc2l0ZVwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBhcGlLZXkgPSBhd2FpdCBwcm9tcHQoXCJBUEkgS2V5IChvc2tfLi4uKTogXCIpO1xuXG4gICAgaWYgKCFhcGlLZXkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvcjogQVBJIEtleSBpcyByZXF1aXJlZFwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAoIWFwaUtleS5zdGFydHNXaXRoKFwib3NrX1wiKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yOiBJbnZhbGlkIEFQSSBLZXkuIE11c3Qgc3RhcnQgd2l0aCBvc2tfXCIpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZzogQ29uZmlnID0ge1xuICAgICAgY29udmV4VXJsLFxuICAgICAgYXBpS2V5LFxuICAgICAgYXV0b1N5bmM6IHRydWUsXG4gICAgICBzeW5jVG9vbENhbGxzOiB0cnVlLFxuICAgICAgc3luY1RoaW5raW5nOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gVGVzdCBjb25uZWN0aW9uXG4gICAgY29uc29sZS5sb2coXCJcXG5UZXN0aW5nIGNvbm5lY3Rpb24uLi5cIik7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFN5bmNDbGllbnQoY29uZmlnKTtcbiAgICBjb25zdCBjb25uZWN0ZWQgPSBhd2FpdCBjbGllbnQudGVzdENvbm5lY3Rpb24oKTtcblxuICAgIGlmICghY29ubmVjdGVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3I6IENvdWxkIG5vdCBjb25uZWN0IHRvIENvbnZleCBiYWNrZW5kXCIpO1xuICAgICAgY29uc29sZS5lcnJvcihcIiAgIENoZWNrIHlvdXIgVVJMIGFuZCB0cnkgYWdhaW5cIik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gU2F2ZSBjb25maWdcbiAgICBzYXZlQ29uZmlnKGNvbmZpZyk7XG4gICAgY29uc29sZS5sb2coXCJcXG5Db25maWd1cmF0aW9uIHNhdmVkIVwiKTtcbiAgICBjb25zb2xlLmxvZyhgICAgVVJMOiAke2NvbnZleFVybH1gKTtcbiAgICBjb25zb2xlLmxvZyhgICAgS2V5OiAke21hc2tBcGlLZXkoYXBpS2V5KX1gKTtcbiAgICBjb25zb2xlLmxvZyhcIlxcbkFkZCB0aGUgcGx1Z2luIHRvIHlvdXIgQ2xhdWRlIENvZGUgY29uZmlnIHRvIHN0YXJ0IHN5bmNpbmcuXFxuXCIpO1xuICB9KTtcblxucHJvZ3JhbVxuICAuY29tbWFuZChcImxvZ291dFwiKVxuICAuZGVzY3JpcHRpb24oXCJDbGVhciBzdG9yZWQgY3JlZGVudGlhbHNcIilcbiAgLmFjdGlvbigoKSA9PiB7XG4gICAgY2xlYXJDb25maWcoKTtcbiAgICBjb25zb2xlLmxvZyhcIkNyZWRlbnRpYWxzIGNsZWFyZWRcIik7XG4gIH0pO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKFwic3RhdHVzXCIpXG4gIC5kZXNjcmlwdGlvbihcIlNob3cgY29ubmVjdGlvbiBzdGF0dXNcIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gbG9hZENvbmZpZygpO1xuXG4gICAgY29uc29sZS5sb2coXCJcXG4gIENsYXVkZSBDb2RlIFN5bmMgLSBTdGF0dXNcXG5cIik7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgY29uc29sZS5sb2coXCJOb3QgY29uZmlndXJlZFwiKTtcbiAgICAgIGNvbnNvbGUubG9nKFwiICAgUnVuICdjbGF1ZGUtY29kZS1zeW5jIGxvZ2luJyB0byBzZXQgdXBcXG5cIik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coXCJDb25maWd1cmF0aW9uOlwiKTtcbiAgICBjb25zb2xlLmxvZyhgICBDb252ZXggVVJMOiAke2NvbmZpZy5jb252ZXhVcmx9YCk7XG4gICAgY29uc29sZS5sb2coYCAgQVBJIEtleTogICAgJHttYXNrQXBpS2V5KGNvbmZpZy5hcGlLZXkpfWApO1xuICAgIGNvbnNvbGUubG9nKGAgIEF1dG8gU3luYzogICR7Y29uZmlnLmF1dG9TeW5jICE9PSBmYWxzZSA/IFwiZW5hYmxlZFwiIDogXCJkaXNhYmxlZFwifWApO1xuICAgIGNvbnNvbGUubG9nKGAgIFRvb2wgQ2FsbHM6ICR7Y29uZmlnLnN5bmNUb29sQ2FsbHMgIT09IGZhbHNlID8gXCJlbmFibGVkXCIgOiBcImRpc2FibGVkXCJ9YCk7XG4gICAgY29uc29sZS5sb2coYCAgVGhpbmtpbmc6ICAgJHtjb25maWcuc3luY1RoaW5raW5nID8gXCJlbmFibGVkXCIgOiBcImRpc2FibGVkXCJ9YCk7XG5cbiAgICBjb25zb2xlLmxvZyhcIlxcblRlc3RpbmcgY29ubmVjdGlvbi4uLlwiKTtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgU3luY0NsaWVudChjb25maWcpO1xuICAgIGNvbnN0IGNvbm5lY3RlZCA9IGF3YWl0IGNsaWVudC50ZXN0Q29ubmVjdGlvbigpO1xuXG4gICAgaWYgKGNvbm5lY3RlZCkge1xuICAgICAgY29uc29sZS5sb2coXCJDb25uZWN0ZWQgdG8gQ29udmV4IGJhY2tlbmRcXG5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiRXJyb3I6IENvdWxkIG5vdCBjb25uZWN0IHRvIENvbnZleCBiYWNrZW5kXFxuXCIpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfSk7XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoXCJjb25maWdcIilcbiAgLmRlc2NyaXB0aW9uKFwiU2hvdyBjdXJyZW50IGNvbmZpZ3VyYXRpb25cIilcbiAgLm9wdGlvbihcIi0tanNvblwiLCBcIk91dHB1dCBhcyBKU09OXCIpXG4gIC5hY3Rpb24oKG9wdGlvbnM6IHsganNvbj86IGJvb2xlYW4gfSkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGxvYWRDb25maWcoKTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHsgY29uZmlndXJlZDogZmFsc2UgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJOb3QgY29uZmlndXJlZC4gUnVuICdjbGF1ZGUtY29kZS1zeW5jIGxvZ2luJyB0byBzZXQgdXAuXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25maWd1cmVkOiB0cnVlLFxuICAgICAgICAgICAgY29udmV4VXJsOiBjb25maWcuY29udmV4VXJsLFxuICAgICAgICAgICAgYXBpS2V5OiBtYXNrQXBpS2V5KGNvbmZpZy5hcGlLZXkpLFxuICAgICAgICAgICAgYXV0b1N5bmM6IGNvbmZpZy5hdXRvU3luYyAhPT0gZmFsc2UsXG4gICAgICAgICAgICBzeW5jVG9vbENhbGxzOiBjb25maWcuc3luY1Rvb2xDYWxscyAhPT0gZmFsc2UsXG4gICAgICAgICAgICBzeW5jVGhpbmtpbmc6IGNvbmZpZy5zeW5jVGhpbmtpbmcgPT09IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIDJcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJcXG4gIEN1cnJlbnQgQ29uZmlndXJhdGlvblxcblwiKTtcbiAgICAgIGNvbnNvbGUubG9nKGBDb252ZXggVVJMOiAgJHtjb25maWcuY29udmV4VXJsfWApO1xuICAgICAgY29uc29sZS5sb2coYEFQSSBLZXk6ICAgICAke21hc2tBcGlLZXkoY29uZmlnLmFwaUtleSl9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgQXV0byBTeW5jOiAgICR7Y29uZmlnLmF1dG9TeW5jICE9PSBmYWxzZX1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGBUb29sIENhbGxzOiAgJHtjb25maWcuc3luY1Rvb2xDYWxscyAhPT0gZmFsc2V9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgVGhpbmtpbmc6ICAgICR7Y29uZmlnLnN5bmNUaGlua2luZyA9PT0gdHJ1ZX1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGBcXG5Db25maWcgZmlsZTogfi8uY29uZmlnL2NsYXVkZS1jb2RlLXN5bmMvY29uZmlnLmpzb25cXG5gKTtcbiAgICB9XG4gIH0pO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKFwic2V0IDxrZXk+IDx2YWx1ZT5cIilcbiAgLmRlc2NyaXB0aW9uKFwiU2V0IGEgY29uZmlndXJhdGlvbiB2YWx1ZVwiKVxuICAuYWN0aW9uKChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGxvYWRDb25maWcoKTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiTm90IGNvbmZpZ3VyZWQuIFJ1biAnY2xhdWRlLWNvZGUtc3luYyBsb2dpbicgZmlyc3QuXCIpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkS2V5cyA9IFtcImF1dG9TeW5jXCIsIFwic3luY1Rvb2xDYWxsc1wiLCBcInN5bmNUaGlua2luZ1wiXTtcbiAgICBpZiAoIXZhbGlkS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGtleS4gVmFsaWQga2V5czogJHt2YWxpZEtleXMuam9pbihcIiwgXCIpfWApO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IGJvb2xWYWx1ZSA9IHZhbHVlID09PSBcInRydWVcIiB8fCB2YWx1ZSA9PT0gXCIxXCIgfHwgdmFsdWUgPT09IFwieWVzXCI7XG4gICAgXG4gICAgLy8gVHlwZS1zYWZlIGNvbmZpZyB1cGRhdGVcbiAgICBpZiAoa2V5ID09PSBcImF1dG9TeW5jXCIpIHtcbiAgICAgIGNvbmZpZy5hdXRvU3luYyA9IGJvb2xWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJzeW5jVG9vbENhbGxzXCIpIHtcbiAgICAgIGNvbmZpZy5zeW5jVG9vbENhbGxzID0gYm9vbFZhbHVlO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSBcInN5bmNUaGlua2luZ1wiKSB7XG4gICAgICBjb25maWcuc3luY1RoaW5raW5nID0gYm9vbFZhbHVlO1xuICAgIH1cblxuICAgIHNhdmVDb25maWcoY29uZmlnKTtcbiAgICBjb25zb2xlLmxvZyhgU2V0ICR7a2V5fSA9ICR7Ym9vbFZhbHVlfWApO1xuICB9KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2V0dXAgQ29tbWFuZCAoY29uZmlndXJlcyBDbGF1ZGUgQ29kZSBob29rcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ2xhdWRlIENvZGUgaG9va3MgY29uZmlndXJhdGlvblxuY29uc3QgQ0xBVURFX0hPT0tTX0NPTkZJRyA9IHtcbiAgaG9va3M6IHtcbiAgICBTZXNzaW9uU3RhcnQ6IFtcbiAgICAgIHtcbiAgICAgICAgaG9va3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImNvbW1hbmRcIixcbiAgICAgICAgICAgIGNvbW1hbmQ6IFwiY2xhdWRlLWNvZGUtc3luYyBob29rIFNlc3Npb25TdGFydFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgU2Vzc2lvbkVuZDogW1xuICAgICAge1xuICAgICAgICBob29rczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiY29tbWFuZFwiLFxuICAgICAgICAgICAgY29tbWFuZDogXCJjbGF1ZGUtY29kZS1zeW5jIGhvb2sgU2Vzc2lvbkVuZFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgVXNlclByb21wdFN1Ym1pdDogW1xuICAgICAge1xuICAgICAgICBob29rczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiY29tbWFuZFwiLFxuICAgICAgICAgICAgY29tbWFuZDogXCJjbGF1ZGUtY29kZS1zeW5jIGhvb2sgVXNlclByb21wdFN1Ym1pdFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgUG9zdFRvb2xVc2U6IFtcbiAgICAgIHtcbiAgICAgICAgbWF0Y2hlcjogXCIqXCIsXG4gICAgICAgIGhvb2tzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJjb21tYW5kXCIsXG4gICAgICAgICAgICBjb21tYW5kOiBcImNsYXVkZS1jb2RlLXN5bmMgaG9vayBQb3N0VG9vbFVzZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgU3RvcDogW1xuICAgICAge1xuICAgICAgICBtYXRjaGVyOiBcIipcIixcbiAgICAgICAgaG9va3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImNvbW1hbmRcIixcbiAgICAgICAgICAgIGNvbW1hbmQ6IFwiY2xhdWRlLWNvZGUtc3luYyBob29rIFN0b3BcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxufTtcblxucHJvZ3JhbVxuICAuY29tbWFuZChcInNldHVwXCIpXG4gIC5kZXNjcmlwdGlvbihcIkFkZCBob29rcyB0byBDbGF1ZGUgQ29kZSBzZXR0aW5ncyAoY29uZmlndXJlcyB+Ly5jbGF1ZGUvc2V0dGluZ3MuanNvbilcIilcbiAgLm9wdGlvbihcIi0tZm9yY2VcIiwgXCJPdmVyd3JpdGUgZXhpc3RpbmcgaG9va3MgY29uZmlndXJhdGlvblwiKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiB7IGZvcmNlPzogYm9vbGVhbiB9KSA9PiB7XG4gICAgY29uc3QgY2xhdWRlRGlyID0gcGF0aC5qb2luKHByb2Nlc3MuZW52LkhPTUUgfHwgXCJ+XCIsIFwiLmNsYXVkZVwiKTtcbiAgICBjb25zdCBzZXR0aW5nc1BhdGggPSBwYXRoLmpvaW4oY2xhdWRlRGlyLCBcInNldHRpbmdzLmpzb25cIik7XG5cbiAgICBjb25zb2xlLmxvZyhcIlxcbiAgQ2xhdWRlIENvZGUgU3luYyAtIFNldHVwXFxuXCIpO1xuXG4gICAgLy8gQ2hlY2sgaWYgcGx1Z2luIGNyZWRlbnRpYWxzIGFyZSBjb25maWd1cmVkXG4gICAgY29uc3QgY29uZmlnID0gbG9hZENvbmZpZygpO1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIldhcm5pbmc6IFBsdWdpbiBub3QgY29uZmlndXJlZCB5ZXQuXCIpO1xuICAgICAgY29uc29sZS5sb2coXCIgICBSdW4gJ2NsYXVkZS1jb2RlLXN5bmMgbG9naW4nIGZpcnN0IHRvIHNldCB1cCBjcmVkZW50aWFscy5cXG5cIik7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIC5jbGF1ZGUgZGlyZWN0b3J5IGlmIG5lZWRlZFxuICAgIGlmICghZnMuZXhpc3RzU3luYyhjbGF1ZGVEaXIpKSB7XG4gICAgICBmcy5ta2RpclN5bmMoY2xhdWRlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnNvbGUubG9nKFwiQ3JlYXRlZCB+Ly5jbGF1ZGUgZGlyZWN0b3J5XCIpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBleGlzdGluZyBzZXR0aW5nc1xuICAgIGxldCBleGlzdGluZ1NldHRpbmdzOiBDbGF1ZGVTZXR0aW5ncyA9IHt9O1xuICAgIGxldCBoYXNFeGlzdGluZ0hvb2tzID0gZmFsc2U7XG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzZXR0aW5nc1BhdGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHNldHRpbmdzUGF0aCwgXCJ1dGYtOFwiKTtcbiAgICAgICAgZXhpc3RpbmdTZXR0aW5ncyA9IEpTT04ucGFyc2UoY29udGVudCkgYXMgQ2xhdWRlU2V0dGluZ3M7XG4gICAgICAgIGhhc0V4aXN0aW5nSG9va3MgPSAhIWV4aXN0aW5nU2V0dGluZ3MuaG9va3M7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiRm91bmQgZXhpc3Rpbmcgc2V0dGluZ3MuanNvblwiKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBjb25zb2xlLmxvZyhcIldhcm5pbmc6IENvdWxkIG5vdCBwYXJzZSBleGlzdGluZyBzZXR0aW5ncy5qc29uLCB3aWxsIGNyZWF0ZSBuZXcgb25lXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBleGlzdGluZyBob29rc1xuICAgIGlmIChoYXNFeGlzdGluZ0hvb2tzICYmICFvcHRpb25zLmZvcmNlKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlxcbkV4aXN0aW5nIGhvb2tzIGNvbmZpZ3VyYXRpb24gZm91bmQuXCIpO1xuICAgICAgY29uc29sZS5sb2coXCIgICBVc2UgLS1mb3JjZSB0byBvdmVyd3JpdGUsIG9yIG1hbnVhbGx5IG1lcmdlIHRoZSBob29rcy5cXG5cIik7XG4gICAgICBjb25zb2xlLmxvZyhcIlRvIG1hbnVhbGx5IGFkZCwgaW5jbHVkZSB0aGVzZSBob29rcyBpbiB5b3VyIHNldHRpbmdzLmpzb246XCIpO1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoQ0xBVURFX0hPT0tTX0NPTkZJRywgbnVsbCwgMikpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIC8vIE1lcmdlIHNldHRpbmdzXG4gICAgY29uc3QgbmV3U2V0dGluZ3MgPSB7XG4gICAgICAuLi5leGlzdGluZ1NldHRpbmdzLFxuICAgICAgLi4uQ0xBVURFX0hPT0tTX0NPTkZJRyxcbiAgICB9O1xuXG4gICAgLy8gV3JpdGUgc2V0dGluZ3NcbiAgICB0cnkge1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhzZXR0aW5nc1BhdGgsIEpTT04uc3RyaW5naWZ5KG5ld1NldHRpbmdzLCBudWxsLCAyKSk7XG4gICAgICBjb25zb2xlLmxvZyhcIlxcbkNsYXVkZSBDb2RlIGhvb2tzIGNvbmZpZ3VyZWQhXCIpO1xuICAgICAgY29uc29sZS5sb2coYCAgIFNldHRpbmdzIGZpbGU6ICR7c2V0dGluZ3NQYXRofWApO1xuICAgICAgY29uc29sZS5sb2coXCJcXG5TZXR1cCBjb21wbGV0ZS4gU2Vzc2lvbnMgd2lsbCBzeW5jIGF1dG9tYXRpY2FsbHkuXFxuXCIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igd3JpdGluZyBzZXR0aW5nczpcIiwgZXJyb3IpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfSk7XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoXCJ2ZXJpZnlcIilcbiAgLmRlc2NyaXB0aW9uKFwiVmVyaWZ5IGNyZWRlbnRpYWxzIGFuZCBDbGF1ZGUgQ29kZSBjb25maWd1cmF0aW9uXCIpXG4gIC5hY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKFwiXFxuICBPcGVuU3luYyBTZXR1cCBWZXJpZmljYXRpb25cXG5cIik7XG5cbiAgICAvLyBDaGVjayBjcmVkZW50aWFsc1xuICAgIGNvbnN0IGNvbmZpZyA9IGxvYWRDb25maWcoKTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkNyZWRlbnRpYWxzOiBPS1wiKTtcbiAgICAgIGNvbnNvbGUubG9nKGAgICBDb252ZXggVVJMOiAke2NvbmZpZy5jb252ZXhVcmx9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgICAgQVBJIEtleTogJHttYXNrQXBpS2V5KGNvbmZpZy5hcGlLZXkpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkNyZWRlbnRpYWxzOiBOT1QgQ09ORklHVVJFRFwiKTtcbiAgICAgIGNvbnNvbGUubG9nKFwiICAgUnVuICdjbGF1ZGUtY29kZS1zeW5jIGxvZ2luJyB0byBzZXQgdXBcIik7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgQ2xhdWRlIENvZGUgY29uZmlnXG4gICAgY29uc3Qgc2V0dGluZ3NQYXRoID0gcGF0aC5qb2luKHByb2Nlc3MuZW52LkhPTUUgfHwgXCJ+XCIsIFwiLmNsYXVkZVwiLCBcInNldHRpbmdzLmpzb25cIik7XG4gICAgbGV0IGhvb2tzQ29uZmlndXJlZCA9IGZhbHNlO1xuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoc2V0dGluZ3NQYXRoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhzZXR0aW5nc1BhdGgsIFwidXRmLThcIik7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gSlNPTi5wYXJzZShjb250ZW50KSBhcyBDbGF1ZGVTZXR0aW5ncztcbiAgICAgICAgaG9va3NDb25maWd1cmVkID0gISFzZXR0aW5ncy5ob29rcz8uU2Vzc2lvblN0YXJ0O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIElnbm9yZSBwYXJzZSBlcnJvcnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhcIlwiKTtcbiAgICBpZiAoaG9va3NDb25maWd1cmVkKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkNsYXVkZSBDb2RlIENvbmZpZzogT0tcIik7XG4gICAgICBjb25zb2xlLmxvZyhgICAgQ29uZmlnIGZpbGU6ICR7c2V0dGluZ3NQYXRofWApO1xuICAgICAgY29uc29sZS5sb2coXCIgICBIb29rcyByZWdpc3RlcmVkOiBjbGF1ZGUtY29kZS1zeW5jXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkNsYXVkZSBDb2RlIENvbmZpZzogTk9UIENPTkZJR1VSRURcIik7XG4gICAgICBjb25zb2xlLmxvZyhcIiAgIFJ1biAnY2xhdWRlLWNvZGUtc3luYyBzZXR1cCcgdG8gY29uZmlndXJlIGhvb2tzXCIpO1xuICAgIH1cblxuICAgIC8vIFRlc3QgY29ubmVjdGlvbiBpZiBjcmVkZW50aWFscyBleGlzdFxuICAgIGlmIChjb25maWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiXFxuVGVzdGluZyBjb25uZWN0aW9uLi4uXCIpO1xuICAgICAgY29uc3QgY2xpZW50ID0gbmV3IFN5bmNDbGllbnQoY29uZmlnKTtcbiAgICAgIGNvbnN0IGNvbm5lY3RlZCA9IGF3YWl0IGNsaWVudC50ZXN0Q29ubmVjdGlvbigpO1xuICAgICAgaWYgKGNvbm5lY3RlZCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkNvbm5lY3Rpb246IE9LXFxuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJDb25uZWN0aW9uOiBGQUlMRURcXG5cIik7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29uZmlnICYmIGhvb2tzQ29uZmlndXJlZCkge1xuICAgICAgY29uc29sZS5sb2coXCJSZWFkeSEgU3RhcnQgQ2xhdWRlIENvZGUgYW5kIHNlc3Npb25zIHdpbGwgc3luYyBhdXRvbWF0aWNhbGx5LlxcblwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJcIik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU3luYyBUZXN0IENvbW1hbmQgKHRlc3QgY29ubmVjdGl2aXR5KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5wcm9ncmFtXG4gIC5jb21tYW5kKFwic3luY3Rlc3RcIilcbiAgLmRlc2NyaXB0aW9uKFwiVGVzdCBjb25uZWN0aXZpdHkgYW5kIGNyZWF0ZSBhIHRlc3Qgc2Vzc2lvblwiKVxuICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBsb2FkQ29uZmlnKCk7XG5cbiAgICBjb25zb2xlLmxvZyhcIlxcbiAgQ2xhdWRlIENvZGUgU3luYyAtIENvbm5lY3Rpb24gVGVzdFxcblwiKTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIk5vdCBjb25maWd1cmVkXCIpO1xuICAgICAgY29uc29sZS5sb2coXCIgICBSdW4gJ2NsYXVkZS1jb2RlLXN5bmMgbG9naW4nIHRvIHNldCB1cFxcblwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhcIkNvbmZpZ3VyYXRpb246XCIpO1xuICAgIGNvbnNvbGUubG9nKGAgIENvbnZleCBVUkw6ICR7Y29uZmlnLmNvbnZleFVybH1gKTtcbiAgICBjb25zb2xlLmxvZyhgICBBUEkgS2V5OiAgICAke21hc2tBcGlLZXkoY29uZmlnLmFwaUtleSl9YCk7XG5cbiAgICBjb25zb2xlLmxvZyhcIlxcblRlc3RpbmcgY29ubmVjdGlvbi4uLlwiKTtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgU3luY0NsaWVudChjb25maWcpO1xuICAgIGNvbnN0IGNvbm5lY3RlZCA9IGF3YWl0IGNsaWVudC50ZXN0Q29ubmVjdGlvbigpO1xuXG4gICAgaWYgKGNvbm5lY3RlZCkge1xuICAgICAgY29uc29sZS5sb2coXCJDb25uZWN0aW9uOiBPS1wiKTtcbiAgICAgIFxuICAgICAgLy8gQ3JlYXRlIGEgdGVzdCBzZXNzaW9uIHRvIHZlcmlmeSBmdWxsIHN5bmMgd29ya3NcbiAgICAgIGNvbnNvbGUubG9nKFwiXFxuQ3JlYXRpbmcgdGVzdCBzZXNzaW9uLi4uXCIpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdGVzdFNlc3Npb24gPSB7XG4gICAgICAgICAgc2Vzc2lvbklkOiBgdGVzdC0ke0RhdGUubm93KCl9YCxcbiAgICAgICAgICBzb3VyY2U6IFwiY2xhdWRlLWNvZGVcIiBhcyBjb25zdCxcbiAgICAgICAgICB0aXRsZTogXCJDb25uZWN0aW9uIFRlc3RcIixcbiAgICAgICAgICBwcm9qZWN0TmFtZTogXCJzeW5jdGVzdFwiLFxuICAgICAgICAgIHN0YXJ0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIGVuZGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgY2xpZW50LnN5bmNTZXNzaW9uKHRlc3RTZXNzaW9uKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJUZXN0IHNlc3Npb24gY3JlYXRlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiXFxuU3luYyB0ZXN0IHBhc3NlZC4gUmVhZHkgdG8gc3luYyBDbGF1ZGUgQ29kZSBzZXNzaW9ucy5cXG5cIik7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmxvZyhgVGVzdCBzZXNzaW9uIGZhaWxlZDogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJcXG5Db25uZWN0aW9uIHdvcmtzIGJ1dCBzeW5jIG1heSBoYXZlIGlzc3Vlcy5cXG5cIik7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJDb25uZWN0aW9uOiBGQUlMRURcIik7XG4gICAgICBjb25zb2xlLmxvZyhcIlxcbkNoZWNrIHlvdXIgQ29udmV4IFVSTCBhbmQgQVBJIGtleS5cXG5cIik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSG9vayBDb21tYW5kIChmb3IgQ2xhdWRlIENvZGUgaW50ZWdyYXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoXCJob29rIDxldmVudD5cIilcbiAgLmRlc2NyaXB0aW9uKFwiSGFuZGxlIENsYXVkZSBDb2RlIGhvb2sgZXZlbnRzIChyZWFkcyBzdGRpbilcIilcbiAgLmFjdGlvbihhc3luYyAoZXZlbnQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGxvYWRDb25maWcoKTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICAvLyBFeGl0IHNpbGVudGx5IGlmIG5vdCBjb25maWd1cmVkIChkb24ndCBibG9jayBDbGF1ZGUgQ29kZSlcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmF1dG9TeW5jID09PSBmYWxzZSkge1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cblxuICAgIC8vIFJlYWQgSlNPTiBpbnB1dCBmcm9tIHN0ZGluXG4gICAgbGV0IGlucHV0ID0gXCJcIjtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHByb2Nlc3Muc3RkaW4pIHtcbiAgICAgIGlucHV0ICs9IGNodW5rO1xuICAgIH1cblxuICAgIGlmICghaW5wdXQudHJpbSgpKSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTeW5jQ2xpZW50KGNvbmZpZyk7XG5cbiAgICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgICAgY2FzZSBcIlNlc3Npb25TdGFydFwiOiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoaW5wdXQpIGFzIEhvb2tTZXNzaW9uU3RhcnREYXRhO1xuICAgICAgICAgIGNvbnN0IHNlc3Npb246IFNlc3Npb25EYXRhID0ge1xuICAgICAgICAgICAgc2Vzc2lvbklkOiBkYXRhLnNlc3Npb25faWQsXG4gICAgICAgICAgICBzb3VyY2U6IFwiY2xhdWRlLWNvZGVcIixcbiAgICAgICAgICAgIGN3ZDogZGF0YS5jd2QsXG4gICAgICAgICAgICBwZXJtaXNzaW9uTW9kZTogZGF0YS5wZXJtaXNzaW9uX21vZGUsXG4gICAgICAgICAgICBzdGFydFR5cGU6IGRhdGEuc291cmNlID09PSBcInN0YXJ0dXBcIiA/IFwibmV3XCIgOiAoZGF0YS5zb3VyY2UgYXMgU2Vzc2lvbkRhdGFbXCJzdGFydFR5cGVcIl0pLFxuICAgICAgICAgICAgc3RhcnRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICBwcm9qZWN0UGF0aDogZGF0YS5jd2QsXG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogZGF0YS5jd2QgPyBkYXRhLmN3ZC5zcGxpdChcIi9cIikucG9wKCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCBjbGllbnQuc3luY1Nlc3Npb24oc2Vzc2lvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIFwiU2Vzc2lvbkVuZFwiOiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoaW5wdXQpIGFzIEhvb2tTZXNzaW9uRW5kRGF0YTtcbiAgICAgICAgICBjb25zdCBzZXNzaW9uOiBTZXNzaW9uRGF0YSA9IHtcbiAgICAgICAgICAgIHNlc3Npb25JZDogZGF0YS5zZXNzaW9uX2lkLFxuICAgICAgICAgICAgc291cmNlOiBcImNsYXVkZS1jb2RlXCIsXG4gICAgICAgICAgICBlbmRSZWFzb246IGRhdGEucmVhc29uLFxuICAgICAgICAgICAgZW5kZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYXdhaXQgY2xpZW50LnN5bmNTZXNzaW9uKHNlc3Npb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBcIlVzZXJQcm9tcHRTdWJtaXRcIjoge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGlucHV0KSBhcyBIb29rVXNlclByb21wdERhdGE7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZTogTWVzc2FnZURhdGEgPSB7XG4gICAgICAgICAgICBzZXNzaW9uSWQ6IGRhdGEuc2Vzc2lvbl9pZCxcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogYCR7ZGF0YS5zZXNzaW9uX2lkfS0ke0RhdGUubm93KCl9YCxcbiAgICAgICAgICAgIHNvdXJjZTogXCJjbGF1ZGUtY29kZVwiLFxuICAgICAgICAgICAgcm9sZTogXCJ1c2VyXCIsXG4gICAgICAgICAgICBjb250ZW50OiBkYXRhLnByb21wdCxcbiAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYXdhaXQgY2xpZW50LnN5bmNNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBcIlBvc3RUb29sVXNlXCI6IHtcbiAgICAgICAgICBpZiAoIWNvbmZpZy5zeW5jVG9vbENhbGxzKSBicmVhaztcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShpbnB1dCkgYXMgSG9va1Rvb2xVc2VEYXRhO1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2U6IE1lc3NhZ2VEYXRhID0ge1xuICAgICAgICAgICAgc2Vzc2lvbklkOiBkYXRhLnNlc3Npb25faWQsXG4gICAgICAgICAgICBtZXNzYWdlSWQ6IGAke2RhdGEuc2Vzc2lvbl9pZH0tdG9vbC0ke0RhdGUubm93KCl9YCxcbiAgICAgICAgICAgIHNvdXJjZTogXCJjbGF1ZGUtY29kZVwiLFxuICAgICAgICAgICAgcm9sZTogXCJhc3Npc3RhbnRcIixcbiAgICAgICAgICAgIHRvb2xOYW1lOiBkYXRhLnRvb2xfbmFtZSxcbiAgICAgICAgICAgIHRvb2xBcmdzOiBkYXRhLnRvb2xfaW5wdXQsXG4gICAgICAgICAgICB0b29sUmVzdWx0OiBkYXRhLnRvb2xfcmVzdWx0Py5vdXRwdXQgfHwgZGF0YS50b29sX3Jlc3VsdD8uZXJyb3IsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF3YWl0IGNsaWVudC5zeW5jTWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgXCJTdG9wXCI6IHtcbiAgICAgICAgICAvLyBTdG9wIGV2ZW50IGluZGljYXRlcyBDbGF1ZGUgZmluaXNoZWQgcmVzcG9uZGluZ1xuICAgICAgICAgIC8vIFdlIGNvdWxkIHRyYWNrIHRoaXMgYnV0IGZvciBub3cganVzdCBhY2tub3dsZWRnZVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBVbmtub3duIGV2ZW50LCBpZ25vcmVcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBMb2cgdG8gc3RkZXJyIGJ1dCBkb24ndCBibG9jayBDbGF1ZGUgQ29kZVxuICAgICAgY29uc29sZS5lcnJvcihgW2NsYXVkZS1jb2RlLXN5bmNdIEVycm9yOiAke2Vycm9yfWApO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cbiAgfSk7XG5cbi8vIFBhcnNlIGFuZCBydW5cbnByb2dyYW0ucGFyc2UoKTtcbiJdfQ==
|
|
566
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBOzs7Ozs7OztHQVFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHlDQUFvQztBQUNwQyxtREFBcUM7QUFDckMsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixtQ0FRaUI7QUF5Q2pCLGlDQUFpQztBQUNqQyxTQUFTLFVBQVU7SUFDakIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQWdCLENBQUM7UUFDekUsT0FBTyxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUFDO0tBQ3hCLFdBQVcsQ0FBQyxpREFBaUQsQ0FBQztLQUM5RCxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUV6QiwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUUvRSxTQUFTLE1BQU0sQ0FBQyxRQUFnQjtJQUM5QixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2xDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFB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QUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSztvQkFDL0QsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2lCQUNwQyxDQUFDO2dCQUNGLE1BQU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLENBQUM7WUFFRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ1osa0RBQWtEO2dCQUNsRCxtREFBbUQ7Z0JBQ25ELE1BQU07WUFDUixDQUFDO1lBRUQ7Z0JBQ0Usd0JBQXdCO2dCQUN4QixNQUFNO1FBQ1YsQ0FBQztRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZiw0Q0FBNEM7UUFDNUMsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVMLGdCQUFnQjtBQUNoQixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbi8qKlxuICogQ2xhdWRlIENvZGUgU3luYyBDTElcbiAqXG4gKiBDb21tYW5kczpcbiAqICAgbG9naW4gICAtIENvbmZpZ3VyZSBDb252ZXggVVJMIGFuZCBBUEkgS2V5XG4gKiAgIGxvZ291dCAgLSBDbGVhciBzdG9yZWQgY3JlZGVudGlhbHNcbiAqICAgc3RhdHVzICAtIFNob3cgY29ubmVjdGlvbiBzdGF0dXNcbiAqICAgY29uZmlnICAtIFNob3cgY3VycmVudCBjb25maWd1cmF0aW9uXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCAqIGFzIHJlYWRsaW5lIGZyb20gXCJyZWFkbGluZVwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge1xuICBsb2FkQ29uZmlnLFxuICBzYXZlQ29uZmlnLFxuICBjbGVhckNvbmZpZyxcbiAgU3luY0NsaWVudCxcbiAgQ29uZmlnLFxuICBTZXNzaW9uRGF0YSxcbiAgTWVzc2FnZURhdGEsXG59IGZyb20gXCIuL2luZGV4XCI7XG5cbi8vIFR5cGVzIGZvciBDbGF1ZGUgQ29kZSBob29rIGV2ZW50IGRhdGEgZnJvbSBzdGRpblxuaW50ZXJmYWNlIEhvb2tTZXNzaW9uU3RhcnREYXRhIHtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICBjd2Q/OiBzdHJpbmc7XG4gIHBlcm1pc3Npb25fbW9kZT86IHN0cmluZztcbiAgc291cmNlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSG9va1Nlc3Npb25FbmREYXRhIHtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICByZWFzb24/OiBcInVzZXJfc3RvcFwiIHwgXCJtYXhfdHVybnNcIiB8IFwiZXJyb3JcIiB8IFwiY29tcGxldGVkXCI7XG59XG5cbmludGVyZmFjZSBIb29rVXNlclByb21wdERhdGEge1xuICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gIHByb21wdDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSG9va1Rvb2xVc2VEYXRhIHtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICB0b29sX25hbWU6IHN0cmluZztcbiAgdG9vbF9pbnB1dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB0b29sX3Jlc3VsdD86IHtcbiAgICBvdXRwdXQ/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8vIFR5cGVzIGZvciBDbGF1ZGUgQ29kZSBzZXR0aW5ncy5qc29uXG5pbnRlcmZhY2UgQ2xhdWRlU2V0dGluZ3Mge1xuICBob29rcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vLyBUeXBlIGZvciBwYWNrYWdlLmpzb24gdmVyc2lvbiBmaWVsZFxuaW50ZXJmYWNlIFBhY2thZ2VKc29uIHtcbiAgdmVyc2lvbj86IHN0cmluZztcbn1cblxuLy8gUmVhZCB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG5mdW5jdGlvbiBnZXRWZXJzaW9uKCk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnUGF0aCwgXCJ1dGYtOFwiKSkgYXMgUGFja2FnZUpzb247XG4gICAgcmV0dXJuIHBrZy52ZXJzaW9uIHx8IFwiMC4wLjBcIjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFwiMC4wLjBcIjtcbiAgfVxufVxuXG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQoKTtcblxucHJvZ3JhbVxuICAubmFtZShcImNsYXVkZS1jb2RlLXN5bmNcIilcbiAgLmRlc2NyaXB0aW9uKFwiU3luYyBDbGF1ZGUgQ29kZSBzZXNzaW9ucyB0byBPcGVuU3luYyBkYXNoYm9hcmRcIilcbiAgLnZlcnNpb24oZ2V0VmVyc2lvbigpKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVscGVyIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBwcm9tcHQocXVlc3Rpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICB9KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBybC5xdWVzdGlvbihxdWVzdGlvbiwgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIHJlc29sdmUoYW5zd2VyLnRyaW0oKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtYXNrQXBpS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGtleS5sZW5ndGggPD0gOCkgcmV0dXJuIFwiKioqKlwiO1xuICByZXR1cm4ga2V5LnN1YnN0cmluZygwLCA0KSArIFwiKioqKlwiICsga2V5LnN1YnN0cmluZyhrZXkubGVuZ3RoIC0gNCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbW1hbmRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoXCJsb2dpblwiKVxuICAuZGVzY3JpcHRpb24oXCJDb25maWd1cmUgQ29udmV4IFVSTCBhbmQgQVBJIEtleVwiKVxuICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcIlxcbiAgQ2xhdWRlIENvZGUgU3luYyAtIExvZ2luXFxuXCIpO1xuICAgIGNvbnNvbGUubG9nKFwiR2V0IHlvdXIgQVBJIGtleSBmcm9tIHlvdXIgT3BlblN5bmMuZGV2IFNldHRpbmdzIHBhZ2UsIHN0YXJ0cyB3aXRoIG9za18uIEVudGVyIGl0IGhlcmU6XCIpO1xuICAgIGNvbnNvbGUubG9nKFwiICAxLiBHbyB0byBTZXR0aW5nc1wiKTtcbiAgICBjb25zb2xlLmxvZyhcIiAgMi4gQ2xpY2sgJ0dlbmVyYXRlIEFQSSBLZXknXCIpO1xuICAgIGNvbnNvbGUubG9nKFwiICAzLiBDb3B5IHRoZSBrZXkgKHN0YXJ0cyB3aXRoIG9za18pXFxuXCIpO1xuXG4gICAgY29uc3QgY29udmV4VXJsID0gYXdhaXQgcHJvbXB0KFwiQ29udmV4IFVSTCAoZS5nLiwgaHR0cHM6Ly95b3VyLXByb2plY3QuY29udmV4LmNsb3VkKTogXCIpO1xuXG4gICAgaWYgKCFjb252ZXhVcmwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvcjogQ29udmV4IFVSTCBpcyByZXF1aXJlZFwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbnZleFVybC5pbmNsdWRlcyhcImNvbnZleC5jbG91ZFwiKSAmJiAhY29udmV4VXJsLmluY2x1ZGVzKFwiY29udmV4LnNpdGVcIikpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvcjogSW52YWxpZCBDb252ZXggVVJMLiBNdXN0IGNvbnRhaW4gY29udmV4LmNsb3VkIG9yIGNvbnZleC5zaXRlXCIpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IGFwaUtleSA9IGF3YWl0IHByb21wdChcIkFQSSBLZXkgKG9za18uLi4pOiBcIik7XG5cbiAgICBpZiAoIWFwaUtleSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yOiBBUEkgS2V5IGlzIHJlcXVpcmVkXCIpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmICghYXBpS2V5LnN0YXJ0c1dpdGgoXCJvc2tfXCIpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3I6IEludmFsaWQgQVBJIEtleS4gTXVzdCBzdGFydCB3aXRoIG9za19cIik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnOiBDb25maWcgPSB7XG4gICAgICBjb252ZXhVcmwsXG4gICAgICBhcGlLZXksXG4gICAgICBhdXRvU3luYzogdHJ1ZSxcbiAgICAgIHN5bmNUb29sQ2FsbHM6IHRydWUsXG4gICAgICBzeW5jVGhpbmtpbmc6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBUZXN0IGNvbm5lY3Rpb25cbiAgICBjb25zb2xlLmxvZyhcIlxcblRlc3RpbmcgY29ubmVjdGlvbi4uLlwiKTtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgU3luY0NsaWVudChjb25maWcpO1xuICAgIGNvbnN0IGNvbm5lY3RlZCA9IGF3YWl0IGNsaWVudC50ZXN0Q29ubmVjdGlvbigpO1xuXG4gICAgaWYgKCFjb25uZWN0ZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvcjogQ291bGQgbm90IGNvbm5lY3QgdG8gQ29udmV4IGJhY2tlbmRcIik7XG4gICAgICBjb25zb2xlLmVycm9yKFwiICAgQ2hlY2sgeW91ciBVUkwgYW5kIHRyeSBhZ2FpblwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBTYXZlIGNvbmZpZ1xuICAgIHNhdmVDb25maWcoY29uZmlnKTtcbiAgICBjb25zb2xlLmxvZyhcIlxcbkNvbmZpZ3VyYXRpb24gc2F2ZWQhXCIpO1xuICAgIGNvbnNvbGUubG9nKGAgICBVUkw6ICR7Y29udmV4VXJsfWApO1xuICAgIGNvbnNvbGUubG9nKGAgICBLZXk6ICR7bWFza0FwaUtleShhcGlLZXkpfWApO1xuICAgIGNvbnNvbGUubG9nKFwiXFxuQWRkIHRoZSBwbHVnaW4gdG8geW91ciBDbGF1ZGUgQ29kZSBjb25maWcgdG8gc3RhcnQgc3luY2luZy5cXG5cIik7XG4gIH0pO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKFwibG9nb3V0XCIpXG4gIC5kZXNjcmlwdGlvbihcIkNsZWFyIHN0b3JlZCBjcmVkZW50aWFsc1wiKVxuICAuYWN0aW9uKCgpID0+IHtcbiAgICBjbGVhckNvbmZpZygpO1xuICAgIGNvbnNvbGUubG9nKFwiQ3JlZGVudGlhbHMgY2xlYXJlZFwiKTtcbiAgfSk7XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoXCJzdGF0dXNcIilcbiAgLmRlc2NyaXB0aW9uKFwiU2hvdyBjb25uZWN0aW9uIHN0YXR1c1wiKVxuICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBsb2FkQ29uZmlnKCk7XG5cbiAgICBjb25zb2xlLmxvZyhcIlxcbiAgQ2xhdWRlIENvZGUgU3luYyAtIFN0YXR1c1xcblwiKTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIk5vdCBjb25maWd1cmVkXCIpO1xuICAgICAgY29uc29sZS5sb2coXCIgICBSdW4gJ2NsYXVkZS1jb2RlLXN5bmMgbG9naW4nIHRvIHNldCB1cFxcblwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhcIkNvbmZpZ3VyYXRpb246XCIpO1xuICAgIGNvbnNvbGUubG9nKGAgIENvbnZleCBVUkw6ICR7Y29uZmlnLmNvbnZleFVybH1gKTtcbiAgICBjb25zb2xlLmxvZyhgICBBUEkgS2V5OiAgICAke21hc2tBcGlLZXkoY29uZmlnLmFwaUtleSl9YCk7XG4gICAgY29uc29sZS5sb2coYCAgQXV0byBTeW5jOiAgJHtjb25maWcuYXV0b1N5bmMgIT09IGZhbHNlID8gXCJlbmFibGVkXCIgOiBcImRpc2FibGVkXCJ9YCk7XG4gICAgY29uc29sZS5sb2coYCAgVG9vbCBDYWxsczogJHtjb25maWcuc3luY1Rvb2xDYWxscyAhPT0gZmFsc2UgPyBcImVuYWJsZWRcIiA6IFwiZGlzYWJsZWRcIn1gKTtcbiAgICBjb25zb2xlLmxvZyhgICBUaGlua2luZzogICAke2NvbmZpZy5zeW5jVGhpbmtpbmcgPyBcImVuYWJsZWRcIiA6IFwiZGlzYWJsZWRcIn1gKTtcblxuICAgIGNvbnNvbGUubG9nKFwiXFxuVGVzdGluZyBjb25uZWN0aW9uLi4uXCIpO1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTeW5jQ2xpZW50KGNvbmZpZyk7XG4gICAgY29uc3QgY29ubmVjdGVkID0gYXdhaXQgY2xpZW50LnRlc3RDb25uZWN0aW9uKCk7XG5cbiAgICBpZiAoY29ubmVjdGVkKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkNvbm5lY3RlZCB0byBDb252ZXggYmFja2VuZFxcblwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJFcnJvcjogQ291bGQgbm90IGNvbm5lY3QgdG8gQ29udmV4IGJhY2tlbmRcXG5cIik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9KTtcblxucHJvZ3JhbVxuICAuY29tbWFuZChcImNvbmZpZ1wiKVxuICAuZGVzY3JpcHRpb24oXCJTaG93IGN1cnJlbnQgY29uZmlndXJhdGlvblwiKVxuICAub3B0aW9uKFwiLS1qc29uXCIsIFwiT3V0cHV0IGFzIEpTT05cIilcbiAgLmFjdGlvbigob3B0aW9uczogeyBqc29uPzogYm9vbGVhbiB9KSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gbG9hZENvbmZpZygpO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBjb25maWd1cmVkOiBmYWxzZSB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vdCBjb25maWd1cmVkLiBSdW4gJ2NsYXVkZS1jb2RlLXN5bmMgbG9naW4nIHRvIHNldCB1cC5cIik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyZWQ6IHRydWUsXG4gICAgICAgICAgICBjb252ZXhVcmw6IGNvbmZpZy5jb252ZXhVcmwsXG4gICAgICAgICAgICBhcGlLZXk6IG1hc2tBcGlLZXkoY29uZmlnLmFwaUtleSksXG4gICAgICAgICAgICBhdXRvU3luYzogY29uZmlnLmF1dG9TeW5jICE9PSBmYWxzZSxcbiAgICAgICAgICAgIHN5bmNUb29sQ2FsbHM6IGNvbmZpZy5zeW5jVG9vbENhbGxzICE9PSBmYWxzZSxcbiAgICAgICAgICAgIHN5bmNUaGlua2luZzogY29uZmlnLnN5bmNUaGlua2luZyA9PT0gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgMlxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlxcbiAgQ3VycmVudCBDb25maWd1cmF0aW9uXFxuXCIpO1xuICAgICAgY29uc29sZS5sb2coYENvbnZleCBVUkw6ICAke2NvbmZpZy5jb252ZXhVcmx9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgQVBJIEtleTogICAgICR7bWFza0FwaUtleShjb25maWcuYXBpS2V5KX1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGBBdXRvIFN5bmM6ICAgJHtjb25maWcuYXV0b1N5bmMgIT09IGZhbHNlfWApO1xuICAgICAgY29uc29sZS5sb2coYFRvb2wgQ2FsbHM6ICAke2NvbmZpZy5zeW5jVG9vbENhbGxzICE9PSBmYWxzZX1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGBUaGlua2luZzogICAgJHtjb25maWcuc3luY1RoaW5raW5nID09PSB0cnVlfWApO1xuICAgICAgY29uc29sZS5sb2coYFxcbkNvbmZpZyBmaWxlOiB+Ly5jb25maWcvY2xhdWRlLWNvZGUtc3luYy9jb25maWcuanNvblxcbmApO1xuICAgIH1cbiAgfSk7XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoXCJzZXQgPGtleT4gPHZhbHVlPlwiKVxuICAuZGVzY3JpcHRpb24oXCJTZXQgYSBjb25maWd1cmF0aW9uIHZhbHVlXCIpXG4gIC5hY3Rpb24oKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gbG9hZENvbmZpZygpO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJOb3QgY29uZmlndXJlZC4gUnVuICdjbGF1ZGUtY29kZS1zeW5jIGxvZ2luJyBmaXJzdC5cIik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRLZXlzID0gW1wiYXV0b1N5bmNcIiwgXCJzeW5jVG9vbENhbGxzXCIsIFwic3luY1RoaW5raW5nXCJdO1xuICAgIGlmICghdmFsaWRLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQga2V5LiBWYWxpZCBrZXlzOiAke3ZhbGlkS2V5cy5qb2luKFwiLCBcIil9YCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgYm9vbFZhbHVlID0gdmFsdWUgPT09IFwidHJ1ZVwiIHx8IHZhbHVlID09PSBcIjFcIiB8fCB2YWx1ZSA9PT0gXCJ5ZXNcIjtcbiAgICBcbiAgICAvLyBUeXBlLXNhZmUgY29uZmlnIHVwZGF0ZVxuICAgIGlmIChrZXkgPT09IFwiYXV0b1N5bmNcIikge1xuICAgICAgY29uZmlnLmF1dG9TeW5jID0gYm9vbFZhbHVlO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSBcInN5bmNUb29sQ2FsbHNcIikge1xuICAgICAgY29uZmlnLnN5bmNUb29sQ2FsbHMgPSBib29sVmFsdWU7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09IFwic3luY1RoaW5raW5nXCIpIHtcbiAgICAgIGNvbmZpZy5zeW5jVGhpbmtpbmcgPSBib29sVmFsdWU7XG4gICAgfVxuXG4gICAgc2F2ZUNvbmZpZyhjb25maWcpO1xuICAgIGNvbnNvbGUubG9nKGBTZXQgJHtrZXl9ID0gJHtib29sVmFsdWV9YCk7XG4gIH0pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXR1cCBDb21tYW5kIChjb25maWd1cmVzIENsYXVkZSBDb2RlIGhvb2tzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDbGF1ZGUgQ29kZSBob29rcyBjb25maWd1cmF0aW9uXG5jb25zdCBDTEFVREVfSE9PS1NfQ09ORklHID0ge1xuICBob29rczoge1xuICAgIFNlc3Npb25TdGFydDogW1xuICAgICAge1xuICAgICAgICBob29rczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiY29tbWFuZFwiLFxuICAgICAgICAgICAgY29tbWFuZDogXCJjbGF1ZGUtY29kZS1zeW5jIGhvb2sgU2Vzc2lvblN0YXJ0XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBTZXNzaW9uRW5kOiBbXG4gICAgICB7XG4gICAgICAgIGhvb2tzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJjb21tYW5kXCIsXG4gICAgICAgICAgICBjb21tYW5kOiBcImNsYXVkZS1jb2RlLXN5bmMgaG9vayBTZXNzaW9uRW5kXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBVc2VyUHJvbXB0U3VibWl0OiBbXG4gICAgICB7XG4gICAgICAgIGhvb2tzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJjb21tYW5kXCIsXG4gICAgICAgICAgICBjb21tYW5kOiBcImNsYXVkZS1jb2RlLXN5bmMgaG9vayBVc2VyUHJvbXB0U3VibWl0XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBQb3N0VG9vbFVzZTogW1xuICAgICAge1xuICAgICAgICBtYXRjaGVyOiBcIipcIixcbiAgICAgICAgaG9va3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImNvbW1hbmRcIixcbiAgICAgICAgICAgIGNvbW1hbmQ6IFwiY2xhdWRlLWNvZGUtc3luYyBob29rIFBvc3RUb29sVXNlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBTdG9wOiBbXG4gICAgICB7XG4gICAgICAgIG1hdGNoZXI6IFwiKlwiLFxuICAgICAgICBob29rczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiY29tbWFuZFwiLFxuICAgICAgICAgICAgY29tbWFuZDogXCJjbGF1ZGUtY29kZS1zeW5jIGhvb2sgU3RvcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKFwic2V0dXBcIilcbiAgLmRlc2NyaXB0aW9uKFwiQWRkIGhvb2tzIHRvIENsYXVkZSBDb2RlIHNldHRpbmdzIChjb25maWd1cmVzIH4vLmNsYXVkZS9zZXR0aW5ncy5qc29uKVwiKVxuICAub3B0aW9uKFwiLS1mb3JjZVwiLCBcIk92ZXJ3cml0ZSBleGlzdGluZyBob29rcyBjb25maWd1cmF0aW9uXCIpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IHsgZm9yY2U/OiBib29sZWFuIH0pID0+IHtcbiAgICBjb25zdCBjbGF1ZGVEaXIgPSBwYXRoLmpvaW4ocHJvY2Vzcy5lbnYuSE9NRSB8fCBcIn5cIiwgXCIuY2xhdWRlXCIpO1xuICAgIGNvbnN0IHNldHRpbmdzUGF0aCA9IHBhdGguam9pbihjbGF1ZGVEaXIsIFwic2V0dGluZ3MuanNvblwiKTtcblxuICAgIGNvbnNvbGUubG9nKFwiXFxuICBDbGF1ZGUgQ29kZSBTeW5jIC0gU2V0dXBcXG5cIik7XG5cbiAgICAvLyBDaGVjayBpZiBwbHVnaW4gY3JlZGVudGlhbHMgYXJlIGNvbmZpZ3VyZWRcbiAgICBjb25zdCBjb25maWcgPSBsb2FkQ29uZmlnKCk7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiV2FybmluZzogUGx1Z2luIG5vdCBjb25maWd1cmVkIHlldC5cIik7XG4gICAgICBjb25zb2xlLmxvZyhcIiAgIFJ1biAnY2xhdWRlLWNvZGUtc3luYyBsb2dpbicgZmlyc3QgdG8gc2V0IHVwIGNyZWRlbnRpYWxzLlxcblwiKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgLmNsYXVkZSBkaXJlY3RvcnkgaWYgbmVlZGVkXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGNsYXVkZURpcikpIHtcbiAgICAgIGZzLm1rZGlyU3luYyhjbGF1ZGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgY29uc29sZS5sb2coXCJDcmVhdGVkIH4vLmNsYXVkZSBkaXJlY3RvcnlcIik7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGV4aXN0aW5nIHNldHRpbmdzXG4gICAgbGV0IGV4aXN0aW5nU2V0dGluZ3M6IENsYXVkZVNldHRpbmdzID0ge307XG4gICAgbGV0IGhhc0V4aXN0aW5nSG9va3MgPSBmYWxzZTtcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHNldHRpbmdzUGF0aCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoc2V0dGluZ3NQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgICBleGlzdGluZ1NldHRpbmdzID0gSlNPTi5wYXJzZShjb250ZW50KSBhcyBDbGF1ZGVTZXR0aW5ncztcbiAgICAgICAgaGFzRXhpc3RpbmdIb29rcyA9ICEhZXhpc3RpbmdTZXR0aW5ncy5ob29rcztcbiAgICAgICAgY29uc29sZS5sb2coXCJGb3VuZCBleGlzdGluZyBzZXR0aW5ncy5qc29uXCIpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiV2FybmluZzogQ291bGQgbm90IHBhcnNlIGV4aXN0aW5nIHNldHRpbmdzLmpzb24sIHdpbGwgY3JlYXRlIG5ldyBvbmVcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGV4aXN0aW5nIGhvb2tzXG4gICAgaWYgKGhhc0V4aXN0aW5nSG9va3MgJiYgIW9wdGlvbnMuZm9yY2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiXFxuRXhpc3RpbmcgaG9va3MgY29uZmlndXJhdGlvbiBmb3VuZC5cIik7XG4gICAgICBjb25zb2xlLmxvZyhcIiAgIFVzZSAtLWZvcmNlIHRvIG92ZXJ3cml0ZSwgb3IgbWFudWFsbHkgbWVyZ2UgdGhlIGhvb2tzLlxcblwiKTtcbiAgICAgIGNvbnNvbGUubG9nKFwiVG8gbWFudWFsbHkgYWRkLCBpbmNsdWRlIHRoZXNlIGhvb2tzIGluIHlvdXIgc2V0dGluZ3MuanNvbjpcIik7XG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShDTEFVREVfSE9PS1NfQ09ORklHLCBudWxsLCAyKSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gTWVyZ2Ugc2V0dGluZ3NcbiAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHtcbiAgICAgIC4uLmV4aXN0aW5nU2V0dGluZ3MsXG4gICAgICAuLi5DTEFVREVfSE9PS1NfQ09ORklHLFxuICAgIH07XG5cbiAgICAvLyBXcml0ZSBzZXR0aW5nc1xuICAgIHRyeSB7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHNldHRpbmdzUGF0aCwgSlNPTi5zdHJpbmdpZnkobmV3U2V0dGluZ3MsIG51bGwsIDIpKTtcbiAgICAgIGNvbnNvbGUubG9nKFwiXFxuQ2xhdWRlIENvZGUgaG9va3MgY29uZmlndXJlZCFcIik7XG4gICAgICBjb25zb2xlLmxvZyhgICAgU2V0dGluZ3MgZmlsZTogJHtzZXR0aW5nc1BhdGh9YCk7XG4gICAgICBjb25zb2xlLmxvZyhcIlxcblNldHVwIGNvbXBsZXRlLiBTZXNzaW9ucyB3aWxsIHN5bmMgYXV0b21hdGljYWxseS5cXG5cIik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3cml0aW5nIHNldHRpbmdzOlwiLCBlcnJvcik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9KTtcblxucHJvZ3JhbVxuICAuY29tbWFuZChcInZlcmlmeVwiKVxuICAuZGVzY3JpcHRpb24oXCJWZXJpZnkgY3JlZGVudGlhbHMgYW5kIENsYXVkZSBDb2RlIGNvbmZpZ3VyYXRpb25cIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJcXG4gIE9wZW5TeW5jIFNldHVwIFZlcmlmaWNhdGlvblxcblwiKTtcblxuICAgIC8vIENoZWNrIGNyZWRlbnRpYWxzXG4gICAgY29uc3QgY29uZmlnID0gbG9hZENvbmZpZygpO1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiQ3JlZGVudGlhbHM6IE9LXCIpO1xuICAgICAgY29uc29sZS5sb2coYCAgIENvbnZleCBVUkw6ICR7Y29uZmlnLmNvbnZleFVybH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGAgICBBUEkgS2V5OiAke21hc2tBcGlLZXkoY29uZmlnLmFwaUtleSl9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiQ3JlZGVudGlhbHM6IE5PVCBDT05GSUdVUkVEXCIpO1xuICAgICAgY29uc29sZS5sb2coXCIgICBSdW4gJ2NsYXVkZS1jb2RlLXN5bmMgbG9naW4nIHRvIHNldCB1cFwiKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBDbGF1ZGUgQ29kZSBjb25maWdcbiAgICBjb25zdCBzZXR0aW5nc1BhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5lbnYuSE9NRSB8fCBcIn5cIiwgXCIuY2xhdWRlXCIsIFwic2V0dGluZ3MuanNvblwiKTtcbiAgICBsZXQgaG9va3NDb25maWd1cmVkID0gZmFsc2U7XG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzZXR0aW5nc1BhdGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHNldHRpbmdzUGF0aCwgXCJ1dGYtOFwiKTtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIENsYXVkZVNldHRpbmdzO1xuICAgICAgICBob29rc0NvbmZpZ3VyZWQgPSAhIXNldHRpbmdzLmhvb2tzPy5TZXNzaW9uU3RhcnQ7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gSWdub3JlIHBhcnNlIGVycm9yc1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFwiXCIpO1xuICAgIGlmIChob29rc0NvbmZpZ3VyZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiQ2xhdWRlIENvZGUgQ29uZmlnOiBPS1wiKTtcbiAgICAgIGNvbnNvbGUubG9nKGAgICBDb25maWcgZmlsZTogJHtzZXR0aW5nc1BhdGh9YCk7XG4gICAgICBjb25zb2xlLmxvZyhcIiAgIEhvb2tzIHJlZ2lzdGVyZWQ6IGNsYXVkZS1jb2RlLXN5bmNcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiQ2xhdWRlIENvZGUgQ29uZmlnOiBOT1QgQ09ORklHVVJFRFwiKTtcbiAgICAgIGNvbnNvbGUubG9nKFwiICAgUnVuICdjbGF1ZGUtY29kZS1zeW5jIHNldHVwJyB0byBjb25maWd1cmUgaG9va3NcIik7XG4gICAgfVxuXG4gICAgLy8gVGVzdCBjb25uZWN0aW9uIGlmIGNyZWRlbnRpYWxzIGV4aXN0XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgY29uc29sZS5sb2coXCJcXG5UZXN0aW5nIGNvbm5lY3Rpb24uLi5cIik7XG4gICAgICBjb25zdCBjbGllbnQgPSBuZXcgU3luY0NsaWVudChjb25maWcpO1xuICAgICAgY29uc3QgY29ubmVjdGVkID0gYXdhaXQgY2xpZW50LnRlc3RDb25uZWN0aW9uKCk7XG4gICAgICBpZiAoY29ubmVjdGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ29ubmVjdGlvbjogT0tcXG5cIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkNvbm5lY3Rpb246IEZBSUxFRFxcblwiKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb25maWcgJiYgaG9va3NDb25maWd1cmVkKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlJlYWR5ISBTdGFydCBDbGF1ZGUgQ29kZSBhbmQgc2Vzc2lvbnMgd2lsbCBzeW5jIGF1dG9tYXRpY2FsbHkuXFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH0pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTeW5jIFRlc3QgQ29tbWFuZCAodGVzdCBjb25uZWN0aXZpdHkpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoXCJzeW5jdGVzdFwiKVxuICAuZGVzY3JpcHRpb24oXCJUZXN0IGNvbm5lY3Rpdml0eSBhbmQgY3JlYXRlIGEgdGVzdCBzZXNzaW9uXCIpXG4gIC5hY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGxvYWRDb25maWcoKTtcblxuICAgIGNvbnNvbGUubG9nKFwiXFxuICBDbGF1ZGUgQ29kZSBTeW5jIC0gQ29ubmVjdGlvbiBUZXN0XFxuXCIpO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiTm90IGNvbmZpZ3VyZWRcIik7XG4gICAgICBjb25zb2xlLmxvZyhcIiAgIFJ1biAnY2xhdWRlLWNvZGUtc3luYyBsb2dpbicgdG8gc2V0IHVwXFxuXCIpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFwiQ29uZmlndXJhdGlvbjpcIik7XG4gICAgY29uc29sZS5sb2coYCAgQ29udmV4IFVSTDogJHtjb25maWcuY29udmV4VXJsfWApO1xuICAgIGNvbnNvbGUubG9nKGAgIEFQSSBLZXk6ICAgICR7bWFza0FwaUtleShjb25maWcuYXBpS2V5KX1gKTtcblxuICAgIGNvbnNvbGUubG9nKFwiXFxuVGVzdGluZyBjb25uZWN0aW9uLi4uXCIpO1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTeW5jQ2xpZW50KGNvbmZpZyk7XG4gICAgY29uc3QgY29ubmVjdGVkID0gYXdhaXQgY2xpZW50LnRlc3RDb25uZWN0aW9uKCk7XG5cbiAgICBpZiAoY29ubmVjdGVkKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkNvbm5lY3Rpb246IE9LXCIpO1xuICAgICAgXG4gICAgICAvLyBDcmVhdGUgYSB0ZXN0IHNlc3Npb24gdG8gdmVyaWZ5IGZ1bGwgc3luYyB3b3Jrc1xuICAgICAgY29uc29sZS5sb2coXCJcXG5DcmVhdGluZyB0ZXN0IHNlc3Npb24uLi5cIik7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0ZXN0U2Vzc2lvbiA9IHtcbiAgICAgICAgICBzZXNzaW9uSWQ6IGB0ZXN0LSR7RGF0ZS5ub3coKX1gLFxuICAgICAgICAgIHNvdXJjZTogXCJjbGF1ZGUtY29kZVwiIGFzIGNvbnN0LFxuICAgICAgICAgIHRpdGxlOiBcIkNvbm5lY3Rpb24gVGVzdFwiLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBcInN5bmN0ZXN0XCIsXG4gICAgICAgICAgc3RhcnRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgZW5kZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBjbGllbnQuc3luY1Nlc3Npb24odGVzdFNlc3Npb24pO1xuICAgICAgICBjb25zb2xlLmxvZyhcIlRlc3Qgc2Vzc2lvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJcXG5TeW5jIHRlc3QgcGFzc2VkLiBSZWFkeSB0byBzeW5jIENsYXVkZSBDb2RlIHNlc3Npb25zLlxcblwiKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBUZXN0IHNlc3Npb24gZmFpbGVkOiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmxvZyhcIlxcbkNvbm5lY3Rpb24gd29ya3MgYnV0IHN5bmMgbWF5IGhhdmUgaXNzdWVzLlxcblwiKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkNvbm5lY3Rpb246IEZBSUxFRFwiKTtcbiAgICAgIGNvbnNvbGUubG9nKFwiXFxuQ2hlY2sgeW91ciBDb252ZXggVVJMIGFuZCBBUEkga2V5LlxcblwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH0pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIb29rIENvbW1hbmQgKGZvciBDbGF1ZGUgQ29kZSBpbnRlZ3JhdGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxucHJvZ3JhbVxuICAuY29tbWFuZChcImhvb2sgPGV2ZW50PlwiKVxuICAuZGVzY3JpcHRpb24oXCJIYW5kbGUgQ2xhdWRlIENvZGUgaG9vayBldmVudHMgKHJlYWRzIHN0ZGluKVwiKVxuICAuYWN0aW9uKGFzeW5jIChldmVudDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gbG9hZENvbmZpZygpO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIC8vIEV4aXQgc2lsZW50bHkgaWYgbm90IGNvbmZpZ3VyZWQgKGRvbid0IGJsb2NrIENsYXVkZSBDb2RlKVxuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuYXV0b1N5bmMgPT09IGZhbHNlKSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuXG4gICAgLy8gUmVhZCBKU09OIGlucHV0IGZyb20gc3RkaW5cbiAgICBsZXQgaW5wdXQgPSBcIlwiO1xuICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcHJvY2Vzcy5zdGRpbikge1xuICAgICAgaW5wdXQgKz0gY2h1bms7XG4gICAgfVxuXG4gICAgaWYgKCFpbnB1dC50cmltKCkpIHtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY2xpZW50ID0gbmV3IFN5bmNDbGllbnQoY29uZmlnKTtcblxuICAgICAgc3dpdGNoIChldmVudCkge1xuICAgICAgICBjYXNlIFwiU2Vzc2lvblN0YXJ0XCI6IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShpbnB1dCkgYXMgSG9va1Nlc3Npb25TdGFydERhdGE7XG4gICAgICAgICAgY29uc3Qgc2Vzc2lvbjogU2Vzc2lvbkRhdGEgPSB7XG4gICAgICAgICAgICBzZXNzaW9uSWQ6IGRhdGEuc2Vzc2lvbl9pZCxcbiAgICAgICAgICAgIHNvdXJjZTogXCJjbGF1ZGUtY29kZVwiLFxuICAgICAgICAgICAgY3dkOiBkYXRhLmN3ZCxcbiAgICAgICAgICAgIHBlcm1pc3Npb25Nb2RlOiBkYXRhLnBlcm1pc3Npb25fbW9kZSxcbiAgICAgICAgICAgIHN0YXJ0VHlwZTogZGF0YS5zb3VyY2UgPT09IFwic3RhcnR1cFwiID8gXCJuZXdcIiA6IChkYXRhLnNvdXJjZSBhcyBTZXNzaW9uRGF0YVtcInN0YXJ0VHlwZVwiXSksXG4gICAgICAgICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIHByb2plY3RQYXRoOiBkYXRhLmN3ZCxcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBkYXRhLmN3ZCA/IGRhdGEuY3dkLnNwbGl0KFwiL1wiKS5wb3AoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF3YWl0IGNsaWVudC5zeW5jU2Vzc2lvbihzZXNzaW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgXCJTZXNzaW9uRW5kXCI6IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShpbnB1dCkgYXMgSG9va1Nlc3Npb25FbmREYXRhO1xuICAgICAgICAgIGNvbnN0IHNlc3Npb246IFNlc3Npb25EYXRhID0ge1xuICAgICAgICAgICAgc2Vzc2lvbklkOiBkYXRhLnNlc3Npb25faWQsXG4gICAgICAgICAgICBzb3VyY2U6IFwiY2xhdWRlLWNvZGVcIixcbiAgICAgICAgICAgIGVuZFJlYXNvbjogZGF0YS5yZWFzb24sXG4gICAgICAgICAgICBlbmRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCBjbGllbnQuc3luY1Nlc3Npb24oc2Vzc2lvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIFwiVXNlclByb21wdFN1Ym1pdFwiOiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoaW5wdXQpIGFzIEhvb2tVc2VyUHJvbXB0RGF0YTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlOiBNZXNzYWdlRGF0YSA9IHtcbiAgICAgICAgICAgIHNlc3Npb25JZDogZGF0YS5zZXNzaW9uX2lkLFxuICAgICAgICAgICAgbWVzc2FnZUlkOiBgJHtkYXRhLnNlc3Npb25faWR9LSR7RGF0ZS5ub3coKX1gLFxuICAgICAgICAgICAgc291cmNlOiBcImNsYXVkZS1jb2RlXCIsXG4gICAgICAgICAgICByb2xlOiBcInVzZXJcIixcbiAgICAgICAgICAgIGNvbnRlbnQ6IGRhdGEucHJvbXB0LFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCBjbGllbnQuc3luY01lc3NhZ2UobWVzc2FnZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIFwiUG9zdFRvb2xVc2VcIjoge1xuICAgICAgICAgIGlmICghY29uZmlnLnN5bmNUb29sQ2FsbHMpIGJyZWFrO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGlucHV0KSBhcyBIb29rVG9vbFVzZURhdGE7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZTogTWVzc2FnZURhdGEgPSB7XG4gICAgICAgICAgICBzZXNzaW9uSWQ6IGRhdGEuc2Vzc2lvbl9pZCxcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogYCR7ZGF0YS5zZXNzaW9uX2lkfS10b29sLSR7RGF0ZS5ub3coKX1gLFxuICAgICAgICAgICAgc291cmNlOiBcImNsYXVkZS1jb2RlXCIsXG4gICAgICAgICAgICByb2xlOiBcImFzc2lzdGFudFwiLFxuICAgICAgICAgICAgdG9vbE5hbWU6IGRhdGEudG9vbF9uYW1lLFxuICAgICAgICAgICAgdG9vbEFyZ3M6IGRhdGEudG9vbF9pbnB1dCxcbiAgICAgICAgICAgIHRvb2xSZXN1bHQ6IGRhdGEudG9vbF9yZXN1bHQ/Lm91dHB1dCB8fCBkYXRhLnRvb2xfcmVzdWx0Py5lcnJvcixcbiAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYXdhaXQgY2xpZW50LnN5bmNNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBcIlN0b3BcIjoge1xuICAgICAgICAgIC8vIFN0b3AgZXZlbnQgaW5kaWNhdGVzIENsYXVkZSBmaW5pc2hlZCByZXNwb25kaW5nXG4gICAgICAgICAgLy8gV2UgY291bGQgdHJhY2sgdGhpcyBidXQgZm9yIG5vdyBqdXN0IGFja25vd2xlZGdlXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIC8vIFVua25vd24gZXZlbnQsIGlnbm9yZVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIExvZyB0byBzdGRlcnIgYnV0IGRvbid0IGJsb2NrIENsYXVkZSBDb2RlXG4gICAgICBjb25zb2xlLmVycm9yKGBbY2xhdWRlLWNvZGUtc3luY10gRXJyb3I6ICR7ZXJyb3J9YCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICB9KTtcblxuLy8gUGFyc2UgYW5kIHJ1blxucHJvZ3JhbS5wYXJzZSgpO1xuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-code-sync",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Sync your Claude Code sessions to OpenSync dashboard. Track coding sessions, analyze tool usage, and monitor token consumption across projects.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|