3MxZ2rcGgPFmkECT6NA35zhtoMzRNv2jLTk · data · 2.7c767379.chunk.js_4
{
    "2.7c767379.chunk.js_4": "base64:dz1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLnJlZCYmIWUucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGUpfTt2YXIgZz17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIHYoZSx0KXt0aGlzLm5hbWU9ZSx0aGlzLnA9bmV3IG8odCwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IG8oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIG0oKXt2LmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gYigpe3YuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBfKCl7di5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIFMoKXt2LmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gRShlKXtpZigic3RyaW5nIj09PXR5cGVvZiBlKXt2YXIgdD1vLl9wcmltZShlKTt0aGlzLm09dC5wLHRoaXMucHJpbWU9dH1lbHNlIG4oZS5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1lLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiB3KGUpe0UuY2FsbCh0aGlzLGUpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBvKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXYucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgbyhudWxsKTtyZXR1cm4gZS53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLGV9LHYucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oZSl7dmFyIHQscj1lO2Rve3RoaXMuc3BsaXQocix0aGlzLnRtcCksdD0ocj0ocj10aGlzLmltdWxLKHIpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUodD50aGlzLm4pO3ZhciBuPXQ8dGhpcy5uPy0xOnIudWNtcCh0aGlzLnApO3JldHVybiAwPT09bj8oci53b3Jkc1swXT0wLHIubGVuZ3RoPTEpOm4+MD9yLmlzdWIodGhpcy5wKTpyLnN0cmlwKCkscn0sdi5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZSx0KXtlLml1c2hybih0aGlzLm4sMCx0KX0sdi5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW11bCh0aGlzLmspfSxpKG0sdiksbS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9TWF0aC5taW4oZS5sZW5ndGgsOSksbj0wO248cjtuKyspdC53b3Jkc1tuXT1lLndvcmRzW25dO2lmKHQubGVuZ3RoPXIsZS5sZW5ndGg8PTkpcmV0dXJuIGUud29yZHNbMF09MCx2b2lkKGUubGVuZ3RoPTEpO3ZhciBpPWUud29yZHNbOV07Zm9yKHQud29yZHNbdC5sZW5ndGgrK109NDE5NDMwMyZpLG49MTA7bjxlLmxlbmd0aDtuKyspe3ZhciBvPTB8ZS53b3Jkc1tuXTtlLndvcmRzW24tMTBdPSg0MTk0MzAzJm8pPDw0fGk+Pj4yMixpPW99aT4+Pj0yMixlLndvcmRzW24tMTBdPWksMD09PWkmJmUubGVuZ3RoPjEwP2UubGVuZ3RoLT0xMDplLmxlbmd0aC09OX0sbS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZSl7ZS53b3Jkc1tlLmxlbmd0aF09MCxlLndvcmRzW2UubGVuZ3RoKzFdPTAsZS5sZW5ndGgrPTI7Zm9yKHZhciB0PTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj0wfGUud29yZHNbcl07dCs9OTc3Km4sZS53b3Jkc1tyXT02NzEwODg2MyZ0LHQ9NjQqbisodC82NzEwODg2NHwwKX1yZXR1cm4gMD09PWUud29yZHNbZS5sZW5ndGgtMV0mJihlLmxlbmd0aC0tLDA9PT1lLndvcmRzW2UubGVuZ3RoLTFdJiZlLmxlbmd0aC0tKSxlfSxpKGIsdiksaShfLHYpLGkoUyx2KSxTLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPTE5KigwfGUud29yZHNbcl0pK3QsaT02NzEwODg2MyZuO24+Pj49MjYsZS53b3Jkc1tyXT1pLHQ9bn1yZXR1cm4gMCE9PXQmJihlLndvcmRzW2UubGVuZ3RoKytdPXQpLGV9LG8uX3ByaW1lPWZ1bmN0aW9uKGUpe2lmKGdbZV0pcmV0dXJuIGdbZV07dmFyIHQ7aWYoImsyNTYiPT09ZSl0PW5ldyBtO2Vsc2UgaWYoInAyMjQiPT09ZSl0PW5ldyBiO2Vsc2UgaWYoInAxOTIiPT09ZSl0PW5ldyBfO2Vsc2V7aWYoInAyNTUxOSIhPT1lKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2UpO3Q9bmV3IFN9cmV0dXJuIGdbZV09dCx0fSxFLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihlKXtuKDA9PT1lLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLG4oZS5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sRS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oZSx0KXtuKDA9PT0oZS5uZWdhdGl2ZXx0Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxuKGUucmVkJiZlLnJlZD09PXQucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LEUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGUpLl9mb3JjZVJlZCh0aGlzKTplLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc1plcm8oKT9lLmNsb25lKCk6dGhpcy5tLnN1YihlKS5fZm9yY2VSZWQodGhpcyl9LEUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmFkZCh0KTtyZXR1cm4gci5jbXAodGhpcy5tKT49MCYmci5pc3ViKHRoaXMubSksci5fZm9yY2VSZWQodGhpcyl9LEUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZSx0KXt0aGlzLl92ZXJpZnkyKGUsdCk7dmFyIHI9ZS5pYWRkKHQpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyfSxFLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZSx0KXt0aGlzLl92ZXJpZnkyKGUsdCk7dmFyIHI9ZS5zdWIodCk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmlzdWIodCk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyfSxFLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShlKSx0aGlzLmltb2QoZS51c2hsbih0KSl9LEUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihlLHQpLHRoaXMuaW1vZChlLmltdWwodCkpfSxFLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihlLHQpLHRoaXMuaW1vZChlLm11bCh0KSl9LEUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW11bChlLGUuY2xvbmUoKSl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5tdWwoZSxlKX0sRS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihlKXtpZihlLmlzWmVybygpKXJldHVybiBlLmNsb25lKCk7dmFyIHQ9dGhpcy5tLmFuZGxuKDMpO2lmKG4odCUyPT09MSksMz09PXQpe3ZhciByPXRoaXMubS5hZGQobmV3IG8oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coZSxyKX1mb3IodmFyIGk9dGhpcy5tLnN1Ym4oMSksYT0wOyFpLmlzWmVybygpJiYwPT09aS5hbmRsbigxKTspYSsrLGkuaXVzaHJuKDEpO24oIWkuaXNaZXJvKCkpO3ZhciBzPW5ldyBvKDEpLnRvUmVkKHRoaXMpLHU9cy5yZWROZWcoKSxjPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxmPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoZj1uZXcgbygyKmYqZikudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KGYsYykuY21wKHUpOylmLnJlZElBZGQodSk7Zm9yKHZhciBsPXRoaXMucG93KGYsaSksaD10aGlzLnBvdyhlLGkuYWRkbigxKS5pdXNocm4oMSkpLHA9dGhpcy5wb3coZSxpKSxkPWE7MCE9PXAuY21wKHMpOyl7Zm9yKHZhciB5PXAsZz0wOzAhPT15LmNtcChzKTtnKyspeT15LnJlZFNxcigpO24oZzxkKTt2YXIgdj10aGlzLnBvdyhsLG5ldyBvKDEpLml1c2hsbihkLWctMSkpO2g9aC5yZWRNdWwodiksbD12LnJlZFNxcigpLHA9cC5yZWRNdWwobCksZD1nfXJldHVybiBofSxFLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGUpe3ZhciB0PWUuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT10Lm5lZ2F0aXZlPyh0Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKHQpLnJlZE5lZygpKTp0aGlzLmltb2QodCl9LEUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihlLHQpe2lmKHQuaXNaZXJvKCkpcmV0dXJuIG5ldyBvKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT10LmNtcG4oMSkpcmV0dXJuIGUuY2xvbmUoKTt2YXIgcj1uZXcgQXJyYXkoMTYpO3JbMF09bmV3IG8oMSkudG9SZWQodGhpcyksclsxXT1lO2Zvcih2YXIgbj0yO248ci5sZW5ndGg7bisrKXJbbl09dGhpcy5tdWwocltuLTFdLGUpO3ZhciBpPXJbMF0sYT0wLHM9MCx1PXQuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT11JiYodT0yNiksbj10Lmxlbmd0aC0xO24+PTA7bi0tKXtmb3IodmFyIGM9dC53b3Jkc1tuXSxmPXUtMTtmPj0wO2YtLSl7dmFyIGw9Yz4+ZiYxO2khPT1yWzBdJiYoaT10aGlzLnNxcihpKSksMCE9PWx8fDAhPT1hPyhhPDw9MSxhfD1sLCg0PT09KytzfHwwPT09biYmMD09PWYpJiYoaT10aGlzLm11bChpLHJbYV0pLHM9MCxhPTApKTpzPTB9dT0yNn1yZXR1cm4gaX0sRS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGUpe3ZhciB0PWUudW1vZCh0aGlzLm0pO3JldHVybiB0PT09ZT90LmNsb25lKCk6dH0sRS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jbG9uZSgpO3JldHVybiB0LnJlZD1udWxsLHR9LG8ubW9udD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHcoZSl9LGkodyxFKSx3LnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW1vZChlLnVzaGxuKHRoaXMuc2hpZnQpKX0sdy5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5pbW9kKGUubXVsKHRoaXMucmludikpO3JldHVybiB0LnJlZD1udWxsLHR9LHcucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZSx0KXtpZihlLmlzWmVybygpfHx0LmlzWmVybygpKXJldHVybiBlLndvcmRzWzBdPTAsZS5sZW5ndGg9MSxlO3ZhciByPWUuaW11bCh0KSxuPXIubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGk9ci5pc3ViKG4pLml1c2hybih0aGlzLnNoaWZ0KSxvPWk7cmV0dXJuIGkuY21wKHRoaXMubSk+PTA/bz1pLmlzdWIodGhpcy5tKTppLmNtcG4oMCk8MCYmKG89aS5pYWRkKHRoaXMubSkpLG8uX2ZvcmNlUmVkKHRoaXMpfSx3LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSx0KXtpZihlLmlzWmVybygpfHx0LmlzWmVybygpKXJldHVybiBuZXcgbygwKS5fZm9yY2VSZWQodGhpcyk7dmFyIHI9ZS5tdWwodCksbj1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxpPXIuaXN1YihuKS5pdXNocm4odGhpcy5zaGlmdCksYT1pO3JldHVybiBpLmNtcCh0aGlzLm0pPj0wP2E9aS5pc3ViKHRoaXMubSk6aS5jbXBuKDApPDAmJihhPWkuaWFkZCh0aGlzLm0pKSxhLl9mb3JjZVJlZCh0aGlzKX0sdy5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbW9kKGUuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShlLHRoaXMpfSkuY2FsbCh0aGlzLHIoMjE1KShlKSl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGZ1bmN0aW9uKGUpe2Zvcih2YXIgciBpbiBlKXQuaGFzT3duUHJvcGVydHkocil8fCh0W3JdPWVbcl0pfShyKDI2KSk7dmFyIG49cig2NTApLGk9cig2NTEpLG89cig2NTIpLGE9cig2NTMpLHM9cig2NTQpLHU9cig2NTUpLGM9cig2NTYpLGY9cig2NTcpLGw9cig2NTgpLGg9cig2NTkpLHA9cig2NjApLGQ9cig2NjEpLHk9cig2NjIpLGc9cig2NjMpLHY9cigzNjUpLG09cig2NjQpLGI9cig2NjUpLF89cig2NjYpO3QudmFsaWRhdGU9e3RyYW5zZmVyOm4udHJhbnNmZXJWYWxpZGF0b3IsbWFzc1RyYW5zZmVyOmkubWFzc1RyYW5zZmVyVmFsaWRhdG9yLGFsaWFzOm8uYWxpYXNWYWxpZGF0b3IsaXNzdWU6cC5pc3N1ZVZhbGlkYXRvcixyZWlzc3VlOmgucmVpc3N1ZVZhbGlkYXRvcixzcG9uc29yc2hpcDpjLnNwb25zb3JzaGlwVmFsaWRhdG9yLGJ1cm46YS5idXJuVmFsaWRhdG9yLHNldEFzc2V0U2NyaXB0OmYuc2V0QXNzZXRTY3JpcHRWYWxpZGF0b3IsY2FuY2VsTGVhc2U6cy5jYW5jZWxMZWFzZVZhbGlkYXRvcixkYXRhOnUuZGF0YVZhbGlkYXRvcixsZWFzZTpkLmxlYXNlVmFsaWRhdG9yLHNldFNjcmlwdDpsLnNldFNjcmlwdFZhbGlkYXRvcixpbnZva2VTY3JpcHQ6eS5pbnZva2VWYWxpZGF0b3IsZXhjaGFuZ2U6Zy5leGNoYW5nZVZhbGlkYXRvcixjYW5jZWxPcmRlcjptLmNhbmNlbE9yZGVyVmFsaWRhdG9yLGN1c3RvbURhdGE6Yi5jdXN0b21EYXRhVmFsaWRhdG9yLG9yZGVyOnYub3JkZXJWYWxpZGF0b3IsYXV0aDpfLmF1dGhWYWxpZGF0b3J9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDIwKSxvPTE0MCxhPXtBVkFJTEFCTEVfQ0hBUlM6Ii0uMDEyMzQ1Njc4OUBfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLE1BWF9BTElBU19MRU5HVEg6MzAsTUlOX0FMSUFTX0xFTkdUSDo0fSxzPTQsdT0xNixjPTFlMzt0LmRlZmF1bHRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19LHQubm9wZT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sdC5waXBlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiB0KGUpfSxlKX19LHQudmFsaWRhdGVQaXBlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgcj0hMCxuPTAsaT10O248aS5sZW5ndGg7bisrKXtpZighKHI9ISEoMCxpW25dKShlKSkpcmV0dXJuITF9cmV0dXJuIHJ9fSx0LnByb3A9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0P3RbZV06dm9pZCAwfX0sdC5sdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlPj10fX0sdC5ndGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlPD10fX0sdC5pZkVsc2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZShuKT90KG4pOnIobil9fSx0LmlzRXE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3N3aXRjaCghMCl7Y2FzZSB0LmlzTnVtYmVyKHIpJiZ0LmlzTnVtYmVyKGUpOnJldHVybiBOdW1iZXIocik9PT1OdW1iZXIoZSk7Y2FzZSB0LmlzU3RyaW5nKHIpJiZ0LmlzU3RyaW5nKGUpOnJldHVybiBTdHJpbmcoZSk9PT1TdHJpbmcocik7Y2FzZSB0LmlzQm9vbGVhbihyKSYmdC5pc0Jvb2xlYW4oZSk6cmV0dXJuIEJvb2xlYW4ocik9PT1Cb29sZWFuKGUpO2RlZmF1bHQ6cmV0dXJuIGU9PT1yfX19LHQub3JFcT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUuc29tZSh0LmlzRXEocikpfX0sdC5pc1JlcXVpcmVkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4hZXx8bnVsbCE9dH19LHQuaXNTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFN0cmluZ30sdC5pc051bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4oIm51bWJlciI9PT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIE51bWJlcikmJiFpc05hTihOdW1iZXIoZSkpfSx0LmlzTnVtYmVyTGlrZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmIWlzTmFOKE51bWJlcihlKSkmJiEoIWUmJjAhPT1lKX0sdC5pc0Jvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJigiYm9vbGVhbiI9PT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIEJvb2xlYW4pfSx0LmlzQnl0ZUFycmF5PWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiExO3ZhciByPW5ldyBVaW50OEFycmF5KGUpO3JldHVybiByLmxlbmd0aD09PWUubGVuZ3RoJiZyLmV2ZXJ5KGZ1bmN0aW9uKHIsbil7cmV0dXJuIHQuaXNFcShyKShlW25dKX0pfSx0LmlzQXJyYXk9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9LHQuYnl0ZXNMZW5ndGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gVWludDhBcnJheS5mcm9tKHQpLmxlbmd0aD09PWV9Y2F0Y2gocil7cmV0dXJuITF9fX0sdC5pc0Jhc2U1OD1mdW5jdGlvbihlKXt0cnl7aS5iYXNlNThEZWNvZGUoZSl9Y2F0Y2godCl7cmV0dXJuITF9cmV0dXJuITB9LHQuaXNCYXNlNjQ9ZnVuY3Rpb24oZSl7dHJ5e2U9ZS5yZXBsYWNlKC9eYmFzZTY0Oi8sIiIpLGkuYmFzZTY0RGVjb2RlKGUpfWNhdGNoKHQpe3JldHVybiExfXJldHVybiEwfSx0LmlzVmFsaWRBZGRyZXNzPWZ1bmN0aW9uKGUscil7aWYoInN0cmluZyIhPT10eXBlb2YgZXx8IXQuaXNCYXNlNTgoZSkpcmV0dXJuITE7dmFyIG49aS5iYXNlNThEZWNvZGUoZSk7aWYoMSE9PW5bMF0pcmV0dXJuITE7aWYobnVsbCE9ciYmblsxXSE9cilyZXR1cm4hMTtmb3IodmFyIG89bi5zbGljZSgwLDIyKSxhPW4uc2xpY2UoMjIsMjYpLHM9aS5rZWNjYWsoaS5ibGFrZTJiKG8pKS5zbGljZSgwLDQpLHU9MDt1PDQ7dSsrKWlmKGFbdV0hPT1zW3VdKXJldHVybiExO3JldHVybiEwfTt2YXIgZjt0LmlzVmFsaWRBbGlhc05hbWU9dC5pZkVsc2UoKGY9YS5BVkFJTEFCTEVfQ0hBUlMsZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoIiIpLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBmLmluY2x1ZGVzKGUpfSl9KSx0LnBpcGUodC5wcm9wKCJsZW5ndGgiKSx0LnZhbGlkYXRlUGlwZSh0Lmx0ZShhLk1BWF9BTElBU19MRU5HVEgpLHQuZ3RlKGEuTUlOX0FMSUFTX0xFTkdUSCkpKSx0LmRlZmF1bHRWYWx1ZSghMSkpLHQuaXNWYWxpZEFsaWFzPXQudmFsaWRhdGVQaXBlKHQuaXNTdHJpbmcsdC5waXBlKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KCI6Iil9LHQuaWZFbHNlKGZ1bmN0aW9uKGUpe3JldHVybiJhbGlhcyIhPT1lWzBdfHwzIT09ZS5sZW5ndGh9LHQuZGVmYXVsdFZhbHVlKCExKSx0LnBpcGUodC5wcm9wKDIpLHQuaXNWYWxpZEFsaWFzTmFtZSkpKSksdC5pc0hhc2g9dC52YWxpZGF0ZVBpcGUodC5pc1JlcXVpcmVkKCEwKSx0LmlzQmFzZTU4LHQucGlwZShmdW5jdGlvbihlKXtyZXR1cm4gaS5iYXNlNThEZWNvZGUoZSl9LHQuYnl0ZXNMZW5ndGgoMzIpKSksdC5pc1B1YmxpY0tleT10LmlzSGFzaCx0LmlzQXNzZXRJZD10LmlmRWxzZSh0Lm9yRXEoWyIiLG51bGwsdm9pZCAwLCJXQVZFUyJdKSx0LmRlZmF1bHRWYWx1ZSghMCksdC5pc0hhc2gpLHQuaXNBdHRhY2htZW50PXQuaWZFbHNlKHQub3JFcShbbnVsbCx2b2lkIDBdKSx0LmRlZmF1bHRWYWx1ZSghMCksdC5waXBlKHQuaWZFbHNlKHQuaXNCYXNlNTgsaS5iYXNlNThEZWNvZGUsdC5ub3BlKSx0LmlmRWxzZSh0LmlzQnl0ZUFycmF5LHQucGlwZSh0LnByb3AoImxlbmd0aCIpLHQubHRlKG8pKSx0LmRlZmF1bHRWYWx1ZSghMSkpKSk7dmFyIGw9e2ludGVnZXI6dC5pc051bWJlckxpa2UsYm9vbGVhbjp0LmlzQm9vbGVhbixzdHJpbmc6dC5pc1N0cmluZyxiaW5hcnk6dC5pc0Jhc2U2NH07dC5pc1ZhbGlkRGF0YVBhaXI9ZnVuY3Rpb24oZSl7cmV0dXJuISghbFtlLnR5cGVdfHwhbFtlLnR5cGVdKGUudmFsdWUpKX0sdC5pc1ZhbGlkRGF0YT10LnZhbGlkYXRlUGlwZSh0LmlzUmVxdWlyZWQoITApLHQucGlwZSh0LnByb3AoImtleSIpLHQudmFsaWRhdGVQaXBlKHQuaXNTdHJpbmcsZnVuY3Rpb24oZSl7cmV0dXJuISFlfSkpLHQuaXNWYWxpZERhdGFQYWlyKSx0LmlzVmFsaWRBc3NldE5hbWU9dC52YWxpZGF0ZVBpcGUodC5pc1JlcXVpcmVkKCEwKSx0LmlzU3RyaW5nLHQucGlwZShpLnN0cmluZ1RvQnl0ZXMsdC5wcm9wKCJsZW5ndGgiKSx0LmlmRWxzZSh0Lmd0ZShzKSx0Lmx0ZSh1KSx0LmRlZmF1bHRWYWx1ZSghMSkpKSksdC5pc1ZhbGlkQXNzZXREZXNjcmlwdGlvbj10LmlmRWxzZSh0LmlzUmVxdWlyZWQoITEpLHQuZGVmYXVsdFZhbHVlKCEwKSx0LnBpcGUoaS5zdHJpbmdUb0J5dGVzLHQucHJvcCgibGVuZ3RoIiksdC5sdGUoYykpKSx0LmV4Y2VwdGlvbj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoZSl9LHQuaXNSZWNpcGllbnQ9dC5pZkVsc2UodC5pc1ZhbGlkQWRkcmVzcyx0LmRlZmF1bHRWYWx1ZSghMCksdC5pc1ZhbGlkQWxpYXMpLHQudmFsaWRhdGVCeVNoZW1hPWZ1bmN0aW9uKGUscil7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBvPW4oZSwyKSxhPW9bMF0scz1vWzFdLHU9dC5wcm9wKGEpKGl8fHt9KTtzKHUpfHx0LmV4Y2VwdGlvbihyKGEsdSkpfSksITB9fSx0LmdldEVycm9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuJ3R4ICInLmNvbmNhdChlLCciLCBoYXMgd3JvbmcgZGF0YTogJykuY29uY2F0KEpTT04uc3RyaW5naWZ5KHQpLCIuIENoZWNrIHR4IGRhdGEuIil9fSxmdW5jdGlvbihlLHQpe3ZhciByPWUuZXhwb3J0cz17dmVyc2lvbjoiMi42LjkifTsibnVtYmVyIj09dHlwZW9mIF9fZSYmKF9fZT1yKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTIpLGk9cig0MTYpLG89cig4MiksYT1PYmplY3QuZGVmaW5lUHJvcGVydHk7dC5mPXIoMjkpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihlLHQscil7aWYobihlKSx0PW8odCwhMCksbihyKSxpKXRyeXtyZXR1cm4gYShlLHQscil9Y2F0Y2gocyl7fWlmKCJnZXQiaW4gcnx8InNldCJpbiByKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhIik7cmV0dXJuInZhbHVlImluIHImJihlW3RdPXIudmFsdWUpLGV9fSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPSFyKDE0KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig4NyksaT1yKDEwMyksbz1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGE9cigyMCk7dC5tYXBPYmo9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkubWFwKGZ1bmN0aW9uKGUpe3ZhciByPW8oZSwyKSxuPXJbMF0saT1yWzFdO3JldHVybltuLHQoaSldfSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dmFyIHI9byh0LDIpLG49clswXSxhPXJbMV07cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sZSxpKHt9LG4sYSkpfSx7fSl9LHQuZ2V0U2VuZGVyUHVibGljS2V5PWZ1bmN0aW9uKGUsdCl7aWYoMD09PWUubGVuZ3RoJiZudWxsPT10LnNlbmRlclB1YmxpY0tleSl0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSBwcm92aWRlIGVpdGhlciBzZWVkIG9yIHNlbmRlclB1YmxpY0tleSIpO3JldHVybiB0LnNlbmRlclB1YmxpY0tleXx8YS5wdWJsaWNLZXkoZVswXVswXSl9LHQuYmFzZTY0UHJlZml4PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwiYmFzZTY0OiI9PT1lLnNsaWNlKDAsNyk/ZToiYmFzZTY0OiIrZX0sdC5hZGRQcm9vZj1mdW5jdGlvbihlLHQscil7aWYobnVsbD09cilyZXR1cm4gZS5wcm9vZnM9W10uY29uY2F0KG4oZS5wcm9vZnMpLFt0XSksZTtpZihudWxsIT1lLnByb29mcyYmZS5wcm9vZnNbcl0pdGhyb3cgbmV3IEVycm9yKCJQcm9vZiBhdCBpbmRleCAiLmNvbmNhdChyLCIgYWxyZWFkeSBleGlzdHMuIikpO2Zvcih2YXIgaT1lLnByb29mcy5sZW5ndGg7aTxyO2krKyllLnByb29mcy5wdXNoKCIiKTtyZXR1cm4gZS5wcm9vZnNbcl09dCxlfSx0LmNvbnZlcnRUb1BhaXJzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP1tdOiJzdHJpbmciPT09dHlwZW9mIGU/W1tlLHZvaWQgMF1dOkFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm5bZSx0XX0pLmZpbHRlcihmdW5jdGlvbihlKXt2YXIgdD1vKGUsMikscj10WzBdO3JldHVybiB0WzFdLHJ9KTpPYmplY3Qua2V5cyhlKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUpfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFpc05hTihlKX0pLnNvcnQoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW2VbdF0sdF19KX0sdC5pc09yZGVyPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lLmFzc2V0UGFpcn0sdC5uZXR3b3JrQnl0ZT1mdW5jdGlvbihlLHQpe3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJzdHJpbmciOnJldHVybiBlLmNoYXJDb2RlQXQoMCk7Y2FzZSJudW1iZXIiOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIHR9fSx0LmZlZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmZlZT9lLmZlZTplLmFkZGl0aW9uYWxGZWU/dCtlLmFkZGl0aW9uYWxGZWU6dH0sdC5ub3JtYWxpemVBc3NldElkPWZ1bmN0aW9uKGUpe3JldHVybiJXQVZFUyI9PT0oZT1lfHxudWxsKT9udWxsOmV9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIHIgaW4gZSlPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYodFtyXT1lW3JdKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMzA0KTt0Lm1hc3NUcmFuc2Zlcj1pLm1hc3NUcmFuc2Zlcjt2YXIgbz1yKDM2Nik7dC5yZWlzc3VlPW8ucmVpc3N1ZTt2YXIgYT1yKDM2Nyk7dC5idXJuPWEuYnVybjt2YXIgcz1yKDM2OCk7dC5leGNoYW5nZT1zLmV4Y2hhbmdlO3ZhciB1PXIoMzY5KTt0LmxlYXNlPXUubGVhc2U7dmFyIGM9cigzNzApO3QuY2FuY2VsTGVhc2U9Yy5jYW5jZWxMZWFzZTt2YXIgZj1yKDM3MSk7dC5kYXRhPWYuZGF0YTt2YXIgbD1yKDM3Mik7dC5pc3N1ZT1sLmlzc3VlO3ZhciBoPXIoMzczKTt0LnRyYW5zZmVyPWgudHJhbnNmZXI7dmFyIHA9cigzNzQpO3QuYWxpYXM9cC5hbGlhczt2YXIgZD1yKDM3NSk7dC5zZXRTY3JpcHQ9ZC5zZXRTY3JpcHQ7dmFyIHk9cigzNzYpO3Quc2V0QXNzZXRTY3JpcHQ9eS5zZXRBc3NldFNjcmlwdDt2YXIgZz1yKDM3Nyk7dC5zcG9uc29yc2hpcD1nLnNwb25zb3JzaGlwO3ZhciB2PXIoNjY3KTt0Lm9yZGVyPXYub3JkZXI7dmFyIG09cig2NjgpO3QuY2FuY2VsT3JkZXI9bS5jYW5jZWxPcmRlcjt2YXIgYj1yKDM3OCk7dC5jdXN0b21EYXRhPWIuY3VzdG9tRGF0YTt2YXIgXz1yKDM3OSk7dC5hdXRoPV8uYXV0aDt2YXIgUz1yKDM4MCk7dC5pbnZva2VTY3JpcHQ9Uy5pbnZva2VTY3JpcHQ7dmFyIEU9cig2NjkpO3Quc2lnblR4PUUuc2lnblR4LHQudmVyaWZ5PUUudmVyaWZ5LHQuc2VyaWFsaXplPUUuc2VyaWFsaXplLHQuc3VibWl0T3JkZXI9RS5zdWJtaXRPcmRlcix0LmNhbmNlbFN1Ym1pdHRlZE9yZGVyPUUuY2FuY2VsU3VibWl0dGVkT3JkZXIsdC52ZXJpZnlBdXRoRGF0YT1FLnZlcmlmeUF1dGhEYXRhLHQudmVyaWZ5Q3VzdG9tRGF0YT1FLnZlcmlmeUN1c3RvbURhdGE7dmFyIHc9cigzOTApO3Qud2FpdEZvclR4PXcud2FpdEZvclR4LHQuYnJvYWRjYXN0PXcuYnJvYWRjYXN0O3ZhciBUPXtjcnlwdG86bihyKDIwKSksbWFyc2hhbGw6bihyKDE5KSl9O3QubGlicz1UO3ZhciBBPW4ocig2ODYpKTt0LnNlZWRVdGlscz1BO3ZhciBDPW4ocigzOTApKTt0Lm5vZGVJbnRlcmFjdGlvbj1DO3ZhciB4PW4ocigyNSkpO3QudmFsaWRhdG9ycz14fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxmdW5jdGlvbihlKXtmb3IodmFyIHIgaW4gZSl0Lmhhc093blByb3BlcnR5KHIpfHwodFtyXT1lW3JdKX0ocig2ODgpKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sZnVuY3Rpb24oZSx0KXt2YXIgcjtyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCk7dHJ5e3I9cnx8bmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9Y2F0Y2gobil7Im9iamVjdCI9PT10eXBlb2Ygd2luZG93JiYocj13aW5kb3cpfWUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gbnVsbCE9ZSYmKCJvYmplY3QiPT10fHwiZnVuY3Rpb24iPT10KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDcxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdChuKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZmFjdG9yeT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9W10sbj1PYmplY3QuZW50cmllcyhlKS5yZWR1Y2UoZnVuY3Rpb24oZSxuKXt2YXIgaSxvPW5bMF0sYT1uWzFdO3RyeXt2YXIgcz1hKHQpO3JldHVybiBPYmplY3QuYXNzaWduKGUsKChpPXt9KVtvXT1zLGkpKX1jYXRjaCh1KXtyLnB1c2goe3BhdGg6byxtZXNzYWdlOnUubWVzc2FnZX0pfX0sT2JqZWN0LmNyZWF0ZShudWxsKSk7aWYoci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJFcnJvcnM6ICIrSlNPTi5zdHJpbmdpZnkocixudWxsLDQpKTtyZXR1cm4gbn19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDMyKSxpPXIoMzk0KSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlfHxEYXRlLm5vdygpfTt0LmdldERlZmF1bHRUcmFuc2Zvcm09ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpuLnBpcGUobi5wcm9wKCJ0eXBlIiksaS52YWxpZGF0ZShpLnJlcXVpcmVkVmFsaWRhdG9yKCJ0eXBlIikpKSx2ZXJzaW9uOm4ucGlwZShuLnByb3AoInZlcnNpb24iKSxpLnZhbGlkYXRlKGkucmVxdWlyZWRWYWxpZGF0b3IoInZlcnNpb24iKSkpLHNlbmRlclB1YmxpY0tleTpuLnBpcGUobi5wcm9wKCJzZW5kZXJQdWJsaWNLZXkiKSxpLnZhbGlkYXRlKGkucmVxdWlyZWRWYWxpZGF0b3IoInNlbmRlclB1YmxpY0tleSIpKSksdGltZXN0YW1wOm4ucGlwZShuLnByb3AoInRpbWVzdGFtcCIpLG8pLGZlZTpuLnBpcGUobi5wcm9wKCJmZWUiKSxuLmdldENvaW5zLGkudmFsaWRhdGUoaS5yZXF1aXJlZFZhbGlkYXRvcigiZmVlIikpKX19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1yLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1mdW5jdGlvbiBpKGUsdCxyKXtyZXR1cm4gdCYmbihlLnByb3RvdHlwZSx0KSxyJiZuKGUsciksZX1yLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gaX0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuKG49T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfXIuZCh0LCJhIixmdW5jdGlvbigpe3JldHVybiBufSl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4obj0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuKGk9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09bihTeW1ib2wuaXRlcmF0b3IpP2Z1bmN0aW9uKGUpe3JldHVybiBuKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOm4oZSl9KShlKX12YXIgbz1yKDExKTtmdW5jdGlvbiBhKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09aSh0KSYmImZ1bmN0aW9uIiE9PXR5cGVvZiB0P09iamVjdChvLmEpKGUpOnR9ci5kKHQsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuKG49T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJm4oZSx0KX1yLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gaX0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzgyKSxpPXIoNjcxKSxvPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gYShlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09by5jYWxsKGUpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PW8uY2FsbChlKX1mdW5jdGlvbiBjKGUsdCl7aWYobnVsbCE9PWUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGUpaWYoIm9iamVjdCIhPT10eXBlb2YgZSYmKGU9W2VdKSxhKGUpKWZvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0LmNhbGwobnVsbCxlW3JdLHIsZSk7ZWxzZSBmb3IodmFyIGkgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxpKSYmdC5jYWxsKG51bGwsZVtpXSxpLGUpfWUuZXhwb3J0cz17aXNBcnJheTphLGlzQXJyYXlCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PW8uY2FsbChlKX0saXNCdWZmZXI6aSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIEZvcm1EYXRhJiZlIGluc3RhbmNlb2YgRm9ybURhdGF9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUmJmUuYnVmZmVyJiZlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09PXR5cGVvZiBlfSxpc09iamVjdDpzLGlzVW5kZWZpbmVkOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIGV9LGlzRGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1vLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1vLmNhbGwoZSl9LGlzQmxvYjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBCbG9iXSI9PT1vLmNhbGwoZSl9LGlzRnVuY3Rpb246dSxpc1N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKSYmdShlLnBpcGUpfSxpc1VSTFNlYXJjaFBhcmFtczpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBVUkxTZWFyY2hQYXJhbXMmJmUgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXN9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGRvY3VtZW50fSxmb3JFYWNoOmMsbWVyZ2U6ZnVuY3Rpb24gZSgpe3ZhciB0PXt9O2Z1bmN0aW9uIHIocixuKXsib2JqZWN0Ij09PXR5cGVvZiB0W25dJiYib2JqZWN0Ij09PXR5cGVvZiByP3Rbbl09ZSh0W25dLHIpOnRbbl09cn1mb3IodmFyIG49MCxpPWFyZ3VtZW50cy5sZW5ndGg7bjxpO24rKyljKGFyZ3VtZW50c1tuXSxyKTtyZXR1cm4gdH0sZGVlcE1lcmdlOmZ1bmN0aW9uIGUoKXt2YXIgdD17fTtmdW5jdGlvbiByKHIsbil7Im9iamVjdCI9PT10eXBlb2YgdFtuXSYmIm9iamVjdCI9PT10eXBlb2Ygcj90W25dPWUodFtuXSxyKTp0W25dPSJvYmplY3QiPT09dHlwZW9mIHI/ZSh7fSxyKTpyfWZvcih2YXIgbj0wLGk9YXJndW1lbnRzLmxlbmd0aDtuPGk7bisrKWMoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBjKHQsZnVuY3Rpb24odCxpKXtlW2ldPXImJiJmdW5jdGlvbiI9PT10eXBlb2YgdD9uKHQscik6dH0pLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXlxzKi8sIiIpLnJlcGxhY2UoL1xzKiQvLCIiKX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKSxpPXIoMTQpLG89cig3MSksYT0vIi9nLHM9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9U3RyaW5nKG8oZSkpLHM9IjwiK3Q7cmV0dXJuIiIhPT1yJiYocys9IiAiK3IrJz0iJytTdHJpbmcobikucmVwbGFjZShhLCImcXVvdDsiKSsnIicpLHMrIj4iK2krIjwvIit0KyI+In07ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cltlXT10KHMpLG4obi5QK24uRippKGZ1bmN0aW9uKCl7dmFyIHQ9IiJbZV0oJyInKTtyZXR1cm4gdCE9PXQudG9Mb3dlckNhc2UoKXx8dC5zcGxpdCgnIicpLmxlbmd0aD4zfSksIlN0cmluZyIscil9fSxmdW5jdGlvbihlLHQpe3ZhciByLG4saT1lLmV4cG9ydHM9e307ZnVuY3Rpb24gbygpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIGEoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHMoZSl7aWYocj09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigocj09PW98fCFyKSYmc2V0VGltZW91dClyZXR1cm4gcj1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIHIoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHIuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIHIuY2FsbCh0aGlzLGUsMCl9fX0hZnVuY3Rpb24oKXt0cnl7cj0iZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpvfWNhdGNoKGUpe3I9b310cnl7bj0iZnVuY3Rpb24iPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6YX1jYXRjaChlKXtuPWF9fSgpO3ZhciB1LGM9W10sZj0hMSxsPS0xO2Z1bmN0aW9uIGgoKXtmJiZ1JiYoZj0hMSx1Lmxlbmd0aD9jPXUuY29uY2F0KGMpOmw9LTEsYy5sZW5ndGgmJnAoKSl9ZnVuY3Rpb24gcCgpe2lmKCFmKXt2YXIgZT1zKGgpO2Y9ITA7Zm9yKHZhciB0PWMubGVuZ3RoO3Q7KXtmb3IodT1jLGM9W107KytsPHQ7KXUmJnVbbF0ucnVuKCk7bD0tMSx0PWMubGVuZ3RofXU9bnVsbCxmPSExLGZ1bmN0aW9uKGUpe2lmKG49PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigobj09PWF8fCFuKSYmY2xlYXJUaW1lb3V0KXJldHVybiBuPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e24oZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBuLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gbi5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIGQoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiB5KCl7fWkubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTtjLnB1c2gobmV3IGQoZSx0KSksMSE9PWMubGVuZ3RofHxmfHxzKHApfSxkLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxpLnRpdGxlPSJicm93c2VyIixpLmJyb3dzZXI9ITAsaS5lbnY9e30saS5hcmd2PVtdLGkudmVyc2lvbj0iIixpLnZlcnNpb25zPXt9LGkub249eSxpLmFkZExpc3RlbmVyPXksaS5vbmNlPXksaS5vZmY9eSxpLnJlbW92ZUxpc3RlbmVyPXksaS5yZW1vdmVBbGxMaXN0ZW5lcnM9eSxpLmVtaXQ9eSxpLnByZXBlbmRMaXN0ZW5lcj15LGkucHJlcGVuZE9uY2VMaXN0ZW5lcj15LGkubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybltdfSxpLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxpLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0saS5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxpLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHIoZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IodHx8IkFzc2VydGlvbiBmYWlsZWQiKX1lLmV4cG9ydHM9cixyLmVxdWFsPWZ1bmN0aW9uKGUsdCxyKXtpZihlIT10KXRocm93IG5ldyBFcnJvcihyfHwiQXNzZXJ0aW9uIGZhaWxlZDogIitlKyIgIT0gIit0KX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dCxpPXIoMjQpLG89cig0NyksYT1yKDMzMCk7bi5hc3NlcnQ9byxuLnRvQXJyYXk9YS50b0FycmF5LG4uemVybzI9YS56ZXJvMixuLnRvSGV4PWEudG9IZXgsbi5lbmNvZGU9YS5lbmM="
}

Changelog:

{
    "2020.06.16 14:09": "base64:dz1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLnJlZCYmIWUucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGUpfTt2YXIgZz17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIHYoZSx0KXt0aGlzLm5hbWU9ZSx0aGlzLnA9bmV3IG8odCwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IG8oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIG0oKXt2LmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gYigpe3YuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBfKCl7di5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIFMoKXt2LmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gRShlKXtpZigic3RyaW5nIj09PXR5cGVvZiBlKXt2YXIgdD1vLl9wcmltZShlKTt0aGlzLm09dC5wLHRoaXMucHJpbWU9dH1lbHNlIG4oZS5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1lLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiB3KGUpe0UuY2FsbCh0aGlzLGUpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBvKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXYucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgbyhudWxsKTtyZXR1cm4gZS53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLGV9LHYucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oZSl7dmFyIHQscj1lO2Rve3RoaXMuc3BsaXQocix0aGlzLnRtcCksdD0ocj0ocj10aGlzLmltdWxLKHIpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUodD50aGlzLm4pO3ZhciBuPXQ8dGhpcy5uPy0xOnIudWNtcCh0aGlzLnApO3JldHVybiAwPT09bj8oci53b3Jkc1swXT0wLHIubGVuZ3RoPTEpOm4+MD9yLmlzdWIodGhpcy5wKTpyLnN0cmlwKCkscn0sdi5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZSx0KXtlLml1c2hybih0aGlzLm4sMCx0KX0sdi5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW11bCh0aGlzLmspfSxpKG0sdiksbS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9TWF0aC5taW4oZS5sZW5ndGgsOSksbj0wO248cjtuKyspdC53b3Jkc1tuXT1lLndvcmRzW25dO2lmKHQubGVuZ3RoPXIsZS5sZW5ndGg8PTkpcmV0dXJuIGUud29yZHNbMF09MCx2b2lkKGUubGVuZ3RoPTEpO3ZhciBpPWUud29yZHNbOV07Zm9yKHQud29yZHNbdC5sZW5ndGgrK109NDE5NDMwMyZpLG49MTA7bjxlLmxlbmd0aDtuKyspe3ZhciBvPTB8ZS53b3Jkc1tuXTtlLndvcmRzW24tMTBdPSg0MTk0MzAzJm8pPDw0fGk+Pj4yMixpPW99aT4+Pj0yMixlLndvcmRzW24tMTBdPWksMD09PWkmJmUubGVuZ3RoPjEwP2UubGVuZ3RoLT0xMDplLmxlbmd0aC09OX0sbS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZSl7ZS53b3Jkc1tlLmxlbmd0aF09MCxlLndvcmRzW2UubGVuZ3RoKzFdPTAsZS5sZW5ndGgrPTI7Zm9yKHZhciB0PTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj0wfGUud29yZHNbcl07dCs9OTc3Km4sZS53b3Jkc1tyXT02NzEwODg2MyZ0LHQ9NjQqbisodC82NzEwODg2NHwwKX1yZXR1cm4gMD09PWUud29yZHNbZS5sZW5ndGgtMV0mJihlLmxlbmd0aC0tLDA9PT1lLndvcmRzW2UubGVuZ3RoLTFdJiZlLmxlbmd0aC0tKSxlfSxpKGIsdiksaShfLHYpLGkoUyx2KSxTLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPTE5KigwfGUud29yZHNbcl0pK3QsaT02NzEwODg2MyZuO24+Pj49MjYsZS53b3Jkc1tyXT1pLHQ9bn1yZXR1cm4gMCE9PXQmJihlLndvcmRzW2UubGVuZ3RoKytdPXQpLGV9LG8uX3ByaW1lPWZ1bmN0aW9uKGUpe2lmKGdbZV0pcmV0dXJuIGdbZV07dmFyIHQ7aWYoImsyNTYiPT09ZSl0PW5ldyBtO2Vsc2UgaWYoInAyMjQiPT09ZSl0PW5ldyBiO2Vsc2UgaWYoInAxOTIiPT09ZSl0PW5ldyBfO2Vsc2V7aWYoInAyNTUxOSIhPT1lKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2UpO3Q9bmV3IFN9cmV0dXJuIGdbZV09dCx0fSxFLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihlKXtuKDA9PT1lLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLG4oZS5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sRS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oZSx0KXtuKDA9PT0oZS5uZWdhdGl2ZXx0Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxuKGUucmVkJiZlLnJlZD09PXQucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LEUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGUpLl9mb3JjZVJlZCh0aGlzKTplLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc1plcm8oKT9lLmNsb25lKCk6dGhpcy5tLnN1YihlKS5fZm9yY2VSZWQodGhpcyl9LEUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmFkZCh0KTtyZXR1cm4gci5jbXAodGhpcy5tKT49MCYmci5pc3ViKHRoaXMubSksci5fZm9yY2VSZWQodGhpcyl9LEUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZSx0KXt0aGlzLl92ZXJpZnkyKGUsdCk7dmFyIHI9ZS5pYWRkKHQpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyfSxFLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZSx0KXt0aGlzLl92ZXJpZnkyKGUsdCk7dmFyIHI9ZS5zdWIodCk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmlzdWIodCk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyfSxFLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShlKSx0aGlzLmltb2QoZS51c2hsbih0KSl9LEUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihlLHQpLHRoaXMuaW1vZChlLmltdWwodCkpfSxFLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihlLHQpLHRoaXMuaW1vZChlLm11bCh0KSl9LEUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW11bChlLGUuY2xvbmUoKSl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5tdWwoZSxlKX0sRS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihlKXtpZihlLmlzWmVybygpKXJldHVybiBlLmNsb25lKCk7dmFyIHQ9dGhpcy5tLmFuZGxuKDMpO2lmKG4odCUyPT09MSksMz09PXQpe3ZhciByPXRoaXMubS5hZGQobmV3IG8oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coZSxyKX1mb3IodmFyIGk9dGhpcy5tLnN1Ym4oMSksYT0wOyFpLmlzWmVybygpJiYwPT09aS5hbmRsbigxKTspYSsrLGkuaXVzaHJuKDEpO24oIWkuaXNaZXJvKCkpO3ZhciBzPW5ldyBvKDEpLnRvUmVkKHRoaXMpLHU9cy5yZWROZWcoKSxjPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxmPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoZj1uZXcgbygyKmYqZikudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KGYsYykuY21wKHUpOylmLnJlZElBZGQodSk7Zm9yKHZhciBsPXRoaXMucG93KGYsaSksaD10aGlzLnBvdyhlLGkuYWRkbigxKS5pdXNocm4oMSkpLHA9dGhpcy5wb3coZSxpKSxkPWE7MCE9PXAuY21wKHMpOyl7Zm9yKHZhciB5PXAsZz0wOzAhPT15LmNtcChzKTtnKyspeT15LnJlZFNxcigpO24oZzxkKTt2YXIgdj10aGlzLnBvdyhsLG5ldyBvKDEpLml1c2hsbihkLWctMSkpO2g9aC5yZWRNdWwodiksbD12LnJlZFNxcigpLHA9cC5yZWRNdWwobCksZD1nfXJldHVybiBofSxFLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGUpe3ZhciB0PWUuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT10Lm5lZ2F0aXZlPyh0Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKHQpLnJlZE5lZygpKTp0aGlzLmltb2QodCl9LEUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihlLHQpe2lmKHQuaXNaZXJvKCkpcmV0dXJuIG5ldyBvKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT10LmNtcG4oMSkpcmV0dXJuIGUuY2xvbmUoKTt2YXIgcj1uZXcgQXJyYXkoMTYpO3JbMF09bmV3IG8oMSkudG9SZWQodGhpcyksclsxXT1lO2Zvcih2YXIgbj0yO248ci5sZW5ndGg7bisrKXJbbl09dGhpcy5tdWwocltuLTFdLGUpO3ZhciBpPXJbMF0sYT0wLHM9MCx1PXQuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT11JiYodT0yNiksbj10Lmxlbmd0aC0xO24+PTA7bi0tKXtmb3IodmFyIGM9dC53b3Jkc1tuXSxmPXUtMTtmPj0wO2YtLSl7dmFyIGw9Yz4+ZiYxO2khPT1yWzBdJiYoaT10aGlzLnNxcihpKSksMCE9PWx8fDAhPT1hPyhhPDw9MSxhfD1sLCg0PT09KytzfHwwPT09biYmMD09PWYpJiYoaT10aGlzLm11bChpLHJbYV0pLHM9MCxhPTApKTpzPTB9dT0yNn1yZXR1cm4gaX0sRS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGUpe3ZhciB0PWUudW1vZCh0aGlzLm0pO3JldHVybiB0PT09ZT90LmNsb25lKCk6dH0sRS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jbG9uZSgpO3JldHVybiB0LnJlZD1udWxsLHR9LG8ubW9udD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHcoZSl9LGkodyxFKSx3LnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW1vZChlLnVzaGxuKHRoaXMuc2hpZnQpKX0sdy5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5pbW9kKGUubXVsKHRoaXMucmludikpO3JldHVybiB0LnJlZD1udWxsLHR9LHcucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZSx0KXtpZihlLmlzWmVybygpfHx0LmlzWmVybygpKXJldHVybiBlLndvcmRzWzBdPTAsZS5sZW5ndGg9MSxlO3ZhciByPWUuaW11bCh0KSxuPXIubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGk9ci5pc3ViKG4pLml1c2hybih0aGlzLnNoaWZ0KSxvPWk7cmV0dXJuIGkuY21wKHRoaXMubSk+PTA/bz1pLmlzdWIodGhpcy5tKTppLmNtcG4oMCk8MCYmKG89aS5pYWRkKHRoaXMubSkpLG8uX2ZvcmNlUmVkKHRoaXMpfSx3LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSx0KXtpZihlLmlzWmVybygpfHx0LmlzWmVybygpKXJldHVybiBuZXcgbygwKS5fZm9yY2VSZWQodGhpcyk7dmFyIHI9ZS5tdWwodCksbj1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxpPXIuaXN1YihuKS5pdXNocm4odGhpcy5zaGlmdCksYT1pO3JldHVybiBpLmNtcCh0aGlzLm0pPj0wP2E9aS5pc3ViKHRoaXMubSk6aS5jbXBuKDApPDAmJihhPWkuaWFkZCh0aGlzLm0pKSxhLl9mb3JjZVJlZCh0aGlzKX0sdy5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbW9kKGUuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShlLHRoaXMpfSkuY2FsbCh0aGlzLHIoMjE1KShlKSl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGZ1bmN0aW9uKGUpe2Zvcih2YXIgciBpbiBlKXQuaGFzT3duUHJvcGVydHkocil8fCh0W3JdPWVbcl0pfShyKDI2KSk7dmFyIG49cig2NTApLGk9cig2NTEpLG89cig2NTIpLGE9cig2NTMpLHM9cig2NTQpLHU9cig2NTUpLGM9cig2NTYpLGY9cig2NTcpLGw9cig2NTgpLGg9cig2NTkpLHA9cig2NjApLGQ9cig2NjEpLHk9cig2NjIpLGc9cig2NjMpLHY9cigzNjUpLG09cig2NjQpLGI9cig2NjUpLF89cig2NjYpO3QudmFsaWRhdGU9e3RyYW5zZmVyOm4udHJhbnNmZXJWYWxpZGF0b3IsbWFzc1RyYW5zZmVyOmkubWFzc1RyYW5zZmVyVmFsaWRhdG9yLGFsaWFzOm8uYWxpYXNWYWxpZGF0b3IsaXNzdWU6cC5pc3N1ZVZhbGlkYXRvcixyZWlzc3VlOmgucmVpc3N1ZVZhbGlkYXRvcixzcG9uc29yc2hpcDpjLnNwb25zb3JzaGlwVmFsaWRhdG9yLGJ1cm46YS5idXJuVmFsaWRhdG9yLHNldEFzc2V0U2NyaXB0OmYuc2V0QXNzZXRTY3JpcHRWYWxpZGF0b3IsY2FuY2VsTGVhc2U6cy5jYW5jZWxMZWFzZVZhbGlkYXRvcixkYXRhOnUuZGF0YVZhbGlkYXRvcixsZWFzZTpkLmxlYXNlVmFsaWRhdG9yLHNldFNjcmlwdDpsLnNldFNjcmlwdFZhbGlkYXRvcixpbnZva2VTY3JpcHQ6eS5pbnZva2VWYWxpZGF0b3IsZXhjaGFuZ2U6Zy5leGNoYW5nZVZhbGlkYXRvcixjYW5jZWxPcmRlcjptLmNhbmNlbE9yZGVyVmFsaWRhdG9yLGN1c3RvbURhdGE6Yi5jdXN0b21EYXRhVmFsaWRhdG9yLG9yZGVyOnYub3JkZXJWYWxpZGF0b3IsYXV0aDpfLmF1dGhWYWxpZGF0b3J9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDIwKSxvPTE0MCxhPXtBVkFJTEFCTEVfQ0hBUlM6Ii0uMDEyMzQ1Njc4OUBfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLE1BWF9BTElBU19MRU5HVEg6MzAsTUlOX0FMSUFTX0xFTkdUSDo0fSxzPTQsdT0xNixjPTFlMzt0LmRlZmF1bHRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19LHQubm9wZT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sdC5waXBlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiB0KGUpfSxlKX19LHQudmFsaWRhdGVQaXBlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgcj0hMCxuPTAsaT10O248aS5sZW5ndGg7bisrKXtpZighKHI9ISEoMCxpW25dKShlKSkpcmV0dXJuITF9cmV0dXJuIHJ9fSx0LnByb3A9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0P3RbZV06dm9pZCAwfX0sdC5sdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlPj10fX0sdC5ndGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlPD10fX0sdC5pZkVsc2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZShuKT90KG4pOnIobil9fSx0LmlzRXE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3N3aXRjaCghMCl7Y2FzZSB0LmlzTnVtYmVyKHIpJiZ0LmlzTnVtYmVyKGUpOnJldHVybiBOdW1iZXIocik9PT1OdW1iZXIoZSk7Y2FzZSB0LmlzU3RyaW5nKHIpJiZ0LmlzU3RyaW5nKGUpOnJldHVybiBTdHJpbmcoZSk9PT1TdHJpbmcocik7Y2FzZSB0LmlzQm9vbGVhbihyKSYmdC5pc0Jvb2xlYW4oZSk6cmV0dXJuIEJvb2xlYW4ocik9PT1Cb29sZWFuKGUpO2RlZmF1bHQ6cmV0dXJuIGU9PT1yfX19LHQub3JFcT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUuc29tZSh0LmlzRXEocikpfX0sdC5pc1JlcXVpcmVkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4hZXx8bnVsbCE9dH19LHQuaXNTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFN0cmluZ30sdC5pc051bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4oIm51bWJlciI9PT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIE51bWJlcikmJiFpc05hTihOdW1iZXIoZSkpfSx0LmlzTnVtYmVyTGlrZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmIWlzTmFOKE51bWJlcihlKSkmJiEoIWUmJjAhPT1lKX0sdC5pc0Jvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJigiYm9vbGVhbiI9PT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIEJvb2xlYW4pfSx0LmlzQnl0ZUFycmF5PWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiExO3ZhciByPW5ldyBVaW50OEFycmF5KGUpO3JldHVybiByLmxlbmd0aD09PWUubGVuZ3RoJiZyLmV2ZXJ5KGZ1bmN0aW9uKHIsbil7cmV0dXJuIHQuaXNFcShyKShlW25dKX0pfSx0LmlzQXJyYXk9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9LHQuYnl0ZXNMZW5ndGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gVWludDhBcnJheS5mcm9tKHQpLmxlbmd0aD09PWV9Y2F0Y2gocil7cmV0dXJuITF9fX0sdC5pc0Jhc2U1OD1mdW5jdGlvbihlKXt0cnl7aS5iYXNlNThEZWNvZGUoZSl9Y2F0Y2godCl7cmV0dXJuITF9cmV0dXJuITB9LHQuaXNCYXNlNjQ9ZnVuY3Rpb24oZSl7dHJ5e2U9ZS5yZXBsYWNlKC9eYmFzZTY0Oi8sIiIpLGkuYmFzZTY0RGVjb2RlKGUpfWNhdGNoKHQpe3JldHVybiExfXJldHVybiEwfSx0LmlzVmFsaWRBZGRyZXNzPWZ1bmN0aW9uKGUscil7aWYoInN0cmluZyIhPT10eXBlb2YgZXx8IXQuaXNCYXNlNTgoZSkpcmV0dXJuITE7dmFyIG49aS5iYXNlNThEZWNvZGUoZSk7aWYoMSE9PW5bMF0pcmV0dXJuITE7aWYobnVsbCE9ciYmblsxXSE9cilyZXR1cm4hMTtmb3IodmFyIG89bi5zbGljZSgwLDIyKSxhPW4uc2xpY2UoMjIsMjYpLHM9aS5rZWNjYWsoaS5ibGFrZTJiKG8pKS5zbGljZSgwLDQpLHU9MDt1PDQ7dSsrKWlmKGFbdV0hPT1zW3VdKXJldHVybiExO3JldHVybiEwfTt2YXIgZjt0LmlzVmFsaWRBbGlhc05hbWU9dC5pZkVsc2UoKGY9YS5BVkFJTEFCTEVfQ0hBUlMsZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoIiIpLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBmLmluY2x1ZGVzKGUpfSl9KSx0LnBpcGUodC5wcm9wKCJsZW5ndGgiKSx0LnZhbGlkYXRlUGlwZSh0Lmx0ZShhLk1BWF9BTElBU19MRU5HVEgpLHQuZ3RlKGEuTUlOX0FMSUFTX0xFTkdUSCkpKSx0LmRlZmF1bHRWYWx1ZSghMSkpLHQuaXNWYWxpZEFsaWFzPXQudmFsaWRhdGVQaXBlKHQuaXNTdHJpbmcsdC5waXBlKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KCI6Iil9LHQuaWZFbHNlKGZ1bmN0aW9uKGUpe3JldHVybiJhbGlhcyIhPT1lWzBdfHwzIT09ZS5sZW5ndGh9LHQuZGVmYXVsdFZhbHVlKCExKSx0LnBpcGUodC5wcm9wKDIpLHQuaXNWYWxpZEFsaWFzTmFtZSkpKSksdC5pc0hhc2g9dC52YWxpZGF0ZVBpcGUodC5pc1JlcXVpcmVkKCEwKSx0LmlzQmFzZTU4LHQucGlwZShmdW5jdGlvbihlKXtyZXR1cm4gaS5iYXNlNThEZWNvZGUoZSl9LHQuYnl0ZXNMZW5ndGgoMzIpKSksdC5pc1B1YmxpY0tleT10LmlzSGFzaCx0LmlzQXNzZXRJZD10LmlmRWxzZSh0Lm9yRXEoWyIiLG51bGwsdm9pZCAwLCJXQVZFUyJdKSx0LmRlZmF1bHRWYWx1ZSghMCksdC5pc0hhc2gpLHQuaXNBdHRhY2htZW50PXQuaWZFbHNlKHQub3JFcShbbnVsbCx2b2lkIDBdKSx0LmRlZmF1bHRWYWx1ZSghMCksdC5waXBlKHQuaWZFbHNlKHQuaXNCYXNlNTgsaS5iYXNlNThEZWNvZGUsdC5ub3BlKSx0LmlmRWxzZSh0LmlzQnl0ZUFycmF5LHQucGlwZSh0LnByb3AoImxlbmd0aCIpLHQubHRlKG8pKSx0LmRlZmF1bHRWYWx1ZSghMSkpKSk7dmFyIGw9e2ludGVnZXI6dC5pc051bWJlckxpa2UsYm9vbGVhbjp0LmlzQm9vbGVhbixzdHJpbmc6dC5pc1N0cmluZyxiaW5hcnk6dC5pc0Jhc2U2NH07dC5pc1ZhbGlkRGF0YVBhaXI9ZnVuY3Rpb24oZSl7cmV0dXJuISghbFtlLnR5cGVdfHwhbFtlLnR5cGVdKGUudmFsdWUpKX0sdC5pc1ZhbGlkRGF0YT10LnZhbGlkYXRlUGlwZSh0LmlzUmVxdWlyZWQoITApLHQucGlwZSh0LnByb3AoImtleSIpLHQudmFsaWRhdGVQaXBlKHQuaXNTdHJpbmcsZnVuY3Rpb24oZSl7cmV0dXJuISFlfSkpLHQuaXNWYWxpZERhdGFQYWlyKSx0LmlzVmFsaWRBc3NldE5hbWU9dC52YWxpZGF0ZVBpcGUodC5pc1JlcXVpcmVkKCEwKSx0LmlzU3RyaW5nLHQucGlwZShpLnN0cmluZ1RvQnl0ZXMsdC5wcm9wKCJsZW5ndGgiKSx0LmlmRWxzZSh0Lmd0ZShzKSx0Lmx0ZSh1KSx0LmRlZmF1bHRWYWx1ZSghMSkpKSksdC5pc1ZhbGlkQXNzZXREZXNjcmlwdGlvbj10LmlmRWxzZSh0LmlzUmVxdWlyZWQoITEpLHQuZGVmYXVsdFZhbHVlKCEwKSx0LnBpcGUoaS5zdHJpbmdUb0J5dGVzLHQucHJvcCgibGVuZ3RoIiksdC5sdGUoYykpKSx0LmV4Y2VwdGlvbj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoZSl9LHQuaXNSZWNpcGllbnQ9dC5pZkVsc2UodC5pc1ZhbGlkQWRkcmVzcyx0LmRlZmF1bHRWYWx1ZSghMCksdC5pc1ZhbGlkQWxpYXMpLHQudmFsaWRhdGVCeVNoZW1hPWZ1bmN0aW9uKGUscil7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBvPW4oZSwyKSxhPW9bMF0scz1vWzFdLHU9dC5wcm9wKGEpKGl8fHt9KTtzKHUpfHx0LmV4Y2VwdGlvbihyKGEsdSkpfSksITB9fSx0LmdldEVycm9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuJ3R4ICInLmNvbmNhdChlLCciLCBoYXMgd3JvbmcgZGF0YTogJykuY29uY2F0KEpTT04uc3RyaW5naWZ5KHQpLCIuIENoZWNrIHR4IGRhdGEuIil9fSxmdW5jdGlvbihlLHQpe3ZhciByPWUuZXhwb3J0cz17dmVyc2lvbjoiMi42LjkifTsibnVtYmVyIj09dHlwZW9mIF9fZSYmKF9fZT1yKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTIpLGk9cig0MTYpLG89cig4MiksYT1PYmplY3QuZGVmaW5lUHJvcGVydHk7dC5mPXIoMjkpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihlLHQscil7aWYobihlKSx0PW8odCwhMCksbihyKSxpKXRyeXtyZXR1cm4gYShlLHQscil9Y2F0Y2gocyl7fWlmKCJnZXQiaW4gcnx8InNldCJpbiByKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhIik7cmV0dXJuInZhbHVlImluIHImJihlW3RdPXIudmFsdWUpLGV9fSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPSFyKDE0KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig4NyksaT1yKDEwMyksbz1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGE9cigyMCk7dC5tYXBPYmo9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkubWFwKGZ1bmN0aW9uKGUpe3ZhciByPW8oZSwyKSxuPXJbMF0saT1yWzFdO3JldHVybltuLHQoaSldfSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dmFyIHI9byh0LDIpLG49clswXSxhPXJbMV07cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sZSxpKHt9LG4sYSkpfSx7fSl9LHQuZ2V0U2VuZGVyUHVibGljS2V5PWZ1bmN0aW9uKGUsdCl7aWYoMD09PWUubGVuZ3RoJiZudWxsPT10LnNlbmRlclB1YmxpY0tleSl0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSBwcm92aWRlIGVpdGhlciBzZWVkIG9yIHNlbmRlclB1YmxpY0tleSIpO3JldHVybiB0LnNlbmRlclB1YmxpY0tleXx8YS5wdWJsaWNLZXkoZVswXVswXSl9LHQuYmFzZTY0UHJlZml4PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwiYmFzZTY0OiI9PT1lLnNsaWNlKDAsNyk/ZToiYmFzZTY0OiIrZX0sdC5hZGRQcm9vZj1mdW5jdGlvbihlLHQscil7aWYobnVsbD09cilyZXR1cm4gZS5wcm9vZnM9W10uY29uY2F0KG4oZS5wcm9vZnMpLFt0XSksZTtpZihudWxsIT1lLnByb29mcyYmZS5wcm9vZnNbcl0pdGhyb3cgbmV3IEVycm9yKCJQcm9vZiBhdCBpbmRleCAiLmNvbmNhdChyLCIgYWxyZWFkeSBleGlzdHMuIikpO2Zvcih2YXIgaT1lLnByb29mcy5sZW5ndGg7aTxyO2krKyllLnByb29mcy5wdXNoKCIiKTtyZXR1cm4gZS5wcm9vZnNbcl09dCxlfSx0LmNvbnZlcnRUb1BhaXJzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP1tdOiJzdHJpbmciPT09dHlwZW9mIGU/W1tlLHZvaWQgMF1dOkFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm5bZSx0XX0pLmZpbHRlcihmdW5jdGlvbihlKXt2YXIgdD1vKGUsMikscj10WzBdO3JldHVybiB0WzFdLHJ9KTpPYmplY3Qua2V5cyhlKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUpfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFpc05hTihlKX0pLnNvcnQoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW2VbdF0sdF19KX0sdC5pc09yZGVyPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lLmFzc2V0UGFpcn0sdC5uZXR3b3JrQnl0ZT1mdW5jdGlvbihlLHQpe3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJzdHJpbmciOnJldHVybiBlLmNoYXJDb2RlQXQoMCk7Y2FzZSJudW1iZXIiOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIHR9fSx0LmZlZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmZlZT9lLmZlZTplLmFkZGl0aW9uYWxGZWU/dCtlLmFkZGl0aW9uYWxGZWU6dH0sdC5ub3JtYWxpemVBc3NldElkPWZ1bmN0aW9uKGUpe3JldHVybiJXQVZFUyI9PT0oZT1lfHxudWxsKT9udWxsOmV9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIHIgaW4gZSlPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYodFtyXT1lW3JdKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMzA0KTt0Lm1hc3NUcmFuc2Zlcj1pLm1hc3NUcmFuc2Zlcjt2YXIgbz1yKDM2Nik7dC5yZWlzc3VlPW8ucmVpc3N1ZTt2YXIgYT1yKDM2Nyk7dC5idXJuPWEuYnVybjt2YXIgcz1yKDM2OCk7dC5leGNoYW5nZT1zLmV4Y2hhbmdlO3ZhciB1PXIoMzY5KTt0LmxlYXNlPXUubGVhc2U7dmFyIGM9cigzNzApO3QuY2FuY2VsTGVhc2U9Yy5jYW5jZWxMZWFzZTt2YXIgZj1yKDM3MSk7dC5kYXRhPWYuZGF0YTt2YXIgbD1yKDM3Mik7dC5pc3N1ZT1sLmlzc3VlO3ZhciBoPXIoMzczKTt0LnRyYW5zZmVyPWgudHJhbnNmZXI7dmFyIHA9cigzNzQpO3QuYWxpYXM9cC5hbGlhczt2YXIgZD1yKDM3NSk7dC5zZXRTY3JpcHQ9ZC5zZXRTY3JpcHQ7dmFyIHk9cigzNzYpO3Quc2V0QXNzZXRTY3JpcHQ9eS5zZXRBc3NldFNjcmlwdDt2YXIgZz1yKDM3Nyk7dC5zcG9uc29yc2hpcD1nLnNwb25zb3JzaGlwO3ZhciB2PXIoNjY3KTt0Lm9yZGVyPXYub3JkZXI7dmFyIG09cig2NjgpO3QuY2FuY2VsT3JkZXI9bS5jYW5jZWxPcmRlcjt2YXIgYj1yKDM3OCk7dC5jdXN0b21EYXRhPWIuY3VzdG9tRGF0YTt2YXIgXz1yKDM3OSk7dC5hdXRoPV8uYXV0aDt2YXIgUz1yKDM4MCk7dC5pbnZva2VTY3JpcHQ9Uy5pbnZva2VTY3JpcHQ7dmFyIEU9cig2NjkpO3Quc2lnblR4PUUuc2lnblR4LHQudmVyaWZ5PUUudmVyaWZ5LHQuc2VyaWFsaXplPUUuc2VyaWFsaXplLHQuc3VibWl0T3JkZXI9RS5zdWJtaXRPcmRlcix0LmNhbmNlbFN1Ym1pdHRlZE9yZGVyPUUuY2FuY2VsU3VibWl0dGVkT3JkZXIsdC52ZXJpZnlBdXRoRGF0YT1FLnZlcmlmeUF1dGhEYXRhLHQudmVyaWZ5Q3VzdG9tRGF0YT1FLnZlcmlmeUN1c3RvbURhdGE7dmFyIHc9cigzOTApO3Qud2FpdEZvclR4PXcud2FpdEZvclR4LHQuYnJvYWRjYXN0PXcuYnJvYWRjYXN0O3ZhciBUPXtjcnlwdG86bihyKDIwKSksbWFyc2hhbGw6bihyKDE5KSl9O3QubGlicz1UO3ZhciBBPW4ocig2ODYpKTt0LnNlZWRVdGlscz1BO3ZhciBDPW4ocigzOTApKTt0Lm5vZGVJbnRlcmFjdGlvbj1DO3ZhciB4PW4ocigyNSkpO3QudmFsaWRhdG9ycz14fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxmdW5jdGlvbihlKXtmb3IodmFyIHIgaW4gZSl0Lmhhc093blByb3BlcnR5KHIpfHwodFtyXT1lW3JdKX0ocig2ODgpKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sZnVuY3Rpb24oZSx0KXt2YXIgcjtyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCk7dHJ5e3I9cnx8bmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9Y2F0Y2gobil7Im9iamVjdCI9PT10eXBlb2Ygd2luZG93JiYocj13aW5kb3cpfWUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gbnVsbCE9ZSYmKCJvYmplY3QiPT10fHwiZnVuY3Rpb24iPT10KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDcxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdChuKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZmFjdG9yeT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9W10sbj1PYmplY3QuZW50cmllcyhlKS5yZWR1Y2UoZnVuY3Rpb24oZSxuKXt2YXIgaSxvPW5bMF0sYT1uWzFdO3RyeXt2YXIgcz1hKHQpO3JldHVybiBPYmplY3QuYXNzaWduKGUsKChpPXt9KVtvXT1zLGkpKX1jYXRjaCh1KXtyLnB1c2goe3BhdGg6byxtZXNzYWdlOnUubWVzc2FnZX0pfX0sT2JqZWN0LmNyZWF0ZShudWxsKSk7aWYoci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJFcnJvcnM6ICIrSlNPTi5zdHJpbmdpZnkocixudWxsLDQpKTtyZXR1cm4gbn19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDMyKSxpPXIoMzk0KSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlfHxEYXRlLm5vdygpfTt0LmdldERlZmF1bHRUcmFuc2Zvcm09ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpuLnBpcGUobi5wcm9wKCJ0eXBlIiksaS52YWxpZGF0ZShpLnJlcXVpcmVkVmFsaWRhdG9yKCJ0eXBlIikpKSx2ZXJzaW9uOm4ucGlwZShuLnByb3AoInZlcnNpb24iKSxpLnZhbGlkYXRlKGkucmVxdWlyZWRWYWxpZGF0b3IoInZlcnNpb24iKSkpLHNlbmRlclB1YmxpY0tleTpuLnBpcGUobi5wcm9wKCJzZW5kZXJQdWJsaWNLZXkiKSxpLnZhbGlkYXRlKGkucmVxdWlyZWRWYWxpZGF0b3IoInNlbmRlclB1YmxpY0tleSIpKSksdGltZXN0YW1wOm4ucGlwZShuLnByb3AoInRpbWVzdGFtcCIpLG8pLGZlZTpuLnBpcGUobi5wcm9wKCJmZWUiKSxuLmdldENvaW5zLGkudmFsaWRhdGUoaS5yZXF1aXJlZFZhbGlkYXRvcigiZmVlIikpKX19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1yLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1mdW5jdGlvbiBpKGUsdCxyKXtyZXR1cm4gdCYmbihlLnByb3RvdHlwZSx0KSxyJiZuKGUsciksZX1yLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gaX0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuKG49T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfXIuZCh0LCJhIixmdW5jdGlvbigpe3JldHVybiBufSl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4obj0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuKGk9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09bihTeW1ib2wuaXRlcmF0b3IpP2Z1bmN0aW9uKGUpe3JldHVybiBuKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOm4oZSl9KShlKX12YXIgbz1yKDExKTtmdW5jdGlvbiBhKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09aSh0KSYmImZ1bmN0aW9uIiE9PXR5cGVvZiB0P09iamVjdChvLmEpKGUpOnR9ci5kKHQsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuKG49T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJm4oZSx0KX1yLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gaX0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzgyKSxpPXIoNjcxKSxvPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gYShlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09by5jYWxsKGUpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PW8uY2FsbChlKX1mdW5jdGlvbiBjKGUsdCl7aWYobnVsbCE9PWUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGUpaWYoIm9iamVjdCIhPT10eXBlb2YgZSYmKGU9W2VdKSxhKGUpKWZvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0LmNhbGwobnVsbCxlW3JdLHIsZSk7ZWxzZSBmb3IodmFyIGkgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxpKSYmdC5jYWxsKG51bGwsZVtpXSxpLGUpfWUuZXhwb3J0cz17aXNBcnJheTphLGlzQXJyYXlCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PW8uY2FsbChlKX0saXNCdWZmZXI6aSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIEZvcm1EYXRhJiZlIGluc3RhbmNlb2YgRm9ybURhdGF9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUmJmUuYnVmZmVyJiZlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09PXR5cGVvZiBlfSxpc09iamVjdDpzLGlzVW5kZWZpbmVkOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIGV9LGlzRGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1vLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1vLmNhbGwoZSl9LGlzQmxvYjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBCbG9iXSI9PT1vLmNhbGwoZSl9LGlzRnVuY3Rpb246dSxpc1N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKSYmdShlLnBpcGUpfSxpc1VSTFNlYXJjaFBhcmFtczpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBVUkxTZWFyY2hQYXJhbXMmJmUgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXN9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGRvY3VtZW50fSxmb3JFYWNoOmMsbWVyZ2U6ZnVuY3Rpb24gZSgpe3ZhciB0PXt9O2Z1bmN0aW9uIHIocixuKXsib2JqZWN0Ij09PXR5cGVvZiB0W25dJiYib2JqZWN0Ij09PXR5cGVvZiByP3Rbbl09ZSh0W25dLHIpOnRbbl09cn1mb3IodmFyIG49MCxpPWFyZ3VtZW50cy5sZW5ndGg7bjxpO24rKyljKGFyZ3VtZW50c1tuXSxyKTtyZXR1cm4gdH0sZGVlcE1lcmdlOmZ1bmN0aW9uIGUoKXt2YXIgdD17fTtmdW5jdGlvbiByKHIsbil7Im9iamVjdCI9PT10eXBlb2YgdFtuXSYmIm9iamVjdCI9PT10eXBlb2Ygcj90W25dPWUodFtuXSxyKTp0W25dPSJvYmplY3QiPT09dHlwZW9mIHI/ZSh7fSxyKTpyfWZvcih2YXIgbj0wLGk9YXJndW1lbnRzLmxlbmd0aDtuPGk7bisrKWMoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBjKHQsZnVuY3Rpb24odCxpKXtlW2ldPXImJiJmdW5jdGlvbiI9PT10eXBlb2YgdD9uKHQscik6dH0pLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXlxzKi8sIiIpLnJlcGxhY2UoL1xzKiQvLCIiKX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKSxpPXIoMTQpLG89cig3MSksYT0vIi9nLHM9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9U3RyaW5nKG8oZSkpLHM9IjwiK3Q7cmV0dXJuIiIhPT1yJiYocys9IiAiK3IrJz0iJytTdHJpbmcobikucmVwbGFjZShhLCImcXVvdDsiKSsnIicpLHMrIj4iK2krIjwvIit0KyI+In07ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cltlXT10KHMpLG4obi5QK24uRippKGZ1bmN0aW9uKCl7dmFyIHQ9IiJbZV0oJyInKTtyZXR1cm4gdCE9PXQudG9Mb3dlckNhc2UoKXx8dC5zcGxpdCgnIicpLmxlbmd0aD4zfSksIlN0cmluZyIscil9fSxmdW5jdGlvbihlLHQpe3ZhciByLG4saT1lLmV4cG9ydHM9e307ZnVuY3Rpb24gbygpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIGEoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHMoZSl7aWYocj09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigocj09PW98fCFyKSYmc2V0VGltZW91dClyZXR1cm4gcj1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIHIoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHIuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIHIuY2FsbCh0aGlzLGUsMCl9fX0hZnVuY3Rpb24oKXt0cnl7cj0iZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpvfWNhdGNoKGUpe3I9b310cnl7bj0iZnVuY3Rpb24iPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6YX1jYXRjaChlKXtuPWF9fSgpO3ZhciB1LGM9W10sZj0hMSxsPS0xO2Z1bmN0aW9uIGgoKXtmJiZ1JiYoZj0hMSx1Lmxlbmd0aD9jPXUuY29uY2F0KGMpOmw9LTEsYy5sZW5ndGgmJnAoKSl9ZnVuY3Rpb24gcCgpe2lmKCFmKXt2YXIgZT1zKGgpO2Y9ITA7Zm9yKHZhciB0PWMubGVuZ3RoO3Q7KXtmb3IodT1jLGM9W107KytsPHQ7KXUmJnVbbF0ucnVuKCk7bD0tMSx0PWMubGVuZ3RofXU9bnVsbCxmPSExLGZ1bmN0aW9uKGUpe2lmKG49PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigobj09PWF8fCFuKSYmY2xlYXJUaW1lb3V0KXJldHVybiBuPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e24oZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBuLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gbi5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIGQoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiB5KCl7fWkubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTtjLnB1c2gobmV3IGQoZSx0KSksMSE9PWMubGVuZ3RofHxmfHxzKHApfSxkLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxpLnRpdGxlPSJicm93c2VyIixpLmJyb3dzZXI9ITAsaS5lbnY9e30saS5hcmd2PVtdLGkudmVyc2lvbj0iIixpLnZlcnNpb25zPXt9LGkub249eSxpLmFkZExpc3RlbmVyPXksaS5vbmNlPXksaS5vZmY9eSxpLnJlbW92ZUxpc3RlbmVyPXksaS5yZW1vdmVBbGxMaXN0ZW5lcnM9eSxpLmVtaXQ9eSxpLnByZXBlbmRMaXN0ZW5lcj15LGkucHJlcGVuZE9uY2VMaXN0ZW5lcj15LGkubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybltdfSxpLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxpLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0saS5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxpLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHIoZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IodHx8IkFzc2VydGlvbiBmYWlsZWQiKX1lLmV4cG9ydHM9cixyLmVxdWFsPWZ1bmN0aW9uKGUsdCxyKXtpZihlIT10KXRocm93IG5ldyBFcnJvcihyfHwiQXNzZXJ0aW9uIGZhaWxlZDogIitlKyIgIT0gIit0KX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dCxpPXIoMjQpLG89cig0NyksYT1yKDMzMCk7bi5hc3NlcnQ9byxuLnRvQXJyYXk9YS50b0FycmF5LG4uemVybzI9YS56ZXJvMixuLnRvSGV4PWEudG9IZXgsbi5lbmNvZGU9YS5lbmM="
}

github/deemru/w8io/169f3d6 
4.11 ms