030610-314 女熱大陸 File.013

ID: 030610-314

Release Date: 2010-03-06

Length: 79min

Studio:

Caribbeancom

Series:

JYONETSU

Genre:

VibratorCunnilingusMasterbationCreampieBig TitsPretty TitsSquirtSweet Ass人気シリーズ

Recommend

W3siaWQiOiJidHNfal9NXzMwMHgxMDAiLCJhZHNwb3QiOiJqX01fMzAweDEwMCIsIndlaWdodCI6IjEiLCJmY2FwIjpmYWxzZSwic2NoZWR1bGUiOmZhbHNlLCJtYXhXaWR0aCI6Ijc2OCIsIm1pbldpZHRoIjpmYWxzZSwidGltZXpvbmUiOmZhbHNlLCJleGNsdWRlIjpmYWxzZSwiZG9tYWluIjpmYWxzZSwiY29kZSI6IjxhIGhyZWY9XCJodHRwczpcL1wvYnRzby5wd1wvdmlkZW9cLyVFNSVBNSVCMyVFNyU4NiVCMSVFNSVBNCVBNyVFOSU5OSVCOCUyMEZpbGUuMDEzXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGltZyBzcmM9XCJcL2FwcFwvYnRzXC9WaWV3XC9pbWdcL3AzMDAxMDAucG5nXCI+PFwvYT4ifSx7ImlkIjoiZXhvY19qX01fMzAweDEwMCIsImFkc3BvdCI6ImpfTV8zMDB4MTAwIiwid2VpZ2h0IjoiMyIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjoiNzY4IiwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPHNjcmlwdCBhc3luYyB0eXBlPVwiYXBwbGljYXRpb25cL2phdmFzY3JpcHRcIiBzcmM9XCJodHRwczpcL1wvYS5tYWdzcnYuY29tXC9hZC1wcm92aWRlci5qc1wiPjxcL3NjcmlwdD4gXHJcbiA8aW5zIGNsYXNzPVwiZWFzNmE5Nzg4OGUxMFwiIGRhdGEtem9uZWlkPVwiNTY2NTY1NFwiPjxcL2lucz4gXHJcbiA8c2NyaXB0PihBZFByb3ZpZGVyID0gd2luZG93LkFkUHJvdmlkZXIgfHwgW10pLnB1c2goe1wic2VydmVcIjoge319KTs8XC9zY3JpcHQ+In0seyJpZCI6Imphdl9qX01fMzAweDEwMCIsImFkc3BvdCI6ImpfTV8zMDB4MTAwIiwid2VpZ2h0IjoiMiIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjoiNzY4IiwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPGEgaHJlZj1cImh0dHBzOlwvXC90ZWxsbWUucHdcL2dvXC9qYXZcIiB0YXJnZXQ9XCJfYmxhbmtcIj48aW1nIHNyYz1cIlwvYXBwXC9qYXZcL1ZpZXdcL2ltZ1wvYmFubmVyLjYwMHgxMDAuanBnXCIgd2lkdGg9XCIzMDBcIiBoZWlnaHQ9XCI1MFwiPjxcL2E+In0seyJpZCI6Imp1aWNfal9NXzMwMHgxMDAiLCJhZHNwb3QiOiJqX01fMzAweDEwMCIsIndlaWdodCI6IjUiLCJmY2FwIjpmYWxzZSwic2NoZWR1bGUiOmZhbHNlLCJtYXhXaWR0aCI6Ijc2OCIsIm1pbldpZHRoIjpmYWxzZSwidGltZXpvbmUiOmZhbHNlLCJleGNsdWRlIjpmYWxzZSwiZG9tYWluIjpmYWxzZSwiY29kZSI6IjxpZnJhbWUgYm9yZGVyPTAgZnJhbWVib3JkZXI9MCBtYXJnaW5oZWlnaHQ9MCBtYXJnaW53aWR0aD0wIHdpZHRoPTMwMCBoZWlnaHQ9MTAwIHNjcm9sbGluZz1ubyBhbGxvd3RyYW5zcGFyZW5jeT10cnVlIHNyYz1cL1wvYWRzZXJ2ZXIuanVpY3lhZHMuY29tXC9hZHNob3cucGhwP2Fkem9uZT00NTE3NDA+PFwvaWZyYW1lPiJ9LHsiaWQiOiJ3YXZfal9NXzMwMHgxMDAiLCJhZHNwb3QiOiJqX01fMzAweDEwMCIsIndlaWdodCI6IjIiLCJmY2FwIjpmYWxzZSwic2NoZWR1bGUiOmZhbHNlLCJtYXhXaWR0aCI6Ijc2OCIsIm1pbldpZHRoIjpmYWxzZSwidGltZXpvbmUiOmZhbHNlLCJleGNsdWRlIjpmYWxzZSwiZG9tYWluIjpmYWxzZSwiY29kZSI6IjxhIGhyZWY9XCJodHRwczpcL1wvYXZ4by5jbHViXC9cIiB0YXJnZXQ9XCJfYmxhbmtcIj48aW1nIHNyYz1cIlwvYXBwXC93YXZcL1ZpZXdcL2ltZ1wvYmFubmVyLjYwMHgxMDAuanBnXCIgd2lkdGg9XCIzMDBcIiBoZWlnaHQ9XCI1MFwiPjxcL2E+In1d

Stars

FUWARI

Recommend

W3siaWQiOiJleG9jX2pfTV8zMDB4MjUwIiwiYWRzcG90Ijoial9NXzMwMHgyNTAiLCJ3ZWlnaHQiOiIyIiwiZmNhcCI6ZmFsc2UsInNjaGVkdWxlIjpmYWxzZSwibWF4V2lkdGgiOiI3NjgiLCJtaW5XaWR0aCI6ZmFsc2UsInRpbWV6b25lIjpmYWxzZSwiZXhjbHVkZSI6ZmFsc2UsImRvbWFpbiI6ZmFsc2UsImNvZGUiOiI8c2NyaXB0IGFzeW5jIHR5cGU9XCJhcHBsaWNhdGlvblwvamF2YXNjcmlwdFwiIHNyYz1cImh0dHBzOlwvXC9hLm1hZ3Nydi5jb21cL2FkLXByb3ZpZGVyLmpzXCI+PFwvc2NyaXB0PiBcclxuIDxpbnMgY2xhc3M9XCJlYXM2YTk3ODg4ZTEwXCIgZGF0YS16b25laWQ9XCI1NjY1NjU2XCI+PFwvaW5zPiBcclxuIDxzY3JpcHQ+KEFkUHJvdmlkZXIgPSB3aW5kb3cuQWRQcm92aWRlciB8fCBbXSkucHVzaCh7XCJzZXJ2ZVwiOiB7fX0pOzxcL3NjcmlwdD4ifSx7ImlkIjoianVpY19qX01fMzAweDI1MCIsImFkc3BvdCI6ImpfTV8zMDB4MjUwIiwid2VpZ2h0IjoiMyIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjoiNzY4IiwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPGlmcmFtZSBib3JkZXI9MCBmcmFtZWJvcmRlcj0wIG1hcmdpbmhlaWdodD0wIG1hcmdpbndpZHRoPTAgd2lkdGg9MzA4IGhlaWdodD0yNTggc2Nyb2xsaW5nPW5vIGFsbG93dHJhbnNwYXJlbmN5PXRydWUgc3JjPVwvXC9hZHNlcnZlci5qdWljeWFkcy5jb21cL2Fkc2hvdy5waHA/YWR6b25lPTM2Mjc4MT48XC9pZnJhbWU+In1d
W3siaWQiOiJjbGljX2pfUE9QVU5ERVIiLCJhZHNwb3QiOiJqX1BPUFVOREVSIiwid2VpZ2h0IjoiNyIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjpmYWxzZSwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPHNjcmlwdCB0eXBlPVwidGV4dFwvamF2YXNjcmlwdFwiPiFmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2NvbnN0IHQ9XCJ6X2ZsZ2RhYmNwb2tyaW5ldXRtLlwvc1wiLGU9dFs0XSxuPXRbNl0sbz10WzddLHI9dFs4XSxzPXRbMTRdLGk9dFs1XSxjPXRbMTVdLGE9dFsxNl0sbD10WzEzXSx1PXRbMTBdLGg9dFsxMl0sZD10WzldLGc9dFsxN10sbT10WzE4XSxmPXRbMl0scD10WzNdLHc9dFswXSxiPXRbMV0sJD10WzIwXSx2PSguLi50KT0+dC5qb2luKFwiXCIpLEk9dihyLHApLFM9dihuLG8pLHk9dihpLGMsbyxhLGUpLEU9dihsLHMsZCxuLGUsYyksaz12KG8sbixzLHMsYyxoKSx4PXYoYixJLGIsUyxiLHksYiksaj12KGIsYiksQz12KHcsZixlLHAsdSxuLGksYyxpKSxOPXsyOnYoQyxkLHUsZCx0WzE2XSxkKSw5OnYoQyxrKSwxMDp2KEMsRSl9LE89dih3LGYsZSxyLHUsaSxjLHAsdSxuLGksYyxpKSxSPXsyOnYoTyx1LHMsSSxsLHIsdFsxMV0pLDk6dihPLGspLDEwOnYoTyxFKX0sXz12KHgsZyxsLG0sYyksQT12KHgsaSx1LG0sbixsLHMpLEQ9dihqLHIscyxlLGYsZSksVD12KGoscixzLGUsZixlLGosaSksTT12KEQsaixTKSxVPXYoRCxqLGMsYSksQj12KHRbMjFdLHIsaCxsLGQsZyksSj12KHRbMTldLHIsdSxtLCQpLFc9digkLGMscyksej12KGwsaSksVj12KGoscixzLGUsZixlLGosaCksSD1bXCJvb1wiLFwia2tcIixcImFhYVwiLFwiampqXCIsXCJmZXdoXCIsXCJhYXNoXCIsXCJxd2Rod1wiLFwid2Vnd2dzXCIsXCJoa2lpdXlyXCIsXCJuZmdyc3RkaFwiXSxLPTM2ZTUsUD0odCxlKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihlLXQrMSkpK3Q7ZnVuY3Rpb24gUSh0LGU9d2luZG93LG49ITEpe2xldCBvO3RyeXtpZihvPWVbdF0sIW8pcmV0dXJuITE7Y29uc3Qgbj1cIl9fc3RvcmFnZV90ZXN0X19cIjtyZXR1cm4gby5zZXRJdGVtKG4sbiksby5nZXRJdGVtKG4pLG8ucmVtb3ZlSXRlbShuKSwhMH1jYXRjaCh0KXtyZXR1cm4gQm9vbGVhbighbiYmZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBET01FeGNlcHRpb24mJigyMj09PXQuY29kZXx8MTAxND09PXQuY29kZXx8XCJRdW90YUV4Y2VlZGVkRXJyb3JcIj09PXQubmFtZXx8XCJOU19FUlJPUl9ET01fUVVPVEFfUkVBQ0hFRFwiPT09dC5uYW1lKX0odCkmJm8mJm8ubGVuZ3RoPjApfX1jb25zdCBxPXQ9PntpZihcIlwiPT09dCl0aHJvdyBuZXcgRXJyb3IoXCJLZXkgY2Fubm90IGJlIGVtcHR5XCIpfTtjbGFzcyBGe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmFnZT10fWdldEl0ZW0odCl7cmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRJdGVtKHQpfXNldEl0ZW0odCxlKXtxKHQpLHRoaXMuc3RvcmFnZS5zZXRJdGVtKHQsZSl9cmVtb3ZlSXRlbSh0KXt0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0KX19Y2xhc3MgTHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmRvYz10fWdldEl0ZW0odCl7Y29uc3QgZT1uZXcgUmVnRXhwKFwiKD86Xnw7IClcIit0LnJlcGxhY2UoXC8oW1xcLiQ/Knx7fVxcKFxcKVxcW1xcXVxcXFxcXFwvXFwrXl0pXC9nLFwiXFxcXCQxXCIpK1wiPShbXlwvO1wvXSopXCIpLmV4ZWModGhpcy5kb2MuY29va2llKTtyZXR1cm4gZT9kZWNvZGVVUklDb21wb25lbnQoZVsxXSk6bnVsbH1zZXRJdGVtKHQsZSl7cSh0KSx0aGlzLmRvYy5jb29raWU9YCR7dH09JHtlbmNvZGVVUklDb21wb25lbnQoZSl9OyBtYXgtYWdlPTM0NDcwMDAwOyBwYXRoPVwvO2B9cmVtb3ZlSXRlbSh0KXt0aGlzLmRvYy5jb29raWU9YCR7dH09MDsgbWF4LWFnZT0tMTsgcGF0aD1cLztgfX1jbGFzcyBHe2NvbnN0cnVjdG9yKHQpe3RoaXMud2luPXR9Z2V0SXRlbSh0KXtjb25zdCBlPXRoaXMud2luW3RdO3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlP0pTT04uc3RyaW5naWZ5KGUpOnZvaWQgMCE9PWU/ZTpudWxsfXNldEl0ZW0odCxlKXtxKHQpLHRoaXMud2luW3RdPWV9cmVtb3ZlSXRlbSh0KXtkZWxldGUgdGhpcy53aW5bdF19fXZhciBYLFk7KHQ9Pntjb25zdCBlPVtuZXcgRyh0KV0sbj1cIm9uY29udGV4dHN0b3JlXCI7bGV0IG87UShcImxvY2FsU3RvcmFnZVwiLHQpJiZlLnB1c2gobmV3IEYodC5sb2NhbFN0b3JhZ2UpKSxRKFwic2Vzc2lvblN0b3JhZ2VcIix0KSYmZS5wdXNoKG5ldyBGKHQuc2Vzc2lvblN0b3JhZ2UpKSxmdW5jdGlvbih0PXdpbmRvdyl7dHJ5e3JldHVybiB0LmRvY3VtZW50LmNvb2tpZSx0Lm5hdmlnYXRvci5jb29raWVFbmFibGVkfWNhdGNoKHQpe3JldHVybiExfX0odCkmJmUucHVzaChuZXcgTCh0LmRvY3VtZW50KSl9KSh3aW5kb3cpLGZ1bmN0aW9uKHQpe3QuU0VVPVwic2V1XCIsdC5TTkM9XCJzbmNcIix0LlNTVD1cInNzdFwiLHQuU0tBPVwic2thXCJ9KFh8fChYPXt9KSksXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fXCIuc3BsaXQoXCJcIiksZnVuY3Rpb24odCl7dC5Wb2NhYnVsYXJ5PVwidHBtbWh2MThcIix0LldlaWdodHM9XCJ0cG1taHcxOFwifShZfHwoWT17fSkpO1kuVm9jYWJ1bGFyeSxZLldlaWdodHM7Y29uc3QgWj10PT57Y29uc3RbZV09dC5zcGxpdChcIlwvXC9cIik7bGV0W24sbyxyXT1mdW5jdGlvbih0LGUpe2xldFtuLG8sLi4ucl09dC5zcGxpdChlKTtyZXR1cm4gbz1bbywuLi5yXS5qb2luKGUpLFtuLG8sQm9vbGVhbihyLmxlbmd0aCldfSh0LFwiP1wiKTt2YXIgcztyJiZmdW5jdGlvbih0LGUsbil7dHJ5e3JldHVybiB0KCl9Y2F0Y2godCl7aWYoZSlyZXR1cm4gZSh0KX19KCgoKT0+e3Rocm93IG5ldyBFcnJvcihcIlRoZSBVUkwgY29udGFpbnMgdW5lbmNvZGVkIGNoYXJhY3RlcnMuXCIpfSksXCJmdW5jdGlvblwiPT10eXBlb2YgaGFuZGxlRXhjZXB0aW9uP3Q9PntoYW5kbGVFeGNlcHRpb24odCl9OnMpO2NvbnN0W2ksLi4uY109bi5yZXBsYWNlKFwvXmh0dHBzPzpcXFwvXFxcL1wvLFwiXCIpLnNwbGl0KFwiXC9cIik7cmV0dXJue3Byb3RvY29sOmUsb3JpZ2luOm4sZG9tYWluOmkscGF0aDpjLmpvaW4oXCJcL1wiKSxzZWFyY2g6b319LHR0PSgpPT57Y29uc3QgdD1IW1AoMCxILmxlbmd0aC0xKV0sZT0hUCgwLDEpPyh0PT57bGV0IGU9XCJcIjtmb3IobGV0IG49MDtuPHQ7bisrKWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoUCg5NywxMjIpKTtyZXR1cm4gZX0pKFAoMiw2KSk6UCgxLDk5OTk5OSk7cmV0dXJuYCR7dH09JHtlfWB9LGV0PSh0LGUsbik9Pntjb25zdCBvPSgodCxlKT0+KGUrdCkuc3BsaXQoXCJcIikucmVkdWNlKCgodCxlKT0+MzEqdCtlLmNoYXJDb2RlQXQoMCkmMzM1NTQ0MzEpLDE5KSkodCxlKSxyPSh0PT57bGV0IGU9dCU3MTM4NztyZXR1cm4oKT0+ZT0oMjMyNTEqZSsxMjM0NSklNzEzODd9KShvKTtyZXR1cm4gbi5zcGxpdChcIlwiKS5tYXAoKHQ9PigodCxlKT0+e2NvbnN0IG49dC5jaGFyQ29kZUF0KDApLG89bjw5N3x8bj4xMjI/bjo5Nysobi05NytlKCkpJTI2LHI9U3RyaW5nLmZyb21DaGFyQ29kZShvKTtyZXR1cm5cImlcIj09PXI/citcImlcIjpyfSkodCxyKSkpLmpvaW4oXCJcIil9LG50PSh0LGUpPT57dD10LnJlcGxhY2UoYD8ke3p9PSR7ZX0mYCxcIj9cIikucmVwbGFjZShgPyR7en09JHtlfWAsXCI/XCIpLnJlcGxhY2UoYCYke3p9PSR7ZX1gLFwiXCIpO2xldHtkb21haW46bixzZWFyY2g6byxvcmlnaW46cn09Wih0KSxzPW8/by5zcGxpdChcIiZcIik6W107Y29uc3QgaT1zLmxlbmd0aD40P1swLDJdOls1LDldO3MucHVzaCguLi4oKHQsZSk9Pntjb25zdCBuPVtdLG89UCh0LGUpO2ZvcihsZXQgdD0wO3Q8bzt0Kyspbi5wdXNoKHR0KCkpO3JldHVybiBufSkoLi4uaSkpLHM9KHQ9Pntjb25zdCBlPVsuLi50XTtsZXQgbj1lLmxlbmd0aDtmb3IoOzAhPT1uOyl7Y29uc3QgdD1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbik7bi0tLFtlW25dLGVbdF1dPVtlW3RdLGVbbl1dfXJldHVybiBlfSkocyk7Y29uc3QgYz1ldChlLG4scy5qb2luKFwiJlwiKSksYT1QKDAscy5sZW5ndGgpLGw9Yy5zcGxpdChcIiZcIik7cmV0dXJuIGwuc3BsaWNlKGEsMCxgaWQ9JHtlfWApLHIucmVwbGFjZShuLG4rVykrXCI/XCIrbC5qb2luKFwiJlwiKX0sb3Q9dD0+KHQ9PnQ+PTE3MzEyNzZlNiYmdDw9MTczMTc5NDRlNXx8dD49MTczMjQ4NTZlNSYmdDw9MTczMzAwNGU2KSh0KT9QKHQtSyx0K0spOnQscnQ9dD0+e2NvbnN0IGU9bmV3IFJlZ0V4cChfK1wiPShcXFxcZCspKHIpP1wiKS5leGVjKHQubG9jYXRpb24uaHJlZiksbj1lJiZlWzFdJiYrZVsxXTtyZXR1cm4gbiYmIWlzTmFOKG4pPyhudWxsPT1lP3ZvaWQgMDplWzJdKT9vdChuKTpuOm90KERhdGUubm93KCkpfSxzdD1cImNsYWJkZnJcIjtmdW5jdGlvbiBpdCh0KXtpZighdClyZXR1cm4gbnVsbDtjb25zdCBlPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57Y29uc3Qgbz10W25dOyhmdW5jdGlvbih0KXtjb25zdCBlPW51bGw9PXQ/dm9pZCAwOnRbMF0sbj1udWxsPT10P3ZvaWQgMDp0WzFdO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiZOdW1iZXIuaXNGaW5pdGUobikmJm4+RGF0ZS5ub3coKX0pKG8pJiYoZVtuXT1vKX0pKSxlfWNvbnN0IGN0PSgoKT0+e3ZhciB0O2NvbnN0W2Usbl09ZnVuY3Rpb24oKXtpZihRKFwibG9jYWxTdG9yYWdlXCIpKXtjb25zdCB0PXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdCk7cmV0dXJuW3Q/SlNPTi5wYXJzZSh0KTpudWxsLCExXX1yZXR1cm5bbnVsbCwhMF19KCksbz1udWxsIT09KHQ9aXQoZSkpJiZ2b2lkIDAhPT10P3Q6e307cmV0dXJuIG58fHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdCxKU09OLnN0cmluZ2lmeShvKSkse2dldDp0PT5vW3RdLHNldDoodCxlLHIpPT57Y29uc3Qgcz1bZSxEYXRlLm5vdygpKzFlMypyXTtvW3RdPXMsbnx8d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0LEpTT04uc3RyaW5naWZ5KG8pKX19fSkoKTtjb25zdCBhdD1bMSwzLDYsNSw4LDksMTAsMTEsMTIsMTMsMTRdO2xldCBsdDtjb25zdCB1dD1VaW50OEFycmF5O2xldCBodDtjbGFzcyBkdHtjb25zdHJ1Y3Rvcih0LGUsbixvLHIscyl7dGhpcy5pZD1lLHRoaXMudD1uLHRoaXMuYjZkPW8sdGhpcy52ZXI9cix0aGlzLmZidj1zLHRoaXMudG1yPW51bGwsdGhpcy5nZD10PT5odC53dS50aGVuKChlPT5lLnVybChodC5nZmNvKHQpKSkpLHRoaXMuYjZhYj10PT51dC5mcm9tKGF0b2IodCksKHQ9PnQuY2hhckNvZGVBdCgwKSkpLHRoaXMuZ2N1az0oKT0+YCR7aHQuaWR9JHtEfWAsdGhpcy5nZnU9dD0+YCR7ZnVuY3Rpb24odCxlKXtjb25zdCBuPW5ldyBSZWdFeHAoQStcIj0oW2EtejAtOS4tXSspJj9cIikuZXhlYyh0LmxvY2F0aW9uLmhyZWYpLG89biYmblsxXT9uWzFdOm51bGw7cmV0dXJuIGUmJm8/ZS5yZXBsYWNlKEosYC0ke299XC9gKTplfHxvfShsdCx0KX0/aWQ9JHtodC5pZH1gLHRoaXMuc2FzdD10PT4wIT09TnVtYmVyKHQpLGh0PXRoaXMsbHQ9dCx0aGlzLnd1PWh0Lml3YSgpLGx0W3RoaXMuaWQrVl09dGhpcy5pbnMoKSxodC5jY2x0KCksbHRbaHQuaWQrVV09bnR9aW4oKXt0aGlzLnNhc3QoaHQudCkmJiEwIT09bHRbUltodC50XV0mJihodC50bXImJmNsZWFyVGltZW91dChodC50bXIpLGh0LmFzdCgpKX1pbnMoKXtsdFt0aGlzLmdjZGsoKV09e307Y29uc3QgdD1hdC5tYXAoKHQ9Pmh0LmdkKHQpLnRoZW4oKGU9PihsdFtodC5nY2RrKCldW3RdPWUsZSkpKSkpO3JldHVybiBQcm9taXNlLmFsbCh0KS50aGVuKCh0PT4obHRbaHQuZ2N1aygpXT10LCEwKSkpfWNjbHQoKXtodC5zYXN0KGh0LnQpJiYodGhpcy50bXI9bHQuc2V0VGltZW91dCgoKCk9PiFsdFtOW2h0LnRdXSYmaHQuYXN0KCkpLDVlMykpfWdmY28odCl7Y29uc3R7bmF2aWdhdG9yOmV9PWx0LG49ZT9lLnVzZXJBZ2VudDpcIlwiLG89bHQubG9jYXRpb24uaG9zdG5hbWV8fFwiXCI7cmV0dXJuW2x0LmlubmVySGVpZ2h0LGx0LmlubmVyV2lkdGgsbHQuc2Vzc2lvblN0b3JhZ2U/MTowLHJ0KGx0KSwwLHQsby5zbGljZSgwLDEwMCksbi5zbGljZSgwLDE1KV0uam9pbihcIixcIil9YXN0KCl7aHQuc2FzdChodC50KSYmaHQuZ2QoaHQudCkudGhlbigodD0+e2x0W2h0LmlkK01dPWh0LnZlcjtjb25zdCBlPWx0LmRvY3VtZW50LG49ZS5jcmVhdGVFbGVtZW50KEIpLFtvXT1mdW5jdGlvbih0LGUpe2NvbnN0e2RvbWFpbjpuLHBhdGg6byxzZWFyY2g6cn09Wih0KSxzPWN0LmdldChuKTtyZXR1cm4gcz9bYCR7aT1zWzBdLChcL2h0dHBzPzpcXFwvXFxcL1wvLnRlc3QoaSk/XCJcIjpcImh0dHBzOlwvXC9cIikraX1cLyR7b30/JHtyfWAsITFdOlt0LCExXTt2YXIgaX0oaHQuZ2Z1KHQpKTtuLnNyYz1udChvLGh0LmlkKSxlLmhlYWQuYXBwZW5kQ2hpbGQobil9KSl9aXdhKCl7Y29uc3QgdD1XZWJBc3NlbWJseSxlPXQmJnQuaW5zdGFudGlhdGU7cmV0dXJuIGU/ZShodC5iNmFiKGh0LmI2ZCkse30pLnRoZW4oKCh7aW5zdGFuY2U6e2V4cG9ydHM6dH19KT0+e2NvbnN0IGU9dC5tZW1vcnksbj10LnVybCxvPW5ldyBUZXh0RW5jb2RlcixyPW5ldyBUZXh0RGVjb2RlcihcInV0Zi04XCIpO3JldHVybnt1cmw6dD0+e2NvbnN0IHM9by5lbmNvZGUodCksaT1uZXcgdXQoZS5idWZmZXIsMCxzLmxlbmd0aCk7aS5zZXQocyk7Y29uc3QgYz1pLmJ5dGVPZmZzZXQrcy5sZW5ndGgsYT1uKGkscy5sZW5ndGgsYyksbD1uZXcgdXQoZS5idWZmZXIsYyxhKTtyZXR1cm4gci5kZWNvZGUobCl9fX0pKTpQcm9taXNlLnJlc29sdmUodm9pZCAwKX1nY2RrKCl7cmV0dXJuYCR7dGhpcy5pZH0ke1R9YH19IWZ1bmN0aW9uKHQsZSxuLG8scixzKXtjb25zdCBpPW5ldyBkdCh3aW5kb3csXCIyMDQ3NDcyXCIsXCIyXCIsXCJBR0Z6YlFFQUFBQUJIQVZnQUFGXC9ZQU5cL2YzOEJmMkFEZjM5XC9BWDVnQVg4QVlBRlwvQVg4RENRZ0FBUUlCQUFNRUFBUUZBWEFCQVFFRkJnRUJnQUtBQWdZSkFYOEJRY0NJd0FJTEIyY0hCbTFsYlc5eWVRSUFBM1Z5YkFBREdWOWZhVzVrYVhKbFkzUmZablZ1WTNScGIyNWZkR0ZpYkdVQkFCQmZYMlZ5Y201dlgyeHZZMkYwYVc5dUFBY0pjM1JoWTJ0VFlYWmxBQVFNYzNSaFkydFNaWE4wYjNKbEFBVUtjM1JoWTJ0QmJHeHZZd0FHQ29jR0NDRUJBWDlCdUFoQnVBZ29BZ0JCRTJ4Qm9SeHFRWWZDMXk5d0lnQTJBZ0FnQUF1VEFRRUZmeEFBSUFFZ0FHdEJBV3B3SUFCcUlnUUVRRUVBSVFCQkF5RUJBMEFnQVVFRElBQkJBM0FpQnhzaEFSQUFJZ1pCRkhCQmtBaHFMUUFBSVFNQ2Z5QUZRUUFnQnh0RkJFQkJBQ0FHSUFGd0RRRWFJQVpCQm5CQmdBaHFMUUFBSVFNTFFRRUxJUVVnQUNBQ2FpQURRYXdJTFFBQWF6b0FBQ0FCUVFGcklRRWdBRUVCYWlJQUlBUkpEUUFMQ3lBQ0lBUnFDM0VDQTM4Q2ZnSkFJQUZCQUV3TkFBTkFJQVJCQVdvaEF5QUNJQVVnQUNBRWFpMEFBRUVzUm1vaUJVWUVRQ0FCSUFOTURRSURRQ0FBSUFOcU1BQUFJZ2RDTEZFTkF5QUdRZ3ArSUFkOFFqQjlJUVlnQTBFQmFpSURJQUZIRFFBTERBSUxJQU1oQkNBQklBTktEUUFMQ3lBR0M3Z0RBZ04rQjM4Z0FDQUJRUU1RQWlFRElBQWdBVUVGRUFJaEJVRzRDQ0FEUWJBSUtRTUFJZ1FnQXlBRVZCdEJxQWdvQWdBaUFFRXlhaUlCSUFGc1FlZ0hiSzJBSWdRZ0FFRU9haUlLSUFCQkJHc2dBMEtBZ1BIdHh6QlVJZ3NicllDbklBTkNcLzRcL01wXC9ZeFZrRVdkSEkyQWdBUUFCb1FBQm9nQWtMbzZOR0R0ODdPbHk4M0FBQkJCMEVLUVFnZ0EwS0EwTVdYZ3pKVUd5QURRb0NXb3AzbE1GUWlCaHRCQzBFTUlBWWJJQUpCQ0dvUUFTRUFFQUFhSXdCQkVHc2lBU1FBSUFCQkxqb0FBQ0FCUWVQZXRRTTJBZ3dnQUVFQmFpRUhRUUFoQUNBQlFReHFJZ3d0QUFBaUNBUkFBMEFnQUNBSGFpQUlPZ0FBSUF3Z0FFRUJhaUlBYWkwQUFDSUlEUUFMQ3lBQlFSQnFKQUFnQUNBSGFpRUJRYmdJSUFRZ0NxMkFJQVZDRzRaQ0FFS0FnSUFnUW9DQWdEQkNnSUNBQ0VLQWdJQVlJQVZDQ0ZFYlFvQ0FnQkpDZ0lEQURTQURRb0NJbDlxc01sUWJJQU5DZ0pETXBcL1l4VkJzZ0EwS0FtTWF1enpGVUd5QUdHeUFMRzRTRVBnSUFFQUFhUVFKQkJCQUFRUU53SWdBYklRWURRQ0FCUVM4NkFBQWdBQ0FKUmlFSElBWkJCU0FCUVFGcUVBRWhBU0FKUVFGcUlRa2dCMFVOQUFzZ0FTQUNhd3NFQUNNQUN3WUFJQUFrQUFzUUFDTUFJQUJyUVhCeElnQWtBQ0FBQ3dVQVFid0lDd3M3QXdCQmdBZ0xCcDZpcHF5eXRnQkJrQWdMRkorZ29hT2twYWVvcWFxcnJhNnZzTEd6dExXM0FFR29DQXNPQ2dBQUFEMEFBQURcL2h4b3dsUUU9XCIsXCI4XCIsXCIxLjAuNDAwXCIpO3dpbmRvd1tcInV6amhuXCJdPSgpPT5pLmluKCl9KCl9KCk7PFwvc2NyaXB0PlxyXG48c2NyaXB0IGRhdGEtY2Zhc3luYz1cImZhbHNlXCIgdHlwZT1cInRleHRcL2phdmFzY3JpcHRcIiBzcmM9XCJcL1wvYmFua2luZ2Jsb2F0ZWRjYXB0aXZlLmNvbVwvYWFzXC9yNDVkXC92a2lcLzIwNDc0NzFcLzNlZjVlODQ0LmpzXCIgYXN5bmMgb25lcnJvcj1cInV6amhuKClcIj48XC9zY3JpcHQ+In0seyJpZCI6ImV4b2Nfal9QT1BVTkRFUiIsImFkc3BvdCI6ImpfUE9QVU5ERVIiLCJ3ZWlnaHQiOiI2IiwiZmNhcCI6IjEiLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjpmYWxzZSwibWluV2lkdGgiOiI3NjgiLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPHNjcmlwdCB0eXBlPVwiYXBwbGljYXRpb25cL2phdmFzY3JpcHRcIj5cclxuKGZ1bmN0aW9uKCkge1xyXG4gICAgZnVuY3Rpb24gcmFuZFN0cihlLHQpe2Zvcih2YXIgbj1cIlwiLHI9dHx8XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCIsbz0wO288ZTtvKyspbis9ci5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnIubGVuZ3RoKSk7cmV0dXJuIG59ZnVuY3Rpb24gZ2VuZXJhdGVDb250ZW50KCl7cmV0dXJuIHZvaWQgMD09PWdlbmVyYXRlQ29udGVudC52YWwmJihnZW5lcmF0ZUNvbnRlbnQudmFsPVwiZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcIityYW5kU3RyKDQqTWF0aC5yYW5kb20oKSszKStcIik7XCIpLGdlbmVyYXRlQ29udGVudC52YWx9dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudC5jdXJyZW50U2NyaXB0LFwiaW5uZXJIVE1MXCIse2dldDpnZW5lcmF0ZUNvbnRlbnR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQuY3VycmVudFNjcmlwdCxcInRleHRDb250ZW50XCIse2dldDpnZW5lcmF0ZUNvbnRlbnR9KX1jYXRjaChlKXt9O1xyXG5cclxuICAgIFwvXC92ZXJzaW9uIDcuMC4wXHJcblxyXG4gICAgdmFyIGFkQ29uZmlnID0ge1xyXG4gICAgXCJhZHNfaG9zdFwiOiBcImEucGVtc3J2LmNvbVwiLFxyXG4gICAgXCJzeW5kaWNhdGlvbl9ob3N0XCI6IFwicy5wZW1zcnYuY29tXCIsXHJcbiAgICBcImlkem9uZVwiOiA1NjY1NjUyLFxyXG4gICAgXCJwb3B1cF9mYWxsYmFja1wiOiBmYWxzZSxcclxuICAgIFwicG9wdXBfZm9yY2VcIjogZmFsc2UsXHJcbiAgICBcImNocm9tZV9lbmFibGVkXCI6IHRydWUsXHJcbiAgICBcIm5ld190YWJcIjogZmFsc2UsXHJcbiAgICBcImZyZXF1ZW5jeV9wZXJpb2RcIjogNzIwLFxyXG4gICAgXCJmcmVxdWVuY3lfY291bnRcIjogMSxcclxuICAgIFwidHJpZ2dlcl9tZXRob2RcIjogMyxcclxuICAgIFwidHJpZ2dlcl9jbGFzc1wiOiBcIlwiLFxyXG4gICAgXCJ0cmlnZ2VyX2RlbGF5XCI6IDAsXHJcbiAgICBcImNhcHBpbmdfZW5hYmxlZFwiOiB0cnVlLFxyXG4gICAgXCJ0Y2ZfZW5hYmxlZFwiOiB0cnVlLFxyXG4gICAgXCJvbmx5X2lubGluZVwiOiBmYWxzZVxyXG59O1xyXG5cclxud2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGx8fChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPWRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbD1PYmplY3QucXVlcnlTZWxlY3RvckFsbD1mdW5jdGlvbihlLG8sdCxpLG4pe3ZhciByPWRvY3VtZW50LGE9ci5jcmVhdGVTdHlsZVNoZWV0KCk7Zm9yKG49ci5hbGwsbz1bXSx0PShlPWUucmVwbGFjZShcL1xcW2ZvclxcYlwvZ2ksXCJbaHRtbEZvclwiKS5zcGxpdChcIixcIikpLmxlbmd0aDt0LS07KXtmb3IoYS5hZGRSdWxlKGVbdF0sXCJrOnZcIiksaT1uLmxlbmd0aDtpLS07KW5baV0uY3VycmVudFN0eWxlLmsmJm8ucHVzaChuW2ldKTthLnJlbW92ZVJ1bGUoMCl9cmV0dXJuIG99KTt2YXIgcG9wTWFnaWM9e3ZlcnNpb246Nyxjb29raWVfbmFtZTpcIlwiLHVybDpcIlwiLGNvbmZpZzp7fSxvcGVuX2NvdW50OjAsdG9wOm51bGwsYnJvd3NlcjpudWxsLHZlbm9yX2xvYWRlZDohMSx2ZW5vcjohMSx0Y2ZEYXRhOm51bGwsY29uZmlnVHBsOnthZHNfaG9zdDpcIlwiLHN5bmRpY2F0aW9uX2hvc3Q6XCJcIixpZHpvbmU6XCJcIixmcmVxdWVuY3lfcGVyaW9kOjcyMCxmcmVxdWVuY3lfY291bnQ6MSx0cmlnZ2VyX21ldGhvZDoxLHRyaWdnZXJfY2xhc3M6XCJcIixwb3B1cF9mb3JjZTohMSxwb3B1cF9mYWxsYmFjazohMSxjaHJvbWVfZW5hYmxlZDohMCxuZXdfdGFiOiExLGNhdDpcIlwiLHRhZ3M6XCJcIixlbDpcIlwiLHN1YjpcIlwiLHN1YjI6XCJcIixzdWIzOlwiXCIsb25seV9pbmxpbmU6ITEsdHJpZ2dlcl9kZWxheTowLGNhcHBpbmdfZW5hYmxlZDohMCx0Y2ZfZW5hYmxlZDohMSxjb29raWVjb25zZW50OiEwLHNob3VsZF9maXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LG9uX3JlZGlyZWN0Om51bGx9LGluaXQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09ZS5pZHpvbmUmJmUuaWR6b25lKXt2b2lkIDA9PT1lLmN1c3RvbVRhcmdldGluZyYmKGUuY3VzdG9tVGFyZ2V0aW5nPVtdKSx3aW5kb3cuY3VzdG9tVGFyZ2V0aW5nPWUuY3VzdG9tVGFyZ2V0aW5nfHxudWxsO3ZhciBvPU9iamVjdC5rZXlzKGUuY3VzdG9tVGFyZ2V0aW5nKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNlYXJjaChcImV4X1wiKT49MH0pKTtmb3IodmFyIHQgaW4gby5sZW5ndGgmJm8uZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb25maWdUcGxbZV09bnVsbH0uYmluZCh0aGlzKSksdGhpcy5jb25maWdUcGwpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29uZmlnVHBsLHQpJiYodm9pZCAwIT09ZVt0XT90aGlzLmNvbmZpZ1t0XT1lW3RdOnRoaXMuY29uZmlnW3RdPXRoaXMuY29uZmlnVHBsW3RdKTtpZih2b2lkIDAhPT10aGlzLmNvbmZpZy5pZHpvbmUmJlwiXCIhPT10aGlzLmNvbmZpZy5pZHpvbmUpeyEwIT09dGhpcy5jb25maWcub25seV9pbmxpbmUmJnRoaXMubG9hZEhvc3RlZCgpO3ZhciBpPXRoaXM7dGhpcy5jaGVja1RDRkNvbnNlbnQoKGZ1bmN0aW9uKCl7XCJjb21wbGV0ZVwiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9pLnByZXBhcmVQb3BXYWl0KCk6aS5hZGRFdmVudFRvRWxlbWVudCh3aW5kb3csXCJsb2FkXCIsaS5wcmVwYXJlUG9wKX0pKX19fSxnZXRDb3VudEZyb21Db29raWU6ZnVuY3Rpb24oKXtpZighdGhpcy5jb25maWcuY29va2llY29uc2VudClyZXR1cm4gMDt2YXIgZT1wb3BNYWdpYy5nZXRDb29raWUocG9wTWFnaWMuY29va2llX25hbWUpLG89dm9pZCAwPT09ZT8wOnBhcnNlSW50KGUpO3JldHVybiBpc05hTihvKSYmKG89MCksb30sZ2V0TGFzdE9wZW5lZFRpbWVGcm9tQ29va2llOmZ1bmN0aW9uKCl7dmFyIGU9cG9wTWFnaWMuZ2V0Q29va2llKHBvcE1hZ2ljLmNvb2tpZV9uYW1lKSxvPW51bGw7aWYodm9pZCAwIT09ZSl7dmFyIHQ9ZS5zcGxpdChcIjtcIilbMV07bz10PjA/cGFyc2VJbnQodCk6MH1yZXR1cm4gaXNOYU4obykmJihvPW51bGwpLG99LHNob3VsZFNob3c6ZnVuY3Rpb24oKXtpZighcG9wTWFnaWMuY29uZmlnLmNhcHBpbmdfZW5hYmxlZCl7dmFyIGU9ITAsbz1wb3BNYWdpYy5jb25maWcuc2hvdWxkX2ZpcmU7dHJ5e1wiZnVuY3Rpb25cIj09dHlwZW9mIG8mJihlPUJvb2xlYW4obygpKSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihcIkVycm9yIGV4ZWN1dGluZyBzaG91bGQgZmlyZSBjYWxsYmFjayBmdW5jdGlvbjpcIixlKX1yZXR1cm4gZSYmMD09PXBvcE1hZ2ljLm9wZW5fY291bnR9aWYocG9wTWFnaWMub3Blbl9jb3VudD49cG9wTWFnaWMuY29uZmlnLmZyZXF1ZW5jeV9jb3VudClyZXR1cm4hMTt2YXIgdD1wb3BNYWdpYy5nZXRDb3VudEZyb21Db29raWUoKSxpPXBvcE1hZ2ljLmdldExhc3RPcGVuZWRUaW1lRnJvbUNvb2tpZSgpLG49TWF0aC5mbG9vcihEYXRlLm5vdygpXC8xZTMpLHI9aStwb3BNYWdpYy5jb25maWcudHJpZ2dlcl9kZWxheTtyZXR1cm4hKGkmJnI+bikmJihwb3BNYWdpYy5vcGVuX2NvdW50PXQsISh0Pj1wb3BNYWdpYy5jb25maWcuZnJlcXVlbmN5X2NvdW50KSl9LHZlbm9yU2hvdWxkU2hvdzpmdW5jdGlvbigpe3JldHVybiBwb3BNYWdpYy52ZW5vcl9sb2FkZWQmJlwiMFwiPT09cG9wTWFnaWMudmVub3J9LHNldEFzT3BlbmVkOmZ1bmN0aW9uKGUpe3ZhciBvPWU/ZS50YXJnZXR8fGUuc3JjRWxlbWVudDpudWxsLHQ9e2lkOlwiXCIsdGFnTmFtZTpcIlwiLGNsYXNzZXM6XCJcIix0ZXh0OlwiXCIsaHJlZjpcIlwiLGVsbTpcIlwifTt2b2lkIDAhPT1vJiZudWxsIT1vJiYodD17aWQ6dm9pZCAwIT09by5pZCYmbnVsbCE9by5pZD9vLmlkOlwiXCIsdGFnTmFtZTp2b2lkIDAhPT1vLnRhZ05hbWUmJm51bGwhPW8udGFnTmFtZT9vLnRhZ05hbWU6XCJcIixjbGFzc2VzOnZvaWQgMCE9PW8uY2xhc3NMaXN0JiZudWxsIT1vLmNsYXNzTGlzdD9vLmNsYXNzTGlzdDpcIlwiLHRleHQ6dm9pZCAwIT09by5vdXRlclRleHQmJm51bGwhPW8ub3V0ZXJUZXh0P28ub3V0ZXJUZXh0OlwiXCIsaHJlZjp2b2lkIDAhPT1vLmhyZWYmJm51bGwhPW8uaHJlZj9vLmhyZWY6XCJcIixlbG06b30pO3ZhciBpPW5ldyBDdXN0b21FdmVudChcImNyZWF0aXZlRGlzcGxheWVkLVwiK3BvcE1hZ2ljLmNvbmZpZy5pZHpvbmUse2RldGFpbDp0fSk7aWYoZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChpKSxwb3BNYWdpYy5jb25maWcuY2FwcGluZ19lbmFibGVkKXt2YXIgbj0xO249MCE9PXBvcE1hZ2ljLm9wZW5fY291bnQ/cG9wTWFnaWMub3Blbl9jb3VudCsxOnBvcE1hZ2ljLmdldENvdW50RnJvbUNvb2tpZSgpKzE7dmFyIHI9TWF0aC5mbG9vcihEYXRlLm5vdygpXC8xZTMpO3BvcE1hZ2ljLmNvbmZpZy5jb29raWVjb25zZW50JiZwb3BNYWdpYy5zZXRDb29raWUocG9wTWFnaWMuY29va2llX25hbWUsbitcIjtcIityLHBvcE1hZ2ljLmNvbmZpZy5mcmVxdWVuY3lfcGVyaW9kKX1lbHNlKytwb3BNYWdpYy5vcGVuX2NvdW50fSxsb2FkSG9zdGVkOmZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtmb3IodmFyIG8gaW4gZS50eXBlPVwiYXBwbGljYXRpb25cL2phdmFzY3JpcHRcIixlLmFzeW5jPSEwLGUuc3JjPVwiXC9cL1wiK3RoaXMuY29uZmlnLmFkc19ob3N0K1wiXC9wb3B1bmRlcjEwMDAuanNcIixlLmlkPVwicG9wbWFnaWNsZHJcIix0aGlzLmNvbmZpZylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb25maWcsbykmJlwiYWRzX2hvc3RcIiE9PW8mJlwic3luZGljYXRpb25faG9zdFwiIT09byYmZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWV4by1cIitvLHRoaXMuY29uZmlnW29dKTt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIikuaXRlbSgwKTt0LmZpcnN0Q2hpbGQ/dC5pbnNlcnRCZWZvcmUoZSx0LmZpcnN0Q2hpbGQpOnQuYXBwZW5kQ2hpbGQoZSl9LHByZXBhcmVQb3BXYWl0OmZ1bmN0aW9uKCl7c2V0VGltZW91dChwb3BNYWdpYy5wcmVwYXJlUG9wLDQwMCl9LHByZXBhcmVQb3A6ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiIT10eXBlb2YgZXhvSnNQb3AxMDF8fCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhvSnNQb3AxMDEsXCJhZGRcIikpe2lmKHBvcE1hZ2ljLnRvcD1zZWxmLHBvcE1hZ2ljLnRvcCE9PXNlbGYpdHJ5e3RvcC5kb2N1bWVudC5sb2NhdGlvbi50b1N0cmluZygpJiYocG9wTWFnaWMudG9wPXRvcCl9Y2F0Y2goZSl7fWlmKHBvcE1hZ2ljLmNvb2tpZV9uYW1lPVwiem9uZS1jYXAtXCIrcG9wTWFnaWMuY29uZmlnLmlkem9uZSxwb3BNYWdpYy5jb25maWcuY2FwcGluZ19lbmFibGVkfHwoZG9jdW1lbnQuY29va2llPXBvcE1hZ2ljLmNvb2tpZV9uYW1lK1wiPTtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UOyBwYXRoPVwvXCIpLHBvcE1hZ2ljLnNob3VsZFNob3coKSl7dmFyIGU9bmV3IFhNTEh0dHBSZXF1ZXN0O2Uub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ZS5yZWFkeVN0YXRlPT1YTUxIdHRwUmVxdWVzdC5ET05FJiYocG9wTWFnaWMudmVub3JfbG9hZGVkPSEwLDIwMD09ZS5zdGF0dXM/cG9wTWFnaWMudmVub3I9ZS5yZXNwb25zZVRleHQ6cG9wTWFnaWMudmVub3I9XCIwXCIpfTt2YXIgbz1cImh0dHBzOlwiIT09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wmJlwiaHR0cDpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sP1wiaHR0cHM6XCI6ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w7ZS5vcGVuKFwiR0VUXCIsbytcIlwvXC9cIitwb3BNYWdpYy5jb25maWcuc3luZGljYXRpb25faG9zdCtcIlwvdmVub3IucGhwXCIsITApO3RyeXtlLnNlbmQoKX1jYXRjaChlKXtwb3BNYWdpYy52ZW5vcl9sb2FkZWQ9ITB9fWlmKHBvcE1hZ2ljLmJ1aWxkVXJsKCkscG9wTWFnaWMuYnJvd3Nlcj1wb3BNYWdpYy5icm93c2VyRGV0ZWN0b3IuZ2V0QnJvd3NlckluZm8oKSxwb3BNYWdpYy5jb25maWcuY2hyb21lX2VuYWJsZWR8fCFwb3BNYWdpYy5icm93c2VyLmlzQ2hyb21lKXt2YXIgdD1wb3BNYWdpYy5nZXRQb3BNZXRob2QocG9wTWFnaWMuYnJvd3Nlcik7cG9wTWFnaWMuYWRkRXZlbnQoXCJjbGlja1wiLHQpfX19LGdldFBvcE1ldGhvZDpmdW5jdGlvbihlKXtyZXR1cm4gcG9wTWFnaWMuY29uZmlnLnBvcHVwX2ZvcmNlfHxwb3BNYWdpYy5jb25maWcucG9wdXBfZmFsbGJhY2smJmUuaXNDaHJvbWUmJmUudmVyc2lvbj49NjgmJiFlLmlzTW9iaWxlP3BvcE1hZ2ljLm1ldGhvZHMucG9wdXA6ZS5pc01vYmlsZT9wb3BNYWdpYy5tZXRob2RzLmRlZmF1bHQ6ZS5pc0Nocm9tZT9wb3BNYWdpYy5tZXRob2RzLmNocm9tZVRhYjpwb3BNYWdpYy5tZXRob2RzLmRlZmF1bHR9LGNoZWNrVENGQ29uc2VudDpmdW5jdGlvbihlKXtpZih0aGlzLmNvbmZpZy50Y2ZfZW5hYmxlZCYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93Ll9fdGNmYXBpKXt2YXIgbz10aGlzO3dpbmRvdy5fX3RjZmFwaShcImFkZEV2ZW50TGlzdGVuZXJcIiwyLChmdW5jdGlvbih0LGkpe2kmJihvLnRjZkRhdGE9dCxcInRjbG9hZGVkXCIhPT10LmV2ZW50U3RhdHVzJiZcInVzZXJhY3Rpb25jb21wbGV0ZVwiIT09dC5ldmVudFN0YXR1c3x8KHdpbmRvdy5fX3RjZmFwaShcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiwyLChmdW5jdGlvbigpe30pLHQubGlzdGVuZXJJZCksZSgpKSl9KSl9ZWxzZSBlKCl9LGJ1aWxkVXJsOmZ1bmN0aW9uKCl7dmFyIGUsbz1cImh0dHBzOlwiIT09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wmJlwiaHR0cDpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sP1wiaHR0cHM6XCI6ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsdD10b3A9PT1zZWxmP2RvY3VtZW50LlVSTDpkb2N1bWVudC5yZWZlcnJlcixpPXt0eXBlOlwiaW5saW5lXCIsbmFtZTpcInBvcE1hZ2ljXCIsdmVyOnRoaXMudmVyc2lvbn0sbj1cIlwiO2N1c3RvbVRhcmdldGluZyYmT2JqZWN0LmtleXMoY3VzdG9tVGFyZ2V0aW5nKS5sZW5ndGgmJihcIm9iamVjdFwiPT10eXBlb2YgY3VzdG9tVGFyZ2V0aW5nP09iamVjdC5rZXlzKGN1c3RvbVRhcmdldGluZyk6Y3VzdG9tVGFyZ2V0aW5nKS5mb3JFYWNoKChmdW5jdGlvbihvKXtcIm9iamVjdFwiPT10eXBlb2YgY3VzdG9tVGFyZ2V0aW5nP2U9Y3VzdG9tVGFyZ2V0aW5nW29dOkFycmF5LmlzQXJyYXkoY3VzdG9tVGFyZ2V0aW5nKSYmKGU9c2NyaXB0RWwuZ2V0QXR0cmlidXRlKG8pKTt2YXIgdD1vLnJlcGxhY2UoXCJkYXRhLWV4by1cIixcIlwiKTtuKz1cIiZcIit0K1wiPVwiK2V9KSk7dmFyIHI9dGhpcy50Y2ZEYXRhJiZ0aGlzLnRjZkRhdGEuZ2RwckFwcGxpZXMmJiEwPT09dGhpcy50Y2ZEYXRhLmdkcHJBcHBsaWVzPzE6MDt0aGlzLnVybD1vK1wiXC9cL1wiK3RoaXMuY29uZmlnLnN5bmRpY2F0aW9uX2hvc3QrXCJcL3YxXC9saW5rLnBocD9jYXQ9XCIrdGhpcy5jb25maWcuY2F0K1wiJmlkem9uZT1cIit0aGlzLmNvbmZpZy5pZHpvbmUrXCImdHlwZT04JnA9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHQpK1wiJnN1Yj1cIit0aGlzLmNvbmZpZy5zdWIrKFwiXCIhPT10aGlzLmNvbmZpZy5zdWIyP1wiJnN1YjI9XCIrdGhpcy5jb25maWcuc3ViMjpcIlwiKSsoXCJcIiE9PXRoaXMuY29uZmlnLnN1YjM/XCImc3ViMz1cIit0aGlzLmNvbmZpZy5zdWIzOlwiXCIpK1wiJmJsb2NrPTEmZWw9XCIrdGhpcy5jb25maWcuZWwrXCImdGFncz1cIit0aGlzLmNvbmZpZy50YWdzK1wiJnNjcl9pbmZvPVwiK2Z1bmN0aW9uKGUpe3ZhciBvPWUudHlwZStcInxcIitlLm5hbWUrXCJ8XCIrZS52ZXI7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChidG9hKG8pKX0oaSkrbitcIiZnZHByPVwiK3IrXCImY2I9XCIrTWF0aC5mbG9vcigxZTkqTWF0aC5yYW5kb20oKSksdGhpcy50Y2ZEYXRhJiZ0aGlzLnRjZkRhdGEudGNTdHJpbmc/dGhpcy51cmwrPVwiJmdkcHJfY29uc2VudD1cIitlbmNvZGVVUklDb21wb25lbnQodGhpcy50Y2ZEYXRhLnRjU3RyaW5nKTp0aGlzLnVybCs9XCImY29va2llY29uc2VudD1cIit0aGlzLmNvbmZpZy5jb29raWVjb25zZW50fSxhZGRFdmVudFRvRWxlbWVudDpmdW5jdGlvbihlLG8sdCl7ZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcihvLHQsITEpOmUuYXR0YWNoRXZlbnQ/KGVbXCJlXCIrbyt0XT10LGVbbyt0XT1mdW5jdGlvbigpe2VbXCJlXCIrbyt0XSh3aW5kb3cuZXZlbnQpfSxlLmF0dGFjaEV2ZW50KFwib25cIitvLGVbbyt0XSkpOmVbXCJvblwiK29dPWVbXCJlXCIrbyt0XX0sZ2V0VHJpZ2dlckNsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgZSxvPVtdOy0xPT09cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfY2xhc3MuaW5kZXhPZihcIixcIik/ZT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9jbGFzcy5zcGxpdChcIiBcIik6ZT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9jbGFzcy5yZXBsYWNlKFwvXFxzXC9nLFwiXCIpLnNwbGl0KFwiLFwiKTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylcIlwiIT09ZVt0XSYmby5wdXNoKFwiLlwiK2VbdF0pO3JldHVybiBvfSxhZGRFdmVudDpmdW5jdGlvbihlLG8pe3ZhciB0O2lmKFwiM1wiIT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2QpaWYoXCIyXCIhPXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZHx8XCJcIj09cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfbWV0aG9kKWlmKFwiNFwiIT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2R8fFwiXCI9PXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZClwb3BNYWdpYy5hZGRFdmVudFRvRWxlbWVudChkb2N1bWVudCxlLG8pO2Vsc2V7dmFyIG49cG9wTWFnaWMuZ2V0VHJpZ2dlckNsYXNzZXMoKTtwb3BNYWdpYy5hZGRFdmVudFRvRWxlbWVudChkb2N1bWVudCxlLChmdW5jdGlvbihlKXtuLnNvbWUoKGZ1bmN0aW9uKG8pe3JldHVybiBudWxsIT09ZS50YXJnZXQuY2xvc2VzdChvKX0pKXx8by5jYWxsKGUudGFyZ2V0LGUpfSkpfWVsc2V7dmFyIHI9cG9wTWFnaWMuZ2V0VHJpZ2dlckNsYXNzZXMoKTtmb3IodD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHIuam9pbihcIiwgXCIpKSxpPTA7aTx0Lmxlbmd0aDtpKyspcG9wTWFnaWMuYWRkRXZlbnRUb0VsZW1lbnQodFtpXSxlLG8pfWVsc2UgZm9yKHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImFcIiksaT0wO2k8dC5sZW5ndGg7aSsrKXBvcE1hZ2ljLmFkZEV2ZW50VG9FbGVtZW50KHRbaV0sZSxvKX0sc2V0Q29va2llOmZ1bmN0aW9uKGUsbyx0KXtpZighdGhpcy5jb25maWcuY29va2llY29uc2VudClyZXR1cm4hMTt0PXBhcnNlSW50KHQsMTApO3ZhciBpPW5ldyBEYXRlO2kuc2V0TWludXRlcyhpLmdldE1pbnV0ZXMoKStwYXJzZUludCh0KSk7dmFyIG49ZW5jb2RlVVJJQ29tcG9uZW50KG8pK1wiOyBleHBpcmVzPVwiK2kudG9VVENTdHJpbmcoKStcIjsgcGF0aD1cL1wiO2RvY3VtZW50LmNvb2tpZT1lK1wiPVwiK259LGdldENvb2tpZTpmdW5jdGlvbihlKXtpZighdGhpcy5jb25maWcuY29va2llY29uc2VudClyZXR1cm4hMTt2YXIgbyx0LGksbj1kb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpO2ZvcihvPTA7bzxuLmxlbmd0aDtvKyspaWYodD1uW29dLnN1YnN0cigwLG5bb10uaW5kZXhPZihcIj1cIikpLGk9bltvXS5zdWJzdHIobltvXS5pbmRleE9mKFwiPVwiKSsxKSwodD10LnJlcGxhY2UoXC9eXFxzK3xcXHMrJFwvZyxcIlwiKSk9PT1lKXJldHVybiBkZWNvZGVVUklDb21wb25lbnQoaSl9LHJhbmRTdHI6ZnVuY3Rpb24oZSxvKXtmb3IodmFyIHQ9XCJcIixpPW98fFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIixuPTA7bjxlO24rKyl0Kz1pLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqaS5sZW5ndGgpKTtyZXR1cm4gdH0saXNWYWxpZFVzZXJFdmVudDpmdW5jdGlvbihlKXtyZXR1cm4hKCEoXCJpc1RydXN0ZWRcImluIGUpfHwhZS5pc1RydXN0ZWR8fFwiaWVcIj09PXBvcE1hZ2ljLmJyb3dzZXIubmFtZXx8XCJzYWZhcmlcIj09PXBvcE1hZ2ljLmJyb3dzZXIubmFtZSl8fDAhPWUuc2NyZWVuWCYmMCE9ZS5zY3JlZW5ZfSxpc1ZhbGlkSHJlZjpmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lfHxcIlwiPT1lKXJldHVybiExO3JldHVybiFcL1xccz9qYXZhc2NyaXB0XFxzPzpcL2kudGVzdChlKX0sZmluZExpbmtUb09wZW46ZnVuY3Rpb24oZSl7dmFyIG89ZSx0PSExO3RyeXtmb3IodmFyIGk9MDtpPDIwJiYhby5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpJiZvIT09ZG9jdW1lbnQmJlwiaHRtbFwiIT09by5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOylvPW8ucGFyZW50Tm9kZSxpKys7dmFyIG49by5nZXRBdHRyaWJ1dGUoXCJ0YXJnZXRcIik7biYmLTEhPT1uLmluZGV4T2YoXCJfYmxhbmtcIil8fCh0PW8uZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSl9Y2F0Y2goZSl7fXJldHVybiBwb3BNYWdpYy5pc1ZhbGlkSHJlZih0KXx8KHQ9ITEpLHR8fHdpbmRvdy5sb2NhdGlvbi5ocmVmfSxnZXRQdUlkOmZ1bmN0aW9uKCl7cmV0dXJuXCJva19cIitNYXRoLmZsb29yKDg5OTk5OTk5Kk1hdGgucmFuZG9tKCkrMWU3KX0sZXhlY3V0ZU9uUmVkaXJlY3Q6ZnVuY3Rpb24oKXt0cnl7cG9wTWFnaWMuY29uZmlnLmNhcHBpbmdfZW5hYmxlZHx8XCJmdW5jdGlvblwiIT10eXBlb2YgcG9wTWFnaWMuY29uZmlnLm9uX3JlZGlyZWN0fHxwb3BNYWdpYy5jb25maWcub25fcmVkaXJlY3QoKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKFwiRXJyb3IgZXhlY3V0aW5nIG9uIHJlZGlyZWN0IGNhbGxiYWNrOlwiLGUpfX0sYnJvd3NlckRldGVjdG9yOnticm93c2VyRGVmaW5pdGlvbnM6W1tcImZpcmVmb3hcIixcL0ZpcmVmb3hcXFwvKFswLTkuXSspKD86XFxzfCQpXC9dLFtcIm9wZXJhXCIsXC9PcGVyYVxcXC8oWzAtOS5dKykoPzpcXHN8JClcL10sW1wib3BlcmFcIixcL09QUlxcXC8oWzAtOS5dKykoOj9cXHN8JCkkXC9dLFtcImVkZ2VcIixcL0VkZyg/OmV8KVxcXC8oWzAtOS5fXSspXC9dLFtcImllXCIsXC9UcmlkZW50XFxcLzdcXC4wLipydjooWzAtOS5dKylcXCkuKkdlY2tvJFwvXSxbXCJpZVwiLFwvTVNJRVxccyhbMC05Ll0rKTsuKlRyaWRlbnRcXFwvWzQtN10uMFwvXSxbXCJpZVwiLFwvTVNJRVxccyg3XFwuMClcL10sW1wic2FmYXJpXCIsXC9WZXJzaW9uXFxcLyhbMC05Ll9dKykuKlNhZmFyaVwvXSxbXCJjaHJvbWVcIixcLyg/IUNocm9tLipFZGcoPzplfCkpQ2hyb20oPzplfGl1bSlcXFwvKFswLTkuXSspKDo/XFxzfCQpXC9dLFtcImNocm9tZVwiLFwvKD8hQ2hyb20uKk9QUilDaHJvbSg/OmV8aXVtKVxcXC8oWzAtOS5dKykoOj9cXHN8JClcL10sW1wiYmIxMFwiLFwvQkIxMDtcXHNUb3VjaC4qVmVyc2lvblxcXC8oWzAtOS5dKylcL10sW1wiYW5kcm9pZFwiLFwvQW5kcm9pZFxccyhbMC05Ll0rKVwvXSxbXCJpb3NcIixcL1ZlcnNpb25cXFwvKFswLTkuX10rKS4qTW9iaWxlLipTYWZhcmkuKlwvXSxbXCJ5YW5kZXhicm93c2VyXCIsXC9ZYUJyb3dzZXJcXFwvKFswLTkuX10rKVwvXSxbXCJjcmlvc1wiLFwvQ3JpT1NcXFwvKFswLTkuXSspKDo/XFxzfCQpXC9dXSxpc0Nocm9tZU9yQ2hyb21pdW06ZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cubmF2aWdhdG9yLG89KGUudXNlckFnZW50fHxcIlwiKS50b0xvd2VyQ2FzZSgpLHQ9ZS52ZW5kb3J8fFwiXCI7aWYoLTEhPT1vLmluZGV4T2YoXCJjcmlvc1wiKSlyZXR1cm4hMDtpZihlLnVzZXJBZ2VudERhdGEmJkFycmF5LmlzQXJyYXkoZS51c2VyQWdlbnREYXRhLmJyYW5kcykmJmUudXNlckFnZW50RGF0YS5icmFuZHMubGVuZ3RoPjApe3ZhciBpPWUudXNlckFnZW50RGF0YS5icmFuZHMsbj1pLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwiR29vZ2xlIENocm9tZVwiPT09ZS5icmFuZH0pKSxyPWkuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuXCJDaHJvbWl1bVwiPT09ZS5icmFuZH0pKSYmMj09PWkubGVuZ3RoO3JldHVybiBufHxyfXZhciBhPSEhd2luZG93LmNocm9tZSxjPS0xIT09by5pbmRleE9mKFwiZWRnXCIpLHA9ISF3aW5kb3cub3ByfHwtMSE9PW8uaW5kZXhPZihcIm9wclwiKSxzPSEoIWUuYnJhdmV8fCFlLmJyYXZlLmlzQnJhdmUpLGc9LTEhPT1vLmluZGV4T2YoXCJ2aXZhbGRpXCIpLGQ9LTEhPT1vLmluZGV4T2YoXCJ5YWJyb3dzZXJcIiksbD0tMSE9PW8uaW5kZXhPZihcInNhbXN1bmdicm93c2VyXCIpLHU9LTEhPT1vLmluZGV4T2YoXCJ1Y2Jyb3dzZXJcIik7cmV0dXJuIGEmJlwiR29vZ2xlIEluYy5cIj09PXQmJiFjJiYhcCYmIXMmJiFnJiYhZCYmIWwmJiF1fSxnZXRCcm93c2VySW5mbzpmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LG89e25hbWU6XCJvdGhlclwiLHZlcnNpb246XCIxLjBcIix2ZXJzaW9uTnVtYmVyOjEsaXNDaHJvbWU6dGhpcy5pc0Nocm9tZU9yQ2hyb21pdW0oKSxpc01vYmlsZTohIWUubWF0Y2goXC9BbmRyb2lkfEJsYWNrQmVycnl8aVBob25lfGlQYWR8aVBvZHxPcGVyYSBNaW5pfElFTW9iaWxlfFdlYk9TfFdpbmRvd3MgUGhvbmVcL2kpfTtmb3IodmFyIHQgaW4gdGhpcy5icm93c2VyRGVmaW5pdGlvbnMpe3ZhciBpPXRoaXMuYnJvd3NlckRlZmluaXRpb25zW3RdO2lmKGlbMV0udGVzdChlKSl7dmFyIG49aVsxXS5leGVjKGUpLHI9biYmblsxXS5zcGxpdChcL1suX11cLykuc2xpY2UoMCwzKSxhPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsMSkuam9pbihcIlwiKXx8XCIwXCI7ciYmci5sZW5ndGg8MyYmQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkociwxPT09ci5sZW5ndGg/WzAsMF06WzBdKSxvLm5hbWU9aVswXSxvLnZlcnNpb249ci5qb2luKFwiLlwiKSxvLnZlcnNpb25OdW1iZXI9cGFyc2VGbG9hdChyWzBdK1wiLlwiK2EpO2JyZWFrfX1yZXR1cm4gb319LG1ldGhvZHM6e2RlZmF1bHQ6ZnVuY3Rpb24oZSl7aWYoIXBvcE1hZ2ljLnNob3VsZFNob3coKXx8IXBvcE1hZ2ljLnZlbm9yU2hvdWxkU2hvdygpfHwhcG9wTWFnaWMuaXNWYWxpZFVzZXJFdmVudChlKSlyZXR1cm4hMDt2YXIgbz1lLnRhcmdldHx8ZS5zcmNFbGVtZW50LHQ9cG9wTWFnaWMuZmluZExpbmtUb09wZW4obyk7cmV0dXJuIHdpbmRvdy5vcGVuKHQsXCJfYmxhbmtcIikscG9wTWFnaWMuc2V0QXNPcGVuZWQoZSkscG9wTWFnaWMuZXhlY3V0ZU9uUmVkaXJlY3QoKSxwb3BNYWdpYy50b3AuZG9jdW1lbnQubG9jYXRpb249cG9wTWFnaWMudXJsLHZvaWQgMCE9PWUucHJldmVudERlZmF1bHQmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSksITB9LGNocm9tZVRhYjpmdW5jdGlvbihlKXtpZighcG9wTWFnaWMuc2hvdWxkU2hvdygpfHwhcG9wTWFnaWMudmVub3JTaG91bGRTaG93KCl8fCFwb3BNYWdpYy5pc1ZhbGlkVXNlckV2ZW50KGUpKXJldHVybiEwO2lmKHZvaWQgMD09PWUucHJldmVudERlZmF1bHQpcmV0dXJuITA7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIG89dG9wLndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKSx0PWUudGFyZ2V0fHxlLnNyY0VsZW1lbnQ7by5ocmVmPXBvcE1hZ2ljLmZpbmRMaW5rVG9PcGVuKHQpLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXS5hcHBlbmRDaGlsZChvKTt2YXIgaT1uZXcgTW91c2VFdmVudChcImNsaWNrXCIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCx2aWV3OndpbmRvdyxzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAsY3RybEtleTohMCxhbHRLZXk6ITEsc2hpZnRLZXk6ITEsbWV0YUtleTohMCxidXR0b246MH0pO2kucHJldmVudERlZmF1bHQ9dm9pZCAwLG8uZGlzcGF0Y2hFdmVudChpKSxvLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobykscG9wTWFnaWMuZXhlY3V0ZU9uUmVkaXJlY3QoKSx3aW5kb3cub3Blbihwb3BNYWdpYy51cmwsXCJfc2VsZlwiKSxwb3BNYWdpYy5zZXRBc09wZW5lZChlKX0scG9wdXA6ZnVuY3Rpb24oZSl7aWYoIXBvcE1hZ2ljLnNob3VsZFNob3coKXx8IXBvcE1hZ2ljLnZlbm9yU2hvdWxkU2hvdygpfHwhcG9wTWFnaWMuaXNWYWxpZFVzZXJFdmVudChlKSlyZXR1cm4hMDt2YXIgbz1cIlwiO2lmKHBvcE1hZ2ljLmNvbmZpZy5wb3B1cF9mYWxsYmFjayYmIXBvcE1hZ2ljLmNvbmZpZy5wb3B1cF9mb3JjZSl7dmFyIHQ9TWF0aC5tYXgoTWF0aC5yb3VuZCguOCp3aW5kb3cuaW5uZXJIZWlnaHQpLDMwMCk7bz1cIm1lbnViYXI9MSxyZXNpemFibGU9MSx3aWR0aD1cIitNYXRoLm1heChNYXRoLnJvdW5kKC43KndpbmRvdy5pbm5lcldpZHRoKSwzMDApK1wiLGhlaWdodD1cIit0K1wiLHRvcD1cIisod2luZG93LnNjcmVlblkrMTAwKStcIixsZWZ0PVwiKyh3aW5kb3cuc2NyZWVuWCsxMDApfXZhciBpPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYsbj13aW5kb3cub3BlbihpLHBvcE1hZ2ljLmdldFB1SWQoKSxvKTtwb3BNYWdpYy5zZXRBc09wZW5lZChlKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe24ubG9jYXRpb24uaHJlZj1wb3BNYWdpYy51cmwscG9wTWFnaWMuZXhlY3V0ZU9uUmVkaXJlY3QoKX0pLDIwMCksdm9pZCAwIT09ZS5wcmV2ZW50RGVmYXVsdCYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKX19fTsgICAgcG9wTWFnaWMuaW5pdChhZENvbmZpZyk7XHJcbn0pKCk7XHJcblxyXG5cclxuPFwvc2NyaXB0PiJ9LHsiaWQiOiJleG9tX2pfUE9QVU5ERVIiLCJhZHNwb3QiOiJqX1BPUFVOREVSIiwid2VpZ2h0IjoiNiIsImZjYXAiOiIyIiwic2NoZWR1bGUiOmZhbHNlLCJtYXhXaWR0aCI6Ijc2OCIsIm1pbldpZHRoIjpmYWxzZSwidGltZXpvbmUiOmZhbHNlLCJleGNsdWRlIjpmYWxzZSwiZG9tYWluIjpmYWxzZSwiY29kZSI6IjxzY3JpcHQgdHlwZT1cImFwcGxpY2F0aW9uXC9qYXZhc2NyaXB0XCI+XHJcbihmdW5jdGlvbigpIHtcclxuICAgIGZ1bmN0aW9uIHJhbmRTdHIoZSx0KXtmb3IodmFyIG49XCJcIixyPXR8fFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiLG89MDtvPGU7bysrKW4rPXIuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpyLmxlbmd0aCkpO3JldHVybiBufWZ1bmN0aW9uIGdlbmVyYXRlQ29udGVudCgpe3JldHVybiB2b2lkIDA9PT1nZW5lcmF0ZUNvbnRlbnQudmFsJiYoZ2VuZXJhdGVDb250ZW50LnZhbD1cImRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXCIrcmFuZFN0cig0Kk1hdGgucmFuZG9tKCkrMykrXCIpO1wiKSxnZW5lcmF0ZUNvbnRlbnQudmFsfXRyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQuY3VycmVudFNjcmlwdCxcImlubmVySFRNTFwiLHtnZXQ6Z2VuZXJhdGVDb250ZW50fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LmN1cnJlbnRTY3JpcHQsXCJ0ZXh0Q29udGVudFwiLHtnZXQ6Z2VuZXJhdGVDb250ZW50fSl9Y2F0Y2goZSl7fTtcclxuXHJcbiAgICBcL1wvdmVyc2lvbiA3LjAuMFxyXG5cclxuICAgIHZhciBhZENvbmZpZyA9IHtcclxuICAgIFwiYWRzX2hvc3RcIjogXCJhLnBlbXNydi5jb21cIixcclxuICAgIFwic3luZGljYXRpb25faG9zdFwiOiBcInMucGVtc3J2LmNvbVwiLFxyXG4gICAgXCJpZHpvbmVcIjogNTY2NTY2MCxcclxuICAgIFwicG9wdXBfZmFsbGJhY2tcIjogZmFsc2UsXHJcbiAgICBcInBvcHVwX2ZvcmNlXCI6IGZhbHNlLFxyXG4gICAgXCJjaHJvbWVfZW5hYmxlZFwiOiB0cnVlLFxyXG4gICAgXCJuZXdfdGFiXCI6IGZhbHNlLFxyXG4gICAgXCJmcmVxdWVuY3lfcGVyaW9kXCI6IDcyMCxcclxuICAgIFwiZnJlcXVlbmN5X2NvdW50XCI6IDEsXHJcbiAgICBcInRyaWdnZXJfbWV0aG9kXCI6IDMsXHJcbiAgICBcInRyaWdnZXJfY2xhc3NcIjogXCJcIixcclxuICAgIFwidHJpZ2dlcl9kZWxheVwiOiAwLFxyXG4gICAgXCJjYXBwaW5nX2VuYWJsZWRcIjogdHJ1ZSxcclxuICAgIFwidGNmX2VuYWJsZWRcIjogdHJ1ZSxcclxuICAgIFwib25seV9pbmxpbmVcIjogZmFsc2VcclxufTtcclxuXHJcbndpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsfHwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbD1kb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGw9T2JqZWN0LnF1ZXJ5U2VsZWN0b3JBbGw9ZnVuY3Rpb24oZSxvLHQsaSxuKXt2YXIgcj1kb2N1bWVudCxhPXIuY3JlYXRlU3R5bGVTaGVldCgpO2ZvcihuPXIuYWxsLG89W10sdD0oZT1lLnJlcGxhY2UoXC9cXFtmb3JcXGJcL2dpLFwiW2h0bWxGb3JcIikuc3BsaXQoXCIsXCIpKS5sZW5ndGg7dC0tOyl7Zm9yKGEuYWRkUnVsZShlW3RdLFwiazp2XCIpLGk9bi5sZW5ndGg7aS0tOyluW2ldLmN1cnJlbnRTdHlsZS5rJiZvLnB1c2gobltpXSk7YS5yZW1vdmVSdWxlKDApfXJldHVybiBvfSk7dmFyIHBvcE1hZ2ljPXt2ZXJzaW9uOjcsY29va2llX25hbWU6XCJcIix1cmw6XCJcIixjb25maWc6e30sb3Blbl9jb3VudDowLHRvcDpudWxsLGJyb3dzZXI6bnVsbCx2ZW5vcl9sb2FkZWQ6ITEsdmVub3I6ITEsdGNmRGF0YTpudWxsLGNvbmZpZ1RwbDp7YWRzX2hvc3Q6XCJcIixzeW5kaWNhdGlvbl9ob3N0OlwiXCIsaWR6b25lOlwiXCIsZnJlcXVlbmN5X3BlcmlvZDo3MjAsZnJlcXVlbmN5X2NvdW50OjEsdHJpZ2dlcl9tZXRob2Q6MSx0cmlnZ2VyX2NsYXNzOlwiXCIscG9wdXBfZm9yY2U6ITEscG9wdXBfZmFsbGJhY2s6ITEsY2hyb21lX2VuYWJsZWQ6ITAsbmV3X3RhYjohMSxjYXQ6XCJcIix0YWdzOlwiXCIsZWw6XCJcIixzdWI6XCJcIixzdWIyOlwiXCIsc3ViMzpcIlwiLG9ubHlfaW5saW5lOiExLHRyaWdnZXJfZGVsYXk6MCxjYXBwaW5nX2VuYWJsZWQ6ITAsdGNmX2VuYWJsZWQ6ITEsY29va2llY29uc2VudDohMCxzaG91bGRfZmlyZTpmdW5jdGlvbigpe3JldHVybiEwfSxvbl9yZWRpcmVjdDpudWxsfSxpbml0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PWUuaWR6b25lJiZlLmlkem9uZSl7dm9pZCAwPT09ZS5jdXN0b21UYXJnZXRpbmcmJihlLmN1c3RvbVRhcmdldGluZz1bXSksd2luZG93LmN1c3RvbVRhcmdldGluZz1lLmN1c3RvbVRhcmdldGluZ3x8bnVsbDt2YXIgbz1PYmplY3Qua2V5cyhlLmN1c3RvbVRhcmdldGluZykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zZWFyY2goXCJleF9cIik+PTB9KSk7Zm9yKHZhciB0IGluIG8ubGVuZ3RoJiZvLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29uZmlnVHBsW2VdPW51bGx9LmJpbmQodGhpcykpLHRoaXMuY29uZmlnVHBsKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbmZpZ1RwbCx0KSYmKHZvaWQgMCE9PWVbdF0/dGhpcy5jb25maWdbdF09ZVt0XTp0aGlzLmNvbmZpZ1t0XT10aGlzLmNvbmZpZ1RwbFt0XSk7aWYodm9pZCAwIT09dGhpcy5jb25maWcuaWR6b25lJiZcIlwiIT09dGhpcy5jb25maWcuaWR6b25lKXshMCE9PXRoaXMuY29uZmlnLm9ubHlfaW5saW5lJiZ0aGlzLmxvYWRIb3N0ZWQoKTt2YXIgaT10aGlzO3RoaXMuY2hlY2tUQ0ZDb25zZW50KChmdW5jdGlvbigpe1wiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/aS5wcmVwYXJlUG9wV2FpdCgpOmkuYWRkRXZlbnRUb0VsZW1lbnQod2luZG93LFwibG9hZFwiLGkucHJlcGFyZVBvcCl9KSl9fX0sZ2V0Q291bnRGcm9tQ29va2llOmZ1bmN0aW9uKCl7aWYoIXRoaXMuY29uZmlnLmNvb2tpZWNvbnNlbnQpcmV0dXJuIDA7dmFyIGU9cG9wTWFnaWMuZ2V0Q29va2llKHBvcE1hZ2ljLmNvb2tpZV9uYW1lKSxvPXZvaWQgMD09PWU/MDpwYXJzZUludChlKTtyZXR1cm4gaXNOYU4obykmJihvPTApLG99LGdldExhc3RPcGVuZWRUaW1lRnJvbUNvb2tpZTpmdW5jdGlvbigpe3ZhciBlPXBvcE1hZ2ljLmdldENvb2tpZShwb3BNYWdpYy5jb29raWVfbmFtZSksbz1udWxsO2lmKHZvaWQgMCE9PWUpe3ZhciB0PWUuc3BsaXQoXCI7XCIpWzFdO289dD4wP3BhcnNlSW50KHQpOjB9cmV0dXJuIGlzTmFOKG8pJiYobz1udWxsKSxvfSxzaG91bGRTaG93OmZ1bmN0aW9uKCl7aWYoIXBvcE1hZ2ljLmNvbmZpZy5jYXBwaW5nX2VuYWJsZWQpe3ZhciBlPSEwLG89cG9wTWFnaWMuY29uZmlnLnNob3VsZF9maXJlO3RyeXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBvJiYoZT1Cb29sZWFuKG8oKSkpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoXCJFcnJvciBleGVjdXRpbmcgc2hvdWxkIGZpcmUgY2FsbGJhY2sgZnVuY3Rpb246XCIsZSl9cmV0dXJuIGUmJjA9PT1wb3BNYWdpYy5vcGVuX2NvdW50fWlmKHBvcE1hZ2ljLm9wZW5fY291bnQ+PXBvcE1hZ2ljLmNvbmZpZy5mcmVxdWVuY3lfY291bnQpcmV0dXJuITE7dmFyIHQ9cG9wTWFnaWMuZ2V0Q291bnRGcm9tQ29va2llKCksaT1wb3BNYWdpYy5nZXRMYXN0T3BlbmVkVGltZUZyb21Db29raWUoKSxuPU1hdGguZmxvb3IoRGF0ZS5ub3coKVwvMWUzKSxyPWkrcG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfZGVsYXk7cmV0dXJuIShpJiZyPm4pJiYocG9wTWFnaWMub3Blbl9jb3VudD10LCEodD49cG9wTWFnaWMuY29uZmlnLmZyZXF1ZW5jeV9jb3VudCkpfSx2ZW5vclNob3VsZFNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gcG9wTWFnaWMudmVub3JfbG9hZGVkJiZcIjBcIj09PXBvcE1hZ2ljLnZlbm9yfSxzZXRBc09wZW5lZDpmdW5jdGlvbihlKXt2YXIgbz1lP2UudGFyZ2V0fHxlLnNyY0VsZW1lbnQ6bnVsbCx0PXtpZDpcIlwiLHRhZ05hbWU6XCJcIixjbGFzc2VzOlwiXCIsdGV4dDpcIlwiLGhyZWY6XCJcIixlbG06XCJcIn07dm9pZCAwIT09byYmbnVsbCE9byYmKHQ9e2lkOnZvaWQgMCE9PW8uaWQmJm51bGwhPW8uaWQ/by5pZDpcIlwiLHRhZ05hbWU6dm9pZCAwIT09by50YWdOYW1lJiZudWxsIT1vLnRhZ05hbWU/by50YWdOYW1lOlwiXCIsY2xhc3Nlczp2b2lkIDAhPT1vLmNsYXNzTGlzdCYmbnVsbCE9by5jbGFzc0xpc3Q/by5jbGFzc0xpc3Q6XCJcIix0ZXh0OnZvaWQgMCE9PW8ub3V0ZXJUZXh0JiZudWxsIT1vLm91dGVyVGV4dD9vLm91dGVyVGV4dDpcIlwiLGhyZWY6dm9pZCAwIT09by5ocmVmJiZudWxsIT1vLmhyZWY/by5ocmVmOlwiXCIsZWxtOm99KTt2YXIgaT1uZXcgQ3VzdG9tRXZlbnQoXCJjcmVhdGl2ZURpc3BsYXllZC1cIitwb3BNYWdpYy5jb25maWcuaWR6b25lLHtkZXRhaWw6dH0pO2lmKGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoaSkscG9wTWFnaWMuY29uZmlnLmNhcHBpbmdfZW5hYmxlZCl7dmFyIG49MTtuPTAhPT1wb3BNYWdpYy5vcGVuX2NvdW50P3BvcE1hZ2ljLm9wZW5fY291bnQrMTpwb3BNYWdpYy5nZXRDb3VudEZyb21Db29raWUoKSsxO3ZhciByPU1hdGguZmxvb3IoRGF0ZS5ub3coKVwvMWUzKTtwb3BNYWdpYy5jb25maWcuY29va2llY29uc2VudCYmcG9wTWFnaWMuc2V0Q29va2llKHBvcE1hZ2ljLmNvb2tpZV9uYW1lLG4rXCI7XCIrcixwb3BNYWdpYy5jb25maWcuZnJlcXVlbmN5X3BlcmlvZCl9ZWxzZSsrcG9wTWFnaWMub3Blbl9jb3VudH0sbG9hZEhvc3RlZDpmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7Zm9yKHZhciBvIGluIGUudHlwZT1cImFwcGxpY2F0aW9uXC9qYXZhc2NyaXB0XCIsZS5hc3luYz0hMCxlLnNyYz1cIlwvXC9cIit0aGlzLmNvbmZpZy5hZHNfaG9zdCtcIlwvcG9wdW5kZXIxMDAwLmpzXCIsZS5pZD1cInBvcG1hZ2ljbGRyXCIsdGhpcy5jb25maWcpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29uZmlnLG8pJiZcImFkc19ob3N0XCIhPT1vJiZcInN5bmRpY2F0aW9uX2hvc3RcIiE9PW8mJmUuc2V0QXR0cmlidXRlKFwiZGF0YS1leG8tXCIrbyx0aGlzLmNvbmZpZ1tvXSk7dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpLml0ZW0oMCk7dC5maXJzdENoaWxkP3QuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKTp0LmFwcGVuZENoaWxkKGUpfSxwcmVwYXJlUG9wV2FpdDpmdW5jdGlvbigpe3NldFRpbWVvdXQocG9wTWFnaWMucHJlcGFyZVBvcCw0MDApfSxwcmVwYXJlUG9wOmZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV4b0pzUG9wMTAxfHwhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4b0pzUG9wMTAxLFwiYWRkXCIpKXtpZihwb3BNYWdpYy50b3A9c2VsZixwb3BNYWdpYy50b3AhPT1zZWxmKXRyeXt0b3AuZG9jdW1lbnQubG9jYXRpb24udG9TdHJpbmcoKSYmKHBvcE1hZ2ljLnRvcD10b3ApfWNhdGNoKGUpe31pZihwb3BNYWdpYy5jb29raWVfbmFtZT1cInpvbmUtY2FwLVwiK3BvcE1hZ2ljLmNvbmZpZy5pZHpvbmUscG9wTWFnaWMuY29uZmlnLmNhcHBpbmdfZW5hYmxlZHx8KGRvY3VtZW50LmNvb2tpZT1wb3BNYWdpYy5jb29raWVfbmFtZStcIj07ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAxIEdNVDsgcGF0aD1cL1wiKSxwb3BNYWdpYy5zaG91bGRTaG93KCkpe3ZhciBlPW5ldyBYTUxIdHRwUmVxdWVzdDtlLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2UucmVhZHlTdGF0ZT09WE1MSHR0cFJlcXVlc3QuRE9ORSYmKHBvcE1hZ2ljLnZlbm9yX2xvYWRlZD0hMCwyMDA9PWUuc3RhdHVzP3BvcE1hZ2ljLnZlbm9yPWUucmVzcG9uc2VUZXh0OnBvcE1hZ2ljLnZlbm9yPVwiMFwiKX07dmFyIG89XCJodHRwczpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiZcImh0dHA6XCIhPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD9cImh0dHBzOlwiOmRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sO2Uub3BlbihcIkdFVFwiLG8rXCJcL1wvXCIrcG9wTWFnaWMuY29uZmlnLnN5bmRpY2F0aW9uX2hvc3QrXCJcL3Zlbm9yLnBocFwiLCEwKTt0cnl7ZS5zZW5kKCl9Y2F0Y2goZSl7cG9wTWFnaWMudmVub3JfbG9hZGVkPSEwfX1pZihwb3BNYWdpYy5idWlsZFVybCgpLHBvcE1hZ2ljLmJyb3dzZXI9cG9wTWFnaWMuYnJvd3NlckRldGVjdG9yLmdldEJyb3dzZXJJbmZvKCkscG9wTWFnaWMuY29uZmlnLmNocm9tZV9lbmFibGVkfHwhcG9wTWFnaWMuYnJvd3Nlci5pc0Nocm9tZSl7dmFyIHQ9cG9wTWFnaWMuZ2V0UG9wTWV0aG9kKHBvcE1hZ2ljLmJyb3dzZXIpO3BvcE1hZ2ljLmFkZEV2ZW50KFwiY2xpY2tcIix0KX19fSxnZXRQb3BNZXRob2Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHBvcE1hZ2ljLmNvbmZpZy5wb3B1cF9mb3JjZXx8cG9wTWFnaWMuY29uZmlnLnBvcHVwX2ZhbGxiYWNrJiZlLmlzQ2hyb21lJiZlLnZlcnNpb24+PTY4JiYhZS5pc01vYmlsZT9wb3BNYWdpYy5tZXRob2RzLnBvcHVwOmUuaXNNb2JpbGU/cG9wTWFnaWMubWV0aG9kcy5kZWZhdWx0OmUuaXNDaHJvbWU/cG9wTWFnaWMubWV0aG9kcy5jaHJvbWVUYWI6cG9wTWFnaWMubWV0aG9kcy5kZWZhdWx0fSxjaGVja1RDRkNvbnNlbnQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5jb25maWcudGNmX2VuYWJsZWQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHdpbmRvdy5fX3RjZmFwaSl7dmFyIG89dGhpczt3aW5kb3cuX190Y2ZhcGkoXCJhZGRFdmVudExpc3RlbmVyXCIsMiwoZnVuY3Rpb24odCxpKXtpJiYoby50Y2ZEYXRhPXQsXCJ0Y2xvYWRlZFwiIT09dC5ldmVudFN0YXR1cyYmXCJ1c2VyYWN0aW9uY29tcGxldGVcIiE9PXQuZXZlbnRTdGF0dXN8fCh3aW5kb3cuX190Y2ZhcGkoXCJyZW1vdmVFdmVudExpc3RlbmVyXCIsMiwoZnVuY3Rpb24oKXt9KSx0Lmxpc3RlbmVySWQpLGUoKSkpfSkpfWVsc2UgZSgpfSxidWlsZFVybDpmdW5jdGlvbigpe3ZhciBlLG89XCJodHRwczpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiZcImh0dHA6XCIhPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD9cImh0dHBzOlwiOmRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sLHQ9dG9wPT09c2VsZj9kb2N1bWVudC5VUkw6ZG9jdW1lbnQucmVmZXJyZXIsaT17dHlwZTpcImlubGluZVwiLG5hbWU6XCJwb3BNYWdpY1wiLHZlcjp0aGlzLnZlcnNpb259LG49XCJcIjtjdXN0b21UYXJnZXRpbmcmJk9iamVjdC5rZXlzKGN1c3RvbVRhcmdldGluZykubGVuZ3RoJiYoXCJvYmplY3RcIj09dHlwZW9mIGN1c3RvbVRhcmdldGluZz9PYmplY3Qua2V5cyhjdXN0b21UYXJnZXRpbmcpOmN1c3RvbVRhcmdldGluZykuZm9yRWFjaCgoZnVuY3Rpb24obyl7XCJvYmplY3RcIj09dHlwZW9mIGN1c3RvbVRhcmdldGluZz9lPWN1c3RvbVRhcmdldGluZ1tvXTpBcnJheS5pc0FycmF5KGN1c3RvbVRhcmdldGluZykmJihlPXNjcmlwdEVsLmdldEF0dHJpYnV0ZShvKSk7dmFyIHQ9by5yZXBsYWNlKFwiZGF0YS1leG8tXCIsXCJcIik7bis9XCImXCIrdCtcIj1cIitlfSkpO3ZhciByPXRoaXMudGNmRGF0YSYmdGhpcy50Y2ZEYXRhLmdkcHJBcHBsaWVzJiYhMD09PXRoaXMudGNmRGF0YS5nZHByQXBwbGllcz8xOjA7dGhpcy51cmw9bytcIlwvXC9cIit0aGlzLmNvbmZpZy5zeW5kaWNhdGlvbl9ob3N0K1wiXC92MVwvbGluay5waHA/Y2F0PVwiK3RoaXMuY29uZmlnLmNhdCtcIiZpZHpvbmU9XCIrdGhpcy5jb25maWcuaWR6b25lK1wiJnR5cGU9OCZwPVwiK2VuY29kZVVSSUNvbXBvbmVudCh0KStcIiZzdWI9XCIrdGhpcy5jb25maWcuc3ViKyhcIlwiIT09dGhpcy5jb25maWcuc3ViMj9cIiZzdWIyPVwiK3RoaXMuY29uZmlnLnN1YjI6XCJcIikrKFwiXCIhPT10aGlzLmNvbmZpZy5zdWIzP1wiJnN1YjM9XCIrdGhpcy5jb25maWcuc3ViMzpcIlwiKStcIiZibG9jaz0xJmVsPVwiK3RoaXMuY29uZmlnLmVsK1wiJnRhZ3M9XCIrdGhpcy5jb25maWcudGFncytcIiZzY3JfaW5mbz1cIitmdW5jdGlvbihlKXt2YXIgbz1lLnR5cGUrXCJ8XCIrZS5uYW1lK1wifFwiK2UudmVyO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoYnRvYShvKSl9KGkpK24rXCImZ2Rwcj1cIityK1wiJmNiPVwiK01hdGguZmxvb3IoMWU5Kk1hdGgucmFuZG9tKCkpLHRoaXMudGNmRGF0YSYmdGhpcy50Y2ZEYXRhLnRjU3RyaW5nP3RoaXMudXJsKz1cIiZnZHByX2NvbnNlbnQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudGNmRGF0YS50Y1N0cmluZyk6dGhpcy51cmwrPVwiJmNvb2tpZWNvbnNlbnQ9XCIrdGhpcy5jb25maWcuY29va2llY29uc2VudH0sYWRkRXZlbnRUb0VsZW1lbnQ6ZnVuY3Rpb24oZSxvLHQpe2UuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIobyx0LCExKTplLmF0dGFjaEV2ZW50PyhlW1wiZVwiK28rdF09dCxlW28rdF09ZnVuY3Rpb24oKXtlW1wiZVwiK28rdF0od2luZG93LmV2ZW50KX0sZS5hdHRhY2hFdmVudChcIm9uXCIrbyxlW28rdF0pKTplW1wib25cIitvXT1lW1wiZVwiK28rdF19LGdldFRyaWdnZXJDbGFzc2VzOmZ1bmN0aW9uKCl7dmFyIGUsbz1bXTstMT09PXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX2NsYXNzLmluZGV4T2YoXCIsXCIpP2U9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfY2xhc3Muc3BsaXQoXCIgXCIpOmU9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfY2xhc3MucmVwbGFjZShcL1xcc1wvZyxcIlwiKS5zcGxpdChcIixcIik7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspXCJcIiE9PWVbdF0mJm8ucHVzaChcIi5cIitlW3RdKTtyZXR1cm4gb30sYWRkRXZlbnQ6ZnVuY3Rpb24oZSxvKXt2YXIgdDtpZihcIjNcIiE9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfbWV0aG9kKWlmKFwiMlwiIT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2R8fFwiXCI9PXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZClpZihcIjRcIiE9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfbWV0aG9kfHxcIlwiPT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2QpcG9wTWFnaWMuYWRkRXZlbnRUb0VsZW1lbnQoZG9jdW1lbnQsZSxvKTtlbHNle3ZhciBuPXBvcE1hZ2ljLmdldFRyaWdnZXJDbGFzc2VzKCk7cG9wTWFnaWMuYWRkRXZlbnRUb0VsZW1lbnQoZG9jdW1lbnQsZSwoZnVuY3Rpb24oZSl7bi5zb21lKChmdW5jdGlvbihvKXtyZXR1cm4gbnVsbCE9PWUudGFyZ2V0LmNsb3Nlc3Qobyl9KSl8fG8uY2FsbChlLnRhcmdldCxlKX0pKX1lbHNle3ZhciByPXBvcE1hZ2ljLmdldFRyaWdnZXJDbGFzc2VzKCk7Zm9yKHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChyLmpvaW4oXCIsIFwiKSksaT0wO2k8dC5sZW5ndGg7aSsrKXBvcE1hZ2ljLmFkZEV2ZW50VG9FbGVtZW50KHRbaV0sZSxvKX1lbHNlIGZvcih0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJhXCIpLGk9MDtpPHQubGVuZ3RoO2krKylwb3BNYWdpYy5hZGRFdmVudFRvRWxlbWVudCh0W2ldLGUsbyl9LHNldENvb2tpZTpmdW5jdGlvbihlLG8sdCl7aWYoIXRoaXMuY29uZmlnLmNvb2tpZWNvbnNlbnQpcmV0dXJuITE7dD1wYXJzZUludCh0LDEwKTt2YXIgaT1uZXcgRGF0ZTtpLnNldE1pbnV0ZXMoaS5nZXRNaW51dGVzKCkrcGFyc2VJbnQodCkpO3ZhciBuPWVuY29kZVVSSUNvbXBvbmVudChvKStcIjsgZXhwaXJlcz1cIitpLnRvVVRDU3RyaW5nKCkrXCI7IHBhdGg9XC9cIjtkb2N1bWVudC5jb29raWU9ZStcIj1cIitufSxnZXRDb29raWU6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuY29uZmlnLmNvb2tpZWNvbnNlbnQpcmV0dXJuITE7dmFyIG8sdCxpLG49ZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKTtmb3Iobz0wO288bi5sZW5ndGg7bysrKWlmKHQ9bltvXS5zdWJzdHIoMCxuW29dLmluZGV4T2YoXCI9XCIpKSxpPW5bb10uc3Vic3RyKG5bb10uaW5kZXhPZihcIj1cIikrMSksKHQ9dC5yZXBsYWNlKFwvXlxccyt8XFxzKyRcL2csXCJcIikpPT09ZSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGkpfSxyYW5kU3RyOmZ1bmN0aW9uKGUsbyl7Zm9yKHZhciB0PVwiXCIsaT1vfHxcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCIsbj0wO248ZTtuKyspdCs9aS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmkubGVuZ3RoKSk7cmV0dXJuIHR9LGlzVmFsaWRVc2VyRXZlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuISghKFwiaXNUcnVzdGVkXCJpbiBlKXx8IWUuaXNUcnVzdGVkfHxcImllXCI9PT1wb3BNYWdpYy5icm93c2VyLm5hbWV8fFwic2FmYXJpXCI9PT1wb3BNYWdpYy5icm93c2VyLm5hbWUpfHwwIT1lLnNjcmVlblgmJjAhPWUuc2NyZWVuWX0saXNWYWxpZEhyZWY6ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZXx8XCJcIj09ZSlyZXR1cm4hMTtyZXR1cm4hXC9cXHM/amF2YXNjcmlwdFxccz86XC9pLnRlc3QoZSl9LGZpbmRMaW5rVG9PcGVuOmZ1bmN0aW9uKGUpe3ZhciBvPWUsdD0hMTt0cnl7Zm9yKHZhciBpPTA7aTwyMCYmIW8uZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSYmbyE9PWRvY3VtZW50JiZcImh0bWxcIiE9PW8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTspbz1vLnBhcmVudE5vZGUsaSsrO3ZhciBuPW8uZ2V0QXR0cmlidXRlKFwidGFyZ2V0XCIpO24mJi0xIT09bi5pbmRleE9mKFwiX2JsYW5rXCIpfHwodD1vLmdldEF0dHJpYnV0ZShcImhyZWZcIikpfWNhdGNoKGUpe31yZXR1cm4gcG9wTWFnaWMuaXNWYWxpZEhyZWYodCl8fCh0PSExKSx0fHx3aW5kb3cubG9jYXRpb24uaHJlZn0sZ2V0UHVJZDpmdW5jdGlvbigpe3JldHVyblwib2tfXCIrTWF0aC5mbG9vcig4OTk5OTk5OSpNYXRoLnJhbmRvbSgpKzFlNyl9LGV4ZWN1dGVPblJlZGlyZWN0OmZ1bmN0aW9uKCl7dHJ5e3BvcE1hZ2ljLmNvbmZpZy5jYXBwaW5nX2VuYWJsZWR8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHBvcE1hZ2ljLmNvbmZpZy5vbl9yZWRpcmVjdHx8cG9wTWFnaWMuY29uZmlnLm9uX3JlZGlyZWN0KCl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihcIkVycm9yIGV4ZWN1dGluZyBvbiByZWRpcmVjdCBjYWxsYmFjazpcIixlKX19LGJyb3dzZXJEZXRlY3Rvcjp7YnJvd3NlckRlZmluaXRpb25zOltbXCJmaXJlZm94XCIsXC9GaXJlZm94XFxcLyhbMC05Ll0rKSg/Olxcc3wkKVwvXSxbXCJvcGVyYVwiLFwvT3BlcmFcXFwvKFswLTkuXSspKD86XFxzfCQpXC9dLFtcIm9wZXJhXCIsXC9PUFJcXFwvKFswLTkuXSspKDo/XFxzfCQpJFwvXSxbXCJlZGdlXCIsXC9FZGcoPzplfClcXFwvKFswLTkuX10rKVwvXSxbXCJpZVwiLFwvVHJpZGVudFxcXC83XFwuMC4qcnY6KFswLTkuXSspXFwpLipHZWNrbyRcL10sW1wiaWVcIixcL01TSUVcXHMoWzAtOS5dKyk7LipUcmlkZW50XFxcL1s0LTddLjBcL10sW1wiaWVcIixcL01TSUVcXHMoN1xcLjApXC9dLFtcInNhZmFyaVwiLFwvVmVyc2lvblxcXC8oWzAtOS5fXSspLipTYWZhcmlcL10sW1wiY2hyb21lXCIsXC8oPyFDaHJvbS4qRWRnKD86ZXwpKUNocm9tKD86ZXxpdW0pXFxcLyhbMC05Ll0rKSg6P1xcc3wkKVwvXSxbXCJjaHJvbWVcIixcLyg/IUNocm9tLipPUFIpQ2hyb20oPzplfGl1bSlcXFwvKFswLTkuXSspKDo/XFxzfCQpXC9dLFtcImJiMTBcIixcL0JCMTA7XFxzVG91Y2guKlZlcnNpb25cXFwvKFswLTkuXSspXC9dLFtcImFuZHJvaWRcIixcL0FuZHJvaWRcXHMoWzAtOS5dKylcL10sW1wiaW9zXCIsXC9WZXJzaW9uXFxcLyhbMC05Ll9dKykuKk1vYmlsZS4qU2FmYXJpLipcL10sW1wieWFuZGV4YnJvd3NlclwiLFwvWWFCcm93c2VyXFxcLyhbMC05Ll9dKylcL10sW1wiY3Jpb3NcIixcL0NyaU9TXFxcLyhbMC05Ll0rKSg6P1xcc3wkKVwvXV0saXNDaHJvbWVPckNocm9taXVtOmZ1bmN0aW9uKCl7dmFyIGU9d2luZG93Lm5hdmlnYXRvcixvPShlLnVzZXJBZ2VudHx8XCJcIikudG9Mb3dlckNhc2UoKSx0PWUudmVuZG9yfHxcIlwiO2lmKC0xIT09by5pbmRleE9mKFwiY3Jpb3NcIikpcmV0dXJuITA7aWYoZS51c2VyQWdlbnREYXRhJiZBcnJheS5pc0FycmF5KGUudXNlckFnZW50RGF0YS5icmFuZHMpJiZlLnVzZXJBZ2VudERhdGEuYnJhbmRzLmxlbmd0aD4wKXt2YXIgaT1lLnVzZXJBZ2VudERhdGEuYnJhbmRzLG49aS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm5cIkdvb2dsZSBDaHJvbWVcIj09PWUuYnJhbmR9KSkscj1pLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwiQ2hyb21pdW1cIj09PWUuYnJhbmR9KSkmJjI9PT1pLmxlbmd0aDtyZXR1cm4gbnx8cn12YXIgYT0hIXdpbmRvdy5jaHJvbWUsYz0tMSE9PW8uaW5kZXhPZihcImVkZ1wiKSxwPSEhd2luZG93Lm9wcnx8LTEhPT1vLmluZGV4T2YoXCJvcHJcIikscz0hKCFlLmJyYXZlfHwhZS5icmF2ZS5pc0JyYXZlKSxnPS0xIT09by5pbmRleE9mKFwidml2YWxkaVwiKSxkPS0xIT09by5pbmRleE9mKFwieWFicm93c2VyXCIpLGw9LTEhPT1vLmluZGV4T2YoXCJzYW1zdW5nYnJvd3NlclwiKSx1PS0xIT09by5pbmRleE9mKFwidWNicm93c2VyXCIpO3JldHVybiBhJiZcIkdvb2dsZSBJbmMuXCI9PT10JiYhYyYmIXAmJiFzJiYhZyYmIWQmJiFsJiYhdX0sZ2V0QnJvd3NlckluZm86ZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCxvPXtuYW1lOlwib3RoZXJcIix2ZXJzaW9uOlwiMS4wXCIsdmVyc2lvbk51bWJlcjoxLGlzQ2hyb21lOnRoaXMuaXNDaHJvbWVPckNocm9taXVtKCksaXNNb2JpbGU6ISFlLm1hdGNoKFwvQW5kcm9pZHxCbGFja0JlcnJ5fGlQaG9uZXxpUGFkfGlQb2R8T3BlcmEgTWluaXxJRU1vYmlsZXxXZWJPU3xXaW5kb3dzIFBob25lXC9pKX07Zm9yKHZhciB0IGluIHRoaXMuYnJvd3NlckRlZmluaXRpb25zKXt2YXIgaT10aGlzLmJyb3dzZXJEZWZpbml0aW9uc1t0XTtpZihpWzFdLnRlc3QoZSkpe3ZhciBuPWlbMV0uZXhlYyhlKSxyPW4mJm5bMV0uc3BsaXQoXC9bLl9dXC8pLnNsaWNlKDAsMyksYT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLDEpLmpvaW4oXCJcIil8fFwiMFwiO3ImJnIubGVuZ3RoPDMmJkFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHIsMT09PXIubGVuZ3RoP1swLDBdOlswXSksby5uYW1lPWlbMF0sby52ZXJzaW9uPXIuam9pbihcIi5cIiksby52ZXJzaW9uTnVtYmVyPXBhcnNlRmxvYXQoclswXStcIi5cIithKTticmVha319cmV0dXJuIG99fSxtZXRob2RzOntkZWZhdWx0OmZ1bmN0aW9uKGUpe2lmKCFwb3BNYWdpYy5zaG91bGRTaG93KCl8fCFwb3BNYWdpYy52ZW5vclNob3VsZFNob3coKXx8IXBvcE1hZ2ljLmlzVmFsaWRVc2VyRXZlbnQoZSkpcmV0dXJuITA7dmFyIG89ZS50YXJnZXR8fGUuc3JjRWxlbWVudCx0PXBvcE1hZ2ljLmZpbmRMaW5rVG9PcGVuKG8pO3JldHVybiB3aW5kb3cub3Blbih0LFwiX2JsYW5rXCIpLHBvcE1hZ2ljLnNldEFzT3BlbmVkKGUpLHBvcE1hZ2ljLmV4ZWN1dGVPblJlZGlyZWN0KCkscG9wTWFnaWMudG9wLmRvY3VtZW50LmxvY2F0aW9uPXBvcE1hZ2ljLnVybCx2b2lkIDAhPT1lLnByZXZlbnREZWZhdWx0JiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpLCEwfSxjaHJvbWVUYWI6ZnVuY3Rpb24oZSl7aWYoIXBvcE1hZ2ljLnNob3VsZFNob3coKXx8IXBvcE1hZ2ljLnZlbm9yU2hvdWxkU2hvdygpfHwhcG9wTWFnaWMuaXNWYWxpZFVzZXJFdmVudChlKSlyZXR1cm4hMDtpZih2b2lkIDA9PT1lLnByZXZlbnREZWZhdWx0KXJldHVybiEwO2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBvPXRvcC53aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIiksdD1lLnRhcmdldHx8ZS5zcmNFbGVtZW50O28uaHJlZj1wb3BNYWdpYy5maW5kTGlua1RvT3Blbih0KSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0uYXBwZW5kQ2hpbGQobyk7dmFyIGk9bmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsdmlldzp3aW5kb3csc2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLGN0cmxLZXk6ITAsYWx0S2V5OiExLHNoaWZ0S2V5OiExLG1ldGFLZXk6ITAsYnV0dG9uOjB9KTtpLnByZXZlbnREZWZhdWx0PXZvaWQgMCxvLmRpc3BhdGNoRXZlbnQoaSksby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pLHBvcE1hZ2ljLmV4ZWN1dGVPblJlZGlyZWN0KCksd2luZG93Lm9wZW4ocG9wTWFnaWMudXJsLFwiX3NlbGZcIikscG9wTWFnaWMuc2V0QXNPcGVuZWQoZSl9LHBvcHVwOmZ1bmN0aW9uKGUpe2lmKCFwb3BNYWdpYy5zaG91bGRTaG93KCl8fCFwb3BNYWdpYy52ZW5vclNob3VsZFNob3coKXx8IXBvcE1hZ2ljLmlzVmFsaWRVc2VyRXZlbnQoZSkpcmV0dXJuITA7dmFyIG89XCJcIjtpZihwb3BNYWdpYy5jb25maWcucG9wdXBfZmFsbGJhY2smJiFwb3BNYWdpYy5jb25maWcucG9wdXBfZm9yY2Upe3ZhciB0PU1hdGgubWF4KE1hdGgucm91bmQoLjgqd2luZG93LmlubmVySGVpZ2h0KSwzMDApO289XCJtZW51YmFyPTEscmVzaXphYmxlPTEsd2lkdGg9XCIrTWF0aC5tYXgoTWF0aC5yb3VuZCguNyp3aW5kb3cuaW5uZXJXaWR0aCksMzAwKStcIixoZWlnaHQ9XCIrdCtcIix0b3A9XCIrKHdpbmRvdy5zY3JlZW5ZKzEwMCkrXCIsbGVmdD1cIisod2luZG93LnNjcmVlblgrMTAwKX12YXIgaT1kb2N1bWVudC5sb2NhdGlvbi5ocmVmLG49d2luZG93Lm9wZW4oaSxwb3BNYWdpYy5nZXRQdUlkKCksbyk7cG9wTWFnaWMuc2V0QXNPcGVuZWQoZSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtuLmxvY2F0aW9uLmhyZWY9cG9wTWFnaWMudXJsLHBvcE1hZ2ljLmV4ZWN1dGVPblJlZGlyZWN0KCl9KSwyMDApLHZvaWQgMCE9PWUucHJldmVudERlZmF1bHQmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSl9fX07ICAgIHBvcE1hZ2ljLmluaXQoYWRDb25maWcpO1xyXG59KSgpO1xyXG5cclxuXHJcbjxcL3NjcmlwdD4ifV0=