3NAxHUEaM6RAG7rVDPL9L6DFZWkrqFtY98t · data · 2.7c767379.chunk.js_22
{
    "2.7c767379.chunk.js_22": "base64:LDIsNjIsMzAsLTIsNjQsOTYsMl07dmFyIHk9dFswXSxnPXRbMV07eV49KHA9MjUyNjQ1MTM1Jih5Pj4+NF5nKSk8PDQseV49KHA9NjU1MzUmKHk+Pj4xNl4oZ149cCkpKTw8MTYseV49cD04NTg5OTM0NTkmKChnXj1wKT4+PjJeeSkseV49cD0xNjcxMTkzNSYoKGdePXA8PDIpPj4+OF55KSx5PSh5Xj0ocD0xNDMxNjU1NzY1Jih5Pj4+MV4oZ149cDw8OCkpKTw8MSk8PDF8eT4+PjMxLGc9KGdePXApPDwxfGc+Pj4zMTtmb3IodmFyIHY9MDt2PGQ7dis9Myl7Zm9yKHZhciBtPWlbdisxXSxiPWlbdisyXSxfPWlbdl07XyE9bTtfKz1iKXt2YXIgUz1nXmVbX10sRT0oZz4+PjR8Zzw8MjgpXmVbXysxXTtwPXkseT1nLGc9cF4oYVtTPj4+MjQmNjNdfHVbUz4+PjE2JjYzXXxmW1M+Pj44JjYzXXxoWzYzJlNdfG9bRT4+PjI0JjYzXXxzW0U+Pj4xNiY2M118Y1tFPj4+OCY2M118bFs2MyZFXSl9cD15LHk9ZyxnPXB9Zz1nPj4+MXxnPDwzMSxnXj1wPTE0MzE2NTU3NjUmKCh5PXk+Pj4xfHk8PDMxKT4+PjFeZyksZ149KHA9MTY3MTE5MzUmKGc+Pj44Xih5Xj1wPDwxKSkpPDw4LGdePShwPTg1ODk5MzQ1OSYoZz4+PjJeKHlePXApKSk8PDIsZ149cD02NTUzNSYoKHlePXApPj4+MTZeZyksZ149cD0yNTI2NDUxMzUmKCh5Xj1wPDwxNik+Pj40XmcpLHlePXA8PDQsclswXT15LHJbMV09Z31mdW5jdGlvbiBkKGUpe3ZhciB0LHI9IkRFUy0iKygoZT1lfHx7fSkubW9kZXx8IkNCQyIpLnRvVXBwZXJDYXNlKCksaT0odD1lLmRlY3J5cHQ/bi5jaXBoZXIuY3JlYXRlRGVjaXBoZXIocixlLmtleSk6bi5jaXBoZXIuY3JlYXRlQ2lwaGVyKHIsZS5rZXkpKS5zdGFydDtyZXR1cm4gdC5zdGFydD1mdW5jdGlvbihlLHIpe3ZhciBvPW51bGw7ciBpbnN0YW5jZW9mIG4udXRpbC5CeXRlQnVmZmVyJiYobz1yLHI9e30pLChyPXJ8fHt9KS5vdXRwdXQ9byxyLml2PWUsaS5jYWxsKHQscil9LHR9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtpZihyKDY1KSxyKDE2NCkscig5MCkscigzNTEpLHIoMzUyKSxyKDUyKSxyKDEwKSwidW5kZWZpbmVkIj09PXR5cGVvZiBpKXZhciBpPW4uanNibi5CaWdJbnRlZ2VyO3ZhciBvPW4udXRpbC5pc05vZGVqcz9yKDIyNCk6bnVsbCxhPW4uYXNuMSxzPW4udXRpbDtuLnBraT1uLnBraXx8e30sZS5leHBvcnRzPW4ucGtpLnJzYT1uLnJzYT1uLnJzYXx8e307dmFyIHU9bi5wa2ksYz1bNiw0LDIsNCwyLDQsNiwyXSxmPXtuYW1lOiJQcml2YXRlS2V5SW5mbyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJQcml2YXRlS2V5SW5mby52ZXJzaW9uIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlWZXJzaW9uIn0se25hbWU6IlByaXZhdGVLZXlJbmZvLnByaXZhdGVLZXlBbGdvcml0aG0iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5T2lkIn1dfSx7bmFtZToiUHJpdmF0ZUtleUluZm8iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLk9DVEVUU1RSSU5HLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXkifV19LGw9e25hbWU6IlJTQVByaXZhdGVLZXkiLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiUlNBUHJpdmF0ZUtleS52ZXJzaW9uIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlWZXJzaW9uIn0se25hbWU6IlJTQVByaXZhdGVLZXkubW9kdWx1cyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5TW9kdWx1cyJ9LHtuYW1lOiJSU0FQcml2YXRlS2V5LnB1YmxpY0V4cG9uZW50Iix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlQdWJsaWNFeHBvbmVudCJ9LHtuYW1lOiJSU0FQcml2YXRlS2V5LnByaXZhdGVFeHBvbmVudCIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5UHJpdmF0ZUV4cG9uZW50In0se25hbWU6IlJTQVByaXZhdGVLZXkucHJpbWUxIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlQcmltZTEifSx7bmFtZToiUlNBUHJpdmF0ZUtleS5wcmltZTIiLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToicHJpdmF0ZUtleVByaW1lMiJ9LHtuYW1lOiJSU0FQcml2YXRlS2V5LmV4cG9uZW50MSIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5RXhwb25lbnQxIn0se25hbWU6IlJTQVByaXZhdGVLZXkuZXhwb25lbnQyIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlFeHBvbmVudDIifSx7bmFtZToiUlNBUHJpdmF0ZUtleS5jb2VmZmljaWVudCIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5Q29lZmZpY2llbnQifV19LGg9e25hbWU6IlJTQVB1YmxpY0tleSIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJSU0FQdWJsaWNLZXkubW9kdWx1cyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwdWJsaWNLZXlNb2R1bHVzIn0se25hbWU6IlJTQVB1YmxpY0tleS5leHBvbmVudCIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwdWJsaWNLZXlFeHBvbmVudCJ9XX0scD1uLnBraS5yc2EucHVibGljS2V5VmFsaWRhdG9yPXtuYW1lOiJTdWJqZWN0UHVibGljS2V5SW5mbyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsY2FwdHVyZUFzbjE6InN1YmplY3RQdWJsaWNLZXlJbmZvIix2YWx1ZTpbe25hbWU6IlN1YmplY3RQdWJsaWNLZXlJbmZvLkFsZ29yaXRobUlkZW50aWZpZXIiLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwdWJsaWNLZXlPaWQifV19LHtuYW1lOiJTdWJqZWN0UHVibGljS2V5SW5mby5zdWJqZWN0UHVibGljS2V5Iix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5CSVRTVFJJTkcsY29uc3RydWN0ZWQ6ITEsdmFsdWU6W3tuYW1lOiJTdWJqZWN0UHVibGljS2V5SW5mby5zdWJqZWN0UHVibGljS2V5LlJTQVB1YmxpY0tleSIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsb3B0aW9uYWw6ITAsY2FwdHVyZUFzbjE6InJzYVB1YmxpY0tleSJ9XX1dfSxkPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCEoZS5hbGdvcml0aG0gaW4gdS5vaWRzKSl7dmFyIHI9bmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobS4iKTt0aHJvdyByLmFsZ29yaXRobT1lLmFsZ29yaXRobSxyfXQ9dS5vaWRzW2UuYWxnb3JpdGhtXTt2YXIgbj1hLm9pZFRvRGVyKHQpLmdldEJ5dGVzKCksaT1hLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuU0VRVUVOQ0UsITAsW10pLG89YS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLlNFUVVFTkNFLCEwLFtdKTtvLnZhbHVlLnB1c2goYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk9JRCwhMSxuKSksby52YWx1ZS5wdXNoKGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5OVUxMLCExLCIiKSk7dmFyIHM9YS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk9DVEVUU1RSSU5HLCExLGUuZGlnZXN0KCkuZ2V0Qnl0ZXMoKSk7cmV0dXJuIGkudmFsdWUucHVzaChvKSxpLnZhbHVlLnB1c2gocyksYS50b0RlcihpKS5nZXRCeXRlcygpfSx5PWZ1bmN0aW9uKGUsdCxyKXtpZihyKXJldHVybiBlLm1vZFBvdyh0LmUsdC5uKTtpZighdC5wfHwhdC5xKXJldHVybiBlLm1vZFBvdyh0LmQsdC5uKTt2YXIgbzt0LmRQfHwodC5kUD10LmQubW9kKHQucC5zdWJ0cmFjdChpLk9ORSkpKSx0LmRRfHwodC5kUT10LmQubW9kKHQucS5zdWJ0cmFjdChpLk9ORSkpKSx0LnFJbnZ8fCh0LnFJbnY9dC5xLm1vZEludmVyc2UodC5wKSk7ZG97bz1uZXcgaShuLnV0aWwuYnl0ZXNUb0hleChuLnJhbmRvbS5nZXRCeXRlcyh0Lm4uYml0TGVuZ3RoKCkvOCkpLDE2KX13aGlsZShvLmNvbXBhcmVUbyh0Lm4pPj0wfHwhby5nY2QodC5uKS5lcXVhbHMoaS5PTkUpKTtmb3IodmFyIGE9KGU9ZS5tdWx0aXBseShvLm1vZFBvdyh0LmUsdC5uKSkubW9kKHQubikpLm1vZCh0LnApLm1vZFBvdyh0LmRQLHQucCkscz1lLm1vZCh0LnEpLm1vZFBvdyh0LmRRLHQucSk7YS5jb21wYXJlVG8ocyk8MDspYT1hLmFkZCh0LnApO3ZhciB1PWEuc3VidHJhY3QocykubXVsdGlwbHkodC5xSW52KS5tb2QodC5wKS5tdWx0aXBseSh0LnEpLmFkZChzKTtyZXR1cm4gdT11Lm11bHRpcGx5KG8ubW9kSW52ZXJzZSh0Lm4pKS5tb2QodC5uKX07ZnVuY3Rpb24gZyhlLHQscil7dmFyIGk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLG89TWF0aC5jZWlsKHQubi5iaXRMZW5ndGgoKS84KTtpZihlLmxlbmd0aD5vLTExKXt2YXIgYT1uZXcgRXJyb3IoIk1lc3NhZ2UgaXMgdG9vIGxvbmcgZm9yIFBLQ1MjMSB2MS41IHBhZGRpbmcuIik7dGhyb3cgYS5sZW5ndGg9ZS5sZW5ndGgsYS5tYXg9by0xMSxhfWkucHV0Qnl0ZSgwKSxpLnB1dEJ5dGUocik7dmFyIHMsdT1vLTMtZS5sZW5ndGg7aWYoMD09PXJ8fDE9PT1yKXtzPTA9PT1yPzA6MjU1O2Zvcih2YXIgYz0wO2M8dTsrK2MpaS5wdXRCeXRlKHMpfWVsc2UgZm9yKDt1PjA7KXt2YXIgZj0wLGw9bi5yYW5kb20uZ2V0Qnl0ZXModSk7Zm9yKGM9MDtjPHU7KytjKTA9PT0ocz1sLmNoYXJDb2RlQXQoYykpPysrZjppLnB1dEJ5dGUocyk7dT1mfXJldHVybiBpLnB1dEJ5dGUoMCksaS5wdXRCeXRlcyhlKSxpfWZ1bmN0aW9uIHYoZSx0LHIsaSl7dmFyIG89TWF0aC5jZWlsKHQubi5iaXRMZW5ndGgoKS84KSxhPW4udXRpbC5jcmVhdGVCdWZmZXIoZSkscz1hLmdldEJ5dGUoKSx1PWEuZ2V0Qnl0ZSgpO2lmKDAhPT1zfHxyJiYwIT09dSYmMSE9PXV8fCFyJiYyIT11fHxyJiYwPT09dSYmInVuZGVmaW5lZCI9PT10eXBlb2YgaSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gYmxvY2sgaXMgaW52YWxpZC4iKTt2YXIgYz0wO2lmKDA9PT11KXtjPW8tMy1pO2Zvcih2YXIgZj0wO2Y8YzsrK2YpaWYoMCE9PWEuZ2V0Qnl0ZSgpKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbiBibG9jayBpcyBpbnZhbGlkLiIpfWVsc2UgaWYoMT09PXUpZm9yKGM9MDthLmxlbmd0aCgpPjE7KXtpZigyNTUhPT1hLmdldEJ5dGUoKSl7LS1hLnJlYWQ7YnJlYWt9KytjfWVsc2UgaWYoMj09PXUpZm9yKGM9MDthLmxlbmd0aCgpPjE7KXtpZigwPT09YS5nZXRCeXRlKCkpey0tYS5yZWFkO2JyZWFrfSsrY31pZigwIT09YS5nZXRCeXRlKCl8fGMhPT1vLTMtYS5sZW5ndGgoKSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gYmxvY2sgaXMgaW52YWxpZC4iKTtyZXR1cm4gYS5nZXRCeXRlcygpfWZ1bmN0aW9uIG0oZSl7dmFyIHQ9ZS50b1N0cmluZygxNik7dFswXT49IjgiJiYodD0iMDAiK3QpO3ZhciByPW4udXRpbC5oZXhUb0J5dGVzKHQpO3JldHVybiByLmxlbmd0aD4xJiYoMD09PXIuY2hhckNvZGVBdCgwKSYmMD09PSgxMjgmci5jaGFyQ29kZUF0KDEpKXx8MjU1PT09ci5jaGFyQ29kZUF0KDApJiYxMjg9PT0oMTI4JnIuY2hhckNvZGVBdCgxKSkpP3Iuc3Vic3RyKDEpOnJ9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZTw9MTAwPzI3OmU8PTE1MD8xODplPD0yMDA/MTU6ZTw9MjUwPzEyOmU8PTMwMD85OmU8PTM1MD84OmU8PTQwMD83OmU8PTUwMD82OmU8PTYwMD81OmU8PTgwMD80OmU8PTEyNTA/MzoyfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIG4udXRpbC5pc05vZGVqcyYmImZ1bmN0aW9uIj09PXR5cGVvZiBvW2VdfWZ1bmN0aW9uIFMoZSl7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2Ygcy5nbG9iYWxTY29wZSYmIm9iamVjdCI9PT10eXBlb2Ygcy5nbG9iYWxTY29wZS5jcnlwdG8mJiJvYmplY3QiPT09dHlwZW9mIHMuZ2xvYmFsU2NvcGUuY3J5cHRvLnN1YnRsZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLmNyeXB0by5zdWJ0bGVbZV19ZnVuY3Rpb24gRShlKXtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBzLmdsb2JhbFNjb3BlJiYib2JqZWN0Ij09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLm1zQ3J5cHRvJiYib2JqZWN0Ij09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLm1zQ3J5cHRvLnN1YnRsZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLm1zQ3J5cHRvLnN1YnRsZVtlXX1mdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD1uLnV0aWwuaGV4VG9CeXRlcyhlLnRvU3RyaW5nKDE2KSkscj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksaT0wO2k8dC5sZW5ndGg7KytpKXJbaV09dC5jaGFyQ29kZUF0KGkpO3JldHVybiByfXUucnNhLmVuY3J5cHQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvLGE9cixzPU1hdGguY2VpbCh0Lm4uYml0TGVuZ3RoKCkvOCk7ITEhPT1yJiYhMCE9PXI/KGE9Mj09PXIsbz1nKGUsdCxyKSk6KG89bi51dGlsLmNyZWF0ZUJ1ZmZlcigpKS5wdXRCeXRlcyhlKTtmb3IodmFyIHU9bmV3IGkoby50b0hleCgpLDE2KSxjPXkodSx0LGEpLnRvU3RyaW5nKDE2KSxmPW4udXRpbC5jcmVhdGVCdWZmZXIoKSxsPXMtTWF0aC5jZWlsKGMubGVuZ3RoLzIpO2w+MDspZi5wdXRCeXRlKDApLC0tbDtyZXR1cm4gZi5wdXRCeXRlcyhuLnV0aWwuaGV4VG9CeXRlcyhjKSksZi5nZXRCeXRlcygpfSx1LnJzYS5kZWNyeXB0PWZ1bmN0aW9uKGUsdCxyLG8pe3ZhciBhPU1hdGguY2VpbCh0Lm4uYml0TGVuZ3RoKCkvOCk7aWYoZS5sZW5ndGghPT1hKXt2YXIgcz1uZXcgRXJyb3IoIkVuY3J5cHRlZCBtZXNzYWdlIGxlbmd0aCBpcyBpbnZhbGlkLiIpO3Rocm93IHMubGVuZ3RoPWUubGVuZ3RoLHMuZXhwZWN0ZWQ9YSxzfXZhciB1PW5ldyBpKG4udXRpbC5jcmVhdGVCdWZmZXIoZSkudG9IZXgoKSwxNik7aWYodS5jb21wYXJlVG8odC5uKT49MCl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRlZCBtZXNzYWdlIGlzIGludmFsaWQuIik7Zm9yKHZhciBjPXkodSx0LHIpLnRvU3RyaW5nKDE2KSxmPW4udXRpbC5jcmVhdGVCdWZmZXIoKSxsPWEtTWF0aC5jZWlsKGMubGVuZ3RoLzIpO2w+MDspZi5wdXRCeXRlKDApLC0tbDtyZXR1cm4gZi5wdXRCeXRlcyhuLnV0aWwuaGV4VG9CeXRlcyhjKSksITEhPT1vP3YoZi5nZXRCeXRlcygpLHQscik6Zi5nZXRCeXRlcygpfSx1LnJzYS5jcmVhdGVLZXlQYWlyR2VuZXJhdGlvblN0YXRlPWZ1bmN0aW9uKGUsdCxyKXsic3RyaW5nIj09PXR5cGVvZiBlJiYoZT1wYXJzZUludChlLDEwKSksZT1lfHwyMDQ4O3ZhciBvLGE9KHI9cnx8e30pLnBybmd8fG4ucmFuZG9tLHM9e25leHRCeXRlczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9YS5nZXRCeXRlc1N5bmMoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoOysrcillW3JdPXQuY2hhckNvZGVBdChyKX19LHU9ci5hbGdvcml0aG18fCJQUklNRUlOQyI7aWYoIlBSSU1FSU5DIiE9PXUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGtleSBnZW5lcmF0aW9uIGFsZ29yaXRobTogIit1KTtyZXR1cm4obz17YWxnb3JpdGhtOnUsc3RhdGU6MCxiaXRzOmUscm5nOnMsZUludDp0fHw2NTUzNyxlOm5ldyBpKG51bGwpLHA6bnVsbCxxOm51bGwscUJpdHM6ZT4+MSxwQml0czplLShlPj4xKSxwcVN0YXRlOjAsbnVtOm51bGwsa2V5czpudWxsfSkuZS5mcm9tSW50KG8uZUludCksb30sdS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGU9ZnVuY3Rpb24oZSx0KXsiYWxnb3JpdGhtImluIGV8fChlLmFsZ29yaXRobT0iUFJJTUVJTkMiKTt2YXIgcj1uZXcgaShudWxsKTtyLmZyb21JbnQoMzApO2Zvcih2YXIgbixvPTAsYT1mdW5jdGlvbihlLHQpe3JldHVybiBlfHR9LHM9K25ldyBEYXRlLGY9MDtudWxsPT09ZS5rZXlzJiYodDw9MHx8Zjx0KTspe2lmKDA9PT1lLnN0YXRlKXt2YXIgbD1udWxsPT09ZS5wP2UucEJpdHM6ZS5xQml0cyxoPWwtMTswPT09ZS5wcVN0YXRlPyhlLm51bT1uZXcgaShsLGUucm5nKSxlLm51bS50ZXN0Qml0KGgpfHxlLm51bS5iaXR3aXNlVG8oaS5PTkUuc2hpZnRMZWZ0KGgpLGEsZS5udW0pLGUubnVtLmRBZGRPZmZzZXQoMzEtZS5udW0ubW9kKHIpLmJ5dGVWYWx1ZSgpLDApLG89MCwrK2UucHFTdGF0ZSk6MT09PWUucHFTdGF0ZT9lLm51bS5iaXRMZW5ndGgoKT5sP2UucHFTdGF0ZT0wOmUubnVtLmlzUHJvYmFibGVQcmltZShiKGUubnVtLmJpdExlbmd0aCgpKSk/KytlLnBxU3RhdGU6ZS5udW0uZEFkZE9mZnNldChjW28rKyU4XSwwKToyPT09ZS5wcVN0YXRlP2UucHFTdGF0ZT0wPT09ZS5udW0uc3VidHJhY3QoaS5PTkUpLmdjZChlLmUpLmNvbXBhcmVUbyhpLk9ORSk/MzowOjM9PT1lLnBxU3RhdGUmJihlLnBxU3RhdGU9MCxudWxsPT09ZS5wP2UucD1lLm51bTplLnE9ZS5udW0sbnVsbCE9PWUucCYmbnVsbCE9PWUucSYmKytlLnN0YXRlLGUubnVtPW51bGwpfWVsc2UgaWYoMT09PWUuc3RhdGUpZS5wLmNvbXBhcmVUbyhlLnEpPDAmJihlLm51bT1lLnAsZS5wPWUucSxlLnE9ZS5udW0pLCsrZS5zdGF0ZTtlbHNlIGlmKDI9PT1lLnN0YXRlKWUucDE9ZS5wLnN1YnRyYWN0KGkuT05FKSxlLnExPWUucS5zdWJ0cmFjdChpLk9ORSksZS5waGk9ZS5wMS5tdWx0aXBseShlLnExKSwrK2Uuc3RhdGU7ZWxzZSBpZigzPT09ZS5zdGF0ZSkwPT09ZS5waGkuZ2NkKGUuZSkuY29tcGFyZVRvKGkuT05FKT8rK2Uuc3RhdGU6KGUucD1udWxsLGUucT1udWxsLGUuc3RhdGU9MCk7ZWxzZSBpZig0PT09ZS5zdGF0ZSllLm49ZS5wLm11bHRpcGx5KGUucSksZS5uLmJpdExlbmd0aCgpPT09ZS5iaXRzPysrZS5zdGF0ZTooZS5xPW51bGwsZS5zdGF0ZT0wKTtlbHNlIGlmKDU9PT1lLnN0YXRlKXt2YXIgcD1lLmUubW9kSW52ZXJzZShlLnBoaSk7ZS5rZXlzPXtwcml2YXRlS2V5OnUucnNhLnNldFByaXZhdGVLZXkoZS5uLGUuZSxwLGUucCxlLnEscC5tb2QoZS5wMSkscC5tb2QoZS5xMSksZS5xLm1vZEludmVyc2UoZS5wKSkscHVibGljS2V5OnUucnNhLnNldFB1YmxpY0tleShlLm4sZS5lKX19Zis9KG49K25ldyBEYXRlKS1zLHM9bn1yZXR1cm4gbnVsbCE9PWUua2V5c30sdS5yc2EuZ2VuZXJhdGVLZXlQYWlyPWZ1bmN0aW9uKGUsdCxyLGMpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoPyJvYmplY3QiPT09dHlwZW9mIGU/KHI9ZSxlPXZvaWQgMCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiYoYz1lLGU9dm9pZCAwKToyPT09YXJndW1lbnRzLmxlbmd0aD8ibnVtYmVyIj09PXR5cGVvZiBlPyJmdW5jdGlvbiI9PT10eXBlb2YgdD8oYz10LHQ9dm9pZCAwKToibnVtYmVyIiE9PXR5cGVvZiB0JiYocj10LHQ9dm9pZCAwKToocj1lLGM9dCxlPXZvaWQgMCx0PXZvaWQgMCk6Mz09PWFyZ3VtZW50cy5sZW5ndGgmJigibnVtYmVyIj09PXR5cGVvZiB0PyJmdW5jdGlvbiI9PT10eXBlb2YgciYmKGM9cixyPXZvaWQgMCk6KGM9cixyPXQsdD12b2lkIDApKSxyPXJ8fHt9LHZvaWQgMD09PWUmJihlPXIuYml0c3x8MjA0OCksdm9pZCAwPT09dCYmKHQ9ci5lfHw2NTUzNyksIW4ub3B0aW9ucy51c2VQdXJlSmF2YVNjcmlwdCYmIXIucHJuZyYmZT49MjU2JiZlPD0xNjM4NCYmKDY1NTM3PT09dHx8Mz09PXQpKWlmKGMpe2lmKF8oImdlbmVyYXRlS2V5UGFpciIpKXJldHVybiBvLmdlbmVyYXRlS2V5UGFpcigicnNhIix7bW9kdWx1c0xlbmd0aDplLHB1YmxpY0V4cG9uZW50OnQscHVibGljS2V5RW5jb2Rpbmc6e3R5cGU6InNwa2kiLGZvcm1hdDoicGVtIn0scHJpdmF0ZUtleUVuY29kaW5nOnt0eXBlOiJwa2NzOCIsZm9ybWF0OiJwZW0ifX0sZnVuY3Rpb24oZSx0LHIpe2lmKGUpcmV0dXJuIGMoZSk7YyhudWxsLHtwcml2YXRlS2V5OnUucHJpdmF0ZUtleUZyb21QZW0ocikscHVibGljS2V5OnUucHVibGljS2V5RnJvbVBlbSh0KX0pfSk7aWYoUygiZ2VuZXJhdGVLZXkiKSYmUygiZXhwb3J0S2V5IikpcmV0dXJuIHMuZ2xvYmFsU2NvcGUuY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUiLG1vZHVsdXNMZW5ndGg6ZSxwdWJsaWNFeHBvbmVudDp3KHQpLGhhc2g6e25hbWU6IlNIQS0yNTYifX0sITAsWyJzaWduIiwidmVyaWZ5Il0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHMuZ2xvYmFsU2NvcGUuY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoInBrY3M4IixlLnByaXZhdGVLZXkpfSkudGhlbih2b2lkIDAsZnVuY3Rpb24oZSl7YyhlKX0pLnRoZW4oZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9dS5wcml2YXRlS2V5RnJvbUFzbjEoYS5mcm9tRGVyKG4udXRpbC5jcmVhdGVCdWZmZXIoZSkpKTtjKG51bGwse3ByaXZhdGVLZXk6dCxwdWJsaWNLZXk6dS5zZXRSc2FQdWJsaWNLZXkodC5uLHQuZSl9KX19KTtpZihFKCJnZW5lcmF0ZUtleSIpJiZFKCJleHBvcnRLZXkiKSl7dmFyIGY9cy5nbG9iYWxTY29wZS5tc0NyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6IlJTQVNTQS1QS0NTMS12MV81Iixtb2R1bHVzTGVuZ3RoOmUscHVibGljRXhwb25lbnQ6dyh0KSxoYXNoOntuYW1lOiJTSEEtMjU2In19LCEwLFsic2lnbiIsInZlcmlmeSJdKTtyZXR1cm4gZi5vbmNvbXBsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LnJlc3VsdCxyPXMuZ2xvYmFsU2NvcGUubXNDcnlwdG8uc3VidGxlLmV4cG9ydEtleSgicGtjczgiLHQucHJpdmF0ZUtleSk7ci5vbmNvbXBsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LnJlc3VsdCxyPXUucHJpdmF0ZUtleUZyb21Bc24xKGEuZnJvbURlcihuLnV0aWwuY3JlYXRlQnVmZmVyKHQpKSk7YyhudWxsLHtwcml2YXRlS2V5OnIscHVibGljS2V5OnUuc2V0UnNhUHVibGljS2V5KHIubixyLmUpfSl9LHIub25lcnJvcj1mdW5jdGlvbihlKXtjKGUpfX0sdm9pZChmLm9uZXJyb3I9ZnVuY3Rpb24oZSl7YyhlKX0pfX1lbHNlIGlmKF8oImdlbmVyYXRlS2V5UGFpclN5bmMiKSl7dmFyIGw9by5nZW5lcmF0ZUtleVBhaXJTeW5jKCJyc2EiLHttb2R1bHVzTGVuZ3RoOmUscHVibGljRXhwb25lbnQ6dCxwdWJsaWNLZXlFbmNvZGluZzp7dHlwZToic3BraSIsZm9ybWF0OiJwZW0ifSxwcml2YXRlS2V5RW5jb2Rpbmc6e3R5cGU6InBrY3M4Iixmb3JtYXQ6InBlbSJ9fSk7cmV0dXJue3ByaXZhdGVLZXk6dS5wcml2YXRlS2V5RnJvbVBlbShsLnByaXZhdGVLZXkpLHB1YmxpY0tleTp1LnB1YmxpY0tleUZyb21QZW0obC5wdWJsaWNLZXkpfX12YXIgaD11LnJzYS5jcmVhdGVLZXlQYWlyR2VuZXJhdGlvblN0YXRlKGUsdCxyKTtpZighYylyZXR1cm4gdS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGUoaCwwKSxoLmtleXM7IWZ1bmN0aW9uKGUsdCxyKXsiZnVuY3Rpb24iPT09dHlwZW9mIHQmJihyPXQsdD17fSk7dmFyIG89e2FsZ29yaXRobTp7bmFtZToodD10fHx7fSkuYWxnb3JpdGhtfHwiUFJJTUVJTkMiLG9wdGlvbnM6e3dvcmtlcnM6dC53b3JrZXJzfHwyLHdvcmtMb2FkOnQud29ya0xvYWR8fDEwMCx3b3JrZXJTY3JpcHQ6dC53b3JrZXJTY3JpcHR9fX07InBybmciaW4gdCYmKG8ucHJuZz10LnBybmcpO2Z1bmN0aW9uIGEoKXtzKGUucEJpdHMsZnVuY3Rpb24odCxuKXtyZXR1cm4gdD9yKHQpOihlLnA9bixudWxsIT09ZS5xP2ModCxlLnEpOnZvaWQgcyhlLnFCaXRzLGMpKX0pfWZ1bmN0aW9uIHMoZSx0KXtuLnByaW1lLmdlbmVyYXRlUHJvYmFibGVQcmltZShlLG8sdCl9ZnVuY3Rpb24gYyh0LG4pe2lmKHQpcmV0dXJuIHIodCk7aWYoZS5xPW4sZS5wLmNvbXBhcmVUbyhlLnEpPDApe3ZhciBvPWUucDtlLnA9ZS5xLGUucT1vfWlmKDAhPT1lLnAuc3VidHJhY3QoaS5PTkUpLmdjZChlLmUpLmNvbXBhcmVUbyhpLk9ORSkpcmV0dXJuIGUucD1udWxsLHZvaWQgYSgpO2lmKDAhPT1lLnEuc3VidHJhY3QoaS5PTkUpLmdjZChlLmUpLmNvbXBhcmVUbyhpLk9ORSkpcmV0dXJuIGUucT1udWxsLHZvaWQgcyhlLnFCaXRzLGMpO2lmKGUucDE9ZS5wLnN1YnRyYWN0KGkuT05FKSxlLnExPWUucS5zdWJ0cmFjdChpLk9ORSksZS5waGk9ZS5wMS5tdWx0aXBseShlLnExKSwwIT09ZS5waGkuZ2NkKGUuZSkuY29tcGFyZVRvKGkuT05FKSlyZXR1cm4gZS5wPWUucT1udWxsLHZvaWQgYSgpO2lmKGUubj1lLnAubXVsdGlwbHkoZS5xKSxlLm4uYml0TGVuZ3RoKCkhPT1lLmJpdHMpcmV0dXJuIGUucT1udWxsLHZvaWQgcyhlLnFCaXRzLGMpO3ZhciBmPWUuZS5tb2RJbnZlcnNlKGUucGhpKTtlLmtleXM9e3ByaXZhdGVLZXk6dS5yc2Euc2V0UHJpdmF0ZUtleShlLm4sZS5lLGYsZS5wLGUucSxmLm1vZChlLnAxKSxmLm1vZChlLnExKSxlLnEubW9kSW52ZXJzZShlLnApKSxwdWJsaWNLZXk6dS5yc2Euc2V0UHVibGljS2V5KGUubixlLmUpfSxyKG51bGwsZS5rZXlzKX1hKCl9KGgscixjKX0sdS5zZXRSc2FQdWJsaWNLZXk9dS5yc2Euc2V0UHVibGljS2V5PWZ1bmN0aW9uKGUsdCl7dmFyIHI9e246ZSxlOnQsZW5jcnlwdDpmdW5jdGlvbihlLHQsaSl7aWYoInN0cmluZyI9PT10eXBlb2YgdD90PXQudG9VcHBlckNhc2UoKTp2b2lkIDA9PT10JiYodD0iUlNBRVMtUEtDUzEtVjFfNSIpLCJSU0FFUy1QS0NTMS1WMV81Ij09PXQpdD17ZW5jb2RlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZyhlLHQsMikuZ2V0Qnl0ZXMoKX19O2Vsc2UgaWYoIlJTQS1PQUVQIj09PXR8fCJSU0FFUy1PQUVQIj09PXQpdD17ZW5jb2RlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4ucGtjczEuZW5jb2RlX3JzYV9vYWVwKHQsZSxpKX19O2Vsc2UgaWYoLTEhPT1bIlJBVyIsIk5PTkUiLCJOVUxMIixudWxsXS5pbmRleE9mKHQpKXQ9e2VuY29kZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19O2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGVuY3J5cHRpb24gc2NoZW1lOiAiJyt0KyciLicpO3ZhciBvPXQuZW5jb2RlKGUsciwhMCk7cmV0dXJuIHUucnNhLmVuY3J5cHQobyxyLCEwKX0sdmVyaWZ5OmZ1bmN0aW9uKGUsdCxuKXsic3RyaW5nIj09PXR5cGVvZiBuP249bi50b1VwcGVyQ2FzZSgpOnZvaWQgMD09PW4mJihuPSJSU0FTU0EtUEtDUzEtVjFfNSIpLCJSU0FTU0EtUEtDUzEtVjFfNSI9PT1uP249e3ZlcmlmeTpmdW5jdGlvbihlLHQpe3JldHVybiB0PXYodCxyLCEwKSxlPT09YS5mcm9tRGVyKHQpLnZhbHVlWzFdLnZhbHVlfX06Ik5PTkUiIT09biYmIk5VTEwiIT09biYmbnVsbCE9PW58fChuPXt2ZXJpZnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PSh0PXYodCxyLCEwKSl9fSk7dmFyIGk9dS5yc2EuZGVjcnlwdCh0LHIsITAsITEpO3JldHVybiBuLnZlcmlmeShlLGksci5uLmJpdExlbmd0aCgpKX19O3JldHVybiByfSx1LnNldFJzYVByaXZhdGVLZXk9dS5yc2Euc2V0UHJpdmF0ZUtleT1mdW5jdGlvbihlLHQscixpLG8sYSxzLGMpe3ZhciBmPXtuOmUsZTp0LGQ6cixwOmkscTpvLGRQOmEsZFE6cyxxSW52OmMsZGVjcnlwdDpmdW5jdGlvbihlLHQscil7InN0cmluZyI9PT10eXBlb2YgdD90PXQudG9VcHBlckNhc2UoKTp2b2lkIDA9PT10JiYodD0iUlNBRVMtUEtDUzEtVjFfNSIpO3ZhciBpPXUucnNhLmRlY3J5cHQoZSxmLCExLCExKTtpZigiUlNBRVMtUEtDUzEtVjFfNSI9PT10KXQ9e2RlY29kZTp2fTtlbHNlIGlmKCJSU0EtT0FFUCI9PT10fHwiUlNBRVMtT0FFUCI9PT10KXQ9e2RlY29kZTpmdW5jdGlvbihlLHQpe3JldHVybiBuLnBrY3MxLmRlY29kZV9yc2Ffb2FlcCh0LGUscil9fTtlbHNle2lmKC0xPT09WyJSQVciLCJOT05FIiwiTlVMTCIsbnVsbF0uaW5kZXhPZih0KSl0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGVuY3J5cHRpb24gc2NoZW1lOiAiJyt0KyciLicpO3Q9e2RlY29kZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19fXJldHVybiB0LmRlY29kZShpLGYsITEpfSxzaWduOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ITE7InN0cmluZyI9PT10eXBlb2YgdCYmKHQ9dC50b1VwcGVyQ2FzZSgpKSx2b2lkIDA9PT10fHwiUlNBU1NBLVBLQ1MxLVYxXzUiPT09dD8odD17ZW5jb2RlOmR9LHI9MSk6Ik5PTkUiIT09dCYmIk5VTEwiIT09dCYmbnVsbCE9PXR8fCh0PXtlbmNvZGU6ZnVuY3Rpb24oKXtyZXR1cm4gZX19LHI9MSk7dmFyIG49dC5lbmNvZGUoZSxmLm4uYml0TGVuZ3RoKCkpO3JldHVybiB1LnJzYS5lbmNyeXB0KG4sZixyKX19O3JldHVybiBmfSx1LndyYXBSc2FQcml2YXRlS2V5PWZ1bmN0aW9uKGUpe3JldHVybiBhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuU0VRVUVOQ0UsITAsW2EuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5JTlRFR0VSLCExLGEuaW50ZWdlclRvRGVyKDApLmdldEJ5dGVzKCkpLGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5TRVFVRU5DRSwhMCxbYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk9JRCwhMSxhLm9pZFRvRGVyKHUub2lkcy5yc2FFbmNyeXB0aW9uKS5nZXRCeXRlcygpKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuTlVMTCwhMSwiIildKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuT0NURVRTVFJJTkcsITEsYS50b0RlcihlKS5nZXRCeXRlcygpKV0pfSx1LnByaXZhdGVLZXlGcm9tQXNuMT1mdW5jdGlvbihlKXt2YXIgdCxyLG8scyxjLGgscCxkLHk9e30sZz1bXTtpZihhLnZhbGlkYXRlKGUsZix5LGcpJiYoZT1hLmZyb21EZXIobi51dGlsLmNyZWF0ZUJ1ZmZlcih5LnByaXZhdGVLZXkpKSkseT17fSxnPVtdLCFhLnZhbGlkYXRlKGUsbCx5LGcpKXt2YXIgdj1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIHByaXZhdGUga2V5LiBBU04uMSBvYmplY3QgZG9lcyBub3QgY29udGFpbiBhbiBSU0FQcml2YXRlS2V5LiIpO3Rocm93IHYuZXJyb3JzPWcsdn1yZXR1cm4gdD1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleU1vZHVsdXMpLnRvSGV4KCkscj1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleVB1YmxpY0V4cG9uZW50KS50b0hleCgpLG89bi51dGlsLmNyZWF0ZUJ1ZmZlcih5LnByaXZhdGVLZXlQcml2YXRlRXhwb25lbnQpLnRvSGV4KCkscz1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleVByaW1lMSkudG9IZXgoKSxjPW4udXRpbC5jcmVhdGVCdWZmZXIoeS5wcml2YXRlS2V5UHJpbWUyKS50b0hleCgpLGg9bi51dGlsLmNyZWF0ZUJ1ZmZlcih5LnByaXZhdGVLZXlFeHBvbmVudDEpLnRvSGV4KCkscD1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleUV4cG9uZW50MikudG9IZXgoKSxkPW4udXRpbC5jcmVhdGVCdWZmZXIoeS5wcml2YXRlS2V5Q29lZmZpY2llbnQpLnRvSGV4KCksdS5zZXRSc2FQcml2YXRlS2V5KG5ldyBpKHQsMTYpLG5ldyBpKHIsMTYpLG5ldyBpKG8sMTYpLG5ldyBpKHMsMTYpLG5ldyBpKGMsMTYpLG5ldyBpKGgsMTYpLG5ldyBpKHAsMTYpLG5ldyBpKGQsMTYpKX0sdS5wcml2YXRlS2V5VG9Bc24xPXUucHJpdmF0ZUtleVRvUlNBUHJpdmF0ZUtleT1mdW5jdGlvbihlKXtyZXR1cm4gYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLlNFUVVFTkNFLCEwLFthLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxhLmludGVnZXJUb0RlcigwKS5nZXRCeXRlcygpKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxtKGUubikpLGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5JTlRFR0VSLCExLG0oZS5lKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLmQpKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxtKGUucCkpLGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5JTlRFR0VSLCExLG0oZS5xKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLmRQKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLmRRKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLnFJbnYpKV0pfSx1LnB1YmxpY0tleUZyb21Bc24xPWZ1bmN0aW9uKGUpe3ZhciB0PXt9LHI9W107aWYoYS52YWxpZGF0ZShlLHAsdCxyKSl7dmFyIG8scz1hLmRlclRvT2lkKHQucHVibGljS2V5T2lkKTtpZihzIT09dS5vaWRzLnJzYUVuY3J5cHRpb24pdGhyb3cobz1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIHB1YmxpYyBrZXkuIFVua25vd24gT0lELiIpKS5vaWQ9cyxvO2U9dC5yc2FQdWJsaWNLZXl9aWYocj1bXSwhYS52YWxpZGF0ZShlLGgsdCxyKSl0aHJvdyhvPW5ldyBFcnJvcigiQ2Fubm90IHJlYWQgcHVibGljIGtleS4gQVNOLjEgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gUlNBUHVibGljS2V5LiIpKS5lcnJvcnM9cixvO3ZhciBjPW4udXRpbC5jcmVhdGVCdWZmZXIodC5wdWJsaWNLZXlNb2R1bHVzKS50b0hleCgpLGY9bi51dGlsLmNyZWF0ZUJ1ZmZlcih0LnB1YmxpY0tleUV4cG9uZW50KS50b0hleCgpO3JldHVybiB1LnNldFJzYVB1YmxpY0tleShuZXcgaShjLDE2KSxuZXcgaShmLDE2KSl9LHUucHVibGljS2V5VG9Bc24xPXUucHVibGljS2V5VG9TdWJqZWN0UHVibGljS2V5SW5mbz1mdW5jdGlvbihlKXtyZXR1cm4gYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLlNFUVVFTkNFLCEwLFthLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuU0VRVUVOQ0UsITAsW2EuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5PSUQsITEsYS5vaWRUb0Rlcih1Lm9pZHMucnNhRW5jcnlwdGlvbikuZ2V0Qnl0ZXMoKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk5VTEwsITEsIiIpXSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLkJJVFNUUklORywhMSxbdS5wdWJsaWNLZXlUb1JTQVB1YmxpY0tleShlKV0pXSl9LHUucHVibGljS2V5VG9SU0FQdWJsaWNLZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5TRVFVRU5DRSwhMCxbYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLm4pKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxtKGUuZSkpXSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG4saT1yKDYpO2UuZXhwb3J0cz1pLmpzYm49aS5qc2JufHx7fTtmdW5jdGlvbiBvKGUsdCxyKXt0aGlzLmRhdGE9W10sbnVsbCE9ZSYmKCJudW1iZXIiPT10eXBlb2YgZT90aGlzLmZyb21OdW1iZXIoZSx0LHIpOm51bGw9PXQmJiJzdHJpbmciIT10eXBlb2YgZT90aGlzLmZyb21TdHJpbmcoZSwyNTYpOnRoaXMuZnJvbVN0cmluZyhlLHQpKX1mdW5jdGlvbiBhKCl7cmV0dXJuIG5ldyBvKG51bGwpfWZ1bmN0aW9uIHMoZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0xNjM4MyZ0LHM9dD4+MTQ7LS1vPj0wOyl7dmFyIHU9MTYzODMmdGhpcy5kYXRhW2VdLGM9dGhpcy5kYXRhW2UrK10+PjE0LGY9cyp1K2MqYTtpPSgodT1hKnUrKCgxNjM4MyZmKTw8MTQpK3IuZGF0YVtuXStpKT4+MjgpKyhmPj4xNCkrcypjLHIuZGF0YVtuKytdPTI2ODQzNTQ1NSZ1fXJldHVybiBpfWkuanNibi5CaWdJbnRlZ2VyPW8sInVuZGVmaW5lZCI9PT10eXBlb2YgbmF2aWdhdG9yPyhvLnByb3RvdHlwZS5hbT1zLG49MjgpOiJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIiPT1uYXZpZ2F0b3IuYXBwTmFtZT8oby5wcm90b3R5cGUuYW09ZnVuY3Rpb24oZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0zMjc2NyZ0LHM9dD4+MTU7LS1vPj0wOyl7dmFyIHU9MzI3NjcmdGhpcy5kYXRhW2VdLGM9dGhpcy5kYXRhW2UrK10+PjE1LGY9cyp1K2MqYTtpPSgodT1hKnUrKCgzMjc2NyZmKTw8MTUpK3IuZGF0YVtuXSsoMTA3Mzc0MTgyMyZpKSk+Pj4zMCkrKGY+Pj4xNSkrcypjKyhpPj4+MzApLHIuZGF0YVtuKytdPTEwNzM3NDE4MjMmdX1yZXR1cm4gaX0sbj0zMCk6Ik5ldHNjYXBlIiE9bmF2aWdhdG9yLmFwcE5hbWU/KG8ucHJvdG90eXBlLmFtPWZ1bmN0aW9uKGUsdCxyLG4saSxvKXtmb3IoOy0tbz49MDspe3ZhciBhPXQqdGhpcy5kYXRhW2UrK10rci5kYXRhW25dK2k7aT1NYXRoLmZsb29yKGEvNjcxMDg4NjQpLHIuZGF0YVtuKytdPTY3MTA4ODYzJmF9cmV0dXJuIGl9LG49MjYpOihvLnByb3RvdHlwZS5hbT1zLG49MjgpLG8ucHJvdG90eXBlLkRCPW4sby5wcm90b3R5cGUuRE09KDE8PG4pLTEsby5wcm90b3R5cGUuRFY9MTw8bjtvLnByb3RvdHlwZS5GVj1NYXRoLnBvdygyLDUyKSxvLnByb3RvdHlwZS5GMT01Mi1uLG8ucHJvdG90eXBlLkYyPTIqbi01Mjt2YXIgdSxjLGY9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsbD1uZXcgQXJyYXk7Zm9yKHU9IjAiLmNoYXJDb2RlQXQoMCksYz0wO2M8PTk7KytjKWxbdSsrXT1jO2Zvcih1PSJhIi5jaGFyQ29kZUF0KDApLGM9MTA7YzwzNjsrK2MpbFt1KytdPWM7Zm9yKHU9IkEiLmNoYXJDb2RlQXQoMCksYz0xMDtjPDM2OysrYylsW3UrK109YztmdW5jdGlvbiBoKGUpe3JldHVybiBmLmNoYXJBdChlKX1mdW5jdGlvbiBwKGUsdCl7dmFyIHI9bFtlLmNoYXJDb2RlQXQodCldO3JldHVybiBudWxsPT1yPy0xOnJ9ZnVuY3Rpb24gZChlKXt2YXIgdD1hKCk7cmV0dXJuIHQuZnJvbUludChlKSx0fWZ1bmN0aW9uIHkoZSl7dmFyIHQscj0xO3JldHVybiAwIT0odD1lPj4+MTYpJiYoZT10LHIrPTE2KSwwIT0odD1lPj44KSYmKGU9dCxyKz04KSwwIT0odD1lPj40KSYmKGU9dCxyKz00KSwwIT0odD1lPj4yKSYmKGU9dCxyKz0yKSwwIT0odD1lPj4xKSYmKGU9dCxyKz0xKSxyfWZ1bmN0aW9uIGcoZSl7dGhpcy5tPWV9ZnVuY3Rpb24gdihlKXt0aGlzLm09ZSx0aGlzLm1wPWUuaW52RGlnaXQoKSx0aGlzLm1wbD0zMjc2NyZ0aGlzLm1wLHRoaXMubXBoPXRoaXMubXA+PjE1LHRoaXMudW09KDE8PGUuREItMTUpLTEsdGhpcy5tdDI9MiplLnR9ZnVuY3Rpb24gbShlLHQpe3JldHVybiBlJnR9ZnVuY3Rpb24gYihlLHQpe3JldHVybiBlfHR9ZnVuY3Rpb24gXyhlLHQpe3JldHVybiBlXnR9ZnVuY3Rpb24gUyhlLHQpe3JldHVybiBlJn50fWZ1bmN0aW9uIEUoZSl7aWYoMD09ZSlyZXR1cm4tMTt2YXIgdD0wO3JldHVybiAwPT0oNjU1MzUmZSkmJihlPj49MTYsdCs9MTYpLDA9PSgyNTUmZSkmJihlPj49OCx0Kz04KSwwPT0oMTUmZSkmJihlPj49NCx0Kz00KSwwPT0oMyZlKSYmKGU+Pj0yLHQrPTIpLDA9PSgxJmUpJiYrK3QsdH1mdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD0wOzAhPWU7KWUmPWUtMSwrK3Q7cmV0dXJuIHR9ZnVuY3Rpb24gVCgpe31mdW5jdGlvbiBBKGUpe3JldHVybiBlfWZ1bmN0aW9uIEMoZSl7dGhpcy5yMj1hKCksdGhpcy5xMz1hKCksby5PTkUuZGxTaGlmdFRvKDIqZS50LHRoaXMucjIpLHRoaXMubXU9dGhpcy5yMi5kaXZpZGUoZSksdGhpcy5tPWV9Zy5wcm90b3R5cGUuY29udmVydD1mdW5jdGlvbihlKXtyZXR1cm4gZS5zPDB8fGUuY29tcGFyZVRvKHRoaXMubSk+PTA/ZS5tb2QodGhpcy5tKTplfSxnLnByb3RvdHlwZS5yZXZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGcucHJvdG90eXBlLnJlZHVjZT1mdW5jdGlvbihlKXtlLmRpdlJlbVRvKHRoaXMubSxudWxsLGUpfSxnLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihlLHQscil7ZS5tdWx0aXBseVRvKHQsciksdGhpcy5yZWR1Y2Uocil9LGcucHJvdG90eXBlLnNxclRvPWZ1bmN0aW9uKGUsdCl7ZS5zcXVhcmVUbyh0KSx0aGlzLnJlZHVjZSh0KX0sdi5wcm90b3R5cGUuY29udmVydD1mdW5jdGlvbihlKXt2YXIgdD1hKCk7cmV0dXJuIGUuYWJzKCkuZGxTaGlmdFRvKHRoaXMubS50LHQpLHQuZGl2UmVtVG8odGhpcy5tLG51bGwsdCksZS5zPDAmJnQuY29tcGFyZVRvKG8uWkVSTyk+MCYmdGhpcy5tLnN1YlRvKHQsdCksdH0sdi5wcm90b3R5cGUucmV2ZXJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWEoKTtyZXR1cm4gZS5jb3B5VG8odCksdGhpcy5yZWR1Y2UodCksdH0sdi5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKGUpe2Zvcig7ZS50PD10aGlzLm10MjspZS5kYXRhW2UudCsrXT0wO2Zvcih2YXIgdD0wO3Q8dGhpcy5tLnQ7Kyt0KXt2YXIgcj0zMjc2NyZlLmRhdGFbdF0sbj1yKnRoaXMubXBsKygocip0aGlzLm1waCsoZS5kYXRhW3RdPj4xNSkqdGhpcy5tcGwmdGhpcy51bSk8PDE1KSZlLkRNO2ZvcihyPXQrdGhpcy5tLnQsZS5kYXRhW3JdKz10aGlzLm0uYW0oMCxuLGUsdCwwLHRoaXMubS50KTtlLmRhdGFbcl0+PWUuRFY7KWUuZGF0YVtyXS09ZS5EVixlLmRhdGFbKytyXSsrfWUuY2xhbXAoKSxlLmRyU2hpZnRUbyh0aGlzLm0udCxlKSxlLmNvbXBhcmVUbyh0aGlzLm0pPj0wJiZlLnN1YlRvKHRoaXMubSxlKX0sdi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oZSx0LHIpe2UubXVsdGlwbHlUbyh0LHIpLHRoaXMucmVkdWNlKHIpfSx2LnByb3RvdHlwZS5zcXJUbz1mdW5jdGlvbihlLHQpe2Uuc3F1YXJlVG8odCksdGhpcy5yZWR1Y2UodCl9LG8ucHJvdG90eXBlLmNvcHlUbz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50LTE7dD49MDstLXQpZS5kYXRhW3RdPXRoaXMuZGF0YVt0XTtlLnQ9dGhpcy50LGUucz10aGlzLnN9LG8ucHJvdG90eXBlLmZyb21JbnQ9ZnVuY3Rpb24oZSl7dGhpcy50PTEsdGhpcy5zPWU8MD8tMTowLGU+MD90aGlzLmRhdGFbMF09ZTplPC0xP3RoaXMuZGF0YVswXT1lK3RoaXMuRFY6dGhpcy50PTB9LG8ucHJvdG90eXBlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZigxNj09dClyPTQ7ZWxzZSBpZig4PT10KXI9MztlbHNlIGlmKDI1Nj09dClyPTg7ZWxzZSBpZigyPT10KXI9MTtlbHNlIGlmKDMyPT10KXI9NTtlbHNle2lmKDQhPXQpcmV0dXJuIHZvaWQgdGhpcy5mcm9tUmFkaXgoZSx0KTtyPTJ9dGhpcy50PTAsdGhpcy5zPTA7Zm9yKHZhciBuPWUubGVuZ3RoLGk9ITEsYT0wOy0tbj49MDspe3ZhciBzPTg9PXI/MjU1JmVbbl06cChlLG4pO3M8MD8iLSI9PWUuY2hhckF0KG4pJiYoaT0hMCk6KGk9ITEsMD09YT90aGlzLmRhdGFbdGhpcy50KytdPXM6YStyPnRoaXMuREI/KHRoaXMuZGF0YVt0aGlzLnQtMV18PShzJigxPDx0aGlzLkRCLWEpLTEpPDxhLHRoaXMuZGF0YVt0aGlzLnQrK109cz4+dGhpcy5EQi1hKTp0aGlzLmRhdGFbdGhpcy50LTFdfD1zPDxhLChhKz1yKT49dGhpcy5EQiYmKGEtPXRoaXMuREIpKX04PT1yJiYwIT0oMTI4JmVbMF0pJiYodGhpcy5zPS0xLGE+MCYmKHRoaXMuZGF0YVt0aGlzLnQtMV18PSgxPDx0aGlzLkRCLWEpLTE8PGEpKSx0aGlzLmNsYW1wKCksaSYmby5aRVJPLnN1YlRvKHRoaXMsdGhpcyl9LG8ucHJvdG90eXBlLmNsYW1wPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMucyZ0aGlzLkRNO3RoaXMudD4wJiZ0aGlzLmRhdGFbdGhpcy50LTFdPT1lOyktLXRoaXMudH0sby5wcm90b3R5cGUuZGxTaGlmdFRvPWZ1bmN0aW9uKGUsdCl7dmFyIHI7Zm9yKHI9dGhpcy50LTE7cj49MDstLXIpdC5kYXRhW3IrZV09dGhpcy5kYXRhW3JdO2ZvcihyPWU="
}

Changelog:

{
    "2020.01.10 16:24": "base64:LDIsNjIsMzAsLTIsNjQsOTYsMl07dmFyIHk9dFswXSxnPXRbMV07eV49KHA9MjUyNjQ1MTM1Jih5Pj4+NF5nKSk8PDQseV49KHA9NjU1MzUmKHk+Pj4xNl4oZ149cCkpKTw8MTYseV49cD04NTg5OTM0NTkmKChnXj1wKT4+PjJeeSkseV49cD0xNjcxMTkzNSYoKGdePXA8PDIpPj4+OF55KSx5PSh5Xj0ocD0xNDMxNjU1NzY1Jih5Pj4+MV4oZ149cDw8OCkpKTw8MSk8PDF8eT4+PjMxLGc9KGdePXApPDwxfGc+Pj4zMTtmb3IodmFyIHY9MDt2PGQ7dis9Myl7Zm9yKHZhciBtPWlbdisxXSxiPWlbdisyXSxfPWlbdl07XyE9bTtfKz1iKXt2YXIgUz1nXmVbX10sRT0oZz4+PjR8Zzw8MjgpXmVbXysxXTtwPXkseT1nLGc9cF4oYVtTPj4+MjQmNjNdfHVbUz4+PjE2JjYzXXxmW1M+Pj44JjYzXXxoWzYzJlNdfG9bRT4+PjI0JjYzXXxzW0U+Pj4xNiY2M118Y1tFPj4+OCY2M118bFs2MyZFXSl9cD15LHk9ZyxnPXB9Zz1nPj4+MXxnPDwzMSxnXj1wPTE0MzE2NTU3NjUmKCh5PXk+Pj4xfHk8PDMxKT4+PjFeZyksZ149KHA9MTY3MTE5MzUmKGc+Pj44Xih5Xj1wPDwxKSkpPDw4LGdePShwPTg1ODk5MzQ1OSYoZz4+PjJeKHlePXApKSk8PDIsZ149cD02NTUzNSYoKHlePXApPj4+MTZeZyksZ149cD0yNTI2NDUxMzUmKCh5Xj1wPDwxNik+Pj40XmcpLHlePXA8PDQsclswXT15LHJbMV09Z31mdW5jdGlvbiBkKGUpe3ZhciB0LHI9IkRFUy0iKygoZT1lfHx7fSkubW9kZXx8IkNCQyIpLnRvVXBwZXJDYXNlKCksaT0odD1lLmRlY3J5cHQ/bi5jaXBoZXIuY3JlYXRlRGVjaXBoZXIocixlLmtleSk6bi5jaXBoZXIuY3JlYXRlQ2lwaGVyKHIsZS5rZXkpKS5zdGFydDtyZXR1cm4gdC5zdGFydD1mdW5jdGlvbihlLHIpe3ZhciBvPW51bGw7ciBpbnN0YW5jZW9mIG4udXRpbC5CeXRlQnVmZmVyJiYobz1yLHI9e30pLChyPXJ8fHt9KS5vdXRwdXQ9byxyLml2PWUsaS5jYWxsKHQscil9LHR9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtpZihyKDY1KSxyKDE2NCkscig5MCkscigzNTEpLHIoMzUyKSxyKDUyKSxyKDEwKSwidW5kZWZpbmVkIj09PXR5cGVvZiBpKXZhciBpPW4uanNibi5CaWdJbnRlZ2VyO3ZhciBvPW4udXRpbC5pc05vZGVqcz9yKDIyNCk6bnVsbCxhPW4uYXNuMSxzPW4udXRpbDtuLnBraT1uLnBraXx8e30sZS5leHBvcnRzPW4ucGtpLnJzYT1uLnJzYT1uLnJzYXx8e307dmFyIHU9bi5wa2ksYz1bNiw0LDIsNCwyLDQsNiwyXSxmPXtuYW1lOiJQcml2YXRlS2V5SW5mbyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJQcml2YXRlS2V5SW5mby52ZXJzaW9uIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlWZXJzaW9uIn0se25hbWU6IlByaXZhdGVLZXlJbmZvLnByaXZhdGVLZXlBbGdvcml0aG0iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5T2lkIn1dfSx7bmFtZToiUHJpdmF0ZUtleUluZm8iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLk9DVEVUU1RSSU5HLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXkifV19LGw9e25hbWU6IlJTQVByaXZhdGVLZXkiLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiUlNBUHJpdmF0ZUtleS52ZXJzaW9uIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlWZXJzaW9uIn0se25hbWU6IlJTQVByaXZhdGVLZXkubW9kdWx1cyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5TW9kdWx1cyJ9LHtuYW1lOiJSU0FQcml2YXRlS2V5LnB1YmxpY0V4cG9uZW50Iix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlQdWJsaWNFeHBvbmVudCJ9LHtuYW1lOiJSU0FQcml2YXRlS2V5LnByaXZhdGVFeHBvbmVudCIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5UHJpdmF0ZUV4cG9uZW50In0se25hbWU6IlJTQVByaXZhdGVLZXkucHJpbWUxIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlQcmltZTEifSx7bmFtZToiUlNBUHJpdmF0ZUtleS5wcmltZTIiLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToicHJpdmF0ZUtleVByaW1lMiJ9LHtuYW1lOiJSU0FQcml2YXRlS2V5LmV4cG9uZW50MSIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5RXhwb25lbnQxIn0se25hbWU6IlJTQVByaXZhdGVLZXkuZXhwb25lbnQyIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlFeHBvbmVudDIifSx7bmFtZToiUlNBUHJpdmF0ZUtleS5jb2VmZmljaWVudCIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5Q29lZmZpY2llbnQifV19LGg9e25hbWU6IlJTQVB1YmxpY0tleSIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJSU0FQdWJsaWNLZXkubW9kdWx1cyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwdWJsaWNLZXlNb2R1bHVzIn0se25hbWU6IlJTQVB1YmxpY0tleS5leHBvbmVudCIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwdWJsaWNLZXlFeHBvbmVudCJ9XX0scD1uLnBraS5yc2EucHVibGljS2V5VmFsaWRhdG9yPXtuYW1lOiJTdWJqZWN0UHVibGljS2V5SW5mbyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsY2FwdHVyZUFzbjE6InN1YmplY3RQdWJsaWNLZXlJbmZvIix2YWx1ZTpbe25hbWU6IlN1YmplY3RQdWJsaWNLZXlJbmZvLkFsZ29yaXRobUlkZW50aWZpZXIiLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwdWJsaWNLZXlPaWQifV19LHtuYW1lOiJTdWJqZWN0UHVibGljS2V5SW5mby5zdWJqZWN0UHVibGljS2V5Iix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5CSVRTVFJJTkcsY29uc3RydWN0ZWQ6ITEsdmFsdWU6W3tuYW1lOiJTdWJqZWN0UHVibGljS2V5SW5mby5zdWJqZWN0UHVibGljS2V5LlJTQVB1YmxpY0tleSIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsb3B0aW9uYWw6ITAsY2FwdHVyZUFzbjE6InJzYVB1YmxpY0tleSJ9XX1dfSxkPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCEoZS5hbGdvcml0aG0gaW4gdS5vaWRzKSl7dmFyIHI9bmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobS4iKTt0aHJvdyByLmFsZ29yaXRobT1lLmFsZ29yaXRobSxyfXQ9dS5vaWRzW2UuYWxnb3JpdGhtXTt2YXIgbj1hLm9pZFRvRGVyKHQpLmdldEJ5dGVzKCksaT1hLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuU0VRVUVOQ0UsITAsW10pLG89YS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLlNFUVVFTkNFLCEwLFtdKTtvLnZhbHVlLnB1c2goYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk9JRCwhMSxuKSksby52YWx1ZS5wdXNoKGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5OVUxMLCExLCIiKSk7dmFyIHM9YS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk9DVEVUU1RSSU5HLCExLGUuZGlnZXN0KCkuZ2V0Qnl0ZXMoKSk7cmV0dXJuIGkudmFsdWUucHVzaChvKSxpLnZhbHVlLnB1c2gocyksYS50b0RlcihpKS5nZXRCeXRlcygpfSx5PWZ1bmN0aW9uKGUsdCxyKXtpZihyKXJldHVybiBlLm1vZFBvdyh0LmUsdC5uKTtpZighdC5wfHwhdC5xKXJldHVybiBlLm1vZFBvdyh0LmQsdC5uKTt2YXIgbzt0LmRQfHwodC5kUD10LmQubW9kKHQucC5zdWJ0cmFjdChpLk9ORSkpKSx0LmRRfHwodC5kUT10LmQubW9kKHQucS5zdWJ0cmFjdChpLk9ORSkpKSx0LnFJbnZ8fCh0LnFJbnY9dC5xLm1vZEludmVyc2UodC5wKSk7ZG97bz1uZXcgaShuLnV0aWwuYnl0ZXNUb0hleChuLnJhbmRvbS5nZXRCeXRlcyh0Lm4uYml0TGVuZ3RoKCkvOCkpLDE2KX13aGlsZShvLmNvbXBhcmVUbyh0Lm4pPj0wfHwhby5nY2QodC5uKS5lcXVhbHMoaS5PTkUpKTtmb3IodmFyIGE9KGU9ZS5tdWx0aXBseShvLm1vZFBvdyh0LmUsdC5uKSkubW9kKHQubikpLm1vZCh0LnApLm1vZFBvdyh0LmRQLHQucCkscz1lLm1vZCh0LnEpLm1vZFBvdyh0LmRRLHQucSk7YS5jb21wYXJlVG8ocyk8MDspYT1hLmFkZCh0LnApO3ZhciB1PWEuc3VidHJhY3QocykubXVsdGlwbHkodC5xSW52KS5tb2QodC5wKS5tdWx0aXBseSh0LnEpLmFkZChzKTtyZXR1cm4gdT11Lm11bHRpcGx5KG8ubW9kSW52ZXJzZSh0Lm4pKS5tb2QodC5uKX07ZnVuY3Rpb24gZyhlLHQscil7dmFyIGk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLG89TWF0aC5jZWlsKHQubi5iaXRMZW5ndGgoKS84KTtpZihlLmxlbmd0aD5vLTExKXt2YXIgYT1uZXcgRXJyb3IoIk1lc3NhZ2UgaXMgdG9vIGxvbmcgZm9yIFBLQ1MjMSB2MS41IHBhZGRpbmcuIik7dGhyb3cgYS5sZW5ndGg9ZS5sZW5ndGgsYS5tYXg9by0xMSxhfWkucHV0Qnl0ZSgwKSxpLnB1dEJ5dGUocik7dmFyIHMsdT1vLTMtZS5sZW5ndGg7aWYoMD09PXJ8fDE9PT1yKXtzPTA9PT1yPzA6MjU1O2Zvcih2YXIgYz0wO2M8dTsrK2MpaS5wdXRCeXRlKHMpfWVsc2UgZm9yKDt1PjA7KXt2YXIgZj0wLGw9bi5yYW5kb20uZ2V0Qnl0ZXModSk7Zm9yKGM9MDtjPHU7KytjKTA9PT0ocz1sLmNoYXJDb2RlQXQoYykpPysrZjppLnB1dEJ5dGUocyk7dT1mfXJldHVybiBpLnB1dEJ5dGUoMCksaS5wdXRCeXRlcyhlKSxpfWZ1bmN0aW9uIHYoZSx0LHIsaSl7dmFyIG89TWF0aC5jZWlsKHQubi5iaXRMZW5ndGgoKS84KSxhPW4udXRpbC5jcmVhdGVCdWZmZXIoZSkscz1hLmdldEJ5dGUoKSx1PWEuZ2V0Qnl0ZSgpO2lmKDAhPT1zfHxyJiYwIT09dSYmMSE9PXV8fCFyJiYyIT11fHxyJiYwPT09dSYmInVuZGVmaW5lZCI9PT10eXBlb2YgaSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gYmxvY2sgaXMgaW52YWxpZC4iKTt2YXIgYz0wO2lmKDA9PT11KXtjPW8tMy1pO2Zvcih2YXIgZj0wO2Y8YzsrK2YpaWYoMCE9PWEuZ2V0Qnl0ZSgpKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbiBibG9jayBpcyBpbnZhbGlkLiIpfWVsc2UgaWYoMT09PXUpZm9yKGM9MDthLmxlbmd0aCgpPjE7KXtpZigyNTUhPT1hLmdldEJ5dGUoKSl7LS1hLnJlYWQ7YnJlYWt9KytjfWVsc2UgaWYoMj09PXUpZm9yKGM9MDthLmxlbmd0aCgpPjE7KXtpZigwPT09YS5nZXRCeXRlKCkpey0tYS5yZWFkO2JyZWFrfSsrY31pZigwIT09YS5nZXRCeXRlKCl8fGMhPT1vLTMtYS5sZW5ndGgoKSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gYmxvY2sgaXMgaW52YWxpZC4iKTtyZXR1cm4gYS5nZXRCeXRlcygpfWZ1bmN0aW9uIG0oZSl7dmFyIHQ9ZS50b1N0cmluZygxNik7dFswXT49IjgiJiYodD0iMDAiK3QpO3ZhciByPW4udXRpbC5oZXhUb0J5dGVzKHQpO3JldHVybiByLmxlbmd0aD4xJiYoMD09PXIuY2hhckNvZGVBdCgwKSYmMD09PSgxMjgmci5jaGFyQ29kZUF0KDEpKXx8MjU1PT09ci5jaGFyQ29kZUF0KDApJiYxMjg9PT0oMTI4JnIuY2hhckNvZGVBdCgxKSkpP3Iuc3Vic3RyKDEpOnJ9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZTw9MTAwPzI3OmU8PTE1MD8xODplPD0yMDA/MTU6ZTw9MjUwPzEyOmU8PTMwMD85OmU8PTM1MD84OmU8PTQwMD83OmU8PTUwMD82OmU8PTYwMD81OmU8PTgwMD80OmU8PTEyNTA/MzoyfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIG4udXRpbC5pc05vZGVqcyYmImZ1bmN0aW9uIj09PXR5cGVvZiBvW2VdfWZ1bmN0aW9uIFMoZSl7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2Ygcy5nbG9iYWxTY29wZSYmIm9iamVjdCI9PT10eXBlb2Ygcy5nbG9iYWxTY29wZS5jcnlwdG8mJiJvYmplY3QiPT09dHlwZW9mIHMuZ2xvYmFsU2NvcGUuY3J5cHRvLnN1YnRsZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLmNyeXB0by5zdWJ0bGVbZV19ZnVuY3Rpb24gRShlKXtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBzLmdsb2JhbFNjb3BlJiYib2JqZWN0Ij09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLm1zQ3J5cHRvJiYib2JqZWN0Ij09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLm1zQ3J5cHRvLnN1YnRsZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLm1zQ3J5cHRvLnN1YnRsZVtlXX1mdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD1uLnV0aWwuaGV4VG9CeXRlcyhlLnRvU3RyaW5nKDE2KSkscj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksaT0wO2k8dC5sZW5ndGg7KytpKXJbaV09dC5jaGFyQ29kZUF0KGkpO3JldHVybiByfXUucnNhLmVuY3J5cHQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvLGE9cixzPU1hdGguY2VpbCh0Lm4uYml0TGVuZ3RoKCkvOCk7ITEhPT1yJiYhMCE9PXI/KGE9Mj09PXIsbz1nKGUsdCxyKSk6KG89bi51dGlsLmNyZWF0ZUJ1ZmZlcigpKS5wdXRCeXRlcyhlKTtmb3IodmFyIHU9bmV3IGkoby50b0hleCgpLDE2KSxjPXkodSx0LGEpLnRvU3RyaW5nKDE2KSxmPW4udXRpbC5jcmVhdGVCdWZmZXIoKSxsPXMtTWF0aC5jZWlsKGMubGVuZ3RoLzIpO2w+MDspZi5wdXRCeXRlKDApLC0tbDtyZXR1cm4gZi5wdXRCeXRlcyhuLnV0aWwuaGV4VG9CeXRlcyhjKSksZi5nZXRCeXRlcygpfSx1LnJzYS5kZWNyeXB0PWZ1bmN0aW9uKGUsdCxyLG8pe3ZhciBhPU1hdGguY2VpbCh0Lm4uYml0TGVuZ3RoKCkvOCk7aWYoZS5sZW5ndGghPT1hKXt2YXIgcz1uZXcgRXJyb3IoIkVuY3J5cHRlZCBtZXNzYWdlIGxlbmd0aCBpcyBpbnZhbGlkLiIpO3Rocm93IHMubGVuZ3RoPWUubGVuZ3RoLHMuZXhwZWN0ZWQ9YSxzfXZhciB1PW5ldyBpKG4udXRpbC5jcmVhdGVCdWZmZXIoZSkudG9IZXgoKSwxNik7aWYodS5jb21wYXJlVG8odC5uKT49MCl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRlZCBtZXNzYWdlIGlzIGludmFsaWQuIik7Zm9yKHZhciBjPXkodSx0LHIpLnRvU3RyaW5nKDE2KSxmPW4udXRpbC5jcmVhdGVCdWZmZXIoKSxsPWEtTWF0aC5jZWlsKGMubGVuZ3RoLzIpO2w+MDspZi5wdXRCeXRlKDApLC0tbDtyZXR1cm4gZi5wdXRCeXRlcyhuLnV0aWwuaGV4VG9CeXRlcyhjKSksITEhPT1vP3YoZi5nZXRCeXRlcygpLHQscik6Zi5nZXRCeXRlcygpfSx1LnJzYS5jcmVhdGVLZXlQYWlyR2VuZXJhdGlvblN0YXRlPWZ1bmN0aW9uKGUsdCxyKXsic3RyaW5nIj09PXR5cGVvZiBlJiYoZT1wYXJzZUludChlLDEwKSksZT1lfHwyMDQ4O3ZhciBvLGE9KHI9cnx8e30pLnBybmd8fG4ucmFuZG9tLHM9e25leHRCeXRlczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9YS5nZXRCeXRlc1N5bmMoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoOysrcillW3JdPXQuY2hhckNvZGVBdChyKX19LHU9ci5hbGdvcml0aG18fCJQUklNRUlOQyI7aWYoIlBSSU1FSU5DIiE9PXUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGtleSBnZW5lcmF0aW9uIGFsZ29yaXRobTogIit1KTtyZXR1cm4obz17YWxnb3JpdGhtOnUsc3RhdGU6MCxiaXRzOmUscm5nOnMsZUludDp0fHw2NTUzNyxlOm5ldyBpKG51bGwpLHA6bnVsbCxxOm51bGwscUJpdHM6ZT4+MSxwQml0czplLShlPj4xKSxwcVN0YXRlOjAsbnVtOm51bGwsa2V5czpudWxsfSkuZS5mcm9tSW50KG8uZUludCksb30sdS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGU9ZnVuY3Rpb24oZSx0KXsiYWxnb3JpdGhtImluIGV8fChlLmFsZ29yaXRobT0iUFJJTUVJTkMiKTt2YXIgcj1uZXcgaShudWxsKTtyLmZyb21JbnQoMzApO2Zvcih2YXIgbixvPTAsYT1mdW5jdGlvbihlLHQpe3JldHVybiBlfHR9LHM9K25ldyBEYXRlLGY9MDtudWxsPT09ZS5rZXlzJiYodDw9MHx8Zjx0KTspe2lmKDA9PT1lLnN0YXRlKXt2YXIgbD1udWxsPT09ZS5wP2UucEJpdHM6ZS5xQml0cyxoPWwtMTswPT09ZS5wcVN0YXRlPyhlLm51bT1uZXcgaShsLGUucm5nKSxlLm51bS50ZXN0Qml0KGgpfHxlLm51bS5iaXR3aXNlVG8oaS5PTkUuc2hpZnRMZWZ0KGgpLGEsZS5udW0pLGUubnVtLmRBZGRPZmZzZXQoMzEtZS5udW0ubW9kKHIpLmJ5dGVWYWx1ZSgpLDApLG89MCwrK2UucHFTdGF0ZSk6MT09PWUucHFTdGF0ZT9lLm51bS5iaXRMZW5ndGgoKT5sP2UucHFTdGF0ZT0wOmUubnVtLmlzUHJvYmFibGVQcmltZShiKGUubnVtLmJpdExlbmd0aCgpKSk/KytlLnBxU3RhdGU6ZS5udW0uZEFkZE9mZnNldChjW28rKyU4XSwwKToyPT09ZS5wcVN0YXRlP2UucHFTdGF0ZT0wPT09ZS5udW0uc3VidHJhY3QoaS5PTkUpLmdjZChlLmUpLmNvbXBhcmVUbyhpLk9ORSk/MzowOjM9PT1lLnBxU3RhdGUmJihlLnBxU3RhdGU9MCxudWxsPT09ZS5wP2UucD1lLm51bTplLnE9ZS5udW0sbnVsbCE9PWUucCYmbnVsbCE9PWUucSYmKytlLnN0YXRlLGUubnVtPW51bGwpfWVsc2UgaWYoMT09PWUuc3RhdGUpZS5wLmNvbXBhcmVUbyhlLnEpPDAmJihlLm51bT1lLnAsZS5wPWUucSxlLnE9ZS5udW0pLCsrZS5zdGF0ZTtlbHNlIGlmKDI9PT1lLnN0YXRlKWUucDE9ZS5wLnN1YnRyYWN0KGkuT05FKSxlLnExPWUucS5zdWJ0cmFjdChpLk9ORSksZS5waGk9ZS5wMS5tdWx0aXBseShlLnExKSwrK2Uuc3RhdGU7ZWxzZSBpZigzPT09ZS5zdGF0ZSkwPT09ZS5waGkuZ2NkKGUuZSkuY29tcGFyZVRvKGkuT05FKT8rK2Uuc3RhdGU6KGUucD1udWxsLGUucT1udWxsLGUuc3RhdGU9MCk7ZWxzZSBpZig0PT09ZS5zdGF0ZSllLm49ZS5wLm11bHRpcGx5KGUucSksZS5uLmJpdExlbmd0aCgpPT09ZS5iaXRzPysrZS5zdGF0ZTooZS5xPW51bGwsZS5zdGF0ZT0wKTtlbHNlIGlmKDU9PT1lLnN0YXRlKXt2YXIgcD1lLmUubW9kSW52ZXJzZShlLnBoaSk7ZS5rZXlzPXtwcml2YXRlS2V5OnUucnNhLnNldFByaXZhdGVLZXkoZS5uLGUuZSxwLGUucCxlLnEscC5tb2QoZS5wMSkscC5tb2QoZS5xMSksZS5xLm1vZEludmVyc2UoZS5wKSkscHVibGljS2V5OnUucnNhLnNldFB1YmxpY0tleShlLm4sZS5lKX19Zis9KG49K25ldyBEYXRlKS1zLHM9bn1yZXR1cm4gbnVsbCE9PWUua2V5c30sdS5yc2EuZ2VuZXJhdGVLZXlQYWlyPWZ1bmN0aW9uKGUsdCxyLGMpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoPyJvYmplY3QiPT09dHlwZW9mIGU/KHI9ZSxlPXZvaWQgMCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiYoYz1lLGU9dm9pZCAwKToyPT09YXJndW1lbnRzLmxlbmd0aD8ibnVtYmVyIj09PXR5cGVvZiBlPyJmdW5jdGlvbiI9PT10eXBlb2YgdD8oYz10LHQ9dm9pZCAwKToibnVtYmVyIiE9PXR5cGVvZiB0JiYocj10LHQ9dm9pZCAwKToocj1lLGM9dCxlPXZvaWQgMCx0PXZvaWQgMCk6Mz09PWFyZ3VtZW50cy5sZW5ndGgmJigibnVtYmVyIj09PXR5cGVvZiB0PyJmdW5jdGlvbiI9PT10eXBlb2YgciYmKGM9cixyPXZvaWQgMCk6KGM9cixyPXQsdD12b2lkIDApKSxyPXJ8fHt9LHZvaWQgMD09PWUmJihlPXIuYml0c3x8MjA0OCksdm9pZCAwPT09dCYmKHQ9ci5lfHw2NTUzNyksIW4ub3B0aW9ucy51c2VQdXJlSmF2YVNjcmlwdCYmIXIucHJuZyYmZT49MjU2JiZlPD0xNjM4NCYmKDY1NTM3PT09dHx8Mz09PXQpKWlmKGMpe2lmKF8oImdlbmVyYXRlS2V5UGFpciIpKXJldHVybiBvLmdlbmVyYXRlS2V5UGFpcigicnNhIix7bW9kdWx1c0xlbmd0aDplLHB1YmxpY0V4cG9uZW50OnQscHVibGljS2V5RW5jb2Rpbmc6e3R5cGU6InNwa2kiLGZvcm1hdDoicGVtIn0scHJpdmF0ZUtleUVuY29kaW5nOnt0eXBlOiJwa2NzOCIsZm9ybWF0OiJwZW0ifX0sZnVuY3Rpb24oZSx0LHIpe2lmKGUpcmV0dXJuIGMoZSk7YyhudWxsLHtwcml2YXRlS2V5OnUucHJpdmF0ZUtleUZyb21QZW0ocikscHVibGljS2V5OnUucHVibGljS2V5RnJvbVBlbSh0KX0pfSk7aWYoUygiZ2VuZXJhdGVLZXkiKSYmUygiZXhwb3J0S2V5IikpcmV0dXJuIHMuZ2xvYmFsU2NvcGUuY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUiLG1vZHVsdXNMZW5ndGg6ZSxwdWJsaWNFeHBvbmVudDp3KHQpLGhhc2g6e25hbWU6IlNIQS0yNTYifX0sITAsWyJzaWduIiwidmVyaWZ5Il0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHMuZ2xvYmFsU2NvcGUuY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoInBrY3M4IixlLnByaXZhdGVLZXkpfSkudGhlbih2b2lkIDAsZnVuY3Rpb24oZSl7YyhlKX0pLnRoZW4oZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9dS5wcml2YXRlS2V5RnJvbUFzbjEoYS5mcm9tRGVyKG4udXRpbC5jcmVhdGVCdWZmZXIoZSkpKTtjKG51bGwse3ByaXZhdGVLZXk6dCxwdWJsaWNLZXk6dS5zZXRSc2FQdWJsaWNLZXkodC5uLHQuZSl9KX19KTtpZihFKCJnZW5lcmF0ZUtleSIpJiZFKCJleHBvcnRLZXkiKSl7dmFyIGY9cy5nbG9iYWxTY29wZS5tc0NyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6IlJTQVNTQS1QS0NTMS12MV81Iixtb2R1bHVzTGVuZ3RoOmUscHVibGljRXhwb25lbnQ6dyh0KSxoYXNoOntuYW1lOiJTSEEtMjU2In19LCEwLFsic2lnbiIsInZlcmlmeSJdKTtyZXR1cm4gZi5vbmNvbXBsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LnJlc3VsdCxyPXMuZ2xvYmFsU2NvcGUubXNDcnlwdG8uc3VidGxlLmV4cG9ydEtleSgicGtjczgiLHQucHJpdmF0ZUtleSk7ci5vbmNvbXBsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LnJlc3VsdCxyPXUucHJpdmF0ZUtleUZyb21Bc24xKGEuZnJvbURlcihuLnV0aWwuY3JlYXRlQnVmZmVyKHQpKSk7YyhudWxsLHtwcml2YXRlS2V5OnIscHVibGljS2V5OnUuc2V0UnNhUHVibGljS2V5KHIubixyLmUpfSl9LHIub25lcnJvcj1mdW5jdGlvbihlKXtjKGUpfX0sdm9pZChmLm9uZXJyb3I9ZnVuY3Rpb24oZSl7YyhlKX0pfX1lbHNlIGlmKF8oImdlbmVyYXRlS2V5UGFpclN5bmMiKSl7dmFyIGw9by5nZW5lcmF0ZUtleVBhaXJTeW5jKCJyc2EiLHttb2R1bHVzTGVuZ3RoOmUscHVibGljRXhwb25lbnQ6dCxwdWJsaWNLZXlFbmNvZGluZzp7dHlwZToic3BraSIsZm9ybWF0OiJwZW0ifSxwcml2YXRlS2V5RW5jb2Rpbmc6e3R5cGU6InBrY3M4Iixmb3JtYXQ6InBlbSJ9fSk7cmV0dXJue3ByaXZhdGVLZXk6dS5wcml2YXRlS2V5RnJvbVBlbShsLnByaXZhdGVLZXkpLHB1YmxpY0tleTp1LnB1YmxpY0tleUZyb21QZW0obC5wdWJsaWNLZXkpfX12YXIgaD11LnJzYS5jcmVhdGVLZXlQYWlyR2VuZXJhdGlvblN0YXRlKGUsdCxyKTtpZighYylyZXR1cm4gdS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGUoaCwwKSxoLmtleXM7IWZ1bmN0aW9uKGUsdCxyKXsiZnVuY3Rpb24iPT09dHlwZW9mIHQmJihyPXQsdD17fSk7dmFyIG89e2FsZ29yaXRobTp7bmFtZToodD10fHx7fSkuYWxnb3JpdGhtfHwiUFJJTUVJTkMiLG9wdGlvbnM6e3dvcmtlcnM6dC53b3JrZXJzfHwyLHdvcmtMb2FkOnQud29ya0xvYWR8fDEwMCx3b3JrZXJTY3JpcHQ6dC53b3JrZXJTY3JpcHR9fX07InBybmciaW4gdCYmKG8ucHJuZz10LnBybmcpO2Z1bmN0aW9uIGEoKXtzKGUucEJpdHMsZnVuY3Rpb24odCxuKXtyZXR1cm4gdD9yKHQpOihlLnA9bixudWxsIT09ZS5xP2ModCxlLnEpOnZvaWQgcyhlLnFCaXRzLGMpKX0pfWZ1bmN0aW9uIHMoZSx0KXtuLnByaW1lLmdlbmVyYXRlUHJvYmFibGVQcmltZShlLG8sdCl9ZnVuY3Rpb24gYyh0LG4pe2lmKHQpcmV0dXJuIHIodCk7aWYoZS5xPW4sZS5wLmNvbXBhcmVUbyhlLnEpPDApe3ZhciBvPWUucDtlLnA9ZS5xLGUucT1vfWlmKDAhPT1lLnAuc3VidHJhY3QoaS5PTkUpLmdjZChlLmUpLmNvbXBhcmVUbyhpLk9ORSkpcmV0dXJuIGUucD1udWxsLHZvaWQgYSgpO2lmKDAhPT1lLnEuc3VidHJhY3QoaS5PTkUpLmdjZChlLmUpLmNvbXBhcmVUbyhpLk9ORSkpcmV0dXJuIGUucT1udWxsLHZvaWQgcyhlLnFCaXRzLGMpO2lmKGUucDE9ZS5wLnN1YnRyYWN0KGkuT05FKSxlLnExPWUucS5zdWJ0cmFjdChpLk9ORSksZS5waGk9ZS5wMS5tdWx0aXBseShlLnExKSwwIT09ZS5waGkuZ2NkKGUuZSkuY29tcGFyZVRvKGkuT05FKSlyZXR1cm4gZS5wPWUucT1udWxsLHZvaWQgYSgpO2lmKGUubj1lLnAubXVsdGlwbHkoZS5xKSxlLm4uYml0TGVuZ3RoKCkhPT1lLmJpdHMpcmV0dXJuIGUucT1udWxsLHZvaWQgcyhlLnFCaXRzLGMpO3ZhciBmPWUuZS5tb2RJbnZlcnNlKGUucGhpKTtlLmtleXM9e3ByaXZhdGVLZXk6dS5yc2Euc2V0UHJpdmF0ZUtleShlLm4sZS5lLGYsZS5wLGUucSxmLm1vZChlLnAxKSxmLm1vZChlLnExKSxlLnEubW9kSW52ZXJzZShlLnApKSxwdWJsaWNLZXk6dS5yc2Euc2V0UHVibGljS2V5KGUubixlLmUpfSxyKG51bGwsZS5rZXlzKX1hKCl9KGgscixjKX0sdS5zZXRSc2FQdWJsaWNLZXk9dS5yc2Euc2V0UHVibGljS2V5PWZ1bmN0aW9uKGUsdCl7dmFyIHI9e246ZSxlOnQsZW5jcnlwdDpmdW5jdGlvbihlLHQsaSl7aWYoInN0cmluZyI9PT10eXBlb2YgdD90PXQudG9VcHBlckNhc2UoKTp2b2lkIDA9PT10JiYodD0iUlNBRVMtUEtDUzEtVjFfNSIpLCJSU0FFUy1QS0NTMS1WMV81Ij09PXQpdD17ZW5jb2RlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZyhlLHQsMikuZ2V0Qnl0ZXMoKX19O2Vsc2UgaWYoIlJTQS1PQUVQIj09PXR8fCJSU0FFUy1PQUVQIj09PXQpdD17ZW5jb2RlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4ucGtjczEuZW5jb2RlX3JzYV9vYWVwKHQsZSxpKX19O2Vsc2UgaWYoLTEhPT1bIlJBVyIsIk5PTkUiLCJOVUxMIixudWxsXS5pbmRleE9mKHQpKXQ9e2VuY29kZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19O2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGVuY3J5cHRpb24gc2NoZW1lOiAiJyt0KyciLicpO3ZhciBvPXQuZW5jb2RlKGUsciwhMCk7cmV0dXJuIHUucnNhLmVuY3J5cHQobyxyLCEwKX0sdmVyaWZ5OmZ1bmN0aW9uKGUsdCxuKXsic3RyaW5nIj09PXR5cGVvZiBuP249bi50b1VwcGVyQ2FzZSgpOnZvaWQgMD09PW4mJihuPSJSU0FTU0EtUEtDUzEtVjFfNSIpLCJSU0FTU0EtUEtDUzEtVjFfNSI9PT1uP249e3ZlcmlmeTpmdW5jdGlvbihlLHQpe3JldHVybiB0PXYodCxyLCEwKSxlPT09YS5mcm9tRGVyKHQpLnZhbHVlWzFdLnZhbHVlfX06Ik5PTkUiIT09biYmIk5VTEwiIT09biYmbnVsbCE9PW58fChuPXt2ZXJpZnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PSh0PXYodCxyLCEwKSl9fSk7dmFyIGk9dS5yc2EuZGVjcnlwdCh0LHIsITAsITEpO3JldHVybiBuLnZlcmlmeShlLGksci5uLmJpdExlbmd0aCgpKX19O3JldHVybiByfSx1LnNldFJzYVByaXZhdGVLZXk9dS5yc2Euc2V0UHJpdmF0ZUtleT1mdW5jdGlvbihlLHQscixpLG8sYSxzLGMpe3ZhciBmPXtuOmUsZTp0LGQ6cixwOmkscTpvLGRQOmEsZFE6cyxxSW52OmMsZGVjcnlwdDpmdW5jdGlvbihlLHQscil7InN0cmluZyI9PT10eXBlb2YgdD90PXQudG9VcHBlckNhc2UoKTp2b2lkIDA9PT10JiYodD0iUlNBRVMtUEtDUzEtVjFfNSIpO3ZhciBpPXUucnNhLmRlY3J5cHQoZSxmLCExLCExKTtpZigiUlNBRVMtUEtDUzEtVjFfNSI9PT10KXQ9e2RlY29kZTp2fTtlbHNlIGlmKCJSU0EtT0FFUCI9PT10fHwiUlNBRVMtT0FFUCI9PT10KXQ9e2RlY29kZTpmdW5jdGlvbihlLHQpe3JldHVybiBuLnBrY3MxLmRlY29kZV9yc2Ffb2FlcCh0LGUscil9fTtlbHNle2lmKC0xPT09WyJSQVciLCJOT05FIiwiTlVMTCIsbnVsbF0uaW5kZXhPZih0KSl0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGVuY3J5cHRpb24gc2NoZW1lOiAiJyt0KyciLicpO3Q9e2RlY29kZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19fXJldHVybiB0LmRlY29kZShpLGYsITEpfSxzaWduOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ITE7InN0cmluZyI9PT10eXBlb2YgdCYmKHQ9dC50b1VwcGVyQ2FzZSgpKSx2b2lkIDA9PT10fHwiUlNBU1NBLVBLQ1MxLVYxXzUiPT09dD8odD17ZW5jb2RlOmR9LHI9MSk6Ik5PTkUiIT09dCYmIk5VTEwiIT09dCYmbnVsbCE9PXR8fCh0PXtlbmNvZGU6ZnVuY3Rpb24oKXtyZXR1cm4gZX19LHI9MSk7dmFyIG49dC5lbmNvZGUoZSxmLm4uYml0TGVuZ3RoKCkpO3JldHVybiB1LnJzYS5lbmNyeXB0KG4sZixyKX19O3JldHVybiBmfSx1LndyYXBSc2FQcml2YXRlS2V5PWZ1bmN0aW9uKGUpe3JldHVybiBhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuU0VRVUVOQ0UsITAsW2EuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5JTlRFR0VSLCExLGEuaW50ZWdlclRvRGVyKDApLmdldEJ5dGVzKCkpLGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5TRVFVRU5DRSwhMCxbYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk9JRCwhMSxhLm9pZFRvRGVyKHUub2lkcy5yc2FFbmNyeXB0aW9uKS5nZXRCeXRlcygpKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuTlVMTCwhMSwiIildKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuT0NURVRTVFJJTkcsITEsYS50b0RlcihlKS5nZXRCeXRlcygpKV0pfSx1LnByaXZhdGVLZXlGcm9tQXNuMT1mdW5jdGlvbihlKXt2YXIgdCxyLG8scyxjLGgscCxkLHk9e30sZz1bXTtpZihhLnZhbGlkYXRlKGUsZix5LGcpJiYoZT1hLmZyb21EZXIobi51dGlsLmNyZWF0ZUJ1ZmZlcih5LnByaXZhdGVLZXkpKSkseT17fSxnPVtdLCFhLnZhbGlkYXRlKGUsbCx5LGcpKXt2YXIgdj1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIHByaXZhdGUga2V5LiBBU04uMSBvYmplY3QgZG9lcyBub3QgY29udGFpbiBhbiBSU0FQcml2YXRlS2V5LiIpO3Rocm93IHYuZXJyb3JzPWcsdn1yZXR1cm4gdD1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleU1vZHVsdXMpLnRvSGV4KCkscj1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleVB1YmxpY0V4cG9uZW50KS50b0hleCgpLG89bi51dGlsLmNyZWF0ZUJ1ZmZlcih5LnByaXZhdGVLZXlQcml2YXRlRXhwb25lbnQpLnRvSGV4KCkscz1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleVByaW1lMSkudG9IZXgoKSxjPW4udXRpbC5jcmVhdGVCdWZmZXIoeS5wcml2YXRlS2V5UHJpbWUyKS50b0hleCgpLGg9bi51dGlsLmNyZWF0ZUJ1ZmZlcih5LnByaXZhdGVLZXlFeHBvbmVudDEpLnRvSGV4KCkscD1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleUV4cG9uZW50MikudG9IZXgoKSxkPW4udXRpbC5jcmVhdGVCdWZmZXIoeS5wcml2YXRlS2V5Q29lZmZpY2llbnQpLnRvSGV4KCksdS5zZXRSc2FQcml2YXRlS2V5KG5ldyBpKHQsMTYpLG5ldyBpKHIsMTYpLG5ldyBpKG8sMTYpLG5ldyBpKHMsMTYpLG5ldyBpKGMsMTYpLG5ldyBpKGgsMTYpLG5ldyBpKHAsMTYpLG5ldyBpKGQsMTYpKX0sdS5wcml2YXRlS2V5VG9Bc24xPXUucHJpdmF0ZUtleVRvUlNBUHJpdmF0ZUtleT1mdW5jdGlvbihlKXtyZXR1cm4gYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLlNFUVVFTkNFLCEwLFthLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxhLmludGVnZXJUb0RlcigwKS5nZXRCeXRlcygpKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxtKGUubikpLGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5JTlRFR0VSLCExLG0oZS5lKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLmQpKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxtKGUucCkpLGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5JTlRFR0VSLCExLG0oZS5xKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLmRQKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLmRRKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLnFJbnYpKV0pfSx1LnB1YmxpY0tleUZyb21Bc24xPWZ1bmN0aW9uKGUpe3ZhciB0PXt9LHI9W107aWYoYS52YWxpZGF0ZShlLHAsdCxyKSl7dmFyIG8scz1hLmRlclRvT2lkKHQucHVibGljS2V5T2lkKTtpZihzIT09dS5vaWRzLnJzYUVuY3J5cHRpb24pdGhyb3cobz1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIHB1YmxpYyBrZXkuIFVua25vd24gT0lELiIpKS5vaWQ9cyxvO2U9dC5yc2FQdWJsaWNLZXl9aWYocj1bXSwhYS52YWxpZGF0ZShlLGgsdCxyKSl0aHJvdyhvPW5ldyBFcnJvcigiQ2Fubm90IHJlYWQgcHVibGljIGtleS4gQVNOLjEgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gUlNBUHVibGljS2V5LiIpKS5lcnJvcnM9cixvO3ZhciBjPW4udXRpbC5jcmVhdGVCdWZmZXIodC5wdWJsaWNLZXlNb2R1bHVzKS50b0hleCgpLGY9bi51dGlsLmNyZWF0ZUJ1ZmZlcih0LnB1YmxpY0tleUV4cG9uZW50KS50b0hleCgpO3JldHVybiB1LnNldFJzYVB1YmxpY0tleShuZXcgaShjLDE2KSxuZXcgaShmLDE2KSl9LHUucHVibGljS2V5VG9Bc24xPXUucHVibGljS2V5VG9TdWJqZWN0UHVibGljS2V5SW5mbz1mdW5jdGlvbihlKXtyZXR1cm4gYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLlNFUVVFTkNFLCEwLFthLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuU0VRVUVOQ0UsITAsW2EuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5PSUQsITEsYS5vaWRUb0Rlcih1Lm9pZHMucnNhRW5jcnlwdGlvbikuZ2V0Qnl0ZXMoKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk5VTEwsITEsIiIpXSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLkJJVFNUUklORywhMSxbdS5wdWJsaWNLZXlUb1JTQVB1YmxpY0tleShlKV0pXSl9LHUucHVibGljS2V5VG9SU0FQdWJsaWNLZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5TRVFVRU5DRSwhMCxbYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLm4pKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxtKGUuZSkpXSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG4saT1yKDYpO2UuZXhwb3J0cz1pLmpzYm49aS5qc2JufHx7fTtmdW5jdGlvbiBvKGUsdCxyKXt0aGlzLmRhdGE9W10sbnVsbCE9ZSYmKCJudW1iZXIiPT10eXBlb2YgZT90aGlzLmZyb21OdW1iZXIoZSx0LHIpOm51bGw9PXQmJiJzdHJpbmciIT10eXBlb2YgZT90aGlzLmZyb21TdHJpbmcoZSwyNTYpOnRoaXMuZnJvbVN0cmluZyhlLHQpKX1mdW5jdGlvbiBhKCl7cmV0dXJuIG5ldyBvKG51bGwpfWZ1bmN0aW9uIHMoZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0xNjM4MyZ0LHM9dD4+MTQ7LS1vPj0wOyl7dmFyIHU9MTYzODMmdGhpcy5kYXRhW2VdLGM9dGhpcy5kYXRhW2UrK10+PjE0LGY9cyp1K2MqYTtpPSgodT1hKnUrKCgxNjM4MyZmKTw8MTQpK3IuZGF0YVtuXStpKT4+MjgpKyhmPj4xNCkrcypjLHIuZGF0YVtuKytdPTI2ODQzNTQ1NSZ1fXJldHVybiBpfWkuanNibi5CaWdJbnRlZ2VyPW8sInVuZGVmaW5lZCI9PT10eXBlb2YgbmF2aWdhdG9yPyhvLnByb3RvdHlwZS5hbT1zLG49MjgpOiJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIiPT1uYXZpZ2F0b3IuYXBwTmFtZT8oby5wcm90b3R5cGUuYW09ZnVuY3Rpb24oZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0zMjc2NyZ0LHM9dD4+MTU7LS1vPj0wOyl7dmFyIHU9MzI3NjcmdGhpcy5kYXRhW2VdLGM9dGhpcy5kYXRhW2UrK10+PjE1LGY9cyp1K2MqYTtpPSgodT1hKnUrKCgzMjc2NyZmKTw8MTUpK3IuZGF0YVtuXSsoMTA3Mzc0MTgyMyZpKSk+Pj4zMCkrKGY+Pj4xNSkrcypjKyhpPj4+MzApLHIuZGF0YVtuKytdPTEwNzM3NDE4MjMmdX1yZXR1cm4gaX0sbj0zMCk6Ik5ldHNjYXBlIiE9bmF2aWdhdG9yLmFwcE5hbWU/KG8ucHJvdG90eXBlLmFtPWZ1bmN0aW9uKGUsdCxyLG4saSxvKXtmb3IoOy0tbz49MDspe3ZhciBhPXQqdGhpcy5kYXRhW2UrK10rci5kYXRhW25dK2k7aT1NYXRoLmZsb29yKGEvNjcxMDg4NjQpLHIuZGF0YVtuKytdPTY3MTA4ODYzJmF9cmV0dXJuIGl9LG49MjYpOihvLnByb3RvdHlwZS5hbT1zLG49MjgpLG8ucHJvdG90eXBlLkRCPW4sby5wcm90b3R5cGUuRE09KDE8PG4pLTEsby5wcm90b3R5cGUuRFY9MTw8bjtvLnByb3RvdHlwZS5GVj1NYXRoLnBvdygyLDUyKSxvLnByb3RvdHlwZS5GMT01Mi1uLG8ucHJvdG90eXBlLkYyPTIqbi01Mjt2YXIgdSxjLGY9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsbD1uZXcgQXJyYXk7Zm9yKHU9IjAiLmNoYXJDb2RlQXQoMCksYz0wO2M8PTk7KytjKWxbdSsrXT1jO2Zvcih1PSJhIi5jaGFyQ29kZUF0KDApLGM9MTA7YzwzNjsrK2MpbFt1KytdPWM7Zm9yKHU9IkEiLmNoYXJDb2RlQXQoMCksYz0xMDtjPDM2OysrYylsW3UrK109YztmdW5jdGlvbiBoKGUpe3JldHVybiBmLmNoYXJBdChlKX1mdW5jdGlvbiBwKGUsdCl7dmFyIHI9bFtlLmNoYXJDb2RlQXQodCldO3JldHVybiBudWxsPT1yPy0xOnJ9ZnVuY3Rpb24gZChlKXt2YXIgdD1hKCk7cmV0dXJuIHQuZnJvbUludChlKSx0fWZ1bmN0aW9uIHkoZSl7dmFyIHQscj0xO3JldHVybiAwIT0odD1lPj4+MTYpJiYoZT10LHIrPTE2KSwwIT0odD1lPj44KSYmKGU9dCxyKz04KSwwIT0odD1lPj40KSYmKGU9dCxyKz00KSwwIT0odD1lPj4yKSYmKGU9dCxyKz0yKSwwIT0odD1lPj4xKSYmKGU9dCxyKz0xKSxyfWZ1bmN0aW9uIGcoZSl7dGhpcy5tPWV9ZnVuY3Rpb24gdihlKXt0aGlzLm09ZSx0aGlzLm1wPWUuaW52RGlnaXQoKSx0aGlzLm1wbD0zMjc2NyZ0aGlzLm1wLHRoaXMubXBoPXRoaXMubXA+PjE1LHRoaXMudW09KDE8PGUuREItMTUpLTEsdGhpcy5tdDI9MiplLnR9ZnVuY3Rpb24gbShlLHQpe3JldHVybiBlJnR9ZnVuY3Rpb24gYihlLHQpe3JldHVybiBlfHR9ZnVuY3Rpb24gXyhlLHQpe3JldHVybiBlXnR9ZnVuY3Rpb24gUyhlLHQpe3JldHVybiBlJn50fWZ1bmN0aW9uIEUoZSl7aWYoMD09ZSlyZXR1cm4tMTt2YXIgdD0wO3JldHVybiAwPT0oNjU1MzUmZSkmJihlPj49MTYsdCs9MTYpLDA9PSgyNTUmZSkmJihlPj49OCx0Kz04KSwwPT0oMTUmZSkmJihlPj49NCx0Kz00KSwwPT0oMyZlKSYmKGU+Pj0yLHQrPTIpLDA9PSgxJmUpJiYrK3QsdH1mdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD0wOzAhPWU7KWUmPWUtMSwrK3Q7cmV0dXJuIHR9ZnVuY3Rpb24gVCgpe31mdW5jdGlvbiBBKGUpe3JldHVybiBlfWZ1bmN0aW9uIEMoZSl7dGhpcy5yMj1hKCksdGhpcy5xMz1hKCksby5PTkUuZGxTaGlmdFRvKDIqZS50LHRoaXMucjIpLHRoaXMubXU9dGhpcy5yMi5kaXZpZGUoZSksdGhpcy5tPWV9Zy5wcm90b3R5cGUuY29udmVydD1mdW5jdGlvbihlKXtyZXR1cm4gZS5zPDB8fGUuY29tcGFyZVRvKHRoaXMubSk+PTA/ZS5tb2QodGhpcy5tKTplfSxnLnByb3RvdHlwZS5yZXZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGcucHJvdG90eXBlLnJlZHVjZT1mdW5jdGlvbihlKXtlLmRpdlJlbVRvKHRoaXMubSxudWxsLGUpfSxnLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihlLHQscil7ZS5tdWx0aXBseVRvKHQsciksdGhpcy5yZWR1Y2Uocil9LGcucHJvdG90eXBlLnNxclRvPWZ1bmN0aW9uKGUsdCl7ZS5zcXVhcmVUbyh0KSx0aGlzLnJlZHVjZSh0KX0sdi5wcm90b3R5cGUuY29udmVydD1mdW5jdGlvbihlKXt2YXIgdD1hKCk7cmV0dXJuIGUuYWJzKCkuZGxTaGlmdFRvKHRoaXMubS50LHQpLHQuZGl2UmVtVG8odGhpcy5tLG51bGwsdCksZS5zPDAmJnQuY29tcGFyZVRvKG8uWkVSTyk+MCYmdGhpcy5tLnN1YlRvKHQsdCksdH0sdi5wcm90b3R5cGUucmV2ZXJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWEoKTtyZXR1cm4gZS5jb3B5VG8odCksdGhpcy5yZWR1Y2UodCksdH0sdi5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKGUpe2Zvcig7ZS50PD10aGlzLm10MjspZS5kYXRhW2UudCsrXT0wO2Zvcih2YXIgdD0wO3Q8dGhpcy5tLnQ7Kyt0KXt2YXIgcj0zMjc2NyZlLmRhdGFbdF0sbj1yKnRoaXMubXBsKygocip0aGlzLm1waCsoZS5kYXRhW3RdPj4xNSkqdGhpcy5tcGwmdGhpcy51bSk8PDE1KSZlLkRNO2ZvcihyPXQrdGhpcy5tLnQsZS5kYXRhW3JdKz10aGlzLm0uYW0oMCxuLGUsdCwwLHRoaXMubS50KTtlLmRhdGFbcl0+PWUuRFY7KWUuZGF0YVtyXS09ZS5EVixlLmRhdGFbKytyXSsrfWUuY2xhbXAoKSxlLmRyU2hpZnRUbyh0aGlzLm0udCxlKSxlLmNvbXBhcmVUbyh0aGlzLm0pPj0wJiZlLnN1YlRvKHRoaXMubSxlKX0sdi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oZSx0LHIpe2UubXVsdGlwbHlUbyh0LHIpLHRoaXMucmVkdWNlKHIpfSx2LnByb3RvdHlwZS5zcXJUbz1mdW5jdGlvbihlLHQpe2Uuc3F1YXJlVG8odCksdGhpcy5yZWR1Y2UodCl9LG8ucHJvdG90eXBlLmNvcHlUbz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50LTE7dD49MDstLXQpZS5kYXRhW3RdPXRoaXMuZGF0YVt0XTtlLnQ9dGhpcy50LGUucz10aGlzLnN9LG8ucHJvdG90eXBlLmZyb21JbnQ9ZnVuY3Rpb24oZSl7dGhpcy50PTEsdGhpcy5zPWU8MD8tMTowLGU+MD90aGlzLmRhdGFbMF09ZTplPC0xP3RoaXMuZGF0YVswXT1lK3RoaXMuRFY6dGhpcy50PTB9LG8ucHJvdG90eXBlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZigxNj09dClyPTQ7ZWxzZSBpZig4PT10KXI9MztlbHNlIGlmKDI1Nj09dClyPTg7ZWxzZSBpZigyPT10KXI9MTtlbHNlIGlmKDMyPT10KXI9NTtlbHNle2lmKDQhPXQpcmV0dXJuIHZvaWQgdGhpcy5mcm9tUmFkaXgoZSx0KTtyPTJ9dGhpcy50PTAsdGhpcy5zPTA7Zm9yKHZhciBuPWUubGVuZ3RoLGk9ITEsYT0wOy0tbj49MDspe3ZhciBzPTg9PXI/MjU1JmVbbl06cChlLG4pO3M8MD8iLSI9PWUuY2hhckF0KG4pJiYoaT0hMCk6KGk9ITEsMD09YT90aGlzLmRhdGFbdGhpcy50KytdPXM6YStyPnRoaXMuREI/KHRoaXMuZGF0YVt0aGlzLnQtMV18PShzJigxPDx0aGlzLkRCLWEpLTEpPDxhLHRoaXMuZGF0YVt0aGlzLnQrK109cz4+dGhpcy5EQi1hKTp0aGlzLmRhdGFbdGhpcy50LTFdfD1zPDxhLChhKz1yKT49dGhpcy5EQiYmKGEtPXRoaXMuREIpKX04PT1yJiYwIT0oMTI4JmVbMF0pJiYodGhpcy5zPS0xLGE+MCYmKHRoaXMuZGF0YVt0aGlzLnQtMV18PSgxPDx0aGlzLkRCLWEpLTE8PGEpKSx0aGlzLmNsYW1wKCksaSYmby5aRVJPLnN1YlRvKHRoaXMsdGhpcyl9LG8ucHJvdG90eXBlLmNsYW1wPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMucyZ0aGlzLkRNO3RoaXMudD4wJiZ0aGlzLmRhdGFbdGhpcy50LTFdPT1lOyktLXRoaXMudH0sby5wcm90b3R5cGUuZGxTaGlmdFRvPWZ1bmN0aW9uKGUsdCl7dmFyIHI7Zm9yKHI9dGhpcy50LTE7cj49MDstLXIpdC5kYXRhW3IrZV09dGhpcy5kYXRhW3JdO2ZvcihyPWU=",
    "2020.01.10 15:21": "base64:LDIsNjIsMzAsLTIsNjQsOTYsMl07dmFyIHk9dFswXSxnPXRbMV07eV49KHA9MjUyNjQ1MTM1Jih5Pj4+NF5nKSk8PDQseV49KHA9NjU1MzUmKHk+Pj4xNl4oZ149cCkpKTw8MTYseV49cD04NTg5OTM0NTkmKChnXj1wKT4+PjJeeSkseV49cD0xNjcxMTkzNSYoKGdePXA8PDIpPj4+OF55KSx5PSh5Xj0ocD0xNDMxNjU1NzY1Jih5Pj4+MV4oZ149cDw8OCkpKTw8MSk8PDF8eT4+PjMxLGc9KGdePXApPDwxfGc+Pj4zMTtmb3IodmFyIHY9MDt2PGQ7dis9Myl7Zm9yKHZhciBtPWlbdisxXSxiPWlbdisyXSxfPWlbdl07XyE9bTtfKz1iKXt2YXIgUz1nXmVbX10sRT0oZz4+PjR8Zzw8MjgpXmVbXysxXTtwPXkseT1nLGc9cF4oYVtTPj4+MjQmNjNdfHVbUz4+PjE2JjYzXXxmW1M+Pj44JjYzXXxoWzYzJlNdfG9bRT4+PjI0JjYzXXxzW0U+Pj4xNiY2M118Y1tFPj4+OCY2M118bFs2MyZFXSl9cD15LHk9ZyxnPXB9Zz1nPj4+MXxnPDwzMSxnXj1wPTE0MzE2NTU3NjUmKCh5PXk+Pj4xfHk8PDMxKT4+PjFeZyksZ149KHA9MTY3MTE5MzUmKGc+Pj44Xih5Xj1wPDwxKSkpPDw4LGdePShwPTg1ODk5MzQ1OSYoZz4+PjJeKHlePXApKSk8PDIsZ149cD02NTUzNSYoKHlePXApPj4+MTZeZyksZ149cD0yNTI2NDUxMzUmKCh5Xj1wPDwxNik+Pj40XmcpLHlePXA8PDQsclswXT15LHJbMV09Z31mdW5jdGlvbiBkKGUpe3ZhciB0LHI9IkRFUy0iKygoZT1lfHx7fSkubW9kZXx8IkNCQyIpLnRvVXBwZXJDYXNlKCksaT0odD1lLmRlY3J5cHQ/bi5jaXBoZXIuY3JlYXRlRGVjaXBoZXIocixlLmtleSk6bi5jaXBoZXIuY3JlYXRlQ2lwaGVyKHIsZS5rZXkpKS5zdGFydDtyZXR1cm4gdC5zdGFydD1mdW5jdGlvbihlLHIpe3ZhciBvPW51bGw7ciBpbnN0YW5jZW9mIG4udXRpbC5CeXRlQnVmZmVyJiYobz1yLHI9e30pLChyPXJ8fHt9KS5vdXRwdXQ9byxyLml2PWUsaS5jYWxsKHQscil9LHR9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtpZihyKDY1KSxyKDE2NCkscig5MCkscigzNTEpLHIoMzUyKSxyKDUyKSxyKDEwKSwidW5kZWZpbmVkIj09PXR5cGVvZiBpKXZhciBpPW4uanNibi5CaWdJbnRlZ2VyO3ZhciBvPW4udXRpbC5pc05vZGVqcz9yKDIyNCk6bnVsbCxhPW4uYXNuMSxzPW4udXRpbDtuLnBraT1uLnBraXx8e30sZS5leHBvcnRzPW4ucGtpLnJzYT1uLnJzYT1uLnJzYXx8e307dmFyIHU9bi5wa2ksYz1bNiw0LDIsNCwyLDQsNiwyXSxmPXtuYW1lOiJQcml2YXRlS2V5SW5mbyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJQcml2YXRlS2V5SW5mby52ZXJzaW9uIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlWZXJzaW9uIn0se25hbWU6IlByaXZhdGVLZXlJbmZvLnByaXZhdGVLZXlBbGdvcml0aG0iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5T2lkIn1dfSx7bmFtZToiUHJpdmF0ZUtleUluZm8iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLk9DVEVUU1RSSU5HLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXkifV19LGw9e25hbWU6IlJTQVByaXZhdGVLZXkiLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiUlNBUHJpdmF0ZUtleS52ZXJzaW9uIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlWZXJzaW9uIn0se25hbWU6IlJTQVByaXZhdGVLZXkubW9kdWx1cyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5TW9kdWx1cyJ9LHtuYW1lOiJSU0FQcml2YXRlS2V5LnB1YmxpY0V4cG9uZW50Iix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlQdWJsaWNFeHBvbmVudCJ9LHtuYW1lOiJSU0FQcml2YXRlS2V5LnByaXZhdGVFeHBvbmVudCIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5UHJpdmF0ZUV4cG9uZW50In0se25hbWU6IlJTQVByaXZhdGVLZXkucHJpbWUxIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlQcmltZTEifSx7bmFtZToiUlNBUHJpdmF0ZUtleS5wcmltZTIiLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLklOVEVHRVIsY29uc3RydWN0ZWQ6ITEsY2FwdHVyZToicHJpdmF0ZUtleVByaW1lMiJ9LHtuYW1lOiJSU0FQcml2YXRlS2V5LmV4cG9uZW50MSIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5RXhwb25lbnQxIn0se25hbWU6IlJTQVByaXZhdGVLZXkuZXhwb25lbnQyIix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5JTlRFR0VSLGNvbnN0cnVjdGVkOiExLGNhcHR1cmU6InByaXZhdGVLZXlFeHBvbmVudDIifSx7bmFtZToiUlNBUHJpdmF0ZUtleS5jb2VmZmljaWVudCIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwcml2YXRlS2V5Q29lZmZpY2llbnQifV19LGg9e25hbWU6IlJTQVB1YmxpY0tleSIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsdmFsdWU6W3tuYW1lOiJSU0FQdWJsaWNLZXkubW9kdWx1cyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwdWJsaWNLZXlNb2R1bHVzIn0se25hbWU6IlJTQVB1YmxpY0tleS5leHBvbmVudCIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuSU5URUdFUixjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwdWJsaWNLZXlFeHBvbmVudCJ9XX0scD1uLnBraS5yc2EucHVibGljS2V5VmFsaWRhdG9yPXtuYW1lOiJTdWJqZWN0UHVibGljS2V5SW5mbyIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsY2FwdHVyZUFzbjE6InN1YmplY3RQdWJsaWNLZXlJbmZvIix2YWx1ZTpbe25hbWU6IlN1YmplY3RQdWJsaWNLZXlJbmZvLkFsZ29yaXRobUlkZW50aWZpZXIiLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLlNFUVVFTkNFLGNvbnN0cnVjdGVkOiEwLHZhbHVlOlt7bmFtZToiQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0iLHRhZ0NsYXNzOmEuQ2xhc3MuVU5JVkVSU0FMLHR5cGU6YS5UeXBlLk9JRCxjb25zdHJ1Y3RlZDohMSxjYXB0dXJlOiJwdWJsaWNLZXlPaWQifV19LHtuYW1lOiJTdWJqZWN0UHVibGljS2V5SW5mby5zdWJqZWN0UHVibGljS2V5Iix0YWdDbGFzczphLkNsYXNzLlVOSVZFUlNBTCx0eXBlOmEuVHlwZS5CSVRTVFJJTkcsY29uc3RydWN0ZWQ6ITEsdmFsdWU6W3tuYW1lOiJTdWJqZWN0UHVibGljS2V5SW5mby5zdWJqZWN0UHVibGljS2V5LlJTQVB1YmxpY0tleSIsdGFnQ2xhc3M6YS5DbGFzcy5VTklWRVJTQUwsdHlwZTphLlR5cGUuU0VRVUVOQ0UsY29uc3RydWN0ZWQ6ITAsb3B0aW9uYWw6ITAsY2FwdHVyZUFzbjE6InJzYVB1YmxpY0tleSJ9XX1dfSxkPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCEoZS5hbGdvcml0aG0gaW4gdS5vaWRzKSl7dmFyIHI9bmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobS4iKTt0aHJvdyByLmFsZ29yaXRobT1lLmFsZ29yaXRobSxyfXQ9dS5vaWRzW2UuYWxnb3JpdGhtXTt2YXIgbj1hLm9pZFRvRGVyKHQpLmdldEJ5dGVzKCksaT1hLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuU0VRVUVOQ0UsITAsW10pLG89YS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLlNFUVVFTkNFLCEwLFtdKTtvLnZhbHVlLnB1c2goYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk9JRCwhMSxuKSksby52YWx1ZS5wdXNoKGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5OVUxMLCExLCIiKSk7dmFyIHM9YS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk9DVEVUU1RSSU5HLCExLGUuZGlnZXN0KCkuZ2V0Qnl0ZXMoKSk7cmV0dXJuIGkudmFsdWUucHVzaChvKSxpLnZhbHVlLnB1c2gocyksYS50b0RlcihpKS5nZXRCeXRlcygpfSx5PWZ1bmN0aW9uKGUsdCxyKXtpZihyKXJldHVybiBlLm1vZFBvdyh0LmUsdC5uKTtpZighdC5wfHwhdC5xKXJldHVybiBlLm1vZFBvdyh0LmQsdC5uKTt2YXIgbzt0LmRQfHwodC5kUD10LmQubW9kKHQucC5zdWJ0cmFjdChpLk9ORSkpKSx0LmRRfHwodC5kUT10LmQubW9kKHQucS5zdWJ0cmFjdChpLk9ORSkpKSx0LnFJbnZ8fCh0LnFJbnY9dC5xLm1vZEludmVyc2UodC5wKSk7ZG97bz1uZXcgaShuLnV0aWwuYnl0ZXNUb0hleChuLnJhbmRvbS5nZXRCeXRlcyh0Lm4uYml0TGVuZ3RoKCkvOCkpLDE2KX13aGlsZShvLmNvbXBhcmVUbyh0Lm4pPj0wfHwhby5nY2QodC5uKS5lcXVhbHMoaS5PTkUpKTtmb3IodmFyIGE9KGU9ZS5tdWx0aXBseShvLm1vZFBvdyh0LmUsdC5uKSkubW9kKHQubikpLm1vZCh0LnApLm1vZFBvdyh0LmRQLHQucCkscz1lLm1vZCh0LnEpLm1vZFBvdyh0LmRRLHQucSk7YS5jb21wYXJlVG8ocyk8MDspYT1hLmFkZCh0LnApO3ZhciB1PWEuc3VidHJhY3QocykubXVsdGlwbHkodC5xSW52KS5tb2QodC5wKS5tdWx0aXBseSh0LnEpLmFkZChzKTtyZXR1cm4gdT11Lm11bHRpcGx5KG8ubW9kSW52ZXJzZSh0Lm4pKS5tb2QodC5uKX07ZnVuY3Rpb24gZyhlLHQscil7dmFyIGk9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLG89TWF0aC5jZWlsKHQubi5iaXRMZW5ndGgoKS84KTtpZihlLmxlbmd0aD5vLTExKXt2YXIgYT1uZXcgRXJyb3IoIk1lc3NhZ2UgaXMgdG9vIGxvbmcgZm9yIFBLQ1MjMSB2MS41IHBhZGRpbmcuIik7dGhyb3cgYS5sZW5ndGg9ZS5sZW5ndGgsYS5tYXg9by0xMSxhfWkucHV0Qnl0ZSgwKSxpLnB1dEJ5dGUocik7dmFyIHMsdT1vLTMtZS5sZW5ndGg7aWYoMD09PXJ8fDE9PT1yKXtzPTA9PT1yPzA6MjU1O2Zvcih2YXIgYz0wO2M8dTsrK2MpaS5wdXRCeXRlKHMpfWVsc2UgZm9yKDt1PjA7KXt2YXIgZj0wLGw9bi5yYW5kb20uZ2V0Qnl0ZXModSk7Zm9yKGM9MDtjPHU7KytjKTA9PT0ocz1sLmNoYXJDb2RlQXQoYykpPysrZjppLnB1dEJ5dGUocyk7dT1mfXJldHVybiBpLnB1dEJ5dGUoMCksaS5wdXRCeXRlcyhlKSxpfWZ1bmN0aW9uIHYoZSx0LHIsaSl7dmFyIG89TWF0aC5jZWlsKHQubi5iaXRMZW5ndGgoKS84KSxhPW4udXRpbC5jcmVhdGVCdWZmZXIoZSkscz1hLmdldEJ5dGUoKSx1PWEuZ2V0Qnl0ZSgpO2lmKDAhPT1zfHxyJiYwIT09dSYmMSE9PXV8fCFyJiYyIT11fHxyJiYwPT09dSYmInVuZGVmaW5lZCI9PT10eXBlb2YgaSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gYmxvY2sgaXMgaW52YWxpZC4iKTt2YXIgYz0wO2lmKDA9PT11KXtjPW8tMy1pO2Zvcih2YXIgZj0wO2Y8YzsrK2YpaWYoMCE9PWEuZ2V0Qnl0ZSgpKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbiBibG9jayBpcyBpbnZhbGlkLiIpfWVsc2UgaWYoMT09PXUpZm9yKGM9MDthLmxlbmd0aCgpPjE7KXtpZigyNTUhPT1hLmdldEJ5dGUoKSl7LS1hLnJlYWQ7YnJlYWt9KytjfWVsc2UgaWYoMj09PXUpZm9yKGM9MDthLmxlbmd0aCgpPjE7KXtpZigwPT09YS5nZXRCeXRlKCkpey0tYS5yZWFkO2JyZWFrfSsrY31pZigwIT09YS5nZXRCeXRlKCl8fGMhPT1vLTMtYS5sZW5ndGgoKSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gYmxvY2sgaXMgaW52YWxpZC4iKTtyZXR1cm4gYS5nZXRCeXRlcygpfWZ1bmN0aW9uIG0oZSl7dmFyIHQ9ZS50b1N0cmluZygxNik7dFswXT49IjgiJiYodD0iMDAiK3QpO3ZhciByPW4udXRpbC5oZXhUb0J5dGVzKHQpO3JldHVybiByLmxlbmd0aD4xJiYoMD09PXIuY2hhckNvZGVBdCgwKSYmMD09PSgxMjgmci5jaGFyQ29kZUF0KDEpKXx8MjU1PT09ci5jaGFyQ29kZUF0KDApJiYxMjg9PT0oMTI4JnIuY2hhckNvZGVBdCgxKSkpP3Iuc3Vic3RyKDEpOnJ9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZTw9MTAwPzI3OmU8PTE1MD8xODplPD0yMDA/MTU6ZTw9MjUwPzEyOmU8PTMwMD85OmU8PTM1MD84OmU8PTQwMD83OmU8PTUwMD82OmU8PTYwMD81OmU8PTgwMD80OmU8PTEyNTA/MzoyfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIG4udXRpbC5pc05vZGVqcyYmImZ1bmN0aW9uIj09PXR5cGVvZiBvW2VdfWZ1bmN0aW9uIFMoZSl7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2Ygcy5nbG9iYWxTY29wZSYmIm9iamVjdCI9PT10eXBlb2Ygcy5nbG9iYWxTY29wZS5jcnlwdG8mJiJvYmplY3QiPT09dHlwZW9mIHMuZ2xvYmFsU2NvcGUuY3J5cHRvLnN1YnRsZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLmNyeXB0by5zdWJ0bGVbZV19ZnVuY3Rpb24gRShlKXtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBzLmdsb2JhbFNjb3BlJiYib2JqZWN0Ij09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLm1zQ3J5cHRvJiYib2JqZWN0Ij09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLm1zQ3J5cHRvLnN1YnRsZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBzLmdsb2JhbFNjb3BlLm1zQ3J5cHRvLnN1YnRsZVtlXX1mdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD1uLnV0aWwuaGV4VG9CeXRlcyhlLnRvU3RyaW5nKDE2KSkscj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksaT0wO2k8dC5sZW5ndGg7KytpKXJbaV09dC5jaGFyQ29kZUF0KGkpO3JldHVybiByfXUucnNhLmVuY3J5cHQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvLGE9cixzPU1hdGguY2VpbCh0Lm4uYml0TGVuZ3RoKCkvOCk7ITEhPT1yJiYhMCE9PXI/KGE9Mj09PXIsbz1nKGUsdCxyKSk6KG89bi51dGlsLmNyZWF0ZUJ1ZmZlcigpKS5wdXRCeXRlcyhlKTtmb3IodmFyIHU9bmV3IGkoby50b0hleCgpLDE2KSxjPXkodSx0LGEpLnRvU3RyaW5nKDE2KSxmPW4udXRpbC5jcmVhdGVCdWZmZXIoKSxsPXMtTWF0aC5jZWlsKGMubGVuZ3RoLzIpO2w+MDspZi5wdXRCeXRlKDApLC0tbDtyZXR1cm4gZi5wdXRCeXRlcyhuLnV0aWwuaGV4VG9CeXRlcyhjKSksZi5nZXRCeXRlcygpfSx1LnJzYS5kZWNyeXB0PWZ1bmN0aW9uKGUsdCxyLG8pe3ZhciBhPU1hdGguY2VpbCh0Lm4uYml0TGVuZ3RoKCkvOCk7aWYoZS5sZW5ndGghPT1hKXt2YXIgcz1uZXcgRXJyb3IoIkVuY3J5cHRlZCBtZXNzYWdlIGxlbmd0aCBpcyBpbnZhbGlkLiIpO3Rocm93IHMubGVuZ3RoPWUubGVuZ3RoLHMuZXhwZWN0ZWQ9YSxzfXZhciB1PW5ldyBpKG4udXRpbC5jcmVhdGVCdWZmZXIoZSkudG9IZXgoKSwxNik7aWYodS5jb21wYXJlVG8odC5uKT49MCl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRlZCBtZXNzYWdlIGlzIGludmFsaWQuIik7Zm9yKHZhciBjPXkodSx0LHIpLnRvU3RyaW5nKDE2KSxmPW4udXRpbC5jcmVhdGVCdWZmZXIoKSxsPWEtTWF0aC5jZWlsKGMubGVuZ3RoLzIpO2w+MDspZi5wdXRCeXRlKDApLC0tbDtyZXR1cm4gZi5wdXRCeXRlcyhuLnV0aWwuaGV4VG9CeXRlcyhjKSksITEhPT1vP3YoZi5nZXRCeXRlcygpLHQscik6Zi5nZXRCeXRlcygpfSx1LnJzYS5jcmVhdGVLZXlQYWlyR2VuZXJhdGlvblN0YXRlPWZ1bmN0aW9uKGUsdCxyKXsic3RyaW5nIj09PXR5cGVvZiBlJiYoZT1wYXJzZUludChlLDEwKSksZT1lfHwyMDQ4O3ZhciBvLGE9KHI9cnx8e30pLnBybmd8fG4ucmFuZG9tLHM9e25leHRCeXRlczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9YS5nZXRCeXRlc1N5bmMoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoOysrcillW3JdPXQuY2hhckNvZGVBdChyKX19LHU9ci5hbGdvcml0aG18fCJQUklNRUlOQyI7aWYoIlBSSU1FSU5DIiE9PXUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGtleSBnZW5lcmF0aW9uIGFsZ29yaXRobTogIit1KTtyZXR1cm4obz17YWxnb3JpdGhtOnUsc3RhdGU6MCxiaXRzOmUscm5nOnMsZUludDp0fHw2NTUzNyxlOm5ldyBpKG51bGwpLHA6bnVsbCxxOm51bGwscUJpdHM6ZT4+MSxwQml0czplLShlPj4xKSxwcVN0YXRlOjAsbnVtOm51bGwsa2V5czpudWxsfSkuZS5mcm9tSW50KG8uZUludCksb30sdS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGU9ZnVuY3Rpb24oZSx0KXsiYWxnb3JpdGhtImluIGV8fChlLmFsZ29yaXRobT0iUFJJTUVJTkMiKTt2YXIgcj1uZXcgaShudWxsKTtyLmZyb21JbnQoMzApO2Zvcih2YXIgbixvPTAsYT1mdW5jdGlvbihlLHQpe3JldHVybiBlfHR9LHM9K25ldyBEYXRlLGY9MDtudWxsPT09ZS5rZXlzJiYodDw9MHx8Zjx0KTspe2lmKDA9PT1lLnN0YXRlKXt2YXIgbD1udWxsPT09ZS5wP2UucEJpdHM6ZS5xQml0cyxoPWwtMTswPT09ZS5wcVN0YXRlPyhlLm51bT1uZXcgaShsLGUucm5nKSxlLm51bS50ZXN0Qml0KGgpfHxlLm51bS5iaXR3aXNlVG8oaS5PTkUuc2hpZnRMZWZ0KGgpLGEsZS5udW0pLGUubnVtLmRBZGRPZmZzZXQoMzEtZS5udW0ubW9kKHIpLmJ5dGVWYWx1ZSgpLDApLG89MCwrK2UucHFTdGF0ZSk6MT09PWUucHFTdGF0ZT9lLm51bS5iaXRMZW5ndGgoKT5sP2UucHFTdGF0ZT0wOmUubnVtLmlzUHJvYmFibGVQcmltZShiKGUubnVtLmJpdExlbmd0aCgpKSk/KytlLnBxU3RhdGU6ZS5udW0uZEFkZE9mZnNldChjW28rKyU4XSwwKToyPT09ZS5wcVN0YXRlP2UucHFTdGF0ZT0wPT09ZS5udW0uc3VidHJhY3QoaS5PTkUpLmdjZChlLmUpLmNvbXBhcmVUbyhpLk9ORSk/MzowOjM9PT1lLnBxU3RhdGUmJihlLnBxU3RhdGU9MCxudWxsPT09ZS5wP2UucD1lLm51bTplLnE9ZS5udW0sbnVsbCE9PWUucCYmbnVsbCE9PWUucSYmKytlLnN0YXRlLGUubnVtPW51bGwpfWVsc2UgaWYoMT09PWUuc3RhdGUpZS5wLmNvbXBhcmVUbyhlLnEpPDAmJihlLm51bT1lLnAsZS5wPWUucSxlLnE9ZS5udW0pLCsrZS5zdGF0ZTtlbHNlIGlmKDI9PT1lLnN0YXRlKWUucDE9ZS5wLnN1YnRyYWN0KGkuT05FKSxlLnExPWUucS5zdWJ0cmFjdChpLk9ORSksZS5waGk9ZS5wMS5tdWx0aXBseShlLnExKSwrK2Uuc3RhdGU7ZWxzZSBpZigzPT09ZS5zdGF0ZSkwPT09ZS5waGkuZ2NkKGUuZSkuY29tcGFyZVRvKGkuT05FKT8rK2Uuc3RhdGU6KGUucD1udWxsLGUucT1udWxsLGUuc3RhdGU9MCk7ZWxzZSBpZig0PT09ZS5zdGF0ZSllLm49ZS5wLm11bHRpcGx5KGUucSksZS5uLmJpdExlbmd0aCgpPT09ZS5iaXRzPysrZS5zdGF0ZTooZS5xPW51bGwsZS5zdGF0ZT0wKTtlbHNlIGlmKDU9PT1lLnN0YXRlKXt2YXIgcD1lLmUubW9kSW52ZXJzZShlLnBoaSk7ZS5rZXlzPXtwcml2YXRlS2V5OnUucnNhLnNldFByaXZhdGVLZXkoZS5uLGUuZSxwLGUucCxlLnEscC5tb2QoZS5wMSkscC5tb2QoZS5xMSksZS5xLm1vZEludmVyc2UoZS5wKSkscHVibGljS2V5OnUucnNhLnNldFB1YmxpY0tleShlLm4sZS5lKX19Zis9KG49K25ldyBEYXRlKS1zLHM9bn1yZXR1cm4gbnVsbCE9PWUua2V5c30sdS5yc2EuZ2VuZXJhdGVLZXlQYWlyPWZ1bmN0aW9uKGUsdCxyLGMpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoPyJvYmplY3QiPT09dHlwZW9mIGU/KHI9ZSxlPXZvaWQgMCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiYoYz1lLGU9dm9pZCAwKToyPT09YXJndW1lbnRzLmxlbmd0aD8ibnVtYmVyIj09PXR5cGVvZiBlPyJmdW5jdGlvbiI9PT10eXBlb2YgdD8oYz10LHQ9dm9pZCAwKToibnVtYmVyIiE9PXR5cGVvZiB0JiYocj10LHQ9dm9pZCAwKToocj1lLGM9dCxlPXZvaWQgMCx0PXZvaWQgMCk6Mz09PWFyZ3VtZW50cy5sZW5ndGgmJigibnVtYmVyIj09PXR5cGVvZiB0PyJmdW5jdGlvbiI9PT10eXBlb2YgciYmKGM9cixyPXZvaWQgMCk6KGM9cixyPXQsdD12b2lkIDApKSxyPXJ8fHt9LHZvaWQgMD09PWUmJihlPXIuYml0c3x8MjA0OCksdm9pZCAwPT09dCYmKHQ9ci5lfHw2NTUzNyksIW4ub3B0aW9ucy51c2VQdXJlSmF2YVNjcmlwdCYmIXIucHJuZyYmZT49MjU2JiZlPD0xNjM4NCYmKDY1NTM3PT09dHx8Mz09PXQpKWlmKGMpe2lmKF8oImdlbmVyYXRlS2V5UGFpciIpKXJldHVybiBvLmdlbmVyYXRlS2V5UGFpcigicnNhIix7bW9kdWx1c0xlbmd0aDplLHB1YmxpY0V4cG9uZW50OnQscHVibGljS2V5RW5jb2Rpbmc6e3R5cGU6InNwa2kiLGZvcm1hdDoicGVtIn0scHJpdmF0ZUtleUVuY29kaW5nOnt0eXBlOiJwa2NzOCIsZm9ybWF0OiJwZW0ifX0sZnVuY3Rpb24oZSx0LHIpe2lmKGUpcmV0dXJuIGMoZSk7YyhudWxsLHtwcml2YXRlS2V5OnUucHJpdmF0ZUtleUZyb21QZW0ocikscHVibGljS2V5OnUucHVibGljS2V5RnJvbVBlbSh0KX0pfSk7aWYoUygiZ2VuZXJhdGVLZXkiKSYmUygiZXhwb3J0S2V5IikpcmV0dXJuIHMuZ2xvYmFsU2NvcGUuY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUiLG1vZHVsdXNMZW5ndGg6ZSxwdWJsaWNFeHBvbmVudDp3KHQpLGhhc2g6e25hbWU6IlNIQS0yNTYifX0sITAsWyJzaWduIiwidmVyaWZ5Il0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHMuZ2xvYmFsU2NvcGUuY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoInBrY3M4IixlLnByaXZhdGVLZXkpfSkudGhlbih2b2lkIDAsZnVuY3Rpb24oZSl7YyhlKX0pLnRoZW4oZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9dS5wcml2YXRlS2V5RnJvbUFzbjEoYS5mcm9tRGVyKG4udXRpbC5jcmVhdGVCdWZmZXIoZSkpKTtjKG51bGwse3ByaXZhdGVLZXk6dCxwdWJsaWNLZXk6dS5zZXRSc2FQdWJsaWNLZXkodC5uLHQuZSl9KX19KTtpZihFKCJnZW5lcmF0ZUtleSIpJiZFKCJleHBvcnRLZXkiKSl7dmFyIGY9cy5nbG9iYWxTY29wZS5tc0NyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe25hbWU6IlJTQVNTQS1QS0NTMS12MV81Iixtb2R1bHVzTGVuZ3RoOmUscHVibGljRXhwb25lbnQ6dyh0KSxoYXNoOntuYW1lOiJTSEEtMjU2In19LCEwLFsic2lnbiIsInZlcmlmeSJdKTtyZXR1cm4gZi5vbmNvbXBsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LnJlc3VsdCxyPXMuZ2xvYmFsU2NvcGUubXNDcnlwdG8uc3VidGxlLmV4cG9ydEtleSgicGtjczgiLHQucHJpdmF0ZUtleSk7ci5vbmNvbXBsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LnJlc3VsdCxyPXUucHJpdmF0ZUtleUZyb21Bc24xKGEuZnJvbURlcihuLnV0aWwuY3JlYXRlQnVmZmVyKHQpKSk7YyhudWxsLHtwcml2YXRlS2V5OnIscHVibGljS2V5OnUuc2V0UnNhUHVibGljS2V5KHIubixyLmUpfSl9LHIub25lcnJvcj1mdW5jdGlvbihlKXtjKGUpfX0sdm9pZChmLm9uZXJyb3I9ZnVuY3Rpb24oZSl7YyhlKX0pfX1lbHNlIGlmKF8oImdlbmVyYXRlS2V5UGFpclN5bmMiKSl7dmFyIGw9by5nZW5lcmF0ZUtleVBhaXJTeW5jKCJyc2EiLHttb2R1bHVzTGVuZ3RoOmUscHVibGljRXhwb25lbnQ6dCxwdWJsaWNLZXlFbmNvZGluZzp7dHlwZToic3BraSIsZm9ybWF0OiJwZW0ifSxwcml2YXRlS2V5RW5jb2Rpbmc6e3R5cGU6InBrY3M4Iixmb3JtYXQ6InBlbSJ9fSk7cmV0dXJue3ByaXZhdGVLZXk6dS5wcml2YXRlS2V5RnJvbVBlbShsLnByaXZhdGVLZXkpLHB1YmxpY0tleTp1LnB1YmxpY0tleUZyb21QZW0obC5wdWJsaWNLZXkpfX12YXIgaD11LnJzYS5jcmVhdGVLZXlQYWlyR2VuZXJhdGlvblN0YXRlKGUsdCxyKTtpZighYylyZXR1cm4gdS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGUoaCwwKSxoLmtleXM7IWZ1bmN0aW9uKGUsdCxyKXsiZnVuY3Rpb24iPT09dHlwZW9mIHQmJihyPXQsdD17fSk7dmFyIG89e2FsZ29yaXRobTp7bmFtZToodD10fHx7fSkuYWxnb3JpdGhtfHwiUFJJTUVJTkMiLG9wdGlvbnM6e3dvcmtlcnM6dC53b3JrZXJzfHwyLHdvcmtMb2FkOnQud29ya0xvYWR8fDEwMCx3b3JrZXJTY3JpcHQ6dC53b3JrZXJTY3JpcHR9fX07InBybmciaW4gdCYmKG8ucHJuZz10LnBybmcpO2Z1bmN0aW9uIGEoKXtzKGUucEJpdHMsZnVuY3Rpb24odCxuKXtyZXR1cm4gdD9yKHQpOihlLnA9bixudWxsIT09ZS5xP2ModCxlLnEpOnZvaWQgcyhlLnFCaXRzLGMpKX0pfWZ1bmN0aW9uIHMoZSx0KXtuLnByaW1lLmdlbmVyYXRlUHJvYmFibGVQcmltZShlLG8sdCl9ZnVuY3Rpb24gYyh0LG4pe2lmKHQpcmV0dXJuIHIodCk7aWYoZS5xPW4sZS5wLmNvbXBhcmVUbyhlLnEpPDApe3ZhciBvPWUucDtlLnA9ZS5xLGUucT1vfWlmKDAhPT1lLnAuc3VidHJhY3QoaS5PTkUpLmdjZChlLmUpLmNvbXBhcmVUbyhpLk9ORSkpcmV0dXJuIGUucD1udWxsLHZvaWQgYSgpO2lmKDAhPT1lLnEuc3VidHJhY3QoaS5PTkUpLmdjZChlLmUpLmNvbXBhcmVUbyhpLk9ORSkpcmV0dXJuIGUucT1udWxsLHZvaWQgcyhlLnFCaXRzLGMpO2lmKGUucDE9ZS5wLnN1YnRyYWN0KGkuT05FKSxlLnExPWUucS5zdWJ0cmFjdChpLk9ORSksZS5waGk9ZS5wMS5tdWx0aXBseShlLnExKSwwIT09ZS5waGkuZ2NkKGUuZSkuY29tcGFyZVRvKGkuT05FKSlyZXR1cm4gZS5wPWUucT1udWxsLHZvaWQgYSgpO2lmKGUubj1lLnAubXVsdGlwbHkoZS5xKSxlLm4uYml0TGVuZ3RoKCkhPT1lLmJpdHMpcmV0dXJuIGUucT1udWxsLHZvaWQgcyhlLnFCaXRzLGMpO3ZhciBmPWUuZS5tb2RJbnZlcnNlKGUucGhpKTtlLmtleXM9e3ByaXZhdGVLZXk6dS5yc2Euc2V0UHJpdmF0ZUtleShlLm4sZS5lLGYsZS5wLGUucSxmLm1vZChlLnAxKSxmLm1vZChlLnExKSxlLnEubW9kSW52ZXJzZShlLnApKSxwdWJsaWNLZXk6dS5yc2Euc2V0UHVibGljS2V5KGUubixlLmUpfSxyKG51bGwsZS5rZXlzKX1hKCl9KGgscixjKX0sdS5zZXRSc2FQdWJsaWNLZXk9dS5yc2Euc2V0UHVibGljS2V5PWZ1bmN0aW9uKGUsdCl7dmFyIHI9e246ZSxlOnQsZW5jcnlwdDpmdW5jdGlvbihlLHQsaSl7aWYoInN0cmluZyI9PT10eXBlb2YgdD90PXQudG9VcHBlckNhc2UoKTp2b2lkIDA9PT10JiYodD0iUlNBRVMtUEtDUzEtVjFfNSIpLCJSU0FFUy1QS0NTMS1WMV81Ij09PXQpdD17ZW5jb2RlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZyhlLHQsMikuZ2V0Qnl0ZXMoKX19O2Vsc2UgaWYoIlJTQS1PQUVQIj09PXR8fCJSU0FFUy1PQUVQIj09PXQpdD17ZW5jb2RlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4ucGtjczEuZW5jb2RlX3JzYV9vYWVwKHQsZSxpKX19O2Vsc2UgaWYoLTEhPT1bIlJBVyIsIk5PTkUiLCJOVUxMIixudWxsXS5pbmRleE9mKHQpKXQ9e2VuY29kZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19O2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGVuY3J5cHRpb24gc2NoZW1lOiAiJyt0KyciLicpO3ZhciBvPXQuZW5jb2RlKGUsciwhMCk7cmV0dXJuIHUucnNhLmVuY3J5cHQobyxyLCEwKX0sdmVyaWZ5OmZ1bmN0aW9uKGUsdCxuKXsic3RyaW5nIj09PXR5cGVvZiBuP249bi50b1VwcGVyQ2FzZSgpOnZvaWQgMD09PW4mJihuPSJSU0FTU0EtUEtDUzEtVjFfNSIpLCJSU0FTU0EtUEtDUzEtVjFfNSI9PT1uP249e3ZlcmlmeTpmdW5jdGlvbihlLHQpe3JldHVybiB0PXYodCxyLCEwKSxlPT09YS5mcm9tRGVyKHQpLnZhbHVlWzFdLnZhbHVlfX06Ik5PTkUiIT09biYmIk5VTEwiIT09biYmbnVsbCE9PW58fChuPXt2ZXJpZnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PSh0PXYodCxyLCEwKSl9fSk7dmFyIGk9dS5yc2EuZGVjcnlwdCh0LHIsITAsITEpO3JldHVybiBuLnZlcmlmeShlLGksci5uLmJpdExlbmd0aCgpKX19O3JldHVybiByfSx1LnNldFJzYVByaXZhdGVLZXk9dS5yc2Euc2V0UHJpdmF0ZUtleT1mdW5jdGlvbihlLHQscixpLG8sYSxzLGMpe3ZhciBmPXtuOmUsZTp0LGQ6cixwOmkscTpvLGRQOmEsZFE6cyxxSW52OmMsZGVjcnlwdDpmdW5jdGlvbihlLHQscil7InN0cmluZyI9PT10eXBlb2YgdD90PXQudG9VcHBlckNhc2UoKTp2b2lkIDA9PT10JiYodD0iUlNBRVMtUEtDUzEtVjFfNSIpO3ZhciBpPXUucnNhLmRlY3J5cHQoZSxmLCExLCExKTtpZigiUlNBRVMtUEtDUzEtVjFfNSI9PT10KXQ9e2RlY29kZTp2fTtlbHNlIGlmKCJSU0EtT0FFUCI9PT10fHwiUlNBRVMtT0FFUCI9PT10KXQ9e2RlY29kZTpmdW5jdGlvbihlLHQpe3JldHVybiBuLnBrY3MxLmRlY29kZV9yc2Ffb2FlcCh0LGUscil9fTtlbHNle2lmKC0xPT09WyJSQVciLCJOT05FIiwiTlVMTCIsbnVsbF0uaW5kZXhPZih0KSl0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGVuY3J5cHRpb24gc2NoZW1lOiAiJyt0KyciLicpO3Q9e2RlY29kZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19fXJldHVybiB0LmRlY29kZShpLGYsITEpfSxzaWduOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ITE7InN0cmluZyI9PT10eXBlb2YgdCYmKHQ9dC50b1VwcGVyQ2FzZSgpKSx2b2lkIDA9PT10fHwiUlNBU1NBLVBLQ1MxLVYxXzUiPT09dD8odD17ZW5jb2RlOmR9LHI9MSk6Ik5PTkUiIT09dCYmIk5VTEwiIT09dCYmbnVsbCE9PXR8fCh0PXtlbmNvZGU6ZnVuY3Rpb24oKXtyZXR1cm4gZX19LHI9MSk7dmFyIG49dC5lbmNvZGUoZSxmLm4uYml0TGVuZ3RoKCkpO3JldHVybiB1LnJzYS5lbmNyeXB0KG4sZixyKX19O3JldHVybiBmfSx1LndyYXBSc2FQcml2YXRlS2V5PWZ1bmN0aW9uKGUpe3JldHVybiBhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuU0VRVUVOQ0UsITAsW2EuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5JTlRFR0VSLCExLGEuaW50ZWdlclRvRGVyKDApLmdldEJ5dGVzKCkpLGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5TRVFVRU5DRSwhMCxbYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk9JRCwhMSxhLm9pZFRvRGVyKHUub2lkcy5yc2FFbmNyeXB0aW9uKS5nZXRCeXRlcygpKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuTlVMTCwhMSwiIildKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuT0NURVRTVFJJTkcsITEsYS50b0RlcihlKS5nZXRCeXRlcygpKV0pfSx1LnByaXZhdGVLZXlGcm9tQXNuMT1mdW5jdGlvbihlKXt2YXIgdCxyLG8scyxjLGgscCxkLHk9e30sZz1bXTtpZihhLnZhbGlkYXRlKGUsZix5LGcpJiYoZT1hLmZyb21EZXIobi51dGlsLmNyZWF0ZUJ1ZmZlcih5LnByaXZhdGVLZXkpKSkseT17fSxnPVtdLCFhLnZhbGlkYXRlKGUsbCx5LGcpKXt2YXIgdj1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIHByaXZhdGUga2V5LiBBU04uMSBvYmplY3QgZG9lcyBub3QgY29udGFpbiBhbiBSU0FQcml2YXRlS2V5LiIpO3Rocm93IHYuZXJyb3JzPWcsdn1yZXR1cm4gdD1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleU1vZHVsdXMpLnRvSGV4KCkscj1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleVB1YmxpY0V4cG9uZW50KS50b0hleCgpLG89bi51dGlsLmNyZWF0ZUJ1ZmZlcih5LnByaXZhdGVLZXlQcml2YXRlRXhwb25lbnQpLnRvSGV4KCkscz1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleVByaW1lMSkudG9IZXgoKSxjPW4udXRpbC5jcmVhdGVCdWZmZXIoeS5wcml2YXRlS2V5UHJpbWUyKS50b0hleCgpLGg9bi51dGlsLmNyZWF0ZUJ1ZmZlcih5LnByaXZhdGVLZXlFeHBvbmVudDEpLnRvSGV4KCkscD1uLnV0aWwuY3JlYXRlQnVmZmVyKHkucHJpdmF0ZUtleUV4cG9uZW50MikudG9IZXgoKSxkPW4udXRpbC5jcmVhdGVCdWZmZXIoeS5wcml2YXRlS2V5Q29lZmZpY2llbnQpLnRvSGV4KCksdS5zZXRSc2FQcml2YXRlS2V5KG5ldyBpKHQsMTYpLG5ldyBpKHIsMTYpLG5ldyBpKG8sMTYpLG5ldyBpKHMsMTYpLG5ldyBpKGMsMTYpLG5ldyBpKGgsMTYpLG5ldyBpKHAsMTYpLG5ldyBpKGQsMTYpKX0sdS5wcml2YXRlS2V5VG9Bc24xPXUucHJpdmF0ZUtleVRvUlNBUHJpdmF0ZUtleT1mdW5jdGlvbihlKXtyZXR1cm4gYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLlNFUVVFTkNFLCEwLFthLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxhLmludGVnZXJUb0RlcigwKS5nZXRCeXRlcygpKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxtKGUubikpLGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5JTlRFR0VSLCExLG0oZS5lKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLmQpKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxtKGUucCkpLGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5JTlRFR0VSLCExLG0oZS5xKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLmRQKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLmRRKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLnFJbnYpKV0pfSx1LnB1YmxpY0tleUZyb21Bc24xPWZ1bmN0aW9uKGUpe3ZhciB0PXt9LHI9W107aWYoYS52YWxpZGF0ZShlLHAsdCxyKSl7dmFyIG8scz1hLmRlclRvT2lkKHQucHVibGljS2V5T2lkKTtpZihzIT09dS5vaWRzLnJzYUVuY3J5cHRpb24pdGhyb3cobz1uZXcgRXJyb3IoIkNhbm5vdCByZWFkIHB1YmxpYyBrZXkuIFVua25vd24gT0lELiIpKS5vaWQ9cyxvO2U9dC5yc2FQdWJsaWNLZXl9aWYocj1bXSwhYS52YWxpZGF0ZShlLGgsdCxyKSl0aHJvdyhvPW5ldyBFcnJvcigiQ2Fubm90IHJlYWQgcHVibGljIGtleS4gQVNOLjEgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gUlNBUHVibGljS2V5LiIpKS5lcnJvcnM9cixvO3ZhciBjPW4udXRpbC5jcmVhdGVCdWZmZXIodC5wdWJsaWNLZXlNb2R1bHVzKS50b0hleCgpLGY9bi51dGlsLmNyZWF0ZUJ1ZmZlcih0LnB1YmxpY0tleUV4cG9uZW50KS50b0hleCgpO3JldHVybiB1LnNldFJzYVB1YmxpY0tleShuZXcgaShjLDE2KSxuZXcgaShmLDE2KSl9LHUucHVibGljS2V5VG9Bc24xPXUucHVibGljS2V5VG9TdWJqZWN0UHVibGljS2V5SW5mbz1mdW5jdGlvbihlKXtyZXR1cm4gYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLlNFUVVFTkNFLCEwLFthLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuU0VRVUVOQ0UsITAsW2EuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5PSUQsITEsYS5vaWRUb0Rlcih1Lm9pZHMucnNhRW5jcnlwdGlvbikuZ2V0Qnl0ZXMoKSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLk5VTEwsITEsIiIpXSksYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLkJJVFNUUklORywhMSxbdS5wdWJsaWNLZXlUb1JTQVB1YmxpY0tleShlKV0pXSl9LHUucHVibGljS2V5VG9SU0FQdWJsaWNLZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIGEuY3JlYXRlKGEuQ2xhc3MuVU5JVkVSU0FMLGEuVHlwZS5TRVFVRU5DRSwhMCxbYS5jcmVhdGUoYS5DbGFzcy5VTklWRVJTQUwsYS5UeXBlLklOVEVHRVIsITEsbShlLm4pKSxhLmNyZWF0ZShhLkNsYXNzLlVOSVZFUlNBTCxhLlR5cGUuSU5URUdFUiwhMSxtKGUuZSkpXSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG4saT1yKDYpO2UuZXhwb3J0cz1pLmpzYm49aS5qc2JufHx7fTtmdW5jdGlvbiBvKGUsdCxyKXt0aGlzLmRhdGE9W10sbnVsbCE9ZSYmKCJudW1iZXIiPT10eXBlb2YgZT90aGlzLmZyb21OdW1iZXIoZSx0LHIpOm51bGw9PXQmJiJzdHJpbmciIT10eXBlb2YgZT90aGlzLmZyb21TdHJpbmcoZSwyNTYpOnRoaXMuZnJvbVN0cmluZyhlLHQpKX1mdW5jdGlvbiBhKCl7cmV0dXJuIG5ldyBvKG51bGwpfWZ1bmN0aW9uIHMoZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0xNjM4MyZ0LHM9dD4+MTQ7LS1vPj0wOyl7dmFyIHU9MTYzODMmdGhpcy5kYXRhW2VdLGM9dGhpcy5kYXRhW2UrK10+PjE0LGY9cyp1K2MqYTtpPSgodT1hKnUrKCgxNjM4MyZmKTw8MTQpK3IuZGF0YVtuXStpKT4+MjgpKyhmPj4xNCkrcypjLHIuZGF0YVtuKytdPTI2ODQzNTQ1NSZ1fXJldHVybiBpfWkuanNibi5CaWdJbnRlZ2VyPW8sInVuZGVmaW5lZCI9PT10eXBlb2YgbmF2aWdhdG9yPyhvLnByb3RvdHlwZS5hbT1zLG49MjgpOiJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIiPT1uYXZpZ2F0b3IuYXBwTmFtZT8oby5wcm90b3R5cGUuYW09ZnVuY3Rpb24oZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0zMjc2NyZ0LHM9dD4+MTU7LS1vPj0wOyl7dmFyIHU9MzI3NjcmdGhpcy5kYXRhW2VdLGM9dGhpcy5kYXRhW2UrK10+PjE1LGY9cyp1K2MqYTtpPSgodT1hKnUrKCgzMjc2NyZmKTw8MTUpK3IuZGF0YVtuXSsoMTA3Mzc0MTgyMyZpKSk+Pj4zMCkrKGY+Pj4xNSkrcypjKyhpPj4+MzApLHIuZGF0YVtuKytdPTEwNzM3NDE4MjMmdX1yZXR1cm4gaX0sbj0zMCk6Ik5ldHNjYXBlIiE9bmF2aWdhdG9yLmFwcE5hbWU/KG8ucHJvdG90eXBlLmFtPWZ1bmN0aW9uKGUsdCxyLG4saSxvKXtmb3IoOy0tbz49MDspe3ZhciBhPXQqdGhpcy5kYXRhW2UrK10rci5kYXRhW25dK2k7aT1NYXRoLmZsb29yKGEvNjcxMDg4NjQpLHIuZGF0YVtuKytdPTY3MTA4ODYzJmF9cmV0dXJuIGl9LG49MjYpOihvLnByb3RvdHlwZS5hbT1zLG49MjgpLG8ucHJvdG90eXBlLkRCPW4sby5wcm90b3R5cGUuRE09KDE8PG4pLTEsby5wcm90b3R5cGUuRFY9MTw8bjtvLnByb3RvdHlwZS5GVj1NYXRoLnBvdygyLDUyKSxvLnByb3RvdHlwZS5GMT01Mi1uLG8ucHJvdG90eXBlLkYyPTIqbi01Mjt2YXIgdSxjLGY9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsbD1uZXcgQXJyYXk7Zm9yKHU9IjAiLmNoYXJDb2RlQXQoMCksYz0wO2M8PTk7KytjKWxbdSsrXT1jO2Zvcih1PSJhIi5jaGFyQ29kZUF0KDApLGM9MTA7YzwzNjsrK2MpbFt1KytdPWM7Zm9yKHU9IkEiLmNoYXJDb2RlQXQoMCksYz0xMDtjPDM2OysrYylsW3UrK109YztmdW5jdGlvbiBoKGUpe3JldHVybiBmLmNoYXJBdChlKX1mdW5jdGlvbiBwKGUsdCl7dmFyIHI9bFtlLmNoYXJDb2RlQXQodCldO3JldHVybiBudWxsPT1yPy0xOnJ9ZnVuY3Rpb24gZChlKXt2YXIgdD1hKCk7cmV0dXJuIHQuZnJvbUludChlKSx0fWZ1bmN0aW9uIHkoZSl7dmFyIHQscj0xO3JldHVybiAwIT0odD1lPj4+MTYpJiYoZT10LHIrPTE2KSwwIT0odD1lPj44KSYmKGU9dCxyKz04KSwwIT0odD1lPj40KSYmKGU9dCxyKz00KSwwIT0odD1lPj4yKSYmKGU9dCxyKz0yKSwwIT0odD1lPj4xKSYmKGU9dCxyKz0xKSxyfWZ1bmN0aW9uIGcoZSl7dGhpcy5tPWV9ZnVuY3Rpb24gdihlKXt0aGlzLm09ZSx0aGlzLm1wPWUuaW52RGlnaXQoKSx0aGlzLm1wbD0zMjc2NyZ0aGlzLm1wLHRoaXMubXBoPXRoaXMubXA+PjE1LHRoaXMudW09KDE8PGUuREItMTUpLTEsdGhpcy5tdDI9MiplLnR9ZnVuY3Rpb24gbShlLHQpe3JldHVybiBlJnR9ZnVuY3Rpb24gYihlLHQpe3JldHVybiBlfHR9ZnVuY3Rpb24gXyhlLHQpe3JldHVybiBlXnR9ZnVuY3Rpb24gUyhlLHQpe3JldHVybiBlJn50fWZ1bmN0aW9uIEUoZSl7aWYoMD09ZSlyZXR1cm4tMTt2YXIgdD0wO3JldHVybiAwPT0oNjU1MzUmZSkmJihlPj49MTYsdCs9MTYpLDA9PSgyNTUmZSkmJihlPj49OCx0Kz04KSwwPT0oMTUmZSkmJihlPj49NCx0Kz00KSwwPT0oMyZlKSYmKGU+Pj0yLHQrPTIpLDA9PSgxJmUpJiYrK3QsdH1mdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD0wOzAhPWU7KWUmPWUtMSwrK3Q7cmV0dXJuIHR9ZnVuY3Rpb24gVCgpe31mdW5jdGlvbiBBKGUpe3JldHVybiBlfWZ1bmN0aW9uIEMoZSl7dGhpcy5yMj1hKCksdGhpcy5xMz1hKCksby5PTkUuZGxTaGlmdFRvKDIqZS50LHRoaXMucjIpLHRoaXMubXU9dGhpcy5yMi5kaXZpZGUoZSksdGhpcy5tPWV9Zy5wcm90b3R5cGUuY29udmVydD1mdW5jdGlvbihlKXtyZXR1cm4gZS5zPDB8fGUuY29tcGFyZVRvKHRoaXMubSk+PTA/ZS5tb2QodGhpcy5tKTplfSxnLnByb3RvdHlwZS5yZXZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGcucHJvdG90eXBlLnJlZHVjZT1mdW5jdGlvbihlKXtlLmRpdlJlbVRvKHRoaXMubSxudWxsLGUpfSxnLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihlLHQscil7ZS5tdWx0aXBseVRvKHQsciksdGhpcy5yZWR1Y2Uocil9LGcucHJvdG90eXBlLnNxclRvPWZ1bmN0aW9uKGUsdCl7ZS5zcXVhcmVUbyh0KSx0aGlzLnJlZHVjZSh0KX0sdi5wcm90b3R5cGUuY29udmVydD1mdW5jdGlvbihlKXt2YXIgdD1hKCk7cmV0dXJuIGUuYWJzKCkuZGxTaGlmdFRvKHRoaXMubS50LHQpLHQuZGl2UmVtVG8odGhpcy5tLG51bGwsdCksZS5zPDAmJnQuY29tcGFyZVRvKG8uWkVSTyk+MCYmdGhpcy5tLnN1YlRvKHQsdCksdH0sdi5wcm90b3R5cGUucmV2ZXJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWEoKTtyZXR1cm4gZS5jb3B5VG8odCksdGhpcy5yZWR1Y2UodCksdH0sdi5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKGUpe2Zvcig7ZS50PD10aGlzLm10MjspZS5kYXRhW2UudCsrXT0wO2Zvcih2YXIgdD0wO3Q8dGhpcy5tLnQ7Kyt0KXt2YXIgcj0zMjc2NyZlLmRhdGFbdF0sbj1yKnRoaXMubXBsKygocip0aGlzLm1waCsoZS5kYXRhW3RdPj4xNSkqdGhpcy5tcGwmdGhpcy51bSk8PDE1KSZlLkRNO2ZvcihyPXQrdGhpcy5tLnQsZS5kYXRhW3JdKz10aGlzLm0uYW0oMCxuLGUsdCwwLHRoaXMubS50KTtlLmRhdGFbcl0+PWUuRFY7KWUuZGF0YVtyXS09ZS5EVixlLmRhdGFbKytyXSsrfWUuY2xhbXAoKSxlLmRyU2hpZnRUbyh0aGlzLm0udCxlKSxlLmNvbXBhcmVUbyh0aGlzLm0pPj0wJiZlLnN1YlRvKHRoaXMubSxlKX0sdi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oZSx0LHIpe2UubXVsdGlwbHlUbyh0LHIpLHRoaXMucmVkdWNlKHIpfSx2LnByb3RvdHlwZS5zcXJUbz1mdW5jdGlvbihlLHQpe2Uuc3F1YXJlVG8odCksdGhpcy5yZWR1Y2UodCl9LG8ucHJvdG90eXBlLmNvcHlUbz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50LTE7dD49MDstLXQpZS5kYXRhW3RdPXRoaXMuZGF0YVt0XTtlLnQ9dGhpcy50LGUucz10aGlzLnN9LG8ucHJvdG90eXBlLmZyb21JbnQ9ZnVuY3Rpb24oZSl7dGhpcy50PTEsdGhpcy5zPWU8MD8tMTowLGU+MD90aGlzLmRhdGFbMF09ZTplPC0xP3RoaXMuZGF0YVswXT1lK3RoaXMuRFY6dGhpcy50PTB9LG8ucHJvdG90eXBlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZigxNj09dClyPTQ7ZWxzZSBpZig4PT10KXI9MztlbHNlIGlmKDI1Nj09dClyPTg7ZWxzZSBpZigyPT10KXI9MTtlbHNlIGlmKDMyPT10KXI9NTtlbHNle2lmKDQhPXQpcmV0dXJuIHZvaWQgdGhpcy5mcm9tUmFkaXgoZSx0KTtyPTJ9dGhpcy50PTAsdGhpcy5zPTA7Zm9yKHZhciBuPWUubGVuZ3RoLGk9ITEsYT0wOy0tbj49MDspe3ZhciBzPTg9PXI/MjU1JmVbbl06cChlLG4pO3M8MD8iLSI9PWUuY2hhckF0KG4pJiYoaT0hMCk6KGk9ITEsMD09YT90aGlzLmRhdGFbdGhpcy50KytdPXM6YStyPnRoaXMuREI/KHRoaXMuZGF0YVt0aGlzLnQtMV18PShzJigxPDx0aGlzLkRCLWEpLTEpPDxhLHRoaXMuZGF0YVt0aGlzLnQrK109cz4+dGhpcy5EQi1hKTp0aGlzLmRhdGFbdGhpcy50LTFdfD1zPDxhLChhKz1yKT49dGhpcy5EQiYmKGEtPXRoaXMuREIpKX04PT1yJiYwIT0oMTI4JmVbMF0pJiYodGhpcy5zPS0xLGE+MCYmKHRoaXMuZGF0YVt0aGlzLnQtMV18PSgxPDx0aGlzLkRCLWEpLTE8PGEpKSx0aGlzLmNsYW1wKCksaSYmby5aRVJPLnN1YlRvKHRoaXMsdGhpcyl9LG8ucHJvdG90eXBlLmNsYW1wPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMucyZ0aGlzLkRNO3RoaXMudD4wJiZ0aGlzLmRhdGFbdGhpcy50LTFdPT1lOyktLXRoaXMudH0sby5wcm90b3R5cGUuZGxTaGlmdFRvPWZ1bmN0aW9uKGUsdCl7dmFyIHI7Zm9yKHI9dGhpcy50LTE7cj49MDstLXIpdC5kYXRhW3IrZV09dGhpcy5kYXRhW3JdO2ZvcihyPWU="
}

github/deemru/w8io/169f3d6 
2.18 ms