xiaomianao666

小程序:tgx音乐

Sep 2nd, 2023
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@tgx音乐@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoidGd46Z+z5LmQIiwiYXV0aG9yIjoiVGhvbWFz5ZayIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIiwidmVyc2lvbiI6MjAyMzA4MDcsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoibXVzaWMiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczokLnJlcXVpcmUoJ2hvbWU/cnVsZT10Z3jpn7PkuZAnKTsiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjI2Z5cGFnZSMjIyoqIiwiZ3JvdXAiOiIz6Z+z5LmQIiwic2VhcmNoRmluZCI6ImpzOiQucmVxdWlyZSgnc2VhcmNoP3J1bGU9dGd46Z+z5LmQJyk7IiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJwYyIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi4pGh6YCa55So5Ye95pWwXCIsXCJwYXRoXCI6XCJpbmZvXCIsXCJydWxlXCI6XCJqczpcXG5jb25zdCBwY2FwaSA9IFxcXCJodHRwczovL3d3dy5rdXdvLmNuL2FwaS9cXFwiO1xcbmNvbnN0IGVtcHR5ID0gJ2hpa2VyOi8vZW1wdHkjI2Z5cGFnZSc7XFxuY29uc3QgQ29sb3IgPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gJzxmb250IGNvbG9yPVxcXCIjRkE3Mjk4XFxcIj4nICsgdGVzdCArICc8L2Zyb250Pic7XFxufVxcbmNvbnN0IFN0cm9uZyA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiAnPHN0cm9uZz4nICsgdGVzdCArICc8L3N0cm9uZz4nO1xcbn1cXG5jb25zdCBSaWNoID0gKHRlc3QpID0+IHtcXG4gICAgcmV0dXJuIFxcXCLigJjigJjigJnigJlcXFwiICsgdGVzdDtcXG59XFxuc2FyciA9IFtcXG4gICAgWyfogZrmkJwnLCAnOTk5J10sXFxuICAgIFsn5Y2V5puyJywgJzEnXSxcXG4gICAgWyfkuJPovpEnLCAnMiddLFxcbiAgICBbJyZuYnNwO01WJm5ic3A7JywgJzMnXSxcXG4gICAgWyfmrYzljZUnLCAnNCddLFxcbiAgICBbJ+atjOaJiycsICc1J11cXG5dO1xcblxcblxcblxcbmxhenkxID0gJChcXFwiXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dGd46Z+z5LmQJywge30pKS5ydWxlKTtcXG5cXG4gICAgLy8g5q2M6K+NXFxuICAgIHRyeSB7XFxuICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShcXFwiaHR0cDovL20ua3V3by5jbi9uZXdoNS9zaW5nbGVzL3NvbmdpbmZvYW5kbHJjP211c2ljSWQ9XFxcIiArIGlucHV0ICsgXFxcIiZcXFwiKTtcXG4gICAgICAgIGxyYyA9IF8ubHJjbGlzdC5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgbSA9IE1hdGguZmxvb3IoXy50aW1lIC8gNjApO1xcbiAgICAgICAgICAgIHMgPSAoXy50aW1lICUgNjApLnRvRml4ZWQoMyk7XFxuICAgICAgICAgICAgcmV0dXJuIGBbJHttLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtzLnBhZFN0YXJ0KDYsICcwJyl9XWAgKyBfLmxpbmVMeXJpY1xcbiAgICAgICAgfSkuam9pbignXFxcXG4nKTtcXG4gICAgfSBjYXRjaCAoZXJyKSB7XFxuICAgICAgICBscmMgPSBcXFwiXFxcIlxcbiAgICB9XFxuXFxuICAgIC8vIOmTvuaOpVxcbiAgICB0cnkge1xcbiAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyAndjEvd3d3L211c2ljL3BsYXlVcmw/bWlkPScgKyBpbnB1dCArICcmdHlwZT1tdXNpYyYnKTtcXG4gICAgICAgIHVybCA9IF8udXJsO1xcbiAgICAgICAgbG9nKHVybCk7XFxuICAgIH0gY2F0Y2ggKGVycikgeyAvLyDosIPnlKjop6PmnpBcXG4gICAgICAgIGV2YWxQcml2YXRlSlMoXFxcIjJJN01TVkJMaXZGcUZ3clJXYlllcVlhQ3FzejNVREhGZGlQQ3d0TXduZHdRU0VHbjJ0cnFxMVBwYTRraGRjUmdQU0ZKSE1NdHNZWHd0N3dtUllwWjBOc2puUklmd3NITGhXTmpSRkdnN2lENHBpR3dUeERZNXp0UTJuWFlUZmJ1Qkw3c1VkMzVrclJnUUgzMFhGQzU3YVdzMjFweTgzbjJhL0o2cnZOVmpINFBnNGxHUHArMkNXVmRoSi9tZWZCSjFQQWN1b1Zyem9ORnNldFJmaDR0bmNpQTBtOVcwbE9rd3lIUHhuV29yNTFOaXUzVUo0RmJUZU1wb0wwN0ZYK3VzOGhhUzN0TDhWQnBtcTV4T3lCNTlGSDZ4VHI5ZEZtYVU4cjFUN1ZwbmREWEFTUThmSFpSZndJKytCTXpxdjN1R0dvekcxaGprK1Y3WmdGT2M2S3ZFbng1ZXM0eEtqMmo1TUw0REtxMUN6eWFtNXFkK0tlZ2trRVNPRzhrUVFlcHYzNmxsZzZTRmFuRERablpXVFA1dEVDdCtBUnJIZ0xaV2laNk9kdHFZZVROOHFxVWN0dHZQS2pTNGw0Qk5VeFVGMUp1QjM1NVNPMEo0SkJ1aDVkQnNSNkkrdVlNZ2JaR0UvS0JRd2dYdHpOR1ZqalIyUU5reDU2VjZGU1dlTkJreVVvdzJiTlg0NDRqQ0Y0a3h0ODczVmRkcVppcmhRaEVkcmJLdVBWN2xERVd2VDg1N081NTMzdEdLZ2VKVXZZemNhL0F0S2JRS3NBVVVwQnUzTG1KWGdwSWFBZnJucGx0Um9kdnl3RXR0Ri9ZS3ZuVUwrM3Iyc3FIZ3FRMmpNQUdWd2VNMUkreWdhQWh0M0tNQkc0QXptUm11Z09rY3p6Wlp3eGVGdFBnOUU0ODczTGx5Qks0SzlRL3o3b0Jab1Rsc3l2dmRIbnh4TnpqMDZNcXRmVzJhTUtBc0R3QnkyMGVHYTErS1BXa1paakxLOHRJMWxaeit3aWYrOVpJQWRUMkJuNXJNdm1Rb2h3WHYrTzhrSUJrd3l6UjVtd1UwaXdMOG9aeHo3eExMNEtUbHRBckdVemVNMFZGb2RFakZDbkhkaEczczZoTW5sREUrYXFnbDN6U2xQWGpqM2VDejV3Y2JnWVdkbnJ0U0Z4U1RSZkJ5cmg0YnUwZEIzOTByZDBDcy9FbnpGOWtibldaOENVVGVpTCtzbFRNcGw3OTJtTVl0SlVNNEN6TzJSc1ZkVkNnVWxOMlRzOXRpSFY1MEZIdEVGUlYyTThLL3N4NGRHQWZRYm9CR2NCM3BROVphQkhyQXNnK2ROUiswV092ZS9OZ3Y2R3U1Mk82VjBWanQwM0lcXFwiKTtcXG4gICAgfVxcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgdXJsczogW3VybF0sXFxuICAgICAgICBseXJpYzogbHJjXFxuICAgIH0pO1xcbn0pO1xcblxcblxcbkxpc3RfUHVzaCA9IChfLCBzaSkgPT4ge1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKHNpID09PSAxKSB7IC8vIOatjOabslxcbiAgICAgICAgICAgIG5ld0RhdGEgPSB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAoXy5zb25nTmFtZSB8fCBfLm5hbWUpICsgJyAtICcgKyBfLmFydGlzdCxcXG4gICAgICAgICAgICAgICAgaW1nOiBfLnBpYyxcXG4gICAgICAgICAgICAgICAgY29udGVudDogJ1xcXFxu8J+UliAnICsgKF8uaXNMaXN0ZW5GZWUgPT0gdHJ1ZSA/ICdQYWlkJyA6ICdGcmVlJykgKyAnTXVzaWPjgIDwn5OAICcgKyAoXy5hbGJ1bSB8fCAn5pqC5peg5LiT6L6RJyksXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfwn5O8ICcgKyBfLnNvbmdUaW1lTWludXRlcyxcXG4gICAgICAgICAgICAgICAgdXJsOiAoXy5pZCB8fCBfLnJpZCkgKyBsYXp5MSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IGdldEl0ZW0oJ3R5cGUnLCAnY2FyZF9waWNfMycpXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0gZWxzZSBpZiAoc2kgPT09IDIpIHsgLy8g5LiT6L6RXFxuICAgICAgICAgICAgbmV3RGF0YSA9IHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IF8uYWxidW0sXFxuICAgICAgICAgICAgICAgIGltZzogXy5waWMsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdcXFxcbvCfjrsgJyArIF8uYXJ0aXN0ICsgJ+OAgPCfk4AgJyArIChfLmFsYnVtIHx8ICfmmoLml6DkuJPovpEnKSxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ/Cfk4YgJyArIF8ucmVsZWFzZURhdGUsXFxuICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSkucnVsZSgoYWxidW1pZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvYWxidW0vYWxidW1JbmZvP2FsYnVtSWQ9XFxcIiArIGFsYnVtaWQgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIF8ubXVzaWNMaXN0Lm1hcChfID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGlzdF9QdXNoKF8sIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgIH0sIF8uYWxidW1pZClcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSBlbHNlIGlmIChzaSA9PT0gMykgeyAvLyBNVlxcbiAgICAgICAgICAgIG5ld0RhdGEgPSB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBfLm5hbWUgKyAnIC0gJyArIF8uYXJ0aXN0LFxcbiAgICAgICAgICAgICAgICBpbWc6IF8ucGljLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnXFxcXG7wn5SlICcgKyBfLm12UGxheUNudCxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ/Cfk7wgJyArIF8uc29uZ1RpbWVNaW51dGVzLFxcbiAgICAgICAgICAgICAgICB1cmw6IChfLmlkIHx8IF8ucmlkKSArICQoXFxcIlxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKHBjYXBpICsgXFxcInYxL3d3dy9tdXNpYy9wbGF5VXJsP21pZD1cXFwiICsgaW5wdXQgKyBcXFwiJnR5cGU9bXYmXFxcIikudXJsXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0gZWxzZSBpZiAoc2kgPT09IDQpIHsgLy8g5q2M5Y2VXFxuICAgICAgICAgICAgbmV3RGF0YSA9IHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IF8ubmFtZSxcXG4gICAgICAgICAgICAgICAgaW1nOiBfLmltZyxcXG4gICAgICAgICAgICAgICAgY29udGVudDogJ1xcXFxu8J+OuyAnICsgKF8udXNlck5hbWUgfHwgXy51bmFtZSkgKyAn44CA8J+TnyAnICsgXy50b3RhbCArICfpppbmrYzmm7InLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn8J+UpSAnICsgXy5saXN0ZW5jbnQsXFxuICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSkucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L3BsYXlsaXN0L3BsYXlMaXN0SW5mbz9waWQ9XFxcIiArIGlkICsgXFxcIiZwbj1cXFwiICsgTVlfUEFHRSArIFxcXCImcm49MzAmXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICBfLm11c2ljTGlzdC5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9QdXNoKF8sIDEpXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgfSwgXy5pZClcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSBlbHNlIGlmIChzaSA9PT0gNSkgeyAvLyDmrYzmiYtcXG4gICAgICAgICAgICBuZXdEYXRhID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXy5uYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IF8ucGljLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnXFxcXG7wn5OfICcgKyBfLm11c2ljTnVtICsgJ+mmluatjOabsicsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfwn4yQICcgKyBfLmNvdW50cnksXFxuICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSkucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L2FydGlzdC9hcnRpc3RNdXNpYz9hcnRpc3RpZD1cXFwiICsgaWQgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIF8ubGlzdC5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9QdXNoKF8sIDEpXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgfSwgXy5pZClcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgRXh0cmEobmV3RGF0YSwgc2ksIChfLmlkIHx8IF8ucmlkIHx8IF8uYWxidW1pZCkpO1xcbiAgICB9IGNhdGNoIChlcnIpIHtcXG4gICAgICAgIGxvZyhlcnIpXFxuICAgIH1cXG59XFxuXFxuXFxubWFwSGlzdG9yeSA9IChoaXN0b3J5KSA9PiB7XFxuICAgIGxldCBpID0gMCxcXG4gICAgICAgIGlkID0gXFxcInRneOmfs+S5kFxcXCI7XFxuICAgIGZvciAobGV0IGtleSBvZiBoaXN0b3J5KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBrZXksXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChrZXksc2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb2tleScsIGtleSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBrZXkgKyBcXFwiIyMjXFxcIiArIHNpZCArIFxcXCImcnVsZT10Z3jpn7PkuZBcXFwiO1xcbiAgICAgICAgICAgIH0sIGtleSwgZ2V0TXlWYXIoJ2lucHV0MicsIGdldEl0ZW0oJ3NpZCcsICcxJykpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogaWQgKyBcXFwiOmtleTpcXFwiICsga2V5LFxcbiAgICAgICAgICAgICAgICBjbHM6IGlkICsgXFxcIjprZXlcXFwiLFxcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIoOmZpOWFs+mUruivjTpcXFwiICsga2V5LFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGlkLCBrZXksIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGlzdG9yeSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcInNlYXJjaEhpc3RvcnlcXFwiLCBbXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5zcGxpY2UoaSwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwic2VhcmNoSGlzdG9yeVxcXCIsIGhpc3RvcnkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoaXN0b3J5Lmxlbmd0aCA9PSAwKSBhZGRJdGVtQWZ0ZXIoaWQgKyBcXFwiOnNlYXJjaEhpc3RvcnlcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBcXFwifn5+5LuA5LmI6YO95rKh5pyJ5ZOmfn5+XFxcIi5mb250Y29sb3IoXFxcIkdyYXlcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsczogaWQgKyBcXFwiOmtleVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0oaWQgKyBcXFwiOmtleTpcXFwiICsga2V5KTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGlkLCBrZXksIGkpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICBpKys7XFxuICAgIH1cXG59XFxuXFxuXFxuXFxuRXh0cmEgPSAobmV3RGF0YSwgc2ksIHp5aWQpID0+IHtcXG4gICAgbmV3RGF0YS5leHRyYSA9IHtcXG4gICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuKYhSDliIbkuqvpk77mjqUg4piFXFxcIixcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoc2ksIHp5aWQpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiY29sbGVjdGlvbjI/cnVsZT10Z3jpn7PkuZBcXFwiKS5jb3B5dXJsKHNpLCB6eWlkKTtcXG4gICAgICAgICAgICB9LCBzaSwgenlpZClcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuKYhSDmlLbol49cXFwiICsgc2FycltzaV1bMF0gKyBcXFwiIOKYhVxcXCIsXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG5ld0RhdGEsIHNpKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikubG9nRGF0YShuZXdEYXRhLCBzaSk7XFxuICAgICAgICAgICAgfSwgbmV3RGF0YSwgc2kpXFxuICAgICAgICB9XVxcbiAgICB9O1xcbiAgICByZXR1cm4gZC5wdXNoKG5ld0RhdGEpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRpeiBmuWQiOaQnOe0olwiLFwicGF0aFwiOlwic2VhcmNoXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dGd46Z+z5LmQJywge30pKS5ydWxlKTtcXG5cXG5cXG5kID0gW107XFxuXyA9IE1ZX1VSTC5zcGxpdCgnIyMjJyk7XFxuXFxuLy8g6buY6K6kMe+8jOaQnOWNleabslxcbnNpZCA9IF9bM10gfHwgZ2V0SXRlbSgnc2lkJywgJzEnKTtcXG5zb2tleSA9IF9bMl07XFxuXFxuaWYgKHNva2V5Lm1hdGNoKC9e6IGa5ZCIP+aQnOe0oj8vKSB8fCBzaWQgPT0gJzk5OScpIHtcXG4gICAgc2lkID0gJzk5OSdcXG4gICAgc29rZXkgPSBzb2tleS50cmltKCkucmVwbGFjZSgvXuiBmuWQiD/mkJzntKI/LywgXFxcIlxcXCIpO1xcbn1cXG5cXG5cXG5pZiAoc29rZXkubWF0Y2goL2t1d29cXFxcLmNuLykpIHtcXG4gICAgbWF0ID0gKHJlZykgPT4gc29rZXkubWF0Y2gocmVnKSA/IGlkID0gc29rZXkubWF0Y2gocmVnKVsyXSA6IGZhbHNlO1xcblxcbiAgICBpZiAobWF0KC9cXFxcLyh5aW55dWV8cGxheV9kZXRhaWwpXFxcXC8oXFxcXGQrKS9pKSkge1xcbiAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikoXFxcImh0dHA6Ly9tLmt1d28uY24vbmV3aDUvc2luZ2xlcy9zb25naW5mb2FuZGxyYz9tdXNpY0lkPVxcXCIgKyBpZCArIFxcXCImXFxcIilcXG4gICAgICAgIF8gPSBfLnNvbmdpbmZvO1xcbiAgICAgICAgTGlzdF9QdXNoKF8sIDEpO1xcbiAgICB9IGVsc2UgaWYgKG1hdCgvYWxidW0oaWQ9fF9kZXRhaWxcXFxcLykoXFxcXGQrKS9pKSkge1xcbiAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L2FsYnVtL2FsYnVtSW5mbz9hbGJ1bUlkPVxcXCIgKyBpZCArIFxcXCImcG49MSZybj0xJlxcXCIpO1xcbiAgICAgICAgTGlzdF9QdXNoKF8sIDIpO1xcbiAgICB9IGVsc2UgaWYgKG1hdCgvXFxcXC9tdnBsYXkoXFxcXC9cXFxcZCspP1xcXFwvKFxcXFxkKykvaSkpIHtcXG4gICAgICAgICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKHBjYXBpICsgXFxcInd3dy9tdXNpYy9tdXNpY0luZm8/bWlkPVxcXCIgKyBpZCArIFxcXCImaXA9JmNpcD0mXFxcIik7XFxuICAgICAgICBpZiAoXylcXG4gICAgICAgICAgICBMaXN0X1B1c2goXywgMyk7XFxuICAgICAgICBlbHNlIHtcXG4gICAgICAgICAgICBkaXYgPSBmZXRjaENvZGVCeVdlYlZpZXcoc29rZXksIHtcXG4gICAgICAgICAgICAgICAgJ2Jsb2NrUnVsZXMnOiBbJy5wbmcnLCAnLmpwZycsICcuY3NzJ10sXFxuICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDk5OTlcXG4gICAgICAgICAgICB9KS5tYXRjaCgvKFxcXFwoZnVuY3Rpb25cXFxcKFtcXFxcU1xcXFxzXStcXFxcKVxcXFwpKTsvKVsxXTtcXG4gICAgICAgICAgICBfID0gZXZhbChkaXYpLmRhdGFbMF0uVmlkZW9JbmZvO1xcbiAgICAgICAgICAgIHMgPSBfLmR1cmF0aW9uICUgNjBcXG4gICAgICAgICAgICBtID0gXy5kdXJhdGlvbiAtIHNcXG4gICAgICAgICAgICB0aW1lID0gbSAvIDYwICsgJzonICsgc1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBfLm5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogXy5waWMsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICAn8J+UpSAnICsgXy5jb3VudF9wbGF5KydcXFxcbvCfjrsgJyArIF8udXNlcl9uYW1lLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn8J+TvCAnICsgdGltZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBfLnVybFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKG1hdCgvXFxcXC9wbGF5bGlzdChfZGV0YWlsKT9cXFxcLyhcXFxcZCspL2kpKSB7XFxuICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvcGxheWxpc3QvcGxheUxpc3RJbmZvP3BpZD1cXFwiICsgaWQgKyBcXFwiJnBuPTEmcm49MSZcXFwiKTtcXG4gICAgICAgIExpc3RfUHVzaChfLCA0KTtcXG4gICAgfSBlbHNlIGlmIChtYXQoL1xcXFwvKGFydGlzdERldGFpbFxcXFw/aWQ9fHNpbmdlcl9kZXRhaWxcXFxcLykoXFxcXGQrKS9pKSkge1xcbiAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L2FydGlzdC9hcnRpc3Q/YXJ0aXN0aWQ9XFxcIiArIGlkICsgXFxcIiZcXFwiKTtcXG4gICAgICAgIExpc3RfUHVzaChfLCA1KTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLpk77mjqXmoLzlvI/mnKrmlLblvZVcXFwiLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfVxcblxcblxcblxcbn0gZWxzZSB7XFxuXFxuXFxuICAgIC8vIOS/neWtmOaQnOe0ouWFs+mUruivjVxcbiAgICBsZXQgaGlzdG9yeSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcInNlYXJjaEhpc3RvcnlcXFwiLCBbXSk7XFxuICAgIGxldCBpaSA9IGhpc3RvcnkuaW5kZXhPZihzb2tleSk7XFxuICAgIGxldCBpZCA9IFxcXCJ0Z3jpn7PkuZBcXFwiO1xcbiAgICBpZiAoaWkgPiAtMSkge1xcbiAgICAgICAgaGlzdG9yeS5zcGxpY2UoaWksIDEpO1xcbiAgICB9XFxuICAgIGlmIChoaXN0b3J5Lmxlbmd0aCA+IDEwKSB7XFxuICAgICAgICBoaXN0b3J5LnNwbGljZShoaXN0b3J5Lmxlbmd0aCAtIDEsIDEpO1xcbiAgICB9XFxuICAgIGhpc3RvcnkudW5zaGlmdChzb2tleSk7XFxuICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcInNlYXJjaEhpc3RvcnlcXFwiLCBoaXN0b3J5KTtcXG4gICAgbWFwSGlzdG9yeShoaXN0b3J5KTtcXG4gICAgZGVsZXRlSXRlbUJ5Q2xzKGlkICsgXFxcIjprZXlcXFwiKTtcXG4gICAgYWRkSXRlbUFmdGVyKGlkICsgXFxcIjpzZWFyY2hIaXN0b3J5XFxcIiwgZCk7XFxuXFxuXFxuXFxuXFxuXFxuXFxuICAgIGQgPSBbXTtcXG4gICAgc3VybCA9IChzdHlwZSkgPT4gJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L3NlYXJjaC9zZWFyY2hcXFwiICsgc3R5cGUgKyBcXFwiQnlrZXlXb3JkP2tleT1cXFwiICsgc29rZXkgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgc3dpdGNoIChzaWQpIHtcXG5cXG5cXG5cXG4gICAgICAgIGNhc2UgJzk5OSc6XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLogZrmkJwgPT4gXFxcIiArIHNva2V5LFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBzb2tleSArIFxcXCImcnVsZT11Y2tr5LqRXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzOiAkLnRvU3RyaW5nKChzYXJyLCBpbnB1dCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNhcnJbMF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Fyci5tYXAoW3RpdGxlLCBzaWRdID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6IHRpdGxlLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNlYXJjaF91cmxcXFwiOiBcXFwiaGlrZXI6Ly9lbXB0eSMjI2Z5cGFnZSMjI1xcXCIgKyBpbnB1dCArIFxcXCIjIyNcXFwiICsgc2lkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNlYXJjaEZpbmRcXFwiOiBcXFwianM6ICQucmVxdWlyZSgnc2VhcmNoP3J1bGU9dGd46Z+z5LmQJyk7XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNhcnIsIHNva2V5KVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBicmVhaztcXG5cXG5cXG5cXG4gICAgICAgIGNhc2UgJzEnOlxcbiAgICAgICAgICAgIHN1cmwoJ011c2ljJyk7XFxuICAgICAgICAgICAgXy5saXN0Lm1hcChfID0+IExpc3RfUHVzaChfLCAxKSk7XFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuICAgICAgICBjYXNlICcyJzpcXG4gICAgICAgICAgICBzdXJsKCdBbGJ1bScpO1xcbiAgICAgICAgICAgIF8uYWxidW1MaXN0Lm1hcChfID0+IExpc3RfUHVzaChfLCAyKSk7XFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuICAgICAgICBjYXNlICczJzpcXG4gICAgICAgICAgICBzdXJsKCdNdicpO1xcbiAgICAgICAgICAgIF8ubXZsaXN0Lm1hcChfID0+IExpc3RfUHVzaChfLCAzKSk7XFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuICAgICAgICBjYXNlICc0JzpcXG4gICAgICAgICAgICBzdXJsKCdQbGF5TGlzdCcpO1xcbiAgICAgICAgICAgIF8ubGlzdC5tYXAoXyA9PiBMaXN0X1B1c2goXywgNCkpO1xcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcblxcbiAgICAgICAgY2FzZSAnNSc6XFxuICAgICAgICAgICAgc3VybCgnQXJ0aXN0Jyk7XFxuICAgICAgICAgICAgXy5saXN0Lm1hcChfID0+IExpc3RfUHVzaChfLCA1KSk7XFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6ZSZ6K+v55qE5pCc57Si5o6l5Y+jXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICB9XFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRoueoi+W6j+mmlumhtVwiLFwicGF0aFwiOlwiaG9tZVwiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuaW5zdGFsbCA9ICgpID0+IHtcXG4gICAgaWYgKGdldEl0ZW0oJ3R5cGVfMCcsICcwJykgPT0gJzEnKSB7XFxuICAgICAgICBpaSA9IGxlbjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCdpaScsICcwJykgPT0gaWkgPyBSaWNoKFN0cm9uZyhDb2xvcihcXFwi6K6+572uXFxcIikpKSA6IFxcXCLorr7nva5cXFwiLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgaWkpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCBpaSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuXFxuXFxuZCA9IFtdO1xcbnRyeSB7XFxuICAgIHRhcnIgPSBbXFxcIuaOqOiNkFxcXCIsIFxcXCLkuLvpophcXFwiLCBcXFwi5b+D5oOFXFxcIiwgXFxcIuWcuuaZr1xcXCIsIFxcXCLlubTku6NcXFwiLCBcXFwi5puy6aOOXFxcIiwgXFxcIuivreiogFxcXCIsIFxcXCLmjpLooYxcXFwiLCBcXFwi5q2M5omLXFxcIiwgXFxcIiZuYnNwO01WJm5ic3A7XFxcIl07XFxuICAgIGlmIChNWV9QQUdFID09PSAxKSB7XFxuICAgICAgICB0YXJyLmNvbmNhdChcXFwi6K6+572uXFxcIikubWFwKChuYW1lLCB0aWQpID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ3RpZCcsIGdldEl0ZW0oJ3RpZCcsICcwJykpID09IHRpZCA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHRpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3RpZCcsIHRpZCk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdpaScpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgfSwgdGlkKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cXFwiY29sb3I6I2ZmNjYwMVxcXCI+PGI+6L2s5YiwIFRHWOaUtuiXjzwvYj48L3NwYW4+JyxcXG4gICAgICAgICAgICBkZXNjOiAn5q2M5Y2V5pS26JePJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvY29sbGVjdGlvbiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiLFxcbiAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vZ2hwcm94eS5jb20vaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xzMTI1NzgxMDAzL2xtdHViaWFvL21haW4vbXVzaWMvODIuc3ZnJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBcXFwiVEdY5pS26JePXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJ/CflI0nLFxcbiAgICAgICAgICAgIGRlc2M6ICfmkJzntKLlhbPplK7or40gLyDliIbkuqvpk77mjqUnLFxcbiAgICAgICAgICAgIHVybDogJ1xcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIraW5wdXQrXFxcIiZydWxlPVxcXCIrTVlfUlVMRS50aXRsZScsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwic29rZXlcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0TXlWYXIoJ3Nva2V5JyxpbnB1dClcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAn5oiR55qE5pS26JePJyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2NvbGxlY3Rpb24/cnVsZT10Z3jpn7PkuZAnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WOhuWPsuiusOW9lScsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9oaXN0b3J5P3J1bGU9dGd46Z+z5LmQJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICfpq5jnuqfmkJzntKInLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zZWFyY2gyI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuXFxuXFxuICAgIOiuvue9riA9IDA7XFxuICAgIHRpZCA9IGdldE15VmFyKCd0aWQnLCBnZXRJdGVtKCd0aWQnLCAnMCcpKTtcXG4gICAgdGlpID0gZ2V0TXlWYXIoJ2lpJywgZ2V0SXRlbSgnaWlfMF8nICsgdGlkLCAnMCcpKTtcXG4gICAgaWYgKHRpZCA8IDcpIHtcXG4gICAgICAgIGlUYWcgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiaVRhZ1xcXCIpO1xcbiAgICAgICAgaWYgKGlUYWcgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBpVGFnID0gJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L3BsYXlsaXN0L2dldFRhZ0xpc3Q/XFxcIik7XFxuICAgICAgICAgICAgaVRhZyA9IFt7XFxuICAgICAgICAgICAgICAgIG5hbWU6IFxcXCLmjqjojZBcXFwiLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXFxcIuavj+aXpeaOqOiNkFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBpZDogXFxcInJjbS9pbmRleC9wbGF5bGlzdD9pZD1yY21cXFwiXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFxcXCLmnIDmlrDnsr7pgIlcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJjbGFzc2lmeS9wbGF5bGlzdC9nZXRSY21QbGF5TGlzdD9vcmRlcj1uZXdcXFwiXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFxcXCLng63pl6jnsr7pgIlcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJjbGFzc2lmeS9wbGF5bGlzdC9nZXRSY21QbGF5TGlzdD9vcmRlcj1ob3RcXFwiXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfV0uY29uY2F0KGlUYWcpO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJpVGFnXFxcIiwgaVRhZyk7XFxuICAgICAgICB9XFxuICAgICAgICB6dSA9IGlUYWdbdGlkXS5kYXRhLm1hcChfID0+IF8ubmFtZSk7XFxuICAgICAgICBsZW4gPSB6dS5sZW5ndGg7XFxuICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8Yj48Zm9udCBjb2xvcj0jZmY2NjAxPicgKyB0YXJyW3RpZF0gKyAnPC9mb250PjwvYj4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaVRhZ1t0aWRdLmRhdGEubWFwKChfLCBpaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpaSA9PSBpaSA/IFJpY2goU3Ryb25nKENvbG9yKF8ubmFtZSkpKSA6IF8ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaWknLCBpaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgIH0sIGlpKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5zdGFsbCgpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHRpaSA9PSBsZW4pIHtcXG4gICAgICAgICAgICDorr7nva4gPSAxO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxIHx8ICEodGlkID09ICcwJyAmJiB0aWkgPT0gJzAnKSkge1xcbiAgICAgICAgICAgICAgICBpZCA9IGlUYWdbdGlkXS5kYXRhW3RpaV0uaWQ7XFxuICAgICAgICAgICAgICAgIGlmICh0aWQgIT0gJzAnKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZCA9IFxcXCJjbGFzc2lmeS9wbGF5bGlzdC9nZXRUYWdQbGF5TGlzdD9pZD1cXFwiICsgaWQ7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L1xcXCIgKyBpZCArIFxcXCImcG49XFxcIiArIE1ZX1BBR0UgKyBcXFwiJnJuPTMwJlxcXCIpO1xcbiAgICAgICAgICAgICAgICAoXy5kYXRhIHx8IF8ubGlzdCkubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgRXh0cmEoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBfLmltZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoZW1wdHkpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvcGxheWxpc3QvcGxheUxpc3RJbmZvP3BpZD1cXFwiICsgaWQgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLm11c2ljTGlzdC5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X1B1c2goXywgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgXy5pZCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18zJ1xcbiAgICAgICAgICAgICAgICAgICAgfSwgNCwgXy5pZClcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKHRpZCA9PSA3KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PGZvbnQgY29sb3I9I2ZmNjYwMT7mjpLooYw8L2ZvbnQ+PC9iPicsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIF8gPSBzdG9yYWdlMC5nZXRNeVZhcignYmFuZycpXFxuICAgICAgICBpZiAoXyA9PSAnJykge1xcbiAgICAgICAgICAgIF8gPSAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvYmFuZy9iYW5nL2JhbmdNZW51P1xcXCIpO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCdiYW5nJywgXyk7XFxuICAgICAgICB9XFxuICAgICAgICBfLmZvckVhY2goKF8sIGlpKSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpaSA9PSBpaSA/IFJpY2goU3Ryb25nKENvbG9yKF8ubmFtZSkpKSA6IF8ubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgaWkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCBpaSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgenUgPSBbXTtcXG4gICAgICAgIF8uZm9yRWFjaChfID0+IHp1LnB1c2goXy5uYW1lKSk7XFxuICAgICAgICBsZW4gPSB6dS5sZW5ndGg7XFxuICAgICAgICBpbnN0YWxsKCk7XFxuICAgICAgICBpZiAodGlpID09IGxlbikge1xcbiAgICAgICAgICAgIOiuvue9riA9IDE7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIF9bdGlpXS5saXN0Lm1hcChfID0+IHtcXG4gICAgICAgICAgICAgICAgRXh0cmEoe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogXy5waWMsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoZW1wdHkpLnJ1bGUoKHNvdXJjZWlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L2JhbmcvYmFuZy9tdXNpY0xpc3Q/YmFuZ0lkPVxcXCIgKyBzb3VyY2VpZCArIFxcXCImcG49XFxcIiArIE1ZX1BBR0UgKyBcXFwiJnJuPTMwJlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBfLm11c2ljTGlzdC5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfUHVzaChfLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBfLnNvdXJjZWlkKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMydcXG4gICAgICAgICAgICAgICAgfSwgNCwgXFxcInJhbmtMaXN0XFxcIilcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIGlmICh0aWQgPT0gOCkge1xcbiAgICAgICAgenUgPSBbXFxcIuWFqOmDqFxcXCIsIFxcXCLljY7or63nlLdcXFwiLCBcXFwi5Y2O6K+t5aWzXFxcIiwgXFxcIuWNjuivree7hOWQiFxcXCIsIFxcXCLml6Xpn6nnlLdcXFwiLCBcXFwi5pel6Z+p5aWzXFxcIiwgXFxcIuaXpemfqee7hOWQiFxcXCIsIFxcXCLmrKfnvo7nlLdcXFwiLCBcXFwi5qyn576O5aWzXFxcIiwgXFxcIuasp+e+jue7hOWQiFxcXCIsIFxcXCLlhbbku5ZcXFwiXTtcXG4gICAgICAgIGxlbiA9IHp1Lmxlbmd0aDtcXG4gICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxmb250IGNvbG9yPSNmZjY2MDE+5q2M5omLPC9mb250PjwvYj4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgenUubWFwKChuYW1lLCBpaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpaSA9PSBpaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdpaScsIGlpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaWkpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpbnN0YWxsKCk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICBpZiAodGlpID09IGxlbikge1xcbiAgICAgICAgICAgIOiuvue9riA9IDE7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKFxcXCJodHRwczovL3dhcGkua3V3by5jbi9hcGkvd3d3L2FydGlzdC9hcnRpc3RJbmZvP2NhdGVnb3J5PVxcXCIgKyBnZXRNeVZhcignaWknLCAnMCcpICsgXFxcIiZwcmVmaXg9JnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICBfLmFydGlzdExpc3QubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICBFeHRyYSh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBfLnBpYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSkucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dGd46Z+z5LmQJywge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvYXJ0aXN0L2FydGlzdE11c2ljP2FydGlzdGlkPVxcXCIgKyBpZCArIFxcXCImcG49XFxcIiArIE1ZX1BBR0UgKyBcXFwiJnJuPTMwJlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBfLmxpc3QubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X1B1c2goXywgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgXy5pZCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnXFxuICAgICAgICAgICAgICAgIH0sIDUsIF8uaWQpXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gZWxzZSBpZiAodGlkID09IDkpIHtcXG4gICAgICAgIHp1ID0gW1xcXCLpppbmkq1cXFwiLCBcXFwi5Y2O6K+tXFxcIiwgXFxcIuaXpemfqVxcXCIsIFxcXCLnvZHnu5xcXFwiLCBcXFwi5qyn576OXFxcIiwgXFxcIueOsOWculxcXCIsIFxcXCLng63oiJ5cXFwiLCBcXFwi5Lyk5oSfXFxcIiwgXFxcIuWJp+aDhVxcXCJdO1xcbiAgICAgICAgbGVuID0genUubGVuZ3RoO1xcbiAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PGZvbnQgY29sb3I9I2ZmNjYwMT5NVjwvZm9udD48L2I+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHp1Lm1hcCgobmFtZSwgaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aWkgPT0gaWkgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaWknLCBpaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgIH0sIGlpKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5zdGFsbCgpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHRpaSA9PSBsZW4pIHtcXG4gICAgICAgICAgICDorr7nva4gPSAxO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvbXVzaWMvbXZMaXN0P3BpZD1cXFwiICsgKFsyMzY2ODI4NzEsIDIzNjY4MjczMSwgMjM2NzQyNDQ0LCAyMzY2ODI3NzMsIDIzNjY4MjczNSwgMjM2NzQyNTc2LCAyMzY2ODI3NzcsIDIzNjc0MjUwOCwgMjM2NzQyNTc4XVtnZXRNeVZhcignaWknLCAnMCcpXSkgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICBfLm12bGlzdC5tYXAoXyA9PiBMaXN0X1B1c2goXywgMykpO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxmb250IGNvbG9yPSNmZjY2MDE+6K6+572uPC9mb250PjwvYj4nLFxcbiAgICAgICAgICAgIHVybDogJChcXFwi56Gu5a6a5oGi5aSN6buY6K6k6K6+572u5ZCX77yfXFxcIikuY29uZmlybSgoc2FycikgPT4ge1xcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3R5cGVfMScpO1xcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3R5cGVfMCcpO1xcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3R5cGUnKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCd0aWQnKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzaWQnKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzaScpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKylcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnaWlfMF8nICsgaSk7XFxuICAgICAgICAgICAgICAgIGZvciAoaXQgb2Ygc2FycilcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnaWlfMV8nICsgaXRbMV0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBzYXJyKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgW1xcXCLln7rnoYBcXFwiLCBcXFwi5Li76aG1XFxcIiwgXFxcIuaQnOe0olxcXCJdLm1hcCgobmFtZSwgaWkpID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ2lpJywgJzAnKSA9PSBpaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGlpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaWknLCBpaSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgIH0sIGlpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBpaSA9IGdldE15VmFyKCdpaScsICcwJyk7XFxuICAgICAgICBpZiAoaWkgPT0gJzAnKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfliIbnu4Torr7nva4nLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5YiG57G75pi+56S65YiG57uE6K6+572uJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCLnoa7lrprph43nva7liIbnu4Tnm7jlhbPorr7nva7lkJfvvJ9cXFwiKS5jb25maXJtKChsZW4xKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3R5cGVfMCcpO1xcbiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjE7IGkrKylcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ2lpXzBfJyArIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICB9LCB0aWQpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+5ZCv55So6K6+572uPC9iPicsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCd0eXBlXzAnLCBzaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCBnZXRJdGVtKCd0eXBlXzAnLCAnMCcpID09ICcxJyA/ICcwJyA6ICcxJyksXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArIChnZXRJdGVtKCd0eXBlXzAnLCAnMCcpID09IDEgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+m7mOiupOagt+W8jycsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfmrYzmm7LliJfooajnmoTpu5jorqTmoLflvI8nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIuehruWumuaBouWkjem7mOiupOiuvue9ruWQl++8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCd0eXBlJyk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBbJ2NhcmRfcGljXzMnLCAnYXZhdGFyJywgJ3RleHRfMSddLm1hcChuYW1lID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+JyArIG5hbWUgKyAnPC9iPicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCd0eXBlJywgbmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgIH0sIG5hbWUpLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKGdldEl0ZW0oJ3R5cGUnLCAnY2FyZF9waWNfMycpID09IG5hbWUgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuajgOa1i+abtOaWsFxcXCIsXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLlvZPliY3niYjmnKzvvJpcXFwiICsgU3RyaW5nKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9ob21lQHRneOmfs+S5kFxcXCIpKS52ZXJzaW9uKS5yZXBsYWNlKC8oXFxcXGRcXFxcZCkoXFxcXGRcXFxcZCkkLywgJy0kMS0kMicpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcImhpa2VyOi8vZW1wdHlcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFxuICAgICAgICAgICAgICAgICAgICB2dGltZSA9IE51bWJlcihnZXRJdGVtKCd2dGltZScsICcwJykpICsgNmU2O1xcblxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZ0aW1lIDwgbmV3IERhdGUoKS5nZXRUaW1lKCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2hvbWVAdGd46Z+z5LmQXFxcIikpLnZlcnNpb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3dyLmxhbnpvdWkuY29tL2IwM3FodjE0ZFxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHdkID0gXFxcInJlYWRcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWQgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCA4LjAuMDsgTUkgNXMgUGx1cyBCdWlsZC9PUFIxLjE3MDYyMy4wMzI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzEuMC4zNTc4Ljk5IE1vYmlsZSBTYWZhcmkvNTM3LjM2XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSBmZXRjaCh1cmwsIGhlYWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoc3JjLm1hdGNoKC92YXIgcGdzOyhbXFxcXHNcXFxcU10qP3Bncy4rOykvKVsxXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnXz0nICsgc3JjLm1hdGNoKC9kYXRhIDooW1xcXFxzXFxcXFNdKj9cXFxcfSkvKVsxXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZC5ib2R5ID0gT2JqZWN0LmtleXMoXykubWFwKGtleSA9PiBrZXkgKyBcXFwiPVxcXCIgKyBfW2tleV0pLmpvaW4oJyYnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkLm1ldGhvZCA9ICdQT1NUJztcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgvXFxcXC5jb20uKi8sIFxcXCIuY29tL2ZpbGVtb3JlYWpheC5waHBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBfID0gSlNPTi5wYXJzZShmZXRjaCh1cmwsIGhlYWQpKS50ZXh0WzBdO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBfLm5hbWVfYWxsLm1hdGNoKC9cXFxcWyguKylcXFxcXS8pWzFdLnNwbGl0KCdfJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdiA9IH5+bmFtZVswXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2diA9IG5hbWVbMV0gfHwgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbiA8IHYgfHwgKHZlcnNpb24gPT0gdiAmJiB2diA+IDEpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5pu05paw5o+Q56S6JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICfmo4DmtYvliLDkvaDnmoTop4TliJnniYjmnKzlsI/kuo7mnI3liqHlmajniYjmnKzvvIzmmK/lkKbnq4vljbPmm7TmlrDvvJ8nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygoZGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCd2dGltZScsIFN0cmluZyhuZXcgRGF0ZSgpLmdldFRpbWUoKSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1ID0gXFxcImh0dHBzOi8vZGV2ZWxvcGVyLmxhbnpvdWcuY29tL2ZpbGUvXFxcIiArIHJlcXVlc3QoZGEpLm1hdGNoKC8nKFxcXFw/Lio/KScvKVsxXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IEpTT04ucGFyc2UoZmV0Y2godSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5SGVhZGVyczogdHJ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGYgPSBcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9fZmlsZVNlbGVjdF9ydWxlLmpzb25cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkRmlsZShrLCBmKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIlxcXFx1NmQ3N1xcXFx1OTYxNFxcXFx1ODljNlxcXFx1NzU0Y1xcXFx1ZmZlNWhvbWVfcnVsZV91cmxcXFxcdWZmZTVcXFwiICsgZ2V0UGF0aChmKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVybC5yZXBsYWNlKC9maWxlbW8uKi8sICd0cC8nICsgXy5pZCkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCd2dGltZScsIFN0cmluZyhuZXcgRGF0ZSgpLmdldFRpbWUoKSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/msqHmnInmm7TmlrDlk6ZcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i/h+S4gOS8muWGjeeci+eci+WQp1xcXCI7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICB9IGVsc2UgaWYgKGlpID09ICcxJykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn6buY6K6k5Li76aG1JyxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+aJk+W8gOeoi+W6j+aXtum7mOiupOaJk+W8gCcsXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwi56Gu5a6a5oGi5aSN6buY6K6k6K6+572u5ZCX77yfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3RpZCcpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgdGFyci5tYXAoKG5hbWUsIHRpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8Yj4nICsgbmFtZSArICc8L2I+JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgndGlkJywgdGlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgU3RyaW5nKHRpZCkpLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKGdldEl0ZW0oJ3RpZCcsICcwJykgPT0gdGlkID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2UgaWYgKGlpID09IDIpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+m7mOiupOaQnOe0oicsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfljp/nlJ/mkJzntKLnmoTpu5jorqTmjqXlj6MnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIuehruWumuaBouWkjem7mOiupOiuvue9ruWQl++8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzaWQnKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHNhcnIubWFwKFtuYW1lLCBzaWRdID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+JyArIG5hbWUgKyAnPC9iPicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3NpZCcsIHNpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgIH0sIFN0cmluZyhzaWQpKSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArIChnZXRJdGVtKCdzaWQnLCAnMScpID09IHNpZCA/IDU1IDogNjMpICsgJy5zdmcnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGlmICjorr7nva4pIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTliIbnu4QnLFxcbiAgICAgICAgICAgIGRlc2M6ICfmiZPlvIDliIbnsbvlkI7nmoTpu5jorqTliIbnu4QnLFxcbiAgICAgICAgICAgIHVybDogJChcXFwi56Gu5a6a5oGi5aSN6buY6K6k6K6+572u5ZCX77yfXFxcIikuY29uZmlybSgodGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnaWlfMF8nICsgdGlkKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgdGlkKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgenUubWFwKChuYW1lLCBzaWQpID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJzxiPicgKyBuYW1lICsgJzwvYj4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGlpXzBfdGlkLCBzaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oaWlfMF90aWQsIHNpZCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgIH0sICdpaV8wXycgKyB0aWQsIFN0cmluZyhzaWQpKSxcXG4gICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKGdldEl0ZW0oJ2lpXzBfJyArIHRpZCwgJzAnKSA9PSBzaWQgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGVycm9yKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogUmljaChTdHJvbmcoQ29sb3IoJ35+fuW9k+WJjee9kee7nOW8guW4uO+8jOivt+WIt+aWsOmHjeivlX5+ficpKSksXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikaDor7fmsYLlh73mlbBcIixcInBhdGhcIjpcImFqYXhcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHVybCkge1xcblxcbiAgICBDb29raWUgPSBKU09OLnBhcnNlKGZldGNoUEMoJ2h0dHBzOi8vd3d3Lmt1d28uY24vZmF2aWNvbi5pY28/dj0xJywge1xcbiAgICAgICAgd2l0aEhlYWRlcnM6IHRydWVcXG4gICAgfSkpLmhlYWRlcnNbJ3NldC1jb29raWUnXTtcXG4gICAgQ29va2llID0gU3RyaW5nKENvb2tpZSkucmVwbGFjZSgvOy4qLywgJycpO1xcbiAgICBbZSwgdF0gPSBDb29raWUuc3BsaXQoJz0nKTtcXG4gICAgdCA9IHVuZXNjYXBlKHQpO1xcblxcblxcbiAgICBmb3IgKHZhciBuID0gXFxcIlxcXCIsIGkgPSAwOyBpIDwgZS5sZW5ndGg7IGkrKykgbiArPSBlLmNoYXJDb2RlQXQoaSkudG9TdHJpbmcoKTtcXG4gICAgbiA9IFN0cmluZyhuKTtcXG5cXG4gICAgdmFyIHIgPSBNYXRoLmZsb29yKG4ubGVuZ3RoIC8gNSksXFxuICAgICAgICBvID0gcGFyc2VJbnQobi5jaGFyQXQocikgKyBuLmNoYXJBdCgyICogcikgKyBuLmNoYXJBdCgzICogcikgKyBuLmNoYXJBdCg0ICogcikgKyBuLmNoYXJBdCg1ICogcikpLFxcbiAgICAgICAgbCA9IE1hdGguY2VpbChlLmxlbmd0aCAvIDIpLFxcbiAgICAgICAgYyA9IE1hdGgucG93KDIsIDMxKSAtIDE7XFxuXFxuICAgIHZhciBkID0gTWF0aC5yb3VuZCgxZTkgKiBNYXRoLnJhbmRvbSgpKSAlIDFlODtcXG4gICAgZm9yIChuICs9IGQ7IG4ubGVuZ3RoID4gMTA7KVxcbiAgICAgICAgbiA9IChwYXJzZUludChuLnN1YnN0cmluZygwLCAxMCkpICsgcGFyc2VJbnQobi5zdWJzdHJpbmcoMTAsIG4ubGVuZ3RoKSkpLnRvU3RyaW5nKCk7XFxuICAgIG4gPSAobyAqIG4gKyBsKSAlIGM7XFxuICAgIHZhciBoID0gXFxcIlxcXCIsXFxuICAgICAgICBmID0gXFxcIlxcXCI7XFxuICAgIGZvciAoaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKVxcbiAgICAgICAgZiArPSAoaCA9IHBhcnNlSW50KHQuY2hhckNvZGVBdChpKSBeIE1hdGguZmxvb3IobiAvIGMgKiAyNTUpKSkgPCAxNiA/IFxcXCIwXFxcIiArIGgudG9TdHJpbmcoMTYpIDogaC50b1N0cmluZygxNiksXFxuICAgICAgICBuID0gKG8gKiBuICsgbCkgJSBjO1xcbiAgICBmb3IgKGQgPSBkLnRvU3RyaW5nKDE2KTsgZC5sZW5ndGggPCA4OylcXG4gICAgICAgIGQgPSBcXFwiMFxcXCIgKyBkO1xcbiAgICBTZWNyZXQgPSBmICsgZDtcXG5cXG5cXG5cXG4gICAgeiA9IFxcXCIxMjM0NTY3ODkwYWJjZGVmXFxcIjtcXG4gICAgciA9IHggPT4ge1xcbiAgICAgICAgdCA9IFxcXCJcXFwiO1xcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHg7IGkrKykgdCArPSB6W01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHoubGVuZ3RoKV07XFxuICAgICAgICByZXR1cm4gdFxcbiAgICB9XFxuXFxuXFxuXFxuICAgIHVybCArPSBgaHR0cHNTdGF0dXM9MSZyZXFJZD0ke3IoOCl9LSR7cig0KX0tJHtyKDQpfS0ke3IoNCl9LSR7cigxMil9JnBsYXQ9d2ViX3d3dyZmcm9tPWA7XFxuXFxuICAgIHJldHVybiBfID0gSlNPTi5wYXJzZShmZXRjaFBDKHVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3Lmt1d28uY24vJyxcXG4gICAgICAgICAgICAnQ29va2llJzogQ29va2llLFxcbiAgICAgICAgICAgICdTZWNyZXQnOiBTZWNyZXRcXG4gICAgICAgIH1cXG4gICAgfSkpLmRhdGE7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi4pGj6auY57qn5pCc57SiXCIsXCJwYXRoXCI6XCJzZWFyY2gyXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dGd46Z+z5LmQJywge30pKS5ydWxlKTtcXG5kID0gW3tcXG4gICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cXFwiY29sb3I6I2ZmNjYwMVxcXCI+PGI+6YCA5Ye6IOmrmOe6p+aQnOe0ojwvYj48L3NwYW4+JyxcXG4gICAgZGVzYzogJ+eoi+W6j+mmlumhtScsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICByZXR1cm4gYmFjayh0cnVlKSwgJ2hpa2VyOi8vZW1wdHknO1xcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaWNvbl9sZWZ0NVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgfVxcbn0sIHtcXG4gICAgdGl0bGU6IFxcXCLmiJHnmoTmlLbol49cXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2NvbGxlY3Rpb24/cnVsZT10Z3jpn7PkuZBcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImljb25fMl9yb3VuZFxcXCIsXFxuICAgIGltZzogXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fZG93bmxvYWRcXFwiXFxufSwge1xcbiAgICB0aXRsZTogXFxcIuWOhuWPsuiusOW9lVxcXCIsXFxuICAgIHVybDogXFxcImhpa2VyOi8vaGlzdG9yeT9ydWxlPXRneOmfs+S5kFxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiaWNvbl8yX3JvdW5kXFxcIixcXG4gICAgaW1nOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaWNvbl9oaXNcXFwiXFxufSwge1xcbiAgICB0aXRsZTogJ/CflI0nLFxcbiAgICBkZXNjOiAn5pCc57Si5YWz6ZSu6K+NIC8g5YiG5Lqr6ZO+5o6lJyxcXG4gICAgdXJsOiAnXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIitpbnB1dCtcXFwiJnJ1bGU9XFxcIitNWV9SVUxFLnRpdGxlJyxcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBydWxlczogJC50b1N0cmluZygoc2FycikgPT4ge1xcbiAgICAgICAgICAgIGxldCBkYXRhID0gW107XFxuICAgICAgICAgICAgaW5wdXQyID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC8jIyMuKy8pKSB7XFxuICAgICAgICAgICAgICAgIGlucHV0MiA9IGlucHV0Lm1hdGNoKC8jIyMoLispLylbMV07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChpbnB1dC5tYXRjaCgva3V3b1xcXFwuY24vKSkge1xcbiAgICAgICAgICAgICAgICBzYXJyID0gW1xcbiAgICAgICAgICAgICAgICAgICAgW1xcXCLliIbkuqtcXFwiLCAnOTk5J11cXG4gICAgICAgICAgICAgICAgXTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dDIubWF0Y2goL14oOTk5KT8kLykgJiYgc2FycltpbnB1dDJdKSB7XFxuICAgICAgICAgICAgICAgIHNhcnIgPSBbc2FycltpbnB1dDJdXVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc3BsaXQoJyMjIycpWzBdXFxuICAgICAgICAgICAgICAgIGlmICghZ2V0TXlWYXIoJ2lucHV0MicsICcxJykubWF0Y2goL14oOTk5KT8kLykpIHtcXG4gICAgICAgICAgICAgICAgICAgIHNhcnIgPSBbc2FycltnZXRNeVZhcignaW5wdXQyJywgJzEnKV1dXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2FyclswXTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL17ogZrlkIg/5pCc57SiP1xcXFxzKi8sICcnKTtcXG4gICAgICAgICAgICBzYXJyLm1hcChbdGl0bGUsIHNpZF0gPT4ge1xcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgXFxcInRpdGxlXFxcIjogdGl0bGUucmVwbGFjZSgvJm5ic3A7L2csICcgJyksXFxuICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJoaWtlcjovL2VtcHR5IyMjZnlwYWdlIyMjXFxcIiArIGlucHV0ICsgXFxcIiMjI1xcXCIgKyBzaWQsXFxuICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNoRmluZFxcXCI6IFxcXCJqczogJC5yZXF1aXJlKCdzZWFyY2g/cnVsZT10Z3jpn7PkuZAnKTtcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xcbiAgICAgICAgfSwgc2FyciksXFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXCJzb2tleVxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0TXlWYXIoJ3Nva2V5JyxpbnB1dClcXFwiXFxuICAgIH1cXG59XTtcXG5zYXJyLm1hcChbbmFtZSwgc2lkXSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ2lucHV0MicsICcxJykgPT0gc2lkID8gUmljaChTdHJvbmcoQ29sb3IobmFtZSkpKSA6IG5hbWUucmVwbGFjZSgvJm5ic3A7L2csICcgJyksXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdpbnB1dDInLCBzaWQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9LCBzaWQpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KTtcXG59KTtcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxufSwge1xcbiAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxufSwge1xcbiAgICB0aXRsZTogJzxzcGFuIHN0eWxlPVxcXCJjb2xvcjojZmY2NjAxXFxcIj48Yj7ljoblj7LorrDlvZU8L2I+PC9zcGFuPicsXFxuICAgIHBpY191cmw6IFxcXCJoaWtlcjovL2ltYWdlcy9pY29uX2Nsb2NrXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICB1cmw6ICQoXFxcIuehruWumua4hemZpOWFqOmDqOaQnOe0ouiusOW9le+8n1xcXCIpLmNvbmZpcm0oKGlkKSA9PiB7XFxuICAgICAgICBjbGVhckl0ZW0oXFxcInNlYXJjaEhpc3RvcnlcXFwiKTtcXG4gICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhpZCArIFxcXCI6a2V5XFxcIik7XFxuICAgICAgICBhZGRJdGVtQWZ0ZXIoaWQgKyBcXFwiOnNlYXJjaEhpc3RvcnlcXFwiLCB7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBcXFwifn5+5LuA5LmI6YO95rKh5pyJ5ZOmfn5+XFxcIi5mb250Y29sb3IoXFxcIkdyYXlcXFwiKSxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBjbHM6IGlkICsgXFxcIjprZXlcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0sIFxcXCJ0Z3jpn7PkuZBcXFwiKSxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiBcXFwidGd46Z+z5LmQOnNlYXJjaEhpc3RvcnlcXFwiXFxuICAgIH1cXG59KTtcXG5sZXQgaGlzdG9yeSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcInNlYXJjaEhpc3RvcnlcXFwiLCBbXSk7XFxuaWYgKGhpc3RvcnkubGVuZ3RoID09PSAwKSBkLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgdGl0bGU6IFxcXCLigJzigJzigJ3igJ1cXFwiICsgXFxcIn5+fuS7gOS5iOmDveayoeacieWTpn5+flxcXCIuZm9udGNvbG9yKFxcXCJHcmF5XFxcIiksXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBjbHM6IFxcXCJ0Z3jpn7PkuZA6a2V5XFxcIlxcbiAgICB9XFxufSk7XFxuZWxzZSBtYXBIaXN0b3J5KGhpc3RvcnkpO1xcblxcblxcblxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG59LCB7XFxuICAgIHRpdGxlOiAnPHNwYW4gc3R5bGU9XFxcImNvbG9yOiNmZjY2MDFcXFwiPjxiPuWkp+WutumDveWcqOaQnDwvYj48L3NwYW4+JyxcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgcGljX3VybDogXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fZmlyZVxcXCJcXG59KTtcXG5yZXNvdSA9IHN0b3JhZ2UwLmdldE15VmFyKCdyZXNvdScpO1xcbmlmIChyZXNvdSA9PSAnJykge1xcbiAgICByZXNvdSA9ICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKHBjYXBpICsgXFxcInd3dy9zZWFyY2gvc2VhcmNoS2V5P2tleT0mXFxcIik7XFxuICAgIHN0b3JhZ2UwLnB1dE15VmFyKCdyZXNvdScsIHJlc291KTtcXG59XFxucmVzb3UubWFwKG5hbWUgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IG5hbWUsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKG5hbWUpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcignc29rZXknLCBuYW1lKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBuYW1lICsgXFxcIiMjIzEmcnVsZT10Z3jpn7PkuZBcXFwiO1xcbiAgICAgICAgfSwgbmFtZSksXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICB9KTtcXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikaTmlLbol4/pobXpnaJcIixcInBhdGhcIjpcImNvbGxlY3Rpb25cIixcInJ1bGVcIjpcImpzOlxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbmRlbGV0ZSBzYXJyWzBdO1xcbnNhcnIucHVzaChbJ+iuvue9ricsICc5OTknXSk7XFxuZCA9IFtdO1xcbnNhcnIubWFwKFtuYW1lLCBzaWRdID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRNeVZhcignc2knLCBnZXRJdGVtKCdzaScsICcxJykpID09IHNpZCA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzaWQpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcignc2knLCBzaWQpO1xcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2lpJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSwgc2lkKSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSk7XFxufSk7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG59KTtcXG5cXG5cXG5zaSA9IGdldE15VmFyKCdzaScsIGdldEl0ZW0oJ3NpJywgJzEnKSk7XFxudGkgPSBnZXRNeVZhcignaWknLCBnZXRJdGVtKCdpaV8xXycgKyBzaSwgJzAnKSk7XFxuaWYgKHNpICE9IDk5OSkge1xcbiAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSk7XFxuICAgIGlmICh6eSA9PT0gXFxcIlxcXCIgfHwgSlNPTi5zdHJpbmdpZnkoenkpID09ICd7fScpIHp5ID0ge1xcbiAgICAgICAgXFxcIuWFqOmDqFxcXCI6IFtdXFxuICAgIH0sIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpLCB6eSk7XFxuICAgIGxldCB6dSA9IFtdO1xcbiAgICBmb3IgKGkgaW4genkpIHp1LnB1c2goaSk7XFxuICAgIHp1LmNvbmNhdChcXFwi6K6+572uXFxcIikubWFwKChuYW1lLCBpaSkgPT4ge1xcbiAgICAgICAgaWYgKGlpICE9IHp1Lmxlbmd0aCB8fCBnZXRJdGVtKCd0eXBlXzEnLCAnMScpID09ICcxJylcXG4gICAgICAgICAgICBpZiAoaWkgIT0genUubGVuZ3RoKSBleHRyYSA9IHtcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLliKDpmaQgXFxcIiArIG5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoc2ksIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwi56Gu5a6a5Yig6ZmkXFxcIiArIG5hbWUgKyBcXFwi5ZCX77yfXFxcIikuY29uZmlybSgoc2ksIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiZGF0YV9cXFwiICsgc2kpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgenlbbmFtZV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnaWlfMV8nICsgc2kpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdpaScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCBuYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgc2ksIG5hbWUpXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5omT5byA5Li65LqM57qnXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChzaSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHNpLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenlbbmFtZV0ubWFwKF8gPT4gRXh0cmEoXywgc2kpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCBuYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgc2ksIG5hbWUpXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5L+u5pS55ZCN56ewXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChzaSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJcXFwiLCBcXFwi6K+36L6T5YWl5paw55qE57uE5ZCNXFxcIikuaW5wdXQoKHNpLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IHt9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4genkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IG5hbWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2lucHV0XSA9IHp5W2ldXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25baV0gPSB6eVtpXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5ID0ganNvbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwgbmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzaSwgbmFtZSlcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmm7TmlLnmjpLluo9cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHNpLCB6dSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB6dS5pbmRleE9mKG5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHp1LnNwbGljZShpLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh6dS5jb25jYXQoXFxcIuacgOWQjumdolxcXCIpLCAyLCAn6K+36YCJ5oup6LWE5rqQ5L2N572uJykuc2VsZWN0KChzaSwgenUsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiZGF0YV9cXFwiICsgc2kpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0ge307XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBvZiB6dSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW25hbWVdID0genlbbmFtZV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgenUuaW5kZXhPZihpKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2ldID0genlbaV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXFxcIuacgOWQjumdolxcXCIgPT0gaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25bbmFtZV0gPSB6eVtuYW1lXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdpaScsIHp1Lmxlbmd0aCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenkgPSBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCB6dSwgbmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzaSwgenUsIG5hbWUpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBlbHNlIGV4dHJhID0ge307XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB0aSA9PSBpaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgaWkpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCBpaSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICBleHRyYTogZXh0cmFcXG4gICAgICAgIH0pO1xcbiAgICB9KTtcXG4gICAgaWYgKHRpICE9IHp1Lmxlbmd0aCkge1xcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHp1KSA9PSAnW1xcXCLlhajpg6hcXFwiXScgJiYgenlbXFxcIuWFqOmDqFxcXCJdLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIFxcXCJ+fn7ku4DkuYjpg73msqHmnIl+fn5cXFwiLmZvbnRjb2xvcihcXFwiR3JheVxcXCIpXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHp5W3p1W3RpXV0ubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICBfLmV4dHJhID0ge1xcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5L+u5pS55ZCN56ewXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoc2ksIGtleSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChuYW1lLCBcXFwi6K+36L6T5YWl5paw55qE5ZCN56ewXFxcIikuaW5wdXQoKHNpLCBrZXksIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpKVtrZXldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkgPSB6eS5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF8udGl0bGUgPT0gbmFtZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLnRpdGxlID0gaW5wdXQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5LCBrZXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwga2V5LCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwgenVbdGldLCBfLnRpdGxlKVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5L+u5pS55bCB6Z2iXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoc2ksIGtleSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChuYW1lLCBcXFwi6K+36L6T5YWl5q2j56Gu55qE5bCB6Z2i5Zyw5Z2AXFxcIikuaW5wdXQoKHNpLCBrZXksIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpKVtrZXldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkgPSB6eS5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF8uaW1nID09IG5hbWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pbWcgPSBpbnB1dDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF87XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenksIGtleSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCBrZXksIG5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCB6dVt0aV0sIF8uaW1nKVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5pu05pS55o6S5bqPXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoc2ksIGtleSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSlba2V5XTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp1ID0genkubWFwKF8gPT4gXy50aXRsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB6dS5pbmRleE9mKG5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0genlbaV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenUuc3BsaWNlKGksIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh6dS5jb25jYXQoXFxcIuacgOWQjumdolxcXCIpLCAxLCAn6K+36YCJ5oup6LWE5rqQ5L2N572uJykuc2VsZWN0KChzaSwga2V5LCB6eSwgenUsIGRhdGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBpbiB6dSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh6dVtpXSA9PSBpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnB1c2goZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ucHVzaCh6eVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXFxcIuacgOWQjumdolxcXCIgPT0gaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnB1c2goZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eSA9IGpzb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5LCBrZXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwga2V5LCB6eSwgenUsIGRhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCB6dVt0aV0sIF8udGl0bGUpXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIoOmZpCBcXFwiICsgXy50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChzaSwga2V5LCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIuehruWumuWIoOmZpFxcXCIgKyBuYW1lICsgXFxcIuWQl++8n1xcXCIpLmNvbmZpcm0oKHNpLCBrZXksIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiZGF0YV9cXFwiICsgc2kpW2tleV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6dSA9IHp5Lm1hcChfID0+IF8udGl0bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0genUuaW5kZXhPZihuYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenkuc3BsaWNlKGksIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenksIGtleSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2ksIGtleSwgbmFtZSlcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNpLCB6dVt0aV0sIF8udGl0bGUpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgZC5wdXNoKF8pO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+m7mOiupOWIhue7hCcsXFxuICAgICAgICAgICAgZGVzYzogJ+aJk+W8gOWIhuexu+WQjueahOm7mOiupOWIhue7hCcsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCLnoa7lrprmgaLlpI3pu5jorqTorr7nva7lkJfvvJ9cXFwiKS5jb25maXJtKChzaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ2lpXzFfJyArIHNpKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgc2kpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICB6dS5tYXAoKG5hbWUsIHNpZCkgPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+JyArIG5hbWUgKyAnPC9iPicsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWlfMV9zaSwgc2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKGlpXzFfc2ksIHNpZCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgIH0sICdpaV8xXycgKyBzaSwgU3RyaW5nKHNpZCkpLFxcbiAgICAgICAgICAgICAgICBpbWc6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LycgKyAoZ2V0SXRlbSgnaWlfMV8nICsgc2ksICcwJykgPT0gc2lkID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICBkZWxldGUgc2FycltzYXJyLmxlbmd0aCAtIDFdO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAnPHNwYW4gc3R5bGU9XFxcImNvbG9yOiNmZjY2MDFcXFwiPjxiPuWbnuWIsCBUR1jpn7PkuZA8L2I+PC9zcGFuPicsXFxuICAgICAgICBkZXNjOiAn56iL5bqP6aaW6aG1JyxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIGJhY2sodHJ1ZSksICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0pLFxcbiAgICAgICAgaW1nOiAnaHR0cHM6Ly9naHByb3h5LmNvbS9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHMxMjU3ODEwMDMvbG10dWJpYW8vbWFpbi9tdXNpYy84Mi5zdmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn8J+UjScsXFxuICAgICAgICBkZXNjOiAn5pCc57Si5YWz6ZSu6K+NIC8g5YiG5Lqr6ZO+5o6lJyxcXG4gICAgICAgIHVybDogJ1xcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIraW5wdXQrXFxcIiZydWxlPVxcXCIrTVlfUlVMRS50aXRsZScsXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwic29rZXlcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcignc29rZXknLGlucHV0KVxcXCJcXG4gICAgICAgIH1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfmiJHnmoTmlLbol48nLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9jb2xsZWN0aW9uP3J1bGU9dGd46Z+z5LmQJyxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfljoblj7LorrDlvZUnLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9oaXN0b3J5P3J1bGU9dGd46Z+z5LmQJyxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfpq5jnuqfmkJzntKInLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NlYXJjaDIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJyxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+WIhue7hOiuvue9ricsXFxuICAgICAgICBkZXNjOiAn5YiG57G75pi+56S65YiG57uE6K6+572uJyxcXG4gICAgICAgIHVybDogJChcXFwi56Gu5a6a6YeN572u5YiG57uE55u45YWz6K6+572u5ZCX77yfXFxcIikuY29uZmlybSgoc2FycikgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbSgndHlwZV8xJyk7XFxuICAgICAgICAgICAgZm9yIChpdCBvZiBzYXJyKVxcbiAgICAgICAgICAgICAgICBpZiAoaXQpIGNsZWFySXRlbSgnaWlfMV8nICsgaXRbMV0pO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9LCBzYXJyKSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJzxiPuWIhue7hOiuvue9rjwvYj4nLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzaWQpID0+IHtcXG4gICAgICAgICAgICBzZXRJdGVtKCd0eXBlXzEnLCBzaWQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9LCBnZXRJdGVtKCd0eXBlXzEnLCAnMScpID09ICcxJyA/ICcwJyA6ICcxJyksXFxuICAgICAgICBpbWc6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LycgKyAoZ2V0SXRlbSgndHlwZV8xJywgJzEnKSA9PSAxID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6buY6K6k5YiG57G7JyxcXG4gICAgICAgIGRlc2M6ICfmiZPlvIDmlLbol4/lkI7nmoTpu5jorqTliIbnsbsnLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7lrprmgaLlpI3pu5jorqTorr7nva7lkJfvvJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBjbGVhckl0ZW0oJ3NpJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgIH0pO1xcbiAgICBzYXJyLm1hcChbbmFtZSwgc2lkXSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnPGI+JyArIG5hbWUgKyAnPC9iPicsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnc2knLCBzaWQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCBTdHJpbmcoc2lkKSksXFxuICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKGdldEl0ZW0oJ3NpJywgJzEnKSA9PSBzaWQgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgICAgIH0pO1xcbiAgICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi4pGm5pS26JeP5Ye95pWwXCIsXCJwYXRoXCI6XCJjb2xsZWN0aW9uMlwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0ge1xcbiAgICBsb2dEYXRhOiBmdW5jdGlvbihuZXdEYXRhLCBzaSkge1xcblxcbiAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiZGF0YV9cXFwiICsgc2kpO1xcbiAgICAgICAgaWYgKHp5ID09PSBcXFwiXFxcIikgenkgPSB7XFxuICAgICAgICAgICAgXFxcIuWFqOmDqFxcXCI6IFtdXFxuICAgICAgICB9LCBzdG9yYWdlMC5zZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSwgenkpO1xcbiAgICAgICAgbGV0IHp1ID0gW107XFxuICAgICAgICBmb3IgKGkgaW4genkpIHp1LnB1c2goaSk7XFxuXFxuXFxuICAgICAgICByZXR1cm4gJCh6dS5jb25jYXQoXFxcIuaWsOe7hFxcXCIpLCAzLCBcXFwi6YCJ5oup57uEXFxcIikuc2VsZWN0KCh6eSwgenUsIG5ld0RhdGEsIHNpKSA9PiB7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLmlrDnu4RcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGlmICghenUuaW5jbHVkZXMoaW5wdXQpKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiXFxcIiwgXFxcIuivt+i+k+WFpeaWsOe7hOWQjeensFxcXCIpLmlucHV0KCh6eSwgenUsIG5ld0RhdGEsIHNpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoenUuY29uY2F0KFxcXCLmnIDlkI7pnaJcXFwiKSwgMywgJ+ivt+mAieaLqeaWsOe7hOS9jee9ricpLnNlbGVjdCgoenksIGlucHV0MiwgbmV3RGF0YSwgc2kpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLmnIDlkI7pnaJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eVtpbnB1dDJdID0gW25ld0RhdGFdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IHt9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIHp5KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbltpbnB1dDJdID0gW25ld0RhdGFdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2ldID0genlbaV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eSA9IGpzb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiY29sbGVjdGlvbjI/cnVsZT10Z3jpn7PkuZBcXFwiKS5zZXREYXRhKHNpLCB6eSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgenksIGlucHV0LCBuZXdEYXRhLCBzaSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCB6eSwgenUsIG5ld0RhdGEsIHNpKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIbnu4TlkI3np7Dph43lpI3kuoZ+XFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICB6eSA9IHp5W2lucHV0XTtcXG4gICAgICAgICAgICB6dSA9IHp5Lm1hcChpdCA9PiBpdC50aXRsZSk7XFxuICAgICAgICAgICAgaWYgKCF6dS5pbmNsdWRlcyhuZXdEYXRhLnRpdGxlKSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCh6dS5jb25jYXQoXFxcIuacgOWQjumdolxcXCIpLCAyLCAn6K+36YCJ5oup6LWE5rqQ5L2N572uJykuc2VsZWN0KCh6eSwgenUsIGlucHV0MiwgbmV3RGF0YSwgc2kpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5pyA5ZCO6Z2iXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHp5LnB1c2gobmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB6dS5pbmRleE9mKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMCwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5LCBpbnB1dDIpO1xcbiAgICAgICAgICAgICAgICB9LCB6eSwgenUsIGlucHV0LCBuZXdEYXRhLCBzaSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5q2M5puy5ZCN56ew6YeN5aSN5LqGflxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCB6eSwgenUsIG5ld0RhdGEsIHNpKTtcXG4gICAgfSxcXG4gICAgc2V0RGF0YTogZnVuY3Rpb24oc2ksIHp5Miwga2V5KSB7XFxuICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSk7XFxuICAgICAgICBpZiAoa2V5KSB7XFxuICAgICAgICAgICAgenlba2V5XSA9IHp5MjtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgenkgPSB6eTI7XFxuICAgICAgICB9XFxuICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSwgenkpO1xcbiAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+aIkOWKn1xcXCI7XFxuICAgIH0sXFxuICAgIGNvcHl1cmw6IGZ1bmN0aW9uKHNpLCB6eWlkKSB7XFxuICAgICAgICBjdXJsID0gXFxcImh0dHBzOi8vd3d3Lmt1d28uY24vXFxcIlxcbiAgICAgICAgaWYgKFN0cmluZyh6eWlkKS50cmltKCkubWF0Y2goL15cXFxcZCskLykpIHtcXG4gICAgICAgICAgICBpZiAoc2kgPT0gJzEnKVxcbiAgICAgICAgICAgICAgICBjdXJsICs9IFxcXCJwbGF5X2RldGFpbC9cXFwiO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpID09IDIpXFxuICAgICAgICAgICAgICAgIGN1cmwgKz0gXFxcImFsYnVtX2RldGFpbC9cXFwiO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpID09IDMpXFxuICAgICAgICAgICAgICAgIGN1cmwgKz0gXFxcIm12cGxheS9cXFwiO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpID09IDQpXFxuICAgICAgICAgICAgICAgIGN1cmwgKz0gXFxcInBsYXlsaXN0X2RldGFpbC9cXFwiO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpID09IDUpXFxuICAgICAgICAgICAgICAgIGN1cmwgKz0gXFxcInNpbmdlcl9kZXRhaWwvXFxcIjtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyBjdXJsICsgenlpZDtcXG4gICAgfVxcbn1cIn1dIiwiaWNvbiI6Imh0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjMvMDMvMjMvNC8xMTBfM2E3MGMzYzVhMTliMjNkNjY0OWYwMmM1ODgzOTJmNTNfY29uXzEzMHgxMzAucG5nIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment