3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · 2.7c767379.chunk.js_56
{
"2.7c767379.chunk.js_56": "base64:NjU1MzYpKSx2PShuPXYraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksbT0obj1tK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGI9KG49YitpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxfPShuPV8raSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksbz0obj0obys9aS0xKzM3KihpLTEpKSsoaT0xKSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksYT0obj1hK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLHM9KG49cytpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSx1PShuPXUraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksYz0obj1jK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGY9KG49ZitpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxsPShuPWwraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksaD0obj1oK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLHA9KG49cCtpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxkPShuPWQraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSkseT0obj15K2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGc9KG49ZytpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSx2PShuPXYraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksbT0obj1tK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGI9KG49YitpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxfPShuPV8raSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksbys9aS0xKzM3KihpLTEpLGVbMF09byxlWzFdPWEsZVsyXT1zLGVbM109dSxlWzRdPWMsZVs1XT1mLGVbNl09bCxlWzddPWgsZVs4XT1wLGVbOV09ZCxlWzEwXT15LGVbMTFdPWcsZVsxMl09dixlWzEzXT1tLGVbMTRdPWIsZVsxNV09X319KS5jYWxsKHRoaXMscigxOCkuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cigxMCkscig1MikscigxNjQpLGUuZXhwb3J0cz1uLmtlbT1uLmtlbXx8e307dmFyIGk9bi5qc2JuLkJpZ0ludGVnZXI7ZnVuY3Rpb24gbyhlLHQscixpKXtlLmdlbmVyYXRlPWZ1bmN0aW9uKGUsbyl7Zm9yKHZhciBhPW5ldyBuLnV0aWwuQnl0ZUJ1ZmZlcixzPU1hdGguY2VpbChvL2kpK3IsdT1uZXcgbi51dGlsLkJ5dGVCdWZmZXIsYz1yO2M8czsrK2Mpe3UucHV0SW50MzIoYyksdC5zdGFydCgpLHQudXBkYXRlKGUrdS5nZXRCeXRlcygpKTt2YXIgZj10LmRpZ2VzdCgpO2EucHV0Qnl0ZXMoZi5nZXRCeXRlcyhpKSl9cmV0dXJuIGEudHJ1bmNhdGUoYS5sZW5ndGgoKS1vKSxhLmdldEJ5dGVzKCl9fW4ua2VtLnJzYT17fSxuLmtlbS5yc2EuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9KHQ9dHx8e30pLnBybmd8fG4ucmFuZG9tLG89e2VuY3J5cHQ6ZnVuY3Rpb24odCxvKXt2YXIgYSxzPU1hdGguY2VpbCh0Lm4uYml0TGVuZ3RoKCkvOCk7ZG97YT1uZXcgaShuLnV0aWwuYnl0ZXNUb0hleChyLmdldEJ5dGVzU3luYyhzKSksMTYpLm1vZCh0Lm4pfXdoaWxlKGEuY29tcGFyZVRvKGkuT05FKTw9MCk7dmFyIHU9cy0oYT1uLnV0aWwuaGV4VG9CeXRlcyhhLnRvU3RyaW5nKDE2KSkpLmxlbmd0aDtyZXR1cm4gdT4wJiYoYT1uLnV0aWwuZmlsbFN0cmluZyhTdHJpbmcuZnJvbUNoYXJDb2RlKDApLHUpK2EpLHtlbmNhcHN1bGF0aW9uOnQuZW5jcnlwdChhLCJOT05FIiksa2V5OmUuZ2VuZXJhdGUoYSxvKX19LGRlY3J5cHQ6ZnVuY3Rpb24odCxyLG4pe3ZhciBpPXQuZGVjcnlwdChyLCJOT05FIik7cmV0dXJuIGUuZ2VuZXJhdGUoaSxuKX19O3JldHVybiBvfSxuLmtlbS5rZGYxPWZ1bmN0aW9uKGUsdCl7byh0aGlzLGUsMCx0fHxlLmRpZ2VzdExlbmd0aCl9LG4ua2VtLmtkZjI9ZnVuY3Rpb24oZSx0KXtvKHRoaXMsZSwxLHR8fGUuZGlnZXN0TGVuZ3RoKX19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9cig2NikscigyMjIpLHIoMTM1KSxyKDM0OCkscigzNTcpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtyKDg5KSxyKDY1KSxyKDE2Mikscig5MCkscigxMDYpLHIoMzU0KSxyKDUyKSxyKDEwKSxyKDIyNSk7dmFyIGk9bi5hc24xLG89ZS5leHBvcnRzPW4ucGtjczc9bi5wa2NzN3x8e307ZnVuY3Rpb24gYShlKXt2YXIgdD17fSxyPVtdO2lmKCFpLnZhbGlkYXRlKGUsby5hc24xLnJlY2lwaWVudEluZm9WYWxpZGF0b3IsdCxyKSl7dmFyIGE9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBQS0NTIzcgUmVjaXBpZW50SW5mby4gQVNOLjEgb2JqZWN0IGlzIG5vdCBhbiBQS0NTIzcgUmVjaXBpZW50SW5mby4iKTt0aHJvdyBhLmVycm9ycz1yLGF9cmV0dXJue3ZlcnNpb246dC52ZXJzaW9uLmNoYXJDb2RlQXQoMCksaXNzdWVyOm4ucGtpLlJETkF0dHJpYnV0ZXNBc0FycmF5KHQuaXNzdWVyKSxzZXJpYWxOdW1iZXI6bi51dGlsLmNyZWF0ZUJ1ZmZlcih0LnNlcmlhbCkudG9IZXgoKSxlbmNyeXB0ZWRDb250ZW50OnthbGdvcml0aG06aS5kZXJUb09pZCh0LmVuY0FsZ29yaXRobSkscGFyYW1ldGVyOnQuZW5jUGFyYW1ldGVyLnZhbHVlLGNvbnRlbnQ6dC5lbmNLZXl9fX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgdCxyPVtdLG89MDtvPGUubGVuZ3RoOysrbylyLnB1c2goKHQ9ZVtvXSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5JTlRFR0VSLCExLGkuaW50ZWdlclRvRGVyKHQudmVyc2lvbikuZ2V0Qnl0ZXMoKSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLlNFUVVFTkNFLCEwLFtuLnBraS5kaXN0aW5ndWlzaGVkTmFtZVRvQXNuMSh7YXR0cmlidXRlczp0Lmlzc3Vlcn0pLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5JTlRFR0VSLCExLG4udXRpbC5oZXhUb0J5dGVzKHQuc2VyaWFsTnVtYmVyKSldKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0Rlcih0LmVuY3J5cHRlZENvbnRlbnQuYWxnb3JpdGhtKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuTlVMTCwhMSwiIildKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0NURVRTVFJJTkcsITEsdC5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpXSkpKTtyZXR1cm4gcn1mdW5jdGlvbiB1KGUpe3ZhciB0PWkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVFVRU5DRSwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLklOVEVHRVIsITEsaS5pbnRlZ2VyVG9EZXIoZS52ZXJzaW9uKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW24ucGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xKHthdHRyaWJ1dGVzOmUuaXNzdWVyfSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLklOVEVHRVIsITEsbi51dGlsLmhleFRvQnl0ZXMoZS5zZXJpYWxOdW1iZXIpKV0pLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVFVRU5DRSwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9JRCwhMSxpLm9pZFRvRGVyKGUuZGlnZXN0QWxnb3JpdGhtKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuTlVMTCwhMSwiIildKV0pO2lmKGUuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNBc24xJiZ0LnZhbHVlLnB1c2goZS5hdXRoZW50aWNhdGVkQXR0cmlidXRlc0FzbjEpLHQudmFsdWUucHVzaChpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0RlcihlLnNpZ25hdHVyZUFsZ29yaXRobSkuZ2V0Qnl0ZXMoKSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk5VTEwsITEsIiIpXSkpLHQudmFsdWUucHVzaChpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0NURVRTVFJJTkcsITEsZS5zaWduYXR1cmUpKSxlLnVuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoPjApe2Zvcih2YXIgcj1pLmNyZWF0ZShpLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsMSwhMCxbXSksbz0wO288ZS51bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzLmxlbmd0aDsrK28pe3ZhciBhPWUudW5hdXRoZW50aWNhdGVkQXR0cmlidXRlc1tvXTtyLnZhbHVlcy5wdXNoKGMoYSkpfXQudmFsdWUucHVzaChyKX1yZXR1cm4gdH1mdW5jdGlvbiBjKGUpe3ZhciB0O2lmKGUudHlwZT09PW4ucGtpLm9pZHMuY29udGVudFR5cGUpdD1pLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0lELCExLGkub2lkVG9EZXIoZS52YWx1ZSkuZ2V0Qnl0ZXMoKSk7ZWxzZSBpZihlLnR5cGU9PT1uLnBraS5vaWRzLm1lc3NhZ2VEaWdlc3QpdD1pLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0NURVRTVFJJTkcsITEsZS52YWx1ZS5ieXRlcygpKTtlbHNlIGlmKGUudHlwZT09PW4ucGtpLm9pZHMuc2lnbmluZ1RpbWUpe3ZhciByPW5ldyBEYXRlKCIxOTUwLTAxLTAxVDAwOjAwOjAwWiIpLG89bmV3IERhdGUoIjIwNTAtMDEtMDFUMDA6MDA6MDBaIiksYT1lLnZhbHVlO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpe3ZhciBzPURhdGUucGFyc2UoYSk7YT1pc05hTihzKT8xMz09PWEubGVuZ3RoP2kudXRjVGltZVRvRGF0ZShhKTppLmdlbmVyYWxpemVkVGltZVRvRGF0ZShhKTpuZXcgRGF0ZShzKX10PWE+PXImJmE8bz9pLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuVVRDVElNRSwhMSxpLmRhdGVUb1V0Y1RpbWUoYSkpOmkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5HRU5FUkFMSVpFRFRJTUUsITEsaS5kYXRlVG9HZW5lcmFsaXplZFRpbWUoYSkpfXJldHVybiBpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0RlcihlLnR5cGUpLmdldEJ5dGVzKCkpLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVQsITAsW3RdKV0pfWZ1bmN0aW9uIGYoZSx0LHIpe3ZhciBvPXt9O2lmKCFpLnZhbGlkYXRlKHQscixvLFtdKSl7dmFyIGE9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBQS0NTIzcgbWVzc2FnZS4gQVNOLjEgb2JqZWN0IGlzIG5vdCBhIHN1cHBvcnRlZCBQS0NTIzcgbWVzc2FnZS4iKTt0aHJvdyBhLmVycm9ycz1hLGF9aWYoaS5kZXJUb09pZChvLmNvbnRlbnRUeXBlKSE9PW4ucGtpLm9pZHMuZGF0YSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFBLQ1MjNyBtZXNzYWdlLiBPbmx5IHdyYXBwZWQgQ29udGVudFR5cGUgRGF0YSBzdXBwb3J0ZWQuIik7aWYoby5lbmNyeXB0ZWRDb250ZW50KXt2YXIgcz0iIjtpZihuLnV0aWwuaXNBcnJheShvLmVuY3J5cHRlZENvbnRlbnQpKWZvcih2YXIgdT0wO3U8by5lbmNyeXB0ZWRDb250ZW50Lmxlbmd0aDsrK3Upe2lmKG8uZW5jcnlwdGVkQ29udGVudFt1XS50eXBlIT09aS5UeXBlLk9DVEVUU1RSSU5HKXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIFBLQ1MjNyBtZXNzYWdlLCBleHBlY3RpbmcgZW5jcnlwdGVkIGNvbnRlbnQgY29uc3RydWN0ZWQgb2Ygb25seSBPQ1RFVCBTVFJJTkcgb2JqZWN0cy4iKTtzKz1vLmVuY3J5cHRlZENvbnRlbnRbdV0udmFsdWV9ZWxzZSBzPW8uZW5jcnlwdGVkQ29udGVudDtlLmVuY3J5cHRlZENvbnRlbnQ9e2FsZ29yaXRobTppLmRlclRvT2lkKG8uZW5jQWxnb3JpdGhtKSxwYXJhbWV0ZXI6bi51dGlsLmNyZWF0ZUJ1ZmZlcihvLmVuY1BhcmFtZXRlci52YWx1ZSksY29udGVudDpuLnV0aWwuY3JlYXRlQnVmZmVyKHMpfX1pZihvLmNvbnRlbnQpe3M9IiI7aWYobi51dGlsLmlzQXJyYXkoby5jb250ZW50KSlmb3IodT0wO3U8by5jb250ZW50Lmxlbmd0aDsrK3Upe2lmKG8uY29udGVudFt1XS50eXBlIT09aS5UeXBlLk9DVEVUU1RSSU5HKXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIFBLQ1MjNyBtZXNzYWdlLCBleHBlY3RpbmcgY29udGVudCBjb25zdHJ1Y3RlZCBvZiBvbmx5IE9DVEVUIFNUUklORyBvYmplY3RzLiIpO3MrPW8uY29udGVudFt1XS52YWx1ZX1lbHNlIHM9by5jb250ZW50O2UuY29udGVudD1uLnV0aWwuY3JlYXRlQnVmZmVyKHMpfXJldHVybiBlLnZlcnNpb249by52ZXJzaW9uLmNoYXJDb2RlQXQoMCksZS5yYXdDYXB0dXJlPW8sb31mdW5jdGlvbiBsKGUpe2lmKHZvaWQgMD09PWUuZW5jcnlwdGVkQ29udGVudC5rZXkpdGhyb3cgbmV3IEVycm9yKCJTeW1tZXRyaWMga2V5IG5vdCBhdmFpbGFibGUuIik7aWYodm9pZCAwPT09ZS5jb250ZW50KXt2YXIgdDtzd2l0Y2goZS5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSl7Y2FzZSBuLnBraS5vaWRzWyJhZXMxMjgtQ0JDIl06Y2FzZSBuLnBraS5vaWRzWyJhZXMxOTItQ0JDIl06Y2FzZSBuLnBraS5vaWRzWyJhZXMyNTYtQ0JDIl06dD1uLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKGUuZW5jcnlwdGVkQ29udGVudC5rZXkpO2JyZWFrO2Nhc2Ugbi5wa2kub2lkcy5kZXNDQkM6Y2FzZSBuLnBraS5vaWRzWyJkZXMtRURFMy1DQkMiXTp0PW4uZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoZS5lbmNyeXB0ZWRDb250ZW50LmtleSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN5bW1ldHJpYyBjaXBoZXIsIE9JRCAiK2UuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pfWlmKHQuc3RhcnQoZS5lbmNyeXB0ZWRDb250ZW50LnBhcmFtZXRlciksdC51cGRhdGUoZS5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpLCF0LmZpbmlzaCgpKXRocm93IG5ldyBFcnJvcigiU3ltbWV0cmljIGRlY3J5cHRpb24gZmFpbGVkLiIpO2UuY29udGVudD10Lm91dHB1dH19by5tZXNzYWdlRnJvbVBlbT1mdW5jdGlvbihlKXt2YXIgdD1uLnBlbS5kZWNvZGUoZSlbMF07aWYoIlBLQ1M3IiE9PXQudHlwZSl7dmFyIHI9bmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBQS0NTIzcgbWVzc2FnZSBmcm9tIFBFTTsgUEVNIGhlYWRlciB0eXBlIGlzIG5vdCAiUEtDUyM3Ii4nKTt0aHJvdyByLmhlYWRlclR5cGU9dC50eXBlLHJ9aWYodC5wcm9jVHlwZSYmIkVOQ1JZUFRFRCI9PT10LnByb2NUeXBlLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgY29udmVydCBQS0NTIzcgbWVzc2FnZSBmcm9tIFBFTTsgUEVNIGlzIGVuY3J5cHRlZC4iKTt2YXIgYT1pLmZyb21EZXIodC5ib2R5KTtyZXR1cm4gby5tZXNzYWdlRnJvbUFzbjEoYSl9LG8ubWVzc2FnZVRvUGVtPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e3R5cGU6IlBLQ1M3Iixib2R5OmkudG9EZXIoZS50b0FzbjEoKSkuZ2V0Qnl0ZXMoKX07cmV0dXJuIG4ucGVtLmVuY29kZShyLHttYXhsaW5lOnR9KX0sby5tZXNzYWdlRnJvbUFzbjE9ZnVuY3Rpb24oZSl7dmFyIHQ9e30scj1bXTtpZighaS52YWxpZGF0ZShlLG8uYXNuMS5jb250ZW50SW5mb1ZhbGlkYXRvcix0LHIpKXt2YXIgYT1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIFBLQ1MjNyBtZXNzYWdlLiBBU04uMSBvYmplY3QgaXMgbm90IGFuIFBLQ1MjNyBDb250ZW50SW5mby4iKTt0aHJvdyBhLmVycm9ycz1yLGF9dmFyIHMsdT1pLmRlclRvT2lkKHQuY29udGVudFR5cGUpO3N3aXRjaCh1KXtjYXNlIG4ucGtpLm9pZHMuZW52ZWxvcGVkRGF0YTpzPW8uY3JlYXRlRW52ZWxvcGVkRGF0YSgpO2JyZWFrO2Nhc2Ugbi5wa2kub2lkcy5lbmNyeXB0ZWREYXRhOnM9by5jcmVhdGVFbmNyeXB0ZWREYXRhKCk7YnJlYWs7Y2FzZSBuLnBraS5vaWRzLnNpZ25lZERhdGE6cz1vLmNyZWF0ZVNpZ25lZERhdGEoKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlYWQgUEtDUyM3IG1lc3NhZ2UuIENvbnRlbnRUeXBlIHdpdGggT0lEICIrdSsiIGlzIG5vdCAoeWV0KSBzdXBwb3J0ZWQuIil9cmV0dXJuIHMuZnJvbUFzbjEodC5jb250ZW50LnZhbHVlWzBdKSxzfSxvLmNyZWF0ZVNpZ25lZERhdGE9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiBlPXt0eXBlOm4ucGtpLm9pZHMuc2lnbmVkRGF0YSx2ZXJzaW9uOjEsY2VydGlmaWNhdGVzOltdLGNybHM6W10sc2lnbmVyczpbXSxkaWdlc3RBbGdvcml0aG1JZGVudGlmaWVyczpbXSxjb250ZW50SW5mbzpudWxsLHNpZ25lckluZm9zOltdLGZyb21Bc24xOmZ1bmN0aW9uKHQpe2lmKGYoZSx0LG8uYXNuMS5zaWduZWREYXRhVmFsaWRhdG9yKSxlLmNlcnRpZmljYXRlcz1bXSxlLmNybHM9W10sZS5kaWdlc3RBbGdvcml0aG1JZGVudGlmaWVycz1bXSxlLmNvbnRlbnRJbmZvPW51bGwsZS5zaWduZXJJbmZvcz1bXSxlLnJhd0NhcHR1cmUuY2VydGlmaWNhdGVzKWZvcih2YXIgcj1lLnJhd0NhcHR1cmUuY2VydGlmaWNhdGVzLnZhbHVlLGk9MDtpPHIubGVuZ3RoOysraSllLmNlcnRpZmljYXRlcy5wdXNoKG4ucGtpLmNlcnRpZmljYXRlRnJvbUFzbjEocltpXSkpfSx0b0FzbjE6ZnVuY3Rpb24oKXtlLmNvbnRlbnRJbmZvfHxlLnNpZ24oKTtmb3IodmFyIHQ9W10scj0wO3I8ZS5jZXJ0aWZpY2F0ZXMubGVuZ3RoOysrcil0LnB1c2gobi5wa2kuY2VydGlmaWNhdGVUb0FzbjEoZS5jZXJ0aWZpY2F0ZXNbcl0pKTt2YXIgbz1bXSxhPWkuY3JlYXRlKGkuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywwLCEwLFtpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5JTlRFR0VSLCExLGkuaW50ZWdlclRvRGVyKGUudmVyc2lvbikuZ2V0Qnl0ZXMoKSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLlNFVCwhMCxlLmRpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXJzKSxlLmNvbnRlbnRJbmZvXSldKTtyZXR1cm4gdC5sZW5ndGg+MCYmYS52YWx1ZVswXS52YWx1ZS5wdXNoKGkuY3JlYXRlKGkuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywwLCEwLHQpKSxvLmxlbmd0aD4wJiZhLnZhbHVlWzBdLnZhbHVlLnB1c2goaS5jcmVhdGUoaS5DbGFzcy5DT05URVhUX1NQRUNJRklDLDEsITAsbykpLGEudmFsdWVbMF0udmFsdWUucHVzaChpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VULCEwLGUuc2lnbmVySW5mb3MpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0RlcihlLnR5cGUpLmdldEJ5dGVzKCkpLGFdKX0sYWRkU2lnbmVyOmZ1bmN0aW9uKHQpe3ZhciByPXQuaXNzdWVyLGk9dC5zZXJpYWxOdW1iZXI7aWYodC5jZXJ0aWZpY2F0ZSl7dmFyIG89dC5jZXJ0aWZpY2F0ZTsic3RyaW5nIj09PXR5cGVvZiBvJiYobz1uLnBraS5jZXJ0aWZpY2F0ZUZyb21QZW0obykpLHI9by5pc3N1ZXIuYXR0cmlidXRlcyxpPW8uc2VyaWFsTnVtYmVyfXZhciBhPXQua2V5O2lmKCFhKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGFkZCBQS0NTIzcgc2lnbmVyOyBubyBwcml2YXRlIGtleSBzcGVjaWZpZWQuIik7InN0cmluZyI9PT10eXBlb2YgYSYmKGE9bi5wa2kucHJpdmF0ZUtleUZyb21QZW0oYSkpO3ZhciBzPXQuZGlnZXN0QWxnb3JpdGhtfHxuLnBraS5vaWRzLnNoYTE7c3dpdGNoKHMpe2Nhc2Ugbi5wa2kub2lkcy5zaGExOmNhc2Ugbi5wa2kub2lkcy5zaGEyNTY6Y2FzZSBuLnBraS5vaWRzLnNoYTM4NDpjYXNlIG4ucGtpLm9pZHMuc2hhNTEyOmNhc2Ugbi5wa2kub2lkcy5tZDU6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBhZGQgUEtDUyM3IHNpZ25lcjsgdW5rbm93biBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG06ICIrcyl9dmFyIHU9dC5hdXRoZW50aWNhdGVkQXR0cmlidXRlc3x8W107aWYodS5sZW5ndGg+MCl7Zm9yKHZhciBjPSExLGY9ITEsbD0wO2w8dS5sZW5ndGg7KytsKXt2YXIgaD11W2xdO2lmKGN8fGgudHlwZSE9PW4ucGtpLm9pZHMuY29udGVudFR5cGUpe2lmKGZ8fGgudHlwZSE9PW4ucGtpLm9pZHMubWVzc2FnZURpZ2VzdCk7ZWxzZSBpZihmPSEwLGMpYnJlYWt9ZWxzZSBpZihjPSEwLGYpYnJlYWt9aWYoIWN8fCFmKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMuIElmIHNpZ25lci5hdXRoZW50aWNhdGVkQXR0cmlidXRlcyBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBjb250YWluIGF0IGxlYXN0IHR3byBhdHRyaWJ1dGVzLCBQS0NTICM5IGNvbnRlbnQtdHlwZSBhbmQgUEtDUyAjOSBtZXNzYWdlLWRpZ2VzdC4iKX1lLnNpZ25lcnMucHVzaCh7a2V5OmEsdmVyc2lvbjoxLGlzc3VlcjpyLHNlcmlhbE51bWJlcjppLGRpZ2VzdEFsZ29yaXRobTpzLHNpZ25hdHVyZUFsZ29yaXRobTpuLnBraS5vaWRzLnJzYUVuY3J5cHRpb24sc2lnbmF0dXJlOm51bGwsYXV0aGVudGljYXRlZEF0dHJpYnV0ZXM6dSx1bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzOltdfSl9LHNpZ246ZnVuY3Rpb24odCl7dmFyIHI7KHQ9dHx8e30sIm9iamVjdCIhPT10eXBlb2YgZS5jb250ZW50fHxudWxsPT09ZS5jb250ZW50SW5mbykmJihlLmNvbnRlbnRJbmZvPWkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVFVRU5DRSwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9JRCwhMSxpLm9pZFRvRGVyKG4ucGtpLm9pZHMuZGF0YSkuZ2V0Qnl0ZXMoKSldKSwiY29udGVudCJpbiBlJiYoZS5jb250ZW50IGluc3RhbmNlb2Ygbi51dGlsLkJ5dGVCdWZmZXI/cj1lLmNvbnRlbnQuYnl0ZXMoKToic3RyaW5nIj09PXR5cGVvZiBlLmNvbnRlbnQmJihyPW4udXRpbC5lbmNvZGVVdGY4KGUuY29udGVudCkpLHQuZGV0YWNoZWQ/ZS5kZXRhY2hlZENvbnRlbnQ9aS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9DVEVUU1RSSU5HLCExLHIpOmUuY29udGVudEluZm8udmFsdWUucHVzaChpLmNyZWF0ZShpLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsMCwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9DVEVUU1RSSU5HLCExLHIpXSkpKSk7MCE9PWUuc2lnbmVycy5sZW5ndGgmJmZ1bmN0aW9uKHQpe3ZhciByO3I9ZS5kZXRhY2hlZENvbnRlbnQ/ZS5kZXRhY2hlZENvbnRlbnQ6KHI9ZS5jb250ZW50SW5mby52YWx1ZVsxXSkudmFsdWVbMF07aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3Qgc2lnbiBQS0NTIzcgbWVzc2FnZTsgdGhlcmUgaXMgbm8gY29udGVudCB0byBzaWduLiIpO3ZhciBvPWkuZGVyVG9PaWQoZS5jb250ZW50SW5mby52YWx1ZVswXS52YWx1ZSksYT1pLnRvRGVyKHIpO2Zvcih2YXIgcyBpbiBhLmdldEJ5dGUoKSxpLmdldEJlclZhbHVlTGVuZ3RoKGEpLGE9YS5nZXRCeXRlcygpLHQpdFtzXS5zdGFydCgpLnVwZGF0ZShhKTtmb3IodmFyIGY9bmV3IERhdGUsbD0wO2w8ZS5zaWduZXJzLmxlbmd0aDsrK2wpe3ZhciBoPWUuc2lnbmVyc1tsXTtpZigwPT09aC5hdXRoZW50aWNhdGVkQXR0cmlidXRlcy5sZW5ndGgpe2lmKG8hPT1uLnBraS5vaWRzLmRhdGEpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNpZ25lcjsgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgbXVzdCBiZSBwcmVzZW50IHdoZW4gdGhlIENvbnRlbnRJbmZvIGNvbnRlbnQgdHlwZSBpcyBub3QgUEtDUyM3IERhdGEuIil9ZWxzZXtoLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzQXNuMT1pLmNyZWF0ZShpLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsMCwhMCxbXSk7Zm9yKHZhciBwPWkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVQsITAsW10pLGQ9MDtkPGguYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoOysrZCl7dmFyIHk9aC5hdXRoZW50aWNhdGVkQXR0cmlidXRlc1tkXTt5LnR5cGU9PT1uLnBraS5vaWRzLm1lc3NhZ2VEaWdlc3Q/eS52YWx1ZT10W2guZGlnZXN0QWxnb3JpdGhtXS5kaWdlc3QoKTp5LnR5cGU9PT1uLnBraS5vaWRzLnNpZ25pbmdUaW1lJiYoeS52YWx1ZXx8KHkudmFsdWU9ZikpLHAudmFsdWUucHVzaChjKHkpKSxoLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzQXNuMS52YWx1ZS5wdXNoKGMoeSkpfWE9aS50b0RlcihwKS5nZXRCeXRlcygpLGgubWQuc3RhcnQoKS51cGRhdGUoYSl9aC5zaWduYXR1cmU9aC5rZXkuc2lnbihoLm1kLCJSU0FTU0EtUEtDUzEtVjFfNSIpfWUuc2lnbmVySW5mb3M9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0LnB1c2godShlW3JdKSk7cmV0dXJuIHR9KGUuc2lnbmVycyl9KGZ1bmN0aW9uKCl7Zm9yKHZhciB0PXt9LHI9MDtyPGUuc2lnbmVycy5sZW5ndGg7KytyKXt2YXIgbz1lLnNpZ25lcnNbcl0sYT1vLmRpZ2VzdEFsZ29yaXRobTthIGluIHR8fCh0W2FdPW4ubWRbbi5wa2kub2lkc1thXV0uY3JlYXRlKCkpLDA9PT1vLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzLmxlbmd0aD9vLm1kPXRbYV06by5tZD1uLm1kW24ucGtpLm9pZHNbYV1dLmNyZWF0ZSgpfWZvcih2YXIgYSBpbiBlLmRpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXJzPVtdLHQpZS5kaWdlc3RBbGdvcml0aG1JZGVudGlmaWVycy5wdXNoKGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVFVRU5DRSwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9JRCwhMSxpLm9pZFRvRGVyKGEpLmdldEJ5dGVzKCkpLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5OVUxMLCExLCIiKV0pKTtyZXR1cm4gdH0oKSl9LHZlcmlmeTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUEtDUyM3IHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gbm90IHlldCBpbXBsZW1lbnRlZC4iKX0sYWRkQ2VydGlmaWNhdGU6ZnVuY3Rpb24odCl7InN0cmluZyI9PT10eXBlb2YgdCYmKHQ9bi5wa2kuY2VydGlmaWNhdGVGcm9tUGVtKHQpKSxlLmNlcnRpZmljYXRlcy5wdXNoKHQpfSxhZGRDZXJ0aWZpY2F0ZVJldm9rYXRpb25MaXN0OmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiUEtDUyM3IENSTCBzdXBwb3J0IG5vdCB5ZXQgaW1wbGVtZW50ZWQuIil9fX0sby5jcmVhdGVFbmNyeXB0ZWREYXRhPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gZT17dHlwZTpuLnBraS5vaWRzLmVuY3J5cHRlZERhdGEsdmVyc2lvbjowLGVuY3J5cHRlZENvbnRlbnQ6e2FsZ29yaXRobTpuLnBraS5vaWRzWyJhZXMyNTYtQ0JDIl19LGZyb21Bc24xOmZ1bmN0aW9uKHQpe2YoZSx0LG8uYXNuMS5lbmNyeXB0ZWREYXRhVmFsaWRhdG9yKX0sZGVjcnlwdDpmdW5jdGlvbih0KXt2b2lkIDAhPT10JiYoZS5lbmNyeXB0ZWRDb250ZW50LmtleT10KSxsKGUpfX19LG8uY3JlYXRlRW52ZWxvcGVkRGF0YT1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIGU9e3R5cGU6bi5wa2kub2lkcy5lbnZlbG9wZWREYXRhLHZlcnNpb246MCxyZWNpcGllbnRzOltdLGVuY3J5cHRlZENvbnRlbnQ6e2FsZ29yaXRobTpuLnBraS5vaWRzWyJhZXMyNTYtQ0JDIl19LGZyb21Bc24xOmZ1bmN0aW9uKHQpe3ZhciByPWYoZSx0LG8uYXNuMS5lbnZlbG9wZWREYXRhVmFsaWRhdG9yKTtlLnJlY2lwaWVudHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0LnB1c2goYShlW3JdKSk7cmV0dXJuIHR9KHIucmVjaXBpZW50SW5mb3MudmFsdWUpfSx0b0FzbjE6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLlNFUVVFTkNFLCEwLFtpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0lELCExLGkub2lkVG9EZXIoZS50eXBlKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsMCwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLlNFUVVFTkNFLCEwLFtpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuSU5URUdFUiwhMSxpLmludGVnZXJUb0RlcihlLnZlcnNpb24pLmdldEJ5dGVzKCkpLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVQsITAscyhlLnJlY2lwaWVudHMpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsKHQ9ZS5lbmNyeXB0ZWRDb250ZW50LFtpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0lELCExLGkub2lkVG9EZXIobi5wa2kub2lkcy5kYXRhKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0Rlcih0LmFsZ29yaXRobSkuZ2V0Qnl0ZXMoKSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9DVEVUU1RSSU5HLCExLHQucGFyYW1ldGVyLmdldEJ5dGVzKCkpXSksaS5jcmVhdGUoaS5DbGFzcy5DT05URVhUX1NQRUNJRklDLDAsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PQ1RFVFNUUklORywhMSx0LmNvbnRlbnQuZ2V0Qnl0ZXMoKSldKV0pKV0pXSldKTt2YXIgdH0sZmluZFJlY2lwaWVudDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5pc3N1ZXIuYXR0cmlidXRlcyxuPTA7bjxlLnJlY2lwaWVudHMubGVuZ3RoOysrbil7dmFyIGk9ZS5yZWNpcGllbnRzW25dLG89aS5pc3N1ZXI7aWYoaS5zZXJpYWxOdW1iZXI9PT10LnNlcmlhbE51bWJlciYmby5sZW5ndGg9PT1yLmxlbmd0aCl7Zm9yKHZhciBhPSEwLHM9MDtzPHIubGVuZ3RoOysrcylpZihvW3NdLnR5cGUhPT1yW3NdLnR5cGV8fG9bc10udmFsdWUhPT1yW3NdLnZhbHVlKXthPSExO2JyZWFrfWlmKGEpcmV0dXJuIGl9fXJldHVybiBudWxsfSxkZWNyeXB0OmZ1bmN0aW9uKHQscil7aWYodm9pZCAwPT09ZS5lbmNyeXB0ZWRDb250ZW50LmtleSYmdm9pZCAwIT09dCYmdm9pZCAwIT09cilzd2l0Y2godC5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSl7Y2FzZSBuLnBraS5vaWRzLnJzYUVuY3J5cHRpb246Y2FzZSBuLnBraS5vaWRzLmRlc0NCQzp2YXIgaT1yLmRlY3J5cHQodC5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpO2UuZW5jcnlwdGVkQ29udGVudC5rZXk9bi51dGlsLmNyZWF0ZUJ1ZmZlcihpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYXN5bW1ldHJpYyBjaXBoZXIsIE9JRCAiK3QuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pfWwoZSl9LGFkZFJlY2lwaWVudDpmdW5jdGlvbih0KXtlLnJlY2lwaWVudHMucHVzaCh7dmVyc2lvbjowLGlzc3Vlcjp0Lmlzc3Vlci5hdHRyaWJ1dGVzLHNlcmlhbE51bWJlcjp0LnNlcmlhbE51bWJlcixlbmNyeXB0ZWRDb250ZW50OnthbGdvcml0aG06bi5wa2kub2lkcy5yc2FFbmNyeXB0aW9uLGtleTp0LnB1YmxpY0tleX19KX0sZW5jcnlwdDpmdW5jdGlvbih0LHIpe2lmKHZvaWQgMD09PWUuZW5jcnlwdGVkQ29udGVudC5jb250ZW50KXt2YXIgaSxvLGE7c3dpdGNoKHI9cnx8ZS5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSx0PXR8fGUuZW5jcnlwdGVkQ29udGVudC5rZXkscil7Y2FzZSBuLnBraS5vaWRzWyJhZXMxMjgtQ0JDIl06aT0xNixvPTE2LGE9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIG4ucGtpLm9pZHNbImFlczE5Mi1DQkMiXTppPTI0LG89MTYsYT1uLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyO2JyZWFrO2Nhc2Ugbi5wa2kub2lkc1siYWVzMjU2LUNCQyJdOmk9MzIsbz0xNixhPW4uYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7YnJlYWs7Y2FzZSBuLnBraS5vaWRzWyJkZXMtRURFMy1DQkMiXTppPTI0LG89OCxhPW4uZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN5bW1ldHJpYyBjaXBoZXIsIE9JRCAiK3IpfWlmKHZvaWQgMD09PXQpdD1uLnV0aWwuY3JlYXRlQnVmZmVyKG4ucmFuZG9tLmdldEJ5dGVzKGkpKTtlbHNlIGlmKHQubGVuZ3RoKCkhPWkpdGhyb3cgbmV3IEVycm9yKCJTeW1tZXRyaWMga2V5IGhhcyB3cm9uZyBsZW5ndGg7IGdvdCAiK3QubGVuZ3RoKCkrIiBieXRlcywgZXhwZWN0ZWQgIitpKyIuIik7ZS5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobT1yLGUuZW5jcnlwdGVkQ29udGVudC5rZXk9dCxlLmVuY3J5cHRlZENvbnRlbnQucGFyYW1ldGVyPW4udXRpbC5jcmVhdGVCdWZmZXIobi5yYW5kb20uZ2V0Qnl0ZXMobykpO3ZhciBzPWEodCk7aWYocy5zdGFydChlLmVuY3J5cHRlZENvbnRlbnQucGFyYW1ldGVyLmNvcHkoKSkscy51cGRhdGUoZS5jb250ZW50KSwhcy5maW5pc2goKSl0aHJvdyBuZXcgRXJyb3IoIlN5bW1ldHJpYyBlbmNyeXB0aW9uIGZhaWxlZC4iKTtlLmVuY3J5cHRlZENvbnRlbnQuY29udGVudD1zLm91dHB1dH1mb3IodmFyIHU9MDt1PGUucmVjaXBpZW50cy5sZW5ndGg7Kyt1KXt2YXIgYz1lLnJlY2lwaWVudHNbdV07aWYodm9pZCAwPT09Yy5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpc3dpdGNoKGMuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pe2Nhc2Ugbi5wa2kub2lkcy5yc2FFbmNyeXB0aW9uOmMuZW5jcnlwdGVkQ29udGVudC5jb250ZW50PWMuZW5jcnlwdGVkQ29udGVudC5rZXkuZW5jcnlwdChlLmVuY3J5cHRlZENvbnRlbnQua2V5LmRhdGEpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBhc3ltbWV0cmljIGNpcGhlciwgT0lEICIrYy5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSl9fX19fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cig4OSkscigxMzQpLHIoMjIyKSxyKDEzNSkscigxMCk7dmFyIGk9ZS5leHBvcnRzPW4uc3NoPW4uc3NofHx7fTtmdW5jdGlvbiBvKGUsdCl7dmFyIHI9dC50b1N0cmluZygxNik7clswXT49IjgiJiYocj0iMDAiK3IpO3ZhciBpPW4udXRpbC5oZXhUb0J5dGVzKHIpO2UucHV0SW50MzIoaS5sZW5ndGgpLGUucHV0Qnl0ZXMoaSl9ZnVuY3Rpb24gYShlLHQpe2UucHV0SW50MzIodC5sZW5ndGgpLGUucHV0U3RyaW5nKHQpfWZ1bmN0aW9uIHMoKXtmb3IodmFyIGU9bi5tZC5zaGExLmNyZWF0ZSgpLHQ9YXJndW1lbnRzLmxlbmd0aCxyPTA7cjx0OysrcillLnVwZGF0ZShhcmd1bWVudHNbcl0pO3JldHVybiBlLmRpZ2VzdCgpfWkucHJpdmF0ZUtleVRvUHV0dHk9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPSIiPT09KHQ9dHx8IiIpPyJub25lIjoiYWVzMjU2LWNiYyIsdT0iUHVUVFktVXNlci1LZXktRmlsZS0yOiBzc2gtcnNhXHJcbiI7dSs9IkVuY3J5cHRpb246ICIraSsiXHJcbiIsdSs9IkNvbW1lbnQ6ICIrKHI9cnx8IiIpKyJcclxuIjt2YXIgYz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7YShjLCJzc2gtcnNhIiksbyhjLGUuZSksbyhjLGUubik7dmFyIGY9bi51dGlsLmVuY29kZTY0KGMuYnl0ZXMoKSw2NCksbD1NYXRoLmZsb29yKGYubGVuZ3RoLzY2KSsxO3UrPSJQdWJsaWMtTGluZXM6ICIrbCsiXHJcbiIsdSs9Zjt2YXIgaCxwPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtpZihvKHAsZS5kKSxvKHAsZS5wKSxvKHAsZS5xKSxvKHAsZS5xSW52KSx0KXt2YXIgZD1wLmxlbmd0aCgpKzE2LTE7ZC09ZCUxNjt2YXIgeT1zKHAuYnl0ZXMoKSk7eS50cnVuY2F0ZSh5Lmxlbmd0aCgpLWQrcC5sZW5ndGgoKSkscC5wdXRCdWZmZXIoeSk7dmFyIGc9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2cucHV0QnVmZmVyKHMoIlwwXDBcMFwwIix0KSksZy5wdXRCdWZmZXIocygiXDBcMFwwXHgwMSIsdCkpO3ZhciB2PW4uYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXIoZy50cnVuY2F0ZSg4KSwiQ0JDIik7di5zdGFydChuLnV0aWwuY3JlYXRlQnVmZmVyKCkuZmlsbFdpdGhCeXRlKDAsMTYpKSx2LnVwZGF0ZShwLmNvcHkoKSksdi5maW5pc2goKTt2YXIgbT12Lm91dHB1dDttLnRydW5jYXRlKDE2KSxoPW4udXRpbC5lbmNvZGU2NChtLmJ5dGVzKCksNjQpfWVsc2UgaD1uLnV0aWwuZW5jb2RlNjQocC5ieXRlcygpLDY0KTt1Kz0iXHJcblByaXZhdGUtTGluZXM6ICIrKGw9TWF0aC5mbG9vcihoLmxlbmd0aC82NikrMSkrIlxyXG4iLHUrPWg7dmFyIGI9cygicHV0dHktcHJpdmF0ZS1rZXktZmlsZS1tYWMta2V5Iix0KSxfPW4udXRpbC5jcmVhdGVCdWZmZXIoKTthKF8sInNzaC1yc2EiKSxhKF8saSksYShfLHIpLF8ucHV0SW50MzIoYy5sZW5ndGgoKSksXy5wdXRCdWZmZXIoYyksXy5wdXRJbnQzMihwLmxlbmd0aCgpKSxfLnB1dEJ1ZmZlcihwKTt2YXIgUz1uLmhtYWMuY3JlYXRlKCk7cmV0dXJuIFMuc3RhcnQoInNoYTEiLGIpLFMudXBkYXRlKF8uYnl0ZXMoKSksdSs9IlxyXG5Qcml2YXRlLU1BQzogIitTLmRpZ2VzdCgpLnRvSGV4KCkrIlxyXG4ifSxpLnB1YmxpY0tleVRvT3BlblNTSD1mdW5jdGlvbihlLHQpe3Q9dHx8IiI7dmFyIHI9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBhKHIsInNzaC1yc2EiKSxvKHIsZS5lKSxvKHIsZS5uKSwic3NoLXJzYSAiK24udXRpbC5lbmNvZGU2NChyLmJ5dGVzKCkpKyIgIit0fSxpLnByaXZhdGVLZXlUb09wZW5TU0g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9uLnBraS5lbmNyeXB0UnNhUHJpdmF0ZUtleShlLHQse2xlZ2FjeTohMCxhbGdvcml0aG06ImFlczEyOCJ9KTpuLnBraS5wcml2YXRlS2V5VG9QZW0oZSl9LGkuZ2V0UHVibGljS2V5RmluZ2VycHJpbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj0odD10fHx7fSkubWR8fG4ubWQubWQ1LmNyZWF0ZSgpLGk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2EoaSwic3NoLXJzYSIpLG8oaSxlLmUpLG8oaSxlLm4pLHIuc3RhcnQoKSxyLnVwZGF0ZShpLmdldEJ5dGVzKCkpO3ZhciBzPXIuZGlnZXN0KCk7aWYoImhleCI9PT10LmVuY29kaW5nKXt2YXIgdT1zLnRvSGV4KCk7cmV0dXJuIHQuZGVsaW1pdGVyP3UubWF0Y2goLy57Mn0vZykuam9pbih0LmRlbGltaXRlcik6dX1pZigiYmluYXJ5Ij09PXQuZW5jb2RpbmcpcmV0dXJuIHMuZ2V0Qnl0ZXMoKTtpZih0LmVuY29kaW5nKXRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZyAiJyt0LmVuY29kaW5nKyciLicpO3JldHVybiBzfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cigzNTYpLHIoMzU4KSxyKDEwKTt2YXIgaT0iZm9yZ2UudGFzayIsbz17fSxhPTA7bi5kZWJ1Zy5zZXQoaSwidGFza3MiLG8pO3ZhciBzPXt9O24uZGVidWcuc2V0KGksInF1ZXVlcyIscyk7dmFyIHU9InJlYWR5IixjPSJydW5uaW5nIixmPSJibG9ja2VkIixsPSJzbGVlcGluZyIsaD0iZG9uZSIscD0iZXJyb3IiLGQ9e3JlYWR5Ont9fTtkLnJlYWR5LnN0b3A9dSxkLnJlYWR5LnN0YXJ0PWMsZC5yZWFkeS5jYW5jZWw9aCxkLnJlYWR5LmZhaWw9cCxkLnJ1bm5pbmc9e30sZC5ydW5uaW5nLnN0b3A9dSxkLnJ1bm5pbmcuc3RhcnQ9YyxkLnJ1bm5pbmcuYmxvY2s9ZixkLnJ1bm5pbmcudW5ibG9jaz1jLGQucnVubmluZy5zbGVlcD1sLGQucnVubmluZy53YWtldXA9YyxkLnJ1bm5pbmcuY2FuY2VsPWgsZC5ydW5uaW5nLmZhaWw9cCxkLmJsb2NrZWQ9e30sZC5ibG9ja2VkLnN0b3A9ZixkLmJsb2NrZWQuc3RhcnQ9ZixkLmJsb2NrZWQuYmxvY2s9ZixkLmJsb2NrZWQudW5ibG9jaz1mLGQuYmxvY2tlZC5zbGVlcD1mLGQuYmxvY2tlZC53YWtldXA9ZixkLmJsb2NrZWQuY2FuY2VsPWgsZC5ibG9ja2VkLmZhaWw9cCxkLnNsZWVwaW5nPXt9LGQuc2xlZXBpbmcuc3RvcD1sLGQuc2xlZXBpbmcuc3RhcnQ9bCxkLnNsZWVwaW5nLmJsb2NrPWwsZC5zbGVlcGluZy51bmJsb2NrPWwsZC5zbGVlcGluZy5zbGVlcD1sLGQuc2xlZXBpbmcud2FrZXVwPWwsZC5zbGVlcGluZy5jYW5jZWw9aCxkLnNsZWVwaW5nLmZhaWw9cCxkLmRvbmU9e30sZC5kb25lLnN0b3A9aCxkLmRvbmUuc3RhcnQ9aCxkLmRvbmUuYmxvY2s9aCxkLmRvbmUudW5ibG9jaz1oLGQuZG9uZS5zbGVlcD1oLGQuZG9uZS53YWtldXA9aCxkLmRvbmUuY2FuY2VsPWgsZC5kb25lLmZhaWw9cCxkLmVycm9yPXt9LGQuZXJyb3Iuc3RvcD1wLGQuZXJyb3Iuc3RhcnQ9cCxkLmVycm9yLmJsb2NrPXAsZC5lcnJvci51bmJsb2NrPXAsZC5lcnJvci5zbGVlcD1wLGQuZXJyb3Iud2FrZXVwPXAsZC5lcnJvci5jYW5jZWw9cCxkLmVycm9yLmZhaWw9cDt2YXIgeT1mdW5jdGlvbihlKXt0aGlzLmlkPS0xLHRoaXMubmFtZT1lLm5hbWV8fCI/Iix0aGlzLnBhcmVudD1lLnBhcmVudHx8bnVsbCx0aGlzLnJ1bj1lLnJ1bix0aGlzLnN1YnRhc2tzPVtdLHRoaXMuZXJyb3I9ITEsdGhpcy5zdGF0ZT11LHRoaXMuYmxvY2tzPTAsdGhpcy50aW1lb3V0SWQ9bnVsbCx0aGlzLnN3YXBUaW1lPW51bGwsdGhpcy51c2VyRGF0YT1udWxsLHRoaXMuaWQ9YSsrLG9bdGhpcy5pZF09dGhpc307eS5wcm90b3R5cGUuZGVidWc9ZnVuY3Rpb24oZSl7ZT1lfHwiIixuLmxvZy5kZWJ1ZyhpLGUsIlslc11bJXNdIHRhc2s6Iix0aGlzLmlkLHRoaXMubmFtZSx0aGlzLCJzdWJ0YXNrczoiLHRoaXMuc3VidGFza3MubGVuZ3RoLCJxdWV1ZToiLHMpfSx5LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKGUsdCl7ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiYodD1lLGU9dGhpcy5uYW1lKTt2YXIgcj1uZXcgeSh7cnVuOnQsbmFtZTplLHBhcmVudDp0aGlzfSk7cmV0dXJuIHIuc3RhdGU9YyxyLnR5cGU9dGhpcy50eXBlLHIuc3VjY2Vzc0NhbGxiYWNrPXRoaXMuc3VjY2Vzc0NhbGxiYWNrfHxudWxsLHIuZmFpbHVyZUNhbGxiYWNrPXRoaXMuZmFpbHVyZUNhbGxiYWNrfHxudWxsLHRoaXMuc3VidGFza3MucHVzaChyKSx0aGlzfSx5LnByb3RvdHlwZS5wYXJhbGxlbD1mdW5jdGlvbihlLHQpe3JldHVybiBuLnV0aWwuaXNBcnJheShlKSYmKHQ9ZSxlPXRoaXMubmFtZSksdGhpcy5uZXh0KGUsZnVuY3Rpb24ocil7dmFyIGk9cjtpLmJsb2NrKHQubGVuZ3RoKTtmb3IodmFyIG89ZnVuY3Rpb24oZSxyKXtuLnRhc2suc3RhcnQoe3R5cGU6ZSxydW46ZnVuY3Rpb24oZSl7dFtyXShlKX0sc3VjY2VzczpmdW5jdGlvbihlKXtpLnVuYmxvY2soKX0sZmFpbHVyZTpmdW5jdGlvbihlKXtpLnVuYmxvY2soKX19KX0sYT0wO2E8dC5sZW5ndGg7YSsrKXtvKGUrIl9fcGFyYWxsZWwtIityLmlkKyItIithLGEpfX0pfSx5LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT1kW3RoaXMuc3RhdGVdLnN0b3B9LHkucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5lcnJvcj0hMSx0aGlzLnN0YXRlPWRbdGhpcy5zdGF0ZV0uc3RhcnQsdGhpcy5zdGF0ZT09PWMmJih0aGlzLnN0YXJ0PW5ldyBEYXRlLHRoaXMucnVuKHRoaXMpLGcodGhpcywwKSl9LHkucHJvdG90eXBlLmJsb2NrPWZ1bmN0aW9uKGUpe2U9InVuZGVmaW5lZCI9PT10eXBlb2YgZT8xOmUsdGhpcy5ibG9ja3MrPWUsdGhpcy5ibG9ja3M+MCYmKHRoaXMuc3RhdGU9ZFt0aGlzLnN0YXRlXS5ibG9jayl9LHkucHJvdG90eXBlLnVuYmxvY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9InVuZGVmaW5lZCI9PT10eXBlb2YgZT8xOmUsdGhpcy5ibG9ja3MtPWUsMD09PXRoaXMuYmxvY2tzJiZ0aGlzLnN0YXRlIT09aCYmKHRoaXMuc3RhdGU9YyxnKHRoaXMsMCkpLHRoaXMuYmxvY2tzfSx5LnByb3RvdHlwZS5zbGVlcD1mdW5jdGlvbihlKXtlPSJ1bmRlZmluZWQiPT09dHlwZW9mIGU/MDplLHRoaXMuc3RhdGU9ZFt0aGlzLnN0YXRlXS5zbGVlcDt2YXIgdD10aGlzO3RoaXMudGltZW91dElkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnRpbWVvdXRJZD1udWxsLHQuc3RhdGU9YyxnKHQsMCl9LGUpfSx5LnByb3RvdHlwZS53YWl0PWZ1bmN0aW9uKGUpe2Uud2FpdCh0aGlzKX0seS5wcm90b3R5cGUud2FrZXVwPWZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT09PWwmJihjYW5jZWxUaW1lb3V0KHRoaXMudGltZW91dElkKSx0aGlzLnRpbWVvdXRJZD1udWxsLHRoaXMuc3RhdGU9YyxnKHRoaXMsMCkpfSx5LnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXt0aGlzLnN0YXRlPWRbdGhpcy5zdGF0ZV0uY2FuY2VsLHRoaXMucGVybWl0c05lZWRlZD0wLG51bGwhPT10aGlzLnRpbWVvdXRJZCYmKGNhbmNlbFRpbWVvdXQodGhpcy50aW1lb3V0SWQpLHRoaXMudGltZW91dElkPW51bGwpLHRoaXMuc3VidGFza3M9W119LHkucHJvdG90eXBlLmZhaWw9ZnVuY3Rpb24oZSl7aWYodGhpcy5lcnJvcj0hMCw="
}
Changelog:
{
"2020.04.17 15:43": "base64:NjU1MzYpKSx2PShuPXYraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksbT0obj1tK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGI9KG49YitpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxfPShuPV8raSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksbz0obj0obys9aS0xKzM3KihpLTEpKSsoaT0xKSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksYT0obj1hK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLHM9KG49cytpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSx1PShuPXUraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksYz0obj1jK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGY9KG49ZitpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxsPShuPWwraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksaD0obj1oK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLHA9KG49cCtpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxkPShuPWQraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSkseT0obj15K2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGc9KG49ZytpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSx2PShuPXYraSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksbT0obj1tK2krNjU1MzUpLTY1NTM2KihpPU1hdGguZmxvb3Iobi82NTUzNikpLGI9KG49YitpKzY1NTM1KS02NTUzNiooaT1NYXRoLmZsb29yKG4vNjU1MzYpKSxfPShuPV8raSs2NTUzNSktNjU1MzYqKGk9TWF0aC5mbG9vcihuLzY1NTM2KSksbys9aS0xKzM3KihpLTEpLGVbMF09byxlWzFdPWEsZVsyXT1zLGVbM109dSxlWzRdPWMsZVs1XT1mLGVbNl09bCxlWzddPWgsZVs4XT1wLGVbOV09ZCxlWzEwXT15LGVbMTFdPWcsZVsxMl09dixlWzEzXT1tLGVbMTRdPWIsZVsxNV09X319KS5jYWxsKHRoaXMscigxOCkuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cigxMCkscig1MikscigxNjQpLGUuZXhwb3J0cz1uLmtlbT1uLmtlbXx8e307dmFyIGk9bi5qc2JuLkJpZ0ludGVnZXI7ZnVuY3Rpb24gbyhlLHQscixpKXtlLmdlbmVyYXRlPWZ1bmN0aW9uKGUsbyl7Zm9yKHZhciBhPW5ldyBuLnV0aWwuQnl0ZUJ1ZmZlcixzPU1hdGguY2VpbChvL2kpK3IsdT1uZXcgbi51dGlsLkJ5dGVCdWZmZXIsYz1yO2M8czsrK2Mpe3UucHV0SW50MzIoYyksdC5zdGFydCgpLHQudXBkYXRlKGUrdS5nZXRCeXRlcygpKTt2YXIgZj10LmRpZ2VzdCgpO2EucHV0Qnl0ZXMoZi5nZXRCeXRlcyhpKSl9cmV0dXJuIGEudHJ1bmNhdGUoYS5sZW5ndGgoKS1vKSxhLmdldEJ5dGVzKCl9fW4ua2VtLnJzYT17fSxuLmtlbS5yc2EuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9KHQ9dHx8e30pLnBybmd8fG4ucmFuZG9tLG89e2VuY3J5cHQ6ZnVuY3Rpb24odCxvKXt2YXIgYSxzPU1hdGguY2VpbCh0Lm4uYml0TGVuZ3RoKCkvOCk7ZG97YT1uZXcgaShuLnV0aWwuYnl0ZXNUb0hleChyLmdldEJ5dGVzU3luYyhzKSksMTYpLm1vZCh0Lm4pfXdoaWxlKGEuY29tcGFyZVRvKGkuT05FKTw9MCk7dmFyIHU9cy0oYT1uLnV0aWwuaGV4VG9CeXRlcyhhLnRvU3RyaW5nKDE2KSkpLmxlbmd0aDtyZXR1cm4gdT4wJiYoYT1uLnV0aWwuZmlsbFN0cmluZyhTdHJpbmcuZnJvbUNoYXJDb2RlKDApLHUpK2EpLHtlbmNhcHN1bGF0aW9uOnQuZW5jcnlwdChhLCJOT05FIiksa2V5OmUuZ2VuZXJhdGUoYSxvKX19LGRlY3J5cHQ6ZnVuY3Rpb24odCxyLG4pe3ZhciBpPXQuZGVjcnlwdChyLCJOT05FIik7cmV0dXJuIGUuZ2VuZXJhdGUoaSxuKX19O3JldHVybiBvfSxuLmtlbS5rZGYxPWZ1bmN0aW9uKGUsdCl7byh0aGlzLGUsMCx0fHxlLmRpZ2VzdExlbmd0aCl9LG4ua2VtLmtkZjI9ZnVuY3Rpb24oZSx0KXtvKHRoaXMsZSwxLHR8fGUuZGlnZXN0TGVuZ3RoKX19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9cig2NikscigyMjIpLHIoMTM1KSxyKDM0OCkscigzNTcpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtyKDg5KSxyKDY1KSxyKDE2Mikscig5MCkscigxMDYpLHIoMzU0KSxyKDUyKSxyKDEwKSxyKDIyNSk7dmFyIGk9bi5hc24xLG89ZS5leHBvcnRzPW4ucGtjczc9bi5wa2NzN3x8e307ZnVuY3Rpb24gYShlKXt2YXIgdD17fSxyPVtdO2lmKCFpLnZhbGlkYXRlKGUsby5hc24xLnJlY2lwaWVudEluZm9WYWxpZGF0b3IsdCxyKSl7dmFyIGE9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBQS0NTIzcgUmVjaXBpZW50SW5mby4gQVNOLjEgb2JqZWN0IGlzIG5vdCBhbiBQS0NTIzcgUmVjaXBpZW50SW5mby4iKTt0aHJvdyBhLmVycm9ycz1yLGF9cmV0dXJue3ZlcnNpb246dC52ZXJzaW9uLmNoYXJDb2RlQXQoMCksaXNzdWVyOm4ucGtpLlJETkF0dHJpYnV0ZXNBc0FycmF5KHQuaXNzdWVyKSxzZXJpYWxOdW1iZXI6bi51dGlsLmNyZWF0ZUJ1ZmZlcih0LnNlcmlhbCkudG9IZXgoKSxlbmNyeXB0ZWRDb250ZW50OnthbGdvcml0aG06aS5kZXJUb09pZCh0LmVuY0FsZ29yaXRobSkscGFyYW1ldGVyOnQuZW5jUGFyYW1ldGVyLnZhbHVlLGNvbnRlbnQ6dC5lbmNLZXl9fX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgdCxyPVtdLG89MDtvPGUubGVuZ3RoOysrbylyLnB1c2goKHQ9ZVtvXSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5JTlRFR0VSLCExLGkuaW50ZWdlclRvRGVyKHQudmVyc2lvbikuZ2V0Qnl0ZXMoKSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLlNFUVVFTkNFLCEwLFtuLnBraS5kaXN0aW5ndWlzaGVkTmFtZVRvQXNuMSh7YXR0cmlidXRlczp0Lmlzc3Vlcn0pLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5JTlRFR0VSLCExLG4udXRpbC5oZXhUb0J5dGVzKHQuc2VyaWFsTnVtYmVyKSldKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0Rlcih0LmVuY3J5cHRlZENvbnRlbnQuYWxnb3JpdGhtKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuTlVMTCwhMSwiIildKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0NURVRTVFJJTkcsITEsdC5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpXSkpKTtyZXR1cm4gcn1mdW5jdGlvbiB1KGUpe3ZhciB0PWkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVFVRU5DRSwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLklOVEVHRVIsITEsaS5pbnRlZ2VyVG9EZXIoZS52ZXJzaW9uKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW24ucGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xKHthdHRyaWJ1dGVzOmUuaXNzdWVyfSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLklOVEVHRVIsITEsbi51dGlsLmhleFRvQnl0ZXMoZS5zZXJpYWxOdW1iZXIpKV0pLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVFVRU5DRSwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9JRCwhMSxpLm9pZFRvRGVyKGUuZGlnZXN0QWxnb3JpdGhtKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuTlVMTCwhMSwiIildKV0pO2lmKGUuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNBc24xJiZ0LnZhbHVlLnB1c2goZS5hdXRoZW50aWNhdGVkQXR0cmlidXRlc0FzbjEpLHQudmFsdWUucHVzaChpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0RlcihlLnNpZ25hdHVyZUFsZ29yaXRobSkuZ2V0Qnl0ZXMoKSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk5VTEwsITEsIiIpXSkpLHQudmFsdWUucHVzaChpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0NURVRTVFJJTkcsITEsZS5zaWduYXR1cmUpKSxlLnVuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoPjApe2Zvcih2YXIgcj1pLmNyZWF0ZShpLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsMSwhMCxbXSksbz0wO288ZS51bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzLmxlbmd0aDsrK28pe3ZhciBhPWUudW5hdXRoZW50aWNhdGVkQXR0cmlidXRlc1tvXTtyLnZhbHVlcy5wdXNoKGMoYSkpfXQudmFsdWUucHVzaChyKX1yZXR1cm4gdH1mdW5jdGlvbiBjKGUpe3ZhciB0O2lmKGUudHlwZT09PW4ucGtpLm9pZHMuY29udGVudFR5cGUpdD1pLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0lELCExLGkub2lkVG9EZXIoZS52YWx1ZSkuZ2V0Qnl0ZXMoKSk7ZWxzZSBpZihlLnR5cGU9PT1uLnBraS5vaWRzLm1lc3NhZ2VEaWdlc3QpdD1pLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0NURVRTVFJJTkcsITEsZS52YWx1ZS5ieXRlcygpKTtlbHNlIGlmKGUudHlwZT09PW4ucGtpLm9pZHMuc2lnbmluZ1RpbWUpe3ZhciByPW5ldyBEYXRlKCIxOTUwLTAxLTAxVDAwOjAwOjAwWiIpLG89bmV3IERhdGUoIjIwNTAtMDEtMDFUMDA6MDA6MDBaIiksYT1lLnZhbHVlO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpe3ZhciBzPURhdGUucGFyc2UoYSk7YT1pc05hTihzKT8xMz09PWEubGVuZ3RoP2kudXRjVGltZVRvRGF0ZShhKTppLmdlbmVyYWxpemVkVGltZVRvRGF0ZShhKTpuZXcgRGF0ZShzKX10PWE+PXImJmE8bz9pLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuVVRDVElNRSwhMSxpLmRhdGVUb1V0Y1RpbWUoYSkpOmkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5HRU5FUkFMSVpFRFRJTUUsITEsaS5kYXRlVG9HZW5lcmFsaXplZFRpbWUoYSkpfXJldHVybiBpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0RlcihlLnR5cGUpLmdldEJ5dGVzKCkpLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVQsITAsW3RdKV0pfWZ1bmN0aW9uIGYoZSx0LHIpe3ZhciBvPXt9O2lmKCFpLnZhbGlkYXRlKHQscixvLFtdKSl7dmFyIGE9bmV3IEVycm9yKCJDYW5ub3QgcmVhZCBQS0NTIzcgbWVzc2FnZS4gQVNOLjEgb2JqZWN0IGlzIG5vdCBhIHN1cHBvcnRlZCBQS0NTIzcgbWVzc2FnZS4iKTt0aHJvdyBhLmVycm9ycz1hLGF9aWYoaS5kZXJUb09pZChvLmNvbnRlbnRUeXBlKSE9PW4ucGtpLm9pZHMuZGF0YSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFBLQ1MjNyBtZXNzYWdlLiBPbmx5IHdyYXBwZWQgQ29udGVudFR5cGUgRGF0YSBzdXBwb3J0ZWQuIik7aWYoby5lbmNyeXB0ZWRDb250ZW50KXt2YXIgcz0iIjtpZihuLnV0aWwuaXNBcnJheShvLmVuY3J5cHRlZENvbnRlbnQpKWZvcih2YXIgdT0wO3U8by5lbmNyeXB0ZWRDb250ZW50Lmxlbmd0aDsrK3Upe2lmKG8uZW5jcnlwdGVkQ29udGVudFt1XS50eXBlIT09aS5UeXBlLk9DVEVUU1RSSU5HKXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIFBLQ1MjNyBtZXNzYWdlLCBleHBlY3RpbmcgZW5jcnlwdGVkIGNvbnRlbnQgY29uc3RydWN0ZWQgb2Ygb25seSBPQ1RFVCBTVFJJTkcgb2JqZWN0cy4iKTtzKz1vLmVuY3J5cHRlZENvbnRlbnRbdV0udmFsdWV9ZWxzZSBzPW8uZW5jcnlwdGVkQ29udGVudDtlLmVuY3J5cHRlZENvbnRlbnQ9e2FsZ29yaXRobTppLmRlclRvT2lkKG8uZW5jQWxnb3JpdGhtKSxwYXJhbWV0ZXI6bi51dGlsLmNyZWF0ZUJ1ZmZlcihvLmVuY1BhcmFtZXRlci52YWx1ZSksY29udGVudDpuLnV0aWwuY3JlYXRlQnVmZmVyKHMpfX1pZihvLmNvbnRlbnQpe3M9IiI7aWYobi51dGlsLmlzQXJyYXkoby5jb250ZW50KSlmb3IodT0wO3U8by5jb250ZW50Lmxlbmd0aDsrK3Upe2lmKG8uY29udGVudFt1XS50eXBlIT09aS5UeXBlLk9DVEVUU1RSSU5HKXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIFBLQ1MjNyBtZXNzYWdlLCBleHBlY3RpbmcgY29udGVudCBjb25zdHJ1Y3RlZCBvZiBvbmx5IE9DVEVUIFNUUklORyBvYmplY3RzLiIpO3MrPW8uY29udGVudFt1XS52YWx1ZX1lbHNlIHM9by5jb250ZW50O2UuY29udGVudD1uLnV0aWwuY3JlYXRlQnVmZmVyKHMpfXJldHVybiBlLnZlcnNpb249by52ZXJzaW9uLmNoYXJDb2RlQXQoMCksZS5yYXdDYXB0dXJlPW8sb31mdW5jdGlvbiBsKGUpe2lmKHZvaWQgMD09PWUuZW5jcnlwdGVkQ29udGVudC5rZXkpdGhyb3cgbmV3IEVycm9yKCJTeW1tZXRyaWMga2V5IG5vdCBhdmFpbGFibGUuIik7aWYodm9pZCAwPT09ZS5jb250ZW50KXt2YXIgdDtzd2l0Y2goZS5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSl7Y2FzZSBuLnBraS5vaWRzWyJhZXMxMjgtQ0JDIl06Y2FzZSBuLnBraS5vaWRzWyJhZXMxOTItQ0JDIl06Y2FzZSBuLnBraS5vaWRzWyJhZXMyNTYtQ0JDIl06dD1uLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKGUuZW5jcnlwdGVkQ29udGVudC5rZXkpO2JyZWFrO2Nhc2Ugbi5wa2kub2lkcy5kZXNDQkM6Y2FzZSBuLnBraS5vaWRzWyJkZXMtRURFMy1DQkMiXTp0PW4uZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoZS5lbmNyeXB0ZWRDb250ZW50LmtleSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN5bW1ldHJpYyBjaXBoZXIsIE9JRCAiK2UuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pfWlmKHQuc3RhcnQoZS5lbmNyeXB0ZWRDb250ZW50LnBhcmFtZXRlciksdC51cGRhdGUoZS5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpLCF0LmZpbmlzaCgpKXRocm93IG5ldyBFcnJvcigiU3ltbWV0cmljIGRlY3J5cHRpb24gZmFpbGVkLiIpO2UuY29udGVudD10Lm91dHB1dH19by5tZXNzYWdlRnJvbVBlbT1mdW5jdGlvbihlKXt2YXIgdD1uLnBlbS5kZWNvZGUoZSlbMF07aWYoIlBLQ1M3IiE9PXQudHlwZSl7dmFyIHI9bmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBQS0NTIzcgbWVzc2FnZSBmcm9tIFBFTTsgUEVNIGhlYWRlciB0eXBlIGlzIG5vdCAiUEtDUyM3Ii4nKTt0aHJvdyByLmhlYWRlclR5cGU9dC50eXBlLHJ9aWYodC5wcm9jVHlwZSYmIkVOQ1JZUFRFRCI9PT10LnByb2NUeXBlLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgY29udmVydCBQS0NTIzcgbWVzc2FnZSBmcm9tIFBFTTsgUEVNIGlzIGVuY3J5cHRlZC4iKTt2YXIgYT1pLmZyb21EZXIodC5ib2R5KTtyZXR1cm4gby5tZXNzYWdlRnJvbUFzbjEoYSl9LG8ubWVzc2FnZVRvUGVtPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e3R5cGU6IlBLQ1M3Iixib2R5OmkudG9EZXIoZS50b0FzbjEoKSkuZ2V0Qnl0ZXMoKX07cmV0dXJuIG4ucGVtLmVuY29kZShyLHttYXhsaW5lOnR9KX0sby5tZXNzYWdlRnJvbUFzbjE9ZnVuY3Rpb24oZSl7dmFyIHQ9e30scj1bXTtpZighaS52YWxpZGF0ZShlLG8uYXNuMS5jb250ZW50SW5mb1ZhbGlkYXRvcix0LHIpKXt2YXIgYT1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIFBLQ1MjNyBtZXNzYWdlLiBBU04uMSBvYmplY3QgaXMgbm90IGFuIFBLQ1MjNyBDb250ZW50SW5mby4iKTt0aHJvdyBhLmVycm9ycz1yLGF9dmFyIHMsdT1pLmRlclRvT2lkKHQuY29udGVudFR5cGUpO3N3aXRjaCh1KXtjYXNlIG4ucGtpLm9pZHMuZW52ZWxvcGVkRGF0YTpzPW8uY3JlYXRlRW52ZWxvcGVkRGF0YSgpO2JyZWFrO2Nhc2Ugbi5wa2kub2lkcy5lbmNyeXB0ZWREYXRhOnM9by5jcmVhdGVFbmNyeXB0ZWREYXRhKCk7YnJlYWs7Y2FzZSBuLnBraS5vaWRzLnNpZ25lZERhdGE6cz1vLmNyZWF0ZVNpZ25lZERhdGEoKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlYWQgUEtDUyM3IG1lc3NhZ2UuIENvbnRlbnRUeXBlIHdpdGggT0lEICIrdSsiIGlzIG5vdCAoeWV0KSBzdXBwb3J0ZWQuIil9cmV0dXJuIHMuZnJvbUFzbjEodC5jb250ZW50LnZhbHVlWzBdKSxzfSxvLmNyZWF0ZVNpZ25lZERhdGE9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiBlPXt0eXBlOm4ucGtpLm9pZHMuc2lnbmVkRGF0YSx2ZXJzaW9uOjEsY2VydGlmaWNhdGVzOltdLGNybHM6W10sc2lnbmVyczpbXSxkaWdlc3RBbGdvcml0aG1JZGVudGlmaWVyczpbXSxjb250ZW50SW5mbzpudWxsLHNpZ25lckluZm9zOltdLGZyb21Bc24xOmZ1bmN0aW9uKHQpe2lmKGYoZSx0LG8uYXNuMS5zaWduZWREYXRhVmFsaWRhdG9yKSxlLmNlcnRpZmljYXRlcz1bXSxlLmNybHM9W10sZS5kaWdlc3RBbGdvcml0aG1JZGVudGlmaWVycz1bXSxlLmNvbnRlbnRJbmZvPW51bGwsZS5zaWduZXJJbmZvcz1bXSxlLnJhd0NhcHR1cmUuY2VydGlmaWNhdGVzKWZvcih2YXIgcj1lLnJhd0NhcHR1cmUuY2VydGlmaWNhdGVzLnZhbHVlLGk9MDtpPHIubGVuZ3RoOysraSllLmNlcnRpZmljYXRlcy5wdXNoKG4ucGtpLmNlcnRpZmljYXRlRnJvbUFzbjEocltpXSkpfSx0b0FzbjE6ZnVuY3Rpb24oKXtlLmNvbnRlbnRJbmZvfHxlLnNpZ24oKTtmb3IodmFyIHQ9W10scj0wO3I8ZS5jZXJ0aWZpY2F0ZXMubGVuZ3RoOysrcil0LnB1c2gobi5wa2kuY2VydGlmaWNhdGVUb0FzbjEoZS5jZXJ0aWZpY2F0ZXNbcl0pKTt2YXIgbz1bXSxhPWkuY3JlYXRlKGkuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywwLCEwLFtpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5JTlRFR0VSLCExLGkuaW50ZWdlclRvRGVyKGUudmVyc2lvbikuZ2V0Qnl0ZXMoKSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLlNFVCwhMCxlLmRpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXJzKSxlLmNvbnRlbnRJbmZvXSldKTtyZXR1cm4gdC5sZW5ndGg+MCYmYS52YWx1ZVswXS52YWx1ZS5wdXNoKGkuY3JlYXRlKGkuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywwLCEwLHQpKSxvLmxlbmd0aD4wJiZhLnZhbHVlWzBdLnZhbHVlLnB1c2goaS5jcmVhdGUoaS5DbGFzcy5DT05URVhUX1NQRUNJRklDLDEsITAsbykpLGEudmFsdWVbMF0udmFsdWUucHVzaChpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VULCEwLGUuc2lnbmVySW5mb3MpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0RlcihlLnR5cGUpLmdldEJ5dGVzKCkpLGFdKX0sYWRkU2lnbmVyOmZ1bmN0aW9uKHQpe3ZhciByPXQuaXNzdWVyLGk9dC5zZXJpYWxOdW1iZXI7aWYodC5jZXJ0aWZpY2F0ZSl7dmFyIG89dC5jZXJ0aWZpY2F0ZTsic3RyaW5nIj09PXR5cGVvZiBvJiYobz1uLnBraS5jZXJ0aWZpY2F0ZUZyb21QZW0obykpLHI9by5pc3N1ZXIuYXR0cmlidXRlcyxpPW8uc2VyaWFsTnVtYmVyfXZhciBhPXQua2V5O2lmKCFhKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGFkZCBQS0NTIzcgc2lnbmVyOyBubyBwcml2YXRlIGtleSBzcGVjaWZpZWQuIik7InN0cmluZyI9PT10eXBlb2YgYSYmKGE9bi5wa2kucHJpdmF0ZUtleUZyb21QZW0oYSkpO3ZhciBzPXQuZGlnZXN0QWxnb3JpdGhtfHxuLnBraS5vaWRzLnNoYTE7c3dpdGNoKHMpe2Nhc2Ugbi5wa2kub2lkcy5zaGExOmNhc2Ugbi5wa2kub2lkcy5zaGEyNTY6Y2FzZSBuLnBraS5vaWRzLnNoYTM4NDpjYXNlIG4ucGtpLm9pZHMuc2hhNTEyOmNhc2Ugbi5wa2kub2lkcy5tZDU6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBhZGQgUEtDUyM3IHNpZ25lcjsgdW5rbm93biBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG06ICIrcyl9dmFyIHU9dC5hdXRoZW50aWNhdGVkQXR0cmlidXRlc3x8W107aWYodS5sZW5ndGg+MCl7Zm9yKHZhciBjPSExLGY9ITEsbD0wO2w8dS5sZW5ndGg7KytsKXt2YXIgaD11W2xdO2lmKGN8fGgudHlwZSE9PW4ucGtpLm9pZHMuY29udGVudFR5cGUpe2lmKGZ8fGgudHlwZSE9PW4ucGtpLm9pZHMubWVzc2FnZURpZ2VzdCk7ZWxzZSBpZihmPSEwLGMpYnJlYWt9ZWxzZSBpZihjPSEwLGYpYnJlYWt9aWYoIWN8fCFmKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMuIElmIHNpZ25lci5hdXRoZW50aWNhdGVkQXR0cmlidXRlcyBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBjb250YWluIGF0IGxlYXN0IHR3byBhdHRyaWJ1dGVzLCBQS0NTICM5IGNvbnRlbnQtdHlwZSBhbmQgUEtDUyAjOSBtZXNzYWdlLWRpZ2VzdC4iKX1lLnNpZ25lcnMucHVzaCh7a2V5OmEsdmVyc2lvbjoxLGlzc3VlcjpyLHNlcmlhbE51bWJlcjppLGRpZ2VzdEFsZ29yaXRobTpzLHNpZ25hdHVyZUFsZ29yaXRobTpuLnBraS5vaWRzLnJzYUVuY3J5cHRpb24sc2lnbmF0dXJlOm51bGwsYXV0aGVudGljYXRlZEF0dHJpYnV0ZXM6dSx1bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzOltdfSl9LHNpZ246ZnVuY3Rpb24odCl7dmFyIHI7KHQ9dHx8e30sIm9iamVjdCIhPT10eXBlb2YgZS5jb250ZW50fHxudWxsPT09ZS5jb250ZW50SW5mbykmJihlLmNvbnRlbnRJbmZvPWkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVFVRU5DRSwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9JRCwhMSxpLm9pZFRvRGVyKG4ucGtpLm9pZHMuZGF0YSkuZ2V0Qnl0ZXMoKSldKSwiY29udGVudCJpbiBlJiYoZS5jb250ZW50IGluc3RhbmNlb2Ygbi51dGlsLkJ5dGVCdWZmZXI/cj1lLmNvbnRlbnQuYnl0ZXMoKToic3RyaW5nIj09PXR5cGVvZiBlLmNvbnRlbnQmJihyPW4udXRpbC5lbmNvZGVVdGY4KGUuY29udGVudCkpLHQuZGV0YWNoZWQ/ZS5kZXRhY2hlZENvbnRlbnQ9aS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9DVEVUU1RSSU5HLCExLHIpOmUuY29udGVudEluZm8udmFsdWUucHVzaChpLmNyZWF0ZShpLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsMCwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9DVEVUU1RSSU5HLCExLHIpXSkpKSk7MCE9PWUuc2lnbmVycy5sZW5ndGgmJmZ1bmN0aW9uKHQpe3ZhciByO3I9ZS5kZXRhY2hlZENvbnRlbnQ/ZS5kZXRhY2hlZENvbnRlbnQ6KHI9ZS5jb250ZW50SW5mby52YWx1ZVsxXSkudmFsdWVbMF07aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3Qgc2lnbiBQS0NTIzcgbWVzc2FnZTsgdGhlcmUgaXMgbm8gY29udGVudCB0byBzaWduLiIpO3ZhciBvPWkuZGVyVG9PaWQoZS5jb250ZW50SW5mby52YWx1ZVswXS52YWx1ZSksYT1pLnRvRGVyKHIpO2Zvcih2YXIgcyBpbiBhLmdldEJ5dGUoKSxpLmdldEJlclZhbHVlTGVuZ3RoKGEpLGE9YS5nZXRCeXRlcygpLHQpdFtzXS5zdGFydCgpLnVwZGF0ZShhKTtmb3IodmFyIGY9bmV3IERhdGUsbD0wO2w8ZS5zaWduZXJzLmxlbmd0aDsrK2wpe3ZhciBoPWUuc2lnbmVyc1tsXTtpZigwPT09aC5hdXRoZW50aWNhdGVkQXR0cmlidXRlcy5sZW5ndGgpe2lmKG8hPT1uLnBraS5vaWRzLmRhdGEpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNpZ25lcjsgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgbXVzdCBiZSBwcmVzZW50IHdoZW4gdGhlIENvbnRlbnRJbmZvIGNvbnRlbnQgdHlwZSBpcyBub3QgUEtDUyM3IERhdGEuIil9ZWxzZXtoLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzQXNuMT1pLmNyZWF0ZShpLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsMCwhMCxbXSk7Zm9yKHZhciBwPWkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVQsITAsW10pLGQ9MDtkPGguYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoOysrZCl7dmFyIHk9aC5hdXRoZW50aWNhdGVkQXR0cmlidXRlc1tkXTt5LnR5cGU9PT1uLnBraS5vaWRzLm1lc3NhZ2VEaWdlc3Q/eS52YWx1ZT10W2guZGlnZXN0QWxnb3JpdGhtXS5kaWdlc3QoKTp5LnR5cGU9PT1uLnBraS5vaWRzLnNpZ25pbmdUaW1lJiYoeS52YWx1ZXx8KHkudmFsdWU9ZikpLHAudmFsdWUucHVzaChjKHkpKSxoLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzQXNuMS52YWx1ZS5wdXNoKGMoeSkpfWE9aS50b0RlcihwKS5nZXRCeXRlcygpLGgubWQuc3RhcnQoKS51cGRhdGUoYSl9aC5zaWduYXR1cmU9aC5rZXkuc2lnbihoLm1kLCJSU0FTU0EtUEtDUzEtVjFfNSIpfWUuc2lnbmVySW5mb3M9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0LnB1c2godShlW3JdKSk7cmV0dXJuIHR9KGUuc2lnbmVycyl9KGZ1bmN0aW9uKCl7Zm9yKHZhciB0PXt9LHI9MDtyPGUuc2lnbmVycy5sZW5ndGg7KytyKXt2YXIgbz1lLnNpZ25lcnNbcl0sYT1vLmRpZ2VzdEFsZ29yaXRobTthIGluIHR8fCh0W2FdPW4ubWRbbi5wa2kub2lkc1thXV0uY3JlYXRlKCkpLDA9PT1vLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzLmxlbmd0aD9vLm1kPXRbYV06by5tZD1uLm1kW24ucGtpLm9pZHNbYV1dLmNyZWF0ZSgpfWZvcih2YXIgYSBpbiBlLmRpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXJzPVtdLHQpZS5kaWdlc3RBbGdvcml0aG1JZGVudGlmaWVycy5wdXNoKGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVFVRU5DRSwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9JRCwhMSxpLm9pZFRvRGVyKGEpLmdldEJ5dGVzKCkpLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5OVUxMLCExLCIiKV0pKTtyZXR1cm4gdH0oKSl9LHZlcmlmeTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUEtDUyM3IHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gbm90IHlldCBpbXBsZW1lbnRlZC4iKX0sYWRkQ2VydGlmaWNhdGU6ZnVuY3Rpb24odCl7InN0cmluZyI9PT10eXBlb2YgdCYmKHQ9bi5wa2kuY2VydGlmaWNhdGVGcm9tUGVtKHQpKSxlLmNlcnRpZmljYXRlcy5wdXNoKHQpfSxhZGRDZXJ0aWZpY2F0ZVJldm9rYXRpb25MaXN0OmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiUEtDUyM3IENSTCBzdXBwb3J0IG5vdCB5ZXQgaW1wbGVtZW50ZWQuIil9fX0sby5jcmVhdGVFbmNyeXB0ZWREYXRhPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gZT17dHlwZTpuLnBraS5vaWRzLmVuY3J5cHRlZERhdGEsdmVyc2lvbjowLGVuY3J5cHRlZENvbnRlbnQ6e2FsZ29yaXRobTpuLnBraS5vaWRzWyJhZXMyNTYtQ0JDIl19LGZyb21Bc24xOmZ1bmN0aW9uKHQpe2YoZSx0LG8uYXNuMS5lbmNyeXB0ZWREYXRhVmFsaWRhdG9yKX0sZGVjcnlwdDpmdW5jdGlvbih0KXt2b2lkIDAhPT10JiYoZS5lbmNyeXB0ZWRDb250ZW50LmtleT10KSxsKGUpfX19LG8uY3JlYXRlRW52ZWxvcGVkRGF0YT1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIGU9e3R5cGU6bi5wa2kub2lkcy5lbnZlbG9wZWREYXRhLHZlcnNpb246MCxyZWNpcGllbnRzOltdLGVuY3J5cHRlZENvbnRlbnQ6e2FsZ29yaXRobTpuLnBraS5vaWRzWyJhZXMyNTYtQ0JDIl19LGZyb21Bc24xOmZ1bmN0aW9uKHQpe3ZhciByPWYoZSx0LG8uYXNuMS5lbnZlbG9wZWREYXRhVmFsaWRhdG9yKTtlLnJlY2lwaWVudHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0LnB1c2goYShlW3JdKSk7cmV0dXJuIHR9KHIucmVjaXBpZW50SW5mb3MudmFsdWUpfSx0b0FzbjE6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLlNFUVVFTkNFLCEwLFtpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0lELCExLGkub2lkVG9EZXIoZS50eXBlKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsMCwhMCxbaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLlNFUVVFTkNFLCEwLFtpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuSU5URUdFUiwhMSxpLmludGVnZXJUb0RlcihlLnZlcnNpb24pLmdldEJ5dGVzKCkpLGkuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5TRVQsITAscyhlLnJlY2lwaWVudHMpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsKHQ9ZS5lbmNyeXB0ZWRDb250ZW50LFtpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuT0lELCExLGkub2lkVG9EZXIobi5wa2kub2lkcy5kYXRhKS5nZXRCeXRlcygpKSxpLmNyZWF0ZShpLkNsYXNzLlVOSVZFUlNBTCxpLlR5cGUuU0VRVUVOQ0UsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PSUQsITEsaS5vaWRUb0Rlcih0LmFsZ29yaXRobSkuZ2V0Qnl0ZXMoKSksaS5jcmVhdGUoaS5DbGFzcy5VTklWRVJTQUwsaS5UeXBlLk9DVEVUU1RSSU5HLCExLHQucGFyYW1ldGVyLmdldEJ5dGVzKCkpXSksaS5jcmVhdGUoaS5DbGFzcy5DT05URVhUX1NQRUNJRklDLDAsITAsW2kuY3JlYXRlKGkuQ2xhc3MuVU5JVkVSU0FMLGkuVHlwZS5PQ1RFVFNUUklORywhMSx0LmNvbnRlbnQuZ2V0Qnl0ZXMoKSldKV0pKV0pXSldKTt2YXIgdH0sZmluZFJlY2lwaWVudDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5pc3N1ZXIuYXR0cmlidXRlcyxuPTA7bjxlLnJlY2lwaWVudHMubGVuZ3RoOysrbil7dmFyIGk9ZS5yZWNpcGllbnRzW25dLG89aS5pc3N1ZXI7aWYoaS5zZXJpYWxOdW1iZXI9PT10LnNlcmlhbE51bWJlciYmby5sZW5ndGg9PT1yLmxlbmd0aCl7Zm9yKHZhciBhPSEwLHM9MDtzPHIubGVuZ3RoOysrcylpZihvW3NdLnR5cGUhPT1yW3NdLnR5cGV8fG9bc10udmFsdWUhPT1yW3NdLnZhbHVlKXthPSExO2JyZWFrfWlmKGEpcmV0dXJuIGl9fXJldHVybiBudWxsfSxkZWNyeXB0OmZ1bmN0aW9uKHQscil7aWYodm9pZCAwPT09ZS5lbmNyeXB0ZWRDb250ZW50LmtleSYmdm9pZCAwIT09dCYmdm9pZCAwIT09cilzd2l0Y2godC5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSl7Y2FzZSBuLnBraS5vaWRzLnJzYUVuY3J5cHRpb246Y2FzZSBuLnBraS5vaWRzLmRlc0NCQzp2YXIgaT1yLmRlY3J5cHQodC5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpO2UuZW5jcnlwdGVkQ29udGVudC5rZXk9bi51dGlsLmNyZWF0ZUJ1ZmZlcihpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYXN5bW1ldHJpYyBjaXBoZXIsIE9JRCAiK3QuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pfWwoZSl9LGFkZFJlY2lwaWVudDpmdW5jdGlvbih0KXtlLnJlY2lwaWVudHMucHVzaCh7dmVyc2lvbjowLGlzc3Vlcjp0Lmlzc3Vlci5hdHRyaWJ1dGVzLHNlcmlhbE51bWJlcjp0LnNlcmlhbE51bWJlcixlbmNyeXB0ZWRDb250ZW50OnthbGdvcml0aG06bi5wa2kub2lkcy5yc2FFbmNyeXB0aW9uLGtleTp0LnB1YmxpY0tleX19KX0sZW5jcnlwdDpmdW5jdGlvbih0LHIpe2lmKHZvaWQgMD09PWUuZW5jcnlwdGVkQ29udGVudC5jb250ZW50KXt2YXIgaSxvLGE7c3dpdGNoKHI9cnx8ZS5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSx0PXR8fGUuZW5jcnlwdGVkQ29udGVudC5rZXkscil7Y2FzZSBuLnBraS5vaWRzWyJhZXMxMjgtQ0JDIl06aT0xNixvPTE2LGE9bi5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjticmVhaztjYXNlIG4ucGtpLm9pZHNbImFlczE5Mi1DQkMiXTppPTI0LG89MTYsYT1uLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyO2JyZWFrO2Nhc2Ugbi5wa2kub2lkc1siYWVzMjU2LUNCQyJdOmk9MzIsbz0xNixhPW4uYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7YnJlYWs7Y2FzZSBuLnBraS5vaWRzWyJkZXMtRURFMy1DQkMiXTppPTI0LG89OCxhPW4uZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN5bW1ldHJpYyBjaXBoZXIsIE9JRCAiK3IpfWlmKHZvaWQgMD09PXQpdD1uLnV0aWwuY3JlYXRlQnVmZmVyKG4ucmFuZG9tLmdldEJ5dGVzKGkpKTtlbHNlIGlmKHQubGVuZ3RoKCkhPWkpdGhyb3cgbmV3IEVycm9yKCJTeW1tZXRyaWMga2V5IGhhcyB3cm9uZyBsZW5ndGg7IGdvdCAiK3QubGVuZ3RoKCkrIiBieXRlcywgZXhwZWN0ZWQgIitpKyIuIik7ZS5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobT1yLGUuZW5jcnlwdGVkQ29udGVudC5rZXk9dCxlLmVuY3J5cHRlZENvbnRlbnQucGFyYW1ldGVyPW4udXRpbC5jcmVhdGVCdWZmZXIobi5yYW5kb20uZ2V0Qnl0ZXMobykpO3ZhciBzPWEodCk7aWYocy5zdGFydChlLmVuY3J5cHRlZENvbnRlbnQucGFyYW1ldGVyLmNvcHkoKSkscy51cGRhdGUoZS5jb250ZW50KSwhcy5maW5pc2goKSl0aHJvdyBuZXcgRXJyb3IoIlN5bW1ldHJpYyBlbmNyeXB0aW9uIGZhaWxlZC4iKTtlLmVuY3J5cHRlZENvbnRlbnQuY29udGVudD1zLm91dHB1dH1mb3IodmFyIHU9MDt1PGUucmVjaXBpZW50cy5sZW5ndGg7Kyt1KXt2YXIgYz1lLnJlY2lwaWVudHNbdV07aWYodm9pZCAwPT09Yy5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpc3dpdGNoKGMuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pe2Nhc2Ugbi5wa2kub2lkcy5yc2FFbmNyeXB0aW9uOmMuZW5jcnlwdGVkQ29udGVudC5jb250ZW50PWMuZW5jcnlwdGVkQ29udGVudC5rZXkuZW5jcnlwdChlLmVuY3J5cHRlZENvbnRlbnQua2V5LmRhdGEpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBhc3ltbWV0cmljIGNpcGhlciwgT0lEICIrYy5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSl9fX19fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cig4OSkscigxMzQpLHIoMjIyKSxyKDEzNSkscigxMCk7dmFyIGk9ZS5leHBvcnRzPW4uc3NoPW4uc3NofHx7fTtmdW5jdGlvbiBvKGUsdCl7dmFyIHI9dC50b1N0cmluZygxNik7clswXT49IjgiJiYocj0iMDAiK3IpO3ZhciBpPW4udXRpbC5oZXhUb0J5dGVzKHIpO2UucHV0SW50MzIoaS5sZW5ndGgpLGUucHV0Qnl0ZXMoaSl9ZnVuY3Rpb24gYShlLHQpe2UucHV0SW50MzIodC5sZW5ndGgpLGUucHV0U3RyaW5nKHQpfWZ1bmN0aW9uIHMoKXtmb3IodmFyIGU9bi5tZC5zaGExLmNyZWF0ZSgpLHQ9YXJndW1lbnRzLmxlbmd0aCxyPTA7cjx0OysrcillLnVwZGF0ZShhcmd1bWVudHNbcl0pO3JldHVybiBlLmRpZ2VzdCgpfWkucHJpdmF0ZUtleVRvUHV0dHk9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPSIiPT09KHQ9dHx8IiIpPyJub25lIjoiYWVzMjU2LWNiYyIsdT0iUHVUVFktVXNlci1LZXktRmlsZS0yOiBzc2gtcnNhXHJcbiI7dSs9IkVuY3J5cHRpb246ICIraSsiXHJcbiIsdSs9IkNvbW1lbnQ6ICIrKHI9cnx8IiIpKyJcclxuIjt2YXIgYz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7YShjLCJzc2gtcnNhIiksbyhjLGUuZSksbyhjLGUubik7dmFyIGY9bi51dGlsLmVuY29kZTY0KGMuYnl0ZXMoKSw2NCksbD1NYXRoLmZsb29yKGYubGVuZ3RoLzY2KSsxO3UrPSJQdWJsaWMtTGluZXM6ICIrbCsiXHJcbiIsdSs9Zjt2YXIgaCxwPW4udXRpbC5jcmVhdGVCdWZmZXIoKTtpZihvKHAsZS5kKSxvKHAsZS5wKSxvKHAsZS5xKSxvKHAsZS5xSW52KSx0KXt2YXIgZD1wLmxlbmd0aCgpKzE2LTE7ZC09ZCUxNjt2YXIgeT1zKHAuYnl0ZXMoKSk7eS50cnVuY2F0ZSh5Lmxlbmd0aCgpLWQrcC5sZW5ndGgoKSkscC5wdXRCdWZmZXIoeSk7dmFyIGc9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2cucHV0QnVmZmVyKHMoIlwwXDBcMFwwIix0KSksZy5wdXRCdWZmZXIocygiXDBcMFwwXHgwMSIsdCkpO3ZhciB2PW4uYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXIoZy50cnVuY2F0ZSg4KSwiQ0JDIik7di5zdGFydChuLnV0aWwuY3JlYXRlQnVmZmVyKCkuZmlsbFdpdGhCeXRlKDAsMTYpKSx2LnVwZGF0ZShwLmNvcHkoKSksdi5maW5pc2goKTt2YXIgbT12Lm91dHB1dDttLnRydW5jYXRlKDE2KSxoPW4udXRpbC5lbmNvZGU2NChtLmJ5dGVzKCksNjQpfWVsc2UgaD1uLnV0aWwuZW5jb2RlNjQocC5ieXRlcygpLDY0KTt1Kz0iXHJcblByaXZhdGUtTGluZXM6ICIrKGw9TWF0aC5mbG9vcihoLmxlbmd0aC82NikrMSkrIlxyXG4iLHUrPWg7dmFyIGI9cygicHV0dHktcHJpdmF0ZS1rZXktZmlsZS1tYWMta2V5Iix0KSxfPW4udXRpbC5jcmVhdGVCdWZmZXIoKTthKF8sInNzaC1yc2EiKSxhKF8saSksYShfLHIpLF8ucHV0SW50MzIoYy5sZW5ndGgoKSksXy5wdXRCdWZmZXIoYyksXy5wdXRJbnQzMihwLmxlbmd0aCgpKSxfLnB1dEJ1ZmZlcihwKTt2YXIgUz1uLmhtYWMuY3JlYXRlKCk7cmV0dXJuIFMuc3RhcnQoInNoYTEiLGIpLFMudXBkYXRlKF8uYnl0ZXMoKSksdSs9IlxyXG5Qcml2YXRlLU1BQzogIitTLmRpZ2VzdCgpLnRvSGV4KCkrIlxyXG4ifSxpLnB1YmxpY0tleVRvT3BlblNTSD1mdW5jdGlvbihlLHQpe3Q9dHx8IiI7dmFyIHI9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBhKHIsInNzaC1yc2EiKSxvKHIsZS5lKSxvKHIsZS5uKSwic3NoLXJzYSAiK24udXRpbC5lbmNvZGU2NChyLmJ5dGVzKCkpKyIgIit0fSxpLnByaXZhdGVLZXlUb09wZW5TU0g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9uLnBraS5lbmNyeXB0UnNhUHJpdmF0ZUtleShlLHQse2xlZ2FjeTohMCxhbGdvcml0aG06ImFlczEyOCJ9KTpuLnBraS5wcml2YXRlS2V5VG9QZW0oZSl9LGkuZ2V0UHVibGljS2V5RmluZ2VycHJpbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj0odD10fHx7fSkubWR8fG4ubWQubWQ1LmNyZWF0ZSgpLGk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpO2EoaSwic3NoLXJzYSIpLG8oaSxlLmUpLG8oaSxlLm4pLHIuc3RhcnQoKSxyLnVwZGF0ZShpLmdldEJ5dGVzKCkpO3ZhciBzPXIuZGlnZXN0KCk7aWYoImhleCI9PT10LmVuY29kaW5nKXt2YXIgdT1zLnRvSGV4KCk7cmV0dXJuIHQuZGVsaW1pdGVyP3UubWF0Y2goLy57Mn0vZykuam9pbih0LmRlbGltaXRlcik6dX1pZigiYmluYXJ5Ij09PXQuZW5jb2RpbmcpcmV0dXJuIHMuZ2V0Qnl0ZXMoKTtpZih0LmVuY29kaW5nKXRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZyAiJyt0LmVuY29kaW5nKyciLicpO3JldHVybiBzfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNik7cigzNTYpLHIoMzU4KSxyKDEwKTt2YXIgaT0iZm9yZ2UudGFzayIsbz17fSxhPTA7bi5kZWJ1Zy5zZXQoaSwidGFza3MiLG8pO3ZhciBzPXt9O24uZGVidWcuc2V0KGksInF1ZXVlcyIscyk7dmFyIHU9InJlYWR5IixjPSJydW5uaW5nIixmPSJibG9ja2VkIixsPSJzbGVlcGluZyIsaD0iZG9uZSIscD0iZXJyb3IiLGQ9e3JlYWR5Ont9fTtkLnJlYWR5LnN0b3A9dSxkLnJlYWR5LnN0YXJ0PWMsZC5yZWFkeS5jYW5jZWw9aCxkLnJlYWR5LmZhaWw9cCxkLnJ1bm5pbmc9e30sZC5ydW5uaW5nLnN0b3A9dSxkLnJ1bm5pbmcuc3RhcnQ9YyxkLnJ1bm5pbmcuYmxvY2s9ZixkLnJ1bm5pbmcudW5ibG9jaz1jLGQucnVubmluZy5zbGVlcD1sLGQucnVubmluZy53YWtldXA9YyxkLnJ1bm5pbmcuY2FuY2VsPWgsZC5ydW5uaW5nLmZhaWw9cCxkLmJsb2NrZWQ9e30sZC5ibG9ja2VkLnN0b3A9ZixkLmJsb2NrZWQuc3RhcnQ9ZixkLmJsb2NrZWQuYmxvY2s9ZixkLmJsb2NrZWQudW5ibG9jaz1mLGQuYmxvY2tlZC5zbGVlcD1mLGQuYmxvY2tlZC53YWtldXA9ZixkLmJsb2NrZWQuY2FuY2VsPWgsZC5ibG9ja2VkLmZhaWw9cCxkLnNsZWVwaW5nPXt9LGQuc2xlZXBpbmcuc3RvcD1sLGQuc2xlZXBpbmcuc3RhcnQ9bCxkLnNsZWVwaW5nLmJsb2NrPWwsZC5zbGVlcGluZy51bmJsb2NrPWwsZC5zbGVlcGluZy5zbGVlcD1sLGQuc2xlZXBpbmcud2FrZXVwPWwsZC5zbGVlcGluZy5jYW5jZWw9aCxkLnNsZWVwaW5nLmZhaWw9cCxkLmRvbmU9e30sZC5kb25lLnN0b3A9aCxkLmRvbmUuc3RhcnQ9aCxkLmRvbmUuYmxvY2s9aCxkLmRvbmUudW5ibG9jaz1oLGQuZG9uZS5zbGVlcD1oLGQuZG9uZS53YWtldXA9aCxkLmRvbmUuY2FuY2VsPWgsZC5kb25lLmZhaWw9cCxkLmVycm9yPXt9LGQuZXJyb3Iuc3RvcD1wLGQuZXJyb3Iuc3RhcnQ9cCxkLmVycm9yLmJsb2NrPXAsZC5lcnJvci51bmJsb2NrPXAsZC5lcnJvci5zbGVlcD1wLGQuZXJyb3Iud2FrZXVwPXAsZC5lcnJvci5jYW5jZWw9cCxkLmVycm9yLmZhaWw9cDt2YXIgeT1mdW5jdGlvbihlKXt0aGlzLmlkPS0xLHRoaXMubmFtZT1lLm5hbWV8fCI/Iix0aGlzLnBhcmVudD1lLnBhcmVudHx8bnVsbCx0aGlzLnJ1bj1lLnJ1bix0aGlzLnN1YnRhc2tzPVtdLHRoaXMuZXJyb3I9ITEsdGhpcy5zdGF0ZT11LHRoaXMuYmxvY2tzPTAsdGhpcy50aW1lb3V0SWQ9bnVsbCx0aGlzLnN3YXBUaW1lPW51bGwsdGhpcy51c2VyRGF0YT1udWxsLHRoaXMuaWQ9YSsrLG9bdGhpcy5pZF09dGhpc307eS5wcm90b3R5cGUuZGVidWc9ZnVuY3Rpb24oZSl7ZT1lfHwiIixuLmxvZy5kZWJ1ZyhpLGUsIlslc11bJXNdIHRhc2s6Iix0aGlzLmlkLHRoaXMubmFtZSx0aGlzLCJzdWJ0YXNrczoiLHRoaXMuc3VidGFza3MubGVuZ3RoLCJxdWV1ZToiLHMpfSx5LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKGUsdCl7ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiYodD1lLGU9dGhpcy5uYW1lKTt2YXIgcj1uZXcgeSh7cnVuOnQsbmFtZTplLHBhcmVudDp0aGlzfSk7cmV0dXJuIHIuc3RhdGU9YyxyLnR5cGU9dGhpcy50eXBlLHIuc3VjY2Vzc0NhbGxiYWNrPXRoaXMuc3VjY2Vzc0NhbGxiYWNrfHxudWxsLHIuZmFpbHVyZUNhbGxiYWNrPXRoaXMuZmFpbHVyZUNhbGxiYWNrfHxudWxsLHRoaXMuc3VidGFza3MucHVzaChyKSx0aGlzfSx5LnByb3RvdHlwZS5wYXJhbGxlbD1mdW5jdGlvbihlLHQpe3JldHVybiBuLnV0aWwuaXNBcnJheShlKSYmKHQ9ZSxlPXRoaXMubmFtZSksdGhpcy5uZXh0KGUsZnVuY3Rpb24ocil7dmFyIGk9cjtpLmJsb2NrKHQubGVuZ3RoKTtmb3IodmFyIG89ZnVuY3Rpb24oZSxyKXtuLnRhc2suc3RhcnQoe3R5cGU6ZSxydW46ZnVuY3Rpb24oZSl7dFtyXShlKX0sc3VjY2VzczpmdW5jdGlvbihlKXtpLnVuYmxvY2soKX0sZmFpbHVyZTpmdW5jdGlvbihlKXtpLnVuYmxvY2soKX19KX0sYT0wO2E8dC5sZW5ndGg7YSsrKXtvKGUrIl9fcGFyYWxsZWwtIityLmlkKyItIithLGEpfX0pfSx5LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT1kW3RoaXMuc3RhdGVdLnN0b3B9LHkucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5lcnJvcj0hMSx0aGlzLnN0YXRlPWRbdGhpcy5zdGF0ZV0uc3RhcnQsdGhpcy5zdGF0ZT09PWMmJih0aGlzLnN0YXJ0PW5ldyBEYXRlLHRoaXMucnVuKHRoaXMpLGcodGhpcywwKSl9LHkucHJvdG90eXBlLmJsb2NrPWZ1bmN0aW9uKGUpe2U9InVuZGVmaW5lZCI9PT10eXBlb2YgZT8xOmUsdGhpcy5ibG9ja3MrPWUsdGhpcy5ibG9ja3M+MCYmKHRoaXMuc3RhdGU9ZFt0aGlzLnN0YXRlXS5ibG9jayl9LHkucHJvdG90eXBlLnVuYmxvY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9InVuZGVmaW5lZCI9PT10eXBlb2YgZT8xOmUsdGhpcy5ibG9ja3MtPWUsMD09PXRoaXMuYmxvY2tzJiZ0aGlzLnN0YXRlIT09aCYmKHRoaXMuc3RhdGU9YyxnKHRoaXMsMCkpLHRoaXMuYmxvY2tzfSx5LnByb3RvdHlwZS5zbGVlcD1mdW5jdGlvbihlKXtlPSJ1bmRlZmluZWQiPT09dHlwZW9mIGU/MDplLHRoaXMuc3RhdGU9ZFt0aGlzLnN0YXRlXS5zbGVlcDt2YXIgdD10aGlzO3RoaXMudGltZW91dElkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnRpbWVvdXRJZD1udWxsLHQuc3RhdGU9YyxnKHQsMCl9LGUpfSx5LnByb3RvdHlwZS53YWl0PWZ1bmN0aW9uKGUpe2Uud2FpdCh0aGlzKX0seS5wcm90b3R5cGUud2FrZXVwPWZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT09PWwmJihjYW5jZWxUaW1lb3V0KHRoaXMudGltZW91dElkKSx0aGlzLnRpbWVvdXRJZD1udWxsLHRoaXMuc3RhdGU9YyxnKHRoaXMsMCkpfSx5LnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXt0aGlzLnN0YXRlPWRbdGhpcy5zdGF0ZV0uY2FuY2VsLHRoaXMucGVybWl0c05lZWRlZD0wLG51bGwhPT10aGlzLnRpbWVvdXRJZCYmKGNhbmNlbFRpbWVvdXQodGhpcy50aW1lb3V0SWQpLHRoaXMudGltZW91dElkPW51bGwpLHRoaXMuc3VidGFza3M9W119LHkucHJvdG90eXBlLmZhaWw9ZnVuY3Rpb24oZSl7aWYodGhpcy5lcnJvcj0hMCw="
}