| 1 | PT09ZVs1XT9gJHtlWzEyXX0gYXZhaWxhYmxlIHdhbGxldHNgOiIxIGFjY291bnQgc2VsZWN0ZWQiKSYmdEIoYyxkKX0sZChlKXtlJiZ0Qyh0KSxtLmQoKX19fWZ1bmN0aW9uIGFmKGUpe2xldCB0LHI7cmV0dXJue2MoKXt0PW5ldyB0SCghMSkscj10UCgpLHQuYT1yfSxtKGUsbil7dC5tKEosZSxuKSx0QShlLHIsbil9LHA6ZTYsZChlKXtlJiZ0QyhyKSxlJiZ0LmQoKX19fWZ1bmN0aW9uIGFtKGUpe2xldCB0LHI7ZnVuY3Rpb24gbihlLHIpe3JldHVybig4MTkyJnJbMF0mJih0PW51bGwpLG51bGw9PXQmJih0PSEhZXUoZVsxM10uaWNvbikpLHQpP2FnOmFofWxldCBvPW4oZSxbLTEsLTFdKSxpPW8oZSk7cmV0dXJue2MoKXtpLmMoKSxyPXRQKCl9LG0oZSx0KXtpLm0oZSx0KSx0QShlLHIsdCl9LHAoZSx0KXtvPT09KG89bihlLHQpKSYmaT9pLnAoZSx0KTooaS5kKDEpLChpPW8oZSkpJiYoaS5jKCksaS5tKHIucGFyZW50Tm9kZSxyKSkpfSxkKGUpe2kuZChlKSxlJiZ0QyhyKX19fWZ1bmN0aW9uIGFoKGUpe2xldCB0LHI7cmV0dXJue2MoKXshdG8oKHQ9dE8oImltZyIpKS5zcmMscj1lWzEzXS5pY29uKSYmdEwodCwic3JjIixyKSx0TCh0LCJhbHQiLCJsb2dvIil9LG0oZSxyKXt0QShlLHQscil9LHAoZSxuKXs4MTkyJm5bMF0mJiF0byh0LnNyYyxyPWVbMTNdLmljb24pJiZ0TCh0LCJzcmMiLHIpfSxkKGUpe2UmJnRDKHQpfX19ZnVuY3Rpb24gYWcoZSl7bGV0IHQscjtsZXQgbj1lWzEzXS5pY29uKyIiO3JldHVybntjKCl7dD1uZXcgdEgoITEpLHI9dFAoKSx0LmE9cn0sbShlLG8pe3QubShuLGUsbyksdEEoZSxyLG8pfSxwKGUscil7ODE5MiZyWzBdJiZuIT09KG49ZVsxM10uaWNvbisiIikmJnQucChuKX0sZChlKXtlJiZ0QyhyKSxlJiZ0LmQoKX19fWZ1bmN0aW9uIGFiKGUpe2xldCB0LHIsbixvLGk7cmV0dXJuIHI9bmV3IG9CKHt9KSx7Yygpe3Q9dE8oImRpdiIpLHJSKHIuJCQuZnJhZ21lbnQpLHRMKHQsImNsYXNzIiwiYnV0dG9uLWNvbnRhaW5lciBhYnNvbHV0ZSBzdmVsdGUtMXF3bWNrMyIpfSxtKGEscyl7dEEoYSx0LHMpLHJOKHIsdCxudWxsKSxuPSEwLCFvJiYoaT10TSh0LCJjbGljayIsZVsyMF0pLG89ITApfSxwOmU2LGkoZSl7IW4mJihyYihyLiQkLmZyYWdtZW50LGUpLG49ITApfSxvKGUpe3J2KHIuJCQuZnJhZ21lbnQsZSksbj0hMX0sZChlKXtlJiZ0Qyh0KSxySShyKSxvPSExLGkoKX19fWZ1bmN0aW9uIGF2KGUpe2xldCB0LHIsbixvO2xldCBpPVthRSxheV0sYT1bXTtmdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGVbMl0ubGVuZ3RoPzA6MX1yZXR1cm4gcj1hW3Q9cyhlKV09aVt0XShlKSx7Yygpe3IuYygpLG49dFAoKX0sbShlLHIpe2FbdF0ubShlLHIpLHRBKGUsbixyKSxvPSEwfSxwKGUsbyl7bGV0IGw9dDsodD1zKGUpKT09PWw/YVt0XS5wKGUsbyk6KHJoKCkscnYoYVtsXSwxLDEsKCk9PnthW2xdPW51bGx9KSxyZygpLChyPWFbdF0pP3IucChlLG8pOihyPWFbdF09aVt0XShlKSkuYygpLHJiKHIsMSksci5tKG4ucGFyZW50Tm9kZSxuKSl9LGkoZSl7IW8mJihyYihyKSxvPSEwKX0sbyhlKXtydihyKSxvPSExfSxkKGUpe2FbdF0uZChlKSxlJiZ0QyhuKX19fWZ1bmN0aW9uIGF5KGUpe2xldCB0LHI7cmV0dXJuIHQ9bmV3IGlHKHt9KSx7Yygpe3JSKHQuJCQuZnJhZ21lbnQpfSxtKGUsbil7ck4odCxlLG4pLHI9ITB9LHA6ZTYsaShlKXshciYmKHJiKHQuJCQuZnJhZ21lbnQsZSkscj0hMCl9LG8oZSl7cnYodC4kJC5mcmFnbWVudCxlKSxyPSExfSxkKGUpe3JJKHQsZSl9fX1mdW5jdGlvbiBhRShlKXtsZXQgdCxyLG4sbyxpLGE7ZnVuY3Rpb24gcyh0KXtlWzI0XSh0KX1sZXQgbD17fTtyZXR1cm4gdm9pZCAwIT09ZVs3XSYmKGwuYWdyZWVkPWVbN10pLHQ9bmV3IG8wKHtwcm9wczpsfSksdDcucHVzaCgoKT0+ck8odCwiYWdyZWVkIixzKSksaT1uZXcgaTUoe3Byb3BzOntzZWxlY3RXYWxsZXQ6ZVsxOF0sd2FsbGV0czplWzJdLGNvbm5lY3RpbmdXYWxsZXRMYWJlbDplWzhdLGNvbm5lY3RpbmdFcnJvck1lc3NhZ2U6ZVs5XX19KSx7Yygpe3JSKHQuJCQuZnJhZ21lbnQpLG49dEkoKSxvPXRPKCJkaXYiKSxyUihpLiQkLmZyYWdtZW50KSx0TChvLCJjbGFzcyIsInN2ZWx0ZS0xcXdtY2szIiksdHoobywiZGlzYWJsZWQiLCFlWzddKX0sbShlLHIpe3JOKHQsZSxyKSx0QShlLG4sciksdEEoZSxvLHIpLHJOKGksbyxudWxsKSxhPSEwfSxwKGUsbil7bGV0IHM9e307IXImJjEyOCZuWzBdJiYocj0hMCxzLmFncmVlZD1lWzddLHJhKCgpPT5yPSExKSksdC4kc2V0KHMpO2xldCBsPXt9OzQmblswXSYmKGwud2FsbGV0cz1lWzJdKSwyNTYmblswXSYmKGwuY29ubmVjdGluZ1dhbGxldExhYmVsPWVbOF0pLDUxMiZuWzBdJiYobC5jb25uZWN0aW5nRXJyb3JNZXNzYWdlPWVbOV0pLGkuJHNldChsKSwoIWF8fDEyOCZuWzBdKSYmdHoobywiZGlzYWJsZWQiLCFlWzddKX0saShlKXshYSYmKHJiKHQuJCQuZnJhZ21lbnQsZSkscmIoaS4kJC5mcmFnbWVudCxlKSxhPSEwKX0sbyhlKXtydih0LiQkLmZyYWdtZW50LGUpLHJ2KGkuJCQuZnJhZ21lbnQsZSksYT0hMX0sZChlKXtySSh0LGUpLGUmJnRDKG4pLGUmJnRDKG8pLHJJKGkpfX19ZnVuY3Rpb24gYV8oZSl7bGV0IHQscjtyZXR1cm4gdD1uZXcgaVAoe3Byb3BzOntjb25uZWN0V2FsbGV0OmVbMjFdLGNvbm5lY3Rpb25SZWplY3RlZDplWzFdLHByZXZpb3VzQ29ubmVjdGlvblJlcXVlc3Q6ZVs2XSxzZXRTdGVwOmVbMjJdLGRlc2VsZWN0V2FsbGV0OmVbMTldLHNlbGVjdGVkV2FsbGV0OmVbM119fSkse2MoKXtyUih0LiQkLmZyYWdtZW50KX0sbShlLG4pe3JOKHQsZSxuKSxyPSEwfSxwKGUscil7bGV0IG49e307MiZyWzBdJiYobi5jb25uZWN0aW9uUmVqZWN0ZWQ9ZVsxXSksNjQmclswXSYmKG4ucHJldmlvdXNDb25uZWN0aW9uUmVxdWVzdD1lWzZdKSw4JnJbMF0mJihuLnNlbGVjdGVkV2FsbGV0PWVbM10pLHQuJHNldChuKX0saShlKXshciYmKHJiKHQuJCQuZnJhZ21lbnQsZSkscj0hMCl9LG8oZSl7cnYodC4kJC5mcmFnbWVudCxlKSxyPSExfSxkKGUpe3JJKHQsZSl9fX1mdW5jdGlvbiBhUyhlKXtsZXQgdCxyO3JldHVybiB0PW5ldyBpQyh7cHJvcHM6e3NlbGVjdGVkV2FsbGV0OmVbM119fSkse2MoKXtyUih0LiQkLmZyYWdtZW50KX0sbShlLG4pe3JOKHQsZSxuKSxyPSEwfSxwKGUscil7bGV0IG49e307OCZyWzBdJiYobi5zZWxlY3RlZFdhbGxldD1lWzNdKSx0LiRzZXQobil9LGkoZSl7IXImJihyYih0LiQkLmZyYWdtZW50LGUpLHI9ITApfSxvKGUpe3J2KHQuJCQuZnJhZ21lbnQsZSkscj0hMX0sZChlKXtySSh0LGUpfX19ZnVuY3Rpb24gYXcoZSl7bGV0IHQscixuLG8saSxhLHMsbCxjO2xldCB1PWVbMTZdLnNob3dTaWRlYmFyJiZhdShlKTtmdW5jdGlvbiBkKGUsdCl7cmV0dXJuIGVbNF08PWVNP2FwOmFkfWxldCBwPWQoZSksZj1wKGUpLG09IWVbMTZdLmRpc2FibGVDbG9zZSYmYWIoZSksaD0oInNlbGVjdGluZ1dhbGxldCI9PT1lWzVdfHxlWzRdPD1lTSkmJmF2KGUpLGc9ZVsxMV0mJmFfKGUpLGI9ImNvbm5lY3RlZFdhbGxldCI9PT1lWzVdJiZlWzNdJiZlWzRdPj1lTSYmYVMoZSk7cmV0dXJue2MoKXt0PXRPKCJkaXYiKSx1JiZ1LmMoKSxyPXRJKCksbj10TygiZGl2IiksZi5jKCksbz10SSgpLG0mJm0uYygpLGk9dEkoKSxhPXRPKCJkaXYiKSxoJiZoLmMoKSxzPXRJKCksZyYmZy5jKCksbD10SSgpLGImJmIuYygpLHRMKGEsImNsYXNzIiwic2Nyb2xsLWNvbnRhaW5lciBzdmVsdGUtMXF3bWNrMyIpLHRMKG4sImNsYXNzIiwiY29udGVudCBmbGV4IGZsZXgtY29sdW1uIHN2ZWx0ZS0xcXdtY2szIiksdEwodCwiY2xhc3MiLCJjb250YWluZXIgc3ZlbHRlLTFxd21jazMiKX0sbShkLHApe3RBKGQsdCxwKSx1JiZ1Lm0odCxudWxsKSx0Xyh0LHIpLHRfKHQsbiksZi5tKG4sbnVsbCksdF8obixvKSxtJiZtLm0obixudWxsKSx0XyhuLGkpLHRfKG4sYSksaCYmaC5tKGEsbnVsbCksdF8oYSxzKSxnJiZnLm0oYSxudWxsKSx0XyhhLGwpLGImJmIubShhLG51bGwpLGVbMjVdKGEpLGM9ITB9LHAoZSx0KXtlWzE2XS5zaG93U2lkZWJhciYmdS5wKGUsdCkscD09PShwPWQoZSkpJiZmP2YucChlLHQpOihmLmQoMSksKGY9cChlKSkmJihmLmMoKSxmLm0obixvKSkpLCFlWzE2XS5kaXNhYmxlQ2xvc2UmJm0ucChlLHQpLCJzZWxlY3RpbmdXYWxsZXQiPT09ZVs1XXx8ZVs0XTw9ZU0/aD8oaC5wKGUsdCksNDgmdFswXSYmcmIoaCwxKSk6KChoPWF2KGUpKS5jKCkscmIoaCwxKSxoLm0oYSxzKSk6aCYmKHJoKCkscnYoaCwxLDEsKCk9PntoPW51bGx9KSxyZygpKSxlWzExXT9nPyhnLnAoZSx0KSwyMDQ4JnRbMF0mJnJiKGcsMSkpOigoZz1hXyhlKSkuYygpLHJiKGcsMSksZy5tKGEsbCkpOmcmJihyaCgpLHJ2KGcsMSwxLCgpPT57Zz1udWxsfSkscmcoKSksImNvbm5lY3RlZFdhbGxldCI9PT1lWzVdJiZlWzNdJiZlWzRdPj1lTT9iPyhiLnAoZSx0KSw1NiZ0WzBdJiZyYihiLDEpKTooKGI9YVMoZSkpLmMoKSxyYihiLDEpLGIubShhLG51bGwpKTpiJiYocmgoKSxydihiLDEsMSwoKT0+e2I9bnVsbH0pLHJnKCkpfSxpKGUpeyFjJiYocmIodSkscmIobSkscmIoaCkscmIoZykscmIoYiksYz0hMCl9LG8oZSl7cnYodSkscnYobSkscnYoaCkscnYoZykscnYoYiksYz0hMX0sZChyKXtyJiZ0Qyh0KSx1JiZ1LmQoKSxmLmQoKSxtJiZtLmQoKSxoJiZoLmQoKSxnJiZnLmQoKSxiJiZiLmQoKSxlWzI1XShudWxsKX19fWZ1bmN0aW9uIGF4KGUpe2xldCB0LHIsbixvO3JpKGVbMjNdKTtsZXQgaT0hZVswXS5kaXNhYmxlTW9kYWxzJiZhYyhlKTtyZXR1cm57Yygpe2kmJmkuYygpLHQ9dFAoKX0sbShhLHMpe2kmJmkubShhLHMpLHRBKGEsdCxzKSxyPSEwLCFuJiYobz10TSh3aW5kb3csInJlc2l6ZSIsZVsyM10pLG49ITApfSxwKGUscil7ZVswXS5kaXNhYmxlTW9kYWxzP2kmJihyaCgpLHJ2KGksMSwxLCgpPT57aT1udWxsfSkscmcoKSk6aT8oaS5wKGUsciksMSZyWzBdJiZyYihpLDEpKTooKGk9YWMoZSkpLmMoKSxyYihpLDEpLGkubSh0LnBhcmVudE5vZGUsdCkpfSxpKGUpeyFyJiYocmIoaSkscj0hMCl9LG8oZSl7cnYoaSkscj0hMX0sZChlKXtpJiZpLmQoZSksZSYmdEModCksbj0hMSxvKCl9fX1mdW5jdGlvbiBhVChlLHQscil7bGV0IG4sbyxpLGEscyxsLGQscCxmLG0sZzt0cyhlLHouXyxlPT5yKDE0LHM9ZSkpO2xldHthdXRvU2VsZWN0OmJ9PXQseT1lNS5zZWxlY3QoImFwcE1ldGFkYXRhIikucGlwZSgoMCxTLk8pKGU1LmdldCgpLmFwcE1ldGFkYXRhKSwoMCx3LmQpKDEpKTt0cyhlLHksZT0+cigxMyxpPWUpKTtsZXR7d2FsbGV0TW9kdWxlczpFLGNvbm5lY3Q6XyxjaGFpbnM6QX09ZTUuZ2V0KCksTz1uZXcgdS54LHt1bnN0b3BwYWJsZVJlc29sdXRpb246Uix3YWdtaTpOfT1lUixJPSExLFA9ITEsTT1bXSxEPW5ldyBjLlgoInNlbGVjdGluZ1dhbGxldCIpO2FzeW5jIGZ1bmN0aW9uIEwoe2xhYmVsOmUsaWNvbjp0LGdldEludGVyZmFjZTpufSl7cig4LHA9ZSk7dHJ5e2xldCBvPWU1LmdldCgpLndhbGxldHMuZmluZCh0PT50LmxhYmVsPT09ZSk7aWYobyl7blcobyksc2V0VGltZW91dCgoKT0+VygiY29ubmVjdGVkV2FsbGV0IiksMSkscigzLGw9byk7cmV0dXJufWxldHtjaGFpbnM6YX09ZTUuZ2V0KCkse3Byb3ZpZGVyOnMsaW5zdGFuY2U6Y309YXdhaXQgbih7Y2hhaW5zOmEsRXZlbnRFbWl0dGVyOlgsYXBwTWV0YWRhdGE6aX0pLHU9YXdhaXQgdDtyKDMsbD17bGFiZWw6ZSxpY29uOnUscHJvdmlkZXI6cyxpbnN0YW5jZTpjLGFjY291bnRzOltdLGNoYWluczpbe25hbWVzcGFjZToiZXZtIixpZDoiMHgxIn1dfSkscig5LGY9IiIpLFkoKSxzZXRUaW1lb3V0KCgpPT5XKCJjb25uZWN0aW5nV2FsbGV0IiksMSl9Y2F0Y2godCl7bGV0e21lc3NhZ2U6ZX09dDtyKDksZj1lKSxyKDgscD0iIiksWSgpfX1mdW5jdGlvbiBGKCl7cigzLGw9bnVsbCl9ZnVuY3Rpb24gQihlKXtyKDMsbD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbCksZSkpfWFzeW5jIGZ1bmN0aW9uIGooZSl7bGV0e2dldEljb246dCxnZXRJbnRlcmZhY2U6cixsYWJlbDpufT1lO0woe2xhYmVsOm4saWNvbjp0KCksZ2V0SW50ZXJmYWNlOnJ9KX1hc3luYyBmdW5jdGlvbiBVKCl7cigyLE09RS5tYXAoKHtnZXRJY29uOmUsZ2V0SW50ZXJmYWNlOnQsbGFiZWw6cn0pPT4oe2xhYmVsOnIsaWNvbjplKCksZ2V0SW50ZXJmYWNlOnR9KSkpfWZ1bmN0aW9uIEcoKXtyQi5uZXh0KHtpblByb2dyZXNzOiExfSl9YXN5bmMgZnVuY3Rpb24gSCgpe3IoMSxJPSExKTtsZXR7cHJvdmlkZXI6ZSxsYWJlbDp0fT1sO08ubmV4dCgpO3RyeXtsZXQgcixuO2lmKE4pe2xldHtidWlsZFdhZ21pQ29uZmlnOm8sd2FnbWlDb25uZWN0OmksZ2V0V2FnbWlDb25uZWN0b3I6YX09TixzPWF3YWl0IG8oQSx7bGFiZWw6dCxwcm92aWRlcjplfSk7b3Iocyksbj1hKHQpO2xldCBsPWF3YWl0IFByb21pc2UucmFjZShbaShzLHtjb25uZWN0b3I6bn0pLHYoTy5waXBlKEMoW10pKSldKTtpZighbHx8ISgiYWNjb3VudHMiaW4gbCkpcmV0dXJuO2xldFtjXT1sLmFjY291bnRzO3I9Y31lbHNle2xldFt0XT1hd2FpdCBQcm9taXNlLnJhY2UoW29sKGUpLHYoTy5waXBlKEMoW10pKSldKTtpZighdClyZXR1cm47cj10fWlmKGU1LmdldCgpLmNvbm5lY3QuYXV0b0Nvbm5lY3RMYXN0V2FsbGV0fHxlNS5nZXQoKS5jb25uZWN0LmF1dG9Db25uZWN0QWxsUHJldmlvdXNXYWxsZXQpe2xldCBlPWVDKGVQLkxBU1RfQ09OTkVDVEVEX1dBTExFVCk7dHJ5e2xldCByPUpTT04ucGFyc2UoZSk7aWYociYmQXJyYXkuaXNBcnJheShyKSl7bGV0IG49cjtlPVsuLi5uZXcgU2V0KFt0LC4uLm5dKV19fWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBTeW50YXhFcnJvciYmZSYmInN0cmluZyI9PXR5cGVvZiBlKWU9W2VdO2Vsc2UgdGhyb3cgRXJyb3IodCl9IWUmJihlPVt0XSksZWsoZVAuTEFTVF9DT05ORUNURURfV0FMTEVULEpTT04uc3RyaW5naWZ5KGUpKX1sZXQgbz1hd2FpdCBvdShlKTtpZihlNS5nZXQoKS5ub3RpZnkuZW5hYmxlZCl7bGV0IGU9YXdhaXQgb1IoKTtpZihlKXRyeXtlLnN1YnNjcmliZSh7aWQ6cixjaGFpbklkOm8sdHlwZToiYWNjb3VudCJ9KX1jYXRjaChlKXt9fWxldCBpPXthY2NvdW50czpbe2FkZHJlc3M6cixlbnM6bnVsbCx1bnM6bnVsbCxiYWxhbmNlOm51bGx9XSxjaGFpbnM6W3tuYW1lc3BhY2U6ImV2bSIsaWQ6b31dLHdhZ21pQ29ubmVjdG9yOm59O25XKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxsKSxpKSksb2YoZSx0KSxCKGkpLFcoImNvbm5lY3RlZFdhbGxldCIpLFkoKX1jYXRjaCh0KXtsZXR7Y29kZTplfT10O2lmKFkoKSxlPT09Vi5Qcm92aWRlclJwY0Vycm9yQ29kZS5BQ0NPVU5UX0FDQ0VTU19SRUpFQ1RFRCl7cigxLEk9ITApLGIuZGlzYWJsZU1vZGFscz9yQi5uZXh0KHtpblByb2dyZXNzOiExfSk6Yi5sYWJlbCYmcigwLGIubGFiZWw9IiIsYik7cmV0dXJufWlmKGU9PT1WLlByb3ZpZGVyUnBjRXJyb3JDb2RlLkFDQ09VTlRfQUNDRVNTX0FMUkVBRFlfUkVRVUVTVEVEKXtpZihyKDYsUD0hMCksYi5kaXNhYmxlTW9kYWxzKXtyQi5uZXh0KHtpblByb2dyZXNzOiExfSk7cmV0dXJufW9kKHtwcm92aWRlcjpsLnByb3ZpZGVyLGRpc2Nvbm5lY3RlZCQ6ckIucGlwZSgoMCxULmgpKCh7aW5Qcm9ncmVzczplfSk9PiFlKSxDKCIiKSl9KS5waXBlKCgwLGsucSkoMSkpLnN1YnNjcmliZSgoW2VdKT0+e2UmJkgoKX0pO3JldHVybn19fWFzeW5jIGZ1bmN0aW9uIHEoKXtsZXR7YWNjb3VudHM6ZSxjaGFpbnM6dH09bCxyPWU1LmdldCgpLmNoYWlucyxbbl09dCxvPXIuZmluZCgoe25hbWVzcGFjZTplLGlkOnR9KT0+ZT09PW4ubmFtZXNwYWNlJiZ0PT09bi5pZCkse2FkZHJlc3M6aX09ZVswXSx7YmFsYW5jZTphLGVuczpzLHVuczpjLHNlY29uZGFyeVRva2Vuczp1fT1lWzBdO251bGw9PT1hJiZvZyhpLG8pLnRoZW4oZT0+e25YKGwubGFiZWwsaSx7YmFsYW5jZTplfSl9KSxvJiYhdSYmQXJyYXkuaXNBcnJheShvLnNlY29uZGFyeVRva2VucykmJm8uc2Vjb25kYXJ5VG9rZW5zLmxlbmd0aCYmb1QoaSxvKS50aGVuKGU9PntuWChsLmxhYmVsLGkse3NlY29uZGFyeVRva2VuczplfSl9KSxudWxsPT09cyYmZXYobi5pZCkmJm9tKGksQS5maW5kKCh7aWQ6ZX0pPT5lPT09ZXYobi5pZCkpKS50aGVuKGU9PntuWChsLmxhYmVsLGkse2VuczplfSl9KSxudWxsPT09YyYmUiYmb2goaSxvKS50aGVuKGU9PntuWChsLmxhYmVsLGkse3VuczplfSl9KSxzZXRUaW1lb3V0KCgpPT5yQi5uZXh0KHtpblByb2dyZXNzOiExfSksMTUwMCl9ZnVuY3Rpb24gVyhlKXtPLm5leHQoKSxELm5leHQoZSl9ZnVuY3Rpb24gWSgpe2cmJmcuc2Nyb2xsVG8oMCwwKX1mdW5jdGlvbiBLKCl7cig0LG09d2luZG93LmlubmVyV2lkdGgpfWZ1bmN0aW9uIFooZSl7cig3LGQ9ZSl9ZnVuY3Rpb24gUShlKXt0N1tlPyJ1bnNoaWZ0IjoicHVzaCJdKCgpPT57cigxMCxnPWUpfSl9cmV0dXJuIHRzKGUsRCxlPT5yKDUsYT1lKSksckIucGlwZSgoMCx4LngpKChlLHQpPT5lLmF1dG9TZWxlY3QmJnQuYXV0b1NlbGVjdCYmZS5hdXRvU2VsZWN0LmRpc2FibGVNb2RhbHM9PT10LmF1dG9TZWxlY3QuZGlzYWJsZU1vZGFscyksKDAsVC5oKSgoe2F1dG9TZWxlY3Q6ZX0pPT5lJiYhMT09PWUuZGlzYWJsZU1vZGFscyksKDAsaC5SKShyVikpLnN1YnNjcmliZSgoKT0+e2wmJkgoKX0pLEQucGlwZSgoMCxoLlIpKHJWKSkuc3Vic2NyaWJlKGU9Pntzd2l0Y2goZSl7Y2FzZSJzZWxlY3RpbmdXYWxsZXQiOmlmKGIubGFiZWwpe2xldCBlPUUuZmluZCgoe2xhYmVsOmV9KT0+ZS50b0xvd2VyQ2FzZSgpPT09Yi5sYWJlbC50b0xvd2VyQ2FzZSgpKTtlP2ooZSk6Yi5kaXNhYmxlTW9kYWxzJiZyQi5uZXh0KHtpblByb2dyZXNzOiExfSl9ZWxzZSByKDgscD0iIiksVSgpO2JyZWFrO2Nhc2UiY29ubmVjdGluZ1dhbGxldCI6SCgpO2JyZWFrO2Nhc2UiY29ubmVjdGVkV2FsbGV0IjpyKDgscD0iIikscSgpfX0pLGUuJCRzZXQ9ZT0+eyJhdXRvU2VsZWN0ImluIGUmJnIoMCxiPWUuYXV0b1NlbGVjdCl9LGUuJCQudXBkYXRlPSgpPT57NCZlLiQkLmRpcnR5WzBdJiZyKDEyLG49TS5sZW5ndGgtZTUuZ2V0KCkud2FsbGV0cy5sZW5ndGgpLDU4JmUuJCQuZGlydHlbMF0mJnIoMTEsbz0iY29ubmVjdGluZ1dhbGxldCI9PT1hJiZsJiZtPj1lTXx8bTw9ZU0mJkkmJiJjb25uZWN0aW5nV2FsbGV0Ij09PWEmJmwpfSxbYixJLE0sbCxtLGEsUCxkLHAsZixnLG8sbixpLHMseSxfLEQsTCxGLEcsSCxXLEssWixRXX1jbGFzcyBhQSBleHRlbmRzIHJEe2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksck0odGhpcyxlLGFULGF4LHRuLHthdXRvU2VsZWN0OjB9LGFsLFstMSwtMV0pfX1mdW5jdGlvbiBhQyhlKXt0UyhlLCJzdmVsdGUtMTJ5YW00MSIsIi5jb250YWluZXIuc3ZlbHRlLTEyeWFtNDF7cGFkZGluZzp2YXIoLS1vbmJvYXJkLXNwYWNpbmctNCwgdmFyKC0tc3BhY2luZy00KSk7Zm9udC1mYW1pbHk6dmFyKC0tb25ib2FyZC1mb250LWZhbWlseS1ub3JtYWwsIHZhcigtLWZvbnQtZmFtaWx5LW5vcm1hbCkpO2xpbmUtaGVpZ2h0OjE2cHg7Zm9udC1zaXplOnZhcigtLW9uYm9hcmQtZm9udC1zaXplLTUsIHZhcigtLWZvbnQtc2l6ZS01KSl9LmNsb3NlLnN2ZWx0ZS0xMnlhbTQxe3RvcDp2YXIoLS1vbmJvYXJkLXNwYWNpbmctNSwgdmFyKC0tc3BhY2luZy01KSk7cmlnaHQ6dmFyKC0tb25ib2FyZC1zcGFjaW5nLTUsIHZhcigtLXNwYWNpbmctNSkpO3BhZGRpbmc6MC41cmVtfWg0LnN2ZWx0ZS0xMnlhbTQxe2ZvbnQtc2l6ZTp2YXIoLS1vbmJvYXJkLWZvbnQtc2l6ZS0zLCB2YXIoLS1mb250LXNpemUtMykpO21hcmdpbjp2YXIoLS1vbmJvYXJkLXNwYWNpbmctNCwgdmFyKC0tc3BhY2luZy00KSkgMH1wLnN2ZWx0ZS0xMnlhbTQxe21hcmdpbjowIDAgdmFyKC0tb25ib2FyZC1zcGFjaW5nLTQsIHZhcigtLXNwYWNpbmctNCkpIDA7bWF4LXdpZHRoOjQ4OHB4fSIpfWZ1bmN0aW9uIGFrKGUpe2xldCB0LHIsbixvLGksYSxzLGwsYyx1LGQscCxmLG0saDtsZXQgZz1lWzBdKCJtb2RhbHMuc3dpdGNoQ2hhaW4uaGVhZGluZyIse2RlZmF1bHQ6b2kubW9kYWxzLnN3aXRjaENoYWluLmhlYWRpbmd9KSsiIixiPWVbMF0oIm1vZGFscy5zd2l0Y2hDaGFpbi5wYXJhZ3JhcGgxIix7ZGVmYXVsdDpvaS5tb2RhbHMuc3dpdGNoQ2hhaW4ucGFyYWdyYXBoMSx2YWx1ZXM6e2FwcDplWzFdJiZlWzFdLm5hbWV8fCJUaGlzIGFwcCIsbmV4dE5ldHdvcmtOYW1lOmVbMl19fSkrIiIsdj1lWzBdKCJtb2RhbHMuc3dpdGNoQ2hhaW4ucGFyYWdyYXBoMiIse2RlZmF1bHQ6b2kubW9kYWxzLnN3aXRjaENoYWluLnBhcmFncmFwaDJ9KSsiIjtyZXR1cm4gcD1uZXcgb0Ioe30pLHtjKCl7dD10TygiZGl2Iikscj10TygiaDQiKSxuPXROKGcpLG89dEkoKSxpPXRPKCJwIiksYT10TihiKSxzPXRJKCksbD10TygicCIpLGM9dE4odiksdT10SSgpLGQ9dE8oImRpdiIpLHJSKHAuJCQuZnJhZ21lbnQpLHRMKHIsImNsYXNzIiwic3ZlbHRlLTEyeWFtNDEiKSx0TChpLCJjbGFzcyIsInN2ZWx0ZS0xMnlhbTQxIiksdEwobCwiY2xhc3MiLCJzdmVsdGUtMTJ5YW00MSIpLHRMKGQsImNsYXNzIiwiY2xvc2UgYWJzb2x1dGUgc3ZlbHRlLTEyeWFtNDEiKSx0TCh0LCJjbGFzcyIsImNvbnRhaW5lciByZWxhdGl2ZSBzdmVsdGUtMTJ5YW00MSIpfSxtKGcsYil7dEEoZyx0LGIpLHRfKHQsciksdF8ocixuKSx0Xyh0LG8pLHRfKHQsaSksdF8oaSxhKSx0Xyh0LHMpLHRfKHQsbCksdF8obCxjKSx0Xyh0LHUpLHRfKHQsZCksck4ocCxkLG51bGwpLGY9ITAsIW0mJihoPXRNKGQsImNsaWNrIixlWzNdKSxtPSEwKX0scChlLHQpeyghZnx8MSZ0KSYmZyE9PShnPWVbMF0oIm1vZGFscy5zd2l0Y2hDaGFpbi5oZWFkaW5nIix7ZGVmYXVsdDpvaS5tb2RhbHMuc3dpdGNoQ2hhaW4uaGVhZGluZ30pKyIiKSYmdEIobixnKSwoIWZ8fDMmdCkmJmIhPT0oYj1lWzBdKCJtb2RhbHMuc3dpdGNoQ2hhaW4ucGFyYWdyYXBoMSIse2RlZmF1bHQ6b2kubW9kYWxzLnN3aXRjaENoYWluLnBhcmFncmFwaDEsdmFsdWVzOnthcHA6ZVsxXSYmZVsxXS5uYW1lfHwiVGhpcyBhcHAiLG5leHROZXR3b3JrTmFtZTplWzJdfX0pKyIiKSYmdEIoYSxiKSwoIWZ8fDEmdCkmJnYhPT0odj1lWzBdKCJtb2RhbHMuc3dpdGNoQ2hhaW4ucGFyYWdyYXBoMiIse2RlZmF1bHQ6b2kubW9kYWxzLnN3aXRjaENoYWluLnBhcmFncmFwaDJ9KSsiIikmJnRCKGMsdil9LGkoZSl7IWYmJihyYihwLiQkLmZyYWdtZW50LGUpLGY9ITApfSxvKGUpe3J2KHAuJCQuZnJhZ21lbnQsZSksZj0hMX0sZChlKXtlJiZ0Qyh0KSxySShwKSxtPSExLGgoKX19fWZ1bmN0aW9uIGFPKGUpe2xldCB0LHI7cmV0dXJuIHQ9bmV3IG9ZKHtwcm9wczp7Y2xvc2U6ZVszXSwkJHNsb3RzOntkZWZhdWx0Oltha119LCQkc2NvcGU6e2N0eDplfX19KSx7Yygpe3JSKHQuJCQuZnJhZ21lbnQpfSxtKGUsbil7ck4odCxlLG4pLHI9ITB9LHAoZSxbcl0pe2xldCBuPXt9OzY3JnImJihuLiQkc2NvcGU9e2RpcnR5OnIsY3R4OmV9KSx0LiRzZXQobil9LGkoZSl7IXImJihyYih0LiQkLmZyYWdtZW50LGUpLHI9ITApfSxvKGUpe3J2KHQuJCQuZnJhZ21lbnQsZSkscj0hMX0sZChlKXtySSh0LGUpfX19ZnVuY3Rpb24gYVIoZSx0LHIpe2xldCBuLG8saTt0cyhlLHJqLGU9PnIoNSxuPWUpKSx0cyhlLHouXyxlPT5yKDAsbz1lKSk7bGV0IGE9bi5jaGFpbi5sYWJlbDtmdW5jdGlvbiBzKCl7cmoubmV4dChudWxsKX1sZXQgbD1lNS5zZWxlY3QoImFwcE1ldGFkYXRhIikucGlwZSgoMCxTLk8pKGU1LmdldCgpLmFwcE1ldGFkYXRhKSwoMCx3LmQpKDEpKTtyZXR1cm4gdHMoZSxsLGU9PnIoMSxpPWUpKSxbbyxpLGEscyxsXX1jbGFzcyBhTiBleHRlbmRzIHJEe2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksck0odGhpcyxlLGFSLGFPLHRuLHt9LGFDKX19ZnVuY3Rpb24gYUkoZSl7dFMoZSwic3ZlbHRlLXo1NHkyaiIsIi5pY29uLnN2ZWx0ZS16NTR5Mmp7Ym9yZGVyLXJhZGl1czo1MHB4O2NvbG9yOnZhcigtLW9uYm9hcmQtcHJpbWFyeS01MDAsIHZhcigtLXByaW1hcnktNTAwKSl9Iil9ZnVuY3Rpb24gYVAoZSl7bGV0IHQscjtyZXR1cm57Yygpe3RMKHQ9dE8oImRpdiIpLCJjbGFzcyIsImljb24gZmxleCBzdmVsdGUtejU0eTJqIiksdEwodCwic3R5bGUiLHI9YHdpZHRoOiAke2VbMF19cHg7IGhlaWdodDogJHtlWzBdfXB4O2ApfSxtKGUscil7dEEoZSx0LHIpLHQuaW5uZXJIVE1MPWVhfSxwKGUsW25dKXsxJm4mJnIhPT0ocj1gd2lkdGg6ICR7ZVswXX1weDsgaGVpZ2h0OiAke2VbMF19cHg7YCkmJnRMKHQsInN0eWxlIixyKX0saTplNixvOmU2LGQoZSl7ZSYmdEModCl9fX1mdW5jdGlvbiBhTShlLHQscil7bGV0e3NpemU6bj0yMH09dDtyZXR1cm4gZS4kJHNldD1lPT57InNpemUiaW4gZSYmcigwLG49ZS5zaXplKX0sW25dfWNsYXNzIGFEIGV4dGVuZHMgckR7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSxyTSh0aGlzLGUsYU0sYVAsdG4se3NpemU6MH0sYUkpfX1mdW5jdGlvbiBhTChlKXt0UyhlLCJzdmVsdGUtMjBoanExIiwiLmNvbnRlbnQuc3ZlbHRlLTIwaGpxMXtwYWRkaW5nOjFyZW07d2lkdGg6MzAwcHg7Zm9udC1mYW1pbHk6dmFyKC0tb25ib2FyZC1mb250LWZhbWlseS1ub3JtYWwsIHZhcigtLWZvbnQtZmFtaWx5LW5vcm1hbCkpO2ZvbnQtc2l6ZTp2YXIoLS1vbmJvYXJkLWZvbnQtc2l6ZS01LCB2YXIoLS1mb250LXNpemUtNSkpO2xpbmUtaGVpZ2h0OjI0cHg7YmFja2dyb3VuZDp2YXIoXG4gICAgICAtLW9uYm9hcmQtYWN0aW9uLXJlcXVpcmVkLW1vZGFsLWJhY2tncm91bmQsXG4gICAgICB2YXIoLS1vbmJvYXJkLXdoaXRlLCB2YXIoLS13aGl0ZSkpXG4gICAgKX0uaWNvbi1jb250YWluZXIuc3ZlbHRlLTIwaGpxMXt3aWR0aDozcmVtO2hlaWdodDozcmVtO2JhY2tncm91bmQ6dmFyKC0tb25ib2FyZC1wcmltYXJ5LTEwMCwgdmFyKC0tcHJpbWFyeS0xMDApKTtib3JkZXItcmFkaXVzOjI0cHh9aDQuc3ZlbHRlLTIwaGpxMXttYXJnaW46MS41cmVtIDAgMC41cmVtIDA7Zm9udC13ZWlnaHQ6NjAwfS5hY3Rpb24tcmVxdWlyZWQtaGVhZGluZy5zdmVsdGUtMjBoanExLC5hY3Rpb24tcmVxdWlyZWQtaW5mby5zdmVsdGUtMjBoanExe2NvbG9yOnZhcihcbiAgICAgIC0tb25ib2FyZC1hY3Rpb24tcmVxdWlyZWQtdGV4dC1jb2xvcixcbiAgICAgIHZhcigtLW9uYm9hcmQtYmxhY2ssIGluaGVyaXQpXG4gICAgKX0uYWN0aW9uLXJlcXVpcmVkLWJ0bi5zdmVsdGUtMjBoanExe2NvbG9yOnZhcihcbiAgICAgIC0tb25ib2FyZC1hY3Rpb24tcmVxdWlyZWQtYnRuLXRleHQtY29sb3IsXG4gICAgICB2YXIoLS1vbmJvYXJkLWJsYWNrLCBpbmhlcml0KVxuICAgICl9cC5zdmVsdGUtMjBoanExe21hcmdpbjowO2ZvbnQtd2VpZ2h0OjQwMH1hLnN2ZWx0ZS0yMGhqcTF7Zm9udC13ZWlnaHQ6NjAwfWJ1dHRvbi5zdmVsdGUtMjBoanExe21hcmdpbi10b3A6MS41cmVtO2ZvbnQtd2VpZ2h0OjYwMH0iKX1mdW5jdGlvbiBhRihlKXtsZXQgdCxyO2xldCBuPWVbMV0oIm1vZGFscy5hY3Rpb25SZXF1aXJlZC5saW5rVGV4dCIse3ZhbHVlczp7d2FsbGV0OmVbMF19fSkrIiI7cmV0dXJue2MoKXt0PXRPKCJhIikscj10TihuKSx0TCh0LCJocmVmIiwiaHR0cHM6Ly9tZXRhbWFzay56ZW5kZXNrLmNvbS9oYy9lbi11cy9hcnRpY2xlcy8zNjAwNjEzNDYzMTEtU3dpdGNoaW5nLWFjY291bnRzLWluLU1ldGFNYXNrIiksdEwodCwidGFyZ2V0IiwiX2JsYW5rIiksdEwodCwicmVsIiwibm9yZWZlcnJlciBub29wZW5lciIpLHRMKHQsImNsYXNzIiwic3ZlbHRlLTIwaGpxMSIpfSxtKGUsbil7dEEoZSx0LG4pLHRfKHQscil9LHAoZSx0KXszJnQmJm4hPT0obj1lWzFdKCJtb2RhbHMuYWN0aW9uUmVxdWlyZWQubGlua1RleHQiLHt2YWx1ZXM6e3dhbGxldDplWzBdfX0pKyIiKSYmdEIocixuKX0sZChlKXtlJiZ0Qyh0KX19fWZ1bmN0aW9uIGFCKGUpe2xldCB0LHIsbixvLGksYSxzLGwsYyx1LGQscCxmLG0saCxnO2xldCBiPWVbMV0oIm1vZGFscy5hY3Rpb25SZXF1aXJlZC5oZWFkaW5nIix7dmFsdWVzOnt3YWxsZXQ6ZVswXX19KSsiIix2PWVbMV0oIm1vZGFscy5hY3Rpb25SZXF1aXJlZC5wYXJhZ3JhcGgiLHt2YWx1ZXM6e3dhbGxldDplWzBdfX0pKyIiLHk9ZVsxXSgibW9kYWxzLmFjdGlvblJlcXVpcmVkLmJ1dHRvblRleHQiKSsiIjtuPW5ldyBhRCh7fSk7bGV0IEU9Ik1ldGFNYXNrIj09PWVbMF0mJmFGKGUpO3JldHVybntjKCl7dD10TygiZGl2Iikscj10TygiZGl2IiksclIobi4kJC5mcmFnbWVudCksbz10SSgpLGk9dE8oImg0IiksYT10TihiKSxzPXRJKCksbD10TygicCIpLGM9dE4odiksdT10SSgpLEUmJkUuYygpLGQ9dEkoKSxwPXRPKCJidXR0b24iKSxmPXROKHkpLHRMKHIsImNsYXNzIiwiaWNvbi1jb250YWluZXIgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgc3ZlbHRlLTIwaGpxMSIpLHRMKGksImNsYXNzIiwiYWN0aW9uLXJlcXVpcmVkLWhlYWRpbmcgc3ZlbHRlLTIwaGpxMSIpLHRMKGwsImNsYXNzIiwiYWN0aW9uLXJlcXVpcmVkLWluZm8gc3ZlbHRlLTIwaGpxMSIpLHRMKHAsImNsYXNzIiwiYnV0dG9uLW5ldXRyYWwtc29saWQgcm91bmRlZCBhY3Rpb24tcmVxdWlyZWQtYnRuIHN2ZWx0ZS0yMGhqcTEiKSx0TCh0LCJjbGFzcyIsImNvbnRlbnQgc3ZlbHRlLTIwaGpxMSIpfSxtKGIsdil7dEEoYix0LHYpLHRfKHQsciksck4obixyLG51bGwpLHRfKHQsbyksdF8odCxpKSx0XyhpLGEpLHRfKHQscyksdF8odCxsKSx0XyhsLGMpLHRfKGwsdSksRSYmRS5tKGwsbnVsbCksdF8odCxkKSx0Xyh0LHApLHRfKHAsZiksbT0hMCwhaCYmKGc9dE0ocCwiY2xpY2siLGVbMl0pLGg9ITApfSxwKGUsdCl7KCFtfHwzJnQpJiZiIT09KGI9ZVsxXSgibW9kYWxzLmFjdGlvblJlcXVpcmVkLmhlYWRpbmciLHt2YWx1ZXM6e3dhbGxldDplWzBdfX0pKyIiKSYmdEIoYSxiKSwoIW18fDMmdCkmJnYhPT0odj1lWzFdKCJtb2RhbHMuYWN0aW9uUmVxdWlyZWQucGFyYWdyYXBoIix7dmFsdWVzOnt3YWxsZXQ6ZVswXX19KSsiIikmJnRCKGMsdiksIk1ldGFNYXNrIj09PWVbMF0/RT9FLnAoZSx0KTooKEU9YUYoZSkpLmMoKSxFLm0obCxudWxsKSk6RSYmKEUuZCgxKSxFPW51bGwpLCghbXx8MiZ0KSYmeSE9PSh5PWVbMV0oIm1vZGFscy5hY3Rpb25SZXF1aXJlZC5idXR0b25UZXh0IikrIiIpJiZ0QihmLHkpfSxpKGUpeyFtJiYocmIobi4kJC5mcmFnbWVudCxlKSxtPSEwKX0sbyhlKXtydihuLiQkLmZyYWdtZW50LGUpLG09ITF9LGQoZSl7ZSYmdEModCksckkobiksRSYmRS5kKCksaD0hMSxnKCl9fX1mdW5jdGlvbiBhaihlKXtsZXQgdCxyO3JldHVybiB0PW5ldyBvWSh7cHJvcHM6e2Nsb3NlOmVbMl0sJCRzbG90czp7ZGVmYXVsdDpbYUJdfSwkJHNjb3BlOntjdHg6ZX19fSkse2MoKXtyUih0LiQkLmZyYWdtZW50KX0sbShlLG4pe3JOKHQsZSxuKSxyPSEwfSxwKGUsW3JdKXtsZXQgbj17fTsxMSZyJiYobi4kJHNjb3BlPXtkaXJ0eTpyLGN0eDplfSksdC4kc2V0KG4pfSxpKGUpeyFyJiYocmIodC4kJC5mcmFnbWVudCxlKSxyPSEwKX0sbyhlKXtydih0LiQkLmZyYWdtZW50LGUpLHI9ITF9LGQoZSl7ckkodCxlKX19fWZ1bmN0aW9uIGFVKGUsdCxyKXtsZXQgbjt0cyhlLHouXyxlPT5yKDEsbj1lKSk7bGV0e3dhbGxldDpvfT10O2Z1bmN0aW9uIGkoKXtyQi5uZXh0KHtpblByb2dyZXNzOiExLGFjdGlvblJlcXVpcmVkOiIifSl9cmV0dXJuIGUuJCRzZXQ9ZT0+eyJ3YWxsZXQiaW4gZSYmcigwLG89ZS53YWxsZXQpfSxbbyxuLGldfWNsYXNzIGF6IGV4dGVuZHMgckR7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSxyTSh0aGlzLGUsYVUsYWosdG4se3dhbGxldDowfSxhTCl9fWZ1bmN0aW9uIGFHKGUpe3RTKGUsInN2ZWx0ZS13NXpleGUiLCIuZmxleHtkaXNwbGF5OmZsZXh9LmlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXh9LmZsZXgtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uaXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0uaXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5pdGVtcy1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5qdXN0aWZ5LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uanVzdGlmeS1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9LmFic29sdXRle3Bvc2l0aW9uOmFic29sdXRlfS5maXhlZHtwb3NpdGlvbjpmaXhlZH0ucG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uc2hhZG93LTF7Ym94LXNoYWRvdzp2YXIoLS1vbmJvYXJkLXNoYWRvdy0xLCB2YXIoLS1zaGFkb3ctMSkpfS53LTEwMHt3aWR0aDoxMDAlfSp7Ym94LXNpemluZzpib3JkZXItYm94fWlucHV0e2JhY2tncm91bmQ6dmFyKC0tb25ib2FyZC13aGl0ZSwgdmFyKC0td2hpdGUpKX1pbnB1dHt3aWR0aDoxMDAlO3BhZGRpbmc6MC41cmVtIDFyZW07b3V0bGluZToycHggc29saWQgdmFyKC0tb25ib2FyZC1ncmF5LTIwMCwgdmFyKC0tZ3JheS0yMDApKTtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjhweDtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjU7Y29sb3I6dmFyKC0tb25ib2FyZC1ncmF5LTYwMCwgdmFyKC0tZ3JheS02MDApKTt0cmFuc2l0aW9uOmFsbCAyMDBtcyBlYXNlLWluLW91dH1pbnB1dFt0eXBlPSdjaGVja2JveCddey13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTt3aWR0aDphdXRvO2JhY2tncm91bmQ6dmFyKC0tb25ib2FyZC13aGl0ZSwgdmFyKC0td2hpdGUpKTtvdXRsaW5lOjFweCBzb2xpZCB2YXIoLS1vbmJvYXJkLWdyYXktMzAwLCB2YXIoLS1ncmF5LTMwMCkpO2JvcmRlcjpub25lO3BhZGRpbmc6MC41ZW07Ym9yZGVyLXJhZGl1czozcHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyfWlucHV0W3R5cGU9J2NoZWNrYm94J106aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcihcbiAgICAgIC0tb25ib2FyZC1jaGVja2JveC1iYWNrZ3JvdW5kLFxuICAgICAgdmFyKC0tb25ib2FyZC1wcmltYXJ5LTUwMCwgdmFyKC0tcHJpbWFyeS01MDApKVxuICAgICl9aW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2Vke2JhY2tncm91bmQ6dmFyKFxuICAgICAgLS1vbmJvYXJkLWNoZWNrYm94LWJhY2tncm91bmQsXG4gICAgICB2YXIoLS1vbmJvYXJkLXByaW1hcnktNTAwLCB2YXIoLS1wcmltYXJ5LTUwMCkpXG4gICAgKTtib3JkZXItY29sb3I6dmFyKFxuICAgICAgLS1vbmJvYXJkLWNoZWNrYm94LWJhY2tncm91bmQsXG4gICAgICB2YXIoLS1vbmJvYXJkLXByaW1hcnktNTAwLCB2YXIoLS1wcmltYXJ5LTUwMCkpXG4gICAgKTtjb2xvcjp2YXIoLS1vbmJvYXJkLWNoZWNrYm94LWNvbG9yLCB2YXIoLS1vbmJvYXJkLXdoaXRlLCB2YXIoLS13aGl0ZSkpKX1pbnB1dFt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQ6YWZ0ZXJ7Y29udGVudDp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHdpZHRoPScwLjg4NWVtJyBoZWlnaHQ9JzAuNmVtJyB2aWV3Qm94PScwIDAgMTQgMTEnIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGwtcnVsZT0nZXZlbm9kZCcgY2xpcC1ydWxlPSdldmVub2RkJyBkPSdNMCA2TDUgMTFMMTQgMkwxMi41OSAwLjU4TDUgOC4xN0wxLjQxIDQuNTlMMCA2WicgZmlsbD0nd2hpdGUnLyUzRSUzQy9zdmclM0VcIik7Zm9udC1zaXplOjEycHg7cG9zaXRpb246YWJzb2x1dGU7Y29sb3I6dmFyKC0tb25ib2FyZC1jaGVja2JveC1jb2xvciwgdmFyKC0tb25ib2FyZC13aGl0ZSwgdmFyKC0td2hpdGUpKSl9aW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcihcbiAgICAgIC0tb25ib2FyZC1jaGVja2JveC1jb2xvcixcbiAgICAgIHZhcigtLW9uYm9hcmQtd2hpdGUsIHZhcigtLXdoaXRlKSlcbiAgICApfWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1vbmJvYXJkLXByaW1hcnktNTAwLCB2YXIoLS1wcmltYXJ5LTUwMCkpO2JveC1zaGFkb3c6MCAwIDFweCAxcHhcbiAgICAgIHZhcihcbiAgICAgICAgLS1vbmJvYXJkLWNoZWNrYm94LWJhY2tncm91bmQsXG4gICAgICAgIHZhcigtLW9uYm9hcmQtcHJpbWFyeS01MDAsIHZhcigtLXByaW1hcnktNTAwKSlcbiAgICAgICk7Ym94LXNoYWRvdzowIDAgMCAxcHggLW1vei1tYWMtZm9jdXNyaW5nfWlucHV0OmRpc2FibGVkLCB0ZXh0YXJlYTpkaXNhYmxlZCwgc2VsZWN0OmRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tZ3JheS0xMDApfWlucHV0OjotbW96LWZvY3VzLWlubmVye291dGxpbmU6MDtwYWRkaW5nOjA7bWFyZ2luLXRvcDotMnB4O21hcmdpbi1ib3R0b206LTJweH1he2NvbG9yOnZhcihcbiAgICAgIC0tb25ib2FyZC1saW5rLWNvbG9yLFxuICAgICAgdmFyKC0tb25ib2FyZC1wcmltYXJ5LTUwMCwgdmFyKC0tcHJpbWFyeS01MDApKVxuICAgICk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9YTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWJ1dHRvbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzpjYWxjKHZhcigtLW9uYm9hcmQtc3BhY2luZy00LCB2YXIoLS1zcGFjaW5nLTQpKSAtIDFweCk7Ym9yZGVyLXJhZGl1czoyNHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQ6aW5oZXJpdDtib3JkZXI6bm9uZTt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMTUwbXMgZWFzZS1pbi1vdXQsIGNvbG9yIDE1MG1zIGVhc2UtaW4tb3V0fS5vbmJvYXJkLWJ1dHRvbi1wcmltYXJ5e2JhY2tncm91bmQ6dmFyKC0tb25ib2FyZC13aGl0ZSwgdmFyKC0td2hpdGUpKTtwYWRkaW5nOmNhbGModmFyKC0tb25ib2FyZC1zcGFjaW5nLTUsIHZhcigtLXNwYWNpbmctNSkpIC0gMXB4KVxuICAgICAgY2FsYyh2YXIoLS1vbmJvYXJkLXNwYWNpbmctNCwgdmFyKC0tc3BhY2luZy00KSkgLSAxcHgpO2NvbG9yOnZhcigtLW9uYm9hcmQtZ3JheS01MDAsIHZhcigtLWdyYXktNTAwKSk7Zm9udC1zaXplOnZhcigtLW9uYm9hcmQtZm9udC1zaXplLTYsIHZhcigtLWZvbnQtc2l6ZS02KSk7bGluZS1oZWlnaHQ6dmFyKC0tb25ib2FyZC1mb250LWxpbmUtaGVpZ2h0LTMsIHZhcigtLWZvbnQtbGluZS1oZWlnaHQtMykpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tb25ib2FyZC1ncmF5LTUwMCwgdmFyKC0tZ3JheS01MDApKTtmb250LXdlaWdodDo2MDB9LmJ1dHRvbi1uZXV0cmFsLXNvbGlke3dpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDp2YXIoLS1vbmJvYXJkLWdyYXktNTAwLCB2YXIoLS1ncmF5LTUwMCkpO2NvbG9yOnZhcigtLW9uYm9hcmQtd2hpdGUsIHZhcigtLXdoaXRlKSk7bGluZS1oZWlnaHQ6dmFyKC0tb25ib2FyZC1mb250LWxpbmUtaGVpZ2h0LTMsIHZhcigtLWZvbnQtbGluZS1oZWlnaHQtMykpfS5idXR0b24tbmV1dHJhbC1zb2xpZC1ie3dpZHRoOjEwMCU7YmFja2dyb3VuZDp2YXIoLS1vbmJvYXJkLWdyYXktMTAwLCB2YXIoLS1ncmF5LTEwMCkpO2NvbG9yOnZhcigtLW9uYm9hcmQtZ3JheS01MDAsIHZhcigtLWdyYXktNTAwKSk7bGluZS1oZWlnaHQ6dmFyKC0tb25ib2FyZC1mb250LWxpbmUtaGVpZ2h0LTMsIHZhcigtLWZvbnQtbGluZS1oZWlnaHQtMykpfWJ1dHRvbi5yb3VuZGVke2JvcmRlci1yYWRpdXM6MjRweH0uYnV0dG9uLW5ldXRyYWwtc29saWQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1vbmJvYXJkLWdyYXktNzAwLCB2YXIoLS1ncmF5LTcwMCkpfS5idXR0b24tbmV1dHJhbC1zb2xpZC1iOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tb25ib2FyZC1ncmF5LTIwMCwgdmFyKC0tZ3JheS0yMDApKX0uYnV0dG9uLW5ldXRyYWwtc29saWQ6YWN0aXZle2NvbG9yOnZhcigtLW9uYm9hcmQtZ3JheS0zMDAsIHZhcigtLWdyYXktMzAwKSl9LmJ1dHRvbi1uZXV0cmFsLXNvbGlkLWI6YWN0aXZle2NvbG9yOnZhcigtLW9uYm9hcmQtZ3JheS02MDAsIHZhcigtLWdyYXktNjAwKSk7YmFja2dyb3VuZDp2YXIoLS1vbmJvYXJkLWdyYXktMzAwLCB2YXIoLS1ncmF5LTMwMCkpfS5jb250YWluZXIuc3ZlbHRlLXc1emV4ZXtwYWRkaW5nOjE2cHg7Zm9udC1mYW1pbHk6dmFyKC0tb25ib2FyZC1mb250LWZhbWlseS1ub3JtYWwsIHZhcigtLWZvbnQtZmFtaWx5LW5vcm1hbCkpO3BvaW50ZXItZXZlbnRzOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmU7d2lkdGg6MTAwJX0uei1pbmRleGVkLnN2ZWx0ZS13NXpleGV7ei1pbmRleDp2YXIoLS1hY2NvdW50LWNlbnRlci16LWluZGV4KX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA0MjhweCl7LmNvbnRhaW5lci5zdmVsdGUtdzV6ZXhle21heC13aWR0aDozNDhweH19Iil9ZnVuY3Rpb24gYUgoZSl7bGV0IHQscjtyZXR1cm4gdD1uZXcgYUEoe3Byb3BzOnthdXRvU2VsZWN0OmVbOF0uYXV0b1NlbGVjdH19KSx7Yygpe3JSKHQuJCQuZnJhZ21lbnQpfSxtKGUsbil7ck4odCxlLG4pLHI9ITB9LHAoZSxyKXtsZXQgbj17fTsyNTYmciYmKG4uYXV0b1NlbGVjdD1lWzhdLmF1dG9TZWxlY3QpLHQuJHNldChuKX0saShlKXshciYmKHJiKHQuJCQuZnJhZ21lbnQsZSkscj0hMCl9LG8oZSl7cnYodC4kJC5mcmFnbWVudCxlKSxyPSExfSxkKGUpe3JJKHQsZSl9fX1mdW5jdGlvbiBhVihlKXtsZXQgdCxyO3JldHVybiB0PW5ldyBheih7cHJvcHM6e3dhbGxldDplWzhdLmFjdGlvblJlcXVpcmVkfX0pLHtjKCl7clIodC4kJC5mcmFnbWVudCl9LG0oZSxuKXtyTih0LGUsbikscj0hMH0scChlLHIpe2xldCBuPXt9OzI1NiZyJiYobi53YWxsZXQ9ZVs4XS5hY3Rpb25SZXF1aXJlZCksdC4kc2V0KG4pfSxpKGUpeyFyJiYocmIodC4kJC5mcmFnbWVudCxlKSxyPSEwKX0sbyhlKXtydih0LiQkLmZyYWdtZW50LGUpLHI9ITF9LGQoZSl7ckkodCxlKX19fWZ1bmN0aW9uIGFxKGUpe2xldCB0LHI7cmV0dXJuIHQ9bmV3IGFOKHt9KSx7Yygpe3JSKHQuJCQuZnJhZ21lbnQpfSxtKGUsbil7ck4odCxlLG4pLHI9ITB9LGkoZSl7IXImJihyYih0LiQkLmZyYWdtZW50LGUpLHI9ITApfSxvKGUpe3J2KHQuJCQuZnJhZ21lbnQsZSkscj0hMX0sZChlKXtySSh0LGUpfX19ZnVuY3Rpb24gYVcoZSl7bGV0IHQscixuLG8saSxhO2xldCBzPWVbM10ucG9zaXRpb24uaW5jbHVkZXMoImJvdHRvbSIpJiZlWzFdLnBvc2l0aW9uLmluY2x1ZGVzKCJib3R0b20iKSYmZVs3XSxsPWVbM10ucG9zaXRpb24uaW5jbHVkZXMoInRvcCIpJiZlWzFdLnBvc2l0aW9uLmluY2x1ZGVzKCJ0b3AiKSYmZVs3XSxjPXMmJmFZKGUpLHU9e2N0eDplLGN1cnJlbnQ6bnVsbCx0b2tlbjpudWxsLGhhc0NhdGNoOiExLHBlbmRpbmc6YTEsdGhlbjphJCxjYXRjaDphSix2YWx1ZToyMyxibG9ja3M6WywsLF19O3J3KGVbMTZdLHUpO2xldCBkPWwmJmEyKGUpO3JldHVybntjKCl7dD10TygiZGl2IiksYyYmYy5jKCkscj10SSgpLG49dE8oImRpdiIpLHUuYmxvY2suYygpLG89dEkoKSxkJiZkLmMoKSx0TChuLCJpZCIsImFjY291bnQtY2VudGVyLXdpdGgtbm90aWZ5IiksdEwodCwiY2xhc3MiLCJjb250YWluZXIgZmxleCBmbGV4LWNvbHVtbiBmaXhlZCB6LWluZGV4ZWQgc3ZlbHRlLXc1emV4ZSIpLHRMKHQsInN0eWxlIixpPWVbMTVdKHNjKVtlWzFdLnBvc2l0aW9uXSsiOyAiKygibW9iaWxlIj09PWVbMTFdLnR5cGUmJmVbMV0ucG9zaXRpb24uaW5jbHVkZXMoInRvcCIpPyJwYWRkaW5nLWJvdHRvbTogMDsiOiJtb2JpbGUiPT09ZVsxMV0udHlwZSYmZVsxXS5wb3NpdGlvbi5pbmNsdWRlcygiYm90dG9tIik/InBhZGRpbmctdG9wOjA7IjoiIikpfSxtKGUsaSl7dEEoZSx0LGkpLGMmJmMubSh0LG51bGwpLHRfKHQsciksdF8odCxuKSx1LmJsb2NrLm0obix1LmFuY2hvcj1udWxsKSx1Lm1vdW50PSgpPT5uLHUuYW5jaG9yPW51bGwsdF8odCxvKSxkJiZkLm0odCxudWxsKSxhPSEwfSxwKG4sbyl7ZT1uLDEzOCZvJiYocz1lWzNdLnBvc2l0aW9uLmluY2x1ZGVzKCJib3R0b20iKSYmZVsxXS5wb3NpdGlvbi5pbmNsdWRlcygiYm90dG9tIikmJmVbN10pLHM/Yz8oYy5wKGUsbyksMTM4Jm8mJnJiKGMsMSkpOigoYz1hWShlKSkuYygpLHJiKGMsMSksYy5tKHQscikpOmMmJihyaCgpLHJ2KGMsMSwxLCgpPT57Yz1udWxsfSkscmcoKSkscngodSxlLG8pLDEzOCZvJiYobD1lWzNdLnBvc2l0aW9uLmluY2x1ZGVzKCJ0b3AiKSYmZVsxXS5wb3NpdGlvbi5pbmNsdWRlcygidG9wIikmJmVbN10pLGw/ZD8oZC5wKGUsbyksMTM4Jm8mJnJiKGQsMSkpOigoZD1hMihlKSkuYygpLHJiKGQsMSksZC5tKHQsbnVsbCkpOmQmJihyaCgpLHJ2KGQsMSwxLCgpPT57ZD1udWxsfSkscmcoKSksKCFhfHwyJm8mJmkhPT0oaT1lWzE1XShzYylbZVsxXS5wb3NpdGlvbl0rIjsgIisoIm1vYmlsZSI9PT1lWzExXS50eXBlJiZlWzFdLnBvc2l0aW9uLmluY2x1ZGVzKCJ0b3AiKT8icGFkZGluZy1ib3R0b206IDA7IjoibW9iaWxlIj09PWVbMTFdLnR5cGUmJmVbMV0ucG9zaXRpb24uaW5jbHVkZXMoImJvdHRvbSIpPyJwYWRkaW5nLXRvcDowOyI6IiIpKSkmJnRMKHQsInN0eWxlIixpKX0saShlKXshYSYmKHJiKGMpLHJiKHUuYmxvY2spLHJiKGQpLGE9ITApfSxvKGUpe3J2KGMpO2ZvcihsZXQgZT0wO2U8MztlKz0xKXJ2KHUuYmxvY2tzW2VdKTtydihkKSxhPSExfSxkKGUpe2UmJnRDKHQpLGMmJmMuZCgpLHUuYmxvY2suZCgpLHUudG9rZW49bnVsbCx1PW51bGwsZCYmZC5kKCl9fX1mdW5jdGlvbiBhWShlKXtsZXQgdCxyO2xldCBuPXtjdHg6ZSxjdXJyZW50Om51bGwsdG9rZW46bnVsbCxoYXNDYXRjaDohMSxwZW5kaW5nOmFRLHRoZW46YVosY2F0Y2g6YUssdmFsdWU6MjIsYmxvY2tzOlssLCxdfTtyZXR1cm4gcncoZVsxN10sbikse2MoKXt0PXRQKCksbi5ibG9jay5jKCl9LG0oZSxvKXt0QShlLHQsbyksbi5ibG9jay5tKGUsbi5hbmNob3I9byksbi5tb3VudD0oKT0+dC5wYXJlbnROb2RlLG4uYW5jaG9yPXQscj0hMH0scCh0LHIpe3J4KG4sZT10LHIpfSxpKGUpeyFyJiYocmIobi5ibG9jaykscj0hMCl9LG8oZSl7Zm9yKGxldCBlPTA7ZTwzO2UrPTEpcnYobi5ibG9ja3NbZV0pO3I9ITF9LGQoZSl7ZSYmdEModCksbi5ibG9jay5kKGUpLG4udG9rZW49bnVsbCxuPW51bGx9fX1mdW5jdGlvbiBhSyhlKXtyZXR1cm57YzplNixtOmU2LHA6ZTYsaTplNixvOmU2LGQ6ZTZ9fWZ1bmN0aW9uIGFaKGUpe2xldCB0LHI7bGV0IG49ZVsyMl0mJmFYKGUpO3JldHVybntjKCl7biYmbi5jKCksdD10UCgpfSxtKGUsbyl7biYmbi5tKGUsbyksdEEoZSx0LG8pLHI9ITB9LHAoZSx0KXtlWzIyXSYmbi5wKGUsdCl9LGkoZSl7IXImJihyYihuKSxyPSEwKX0sbyhlKXtydihuKSxyPSExfSxkKGUpe24mJm4uZChlKSxlJiZ0Qyh0KX19fWZ1bmN0aW9uIGFYKGUpe2xldCB0LHIsbjt2YXIgbz1lWzIyXTtmdW5jdGlvbiBpKGUpe3JldHVybntwcm9wczp7bm90aWZpY2F0aW9uczplWzEwXSxwb3NpdGlvbjplWzNdLnBvc2l0aW9uLHNoYXJlZENvbnRhaW5lcjplWzBdfX19cmV0dXJuIG8mJih0PXRWKG8saShlKSkpLHtjKCl7dCYmclIodC4kJC5mcmFnbWVudCkscj10UCgpfSxtKGUsbyl7dCYmck4odCxlLG8pLHRBKGUscixvKSxuPSEwfSxwKGUsbil7bGV0IGE9e307aWYoMTAyNCZuJiYoYS5ub3RpZmljYXRpb25zPWVbMTBdKSw4Jm4mJihhLnBvc2l0aW9uPWVbM10ucG9zaXRpb24pLDEmbiYmKGEuc2hhcmVkQ29udGFpbmVyPWVbMF0pLG8hPT0obz1lWzIyXSkpe2lmKHQpe3JoKCk7bGV0IGU9dDtydihlLiQkLmZyYWdtZW50LDEsMCwoKT0+e3JJKGUsMSl9KSxyZygpfW8/KHJSKCh0PXRWKG8saShlKSkpLiQkLmZyYWdtZW50KSxyYih0LiQkLmZyYWdtZW50LDEpLHJOKHQsci5wYXJlbnROb2RlLHIpKTp0PW51bGx9ZWxzZSBvJiZ0LiRzZXQoYSl9LGkoZSl7IW4mJih0JiZyYih0LiQkLmZyYWdtZW50LGUpLG49ITApfSxvKGUpe3QmJnJ2KHQuJCQuZnJhZ21lbnQsZSksbj0hMX0sZChlKXtlJiZ0QyhyKSx0JiZySSh0LGUpfX19ZnVuY3Rpb24gYVEoZSl7cmV0dXJue2M6ZTYsbTplNixwOmU2LGk6ZTYsbzplNixkOmU2fX1mdW5jdGlvbiBhSihlKXtyZXR1cm57YzplNixtOmU2LHA6ZTYsaTplNixvOmU2LGQ6ZTZ9fWZ1bmN0aW9uIGEkKGUpe2xldCB0LHI7bGV0IG49ZVsyM10mJmEwKGUpO3JldHVybntjKCl7biYmbi5jKCksdD10UCgpfSxtKGUsbyl7biYmbi5tKGUsbyksdEEoZSx0LG8pLHI9ITB9LHAoZSx0KXtlWzIzXSYmbi5wKGUsdCl9LGkoZSl7IXImJihyYihuKSxyPSEwKX0sbyhlKXtydihuKSxyPSExfSxkKGUpe24mJm4uZChlKSxlJiZ0Qyh0KX19fWZ1bmN0aW9uIGEwKGUpe2xldCB0LHIsbjt2YXIgbz1lWzIzXTtmdW5jdGlvbiBpKGUpe3JldHVybnt9fXJldHVybiBvJiYodD10VihvLGkoKSkpLHtjKCl7dCYmclIodC4kJC5mcmFnbWVudCkscj10UCgpfSxtKGUsbyl7dCYmck4odCxlLG8pLHRBKGUscixvKSxuPSEwfSxwKGUsbil7aWYobyE9PShvPWVbMjNdKSl7aWYodCl7cmgoKTtsZXQgZT10O3J2KGUuJCQuZnJhZ21lbnQsMSwwLCgpPT57ckkoZSwxKX0pLHJnKCl9bz8oclIoKHQ9dFYobyxpKCkpKS4kJC5mcmFnbWVudCkscmIodC4kJC5mcmFnbWVudCwxKSxyTih0LHIucGFyZW50Tm9kZSxyKSk6dD1udWxsfX0saShlKXshbiYmKHQmJnJiKHQuJCQuZnJhZ21lbnQsZSksbj0hMCl9LG8oZSl7dCYmcnYodC4kJC5mcmFnbWVudCxlKSxuPSExfSxkKGUpe2UmJnRDKHIpLHQmJnJJKHQsZSl9fX1mdW5jdGlvbiBhMShlKXtyZXR1cm57YzplNixtOmU2LHA6ZTYsaTplNixvOmU2LGQ6ZTZ9fWZ1bmN0aW9uIGEyKGUpe2xldCB0LHI7bGV0IG49e2N0eDplLGN1cnJlbnQ6bnVsbCx0b2tlbjpudWxsLGhhc0NhdGNoOiExLHBlbmRpbmc6YTQsdGhlbjphNSxjYXRjaDphMyx2YWx1ZToyMixibG9ja3M6WywsLF19O3JldHVybiBydyhlWzE3XSxuKSx7Yygpe3Q9dFAoKSxuLmJsb2NrLmMoKX0sbShlLG8pe3RBKGUsdCxvKSxuLmJsb2NrLm0oZSxuLmFuY2hvcj1vKSxuLm1vdW50PSgpPT50LnBhcmVudE5vZGUsbi5hbmNob3I9dCxyPSEwfSxwKHQscil7cngobixlPXQscil9LGkoZSl7IXImJihyYihuLmJsb2NrKSxyPSEwKX0sbyhlKXtmb3IobGV0IGU9MDtlPDM7ZSs9MSlydihuLmJsb2Nrc1tlXSk7cj0hMX0sZChlKXtlJiZ0Qyh0KSxuLmJsb2NrLmQoZSksbi50b2tlbj1udWxsLG49bnVsbH19fWZ1bmN0aW9uIGEzKGUpe3JldHVybntjOmU2LG06ZTYscDplNixpOmU2LG86ZTYsZDplNn19ZnVuY3Rpb24gYTUoZSl7bGV0IHQscjtsZXQgbj1lWzIyXSYmYTYoZSk7cmV0dXJue2MoKXtuJiZuLmMoKSx0PXRQKCl9LG0oZSxvKXtuJiZuLm0oZSxvKSx0QShlLHQsbykscj0hMH0scChlLHQpe2VbMjJdJiZuLnAoZSx0KX0saShlKXshciYmKHJiKG4pLHI9ITApfSxvKGUpe3J2KG4pLHI9ITF9LGQoZSl7biYmbi5kKGUpLGUmJnRDKHQpfX19ZnVuY3Rpb24gYTYoZSl7bGV0IHQscixuO3ZhciBvPWVbMjJdO2Z1bmN0aW9uIGkoZSl7cmV0dXJue3Byb3BzOntub3RpZmljYXRpb25zOmVbMTBdLHBvc2l0aW9uOmVbM10ucG9zaXRpb24sc2hhcmVkQ29udGFpbmVyOmVbMF19fX1yZXR1cm4gbyYmKHQ9dFYobyxpKGUpKSkse2MoKXt0JiZyUih0LiQkLmZyYWdtZW50KSxyPXRQKCl9LG0oZSxvKXt0JiZyTih0LGUsbyksdEEoZSxyLG8pLG49ITB9LHAoZSxuKXtsZXQgYT17fTtpZigxMDI0Jm4mJihhLm5vdGlmaWNhdGlvbnM9ZVsxMF0pLDgmbiYmKGEucG9zaXRpb249ZVszXS5wb3NpdGlvbiksMSZuJiYoYS5zaGFyZWRDb250YWluZXI9ZVswXSksbyE9PShvPWVbMjJdKSl7aWYodCl7cmgoKTtsZXQgZT10O3J2KGUuJCQuZnJhZ21lbnQsMSwwLCgpPT57ckkoZSwxKX0pLHJnKCl9bz8oclIoKHQ9dFYobyxpKGUpKSkuJCQuZnJhZ21lbnQpLHJiKHQuJCQuZnJhZ21lbnQsMSksck4odCxyLnBhcmVudE5vZGUscikpOnQ9bnVsbH1lbHNlIG8mJnQuJHNldChhKX0saShlKXshbiYmKHQmJnJiKHQuJCQuZnJhZ21lbnQsZSksbj0hMCl9LG8oZSl7dCYmcnYodC4kJC5mcmFnbWVudCxlKSxuPSExfSxkKGUpe2UmJnRDKHIpLHQmJnJJKHQsZSl9fX1mdW5jdGlvbiBhNChlKXtyZXR1cm57YzplNixtOmU2LHA6ZTYsaTplNixvOmU2LGQ6ZTZ9fWZ1bmN0aW9uIGE4KGUpe2xldCB0LHIsbixvO2xldCBpPWVbMV0uZW5hYmxlZCYmZVsyXS5sZW5ndGgmJmE5KGUpO3JldHVybntjKCl7dD10TygiZGl2Iikscj10TygiZGl2IiksaSYmaS5jKCksdEwodCwiY2xhc3MiLCJjb250YWluZXIgZmxleCBmbGV4LWNvbHVtbiBmaXhlZCB6LWluZGV4ZWQgc3ZlbHRlLXc1emV4ZSIpLHRMKHQsInN0eWxlIixuPWVbMTVdKHNjKVtlWzFdLnBvc2l0aW9uXSsiOyAiKygibW9iaWxlIj09PWVbMTFdLnR5cGUmJmVbMV0ucG9zaXRpb24uaW5jbHVkZXMoInRvcCIpPyJwYWRkaW5nLWJvdHRvbTogMDsiOiJtb2JpbGUiPT09ZVsxMV0udHlwZSYmZVsxXS5wb3NpdGlvbi5pbmNsdWRlcygiYm90dG9tIik/InBhZGRpbmctdG9wOjA7IjoiIikpfSxtKGUsbil7dEEoZSx0LG4pLHRfKHQsciksaSYmaS5tKHIsbnVsbCksbz0hMH0scChlLGEpe2VbMV0uZW5hYmxlZCYmZVsyXS5sZW5ndGg/aT8oaS5wKGUsYSksNiZhJiZyYihpLDEpKTooKGk9YTkoZSkpLmMoKSxyYihpLDEpLGkubShyLG51bGwpKTppJiYocmgoKSxydihpLDEsMSwoKT0+e2k9bnVsbH0pLHJnKCkpLCghb3x8MiZhJiZuIT09KG49ZVsxNV0oc2MpW2VbMV0ucG9zaXRpb25dKyI7ICIrKCJtb2JpbGUiPT09ZVsxMV0udHlwZSYmZVsxXS5wb3NpdGlvbi5pbmNsdWRlcygidG9wIik/InBhZGRpbmctYm90dG9tOiAwOyI6Im1vYmlsZSI9PT1lWzExXS50eXBlJiZlWzFdLnBvc2l0aW9uLmluY2x1ZGVzKCJib3R0b20iKT8icGFkZGluZy10b3A6MDsiOiIiKSkpJiZ0TCh0LCJzdHlsZSIsbil9LGkoZSl7IW8mJihyYihpKSxvPSEwKX0sbyhlKXtydihpKSxvPSExfSxkKGUpe2UmJnRDKHQpLGkmJmkuZCgpfX19ZnVuY3Rpb24gYTkoZSl7bGV0IHQscjtsZXQgbj17Y3R4OmUsY3VycmVudDpudWxsLHRva2VuOm51bGwsaGFzQ2F0Y2g6ITEscGVuZGluZzpzcix0aGVuOnNlLGNhdGNoOmE3LHZhbHVlOjIzLGJsb2NrczpbLCwsXX07cmV0dXJuIHJ3KGVbMTZdLG4pLHtjKCl7dD10UCgpLG4uYmxvY2suYygpfSxtKGUsbyl7dEEoZSx0LG8pLG4uYmxvY2subShlLG4uYW5jaG9yPW8pLG4ubW91bnQ9KCk9PnQucGFyZW50Tm9kZSxuLmFuY2hvcj10LHI9ITB9LHAodCxyKXtyeChuLGU9dCxyKX0saShlKXshciYmKHJiKG4uYmxvY2spLHI9ITApfSxvKGUpe2ZvcihsZXQgZT0wO2U8MztlKz0xKXJ2KG4uYmxvY2tzW2VdKTtyPSExfSxkKGUpe2UmJnRDKHQpLG4uYmxvY2suZChlKSxuLnRva2VuPW51bGwsbj1udWxsfX19ZnVuY3Rpb24gYTcoZSl7cmV0dXJue2M6ZTYsbTplNixwOmU2LGk6ZTYsbzplNixkOmU2fX1mdW5jdGlvbiBzZShlKXtsZXQgdCxyO2xldCBuPWVbMjNdJiZzdChlKTtyZXR1cm57Yygpe24mJm4uYygpLHQ9dFAoKX0sbShlLG8pe24mJm4ubShlLG8pLHRBKGUsdCxvKSxyPSEwfSxwKGUsdCl7ZVsyM10mJm4ucChlLHQpfSxpKGUpeyFyJiYocmIobikscj0hMCl9LG8oZSl7cnYobikscj0hMX0sZChlKXtuJiZuLmQoZSksZSYmdEModCl9fX1mdW5jdGlvbiBzdChlKXtsZXQgdCxyLG47dmFyIG89ZVsyM107ZnVuY3Rpb24gaShlKXtyZXR1cm57fX1yZXR1cm4gbyYmKHQ9dFYobyxpKCkpKSx7Yygpe3QmJnJSKHQuJCQuZnJhZ21lbnQpLHI9dFAoKX0sbShlLG8pe3QmJnJOKHQsZSxvKSx0QShlLHIsbyksbj0hMH0scChlLG4pe2lmKG8hPT0obz1lWzIzXSkpe2lmKHQpe3JoKCk7bGV0IGU9dDtydihlLiQkLmZyYWdtZW50LDEsMCwoKT0+e3JJKGUsMSl9KSxyZygpfW8/KHJSKCh0PXRWKG8saSgpKSkuJCQuZnJhZ21lbnQpLHJiKHQuJCQuZnJhZ21lbnQsMSksck4odCxyLnBhcmVudE5vZGUscikpOnQ9bnVsbH19LGkoZSl7IW4mJih0JiZyYih0LiQkLmZyYWdtZW50LGUpLG49ITApfSxvKGUpe3QmJnJ2KHQuJCQuZnJhZ21lbnQsZSksbj0hMX0sZChlKXtlJiZ0QyhyKSx0JiZySSh0LGUpfX19ZnVuY3Rpb24gc3IoZSl7cmV0dXJue2M6ZTYsbTplNixwOmU2LGk6ZTYsbzplNixkOmU2fX1mdW5jdGlvbiBzbihlKXtsZXQgdCxyLG47bGV0IG89e2N0eDplLGN1cnJlbnQ6bnVsbCx0b2tlbjpudWxsLGhhc0NhdGNoOiExLHBlbmRpbmc6c3MsdGhlbjpzaSxjYXRjaDpzbyx2YWx1ZToyMixibG9ja3M6WywsLF19O3JldHVybiBydyhlWzE3XSxvKSx7Yygpe3Q9dE8oImRpdiIpLG8uYmxvY2suYygpLHRMKHQsImNsYXNzIiwiY29udGFpbmVyIGZsZXggZmxleC1jb2x1bW4gZml4ZWQgei1pbmRleGVkIHN2ZWx0ZS13NXpleGUiKSx0TCh0LCJzdHlsZSIscj1lWzE1XShzdSlbZVszXS5wb3NpdGlvbl0rIjsgIisoIm1vYmlsZSI9PT1lWzExXS50eXBlJiZlWzNdLnBvc2l0aW9uLmluY2x1ZGVzKCJ0b3AiKT8icGFkZGluZy1ib3R0b206IDA7IjoibW9iaWxlIj09PWVbMTFdLnR5cGUmJmVbM10ucG9zaXRpb24uaW5jbHVkZXMoImJvdHRvbSIpPyJwYWRkaW5nLXRvcDowOyI6IiIpKX0sbShlLHIpe3RBKGUsdCxyKSxvLmJsb2NrLm0odCxvLmFuY2hvcj1udWxsKSxvLm1vdW50PSgpPT50LG8uYW5jaG9yPW51bGwsbj0hMH0scChpLGEpe3J4KG8sZT1pLGEpLCghbnx8OCZhJiZyIT09KHI9ZVsxNV0oc3UpW2VbM10ucG9zaXRpb25dKyI7ICIrKCJtb2JpbGUiPT09ZVsxMV0udHlwZSYmZVszXS5wb3NpdGlvbi5pbmNsdWRlcygidG9wIik/InBhZGRpbmctYm90dG9tOiAwOyI6Im1vYmlsZSI9PT1lWzExXS50eXBlJiZlWzNdLnBvc2l0aW9uLmluY2x1ZGVzKCJib3R0b20iKT8icGFkZGluZy10b3A6MDsiOiIiKSkpJiZ0TCh0LCJzdHlsZSIscil9LGkoZSl7IW4mJihyYihvLmJsb2NrKSxuPSEwKX0sbyhlKXtmb3IobGV0IGU9MDtlPDM7ZSs9MSlydihvLmJsb2Nrc1tlXSk7bj0hMX0sZChlKXtlJiZ0Qyh0KSxvLmJsb2NrLmQoKSxvLnRva2VuPW51bGwsbz1udWxsfX19ZnVuY3Rpb24gc28oZSl7cmV0dXJue2M6ZTYsbTplNixwOmU2LGk6ZTYsbzplNixkOmU2fX1mdW5jdGlvbiBzaShlKXtsZXQgdCxyO2xldCBuPWVbMjJdJiZzYShlKTtyZXR1cm57Yygpe24mJm4uYygpLHQ9dFAoKX0sbShlLG8pe24mJm4ubShlLG8pLHRBKGUsdCxvKSxyPSEwfSxwKGUsdCl7ZVsyMl0mJm4ucChlLHQpfSxpKGUpeyFyJiYocmIobikscj0hMCl9LG8oZSl7cnYobikscj0hMX0sZChlKXtuJiZuLmQoZSksZSYmdEModCl9fX1mdW5jdGlvbiBzYShlKXtsZXQgdCxyLG47dmFyIG89ZVsyMl07ZnVuY3Rpb24gaShlKXtyZXR1cm57cHJvcHM6e25vdGlmaWNhdGlvbnM6ZVsxMF0scG9zaXRpb246ZVszXS5wb3NpdGlvbixzaGFyZWRDb250YWluZXI6ZVswXX19fXJldHVybiBvJiYodD10VihvLGkoZSkpKSx7Yygpe3QmJnJSKHQuJCQuZnJhZ21lbnQpLHI9dFAoKX0sbShlLG8pe3QmJnJOKHQsZSxvKSx0QShlLHIsbyksbj0hMH0scChlLG4pe2xldCBhPXt9O2lmKDEwMjQmbiYmKGEubm90aWZpY2F0aW9ucz1lWzEwXSksOCZuJiYoYS5wb3NpdGlvbj1lWzNdLnBvc2l0aW9uKSwxJm4mJihhLnNoYXJlZENvbnRhaW5lcj1lWzBdKSxvIT09KG89ZVsyMl0pKXtpZih0KXtyaCgpO2xldCBlPXQ7cnYoZS4kJC5mcmFnbWVudCwxLDAsKCk9PntySShlLDEpfSkscmcoKX1vPyhyUigodD10VihvLGkoZSkpKS4kJC5mcmFnbWVudCkscmIodC4kJC5mcmFnbWVudCwxKSxyTih0LHIucGFyZW50Tm9kZSxyKSk6dD1udWxsfWVsc2UgbyYmdC4kc2V0KGEpfSxpKGUpeyFuJiYodCYmcmIodC4kJC5mcmFnbWVudCxlKSxuPSEwKX0sbyhlKXt0JiZydih0LiQkLmZyYWdtZW50LGUpLG49ITF9LGQoZSl7ZSYmdEMociksdCYmckkodCxlKX19fWZ1bmN0aW9uIHNzKGUpe3JldHVybntjOmU2LG06ZTYscDplNixpOmU2LG86ZTYsZDplNn19ZnVuY3Rpb24gc2woZSl7bGV0IHQscixuLG8saSxhLHM7bGV0IGw9ZVs4XS5pblByb2dyZXNzJiZhSChlKSxjPWVbOF0uYWN0aW9uUmVxdWlyZWQmJmFWKGUpLHU9ZVs5XSYmYXEoKSxkPWVbNF0mJmFXKGUpLHA9ZVs1XSYmYTgoZSksZj1lWzZdJiZzbihlKTtyZXR1cm57Yygpe2wmJmwuYygpLHQ9dEkoKSxjJiZjLmMoKSxyPXRJKCksdSYmdS5jKCksbj10SSgpLGQmJmQuYygpLG89dEkoKSxwJiZwLmMoKSxpPXRJKCksZiYmZi5jKCksYT10UCgpfSxtKGUsbSl7bCYmbC5tKGUsbSksdEEoZSx0LG0pLGMmJmMubShlLG0pLHRBKGUscixtKSx1JiZ1Lm0oZSxtKSx0QShlLG4sbSksZCYmZC5tKGUsbSksdEEoZSxvLG0pLHAmJnAubShlLG0pLHRBKGUsaSxtKSxmJiZmLm0oZSxtKSx0QShlLGEsbSkscz0hMH0scChlLFtzXSl7ZVs4XS5pblByb2dyZXNzP2w/KGwucChlLHMpLDI1NiZzJiZyYihsLDEpKTooKGw9YUgoZSkpLmMoKSxyYihsLDEpLGwubSh0LnBhcmVudE5vZGUsdCkpOmwmJihyaCgpLHJ2KGwsMSwxLCgpPT57bD1udWxsfSkscmcoKSksZVs4XS5hY3Rpb25SZXF1aXJlZD9jPyhjLnAoZSxzKSwyNTYmcyYmcmIoYywxKSk6KChjPWFWKGUpKS5jKCkscmIoYywxKSxjLm0oci5wYXJlbnROb2RlLHIpKTpjJiYocmgoKSxydihjLDEsMSwoKT0+e2M9bnVsbH0pLHJnKCkpLGVbOV0/dT81MTImcyYmcmIodSwxKTooKHU9YXEoKSkuYygpLHJiKHUsMSksdS5tKG4ucGFyZW50Tm9kZSxuKSk6dSYmKHJoKCkscnYodSwxLDEsKCk9Pnt1PW51bGx9KSxyZygpKSxlWzRdP2Q/KGQucChlLHMpLDE2JnMmJnJiKGQsMSkpOigoZD1hVyhlKSkuYygpLHJiKGQsMSksZC5tKG8ucGFyZW50Tm9kZSxvKSk6ZCYmKHJoKCkscnYoZCwxLDEsKCk9PntkPW51bGx9KSxyZygpKSxlWzVdP3A/KHAucChlLHMpLDMyJnMmJnJiKHAsMSkpOigocD1hOChlKSkuYygpLHJiKHAsMSkscC5tKGkucGFyZW50Tm9kZSxpKSk6cCYmKHJoKCkscnYocCwxLDEsKCk9PntwPW51bGx9KSxyZygpKSxlWzZdP2Y/KGYucChlLHMpLDY0JnMmJnJiKGYsMSkpOigoZj1zbihlKSkuYygpLHJiKGYsMSksZi5tKGEucGFyZW50Tm9kZSxhKSk6ZiYmKHJoKCkscnYoZiwxLDEsKCk9PntmPW51bGx9KSxyZygpKX0saShlKXshcyYmKHJiKGwpLHJiKGMpLHJiKHUpLHJiKGQpLHJiKHApLHJiKGYpLHM9ITApfSxvKGUpe3J2KGwpLHJ2KGMpLHJ2KHUpLHJ2KGQpLHJ2KHApLHJ2KGYpLHM9ITF9LGQoZSl7bCYmbC5kKGUpLGUmJnRDKHQpLGMmJmMuZChlKSxlJiZ0QyhyKSx1JiZ1LmQoZSksZSYmdEMobiksZCYmZC5kKGUpLGUmJnRDKG8pLHAmJnAuZChlKSxlJiZ0QyhpKSxmJiZmLmQoZSksZSYmdEMoYSl9fX1sZXQgc2M9ImFjY291bnQtY2VudGVyIixzdT0ibm90aWZ5LW9uYm9hcmQtY29udGFpbmVyIjtmdW5jdGlvbiBzZChlLHQsbil7bGV0IG8saSxhLHMsbCxjLHUsZCxwLGYsbSxoO3RzKGUsclUsZT0+bigyLGQ9ZSkpLHRzKGUsckIsZT0+big4LGY9ZSkpLHRzKGUscmosZT0+big5LG09ZSkpO2xldHtkZXZpY2U6Zyxjb250YWluZXJFbGVtZW50czpifT1lUix2PWU1LnNlbGVjdCgiYWNjb3VudENlbnRlciIpLnBpcGUoKDAsUy5PKShlNS5nZXQoKS5hY2NvdW50Q2VudGVyKSwoMCx3LmQpKDEpKTt0cyhlLHYsZT0+bigxLHU9ZSkpO2xldCB5PWU1LnNlbGVjdCgibm90aWZ5IikucGlwZSgoMCxTLk8pKGU1LmdldCgpLm5vdGlmeSksKDAsdy5kKSgxKSk7dHMoZSx5LGU9Pm4oMyxwPWUpKTtsZXQgRT1lNS5zZWxlY3QoIm5vdGlmaWNhdGlvbnMiKS5waXBlKCgwLFMuTykoZTUuZ2V0KCkubm90aWZpY2F0aW9ucykpO3RzKGUsRSxlPT5uKDEwLGg9ZSkpO2xldCBfPWU9Pih7dG9wTGVmdDpgCiAgICAgICAgdG9wOiB2YXIoLS0ke2V9LXBvc2l0aW9uLXRvcCwgMCk7IAogICAgICAgIGxlZnQ6IHZhcigtLSR7ZX0tcG9zaXRpb24tbGVmdCwgMCk7YCx0b3BSaWdodDpgCiAgICAgICAgdG9wOiB2YXIoLS0ke2V9LXBvc2l0aW9uLXRvcCwgMCk7IAogICAgICAgIHJpZ2h0OiB2YXIoLS0ke2V9LXBvc2l0aW9uLXJpZ2h0LCAwKTtgLGJvdHRvbVJpZ2h0OmAKICAgICAgICBib3R0b206IHZhcigtLSR7ZX0tcG9zaXRpb24tYm90dG9tLCAwKTsgCiAgICAgICAgcmlnaHQ6IHZhcigtLSR7ZX0tcG9zaXRpb24tcmlnaHQsIDApO2AsYm90dG9tTGVmdDpgCiAgICAgICAgYm90dG9tOiB2YXIoLS0ke2V9LXBvc2l0aW9uLWJvdHRvbSwgMCk7IAogICAgICAgIGxlZnQ6IHZhcigtLSR7ZX0tcG9zaXRpb24tbGVmdCwgMCk7YH0pLHg9dS5lbmFibGVkP3IuZSgiNDk0MyIpLnRoZW4oci5iaW5kKHIsNDU2MzgpKS50aGVuKGU9PmUuZGVmYXVsdCk6UHJvbWlzZS5yZXNvbHZlKG51bGwpLFQ9cC5lbmFibGVkP3IuZSgiNjQyMCIpLnRoZW4oci5iaW5kKHIsMzIwOTMpKS50aGVuKGU9PmUuZGVmYXVsdCk6UHJvbWlzZS5yZXNvbHZlKG51bGwpLEE9dS5lbmFibGVkJiZiJiZiLmFjY291bnRDZW50ZXIsQz0oZSx0LHIsbik9PntsZXQgbz1lLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiJ9KSxpPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm9uYm9hcmQtdjIiKS5zaGFkb3dSb290LnN0eWxlU2hlZXRzLGE9bmV3IENTU1N0eWxlU2hlZXQ7T2JqZWN0LnZhbHVlcyhpKS5mb3JFYWNoKGU9PntPYmplY3QudmFsdWVzKGUuY3NzUnVsZXMpLmZvckVhY2goZT0+YS5pbnNlcnRSdWxlKGUuY3NzVGV4dCkpfSksby5hZG9wdGVkU3R5bGVTaGVldHM9W2FdO2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk7aWYocy5hcHBlbmRDaGlsZChlKSwhcyl0aHJvdyBFcnJvcihgRWxlbWVudCB3aXRoIHF1ZXJ5ICR7dH0gZG9lcyBub3QgZXhpc3QuYCk7KGFzeW5jKCk9PntsZXQgZT1hd2FpdCByO2UmJm5ldyBlKHt0YXJnZXQ6byxwcm9wczp7c2V0dGluZ3M6bixtb3VudEluQ29udGFpbmVyOiEwfX0pfSkoKX07cmV0dXJuIEEmJkMoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib25ib2FyZC1hY2NvdW50LWNlbnRlciIpLEEseCx1KSxlLiQkLnVwZGF0ZT0oKT0+ezEwJmUuJCQuZGlydHkmJm4oMCxvPSFBJiZ1LmVuYWJsZWQmJnAuZW5hYmxlZCYmcC5wb3NpdGlvbj09PXUucG9zaXRpb24pLDEwJmUuJCQuZGlydHkmJm4oNyxpPSJtb2JpbGUiPT09Zy50eXBlfHx1LnBvc2l0aW9uPT09cC5wb3NpdGlvbiksMTAmZS4kJC5kaXJ0eSYmbigxOCxhPXAucG9zaXRpb24uaW5jbHVkZXMoImJvdHRvbSIpJiZ1LnBvc2l0aW9uLmluY2x1ZGVzKCJib3R0b20iKXx8cC5wb3NpdGlvbi5pbmNsdWRlcygidG9wIikmJnUucG9zaXRpb24uaW5jbHVkZXMoInRvcCIpKSwyNjIxNTgmZS4kJC5kaXJ0eSYmbig2LHM9cC5lbmFibGVkJiYoIXUuZW5hYmxlZHx8QXx8cC5wb3NpdGlvbiE9PXUucG9zaXRpb24mJiJtb2JpbGUiIT09Zy50eXBlfHwibW9iaWxlIj09PWcudHlwZSYmIWF8fCFkLmxlbmd0aCkpLDI2MjE1OCZlLiQkLmRpcnR5JiZuKDUsbD11LmVuYWJsZWQmJighcC5lbmFibGVkfHxwLnBvc2l0aW9uIT09dS5wb3NpdGlvbiYmIm1vYmlsZSIhPT1nLnR5cGV8fCJtb2JpbGUiPT09Zy50eXBlJiYhYSkmJmQubGVuZ3RoKSwyNjIxNTkmZS4kJC5kaXJ0eSYmbig0LGM9cC5lbmFibGVkJiZ1LmVuYWJsZWQmJihvfHwibW9iaWxlIj09PWcudHlwZSYmYSkmJmQubGVuZ3RoKX0sW28sdSxkLHAsYyxsLHMsaSxmLG0saCxnLHYseSxFLF8seCxULGFdfWNsYXNzIHNwIGV4dGVuZHMgckR7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSxyTSh0aGlzLGUsc2Qsc2wsdG4se30sYUcpfX1hc3luYyBmdW5jdGlvbiBzZihlKXtsZXQgdDtsZXQgcj1uQihlKTtpZihyKXRocm93IHI7bGV0e3NlbmRUcmFuc2FjdGlvbjpuLGVzdGltYXRlR2FzOm8sZ2FzUHJpY2U6aSxiYWxhbmNlOmEsdHhEZXRhaWxzOnMsdHhBcHByb3ZlUmVtaW5kZXJUaW1lb3V0OmN9PWUsdT1jJiZjPjNlMz9jOjE1ZTMsW2QscF09YXdhaXQgc3kob3x8KCgpPT5Qcm9taXNlLnJlc29sdmUoIiIpKSxpfHwoKCk9PlByb21pc2UucmVzb2x2ZSgiIikpKSxmPXNnKEcoKSksbT1CaWdJbnQocyYmcy52YWx1ZXx8MCk7aWYoYSYmZCYmcCl7bGV0IGU9QmlnSW50KGQpKkJpZ0ludChwKSttOygwLFYuWjQpKGUpPigwLFYuWjQpKCgwLFYudWQpKGEpKSYmbjAoc20oIm5zZkZhaWwiLGYpKX1sZXQgaD1sLmZpbmQoZT0+InR4UmVxdWVzdCI9PT1lLmV2ZW50Q29kZSk7aWYoaCYmbjAoc20oInR4QXdhaXRpbmdBcHByb3ZhbCIsaC5pZCkpLHNldFRpbWVvdXQoKCk9PntsZXQgZT1sLmZpbmQoZT0+ZS5pZD09PWYmJiJ0eFJlcXVlc3QiPT09ZS5ldmVudENvZGUpO2UmJm4wKHNtKCJ0eENvbmZpcm1SZW1pbmRlciIsZS5pZCkpfSx1KSxuMChzbSgidHhSZXF1ZXN0IixmKSksIW4pcmV0dXJuIGY7dHJ5e3Q9YXdhaXQgbigpfWNhdGNoKHIpe2xldHtldmVudENvZGU6ZSxlcnJvck1zZzp0fT1zdihyKTtuMChzbShlLGYpKTtyZXR1cm59aWYobjMoZiksdClyZXR1cm4gdH1lNS5zZWxlY3QoIm5vdGlmaWNhdGlvbnMiKS5zdWJzY3JpYmUoZT0+e2w9ZX0pO2xldCBzbT0oZSx0KT0+KHtldmVudENvZGU6ZSx0eXBlOm9rKGUpLGlkOnQsa2V5OnNoKHQsZSksbWVzc2FnZTpzYihlKSxzdGFydFRpbWU6RGF0ZS5ub3coKSxuZXR3b3JrOk9iamVjdC5rZXlzKGVFKS5maW5kKGU9PmVFW2VdPT09ZTUuZ2V0KCkuY2hhaW5zWzBdLmlkKSxhdXRvRGlzbWlzczowfSksc2g9KGUsdCk9PmAke2V9LSR7dH1gLHNnPWU9PmAke2V9LXByZWZsaWdodGAsc2I9ZT0+e2xldCB0PW9pLm5vdGlmeTtyZXR1cm4gdC50cmFuc2FjdGlvbix0LnRyYW5zYWN0aW9uW2VdfTtmdW5jdGlvbiBzdihlKXtpZighZS5zdGFja3x8IWUubWVzc2FnZSlyZXR1cm57ZXZlbnRDb2RlOiJ0eEVycm9yIixlcnJvck1zZzoiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCJ9O2xldCB0PWUuc3RhY2t8fGUubWVzc2FnZTtyZXR1cm4gdC5pbmNsdWRlcygiVXNlciBkZW5pZWQgdHJhbnNhY3Rpb24gc2lnbmF0dXJlIik/e2V2ZW50Q29kZToidHhTZW5kRmFpbCIsZXJyb3JNc2c6IlVzZXIgZGVuaWVkIHRyYW5zYWN0aW9uIHNpZ25hdHVyZSJ9OnQuaW5jbHVkZXMoInRyYW5zYWN0aW9uIHVuZGVycHJpY2VkIik/e2V2ZW50Q29kZToidHhVbmRlcnByaWNlZCIsZXJyb3JNc2c6IlRyYW5zYWN0aW9uIGlzIHVuZGVyIHByaWNlZCJ9OntldmVudENvZGU6InR4RXJyb3IiLGVycm9yTXNnOnR9fWxldCBzeT1hc3luYyhlLHQpPT57aWYoIWV8fCF0KXJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO2xldCByPWUoKTtpZighci50aGVuKXRocm93IEVycm9yKCJUaGUgYGVzdGltYXRlR2FzYCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIFByb21pc2UiKTtsZXQgbj10KCk7aWYoIW4udGhlbil0aHJvdyBFcnJvcigiVGhlIGBnYXNQcmljZWAgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSBQcm9taXNlIik7cmV0dXJuIFByb21pc2UuYWxsKFtyLG5dKS50aGVuKChbZSx0XSk9PntpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgRXJyb3IoYFRoZSBQcm9taXNlIHJldHVybmVkIGZyb20gY2FsbGluZyAnZXN0aW1hdGVHYXMnIG11c3QgcmVzb2x2ZSB3aXRoIGEgdmFsdWUgb2YgdHlwZSAnc3RyaW5nJy4gUmVjZWl2ZWQgYSB2YWx1ZSBvZjogJHtlfSB3aXRoIGEgdHlwZTogJHt0eXBlb2YgZX1gKTtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgRXJyb3IoYFRoZSBQcm9taXNlIHJldHVybmVkIGZyb20gY2FsbGluZyAnZ2FzUHJpY2UnIG11c3QgcmVzb2x2ZSB3aXRoIGEgdmFsdWUgb2YgdHlwZSAnc3RyaW5nJy4gUmVjZWl2ZWQgYSB2YWx1ZSBvZjogJHt0fSB3aXRoIGEgdHlwZTogJHt0eXBlb2YgdH1gKTtyZXR1cm5bQmlnSW50KGUpLEJpZ0ludCh0KV19KS5jYXRjaChlPT57dGhyb3cgRXJyb3IoYFRoZXJlIHdhcyBhbiBlcnJvciBnZXR0aW5nIGdhcyBlc3RpbWF0ZXM6ICR7ZX1gKX0pfSxzRT17Y29ubmVjdFdhbGxldDpvbyxkaXNjb25uZWN0V2FsbGV0Om9OLHNldENoYWluOm9JLHN0YXRlOntnZXQ6ZTUuZ2V0LHNlbGVjdDplNS5zZWxlY3QsYWN0aW9uczp7c2V0V2FsbGV0TW9kdWxlczpuNixzZXRMb2NhbGU6bjQsdXBkYXRlTm90aWZ5Om4kLGN1c3RvbU5vdGlmaWNhdGlvbjpuMixwcmVmbGlnaHROb3RpZmljYXRpb25zOnNmLHVwZGF0ZUJhbGFuY2VzOm94LHVwZGF0ZUFjY291bnRDZW50ZXI6blEsc2V0UHJpbWFyeVdhbGxldDpuWix1cGRhdGVUaGVtZTpvZSx1cGRhdGVBcHBNZXRhZGF0YTpvdH19fTtmdW5jdGlvbiBzXyhlKXtsZXQgdDtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gc0U7aWYoZSl7bGV0IHQ9blQoZSk7aWYodCl0aHJvdyB0fWxldHt3YWxsZXRzOnIsY2hhaW5zOm4sYXBwTWV0YWRhdGE6byxpMThuOmksYWNjb3VudENlbnRlcjphLGFwaUtleTpzLG5vdGlmeTpsLGdhczpjLGNvbm5lY3Q6dSxjb250YWluZXJFbGVtZW50czpkLHRyYW5zYWN0aW9uUHJldmlldzpwLHRoZW1lOmYsZGlzYWJsZUZvbnREb3dubG9hZDptLHVuc3RvcHBhYmxlUmVzb2x1dGlvbjpoLHdhZ21pOmd9PWU7ZCYmZU4oe2NvbnRhaW5lckVsZW1lbnRzOmR9KTtsZXR7ZGV2aWNlOmIsc3ZlbHRlSW5zdGFuY2U6dn09ZVI7aWYodiYmckwubmV4dCgpLG9NKGkpLG5WKGVoKG4pKSx2b2lkIDAhPT11JiZuSih1KSx2b2lkIDAhPT1hKXtsZXQgZTtsZXR7aGlkZVRyYW5zYWN0aW9uUHJvdGVjdGlvbkJ0bjp0LHRyYW5zYWN0aW9uUHJvdGVjdGlvbkluZm9MaW5rOnJ9PWE7Im1vYmlsZSI9PT1iLnR5cGU/ZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlSS5hY2NvdW50Q2VudGVyKSx7aGlkZVRyYW5zYWN0aW9uUHJvdGVjdGlvbkJ0bjp0LHRyYW5zYWN0aW9uUHJvdGVjdGlvbkluZm9MaW5rOnJ9KSxhLm1vYmlsZT9hLm1vYmlsZTp7fSk6YS5kZXNrdG9wJiYoZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlSS5hY2NvdW50Q2VudGVyKSx7aGlkZVRyYW5zYWN0aW9uUHJvdGVjdGlvbkJ0bjp0LHRyYW5zYWN0aW9uUHJvdGVjdGlvbkluZm9MaW5rOnJ9KSxhLmRlc2t0b3ApKSx2b2lkIDAhPT1lJiZuUShlKX1pZih2b2lkIDAhPT1nJiYodD1nKE9iamVjdC5hc3NpZ24oe2Rpc2Nvbm5lY3Q6b04sdXBkYXRlQ2hhaW46bnF9LG93KCkpKSksdm9pZCAwIT09bCl7aWYoImRlc2t0b3AiaW4gbHx8Im1vYmlsZSJpbiBsKXtsZXQgZT1uRChsKTtpZihlKXRocm93IGU7bCYmbC5kZXNrdG9wJiZsLmRlc2t0b3AucG9zaXRpb24mJmEmJmEuZGVza3RvcCYmYS5kZXNrdG9wLnBvc2l0aW9uJiYobC5kZXNrdG9wLnBvc2l0aW9uPWEuZGVza3RvcC5wb3NpdGlvbiksbCYmbC5tb2JpbGUmJmwubW9iaWxlLnBvc2l0aW9uJiZhJiZhLm1vYmlsZSYmYS5tb2JpbGUucG9zaXRpb24mJihsLm1vYmlsZS5wb3NpdGlvbj1hLm1vYmlsZS5wb3NpdGlvbik7bGV0IHQ9e307Im1vYmlsZSI9PT1iLnR5cGUmJmwubW9iaWxlP3Q9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVJLm5vdGlmeSksbC5tb2JpbGUpOmwuZGVza3RvcCYmKHQ9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVJLm5vdGlmeSksbC5kZXNrdG9wKSksbiQodCl9ZWxzZXtsZXQgZT1uTShsKTtpZihlKXRocm93IGU7biQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVJLm5vdGlmeSksbCkpfX1lbHNlIG4kKGVJLm5vdGlmeSk7aWYoZU4oe3N2ZWx0ZUluc3RhbmNlOnZ8fHNUKGZ8fHt9LG18fCExKSxhcGlLZXk6cyxpbml0aWFsV2FsbGV0SW5pdDpyLGdhczpjLHVuc3RvcHBhYmxlUmVzb2x1dGlvbjpoLHdhZ21pOnR9KSxvJiZvdChvKSxzLGYmJm9lKGYpLHUmJih1LmF1dG9Db25uZWN0TGFzdFdhbGxldHx8dS5hdXRvQ29ubmVjdEFsbFByZXZpb3VzV2FsbGV0KSl7bGV0IGU9ZUMoZVAuTEFTVF9DT05ORUNURURfV0FMTEVUKTt0cnl7bGV0IHQ9SlNPTi5wYXJzZShlKTt0JiZBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aCYmc3godCx1KSx0JiYic3RyaW5nIj09dHlwZW9mIHQmJnN4KFt0XSx1KX1jYXRjaCh0KXt0IGluc3RhbmNlb2YgU3ludGF4RXJyb3ImJmUmJnNFLmNvbm5lY3RXYWxsZXQoe2F1dG9TZWxlY3Q6e2xhYmVsOmUsZGlzYWJsZU1vZGFsczohMH19KX19cmV0dXJuIHNFfWxldCBzUz0oZSx0KT0+ISEodHx8ZG9jdW1lbnQuYm9keSYmKGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgiLS1vbmJvYXJkLWZvbnQtZmFtaWx5LW5vcm1hbCIpfHxnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoIi0tdzNvLWZvbnQtZmFtaWx5IikpKXx8ISFlJiYoIm9iamVjdCI9PXR5cGVvZiBlJiYhIWVbIi0tdzNvLWZvbnQtZmFtaWx5Il18fCExKSxzdz1hc3luYygpPT57bGV0e0ludGVyVmFyOmV9PWF3YWl0IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oci5iaW5kKHIsNzk5ODYpKSx0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC5pbm5lckhUTUw9YAogICAgJHtlfQogIGAsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KX0sc3g9YXN5bmMoZSx0KT0+e2xldCByPVtdLG49ZTtpZih0LmF1dG9Db25uZWN0QWxsUHJldmlvdXNXYWxsZXQpZm9yKGxldCBlPW4ubGVuZ3RoO2UtLTspKGF3YWl0IHNFLmNvbm5lY3RXYWxsZXQoe2F1dG9TZWxlY3Q6e2xhYmVsOm5bZV0sZGlzYWJsZU1vZGFsczohMH19KSkuc29tZSh0PT50LmxhYmVsPT09bltlXSkmJnIudW5zaGlmdChuW2VdKTtlbHNlIHNFLmNvbm5lY3RXYWxsZXQoe2F1dG9TZWxlY3Q6e2xhYmVsOm5bMF0sZGlzYWJsZU1vZGFsczohMH19KSxyLnB1c2goblswXSk7ZWsoZVAuTEFTVF9DT05ORUNURURfV0FMTEVULEpTT04uc3RyaW5naWZ5KHIpKX07ZnVuY3Rpb24gc1QoZSx0KXtsZXQgcjtjbGFzcyBuIGV4dGVuZHMgSFRNTEVsZW1lbnR7Y29uc3RydWN0b3IoKXtzdXBlcigpfX0hY3VzdG9tRWxlbWVudHMuZ2V0KCJvbmJvYXJkLXYyIikmJmN1c3RvbUVsZW1lbnRzLmRlZmluZSgib25ib2FyZC12MiIsbiksIXNTKGUsdCkmJnN3KCk7bGV0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib25ib2FyZC12MiIpLGk9by5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSk7by5zdHlsZS5hbGw9ImluaXRpYWwiLGkuaW5uZXJIVE1MPWAKCiAgPHN0eWxlPgogICAgOmhvc3QgewogICAgICAgICAgLyogQ09MT1JTICovCiAgICAgICAgICAtLXdoaXRlOiB3aGl0ZTsKICAgICAgICAgIC0tYmxhY2s6IGJsYWNrOwogICAgICAgICAgLS1wcmltYXJ5LTE6ICMyRjgwRUQ7CiAgICAgICAgICAtLXByaW1hcnktMTAwOiAjZWZmMWZjOwogICAgICAgICAgLS1wcmltYXJ5LTIwMDogI2QwZDRmNzsKICAgICAgICAgIC0tcHJpbWFyeS0zMDA6ICNiMWI4ZjI7CiAgICAgICAgICAtLXByaW1hcnktNDAwOiAjOTI5YmVkOwogICAgICAgICAgLS1wcmltYXJ5LTUwMDogIzYzNzBlNTsKICAgICAgICAgIC0tcHJpbWFyeS02MDA6ICM0NTRlYTA7CiAgICAgICAgICAtLXByaW1hcnktNzAwOiAjMzIzODczOwogICAgICAgICAgLS1ncmF5LTEwMDogI2ViZWJlZDsKICAgICAgICAgIC0tZ3JheS0yMDA6ICNjMmM0Yzk7CiAgICAgICAgICAtLWdyYXktMzAwOiAjOTk5Y2E1OwogICAgICAgICAgLS1ncmF5LTQwMDogIzcwNzQ4MTsKICAgICAgICAgIC0tZ3JheS01MDA6ICMzMzM5NGI7CiAgICAgICAgICAtLWdyYXktNjAwOiAjMjQyODM1OwogICAgICAgICAgLS1ncmF5LTcwMDogIzFhMWQyNjsKICAgICAgICAgIC0tc3VjY2Vzcy0xMDA6ICNkMWZhZTM7CiAgICAgICAgICAtLXN1Y2Nlc3MtMjAwOiAjYmFmN2Q1OwogICAgICAgICAgLS1zdWNjZXNzLTMwMDogI2E0ZjRjNjsKICAgICAgICAgIC0tc3VjY2Vzcy00MDA6ICM4ZGYyYjg7CiAgICAgICAgICAtLXN1Y2Nlc3MtNTAwOiAjNWFlYzk5OwogICAgICAgICAgLS1zdWNjZXNzLTYwMDogIzE4Y2U2NjsKICAgICAgICAgIC0tc3VjY2Vzcy03MDA6ICMxMjliNGQ7CiAgICAgICAgICAtLWRhbmdlci0xMDA6ICNmZmU1ZTY7CiAgICAgICAgICAtLWRhbmdlci0yMDA6ICNmZmNjY2M7CiAgICAgICAgICAtLWRhbmdlci0zMDA6ICNmZmIzYjM7CiAgICAgICAgICAtLWRhbmdlci00MDA6ICNmZjgwODA7CiAgICAgICAgICAtLWRhbmdlci01MDA6ICNmZjRmNGY7CiAgICAgICAgICAtLWRhbmdlci02MDA6ICNjYzAwMDA7CiAgICAgICAgICAtLWRhbmdlci03MDA6ICM2NjAwMDA7CiAgICAgICAgICAtLXdhcm5pbmctMTAwOiAjZmZlZmNjOwogICAgICAgICAgLS13YXJuaW5nLTIwMDogI2ZmZTdiMzsKICAgICAgICAgIC0td2FybmluZy0zMDA6ICNmZmQ3ODA7CiAgICAgICAgICAtLXdhcm5pbmctNDAwOiAjZmZjNzRjOwogICAgICAgICAgLS13YXJuaW5nLTUwMDogI2ZmYWYwMDsKICAgICAgICAgIC0td2FybmluZy02MDA6ICNjYzhjMDA7CiAgICAgICAgICAtLXdhcm5pbmctNzAwOiAjNjY0NjAwOwoKICAgICAgICAgIC8qIEZPTlRTICovCiAgICAgICAgICAtLWZvbnQtZmFtaWx5LW5vcm1hbDogdmFyKC0tdzNvLWZvbnQtZmFtaWx5LCBJbnRlciwgc2Fucy1zZXJpZik7CgogICAgICAgICAgLS1mb250LXNpemUtMTogM3JlbTsKICAgICAgICAgIC0tZm9udC1zaXplLTI6IDIuMjVyZW07CiAgICAgICAgICAtLWZvbnQtc2l6ZS0zOiAxLjVyZW07CiAgICAgICAgICAtLWZvbnQtc2l6ZS00OiAxLjI1cmVtOwogICAgICAgICAgLS1mb250LXNpemUtNTogMXJlbTsKICAgICAgICAgIC0tZm9udC1zaXplLTY6IC44NzVyZW07CiAgICAgICAgICAtLWZvbnQtc2l6ZS03OiAuNzVyZW07CgogICAgICAgICAgLS1mb250LWxpbmUtaGVpZ2h0LTE6IDI0cHg7CiAgICAgICAgICAtLWZvbnQtbGluZS1oZWlnaHQtMjogMjBweDsKICAgICAgICAgIC0tZm9udC1saW5lLWhlaWdodC0zOiAxNnB4OwogICAgICAgICAgLS1mb250LWxpbmUtaGVpZ2h0LTQ6IDEycHg7CgogICAgICAgICAgLyogU1BBQ0lORyAqLwogICAgICAgICAgLS1zcGFjaW5nLTE6IDNyZW07CiAgICAgICAgICAtLXNwYWNpbmctMjogMnJlbTsKICAgICAgICAgIC0tc3BhY2luZy0zOiAxLjVyZW07CiAgICAgICAgICAtLXNwYWNpbmctNDogMXJlbTsKICAgICAgICAgIC0tc3BhY2luZy01OiAwLjVyZW07CiAgICAgICAgICAtLXNwYWNpbmctNjogMC4yNXJlbTsKICAgICAgICAgIC0tc3BhY2luZy03OiAwLjEyNXJlbTsKCiAgICAgICAgICAvKiBCT1JERVIgUkFESVVTICovCiAgICAgICAgICAtLWJvcmRlci1yYWRpdXMtMTogMjRweDsKICAgICAgICAgIC0tYm9yZGVyLXJhZGl1cy0yOiAyMHB4OwogICAgICAgICAgLS1ib3JkZXItcmFkaXVzLTM6IDE2cHg7CiAgICAgICAgICAtLWJvcmRlci1yYWRpdXMtNDogMTJweDsKICAgICAgICAgIC0tYm9yZGVyLXJhZGl1cy01OiA4cHg7CgogICAgICAgICAgLyogU0hBRE9XUyAqLwogICAgICAgICAgLS1zaGFkb3ctMDogbm9uZTsKICAgICAgICAgIC0tc2hhZG93LTE6IDBweCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAgICAgICAtLXNoYWRvdy0yOiBpbnNldCAwcHggLTFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgICAgICAgLS1zaGFkb3ctMzogMHB4IDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKCiAgICAgICAgICAvKiBNT0RBTCBQT1NJVElPTklORyAqLwogICAgICAgICAgLS1tb2RhbC16LWluZGV4OiAxMDsKICAgICAgICAgIC0tbW9kYWwtdG9wOiB1bnNldDsKICAgICAgICAgIC0tbW9kYWwtcmlnaHQ6IHVuc2V0OwogICAgICAgICAgLS1tb2RhbC1ib3R0b206IHVuc2V0OwogICAgICAgICAgLS1tb2RhbC1sZWZ0OiB1bnNldDsKCiAgICAgICAgICAvKiBNT0RBTCBTVFlMRVMgKi8KICAgICAgICAgIC0tbW9kYWwtYmFja2Ryb3A6IHJnYmEoMCwgMCwgMCwgMC42KTsKCiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgYCxlUiYmZVIuY29udGFpbmVyRWxlbWVudHMmJmVSLmNvbnRhaW5lckVsZW1lbnRzLmNvbm5lY3RNb2RhbCYmKHI9ZVIuY29udGFpbmVyRWxlbWVudHMuY29ubmVjdE1vZGFsKTtsZXQgYT1yfHxlNS5nZXQoKS5hY2NvdW50Q2VudGVyLmNvbnRhaW5lckVsZW1lbnR8fCJib2R5IixzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYSk7aWYoIXMpdGhyb3cgRXJyb3IoYEVsZW1lbnQgd2l0aCBxdWVyeSAke2F9IGRvZXMgbm90IGV4aXN0LmApO3JldHVybiBzLmFwcGVuZENoaWxkKG8pLG5ldyBzcCh7dGFyZ2V0Oml9KX19LDQyODM1OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse1Q6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpIik7ZnVuY3Rpb24gbyhlKXtsZXQgdD0iJiIrZSsiOyI7bi5pbm5lckhUTUw9dDtsZXQgcj1uLnRleHRDb250ZW50O3JldHVybig1OSE9PXIuY2hhckNvZGVBdChyLmxlbmd0aC0xKXx8InNlbWkiPT09ZSkmJnIhPT10JiZyfX0sOTQwOTU6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtsZXQgbixvO3Iucih0KSxyLmQodCx7ZGVsZXRlREI6KCk9PlMsb3BlbkRCOigpPT5fLHVud3JhcDooKT0+RSx3cmFwOigpPT55fSk7bGV0IGk9KGUsdCk9PnQuc29tZSh0PT5lIGluc3RhbmNlb2YgdCk7ZnVuY3Rpb24gYSgpe3JldHVybiBufHwobj1bSURCRGF0YWJhc2UsSURCT2JqZWN0U3RvcmUsSURCSW5kZXgsSURCQ3Vyc29yLElEQlRyYW5zYWN0aW9uXSl9ZnVuY3Rpb24gcygpe3JldHVybiBvfHwobz1bSURCQ3Vyc29yLnByb3RvdHlwZS5hZHZhbmNlLElEQkN1cnNvci5wcm90b3R5cGUuY29udGludWUsSURCQ3Vyc29yLnByb3RvdHlwZS5jb250aW51ZVByaW1hcnlLZXldKX1sZXQgbD1uZXcgV2Vha01hcCxjPW5ldyBXZWFrTWFwLHU9bmV3IFdlYWtNYXAsZD1uZXcgV2Vha01hcCxwPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIGYoZSl7bGV0IHQ9bmV3IFByb21pc2UoKHQscik9PntsZXQgbj0oKT0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3VjY2VzcyIsbyksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsaSl9LG89KCk9Pnt0KHkoZS5yZXN1bHQpKSxuKCl9LGk9KCk9PntyKGUuZXJyb3IpLG4oKX07ZS5hZGRFdmVudExpc3RlbmVyKCJzdWNjZXNzIixvKSxlLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixpKX0pO3JldHVybiB0LnRoZW4odD0+e3QgaW5zdGFuY2VvZiBJREJDdXJzb3ImJmwuc2V0KHQsZSl9KS5jYXRjaCgoKT0+e30pLHAuc2V0KHQsZSksdH1mdW5jdGlvbiBtKGUpe2lmKGMuaGFzKGUpKXJldHVybjtsZXQgdD1uZXcgUHJvbWlzZSgodCxyKT0+e2xldCBuPSgpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjb21wbGV0ZSIsbyksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsaSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsaSl9LG89KCk9Pnt0KCksbigpfSxpPSgpPT57cihlLmVycm9yfHxuZXcgRE9NRXhjZXB0aW9uKCJBYm9ydEVycm9yIiwiQWJvcnRFcnJvciIpKSxuKCl9O2UuYWRkRXZlbnRMaXN0ZW5lcigiY29tcGxldGUiLG8pLGUuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGkpfSk7Yy5zZXQoZSx0KX1sZXQgaD17Z2V0KGUsdCxyKXtpZihlIGluc3RhbmNlb2YgSURCVHJhbnNhY3Rpb24pe2lmKCJkb25lIj09PXQpcmV0dXJuIGMuZ2V0KGUpO2lmKCJvYmplY3RTdG9yZU5hbWVzIj09PXQpcmV0dXJuIGUub2JqZWN0U3RvcmVOYW1lc3x8dS5nZXQoZSk7aWYoInN0b3JlIj09PXQpcmV0dXJuIHIub2JqZWN0U3RvcmVOYW1lc1sxXT92b2lkIDA6ci5vYmplY3RTdG9yZShyLm9iamVjdFN0b3JlTmFtZXNbMF0pfXJldHVybiB5KGVbdF0pfSxzZXQ6KGUsdCxyKT0+KGVbdF09ciwhMCksaGFzOihlLHQpPT5lIGluc3RhbmNlb2YgSURCVHJhbnNhY3Rpb24mJigiZG9uZSI9PT10fHwic3RvcmUiPT09dCl8fHQgaW4gZX07ZnVuY3Rpb24gZyhlKXtoPWUoaCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZSE9PUlEQkRhdGFiYXNlLnByb3RvdHlwZS50cmFuc2FjdGlvbnx8Im9iamVjdFN0b3JlTmFtZXMiaW4gSURCVHJhbnNhY3Rpb24ucHJvdG90eXBlP3MoKS5pbmNsdWRlcyhlKT9mdW5jdGlvbiguLi50KXtyZXR1cm4gZS5hcHBseShFKHRoaXMpLHQpLHkobC5nZXQodGhpcykpfTpmdW5jdGlvbiguLi50KXtyZXR1cm4geShlLmFwcGx5KEUodGhpcyksdCkpfTpmdW5jdGlvbih0LC4uLnIpe2xldCBuPWUuY2FsbChFKHRoaXMpLHQsLi4ucik7cmV0dXJuIHUuc2V0KG4sdC5zb3J0P3Quc29ydCgpOlt0XSkseShuKX19ZnVuY3Rpb24gdihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9iKGUpOihlIGluc3RhbmNlb2YgSURCVHJhbnNhY3Rpb24mJm0oZSksaShlLGEoKSkpP25ldyBQcm94eShlLGgpOmV9ZnVuY3Rpb24geShlKXtpZihlIGluc3RhbmNlb2YgSURCUmVxdWVzdClyZXR1cm4gZihlKTtpZihkLmhhcyhlKSlyZXR1cm4gZC5nZXQoZSk7bGV0IHQ9dihlKTtyZXR1cm4gdCE9PWUmJihkLnNldChlLHQpLHAuc2V0KHQsZSkpLHR9bGV0IEU9ZT0+cC5nZXQoZSk7ZnVuY3Rpb24gXyhlLHQse2Jsb2NrZWQ6cix1cGdyYWRlOm4sYmxvY2tpbmc6byx0ZXJtaW5hdGVkOml9PXt9KXtsZXQgYT1pbmRleGVkREIub3BlbihlLHQpLHM9eShhKTtyZXR1cm4gbiYmYS5hZGRFdmVudExpc3RlbmVyKCJ1cGdyYWRlbmVlZGVkIixlPT57bih5KGEucmVzdWx0KSxlLm9sZFZlcnNpb24sZS5uZXdWZXJzaW9uLHkoYS50cmFuc2FjdGlvbiksZSl9KSxyJiZhLmFkZEV2ZW50TGlzdGVuZXIoImJsb2NrZWQiLGU9PnIoZS5vbGRWZXJzaW9uLGUubmV3VmVyc2lvbixlKSkscy50aGVuKGU9PntpJiZlLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwoKT0+aSgpKSxvJiZlLmFkZEV2ZW50TGlzdGVuZXIoInZlcnNpb25jaGFuZ2UiLGU9Pm8oZS5vbGRWZXJzaW9uLGUubmV3VmVyc2lvbixlKSl9KS5jYXRjaCgoKT0+e30pLHN9ZnVuY3Rpb24gUyhlLHtibG9ja2VkOnR9PXt9KXtsZXQgcj1pbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZSk7cmV0dXJuIHQmJnIuYWRkRXZlbnRMaXN0ZW5lcigiYmxvY2tlZCIsZT0+dChlLm9sZFZlcnNpb24sZSkpLHkocikudGhlbigoKT0+dm9pZCAwKX1sZXQgdz1bImdldCIsImdldEtleSIsImdldEFsbCIsImdldEFsbEtleXMiLCJjb3VudCJdLHg9WyJwdXQiLCJhZGQiLCJkZWxldGUiLCJjbGVhciJdLFQ9bmV3IE1hcDtmdW5jdGlvbiBBKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgSURCRGF0YWJhc2UmJiEodCBpbiBlKSYmInN0cmluZyI9PXR5cGVvZiB0KSlyZXR1cm47aWYoVC5nZXQodCkpcmV0dXJuIFQuZ2V0KHQpO2xldCByPXQucmVwbGFjZSgvRnJvbUluZGV4JC8sIiIpLG49dCE9PXIsbz14LmluY2x1ZGVzKHIpO2lmKCEociBpbihuP0lEQkluZGV4OklEQk9iamVjdFN0b3JlKS5wcm90b3R5cGUpfHwhKG98fHcuaW5jbHVkZXMocikpKXJldHVybjtsZXQgaT1hc3luYyBmdW5jdGlvbihlLC4uLnQpe2xldCBpPXRoaXMudHJhbnNhY3Rpb24oZSxvPyJyZWFkd3JpdGUiOiJyZWFkb25seSIpLGE9aS5zdG9yZTtyZXR1cm4gbiYmKGE9YS5pbmRleCh0LnNoaWZ0KCkpKSwoYXdhaXQgUHJvbWlzZS5hbGwoW2Fbcl0oLi4udCksbyYmaS5kb25lXSkpWzBdfTtyZXR1cm4gVC5zZXQodCxpKSxpfWcoZT0+KHsuLi5lLGdldDoodCxyLG4pPT5BKHQscil8fGUuZ2V0KHQscixuKSxoYXM6KHQscik9PiEhQSh0LHIpfHxlLmhhcyh0LHIpfSkpfSw2MzIwMDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3Iucih0KSxyLmQodCx7ZmluZEFuZFJlcGxhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbi5ufX0pO3ZhciBuPXIoNDc5NDApfSw0Nzk0MDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBzdHJpbmciKTtyZXR1cm4gZS5yZXBsYWNlKC9bfFxce30oKVtcXV4kKyo/Ll0vZywiXFwkJiIpLnJlcGxhY2UoLy0vZywiXFx4MmQiKX1yLmQodCx7bjooKT0+c30pO3ZhciBvPXIoIjExNTcxIiksaT1yKCIzNzc3Iik7bGV0IGE9e30uaGFzT3duUHJvcGVydHkscz1mdW5jdGlvbihlLHQscixuKXtsZXQgYSxzOyJzdHJpbmciPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFJlZ0V4cD8ocz1bW3Qscl1dLGE9bik6KHM9dCxhPXIpLCFhJiYoYT17fSk7bGV0IGM9KDAsaS5PKShhLmlnbm9yZXx8W10pLHU9bChzKSxkPS0xO2Zvcig7KytkPHUubGVuZ3RoOykoMCxvLlM0KShlLCJ0ZXh0IixwKTtyZXR1cm4gZTtmdW5jdGlvbiBwKGUsdCl7bGV0IHIsbj0tMTtmb3IoOysrbjx0Lmxlbmd0aDspe2xldCBlPXRbbl07aWYoYyhlLHI/ci5jaGlsZHJlbi5pbmRleE9mKGUpOnZvaWQgMCxyKSlyZXR1cm47cj1lfWlmKHIpcmV0dXJuIGYoZSx0KX1mdW5jdGlvbiBmKGUsdCl7bGV0IHI9dFt0Lmxlbmd0aC0xXSxuPXVbZF1bMF0sbz11W2RdWzFdLGk9MCxhPXIuY2hpbGRyZW4uaW5kZXhPZihlKSxzPSExLGw9W107bi5sYXN0SW5kZXg9MDtsZXQgYz1uLmV4ZWMoZS52YWx1ZSk7Zm9yKDtjOyl7bGV0IHI9Yy5pbmRleCxhPXtpbmRleDpjLmluZGV4LGlucHV0OmMuaW5wdXQsc3RhY2s6Wy4uLnQsZV19LHU9byguLi5jLGEpO2lmKCJzdHJpbmciPT10eXBlb2YgdSYmKHU9dS5sZW5ndGg+MD97dHlwZToidGV4dCIsdmFsdWU6dX06dm9pZCAwKSwhMSE9PXUmJihpIT09ciYmbC5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTplLnZhbHVlLnNsaWNlKGkscil9KSxBcnJheS5pc0FycmF5KHUpP2wucHVzaCguLi51KTp1JiZsLnB1c2godSksaT1yK2NbMF0ubGVuZ3RoLHM9ITApLCFuLmdsb2JhbClicmVhaztjPW4uZXhlYyhlLnZhbHVlKX1yZXR1cm4gcz8oaTxlLnZhbHVlLmxlbmd0aCYmbC5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTplLnZhbHVlLnNsaWNlKGkpfSksci5jaGlsZHJlbi5zcGxpY2UoYSwxLC4uLmwpKTpsPVtlXSxhK2wubGVuZ3RofX07ZnVuY3Rpb24gbChlKXtsZXQgdD1bXTtpZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgVHlwZUVycm9yKCJFeHBlY3RlZCBhcnJheSBvciBvYmplY3QgYXMgc2NoZW1hIik7aWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IHI9LTE7Zm9yKDsrK3I8ZS5sZW5ndGg7KXQucHVzaChbYyhlW3JdWzBdKSx1KGVbcl1bMV0pXSl9ZWxzZXtsZXQgcjtmb3IociBpbiBlKWEuY2FsbChlLHIpJiZ0LnB1c2goW2MociksdShlW3JdKV0pfXJldHVybiB0fWZ1bmN0aW9uIGMoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP1JlZ0V4cChuKGUpLCJnIik6ZX1mdW5jdGlvbiB1KGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6KCk9PmV9fSw1Mjg0MjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHt3OmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIG49cigxNDMwMCksbz1yKDc5OTQyKTtsZXQgaT17dG9rZW5pemU6YSxwYXJ0aWFsOiEwfTtmdW5jdGlvbiBhKGUsdCxyKXtyZXR1cm4gaTtmdW5jdGlvbiBpKHQpe3JldHVybigwLG8ueHopKHQpPygwLG4uZikoZSxhLCJsaW5lUHJlZml4IikodCk6YSh0KX1mdW5jdGlvbiBhKGUpe3JldHVybiBudWxsPT09ZXx8KDAsby5DaCkoZSk/dChlKTpyKGUpfX19LDE0MzAwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse2Y6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgbj1yKDc5OTQyKTtmdW5jdGlvbiBvKGUsdCxyLG8pe2xldCBpPW8/by0xOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSxhPTA7cmV0dXJuIHM7ZnVuY3Rpb24gcyhvKXtyZXR1cm4oMCxuLnh6KShvKT8oZS5lbnRlcihyKSxsKG8pKTp0KG8pfWZ1bmN0aW9uIGwobyl7cmV0dXJuKDAsbi54eikobykmJmErKzxpPyhlLmNvbnN1bWUobyksbCk6KGUuZXhpdChyKSx0KG8pKX19fSw3OTk0MjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtCODooKT0+aCxBdjooKT0+cyxwWTooKT0+bCxBRjooKT0+YyxzUjooKT0+dSxqdjooKT0+byxIJDooKT0+aSxuOTooKT0+YSxDaDooKT0+ZCx6MzooKT0+cCx4ejooKT0+ZixYaDooKT0+bX0pO2xldCBuPS9bIS1cLzotQFxbLWBcey1+XHhBMVx4QTdceEFCXHhCNlx4QjdceEJCXHhCRlx1MDM3RVx1MDM4N1x1MDU1QS1cdTA1NUZcdTA1ODlcdTA1OEFcdTA1QkVcdTA1QzBcdTA1QzNcdTA1QzZcdTA1RjNcdTA1RjRcdTA2MDlcdTA2MEFcdTA2MENcdTA2MERcdTA2MUJcdTA2MUQtXHUwNjFGXHUwNjZBLVx1MDY2RFx1MDZENFx1MDcwMC1cdTA3MERcdTA3RjctXHUwN0Y5XHUwODMwLVx1MDgzRVx1MDg1RVx1MDk2NFx1MDk2NVx1MDk3MFx1MDlGRFx1MEE3Nlx1MEFGMFx1MEM3N1x1MEM4NFx1MERGNFx1MEU0Rlx1MEU1QVx1MEU1Qlx1MEYwNC1cdTBGMTJcdTBGMTRcdTBGM0EtXHUwRjNEXHUwRjg1XHUwRkQwLVx1MEZENFx1MEZEOVx1MEZEQVx1MTA0QS1cdTEwNEZcdTEwRkJcdTEzNjAtXHUxMzY4XHUxNDAwXHUxNjZFXHUxNjlCXHUxNjlDXHUxNkVCLVx1MTZFRFx1MTczNVx1MTczNlx1MTdENC1cdTE3RDZcdTE3RDgtXHUxN0RBXHUxODAwLVx1MTgwQVx1MTk0NFx1MTk0NVx1MUExRVx1MUExRlx1MUFBMC1cdTFBQTZcdTFBQTgtXHUxQUFEXHUxQjVBLVx1MUI2MFx1MUI3RFx1MUI3RVx1MUJGQy1cdTFCRkZcdTFDM0ItXHUxQzNGXHUxQzdFXHUxQzdGXHUxQ0MwLVx1MUNDN1x1MUNEM1x1MjAxMC1cdTIwMjdcdTIwMzAtXHUyMDQzXHUyMDQ1LVx1MjA1MVx1MjA1My1cdTIwNUVcdTIwN0RcdTIwN0VcdTIwOERcdTIwOEVcdTIzMDgtXHUyMzBCXHUyMzI5XHUyMzJBXHUyNzY4LVx1Mjc3NVx1MjdDNVx1MjdDNlx1MjdFNi1cdTI3RUZcdTI5ODMtXHUyOTk4XHUyOUQ4LVx1MjlEQlx1MjlGQ1x1MjlGRFx1MkNGOS1cdTJDRkNcdTJDRkVcdTJDRkZcdTJENzBcdTJFMDAtXHUyRTJFXHUyRTMwLVx1MkU0Rlx1MkU1Mi1cdTJFNURcdTMwMDEtXHUzMDAzXHUzMDA4LVx1MzAxMVx1MzAxNC1cdTMwMUZcdTMwMzBcdTMwM0RcdTMwQTBcdTMwRkJcdUE0RkVcdUE0RkZcdUE2MEQtXHVBNjBGXHVBNjczXHVBNjdFXHVBNkYyLVx1QTZGN1x1QTg3NC1cdUE4NzdcdUE4Q0VcdUE4Q0ZcdUE4RjgtXHVBOEZBXHVBOEZDXHVBOTJFXHVBOTJGXHVBOTVGXHVBOUMxLVx1QTlDRFx1QTlERVx1QTlERlx1QUE1Qy1cdUFBNUZcdUFBREVcdUFBREZcdUFBRjBcdUFBRjFcdUFCRUJcdUZEM0VcdUZEM0ZcdUZFMTAtXHVGRTE5XHVGRTMwLVx1RkU1Mlx1RkU1NC1cdUZFNjFcdUZFNjNcdUZFNjhcdUZFNkFcdUZFNkJcdUZGMDEtXHVGRjAzXHVGRjA1LVx1RkYwQVx1RkYwQy1cdUZGMEZcdUZGMUFcdUZGMUJcdUZGMUZcdUZGMjBcdUZGM0ItXHVGRjNEXHVGRjNGXHVGRjVCXHVGRjVEXHVGRjVGLVx1RkY2NV0vLG89ZygvW0EtWmEtel0vKSxpPWcoL1tcZEEtWmEtel0vKSxhPWcoL1sjLScqK1wtLTk9P0EtWl4tfl0vKTtmdW5jdGlvbiBzKGUpe3JldHVybiBudWxsIT09ZSYmKGU8MzJ8fDEyNz09PWUpfWxldCBsPWcoL1xkLyksYz1nKC9bXGRBLUZhLWZdLyksdT1nKC9bIS0vOi1AWy1gey1+XS8pO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIG51bGwhPT1lJiZlPC0yfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIG51bGwhPT1lJiYoZTwwfHwzMj09PWUpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIC0yPT09ZXx8LTE9PT1lfHwzMj09PWV9bGV0IG09ZyhuKSxoPWcoL1xzLyk7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gdDtmdW5jdGlvbiB0KHQpe3JldHVybiBudWxsIT09dCYmZS50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUodCkpfX19LDk2Nzc0OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQscixuKXtsZXQgbztsZXQgaT1lLmxlbmd0aCxhPTA7aWYodD10PDA/LXQ+aT8wOmkrdDp0Pmk/aTp0LHI9cj4wP3I6MCxuLmxlbmd0aDwxZTQpKG89QXJyYXkuZnJvbShuKSkudW5zaGlmdCh0LHIpLGUuc3BsaWNlKC4uLm8pO2Vsc2UgZm9yKHImJmUuc3BsaWNlKHQscik7YTxuLmxlbmd0aDspKG89bi5zbGljZShhLGErMWU0KSkudW5zaGlmdCh0LDApLGUuc3BsaWNlKC4uLm8pLGErPTFlNCx0Kz0xZTR9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBlLmxlbmd0aD4wPyhuKGUsZS5sZW5ndGgsMCx0KSxlKTp0fXIuZCh0LHtWOmZ1bmN0aW9uKCl7cmV0dXJuIG99LGQ6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KX0sMzcyNTk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7cjpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciBuPXIoNzk5NDIpO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIG51bGw9PT1lfHwoMCxuLnozKShlKXx8KDAsbi5COCkoZSk/MTooMCxuLlhoKShlKT8yOnZvaWQgMH19LDIzMjM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7VzpmdW5jdGlvbigpe3JldHVybiBpfX0pO3ZhciBuPXIoOTY3NzQpO2xldCBvPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGkoZSl7bGV0IHQ9e30scj0tMTtmb3IoOysrcjxlLmxlbmd0aDspYSh0LGVbcl0pO3JldHVybiB0fWZ1bmN0aW9uIGEoZSx0KXtsZXQgcjtmb3IociBpbiB0KXtsZXQgbjtsZXQgaT0oby5jYWxsKGUscik/ZVtyXTp2b2lkIDApfHwoZVtyXT17fSksYT10W3JdO2lmKGEpZm9yKG4gaW4gYSl7IW8uY2FsbChpLG4pJiYoaVtuXT1bXSk7bGV0IGU9YVtuXTtzKGlbbl0sQXJyYXkuaXNBcnJheShlKT9lOmU/W2VdOltdKX19fWZ1bmN0aW9uIHMoZSx0KXtsZXQgcj0tMSxvPVtdO2Zvcig7KytyPHQubGVuZ3RoOykoImFmdGVyIj09PXRbcl0uYWRkP2U6bykucHVzaCh0W3JdKTsoMCxuLmQpKGUsMCwwLG8pfX0sNzgwNzQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7bGV0IHI9TnVtYmVyLnBhcnNlSW50KGUsdCk7cmV0dXJuIHI8OXx8MTE9PT1yfHxyPjEzJiZyPDMyfHxyPjEyNiYmcjwxNjB8fHI+NTUyOTUmJnI8NTczNDR8fHI+NjQ5NzUmJnI8NjUwMDh8fCg2NTUzNSZyKT09NjU1MzV8fCg2NTUzNSZyKT09NjU1MzR8fHI+MTExNDExMT8i77+9IjpTdHJpbmcuZnJvbUNoYXJDb2RlKHIpfXIuZCh0LHtvOmZ1bmN0aW9uKCl7cmV0dXJuIG59fSl9LDQ1NjQyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse3Y6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTt2YXIgbj1yKDQyODM1KSxvPXIoNzgwNzQpO2xldCBpPS9cXChbIS0vOi1AWy1gey1+XSl8JigjKD86XGR7MSw3fXx4W1xkYS1mXXsxLDZ9KXxbXGRhLXpdezEsMzF9KTsvZ2k7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZS5yZXBsYWNlKGkscyl9ZnVuY3Rpb24gcyhlLHQscil7aWYodClyZXR1cm4gdDtpZigzNT09PXIuY2hhckNvZGVBdCgwKSl7bGV0IGU9ci5jaGFyQ29kZUF0KDEpLHQ9MTIwPT09ZXx8ODg9PT1lO3JldHVybigwLG8ubykoci5zbGljZSh0PzI6MSksdD8xNjoxMCl9cmV0dXJuKDAsbi5UKShyKXx8ZX19LDExODQ3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXHRcblxyIF0rL2csIiAiKS5yZXBsYWNlKC9eIHwgJC9nLCIiKS50b0xvd2VyQ2FzZSgpLnRvVXBwZXJDYXNlKCl9ci5kKHQse2Q6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KX0sNTY1MTY6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxyKXtsZXQgbj1bXSxvPS0xO2Zvcig7KytvPGUubGVuZ3RoOyl7bGV0IGk9ZVtvXS5yZXNvbHZlQWxsO2kmJiFuLmluY2x1ZGVzKGkpJiYodD1pKHQsciksbi5wdXNoKGkpKX1yZXR1cm4gdH1yLmQodCx7QzpmdW5jdGlvbigpe3JldHVybiBufX0pfSwyNTY1OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5yKHQpLHIuZCh0LHt1cmxBbHBoYWJldDooKT0+bixjdXN0b21BbHBoYWJldDooKT0+YSxuYW5vaWQ6KCk9PnMsY3VzdG9tUmFuZG9tOigpPT5pLHJhbmRvbTooKT0+b30pO2xldCBuPSJ1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0IixvPWU9PmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoZSkpLGk9KGUsdCxyKT0+e2xldCBuPSgyPDxNYXRoLmxvZyhlLmxlbmd0aC0xKS9NYXRoLkxOMiktMSxvPS1+KDEuNipuKnQvZS5sZW5ndGgpO3JldHVybiAoaT10KT0+e2xldCBhPSIiO2Zvcig7Oyl7bGV0IHQ9cihvKSxzPW87Zm9yKDtzLS07KWlmKChhKz1lW3Rbc10mbl18fCIiKS5sZW5ndGg9PT1pKXJldHVybiBhfX19LGE9KGUsdD0yMSk9PmkoZSx0LG8pLHM9KGU9MjEpPT5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KGUpKS5yZWR1Y2UoKGUsdCk9PigodCY9NjMpPDM2P2UrPXQudG9TdHJpbmcoMzYpOnQ8NjI/ZSs9KHQtMjYpLnRvU3RyaW5nKDM2KS50b1VwcGVyQ2FzZSgpOnQ+NjI/ZSs9Ii0iOmUrPSJfIixlKSwiIil9LDkyNzA3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5yKHQpLHIuZCh0LHt1cmlUcmFuc2Zvcm1lcjooKT0+YSxkZWZhdWx0OigpPT5uUH0pO3ZhciBuPXt9O3IucihuKSxyLmQobix7YXR0ZW50aW9uTWFya2VyczooKT0+dFEsY29udGVudEluaXRpYWw6KCk9PnRxLGRpc2FibGU6KCk9PnRKLGRvY3VtZW50OigpPT50VixmbG93OigpPT50WSxmbG93SW5pdGlhbDooKT0+dFcsaW5zaWRlU3BhbjooKT0+dFgsc3RyaW5nOigpPT50Syx0ZXh0OigpPT50Wn0pO3ZhciBvPXt9O3IucihvKSxyLmQobyx7Ym9vbGVhbjooKT0+closYm9vbGVhbmlzaDooKT0+clgsY29tbWFPclNwYWNlU2VwYXJhdGVkOigpPT5yMSxjb21tYVNlcGFyYXRlZDooKT0+cjAsbnVtYmVyOigpPT5ySixvdmVybG9hZGVkQm9vbGVhbjooKT0+clEsc3BhY2VTZXBhcmF0ZWQ6KCk9PnIkfSk7bGV0IGk9WyJodHRwIiwiaHR0cHMiLCJtYWlsdG8iLCJ0ZWwiXTtmdW5jdGlvbiBhKGUpe2xldCB0PShlfHwiIikudHJpbSgpLHI9dC5jaGFyQXQoMCk7aWYoIiMiPT09cnx8Ii8iPT09cilyZXR1cm4gdDtsZXQgbj10LmluZGV4T2YoIjoiKTtpZigtMT09PW4pcmV0dXJuIHQ7bGV0IG89LTE7Zm9yKDsrK288aS5sZW5ndGg7KXtsZXQgZT1pW29dO2lmKG49PT1lLmxlbmd0aCYmdC5zbGljZSgwLGUubGVuZ3RoKS50b0xvd2VyQ2FzZSgpPT09ZSlyZXR1cm4gdH1yZXR1cm4gLTEhPT0obz10LmluZGV4T2YoIj8iKSkmJm4+b3x8LTEhPT0obz10LmluZGV4T2YoIiMiKSkmJm4+bz90OiJqYXZhc2NyaXB0OnZvaWQoMCkifXZhciBzPXIoIjY3Mjk0IiksbD1yKCI0ODczOCIpO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZT8icG9zaXRpb24iaW4gZXx8InR5cGUiaW4gZT9kKGUucG9zaXRpb24pOiJzdGFydCJpbiBlfHwiZW5kImluIGU/ZChlKToibGluZSJpbiBlfHwiY29sdW1uImluIGU/dShlKToiIjoiIn1mdW5jdGlvbiB1KGUpe3JldHVybiBwKGUmJmUubGluZSkrIjoiK3AoZSYmZS5jb2x1bW4pfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIHUoZSYmZS5zdGFydCkrIi0iK3UoZSYmZS5lbmQpfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZT9lOjF9Y2xhc3MgZiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxyKXtsZXQgbj1bbnVsbCxudWxsXSxvPXtzdGFydDp7bGluZTpudWxsLGNvbHVtbjpudWxsfSxlbmQ6e2xpbmU6bnVsbCxjb2x1bW46bnVsbH19O2lmKHN1cGVyKCksInN0cmluZyI9PXR5cGVvZiB0JiYocj10LHQ9dm9pZCAwKSwic3RyaW5nIj09dHlwZW9mIHIpe2xldCBlPXIuaW5kZXhPZigiOiIpOy0xPT09ZT9uWzFdPXI6KG5bMF09ci5zbGljZSgwLGUpLG5bMV09ci5zbGljZShlKzEpKX10JiYoInR5cGUiaW4gdHx8InBvc2l0aW9uImluIHQ/dC5wb3NpdGlvbiYmKG89dC5wb3NpdGlvbik6InN0YXJ0ImluIHR8fCJlbmQiaW4gdD9vPXQ6KCJsaW5lImluIHR8fCJjb2x1bW4iaW4gdCkmJihvLnN0YXJ0PXQpKSx0aGlzLm5hbWU9Yyh0KXx8IjE6MSIsdGhpcy5tZXNzYWdlPSJvYmplY3QiPT10eXBlb2YgZT9lLm1lc3NhZ2U6ZSx0aGlzLnN0YWNrPSIiLCJvYmplY3QiPT10eXBlb2YgZSYmZS5zdGFjayYmKHRoaXMuc3RhY2s9ZS5zdGFjayksdGhpcy5yZWFzb249dGhpcy5tZXNzYWdlLHRoaXMuZmF0YWwsdGhpcy5saW5lPW8uc3RhcnQubGluZSx0aGlzLmNvbHVtbj1vLnN0YXJ0LmNvbHVtbix0aGlzLnBvc2l0aW9uPW8sdGhpcy5zb3VyY2U9blswXSx0aGlzLnJ1bGVJZD1uWzFdLHRoaXMuZmlsZSx0aGlzLmFjdHVhbCx0aGlzLmV4cGVjdGVkLHRoaXMudXJsLHRoaXMubm90ZX19Zi5wcm90b3R5cGUuZmlsZT0iIixmLnByb3RvdHlwZS5uYW1lPSIiLGYucHJvdG90eXBlLnJlYXNvbj0iIixmLnByb3RvdHlwZS5tZXNzYWdlPSIiLGYucHJvdG90eXBlLnN0YWNrPSIiLGYucHJvdG90eXBlLmZhdGFsPW51bGwsZi5wcm90b3R5cGUuY29sdW1uPW51bGwsZi5wcm90b3R5cGUubGluZT1udWxsLGYucHJvdG90eXBlLnNvdXJjZT1udWxsLGYucHJvdG90eXBlLnJ1bGVJZD1udWxsLGYucHJvdG90eXBlLnBvc2l0aW9uPW51bGw7bGV0IG09e2Jhc2VuYW1lOmgsZGlybmFtZTpnLGV4dG5hbWU6Yixqb2luOnYsc2VwOiIvIn07ZnVuY3Rpb24gaChlLHQpe2xldCByO2lmKHZvaWQgMCE9PXQmJiJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IoJyJleHQiIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnKTtfKGUpO2xldCBuPTAsbz0tMSxpPWUubGVuZ3RoO2lmKHZvaWQgMD09PXR8fDA9PT10Lmxlbmd0aHx8dC5sZW5ndGg+ZS5sZW5ndGgpe2Zvcig7aS0tOylpZig0Nz09PWUuY2hhckNvZGVBdChpKSl7aWYocil7bj1pKzE7YnJlYWt9fWVsc2UgbzwwJiYocj0hMCxvPWkrMSk7cmV0dXJuIG88MD8iIjplLnNsaWNlKG4sbyl9aWYodD09PWUpcmV0dXJuIiI7bGV0IGE9LTEscz10Lmxlbmd0aC0xO2Zvcig7aS0tOylpZig0Nz09PWUuY2hhckNvZGVBdChpKSl7aWYocil7bj1pKzE7YnJlYWt9fWVsc2UgYTwwJiYocj0hMCxhPWkrMSkscz4tMSYmKGUuY2hhckNvZGVBdChpKT09PXQuY2hhckNvZGVBdChzLS0pP3M8MCYmKG89aSk6KHM9LTEsbz1hKSk7cmV0dXJuIG49PT1vP289YTpvPDAmJihvPWUubGVuZ3RoKSxlLnNsaWNlKG4sbyl9ZnVuY3Rpb24gZyhlKXtsZXQgdDtpZihfKGUpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7bGV0IHI9LTEsbj1lLmxlbmd0aDtmb3IoOy0tbjspaWYoNDc9PT1lLmNoYXJDb2RlQXQobikpe2lmKHQpe3I9bjticmVha319ZWxzZSF0JiYodD0hMCk7cmV0dXJuIHI8MD80Nz09PWUuY2hhckNvZGVBdCgwKT8iLyI6Ii4iOjE9PT1yJiY0Nz09PWUuY2hhckNvZGVBdCgwKT8iLy8iOmUuc2xpY2UoMCxyKX1mdW5jdGlvbiBiKGUpe2xldCB0O18oZSk7bGV0IHI9ZS5sZW5ndGgsbj0tMSxvPTAsaT0tMSxhPTA7Zm9yKDtyLS07KXtsZXQgcz1lLmNoYXJDb2RlQXQocik7aWYoNDc9PT1zKXtpZih0KXtvPXIrMTticmVha31jb250aW51ZX1uPDAmJih0PSEwLG49cisxKSw0Nj09PXM/aTwwP2k9cjoxIT09YSYmKGE9MSk6aT4tMSYmKGE9LTEpfXJldHVybiBpPDB8fG48MHx8MD09PWF8fDE9PT1hJiZpPT09bi0xJiZpPT09bysxPyIiOmUuc2xpY2UoaSxuKX1mdW5jdGlvbiB2KC4uLmUpe2xldCB0LHI9LTE7Zm9yKDsrK3I8ZS5sZW5ndGg7KV8oZVtyXSksZVtyXSYmKHQ9dm9pZCAwPT09dD9lW3JdOnQrIi8iK2Vbcl0pO3JldHVybiB2b2lkIDA9PT10PyIuIjp5KHQpfWZ1bmN0aW9uIHkoZSl7XyhlKTtsZXQgdD00Nz09PWUuY2hhckNvZGVBdCgwKSxyPUUoZSwhdCk7cmV0dXJuIDA9PT1yLmxlbmd0aCYmIXQmJihyPSIuIiksci5sZW5ndGg+MCYmNDc9PT1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSkmJihyKz0iLyIpLHQ/Ii8iK3I6cn1mdW5jdGlvbiBFKGUsdCl7bGV0IHIsbixvPSIiLGk9MCxhPS0xLHM9MCxsPS0xO2Zvcig7KytsPD1lLmxlbmd0aDspe2lmKGw8ZS5sZW5ndGgpcj1lLmNoYXJDb2RlQXQobCk7ZWxzZSBpZig0Nz09PXIpYnJlYWs7ZWxzZSByPTQ3O2lmKDQ3PT09cil7aWYoYT09PWwtMXx8MT09PXMpO2Vsc2UgaWYoYSE9PWwtMSYmMj09PXMpe2lmKG8ubGVuZ3RoPDJ8fDIhPT1pfHw0NiE9PW8uY2hhckNvZGVBdChvLmxlbmd0aC0xKXx8NDYhPT1vLmNoYXJDb2RlQXQoby5sZW5ndGgtMikpe2lmKG8ubGVuZ3RoPjIpe2lmKChuPW8ubGFzdEluZGV4T2YoIi8iKSkhPT1vLmxlbmd0aC0xKXtuPDA/KG89IiIsaT0wKTppPShvPW8uc2xpY2UoMCxuKSkubGVuZ3RoLTEtby5sYXN0SW5kZXhPZigiLyIpLGE9bCxzPTA7Y29udGludWV9fWVsc2UgaWYoby5sZW5ndGg+MCl7bz0iIixpPTAsYT1sLHM9MDtjb250aW51ZX19dCYmKG89by5sZW5ndGg+MD9vKyIvLi4iOiIuLiIsaT0yKX1lbHNlIG8ubGVuZ3RoPjA/bys9Ii8iK2Uuc2xpY2UoYSsxLGwpOm89ZS5zbGljZShhKzEsbCksaT1sLWEtMTthPWwscz0wfWVsc2UgNDY9PT1yJiZzPi0xP3MrKzpzPS0xfXJldHVybiBvfWZ1bmN0aW9uIF8oZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IFR5cGVFcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KGUpKX1sZXQgUz13O2Z1bmN0aW9uIHcoKXtyZXR1cm4iLyJ9ZnVuY3Rpb24geChlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSYmZS5ocmVmJiZlLm9yaWdpbn1mdW5jdGlvbiBUKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSllPW5ldyBVUkwoZSk7ZWxzZSBpZigheChlKSl7bGV0IHQ9VHlwZUVycm9yKCdUaGUgInBhdGgiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgb3IgYW4gaW5zdGFuY2Ugb2YgVVJMLiBSZWNlaXZlZCBgJytlKyJgIik7dGhyb3cgdC5jb2RlPSJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsdH1pZigiZmlsZToiIT09ZS5wcm90b2NvbCl7bGV0IGU9VHlwZUVycm9yKCJUaGUgVVJMIG11c3QgYmUgb2Ygc2NoZW1lIGZpbGUiKTt0aHJvdyBlLmNvZGU9IkVSUl9JTlZBTElEX1VSTF9TQ0hFTUUiLGV9cmV0dXJuIEEoZSl9ZnVuY3Rpb24gQShlKXtpZigiIiE9PWUuaG9zdG5hbWUpe2xldCBlPVR5cGVFcnJvcignRmlsZSBVUkwgaG9zdCBtdXN0IGJlICJsb2NhbGhvc3QiIG9yIGVtcHR5IG9uIGRhcndpbicpO3Rocm93IGUuY29kZT0iRVJSX0lOVkFMSURfRklMRV9VUkxfSE9TVCIsZX1sZXQgdD1lLnBhdGhuYW1lLHI9LTE7Zm9yKDsrK3I8dC5sZW5ndGg7KWlmKDM3PT09dC5jaGFyQ29kZUF0KHIpJiY1MD09PXQuY2hhckNvZGVBdChyKzEpKXtsZXQgZT10LmNoYXJDb2RlQXQocisyKTtpZig3MD09PWV8fDEwMj09PWUpe2xldCBlPVR5cGVFcnJvcigiRmlsZSBVUkwgcGF0aCBtdXN0IG5vdCBpbmNsdWRlIGVuY29kZWQgLyBjaGFyYWN0ZXJzIik7dGhyb3cgZS5jb2RlPSJFUlJfSU5WQUxJRF9GSUxFX1VSTF9QQVRIIixlfX1yZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQpfWxldCBDPVsiaGlzdG9yeSIsInBhdGgiLCJiYXNlbmFtZSIsInN0ZW0iLCJleHRuYW1lIiwiZGlybmFtZSJdO2NsYXNzIGt7Y29uc3RydWN0b3IoZSl7bGV0IHQscjt0PWU/InN0cmluZyI9PXR5cGVvZiBlfHxJKGUpP3t2YWx1ZTplfTp4KGUpP3twYXRoOmV9OmU6e30sdGhpcy5kYXRhPXt9LHRoaXMubWVzc2FnZXM9W10sdGhpcy5oaXN0b3J5PVtdLHRoaXMuY3dkPVMoKSx0aGlzLnZhbHVlLHRoaXMuc3RvcmVkLHRoaXMucmVzdWx0LHRoaXMubWFwO2xldCBuPS0xO2Zvcig7KytuPEMubGVuZ3RoOyl7bGV0IGU9Q1tuXTtlIGluIHQmJnZvaWQgMCE9PXRbZV0mJm51bGwhPT10W2VdJiYodGhpc1tlXT0iaGlzdG9yeSI9PT1lP1suLi50W2VdXTp0W2VdKX1mb3IociBpbiB0KSFDLmluY2x1ZGVzKHIpJiYodGhpc1tyXT10W3JdKX1nZXQgcGF0aCgpe3JldHVybiB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aC0xXX1zZXQgcGF0aChlKXt4KGUpJiYoZT1UKGUpKSxSKGUsInBhdGgiKSx0aGlzLnBhdGghPT1lJiZ0aGlzLmhpc3RvcnkucHVzaChlKX1nZXQgZGlybmFtZSgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5wYXRoP20uZGlybmFtZSh0aGlzLnBhdGgpOnZvaWQgMH1zZXQgZGlybmFtZShlKXtOKHRoaXMuYmFzZW5hbWUsImRpcm5hbWUiKSx0aGlzLnBhdGg9bS5qb2luKGV8fCIiLHRoaXMuYmFzZW5hbWUpfWdldCBiYXNlbmFtZSgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5wYXRoP20uYmFzZW5hbWUodGhpcy5wYXRoKTp2b2lkIDB9c2V0IGJhc2VuYW1lKGUpe1IoZSwiYmFzZW5hbWUiKSxPKGUsImJhc2VuYW1lIiksdGhpcy5wYXRoPW0uam9pbih0aGlzLmRpcm5hbWV8fCIiLGUpfWdldCBleHRuYW1lKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzLnBhdGg/bS5leHRuYW1lKHRoaXMucGF0aCk6dm9pZCAwfXNldCBleHRuYW1lKGUpe2lmKE8oZSwiZXh0bmFtZSIpLE4odGhpcy5kaXJuYW1lLCJleHRuYW1lIiksZSl7aWYoNDYhPT1lLmNoYXJDb2RlQXQoMCkpdGhyb3cgRXJyb3IoImBleHRuYW1lYCBtdXN0IHN0YXJ0IHdpdGggYC5gIik7aWYoZS5pbmNsdWRlcygiLiIsMSkpdGhyb3cgRXJyb3IoImBleHRuYW1lYCBjYW5ub3QgY29udGFpbiBtdWx0aXBsZSBkb3RzIil9dGhpcy5wYXRoPW0uam9pbih0aGlzLmRpcm5hbWUsdGhpcy5zdGVtKyhlfHwiIikpfWdldCBzdGVtKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzLnBhdGg/bS5iYXNlbmFtZSh0aGlzLnBhdGgsdGhpcy5leHRuYW1lKTp2b2lkIDB9c2V0IHN0ZW0oZSl7UihlLCJzdGVtIiksTyhlLCJzdGVtIiksdGhpcy5wYXRoPW0uam9pbih0aGlzLmRpcm5hbWV8fCIiLGUrKHRoaXMuZXh0bmFtZXx8IiIpKX10b1N0cmluZyhlKXtyZXR1cm4odGhpcy52YWx1ZXx8IiIpLnRvU3RyaW5nKGV8fHZvaWQgMCl9bWVzc2FnZShlLHQscil7bGV0IG49bmV3IGYoZSx0LHIpO3JldHVybiB0aGlzLnBhdGgmJihuLm5hbWU9dGhpcy5wYXRoKyI6IituLm5hbWUsbi5maWxlPXRoaXMucGF0aCksbi5mYXRhbD0hMSx0aGlzLm1lc3NhZ2VzLnB1c2gobiksbn1pbmZvKGUsdCxyKXtsZXQgbj10aGlzLm1lc3NhZ2UoZSx0LHIpO3JldHVybiBuLmZhdGFsPW51bGwsbn1mYWlsKGUsdCxyKXtsZXQgbj10aGlzLm1lc3NhZ2UoZSx0LHIpO3Rocm93IG4uZmF0YWw9ITAsbn19ZnVuY3Rpb24gTyhlLHQpe2lmKGUmJmUuaW5jbHVkZXMobS5zZXApKXRocm93IEVycm9yKCJgIit0KyJgIGNhbm5vdCBiZSBhIHBhdGg6IGRpZCBub3QgZXhwZWN0IGAiK20uc2VwKyJgIil9ZnVuY3Rpb24gUihlLHQpe2lmKCFlKXRocm93IEVycm9yKCJgIit0KyJgIGNhbm5vdCBiZSBlbXB0eSIpfWZ1bmN0aW9uIE4oZSx0KXtpZighZSl0aHJvdyBFcnJvcigiU2V0dGluZyBgIit0KyJgIHJlcXVpcmVzIGBwYXRoYCB0byBiZSBzZXQgdG9vIil9ZnVuY3Rpb24gSShlKXtyZXR1cm4gbChlKX1mdW5jdGlvbiBQKGUpe2lmKGUpdGhyb3cgZX12YXIgTT1yKCI5NDQ3MCIpO2Z1bmN0aW9uIEQoZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4hMTtsZXQgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuKG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZXx8bnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkmJiEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIGUpJiYhKFN5bWJvbC5pdGVyYXRvciBpbiBlKX1mdW5jdGlvbiBMKCl7bGV0IGU9W10sdD17cnVuOnIsdXNlOm59O3JldHVybiB0O2Z1bmN0aW9uIHIoLi4udCl7bGV0IG49LTEsbz10LnBvcCgpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBvKXRocm93IFR5cGVFcnJvcigiRXhwZWN0ZWQgZnVuY3Rpb24gYXMgbGFzdCBhcmd1bWVudCwgbm90ICIrbyk7ZnVuY3Rpb24gaShyLC4uLmEpe2xldCBzPWVbKytuXSxsPS0xO2lmKHIpe28ocik7cmV0dXJufWZvcig7KytsPHQubGVuZ3RoOykobnVsbD09PWFbbF18fHZvaWQgMD09PWFbbF0pJiYoYVtsXT10W2xdKTt0PWEscz9GKHMsaSkoLi4uYSk6byhudWxsLC4uLmEpfWkobnVsbCwuLi50KX1mdW5jdGlvbiBuKHIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IFR5cGVFcnJvcigiRXhwZWN0ZWQgYG1pZGRlbHdhcmVgIHRvIGJlIGEgZnVuY3Rpb24sIG5vdCAiK3IpO3JldHVybiBlLnB1c2gociksdH19ZnVuY3Rpb24gRihlLHQpe2xldCByO3JldHVybiBuO2Z1bmN0aW9uIG4oLi4udCl7bGV0IGE7bGV0IHM9ZS5sZW5ndGg+dC5sZW5ndGg7cyYmdC5wdXNoKG8pO3RyeXthPWUuYXBwbHkodGhpcyx0KX1jYXRjaCh0KXtsZXQgZT10O2lmKHMmJnIpdGhyb3cgZTtyZXR1cm4gbyhlKX0hcyYmKGEmJmEudGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIGEudGhlbj9hLnRoZW4oaSxvKTphIGluc3RhbmNlb2YgRXJyb3I/byhhKTppKGEpKX1mdW5jdGlvbiBvKGUsLi4ubil7IXImJihyPSEwLHQoZSwuLi5uKSl9ZnVuY3Rpb24gaShlKXtvKG51bGwsZSl9fWxldCBCPVUoKS5mcmVlemUoKSxqPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFUoKXtsZXQgZTtsZXQgdD1MKCkscj1bXSxuPXt9LG89LTE7cmV0dXJuIGkuZGF0YT1hLGkuUGFyc2VyPXZvaWQgMCxpLkNvbXBpbGVyPXZvaWQgMCxpLmZyZWV6ZT1zLGkuYXR0YWNoZXJzPXIsaS51c2U9bCxpLnBhcnNlPWMsaS5zdHJpbmdpZnk9dSxpLnJ1bj1kLGkucnVuU3luYz1wLGkucHJvY2Vzcz1mLGkucHJvY2Vzc1N5bmM9bSxpO2Z1bmN0aW9uIGkoKXtsZXQgZT1VKCksdD0tMTtmb3IoOysrdDxyLmxlbmd0aDspZS51c2UoLi4uclt0XSk7cmV0dXJuIGUuZGF0YShNKCEwLHt9LG4pKSxlfWZ1bmN0aW9uIGEodCxyKXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIDI9PWFyZ3VtZW50cy5sZW5ndGg/KHEoImRhdGEiLGUpLG5bdF09cixpKTpqLmNhbGwobix0KSYmblt0XXx8bnVsbDtyZXR1cm4gdD8ocSgiZGF0YSIsZSksbj10LGkpOm59ZnVuY3Rpb24gcygpe2lmKGUpcmV0dXJuIGk7Zm9yKDsrK288ci5sZW5ndGg7KXtsZXRbZSwuLi5uXT1yW29dO2lmKCExPT09blswXSljb250aW51ZTshMD09PW5bMF0mJihuWzBdPXZvaWQgMCk7bGV0IGE9ZS5jYWxsKGksLi4ubik7ImZ1bmN0aW9uIj09dHlwZW9mIGEmJnQudXNlKGEpfXJldHVybiBlPSEwLG89TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGl9ZnVuY3Rpb24gbCh0LC4uLm8pe2xldCBhO2lmKHEoInVzZSIsZSksbnVsbD09dCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgdClkKHQsLi4ubyk7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIHQpQXJyYXkuaXNBcnJheSh0KT91KHQpOmModCk7ZWxzZSB0aHJvdyBUeXBlRXJyb3IoIkV4cGVjdGVkIHVzYWJsZSB2YWx1ZSwgbm90IGAiK3QrImAiKTtyZXR1cm4gYSYmKG4uc2V0dGluZ3M9T2JqZWN0LmFzc2lnbihuLnNldHRpbmdzfHx7fSxhKSksaTtmdW5jdGlvbiBzKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKWQoZSk7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2xldFt0LC4uLnJdPWU7ZCh0LC4uLnIpfWVsc2UgYyhlKX1lbHNlIHRocm93IFR5cGVFcnJvcigiRXhwZWN0ZWQgdXNhYmxlIHZhbHVlLCBub3QgYCIrZSsiYCIpfWZ1bmN0aW9uIGMoZSl7dShlLnBsdWdpbnMpLGUuc2V0dGluZ3MmJihhPU9iamVjdC5hc3NpZ24oYXx8e30sZS5zZXR0aW5ncykpfWZ1bmN0aW9uIHUoZSl7bGV0IHQ9LTE7aWYobnVsbD09ZSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKWZvcig7Kyt0PGUubGVuZ3RoOylzKGVbdF0pO2Vsc2UgdGhyb3cgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGxpc3Qgb2YgcGx1Z2lucywgbm90IGAiK2UrImAiKX1mdW5jdGlvbiBkKGUsdCl7bGV0IG4sbz0tMTtmb3IoOysrbzxyLmxlbmd0aDspaWYocltvXVswXT09PWUpe249cltvXTticmVha31uPyhEKG5bMV0pJiZEKHQpJiYodD1NKCEwLG5bMV0sdCkpLG5bMV09dCk6ci5wdXNoKFsuLi5hcmd1bWVudHNdKX19ZnVuY3Rpb24gYyhlKXtpLmZyZWV6ZSgpO2xldCB0PUsoZSkscj1pLlBhcnNlcjtyZXR1cm4oSCgicGFyc2UiLHIpLHoociwicGFyc2UiKSk/bmV3IHIoU3RyaW5nKHQpLHQpLnBhcnNlKCk6cihTdHJpbmcodCksdCl9ZnVuY3Rpb24gdShlLHQpe2kuZnJlZXplKCk7bGV0IHI9Syh0KSxuPWkuQ29tcGlsZXI7cmV0dXJuKFYoInN0cmluZ2lmeSIsbiksVyhlKSx6KG4sImNvbXBpbGUiKSk/bmV3IG4oZSxyKS5jb21waWxlKCk6bihlLHIpfWZ1bmN0aW9uIGQoZSxyLG4pe2lmKFcoZSksaS5mcmVlemUoKSwhbiYmImZ1bmN0aW9uIj09dHlwZW9mIHImJihuPXIscj12b2lkIDApLCFuKXJldHVybiBuZXcgUHJvbWlzZShvKTtmdW5jdGlvbiBvKG8saSl7dC5ydW4oZSxLKHIpLGEpO2Z1bmN0aW9uIGEodCxyLGEpe3I9cnx8ZSx0P2kodCk6bz9vKHIpOm4obnVsbCxyLGEpfX1vKG51bGwsbil9ZnVuY3Rpb24gcChlLHQpe2xldCByLG47cmV0dXJuIGkucnVuKGUsdCxvKSxZKCJydW5TeW5jIiwicnVuIixuKSxyO2Z1bmN0aW9uIG8oZSx0KXtQKGUpLHI9dCxuPSEwfX1mdW5jdGlvbiBmKGUsdCl7aWYoaS5mcmVlemUoKSxIKCJwcm9jZXNzIixpLlBhcnNlciksVigicHJvY2VzcyIsaS5Db21waWxlciksIXQpcmV0dXJuIG5ldyBQcm9taXNlKHIpO2Z1bmN0aW9uIHIocixuKXtsZXQgbz1LKGUpO2Z1bmN0aW9uIGEoZSxvKXtlfHwhbz9uKGUpOnI/cihvKTp0KG51bGwsbyl9aS5ydW4oaS5wYXJzZShvKSxvLChlLHQscik9PntpZighZSYmdCYmcil7bGV0IG49aS5zdHJpbmdpZnkodCxyKTtudWxsPT1ufHwoWChuKT9yLnZhbHVlPW46ci5yZXN1bHQ9biksYShlLHIpfWVsc2UgYShlKX0pfXIobnVsbCx0KX1mdW5jdGlvbiBtKGUpe2xldCB0O2kuZnJlZXplKCksSCgicHJvY2Vzc1N5bmMiLGkuUGFyc2VyKSxWKCJwcm9jZXNzU3luYyIsaS5Db21waWxlcik7bGV0IHI9SyhlKTtyZXR1cm4gaS5wcm9jZXNzKHIsbiksWSgicHJvY2Vzc1N5bmMiLCJwcm9jZXNzIix0KSxyO2Z1bmN0aW9uIG4oZSl7dD0hMCxQKGUpfX19ZnVuY3Rpb24geihlLHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLnByb3RvdHlwZSYmKEcoZS5wcm90b3R5cGUpfHx0IGluIGUucHJvdG90eXBlKX1mdW5jdGlvbiBHKGUpe2xldCB0O2Zvcih0IGluIGUpaWYoai5jYWxsKGUsdCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gSChlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcigiQ2Fubm90IGAiK2UrImAgd2l0aG91dCBgUGFyc2VyYCIpfWZ1bmN0aW9uIFYoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBgIitlKyJgIHdpdGhvdXQgYENvbXBpbGVyYCIpfWZ1bmN0aW9uIHEoZSx0KXtpZih0KXRocm93IEVycm9yKCJDYW5ub3QgY2FsbCBgIitlKyJgIG9uIGEgZnJvemVuIHByb2Nlc3Nvci5cbkNyZWF0ZSBhIG5ldyBwcm9jZXNzb3IgZmlyc3QsIGJ5IGNhbGxpbmcgaXQ6IHVzZSBgcHJvY2Vzc29yKClgIGluc3RlYWQgb2YgYHByb2Nlc3NvcmAuIil9ZnVuY3Rpb24gVyhlKXtpZighRChlKXx8InN0cmluZyIhPXR5cGVvZiBlLnR5cGUpdGhyb3cgVHlwZUVycm9yKCJFeHBlY3RlZCBub2RlLCBnb3QgYCIrZSsiYCIpfWZ1bmN0aW9uIFkoZSx0LHIpe2lmKCFyKXRocm93IEVycm9yKCJgIitlKyJgIGZpbmlzaGVkIGFzeW5jLiBVc2UgYCIrdCsiYCBpbnN0ZWFkIil9ZnVuY3Rpb24gSyhlKXtyZXR1cm4gWihlKT9lOm5ldyBrKGUpfWZ1bmN0aW9uIFooZSl7cmV0dXJuISEoZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYibWVzc2FnZSJpbiBlJiYibWVzc2FnZXMiaW4gZSl9ZnVuY3Rpb24gWChlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fGwoZSl9bGV0IFE9e307ZnVuY3Rpb24gSihlLHQpe2xldCByPXR8fFEsbj0iYm9vbGVhbiIhPXR5cGVvZiByLmluY2x1ZGVJbWFnZUFsdHx8ci5pbmNsdWRlSW1hZ2VBbHQ7cmV0dXJuICQoZSxuLCJib29sZWFuIiE9dHlwZW9mIHIuaW5jbHVkZUh0bWx8fHIuaW5jbHVkZUh0bWwpfWZ1bmN0aW9uICQoZSx0LHIpe2lmKGV0KGUpKXtpZigidmFsdWUiaW4gZSlyZXR1cm4iaHRtbCIhPT1lLnR5cGV8fHI/ZS52YWx1ZToiIjtpZih0JiYiYWx0ImluIGUmJmUuYWx0KXJldHVybiBlLmFsdDtpZigiY2hpbGRyZW4iaW4gZSlyZXR1cm4gZWUoZS5jaGlsZHJlbix0LHIpfXJldHVybiBBcnJheS5pc0FycmF5KGUpP2VlKGUsdCxyKToiIn1mdW5jdGlvbiBlZShlLHQscil7bGV0IG49W10sbz0tMTtmb3IoOysrbzxlLmxlbmd0aDspbltvXT0kKGVbb10sdCxyKTtyZXR1cm4gbi5qb2luKCIiKX1mdW5jdGlvbiBldChlKXtyZXR1cm4hIShlJiYib2JqZWN0Ij09dHlwZW9mIGUpfXZhciBlcj1yKCIyMzIzIiksZW49cigiMTQzMDAiKSxlbz1yKCI3OTk0MiIpO2xldCBlaT17dG9rZW5pemU6ZWF9O2Z1bmN0aW9uIGVhKGUpe2xldCB0O2xldCByPWUuYXR0ZW1wdCh0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmNvbnRlbnRJbml0aWFsLG4sbyk7cmV0dXJuIHI7ZnVuY3Rpb24gbih0KXtpZihudWxsPT09dCl7ZS5jb25zdW1lKHQpO3JldHVybn1yZXR1cm4gZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxpbmVFbmRpbmciKSwoMCxlbi5mKShlLHIsImxpbmVQcmVmaXgiKX1mdW5jdGlvbiBvKHQpe3JldHVybiBlLmVudGVyKCJwYXJhZ3JhcGgiKSxpKHQpfWZ1bmN0aW9uIGkocil7bGV0IG49ZS5lbnRlcigiY2h1bmtUZXh0Iix7Y29udGVudFR5cGU6InRleHQiLHByZXZpb3VzOnR9KTtyZXR1cm4gdCYmKHQubmV4dD1uKSx0PW4sYShyKX1mdW5jdGlvbiBhKHQpe2lmKG51bGw9PT10KXtlLmV4aXQoImNodW5rVGV4dCIpLGUuZXhpdCgicGFyYWdyYXBoIiksZS5jb25zdW1lKHQpO3JldHVybn1yZXR1cm4oMCxlby5DaCkodCk/KGUuY29uc3VtZSh0KSxlLmV4aXQoImNodW5rVGV4dCIpLGkpOihlLmNvbnN1bWUodCksYSl9fXZhciBlcz1yKCI5Njc3NCIpO2xldCBlbD17dG9rZW5pemU6ZXV9LGVjPXt0b2tlbml6ZTplZH07ZnVuY3Rpb24gZXUoZSl7bGV0IHQscixuO2xldCBvPXRoaXMsaT1bXSxhPTA7cmV0dXJuIHM7ZnVuY3Rpb24gcyh0KXtpZihhPGkubGVuZ3RoKXtsZXQgcj1pW2FdO3JldHVybiBvLmNvbnRhaW5lclN0YXRlPXJbMV0sZS5hdHRlbXB0KHJbMF0uY29udGludWF0aW9uLGwsYykodCl9cmV0dXJuIGModCl9ZnVuY3Rpb24gbChlKXtpZihhKyssby5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93KXtsZXQgcjtvLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3c9dm9pZCAwLHQmJnYoKTtsZXQgbj1vLmV2ZW50cy5sZW5ndGgsaT1uO2Zvcig7aS0tOylpZigiZXhpdCI9PT1vLmV2ZW50c1tpXVswXSYmImNodW5rRmxvdyI9PT1vLmV2ZW50c1tpXVsxXS50eXBlKXtyPW8uZXZlbnRzW2ldWzFdLmVuZDticmVha31iKGEpO2xldCBzPW47Zm9yKDtzPG8uZXZlbnRzLmxlbmd0aDspby5ldmVudHNbc11bMV0uZW5kPU9iamVjdC5hc3NpZ24oe30scikscysrO3JldHVybigwLGVzLmQpKG8uZXZlbnRzLGkrMSwwLG8uZXZlbnRzLnNsaWNlKG4pKSxvLmV2ZW50cy5sZW5ndGg9cyxjKGUpfXJldHVybiBzKGUpfWZ1bmN0aW9uIGMocil7aWYoYT09PWkubGVuZ3RoKXtpZighdClyZXR1cm4gcChyKTtpZih0LmN1cnJlbnRDb25zdHJ1Y3QmJnQuY3VycmVudENvbnN0cnVjdC5jb25jcmV0ZSlyZXR1cm4gbShyKTtvLmludGVycnVwdD0hISh0LmN1cnJlbnRDb25zdHJ1Y3QmJiF0Ll9nZm1UYWJsZUR5bmFtaWNJbnRlcnJ1cHRIYWNrKX1yZXR1cm4gby5jb250YWluZXJTdGF0ZT17fSxlLmNoZWNrKGVjLHUsZCkocil9ZnVuY3Rpb24gdShlKXtyZXR1cm4gdCYmdigpLGIoYSkscChlKX1mdW5jdGlvbiBkKGUpe3JldHVybiBvLnBhcnNlci5sYXp5W28ubm93KCkubGluZV09YSE9PWkubGVuZ3RoLG49by5ub3coKS5vZmZzZXQsbShlKX1mdW5jdGlvbiBwKHQpe3JldHVybiBvLmNvbnRhaW5lclN0YXRlPXt9LGUuYXR0ZW1wdChlYyxmLG0pKHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGErKyxpLnB1c2goW28uY3VycmVudENvbnN0cnVjdCxvLmNvbnRhaW5lclN0YXRlXSkscChlKX1mdW5jdGlvbiBtKG4pe2lmKG51bGw9PT1uKXt0JiZ2KCksYigwKSxlLmNvbnN1bWUobik7cmV0dXJufXJldHVybiB0PXR8fG8ucGFyc2VyLmZsb3coby5ub3coKSksZS5lbnRlcigiY2h1bmtGbG93Iix7Y29udGVudFR5cGU6ImZsb3ciLHByZXZpb3VzOnIsX3Rva2VuaXplcjp0fSksaChuKX1mdW5jdGlvbiBoKHQpe2lmKG51bGw9PT10KXtnKGUuZXhpdCgiY2h1bmtGbG93IiksITApLGIoMCksZS5jb25zdW1lKHQpO3JldHVybn1yZXR1cm4oMCxlby5DaCkodCk/KGUuY29uc3VtZSh0KSxnKGUuZXhpdCgiY2h1bmtGbG93IikpLGE9MCxvLmludGVycnVwdD12b2lkIDAscyk6KGUuY29uc3VtZSh0KSxoKX1mdW5jdGlvbiBnKGUsaSl7bGV0IHM9by5zbGljZVN0cmVhbShlKTtpZihpJiZzLnB1c2gobnVsbCksZS5wcmV2aW91cz1yLHImJihyLm5leHQ9ZSkscj1lLHQuZGVmaW5lU2tpcChlLnN0YXJ0KSx0LndyaXRlKHMpLG8ucGFyc2VyLmxhenlbZS5zdGFydC5saW5lXSl7bGV0IGUscixpPXQuZXZlbnRzLmxlbmd0aDtmb3IoO2ktLTspaWYodC5ldmVudHNbaV1bMV0uc3RhcnQub2Zmc2V0PG4mJighdC5ldmVudHNbaV1bMV0uZW5kfHx0LmV2ZW50c1tpXVsxXS5lbmQub2Zmc2V0Pm4pKXJldHVybjtsZXQgcz1vLmV2ZW50cy5sZW5ndGgsbD1zO2Zvcig7bC0tOylpZigiZXhpdCI9PT1vLmV2ZW50c1tsXVswXSYmImNodW5rRmxvdyI9PT1vLmV2ZW50c1tsXVsxXS50eXBlKXtpZihlKXtyPW8uZXZlbnRzW2xdWzFdLmVuZDticmVha31lPSEwfWZvcihiKGEpLGk9cztpPG8uZXZlbnRzLmxlbmd0aDspby5ldmVudHNbaV1bMV0uZW5kPU9iamVjdC5hc3NpZ24oe30sciksaSsrOygwLGVzLmQpKG8uZXZlbnRzLGwrMSwwLG8uZXZlbnRzLnNsaWNlKHMpKSxvLmV2ZW50cy5sZW5ndGg9aX19ZnVuY3Rpb24gYih0KXtsZXQgcj1pLmxlbmd0aDtmb3IoO3ItLSA+dDspe2xldCB0PWlbcl07by5jb250YWluZXJTdGF0ZT10WzFdLHRbMF0uZXhpdC5jYWxsKG8sZSl9aS5sZW5ndGg9dH1mdW5jdGlvbiB2KCl7dC53cml0ZShbbnVsbF0pLHI9dm9pZCAwLHQ9dm9pZCAwLG8uY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdz12b2lkIDB9fWZ1bmN0aW9uIGVkKGUsdCxyKXtyZXR1cm4oMCxlbi5mKShlLGUuYXR0ZW1wdCh0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmRvY3VtZW50LHQsciksImxpbmVQcmVmaXgiLHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKT92b2lkIDA6NCl9dmFyIGVwPXIoIjUyODQyIik7ZnVuY3Rpb24gZWYoZSl7bGV0IHQscixuLG8saSxhLHM7bGV0IGw9e30sYz0tMTtmb3IoOysrYzxlLmxlbmd0aDspe2Zvcig7YyBpbiBsOyljPWxbY107aWYodD1lW2NdLGMmJiJjaHVua0Zsb3ciPT09dFsxXS50eXBlJiYibGlzdEl0ZW1QcmVmaXgiPT09ZVtjLTFdWzFdLnR5cGUmJihhPXRbMV0uX3Rva2VuaXplci5ldmVudHMsKG49MCk8YS5sZW5ndGgmJiJsaW5lRW5kaW5nQmxhbmsiPT09YVtuXVsxXS50eXBlJiYobis9MiksbjxhLmxlbmd0aCYmImNvbnRlbnQiPT09YVtuXVsxXS50eXBlKSlmb3IoOysrbjxhLmxlbmd0aCYmImNvbnRlbnQiIT09YVtuXVsxXS50eXBlOyl7OyJjaHVua1RleHQiPT09YVtuXVsxXS50eXBlJiYoYVtuXVsxXS5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW09ITAsbisrKX1pZigiZW50ZXIiPT09dFswXSl0WzFdLmNvbnRlbnRUeXBlJiYoT2JqZWN0LmFzc2lnbihsLGVtKGUsYykpLGM9bFtjXSxzPSEwKTtlbHNlIGlmKHRbMV0uX2NvbnRhaW5lcil7Zm9yKG49YyxyPXZvaWQgMDtuLS07KWlmKCJsaW5lRW5kaW5nIj09PShvPWVbbl0pWzFdLnR5cGV8fCJsaW5lRW5kaW5nQmxhbmsiPT09b1sxXS50eXBlKSJlbnRlciI9PT1vWzBdJiYociYmKGVbcl1bMV0udHlwZT0ibGluZUVuZGluZ0JsYW5rIiksb1sxXS50eXBlPSJsaW5lRW5kaW5nIixyPW4pO2Vsc2UgYnJlYWs7ciYmKHRbMV0uZW5kPU9iamVjdC5hc3NpZ24oe30sZVtyXVsxXS5zdGFydCksKGk9ZS5zbGljZShyLGMpKS51bnNoaWZ0KHQpLCgwLGVzLmQpKGUscixjLXIrMSxpKSl9fXJldHVybiFzfWZ1bmN0aW9uIGVtKGUsdCl7bGV0IHIsbjtsZXQgbz1lW3RdWzFdLGk9ZVt0XVsyXSxhPXQtMSxzPVtdLGw9by5fdG9rZW5pemVyfHxpLnBhcnNlcltvLmNvbnRlbnRUeXBlXShvLnN0YXJ0KSxjPWwuZXZlbnRzLHU9W10sZD17fSxwPS0xLGY9byxtPTAsaD0wLGc9WzBdO2Zvcig7Zjspe2Zvcig7ZVsrK2FdWzFdIT09ZjspO3MucHVzaChhKSwhZi5fdG9rZW5pemVyJiYocj1pLnNsaWNlU3RyZWFtKGYpLCFmLm5leHQmJnIucHVzaChudWxsKSxuJiZsLmRlZmluZVNraXAoZi5zdGFydCksZi5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0mJihsLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW09ITApLGwud3JpdGUociksZi5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0mJihsLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW09dm9pZCAwKSksbj1mLGY9Zi5uZXh0fWZvcihmPW87KytwPGMubGVuZ3RoOykiZXhpdCI9PT1jW3BdWzBdJiYiZW50ZXIiPT09Y1twLTFdWzBdJiZjW3BdWzFdLnR5cGU9PT1jW3AtMV1bMV0udHlwZSYmY1twXVsxXS5zdGFydC5saW5lIT09Y1twXVsxXS5lbmQubGluZSYmKGg9cCsxLGcucHVzaChoKSxmLl90b2tlbml6ZXI9dm9pZCAwLGYucHJldmlvdXM9dm9pZCAwLGY9Zi5uZXh0KTtmb3IobC5ldmVudHM9W10sZj8oZi5fdG9rZW5pemVyPXZvaWQgMCxmLnByZXZpb3VzPXZvaWQgMCk6Zy5wb3AoKSxwPWcubGVuZ3RoO3AtLTspe2xldCB0PWMuc2xpY2UoZ1twXSxnW3ArMV0pLHI9cy5wb3AoKTt1LnVuc2hpZnQoW3Iscit0Lmxlbmd0aC0xXSksKDAsZXMuZCkoZSxyLDIsdCl9Zm9yKHA9LTE7KytwPHUubGVuZ3RoOylkW20rdVtwXVswXV09bSt1W3BdWzFdLG0rPXVbcF1bMV0tdVtwXVswXS0xO3JldHVybiBkfWxldCBlaD17dG9rZW5pemU6ZXYscmVzb2x2ZTplYn0sZWc9e3Rva2VuaXplOmV5LHBhcnRpYWw6ITB9O2Z1bmN0aW9uIGViKGUpe3JldHVybiBlZihlKSxlfWZ1bmN0aW9uIGV2KGUsdCl7bGV0IHI7cmV0dXJuIG47ZnVuY3Rpb24gbih0KXtyZXR1cm4gZS5lbnRlcigiY29udGVudCIpLHI9ZS5lbnRlcigiY2h1bmtDb250ZW50Iix7Y29udGVudFR5cGU6ImNvbnRlbnQifSksbyh0KX1mdW5jdGlvbiBvKHQpe3JldHVybiBudWxsPT09dD9pKHQpOigwLGVvLkNoKSh0KT9lLmNoZWNrKGVnLGEsaSkodCk6KGUuY29uc3VtZSh0KSxvKX1mdW5jdGlvbiBpKHIpe3JldHVybiBlLmV4aXQoImNodW5rQ29udGVudCIpLGUuZXhpdCgiY29udGVudCIpLHQocil9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gZS5jb25zdW1lKHQpLGUuZXhpdCgiY2h1bmtDb250ZW50Iiksci5uZXh0PWUuZW50ZXIoImNodW5rQ29udGVudCIse2NvbnRlbnRUeXBlOiJjb250ZW50IixwcmV2aW91czpyfSkscj1yLm5leHQsb319ZnVuY3Rpb24gZXkoZSx0LHIpe2xldCBuPXRoaXM7cmV0dXJuIG87ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZS5leGl0KCJjaHVua0NvbnRlbnQiKSxlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLCgwLGVuLmYpKGUsaSwibGluZVByZWZpeCIpfWZ1bmN0aW9uIGkobyl7aWYobnVsbD09PW98fCgwLGVvLkNoKShvKSlyZXR1cm4gcihvKTtsZXQgaT1uLmV2ZW50c1tuLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIW4ucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKSYmaSYmImxpbmVQcmVmaXgiPT09aVsxXS50eXBlJiZpWzJdLnNsaWNlU2VyaWFsaXplKGlbMV0sITApLmxlbmd0aD49ND90KG8pOmUuaW50ZXJydXB0KG4ucGFyc2VyLmNvbnN0cnVjdHMuZmxvdyxyLHQpKG8pfX1sZXQgZUU9e3Rva2VuaXplOmVffTtmdW5jdGlvbiBlXyhlKXtsZXQgdD10aGlzLHI9ZS5hdHRlbXB0KGVwLncsbixlLmF0dGVtcHQodGhpcy5wYXJzZXIuY29uc3RydWN0cy5mbG93SW5pdGlhbCxvLCgwLGVuLmYpKGUsZS5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvdyxvLGUuYXR0ZW1wdChlaCxvKSksImxpbmVQcmVmaXgiKSkpO3JldHVybiByO2Z1bmN0aW9uIG4obil7aWYobnVsbD09PW4pe2UuY29uc3VtZShuKTtyZXR1cm59cmV0dXJuIGUuZW50ZXIoImxpbmVFbmRpbmdCbGFuayIpLGUuY29uc3VtZShuKSxlLmV4aXQoImxpbmVFbmRpbmdCbGFuayIpLHQuY3VycmVudENvbnN0cnVjdD12b2lkIDAscn1mdW5jdGlvbiBvKG4pe2lmKG51bGw9PT1uKXtlLmNvbnN1bWUobik7cmV0dXJufXJldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKG4pLGUuZXhpdCgibGluZUVuZGluZyIpLHQuY3VycmVudENvbnN0cnVjdD12b2lkIDAscn19bGV0IGVTPXtyZXNvbHZlQWxsOmVBKCl9LGV3PWVUKCJzdHJpbmciKSxleD1lVCgidGV4dCIpO2Z1bmN0aW9uIGVUKGUpe3JldHVybnt0b2tlbml6ZTp0LHJlc29sdmVBbGw6ZUEoInRleHQiPT09ZT9lQzp2b2lkIDApfTtmdW5jdGlvbiB0KHQpe2xldCByPXRoaXMsbj10aGlzLnBhcnNlci5jb25zdHJ1Y3RzW2VdLG89dC5hdHRlbXB0KG4saSxhKTtyZXR1cm4gaTtmdW5jdGlvbiBpKGUpe3JldHVybiBsKGUpP28oZSk6YShlKX1mdW5jdGlvbiBhKGUpe2lmKG51bGw9PT1lKXt0LmNvbnN1bWUoZSk7cmV0dXJufXJldHVybiB0LmVudGVyKCJkYXRhIiksdC5jb25zdW1lKGUpLHN9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gbChlKT8odC5leGl0KCJkYXRhIiksbyhlKSk6KHQuY29uc3VtZShlKSxzKX1mdW5jdGlvbiBsKGUpe2lmKG51bGw9PT1lKXJldHVybiEwO2xldCB0PW5bZV0sbz0tMTtpZih0KWZvcig7KytvPHQubGVuZ3RoOyl7bGV0IGU9dFtvXTtpZighZS5wcmV2aW91c3x8ZS5wcmV2aW91cy5jYWxsKHIsci5wcmV2aW91cykpcmV0dXJuITB9cmV0dXJuITF9fX1mdW5jdGlvbiBlQShlKXtyZXR1cm4gdDtmdW5jdGlvbiB0KHQscil7bGV0IG4sbz0tMTtmb3IoOysrbzw9dC5sZW5ndGg7KXZvaWQgMD09PW4/dFtvXSYmImRhdGEiPT09dFtvXVsxXS50eXBlJiYobj1vLG8rKyk6KCF0W29dfHwiZGF0YSIhPT10W29dWzFdLnR5cGUpJiYobyE9PW4rMiYmKHRbbl1bMV0uZW5kPXRbby0xXVsxXS5lbmQsdC5zcGxpY2UobisyLG8tbi0yKSxvPW4rMiksbj12b2lkIDApO3JldHVybiBlP2UodCxyKTp0fX1mdW5jdGlvbiBlQyhlLHQpe2xldCByPTA7Zm9yKDsrK3I8PWUubGVuZ3RoOylpZigocj09PWUubGVuZ3RofHwibGluZUVuZGluZyI9PT1lW3JdWzFdLnR5cGUpJiYiZGF0YSI9PT1lW3ItMV1bMV0udHlwZSl7bGV0IG47bGV0IG89ZVtyLTFdWzFdLGk9dC5zbGljZVN0cmVhbShvKSxhPWkubGVuZ3RoLHM9LTEsbD0wO2Zvcig7YS0tOyl7bGV0IGU9aVthXTtpZigic3RyaW5nIj09dHlwZW9mIGUpe2ZvcihzPWUubGVuZ3RoOzMyPT09ZS5jaGFyQ29kZUF0KHMtMSk7KWwrKyxzLS07aWYocylicmVhaztzPS0xfWVsc2UgaWYoLTI9PT1lKW49ITAsbCsrO2Vsc2UgaWYoLTE9PT1lKTtlbHNle2ErKzticmVha319aWYobCl7bGV0IGk9e3R5cGU6cj09PWUubGVuZ3RofHxufHxsPDI/ImxpbmVTdWZmaXgiOiJoYXJkQnJlYWtUcmFpbGluZyIsc3RhcnQ6e2xpbmU6by5lbmQubGluZSxjb2x1bW46by5lbmQuY29sdW1uLWwsb2Zmc2V0Om8uZW5kLm9mZnNldC1sLF9pbmRleDpvLnN0YXJ0Ll9pbmRleCthLF9idWZmZXJJbmRleDphP3M6by5zdGFydC5fYnVmZmVySW5kZXgrc30sZW5kOk9iamVjdC5hc3NpZ24oe30sby5lbmQpfTtvLmVuZD1PYmplY3QuYXNzaWduKHt9LGkuc3RhcnQpLG8uc3RhcnQub2Zmc2V0PT09by5lbmQub2Zmc2V0P09iamVjdC5hc3NpZ24obyxpKTooZS5zcGxpY2UociwwLFsiZW50ZXIiLGksdF0sWyJleGl0IixpLHRdKSxyKz0yKX1yKyt9cmV0dXJuIGV9dmFyIGVrPXIoIjU2NTE2Iik7ZnVuY3Rpb24gZU8oZSx0LHIpe2xldCBuPU9iamVjdC5hc3NpZ24ocj9PYmplY3QuYXNzaWduKHt9LHIpOntsaW5lOjEsY29sdW1uOjEsb2Zmc2V0OjB9LHtfaW5kZXg6MCxfYnVmZmVySW5kZXg6LTF9KSxvPXt9LGk9W10sYT1bXSxzPVtdLGw9e2NvbnN1bWU6dixlbnRlcjp5LGV4aXQ6RSxhdHRlbXB0OncoXyksY2hlY2s6dyhTKSxpbnRlcnJ1cHQ6dyhTLHtpbnRlcnJ1cHQ6ITB9KX0sYz17cHJldmlvdXM6bnVsbCxjb2RlOm51bGwsY29udGFpbmVyU3RhdGU6e30sZXZlbnRzOltdLHBhcnNlcjplLHNsaWNlU3RyZWFtOmYsc2xpY2VTZXJpYWxpemU6cCxub3c6bSxkZWZpbmVTa2lwOmgsd3JpdGU6ZH0sdT10LnRva2VuaXplLmNhbGwoYyxsKTtyZXR1cm4gdC5yZXNvbHZlQWxsJiZpLnB1c2godCksYztmdW5jdGlvbiBkKGUpe3JldHVybihhPSgwLGVzLlYpKGEsZSksZygpLG51bGwhPT1hW2EubGVuZ3RoLTFdKT9bXTooeCh0LDApLGMuZXZlbnRzPSgwLGVrLkMpKGksYy5ldmVudHMsYyksYy5ldmVudHMpfWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4gZU4oZihlKSx0KX1mdW5jdGlvbiBmKGUpe3JldHVybiBlUihhLGUpfWZ1bmN0aW9uIG0oKXtsZXR7bGluZTplLGNvbHVtbjp0LG9mZnNldDpyLF9pbmRleDpvLF9idWZmZXJJbmRleDppfT1uO3JldHVybntsaW5lOmUsY29sdW1uOnQsb2Zmc2V0OnIsX2luZGV4Om8sX2J1ZmZlckluZGV4Oml9fWZ1bmN0aW9uIGgoZSl7b1tlLmxpbmVdPWUuY29sdW1uLEEoKX1mdW5jdGlvbiBnKCl7bGV0IGU7Zm9yKDtuLl9pbmRleDxhLmxlbmd0aDspe2xldCB0PWFbbi5faW5kZXhdO2lmKCJzdHJpbmciPT10eXBlb2YgdClmb3IoZT1uLl9pbmRleCxuLl9idWZmZXJJbmRleDwwJiYobi5fYnVmZmVySW5kZXg9MCk7bi5faW5kZXg9PT1lJiZuLl9idWZmZXJJbmRleDx0Lmxlbmd0aDspYih0LmNoYXJDb2RlQXQobi5fYnVmZmVySW5kZXgpKTtlbHNlIGIodCl9fWZ1bmN0aW9uIGIoZSl7dT11KGUpfWZ1bmN0aW9uIHYoZSl7KDAsZW8uQ2gpKGUpPyhuLmxpbmUrKyxuLmNvbHVtbj0xLG4ub2Zmc2V0Kz0tMz09PWU/MjoxLEEoKSk6LTEhPT1lJiYobi5jb2x1bW4rKyxuLm9mZnNldCsrKSxuLl9idWZmZXJJbmRleDwwP24uX2luZGV4Kys6KG4uX2J1ZmZlckluZGV4Kyssbi5fYnVmZmVySW5kZXg9PT1hW24uX2luZGV4XS5sZW5ndGgmJihuLl9idWZmZXJJbmRleD0tMSxuLl9pbmRleCsrKSksYy5wcmV2aW91cz1lfWZ1bmN0aW9uIHkoZSx0KXtsZXQgcj10fHx7fTtyZXR1cm4gci50eXBlPWUsci5zdGFydD1tKCksYy5ldmVudHMucHVzaChbImVudGVyIixyLGNdKSxzLnB1c2gocikscn1mdW5jdGlvbiBFKGUpe2xldCB0PXMucG9wKCk7cmV0dXJuIHQuZW5kPW0oKSxjLmV2ZW50cy5wdXNoKFsiZXhpdCIsdCxjXSksdH1mdW5jdGlvbiBfKGUsdCl7eChlLHQuZnJvbSl9ZnVuY3Rpb24gUyhlLHQpe3QucmVzdG9yZSgpfWZ1bmN0aW9uIHcoZSx0KXtyZXR1cm4gcjtmdW5jdGlvbiByKHIsbixvKXtsZXQgaSxhLHMsdTtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT9wKHIpOiJ0b2tlbml6ZSJpbiByP3AoW3JdKTpkKHIpO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIHQ7ZnVuY3Rpb24gdCh0KXtsZXQgcj1udWxsIT09dCYmZVt0XSxuPW51bGwhPT10JiZlLm51bGw7cmV0dXJuIHAoWy4uLkFycmF5LmlzQXJyYXkocik/cjpyP1tyXTpbXSwuLi5BcnJheS5pc0FycmF5KG4pP246bj9bbl06W11dKSh0KX19ZnVuY3Rpb24gcChlKXtyZXR1cm4oaT1lLGE9MCwwPT09ZS5sZW5ndGgpP286ZihlW2FdKX1mdW5jdGlvbiBmKGUpe3JldHVybiByO2Z1bmN0aW9uIHIocil7cmV0dXJuKHU9VCgpLHM9ZSwhZS5wYXJ0aWFsJiYoYy5jdXJyZW50Q29uc3RydWN0PWUpLGUubmFtZSYmYy5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoZS5uYW1lKSk/aChyKTplLnRva2VuaXplLmNhbGwodD9PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoYyksdCk6YyxsLG0saCkocil9fWZ1bmN0aW9uIG0odCl7cmV0dXJuIGUocyx1KSxufWZ1bmN0aW9uIGgoZSl7cmV0dXJuKHUucmVzdG9yZSgpLCsrYTxpLmxlbmd0aCk/ZihpW2FdKTpvfX19ZnVuY3Rpb24geChlLHQpe2UucmVzb2x2ZUFsbCYmIWkuaW5jbHVkZXMoZSkmJmkucHVzaChlKSxlLnJlc29sdmUmJigwLGVzLmQpKGMuZXZlbnRzLHQsYy5ldmVudHMubGVuZ3RoLXQsZS5yZXNvbHZlKGMuZXZlbnRzLnNsaWNlKHQpLGMpKSxlLnJlc29sdmVUbyYmKGMuZXZlbnRzPWUucmVzb2x2ZVRvKGMuZXZlbnRzLGMpKX1mdW5jdGlvbiBUKCl7bGV0IGU9bSgpLHQ9Yy5wcmV2aW91cyxyPWMuY3VycmVudENvbnN0cnVjdCxvPWMuZXZlbnRzLmxlbmd0aCxpPUFycmF5LmZyb20ocyk7cmV0dXJue3Jlc3RvcmU6YSxmcm9tOm99O2Z1bmN0aW9uIGEoKXtuPWUsYy5wcmV2aW91cz10LGMuY3VycmVudENvbnN0cnVjdD1yLGMuZXZlbnRzLmxlbmd0aD1vLHM9aSxBKCl9fWZ1bmN0aW9uIEEoKXtuLmxpbmUgaW4gbyYmbi5jb2x1bW48MiYmKG4uY29sdW1uPW9bbi5saW5lXSxuLm9mZnNldCs9b1tuLmxpbmVdLTEpfX1mdW5jdGlvbiBlUihlLHQpe2xldCByO2xldCBuPXQuc3RhcnQuX2luZGV4LG89dC5zdGFydC5fYnVmZmVySW5kZXgsaT10LmVuZC5faW5kZXgsYT10LmVuZC5fYnVmZmVySW5kZXg7aWYobj09PWkpcj1bZVtuXS5zbGljZShvLGEpXTtlbHNle2lmKHI9ZS5zbGljZShuLGkpLG8+LTEpe2xldCBlPXJbMF07InN0cmluZyI9PXR5cGVvZiBlP3JbMF09ZS5zbGljZShvKTpyLnNoaWZ0KCl9YT4wJiZyLnB1c2goZVtpXS5zbGljZSgwLGEpKX1yZXR1cm4gcn1mdW5jdGlvbiBlTihlLHQpe2xldCByLG49LTEsbz1bXTtmb3IoOysrbjxlLmxlbmd0aDspe2xldCBpO2xldCBhPWVbbl07aWYoInN0cmluZyI9PXR5cGVvZiBhKWk9YTtlbHNlIHN3aXRjaChhKXtjYXNlIC01Omk9IlxyIjticmVhaztjYXNlIC00Omk9IlxuIjticmVhaztjYXNlIC0zOmk9IlxyXG4iO2JyZWFrO2Nhc2UgLTI6aT10PyIgIjoiCSI7YnJlYWs7Y2FzZSAtMTppZighdCYmciljb250aW51ZTtpPSIgIjticmVhaztkZWZhdWx0Omk9U3RyaW5nLmZyb21DaGFyQ29kZShhKX1yPS0yPT09YSxvLnB1c2goaSl9cmV0dXJuIG8uam9pbigiIil9bGV0IGVJPXtuYW1lOiJ0aGVtYXRpY0JyZWFrIix0b2tlbml6ZTplUH07ZnVuY3Rpb24gZVAoZSx0LHIpe2xldCBuLG89MDtyZXR1cm4gaTtmdW5jdGlvbiBpKHQpe3JldHVybiBlLmVudGVyKCJ0aGVtYXRpY0JyZWFrIiksYSh0KX1mdW5jdGlvbiBhKGUpe3JldHVybiBuPWUscyhlKX1mdW5jdGlvbiBzKGkpe3JldHVybiBpPT09bj8oZS5lbnRlcigidGhlbWF0aWNCcmVha1NlcXVlbmNlIiksbChpKSk6bz49MyYmKG51bGw9PT1pfHwoMCxlby5DaCkoaSkpPyhlLmV4aXQoInRoZW1hdGljQnJlYWsiKSx0KGkpKTpyKGkpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIHQ9PT1uPyhlLmNvbnN1bWUodCksbysrLGwpOihlLmV4aXQoInRoZW1hdGljQnJlYWtTZXF1ZW5jZSIpLCgwLGVvLnh6KSh0KT8oMCxlbi5mKShlLHMsIndoaXRlc3BhY2UiKSh0KTpzKHQpKX19bGV0IGVNPXtuYW1lOiJsaXN0Iix0b2tlbml6ZTplRixjb250aW51YXRpb246e3Rva2VuaXplOmVCfSxleGl0OmVVfSxlRD17dG9rZW5pemU6ZXoscGFydGlhbDohMH0sZUw9e3Rva2VuaXplOmVqLHBhcnRpYWw6ITB9O2Z1bmN0aW9uIGVGKGUsdCxyKXtsZXQgbj10aGlzLG89bi5ldmVudHNbbi5ldmVudHMubGVuZ3RoLTFdLGk9byYmImxpbmVQcmVmaXgiPT09b1sxXS50eXBlP29bMl0uc2xpY2VTZXJpYWxpemUob1sxXSwhMCkubGVuZ3RoOjAsYT0wO3JldHVybiBzO2Z1bmN0aW9uIHModCl7bGV0IG89bi5jb250YWluZXJTdGF0ZS50eXBlfHwoNDI9PT10fHw0Mz09PXR8fDQ1PT09dD8ibGlzdFVub3JkZXJlZCI6Imxpc3RPcmRlcmVkIik7aWYoImxpc3RVbm9yZGVyZWQiPT09bz8hbi5jb250YWluZXJTdGF0ZS5tYXJrZXJ8fHQ9PT1uLmNvbnRhaW5lclN0YXRlLm1hcmtlcjooMCxlby5wWSkodCkpe2lmKCFuLmNvbnRhaW5lclN0YXRlLnR5cGUmJihuLmNvbnRhaW5lclN0YXRlLnR5cGU9byxlLmVudGVyKG8se19jb250YWluZXI6ITB9KSksImxpc3RVbm9yZGVyZWQiPT09bylyZXR1cm4gZS5lbnRlcigibGlzdEl0ZW1QcmVmaXgiKSw0Mj09PXR8fDQ1PT09dD9lLmNoZWNrKGVJLHIsYykodCk6Yyh0KTtpZighbi5pbnRlcnJ1cHR8fDQ5PT09dClyZXR1cm4gZS5lbnRlcigibGlzdEl0ZW1QcmVmaXgiKSxlLmVudGVyKCJsaXN0SXRlbVZhbHVlIiksbCh0KX1yZXR1cm4gcih0KX1mdW5jdGlvbiBsKHQpe3JldHVybigwLGVvLnBZKSh0KSYmKythPDEwPyhlLmNvbnN1bWUodCksbCk6KCFuLmludGVycnVwdHx8YTwyKSYmKG4uY29udGFpbmVyU3RhdGUubWFya2VyP3Q9PT1uLmNvbnRhaW5lclN0YXRlLm1hcmtlcjo0MT09PXR8fDQ2PT09dCk/KGUuZXhpdCgibGlzdEl0ZW1WYWx1ZSIpLGModCkpOnIodCl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gZS5lbnRlcigibGlzdEl0ZW1NYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJsaXN0SXRlbU1hcmtlciIpLG4uY29udGFpbmVyU3RhdGUubWFya2VyPW4uY29udGFpbmVyU3RhdGUubWFya2VyfHx0LGUuY2hlY2soZXAudyxuLmludGVycnVwdD9yOnUsZS5hdHRlbXB0KGVELHAsZCkpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIG4uY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZT0hMCxpKysscChlKX1mdW5jdGlvbiBkKHQpe3JldHVybigwLGVvLnh6KSh0KT8oZS5lbnRlcigibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIikscCk6cih0KX1mdW5jdGlvbiBwKHIpe3JldHVybiBuLmNvbnRhaW5lclN0YXRlLnNpemU9aStuLnNsaWNlU2VyaWFsaXplKGUuZXhpdCgibGlzdEl0ZW1QcmVmaXgiKSwhMCkubGVuZ3RoLHQocil9fWZ1bmN0aW9uIGVCKGUsdCxyKXtsZXQgbj10aGlzO3JldHVybiBuLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3c9dm9pZCAwLGUuY2hlY2soZXAudyxvLGkpO2Z1bmN0aW9uIG8ocil7cmV0dXJuIG4uY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXM9bi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lc3x8bi5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lLCgwLGVuLmYpKGUsdCwibGlzdEl0ZW1JbmRlbnQiLG4uY29udGFpbmVyU3RhdGUuc2l6ZSsxKShyKX1mdW5jdGlvbiBpKHIpe3JldHVybiBuLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzfHwhKDAsZW8ueHopKHIpPyhuLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzPXZvaWQgMCxuLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmU9dm9pZCAwLGEocikpOihuLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzPXZvaWQgMCxuLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmU9dm9pZCAwLGUuYXR0ZW1wdChlTCx0LGEpKHIpKX1mdW5jdGlvbiBhKG8pe3JldHVybiBuLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3c9ITAsbi5pbnRlcnJ1cHQ9dm9pZCAwLCgwLGVuLmYpKGUsZS5hdHRlbXB0KGVNLHQsciksImxpbmVQcmVmaXgiLG4ucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKT92b2lkIDA6NCkobyl9fWZ1bmN0aW9uIGVqKGUsdCxyKXtsZXQgbj10aGlzO3JldHVybigwLGVuLmYpKGUsbywibGlzdEl0ZW1JbmRlbnQiLG4uY29udGFpbmVyU3RhdGUuc2l6ZSsxKTtmdW5jdGlvbiBvKGUpe2xldCBvPW4uZXZlbnRzW24uZXZlbnRzLmxlbmd0aC0xXTtyZXR1cm4gbyYmImxpc3RJdGVtSW5kZW50Ij09PW9bMV0udHlwZSYmb1syXS5zbGljZVNlcmlhbGl6ZShvWzFdLCEwKS5sZW5ndGg9PT1uLmNvbnRhaW5lclN0YXRlLnNpemU/dChlKTpyKGUpfX1mdW5jdGlvbiBlVShlKXtlLmV4aXQodGhpcy5jb250YWluZXJTdGF0ZS50eXBlKX1mdW5jdGlvbiBleihlLHQscil7bGV0IG49dGhpcztyZXR1cm4oMCxlbi5mKShlLG8sImxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSIsbi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo1KTtmdW5jdGlvbiBvKGUpe2xldCBvPW4uZXZlbnRzW24uZXZlbnRzLmxlbmd0aC0xXTtyZXR1cm4hKDAsZW8ueHopKGUpJiZvJiYibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIj09PW9bMV0udHlwZT90KGUpOnIoZSl9fWxldCBlRz17bmFtZToiYmxvY2tRdW90ZSIsdG9rZW5pemU6ZUgsY29udGludWF0aW9uOnt0b2tlbml6ZTplVn0sZXhpdDplcX07ZnVuY3Rpb24gZUgoZSx0LHIpe2xldCBuPXRoaXM7cmV0dXJuIG87ZnVuY3Rpb24gbyh0KXtpZig2Mj09PXQpe2xldCByPW4uY29udGFpbmVyU3RhdGU7cmV0dXJuIXIub3BlbiYmKGUuZW50ZXIoImJsb2NrUXVvdGUiLHtfY29udGFpbmVyOiEwfSksci5vcGVuPSEwKSxlLmVudGVyKCJibG9ja1F1b3RlUHJlZml4IiksZS5lbnRlcigiYmxvY2tRdW90ZU1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImJsb2NrUXVvdGVNYXJrZXIiKSxpfXJldHVybiByKHQpfWZ1bmN0aW9uIGkocil7cmV0dXJuKDAsZW8ueHopKHIpPyhlLmVudGVyKCJibG9ja1F1b3RlUHJlZml4V2hpdGVzcGFjZSIpLGUuY29uc3VtZShyKSxlLmV4aXQoImJsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlIiksZS5leGl0KCJibG9ja1F1b3RlUHJlZml4IiksdCk6KGUuZXhpdCgiYmxvY2tRdW90ZVByZWZpeCIpLHQocikpfX1mdW5jdGlvbiBlVihlLHQscil7bGV0IG49dGhpcztyZXR1cm4gbztmdW5jdGlvbiBvKHQpe3JldHVybigwLGVvLnh6KSh0KT8oMCxlbi5mKShlLGksImxpbmVQcmVmaXgiLG4ucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKT92b2lkIDA6NCkodCk6aSh0KX1mdW5jdGlvbiBpKG4pe3JldHVybiBlLmF0dGVtcHQoZUcsdCxyKShuKX19ZnVuY3Rpb24gZXEoZSl7ZS5leGl0KCJibG9ja1F1b3RlIil9ZnVuY3Rpb24gZVcoZSx0LHIsbixvLGksYSxzLGwpe2xldCBjPWx8fE51bWJlci5QT1NJVElWRV9JTkZJTklUWSx1PTA7cmV0dXJuIGQ7ZnVuY3Rpb24gZCh0KXtyZXR1cm4gNjA9PT10PyhlLmVudGVyKG4pLGUuZW50ZXIobyksZS5lbnRlcihpKSxlLmNvbnN1bWUodCksZS5leGl0KGkpLHApOm51bGw9PT10fHwzMj09PXR8fDQxPT09dHx8KDAsZW8uQXYpKHQpP3IodCk6KGUuZW50ZXIobiksZS5lbnRlcihhKSxlLmVudGVyKHMpLGUuZW50ZXIoImNodW5rU3RyaW5nIix7Y29udGVudFR5cGU6InN0cmluZyJ9KSxoKHQpKX1mdW5jdGlvbiBwKHIpe3JldHVybiA2Mj09PXI/KGUuZW50ZXIoaSksZS5jb25zdW1lKHIpLGUuZXhpdChpKSxlLmV4aXQobyksZS5leGl0KG4pLHQpOihlLmVudGVyKHMpLGUuZW50ZXIoImNodW5rU3RyaW5nIix7Y29udGVudFR5cGU6InN0cmluZyJ9KSxmKHIpKX1mdW5jdGlvbiBmKHQpe3JldHVybiA2Mj09PXQ/KGUuZXhpdCgiY2h1bmtTdHJpbmciKSxlLmV4aXQocykscCh0KSk6bnVsbD09PXR8fDYwPT09dHx8KDAsZW8uQ2gpKHQpP3IodCk6KGUuY29uc3VtZSh0KSw5Mj09PXQ/bTpmKX1mdW5jdGlvbiBtKHQpe3JldHVybiA2MD09PXR8fDYyPT09dHx8OTI9PT10PyhlLmNvbnN1bWUodCksZik6Zih0KX1mdW5jdGlvbiBoKG8pe3JldHVybiF1JiYobnVsbD09PW98fDQxPT09b3x8KDAsZW8uejMpKG8pKT8oZS5leGl0KCJjaHVua1N0cmluZyIpLGUuZXhpdChzKSxlLmV4aXQoYSksZS5leGl0KG4pLHQobykpOnU8YyYmNDA9PT1vPyhlLmNvbnN1bWUobyksdSsrLGgpOjQxPT09bz8oZS5jb25zdW1lKG8pLHUtLSxoKTpudWxsPT09b3x8MzI9PT1vfHw0MD09PW98fCgwLGVvLkF2KShvKT9yKG8pOihlLmNvbnN1bWUobyksOTI9PT1vP2c6aCl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gNDA9PT10fHw0MT09PXR8fDkyPT09dD8oZS5jb25zdW1lKHQpLGgpOmgodCl9fWZ1bmN0aW9uIGVZKGUsdCxyLG4sbyxpKXtsZXQgYTtsZXQgcz10aGlzLGw9MDtyZXR1cm4gYztmdW5jdGlvbiBjKHQpe3JldHVybiBlLmVudGVyKG4pLGUuZW50ZXIobyksZS5jb25zdW1lKHQpLGUuZXhpdChvKSxlLmVudGVyKGkpLHV9ZnVuY3Rpb24gdShjKXtyZXR1cm4gbD45OTl8fG51bGw9PT1jfHw5MT09PWN8fDkzPT09YyYmIWF8fDk0PT09YyYmIWwmJiJfaGlkZGVuRm9vdG5vdGVTdXBwb3J0ImluIHMucGFyc2VyLmNvbnN0cnVjdHM/cihjKTo5Mz09PWM/KGUuZXhpdChpKSxlLmVudGVyKG8pLGUuY29uc3VtZShjKSxlLmV4aXQobyksZS5leGl0KG4pLHQpOigwLGVvLkNoKShjKT8oZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShjKSxlLmV4aXQoImxpbmVFbmRpbmciKSx1KTooZS5lbnRlcigiY2h1bmtTdHJpbmciLHtjb250ZW50VHlwZToic3RyaW5nIn0pLGQoYykpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIG51bGw9PT10fHw5MT09PXR8fDkzPT09dHx8KDAsZW8uQ2gpKHQpfHxsKys+OTk5PyhlLmV4aXQoImNodW5rU3RyaW5nIiksdSh0KSk6KGUuY29uc3VtZSh0KSwhYSYmKGE9ISgwLGVvLnh6KSh0KSksOTI9PT10P3A6ZCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gOTE9PT10fHw5Mj09PXR8fDkzPT09dD8oZS5jb25zdW1lKHQpLGwrKyxkKTpkKHQpfX1mdW5jdGlvbiBlSyhlLHQscixuLG8saSl7bGV0IGE7cmV0dXJuIHM7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gMzQ9PT10fHwzOT09PXR8fDQwPT09dD8oZS5lbnRlcihuKSxlLmVudGVyKG8pLGUuY29uc3VtZSh0KSxlLmV4aXQobyksYT00MD09PXQ/NDE6dCxsKTpyKHQpfWZ1bmN0aW9uIGwocil7cmV0dXJuIHI9PT1hPyhlLmVudGVyKG8pLGUuY29uc3VtZShyKSxlLmV4aXQobyksZS5leGl0KG4pLHQpOihlLmVudGVyKGkpLGMocikpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQ9PT1hPyhlLmV4aXQoaSksbChhKSk6bnVsbD09PXQ/cih0KTooMCxlby5DaCkodCk/KGUuZW50ZXIoImxpbmVFbmRpbmciKSxlLmNvbnN1bWUodCksZS5leGl0KCJsaW5lRW5kaW5nIiksKDAsZW4uZikoZSxjLCJsaW5lUHJlZml4IikpOihlLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksdSh0KSl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdD09PWF8fG51bGw9PT10fHwoMCxlby5DaCkodCk/KGUuZXhpdCgiY2h1bmtTdHJpbmciKSxjKHQpKTooZS5jb25zdW1lKHQpLDkyPT09dD9kOnUpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQ9PT1hfHw5Mj09PXQ/KGUuY29uc3VtZSh0KSx1KTp1KHQpfX1mdW5jdGlvbiBlWihlLHQpe2xldCByO3JldHVybiBuO2Z1bmN0aW9uIG4obyl7cmV0dXJuKDAsZW8uQ2gpKG8pPyhlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKG8pLGUuZXhpdCgibGluZUVuZGluZyIpLHI9ITAsbik6KDAsZW8ueHopKG8pPygwLGVuLmYpKGUsbixyPyJsaW5lUHJlZml4IjoibGluZVN1ZmZpeCIpKG8pOnQobyl9fXZhciBlWD1yKCIxMTg0NyIpO2xldCBlUT17bmFtZToiZGVmaW5pdGlvbiIsdG9rZW5pemU6ZSR9LGVKPXt0b2tlbml6ZTplMCxwYXJ0aWFsOiEwfTtmdW5jdGlvbiBlJChlLHQscil7bGV0IG47bGV0IG89dGhpcztyZXR1cm4gaTtmdW5jdGlvbiBpKHQpe3JldHVybiBlLmVudGVyKCJkZWZpbml0aW9uIiksYSh0KX1mdW5jdGlvbiBhKHQpe3JldHVybiBlWS5jYWxsKG8sZSxzLHIsImRlZmluaXRpb25MYWJlbCIsImRlZmluaXRpb25MYWJlbE1hcmtlciIsImRlZmluaXRpb25MYWJlbFN0cmluZyIpKHQpfWZ1bmN0aW9uIHModCl7cmV0dXJuKG49KDAsZVguZCkoby5zbGljZVNlcmlhbGl6ZShvLmV2ZW50c1tvLmV2ZW50cy5sZW5ndGgtMV1bMV0pLnNsaWNlKDEsLTEpKSw1OD09PXQpPyhlLmVudGVyKCJkZWZpbml0aW9uTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgiZGVmaW5pdGlvbk1hcmtlciIpLGwpOnIodCl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4oMCxlby56MykodCk/ZVooZSxjKSh0KTpjKHQpfWZ1bmN0aW9uIGModCl7cmV0dXJuIGVXKGUsdSxyLCJkZWZpbml0aW9uRGVzdGluYXRpb24iLCJkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsIiwiZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlciIsImRlZmluaXRpb25EZXN0aW5hdGlvblJhdyIsImRlZmluaXRpb25EZXN0aW5hdGlvblN0cmluZyIpKHQpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIGUuYXR0ZW1wdChlSixkLGQpKHQpfWZ1bmN0aW9uIGQodCl7cmV0dXJuKDAsZW8ueHopKHQpPygwLGVuLmYpKGUscCwid2hpdGVzcGFjZSIpKHQpOnAodCl9ZnVuY3Rpb24gcChpKXtyZXR1cm4gbnVsbD09PWl8fCgwLGVvLkNoKShpKT8oZS5leGl0KCJkZWZpbml0aW9uIiksby5wYXJzZXIuZGVmaW5lZC5wdXNoKG4pLHQoaSkpOnIoaSl9fWZ1bmN0aW9uIGUwKGUsdCxyKXtyZXR1cm4gbjtmdW5jdGlvbiBuKHQpe3JldHVybigwLGVvLnozKSh0KT9lWihlLG8pKHQpOnIodCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZUsoZSxpLHIsImRlZmluaXRpb25UaXRsZSIsImRlZmluaXRpb25UaXRsZU1hcmtlciIsImRlZmluaXRpb25UaXRsZVN0cmluZyIpKHQpfWZ1bmN0aW9uIGkodCl7cmV0dXJuKDAsZW8ueHopKHQpPygwLGVuLmYpKGUsYSwid2hpdGVzcGFjZSIpKHQpOmEodCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gbnVsbD09PWV8fCgwLGVvLkNoKShlKT90KGUpOnIoZSl9fWxldCBlMT17bmFtZToiY29kZUluZGVudGVkIix0b2tlbml6ZTplM30sZTI9e3Rva2VuaXplOmU1LHBhcnRpYWw6ITB9O2Z1bmN0aW9uIGUzKGUsdCxyKXtsZXQgbj10aGlzO3JldHVybiBvO2Z1bmN0aW9uIG8odCl7cmV0dXJuIGUuZW50ZXIoImNvZGVJbmRlbnRlZCIpLCgwLGVuLmYpKGUsaSwibGluZVByZWZpeCIsNSkodCl9ZnVuY3Rpb24gaShlKXtsZXQgdD1uLmV2ZW50c1tuLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIHQmJiJsaW5lUHJlZml4Ij09PXRbMV0udHlwZSYmdFsyXS5zbGljZVNlcmlhbGl6ZSh0WzFdLCEwKS5sZW5ndGg+PTQ/YShlKTpyKGUpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIG51bGw9PT10P2wodCk6KDAsZW8uQ2gpKHQpP2UuYXR0ZW1wdChlMixhLGwpKHQpOihlLmVudGVyKCJjb2RlRmxvd1ZhbHVlIikscyh0KSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbD09PXR8fCgwLGVvLkNoKSh0KT8oZS5leGl0KCJjb2RlRmxvd1ZhbHVlIiksYSh0KSk6KGUuY29uc3VtZSh0KSxzKX1mdW5jdGlvbiBsKHIpe3JldHVybiBlLmV4aXQoImNvZGVJbmRlbnRlZCIpLHQocil9fWZ1bmN0aW9uIGU1KGUsdCxyKXtsZXQgbj10aGlzO3JldHVybiBvO2Z1bmN0aW9uIG8odCl7cmV0dXJuIG4ucGFyc2VyLmxhenlbbi5ub3coKS5saW5lXT9yKHQpOigwLGVvLkNoKSh0KT8oZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxpbmVFbmRpbmciKSxvKTooMCxlbi5mKShlLGksImxpbmVQcmVmaXgiLDUpKHQpfWZ1bmN0aW9uIGkoZSl7bGV0IGk9bi5ldmVudHNbbi5ldmVudHMubGVuZ3RoLTFdO3JldHVybiBpJiYibGluZVByZWZpeCI9PT1pWzFdLnR5cGUmJmlbMl0uc2xpY2VTZXJpYWxpemUoaVsxXSwhMCkubGVuZ3RoPj00P3QoZSk6KDAsZW8uQ2gpKGUpP28oZSk6cihlKX19bGV0IGU2PXtuYW1lOiJoZWFkaW5nQXR4Iix0b2tlbml6ZTplOCxyZXNvbHZlOmU0fTtmdW5jdGlvbiBlNChlLHQpe2xldCByLG4sbz1lLmxlbmd0aC0yLGk9MztyZXR1cm4id2hpdGVzcGFjZSI9PT1lWzNdWzFdLnR5cGUmJihpKz0yKSxvLTI+aSYmIndoaXRlc3BhY2UiPT09ZVtvXVsxXS50eXBlJiYoby09MiksImF0eEhlYWRpbmdTZXF1ZW5jZSI9PT1lW29dWzFdLnR5cGUmJihpPT09by0xfHxvLTQ+aSYmIndoaXRlc3BhY2UiPT09ZVtvLTJdWzFdLnR5cGUpJiYoby09aSsxPT09bz8yOjQpLG8+aSYmKHI9e3R5cGU6ImF0eEhlYWRpbmdUZXh0IixzdGFydDplW2ldWzFdLnN0YXJ0LGVuZDplW29dWzFdLmVuZH0sbj17dHlwZToiY2h1bmtUZXh0IixzdGFydDplW2ldWzFdLnN0YXJ0LGVuZDplW29dWzFdLmVuZCxjb250ZW50VHlwZToidGV4dCJ9LCgwLGVzLmQpKGUsaSxvLWkrMSxbWyJlbnRlciIscix0XSxbImVudGVyIixuLHRdLFsiZXhpdCIsbix0XSxbImV4aXQiLHIsdF1dKSksZX1mdW5jdGlvbiBlOChlLHQscil7bGV0IG49MDtyZXR1cm4gbztmdW5jdGlvbiBvKHQpe3JldHVybiBlLmVudGVyKCJhdHhIZWFkaW5nIiksaSh0KX1mdW5jdGlvbiBpKHQpe3JldHVybiBlLmVudGVyKCJhdHhIZWFkaW5nU2VxdWVuY2UiKSxhKHQpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIDM1PT09dCYmbisrPDY/KGUuY29uc3VtZSh0KSxhKTpudWxsPT09dHx8KDAsZW8uejMpKHQpPyhlLmV4aXQoImF0eEhlYWRpbmdTZXF1ZW5jZSIpLHModCkpOnIodCl9ZnVuY3Rpb24gcyhyKXtyZXR1cm4gMzU9PT1yPyhlLmVudGVyKCJhdHhIZWFkaW5nU2VxdWVuY2UiKSxsKHIpKTpudWxsPT09cnx8KDAsZW8uQ2gpKHIpPyhlLmV4aXQoImF0eEhlYWRpbmciKSx0KHIpKTooMCxlby54eikocik/KDAsZW4uZikoZSxzLCJ3aGl0ZXNwYWNlIikocik6KGUuZW50ZXIoImF0eEhlYWRpbmdUZXh0IiksYyhyKSl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gMzU9PT10PyhlLmNvbnN1bWUodCksbCk6KGUuZXhpdCgiYXR4SGVhZGluZ1NlcXVlbmNlIikscyh0KSl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gbnVsbD09PXR8fDM1PT09dHx8KDAsZW8uejMpKHQpPyhlLmV4aXQoImF0eEhlYWRpbmdUZXh0Iikscyh0KSk6KGUuY29uc3VtZSh0KSxjKX19bGV0IGU5PXtuYW1lOiJzZXRleHRVbmRlcmxpbmUiLHRva2VuaXplOnRlLHJlc29sdmVUbzplN307ZnVuY3Rpb24gZTcoZSx0KXtsZXQgcixuLG8saT1lLmxlbmd0aDtmb3IoO2ktLTspaWYoImVudGVyIj09PWVbaV1bMF0pe2lmKCJjb250ZW50Ij09PWVbaV1bMV0udHlwZSl7cj1pO2JyZWFrfSJwYXJhZ3JhcGgiPT09ZVtpXVsxXS50eXBlJiYobj1pKX1lbHNlImNvbnRlbnQiPT09ZVtpXVsxXS50eXBlJiZlLnNwbGljZShpLDEpLCFvJiYiZGVmaW5pdGlvbiI9PT1lW2ldWzFdLnR5cGUmJihvPWkpO2xldCBhPXt0eXBlOiJzZXRleHRIZWFkaW5nIixzdGFydDpPYmplY3QuYXNzaWduKHt9LGVbbl1bMV0uc3RhcnQpLGVuZDpPYmplY3QuYXNzaWduKHt9LGVbZS5sZW5ndGgtMV1bMV0uZW5kKX07cmV0dXJuIGVbbl1bMV0udHlwZT0ic2V0ZXh0SGVhZGluZ1RleHQiLG8/KGUuc3BsaWNlKG4sMCxbImVudGVyIixhLHRdKSxlLnNwbGljZShvKzEsMCxbImV4aXQiLGVbcl1bMV0sdF0pLGVbcl1bMV0uZW5kPU9iamVjdC5hc3NpZ24oe30sZVtvXVsxXS5lbmQpKTplW3JdWzFdPWEsZS5wdXNoKFsiZXhpdCIsYSx0XSksZX1mdW5jdGlvbiB0ZShlLHQscil7bGV0IG47bGV0IG89dGhpcztyZXR1cm4gaTtmdW5jdGlvbiBpKHQpe2xldCBpLHM9by5ldmVudHMubGVuZ3RoO2Zvcig7cy0tOylpZigibGluZUVuZGluZyIhPT1vLmV2ZW50c1tzXVsxXS50eXBlJiYibGluZVByZWZpeCIhPT1vLmV2ZW50c1tzXVsxXS50eXBlJiYiY29udGVudCIhPT1vLmV2ZW50c1tzXVsxXS50eXBlKXtpPSJwYXJhZ3JhcGgiPT09by5ldmVudHNbc11bMV0udHlwZTticmVha31yZXR1cm4hby5wYXJzZXIubGF6eVtvLm5vdygpLmxpbmVdJiYoby5pbnRlcnJ1cHR8fGkpPyhlLmVudGVyKCJzZXRleHRIZWFkaW5nTGluZSIpLG49dCxhKHQpKTpyKHQpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIGUuZW50ZXIoInNldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2UiKSxzKHQpfWZ1bmN0aW9uIHModCl7cmV0dXJuIHQ9PT1uPyhlLmNvbnN1bWUodCkscyk6KGUuZXhpdCgic2V0ZXh0SGVhZGluZ0xpbmVTZXF1ZW5jZSIpLCgwLGVvLnh6KSh0KT8oMCxlbi5mKShlLGwsImxpbmVTdWZmaXgiKSh0KTpsKHQpKX1mdW5jdGlvbiBsKG4pe3JldHVybiBudWxsPT09bnx8KDAsZW8uQ2gpKG4pPyhlLmV4aXQoInNldGV4dEhlYWRpbmdMaW5lIiksdChuKSk6cihuKX19bGV0IHR0PVsiYWRkcmVzcyIsImFydGljbGUiLCJhc2lkZSIsImJhc2UiLCJiYXNlZm9udCIsImJsb2NrcXVvdGUiLCJib2R5IiwiY2FwdGlvbiIsImNlbnRlciIsImNvbCIsImNvbGdyb3VwIiwiZGQiLCJkZXRhaWxzIiwiZGlhbG9nIiwiZGlyIiwiZGl2IiwiZGwiLCJkdCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJmcmFtZSIsImZyYW1lc2V0IiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhyIiwiaHRtbCIsImlmcmFtZSIsImxlZ2VuZCIsImxpIiwibGluayIsIm1haW4iLCJtZW51IiwibWVudWl0ZW0iLCJuYXYiLCJub2ZyYW1lcyIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJwIiwicGFyYW0iLCJzZWFyY2giLCJzZWN0aW9uIiwic3VtbWFyeSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ0cmFjayIsInVsIl0sdHI9WyJwcmUiLCJzY3JpcHQiLCJzdHlsZSIsInRleHRhcmVhIl0sdG49e25hbWU6Imh0bWxGbG93Iix0b2tlbml6ZTp0cyxyZXNvbHZlVG86dGEsY29uY3JldGU6ITB9LHRvPXt0b2tlbml6ZTp0YyxwYXJ0aWFsOiEwfSx0aT17dG9rZW5pemU6dGwscGFydGlhbDohMH07ZnVuY3Rpb24gdGEoZSl7bGV0IHQ9ZS5sZW5ndGg7Zm9yKDt0LS0mJigiZW50ZXIiIT09ZVt0XVswXXx8Imh0bWxGbG93IiE9PWVbdF1bMV0udHlwZSk7KTtyZXR1cm4gdD4xJiYibGluZVByZWZpeCI9PT1lW3QtMl1bMV0udHlwZSYmKGVbdF1bMV0uc3RhcnQ9ZVt0LTJdWzFdLnN0YXJ0LGVbdCsxXVsxXS5zdGFydD1lW3QtMl1bMV0uc3RhcnQsZS5zcGxpY2UodC0yLDIpKSxlfWZ1bmN0aW9uIHRzKGUsdCxyKXtsZXQgbixvLGksYSxzO2xldCBsPXRoaXM7cmV0dXJuIGM7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gdShlKX1mdW5jdGlvbiB1KHQpe3JldHVybiBlLmVudGVyKCJodG1sRmxvdyIpLGUuZW50ZXIoImh0bWxGbG93RGF0YSIpLGUuY29uc3VtZSh0KSxkfWZ1bmN0aW9uIGQoYSl7cmV0dXJuIDMzPT09YT8oZS5jb25zdW1lKGEpLHApOjQ3PT09YT8oZS5jb25zdW1lKGEpLG89ITAsaCk6NjM9PT1hPyhlLmNvbnN1bWUoYSksbj0zLGwuaW50ZXJydXB0P3Q6TCk6KDAsZW8uanYpKGEpPyhlLmNvbnN1bWUoYSksaT1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpLGcpOnIoYSl9ZnVuY3Rpb24gcChvKXtyZXR1cm4gNDU9PT1vPyhlLmNvbnN1bWUobyksbj0yLGYpOjkxPT09bz8oZS5jb25zdW1lKG8pLG49NSxhPTAsbSk6KDAsZW8uanYpKG8pPyhlLmNvbnN1bWUobyksbj00LGwuaW50ZXJydXB0P3Q6TCk6cihvKX1mdW5jdGlvbiBmKG4pe3JldHVybiA0NT09PW4/KGUuY29uc3VtZShuKSxsLmludGVycnVwdD90OkwpOnIobil9ZnVuY3Rpb24gbShuKXtsZXQgbz0iQ0RBVEFbIjtpZihuPT09by5jaGFyQ29kZUF0KGErKykpcmV0dXJuKGUuY29uc3VtZShuKSxhPT09by5sZW5ndGgpP2wuaW50ZXJydXB0P3Q6azptO3JldHVybiByKG4pfWZ1bmN0aW9uIGgodCl7cmV0dXJuKDAsZW8uanYpKHQpPyhlLmNvbnN1bWUodCksaT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpLGcpOnIodCl9ZnVuY3Rpb24gZyhhKXtpZihudWxsPT09YXx8NDc9PT1hfHw2Mj09PWF8fCgwLGVvLnozKShhKSl7bGV0IHM9NDc9PT1hLGM9aS50b0xvd2VyQ2FzZSgpO2lmKCFzJiYhbyYmdHIuaW5jbHVkZXMoYykpcmV0dXJuIG49MSxsLmludGVycnVwdD90KGEpOmsoYSk7aWYodHQuaW5jbHVkZXMoaS50b0xvd2VyQ2FzZSgpKSlyZXR1cm4obj02LHMpPyhlLmNvbnN1bWUoYSksYik6bC5pbnRlcnJ1cHQ/dChhKTprKGEpO3JldHVybiBuPTcsbC5pbnRlcnJ1cHQmJiFsLnBhcnNlci5sYXp5W2wubm93KCkubGluZV0/cihhKTpvP3YoYSk6eShhKX1yZXR1cm4gNDU9PT1hfHwoMCxlby5IJCkoYSk/KGUuY29uc3VtZShhKSxpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpLGcpOnIoYSl9ZnVuY3Rpb24gYihuKXtyZXR1cm4gNjI9PT1uPyhlLmNvbnN1bWUobiksbC5pbnRlcnJ1cHQ/dDprKTpyKG4pfWZ1bmN0aW9uIHYodCl7cmV0dXJuKDAsZW8ueHopKHQpPyhlLmNvbnN1bWUodCksdik6QSh0KX1mdW5jdGlvbiB5KHQpe3JldHVybiA0Nz09PXQ/KGUuY29uc3VtZSh0KSxBKTo1OD09PXR8fDk1PT09dHx8KDAsZW8uanYpKHQpPyhlLmNvbnN1bWUodCksRSk6KDAsZW8ueHopKHQpPyhlLmNvbnN1bWUodCkseSk6QSh0KX1mdW5jdGlvbiBFKHQpe3JldHVybiA0NT09PXR8fDQ2PT09dHx8NTg9PT10fHw5NT09PXR8fCgwLGVvLkgkKSh0KT8oZS5jb25zdW1lKHQpLEUpOl8odCl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gNjE9PT10PyhlLmNvbnN1bWUodCksUyk6KDAsZW8ueHopKHQpPyhlLmNvbnN1bWUodCksXyk6eSh0KX1mdW5jdGlvbiBTKHQpe3JldHVybiBudWxsPT09dHx8NjA9PT10fHw2MT09PXR8fDYyPT09dHx8OTY9PT10P3IodCk6MzQ9PT10fHwzOT09PXQ/KGUuY29uc3VtZSh0KSxzPXQsdyk6KDAsZW8ueHopKHQpPyhlLmNvbnN1bWUodCksUyk6eCh0KX1mdW5jdGlvbiB3KHQpe3JldHVybiB0PT09cz8oZS5jb25zdW1lKHQpLHM9bnVsbCxUKTpudWxsPT09dHx8KDAsZW8uQ2gpKHQpP3IodCk6KGUuY29uc3VtZSh0KSx3KX1mdW5jdGlvbiB4KHQpe3JldHVybiBudWxsPT09dHx8MzQ9PT10fHwzOT09PXR8fDQ3PT09dHx8NjA9PT10fHw2MT09PXR8fDYyPT09dHx8OTY9PT10fHwoMCxlby56MykodCk/Xyh0KTooZS5jb25zdW1lKHQpLHgpfWZ1bmN0aW9uIFQoZSl7cmV0dXJuIDQ3PT09ZXx8NjI9PT1lfHwoMCxlby54eikoZSk/eShlKTpyKGUpfWZ1bmN0aW9uIEEodCl7cmV0dXJuIDYyPT09dD8oZS5jb25zdW1lKHQpLEMpOnIodCl9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gbnVsbD09PXR8fCgwLGVvLkNoKSh0KT9rKHQpOigwLGVvLnh6KSh0KT8oZS5jb25zdW1lKHQpLEMpOnIodCl9ZnVuY3Rpb24gayh0KXtyZXR1cm4gNDU9PT10JiYyPT09bj8oZS5jb25zdW1lKHQpLEkpOjYwPT09dCYmMT09PW4/KGUuY29uc3VtZSh0KSxQKTo2Mj09PXQmJjQ9PT1uPyhlLmNvbnN1bWUodCksRik6NjM9PT10JiYzPT09bj8oZS5jb25zdW1lKHQpLEwpOjkzPT09dCYmNT09PW4/KGUuY29uc3VtZSh0KSxEKTooMCxlby5DaCkodCkmJig2PT09bnx8Nz09PW4pPyhlLmV4aXQoImh0bWxGbG93RGF0YSIpLGUuY2hlY2sodG8sQixPKSh0KSk6bnVsbD09PXR8fCgwLGVvLkNoKSh0KT8oZS5leGl0KCJodG1sRmxvd0RhdGEiKSxPKHQpKTooZS5jb25zdW1lKHQpLGspfWZ1bmN0aW9uIE8odCl7cmV0dXJuIGUuY2hlY2sodGksUixCKSh0KX1mdW5jdGlvbiBSKHQpe3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLE59ZnVuY3Rpb24gTih0KXtyZXR1cm4gbnVsbD09PXR8fCgwLGVvLkNoKSh0KT9PKHQpOihlLmVudGVyKCJodG1sRmxvd0RhdGEiKSxrKHQpKX1mdW5jdGlvbiBJKHQpe3JldHVybiA0NT09PXQ/KGUuY29uc3VtZSh0KSxMKTprKHQpfWZ1bmN0aW9uIFAodCl7cmV0dXJuIDQ3PT09dD8oZS5jb25zdW1lKHQpLGk9IiIsTSk6ayh0KX1mdW5jdGlvbiBNKHQpe2lmKDYyPT09dCl7bGV0IHI9aS50b0xvd2VyQ2FzZSgpO3JldHVybiB0ci5pbmNsdWRlcyhyKT8oZS5jb25zdW1lKHQpLEYpOmsodCl9cmV0dXJuKDAsZW8uanYpKHQpJiZpLmxlbmd0aDw4PyhlLmNvbnN1bWUodCksaSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KSxNKTprKHQpfWZ1bmN0aW9uIEQodCl7cmV0dXJuIDkzPT09dD8oZS5jb25zdW1lKHQpLEwpOmsodCl9ZnVuY3Rpb24gTCh0KXtyZXR1cm4gNjI9PT10PyhlLmNvbnN1bWUodCksRik6NDU9PT10JiYyPT09bj8oZS5jb25zdW1lKHQpLEwpOmsodCl9ZnVuY3Rpb24gRih0KXtyZXR1cm4gbnVsbD09PXR8fCgwLGVvLkNoKSh0KT8oZS5leGl0KCJodG1sRmxvd0RhdGEiKSxCKHQpKTooZS5jb25zdW1lKHQpLEYpfWZ1bmN0aW9uIEIocil7cmV0dXJuIGUuZXhpdCgiaHRtbEZsb3ciKSx0KHIpfX1mdW5jdGlvbiB0bChlLHQscil7bGV0IG49dGhpcztyZXR1cm4gbztmdW5jdGlvbiBvKHQpe3JldHVybigwLGVvLkNoKSh0KT8oZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxpbmVFbmRpbmciKSxpKTpyKHQpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG4ucGFyc2VyLmxhenlbbi5ub3coKS5saW5lXT9yKGUpOnQoZSl9fWZ1bmN0aW9uIHRjKGUsdCxyKXtyZXR1cm4gbjtmdW5jdGlvbiBuKG4pe3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKG4pLGUuZXhpdCgibGluZUVuZGluZyIpLGUuYXR0ZW1wdChlcC53LHQscil9fWxldCB0dT17dG9rZW5pemU6dGYscGFydGlhbDohMH0sdGQ9e25hbWU6ImNvZGVGZW5jZWQiLHRva2VuaXplOnRwLGNvbmNyZXRlOiEwfTtmdW5jdGlvbiB0cChlLHQscil7bGV0IG47bGV0IG89dGhpcyxpPXt0b2tlbml6ZTpfLHBhcnRpYWw6ITB9LGE9MCxzPTA7cmV0dXJuIGw7ZnVuY3Rpb24gbChlKXtyZXR1cm4gYyhlKX1mdW5jdGlvbiBjKHQpe2xldCByPW8uZXZlbnRzW28uZXZlbnRzLmxlbmd0aC0xXTtyZXR1cm4gYT1yJiYibGluZVByZWZpeCI9PT1yWzFdLnR5cGU/clsyXS5zbGljZVNlcmlhbGl6ZShyWzFdLCEwKS5sZW5ndGg6MCxuPXQsZS5lbnRlcigiY29kZUZlbmNlZCIpLGUuZW50ZXIoImNvZGVGZW5jZWRGZW5jZSIpLGUuZW50ZXIoImNvZGVGZW5jZWRGZW5jZVNlcXVlbmNlIiksdSh0KX1mdW5jdGlvbiB1KHQpe3JldHVybiB0PT09bj8ocysrLGUuY29uc3VtZSh0KSx1KTpzPDM/cih0KTooZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLCgwLGVvLnh6KSh0KT8oMCxlbi5mKShlLGQsIndoaXRlc3BhY2UiKSh0KTpkKHQpKX1mdW5jdGlvbiBkKHIpe3JldHVybiBudWxsPT09cnx8KDAsZW8uQ2gpKHIpPyhlLmV4aXQoImNvZGVGZW5jZWRGZW5jZSIpLG8uaW50ZXJydXB0P3Qocik6ZS5jaGVjayh0dSxoLEUpKHIpKTooZS5lbnRlcigiY29kZUZlbmNlZEZlbmNlSW5mbyIpLGUuZW50ZXIoImNodW5rU3RyaW5nIix7Y29udGVudFR5cGU6InN0cmluZyJ9KSxwKHIpKX1mdW5jdGlvbiBwKHQpe3JldHVybiBudWxsPT09dHx8KDAsZW8uQ2gpKHQpPyhlLmV4aXQoImNodW5rU3RyaW5nIiksZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VJbmZvIiksZCh0KSk6KDAsZW8ueHopKHQpPyhlLmV4aXQoImNodW5rU3RyaW5nIiksZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VJbmZvIiksKDAsZW4uZikoZSxmLCJ3aGl0ZXNwYWNlIikodCkpOjk2PT09dCYmdD09PW4/cih0KTooZS5jb25zdW1lKHQpLHApfWZ1bmN0aW9uIGYodCl7cmV0dXJuIG51bGw9PT10fHwoMCxlby5DaCkodCk/ZCh0KTooZS5lbnRlcigiY29kZUZlbmNlZEZlbmNlTWV0YSIpLGUuZW50ZXIoImNodW5rU3RyaW5nIix7Y29udGVudFR5cGU6InN0cmluZyJ9KSxtKHQpKX1mdW5jdGlvbiBtKHQpe3JldHVybiBudWxsPT09dHx8KDAsZW8uQ2gpKHQpPyhlLmV4aXQoImNodW5rU3RyaW5nIiksZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VNZXRhIiksZCh0KSk6OTY9PT10JiZ0PT09bj9yKHQpOihlLmNvbnN1bWUodCksbSl9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gZS5hdHRlbXB0KGksRSxnKSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLGJ9ZnVuY3Rpb24gYih0KXtyZXR1cm4gYT4wJiYoMCxlby54eikodCk/KDAsZW4uZikoZSx2LCJsaW5lUHJlZml4IixhKzEpKHQpOnYodCl9ZnVuY3Rpb24gdih0KXtyZXR1cm4gbnVsbD09PXR8fCgwLGVvLkNoKSh0KT9lLmNoZWNrKHR1LGgsRSkodCk6KGUuZW50ZXIoImNvZGVGbG93VmFsdWUiKSx5KHQpKX1mdW5jdGlvbiB5KHQpe3JldHVybiBudWxsPT09dHx8KDAsZW8uQ2gpKHQpPyhlLmV4aXQoImNvZGVGbG93VmFsdWUiKSx2KHQpKTooZS5jb25zdW1lKHQpLHkpfWZ1bmN0aW9uIEUocil7cmV0dXJuIGUuZXhpdCgiY29kZUZlbmNlZCIpLHQocil9ZnVuY3Rpb24gXyhlLHQscil7bGV0IGk9MDtyZXR1cm4gYTtmdW5jdGlvbiBhKHQpe3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLGx9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gZS5lbnRlcigiY29kZUZlbmNlZEZlbmNlIiksKDAsZW8ueHopKHQpPygwLGVuLmYpKGUsYywibGluZVByZWZpeCIsby5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KSh0KTpjKHQpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQ9PT1uPyhlLmVudGVyKCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLHUodCkpOnIodCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdD09PW4/KGkrKyxlLmNvbnN1bWUodCksdSk6aT49cz8oZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLCgwLGVvLnh6KSh0KT8oMCxlbi5mKShlLGQsIndoaXRlc3BhY2UiKSh0KTpkKHQpKTpyKHQpfWZ1bmN0aW9uIGQobil7cmV0dXJuIG51bGw9PT1ufHwoMCxlby5DaCkobik/KGUuZXhpdCgiY29kZUZlbmNlZEZlbmNlIiksdChuKSk6cihuKX19fWZ1bmN0aW9uIHRmKGUsdCxyKXtsZXQgbj10aGlzO3JldHVybiBvO2Z1bmN0aW9uIG8odCl7cmV0dXJuIG51bGw9PT10P3IodCk6KGUuZW50ZXIoImxpbmVFbmRpbmciKSxlLmNvbnN1bWUodCksZS5leGl0KCJsaW5lRW5kaW5nIiksaSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gbi5wYXJzZXIubGF6eVtuLm5vdygpLmxpbmVdP3IoZSk6dChlKX19dmFyIHRtPXIoIjQyODM1Iik7bGV0IHRoPXtuYW1lOiJjaGFyYWN0ZXJSZWZlcmVuY2UiLHRva2VuaXplOnRnfTtmdW5jdGlvbiB0ZyhlLHQscil7bGV0IG4sbztsZXQgaT10aGlzLGE9MDtyZXR1cm4gcztmdW5jdGlvbiBzKHQpe3JldHVybiBlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2UiKSxlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXIiKSxsfWZ1bmN0aW9uIGwodCl7cmV0dXJuIDM1PT09dD8oZS5lbnRlcigiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYyIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWMiKSxjKTooZS5lbnRlcigiY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUiKSxuPTMxLG89ZW8uSCQsdSh0KSl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gODg9PT10fHwxMjA9PT10PyhlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbCIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlckhleGFkZWNpbWFsIiksZS5lbnRlcigiY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUiKSxuPTYsbz1lby5BRix1KTooZS5lbnRlcigiY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUiKSxuPTcsbz1lby5wWSx1KHQpKX1mdW5jdGlvbiB1KHMpe2lmKDU5PT09cyYmYSl7bGV0IG49ZS5leGl0KCJjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZSIpO3JldHVybiBvIT09ZW8uSCR8fCgwLHRtLlQpKGkuc2xpY2VTZXJpYWxpemUobikpPyhlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXIiKSxlLmNvbnN1bWUocyksZS5leGl0KCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXIiKSxlLmV4aXQoImNoYXJhY3RlclJlZmVyZW5jZSIpLHQpOnIocyl9cmV0dXJuIG8ocykmJmErKzxuPyhlLmNvbnN1bWUocyksdSk6cihzKX19bGV0IHRiPXtuYW1lOiJjaGFyYWN0ZXJFc2NhcGUiLHRva2VuaXplOnR2fTtmdW5jdGlvbiB0dihlLHQscil7cmV0dXJuIG47ZnVuY3Rpb24gbih0KXtyZXR1cm4gZS5lbnRlcigiY2hhcmFjdGVyRXNjYXBlIiksZS5lbnRlcigiZXNjYXBlTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgiZXNjYXBlTWFya2VyIiksb31mdW5jdGlvbiBvKG4pe3JldHVybigwLGVvLnNSKShuKT8oZS5lbnRlcigiY2hhcmFjdGVyRXNjYXBlVmFsdWUiKSxlLmNvbnN1bWUobiksZS5leGl0KCJjaGFyYWN0ZXJFc2NhcGVWYWx1ZSIpLGUuZXhpdCgiY2hhcmFjdGVyRXNjYXBlIiksdCk6cihuKX19bGV0IHR5PXtuYW1lOiJsaW5lRW5kaW5nIix0b2tlbml6ZTp0RX07ZnVuY3Rpb24gdEUoZSx0KXtyZXR1cm4gcjtmdW5jdGlvbiByKHIpe3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHIpLGUuZXhpdCgibGluZUVuZGluZyIpLCgwLGVuLmYpKGUsdCwibGluZVByZWZpeCIpfX1sZXQgdF89e25hbWU6ImxhYmVsRW5kIix0b2tlbml6ZTp0QyxyZXNvbHZlVG86dEEscmVzb2x2ZUFsbDp0VH0sdFM9e3Rva2VuaXplOnRrfSx0dz17dG9rZW5pemU6dE99LHR4PXt0b2tlbml6ZTp0Un07ZnVuY3Rpb24gdFQoZSl7bGV0IHQ9LTE7Zm9yKDsrK3Q8ZS5sZW5ndGg7KXtsZXQgcj1lW3RdWzFdOygibGFiZWxJbWFnZSI9PT1yLnR5cGV8fCJsYWJlbExpbmsiPT09ci50eXBlfHwibGFiZWxFbmQiPT09ci50eXBlKSYmKGUuc3BsaWNlKHQrMSwibGFiZWxJbWFnZSI9PT1yLnR5cGU/NDoyKSxyLnR5cGU9ImRhdGEiLHQrKyl9cmV0dXJuIGV9ZnVuY3Rpb24gdEEoZSx0KXtsZXQgcixuLG8saSxhPWUubGVuZ3RoLHM9MDtmb3IoO2EtLTspaWYocj1lW2FdWzFdLG4pe2lmKCJsaW5rIj09PXIudHlwZXx8ImxhYmVsTGluayI9PT1yLnR5cGUmJnIuX2luYWN0aXZlKWJyZWFrOyJlbnRlciI9PT1lW2FdWzBdJiYibGFiZWxMaW5rIj09PXIudHlwZSYmKHIuX2luYWN0aXZlPSEwKX1lbHNlIGlmKG8pe2lmKCJlbnRlciI9PT1lW2FdWzBdJiYoImxhYmVsSW1hZ2UiPT09ci50eXBlfHwibGFiZWxMaW5rIj09PXIudHlwZSkmJiFyLl9iYWxhbmNlZCYmKG49YSwibGFiZWxMaW5rIiE9PXIudHlwZSkpe3M9MjticmVha319ZWxzZSJsYWJlbEVuZCI9PT1yLnR5cGUmJihvPWEpO2xldCBsPXt0eXBlOiJsYWJlbExpbmsiPT09ZVtuXVsxXS50eXBlPyJsaW5rIjoiaW1hZ2UiLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sZVtuXVsxXS5zdGFydCksZW5kOk9iamVjdC5hc3NpZ24oe30sZVtlLmxlbmd0aC0xXVsxXS5lbmQpfSxjPXt0eXBlOiJsYWJlbCIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxlW25dWzFdLnN0YXJ0KSxlbmQ6T2JqZWN0LmFzc2lnbih7fSxlW29dWzFdLmVuZCl9LHU9e3R5cGU6ImxhYmVsVGV4dCIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxlW24rcysyXVsxXS5lbmQpLGVuZDpPYmplY3QuYXNzaWduKHt9LGVbby0yXVsxXS5zdGFydCl9O3JldHVybiBpPVtbImVudGVyIixsLHRdLFsiZW50ZXIiLGMsdF1dLGk9KDAsZXMuVikoaSxlLnNsaWNlKG4rMSxuK3MrMykpLGk9KDAsZXMuVikoaSxbWyJlbnRlciIsdSx0XV0pLGk9KDAsZXMuVikoaSwoMCxlay5DKSh0LnBhcnNlci5jb25zdHJ1Y3RzLmluc2lkZVNwYW4ubnVsbCxlLnNsaWNlKG4rcys0LG8tMyksdCkpLGk9KDAsZXMuVikoaSxbWyJleGl0Iix1LHRdLGVbby0yXSxlW28tMV0sWyJleGl0IixjLHRdXSksaT0oMCxlcy5WKShpLGUuc2xpY2UobysxKSksaT0oMCxlcy5WKShpLFtbImV4aXQiLGwsdF1dKSwoMCxlcy5kKShlLG4sZS5sZW5ndGgsaSksZX1mdW5jdGlvbiB0QyhlLHQscil7bGV0IG4sbztsZXQgaT10aGlzLGE9aS5ldmVudHMubGVuZ3RoO2Zvcig7YS0tOylpZigoImxhYmVsSW1hZ2UiPT09aS5ldmVudHNbYV1bMV0udHlwZXx8ImxhYmVsTGluayI9PT1pLmV2ZW50c1thXVsxXS50eXBlKSYmIWkuZXZlbnRzW2FdWzFdLl9iYWxhbmNlZCl7bj1pLmV2ZW50c1thXVsxXTticmVha31yZXR1cm4gcztmdW5jdGlvbiBzKHQpe3JldHVybiBuP24uX2luYWN0aXZlP2QodCk6KG89aS5wYXJzZXIuZGVmaW5lZC5pbmNsdWRlcygoMCxlWC5kKShpLnNsaWNlU2VyaWFsaXplKHtzdGFydDpuLmVuZCxlbmQ6aS5ub3coKX0pKSksZS5lbnRlcigibGFiZWxFbmQiKSxlLmVudGVyKCJsYWJlbE1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxhYmVsTWFya2VyIiksZS5leGl0KCJsYWJlbEVuZCIpLGwpOnIodCl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gNDA9PT10P2UuYXR0ZW1wdCh0Uyx1LG8/dTpkKSh0KTo5MT09PXQ/ZS5hdHRlbXB0KHR3LHUsbz9jOmQpKHQpOm8/dSh0KTpkKHQpfWZ1bmN0aW9uIGModCl7cmV0dXJuIGUuYXR0ZW1wdCh0eCx1LGQpKHQpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIHQoZSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gbi5fYmFsYW5jZWQ9ITAscihlKX19ZnVuY3Rpb24gdGsoZSx0LHIpe3JldHVybiBuO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGUuZW50ZXIoInJlc291cmNlIiksZS5lbnRlcigicmVzb3VyY2VNYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJyZXNvdXJjZU1hcmtlciIpLG99ZnVuY3Rpb24gbyh0KXtyZXR1cm4oMCxlby56MykodCk/ZVooZSxpKSh0KTppKHQpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIDQxPT09dD91KHQpOmVXKGUsYSxzLCJyZXNvdXJjZURlc3RpbmF0aW9uIiwicmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWwiLCJyZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlciIsInJlc291cmNlRGVzdGluYXRpb25SYXciLCJyZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nIiwzMikodCl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4oMCxlby56MykodCk/ZVooZSxsKSh0KTp1KHQpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHIoZSl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gMzQ9PT10fHwzOT09PXR8fDQwPT09dD9lSyhlLGMsciwicmVzb3VyY2VUaXRsZSIsInJlc291cmNlVGl0bGVNYXJrZXIiLCJyZXNvdXJjZVRpdGxlU3RyaW5nIikodCk6dSh0KX1mdW5jdGlvbiBjKHQpe3JldHVybigwLGVvLnozKSh0KT9lWihlLHUpKHQpOnUodCl9ZnVuY3Rpb24gdShuKXtyZXR1cm4gNDE9PT1uPyhlLmVudGVyKCJyZXNvdXJjZU1hcmtlciIpLGUuY29uc3VtZShuKSxlLmV4aXQoInJlc291cmNlTWFya2VyIiksZS5leGl0KCJyZXNvdXJjZSIpLHQpOnIobil9fWZ1bmN0aW9uIHRPKGUsdCxyKXtsZXQgbj10aGlzO3JldHVybiBvO2Z1bmN0aW9uIG8odCl7cmV0dXJuIGVZLmNhbGwobixlLGksYSwicmVmZXJlbmNlIiwicmVmZXJlbmNlTWFya2VyIiwicmVmZXJlbmNlU3RyaW5nIikodCl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gbi5wYXJzZXIuZGVmaW5lZC5pbmNsdWRlcygoMCxlWC5kKShuLnNsaWNlU2VyaWFsaXplKG4uZXZlbnRzW24uZXZlbnRzLmxlbmd0aC0xXVsxXSkuc2xpY2UoMSwtMSkpKT90KGUpOnIoZSl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gcihlKX19ZnVuY3Rpb24gdFIoZSx0LHIpe3JldHVybiBuO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGUuZW50ZXIoInJlZmVyZW5jZSIpLGUuZW50ZXIoInJlZmVyZW5jZU1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoInJlZmVyZW5jZU1hcmtlciIpLG99ZnVuY3Rpb24gbyhuKXtyZXR1cm4gOTM9PT1uPyhlLmVudGVyKCJyZWZlcmVuY2VNYXJrZXIiKSxlLmNvbnN1bWUobiksZS5leGl0KCJyZWZlcmVuY2VNYXJrZXIiKSxlLmV4aXQoInJlZmVyZW5jZSIpLHQpOnIobil9fWxldCB0Tj17bmFtZToibGFiZWxTdGFydEltYWdlIix0b2tlbml6ZTp0SSxyZXNvbHZlQWxsOnRfLnJlc29sdmVBbGx9O2Z1bmN0aW9uIHRJKGUsdCxyKXtsZXQgbj10aGlzO3JldHVybiBvO2Z1bmN0aW9uIG8odCl7cmV0dXJuIGUuZW50ZXIoImxhYmVsSW1hZ2UiKSxlLmVudGVyKCJsYWJlbEltYWdlTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGFiZWxJbWFnZU1hcmtlciIpLGl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gOTE9PT10PyhlLmVudGVyKCJsYWJlbE1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxhYmVsTWFya2VyIiksZS5leGl0KCJsYWJlbEltYWdlIiksYSk6cih0KX1mdW5jdGlvbiBhKGUpe3JldHVybiA5ND09PWUmJiJfaGlkZGVuRm9vdG5vdGVTdXBwb3J0ImluIG4ucGFyc2VyLmNvbnN0cnVjdHM/cihlKTp0KGUpfX12YXIgdFA9cigiMzcyNTkiKTtsZXQgdE09e25hbWU6ImF0dGVudGlvbiIsdG9rZW5pemU6dEwscmVzb2x2ZUFsbDp0RH07ZnVuY3Rpb24gdEQoZSx0KXtsZXQgcixuLG8saSxhLHMsbCxjLHU9LTE7Zm9yKDsrK3U8ZS5sZW5ndGg7KWlmKCJlbnRlciI9PT1lW3VdWzBdJiYiYXR0ZW50aW9uU2VxdWVuY2UiPT09ZVt1XVsxXS50eXBlJiZlW3VdWzFdLl9jbG9zZSl7Zm9yKHI9dTtyLS07KWlmKCJleGl0Ij09PWVbcl1bMF0mJiJhdHRlbnRpb25TZXF1ZW5jZSI9PT1lW3JdWzFdLnR5cGUmJmVbcl1bMV0uX29wZW4mJnQuc2xpY2VTZXJpYWxpemUoZVtyXVsxXSkuY2hhckNvZGVBdCgwKT09PXQuc2xpY2VTZXJpYWxpemUoZVt1XVsxXSkuY2hhckNvZGVBdCgwKSl7aWYoKGVbcl1bMV0uX2Nsb3NlfHxlW3VdWzFdLl9vcGVuKSYmKGVbdV1bMV0uZW5kLm9mZnNldC1lW3VdWzFdLnN0YXJ0Lm9mZnNldCklMyYmISgoZVtyXVsxXS5lbmQub2Zmc2V0LWVbcl1bMV0uc3RhcnQub2Zmc2V0K2VbdV1bMV0uZW5kLm9mZnNldC1lW3VdWzFdLnN0YXJ0Lm9mZnNldCklMykpY29udGludWU7cz1lW3JdWzFdLmVuZC5vZmZzZXQtZVtyXVsxXS5zdGFydC5vZmZzZXQ+MSYmZVt1XVsxXS5lbmQub2Zmc2V0LWVbdV1bMV0uc3RhcnQub2Zmc2V0PjE/MjoxO2xldCBkPU9iamVjdC5hc3NpZ24oe30sZVtyXVsxXS5lbmQpLHA9T2JqZWN0LmFzc2lnbih7fSxlW3VdWzFdLnN0YXJ0KTt0RihkLC1zKSx0RihwLHMpLGk9e3R5cGU6cz4xPyJzdHJvbmdTZXF1ZW5jZSI6ImVtcGhhc2lzU2VxdWVuY2UiLHN0YXJ0OmQsZW5kOk9iamVjdC5hc3NpZ24oe30sZVtyXVsxXS5lbmQpfSxhPXt0eXBlOnM+MT8ic3Ryb25nU2VxdWVuY2UiOiJlbXBoYXNpc1NlcXVlbmNlIixzdGFydDpPYmplY3QuYXNzaWduKHt9LGVbdV1bMV0uc3RhcnQpLGVuZDpwfSxvPXt0eXBlOnM+MT8ic3Ryb25nVGV4dCI6ImVtcGhhc2lzVGV4dCIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxlW3JdWzFdLmVuZCksZW5kOk9iamVjdC5hc3NpZ24oe30sZVt1XVsxXS5zdGFydCl9LG49e3R5cGU6cz4xPyJzdHJvbmciOiJlbXBoYXNpcyIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxpLnN0YXJ0KSxlbmQ6T2JqZWN0LmFzc2lnbih7fSxhLmVuZCl9LGVbcl1bMV0uZW5kPU9iamVjdC5hc3NpZ24oe30saS5zdGFydCksZVt1XVsxXS5zdGFydD1PYmplY3QuYXNzaWduKHt9LGEuZW5kKSxsPVtdLGVbcl1bMV0uZW5kLm9mZnNldC1lW3JdWzFdLnN0YXJ0Lm9mZnNldCYmKGw9KDAsZXMuVikobCxbWyJlbnRlciIsZVtyXVsxXSx0XSxbImV4aXQiLGVbcl1bMV0sdF1dKSksbD0oMCxlcy5WKShsLFtbImVudGVyIixuLHRdLFsiZW50ZXIiLGksdF0sWyJleGl0IixpLHRdLFsiZW50ZXIiLG8sdF1dKSxsPSgwLGVzLlYpKGwsKDAsZWsuQykodC5wYXJzZXIuY29uc3RydWN0cy5pbnNpZGVTcGFuLm51bGwsZS5zbGljZShyKzEsdSksdCkpLGw9KDAsZXMuVikobCxbWyJleGl0IixvLHRdLFsiZW50ZXIiLGEsdF0sWyJleGl0IixhLHRdLFsiZXhpdCIsbix0XV0pLGVbdV1bMV0uZW5kLm9mZnNldC1lW3VdWzFdLnN0YXJ0Lm9mZnNldD8oYz0yLGw9KDAsZXMuVikobCxbWyJlbnRlciIsZVt1XVsxXSx0XSxbImV4aXQiLGVbdV1bMV0sdF1dKSk6Yz0wLCgwLGVzLmQpKGUsci0xLHUtciszLGwpLHU9citsLmxlbmd0aC1jLTI7YnJlYWt9fWZvcih1PS0xOysrdTxlLmxlbmd0aDspImF0dGVudGlvblNlcXVlbmNlIj09PWVbdV1bMV0udHlwZSYmKGVbdV1bMV0udHlwZT0iZGF0YSIpO3JldHVybiBlfWZ1bmN0aW9uIHRMKGUsdCl7bGV0IHI7bGV0IG49dGhpcy5wYXJzZXIuY29uc3RydWN0cy5hdHRlbnRpb25NYXJrZXJzLm51bGwsbz10aGlzLnByZXZpb3VzLGk9KDAsdFAucikobyk7cmV0dXJuIGE7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gcj10LGUuZW50ZXIoImF0dGVudGlvblNlcXVlbmNlIikscyh0KX1mdW5jdGlvbiBzKGEpe2lmKGE9PT1yKXJldHVybiBlLmNvbnN1bWUoYSkscztsZXQgbD1lLmV4aXQoImF0dGVudGlvblNlcXVlbmNlIiksYz0oMCx0UC5yKShhKSx1PSFjfHwyPT09YyYmaXx8bi5pbmNsdWRlcyhhKSxkPSFpfHwyPT09aSYmY3x8bi5pbmNsdWRlcyhvKTtyZXR1cm4gbC5fb3Blbj0hISg0Mj09PXI/dTp1JiYoaXx8IWQpKSxsLl9jbG9zZT0hISg0Mj09PXI/ZDpkJiYoY3x8IXUpKSx0KGEpfX1mdW5jdGlvbiB0RihlLHQpe2UuY29sdW1uKz10LGUub2Zmc2V0Kz10LGUuX2J1ZmZlckluZGV4Kz10fWxldCB0Qj17bmFtZToiYXV0b2xpbmsiLHRva2VuaXplOnRqfTtmdW5jdGlvbiB0aihlLHQscil7bGV0IG49MDtyZXR1cm4gbztmdW5jdGlvbiBvKHQpe3JldHVybiBlLmVudGVyKCJhdXRvbGluayIpLGUuZW50ZXIoImF1dG9saW5rTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgiYXV0b2xpbmtNYXJrZXIiKSxlLmVudGVyKCJhdXRvbGlua1Byb3RvY29sIiksaX1mdW5jdGlvbiBpKHQpe3JldHVybigwLGVvLmp2KSh0KT8oZS5jb25zdW1lKHQpLGEpOmModCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gNDM9PT1lfHw0NT09PWV8fDQ2PT09ZXx8KDAsZW8uSCQpKGUpPyhuPTEscyhlKSk6YyhlKX1mdW5jdGlvbiBzKHQpe3JldHVybiA1OD09PXQ/KGUuY29uc3VtZSh0KSxuPTAsbCk6KDQzPT09dHx8NDU9PT10fHw0Nj09PXR8fCgwLGVvLkgkKSh0KSkmJm4rKzwzMj8oZS5jb25zdW1lKHQpLHMpOihuPTAsYyh0KSl9ZnVuY3Rpb24gbChuKXtyZXR1cm4gNjI9PT1uPyhlLmV4aXQoImF1dG9saW5rUHJvdG9jb2wiKSxlLmVudGVyKCJhdXRvbGlua01hcmtlciIpLGUuY29uc3VtZShuKSxlLmV4aXQoImF1dG9saW5rTWFya2VyIiksZS5leGl0KCJhdXRvbGluayIpLHQpOm51bGw9PT1ufHwzMj09PW58fDYwPT09bnx8KDAsZW8uQXYpKG4pP3Iobik6KGUuY29uc3VtZShuKSxsKX1mdW5jdGlvbiBjKHQpe3JldHVybiA2ND09PXQ/KGUuY29uc3VtZSh0KSx1KTooMCxlby5uOSkodCk/KGUuY29uc3VtZSh0KSxjKTpyKHQpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuKDAsZW8uSCQpKGUpP2QoZSk6cihlKX1mdW5jdGlvbiBkKHIpe3JldHVybiA0Nj09PXI/KGUuY29uc3VtZShyKSxuPTAsdSk6NjI9PT1yPyhlLmV4aXQoImF1dG9saW5rUHJvdG9jb2wiKS50eXBlPSJhdXRvbGlua0VtYWlsIixlLmVudGVyKCJhdXRvbGlua01hcmtlciIpLGUuY29uc3VtZShyKSxlLmV4aXQoImF1dG9saW5rTWFya2VyIiksZS5leGl0KCJhdXRvbGluayIpLHQpOnAocil9ZnVuY3Rpb24gcCh0KXtpZigoNDU9PT10fHwoMCxlby5IJCkodCkpJiZuKys8NjMpe2xldCByPTQ1PT09dD9wOmQ7cmV0dXJuIGUuY29uc3VtZSh0KSxyfXJldHVybiByKHQpfX1sZXQgdFU9e25hbWU6Imh0bWxUZXh0Iix0b2tlbml6ZTp0en07ZnVuY3Rpb24gdHooZSx0LHIpe2xldCBuLG8saTtsZXQgYT10aGlzO3JldHVybiBzO2Z1bmN0aW9uIHModCl7cmV0dXJuIGUuZW50ZXIoImh0bWxUZXh0IiksZS5lbnRlcigiaHRtbFRleHREYXRhIiksZS5jb25zdW1lKHQpLGx9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gMzM9PT10PyhlLmNvbnN1bWUodCksYyk6NDc9PT10PyhlLmNvbnN1bWUodCksXyk6NjM9PT10PyhlLmNvbnN1bWUodCkseSk6KDAsZW8uanYpKHQpPyhlLmNvbnN1bWUodCkseCk6cih0KX1mdW5jdGlvbiBjKHQpe3JldHVybiA0NT09PXQ/KGUuY29uc3VtZSh0KSx1KTo5MT09PXQ/KGUuY29uc3VtZSh0KSxvPTAsbSk6KDAsZW8uanYpKHQpPyhlLmNvbnN1bWUodCksdik6cih0KX1mdW5jdGlvbiB1KHQpe3JldHVybiA0NT09PXQ/KGUuY29uc3VtZSh0KSxmKTpyKHQpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIG51bGw9PT10P3IodCk6NDU9PT10PyhlLmNvbnN1bWUodCkscCk6KDAsZW8uQ2gpKHQpPyhpPWQsUCh0KSk6KGUuY29uc3VtZSh0KSxkKX1mdW5jdGlvbiBwKHQpe3JldHVybiA0NT09PXQ/KGUuY29uc3VtZSh0KSxmKTpkKHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIDYyPT09ZT9JKGUpOjQ1PT09ZT9wKGUpOmQoZSl9ZnVuY3Rpb24gbSh0KXtsZXQgbj0iQ0RBVEFbIjtyZXR1cm4gdD09PW4uY2hhckNvZGVBdChvKyspPyhlLmNvbnN1bWUodCksbz09PW4ubGVuZ3RoP2g6bSk6cih0KX1mdW5jdGlvbiBoKHQpe3JldHVybiBudWxsPT09dD9yKHQpOjkzPT09dD8oZS5jb25zdW1lKHQpLGcpOigwLGVvLkNoKSh0KT8oaT1oLFAodCkpOihlLmNvbnN1bWUodCksaCl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gOTM9PT10PyhlLmNvbnN1bWUodCksYik6aCh0KX1mdW5jdGlvbiBiKHQpe3JldHVybiA2Mj09PXQ/SSh0KTo5Mz09PXQ/KGUuY29uc3VtZSh0KSxiKTpoKHQpfWZ1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PT10fHw2Mj09PXQ/SSh0KTooMCxlby5DaCkodCk/KGk9dixQKHQpKTooZS5jb25zdW1lKHQpLHYpfWZ1bmN0aW9uIHkodCl7cmV0dXJuIG51bGw9PT10P3IodCk6NjM9PT10PyhlLmNvbnN1bWUodCksRSk6KDAsZW8uQ2gpKHQpPyhpPXksUCh0KSk6KGUuY29uc3VtZSh0KSx5KX1mdW5jdGlvbiBFKGUpe3JldHVybiA2Mj09PWU/SShlKTp5KGUpfWZ1bmN0aW9uIF8odCl7cmV0dXJuKDAsZW8uanYpKHQpPyhlLmNvbnN1bWUodCksUyk6cih0KX1mdW5jdGlvbiBTKHQpe3JldHVybiA0NT09PXR8fCgwLGVvLkgkKSh0KT8oZS5jb25zdW1lKHQpLFMpOncodCl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4oMCxlby5DaCkodCk/KGk9dyxQKHQpKTooMCxlby54eikodCk/KGUuY29uc3VtZSh0KSx3KTpJKHQpfWZ1bmN0aW9uIHgodCl7cmV0dXJuIDQ1PT09dHx8KDAsZW8uSCQpKHQpPyhlLmNvbnN1bWUodCkseCk6NDc9PT10fHw2Mj09PXR8fCgwLGVvLnozKSh0KT9UKHQpOnIodCl9ZnVuY3Rpb24gVCh0KXtyZXR1cm4gNDc9PT10PyhlLmNvbnN1bWUodCksSSk6NTg9PT10fHw5NT09PXR8fCgwLGVvLmp2KSh0KT8oZS5jb25zdW1lKHQpLEEpOigwLGVvLkNoKSh0KT8oaT1ULFAodCkpOigwLGVvLnh6KSh0KT8oZS5jb25zdW1lKHQpLFQpOkkodCl9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gNDU9PT10fHw0Nj09PXR8fDU4PT09dHx8OTU9PT10fHwoMCxlby5IJCkodCk/KGUuY29uc3VtZSh0KSxBKTpDKHQpfWZ1bmN0aW9uIEModCl7cmV0dXJuIDYxPT09dD8oZS5jb25zdW1lKHQpLGspOigwLGVvLkNoKSh0KT8oaT1DLFAodCkpOigwLGVvLnh6KSh0KT8oZS5jb25zdW1lKHQpLEMpOlQodCl9ZnVuY3Rpb24gayh0KXtyZXR1cm4gbnVsbD09PXR8fDYwPT09dHx8NjE9PT10fHw2Mj09PXR8fDk2PT09dD9yKHQpOjM0PT09dHx8Mzk9PT10PyhlLmNvbnN1bWUodCksbj10LE8pOigwLGVvLkNoKSh0KT8oaT1rLFAodCkpOigwLGVvLnh6KSh0KT8oZS5jb25zdW1lKHQpLGspOihlLmNvbnN1bWUodCksUil9ZnVuY3Rpb24gTyh0KXtyZXR1cm4gdD09PW4/KGUuY29uc3VtZSh0KSxuPXZvaWQgMCxOKTpudWxsPT09dD9yKHQpOigwLGVvLkNoKSh0KT8oaT1PLFAodCkpOihlLmNvbnN1bWUodCksTyl9ZnVuY3Rpb24gUih0KXtyZXR1cm4gbnVsbD09PXR8fDM0PT09dHx8Mzk9PT10fHw2MD09PXR8fDYxPT09dHx8OTY9PT10P3IodCk6NDc9PT10fHw2Mj09PXR8fCgwLGVvLnozKSh0KT9UKHQpOihlLmNvbnN1bWUodCksUil9ZnVuY3Rpb24gTihlKXtyZXR1cm4gNDc9PT1lfHw2Mj09PWV8fCgwLGVvLnozKShlKT9UKGUpOnIoZSl9ZnVuY3Rpb24gSShuKXtyZXR1cm4gNjI9PT1uPyhlLmNvbnN1bWUobiksZS5leGl0KCJodG1sVGV4dERhdGEiKSxlLmV4aXQoImh0bWxUZXh0IiksdCk6cihuKX1mdW5jdGlvbiBQKHQpe3JldHVybiBlLmV4aXQoImh0bWxUZXh0RGF0YSIpLGUuZW50ZXIoImxpbmVFbmRpbmciKSxlLmNvbnN1bWUodCksZS5leGl0KCJsaW5lRW5kaW5nIiksTX1mdW5jdGlvbiBNKHQpe3JldHVybigwLGVvLnh6KSh0KT8oMCxlbi5mKShlLEQsImxpbmVQcmVmaXgiLGEucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKT92b2lkIDA6NCkodCk6RCh0KX1mdW5jdGlvbiBEKHQpe3JldHVybiBlLmVudGVyKCJodG1sVGV4dERhdGEiKSxpKHQpfX1sZXQgdEc9e25hbWU6ImxhYmVsU3RhcnRMaW5rIix0b2tlbml6ZTp0SCxyZXNvbHZlQWxsOnRfLnJlc29sdmVBbGx9O2Z1bmN0aW9uIHRIKGUsdCxyKXtsZXQgbj10aGlzO3JldHVybiBvO2Z1bmN0aW9uIG8odCl7cmV0dXJuIGUuZW50ZXIoImxhYmVsTGluayIpLGUuZW50ZXIoImxhYmVsTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGFiZWxNYXJrZXIiKSxlLmV4aXQoImxhYmVsTGluayIpLGl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gOTQ9PT1lJiYiX2hpZGRlbkZvb3Rub3RlU3VwcG9ydCJpbiBuLnBhcnNlci5jb25zdHJ1Y3RzP3IoZSk6dChlKX19bGV0IHRWPXs0MjplTSw0MzplTSw0NTplTSw0ODplTSw0OTplTSw1MDplTSw1MTplTSw1MjplTSw1MzplTSw1NDplTSw1NTplTSw1NjplTSw1NzplTSw2MjplR30sdHE9ezkxOmVRfSx0Vz17Wy0yXTplMSxbLTFdOmUxLDMyOmUxfSx0WT17MzU6ZTYsNDI6ZUksNDU6W2U5LGVJXSw2MDp0biw2MTplOSw5NTplSSw5Njp0ZCwxMjY6dGR9LHRLPXszODp0aCw5Mjp0Yn0sdFo9e1stNV06dHksWy00XTp0eSxbLTNdOnR5LDMzOnROLDM4OnRoLDQyOnRNLDYwOlt0Qix0VV0sOTE6dEcsOTI6W3tuYW1lOiJoYXJkQnJlYWtFc2NhcGUiLHRva2VuaXplOmZ1bmN0aW9uIGUoZSx0LHIpe3JldHVybiBuO2Z1bmN0aW9uIG4odCl7cmV0dXJuIGUuZW50ZXIoImhhcmRCcmVha0VzY2FwZSIpLGUuY29uc3VtZSh0KSxvfWZ1bmN0aW9uIG8obil7cmV0dXJuKDAsZW8uQ2gpKG4pPyhlLmV4aXQoImhhcmRCcmVha0VzY2FwZSIpLHQobikpOnIobil9fX0sdGJdLDkzOnRfLDk1OnRNLDk2OntuYW1lOiJjb2RlVGV4dCIsdG9rZW5pemU6ZnVuY3Rpb24gZShlLHQscil7bGV0IG4sbyxpPTA7cmV0dXJuIGE7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gZS5lbnRlcigiY29kZVRleHQiKSxlLmVudGVyKCJjb2RlVGV4dFNlcXVlbmNlIikscyh0KX1mdW5jdGlvbiBzKHQpe3JldHVybiA5Nj09PXQ/KGUuY29uc3VtZSh0KSxpKysscyk6KGUuZXhpdCgiY29kZVRleHRTZXF1ZW5jZSIpLGwodCkpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIG51bGw9PT10P3IodCk6MzI9PT10PyhlLmVudGVyKCJzcGFjZSIpLGUuY29uc3VtZSh0KSxlLmV4aXQoInNwYWNlIiksbCk6OTY9PT10PyhvPWUuZW50ZXIoImNvZGVUZXh0U2VxdWVuY2UiKSxuPTAsdSh0KSk6KDAsZW8uQ2gpKHQpPyhlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLGwpOihlLmVudGVyKCJjb2RlVGV4dERhdGEiKSxjKHQpKX1mdW5jdGlvbiBjKHQpe3JldHVybiBudWxsPT09dHx8MzI9PT10fHw5Nj09PXR8fCgwLGVvLkNoKSh0KT8oZS5leGl0KCJjb2RlVGV4dERhdGEiKSxsKHQpKTooZS5jb25zdW1lKHQpLGMpfWZ1bmN0aW9uIHUocil7cmV0dXJuIDk2PT09cj8oZS5jb25zdW1lKHIpLG4rKyx1KTpuPT09aT8oZS5leGl0KCJjb2RlVGV4dFNlcXVlbmNlIiksZS5leGl0KCJjb2RlVGV4dCIpLHQocikpOihvLnR5cGU9ImNvZGVUZXh0RGF0YSIsYyhyKSl9fSxyZXNvbHZlOmZ1bmN0aW9uIGUoZSl7bGV0IHQscixuPWUubGVuZ3RoLTQsbz0zO2lmKCgibGluZUVuZGluZyI9PT1lWzNdWzFdLnR5cGV8fCJzcGFjZSI9PT1lW29dWzFdLnR5cGUpJiYoImxpbmVFbmRpbmciPT09ZVtuXVsxXS50eXBlfHwic3BhY2UiPT09ZVtuXVsxXS50eXBlKSl7Zm9yKHQ9bzsrK3Q8bjspaWYoImNvZGVUZXh0RGF0YSI9PT1lW3RdWzFdLnR5cGUpe2Vbb11bMV0udHlwZT0iY29kZVRleHRQYWRkaW5nIixlW25dWzFdLnR5cGU9ImNvZGVUZXh0UGFkZGluZyIsbys9MixuLT0yO2JyZWFrfX1mb3IodD1vLTEsbisrOysrdDw9bjspdm9pZCAwPT09cj90IT09biYmImxpbmVFbmRpbmciIT09ZVt0XVsxXS50eXBlJiYocj10KToodD09PW58fCJsaW5lRW5kaW5nIj09PWVbdF1bMV0udHlwZSkmJihlW3JdWzFdLnR5cGU9ImNvZGVUZXh0RGF0YSIsdCE9PXIrMiYmKGVbcl1bMV0uZW5kPWVbdC0xXVsxXS5lbmQsZS5zcGxpY2UocisyLHQtci0yKSxuLT10LXItMix0PXIrMikscj12b2lkIDApO3JldHVybiBlfSxwcmV2aW91czpmdW5jdGlvbiBlKGUpe3JldHVybiA5NiE9PWV8fCJjaGFyYWN0ZXJFc2NhcGUiPT09dGhpcy5ldmVudHNbdGhpcy5ldmVudHMubGVuZ3RoLTFdWzFdLnR5cGV9fX0sdFg9e251bGw6W3RNLGVTXX0sdFE9e251bGw6WzQyLDk1XX0sdEo9e251bGw6W119O2Z1bmN0aW9uIHQkKGUpe2xldCB0PWV8fHt9LHI9e2RlZmluZWQ6W10sbGF6eTp7fSxjb25zdHJ1Y3RzOigwLGVyLlcpKFtuLC4uLnQuZXh0ZW5zaW9uc3x8W11dKSxjb250ZW50Om8oZWkpLGRvY3VtZW50Om8oZWwpLGZsb3c6byhlRSksc3RyaW5nOm8oZXcpLHRleHQ6byhleCl9O3JldHVybiByO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIHQ7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gZU8ocixlLHQpfX19bGV0IHQwPS9bXDBcdFxuXHJdL2c7ZnVuY3Rpb24gdDEoKXtsZXQgZSx0PTEscj0iIixuPSEwO3JldHVybiBvO2Z1bmN0aW9uIG8obyxpLGEpe2xldCBzLGwsYyx1LGQ7bGV0IHA9W107Zm9yKG89citvLnRvU3RyaW5nKGkpLGM9MCxyPSIiLG4mJig2NTI3OT09PW8uY2hhckNvZGVBdCgwKSYmYysrLG49dm9pZCAwKTtjPG8ubGVuZ3RoOyl7aWYodDAubGFzdEluZGV4PWMsdT0ocz10MC5leGVjKG8pKSYmdm9pZCAwIT09cy5pbmRleD9zLmluZGV4Om8ubGVuZ3RoLGQ9by5jaGFyQ29kZUF0KHUpLCFzKXtyPW8uc2xpY2UoYyk7YnJlYWt9aWYoMTA9PT1kJiZjPT09dSYmZSlwLnB1c2goLTMpLGU9dm9pZCAwO2Vsc2Ugc3dpdGNoKGUmJihwLnB1c2goLTUpLGU9dm9pZCAwKSxjPHUmJihwLnB1c2goby5zbGljZShjLHUpKSx0Kz11LWMpLGQpe2Nhc2UgMDpwLnB1c2goNjU1MzMpLHQrKzticmVhaztjYXNlIDk6Zm9yKGw9NCpNYXRoLmNlaWwodC80KSxwLnB1c2goLTIpO3QrKzxsOylwLnB1c2goLTEpO2JyZWFrO2Nhc2UgMTA6cC5wdXNoKC00KSx0PTE7YnJlYWs7ZGVmYXVsdDplPSEwLHQ9MX1jPXUrMX1yZXR1cm4gYSYmKGUmJnAucHVzaCgtNSksciYmcC5wdXNoKHIpLHAucHVzaChudWxsKSkscH19ZnVuY3Rpb24gdDIoZSl7Zm9yKDshZWYoZSk7KTtyZXR1cm4gZX12YXIgdDM9cigiNzgwNzQiKSx0NT1yKCI0NTY0MiIpO2xldCB0Nj17fS5oYXNPd25Qcm9wZXJ0eSx0ND1mdW5jdGlvbihlLHQscil7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0JiYocj10LHQ9dm9pZCAwKSx0OChyKSh0Mih0JChyKS5kb2N1bWVudCgpLndyaXRlKHQxKCkoZSx0LCEwKSkpKX07ZnVuY3Rpb24gdDgoZSl7bGV0IHQ9e3RyYW5zZm9ybXM6W10sY2FuQ29udGFpbkVvbHM6WyJlbXBoYXNpcyIsImZyYWdtZW50IiwiaGVhZGluZyIsInBhcmFncmFwaCIsInN0cm9uZyJdLGVudGVyOnthdXRvbGluazpzKGVvKSxhdXRvbGlua1Byb3RvY29sOmssYXV0b2xpbmtFbWFpbDprLGF0eEhlYWRpbmc6cyhlZSksYmxvY2tRdW90ZTpzKEspLGNoYXJhY3RlckVzY2FwZTprLGNoYXJhY3RlclJlZmVyZW5jZTprLGNvZGVGZW5jZWQ6cyhaKSxjb2RlRmVuY2VkRmVuY2VJbmZvOmwsY29kZUZlbmNlZEZlbmNlTWV0YTpsLGNvZGVJbmRlbnRlZDpzKFosbCksY29kZVRleHQ6cyhYLGwpLGNvZGVUZXh0RGF0YTprLGRhdGE6ayxjb2RlRmxvd1ZhbHVlOmssZGVmaW5pdGlvbjpzKFEpLGRlZmluaXRpb25EZXN0aW5hdGlvblN0cmluZzpsLGRlZmluaXRpb25MYWJlbFN0cmluZzpsLGRlZmluaXRpb25UaXRsZVN0cmluZzpsLGVtcGhhc2lzOnMoJCksaGFyZEJyZWFrRXNjYXBlOnMoZXQpLGhhcmRCcmVha1RyYWlsaW5nOnMoZXQpLGh0bWxGbG93OnMoZXIsbCksaHRtbEZsb3dEYXRhOmssaHRtbFRleHQ6cyhlcixsKSxodG1sVGV4dERhdGE6ayxpbWFnZTpzKGVuKSxsYWJlbDpsLGxpbms6cyhlbyksbGlzdEl0ZW06cyhlYSksbGlzdEl0ZW1WYWx1ZTpoLGxpc3RPcmRlcmVkOnMoZWksbSksbGlzdFVub3JkZXJlZDpzKGVpKSxwYXJhZ3JhcGg6cyhlcykscmVmZXJlbmNlOkcscmVmZXJlbmNlU3RyaW5nOmwscmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZzpsLHJlc291cmNlVGl0bGVTdHJpbmc6bCxzZXRleHRIZWFkaW5nOnMoZWUpLHN0cm9uZzpzKGVsKSx0aGVtYXRpY0JyZWFrOnMoZXUpfSxleGl0OnthdHhIZWFkaW5nOmQoKSxhdHhIZWFkaW5nU2VxdWVuY2U6eCxhdXRvbGluazpkKCksYXV0b2xpbmtFbWFpbDpZLGF1dG9saW5rUHJvdG9jb2w6VyxibG9ja1F1b3RlOmQoKSxjaGFyYWN0ZXJFc2NhcGVWYWx1ZTpPLGNoYXJhY3RlclJlZmVyZW5jZU1hcmtlckhleGFkZWNpbWFsOlYsY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYzpWLGNoYXJhY3RlclJlZmVyZW5jZVZhbHVlOnEsY29kZUZlbmNlZDpkKHkpLGNvZGVGZW5jZWRGZW5jZTp2LGNvZGVGZW5jZWRGZW5jZUluZm86Zyxjb2RlRmVuY2VkRmVuY2VNZXRhOmIsY29kZUZsb3dWYWx1ZTpPLGNvZGVJbmRlbnRlZDpkKEUpLGNvZGVUZXh0OmQoTSksY29kZVRleHREYXRhOk8sZGF0YTpPLGRlZmluaXRpb246ZCgpLGRlZmluaXRpb25EZXN0aW5hdGlvblN0cmluZzp3LGRlZmluaXRpb25MYWJlbFN0cmluZzpfLGRlZmluaXRpb25UaXRsZVN0cmluZzpTLGVtcGhhc2lzOmQoKSxoYXJkQnJlYWtFc2NhcGU6ZChOKSxoYXJkQnJlYWtUcmFpbGluZzpkKE4pLGh0bWxGbG93OmQoSSksaHRtbEZsb3dEYXRhOk8saHRtbFRleHQ6ZChQKSxodG1sVGV4dERhdGE6TyxpbWFnZTpkKEwpLGxhYmVsOkIsbGFiZWxUZXh0OkYsbGluZUVuZGluZzpSLGxpbms6ZChEKSxsaXN0SXRlbTpkKCksbGlzdE9yZGVyZWQ6ZCgpLGxpc3RVbm9yZGVyZWQ6ZCgpLHBhcmFncmFwaDpkKCkscmVmZXJlbmNlU3RyaW5nOkgscmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZzpqLHJlc291cmNlVGl0bGVTdHJpbmc6VSxyZXNvdXJjZTp6LHNldGV4dEhlYWRpbmc6ZChDKSxzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlOkEsc2V0ZXh0SGVhZGluZ1RleHQ6VCxzdHJvbmc6ZCgpLHRoZW1hdGljQnJlYWs6ZCgpfX07dDcodCwoZXx8e30pLm1kYXN0RXh0ZW5zaW9uc3x8W10pO2xldCByPXt9O3JldHVybiBuO2Z1bmN0aW9uIG4oZSl7bGV0IHI9e3R5cGU6InJvb3QiLGNoaWxkcmVuOltdfSxuPXtzdGFjazpbcl0sdG9rZW5TdGFjazpbXSxjb25maWc6dCxlbnRlcjp1LGV4aXQ6cCxidWZmZXI6bCxyZXN1bWU6ZixzZXREYXRhOmksZ2V0RGF0YTphfSxzPVtdLGM9LTE7Zm9yKDsrK2M8ZS5sZW5ndGg7KWlmKCJsaXN0T3JkZXJlZCI9PT1lW2NdWzFdLnR5cGV8fCJsaXN0VW5vcmRlcmVkIj09PWVbY11bMV0udHlwZSl7aWYoImVudGVyIj09PWVbY11bMF0pcy5wdXNoKGMpO2Vsc2V7bGV0IHQ9dm9pZCAwO2M9byhlLHMucG9wKCksYyl9fWZvcihjPS0xOysrYzxlLmxlbmd0aDspe2xldCByPXRbZVtjXVswXV07dDYuY2FsbChyLGVbY11bMV0udHlwZSkmJnJbZVtjXVsxXS50eXBlXS5jYWxsKE9iamVjdC5hc3NpZ24oe3NsaWNlU2VyaWFsaXplOmVbY11bMl0uc2xpY2VTZXJpYWxpemV9LG4pLGVbY11bMV0pfWlmKG4udG9rZW5TdGFjay5sZW5ndGg+MCl7bGV0IGU9bi50b2tlblN0YWNrW24udG9rZW5TdGFjay5sZW5ndGgtMV07KGVbMV18fHJ0KS5jYWxsKG4sdm9pZCAwLGVbMF0pfWZvcihyLnBvc2l0aW9uPXtzdGFydDp0OShlLmxlbmd0aD4wP2VbMF1bMV0uc3RhcnQ6e2xpbmU6MSxjb2x1bW46MSxvZmZzZXQ6MH0pLGVuZDp0OShlLmxlbmd0aD4wP2VbZS5sZW5ndGgtMl1bMV0uZW5kOntsaW5lOjEsY29sdW1uOjEsb2Zmc2V0OjB9KX0sYz0tMTsrK2M8dC50cmFuc2Zvcm1zLmxlbmd0aDspcj10LnRyYW5zZm9ybXNbY10ocil8fHI7cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlLHQscil7bGV0IG4sbyxpLGEscz10LTEsbD0tMSxjPSExO2Zvcig7KytzPD1yOyl7bGV0IHQ9ZVtzXTtpZigibGlzdFVub3JkZXJlZCI9PT10WzFdLnR5cGV8fCJsaXN0T3JkZXJlZCI9PT10WzFdLnR5cGV8fCJibG9ja1F1b3RlIj09PXRbMV0udHlwZT8oImVudGVyIj09PXRbMF0/bCsrOmwtLSxhPXZvaWQgMCk6ImxpbmVFbmRpbmdCbGFuayI9PT10WzFdLnR5cGU/ImVudGVyIj09PXRbMF0mJihuJiYhYSYmIWwmJiFpJiYoaT1zKSxhPXZvaWQgMCk6ImxpbmVQcmVmaXgiPT09dFsxXS50eXBlfHwibGlzdEl0ZW1WYWx1ZSI9PT10WzFdLnR5cGV8fCJsaXN0SXRlbU1hcmtlciI9PT10WzFdLnR5cGV8fCJsaXN0SXRlbVByZWZpeCI9PT10WzFdLnR5cGV8fCJsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UiPT09dFsxXS50eXBlfHwoYT12b2lkIDApLCFsJiYiZW50ZXIiPT09dFswXSYmImxpc3RJdGVtUHJlZml4Ij09PXRbMV0udHlwZXx8LTE9PT1sJiYiZXhpdCI9PT10WzBdJiYoImxpc3RVbm9yZGVyZWQiPT09dFsxXS50eXBlfHwibGlzdE9yZGVyZWQiPT09dFsxXS50eXBlKSl7aWYobil7bGV0IGE9cztmb3Iobz12b2lkIDA7YS0tOyl7bGV0IHQ9ZVthXTtpZigibGluZUVuZGluZyI9PT10WzFdLnR5cGV8fCJsaW5lRW5kaW5nQmxhbmsiPT09dFsxXS50eXBlKXtpZigiZXhpdCI9PT10WzBdKWNvbnRpbnVlO28mJihlW29dWzFdLnR5cGU9ImxpbmVFbmRpbmdCbGFuayIsYz0hMCksdFsxXS50eXBlPSJsaW5lRW5kaW5nIixvPWF9ZWxzZSBpZigibGluZVByZWZpeCI9PT10WzFdLnR5cGV8fCJibG9ja1F1b3RlUHJlZml4Ij09PXRbMV0udHlwZXx8ImJsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlIj09PXRbMV0udHlwZXx8ImJsb2NrUXVvdGVNYXJrZXIiPT09dFsxXS50eXBlfHwibGlzdEl0ZW1JbmRlbnQiPT09dFsxXS50eXBlKTtlbHNlIGJyZWFrfWkmJighb3x8aTxvKSYmKG4uX3NwcmVhZD0hMCksbi5lbmQ9T2JqZWN0LmFzc2lnbih7fSxvP2Vbb11bMV0uc3RhcnQ6dFsxXS5lbmQpLGUuc3BsaWNlKG98fHMsMCxbImV4aXQiLG4sdFsyXV0pLHMrKyxyKyt9Imxpc3RJdGVtUHJlZml4Ij09PXRbMV0udHlwZSYmKG49e3R5cGU6Imxpc3RJdGVtIixfc3ByZWFkOiExLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sdFsxXS5zdGFydCksZW5kOnZvaWQgMH0sZS5zcGxpY2UocywwLFsiZW50ZXIiLG4sdFsyXV0pLHMrKyxyKyssaT12b2lkIDAsYT0hMCl9fXJldHVybiBlW3RdWzFdLl9zcHJlYWQ9YyxyfWZ1bmN0aW9uIGkoZSx0KXtyW2VdPXR9ZnVuY3Rpb24gYShlKXtyZXR1cm4gcltlXX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHI7ZnVuY3Rpb24gcihyKXt1LmNhbGwodGhpcyxlKHIpLHIpLHQmJnQuY2FsbCh0aGlzLHIpfX1mdW5jdGlvbiBsKCl7dGhpcy5zdGFjay5wdXNoKHt0eXBlOiJmcmFnbWVudCIsY2hpbGRyZW46W119KX1mdW5jdGlvbiB1KGUsdCxyKXtyZXR1cm4gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS5jaGlsZHJlbi5wdXNoKGUpLHRoaXMuc3RhY2sucHVzaChlKSx0aGlzLnRva2VuU3RhY2sucHVzaChbdCxyXSksZS5wb3NpdGlvbj17c3RhcnQ6dDkodC5zdGFydCl9LGV9ZnVuY3Rpb24gZChlKXtyZXR1cm4gdDtmdW5jdGlvbiB0KHQpe2UmJmUuY2FsbCh0aGlzLHQpLHAuY2FsbCh0aGlzLHQpfX1mdW5jdGlvbiBwKGUsdCl7bGV0IHI9dGhpcy5zdGFjay5wb3AoKSxuPXRoaXMudG9rZW5TdGFjay5wb3AoKTtpZihuKW5bMF0udHlwZSE9PWUudHlwZSYmKHQ/dC5jYWxsKHRoaXMsZSxuWzBdKTooblsxXXx8cnQpLmNhbGwodGhpcyxlLG5bMF0pKTtlbHNlIHRocm93IEVycm9yKCJDYW5ub3QgY2xvc2UgYCIrZS50eXBlKyJgICgiK2Moe3N0YXJ0OmUuc3RhcnQsZW5kOmUuZW5kfSkrIik6IGl04oCZcyBub3Qgb3BlbiIpO3JldHVybiByLnBvc2l0aW9uLmVuZD10OShlLmVuZCkscn1mdW5jdGlvbiBmKCl7cmV0dXJuIEoodGhpcy5zdGFjay5wb3AoKSl9ZnVuY3Rpb24gbSgpe2koImV4cGVjdGluZ0ZpcnN0TGlzdEl0ZW1WYWx1ZSIsITApfWZ1bmN0aW9uIGgoZSl7YSgiZXhwZWN0aW5nRmlyc3RMaXN0SXRlbVZhbHVlIikmJih0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTJdLnN0YXJ0PU51bWJlci5wYXJzZUludCh0aGlzLnNsaWNlU2VyaWFsaXplKGUpLDEwKSxpKCJleHBlY3RpbmdGaXJzdExpc3RJdGVtVmFsdWUiKSl9ZnVuY3Rpb24gZygpe2xldCBlPXRoaXMucmVzdW1lKCk7dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS5sYW5nPWV9ZnVuY3Rpb24gYigpe2xldCBlPXRoaXMucmVzdW1lKCk7dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS5tZXRhPWV9ZnVuY3Rpb24gdigpeyFhKCJmbG93Q29kZUluc2lkZSIpJiYodGhpcy5idWZmZXIoKSxpKCJmbG93Q29kZUluc2lkZSIsITApKX1mdW5jdGlvbiB5KCl7bGV0IGU9dGhpcy5yZXN1bWUoKTt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLnZhbHVlPWUucmVwbGFjZSgvXihccj9cbnxccil8KFxyP1xufFxyKSQvZywiIiksaSgiZmxvd0NvZGVJbnNpZGUiKX1mdW5jdGlvbiBFKCl7bGV0IGU9dGhpcy5yZXN1bWUoKTt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLnZhbHVlPWUucmVwbGFjZSgvKFxyP1xufFxyKSQvZywiIil9ZnVuY3Rpb24gXyhlKXtsZXQgdD10aGlzLnJlc3VtZSgpLHI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtyLmxhYmVsPXQsci5pZGVudGlmaWVyPSgwLGVYLmQpKHRoaXMuc2xpY2VTZXJpYWxpemUoZSkpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gUygpe2xldCBlPXRoaXMucmVzdW1lKCk7dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS50aXRsZT1lfWZ1bmN0aW9uIHcoKXtsZXQgZT10aGlzLnJlc3VtZSgpO3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0udXJsPWV9ZnVuY3Rpb24geChlKXtsZXQgdD10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO2lmKCF0LmRlcHRoKXtsZXQgcj10aGlzLnNsaWNlU2VyaWFsaXplKGUpLmxlbmd0aDt0LmRlcHRoPXJ9fWZ1bmN0aW9uIFQoKXtpKCJzZXRleHRIZWFkaW5nU2x1cnBMaW5lRW5kaW5nIiwhMCl9ZnVuY3Rpb24gQShlKXt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLmRlcHRoPTYxPT09dGhpcy5zbGljZVNlcmlhbGl6ZShlKS5jaGFyQ29kZUF0KDApPzE6Mn1mdW5jdGlvbiBDKCl7aSgic2V0ZXh0SGVhZGluZ1NsdXJwTGluZUVuZGluZyIpfWZ1bmN0aW9uIGsoZSl7bGV0IHQ9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXSxyPXQuY2hpbGRyZW5bdC5jaGlsZHJlbi5sZW5ndGgtMV07KCFyfHwidGV4dCIhPT1yLnR5cGUpJiYoKHI9ZWMoKSkucG9zaXRpb249e3N0YXJ0OnQ5KGUuc3RhcnQpfSx0LmNoaWxkcmVuLnB1c2gocikpLHRoaXMuc3RhY2sucHVzaChyKX1mdW5jdGlvbiBPKGUpe2xldCB0PXRoaXMuc3RhY2sucG9wKCk7dC52YWx1ZSs9dGhpcy5zbGljZVNlcmlhbGl6ZShlKSx0LnBvc2l0aW9uLmVuZD10OShlLmVuZCl9ZnVuY3Rpb24gUihlKXtsZXQgcj10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO2lmKGEoImF0SGFyZEJyZWFrIikpe3IuY2hpbGRyZW5bci5jaGlsZHJlbi5sZW5ndGgtMV0ucG9zaXRpb24uZW5kPXQ5KGUuZW5kKSxpKCJhdEhhcmRCcmVhayIpO3JldHVybn0hYSgic2V0ZXh0SGVhZGluZ1NsdXJwTGluZUVuZGluZyIpJiZ0LmNhbkNvbnRhaW5Fb2xzLmluY2x1ZGVzKHIudHlwZSkmJihrLmNhbGwodGhpcyxlKSxPLmNhbGwodGhpcyxlKSl9ZnVuY3Rpb24gTigpe2koImF0SGFyZEJyZWFrIiwhMCl9ZnVuY3Rpb24gSSgpe2xldCBlPXRoaXMucmVzdW1lKCk7dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS52YWx1ZT1lfWZ1bmN0aW9uIFAoKXtsZXQgZT10aGlzLnJlc3VtZSgpO3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0udmFsdWU9ZX1mdW5jdGlvbiBNKCl7bGV0IGU9dGhpcy5yZXN1bWUoKTt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLnZhbHVlPWV9ZnVuY3Rpb24gRCgpe2xldCBlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07aWYoYSgiaW5SZWZlcmVuY2UiKSl7bGV0IHQ9YSgicmVmZXJlbmNlVHlwZSIpfHwic2hvcnRjdXQiO2UudHlwZSs9IlJlZmVyZW5jZSIsZS5yZWZlcmVuY2VUeXBlPXQsZGVsZXRlIGUudXJsLGRlbGV0ZSBlLnRpdGxlfWVsc2UgZGVsZXRlIGUuaWRlbnRpZmllcixkZWxldGUgZS5sYWJlbDtpKCJyZWZlcmVuY2VUeXBlIil9ZnVuY3Rpb24gTCgpe2xldCBlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07aWYoYSgiaW5SZWZlcmVuY2UiKSl7bGV0IHQ9YSgicmVmZXJlbmNlVHlwZSIpfHwic2hvcnRjdXQiO2UudHlwZSs9IlJlZmVyZW5jZSIsZS5yZWZlcmVuY2VUeXBlPXQsZGVsZXRlIGUudXJsLGRlbGV0ZSBlLnRpdGxlfWVsc2UgZGVsZXRlIGUuaWRlbnRpZmllcixkZWxldGUgZS5sYWJlbDtpKCJyZWZlcmVuY2VUeXBlIil9ZnVuY3Rpb24gRihlKXtsZXQgdD10aGlzLnNsaWNlU2VyaWFsaXplKGUpLHI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0yXTtyLmxhYmVsPSgwLHQ1LnYpKHQpLHIuaWRlbnRpZmllcj0oMCxlWC5kKSh0KS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIEIoKXtsZXQgZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLHQ9dGhpcy5yZXN1bWUoKSxyPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07aWYoaSgiaW5SZWZlcmVuY2UiLCEwKSwibGluayI9PT1yLnR5cGUpe2xldCB0PWUuY2hpbGRyZW47ci5jaGlsZHJlbj10fWVsc2Ugci5hbHQ9dH1mdW5jdGlvbiBqKCl7bGV0IGU9dGhpcy5yZXN1bWUoKTt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLnVybD1lfWZ1bmN0aW9uIFUoKXtsZXQgZT10aGlzLnJlc3VtZSgpO3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0udGl0bGU9ZX1mdW5jdGlvbiB6KCl7aSgiaW5SZWZlcmVuY2UiKX1mdW5jdGlvbiBHKCl7aSgicmVmZXJlbmNlVHlwZSIsImNvbGxhcHNlZCIpfWZ1bmN0aW9uIEgoZSl7bGV0IHQ9dGhpcy5yZXN1bWUoKSxyPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07ci5sYWJlbD10LHIuaWRlbnRpZmllcj0oMCxlWC5kKSh0aGlzLnNsaWNlU2VyaWFsaXplKGUpKS50b0xvd2VyQ2FzZSgpLGkoInJlZmVyZW5jZVR5cGUiLCJmdWxsIil9ZnVuY3Rpb24gVihlKXtpKCJjaGFyYWN0ZXJSZWZlcmVuY2VUeXBlIixlLnR5cGUpfWZ1bmN0aW9uIHEoZSl7bGV0IHQ7bGV0IHI9dGhpcy5zbGljZVNlcmlhbGl6ZShlKSxuPWEoImNoYXJhY3RlclJlZmVyZW5jZVR5cGUiKTtuPyh0PSgwLHQzLm8pKHIsImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWMiPT09bj8xMDoxNiksaSgiY2hhcmFjdGVyUmVmZXJlbmNlVHlwZSIpKTp0PSgwLHRtLlQpKHIpO2xldCBvPXRoaXMuc3RhY2sucG9wKCk7by52YWx1ZSs9dCxvLnBvc2l0aW9uLmVuZD10OShlLmVuZCl9ZnVuY3Rpb24gVyhlKXtPLmNhbGwodGhpcyxlKSx0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLnVybD10aGlzLnNsaWNlU2VyaWFsaXplKGUpfWZ1bmN0aW9uIFkoZSl7Ty5jYWxsKHRoaXMsZSksdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS51cmw9Im1haWx0bzoiK3RoaXMuc2xpY2VTZXJpYWxpemUoZSl9ZnVuY3Rpb24gSygpe3JldHVybnt0eXBlOiJibG9ja3F1b3RlIixjaGlsZHJlbjpbXX19ZnVuY3Rpb24gWigpe3JldHVybnt0eXBlOiJjb2RlIixsYW5nOm51bGwsbWV0YTpudWxsLHZhbHVlOiIifX1mdW5jdGlvbiBYKCl7cmV0dXJue3R5cGU6ImlubGluZUNvZGUiLHZhbHVlOiIifX1mdW5jdGlvbiBRKCl7cmV0dXJue3R5cGU6ImRlZmluaXRpb24iLGlkZW50aWZpZXI6IiIsbGFiZWw6bnVsbCx0aXRsZTpudWxsLHVybDoiIn19ZnVuY3Rpb24gJCgpe3JldHVybnt0eXBlOiJlbXBoYXNpcyIsY2hpbGRyZW46W119fWZ1bmN0aW9uIGVlKCl7cmV0dXJue3R5cGU6ImhlYWRpbmciLGRlcHRoOnZvaWQgMCxjaGlsZHJlbjpbXX19ZnVuY3Rpb24gZXQoKXtyZXR1cm57dHlwZToiYnJlYWsifX1mdW5jdGlvbiBlcigpe3JldHVybnt0eXBlOiJodG1sIix2YWx1ZToiIn19ZnVuY3Rpb24gZW4oKXtyZXR1cm57dHlwZToiaW1hZ2UiLHRpdGxlOm51bGwsdXJsOiIiLGFsdDpudWxsfX1mdW5jdGlvbiBlbygpe3JldHVybnt0eXBlOiJsaW5rIix0aXRsZTpudWxsLHVybDoiIixjaGlsZHJlbjpbXX19ZnVuY3Rpb24gZWkoZSl7cmV0dXJue3R5cGU6Imxpc3QiLG9yZGVyZWQ6Imxpc3RPcmRlcmVkIj09PWUudHlwZSxzdGFydDpudWxsLHNwcmVhZDplLl9zcHJlYWQsY2hpbGRyZW46W119fWZ1bmN0aW9uIGVhKGUpe3JldHVybnt0eXBlOiJsaXN0SXRlbSIsc3ByZWFkOmUuX3NwcmVhZCxjaGVja2VkOm51bGwsY2hpbGRyZW46W119fWZ1bmN0aW9uIGVzKCl7cmV0dXJue3R5cGU6InBhcmFncmFwaCIsY2hpbGRyZW46W119fWZ1bmN0aW9uIGVsKCl7cmV0dXJue3R5cGU6InN0cm9uZyIsY2hpbGRyZW46W119fWZ1bmN0aW9uIGVjKCl7cmV0dXJue3R5cGU6InRleHQiLHZhbHVlOiIifX1mdW5jdGlvbiBldSgpe3JldHVybnt0eXBlOiJ0aGVtYXRpY0JyZWFrIn19fWZ1bmN0aW9uIHQ5KGUpe3JldHVybntsaW5lOmUubGluZSxjb2x1bW46ZS5jb2x1bW4sb2Zmc2V0OmUub2Zmc2V0fX1mdW5jdGlvbiB0NyhlLHQpe2xldCByPS0xO2Zvcig7KytyPHQubGVuZ3RoOyl7bGV0IG49dFtyXTtBcnJheS5pc0FycmF5KG4pP3Q3KGUsbik6cmUoZSxuKX19ZnVuY3Rpb24gcmUoZSx0KXtsZXQgcjtmb3IociBpbiB0KWlmKHQ2LmNhbGwodCxyKSl7aWYoImNhbkNvbnRhaW5Fb2xzIj09PXIpe2xldCBuPXRbcl07biYmZVtyXS5wdXNoKC4uLm4pfWVsc2UgaWYoInRyYW5zZm9ybXMiPT09cil7bGV0IG49dFtyXTtuJiZlW3JdLnB1c2goLi4ubil9ZWxzZSBpZigiZW50ZXIiPT09cnx8ImV4aXQiPT09cil7bGV0IG49dFtyXTtuJiZPYmplY3QuYXNzaWduKGVbcl0sbil9fX1mdW5jdGlvbiBydChlLHQpe2lmKGUpdGhyb3cgRXJyb3IoIkNhbm5vdCBjbG9zZSBgIitlLnR5cGUrImAgKCIrYyh7c3RhcnQ6ZS5zdGFydCxlbmQ6ZS5lbmR9KSsiKTogYSBkaWZmZXJlbnQgdG9rZW4gKGAiK3QudHlwZSsiYCwgIitjKHtzdGFydDp0LnN0YXJ0LGVuZDp0LmVuZH0pKyIpIGlzIG9wZW4iKTt0aHJvdyBFcnJvcigiQ2Fubm90IGNsb3NlIGRvY3VtZW50LCBhIHRva2VuIChgIit0LnR5cGUrImAsICIrYyh7c3RhcnQ6dC5zdGFydCxlbmQ6dC5lbmR9KSsiKSBpcyBzdGlsbCBvcGVuIil9ZnVuY3Rpb24gcnIoZSl7T2JqZWN0LmFzc2lnbih0aGlzLHtQYXJzZXI6dD0+dDQodCxPYmplY3QuYXNzaWduKHt9LHRoaXMuZGF0YSgic2V0dGluZ3MiKSxlLHtleHRlbnNpb25zOnRoaXMuZGF0YSgibWljcm9tYXJrRXh0ZW5zaW9ucyIpfHxbXSxtZGFzdEV4dGVuc2lvbnM6dGhpcy5kYXRhKCJmcm9tTWFya2Rvd25FeHRlbnNpb25zIil8fFtdfSkpfSl9bGV0IHJuPWZ1bmN0aW9uKGUsdCxyKXtsZXQgbj17dHlwZTpTdHJpbmcoZSl9O3JldHVybiBudWxsPT1yJiYoInN0cmluZyI9PXR5cGVvZiB0fHxBcnJheS5pc0FycmF5KHQpKT9yPXQ6T2JqZWN0LmFzc2lnbihuLHQpLEFycmF5LmlzQXJyYXkocik/bi5jaGlsZHJlbj1yOm51bGwhPXImJihuLnZhbHVlPVN0cmluZyhyKSksbn07dmFyIHJvPXIoIjExNTcxIik7bGV0IHJpPWZ1bmN0aW9uKGUsdCxyLG4pe2Z1bmN0aW9uIG8oZSx0KXtsZXQgbj10W3QubGVuZ3RoLTFdO3JldHVybiByKGUsbj9uLmNoaWxkcmVuLmluZGV4T2YoZSk6bnVsbCxuKX0iZnVuY3Rpb24iPT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHImJihuPXIscj10LHQ9bnVsbCksKDAscm8uUzQpKGUsdCxvLG4pfSxyYT1ybCgic3RhcnQiKSxycz1ybCgiZW5kIik7ZnVuY3Rpb24gcmwoZSl7cmV0dXJuIHQ7ZnVuY3Rpb24gdCh0KXtsZXQgcj10JiZ0LnBvc2l0aW9uJiZ0LnBvc2l0aW9uW2VdfHx7fTtyZXR1cm57bGluZTpyLmxpbmV8fG51bGwsY29sdW1uOnIuY29sdW1ufHxudWxsLG9mZnNldDpyLm9mZnNldD4tMT9yLm9mZnNldDpudWxsfX19ZnVuY3Rpb24gcmMoZSl7cmV0dXJuIWV8fCFlLnBvc2l0aW9ufHwhZS5wb3NpdGlvbi5zdGFydHx8IWUucG9zaXRpb24uc3RhcnQubGluZXx8IWUucG9zaXRpb24uc3RhcnQuY29sdW1ufHwhZS5wb3NpdGlvbi5lbmR8fCFlLnBvc2l0aW9uLmVuZC5saW5lfHwhZS5wb3NpdGlvbi5lbmQuY29sdW1ufWxldCBydT17fS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiByZChlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlfHwhZS50eXBlKXRocm93IEVycm9yKCJtZGFzdC11dGlsLWRlZmluaXRpb25zIGV4cGVjdGVkIG5vZGUiKTtyZXR1cm4gcmkoZSwiZGVmaW5pdGlvbiIsZT0+e2xldCByPXJwKGUuaWRlbnRpZmllcik7ciYmIXJ1LmNhbGwodCxyKSYmKHRbcl09ZSl9KSxyO2Z1bmN0aW9uIHIoZSl7bGV0IHI9cnAoZSk7cmV0dXJuIHImJnJ1LmNhbGwodCxyKT90W3JdOm51bGx9fWZ1bmN0aW9uIHJwKGUpe3JldHVybiBTdHJpbmcoZXx8IiIpLnRvVXBwZXJDYXNlKCl9bGV0IHJmPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHJtKGUsdCl7bGV0IHI9dC5kYXRhfHx7fTtyZXR1cm4idmFsdWUiaW4gdCYmIShyZi5jYWxsKHIsImhOYW1lIil8fHJmLmNhbGwociwiaFByb3BlcnRpZXMiKXx8cmYuY2FsbChyLCJoQ2hpbGRyZW4iKSk/ZS5hdWdtZW50KHQscm4oInRleHQiLHQudmFsdWUpKTplKHQsImRpdiIscmIoZSx0KSl9ZnVuY3Rpb24gcmgoZSx0LHIpe2xldCBuO2xldCBvPXQmJnQudHlwZTtpZighbyl0aHJvdyBFcnJvcigiRXhwZWN0ZWQgbm9kZSwgZ290IGAiK3QrImAiKTtyZXR1cm4oImZ1bmN0aW9uIj09dHlwZW9mKG49cmYuY2FsbChlLmhhbmRsZXJzLG8pP2UuaGFuZGxlcnNbb106ZS5wYXNzVGhyb3VnaCYmZS5wYXNzVGhyb3VnaC5pbmNsdWRlcyhvKT9yZzplLnVua25vd25IYW5kbGVyKT9uOnJtKShlLHQscil9ZnVuY3Rpb24gcmcoZSx0KXtyZXR1cm4iY2hpbGRyZW4iaW4gdD97Li4udCxjaGlsZHJlbjpyYihlLHQpfTp0fWZ1bmN0aW9uIHJiKGUsdCl7bGV0IHI9W107aWYoImNoaWxkcmVuImluIHQpe2xldCBuPXQuY2hpbGRyZW4sbz0tMTtmb3IoOysrbzxuLmxlbmd0aDspe2xldCBpPXJoKGUsbltvXSx0KTtpZihpKXtpZihvJiYiYnJlYWsiPT09bltvLTFdLnR5cGUmJighQXJyYXkuaXNBcnJheShpKSYmInRleHQiPT09aS50eXBlJiYoaS52YWx1ZT1pLnZhbHVlLnJlcGxhY2UoL15ccysvLCIiKSksIUFycmF5LmlzQXJyYXkoaSkmJiJlbGVtZW50Ij09PWkudHlwZSkpe2xldCBlPWkuY2hpbGRyZW5bMF07ZSYmInRleHQiPT09ZS50eXBlJiYoZS52YWx1ZT1lLnZhbHVlLnJlcGxhY2UoL15ccysvLCIiKSl9QXJyYXkuaXNBcnJheShpKT9yLnB1c2goLi4uaSk6ci5wdXNoKGkpfX19cmV0dXJuIHJ9ZnVuY3Rpb24gcnYoZSx0KXtyZXR1cm4gZSh0LCJociIpfWZ1bmN0aW9uIHJ5KGUsdCl7bGV0IHI9W10sbj0tMTtmb3IodCYmci5wdXNoKHJuKCJ0ZXh0IiwiXG4iKSk7KytuPGUubGVuZ3RoOyluJiZyLnB1c2gocm4oInRleHQiLCJcbiIpKSxyLnB1c2goZVtuXSk7cmV0dXJuIHQmJmUubGVuZ3RoPjAmJnIucHVzaChybigidGV4dCIsIlxuIikpLHJ9ZnVuY3Rpb24gckUoZSx0KXtsZXQgcj17fSxuPXQub3JkZXJlZD8ib2wiOiJ1bCIsbz1yYihlLHQpLGk9LTE7Zm9yKCJudW1iZXIiPT10eXBlb2YgdC5zdGFydCYmMSE9PXQuc3RhcnQmJihyLnN0YXJ0PXQuc3RhcnQpOysraTxvLmxlbmd0aDspe2xldCBlPW9baV07aWYoImVsZW1lbnQiPT09ZS50eXBlJiYibGkiPT09ZS50YWdOYW1lJiZlLnByb3BlcnRpZXMmJkFycmF5LmlzQXJyYXkoZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZSkmJmUucHJvcGVydGllcy5jbGFzc05hbWUuaW5jbHVkZXMoInRhc2stbGlzdC1pdGVtIikpe3IuY2xhc3NOYW1lPVsiY29udGFpbnMtdGFzay1saXN0Il07YnJlYWt9fXJldHVybiBlKHQsbixyLHJ5KG8sITApKX1mdW5jdGlvbiByXyhlKXtsZXQgdD1lLmZvb3Rub3RlQnlJZCxyPWUuZm9vdG5vdGVPcmRlcixuPS0xLG89W107Zm9yKDsrK248ci5sZW5ndGg7KXtsZXQgZT10W3Jbbl0udG9VcHBlckNhc2UoKV07aWYoIWUpY29udGludWU7bGV0IGk9U3RyaW5nKG4rMSksYT1bLi4uZS5jaGlsZHJlbl0scz17dHlwZToibGluayIsdXJsOiIjZm5yZWYiK2ksZGF0YTp7aFByb3BlcnRpZXM6e2NsYXNzTmFtZTpbImZvb3Rub3RlLWJhY2siXSxyb2xlOiJkb2MtYmFja2xpbmsifX0sY2hpbGRyZW46W3t0eXBlOiJ0ZXh0Iix2YWx1ZToi4oapIn1dfSxsPWFbYS5sZW5ndGgtMV07bCYmInBhcmFncmFwaCI9PT1sLnR5cGU/bC5jaGlsZHJlbi5wdXNoKHMpOmEucHVzaChzKSxvLnB1c2goe3R5cGU6Imxpc3RJdGVtIixkYXRhOntoUHJvcGVydGllczp7aWQ6ImZuIitpLHJvbGU6ImRvYy1lbmRub3RlIn19LGNoaWxkcmVuOmEscG9zaXRpb246ZS5wb3NpdGlvbn0pfXJldHVybiAwPT09by5sZW5ndGg/bnVsbDplKG51bGwsInNlY3Rpb24iLHtjbGFzc05hbWU6WyJmb290bm90ZXMiXSxyb2xlOiJkb2MtZW5kbm90ZXMifSxyeShbcnYoZSksckUoZSx7dHlwZToibGlzdCIsb3JkZXJlZDohMCxjaGlsZHJlbjpvfSldLCEwKSl9ZnVuY3Rpb24gclMoZSx0KXtyZXR1cm4gZSh0LCJibG9ja3F1b3RlIixyeShyYihlLHQpLCEwKSl9ZnVuY3Rpb24gcncoZSx0KXtyZXR1cm5bZSh0LCJiciIpLHJuKCJ0ZXh0IiwiXG4iKV19ZnVuY3Rpb24gcngoZSx0KXtsZXQgcj10LnZhbHVlP3QudmFsdWUrIlxuIjoiIixuPXQubGFuZyYmdC5sYW5nLm1hdGNoKC9eW14gXHRdKyg/PVsgXHRdfCQpLyksbz17fTtuJiYoby5jbGFzc05hbWU9WyJsYW5ndWFnZS0iK25dKTtsZXQgaT1lKHQsImNvZGUiLG8sW3JuKCJ0ZXh0IixyKV0pO3JldHVybiB0Lm1ldGEmJihpLmRhdGE9e21ldGE6dC5tZXRhfSksZSh0LnBvc2l0aW9uLCJwcmUiLFtpXSl9ZnVuY3Rpb24gclQoZSx0KXtyZXR1cm4gZSh0LCJkZWwiLHJiKGUsdCkpfWZ1bmN0aW9uIHJBKGUsdCl7cmV0dXJuIGUodCwiZW0iLHJiKGUsdCkpfWZ1bmN0aW9uIHJDKGUsdCl7bGV0IHI9ZS5mb290bm90ZU9yZGVyLG49U3RyaW5nKHQuaWRlbnRpZmllciksbz1yLmluZGV4T2YobiksaT1TdHJpbmcoLTE9PT1vP3IucHVzaChuKTpvKzEpO3JldHVybiBlKHQsImEiLHtocmVmOiIjZm4iK2ksY2xhc3NOYW1lOlsiZm9vdG5vdGUtcmVmIl0saWQ6ImZucmVmIitpLHJvbGU6ImRvYy1ub3RlcmVmIn0sW2UodC5wb3NpdGlvbiwic3VwIixbcm4oInRleHQiLGkpXSldKX1mdW5jdGlvbiByayhlLHQpe2xldCByPWUuZm9vdG5vdGVCeUlkLG49ZS5mb290bm90ZU9yZGVyLG89MTtmb3IoO28gaW4gcjspbysrO2xldCBpPVN0cmluZyhvKTtyZXR1cm4gbi5wdXNoKGkpLHJbaV09e3R5cGU6ImZvb3Rub3RlRGVmaW5pdGlvbiIsaWRlbnRpZmllcjppLGNoaWxkcmVuOlt7dHlwZToicGFyYWdyYXBoIixjaGlsZHJlbjp0LmNoaWxkcmVufV0scG9zaXRpb246dC5wb3NpdGlvbn0sckMoZSx7dHlwZToiZm9vdG5vdGVSZWZlcmVuY2UiLGlkZW50aWZpZXI6aSxwb3NpdGlvbjp0LnBvc2l0aW9ufSl9ZnVuY3Rpb24gck8oZSx0KXtyZXR1cm4gZSh0LCJoIit0LmRlcHRoLHJiKGUsdCkpfWZ1bmN0aW9uIHJSKGUsdCl7cmV0dXJuIGUuZGFuZ2Vyb3VzP2UuYXVnbWVudCh0LHJuKCJyYXciLHQudmFsdWUpKTpudWxsfXZhciByTj1yKCI3MDcyOSIpO2Z1bmN0aW9uIHJJKGUsdCl7bGV0IHI9dC5yZWZlcmVuY2VUeXBlLG49Il0iO2lmKCJjb2xsYXBzZWQiPT09cj9uKz0iW10iOiJmdWxsIj09PXImJihuKz0iWyIrKHQubGFiZWx8fHQuaWRlbnRpZmllcikrIl0iKSwiaW1hZ2VSZWZlcmVuY2UiPT09dC50eXBlKXJldHVybiBybigidGV4dCIsIiFbIit0LmFsdCtuKTtsZXQgbz1yYihlLHQpLGk9b1swXTtpJiYidGV4dCI9PT1pLnR5cGU/aS52YWx1ZT0iWyIraS52YWx1ZTpvLnVuc2hpZnQocm4oInRleHQiLCJbIikpO2xldCBhPW9bby5sZW5ndGgtMV07cmV0dXJuIGEmJiJ0ZXh0Ij09PWEudHlwZT9hLnZhbHVlKz1uOm8ucHVzaChybigidGV4dCIsbikpLG99ZnVuY3Rpb24gclAoZSl7bGV0IHQ9ZS5zcHJlYWQscj1lLmNoaWxkcmVuLG49LTE7Zm9yKDshdCYmKytuPHIubGVuZ3RoOyl0PXJNKHJbbl0pO3JldHVybiEhdH1mdW5jdGlvbiByTShlKXtsZXQgdD1lLnNwcmVhZDtyZXR1cm4gbnVsbD09dD9lLmNoaWxkcmVuLmxlbmd0aD4xOnR9bGV0IHJEPXtibG9ja3F1b3RlOnJTLGJyZWFrOnJ3LGNvZGU6cngsZGVsZXRlOnJULGVtcGhhc2lzOnJBLGZvb3Rub3RlUmVmZXJlbmNlOnJDLGZvb3Rub3RlOnJrLGhlYWRpbmc6ck8saHRtbDpyUixpbWFnZVJlZmVyZW5jZTpmdW5jdGlvbiBlKGUsdCl7bGV0IHI9ZS5kZWZpbml0aW9uKHQuaWRlbnRpZmllcik7aWYoIXIpcmV0dXJuIHJJKGUsdCk7bGV0IG49e3NyYzpyTihyLnVybHx8IiIpLGFsdDp0LmFsdH07cmV0dXJuIG51bGwhPT1yLnRpdGxlJiZ2b2lkIDAhPT1yLnRpdGxlJiYobi50aXRsZT1yLnRpdGxlKSxlKHQsImltZyIsbil9LGltYWdlOmZ1bmN0aW9uIGUoZSx0KXtsZXQgcj17c3JjOnJOKHQudXJsKSxhbHQ6dC5hbHR9O3JldHVybiBudWxsIT09dC50aXRsZSYmdm9pZCAwIT09dC50aXRsZSYmKHIudGl0bGU9dC50aXRsZSksZSh0LCJpbWciLHIpfSxpbmxpbmVDb2RlOmZ1bmN0aW9uIGUoZSx0KXtyZXR1cm4gZSh0LCJjb2RlIixbcm4oInRleHQiLHQudmFsdWUucmVwbGFjZSgvXHI/XG58XHIvZywiICIpKV0pfSxsaW5rUmVmZXJlbmNlOmZ1bmN0aW9uIGUoZSx0KXtsZXQgcj1lLmRlZmluaXRpb24odC5pZGVudGlmaWVyKTtpZighcilyZXR1cm4gckkoZSx0KTtsZXQgbj17aHJlZjpyTihyLnVybHx8IiIpfTtyZXR1cm4gbnVsbCE9PXIudGl0bGUmJnZvaWQgMCE9PXIudGl0bGUmJihuLnRpdGxlPXIudGl0bGUpLGUodCwiYSIsbixyYihlLHQpKX0sbGluazpmdW5jdGlvbiBlKGUsdCl7bGV0IHI9e2hyZWY6ck4odC51cmwpfTtyZXR1cm4gbnVsbCE9PXQudGl0bGUmJnZvaWQgMCE9PXQudGl0bGUmJihyLnRpdGxlPXQudGl0bGUpLGUodCwiYSIscixyYihlLHQpKX0sbGlzdEl0ZW06ZnVuY3Rpb24gZShlLHQscil7bGV0IG49cmIoZSx0KSxvPXI/clAocik6ck0odCksaT17fSxhPVtdO2lmKCJib29sZWFuIj09dHlwZW9mIHQuY2hlY2tlZCl7bGV0IHI7blswXSYmImVsZW1lbnQiPT09blswXS50eXBlJiYicCI9PT1uWzBdLnRhZ05hbWU/cj1uWzBdOihyPWUobnVsbCwicCIsW10pLG4udW5zaGlmdChyKSksci5jaGlsZHJlbi5sZW5ndGg+MCYmci5jaGlsZHJlbi51bnNoaWZ0KHJuKCJ0ZXh0IiwiICIpKSxyLmNoaWxkcmVuLnVuc2hpZnQoZShudWxsLCJpbnB1dCIse3R5cGU6ImNoZWNrYm94IixjaGVja2VkOnQuY2hlY2tlZCxkaXNhYmxlZDohMH0pKSxpLmNsYXNzTmFtZT1bInRhc2stbGlzdC1pdGVtIl19bGV0IHM9LTE7Zm9yKDsrK3M8bi5sZW5ndGg7KXtsZXQgZT1uW3NdOyhvfHwwIT09c3x8ImVsZW1lbnQiIT09ZS50eXBlfHwicCIhPT1lLnRhZ05hbWUpJiZhLnB1c2gocm4oInRleHQiLCJcbiIpKSwiZWxlbWVudCIhPT1lLnR5cGV8fCJwIiE9PWUudGFnTmFtZXx8bz9hLnB1c2goZSk6YS5wdXNoKC4uLmUuY2hpbGRyZW4pfWxldCBsPW5bbi5sZW5ndGgtMV07cmV0dXJuIGwmJihvfHwhKCJ0YWdOYW1lImluIGwpfHwicCIhPT1sLnRhZ05hbWUpJiZhLnB1c2gocm4oInRleHQiLCJcbiIpKSxlKHQsImxpIixpLGEpfSxsaXN0OnJFLHBhcmFncmFwaDpmdW5jdGlvbiBlKGUsdCl7cmV0dXJuIGUodCwicCIscmIoZSx0KSl9LHJvb3Q6ZnVuY3Rpb24gZShlLHQpe3JldHVybiBlLmF1Z21lbnQodCxybigicm9vdCIscnkocmIoZSx0KSkpKX0sc3Ryb25nOmZ1bmN0aW9uIGUoZSx0KXtyZXR1cm4gZSh0LCJzdHJvbmciLHJiKGUsdCkpfSx0YWJsZTpmdW5jdGlvbiBlKGUsdCl7bGV0IHI9dC5jaGlsZHJlbixuPS0xLG89dC5hbGlnbnx8W10saT1bXTtmb3IoOysrbjxyLmxlbmd0aDspe2xldCBhPXJbbl0uY2hpbGRyZW4scz0wPT09bj8idGgiOiJ0ZCIsbD10LmFsaWduP28ubGVuZ3RoOmEubGVuZ3RoLGM9W107Zm9yKDtsLS07KXtsZXQgdD1hW2xdO2NbbF09ZSh0LHMse2FsaWduOm9bbF19LHQ/cmIoZSx0KTpbXSl9aVtuXT1lKHJbbl0sInRyIixyeShjLCEwKSl9cmV0dXJuIGUodCwidGFibGUiLHJ5KFtlKGlbMF0ucG9zaXRpb24sInRoZWFkIixyeShbaVswXV0sITApKV0uY29uY2F0KGlbMV0/ZSh7c3RhcnQ6cmEoaVsxXSksZW5kOnJzKGlbaS5sZW5ndGgtMV0pfSwidGJvZHkiLHJ5KGkuc2xpY2UoMSksITApKTpbXSksITApKX0sdGV4dDpmdW5jdGlvbiBlKGUsdCl7cmV0dXJuIGUuYXVnbWVudCh0LHJuKCJ0ZXh0IixTdHJpbmcodC52YWx1ZSkucmVwbGFjZSgvWyBcdF0qKFxyP1xufFxyKVsgXHRdKi9nLCIkMSIpKSl9LHRoZW1hdGljQnJlYWs6cnYsdG9tbDpyTCx5YW1sOnJMLGRlZmluaXRpb246ckwsZm9vdG5vdGVEZWZpbml0aW9uOnJMfTtmdW5jdGlvbiByTCgpe3JldHVybiBudWxsfWxldCByRj17fS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiByQihlLHQpe2xldCByPXR8fHt9LG49ci5hbGxvd0Rhbmdlcm91c0h0bWx8fCExLG89e307cmV0dXJuIGEuZGFuZ2Vyb3VzPW4sYS5kZWZpbml0aW9uPXJkKGUpLGEuZm9vdG5vdGVCeUlkPW8sYS5mb290bm90ZU9yZGVyPVtdLGEuYXVnbWVudD1pLGEuaGFuZGxlcnM9ey4uLnJELC4uLnIuaGFuZGxlcnN9LGEudW5rbm93bkhhbmRsZXI9ci51bmtub3duSGFuZGxlcixhLnBhc3NUaHJvdWdoPXIucGFzc1Rocm91Z2gscmkoZSwiZm9vdG5vdGVEZWZpbml0aW9uIixlPT57bGV0IHQ9U3RyaW5nKGUuaWRlbnRpZmllcikudG9VcHBlckNhc2UoKTshckYuY2FsbChvLHQpJiYob1t0XT1lKX0pLGE7ZnVuY3Rpb24gaShlLHQpe2lmKGUmJiJkYXRhImluIGUmJmUuZGF0YSl7bGV0IHI9ZS5kYXRhO3IuaE5hbWUmJigiZWxlbWVudCIhPT10LnR5cGUmJih0PXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiIiLHByb3BlcnRpZXM6e30sY2hpbGRyZW46W119KSx0LnRhZ05hbWU9ci5oTmFtZSksImVsZW1lbnQiPT09dC50eXBlJiZyLmhQcm9wZXJ0aWVzJiYodC5wcm9wZXJ0aWVzPXsuLi50LnByb3BlcnRpZXMsLi4uci5oUHJvcGVydGllc30pLCJjaGlsZHJlbiJpbiB0JiZ0LmNoaWxkcmVuJiZyLmhDaGlsZHJlbiYmKHQuY2hpbGRyZW49ci5oQ2hpbGRyZW4pfWlmKGUpe2xldCByPSJ0eXBlImluIGU/ZTp7cG9zaXRpb246ZX07IXJjKHIpJiYodC5wb3NpdGlvbj17c3RhcnQ6cmEociksZW5kOnJzKHIpfSl9cmV0dXJuIHR9ZnVuY3Rpb24gYShlLHQscixuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShyKSYmKG49cixyPXt9KSxpKGUse3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6dCxwcm9wZXJ0aWVzOnJ8fHt9LGNoaWxkcmVuOm58fFtdfSl9fWZ1bmN0aW9uIHJqKGUsdCl7bGV0IHI9ckIoZSx0KSxuPXJoKHIsZSxudWxsKSxvPXJfKHIpO3JldHVybiBvJiZuLmNoaWxkcmVuLnB1c2gocm4oInRleHQiLCJcbiIpLG8pLEFycmF5LmlzQXJyYXkobik/e3R5cGU6InJvb3QiLGNoaWxkcmVuOm59Om59bGV0IHJVPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJiJydW4iaW4gZT9yeihlLHQpOnJHKGUpfTtmdW5jdGlvbiByeihlLHQpe3JldHVybihyLG4sbyk9PntlLnJ1bihyaihyLHQpLG4sZT0+e28oZSl9KX19ZnVuY3Rpb24gckcoZSl7cmV0dXJuIHQ9PnJqKHQsZSl9dmFyIHJIPXIoIjQ1Njk3Iik7Y2xhc3MgclZ7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMucHJvcGVydHk9ZSx0aGlzLm5vcm1hbD10LHImJih0aGlzLnNwYWNlPXIpfX1mdW5jdGlvbiBycShlLHQpe2xldCByPXt9LG49e30sbz0tMTtmb3IoOysrbzxlLmxlbmd0aDspT2JqZWN0LmFzc2lnbihyLGVbb10ucHJvcGVydHkpLE9iamVjdC5hc3NpZ24obixlW29dLm5vcm1hbCk7cmV0dXJuIG5ldyByVihyLG4sdCl9ZnVuY3Rpb24gclcoZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX1yVi5wcm90b3R5cGUucHJvcGVydHk9e30sclYucHJvdG90eXBlLm5vcm1hbD17fSxyVi5wcm90b3R5cGUuc3BhY2U9bnVsbDtjbGFzcyByWXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucHJvcGVydHk9ZSx0aGlzLmF0dHJpYnV0ZT10fX1yWS5wcm90b3R5cGUuc3BhY2U9bnVsbCxyWS5wcm90b3R5cGUuYm9vbGVhbj0hMSxyWS5wcm90b3R5cGUuYm9vbGVhbmlzaD0hMSxyWS5wcm90b3R5cGUub3ZlcmxvYWRlZEJvb2xlYW49ITEsclkucHJvdG90eXBlLm51bWJlcj0hMSxyWS5wcm90b3R5cGUuY29tbWFTZXBhcmF0ZWQ9ITEsclkucHJvdG90eXBlLnNwYWNlU2VwYXJhdGVkPSExLHJZLnByb3RvdHlwZS5jb21tYU9yU3BhY2VTZXBhcmF0ZWQ9ITEsclkucHJvdG90eXBlLm11c3RVc2VQcm9wZXJ0eT0hMSxyWS5wcm90b3R5cGUuZGVmaW5lZD0hMTtsZXQgcks9MCxyWj1yMigpLHJYPXIyKCksclE9cjIoKSxySj1yMigpLHIkPXIyKCkscjA9cjIoKSxyMT1yMigpO2Z1bmN0aW9uIHIyKCl7cmV0dXJuIDIqKisrckt9bGV0IHIzPU9iamVjdC5rZXlzKG8pO2NsYXNzIHI1IGV4dGVuZHMgcll7Y29uc3RydWN0b3IoZSx0LHIsbil7bGV0IGk9LTE7aWYoc3VwZXIoZSx0KSxyNih0aGlzLCJzcGFjZSIsbiksIm51bWJlciI9PXR5cGVvZiByKWZvcig7KytpPHIzLmxlbmd0aDspe2xldCBlPXIzW2ldO3I2KHRoaXMscjNbaV0sKHImb1tlXSk9PT1vW2VdKX19fWZ1bmN0aW9uIHI2KGUsdCxyKXtyJiYoZVt0XT1yKX1yNS5wcm90b3R5cGUuZGVmaW5lZD0hMDtsZXQgcjQ9e30uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gcjgoZSl7bGV0IHQ7bGV0IHI9e30sbj17fTtmb3IodCBpbiBlLnByb3BlcnRpZXMpaWYocjQuY2FsbChlLnByb3BlcnRpZXMsdCkpe2xldCBvPWUucHJvcGVydGllc1t0XSxpPW5ldyByNSh0LGUudHJhbnNmb3JtKGUuYXR0cmlidXRlc3x8e30sdCksbyxlLnNwYWNlKTtlLm11c3RVc2VQcm9wZXJ0eSYmZS5tdXN0VXNlUHJvcGVydHkuaW5jbHVkZXModCkmJihpLm11c3RVc2VQcm9wZXJ0eT0hMCksclt0XT1pLG5bclcodCldPXQsbltyVyhpLmF0dHJpYnV0ZSldPXR9cmV0dXJuIG5ldyByVihyLG4sZS5zcGFjZSl9bGV0IHI5PXI4KHtzcGFjZToieGxpbmsiLHRyYW5zZm9ybTooZSx0KT0+InhsaW5rOiIrdC5zbGljZSg1KS50b0xvd2VyQ2FzZSgpLHByb3BlcnRpZXM6e3hMaW5rQWN0dWF0ZTpudWxsLHhMaW5rQXJjUm9sZTpudWxsLHhMaW5rSHJlZjpudWxsLHhMaW5rUm9sZTpudWxsLHhMaW5rU2hvdzpudWxsLHhMaW5rVGl0bGU6bnVsbCx4TGlua1R5cGU6bnVsbH19KSxyNz1yOCh7c3BhY2U6InhtbCIsdHJhbnNmb3JtOihlLHQpPT4ieG1sOiIrdC5zbGljZSgzKS50b0xvd2VyQ2FzZSgpLHByb3BlcnRpZXM6e3htbExhbmc6bnVsbCx4bWxCYXNlOm51bGwseG1sU3BhY2U6bnVsbH19KTtmdW5jdGlvbiBuZShlLHQpe3JldHVybiB0IGluIGU/ZVt0XTp0fWZ1bmN0aW9uIG50KGUsdCl7cmV0dXJuIG5lKGUsdC50b0xvd2VyQ2FzZSgpKX1sZXQgbnI9cjgoe3NwYWNlOiJ4bWxucyIsYXR0cmlidXRlczp7eG1sbnN4bGluazoieG1sbnM6eGxpbmsifSx0cmFuc2Zvcm06bnQscHJvcGVydGllczp7eG1sbnM6bnVsbCx4bWxuc1hMaW5rOm51bGx9fSksbm49cjgoe3RyYW5zZm9ybTooZSx0KT0+InJvbGUiPT09dD90OiJhcmlhLSIrdC5zbGljZSg0KS50b0xvd2VyQ2FzZSgpLHByb3BlcnRpZXM6e2FyaWFBY3RpdmVEZXNjZW5kYW50Om51bGwsYXJpYUF0b21pYzpyWCxhcmlhQXV0b0NvbXBsZXRlOm51bGwsYXJpYUJ1c3k6clgsYXJpYUNoZWNrZWQ6clgsYXJpYUNvbENvdW50OnJKLGFyaWFDb2xJbmRleDpySixhcmlhQ29sU3BhbjpySixhcmlhQ29udHJvbHM6ciQsYXJpYUN1cnJlbnQ6bnVsbCxhcmlhRGVzY3JpYmVkQnk6ciQsYXJpYURldGFpbHM6bnVsbCxhcmlhRGlzYWJsZWQ6clgsYXJpYURyb3BFZmZlY3Q6ciQsYXJpYUVycm9yTWVzc2FnZTpudWxsLGFyaWFFeHBhbmRlZDpyWCxhcmlhRmxvd1RvOnIkLGFyaWFHcmFiYmVkOnJYLGFyaWFIYXNQb3B1cDpudWxsLGFyaWFIaWRkZW46clgsYXJpYUludmFsaWQ6bnVsbCxhcmlhS2V5U2hvcnRjdXRzOm51bGwsYXJpYUxhYmVsOm51bGwsYXJpYUxhYmVsbGVkQnk6ciQsYXJpYUxldmVsOnJKLGFyaWFMaXZlOm51bGwsYXJpYU1vZGFsOnJYLGFyaWFNdWx0aUxpbmU6clgsYXJpYU11bHRpU2VsZWN0YWJsZTpyWCxhcmlhT3JpZW50YXRpb246bnVsbCxhcmlhT3duczpyJCxhcmlhUGxhY2Vob2xkZXI6bnVsbCxhcmlhUG9zSW5TZXQ6ckosYXJpYVByZXNzZWQ6clgsYXJpYVJlYWRPbmx5OnJYLGFyaWFSZWxldmFudDpudWxsLGFyaWFSZXF1aXJlZDpyWCxhcmlhUm9sZURlc2NyaXB0aW9uOnIkLGFyaWFSb3dDb3VudDpySixhcmlhUm93SW5kZXg6ckosYXJpYVJvd1NwYW46ckosYXJpYVNlbGVjdGVkOnJYLGFyaWFTZXRTaXplOnJKLGFyaWFTb3J0Om51bGwsYXJpYVZhbHVlTWF4OnJKLGFyaWFWYWx1ZU1pbjpySixhcmlhVmFsdWVOb3c6ckosYXJpYVZhbHVlVGV4dDpudWxsLHJvbGU6bnVsbH19KSxubz1yOCh7c3BhY2U6Imh0bWwiLGF0dHJpYnV0ZXM6e2FjY2VwdGNoYXJzZXQ6ImFjY2VwdC1jaGFyc2V0IixjbGFzc25hbWU6ImNsYXNzIixodG1sZm9yOiJmb3IiLGh0dHBlcXVpdjoiaHR0cC1lcXVpdiJ9LHRyYW5zZm9ybTpudCxtdXN0VXNlUHJvcGVydHk6WyJjaGVja2VkIiwibXVsdGlwbGUiLCJtdXRlZCIsInNlbGVjdGVkIl0scHJvcGVydGllczp7YWJicjpudWxsLGFjY2VwdDpyMCxhY2NlcHRDaGFyc2V0OnIkLGFjY2Vzc0tleTpyJCxhY3Rpb246bnVsbCxhbGxvdzpudWxsLGFsbG93RnVsbFNjcmVlbjpyWixhbGxvd1BheW1lbnRSZXF1ZXN0OnJaLGFsbG93VXNlck1lZGlhOnJaLGFsdDpudWxsLGFzOm51bGwsYXN5bmM6closYXV0b0NhcGl0YWxpemU6bnVsbCxhdXRvQ29tcGxldGU6ciQsYXV0b0ZvY3VzOnJaLGF1dG9QbGF5OnJaLGJsb2NraW5nOnIkLGNhcHR1cmU6bnVsbCxjaGFyU2V0Om51bGwsY2hlY2tlZDpyWixjaXRlOm51bGwsY2xhc3NOYW1lOnIkLGNvbHM6ckosY29sU3BhbjpudWxsLGNvbnRlbnQ6bnVsbCxjb250ZW50RWRpdGFibGU6clgsY29udHJvbHM6closY29udHJvbHNMaXN0OnIkLGNvb3JkczpySnxyMCxjcm9zc09yaWdpbjpudWxsLGRhdGE6bnVsbCxkYXRlVGltZTpudWxsLGRlY29kaW5nOm51bGwsZGVmYXVsdDpyWixkZWZlcjpyWixkaXI6bnVsbCxkaXJOYW1lOm51bGwsZGlzYWJsZWQ6closZG93bmxvYWQ6clEsZHJhZ2dhYmxlOnJYLGVuY1R5cGU6bnVsbCxlbnRlcktleUhpbnQ6bnVsbCxmZXRjaFByaW9yaXR5Om51bGwsZm9ybTpudWxsLGZvcm1BY3Rpb246bnVsbCxmb3JtRW5jVHlwZTpudWxsLGZvcm1NZXRob2Q6bnVsbCxmb3JtTm9WYWxpZGF0ZTpyWixmb3JtVGFyZ2V0Om51bGwsaGVhZGVyczpyJCxoZWlnaHQ6ckosaGlkZGVuOnJaLGhpZ2g6ckosaHJlZjpudWxsLGhyZWZMYW5nOm51bGwsaHRtbEZvcjpyJCxodHRwRXF1aXY6ciQsaWQ6bnVsbCxpbWFnZVNpemVzOm51bGwsaW1hZ2VTcmNTZXQ6bnVsbCxpbmVydDpyWixpbnB1dE1vZGU6bnVsbCxpbnRlZ3JpdHk6bnVsbCxpczpudWxsLGlzTWFwOnJaLGl0ZW1JZDpudWxsLGl0ZW1Qcm9wOnIkLGl0ZW1SZWY6ciQsaXRlbVNjb3BlOnJaLGl0ZW1UeXBlOnIkLGtpbmQ6bnVsbCxsYWJlbDpudWxsLGxhbmc6bnVsbCxsYW5ndWFnZTpudWxsLGxpc3Q6bnVsbCxsb2FkaW5nOm51bGwsbG9vcDpyWixsb3c6ckosbWFuaWZlc3Q6bnVsbCxtYXg6bnVsbCxtYXhMZW5ndGg6ckosbWVkaWE6bnVsbCxtZXRob2Q6bnVsbCxtaW46bnVsbCxtaW5MZW5ndGg6ckosbXVsdGlwbGU6closbXV0ZWQ6closbmFtZTpudWxsLG5vbmNlOm51bGwsbm9Nb2R1bGU6closbm9WYWxpZGF0ZTpyWixvbkFib3J0Om51bGwsb25BZnRlclByaW50Om51bGwsb25BdXhDbGljazpudWxsLG9uQmVmb3JlTWF0Y2g6bnVsbCxvbkJlZm9yZVByaW50Om51bGwsb25CZWZvcmVUb2dnbGU6bnVsbCxvbkJlZm9yZVVubG9hZDpudWxsLG9uQmx1cjpudWxsLG9uQ2FuY2VsOm51bGwsb25DYW5QbGF5Om51bGwsb25DYW5QbGF5VGhyb3VnaDpudWxsLG9uQ2hhbmdlOm51bGwsb25DbGljazpudWxsLG9uQ2xvc2U6bnVsbCxvbkNvbnRleHRMb3N0Om51bGwsb25Db250ZXh0TWVudTpudWxsLG9uQ29udGV4dFJlc3RvcmVkOm51bGwsb25Db3B5Om51bGwsb25DdWVDaGFuZ2U6bnVsbCxvbkN1dDpudWxsLG9uRGJsQ2xpY2s6bnVsbCxvbkRyYWc6bnVsbCxvbkRyYWdFbmQ6bnVsbCxvbkRyYWdFbnRlcjpudWxsLG9uRHJhZ0V4aXQ6bnVsbCxvbkRyYWdMZWF2ZTpudWxsLG9uRHJhZ092ZXI6bnVsbCxvbkRyYWdTdGFydDpudWxsLG9uRHJvcDpudWxsLG9uRHVyYXRpb25DaGFuZ2U6bnVsbCxvbkVtcHRpZWQ6bnVsbCxvbkVuZGVkOm51bGwsb25FcnJvcjpudWxsLG9uRm9jdXM6bnVsbCxvbkZvcm1EYXRhOm51bGwsb25IYXNoQ2hhbmdlOm51bGwsb25JbnB1dDpudWxsLG9uSW52YWxpZDpudWxsLG9uS2V5RG93bjpudWxsLG9uS2V5UHJlc3M6bnVsbCxvbktleVVwOm51bGwsb25MYW5ndWFnZUNoYW5nZTpudWxsLG9uTG9hZDpudWxsLG9uTG9hZGVkRGF0YTpudWxsLG9uTG9hZGVkTWV0YWRhdGE6bnVsbCxvbkxvYWRFbmQ6bnVsbCxvbkxvYWRTdGFydDpudWxsLG9uTWVzc2FnZTpudWxsLG9uTWVzc2FnZUVycm9yOm51bGwsb25Nb3VzZURvd246bnVsbCxvbk1vdXNlRW50ZXI6bnVsbCxvbk1vdXNlTGVhdmU6bnVsbCxvbk1vdXNlTW92ZTpudWxsLG9uTW91c2VPdXQ6bnVsbCxvbk1vdXNlT3ZlcjpudWxsLG9uTW91c2VVcDpudWxsLG9uT2ZmbGluZTpudWxsLG9uT25saW5lOm51bGwsb25QYWdlSGlkZTpudWxsLG9uUGFnZVNob3c6bnVsbCxvblBhc3RlOm51bGwsb25QYXVzZTpudWxsLG9uUGxheTpudWxsLG9uUGxheWluZzpudWxsLG9uUG9wU3RhdGU6bnVsbCxvblByb2dyZXNzOm51bGwsb25SYXRlQ2hhbmdlOm51bGwsb25SZWplY3Rpb25IYW5kbGVkOm51bGwsb25SZXNldDpudWxsLG9uUmVzaXplOm51bGwsb25TY3JvbGw6bnVsbCxvblNjcm9sbEVuZDpudWxsLG9uU2VjdXJpdHlQb2xpY3lWaW9sYXRpb246bnVsbCxvblNlZWtlZDpudWxsLG9uU2Vla2luZzpudWxsLG9uU2VsZWN0Om51bGwsb25TbG90Q2hhbmdlOm51bGwsb25TdGFsbGVkOm51bGwsb25TdG9yYWdlOm51bGwsb25TdWJtaXQ6bnVsbCxvblN1c3BlbmQ6bnVsbCxvblRpbWVVcGRhdGU6bnVsbCxvblRvZ2dsZTpudWxsLG9uVW5oYW5kbGVkUmVqZWN0aW9uOm51bGwsb25VbmxvYWQ6bnVsbCxvblZvbHVtZUNoYW5nZTpudWxsLG9uV2FpdGluZzpudWxsLG9uV2hlZWw6bnVsbCxvcGVuOnJaLG9wdGltdW06ckoscGF0dGVybjpudWxsLHBpbmc6ciQscGxhY2Vob2xkZXI6bnVsbCxwbGF5c0lubGluZTpyWixwb3BvdmVyOm51bGwscG9wb3ZlclRhcmdldDpudWxsLHBvcG92ZXJUYXJnZXRBY3Rpb246bnVsbCxwb3N0ZXI6bnVsbCxwcmVsb2FkOm51bGwscmVhZE9ubHk6closcmVmZXJyZXJQb2xpY3k6bnVsbCxyZWw6ciQscmVxdWlyZWQ6closcmV2ZXJzZWQ6closcm93czpySixyb3dTcGFuOnJKLHNhbmRib3g6ciQsc2NvcGU6bnVsbCxzY29wZWQ6closc2VhbWxlc3M6closc2VsZWN0ZWQ6closc2hhZG93Um9vdENsb25hYmxlOnJaLHNoYWRvd1Jvb3REZWxlZ2F0ZXNGb2N1czpyWixzaGFkb3dSb290TW9kZTpudWxsLHNoYXBlOm51bGwsc2l6ZTpySixzaXplczpudWxsLHNsb3Q6bnVsbCxzcGFuOnJKLHNwZWxsQ2hlY2s6clgsc3JjOm51bGwsc3JjRG9jOm51bGwsc3JjTGFuZzpudWxsLHNyY1NldDpudWxsLHN0YXJ0OnJKLHN0ZXA6bnVsbCxzdHlsZTpudWxsLHRhYkluZGV4OnJKLHRhcmdldDpudWxsLHRpdGxlOm51bGwsdHJhbnNsYXRlOm51bGwsdHlwZTpudWxsLHR5cGVNdXN0TWF0Y2g6closdXNlTWFwOm51bGwsdmFsdWU6clgsd2lkdGg6ckosd3JhcDpudWxsLHdyaXRpbmdTdWdnZXN0aW9uczpudWxsLGFsaWduOm51bGwsYUxpbms6bnVsbCxhcmNoaXZlOnIkLGF4aXM6bnVsbCxiYWNrZ3JvdW5kOm51bGwsYmdDb2xvcjpudWxsLGJvcmRlcjpySixib3JkZXJDb2xvcjpudWxsLGJvdHRvbU1hcmdpbjpySixjZWxsUGFkZGluZzpudWxsLGNlbGxTcGFjaW5nOm51bGwsY2hhcjpudWxsLGNoYXJPZmY6bnVsbCxjbGFzc0lkOm51bGwsY2xlYXI6bnVsbCxjb2RlOm51bGwsY29kZUJhc2U6bnVsbCxjb2RlVHlwZTpudWxsLGNvbG9yOm51bGwsY29tcGFjdDpyWixkZWNsYXJlOnJaLGV2ZW50Om51bGwsZmFjZTpudWxsLGZyYW1lOm51bGwsZnJhbWVCb3JkZXI6bnVsbCxoU3BhY2U6ckosbGVmdE1hcmdpbjpySixsaW5rOm51bGwsbG9uZ0Rlc2M6bnVsbCxsb3dTcmM6bnVsbCxtYXJnaW5IZWlnaHQ6ckosbWFyZ2luV2lkdGg6ckosbm9SZXNpemU6closbm9IcmVmOnJaLG5vU2hhZGU6closbm9XcmFwOnJaLG9iamVjdDpudWxsLHByb2ZpbGU6bnVsbCxwcm9tcHQ6bnVsbCxyZXY6bnVsbCxyaWdodE1hcmdpbjpySixydWxlczpudWxsLHNjaGVtZTpudWxsLHNjcm9sbGluZzpyWCxzdGFuZGJ5Om51bGwsc3VtbWFyeTpudWxsLHRleHQ6bnVsbCx0b3BNYXJnaW46ckosdmFsdWVUeXBlOm51bGwsdmVyc2lvbjpudWxsLHZBbGlnbjpudWxsLHZMaW5rOm51bGwsdlNwYWNlOnJKLGFsbG93VHJhbnNwYXJlbmN5Om51bGwsYXV0b0NvcnJlY3Q6bnVsbCxhdXRvU2F2ZTpudWxsLGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlOnJaLGRpc2FibGVSZW1vdGVQbGF5YmFjazpyWixwcmVmaXg6bnVsbCxwcm9wZXJ0eTpudWxsLHJlc3VsdHM6ckosc2VjdXJpdHk6bnVsbCx1bnNlbGVjdGFibGU6bnVsbH19KSxuaT1yOCh7c3BhY2U6InN2ZyIsYXR0cmlidXRlczp7YWNjZW50SGVpZ2h0OiJhY2NlbnQtaGVpZ2h0IixhbGlnbm1lbnRCYXNlbGluZToiYWxpZ25tZW50LWJhc2VsaW5lIixhcmFiaWNGb3JtOiJhcmFiaWMtZm9ybSIsYmFzZWxpbmVTaGlmdDoiYmFzZWxpbmUtc2hpZnQiLGNhcEhlaWdodDoiY2FwLWhlaWdodCIsY2xhc3NOYW1lOiJjbGFzcyIsY2xpcFBhdGg6ImNsaXAtcGF0aCIsY2xpcFJ1bGU6ImNsaXAtcnVsZSIsY29sb3JJbnRlcnBvbGF0aW9uOiJjb2xvci1pbnRlcnBvbGF0aW9uIixjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLGNvbG9yUHJvZmlsZToiY29sb3ItcHJvZmlsZSIsY29sb3JSZW5kZXJpbmc6ImNvbG9yLXJlbmRlcmluZyIsY3Jvc3NPcmlnaW46ImNyb3Nzb3JpZ2luIixkYXRhVHlwZToiZGF0YXR5cGUiLGRvbWluYW50QmFzZWxpbmU6ImRvbWluYW50LWJhc2VsaW5lIixlbmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwtcnVsZSIsZmxvb2RDb2xvcjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0eSIsZm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNpemUiLGZvbnRTaXplQWRqdXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1zdHJldGNoIixmb250U3R5bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQiLGZvbnRXZWlnaHQ6ImZvbnQtd2VpZ2h0IixnbHlwaE5hbWU6ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIixocmVmTGFuZzoiaHJlZmxhbmciLGhvcml6QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3JpZ2luLXgiLGhvcml6T3JpZ2luWToiaG9yaXotb3JpZ2luLXkiLGltYWdlUmVuZGVyaW5nOiJpbWFnZS1yZW5kZXJpbmciLGxldHRlclNwYWNpbmc6ImxldHRlci1zcGFjaW5nIixsaWdodGluZ0NvbG9yOiJsaWdodGluZy1jb2xvciIsbWFya2VyRW5kOiJtYXJrZXItZW5kIixtYXJrZXJNaWQ6Im1hcmtlci1taWQiLG1hcmtlclN0YXJ0OiJtYXJrZXItc3RhcnQiLG5hdkRvd246Im5hdi1kb3duIixuYXZEb3duTGVmdDoibmF2LWRvd24tbGVmdCIsbmF2RG93blJpZ2h0OiJuYXYtZG93bi1yaWdodCIsbmF2TGVmdDoibmF2LWxlZnQiLG5hdk5leHQ6Im5hdi1uZXh0IixuYXZQcmV2OiJuYXYtcHJldiIsbmF2UmlnaHQ6Im5hdi1yaWdodCIsbmF2VXA6Im5hdi11cCIsbmF2VXBMZWZ0OiJuYXYtdXAtbGVmdCIsbmF2VXBSaWdodDoibmF2LXVwLXJpZ2h0IixvbkFib3J0OiJvbmFib3J0IixvbkFjdGl2YXRlOiJvbmFjdGl2YXRlIixvbkFmdGVyUHJpbnQ6Im9uYWZ0ZXJwcmludCIsb25CZWZvcmVQcmludDoib25iZWZvcmVwcmludCIsb25CZWdpbjoib25iZWdpbiIsb25DYW5jZWw6Im9uY2FuY2VsIixvbkNhblBsYXk6Im9uY2FucGxheSIsb25DYW5QbGF5VGhyb3VnaDoib25jYW5wbGF5dGhyb3VnaCIsb25DaGFuZ2U6Im9uY2hhbmdlIixvbkNsaWNrOiJvbmNsaWNrIixvbkNsb3NlOiJvbmNsb3NlIixvbkNvcHk6Im9uY29weSIsb25DdWVDaGFuZ2U6Im9uY3VlY2hhbmdlIixvbkN1dDoib25jdXQiLG9uRGJsQ2xpY2s6Im9uZGJsY2xpY2siLG9uRHJhZzoib25kcmFnIixvbkRyYWdFbmQ6Im9uZHJhZ2VuZCIsb25EcmFnRW50ZXI6Im9uZHJhZ2VudGVyIixvbkRyYWdFeGl0OiJvbmRyYWdleGl0IixvbkRyYWdMZWF2ZToib25kcmFnbGVhdmUiLG9uRHJhZ092ZXI6Im9uZHJhZ292ZXIiLG9uRHJhZ1N0YXJ0OiJvbmRyYWdzdGFydCIsb25Ecm9wOiJvbmRyb3AiLG9uRHVyYXRpb25DaGFuZ2U6Im9uZHVyYXRpb25jaGFuZ2UiLG9uRW1wdGllZDoib25lbXB0aWVkIixvbkVuZDoib25lbmQiLG9uRW5kZWQ6Im9uZW5kZWQiLG9uRXJyb3I6Im9uZXJyb3IiLG9uRm9jdXM6Im9uZm9jdXMiLG9uRm9jdXNJbjoib25mb2N1c2luIixvbkZvY3VzT3V0OiJvbmZvY3Vzb3V0Iixvbkhhc2hDaGFuZ2U6Im9uaGFzaGNoYW5nZSIsb25JbnB1dDoib25pbnB1dCIsb25JbnZhbGlkOiJvbmludmFsaWQiLG9uS2V5RG93bjoib25rZXlkb3duIixvbktleVByZXNzOiJvbmtleXByZXNzIixvbktleVVwOiJvbmtleXVwIixvbkxvYWQ6Im9ubG9hZCIsb25Mb2FkZWREYXRhOiJvbmxvYWRlZGRhdGEiLG9uTG9hZGVkTWV0YWRhdGE6Im9ubG9hZGVkbWV0YWRhdGEiLG9uTG9hZFN0YXJ0OiJvbmxvYWRzdGFydCIsb25NZXNzYWdlOiJvbm1lc3NhZ2UiLG9uTW91c2VEb3duOiJvbm1vdXNlZG93biIsb25Nb3VzZUVudGVyOiJvbm1vdXNlZW50ZXIiLG9uTW91c2VMZWF2ZToib25tb3VzZWxlYXZlIixvbk1vdXNlTW92ZToib25tb3VzZW1vdmUiLG9uTW91c2VPdXQ6Im9ubW91c2VvdXQiLG9uTW91c2VPdmVyOiJvbm1vdXNlb3ZlciIsb25Nb3VzZVVwOiJvbm1vdXNldXAiLG9uTW91c2VXaGVlbDoib25tb3VzZXdoZWVsIixvbk9mZmxpbmU6Im9ub2ZmbGluZSIsb25PbmxpbmU6Im9ub25saW5lIixvblBhZ2VIaWRlOiJvbnBhZ2VoaWRlIixvblBhZ2VTaG93OiJvbnBhZ2VzaG93IixvblBhc3RlOiJvbnBhc3RlIixvblBhdXNlOiJvbnBhdXNlIixvblBsYXk6Im9ucGxheSIsb25QbGF5aW5nOiJvbnBsYXlpbmciLG9uUG9wU3RhdGU6Im9ucG9wc3RhdGUiLG9uUHJvZ3Jlc3M6Im9ucHJvZ3Jlc3MiLG9uUmF0ZUNoYW5nZToib25yYXRlY2hhbmdlIixvblJlcGVhdDoib25yZXBlYXQiLG9uUmVzZXQ6Im9ucmVzZXQiLG9uUmVzaXplOiJvbnJlc2l6ZSIsb25TY3JvbGw6Im9uc2Nyb2xsIixvblNlZWtlZDoib25zZWVrZWQiLG9uU2Vla2luZzoib25zZWVraW5nIixvblNlbGVjdDoib25zZWxlY3QiLG9uU2hvdzoib25zaG93IixvblN0YWxsZWQ6Im9uc3RhbGxlZCIsb25TdG9yYWdlOiJvbnN0b3JhZ2UiLG9uU3VibWl0OiJvbnN1Ym1pdCIsb25TdXNwZW5kOiJvbnN1c3BlbmQiLG9uVGltZVVwZGF0ZToib250aW1ldXBkYXRlIixvblRvZ2dsZToib250b2dnbGUiLG9uVW5sb2FkOiJvbnVubG9hZCIsb25Wb2x1bWVDaGFuZ2U6Im9udm9sdW1lY2hhbmdlIixvbldhaXRpbmc6Im9ud2FpdGluZyIsb25ab29tOiJvbnpvb20iLG92ZXJsaW5lUG9zaXRpb246Im92ZXJsaW5lLXBvc2l0aW9uIixvdmVybGluZVRoaWNrbmVzczoib3ZlcmxpbmUtdGhpY2tuZXNzIixwYWludE9yZGVyOiJwYWludC1vcmRlciIscGFub3NlMToicGFub3NlLTEiLHBvaW50ZXJFdmVudHM6InBvaW50ZXItZXZlbnRzIixyZWZlcnJlclBvbGljeToicmVmZXJyZXJwb2xpY3kiLHJlbmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIsc2hhcGVSZW5kZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixzdG9wT3BhY2l0eToic3RvcC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRocm91Z2gtcG9zaXRpb24iLHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIixzdHJva2VEYXNoQXJyYXk6InN0cm9rZS1kYXNoYXJyYXkiLHN0cm9rZURhc2hPZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lQ2FwOiJzdHJva2UtbGluZWNhcCIsc3Ryb2tlTGluZUpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0ZXJMaW1pdDoic3Ryb2tlLW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5IixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIix0YWJJbmRleDoidGFiaW5kZXgiLHRleHRBbmNob3I6InRleHQtYW5jaG9yIix0ZXh0RGVjb3JhdGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0LXJlbmRlcmluZyIsdHJhbnNmb3JtT3JpZ2luOiJ0cmFuc2Zvcm0tb3JpZ2luIix0eXBlT2Y6InR5cGVvZiIsdW5kZXJsaW5lUG9zaXRpb246InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhpY2tuZXNzOiJ1bmRlcmxpbmUtdGhpY2tuZXNzIix1bmljb2RlQmlkaToidW5pY29kZS1iaWRpIix1bmljb2RlUmFuZ2U6InVuaWNvZGUtcmFuZ2UiLHVuaXRzUGVyRW06InVuaXRzLXBlci1lbSIsdkFscGhhYmV0aWM6InYtYWxwaGFiZXRpYyIsdkhhbmdpbmc6InYtaGFuZ2luZyIsdklkZW9ncmFwaGljOiJ2LWlkZW9ncmFwaGljIix2TWF0aGVtYXRpY2FsOiJ2LW1hdGhlbWF0aWNhbCIsdmVjdG9yRWZmZWN0OiJ2ZWN0b3ItZWZmZWN0Iix2ZXJ0QWR2WToidmVydC1hZHYteSIsdmVydE9yaWdpblg6InZlcnQtb3JpZ2luLXgiLHZlcnRPcmlnaW5ZOiJ2ZXJ0LW9yaWdpbi15Iix3b3JkU3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9kZToid3JpdGluZy1tb2RlIix4SGVpZ2h0OiJ4LWhlaWdodCIscGxheWJhY2tPcmRlcjoicGxheWJhY2tvcmRlciIsdGltZWxpbmVCZWdpbjoidGltZWxpbmViZWdpbiJ9LHRyYW5zZm9ybTpuZSxwcm9wZXJ0aWVzOnthYm91dDpyMSxhY2NlbnRIZWlnaHQ6ckosYWNjdW11bGF0ZTpudWxsLGFkZGl0aXZlOm51bGwsYWxpZ25tZW50QmFzZWxpbmU6bnVsbCxhbHBoYWJldGljOnJKLGFtcGxpdHVkZTpySixhcmFiaWNGb3JtOm51bGwsYXNjZW50OnJKLGF0dHJpYnV0ZU5hbWU6bnVsbCxhdHRyaWJ1dGVUeXBlOm51bGwsYXppbXV0aDpySixiYW5kd2lkdGg6bnVsbCxiYXNlbGluZVNoaWZ0Om51bGwsYmFzZUZyZXF1ZW5jeTpudWxsLGJhc2VQcm9maWxlOm51bGwsYmJveDpudWxsLGJlZ2luOm51bGwsYmlhczpySixieTpudWxsLGNhbGNNb2RlOm51bGwsY2FwSGVpZ2h0OnJKLGNsYXNzTmFtZTpyJCxjbGlwOm51bGwsY2xpcFBhdGg6bnVsbCxjbGlwUGF0aFVuaXRzOm51bGwsY2xpcFJ1bGU6bnVsbCxjb2xvcjpudWxsLGNvbG9ySW50ZXJwb2xhdGlvbjpudWxsLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6bnVsbCxjb2xvclByb2ZpbGU6bnVsbCxjb2xvclJlbmRlcmluZzpudWxsLGNvbnRlbnQ6bnVsbCxjb250ZW50U2NyaXB0VHlwZTpudWxsLGNvbnRlbnRTdHlsZVR5cGU6bnVsbCxjcm9zc09yaWdpbjpudWxsLGN1cnNvcjpudWxsLGN4Om51bGwsY3k6bnVsbCxkOm51bGwsZGF0YVR5cGU6bnVsbCxkZWZhdWx0QWN0aW9uOm51bGwsZGVzY2VudDpySixkaWZmdXNlQ29uc3RhbnQ6ckosZGlyZWN0aW9uOm51bGwsZGlzcGxheTpudWxsLGR1cjpudWxsLGRpdmlzb3I6ckosZG9taW5hbnRCYXNlbGluZTpudWxsLGRvd25sb2FkOnJaLGR4Om51bGwsZHk6bnVsbCxlZGdlTW9kZTpudWxsLGVkaXRhYmxlOm51bGwsZWxldmF0aW9uOnJKLGVuYWJsZUJhY2tncm91bmQ6bnVsbCxlbmQ6bnVsbCxldmVudDpudWxsLGV4cG9uZW50OnJKLGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6bnVsbCxmaWxsOm51bGwsZmlsbE9wYWNpdHk6ckosZmlsbFJ1bGU6bnVsbCxmaWx0ZXI6bnVsbCxmaWx0ZXJSZXM6bnVsbCxmaWx0ZXJVbml0czpudWxsLGZsb29kQ29sb3I6bnVsbCxmbG9vZE9wYWNpdHk6bnVsbCxmb2N1c2FibGU6bnVsbCxmb2N1c0hpZ2hsaWdodDpudWxsLGZvbnRGYW1pbHk6bnVsbCxmb250U2l6ZTpudWxsLGZvbnRTaXplQWRqdXN0Om51bGwsZm9udFN0cmV0Y2g6bnVsbCxmb250U3R5bGU6bnVsbCxmb250VmFyaWFudDpudWxsLGZvbnRXZWlnaHQ6bnVsbCxmb3JtYXQ6bnVsbCxmcjpudWxsLGZyb206bnVsbCxmeDpudWxsLGZ5Om51bGwsZzE6cjAsZzI6cjAsZ2x5cGhOYW1lOnIwLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOm51bGwsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOm51bGwsZ2x5cGhSZWY6bnVsbCxncmFkaWVudFRyYW5zZm9ybTpudWxsLGdyYWRpZW50VW5pdHM6bnVsbCxoYW5kbGVyOm51bGwsaGFuZ2luZzpySixoYXRjaENvbnRlbnRVbml0czpudWxsLGhhdGNoVW5pdHM6bnVsbCxoZWlnaHQ6bnVsbCxocmVmOm51bGwsaHJlZkxhbmc6bnVsbCxob3JpekFkdlg6ckosaG9yaXpPcmlnaW5YOnJKLGhvcml6T3JpZ2luWTpySixpZDpudWxsLGlkZW9ncmFwaGljOnJKLGltYWdlUmVuZGVyaW5nOm51bGwsaW5pdGlhbFZpc2liaWxpdHk6bnVsbCxpbjpudWxsLGluMjpudWxsLGludGVyY2VwdDpySixrOnJKLGsxOnJKLGsyOnJKLGszOnJKLGs0OnJKLGtlcm5lbE1hdHJpeDpyMSxrZXJuZWxVbml0TGVuZ3RoOm51bGwsa2V5UG9pbnRzOm51bGwsa2V5U3BsaW5lczpudWxsLGtleVRpbWVzOm51bGwsa2VybmluZzpudWxsLGxhbmc6bnVsbCxsZW5ndGhBZGp1c3Q6bnVsbCxsZXR0ZXJTcGFjaW5nOm51bGwsbGlnaHRpbmdDb2xvcjpudWxsLGxpbWl0aW5nQ29uZUFuZ2xlOnJKLGxvY2FsOm51bGwsbWFya2VyRW5kOm51bGwsbWFya2VyTWlkOm51bGwsbWFya2VyU3RhcnQ6bnVsbCxtYXJrZXJIZWlnaHQ6bnVsbCxtYXJrZXJVbml0czpudWxsLG1hcmtlcldpZHRoOm51bGwsbWFzazpudWxsLG1hc2tDb250ZW50VW5pdHM6bnVsbCxtYXNrVW5pdHM6bnVsbCxtYXRoZW1hdGljYWw6bnVsbCxtYXg6bnVsbCxtZWRpYTpudWxsLG1lZGlhQ2hhcmFjdGVyRW5jb2Rpbmc6bnVsbCxtZWRpYUNvbnRlbnRFbmNvZGluZ3M6bnVsbCxtZWRpYVNpemU6ckosbWVkaWFUaW1lOm51bGwsbWV0aG9kOm51bGwsbWluOm51bGwsbW9kZTpudWxsLG5hbWU6bnVsbCxuYXZEb3duOm51bGwsbmF2RG93bkxlZnQ6bnVsbCxuYXZEb3duUmlnaHQ6bnVsbCxuYXZMZWZ0Om51bGwsbmF2TmV4dDpudWxsLG5hdlByZXY6bnVsbCxuYXZSaWdodDpudWxsLG5hdlVwOm51bGwsbmF2VXBMZWZ0Om51bGwsbmF2VXBSaWdodDpudWxsLG51bU9jdGF2ZXM6bnVsbCxvYnNlcnZlcjpudWxsLG9mZnNldDpudWxsLG9uQWJvcnQ6bnVsbCxvbkFjdGl2YXRlOm51bGwsb25BZnRlclByaW50Om51bGwsb25CZWZvcmVQcmludDpudWxsLG9uQmVnaW46bnVsbCxvbkNhbmNlbDpudWxsLG9uQ2FuUGxheTpudWxsLG9uQ2FuUGxheVRocm91Z2g6bnVsbCxvbkNoYW5nZTpudWxsLG9uQ2xpY2s6bnVsbCxvbkNsb3NlOm51bGwsb25Db3B5Om51bGwsb25DdWVDaGFuZ2U6bnVsbCxvbkN1dDpudWxsLG9uRGJsQ2xpY2s6bnVsbCxvbkRyYWc6bnVsbCxvbkRyYWdFbmQ6bnVsbCxvbkRyYWdFbnRlcjpudWxsLG9uRHJhZ0V4aXQ6bnVsbCxvbkRyYWdMZWF2ZTpudWxsLG9uRHJhZ092ZXI6bnVsbCxvbkRyYWdTdGFydDpudWxsLG9uRHJvcDpudWxsLG9uRHVyYXRpb25DaGFuZ2U6bnVsbCxvbkVtcHRpZWQ6bnVsbCxvbkVuZDpudWxsLG9uRW5kZWQ6bnVsbCxvbkVycm9yOm51bGwsb25Gb2N1czpudWxsLG9uRm9jdXNJbjpudWxsLG9uRm9jdXNPdXQ6bnVsbCxvbkhhc2hDaGFuZ2U6bnVsbCxvbklucHV0Om51bGwsb25JbnZhbGlkOm51bGwsb25LZXlEb3duOm51bGwsb25LZXlQcmVzczpudWxsLG9uS2V5VXA6bnVsbCxvbkxvYWQ6bnVsbCxvbkxvYWRlZERhdGE6bnVsbCxvbkxvYWRlZE1ldGFkYXRhOm51bGwsb25Mb2FkU3RhcnQ6bnVsbCxvbk1lc3NhZ2U6bnVsbCxvbk1vdXNlRG93bjpudWxsLG9uTW91c2VFbnRlcjpudWxsLG9uTW91c2VMZWF2ZTpudWxsLG9uTW91c2VNb3ZlOm51bGwsb25Nb3VzZU91dDpudWxsLG9uTW91c2VPdmVyOm51bGwsb25Nb3VzZVVwOm51bGwsb25Nb3VzZVdoZWVsOm51bGwsb25PZmZsaW5lOm51bGwsb25PbmxpbmU6bnVsbCxvblBhZ2VIaWRlOm51bGwsb25QYWdlU2hvdzpudWxsLG9uUGFzdGU6bnVsbCxvblBhdXNlOm51bGwsb25QbGF5Om51bGwsb25QbGF5aW5nOm51bGwsb25Qb3BTdGF0ZTpudWxsLG9uUHJvZ3Jlc3M6bnVsbCxvblJhdGVDaGFuZ2U6bnVsbCxvblJlcGVhdDpudWxsLG9uUmVzZXQ6bnVsbCxvblJlc2l6ZTpudWxsLG9uU2Nyb2xsOm51bGwsb25TZWVrZWQ6bnVsbCxvblNlZWtpbmc6bnVsbCxvblNlbGVjdDpudWxsLG9uU2hvdzpudWxsLG9uU3RhbGxlZDpudWxsLG9uU3RvcmFnZTpudWxsLG9uU3VibWl0Om51bGwsb25TdXNwZW5kOm51bGwsb25UaW1lVXBkYXRlOm51bGwsb25Ub2dnbGU6bnVsbCxvblVubG9hZDpudWxsLG9uVm9sdW1lQ2hhbmdlOm51bGwsb25XYWl0aW5nOm51bGwsb25ab29tOm51bGwsb3BhY2l0eTpudWxsLG9wZXJhdG9yOm51bGwsb3JkZXI6bnVsbCxvcmllbnQ6bnVsbCxvcmllbnRhdGlvbjpudWxsLG9yaWdpbjpudWxsLG92ZXJmbG93Om51bGwsb3ZlcmxheTpudWxsLG92ZXJsaW5lUG9zaXRpb246ckosb3ZlcmxpbmVUaGlja25lc3M6ckoscGFpbnRPcmRlcjpudWxsLHBhbm9zZTE6bnVsbCxwYXRoOm51bGwscGF0aExlbmd0aDpySixwYXR0ZXJuQ29udGVudFVuaXRzOm51bGwscGF0dGVyblRyYW5zZm9ybTpudWxsLHBhdHRlcm5Vbml0czpudWxsLHBoYXNlOm51bGwscGluZzpyJCxwaXRjaDpudWxsLHBsYXliYWNrT3JkZXI6bnVsbCxwb2ludGVyRXZlbnRzOm51bGwscG9pbnRzOm51bGwscG9pbnRzQXRYOnJKLHBvaW50c0F0WTpySixwb2ludHNBdFo6ckoscHJlc2VydmVBbHBoYTpudWxsLHByZXNlcnZlQXNwZWN0UmF0aW86bnVsbCxwcmltaXRpdmVVbml0czpudWxsLHByb3BhZ2F0ZTpudWxsLHByb3BlcnR5OnIxLHI6bnVsbCxyYWRpdXM6bnVsbCxyZWZlcnJlclBvbGljeTpudWxsLHJlZlg6bnVsbCxyZWZZOm51bGwscmVsOnIxLHJldjpyMSxyZW5kZXJpbmdJbnRlbnQ6bnVsbCxyZXBlYXRDb3VudDpudWxsLHJlcGVhdER1cjpudWxsLHJlcXVpcmVkRXh0ZW5zaW9uczpyMSxyZXF1aXJlZEZlYXR1cmVzOnIxLHJlcXVpcmVkRm9udHM6cjEscmVxdWlyZWRGb3JtYXRzOnIxLHJlc291cmNlOm51bGwscmVzdGFydDpudWxsLHJlc3VsdDpudWxsLHJvdGF0ZTpudWxsLHJ4Om51bGwscnk6bnVsbCxzY2FsZTpudWxsLHNlZWQ6bnVsbCxzaGFwZVJlbmRlcmluZzpudWxsLHNpZGU6bnVsbCxzbG9wZTpudWxsLHNuYXBzaG90VGltZTpudWxsLHNwZWN1bGFyQ29uc3RhbnQ6ckosc3BlY3VsYXJFeHBvbmVudDpySixzcHJlYWRNZXRob2Q6bnVsbCxzcGFjaW5nOm51bGwsc3RhcnRPZmZzZXQ6bnVsbCxzdGREZXZpYXRpb246bnVsbCxzdGVtaDpudWxsLHN0ZW12Om51bGwsc3RpdGNoVGlsZXM6bnVsbCxzdG9wQ29sb3I6bnVsbCxzdG9wT3BhY2l0eTpudWxsLHN0cmlrZXRocm91Z2hQb3NpdGlvbjpySixzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOnJKLHN0cmluZzpudWxsLHN0cm9rZTpudWxsLHN0cm9rZURhc2hBcnJheTpyMSxzdHJva2VEYXNoT2Zmc2V0Om51bGwsc3Ryb2tlTGluZUNhcDpudWxsLHN0cm9rZUxpbmVKb2luOm51bGwsc3Ryb2tlTWl0ZXJMaW1pdDpySixzdHJva2VPcGFjaXR5OnJKLHN0cm9rZVdpZHRoOm51bGwsc3R5bGU6bnVsbCxzdXJmYWNlU2NhbGU6ckosc3luY0JlaGF2aW9yOm51bGwsc3luY0JlaGF2aW9yRGVmYXVsdDpudWxsLHN5bmNNYXN0ZXI6bnVsbCxzeW5jVG9sZXJhbmNlOm51bGwsc3luY1RvbGVyYW5jZURlZmF1bHQ6bnVsbCxzeXN0ZW1MYW5ndWFnZTpyMSx0YWJJbmRleDpySix0YWJsZVZhbHVlczpudWxsLHRhcmdldDpudWxsLHRhcmdldFg6ckosdGFyZ2V0WTpySix0ZXh0QW5jaG9yOm51bGwsdGV4dERlY29yYXRpb246bnVsbCx0ZXh0UmVuZGVyaW5nOm51bGwsdGV4dExlbmd0aDpudWxsLHRpbWVsaW5lQmVnaW46bnVsbCx0aXRsZTpudWxsLHRyYW5zZm9ybUJlaGF2aW9yOm51bGwsdHlwZTpudWxsLHR5cGVPZjpyMSx0bzpudWxsLHRyYW5zZm9ybTpudWxsLHRyYW5zZm9ybU9yaWdpbjpudWxsLHUxOm51bGwsdTI6bnVsbCx1bmRlcmxpbmVQb3NpdGlvbjpySix1bmRlcmxpbmVUaGlja25lc3M6ckosdW5pY29kZTpudWxsLHVuaWNvZGVCaWRpOm51bGwsdW5pY29kZVJhbmdlOm51bGwsdW5pdHNQZXJFbTpySix2YWx1ZXM6bnVsbCx2QWxwaGFiZXRpYzpySix2TWF0aGVtYXRpY2FsOnJKLHZlY3RvckVmZmVjdDpudWxsLHZIYW5naW5nOnJKLHZJZGVvZ3JhcGhpYzpySix2ZXJzaW9uOm51bGwsdmVydEFkdlk6ckosdmVydE9yaWdpblg6ckosdmVydE9yaWdpblk6ckosdmlld0JveDpudWxsLHZpZXdUYXJnZXQ6bnVsbCx2aXNpYmlsaXR5Om51bGwsd2lkdGg6bnVsbCx3aWR0aHM6bnVsbCx3b3JkU3BhY2luZzpudWxsLHdyaXRpbmdNb2RlOm51bGwseDpudWxsLHgxOm51bGwseDI6bnVsbCx4Q2hhbm5lbFNlbGVjdG9yOm51bGwseEhlaWdodDpySix5Om51bGwseTE6bnVsbCx5MjpudWxsLHlDaGFubmVsU2VsZWN0b3I6bnVsbCx6Om51bGwsem9vbUFuZFBhbjpudWxsfX0pLG5hPXJxKFtyNyxyOSxucixubixub10sImh0bWwiKSxucz1ycShbcjcscjksbnIsbm4sbmldLCJzdmciKTtmdW5jdGlvbiBubChlKXtpZihlLmFsbG93ZWRFbGVtZW50cyYmZS5kaXNhbGxvd2VkRWxlbWVudHMpdGhyb3cgVHlwZUVycm9yKCJPbmx5IG9uZSBvZiBgYWxsb3dlZEVsZW1lbnRzYCBhbmQgYGRpc2FsbG93ZWRFbGVtZW50c2Agc2hvdWxkIGJlIGRlZmluZWQiKTtpZihlLmFsbG93ZWRFbGVtZW50c3x8ZS5kaXNhbGxvd2VkRWxlbWVudHN8fGUuYWxsb3dFbGVtZW50KXJldHVybiB0PT57cmkodCwiZWxlbWVudCIsKHQscixuKT0+e2xldCBvO2xldCBpPW47aWYoZS5hbGxvd2VkRWxlbWVudHM/bz0hZS5hbGxvd2VkRWxlbWVudHMuaW5jbHVkZXModC50YWdOYW1lKTplLmRpc2FsbG93ZWRFbGVtZW50cyYmKG89ZS5kaXNhbGxvd2VkRWxlbWVudHMuaW5jbHVkZXModC50YWdOYW1lKSksIW8mJmUuYWxsb3dFbGVtZW50JiYibnVtYmVyIj09dHlwZW9mIHImJihvPSFlLmFsbG93RWxlbWVudCh0LHIsaSkpLG8mJiJudW1iZXIiPT10eXBlb2YgcilyZXR1cm4gZS51bndyYXBEaXNhbGxvd2VkJiZ0LmNoaWxkcmVuP2kuY2hpbGRyZW4uc3BsaWNlKHIsMSwuLi50LmNoaWxkcmVuKTppLmNoaWxkcmVuLnNwbGljZShyLDEpLHJ9KX19dmFyIG5jPXIoIjgyMTQzIik7ZnVuY3Rpb24gbnUoZSl7bGV0IHQ9ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYidGV4dCI9PT1lLnR5cGU/ZS52YWx1ZXx8IiI6ZTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJiIiPT09dC5yZXBsYWNlKC9bIFx0XG5cZlxyXS9nLCIiKX1sZXQgbmQ9L15kYXRhWy1cdy46XSskL2ksbnA9Ly1bYS16XS9nLG5mPS9bQS1aXS9nO2Z1bmN0aW9uIG5tKGUsdCl7bGV0IHI9clcodCksbj10LG89clk7aWYociBpbiBlLm5vcm1hbClyZXR1cm4gZS5wcm9wZXJ0eVtlLm5vcm1hbFtyXV07aWYoci5sZW5ndGg+NCYmImRhdGEiPT09ci5zbGljZSgwLDQpJiZuZC50ZXN0KHQpKXtpZigiLSI9PT10LmNoYXJBdCg0KSl7bGV0IGU9dC5zbGljZSg1KS5yZXBsYWNlKG5wLG5nKTtuPSJkYXRhIitlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSl9ZWxzZXtsZXQgZT10LnNsaWNlKDQpO2lmKCFucC50ZXN0KGUpKXtsZXQgcj1lLnJlcGxhY2UobmYsbmgpOyItIiE9PXIuY2hhckF0KDApJiYocj0iLSIrciksdD0iZGF0YSIrcn19bz1yNX1yZXR1cm4gbmV3IG8obix0KX1mdW5jdGlvbiBuaChlKXtyZXR1cm4iLSIrZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG5nKGUpe3JldHVybiBlLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpfWxldCBuYj17Y2xhc3NJZDoiY2xhc3NJRCIsZGF0YVR5cGU6ImRhdGF0eXBlIixpdGVtSWQ6Iml0ZW1JRCIsc3Ryb2tlRGFzaEFycmF5OiJzdHJva2VEYXNoYXJyYXkiLHN0cm9rZURhc2hPZmZzZXQ6InN0cm9rZURhc2hvZmZzZXQiLHN0cm9rZUxpbmVDYXA6InN0cm9rZUxpbmVjYXAiLHN0cm9rZUxpbmVKb2luOiJzdHJva2VMaW5lam9pbiIsc3Ryb2tlTWl0ZXJMaW1pdDoic3Ryb2tlTWl0ZXJsaW1pdCIsdHlwZU9mOiJ0eXBlb2YiLHhMaW5rQWN0dWF0ZToieGxpbmtBY3R1YXRlIix4TGlua0FyY1JvbGU6InhsaW5rQXJjcm9sZSIseExpbmtIcmVmOiJ4bGlua0hyZWYiLHhMaW5rUm9sZToieGxpbmtSb2xlIix4TGlua1Nob3c6InhsaW5rU2hvdyIseExpbmtUaXRsZToieGxpbmtUaXRsZSIseExpbmtUeXBlOiJ4bGlua1R5cGUiLHhtbG5zWExpbms6InhtbG5zWGxpbmsifTtmdW5jdGlvbiBudihlKXtyZXR1cm4gZS5qb2luKCIgIikudHJpbSgpfWZ1bmN0aW9uIG55KGUsdCl7bGV0IHI9dHx8e307cmV0dXJuKCIiPT09ZVtlLmxlbmd0aC0xXT9bLi4uZSwiIl06ZSkuam9pbigoci5wYWRSaWdodD8iICI6IiIpKyIsIisoITE9PT1yLnBhZExlZnQ/IiI6IiAiKSkudHJpbSgpfXZhciBuRT1yKCI1Nzg0OCIpO2xldCBuXz17fS5oYXNPd25Qcm9wZXJ0eSxuUz1uZXcgU2V0KFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKTtmdW5jdGlvbiBudyhlLHQpe2xldCByO2xldCBuPVtdLG89LTE7Zm9yKDsrK288dC5jaGlsZHJlbi5sZW5ndGg7KSJlbGVtZW50Ij09PShyPXQuY2hpbGRyZW5bb10pLnR5cGU/bi5wdXNoKG54KGUscixvLHQpKToidGV4dCI9PT1yLnR5cGU/KCJlbGVtZW50IiE9PXQudHlwZXx8IW5TLmhhcyh0LnRhZ05hbWUpfHwhbnUocikpJiZuLnB1c2goci52YWx1ZSk6InJhdyI9PT1yLnR5cGUmJiFlLm9wdGlvbnMuc2tpcEh0bWwmJm4ucHVzaChyLnZhbHVlKTtyZXR1cm4gbn1mdW5jdGlvbiBueChlLHQscixuKXtsZXQgbztsZXQgaT1lLm9wdGlvbnMsYT1lLnNjaGVtYSxsPXQudGFnTmFtZSxjPXt9LHU9YTtpZigiaHRtbCI9PT1hLnNwYWNlJiYic3ZnIj09PWwmJih1PW5zLGUuc2NoZW1hPXUpLHQucHJvcGVydGllcylmb3IobyBpbiB0LnByb3BlcnRpZXMpbl8uY2FsbCh0LnByb3BlcnRpZXMsbykmJm5DKGMsbyx0LnByb3BlcnRpZXNbb10sZSk7KCJvbCI9PT1sfHwidWwiPT09bCkmJmUubGlzdERlcHRoKys7bGV0IGQ9bncoZSx0KTsoIm9sIj09PWx8fCJ1bCI9PT1sKSYmZS5saXN0RGVwdGgtLSxlLnNjaGVtYT1hO2xldCBwPXQucG9zaXRpb258fHtzdGFydDp7bGluZTpudWxsLGNvbHVtbjpudWxsLG9mZnNldDpudWxsfSxlbmQ6e2xpbmU6bnVsbCxjb2x1bW46bnVsbCxvZmZzZXQ6bnVsbH19LGY9aS5jb21wb25lbnRzJiZuXy5jYWxsKGkuY29tcG9uZW50cyxsKT9pLmNvbXBvbmVudHNbbF06bCxtPSJzdHJpbmciPT10eXBlb2YgZnx8Zj09PXMuRnJhZ21lbnQ7aWYoIW5jLmlzVmFsaWRFbGVtZW50VHlwZShmKSl0aHJvdyBUeXBlRXJyb3IoYENvbXBvbmVudCBmb3IgbmFtZSBcYCR7bH1cYCBub3QgZGVmaW5lZCBvciBpcyBub3QgcmVuZGVyYWJsZWApO2lmKGMua2V5PVtsLHAuc3RhcnQubGluZSxwLnN0YXJ0LmNvbHVtbixyXS5qb2luKCItIiksImEiPT09bCYmaS5saW5rVGFyZ2V0JiYoYy50YXJnZXQ9ImZ1bmN0aW9uIj09dHlwZW9mIGkubGlua1RhcmdldD9pLmxpbmtUYXJnZXQoU3RyaW5nKGMuaHJlZnx8IiIpLHQuY2hpbGRyZW4sInN0cmluZyI9PXR5cGVvZiBjLnRpdGxlP2MudGl0bGU6bnVsbCk6aS5saW5rVGFyZ2V0KSwiYSI9PT1sJiZpLnRyYW5zZm9ybUxpbmtVcmkmJihjLmhyZWY9aS50cmFuc2Zvcm1MaW5rVXJpKFN0cmluZyhjLmhyZWZ8fCIiKSx0LmNoaWxkcmVuLCJzdHJpbmciPT10eXBlb2YgYy50aXRsZT9jLnRpdGxlOm51bGwpKSwhbSYmImNvZGUiPT09bCYmImVsZW1lbnQiPT09bi50eXBlJiYicHJlIiE9PW4udGFnTmFtZSYmKGMuaW5saW5lPSEwKSwhbSYmKCJoMSI9PT1sfHwiaDIiPT09bHx8ImgzIj09PWx8fCJoNCI9PT1sfHwiaDUiPT09bHx8Img2Ij09PWwpJiYoYy5sZXZlbD1OdW1iZXIucGFyc2VJbnQobC5jaGFyQXQoMSksMTApKSwiaW1nIj09PWwmJmkudHJhbnNmb3JtSW1hZ2VVcmkmJihjLnNyYz1pLnRyYW5zZm9ybUltYWdlVXJpKFN0cmluZyhjLnNyY3x8IiIpLFN0cmluZyhjLmFsdHx8IiIpLCJzdHJpbmciPT10eXBlb2YgYy50aXRsZT9jLnRpdGxlOm51bGwpKSwhbSYmImxpIj09PWwmJiJlbGVtZW50Ij09PW4udHlwZSl7bGV0IGU9blQodCk7Yy5jaGVja2VkPWUmJmUucHJvcGVydGllcz8hIWUucHJvcGVydGllcy5jaGVja2VkOm51bGwsYy5pbmRleD1uQShuLHQpLGMub3JkZXJlZD0ib2wiPT09bi50YWdOYW1lfXJldHVybiFtJiYoIm9sIj09PWx8fCJ1bCI9PT1sKSYmKGMub3JkZXJlZD0ib2wiPT09bCxjLmRlcHRoPWUubGlzdERlcHRoKSwoInRkIj09PWx8fCJ0aCI9PT1sKSYmKGMuYWxpZ24mJighYy5zdHlsZSYmKGMuc3R5bGU9e30pLGMuc3R5bGUudGV4dEFsaWduPWMuYWxpZ24sZGVsZXRlIGMuYWxpZ24pLCFtJiYoYy5pc0hlYWRlcj0idGgiPT09bCkpLCFtJiYidHIiPT09bCYmImVsZW1lbnQiPT09bi50eXBlJiYoYy5pc0hlYWRlcj0idGhlYWQiPT09bi50YWdOYW1lKSxpLnNvdXJjZVBvcyYmKGNbImRhdGEtc291cmNlcG9zIl09blIocCkpLCFtJiZpLnJhd1NvdXJjZVBvcyYmKGMuc291cmNlUG9zaXRpb249dC5wb3NpdGlvbiksIW0mJmkuaW5jbHVkZUVsZW1lbnRJbmRleCYmKGMuaW5kZXg9bkEobix0KSxjLnNpYmxpbmdDb3VudD1uQShuKSksIW0mJihjLm5vZGU9dCksZC5sZW5ndGg+MD9zLmNyZWF0ZUVsZW1lbnQoZixjLGQpOnMuY3JlYXRlRWxlbWVudChmLGMpfWZ1bmN0aW9uIG5UKGUpe2xldCB0PS0xO2Zvcig7Kyt0PGUuY2hpbGRyZW4ubGVuZ3RoOyl7bGV0IHI9ZS5jaGlsZHJlblt0XTtpZigiZWxlbWVudCI9PT1yLnR5cGUmJiJpbnB1dCI9PT1yLnRhZ05hbWUpcmV0dXJuIHJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbkEoZSx0KXtsZXQgcj0tMSxuPTA7Zm9yKDsrK3I8ZS5jaGlsZHJlbi5sZW5ndGgmJmUuY2hpbGRyZW5bcl0hPT10Oyl7OyJlbGVtZW50Ij09PWUuY2hpbGRyZW5bcl0udHlwZSYmbisrfXJldHVybiBufWZ1bmN0aW9uIG5DKGUsdCxyLG4pe2xldCBvPW5tKG4uc2NoZW1hLHQpLGk9cjtpZihudWxsIT1pJiZpPT1pKUFycmF5LmlzQXJyYXkoaSkmJihpPW8uY29tbWFTZXBhcmF0ZWQ/bnkoaSk6bnYoaSkpLCJzdHlsZSI9PT1vLnByb3BlcnR5JiYic3RyaW5nIj09dHlwZW9mIGkmJihpPW5rKGkpKSxvLnNwYWNlJiZvLnByb3BlcnR5P2Vbbl8uY2FsbChuYixvLnByb3BlcnR5KT9uYltvLnByb3BlcnR5XTpvLnByb3BlcnR5XT1pOm8uYXR0cmlidXRlJiYoZVtvLmF0dHJpYnV0ZV09aSl9ZnVuY3Rpb24gbmsoZSl7bGV0IHQ9e307dHJ5e25FKGUscil9Y2F0Y2h7fXJldHVybiB0O2Z1bmN0aW9uIHIoZSxyKXt0WygiLW1zLSI9PT1lLnNsaWNlKDAsNCk/YG1zLSR7ZS5zbGljZSg0KX1gOmUpLnJlcGxhY2UoLy0oW2Etel0pL2csbk8pXT1yfX1mdW5jdGlvbiBuTyhlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gblIoZSl7cmV0dXJuW2Uuc3RhcnQubGluZSwiOiIsZS5zdGFydC5jb2x1bW4sIi0iLGUuZW5kLmxpbmUsIjoiLGUuZW5kLmNvbHVtbl0ubWFwKGU9PlN0cmluZyhlKSkuam9pbigiIil9bGV0IG5OPXt9Lmhhc093blByb3BlcnR5LG5JPXtyZW5kZXJlcnM6e3RvOiJjb21wb25lbnRzIixpZDoiY2hhbmdlLXJlbmRlcmVycy10by1jb21wb25lbnRzIn0sYXN0UGx1Z2luczp7aWQ6InJlbW92ZS1idWdneS1odG1sLWluLW1hcmtkb3duLXBhcnNlciJ9LGFsbG93RGFuZ2Vyb3VzSHRtbDp7aWQ6InJlbW92ZS1idWdneS1odG1sLWluLW1hcmtkb3duLXBhcnNlciJ9LGVzY2FwZUh0bWw6e2lkOiJyZW1vdmUtYnVnZ3ktaHRtbC1pbi1tYXJrZG93bi1wYXJzZXIifSxzb3VyY2U6e3RvOiJjaGlsZHJlbiIsaWQ6ImNoYW5nZS1zb3VyY2UtdG8tY2hpbGRyZW4ifSxhbGxvd05vZGU6e3RvOiJhbGxvd0VsZW1lbnQiLGlkOiJyZXBsYWNlLWFsbG93bm9kZS1hbGxvd2VkdHlwZXMtYW5kLWRpc2FsbG93ZWR0eXBlcyJ9LGFsbG93ZWRUeXBlczp7dG86ImFsbG93ZWRFbGVtZW50cyIsaWQ6InJlcGxhY2UtYWxsb3dub2RlLWFsbG93ZWR0eXBlcy1hbmQtZGlzYWxsb3dlZHR5cGVzIn0sZGlzYWxsb3dlZFR5cGVzOnt0bzoiZGlzYWxsb3dlZEVsZW1lbnRzIixpZDoicmVwbGFjZS1hbGxvd25vZGUtYWxsb3dlZHR5cGVzLWFuZC1kaXNhbGxvd2VkdHlwZXMifSxpbmNsdWRlTm9kZUluZGV4Ont0bzoiaW5jbHVkZUVsZW1lbnRJbmRleCIsaWQ6ImNoYW5nZS1pbmNsdWRlbm9kZWluZGV4LXRvLWluY2x1ZGVlbGVtZW50aW5kZXgifX07ZnVuY3Rpb24gblAoZSl7Zm9yKGxldCB0IGluIG5JKW5OLmNhbGwobkksdCkmJm5OLmNhbGwoZSx0KSYmKG5JW3RdLGRlbGV0ZSBuSVt0XSk7bGV0IHQ9QigpLnVzZShycikudXNlKGUucmVtYXJrUGx1Z2luc3x8ZS5wbHVnaW5zfHxbXSkudXNlKHJVLHthbGxvd0Rhbmdlcm91c0h0bWw6ITB9KS51c2UoZS5yZWh5cGVQbHVnaW5zfHxbXSkudXNlKG5sLGUpLHI9bmV3IGs7InN0cmluZyI9PXR5cGVvZiBlLmNoaWxkcmVuP3IudmFsdWU9ZS5jaGlsZHJlbjp2b2lkIDAhPT1lLmNoaWxkcmVuJiZlLmNoaWxkcmVuO2xldCBuPXQucnVuU3luYyh0LnBhcnNlKHIpLHIpO2lmKCJyb290IiE9PW4udHlwZSl0aHJvdyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgYHJvb3RgIG5vZGUiKTtsZXQgbz1zLmNyZWF0ZUVsZW1lbnQocy5GcmFnbWVudCx7fSxudyh7b3B0aW9uczplLHNjaGVtYTpuYSxsaXN0RGVwdGg6MH0sbikpO3JldHVybiBlLmNsYXNzTmFtZSYmKG89cy5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ZS5jbGFzc05hbWV9LG8pKSxvfW5QLmRlZmF1bHRQcm9wcz17dHJhbnNmb3JtTGlua1VyaTphfSxuUC5wcm9wVHlwZXM9e2NoaWxkcmVuOnJILnN0cmluZyxjbGFzc05hbWU6ckguc3RyaW5nLGFsbG93RWxlbWVudDpySC5mdW5jLGFsbG93ZWRFbGVtZW50czpySC5hcnJheU9mKHJILnN0cmluZyksZGlzYWxsb3dlZEVsZW1lbnRzOnJILmFycmF5T2Yockguc3RyaW5nKSx1bndyYXBEaXNhbGxvd2VkOnJILmJvb2wscmVtYXJrUGx1Z2luczpySC5hcnJheU9mKHJILm9uZU9mVHlwZShbckgub2JqZWN0LHJILmZ1bmMsckguYXJyYXlPZihySC5vbmVPZlR5cGUoW3JILm9iamVjdCxySC5mdW5jXSkpXSkpLHJlaHlwZVBsdWdpbnM6ckguYXJyYXlPZihySC5vbmVPZlR5cGUoW3JILm9iamVjdCxySC5mdW5jLHJILmFycmF5T2Yockgub25lT2ZUeXBlKFtySC5vYmplY3QsckguZnVuY10pKV0pKSxzb3VyY2VQb3M6ckguYm9vbCxyYXdTb3VyY2VQb3M6ckguYm9vbCxza2lwSHRtbDpySC5ib29sLGluY2x1ZGVFbGVtZW50SW5kZXg6ckguYm9vbCx0cmFuc2Zvcm1MaW5rVXJpOnJILm9uZU9mVHlwZShbckguZnVuYyxySC5ib29sXSksbGlua1RhcmdldDpySC5vbmVPZlR5cGUoW3JILmZ1bmMsckguc3RyaW5nXSksdHJhbnNmb3JtSW1hZ2VVcmk6ckguZnVuYyxjb21wb25lbnRzOnJILm9iamVjdH19LDgyOTE3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5yKHQpLHIuZCh0LHtkZWZhdWx0OigpPT50dn0pO3ZhciBuPXIoIjIzMjMiKSxvPXIoIjc5OTQyIik7bGV0IGk9e3Rva2VuaXplOnkscGFydGlhbDohMH0sYT17dG9rZW5pemU6RSxwYXJ0aWFsOiEwfSxzPXt0b2tlbml6ZTpfLHBhcnRpYWw6ITB9LGw9e3Rva2VuaXplOlMscGFydGlhbDohMH0sYz17dG9rZW5pemU6dyxwYXJ0aWFsOiEwfSx1PXt0b2tlbml6ZTpiLHByZXZpb3VzOnh9LGQ9e3Rva2VuaXplOnYscHJldmlvdXM6VH0scD17dG9rZW5pemU6ZyxwcmV2aW91czpBfSxmPXt9LG09e3RleHQ6Zn0saD00ODtmb3IoO2g8MTIzOylmW2hdPXAsNTg9PSsraD9oPTY1OjkxPT09aCYmKGg9OTcpO2Z1bmN0aW9uIGcoZSx0LHIpe2xldCBuLGk7bGV0IGE9dGhpcztyZXR1cm4gcztmdW5jdGlvbiBzKHQpe3JldHVybiFDKHQpfHwhQS5jYWxsKGEsYS5wcmV2aW91cyl8fGsoYS5ldmVudHMpP3IodCk6KGUuZW50ZXIoImxpdGVyYWxBdXRvbGluayIpLGUuZW50ZXIoImxpdGVyYWxBdXRvbGlua0VtYWlsIiksbCh0KSl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gQyh0KT8oZS5jb25zdW1lKHQpLGwpOjY0PT09dD8oZS5jb25zdW1lKHQpLHUpOnIodCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gNDY9PT10P2UuY2hlY2soYyxwLGQpKHQpOjQ1PT09dHx8OTU9PT10fHwoMCxvLkgkKSh0KT8oaT0hMCxlLmNvbnN1bWUodCksdSk6cCh0KX1mdW5jdGlvbiBkKHQpe3JldHVybiBlLmNvbnN1bWUodCksbj0hMCx1fWZ1bmN0aW9uIHAocyl7cmV0dXJuIGkmJm4mJigwLG8uanYpKGEucHJldmlvdXMpPyhlLmV4aXQoImxpdGVyYWxBdXRvbGlua0VtYWlsIiksZS5leGl0KCJsaXRlcmFsQXV0b2xpbmsiKSx0KHMpKTpyKHMpfX1mdW5jdGlvbiBiKGUsdCxyKXtsZXQgbj10aGlzO3JldHVybiBvO2Z1bmN0aW9uIG8odCl7cmV0dXJuIDg3IT09dCYmMTE5IT09dHx8IXguY2FsbChuLG4ucHJldmlvdXMpfHxrKG4uZXZlbnRzKT9yKHQpOihlLmVudGVyKCJsaXRlcmFsQXV0b2xpbmsiKSxlLmVudGVyKCJsaXRlcmFsQXV0b2xpbmtXd3ciKSxlLmNoZWNrKGksZS5hdHRlbXB0KGEsZS5hdHRlbXB0KHMsbCkscikscikodCkpfWZ1bmN0aW9uIGwocil7cmV0dXJuIGUuZXhpdCgibGl0ZXJhbEF1dG9saW5rV3d3IiksZS5leGl0KCJsaXRlcmFsQXV0b2xpbmsiKSx0KHIpfX1mdW5jdGlvbiB2KGUsdCxyKXtsZXQgbj10aGlzLGk9IiIsbD0hMTtyZXR1cm4gYztmdW5jdGlvbiBjKHQpe3JldHVybig3Mj09PXR8fDEwND09PXQpJiZULmNhbGwobixuLnByZXZpb3VzKSYmIWsobi5ldmVudHMpPyhlLmVudGVyKCJsaXRlcmFsQXV0b2xpbmsiKSxlLmVudGVyKCJsaXRlcmFsQXV0b2xpbmtIdHRwIiksaSs9U3RyaW5nLmZyb21Db2RlUG9pbnQodCksZS5jb25zdW1lKHQpLHUpOnIodCl9ZnVuY3Rpb24gdSh0KXtpZigoMCxvLmp2KSh0KSYmaS5sZW5ndGg8NSlyZXR1cm4gaSs9U3RyaW5nLmZyb21Db2RlUG9pbnQodCksZS5jb25zdW1lKHQpLHU7aWYoNTg9PT10KXtsZXQgcj1pLnRvTG93ZXJDYXNlKCk7aWYoImh0dHAiPT09cnx8Imh0dHBzIj09PXIpcmV0dXJuIGUuY29uc3VtZSh0KSxkfXJldHVybiByKHQpfWZ1bmN0aW9uIGQodCl7aWYoNDc9PT10KXJldHVybihlLmNvbnN1bWUodCksbCk/cDoobD0hMCxkKTtyZXR1cm4gcih0KX1mdW5jdGlvbiBwKHQpe3JldHVybiBudWxsPT09dHx8KDAsby5BdikodCl8fCgwLG8uejMpKHQpfHwoMCxvLkI4KSh0KXx8KDAsby5YaCkodCk/cih0KTplLmF0dGVtcHQoYSxlLmF0dGVtcHQocyxmKSxyKSh0KX1mdW5jdGlvbiBmKHIpe3JldHVybiBlLmV4aXQoImxpdGVyYWxBdXRvbGlua0h0dHAiKSxlLmV4aXQoImxpdGVyYWxBdXRvbGluayIpLHQocil9fWZ1bmN0aW9uIHkoZSx0LHIpe2xldCBuPTA7cmV0dXJuIG87ZnVuY3Rpb24gbyh0KXtyZXR1cm4oODc9PT10fHwxMTk9PT10KSYmbjwzPyhuKyssZS5jb25zdW1lKHQpLG8pOjQ2PT09dCYmMz09PW4/KGUuY29uc3VtZSh0KSxpKTpyKHQpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG51bGw9PT1lP3IoZSk6dChlKX19ZnVuY3Rpb24gRShlLHQscil7bGV0IG4saSxhO3JldHVybiBzO2Z1bmN0aW9uIHModCl7cmV0dXJuIDQ2PT09dHx8OTU9PT10P2UuY2hlY2sobCx1LGMpKHQpOm51bGw9PT10fHwoMCxvLnozKSh0KXx8KDAsby5COCkodCl8fDQ1IT09dCYmKDAsby5YaCkodCk/dSh0KTooYT0hMCxlLmNvbnN1bWUodCkscyl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gOTU9PT10P249ITA6KGk9bixuPXZvaWQgMCksZS5jb25zdW1lKHQpLHN9ZnVuY3Rpb24gdShlKXtyZXR1cm4gaXx8bnx8IWE/cihlKTp0KGUpfX1mdW5jdGlvbiBfKGUsdCl7bGV0IHI9MCxuPTA7cmV0dXJuIGk7ZnVuY3Rpb24gaShzKXtyZXR1cm4gNDA9PT1zPyhyKyssZS5jb25zdW1lKHMpLGkpOjQxPT09cyYmbjxyP2Eocyk6MzM9PT1zfHwzND09PXN8fDM4PT09c3x8Mzk9PT1zfHw0MT09PXN8fDQyPT09c3x8NDQ9PT1zfHw0Nj09PXN8fDU4PT09c3x8NTk9PT1zfHw2MD09PXN8fDYzPT09c3x8OTM9PT1zfHw5NT09PXN8fDEyNj09PXM/ZS5jaGVjayhsLHQsYSkocyk6bnVsbD09PXN8fCgwLG8uejMpKHMpfHwoMCxvLkI4KShzKT90KHMpOihlLmNvbnN1bWUocyksaSl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gNDE9PT10JiZuKyssZS5jb25zdW1lKHQpLGl9fWZ1bmN0aW9uIFMoZSx0LHIpe3JldHVybiBuO2Z1bmN0aW9uIG4ocyl7cmV0dXJuIDMzPT09c3x8MzQ9PT1zfHwzOT09PXN8fDQxPT09c3x8NDI9PT1zfHw0ND09PXN8fDQ2PT09c3x8NTg9PT1zfHw1OT09PXN8fDYzPT09c3x8OTU9PT1zfHwxMjY9PT1zPyhlLmNvbnN1bWUocyksbik6Mzg9PT1zPyhlLmNvbnN1bWUocyksYSk6OTM9PT1zPyhlLmNvbnN1bWUocyksaSk6NjA9PT1zfHxudWxsPT09c3x8KDAsby56Mykocyl8fCgwLG8uQjgpKHMpP3Qocyk6cihzKX1mdW5jdGlvbiBpKGUpe3JldHVybiBudWxsPT09ZXx8NDA9PT1lfHw5MT09PWV8fCgwLG8uejMpKGUpfHwoMCxvLkI4KShlKT90KGUpOm4oZSl9ZnVuY3Rpb24gYShlKXtyZXR1cm4oMCxvLmp2KShlKT9zKGUpOnIoZSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gNTk9PT10PyhlLmNvbnN1bWUodCksbik6KDAsby5qdikodCk/KGUuY29uc3VtZSh0KSxzKTpyKHQpfX1mdW5jdGlvbiB3KGUsdCxyKXtyZXR1cm4gbjtmdW5jdGlvbiBuKHQpe3JldHVybiBlLmNvbnN1bWUodCksaX1mdW5jdGlvbiBpKGUpe3JldHVybigwLG8uSCQpKGUpP3IoZSk6dChlKX19ZnVuY3Rpb24geChlKXtyZXR1cm4gbnVsbD09PWV8fDQwPT09ZXx8NDI9PT1lfHw5NT09PWV8fDkxPT09ZXx8OTM9PT1lfHwxMjY9PT1lfHwoMCxvLnozKShlKX1mdW5jdGlvbiBUKGUpe3JldHVybiEoMCxvLmp2KShlKX1mdW5jdGlvbiBBKGUpe3JldHVybiEoNDc9PT1lfHxDKGUpKX1mdW5jdGlvbiBDKGUpe3JldHVybiA0Mz09PWV8fDQ1PT09ZXx8NDY9PT1lfHw5NT09PWV8fCgwLG8uSCQpKGUpfWZ1bmN0aW9uIGsoZSl7bGV0IHQ9ZS5sZW5ndGgscj0hMTtmb3IoO3QtLTspe2xldCBuPWVbdF1bMV07aWYoKCJsYWJlbExpbmsiPT09bi50eXBlfHwibGFiZWxJbWFnZSI9PT1uLnR5cGUpJiYhbi5fYmFsYW5jZWQpe3I9ITA7YnJlYWt9aWYobi5fZ2ZtQXV0b2xpbmtMaXRlcmFsV2Fsa2VkSW50byl7cj0hMTticmVha319cmV0dXJuIGUubGVuZ3RoPjAmJiFyJiYoZVtlLmxlbmd0aC0xXVsxXS5fZ2ZtQXV0b2xpbmtMaXRlcmFsV2Fsa2VkSW50bz0hMCkscn1mWzQzXT1wLGZbNDVdPXAsZls0Nl09cCxmWzk1XT1wLGZbNzJdPVtwLGRdLGZbMTA0XT1bcCxkXSxmWzg3XT1bcCx1XSxmWzExOV09W3AsdV07dmFyIE89cigiNTI4NDIiKSxSPXIoIjE0MzAwIiksTj1yKCIxMTg0NyIpO2xldCBJPXt0b2tlbml6ZTpVLHBhcnRpYWw6ITB9O2Z1bmN0aW9uIFAoKXtyZXR1cm57ZG9jdW1lbnQ6ezkxOnt0b2tlbml6ZTpGLGNvbnRpbnVhdGlvbjp7dG9rZW5pemU6Qn0sZXhpdDpqfX0sdGV4dDp7OTE6e3Rva2VuaXplOkx9LDkzOnthZGQ6ImFmdGVyIix0b2tlbml6ZTpNLHJlc29sdmVUbzpEfX19fWZ1bmN0aW9uIE0oZSx0LHIpe2xldCBuO2xldCBvPXRoaXMsaT1vLmV2ZW50cy5sZW5ndGgsYT1vLnBhcnNlci5nZm1Gb290bm90ZXN8fChvLnBhcnNlci5nZm1Gb290bm90ZXM9W10pO2Zvcig7aS0tOyl7bGV0IGU9by5ldmVudHNbaV1bMV07aWYoImxhYmVsSW1hZ2UiPT09ZS50eXBlKXtuPWU7YnJlYWt9aWYoImdmbUZvb3Rub3RlQ2FsbCI9PT1lLnR5cGV8fCJsYWJlbExpbmsiPT09ZS50eXBlfHwibGFiZWwiPT09ZS50eXBlfHwiaW1hZ2UiPT09ZS50eXBlfHwibGluayI9PT1lLnR5cGUpYnJlYWt9cmV0dXJuIHM7ZnVuY3Rpb24gcyhpKXtpZighbnx8IW4uX2JhbGFuY2VkKXJldHVybiByKGkpO2xldCBzPSgwLE4uZCkoby5zbGljZVNlcmlhbGl6ZSh7c3RhcnQ6bi5lbmQsZW5kOm8ubm93KCl9KSk7cmV0dXJuIDk0PT09cy5jb2RlUG9pbnRBdCgwKSYmYS5pbmNsdWRlcyhzLnNsaWNlKDEpKT8oZS5lbnRlcigiZ2ZtRm9vdG5vdGVDYWxsTGFiZWxNYXJrZXIiKSxlLmNvbnN1bWUoaSksZS5leGl0KCJnZm1Gb290bm90ZUNhbGxMYWJlbE1hcmtlciIpLHQoaSkpOnIoaSl9fWZ1bmN0aW9uIEQoZSx0KXtsZXQgcixuPWUubGVuZ3RoO2Zvcig7bi0tOylpZigibGFiZWxJbWFnZSI9PT1lW25dWzFdLnR5cGUmJiJlbnRlciI9PT1lW25dWzBdKXtyPWVbbl1bMV07YnJlYWt9ZVtuKzFdWzFdLnR5cGU9ImRhdGEiLGVbbiszXVsxXS50eXBlPSJnZm1Gb290bm90ZUNhbGxMYWJlbE1hcmtlciI7bGV0IG89e3R5cGU6ImdmbUZvb3Rub3RlQ2FsbCIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxlW24rM11bMV0uc3RhcnQpLGVuZDpPYmplY3QuYXNzaWduKHt9LGVbZS5sZW5ndGgtMV1bMV0uZW5kKX0saT17dHlwZToiZ2ZtRm9vdG5vdGVDYWxsTWFya2VyIixzdGFydDpPYmplY3QuYXNzaWduKHt9LGVbbiszXVsxXS5lbmQpLGVuZDpPYmplY3QuYXNzaWduKHt9LGVbbiszXVsxXS5lbmQpfTtpLmVuZC5jb2x1bW4rKyxpLmVuZC5vZmZzZXQrKyxpLmVuZC5fYnVmZmVySW5kZXgrKztsZXQgYT17dHlwZToiZ2ZtRm9vdG5vdGVDYWxsU3RyaW5nIixzdGFydDpPYmplY3QuYXNzaWduKHt9LGkuZW5kKSxlbmQ6T2JqZWN0LmFzc2lnbih7fSxlW2UubGVuZ3RoLTFdWzFdLnN0YXJ0KX0scz17dHlwZToiY2h1bmtTdHJpbmciLGNvbnRlbnRUeXBlOiJzdHJpbmciLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sYS5zdGFydCksZW5kOk9iamVjdC5hc3NpZ24oe30sYS5lbmQpfSxsPVtlW24rMV0sZVtuKzJdLFsiZW50ZXIiLG8sdF0sZVtuKzNdLGVbbis0XSxbImVudGVyIixpLHRdLFsiZXhpdCIsaSx0XSxbImVudGVyIixhLHRdLFsiZW50ZXIiLHMsdF0sWyJleGl0IixzLHRdLFsiZXhpdCIsYSx0XSxlW2UubGVuZ3RoLTJdLGVbZS5sZW5ndGgtMV0sWyJleGl0IixvLHRdXTtyZXR1cm4gZS5zcGxpY2UobixlLmxlbmd0aC1uKzEsLi4ubCksZX1mdW5jdGlvbiBMKGUsdCxyKXtsZXQgbjtsZXQgaT10aGlzLGE9aS5wYXJzZXIuZ2ZtRm9vdG5vdGVzfHwoaS5wYXJzZXIuZ2ZtRm9vdG5vdGVzPVtdKSxzPTA7cmV0dXJuIGw7ZnVuY3Rpb24gbCh0KXtyZXR1cm4gZS5lbnRlcigiZ2ZtRm9vdG5vdGVDYWxsIiksZS5lbnRlcigiZ2ZtRm9vdG5vdGVDYWxsTGFiZWxNYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJnZm1Gb290bm90ZUNhbGxMYWJlbE1hcmtlciIpLGN9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gOTQhPT10P3IodCk6KGUuZW50ZXIoImdmbUZvb3Rub3RlQ2FsbE1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImdmbUZvb3Rub3RlQ2FsbE1hcmtlciIpLGUuZW50ZXIoImdmbUZvb3Rub3RlQ2FsbFN0cmluZyIpLGUuZW50ZXIoImNodW5rU3RyaW5nIikuY29udGVudFR5cGU9InN0cmluZyIsdSl9ZnVuY3Rpb24gdShsKXtpZihzPjk5OXx8OTM9PT1sJiYhbnx8bnVsbD09PWx8fDkxPT09bHx8KDAsby56MykobCkpcmV0dXJuIHIobCk7aWYoOTM9PT1sKXtlLmV4aXQoImNodW5rU3RyaW5nIik7bGV0IG49ZS5leGl0KCJnZm1Gb290bm90ZUNhbGxTdHJpbmciKTtyZXR1cm4gYS5pbmNsdWRlcygoMCxOLmQpKGkuc2xpY2VTZXJpYWxpemUobikpKT8oZS5lbnRlcigiZ2ZtRm9vdG5vdGVDYWxsTGFiZWxNYXJrZXIiKSxlLmNvbnN1bWUobCksZS5leGl0KCJnZm1Gb290bm90ZUNhbGxMYWJlbE1hcmtlciIpLGUuZXhpdCgiZ2ZtRm9vdG5vdGVDYWxsIiksdCk6cihsKX1yZXR1cm4hKDAsby56MykobCkmJihuPSEwKSxzKyssZS5jb25zdW1lKGwpLDkyPT09bD9kOnV9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gOTE9PT10fHw5Mj09PXR8fDkzPT09dD8oZS5jb25zdW1lKHQpLHMrKyx1KTp1KHQpfX1mdW5jdGlvbiBGKGUsdCxyKXtsZXQgbixpO2xldCBhPXRoaXMscz1hLnBhcnNlci5nZm1Gb290bm90ZXN8fChhLnBhcnNlci5nZm1Gb290bm90ZXM9W10pLGw9MDtyZXR1cm4gYztmdW5jdGlvbiBjKHQpe3JldHVybiBlLmVudGVyKCJnZm1Gb290bm90ZURlZmluaXRpb24iKS5fY29udGFpbmVyPSEwLGUuZW50ZXIoImdmbUZvb3Rub3RlRGVmaW5pdGlvbkxhYmVsIiksZS5lbnRlcigiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uTGFiZWxNYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbE1hcmtlciIpLHV9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gOTQ9PT10PyhlLmVudGVyKCJnZm1Gb290bm90ZURlZmluaXRpb25NYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJnZm1Gb290bm90ZURlZmluaXRpb25NYXJrZXIiKSxlLmVudGVyKCJnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbFN0cmluZyIpLGUuZW50ZXIoImNodW5rU3RyaW5nIikuY29udGVudFR5cGU9InN0cmluZyIsZCk6cih0KX1mdW5jdGlvbiBkKHQpe2lmKGw+OTk5fHw5Mz09PXQmJiFpfHxudWxsPT09dHx8OTE9PT10fHwoMCxvLnozKSh0KSlyZXR1cm4gcih0KTtpZig5Mz09PXQpe2UuZXhpdCgiY2h1bmtTdHJpbmciKTtsZXQgcj1lLmV4aXQoImdmbUZvb3Rub3RlRGVmaW5pdGlvbkxhYmVsU3RyaW5nIik7cmV0dXJuIG49KDAsTi5kKShhLnNsaWNlU2VyaWFsaXplKHIpKSxlLmVudGVyKCJnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbE1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImdmbUZvb3Rub3RlRGVmaW5pdGlvbkxhYmVsTWFya2VyIiksZS5leGl0KCJnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbCIpLGZ9cmV0dXJuISgwLG8uejMpKHQpJiYoaT0hMCksbCsrLGUuY29uc3VtZSh0KSw5Mj09PXQ/cDpkfWZ1bmN0aW9uIHAodCl7cmV0dXJuIDkxPT09dHx8OTI9PT10fHw5Mz09PXQ/KGUuY29uc3VtZSh0KSxsKyssZCk6ZCh0KX1mdW5jdGlvbiBmKHQpe3JldHVybiA1OD09PXQ/KGUuZW50ZXIoImRlZmluaXRpb25NYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJkZWZpbml0aW9uTWFya2VyIiksIXMuaW5jbHVkZXMobikmJnMucHVzaChuKSwoMCxSLmYpKGUsbSwiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uV2hpdGVzcGFjZSIpKTpyKHQpfWZ1bmN0aW9uIG0oZSl7cmV0dXJuIHQoZSl9fWZ1bmN0aW9uIEIoZSx0LHIpe3JldHVybiBlLmNoZWNrKE8udyx0LGUuYXR0ZW1wdChJLHQscikpfWZ1bmN0aW9uIGooZSl7ZS5leGl0KCJnZm1Gb290bm90ZURlZmluaXRpb24iKX1mdW5jdGlvbiBVKGUsdCxyKXtsZXQgbj10aGlzO3JldHVybigwLFIuZikoZSxvLCJnZm1Gb290bm90ZURlZmluaXRpb25JbmRlbnQiLDUpO2Z1bmN0aW9uIG8oZSl7bGV0IG89bi5ldmVudHNbbi5ldmVudHMubGVuZ3RoLTFdO3JldHVybiBvJiYiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uSW5kZW50Ij09PW9bMV0udHlwZSYmND09PW9bMl0uc2xpY2VTZXJpYWxpemUob1sxXSwhMCkubGVuZ3RoP3QoZSk6cihlKX19dmFyIHo9cigiOTY3NzQiKSxHPXIoIjM3MjU5IiksSD1yKCI1NjUxNiIpO2Z1bmN0aW9uIFYoZSl7bGV0IHQ9KGV8fHt9KS5zaW5nbGVUaWxkZSxyPXt0b2tlbml6ZTpvLHJlc29sdmVBbGw6bn07cmV0dXJuIG51bGw9PXQmJih0PSEwKSx7dGV4dDp7MTI2OnJ9LGluc2lkZVNwYW46e251bGw6W3JdfSxhdHRlbnRpb25NYXJrZXJzOntudWxsOlsxMjZdfX07ZnVuY3Rpb24gbihlLHQpe2xldCByPS0xO2Zvcig7KytyPGUubGVuZ3RoOylpZigiZW50ZXIiPT09ZVtyXVswXSYmInN0cmlrZXRocm91Z2hTZXF1ZW5jZVRlbXBvcmFyeSI9PT1lW3JdWzFdLnR5cGUmJmVbcl1bMV0uX2Nsb3NlKXtsZXQgbj1yO2Zvcig7bi0tOylpZigiZXhpdCI9PT1lW25dWzBdJiYic3RyaWtldGhyb3VnaFNlcXVlbmNlVGVtcG9yYXJ5Ij09PWVbbl1bMV0udHlwZSYmZVtuXVsxXS5fb3BlbiYmZVtyXVsxXS5lbmQub2Zmc2V0LWVbcl1bMV0uc3RhcnQub2Zmc2V0PT1lW25dWzFdLmVuZC5vZmZzZXQtZVtuXVsxXS5zdGFydC5vZmZzZXQpe2Vbcl1bMV0udHlwZT0ic3RyaWtldGhyb3VnaFNlcXVlbmNlIixlW25dWzFdLnR5cGU9InN0cmlrZXRocm91Z2hTZXF1ZW5jZSI7bGV0IG89e3R5cGU6InN0cmlrZXRocm91Z2giLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sZVtuXVsxXS5zdGFydCksZW5kOk9iamVjdC5hc3NpZ24oe30sZVtyXVsxXS5lbmQpfSxpPXt0eXBlOiJzdHJpa2V0aHJvdWdoVGV4dCIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxlW25dWzFdLmVuZCksZW5kOk9iamVjdC5hc3NpZ24oe30sZVtyXVsxXS5zdGFydCl9LGE9W1siZW50ZXIiLG8sdF0sWyJlbnRlciIsZVtuXVsxXSx0XSxbImV4aXQiLGVbbl1bMV0sdF0sWyJlbnRlciIsaSx0XV0scz10LnBhcnNlci5jb25zdHJ1Y3RzLmluc2lkZVNwYW4ubnVsbDtzJiYoMCx6LmQpKGEsYS5sZW5ndGgsMCwoMCxILkMpKHMsZS5zbGljZShuKzEsciksdCkpLCgwLHouZCkoYSxhLmxlbmd0aCwwLFtbImV4aXQiLGksdF0sWyJlbnRlciIsZVtyXVsxXSx0XSxbImV4aXQiLGVbcl1bMV0sdF0sWyJleGl0IixvLHRdXSksKDAsei5kKShlLG4tMSxyLW4rMyxhKSxyPW4rYS5sZW5ndGgtMjticmVha319Zm9yKHI9LTE7KytyPGUubGVuZ3RoOykic3RyaWtldGhyb3VnaFNlcXVlbmNlVGVtcG9yYXJ5Ij09PWVbcl1bMV0udHlwZSYmKGVbcl1bMV0udHlwZT0iZGF0YSIpO3JldHVybiBlfWZ1bmN0aW9uIG8oZSxyLG4pe2xldCBvPXRoaXMucHJldmlvdXMsaT10aGlzLmV2ZW50cyxhPTA7cmV0dXJuIHM7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gMTI2PT09byYmImNoYXJhY3RlckVzY2FwZSIhPT1pW2kubGVuZ3RoLTFdWzFdLnR5cGU/bih0KTooZS5lbnRlcigic3RyaWtldGhyb3VnaFNlcXVlbmNlVGVtcG9yYXJ5IiksbCh0KSl9ZnVuY3Rpb24gbChpKXtsZXQgcz0oMCxHLnIpKG8pO2lmKDEyNj09PWkpcmV0dXJuIGE+MT9uKGkpOihlLmNvbnN1bWUoaSksYSsrLGwpO2lmKGE8MiYmIXQpcmV0dXJuIG4oaSk7bGV0IGM9ZS5leGl0KCJzdHJpa2V0aHJvdWdoU2VxdWVuY2VUZW1wb3JhcnkiKSx1PSgwLEcucikoaSk7cmV0dXJuIGMuX29wZW49IXV8fDI9PT11JiYhIXMsYy5fY2xvc2U9IXN8fDI9PT1zJiYhIXUscihpKX19fWNsYXNzIHF7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1bXX1hZGQoZSx0LHIpe1codGhpcyxlLHQscil9Y29uc3VtZShlKXtpZih0aGlzLm1hcC5zb3J0KChlLHQpPT5lWzBdLXRbMF0pLDA9PT10aGlzLm1hcC5sZW5ndGgpcmV0dXJuO2xldCB0PXRoaXMubWFwLmxlbmd0aCxyPVtdO2Zvcig7dD4wOyl0LT0xLHIucHVzaChlLnNsaWNlKHRoaXMubWFwW3RdWzBdK3RoaXMubWFwW3RdWzFdKSksci5wdXNoKHRoaXMubWFwW3RdWzJdKSxlLmxlbmd0aD10aGlzLm1hcFt0XVswXTtyLnB1c2goWy4uLmVdKSxlLmxlbmd0aD0wO2xldCBuPXIucG9wKCk7Zm9yKDtuOyllLnB1c2goLi4ubiksbj1yLnBvcCgpO3RoaXMubWFwLmxlbmd0aD0wfX1mdW5jdGlvbiBXKGUsdCxyLG4pe2xldCBvPTA7aWYoMCE9PXJ8fDAhPT1uLmxlbmd0aCl7Zm9yKDtvPGUubWFwLmxlbmd0aDspe2lmKGUubWFwW29dWzBdPT09dCl7ZS5tYXBbb11bMV0rPXIsZS5tYXBbb11bMl0ucHVzaCguLi5uKTtyZXR1cm59bys9MX1lLm1hcC5wdXNoKFt0LHIsbl0pfX1mdW5jdGlvbiBZKGUsdCl7bGV0IHI9ITEsbj1bXTtmb3IoO3Q8ZS5sZW5ndGg7KXtsZXQgbz1lW3RdO2lmKHIpe2lmKCJlbnRlciI9PT1vWzBdKSJ0YWJsZUNvbnRlbnQiPT09b1sxXS50eXBlJiZuLnB1c2goInRhYmxlRGVsaW1pdGVyTWFya2VyIj09PWVbdCsxXVsxXS50eXBlPyJsZWZ0Ijoibm9uZSIpO2Vsc2UgaWYoInRhYmxlQ29udGVudCI9PT1vWzFdLnR5cGUpe2lmKCJ0YWJsZURlbGltaXRlck1hcmtlciI9PT1lW3QtMV1bMV0udHlwZSl7bGV0IGU9bi5sZW5ndGgtMTtuW2VdPSJsZWZ0Ij09PW5bZV0/ImNlbnRlciI6InJpZ2h0In19ZWxzZSBpZigidGFibGVEZWxpbWl0ZXJSb3ciPT09b1sxXS50eXBlKWJyZWFrfWVsc2UiZW50ZXIiPT09b1swXSYmInRhYmxlRGVsaW1pdGVyUm93Ij09PW9bMV0udHlwZSYmKHI9ITApO3QrPTF9cmV0dXJuIG59bGV0IEs9e2Zsb3c6e251bGw6e3Rva2VuaXplOloscmVzb2x2ZUFsbDpYfX19O2Z1bmN0aW9uIFooZSx0LHIpe2xldCBuO2xldCBpPXRoaXMsYT0wLHM9MDtyZXR1cm4gbDtmdW5jdGlvbiBsKGUpe2xldCB0PWkuZXZlbnRzLmxlbmd0aC0xO2Zvcig7dD4tMTspe2xldCBlPWkuZXZlbnRzW3RdWzFdLnR5cGU7aWYoImxpbmVFbmRpbmciPT09ZXx8ImxpbmVQcmVmaXgiPT09ZSl0LS07ZWxzZSBicmVha31sZXQgbj10Pi0xP2kuZXZlbnRzW3RdWzFdLnR5cGU6bnVsbCxvPSJ0YWJsZUhlYWQiPT09bnx8InRhYmxlUm93Ij09PW4/dzpjO3JldHVybiBvPT09dyYmaS5wYXJzZXIubGF6eVtpLm5vdygpLmxpbmVdP3IoZSk6byhlKX1mdW5jdGlvbiBjKHQpe3JldHVybiBlLmVudGVyKCJ0YWJsZUhlYWQiKSxlLmVudGVyKCJ0YWJsZVJvdyIpLHUodCl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gMTI0PT09ZT9kKGUpOihuPSEwLHMrPTEsZChlKSl9ZnVuY3Rpb24gZCh0KXtpZihudWxsPT09dClyZXR1cm4gcih0KTtpZigoMCxvLkNoKSh0KSlyZXR1cm4gcz4xPyhzPTAsaS5pbnRlcnJ1cHQ9ITAsZS5leGl0KCJ0YWJsZVJvdyIpLGUuZW50ZXIoImxpbmVFbmRpbmciKSxlLmNvbnN1bWUodCksZS5leGl0KCJsaW5lRW5kaW5nIiksbSk6cih0KTtyZXR1cm4oMCxvLnh6KSh0KT8oMCxSLmYpKGUsZCwid2hpdGVzcGFjZSIpKHQpOihzKz0xLG4mJihuPSExLGErPTEpLDEyND09PXQpPyhlLmVudGVyKCJ0YWJsZUNlbGxEaXZpZGVyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgidGFibGVDZWxsRGl2aWRlciIpLG49ITAsZCk6KGUuZW50ZXIoImRhdGEiKSxwKHQpKX1mdW5jdGlvbiBwKHQpe3JldHVybiBudWxsPT09dHx8MTI0PT09dHx8KDAsby56MykodCk/KGUuZXhpdCgiZGF0YSIpLGQodCkpOihlLmNvbnN1bWUodCksOTI9PT10P2Y6cCl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gOTI9PT10fHwxMjQ9PT10PyhlLmNvbnN1bWUodCkscCk6cCh0KX1mdW5jdGlvbiBtKHQpe3JldHVybihpLmludGVycnVwdD0hMSxpLnBhcnNlci5sYXp5W2kubm93KCkubGluZV0pP3IodCk6KGUuZW50ZXIoInRhYmxlRGVsaW1pdGVyUm93Iiksbj0hMSwoMCxvLnh6KSh0KSk/KDAsUi5mKShlLGgsImxpbmVQcmVmaXgiLGkucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKT92b2lkIDA6NCkodCk6aCh0KX1mdW5jdGlvbiBoKHQpe3JldHVybiA0NT09PXR8fDU4PT09dD9iKHQpOjEyND09PXQ/KG49ITAsZS5lbnRlcigidGFibGVDZWxsRGl2aWRlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoInRhYmxlQ2VsbERpdmlkZXIiKSxnKTpTKHQpfWZ1bmN0aW9uIGcodCl7cmV0dXJuKDAsby54eikodCk/KDAsUi5mKShlLGIsIndoaXRlc3BhY2UiKSh0KTpiKHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIDU4PT09dD8ocys9MSxuPSEwLGUuZW50ZXIoInRhYmxlRGVsaW1pdGVyTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgidGFibGVEZWxpbWl0ZXJNYXJrZXIiKSx2KTo0NT09PXQ/KHMrPTEsdih0KSk6bnVsbD09PXR8fCgwLG8uQ2gpKHQpP18odCk6Uyh0KX1mdW5jdGlvbiB2KHQpe3JldHVybiA0NT09PXQ/KGUuZW50ZXIoInRhYmxlRGVsaW1pdGVyRmlsbGVyIikseSh0KSk6Uyh0KX1mdW5jdGlvbiB5KHQpe3JldHVybiA0NT09PXQ/KGUuY29uc3VtZSh0KSx5KTo1OD09PXQ/KG49ITAsZS5leGl0KCJ0YWJsZURlbGltaXRlckZpbGxlciIpLGUuZW50ZXIoInRhYmxlRGVsaW1pdGVyTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgidGFibGVEZWxpbWl0ZXJNYXJrZXIiKSxFKTooZS5leGl0KCJ0YWJsZURlbGltaXRlckZpbGxlciIpLEUodCkpfWZ1bmN0aW9uIEUodCl7cmV0dXJuKDAsby54eikodCk/KDAsUi5mKShlLF8sIndoaXRlc3BhY2UiKSh0KTpfKHQpfWZ1bmN0aW9uIF8ocil7aWYoMTI0PT09cilyZXR1cm4gaChyKTtpZihudWxsPT09cnx8KDAsby5DaCkocikpcmV0dXJuIG4mJmE9PT1zPyhlLmV4aXQoInRhYmxlRGVsaW1pdGVyUm93IiksZS5leGl0KCJ0YWJsZUhlYWQiKSx0KHIpKTpTKHIpO3JldHVybiBTKHIpfWZ1bmN0aW9uIFMoZSl7cmV0dXJuIHIoZSl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gZS5lbnRlcigidGFibGVSb3ciKSx4KHQpfWZ1bmN0aW9uIHgocil7cmV0dXJuIDEyND09PXI/KGUuZW50ZXIoInRhYmxlQ2VsbERpdmlkZXIiKSxlLmNvbnN1bWUociksZS5leGl0KCJ0YWJsZUNlbGxEaXZpZGVyIikseCk6bnVsbD09PXJ8fCgwLG8uQ2gpKHIpPyhlLmV4aXQoInRhYmxlUm93IiksdChyKSk6KDAsby54eikocik/KDAsUi5mKShlLHgsIndoaXRlc3BhY2UiKShyKTooZS5lbnRlcigiZGF0YSIpLFQocikpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIG51bGw9PT10fHwxMjQ9PT10fHwoMCxvLnozKSh0KT8oZS5leGl0KCJkYXRhIikseCh0KSk6KGUuY29uc3VtZSh0KSw5Mj09PXQ/QTpUKX1mdW5jdGlvbiBBKHQpe3JldHVybiA5Mj09PXR8fDEyND09PXQ/KGUuY29uc3VtZSh0KSxUKTpUKHQpfX1mdW5jdGlvbiBYKGUsdCl7bGV0IHIsbixvLGk9LTEsYT0hMCxzPTAsbD1bMCwwLDAsMF0sYz1bMCwwLDAsMF0sdT0hMSxkPTAscD1uZXcgcTtmb3IoOysraTxlLmxlbmd0aDspe2xldCBmPWVbaV0sbT1mWzFdOyJlbnRlciI9PT1mWzBdPyJ0YWJsZUhlYWQiPT09bS50eXBlPyh1PSExLDAhPT1kJiYoSihwLHQsZCxyLG4pLG49dm9pZCAwLGQ9MCkscj17dHlwZToidGFibGUiLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sbS5zdGFydCksZW5kOk9iamVjdC5hc3NpZ24oe30sbS5lbmQpfSxwLmFkZChpLDAsW1siZW50ZXIiLHIsdF1dKSk6InRhYmxlUm93Ij09PW0udHlwZXx8InRhYmxlRGVsaW1pdGVyUm93Ij09PW0udHlwZT8oYT0hMCxvPXZvaWQgMCxsPVswLDAsMCwwXSxjPVswLGkrMSwwLDBdLHUmJih1PSExLG49e3R5cGU6InRhYmxlQm9keSIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxtLnN0YXJ0KSxlbmQ6T2JqZWN0LmFzc2lnbih7fSxtLmVuZCl9LHAuYWRkKGksMCxbWyJlbnRlciIsbix0XV0pKSxzPSJ0YWJsZURlbGltaXRlclJvdyI9PT1tLnR5cGU/MjpuPzM6MSk6cyYmKCJkYXRhIj09PW0udHlwZXx8InRhYmxlRGVsaW1pdGVyTWFya2VyIj09PW0udHlwZXx8InRhYmxlRGVsaW1pdGVyRmlsbGVyIj09PW0udHlwZSk/KGE9ITEsMD09PWNbMl0mJigwIT09bFsxXSYmKGNbMF09Y1sxXSxvPVEocCx0LGwscyx2b2lkIDAsbyksbD1bMCwwLDAsMF0pLGNbMl09aSkpOiJ0YWJsZUNlbGxEaXZpZGVyIj09PW0udHlwZSYmKGE/YT0hMTooMCE9PWxbMV0mJihjWzBdPWNbMV0sbz1RKHAsdCxsLHMsdm9pZCAwLG8pKSxjPVsobD1jKVsxXSxpLDAsMF0pKToidGFibGVIZWFkIj09PW0udHlwZT8odT0hMCxkPWkpOiJ0YWJsZVJvdyI9PT1tLnR5cGV8fCJ0YWJsZURlbGltaXRlclJvdyI9PT1tLnR5cGU/KGQ9aSwwIT09bFsxXT8oY1swXT1jWzFdLG89UShwLHQsbCxzLGksbykpOjAhPT1jWzFdJiYobz1RKHAsdCxjLHMsaSxvKSkscz0wKTpzJiYoImRhdGEiPT09bS50eXBlfHwidGFibGVEZWxpbWl0ZXJNYXJrZXIiPT09bS50eXBlfHwidGFibGVEZWxpbWl0ZXJGaWxsZXIiPT09bS50eXBlKSYmKGNbM109aSl9Zm9yKDAhPT1kJiZKKHAsdCxkLHIsbikscC5jb25zdW1lKHQuZXZlbnRzKSxpPS0xOysraTx0LmV2ZW50cy5sZW5ndGg7KXtsZXQgZT10LmV2ZW50c1tpXTsiZW50ZXIiPT09ZVswXSYmInRhYmxlIj09PWVbMV0udHlwZSYmKGVbMV0uX2FsaWduPVkodC5ldmVudHMsaSkpfXJldHVybiBlfWZ1bmN0aW9uIFEoZSx0LHIsbixvLGkpe2xldCBhPTE9PT1uPyJ0YWJsZUhlYWRlciI6Mj09PW4/InRhYmxlRGVsaW1pdGVyIjoidGFibGVEYXRhIixzPSJ0YWJsZUNvbnRlbnQiOzAhPT1yWzBdJiYoaS5lbmQ9T2JqZWN0LmFzc2lnbih7fSwkKHQuZXZlbnRzLHJbMF0pKSxlLmFkZChyWzBdLDAsW1siZXhpdCIsaSx0XV0pKTtsZXQgbD0kKHQuZXZlbnRzLHJbMV0pO2lmKGk9e3R5cGU6YSxzdGFydDpPYmplY3QuYXNzaWduKHt9LGwpLGVuZDpPYmplY3QuYXNzaWduKHt9LGwpfSxlLmFkZChyWzFdLDAsW1siZW50ZXIiLGksdF1dKSwwIT09clsyXSl7bGV0IG89JCh0LmV2ZW50cyxyWzJdKSxpPSQodC5ldmVudHMsclszXSksYT17dHlwZTpzLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sbyksZW5kOk9iamVjdC5hc3NpZ24oe30saSl9O2lmKGUuYWRkKHJbMl0sMCxbWyJlbnRlciIsYSx0XV0pLDIhPT1uKXtsZXQgbj10LmV2ZW50c1tyWzJdXSxvPXQuZXZlbnRzW3JbM11dO2lmKG5bMV0uZW5kPU9iamVjdC5hc3NpZ24oe30sb1sxXS5lbmQpLG5bMV0udHlwZT0iY2h1bmtUZXh0IixuWzFdLmNvbnRlbnRUeXBlPSJ0ZXh0IixyWzNdPnJbMl0rMSl7bGV0IHQ9clsyXSsxLG49clszXS1yWzJdLTE7ZS5hZGQodCxuLFtdKX19ZS5hZGQoclszXSsxLDAsW1siZXhpdCIsYSx0XV0pfXJldHVybiB2b2lkIDAhPT1vJiYoaS5lbmQ9T2JqZWN0LmFzc2lnbih7fSwkKHQuZXZlbnRzLG8pKSxlLmFkZChvLDAsW1siZXhpdCIsaSx0XV0pLGk9dm9pZCAwKSxpfWZ1bmN0aW9uIEooZSx0LHIsbixvKXtsZXQgaT1bXSxhPSQodC5ldmVudHMscik7byYmKG8uZW5kPU9iamVjdC5hc3NpZ24oe30sYSksaS5wdXNoKFsiZXhpdCIsbyx0XSkpLG4uZW5kPU9iamVjdC5hc3NpZ24oe30sYSksaS5wdXNoKFsiZXhpdCIsbix0XSksZS5hZGQocisxLDAsaSl9ZnVuY3Rpb24gJChlLHQpe2xldCByPWVbdF0sbj0iZW50ZXIiPT09clswXT8ic3RhcnQiOiJlbmQiO3JldHVybiByWzFdW25dfWxldCBlZT17dGV4dDp7OTE6e3Rva2VuaXplOmV0fX19O2Z1bmN0aW9uIGV0KGUsdCxyKXtsZXQgbj10aGlzO3JldHVybiBpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIG51bGw9PT1uLnByZXZpb3VzJiZuLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW0/KGUuZW50ZXIoInRhc2tMaXN0Q2hlY2siKSxlLmVudGVyKCJ0YXNrTGlzdENoZWNrTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgidGFza0xpc3RDaGVja01hcmtlciIpLGEpOnIodCl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4oMCxvLnozKSh0KT8oZS5lbnRlcigidGFza0xpc3RDaGVja1ZhbHVlVW5jaGVja2VkIiksZS5jb25zdW1lKHQpLGUuZXhpdCgidGFza0xpc3RDaGVja1ZhbHVlVW5jaGVja2VkIikscyk6ODg9PT10fHwxMjA9PT10PyhlLmVudGVyKCJ0YXNrTGlzdENoZWNrVmFsdWVDaGVja2VkIiksZS5jb25zdW1lKHQpLGUuZXhpdCgidGFza0xpc3RDaGVja1ZhbHVlQ2hlY2tlZCIpLHMpOnIodCl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gOTM9PT10PyhlLmVudGVyKCJ0YXNrTGlzdENoZWNrTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgidGFza0xpc3RDaGVja01hcmtlciIpLGUuZXhpdCgidGFza0xpc3RDaGVjayIpLGwpOnIodCl9ZnVuY3Rpb24gbChuKXtyZXR1cm4oMCxvLkNoKShuKT90KG4pOigwLG8ueHopKG4pP2UuY2hlY2soe3Rva2VuaXplOmVyfSx0LHIpKG4pOnIobil9fWZ1bmN0aW9uIGVyKGUsdCxyKXtyZXR1cm4oMCxSLmYpKGUsbiwid2hpdGVzcGFjZSIpO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG51bGw9PT1lP3IoZSk6dChlKX19ZnVuY3Rpb24gZW4oZSl7cmV0dXJuKDAsbi5XKShbbSxQKCksVihlKSxLLGVlXSl9ZnVuY3Rpb24gZW8oZSx0KXtsZXQgcj1TdHJpbmcoZSk7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcigiRXhwZWN0ZWQgY2hhcmFjdGVyIik7bGV0IG49MCxvPXIuaW5kZXhPZih0KTtmb3IoOy0xIT09bzspbisrLG89ci5pbmRleE9mKHQsbyt0Lmxlbmd0aCk7cmV0dXJuIG59dmFyIGVpPXIoIjQ3OTQwIik7bGV0IGVhPSJwaHJhc2luZyIsZXM9WyJhdXRvbGluayIsImxpbmsiLCJpbWFnZSIsImxhYmVsIl0sZWw9e3RyYW5zZm9ybXM6W2VnXSxlbnRlcjp7bGl0ZXJhbEF1dG9saW5rOmV1LGxpdGVyYWxBdXRvbGlua0VtYWlsOmVkLGxpdGVyYWxBdXRvbGlua0h0dHA6ZWQsbGl0ZXJhbEF1dG9saW5rV3d3OmVkfSxleGl0OntsaXRlcmFsQXV0b2xpbms6ZWgsbGl0ZXJhbEF1dG9saW5rRW1haWw6ZW0sbGl0ZXJhbEF1dG9saW5rSHR0cDplcCxsaXRlcmFsQXV0b2xpbmtXd3c6ZWZ9fSxlYz17dW5zYWZlOlt7Y2hhcmFjdGVyOiJAIixiZWZvcmU6IlsrXFwtLlxcd10iLGFmdGVyOiJbXFwtLlxcd10iLGluQ29uc3RydWN0OmVhLG5vdEluQ29uc3RydWN0OmVzfSx7Y2hhcmFjdGVyOiIuIixiZWZvcmU6IltXd10iLGFmdGVyOiJbXFwtLlxcd10iLGluQ29uc3RydWN0OmVhLG5vdEluQ29uc3RydWN0OmVzfSx7Y2hhcmFjdGVyOiI6IixiZWZvcmU6Iltwc10iLGFmdGVyOiJcXC8iLGluQ29uc3RydWN0OmVhLG5vdEluQ29uc3RydWN0OmVzfV19O2Z1bmN0aW9uIGV1KGUpe3RoaXMuZW50ZXIoe3R5cGU6ImxpbmsiLHRpdGxlOm51bGwsdXJsOiIiLGNoaWxkcmVuOltdfSxlKX1mdW5jdGlvbiBlZChlKXt0aGlzLmNvbmZpZy5lbnRlci5hdXRvbGlua1Byb3RvY29sLmNhbGwodGhpcyxlKX1mdW5jdGlvbiBlcChlKXt0aGlzLmNvbmZpZy5leGl0LmF1dG9saW5rUHJvdG9jb2wuY2FsbCh0aGlzLGUpfWZ1bmN0aW9uIGVmKGUpe3RoaXMuY29uZmlnLmV4aXQuZGF0YS5jYWxsKHRoaXMsZSksdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS51cmw9Imh0dHA6Ly8iK3RoaXMuc2xpY2VTZXJpYWxpemUoZSl9ZnVuY3Rpb24gZW0oZSl7dGhpcy5jb25maWcuZXhpdC5hdXRvbGlua0VtYWlsLmNhbGwodGhpcyxlKX1mdW5jdGlvbiBlaChlKXt0aGlzLmV4aXQoZSl9ZnVuY3Rpb24gZWcoZSl7KDAsZWkubikoZSxbWy8oaHR0cHM/OlwvXC98d3d3KD89XC4pKShbLS5cd10rKShbXiBcdFxyXG5dKikvZ2ksZWJdLFsvKFstLlx3K10rKUAoWy1cd10rKD86XC5bLVx3XSspKykvZyxldl1dLHtpZ25vcmU6WyJsaW5rIiwibGlua1JlZmVyZW5jZSJdfSl9ZnVuY3Rpb24gZWIoZSx0LHIsbixvKXtsZXQgaT0iIjtpZighZV8obykpcmV0dXJuITE7aWYoL153L2kudGVzdCh0KSYmKHI9dCtyLHQ9IiIsaT0iaHR0cDovLyIpLCFleShyKSlyZXR1cm4hMTtsZXQgYT1lRShyK24pO2lmKCFhWzBdKXJldHVybiExO2xldCBzPXt0eXBlOiJsaW5rIix0aXRsZTpudWxsLHVybDppK3QrYVswXSxjaGlsZHJlbjpbe3R5cGU6InRleHQiLHZhbHVlOnQrYVswXX1dfTtyZXR1cm4gYVsxXT9bcyx7dHlwZToidGV4dCIsdmFsdWU6YVsxXX1dOnN9ZnVuY3Rpb24gZXYoZSx0LHIsbil7cmV0dXJuISghZV8obiwhMCl8fC9bLVxkX10kLy50ZXN0KHIpKSYme3R5cGU6ImxpbmsiLHRpdGxlOm51bGwsdXJsOiJtYWlsdG86Iit0KyJAIityLGNoaWxkcmVuOlt7dHlwZToidGV4dCIsdmFsdWU6dCsiQCIrcn1dfX1mdW5jdGlvbiBleShlKXtsZXQgdD1lLnNwbGl0KCIuIik7cmV0dXJuISh0Lmxlbmd0aDwyfHx0W3QubGVuZ3RoLTFdJiYoL18vLnRlc3QodFt0Lmxlbmd0aC0xXSl8fCEvW2EtekEtWlxkXS8udGVzdCh0W3QubGVuZ3RoLTFdKSl8fHRbdC5sZW5ndGgtMl0mJigvXy8udGVzdCh0W3QubGVuZ3RoLTJdKXx8IS9bYS16QS1aXGRdLy50ZXN0KHRbdC5sZW5ndGgtMl0pKSkmJiEwfWZ1bmN0aW9uIGVFKGUpe2xldCB0PS9bISImJyksLjo7PD4/XF19XSskLy5leGVjKGUpO2lmKCF0KXJldHVybltlLHZvaWQgMF07ZT1lLnNsaWNlKDAsdC5pbmRleCk7bGV0IHI9dFswXSxuPXIuaW5kZXhPZigiKSIpLG89ZW8oZSwiKCIpLGk9ZW8oZSwiKSIpO2Zvcig7LTEhPT1uJiZvPmk7KWUrPXIuc2xpY2UoMCxuKzEpLG49KHI9ci5zbGljZShuKzEpKS5pbmRleE9mKCIpIiksaSsrO3JldHVybltlLHJdfWZ1bmN0aW9uIGVfKGUsdCl7bGV0IHI9ZS5pbnB1dC5jaGFyQ29kZUF0KGUuaW5kZXgtMSk7cmV0dXJuKDA9PT1lLmluZGV4fHwoMCxvLkI4KShyKXx8KDAsby5YaCkocikpJiYoIXR8fDQ3IT09cil9dmFyIGVTPXIoIjQ1NjQyIik7ZnVuY3Rpb24gZXcoZSl7cmV0dXJuIGUubGFiZWx8fCFlLmlkZW50aWZpZXI/ZS5sYWJlbHx8IiI6KDAsZVMudikoZS5pZGVudGlmaWVyKX1mdW5jdGlvbiBleChlLHQscil7bGV0IG49dC5pbmRleFN0YWNrLG89ZS5jaGlsZHJlbnx8W10saT10LmNyZWF0ZVRyYWNrZXIociksYT1bXSxzPS0xO2ZvcihuLnB1c2goLTEpOysrczxvLmxlbmd0aDspe2xldCByPW9bc107bltuLmxlbmd0aC0xXT1zLGEucHVzaChpLm1vdmUodC5oYW5kbGUocixlLHQse2JlZm9yZToiXG4iLGFmdGVyOiJcbiIsLi4uaS5jdXJyZW50KCl9KSkpLCJsaXN0IiE9PXIudHlwZSYmKHQuYnVsbGV0TGFzdFVzZWQ9dm9pZCAwKSxzPG8ubGVuZ3RoLTEmJmEucHVzaChpLm1vdmUoZVQocixvW3MrMV0sZSx0KSkpfXJldHVybiBuLnBvcCgpLGEuam9pbigiIil9ZnVuY3Rpb24gZVQoZSx0LHIsbil7bGV0IG89bi5qb2luLmxlbmd0aDtmb3IoO28tLTspe2xldCBpPW4uam9pbltvXShlLHQscixuKTtpZighMD09PWl8fDE9PT1pKWJyZWFrO2lmKCJudW1iZXIiPT10eXBlb2YgaSlyZXR1cm4iXG4iLnJlcGVhdCgxK2kpO2lmKCExPT09aSlyZXR1cm4iXG5cblx4M2MhLS0tLVx4M2VcblxuIn1yZXR1cm4iXG5cbiJ9bGV0IGVBPS9ccj9cbnxcci9nO2Z1bmN0aW9uIGVDKGUsdCl7bGV0IHI7bGV0IG49W10sbz0wLGk9MDtmb3IoO3I9ZUEuZXhlYyhlKTspYShlLnNsaWNlKG8sci5pbmRleCkpLG4ucHVzaChyWzBdKSxvPXIuaW5kZXgrclswXS5sZW5ndGgsaSsrO3JldHVybiBhKGUuc2xpY2UobykpLG4uam9pbigiIik7ZnVuY3Rpb24gYShlKXtuLnB1c2godChlLGksIWUpKX19ZnVuY3Rpb24gZWsoZSl7aWYoIWUuX2NvbXBpbGVkKXtsZXQgdD0oZS5hdEJyZWFrPyJbXFxyXFxuXVtcXHQgXSoiOiIiKSsoZS5iZWZvcmU/Iig/OiIrZS5iZWZvcmUrIikiOiIiKTtlLl9jb21waWxlZD1SZWdFeHAoKHQ/IigiK3QrIikiOiIiKSsoL1t8XFx7fSgpW1xdXiQrKj8uLV0vLnRlc3QoZS5jaGFyYWN0ZXIpPyJcXCI6IiIpK2UuY2hhcmFjdGVyKyhlLmFmdGVyPyIoPzoiK2UuYWZ0ZXIrIikiOiIiKSwiZyIpfXJldHVybiBlLl9jb21waWxlZH1mdW5jdGlvbiBlTyhlLHQpe3JldHVybiBlUihlLHQuaW5Db25zdHJ1Y3QsITApJiYhZVIoZSx0Lm5vdEluQ29uc3RydWN0LCExKX1mdW5jdGlvbiBlUihlLHQscil7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1bdF0pLCF0fHwwPT09dC5sZW5ndGgpcmV0dXJuIHI7bGV0IG49LTE7Zm9yKDsrK248dC5sZW5ndGg7KWlmKGUuaW5jbHVkZXModFtuXSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gZU4oZSx0LHIpe2xldCBuPShyLmJlZm9yZXx8IiIpKyh0fHwiIikrKHIuYWZ0ZXJ8fCIiKSxvPVtdLGk9W10sYT17fSxzPS0xO2Zvcig7KytzPGUudW5zYWZlLmxlbmd0aDspe2xldCB0O2xldCByPWUudW5zYWZlW3NdO2lmKCFlTyhlLnN0YWNrLHIpKWNvbnRpbnVlO2xldCBpPWVrKHIpO2Zvcig7dD1pLmV4ZWMobik7KXtsZXQgZT0iYmVmb3JlImluIHJ8fCEhci5hdEJyZWFrLG49ImFmdGVyImluIHIsaT10LmluZGV4KyhlP3RbMV0ubGVuZ3RoOjApO28uaW5jbHVkZXMoaSk/KGFbaV0uYmVmb3JlJiYhZSYmKGFbaV0uYmVmb3JlPSExKSxhW2ldLmFmdGVyJiYhbiYmKGFbaV0uYWZ0ZXI9ITEpKTooby5wdXNoKGkpLGFbaV09e2JlZm9yZTplLGFmdGVyOm59KX19by5zb3J0KGVJKTtsZXQgbD1yLmJlZm9yZT9yLmJlZm9yZS5sZW5ndGg6MCxjPW4ubGVuZ3RoLShyLmFmdGVyP3IuYWZ0ZXIubGVuZ3RoOjApO2ZvcihzPS0xOysrczxvLmxlbmd0aDspe2xldCBlPW9bc107aWYoIShlPGwpJiYhKGU+PWMpJiYoIShlKzE8Yyl8fG9bcysxXSE9PWUrMXx8IWFbZV0uYWZ0ZXJ8fCEhYVtlKzFdLmJlZm9yZXx8ISFhW2UrMV0uYWZ0ZXIpJiYob1tzLTFdIT09ZS0xfHwhYVtlXS5iZWZvcmV8fCEhYVtlLTFdLmJlZm9yZXx8ISFhW2UtMV0uYWZ0ZXIpKWwhPT1lJiZpLnB1c2goZVAobi5zbGljZShsLGUpLCJcXCIpKSxsPWUsIS9bIS0vOi1AWy1gey1+XS8udGVzdChuLmNoYXJBdChlKSl8fHIuZW5jb2RlJiZyLmVuY29kZS5pbmNsdWRlcyhuLmNoYXJBdChlKSk/KGkucHVzaCgiJiN4IituLmNoYXJDb2RlQXQoZSkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkrIjsiKSxsKyspOmkucHVzaCgiXFwiKX1yZXR1cm4gaS5wdXNoKGVQKG4uc2xpY2UobCxjKSxyLmFmdGVyKSksaS5qb2luKCIiKX1mdW5jdGlvbiBlSShlLHQpe3JldHVybiBlLXR9ZnVuY3Rpb24gZVAoZSx0KXtsZXQgcjtsZXQgbj0vXFwoPz1bIS0vOi1AWy1gey1+XSkvZyxvPVtdLGk9W10sYT1lK3Qscz0tMSxsPTA7Zm9yKDtyPW4uZXhlYyhhKTspby5wdXNoKHIuaW5kZXgpO2Zvcig7KytzPG8ubGVuZ3RoOylsIT09b1tzXSYmaS5wdXNoKGUuc2xpY2UobCxvW3NdKSksaS5wdXNoKCJcXCIpLGw9b1tzXTtyZXR1cm4gaS5wdXNoKGUuc2xpY2UobCkpLGkuam9pbigiIil9ZnVuY3Rpb24gZU0oZSl7bGV0IHQ9ZXx8e30scj10Lm5vd3x8e30sbj10LmxpbmVTaGlmdHx8MCxvPXIubGluZXx8MSxpPXIuY29sdW1ufHwxO3JldHVybnttb3ZlOmwsY3VycmVudDphLHNoaWZ0OnN9O2Z1bmN0aW9uIGEoKXtyZXR1cm57bm93OntsaW5lOm8sY29sdW1uOml9LGxpbmVTaGlmdDpufX1mdW5jdGlvbiBzKGUpe24rPWV9ZnVuY3Rpb24gbChlKXtsZXQgdD1lfHwiIixyPXQuc3BsaXQoL1xyP1xufFxyL2cpLGE9cltyLmxlbmd0aC0xXTtyZXR1cm4gbys9ci5sZW5ndGgtMSxpPTE9PT1yLmxlbmd0aD9pK2EubGVuZ3RoOjErYS5sZW5ndGgrbix0fX1mdW5jdGlvbiBlRCgpe3JldHVybntlbnRlcjp7Z2ZtRm9vdG5vdGVEZWZpbml0aW9uOmVGLGdmbUZvb3Rub3RlRGVmaW5pdGlvbkxhYmVsU3RyaW5nOmVCLGdmbUZvb3Rub3RlQ2FsbDpleixnZm1Gb290bm90ZUNhbGxTdHJpbmc6ZUd9LGV4aXQ6e2dmbUZvb3Rub3RlRGVmaW5pdGlvbjplVSxnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbFN0cmluZzplaixnZm1Gb290bm90ZUNhbGw6ZVYsZ2ZtRm9vdG5vdGVDYWxsU3RyaW5nOmVIfX19ZnVuY3Rpb24gZUwoKXtyZXR1cm57dW5zYWZlOlt7Y2hhcmFjdGVyOiJbIixpbkNvbnN0cnVjdDpbInBocmFzaW5nIiwibGFiZWwiLCJyZWZlcmVuY2UiXX1dLGhhbmRsZXJzOntmb290bm90ZURlZmluaXRpb246ZVksZm9vdG5vdGVSZWZlcmVuY2U6ZXF9fX1mdW5jdGlvbiBlRihlKXt0aGlzLmVudGVyKHt0eXBlOiJmb290bm90ZURlZmluaXRpb24iLGlkZW50aWZpZXI6IiIsbGFiZWw6IiIsY2hpbGRyZW46W119LGUpfWZ1bmN0aW9uIGVCKCl7dGhpcy5idWZmZXIoKX1mdW5jdGlvbiBlaihlKXtsZXQgdD10aGlzLnJlc3VtZSgpLHI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtyLmxhYmVsPXQsci5pZGVudGlmaWVyPSgwLE4uZCkodGhpcy5zbGljZVNlcmlhbGl6ZShlKSkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBlVShlKXt0aGlzLmV4aXQoZSl9ZnVuY3Rpb24gZXooZSl7dGhpcy5lbnRlcih7dHlwZToiZm9vdG5vdGVSZWZlcmVuY2UiLGlkZW50aWZpZXI6IiIsbGFiZWw6IiJ9LGUpfWZ1bmN0aW9uIGVHKCl7dGhpcy5idWZmZXIoKX1mdW5jdGlvbiBlSChlKXtsZXQgdD10aGlzLnJlc3VtZSgpLHI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtyLmxhYmVsPXQsci5pZGVudGlmaWVyPSgwLE4uZCkodGhpcy5zbGljZVNlcmlhbGl6ZShlKSkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBlVihlKXt0aGlzLmV4aXQoZSl9ZnVuY3Rpb24gZXEoZSx0LHIsbil7bGV0IG89ZU0obiksaT1vLm1vdmUoIlteIiksYT1yLmVudGVyKCJmb290bm90ZVJlZmVyZW5jZSIpLHM9ci5lbnRlcigicmVmZXJlbmNlIik7cmV0dXJuIGkrPW8ubW92ZShlTihyLGV3KGUpLHsuLi5vLmN1cnJlbnQoKSxiZWZvcmU6aSxhZnRlcjoiXSJ9KSkscygpLGEoKSxpKz1vLm1vdmUoIl0iKSxpfWZ1bmN0aW9uIGVXKCl7cmV0dXJuIlsifWZ1bmN0aW9uIGVZKGUsdCxyLG4pe2xldCBvPWVNKG4pLGk9by5tb3ZlKCJbXiIpLGE9ci5lbnRlcigiZm9vdG5vdGVEZWZpbml0aW9uIikscz1yLmVudGVyKCJsYWJlbCIpO3JldHVybiBpKz1vLm1vdmUoZU4ocixldyhlKSx7Li4uby5jdXJyZW50KCksYmVmb3JlOmksYWZ0ZXI6Il0ifSkpLHMoKSxpKz1vLm1vdmUoIl06IisoZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5sZW5ndGg+MD8iICI6IiIpKSxvLnNoaWZ0KDQpLGkrPW8ubW92ZShlQyhleChlLHIsby5jdXJyZW50KCkpLGVLKSksYSgpLGl9ZnVuY3Rpb24gZUsoZSx0LHIpe3JldHVybiAwPT09dD9lOihyPyIiOiIgICAgIikrZX1mdW5jdGlvbiBlWihlLHQscil7bGV0IG49dC5pbmRleFN0YWNrLG89ZS5jaGlsZHJlbnx8W10saT1bXSxhPS0xLHM9ci5iZWZvcmU7bi5wdXNoKC0xKTtsZXQgbD10LmNyZWF0ZVRyYWNrZXIocik7Zm9yKDsrK2E8by5sZW5ndGg7KXtsZXQgYztsZXQgdT1vW2FdO2lmKG5bbi5sZW5ndGgtMV09YSxhKzE8by5sZW5ndGgpe2xldCByPXQuaGFuZGxlLmhhbmRsZXJzW29bYSsxXS50eXBlXTtyJiZyLnBlZWsmJihyPXIucGVlayksYz1yP3Iob1thKzFdLGUsdCx7YmVmb3JlOiIiLGFmdGVyOiIiLC4uLmwuY3VycmVudCgpfSkuY2hhckF0KDApOiIifWVsc2UgYz1yLmFmdGVyO2kubGVuZ3RoPjAmJigiXHIiPT09c3x8IlxuIj09PXMpJiYiaHRtbCI9PT11LnR5cGUmJihpW2kubGVuZ3RoLTFdPWlbaS5sZW5ndGgtMV0ucmVwbGFjZSgvKFxyP1xufFxyKSQvLCIgIikscz0iICIsKGw9dC5jcmVhdGVUcmFja2VyKHIpKS5tb3ZlKGkuam9pbigiIikpKSxpLnB1c2gobC5tb3ZlKHQuaGFuZGxlKHUsZSx0LHsuLi5sLmN1cnJlbnQoKSxiZWZvcmU6cyxhZnRlcjpjfSkpKSxzPWlbaS5sZW5ndGgtMV0uc2xpY2UoLTEpfXJldHVybiBuLnBvcCgpLGkuam9pbigiIil9ZXEucGVlaz1lVztsZXQgZVg9WyJhdXRvbGluayIsImRlc3RpbmF0aW9uTGl0ZXJhbCIsImRlc3RpbmF0aW9uUmF3IiwicmVmZXJlbmNlIiwidGl0bGVRdW90ZSIsInRpdGxlQXBvc3Ryb3BoZSJdO2UxLnBlZWs9ZTI7bGV0IGVRPXtjYW5Db250YWluRW9sczpbImRlbGV0ZSJdLGVudGVyOntzdHJpa2V0aHJvdWdoOmUkfSxleGl0OntzdHJpa2V0aHJvdWdoOmUwfX0sZUo9e3Vuc2FmZTpbe2NoYXJhY3RlcjoifiIsaW5Db25zdHJ1Y3Q6InBocmFzaW5nIixub3RJbkNvbnN0cnVjdDplWH1dLGhhbmRsZXJzOntkZWxldGU6ZTF9fTtmdW5jdGlvbiBlJChlKXt0aGlzLmVudGVyKHt0eXBlOiJkZWxldGUiLGNoaWxkcmVuOltdfSxlKX1mdW5jdGlvbiBlMChlKXt0aGlzLmV4aXQoZSl9ZnVuY3Rpb24gZTEoZSx0LHIsbil7bGV0IG89ZU0obiksaT1yLmVudGVyKCJzdHJpa2V0aHJvdWdoIiksYT1vLm1vdmUoIn5+Iik7cmV0dXJuIGErPWVaKGUscix7Li4uby5jdXJyZW50KCksYmVmb3JlOmEsYWZ0ZXI6In4ifSksYSs9by5tb3ZlKCJ+fiIpLGkoKSxhfWZ1bmN0aW9uIGUyKCl7cmV0dXJuIn4ifWZ1bmN0aW9uIGUzKGUsdCxyKXtsZXQgbj1lLnZhbHVlfHwiIixvPSJgIixpPS0xO2Zvcig7UmVnRXhwKCIoXnxbXmBdKSIrbysiKFteYF18JCkiKS50ZXN0KG4pOylvKz0iYCI7Zm9yKC9bXiBcclxuXS8udGVzdChuKSYmKC9eWyBcclxuXS8udGVzdChuKSYmL1sgXHJcbl0kLy50ZXN0KG4pfHwvXmB8YCQvLnRlc3QobikpJiYobj0iICIrbisiICIpOysraTxyLnVuc2FmZS5sZW5ndGg7KXtsZXQgZTtsZXQgdD1yLnVuc2FmZVtpXSxvPWVrKHQpO2lmKCEhdC5hdEJyZWFrKWZvcig7ZT1vLmV4ZWMobik7KXtsZXQgdD1lLmluZGV4OzEwPT09bi5jaGFyQ29kZUF0KHQpJiYxMz09PW4uY2hhckNvZGVBdCh0LTEpJiZ0LS0sbj1uLnNsaWNlKDAsdCkrIiAiK24uc2xpY2UoZS5pbmRleCsxKX19cmV0dXJuIG8rbitvfWZ1bmN0aW9uIGU1KCl7cmV0dXJuImAifWZ1bmN0aW9uIGU2KGUsdD17fSl7bGV0IHI9KHQuYWxpZ258fFtdKS5jb25jYXQoKSxuPXQuc3RyaW5nTGVuZ3RofHxlOCxvPVtdLGk9W10sYT1bXSxzPVtdLGw9MCxjPS0xO2Zvcig7KytjPGUubGVuZ3RoOyl7bGV0IHI9W10sbz1bXSx1PS0xO2ZvcihlW2NdLmxlbmd0aD5sJiYobD1lW2NdLmxlbmd0aCk7Kyt1PGVbY10ubGVuZ3RoOyl7bGV0IGk9ZTQoZVtjXVt1XSk7aWYoITEhPT10LmFsaWduRGVsaW1pdGVycyl7bGV0IGU9bihpKTtvW3VdPWUsKHZvaWQgMD09PXNbdV18fGU+c1t1XSkmJihzW3VdPWUpfXIucHVzaChpKX1pW2NdPXIsYVtjXT1vfWxldCB1PS0xO2lmKCJvYmplY3QiPT10eXBlb2YgciYmImxlbmd0aCJpbiByKWZvcig7Kyt1PGw7KW9bdV09ZTkoclt1XSk7ZWxzZXtsZXQgZT1lOShyKTtmb3IoOysrdTxsOylvW3VdPWV9dT0tMTtsZXQgZD1bXSxwPVtdO2Zvcig7Kyt1PGw7KXtsZXQgZT1vW3VdLHI9IiIsbj0iIjs5OT09PWU/KHI9IjoiLG49IjoiKToxMDg9PT1lP3I9IjoiOjExND09PWUmJihuPSI6Iik7bGV0IGk9ITE9PT10LmFsaWduRGVsaW1pdGVycz8xOk1hdGgubWF4KDEsc1t1XS1yLmxlbmd0aC1uLmxlbmd0aCksYT1yKyItIi5yZXBlYXQoaSkrbjshMSE9PXQuYWxpZ25EZWxpbWl0ZXJzJiYoKGk9ci5sZW5ndGgraStuLmxlbmd0aCk+c1t1XSYmKHNbdV09aSkscFt1XT1pKSxkW3VdPWF9aS5zcGxpY2UoMSwwLGQpLGEuc3BsaWNlKDEsMCxwKSxjPS0xO2xldCBmPVtdO2Zvcig7KytjPGkubGVuZ3RoOyl7bGV0IGU9aVtjXSxyPWFbY107dT0tMTtsZXQgbj1bXTtmb3IoOysrdTxsOyl7bGV0IGk9ZVt1XXx8IiIsYT0iIixjPSIiO2lmKCExIT09dC5hbGlnbkRlbGltaXRlcnMpe2xldCBlPXNbdV0tKHJbdV18fDApLHQ9b1t1XTsxMTQ9PT10P2E9IiAiLnJlcGVhdChlKTo5OT09PXQ/ZSUyPyhhPSIgIi5yZXBlYXQoZS8yKy41KSxjPSIgIi5yZXBlYXQoZS8yLS41KSk6Yz1hPSIgIi5yZXBlYXQoZS8yKTpjPSIgIi5yZXBlYXQoZSl9ITEhPT10LmRlbGltaXRlclN0YXJ0JiYhdSYmbi5wdXNoKCJ8IiksITEhPT10LnBhZGRpbmcmJiEoITE9PT10LmFsaWduRGVsaW1pdGVycyYmIiI9PT1pKSYmKCExIT09dC5kZWxpbWl0ZXJTdGFydHx8dSkmJm4ucHVzaCgiICIpLCExIT09dC5hbGlnbkRlbGltaXRlcnMmJm4ucHVzaChhKSxuLnB1c2goaSksITEhPT10LmFsaWduRGVsaW1pdGVycyYmbi5wdXNoKGMpLCExIT09dC5wYWRkaW5nJiZuLnB1c2goIiAiKSwoITEhPT10LmRlbGltaXRlckVuZHx8dSE9PWwtMSkmJm4ucHVzaCgifCIpfWYucHVzaCghMT09PXQuZGVsaW1pdGVyRW5kP24uam9pbigiIikucmVwbGFjZSgvICskLywiIik6bi5qb2luKCIiKSl9cmV0dXJuIGYuam9pbigiXG4iKX1mdW5jdGlvbiBlNChlKXtyZXR1cm4gbnVsbD09ZT8iIjpTdHJpbmcoZSl9ZnVuY3Rpb24gZTgoZSl7cmV0dXJuIGUubGVuZ3RofWZ1bmN0aW9uIGU5KGUpe2xldCB0PSJzdHJpbmciPT10eXBlb2YgZT9lLmNvZGVQb2ludEF0KDApOjA7cmV0dXJuIDY3PT09dHx8OTk9PT10Pzk5Ojc2PT09dHx8MTA4PT09dD8xMDg6ODI9PT10fHwxMTQ9PT10PzExNDowfWUzLnBlZWs9ZTU7bGV0IGU3PXtlbnRlcjp7dGFibGU6dGUsdGFibGVEYXRhOnRvLHRhYmxlSGVhZGVyOnRvLHRhYmxlUm93OnRyfSxleGl0Ontjb2RlVGV4dDp0aSx0YWJsZTp0dCx0YWJsZURhdGE6dG4sdGFibGVIZWFkZXI6dG4sdGFibGVSb3c6dG59fTtmdW5jdGlvbiB0ZShlKXtsZXQgdD1lLl9hbGlnbjt0aGlzLmVudGVyKHt0eXBlOiJ0YWJsZSIsYWxpZ246dC5tYXAoZT0+Im5vbmUiPT09ZT9udWxsOmUpLGNoaWxkcmVuOltdfSxlKSx0aGlzLnNldERhdGEoImluVGFibGUiLCEwKX1mdW5jdGlvbiB0dChlKXt0aGlzLmV4aXQoZSksdGhpcy5zZXREYXRhKCJpblRhYmxlIil9ZnVuY3Rpb24gdHIoZSl7dGhpcy5lbnRlcih7dHlwZToidGFibGVSb3ciLGNoaWxkcmVuOltdfSxlKX1mdW5jdGlvbiB0bihlKXt0aGlzLmV4aXQoZSl9ZnVuY3Rpb24gdG8oZSl7dGhpcy5lbnRlcih7dHlwZToidGFibGVDZWxsIixjaGlsZHJlbjpbXX0sZSl9ZnVuY3Rpb24gdGkoZSl7bGV0IHQ9dGhpcy5yZXN1bWUoKTt0aGlzLmdldERhdGEoImluVGFibGUiKSYmKHQ9dC5yZXBsYWNlKC9cXChbXFx8XSkvZyx0YSkpLHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0udmFsdWU9dCx0aGlzLmV4aXQoZSl9ZnVuY3Rpb24gdGEoZSx0KXtyZXR1cm4ifCI9PT10P3Q6ZX1mdW5jdGlvbiB0cyhlKXtsZXQgdD1lfHx7fSxyPXQudGFibGVDZWxsUGFkZGluZyxuPXQudGFibGVQaXBlQWxpZ24sbz10LnN0cmluZ0xlbmd0aCxpPXI/IiAiOiJ8IjtyZXR1cm57dW5zYWZlOlt7Y2hhcmFjdGVyOiJcciIsaW5Db25zdHJ1Y3Q6InRhYmxlQ2VsbCJ9LHtjaGFyYWN0ZXI6IlxuIixpbkNvbnN0cnVjdDoidGFibGVDZWxsIn0se2F0QnJlYWs6ITAsY2hhcmFjdGVyOiJ8IixhZnRlcjoiWwkgOi1dIn0se2NoYXJhY3RlcjoifCIsaW5Db25zdHJ1Y3Q6InRhYmxlQ2VsbCJ9LHthdEJyZWFrOiEwLGNoYXJhY3RlcjoiOiIsYWZ0ZXI6Ii0ifSx7YXRCcmVhazohMCxjaGFyYWN0ZXI6Ii0iLGFmdGVyOiJbOnwtXSJ9XSxoYW5kbGVyczp7dGFibGU6YSx0YWJsZVJvdzpzLHRhYmxlQ2VsbDpsLGlubGluZUNvZGU6cH19O2Z1bmN0aW9uIGEoZSx0LHIsbil7cmV0dXJuIGModShlLHIsbiksZS5hbGlnbil9ZnVuY3Rpb24gcyhlLHQscixuKXtsZXQgbz1jKFtkKGUscixuKV0pO3JldHVybiBvLnNsaWNlKDAsby5pbmRleE9mKCJcbiIpKX1mdW5jdGlvbiBsKGUsdCxyLG4pe2xldCBvPXIuZW50ZXIoInRhYmxlQ2VsbCIpLGE9ci5lbnRlcigicGhyYXNpbmciKSxzPWVaKGUscix7Li4ubixiZWZvcmU6aSxhZnRlcjppfSk7cmV0dXJuIGEoKSxvKCksc31mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGU2KGUse2FsaWduOnQsYWxpZ25EZWxpbWl0ZXJzOm4scGFkZGluZzpyLHN0cmluZ0xlbmd0aDpvfSl9ZnVuY3Rpb24gdShlLHQscil7bGV0IG49ZS5jaGlsZHJlbixvPS0xLGk9W10sYT10LmVudGVyKCJ0YWJsZSIpO2Zvcig7KytvPG4ubGVuZ3RoOylpW29dPWQobltvXSx0LHIpO3JldHVybiBhKCksaX1mdW5jdGlvbiBkKGUsdCxyKXtsZXQgbj1lLmNoaWxkcmVuLG89LTEsaT1bXSxhPXQuZW50ZXIoInRhYmxlUm93Iik7Zm9yKDsrK288bi5sZW5ndGg7KWlbb109bChuW29dLGUsdCxyKTtyZXR1cm4gYSgpLGl9ZnVuY3Rpb24gcChlLHQscil7bGV0IG49ZTMoZSx0LHIpO3JldHVybiByLnN0YWNrLmluY2x1ZGVzKCJ0YWJsZUNlbGwiKSYmKG49bi5yZXBsYWNlKC9cfC9nLCJcXCQmIikpLG59fWZ1bmN0aW9uIHRsKGUpe2xldCB0PWUub3B0aW9ucy5idWxsZXR8fCIqIjtpZigiKiIhPT10JiYiKyIhPT10JiYiLSIhPT10KXRocm93IEVycm9yKCJDYW5ub3Qgc2VyaWFsaXplIGl0ZW1zIHdpdGggYCIrdCsiYCBmb3IgYG9wdGlvbnMuYnVsbGV0YCwgZXhwZWN0ZWQgYCpgLCBgK2AsIG9yIGAtYCIpO3JldHVybiB0fWZ1bmN0aW9uIHRjKGUpe2xldCB0PWUub3B0aW9ucy5saXN0SXRlbUluZGVudHx8InRhYiI7aWYoMT09PXR8fCIxIj09PXQpcmV0dXJuIm9uZSI7aWYoInRhYiIhPT10JiYib25lIiE9PXQmJiJtaXhlZCIhPT10KXRocm93IEVycm9yKCJDYW5ub3Qgc2VyaWFsaXplIGl0ZW1zIHdpdGggYCIrdCsiYCBmb3IgYG9wdGlvbnMubGlzdEl0ZW1JbmRlbnRgLCBleHBlY3RlZCBgdGFiYCwgYG9uZWAsIG9yIGBtaXhlZGAiKTtyZXR1cm4gdH1mdW5jdGlvbiB0dShlLHQscixuKXtsZXQgbz10YyhyKSxpPXIuYnVsbGV0Q3VycmVudHx8dGwocik7dCYmImxpc3QiPT09dC50eXBlJiZ0Lm9yZGVyZWQmJihpPSgibnVtYmVyIj09dHlwZW9mIHQuc3RhcnQmJnQuc3RhcnQ+LTE/dC5zdGFydDoxKSsoITE9PT1yLm9wdGlvbnMuaW5jcmVtZW50TGlzdE1hcmtlcj8wOnQuY2hpbGRyZW4uaW5kZXhPZihlKSkraSk7bGV0IGE9aS5sZW5ndGgrMTsoInRhYiI9PT1vfHwibWl4ZWQiPT09byYmKHQmJiJsaXN0Ij09PXQudHlwZSYmdC5zcHJlYWR8fGUuc3ByZWFkKSkmJihhPTQqTWF0aC5jZWlsKGEvNCkpO2xldCBzPXIuY3JlYXRlVHJhY2tlcihuKTtzLm1vdmUoaSsiICIucmVwZWF0KGEtaS5sZW5ndGgpKSxzLnNoaWZ0KGEpO2xldCBsPXIuZW50ZXIoImxpc3RJdGVtIiksYz1yLmluZGVudExpbmVzKHIuY29udGFpbmVyRmxvdyhlLHMuY3VycmVudCgpKSx1KTtyZXR1cm4gbCgpLGM7ZnVuY3Rpb24gdShlLHQscil7cmV0dXJuIHQ/KHI/IiI6IiAiLnJlcGVhdChhKSkrZToocj9pOmkrIiAiLnJlcGVhdChhLWkubGVuZ3RoKSkrZX19bGV0IHRkPXtleGl0Ont0YXNrTGlzdENoZWNrVmFsdWVDaGVja2VkOnRmLHRhc2tMaXN0Q2hlY2tWYWx1ZVVuY2hlY2tlZDp0ZixwYXJhZ3JhcGg6dG19fSx0cD17dW5zYWZlOlt7YXRCcmVhazohMCxjaGFyYWN0ZXI6Ii0iLGFmdGVyOiJbOnwtXSJ9XSxoYW5kbGVyczp7bGlzdEl0ZW06dGh9fTtmdW5jdGlvbiB0ZihlKXt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTJdLmNoZWNrZWQ9InRhc2tMaXN0Q2hlY2tWYWx1ZUNoZWNrZWQiPT09ZS50eXBlfWZ1bmN0aW9uIHRtKGUpe2xldCB0PXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMl07aWYodCYmImxpc3RJdGVtIj09PXQudHlwZSYmImJvb2xlYW4iPT10eXBlb2YgdC5jaGVja2VkKXtsZXQgZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLHI9ZS5jaGlsZHJlblswXTtpZihyJiYidGV4dCI9PT1yLnR5cGUpe2xldCBuO2xldCBvPXQuY2hpbGRyZW4saT0tMTtmb3IoOysraTxvLmxlbmd0aDspe2xldCBlPW9baV07aWYoInBhcmFncmFwaCI9PT1lLnR5cGUpe249ZTticmVha319bj09PWUmJihyLnZhbHVlPXIudmFsdWUuc2xpY2UoMSksMD09PXIudmFsdWUubGVuZ3RoP2UuY2hpbGRyZW4uc2hpZnQoKTplLnBvc2l0aW9uJiZyLnBvc2l0aW9uJiYibnVtYmVyIj09dHlwZW9mIHIucG9zaXRpb24uc3RhcnQub2Zmc2V0JiYoci5wb3NpdGlvbi5zdGFydC5jb2x1bW4rKyxyLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCsrLGUucG9zaXRpb24uc3RhcnQ9T2JqZWN0LmFzc2lnbih7fSxyLnBvc2l0aW9uLnN0YXJ0KSkpfX10aGlzLmV4aXQoZSl9ZnVuY3Rpb24gdGgoZSx0LHIsbil7bGV0IG89ZS5jaGlsZHJlblswXSxpPSJib29sZWFuIj09dHlwZW9mIGUuY2hlY2tlZCYmbyYmInBhcmFncmFwaCI9PT1vLnR5cGUsYT0iWyIrKGUuY2hlY2tlZD8ieCI6IiAiKSsiXSAiLHM9ZU0obik7aSYmcy5tb3ZlKGEpO2xldCBsPXR1KGUsdCxyLHsuLi5uLC4uLnMuY3VycmVudCgpfSk7cmV0dXJuIGkmJihsPWwucmVwbGFjZSgvXig/OlsqKy1dfFxkK1wuKShbXHJcbl18IHsxLDN9KS8sYykpLGw7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZSthfX1mdW5jdGlvbiB0Zygpe3JldHVybltlbCxlRCgpLGVRLGU3LHRkXX1mdW5jdGlvbiB0YihlKXtyZXR1cm57ZXh0ZW5zaW9uczpbZWMsZUwoKSxlSix0cyhlKSx0cF19fWZ1bmN0aW9uIHR2KGU9e30pe2xldCB0PXRoaXMuZGF0YSgpO2Z1bmN0aW9uIHIoZSxyKXsodFtlXT90W2VdOnRbZV09W10pLnB1c2gocil9cigibWljcm9tYXJrRXh0ZW5zaW9ucyIsZW4oZSkpLHIoImZyb21NYXJrZG93bkV4dGVuc2lvbnMiLHRnKCkpLHIoInRvTWFya2Rvd25FeHRlbnNpb25zIix0YihlKSl9fSw5MDIwMjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2xldCBuO2Z1bmN0aW9uIG8oKXt9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSgpfWZ1bmN0aW9uIGEoZSl7ZS5mb3JFYWNoKGkpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9ZnVuY3Rpb24gbChlLHQpe3JldHVybiBlIT1lP3Q9PXQ6ZSE9PXR8fGUmJiJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGV9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gMD09PU9iamVjdC5rZXlzKGUpLmxlbmd0aH1mdW5jdGlvbiB1KGUsLi4udCl7aWYobnVsbD09ZSlyZXR1cm4gbztsZXQgcj1lLnN1YnNjcmliZSguLi50KTtyZXR1cm4gci51bnN1YnNjcmliZT8oKT0+ci51bnN1YnNjcmliZSgpOnJ9ZnVuY3Rpb24gZChlKXtsZXQgdDtyZXR1cm4gdShlLGU9PnQ9ZSkoKSx0fXIuZCh0LHtuSzooKT0+RSxVMjooKT0+ZCxmWjooKT0+eX0pO2xldCBwPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczpnbG9iYWw7Y2xhc3MgZntjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9ZSx0aGlzLl9saXN0ZW5lcnM9IldlYWtNYXAiaW4gcD9uZXcgV2Vha01hcDp2b2lkIDB9b2JzZXJ2ZShlLHQpe3JldHVybiB0aGlzLl9saXN0ZW5lcnMuc2V0KGUsdCksdGhpcy5fZ2V0T2JzZXJ2ZXIoKS5vYnNlcnZlKGUsdGhpcy5vcHRpb25zKSwoKT0+e3RoaXMuX2xpc3RlbmVycy5kZWxldGUoZSksdGhpcy5fb2JzZXJ2ZXIudW5vYnNlcnZlKGUpfX1fZ2V0T2JzZXJ2ZXIoKXt2YXIgZTtyZXR1cm4gbnVsbCE9PShlPXRoaXMuX29ic2VydmVyKSYmdm9pZCAwIT09ZT9lOnRoaXMuX29ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcihlPT57dmFyIHQ7Zm9yKGxldCByIG9mIGUpZi5lbnRyaWVzLnNldChyLnRhcmdldCxyKSxudWxsPT09KHQ9dGhpcy5fbGlzdGVuZXJzLmdldChyLnRhcmdldCkpfHx2b2lkIDA9PT10fHx0KHIpfSl9fWYuZW50cmllcz0iV2Vha01hcCJpbiBwP25ldyBXZWFrTWFwOnZvaWQgMDtsZXQgbT1bXTtmdW5jdGlvbiBoKGUpe2xldCB0PVtdLHI9W107bS5mb3JFYWNoKG49Pi0xPT09ZS5pbmRleE9mKG4pP3QucHVzaChuKTpyLnB1c2gobikpLHIuZm9yRWFjaChlPT5lKCkpLG09dH1mdW5jdGlvbiBnKGUsdCl7bGV0IHI9ZS4kJDtudWxsIT09ci5mcmFnbWVudCYmKGgoci5hZnRlcl91cGRhdGUpLGEoci5vbl9kZXN0cm95KSxyLmZyYWdtZW50JiZyLmZyYWdtZW50LmQodCksci5vbl9kZXN0cm95PXIuZnJhZ21lbnQ9bnVsbCxyLmN0eD1bXSl9ImZ1bmN0aW9uIj09dHlwZW9mIEhUTUxFbGVtZW50JiYobj1jbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiJ9KX1jb25uZWN0ZWRDYWxsYmFjaygpe2xldHtvbl9tb3VudDplfT10aGlzLiQkO2ZvcihsZXQgdCBpbiB0aGlzLiQkLm9uX2Rpc2Nvbm5lY3Q9ZS5tYXAoaSkuZmlsdGVyKHMpLHRoaXMuJCQuc2xvdHRlZCl0aGlzLmFwcGVuZENoaWxkKHRoaXMuJCQuc2xvdHRlZFt0XSl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGUsdCxyKXt0aGlzW2VdPXJ9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthKHRoaXMuJCQub25fZGlzY29ubmVjdCl9JGRlc3Ryb3koKXtnKHRoaXMsMSksdGhpcy4kZGVzdHJveT1vfSRvbihlLHQpe2lmKCFzKHQpKXJldHVybiBvO2xldCByPXRoaXMuJCQuY2FsbGJhY2tzW2VdfHwodGhpcy4kJC5jYWxsYmFja3NbZV09W10pO3JldHVybiByLnB1c2godCksKCk9PntsZXQgZT1yLmluZGV4T2YodCk7LTEhPT1lJiZyLnNwbGljZShlLDEpfX0kc2V0KGUpe3RoaXMuJCRzZXQmJiFjKGUpJiYodGhpcy4kJC5za2lwX2JvdW5kPSEwLHRoaXMuJCRzZXQoZSksdGhpcy4kJC5za2lwX2JvdW5kPSExKX19KTtsZXQgYj1bXTtmdW5jdGlvbiB2KGUsdCl7cmV0dXJue3N1YnNjcmliZTp5KGUsdCkuc3Vic2NyaWJlfX1mdW5jdGlvbiB5KGUsdD1vKXtsZXQgcjtsZXQgbj1uZXcgU2V0O2Z1bmN0aW9uIGkodCl7aWYobChlLHQpJiYoZT10LHIpKXtsZXQgdD0hYi5sZW5ndGg7Zm9yKGxldCB0IG9mIG4pdFsxXSgpLGIucHVzaCh0LGUpO2lmKHQpe2ZvcihsZXQgZT0wO2U8Yi5sZW5ndGg7ZSs9MiliW2VdWzBdKGJbZSsxXSk7Yi5sZW5ndGg9MH19fWZ1bmN0aW9uIGEodCl7aSh0KGUpKX1mdW5jdGlvbiBzKGEsbD1vKXtsZXQgYz1bYSxsXTtyZXR1cm4gbi5hZGQoYyksMT09PW4uc2l6ZSYmKHI9dChpKXx8byksYShlKSwoKT0+e24uZGVsZXRlKGMpLDA9PT1uLnNpemUmJnImJihyKCkscj1udWxsKX19cmV0dXJue3NldDppLHVwZGF0ZTphLHN1YnNjcmliZTpzfX1mdW5jdGlvbiBFKGUsdCxyKXtsZXQgbj0hQXJyYXkuaXNBcnJheShlKSxpPW4/W2VdOmUsbD10Lmxlbmd0aDwyO3JldHVybiB2KHIsZT0+e2xldCByPSExLGM9W10sZD0wLHA9byxmPSgpPT57aWYoZClyZXR1cm47cCgpO2xldCByPXQobj9jWzBdOmMsZSk7bD9lKHIpOnA9cyhyKT9yOm99LG09aS5tYXAoKGUsdCk9PnUoZSxlPT57Y1t0XT1lLGQmPX4oMTw8dCksciYmZigpfSwoKT0+e2R8PTE8PHR9KSk7cmV0dXJuIHI9ITAsZigpLGZ1bmN0aW9uKCl7YShtKSxwKCkscj0hMX19KX19LDI4Mzk1OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse0NSOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LEZDOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LEpoOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LEtMOmZ1bmN0aW9uKCl7cmV0dXJuIG19LFhBOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LFpUOmZ1bmN0aW9uKCl7cmV0dXJuIG99LF9UOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LGV2OmZ1bmN0aW9uKCl7cmV0dXJuIGR9LG1HOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LHBpOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHFxOmZ1bmN0aW9uKCl7cmV0dXJuIHB9fSk7dmFyIG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4obj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCh7X19wcm90b19fOltdfSlpbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0pKGUsdCl9O2Z1bmN0aW9uIG8oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKHQpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9bihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX12YXIgaT1mdW5jdGlvbigpe3JldHVybihpPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW3JdLHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBhKGUsdCl7dmFyIHI9e307Zm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJjA+dC5pbmRleE9mKG4pJiYocltuXT1lW25dKTtpZihudWxsIT1lJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scylmb3IodmFyIG89MCxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxuLmxlbmd0aDtvKyspMD50LmluZGV4T2YobltvXSkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG5bb10pJiYocltuW29dXT1lW25bb11dKTtyZXR1cm4gcn1mdW5jdGlvbiBzKGUsdCxyLG4pe2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiByP2U6bmV3IHIoZnVuY3Rpb24odCl7dChlKX0pfXJldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKGZ1bmN0aW9uKHIsaSl7ZnVuY3Rpb24gYShlKXt0cnl7bChuLm5leHQoZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2wobi50aHJvdyhlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gbChlKXtlLmRvbmU/cihlLnZhbHVlKTpvKGUudmFsdWUpLnRoZW4oYSxzKX1sKChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBsKGUsdCl7dmFyIHIsbixvLGk9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX0sYT1PYmplY3QuY3JlYXRlKCgiZnVuY3Rpb24iPT10eXBlb2YgSXRlcmF0b3I/SXRlcmF0b3I6T2JqZWN0KS5wcm90b3R5cGUpO3JldHVybiBhLm5leHQ9cygwKSxhLnRocm93PXMoMSksYS5yZXR1cm49cygyKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBsKFtlLHRdKX19ZnVuY3Rpb24gbChzKXtpZihyKXRocm93IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YSYmKGE9MCxzWzBdJiYoaT0wKSksaTspdHJ5e2lmKHI9MSxuJiYobz0yJnNbMF0/bi5yZXR1cm46c1swXT9uLnRocm93fHwoKG89bi5yZXR1cm4pJiZvLmNhbGwobiksMCk6bi5uZXh0KSYmIShvPW8uY2FsbChuLHNbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChuPTAsbyYmKHM9WzImc1swXSxvLnZhbHVlXSksc1swXSl7Y2FzZSAwOmNhc2UgMTpvPXM7YnJlYWs7Y2FzZSA0OnJldHVybiBpLmxhYmVsKysse3ZhbHVlOnNbMV0sZG9uZTohMX07Y2FzZSA1OmkubGFiZWwrKyxuPXNbMV0scz1bMF07Y29udGludWU7Y2FzZSA3OnM9aS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPShvPWkudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pJiYoNj09PXNbMF18fDI9PT1zWzBdKSl7aT0wO2NvbnRpbnVlfWlmKDM9PT1zWzBdJiYoIW98fHNbMV0+b1swXSYmc1sxXTxvWzNdKSl7aS5sYWJlbD1zWzFdO2JyZWFrfWlmKDY9PT1zWzBdJiZpLmxhYmVsPG9bMV0pe2kubGFiZWw9b1sxXSxvPXM7YnJlYWt9aWYobyYmaS5sYWJlbDxvWzJdKXtpLmxhYmVsPW9bMl0saS5vcHMucHVzaChzKTticmVha31vWzJdJiZpLm9wcy5wb3AoKSxpLnRyeXMucG9wKCk7Y29udGludWV9cz10LmNhbGwoZSxpKX1jYXRjaChlKXtzPVs2LGVdLG49MH1maW5hbGx5e3I9bz0wfWlmKDUmc1swXSl0aHJvdyBzWzFdO3JldHVybnt2YWx1ZTpzWzBdP3NbMV06dm9pZCAwLGRvbmU6ITB9fX1mdW5jdGlvbiBjKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixyPXQmJmVbdF0sbj0wO2lmKHIpcmV0dXJuIHIuY2FsbChlKTtpZihlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJm4+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW24rK10sZG9uZTohZX19fTt0aHJvdyBUeXBlRXJyb3IodD8iT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iOiJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIil9ZnVuY3Rpb24gdShlLHQpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXTtpZighcilyZXR1cm4gZTt2YXIgbixvLGk9ci5jYWxsKGUpLGE9W107dHJ5e2Zvcig7KHZvaWQgMD09PXR8fHQtLSA+MCkmJiEobj1pLm5leHQoKSkuZG9uZTspYS5wdXNoKG4udmFsdWUpfWNhdGNoKGUpe289e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihyPWkucmV0dXJuKSYmci5jYWxsKGkpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gYX1mdW5jdGlvbiBkKGUsdCxyKXtpZihyfHwyPT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgbixvPTAsaT10Lmxlbmd0aDtvPGk7bysrKShufHwhKG8gaW4gdCkpJiYoIW4mJihuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxvKSksbltvXT10W29dKTtyZXR1cm4gZS5jb25jYXQobnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBwPyh0aGlzLnY9ZSx0aGlzKTpuZXcgcChlKX1mdW5jdGlvbiBmKGUsdCxyKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgbixvPXIuYXBwbHkoZSx0fHxbXSksaT1bXTtyZXR1cm4gbj1PYmplY3QuY3JlYXRlKCgiZnVuY3Rpb24iPT10eXBlb2YgQXN5bmNJdGVyYXRvcj9Bc3luY0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKSxzKCJuZXh0IikscygidGhyb3ciKSxzKCJyZXR1cm4iLGEpLG5bU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG47ZnVuY3Rpb24gYShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KS50aGVuKGUsZCl9fWZ1bmN0aW9uIHMoZSx0KXtvW2VdJiYobltlXT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocixuKXtpLnB1c2goW2UsdCxyLG5dKT4xfHxsKGUsdCl9KX0sdCYmKG5bZV09dChuW2VdKSkpfWZ1bmN0aW9uIGwoZSx0KXt0cnl7YyhvW2VdKHQpKX1jYXRjaChlKXtmKGlbMF1bM10sZSl9fWZ1bmN0aW9uIGMoZSl7ZS52YWx1ZSBpbnN0YW5jZW9mIHA/UHJvbWlzZS5yZXNvbHZlKGUudmFsdWUudikudGhlbih1LGQpOmYoaVswXVsyXSxlKX1mdW5jdGlvbiB1KGUpe2woIm5leHQiLGUpfWZ1bmN0aW9uIGQoZSl7bCgidGhyb3ciLGUpfWZ1bmN0aW9uIGYoZSx0KXtlKHQpLGkuc2hpZnQoKSxpLmxlbmd0aCYmbChpWzBdWzBdLGlbMF1bMV0pfX1mdW5jdGlvbiBtKGUpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciB0LHI9ZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIHI/ci5jYWxsKGUpOihlPWMoZSksdD17fSxuKCJuZXh0IiksbigidGhyb3ciKSxuKCJyZXR1cm4iKSx0W1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0KTtmdW5jdGlvbiBuKHIpe3Rbcl09ZVtyXSYmZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4saSl7byhuLGksKHQ9ZVtyXSh0KSkuZG9uZSx0LnZhbHVlKX0pfX1mdW5jdGlvbiBvKGUsdCxyLG4pe1Byb21pc2UucmVzb2x2ZShuKS50aGVuKGZ1bmN0aW9uKHQpe2Uoe3ZhbHVlOnQsZG9uZTpyfSl9LHQpfX19LDM3Nzc6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7TzpmdW5jdGlvbigpe3JldHVybiBufX0pO2xldCBuPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIGw7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBhKGUpO2lmKCJvYmplY3QiPT10eXBlb2YgZSlyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9vKGUpOmkoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIHMoZSk7dGhyb3cgRXJyb3IoIkV4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0Iil9O2Z1bmN0aW9uIG8oZSl7bGV0IHQ9W10scj0tMTtmb3IoOysrcjxlLmxlbmd0aDspdFtyXT1uKGVbcl0pO3JldHVybiBzKG8pO2Z1bmN0aW9uIG8oLi4uZSl7bGV0IHI9LTE7Zm9yKDsrK3I8dC5sZW5ndGg7KWlmKHRbcl0uY2FsbCh0aGlzLC4uLmUpKXJldHVybiEwO3JldHVybiExfX1mdW5jdGlvbiBpKGUpe3JldHVybiBzKHQpO2Z1bmN0aW9uIHQodCl7bGV0IHI7Zm9yKHIgaW4gZSlpZih0W3JdIT09ZVtyXSlyZXR1cm4hMTtyZXR1cm4hMH19ZnVuY3Rpb24gYShlKXtyZXR1cm4gcyh0KTtmdW5jdGlvbiB0KHQpe3JldHVybiB0JiZ0LnR5cGU9PT1lfX1mdW5jdGlvbiBzKGUpe3JldHVybiB0O2Z1bmN0aW9uIHQociwuLi5uKXtyZXR1cm4hIShyJiYib2JqZWN0Ij09dHlwZW9mIHImJiJ0eXBlImluIHImJmUuY2FsbCh0aGlzLHIsLi4ubikpfX1mdW5jdGlvbiBsKCl7cmV0dXJuITB9fSwxMTU3MTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtTNDooKT0+bH0pO3ZhciBuPXIoIjM3NzciKTtmdW5jdGlvbiBvKGUpe3JldHVybiBlfWxldCBpPSEwLGE9ITEscz0ic2tpcCIsbD1mdW5jdGlvbihlLHQscixpKXsiZnVuY3Rpb24iPT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHImJihpPXIscj10LHQ9bnVsbCk7bGV0IGw9KDAsbi5PKSh0KSx1PWk/LTE6MTtmdW5jdGlvbiBkKGUsbixwKXtsZXQgZj1lJiYib2JqZWN0Ij09dHlwZW9mIGU/ZTp7fTtpZigic3RyaW5nIj09dHlwZW9mIGYudHlwZSl7bGV0IHQ9InN0cmluZyI9PXR5cGVvZiBmLnRhZ05hbWU/Zi50YWdOYW1lOiJzdHJpbmciPT10eXBlb2YgZi5uYW1lP2YubmFtZTp2b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KG0sIm5hbWUiLHt2YWx1ZToibm9kZSAoIitvKGUudHlwZSsodD8iPCIrdCsiPiI6IiIpKSsiKSJ9KX1yZXR1cm4gbTtmdW5jdGlvbiBtKCl7bGV0IG8sZixtLGg9W107aWYoKCF0fHxsKGUsbixwW3AubGVuZ3RoLTFdfHxudWxsKSkmJihoPWMocihlLHApKSlbMF09PT1hKXJldHVybiBoO2lmKGUuY2hpbGRyZW4mJmhbMF0hPT1zKWZvcihmPShpP2UuY2hpbGRyZW4ubGVuZ3RoOi0xKSt1LG09cC5jb25jYXQoZSk7Zj4tMSYmZjxlLmNoaWxkcmVuLmxlbmd0aDspe2lmKChvPWQoZS5jaGlsZHJlbltmXSxmLG0pKCkpWzBdPT09YSlyZXR1cm4gbztmPSJudW1iZXIiPT10eXBlb2Ygb1sxXT9vWzFdOmYrdX1yZXR1cm4gaH19ZChlLHZvaWQgMCxbXSkoKX07ZnVuY3Rpb24gYyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJudW1iZXIiPT10eXBlb2YgZT9baSxlXTpbZV19fSwxOTM4MzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtabjpmdW5jdGlvbigpe3JldHVybiBvfSxlejpmdW5jdGlvbigpe3JldHVybiBufX0pO2xldCBuPXtnd2VpOjksd2VpOjE4fSxvPXtldGhlcjotOSx3ZWk6OX19LDgzMDgxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse0c6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgbj1yKDM1MzMzKTtjbGFzcyBvIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0PXt9KXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkZXRhaWxzIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImRvY3NQYXRoIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm1ldGFNZXNzYWdlcyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzaG9ydE1lc3NhZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJWaWVtRXJyb3IifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInZlcnNpb24iLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTooMCxuLmJvKSgpfSk7bGV0IHI9dC5jYXVzZSBpbnN0YW5jZW9mIG8/dC5jYXVzZS5kZXRhaWxzOnQuY2F1c2U/Lm1lc3NhZ2U/dC5jYXVzZS5tZXNzYWdlOnQuZGV0YWlscyxpPXQuY2F1c2UgaW5zdGFuY2VvZiBvJiZ0LmNhdXNlLmRvY3NQYXRofHx0LmRvY3NQYXRoO3RoaXMubWVzc2FnZT1bZXx8IkFuIGVycm9yIG9jY3VycmVkLiIsIiIsLi4udC5tZXRhTWVzc2FnZXM/Wy4uLnQubWV0YU1lc3NhZ2VzLCIiXTpbXSwuLi5pP1tgRG9jczogaHR0cHM6Ly92aWVtLnNoJHtpfSR7dC5kb2NzU2x1Zz9gIyR7dC5kb2NzU2x1Z31gOiIifWBdOltdLC4uLnI/W2BEZXRhaWxzOiAke3J9YF06W10sYFZlcnNpb246ICR7dGhpcy52ZXJzaW9ufWBdLmpvaW4oIlxuIiksdC5jYXVzZSYmKHRoaXMuY2F1c2U9dC5jYXVzZSksdGhpcy5kZXRhaWxzPXIsdGhpcy5kb2NzUGF0aD1pLHRoaXMubWV0YU1lc3NhZ2VzPXQubWV0YU1lc3NhZ2VzLHRoaXMuc2hvcnRNZXNzYWdlPWV9d2FsayhlKXtyZXR1cm4gaSh0aGlzLGUpfX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIHQ/LihlKT9lOmUmJiJvYmplY3QiPT10eXBlb2YgZSYmImNhdXNlImluIGU/aShlLmNhdXNlLHQpOnQ/bnVsbDplfX0sODAwMjk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7JHM6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sV186ZnVuY3Rpb24oKXtyZXR1cm4gYX0sbVY6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgbj1yKDgzMDgxKTtjbGFzcyBvIGV4dGVuZHMgbi5He2NvbnN0cnVjdG9yKHtvZmZzZXQ6ZSxwb3NpdGlvbjp0LHNpemU6cn0pe3N1cGVyKGBTbGljZSAkeyJzdGFydCI9PT10PyJzdGFydGluZyI6ImVuZGluZyJ9IGF0IG9mZnNldCAiJHtlfSIgaXMgb3V0LW9mLWJvdW5kcyAoc2l6ZTogJHtyfSkuYCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiU2xpY2VPZmZzZXRPdXRPZkJvdW5kc0Vycm9yIn0pfX1jbGFzcyBpIGV4dGVuZHMgbi5He2NvbnN0cnVjdG9yKHtzaXplOmUsdGFyZ2V0U2l6ZTp0LHR5cGU6cn0pe3N1cGVyKGAke3IuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtyLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCl9IHNpemUgKCR7ZX0pIGV4Y2VlZHMgcGFkZGluZyBzaXplICgke3R9KS5gKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJTaXplRXhjZWVkc1BhZGRpbmdTaXplRXJyb3IifSl9fWNsYXNzIGEgZXh0ZW5kcyBuLkd7Y29uc3RydWN0b3Ioe3NpemU6ZSx0YXJnZXRTaXplOnQsdHlwZTpyfSl7c3VwZXIoYCR7ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke3Iuc2xpY2UoMSkudG9Mb3dlckNhc2UoKX0gaXMgZXhwZWN0ZWQgdG8gYmUgJHt0fSAke3J9IGxvbmcsIGJ1dCBpcyAke2V9ICR7cn0gbG9uZy5gKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJJbnZhbGlkQnl0ZXNMZW5ndGhFcnJvciJ9KX19fSw3NjM0MDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtDZDpmdW5jdGlvbigpe3JldHVybiBhfSxKNTpmdW5jdGlvbigpe3JldHVybiBvfSxNNjpmdW5jdGlvbigpe3JldHVybiBzfSx5cjpmdW5jdGlvbigpe3JldHVybiBpfX0pO3ZhciBuPXIoODMwODEpO2NsYXNzIG8gZXh0ZW5kcyBuLkd7Y29uc3RydWN0b3Ioe21heDplLG1pbjp0LHNpZ25lZDpyLHNpemU6bix2YWx1ZTpvfSl7c3VwZXIoYE51bWJlciAiJHtvfSIgaXMgbm90IGluIHNhZmUgJHtuP2Akezgqbn0tYml0ICR7cj8ic2lnbmVkIjoidW5zaWduZWQifSBgOiIifWludGVnZXIgcmFuZ2UgJHtlP2AoJHt0fSB0byAke2V9KWA6YChhYm92ZSAke3R9KWB9YCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiSW50ZWdlck91dE9mUmFuZ2VFcnJvciJ9KX19Y2xhc3MgaSBleHRlbmRzIG4uR3tjb25zdHJ1Y3RvcihlKXtzdXBlcihgQnl0ZXMgdmFsdWUgIiR7ZX0iIGlzIG5vdCBhIHZhbGlkIGJvb2xlYW4uIFRoZSBieXRlcyBhcnJheSBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgYnl0ZSBvZiBlaXRoZXIgYSAwIG9yIDEgdmFsdWUuYCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiSW52YWxpZEJ5dGVzQm9vbGVhbkVycm9yIn0pfX1jbGFzcyBhIGV4dGVuZHMgbi5He2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBIZXggdmFsdWUgIiR7ZX0iIGlzIG5vdCBhIHZhbGlkIGJvb2xlYW4uIFRoZSBoZXggdmFsdWUgbXVzdCBiZSAiMHgwIiAoZmFsc2UpIG9yICIweDEiICh0cnVlKS5gKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJJbnZhbGlkSGV4Qm9vbGVhbkVycm9yIn0pfX1jbGFzcyBzIGV4dGVuZHMgbi5He2NvbnN0cnVjdG9yKHtnaXZlblNpemU6ZSxtYXhTaXplOnR9KXtzdXBlcihgU2l6ZSBjYW5ub3QgZXhjZWVkICR7dH0gYnl0ZXMuIEdpdmVuIHNpemU6ICR7ZX0gYnl0ZXMuYCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiU2l6ZU92ZXJmbG93RXJyb3IifSl9fX0sMzUzMzM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7Q1I6KCk9Pm8sR3I6KCk9PmksYm86KCk9PmF9KTtsZXQgbj0iMi4xMi4wIixvPWU9PmUsaT1lPT5lLGE9KCk9PmB2aWVtQCR7bn1gfSw4NzMxMzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx7c3RyaWN0OnQ9ITB9PXt9KXtyZXR1cm4hIWUmJiJzdHJpbmciPT10eXBlb2YgZSYmKHQ/L14weFswLTlhLWZBLUZdKiQvLnRlc3QoZSk6ZS5zdGFydHNXaXRoKCIweCIpKX1yLmQodCx7djpmdW5jdGlvbigpe3JldHVybiBufX0pfSw1NTg2ODpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtnYzpmdW5jdGlvbigpe3JldHVybiBpfSx2azpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciBuPXIoODAwMjkpO2Z1bmN0aW9uIG8oZSx7ZGlyOnQsc2l6ZTpyPTMyfT17fSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2koZSx7ZGlyOnQsc2l6ZTpyfSk6YShlLHtkaXI6dCxzaXplOnJ9KX1mdW5jdGlvbiBpKGUse2Rpcjp0LHNpemU6cj0zMn09e30pe2lmKG51bGw9PT1yKXJldHVybiBlO2xldCBvPWUucmVwbGFjZSgiMHgiLCIiKTtpZihvLmxlbmd0aD4yKnIpdGhyb3cgbmV3IG4uJHMoe3NpemU6TWF0aC5jZWlsKG8ubGVuZ3RoLzIpLHRhcmdldFNpemU6cix0eXBlOiJoZXgifSk7cmV0dXJuYDB4JHtvWyJyaWdodCI9PT10PyJwYWRFbmQiOiJwYWRTdGFydCJdKDIqciwiMCIpfWB9ZnVuY3Rpb24gYShlLHtkaXI6dCxzaXplOnI9MzJ9PXt9KXtpZihudWxsPT09cilyZXR1cm4gZTtpZihlLmxlbmd0aD5yKXRocm93IG5ldyBuLiRzKHtzaXplOmUubGVuZ3RoLHRhcmdldFNpemU6cix0eXBlOiJieXRlcyJ9KTtsZXQgbz1uZXcgVWludDhBcnJheShyKTtmb3IobGV0IG49MDtuPHI7bisrKXtsZXQgaT0icmlnaHQiPT09dDtvW2k/bjpyLW4tMV09ZVtpP246ZS5sZW5ndGgtbi0xXX1yZXR1cm4gb319LDUxOTU5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse2Q6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgbj1yKDg3MzEzKTtmdW5jdGlvbiBvKGUpe3JldHVybigwLG4udikoZSx7c3RyaWN0OiExfSk/TWF0aC5jZWlsKChlLmxlbmd0aC0yKS8yKTplLmxlbmd0aH19LDI2MDEwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHtkaXI6dD0ibGVmdCJ9PXt9KXtsZXQgcj0ic3RyaW5nIj09dHlwZW9mIGU/ZS5yZXBsYWNlKCIweCIsIiIpOmUsbz0wO2ZvcihsZXQgZT0wO2U8ci5sZW5ndGgtMSYmIjAiPT09clsibGVmdCI9PT10P2U6ci5sZW5ndGgtZS0xXS50b1N0cmluZygpO2UrKylvKys7cmV0dXJuKHI9ImxlZnQiPT09dD9yLnNsaWNlKG8pOnIuc2xpY2UoMCxyLmxlbmd0aC1vKSwic3RyaW5nIj09dHlwZW9mIGUpPygxPT09ci5sZW5ndGgmJiJyaWdodCI9PT10JiYocj1gJHtyfTBgKSxgMHgke3IubGVuZ3RoJTI9PTE/YDAke3J9YDpyfWApOnJ9ci5kKHQse2Y6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KX0sMTA0NzA6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7SF86ZnVuY3Rpb24oKXtyZXR1cm4gbH0sWWY6ZnVuY3Rpb24oKXtyZXR1cm4gc30sbHk6ZnVuY3Rpb24oKXtyZXR1cm4gZH0seV86ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgbj1yKDc2MzQwKSxvPXIoNTE5NTkpLGk9cigyNjAxMCksYT1yKDIxNTc4KTtmdW5jdGlvbiBzKGUse3NpemU6dH0pe2lmKCgwLG8uZCkoZSk+dCl0aHJvdyBuZXcgbi5NNih7Z2l2ZW5TaXplOigwLG8uZCkoZSksbWF4U2l6ZTp0fSl9ZnVuY3Rpb24gbChlLHQpe2xldCByPSJzdHJpbmciPT10eXBlb2YgdD97dG86dH06dCxuPXIudG87cmV0dXJuIm51bWJlciI9PT1uP2QoZSxyKToiYmlnaW50Ij09PW4/YyhlLHIpOiJzdHJpbmciPT09bj9wKGUscik6ImJvb2xlYW4iPT09bj91KGUscik6KDAsYS5ucikoZSxyKX1mdW5jdGlvbiBjKGUsdD17fSl7bGV0e3NpZ25lZDpyfT10O3Quc2l6ZSYmcyhlLHtzaXplOnQuc2l6ZX0pO2xldCBuPUJpZ0ludChlKTtpZighcilyZXR1cm4gbjtsZXQgbz0oZS5sZW5ndGgtMikvMjtyZXR1cm4gbjw9KDFuPDw4bipCaWdJbnQobyktMW4pLTFuP246bi1CaWdJbnQoYDB4JHsiZiIucGFkU3RhcnQoMipvLCJmIil9YCktMW59ZnVuY3Rpb24gdShlLHQ9e30pe2xldCByPWU7aWYodC5zaXplJiYocyhyLHtzaXplOnQuc2l6ZX0pLHI9KDAsaS5mKShyKSksIjB4MDAiPT09KDAsaS5mKShyKSlyZXR1cm4hMTtpZigiMHgwMSI9PT0oMCxpLmYpKHIpKXJldHVybiEwO3Rocm93IG5ldyBuLkNkKHIpfWZ1bmN0aW9uIGQoZSx0PXt9KXtyZXR1cm4gTnVtYmVyKGMoZSx0KSl9ZnVuY3Rpb24gcChlLHQ9e30pe2xldCByPSgwLGEubnIpKGUpO3JldHVybiB0LnNpemUmJihzKHIse3NpemU6dC5zaXplfSkscj0oMCxpLmYpKHIse2RpcjoicmlnaHQifSkpLG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShyKX19LDIxNTc4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse08wOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LG5yOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHFYOmZ1bmN0aW9uKCl7cmV0dXJuIGh9fSk7dmFyIG49cig4MzA4MSksbz1yKDg3MzEzKSxpPXIoNTU4NjgpLGE9cigxMDQ3MCkscz1yKDg1OTg1KTtsZXQgbD1uZXcgVGV4dEVuY29kZXI7ZnVuY3Rpb24gYyhlLHQ9e30pe3JldHVybiJudW1iZXIiPT10eXBlb2YgZXx8ImJpZ2ludCI9PXR5cGVvZiBlP20oZSx0KToiYm9vbGVhbiI9PXR5cGVvZiBlP3UoZSx0KTooMCxvLnYpKGUpP2YoZSx0KTpoKGUsdCl9ZnVuY3Rpb24gdShlLHQ9e30pe2xldCByPW5ldyBVaW50OEFycmF5KDEpO3JldHVybihyWzBdPU51bWJlcihlKSwibnVtYmVyIj09dHlwZW9mIHQuc2l6ZSk/KCgwLGEuWWYpKHIse3NpemU6dC5zaXplfSksKDAsaS52aykocix7c2l6ZTp0LnNpemV9KSk6cn1sZXQgZD17emVybzo0OCxuaW5lOjU3LEE6NjUsRjo3MCxhOjk3LGY6MTAyfTtmdW5jdGlvbiBwKGUpe3JldHVybiBlPj1kLnplcm8mJmU8PWQubmluZT9lLWQuemVybzplPj1kLkEmJmU8PWQuRj9lLShkLkEtMTApOmU+PWQuYSYmZTw9ZC5mP2UtKGQuYS0xMCk6dm9pZCAwfWZ1bmN0aW9uIGYoZSx0PXt9KXtsZXQgcj1lO3Quc2l6ZSYmKCgwLGEuWWYpKHIse3NpemU6dC5zaXplfSkscj0oMCxpLnZrKShyLHtkaXI6InJpZ2h0IixzaXplOnQuc2l6ZX0pKTtsZXQgbz1yLnNsaWNlKDIpO28ubGVuZ3RoJTImJihvPWAwJHtvfWApO2xldCBzPW8ubGVuZ3RoLzIsbD1uZXcgVWludDhBcnJheShzKTtmb3IobGV0IGU9MCx0PTA7ZTxzO2UrKyl7bGV0IHI9cChvLmNoYXJDb2RlQXQodCsrKSksaT1wKG8uY2hhckNvZGVBdCh0KyspKTtpZih2b2lkIDA9PT1yfHx2b2lkIDA9PT1pKXRocm93IG5ldyBuLkcoYEludmFsaWQgYnl0ZSBzZXF1ZW5jZSAoIiR7b1t0LTJdfSR7b1t0LTFdfSIgaW4gIiR7b30iKS5gKTtsW2VdPTE2KnIraX1yZXR1cm4gbH1mdW5jdGlvbiBtKGUsdCl7cmV0dXJuIGYoKDAscy5lQykoZSx0KSl9ZnVuY3Rpb24gaChlLHQ9e30pe2xldCByPWwuZW5jb2RlKGUpO3JldHVybiJudW1iZXIiPT10eXBlb2YgdC5zaXplPygoMCxhLllmKShyLHtzaXplOnQuc2l6ZX0pLCgwLGkudmspKHIse2RpcjoicmlnaHQiLHNpemU6dC5zaXplfSkpOnJ9fSw4NTk4NTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHskRzpmdW5jdGlvbigpe3JldHVybiBwfSxDNDpmdW5jdGlvbigpe3JldHVybiBsfSxOQzpmdW5jdGlvbigpe3JldHVybiBzfSxjaTpmdW5jdGlvbigpe3JldHVybiBjfSxlQzpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciBuPXIoNzYzNDApLG89cig1NTg2OCksaT1yKDEwNDcwKTtsZXQgYT1BcnJheS5mcm9tKHtsZW5ndGg6MjU2fSwoZSx0KT0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKTtmdW5jdGlvbiBzKGUsdD17fSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfHwiYmlnaW50Ij09dHlwZW9mIGU/dShlLHQpOiJzdHJpbmciPT10eXBlb2YgZT9wKGUsdCk6ImJvb2xlYW4iPT10eXBlb2YgZT9sKGUsdCk6YyhlLHQpfWZ1bmN0aW9uIGwoZSx0PXt9KXtsZXQgcj1gMHgke051bWJlcihlKX1gO3JldHVybiJudW1iZXIiPT10eXBlb2YgdC5zaXplPygoMCxpLllmKShyLHtzaXplOnQuc2l6ZX0pLCgwLG8udmspKHIse3NpemU6dC5zaXplfSkpOnJ9ZnVuY3Rpb24gYyhlLHQ9e30pe2xldCByPSIiO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXIrPWFbZVt0XV07bGV0IG49YDB4JHtyfWA7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0LnNpemU/KCgwLGkuWWYpKG4se3NpemU6dC5zaXplfSksKDAsby52aykobix7ZGlyOiJyaWdodCIsc2l6ZTp0LnNpemV9KSk6bn1mdW5jdGlvbiB1KGUsdD17fSl7bGV0IHI7bGV0e3NpZ25lZDppLHNpemU6YX09dCxzPUJpZ0ludChlKTthP3I9aT8oMW48PDhuKkJpZ0ludChhKS0xbiktMW46Mm4qKig4bipCaWdJbnQoYSkpLTFuOiJudW1iZXIiPT10eXBlb2YgZSYmKHI9QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSk7bGV0IGw9ImJpZ2ludCI9PXR5cGVvZiByJiZpPy1yLTFuOjA7aWYociYmcz5yfHxzPGwpe2xldCB0PSJiaWdpbnQiPT10eXBlb2YgZT8ibiI6IiI7dGhyb3cgbmV3IG4uSjUoe21heDpyP2Ake3J9JHt0fWA6dm9pZCAwLG1pbjpgJHtsfSR7dH1gLHNpZ25lZDppLHNpemU6YSx2YWx1ZTpgJHtlfSR7dH1gfSl9bGV0IGM9YDB4JHsoaSYmczwwPygxbjw8QmlnSW50KDgqYSkpK0JpZ0ludChzKTpzKS50b1N0cmluZygxNil9YDtyZXR1cm4gYT8oMCxvLnZrKShjLHtzaXplOmF9KTpjfWxldCBkPW5ldyBUZXh0RW5jb2RlcjtmdW5jdGlvbiBwKGUsdD17fSl7cmV0dXJuIGMoZC5lbmNvZGUoZSksdCl9fSw5OTM1NTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtkOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIG49cigxOTM4Myksbz1yKDI1Mzk1KTtmdW5jdGlvbiBpKGUsdD0id2VpIil7cmV0dXJuKDAsby5iKShlLG4uZXpbdF0pfX0sMjUzOTU6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7bGV0IHI9ZS50b1N0cmluZygpLG49ci5zdGFydHNXaXRoKCItIik7biYmKHI9ci5zbGljZSgxKSk7bGV0W28saV09WyhyPXIucGFkU3RhcnQodCwiMCIpKS5zbGljZSgwLHIubGVuZ3RoLXQpLHIuc2xpY2Uoci5sZW5ndGgtdCldO3JldHVybiBpPWkucmVwbGFjZSgvKDArKSQvLCIiKSxgJHtuPyItIjoiIn0ke298fCIwIn0ke2k/YC4ke2l9YDoiIn1gfXIuZCh0LHtiOmZ1bmN0aW9uKCl7cmV0dXJuIG59fSl9LDc4MDg4OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJHYXNMaW1pdEV4Y2VlZGVkIjoiRXhjZWVkZWQgdGhlIG1heGltdW0gYW1vdW50IG9mIGdhcyBhbGxvd2VkIHRvIGJ1cm4gcGVyIGNvbnRyYWN0IiwiTWV0aG9kRW1wdHlOYW1lIjoiTWV0aG9kIG5hbWUgaXMgZW1wdHkiLCJXYXNtZXJDb21waWxlRXJyb3IiOiJXYXNtZXIgY29tcGlsYXRpb24gZXJyb3I6IHt7bXNnfX0iLCJHdWVzdFBhbmljIjoiU21hcnQgY29udHJhY3QgcGFuaWNrZWQ6IHt7cGFuaWNfbXNnfX0iLCJNZW1vcnkiOiJFcnJvciBjcmVhdGluZyBXYXNtIG1lbW9yeSIsIkdhc0V4Y2VlZGVkIjoiRXhjZWVkZWQgdGhlIHByZXBhaWQgZ2FzIiwiTWV0aG9kVVRGOEVycm9yIjoiTWV0aG9kIG5hbWUgaXMgbm90IHZhbGlkIFVURjggc3RyaW5nIiwiQmFkVVRGMTYiOiJTdHJpbmcgZW5jb2RpbmcgaXMgYmFkIFVURi0xNiBzZXF1ZW5jZSIsIldhc21UcmFwIjoiV2ViQXNzZW1ibHkgdHJhcDoge3ttc2d9fSIsIkdhc0luc3RydW1lbnRhdGlvbiI6IkdhcyBpbnN0cnVtZW50YXRpb24gZmFpbGVkIG9yIGNvbnRyYWN0IGhhcyBkZW5pZWQgaW5zdHJ1Y3Rpb25zLiIsIkludmFsaWRQcm9taXNlSW5kZXgiOiJ7e3Byb21pc2VfaWR4fX0gZG9lcyBub3QgY29ycmVzcG9uZCB0byBleGlzdGluZyBwcm9taXNlcyIsIkludmFsaWRQcm9taXNlUmVzdWx0SW5kZXgiOiJBY2Nlc3NlZCBpbnZhbGlkIHByb21pc2UgcmVzdWx0IGluZGV4OiB7e3Jlc3VsdF9pZHh9fSIsIkRlc2VyaWFsaXphdGlvbiI6IkVycm9yIGhhcHBlbmVkIHdoaWxlIGRlc2VyaWFsaXppbmcgdGhlIG1vZHVsZSIsIk1ldGhvZE5vdEZvdW5kIjoiQ29udHJhY3QgbWV0aG9kIGlzIG5vdCBmb3VuZCIsIkludmFsaWRSZWdpc3RlcklkIjoiQWNjZXNzZWQgaW52YWxpZCByZWdpc3RlciBpZDoge3tyZWdpc3Rlcl9pZH19IiwiSW52YWxpZFJlY2VpcHRJbmRleCI6IlZNIExvZ2ljIHJldHVybmVkIGFuIGludmFsaWQgcmVjZWlwdCBpbmRleDoge3tyZWNlaXB0X2luZGV4fX0iLCJFbXB0eU1ldGhvZE5hbWUiOiJNZXRob2QgbmFtZSBpcyBlbXB0eSBpbiBjb250cmFjdCBjYWxsIiwiQ2Fubm90UmV0dXJuSm9pbnRQcm9taXNlIjoiUmV0dXJuaW5nIGpvaW50IHByb21pc2UgaXMgY3VycmVudGx5IHByb2hpYml0ZWQiLCJTdGFja0hlaWdodEluc3RydW1lbnRhdGlvbiI6IlN0YWNrIGluc3RydW1lbnRhdGlvbiBmYWlsZWQiLCJDb2RlRG9lc05vdEV4aXN0IjoiQ2Fubm90IGZpbmQgY29udHJhY3QgY29kZSBmb3IgYWNjb3VudCB7e2FjY291bnRfaWR9fSIsIk1ldGhvZEludmFsaWRTaWduYXR1cmUiOiJJbnZhbGlkIG1ldGhvZCBzaWduYXR1cmUiLCJJbnRlZ2VyT3ZlcmZsb3ciOiJJbnRlZ2VyIG92ZXJmbG93IGhhcHBlbmVkIGR1cmluZyBjb250cmFjdCBleGVjdXRpb24iLCJNZW1vcnlBY2Nlc3NWaW9sYXRpb24iOiJNZW1vcnlBY2Nlc3NWaW9sYXRpb24iLCJJbnZhbGlkSXRlcmF0b3JJbmRleCI6Ikl0ZXJhdG9yIGluZGV4IHt7aXRlcmF0b3JfaW5kZXh9fSBkb2VzIG5vdCBleGlzdCIsIkl0ZXJhdG9yV2FzSW52YWxpZGF0ZWQiOiJJdGVyYXRvciB7e2l0ZXJhdG9yX2luZGV4fX0gd2FzIGludmFsaWRhdGVkIGFmdGVyIGl0cyBjcmVhdGlvbiBieSBwZXJmb3JtaW5nIGEgbXV0YWJsZSBvcGVyYXRpb24gb24gdHJpZSIsIkludmFsaWRBY2NvdW50SWQiOiJWTSBMb2dpYyByZXR1cm5lZCBhbiBpbnZhbGlkIGFjY291bnQgaWQiLCJTZXJpYWxpemF0aW9uIjoiRXJyb3IgaGFwcGVuZWQgd2hpbGUgc2VyaWFsaXppbmcgdGhlIG1vZHVsZSIsIkNhbm5vdEFwcGVuZEFjdGlvblRvSm9pbnRQcm9taXNlIjoiQWN0aW9ucyBjYW4gb25seSBiZSBhcHBlbmRlZCB0byBub24tam9pbnQgcHJvbWlzZS4iLCJJbnRlcm5hbE1lbW9yeURlY2xhcmVkIjoiSW50ZXJuYWwgbWVtb3J5IGRlY2xhcmF0aW9uIGhhcyBiZWVuIGZvdW5kIGluIHRoZSBtb2R1bGUiLCJJbnN0YW50aWF0ZSI6IkVycm9yIGhhcHBlbmVkIGR1cmluZyBpbnN0YW50aWF0aW9uIiwiUHJvaGliaXRlZEluVmlldyI6Int7bWV0aG9kX25hbWV9fSBpcyBub3QgYWxsb3dlZCBpbiB2aWV3IGNhbGxzIiwiSW52YWxpZE1ldGhvZE5hbWUiOiJWTSBMb2dpYyByZXR1cm5lZCBhbiBpbnZhbGlkIG1ldGhvZCBuYW1lIiwiQmFkVVRGOCI6IlN0cmluZyBlbmNvZGluZyBpcyBiYWQgVVRGLTggc2VxdWVuY2UiLCJCYWxhbmNlRXhjZWVkZWQiOiJFeGNlZWRlZCB0aGUgYWNjb3VudCBiYWxhbmNlIiwiTGlua0Vycm9yIjoiV2FzbSBjb250cmFjdCBsaW5rIGVycm9yOiB7e21zZ319IiwiSW52YWxpZFB1YmxpY0tleSI6IlZNIExvZ2ljIHByb3ZpZGVkIGFuIGludmFsaWQgcHVibGljIGtleSIsIkFjdG9yTm9QZXJtaXNzaW9uIjoiQWN0b3Ige3thY3Rvcl9pZH19IGRvZXNuXCd0IGhhdmUgcGVybWlzc2lvbiB0byBhY2NvdW50IHt7YWNjb3VudF9pZH19IHRvIGNvbXBsZXRlIHRoZSBhY3Rpb24iLCJMYWNrQmFsYW5jZUZvclN0YXRlIjoiVGhlIGFjY291bnQge3thY2NvdW50X2lkfX0gd291bGRuXCd0IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gY292ZXIgc3RvcmFnZSwgcmVxdWlyZWQgdG8gaGF2ZSB7e2Ftb3VudH19IHlvY3RvTkVBUiBtb3JlIiwiUmVjZWl2ZXJNaXNtYXRjaCI6Ildyb25nIEFjY2Vzc0tleSB1c2VkIGZvciB0cmFuc2FjdGlvbjogdHJhbnNhY3Rpb24gaXMgc2VudCB0byByZWNlaXZlcl9pZD17e3R4X3JlY2VpdmVyfX0sIGJ1dCBpcyBzaWduZWQgd2l0aCBmdW5jdGlvbiBjYWxsIGFjY2VzcyBrZXkgdGhhdCByZXN0cmljdGVkIHRvIG9ubHkgdXNlIHdpdGggcmVjZWl2ZXJfaWQ9e3tha19yZWNlaXZlcn19LiBFaXRoZXIgY2hhbmdlIHJlY2VpdmVyX2lkIGluIHlvdXIgdHJhbnNhY3Rpb24gb3Igc3dpdGNoIHRvIHVzZSBhIEZ1bGxBY2Nlc3NLZXkuIiwiQ29zdE92ZXJmbG93IjoiVHJhbnNhY3Rpb24gZ2FzIG9yIGJhbGFuY2UgY29zdCBpcyB0b28gaGlnaCIsIkludmFsaWRTaWduYXR1cmUiOiJUcmFuc2FjdGlvbiBpcyBub3Qgc2lnbmVkIHdpdGggdGhlIGdpdmVuIHB1YmxpYyBrZXkiLCJBY2Nlc3NLZXlOb3RGb3VuZCI6IlNpZ25lciBcXCJ7e2FjY291bnRfaWR9fVxcIiBkb2VzblwndCBoYXZlIGFjY2VzcyBrZXkgd2l0aCB0aGUgZ2l2ZW4gcHVibGljX2tleSB7e3B1YmxpY19rZXl9fSIsIk5vdEVub3VnaEJhbGFuY2UiOiJTZW5kZXIge3tzaWduZXJfaWR9fSBkb2VzIG5vdCBoYXZlIGVub3VnaCBiYWxhbmNlIHt7I2Zvcm1hdE5lYXJ9fXt7YmFsYW5jZX19e3svZm9ybWF0TmVhcn19IGZvciBvcGVyYXRpb24gY29zdGluZyB7eyNmb3JtYXROZWFyfX17e2Nvc3R9fXt7L2Zvcm1hdE5lYXJ9fSIsIk5vdEVub3VnaEFsbG93YW5jZSI6IkFjY2VzcyBLZXkge2FjY291bnRfaWR9OntwdWJsaWNfa2V5fSBkb2VzIG5vdCBoYXZlIGVub3VnaCBiYWxhbmNlIHt7I2Zvcm1hdE5lYXJ9fXt7YWxsb3dhbmNlfX17ey9mb3JtYXROZWFyfX0gZm9yIHRyYW5zYWN0aW9uIGNvc3Rpbmcge3sjZm9ybWF0TmVhcn19e3tjb3N0fX17ey9mb3JtYXROZWFyfX0iLCJFeHBpcmVkIjoiVHJhbnNhY3Rpb24gaGFzIGV4cGlyZWQiLCJEZWxldGVBY2NvdW50U3Rha2luZyI6IkFjY291bnQge3thY2NvdW50X2lkfX0gaXMgc3Rha2luZyBhbmQgY2FuIG5vdCBiZSBkZWxldGVkIiwiU2lnbmVyRG9lc05vdEV4aXN0IjoiU2lnbmVyIHt7c2lnbmVyX2lkfX0gZG9lcyBub3QgZXhpc3QiLCJUcmllc1RvU3Rha2UiOiJBY2NvdW50IHt7YWNjb3VudF9pZH19IHRyaWVkIHRvIHN0YWtlIHt7I2Zvcm1hdE5lYXJ9fXt7c3Rha2V9fXt7L2Zvcm1hdE5lYXJ9fSwgYnV0IGhhcyBzdGFrZWQge3sjZm9ybWF0TmVhcn19e3tsb2NrZWR9fXt7L2Zvcm1hdE5lYXJ9fSBhbmQgb25seSBoYXMge3sjZm9ybWF0TmVhcn19e3tiYWxhbmNlfX17ey9mb3JtYXROZWFyfX0iLCJBZGRLZXlBbHJlYWR5RXhpc3RzIjoiVGhlIHB1YmxpYyBrZXkge3twdWJsaWNfa2V5fX0gaXMgYWxyZWFkeSB1c2VkIGZvciBhbiBleGlzdGluZyBhY2Nlc3Mga2V5IiwiSW52YWxpZFNpZ25lciI6IkludmFsaWQgc2lnbmVyIGFjY291bnQgSUQge3tzaWduZXJfaWR9fSBhY2NvcmRpbmcgdG8gcmVxdWlyZW1lbnRzIiwiQ3JlYXRlQWNjb3VudE5vdEFsbG93ZWQiOiJUaGUgbmV3IGFjY291bnRfaWQge3thY2NvdW50X2lkfX0gY2FuXCd0IGJlIGNyZWF0ZWQgYnkge3twcmVkZWNlc3Nvcl9pZH19IiwiUmVxdWlyZXNGdWxsQWNjZXNzIjoiVGhlIHRyYW5zYWN0aW9uIGNvbnRhaW5zIG1vcmUgdGhlbiBvbmUgYWN0aW9uLCBidXQgaXQgd2FzIHNpZ25lZCB3aXRoIGFuIGFjY2VzcyBrZXkgd2hpY2ggYWxsb3dzIHRyYW5zYWN0aW9uIHRvIGFwcGx5IG9ubHkgb25lIHNwZWNpZmljIGFjdGlvbi4gVG8gYXBwbHkgbW9yZSB0aGVuIG9uZSBhY3Rpb25zIFRYIG11c3QgYmUgc2lnbmVkIHdpdGggYSBmdWxsIGFjY2VzcyBrZXkiLCJUcmllc1RvVW5zdGFrZSI6IkFjY291bnQge3thY2NvdW50X2lkfX0gaXMgbm90IHlldCBzdGFrZWQsIGJ1dCB0cmllZCB0byB1bnN0YWtlIiwiSW52YWxpZE5vbmNlIjoiVHJhbnNhY3Rpb24gbm9uY2Uge3t0eF9ub25jZX19IG11c3QgYmUgbGFyZ2VyIHRoYW4gbm9uY2Ugb2YgdGhlIHVzZWQgYWNjZXNzIGtleSB7e2FrX25vbmNlfX0iLCJBY2NvdW50QWxyZWFkeUV4aXN0cyI6IkNhblwndCBjcmVhdGUgYSBuZXcgYWNjb3VudCB7e2FjY291bnRfaWR9fSwgYmVjYXVzZSBpdCBhbHJlYWR5IGV4aXN0cyIsIkludmFsaWRDaGFpbiI6IlRyYW5zYWN0aW9uIHBhcmVudCBibG9jayBoYXNoIGRvZXNuXCd0IGJlbG9uZyB0byB0aGUgY3VycmVudCBjaGFpbiIsIkFjY291bnREb2VzTm90RXhpc3QiOiJDYW5cJ3QgY29tcGxldGUgdGhlIGFjdGlvbiBiZWNhdXNlIGFjY291bnQge3thY2NvdW50X2lkfX0gZG9lc25cJ3QgZXhpc3QiLCJNZXRob2ROYW1lTWlzbWF0Y2giOiJUcmFuc2FjdGlvbiBtZXRob2QgbmFtZSB7e21ldGhvZF9uYW1lfX0gaXNuXCd0IGFsbG93ZWQgYnkgdGhlIGFjY2VzcyBrZXkiLCJEZWxldGVBY2NvdW50SGFzUmVudCI6IkFjY291bnQge3thY2NvdW50X2lkfX0gY2FuXCd0IGJlIGRlbGV0ZWQuIEl0IGhhcyB7eyNmb3JtYXROZWFyfX17e2JhbGFuY2V9fXt7L2Zvcm1hdE5lYXJ9fSwgd2hpY2ggaXMgZW5vdWdoIHRvIGNvdmVyIHRoZSByZW50IiwiRGVsZXRlQWNjb3VudEhhc0Vub3VnaEJhbGFuY2UiOiJBY2NvdW50IHt7YWNjb3VudF9pZH19IGNhblwndCBiZSBkZWxldGVkLiBJdCBoYXMge3sjZm9ybWF0TmVhcn19e3tiYWxhbmNlfX17ey9mb3JtYXROZWFyfX0sIHdoaWNoIGlzIGVub3VnaCB0byBjb3ZlciBpdFwncyBzdG9yYWdlIiwiSW52YWxpZFJlY2VpdmVyIjoiSW52YWxpZCByZWNlaXZlciBhY2NvdW50IElEIHt7cmVjZWl2ZXJfaWR9fSBhY2NvcmRpbmcgdG8gcmVxdWlyZW1lbnRzIiwiRGVsZXRlS2V5RG9lc05vdEV4aXN0IjoiQWNjb3VudCB7e2FjY291bnRfaWR9fSB0cmllcyB0byByZW1vdmUgYW4gYWNjZXNzIGtleSB0aGF0IGRvZXNuXCd0IGV4aXN0IiwiVGltZW91dCI6IlRpbWVvdXQgZXhjZWVkZWQiLCJDbG9zZWQiOiJDb25uZWN0aW9uIGNsb3NlZCJ9Jyl9LDU3NjY0OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJzY2hlbWEiOnsiQmFkVVRGMTYiOnsibmFtZSI6IkJhZFVURjE2Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJCYWRVVEY4Ijp7Im5hbWUiOiJCYWRVVEY4Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJCYWxhbmNlRXhjZWVkZWQiOnsibmFtZSI6IkJhbGFuY2VFeGNlZWRlZCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnt9fSwiQnJlYWtwb2ludFRyYXAiOnsibmFtZSI6IkJyZWFrcG9pbnRUcmFwIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJDYWNoZUVycm9yIjp7Im5hbWUiOiJDYWNoZUVycm9yIiwic3VidHlwZXMiOlsiUmVhZEVycm9yIiwiV3JpdGVFcnJvciIsIkRlc2VyaWFsaXphdGlvbkVycm9yIiwiU2VyaWFsaXphdGlvbkVycm9yIl0sInByb3BzIjp7fX0sIkNhbGxJbmRpcmVjdE9PQiI6eyJuYW1lIjoiQ2FsbEluZGlyZWN0T09CIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJDYW5ub3RBcHBlbmRBY3Rpb25Ub0pvaW50UHJvbWlzZSI6eyJuYW1lIjoiQ2Fubm90QXBwZW5kQWN0aW9uVG9Kb2ludFByb21pc2UiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIkNhbm5vdFJldHVybkpvaW50UHJvbWlzZSI6eyJuYW1lIjoiQ2Fubm90UmV0dXJuSm9pbnRQcm9taXNlIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJDb2RlRG9lc05vdEV4aXN0Ijp7Im5hbWUiOiJDb2RlRG9lc05vdEV4aXN0Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIn19LCJDb21waWxhdGlvbkVycm9yIjp7Im5hbWUiOiJDb21waWxhdGlvbkVycm9yIiwic3VidHlwZXMiOlsiQ29kZURvZXNOb3RFeGlzdCIsIlByZXBhcmVFcnJvciIsIldhc21lckNvbXBpbGVFcnJvciJdLCJwcm9wcyI6e319LCJDb250cmFjdFNpemVFeGNlZWRlZCI6eyJuYW1lIjoiQ29udHJhY3RTaXplRXhjZWVkZWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImxpbWl0IjoiIiwic2l6ZSI6IiJ9fSwiRGVwcmVjYXRlZCI6eyJuYW1lIjoiRGVwcmVjYXRlZCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsibWV0aG9kX25hbWUiOiIifX0sIkRlc2VyaWFsaXphdGlvbiI6eyJuYW1lIjoiRGVzZXJpYWxpemF0aW9uIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJEZXNlcmlhbGl6YXRpb25FcnJvciI6eyJuYW1lIjoiRGVzZXJpYWxpemF0aW9uRXJyb3IiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIkVtcHR5TWV0aG9kTmFtZSI6eyJuYW1lIjoiRW1wdHlNZXRob2ROYW1lIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJGdW5jdGlvbkNhbGxFcnJvciI6eyJuYW1lIjoiRnVuY3Rpb25DYWxsRXJyb3IiLCJzdWJ0eXBlcyI6WyJDb21waWxhdGlvbkVycm9yIiwiTGlua0Vycm9yIiwiTWV0aG9kUmVzb2x2ZUVycm9yIiwiV2FzbVRyYXAiLCJXYXNtVW5rbm93bkVycm9yIiwiSG9zdEVycm9yIiwiRXZtRXJyb3IiXSwicHJvcHMiOnt9fSwiR2FzRXhjZWVkZWQiOnsibmFtZSI6Ikdhc0V4Y2VlZGVkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJHYXNJbnN0cnVtZW50YXRpb24iOnsibmFtZSI6Ikdhc0luc3RydW1lbnRhdGlvbiIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnt9fSwiR2FzTGltaXRFeGNlZWRlZCI6eyJuYW1lIjoiR2FzTGltaXRFeGNlZWRlZCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnt9fSwiR2VuZXJpY1RyYXAiOnsibmFtZSI6IkdlbmVyaWNUcmFwIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJHdWVzdFBhbmljIjp7Im5hbWUiOiJHdWVzdFBhbmljIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJwYW5pY19tc2ciOiIifX0sIkhvc3RFcnJvciI6eyJuYW1lIjoiSG9zdEVycm9yIiwic3VidHlwZXMiOlsiQmFkVVRGMTYiLCJCYWRVVEY4IiwiR2FzRXhjZWVkZWQiLCJHYXNMaW1pdEV4Y2VlZGVkIiwiQmFsYW5jZUV4Y2VlZGVkIiwiRW1wdHlNZXRob2ROYW1lIiwiR3Vlc3RQYW5pYyIsIkludGVnZXJPdmVyZmxvdyIsIkludmFsaWRQcm9taXNlSW5kZXgiLCJDYW5ub3RBcHBlbmRBY3Rpb25Ub0pvaW50UHJvbWlzZSIsIkNhbm5vdFJldHVybkpvaW50UHJvbWlzZSIsIkludmFsaWRQcm9taXNlUmVzdWx0SW5kZXgiLCJJbnZhbGlkUmVnaXN0ZXJJZCIsIkl0ZXJhdG9yV2FzSW52YWxpZGF0ZWQiLCJNZW1vcnlBY2Nlc3NWaW9sYXRpb24iLCJJbnZhbGlkUmVjZWlwdEluZGV4IiwiSW52YWxpZEl0ZXJhdG9ySW5kZXgiLCJJbnZhbGlkQWNjb3VudElkIiwiSW52YWxpZE1ldGhvZE5hbWUiLCJJbnZhbGlkUHVibGljS2V5IiwiUHJvaGliaXRlZEluVmlldyIsIk51bWJlck9mTG9nc0V4Y2VlZGVkIiwiS2V5TGVuZ3RoRXhjZWVkZWQiLCJWYWx1ZUxlbmd0aEV4Y2VlZGVkIiwiVG90YWxMb2dMZW5ndGhFeGNlZWRlZCIsIk51bWJlclByb21pc2VzRXhjZWVkZWQiLCJOdW1iZXJJbnB1dERhdGFEZXBlbmRlbmNpZXNFeGNlZWRlZCIsIlJldHVybmVkVmFsdWVMZW5ndGhFeGNlZWRlZCIsIkNvbnRyYWN0U2l6ZUV4Y2VlZGVkIiwiRGVwcmVjYXRlZCJdLCJwcm9wcyI6e319LCJJbGxlZ2FsQXJpdGhtZXRpYyI6eyJuYW1lIjoiSWxsZWdhbEFyaXRobWV0aWMiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIkluY29ycmVjdENhbGxJbmRpcmVjdFNpZ25hdHVyZSI6eyJuYW1lIjoiSW5jb3JyZWN0Q2FsbEluZGlyZWN0U2lnbmF0dXJlIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJJbnN0YW50aWF0ZSI6eyJuYW1lIjoiSW5zdGFudGlhdGUiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIkludGVnZXJPdmVyZmxvdyI6eyJuYW1lIjoiSW50ZWdlck92ZXJmbG93Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJJbnRlcm5hbE1lbW9yeURlY2xhcmVkIjp7Im5hbWUiOiJJbnRlcm5hbE1lbW9yeURlY2xhcmVkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJJbnZhbGlkQWNjb3VudElkIjp7Im5hbWUiOiJJbnZhbGlkQWNjb3VudElkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIn19LCJJbnZhbGlkSXRlcmF0b3JJbmRleCI6eyJuYW1lIjoiSW52YWxpZEl0ZXJhdG9ySW5kZXgiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7Iml0ZXJhdG9yX2luZGV4IjoiIn19LCJJbnZhbGlkTWV0aG9kTmFtZSI6eyJuYW1lIjoiSW52YWxpZE1ldGhvZE5hbWUiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIkludmFsaWRQcm9taXNlSW5kZXgiOnsibmFtZSI6IkludmFsaWRQcm9taXNlSW5kZXgiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7InByb21pc2VfaWR4IjoiIn19LCJJbnZhbGlkUHJvbWlzZVJlc3VsdEluZGV4Ijp7Im5hbWUiOiJJbnZhbGlkUHJvbWlzZVJlc3VsdEluZGV4Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJyZXN1bHRfaWR4IjoiIn19LCJJbnZhbGlkUHVibGljS2V5Ijp7Im5hbWUiOiJJbnZhbGlkUHVibGljS2V5Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJJbnZhbGlkUmVjZWlwdEluZGV4Ijp7Im5hbWUiOiJJbnZhbGlkUmVjZWlwdEluZGV4Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJyZWNlaXB0X2luZGV4IjoiIn19LCJJbnZhbGlkUmVnaXN0ZXJJZCI6eyJuYW1lIjoiSW52YWxpZFJlZ2lzdGVySWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7InJlZ2lzdGVyX2lkIjoiIn19LCJJdGVyYXRvcldhc0ludmFsaWRhdGVkIjp7Im5hbWUiOiJJdGVyYXRvcldhc0ludmFsaWRhdGVkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJpdGVyYXRvcl9pbmRleCI6IiJ9fSwiS2V5TGVuZ3RoRXhjZWVkZWQiOnsibmFtZSI6IktleUxlbmd0aEV4Y2VlZGVkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJsZW5ndGgiOiIiLCJsaW1pdCI6IiJ9fSwiTGlua0Vycm9yIjp7Im5hbWUiOiJMaW5rRXJyb3IiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7Im1zZyI6IiJ9fSwiTWVtb3J5Ijp7Im5hbWUiOiJNZW1vcnkiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIk1lbW9yeUFjY2Vzc1Zpb2xhdGlvbiI6eyJuYW1lIjoiTWVtb3J5QWNjZXNzVmlvbGF0aW9uIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJNZW1vcnlPdXRPZkJvdW5kcyI6eyJuYW1lIjoiTWVtb3J5T3V0T2ZCb3VuZHMiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIk1ldGhvZEVtcHR5TmFtZSI6eyJuYW1lIjoiTWV0aG9kRW1wdHlOYW1lIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJNZXRob2RJbnZhbGlkU2lnbmF0dXJlIjp7Im5hbWUiOiJNZXRob2RJbnZhbGlkU2lnbmF0dXJlIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJNZXRob2ROb3RGb3VuZCI6eyJuYW1lIjoiTWV0aG9kTm90Rm91bmQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIk1ldGhvZFJlc29sdmVFcnJvciI6eyJuYW1lIjoiTWV0aG9kUmVzb2x2ZUVycm9yIiwic3VidHlwZXMiOlsiTWV0aG9kRW1wdHlOYW1lIiwiTWV0aG9kVVRGOEVycm9yIiwiTWV0aG9kTm90Rm91bmQiLCJNZXRob2RJbnZhbGlkU2lnbmF0dXJlIl0sInByb3BzIjp7fX0sIk1ldGhvZFVURjhFcnJvciI6eyJuYW1lIjoiTWV0aG9kVVRGOEVycm9yIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJNaXNhbGlnbmVkQXRvbWljQWNjZXNzIjp7Im5hbWUiOiJNaXNhbGlnbmVkQXRvbWljQWNjZXNzIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJOdW1iZXJJbnB1dERhdGFEZXBlbmRlbmNpZXNFeGNlZWRlZCI6eyJuYW1lIjoiTnVtYmVySW5wdXREYXRhRGVwZW5kZW5jaWVzRXhjZWVkZWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImxpbWl0IjoiIiwibnVtYmVyX29mX2lucHV0X2RhdGFfZGVwZW5kZW5jaWVzIjoiIn19LCJOdW1iZXJPZkxvZ3NFeGNlZWRlZCI6eyJuYW1lIjoiTnVtYmVyT2ZMb2dzRXhjZWVkZWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImxpbWl0IjoiIn19LCJOdW1iZXJQcm9taXNlc0V4Y2VlZGVkIjp7Im5hbWUiOiJOdW1iZXJQcm9taXNlc0V4Y2VlZGVkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJsaW1pdCI6IiIsIm51bWJlcl9vZl9wcm9taXNlcyI6IiJ9fSwiUHJlcGFyZUVycm9yIjp7Im5hbWUiOiJQcmVwYXJlRXJyb3IiLCJzdWJ0eXBlcyI6WyJTZXJpYWxpemF0aW9uIiwiRGVzZXJpYWxpemF0aW9uIiwiSW50ZXJuYWxNZW1vcnlEZWNsYXJlZCIsIkdhc0luc3RydW1lbnRhdGlvbiIsIlN0YWNrSGVpZ2h0SW5zdHJ1bWVudGF0aW9uIiwiSW5zdGFudGlhdGUiLCJNZW1vcnkiXSwicHJvcHMiOnt9fSwiUHJvaGliaXRlZEluVmlldyI6eyJuYW1lIjoiUHJvaGliaXRlZEluVmlldyIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsibWV0aG9kX25hbWUiOiIifX0sIlJlYWRFcnJvciI6eyJuYW1lIjoiUmVhZEVycm9yIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJSZXR1cm5lZFZhbHVlTGVuZ3RoRXhjZWVkZWQiOnsibmFtZSI6IlJldHVybmVkVmFsdWVMZW5ndGhFeGNlZWRlZCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsibGVuZ3RoIjoiIiwibGltaXQiOiIifX0sIlNlcmlhbGl6YXRpb24iOnsibmFtZSI6IlNlcmlhbGl6YXRpb24iLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIlNlcmlhbGl6YXRpb25FcnJvciI6eyJuYW1lIjoiU2VyaWFsaXphdGlvbkVycm9yIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJoYXNoIjoiIn19LCJTdGFja0hlaWdodEluc3RydW1lbnRhdGlvbiI6eyJuYW1lIjoiU3RhY2tIZWlnaHRJbnN0cnVtZW50YXRpb24iLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIlN0YWNrT3ZlcmZsb3ciOnsibmFtZSI6IlN0YWNrT3ZlcmZsb3ciLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIlRvdGFsTG9nTGVuZ3RoRXhjZWVkZWQiOnsibmFtZSI6IlRvdGFsTG9nTGVuZ3RoRXhjZWVkZWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7Imxlbmd0aCI6IiIsImxpbWl0IjoiIn19LCJVbnJlYWNoYWJsZSI6eyJuYW1lIjoiVW5yZWFjaGFibGUiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIlZhbHVlTGVuZ3RoRXhjZWVkZWQiOnsibmFtZSI6IlZhbHVlTGVuZ3RoRXhjZWVkZWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7Imxlbmd0aCI6IiIsImxpbWl0IjoiIn19LCJXYXNtVHJhcCI6eyJuYW1lIjoiV2FzbVRyYXAiLCJzdWJ0eXBlcyI6WyJVbnJlYWNoYWJsZSIsIkluY29ycmVjdENhbGxJbmRpcmVjdFNpZ25hdHVyZSIsIk1lbW9yeU91dE9mQm91bmRzIiwiQ2FsbEluZGlyZWN0T09CIiwiSWxsZWdhbEFyaXRobWV0aWMiLCJNaXNhbGlnbmVkQXRvbWljQWNjZXNzIiwiQnJlYWtwb2ludFRyYXAiLCJTdGFja092ZXJmbG93IiwiR2VuZXJpY1RyYXAiXSwicHJvcHMiOnt9fSwiV2FzbVVua25vd25FcnJvciI6eyJuYW1lIjoiV2FzbVVua25vd25FcnJvciIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnt9fSwiV2FzbWVyQ29tcGlsZUVycm9yIjp7Im5hbWUiOiJXYXNtZXJDb21waWxlRXJyb3IiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7Im1zZyI6IiJ9fSwiV3JpdGVFcnJvciI6eyJuYW1lIjoiV3JpdGVFcnJvciIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnt9fSwiQWNjZXNzS2V5Tm90Rm91bmQiOnsibmFtZSI6IkFjY2Vzc0tleU5vdEZvdW5kIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIiwicHVibGljX2tleSI6IiJ9fSwiQWNjb3VudEFscmVhZHlFeGlzdHMiOnsibmFtZSI6IkFjY291bnRBbHJlYWR5RXhpc3RzIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIn19LCJBY2NvdW50RG9lc05vdEV4aXN0Ijp7Im5hbWUiOiJBY2NvdW50RG9lc05vdEV4aXN0Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIn19LCJBY3Rpb25FcnJvciI6eyJuYW1lIjoiQWN0aW9uRXJyb3IiLCJzdWJ0eXBlcyI6WyJBY2NvdW50QWxyZWFkeUV4aXN0cyIsIkFjY291bnREb2VzTm90RXhpc3QiLCJDcmVhdGVBY2NvdW50T25seUJ5UmVnaXN0cmFyIiwiQ3JlYXRlQWNjb3VudE5vdEFsbG93ZWQiLCJBY3Rvck5vUGVybWlzc2lvbiIsIkRlbGV0ZUtleURvZXNOb3RFeGlzdCIsIkFkZEtleUFscmVhZHlFeGlzdHMiLCJEZWxldGVBY2NvdW50U3Rha2luZyIsIkxhY2tCYWxhbmNlRm9yU3RhdGUiLCJUcmllc1RvVW5zdGFrZSIsIlRyaWVzVG9TdGFrZSIsIkluc3VmZmljaWVudFN0YWtlIiwiRnVuY3Rpb25DYWxsRXJyb3IiLCJOZXdSZWNlaXB0VmFsaWRhdGlvbkVycm9yIiwiT25seUltcGxpY2l0QWNjb3VudENyZWF0aW9uQWxsb3dlZCJdLCJwcm9wcyI6eyJpbmRleCI6IiJ9fSwiQWN0aW9uc1ZhbGlkYXRpb25FcnJvciI6eyJuYW1lIjoiQWN0aW9uc1ZhbGlkYXRpb25FcnJvciIsInN1YnR5cGVzIjpbIkRlbGV0ZUFjdGlvbk11c3RCZUZpbmFsIiwiVG90YWxQcmVwYWlkR2FzRXhjZWVkZWQiLCJUb3RhbE51bWJlck9mQWN0aW9uc0V4Y2VlZGVkIiwiQWRkS2V5TWV0aG9kTmFtZXNOdW1iZXJPZkJ5dGVzRXhjZWVkZWQiLCJBZGRLZXlNZXRob2ROYW1lTGVuZ3RoRXhjZWVkZWQiLCJJbnRlZ2VyT3ZlcmZsb3ciLCJJbnZhbGlkQWNjb3VudElkIiwiQ29udHJhY3RTaXplRXhjZWVkZWQiLCJGdW5jdGlvbkNhbGxNZXRob2ROYW1lTGVuZ3RoRXhjZWVkZWQiLCJGdW5jdGlvbkNhbGxBcmd1bWVudHNMZW5ndGhFeGNlZWRlZCIsIlVuc3VpdGFibGVTdGFraW5nS2V5IiwiRnVuY3Rpb25DYWxsWmVyb0F0dGFjaGVkR2FzIl0sInByb3BzIjp7fX0sIkFjdG9yTm9QZXJtaXNzaW9uIjp7Im5hbWUiOiJBY3Rvck5vUGVybWlzc2lvbiIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsiYWNjb3VudF9pZCI6IiIsImFjdG9yX2lkIjoiIn19LCJBZGRLZXlBbHJlYWR5RXhpc3RzIjp7Im5hbWUiOiJBZGRLZXlBbHJlYWR5RXhpc3RzIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIiwicHVibGljX2tleSI6IiJ9fSwiQWRkS2V5TWV0aG9kTmFtZUxlbmd0aEV4Y2VlZGVkIjp7Im5hbWUiOiJBZGRLZXlNZXRob2ROYW1lTGVuZ3RoRXhjZWVkZWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7Imxlbmd0aCI6IiIsImxpbWl0IjoiIn19LCJBZGRLZXlNZXRob2ROYW1lc051bWJlck9mQnl0ZXNFeGNlZWRlZCI6eyJuYW1lIjoiQWRkS2V5TWV0aG9kTmFtZXNOdW1iZXJPZkJ5dGVzRXhjZWVkZWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImxpbWl0IjoiIiwidG90YWxfbnVtYmVyX29mX2J5dGVzIjoiIn19LCJCYWxhbmNlTWlzbWF0Y2hFcnJvciI6eyJuYW1lIjoiQmFsYW5jZU1pc21hdGNoRXJyb3IiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImZpbmFsX2FjY291bnRzX2JhbGFuY2UiOiIiLCJmaW5hbF9wb3N0cG9uZWRfcmVjZWlwdHNfYmFsYW5jZSI6IiIsImluY29taW5nX3JlY2VpcHRzX2JhbGFuY2UiOiIiLCJpbmNvbWluZ192YWxpZGF0b3JfcmV3YXJkcyI6IiIsImluaXRpYWxfYWNjb3VudHNfYmFsYW5jZSI6IiIsImluaXRpYWxfcG9zdHBvbmVkX3JlY2VpcHRzX2JhbGFuY2UiOiIiLCJuZXdfZGVsYXllZF9yZWNlaXB0c19iYWxhbmNlIjoiIiwib3RoZXJfYnVybnRfYW1vdW50IjoiIiwib3V0Z29pbmdfcmVjZWlwdHNfYmFsYW5jZSI6IiIsInByb2Nlc3NlZF9kZWxheWVkX3JlY2VpcHRzX2JhbGFuY2UiOiIiLCJzbGFzaGVkX2J1cm50X2Ftb3VudCI6IiIsInR4X2J1cm50X2Ftb3VudCI6IiJ9fSwiQ29zdE92ZXJmbG93Ijp7Im5hbWUiOiJDb3N0T3ZlcmZsb3ciLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIkNyZWF0ZUFjY291bnROb3RBbGxvd2VkIjp7Im5hbWUiOiJDcmVhdGVBY2NvdW50Tm90QWxsb3dlZCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsiYWNjb3VudF9pZCI6IiIsInByZWRlY2Vzc29yX2lkIjoiIn19LCJDcmVhdGVBY2NvdW50T25seUJ5UmVnaXN0cmFyIjp7Im5hbWUiOiJDcmVhdGVBY2NvdW50T25seUJ5UmVnaXN0cmFyIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIiwicHJlZGVjZXNzb3JfaWQiOiIiLCJyZWdpc3RyYXJfYWNjb3VudF9pZCI6IiJ9fSwiRGVsZXRlQWNjb3VudFN0YWtpbmciOnsibmFtZSI6IkRlbGV0ZUFjY291bnRTdGFraW5nIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIn19LCJEZWxldGVBY3Rpb25NdXN0QmVGaW5hbCI6eyJuYW1lIjoiRGVsZXRlQWN0aW9uTXVzdEJlRmluYWwiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIkRlbGV0ZUtleURvZXNOb3RFeGlzdCI6eyJuYW1lIjoiRGVsZXRlS2V5RG9lc05vdEV4aXN0Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIiwicHVibGljX2tleSI6IiJ9fSwiRGVwb3NpdFdpdGhGdW5jdGlvbkNhbGwiOnsibmFtZSI6IkRlcG9zaXRXaXRoRnVuY3Rpb25DYWxsIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJFeHBpcmVkIjp7Im5hbWUiOiJFeHBpcmVkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJGdW5jdGlvbkNhbGxBcmd1bWVudHNMZW5ndGhFeGNlZWRlZCI6eyJuYW1lIjoiRnVuY3Rpb25DYWxsQXJndW1lbnRzTGVuZ3RoRXhjZWVkZWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7Imxlbmd0aCI6IiIsImxpbWl0IjoiIn19LCJGdW5jdGlvbkNhbGxNZXRob2ROYW1lTGVuZ3RoRXhjZWVkZWQiOnsibmFtZSI6IkZ1bmN0aW9uQ2FsbE1ldGhvZE5hbWVMZW5ndGhFeGNlZWRlZCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsibGVuZ3RoIjoiIiwibGltaXQiOiIifX0sIkZ1bmN0aW9uQ2FsbFplcm9BdHRhY2hlZEdhcyI6eyJuYW1lIjoiRnVuY3Rpb25DYWxsWmVyb0F0dGFjaGVkR2FzIiwic3VidHlwZXMiOltdLCJwcm9wcyI6e319LCJJbnN1ZmZpY2llbnRTdGFrZSI6eyJuYW1lIjoiSW5zdWZmaWNpZW50U3Rha2UiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImFjY291bnRfaWQiOiIiLCJtaW5pbXVtX3N0YWtlIjoiIiwic3Rha2UiOiIifX0sIkludmFsaWRBY2Nlc3NLZXlFcnJvciI6eyJuYW1lIjoiSW52YWxpZEFjY2Vzc0tleUVycm9yIiwic3VidHlwZXMiOlsiQWNjZXNzS2V5Tm90Rm91bmQiLCJSZWNlaXZlck1pc21hdGNoIiwiTWV0aG9kTmFtZU1pc21hdGNoIiwiUmVxdWlyZXNGdWxsQWNjZXNzIiwiTm90RW5vdWdoQWxsb3dhbmNlIiwiRGVwb3NpdFdpdGhGdW5jdGlvbkNhbGwiXSwicHJvcHMiOnt9fSwiSW52YWxpZENoYWluIjp7Im5hbWUiOiJJbnZhbGlkQ2hhaW4iLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIkludmFsaWREYXRhUmVjZWl2ZXJJZCI6eyJuYW1lIjoiSW52YWxpZERhdGFSZWNlaXZlcklkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIn19LCJJbnZhbGlkTm9uY2UiOnsibmFtZSI6IkludmFsaWROb25jZSIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsiYWtfbm9uY2UiOiIiLCJ0eF9ub25jZSI6IiJ9fSwiSW52YWxpZFByZWRlY2Vzc29ySWQiOnsibmFtZSI6IkludmFsaWRQcmVkZWNlc3NvcklkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIn19LCJJbnZhbGlkUmVjZWl2ZXJJZCI6eyJuYW1lIjoiSW52YWxpZFJlY2VpdmVySWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImFjY291bnRfaWQiOiIifX0sIkludmFsaWRTaWduYXR1cmUiOnsibmFtZSI6IkludmFsaWRTaWduYXR1cmUiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIkludmFsaWRTaWduZXJJZCI6eyJuYW1lIjoiSW52YWxpZFNpZ25lcklkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIn19LCJJbnZhbGlkVHhFcnJvciI6eyJuYW1lIjoiSW52YWxpZFR4RXJyb3IiLCJzdWJ0eXBlcyI6WyJJbnZhbGlkQWNjZXNzS2V5RXJyb3IiLCJJbnZhbGlkU2lnbmVySWQiLCJTaWduZXJEb2VzTm90RXhpc3QiLCJJbnZhbGlkTm9uY2UiLCJJbnZhbGlkUmVjZWl2ZXJJZCIsIkludmFsaWRTaWduYXR1cmUiLCJOb3RFbm91Z2hCYWxhbmNlIiwiTGFja0JhbGFuY2VGb3JTdGF0ZSIsIkNvc3RPdmVyZmxvdyIsIkludmFsaWRDaGFpbiIsIkV4cGlyZWQiLCJBY3Rpb25zVmFsaWRhdGlvbiJdLCJwcm9wcyI6e319LCJMYWNrQmFsYW5jZUZvclN0YXRlIjp7Im5hbWUiOiJMYWNrQmFsYW5jZUZvclN0YXRlIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIiwiYW1vdW50IjoiIn19LCJNZXRob2ROYW1lTWlzbWF0Y2giOnsibmFtZSI6Ik1ldGhvZE5hbWVNaXNtYXRjaCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsibWV0aG9kX25hbWUiOiIifX0sIk5vdEVub3VnaEFsbG93YW5jZSI6eyJuYW1lIjoiTm90RW5vdWdoQWxsb3dhbmNlIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIiwiYWxsb3dhbmNlIjoiIiwiY29zdCI6IiIsInB1YmxpY19rZXkiOiIifX0sIk5vdEVub3VnaEJhbGFuY2UiOnsibmFtZSI6Ik5vdEVub3VnaEJhbGFuY2UiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImJhbGFuY2UiOiIiLCJjb3N0IjoiIiwic2lnbmVyX2lkIjoiIn19LCJPbmx5SW1wbGljaXRBY2NvdW50Q3JlYXRpb25BbGxvd2VkIjp7Im5hbWUiOiJPbmx5SW1wbGljaXRBY2NvdW50Q3JlYXRpb25BbGxvd2VkIiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJhY2NvdW50X2lkIjoiIn19LCJSZWNlaXB0VmFsaWRhdGlvbkVycm9yIjp7Im5hbWUiOiJSZWNlaXB0VmFsaWRhdGlvbkVycm9yIiwic3VidHlwZXMiOlsiSW52YWxpZFByZWRlY2Vzc29ySWQiLCJJbnZhbGlkUmVjZWl2ZXJJZCIsIkludmFsaWRTaWduZXJJZCIsIkludmFsaWREYXRhUmVjZWl2ZXJJZCIsIlJldHVybmVkVmFsdWVMZW5ndGhFeGNlZWRlZCIsIk51bWJlcklucHV0RGF0YURlcGVuZGVuY2llc0V4Y2VlZGVkIiwiQWN0aW9uc1ZhbGlkYXRpb24iXSwicHJvcHMiOnt9fSwiUmVjZWl2ZXJNaXNtYXRjaCI6eyJuYW1lIjoiUmVjZWl2ZXJNaXNtYXRjaCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsiYWtfcmVjZWl2ZXIiOiIiLCJ0eF9yZWNlaXZlciI6IiJ9fSwiUmVxdWlyZXNGdWxsQWNjZXNzIjp7Im5hbWUiOiJSZXF1aXJlc0Z1bGxBY2Nlc3MiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX0sIlNpZ25lckRvZXNOb3RFeGlzdCI6eyJuYW1lIjoiU2lnbmVyRG9lc05vdEV4aXN0Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJzaWduZXJfaWQiOiIifX0sIlRvdGFsTnVtYmVyT2ZBY3Rpb25zRXhjZWVkZWQiOnsibmFtZSI6IlRvdGFsTnVtYmVyT2ZBY3Rpb25zRXhjZWVkZWQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImxpbWl0IjoiIiwidG90YWxfbnVtYmVyX29mX2FjdGlvbnMiOiIifX0sIlRvdGFsUHJlcGFpZEdhc0V4Y2VlZGVkIjp7Im5hbWUiOiJUb3RhbFByZXBhaWRHYXNFeGNlZWRlZCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsibGltaXQiOiIiLCJ0b3RhbF9wcmVwYWlkX2dhcyI6IiJ9fSwiVHJpZXNUb1N0YWtlIjp7Im5hbWUiOiJUcmllc1RvU3Rha2UiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7ImFjY291bnRfaWQiOiIiLCJiYWxhbmNlIjoiIiwibG9ja2VkIjoiIiwic3Rha2UiOiIifX0sIlRyaWVzVG9VbnN0YWtlIjp7Im5hbWUiOiJUcmllc1RvVW5zdGFrZSIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnsiYWNjb3VudF9pZCI6IiJ9fSwiVHhFeGVjdXRpb25FcnJvciI6eyJuYW1lIjoiVHhFeGVjdXRpb25FcnJvciIsInN1YnR5cGVzIjpbIkFjdGlvbkVycm9yIiwiSW52YWxpZFR4RXJyb3IiXSwicHJvcHMiOnt9fSwiVW5zdWl0YWJsZVN0YWtpbmdLZXkiOnsibmFtZSI6IlVuc3VpdGFibGVTdGFraW5nS2V5Iiwic3VidHlwZXMiOltdLCJwcm9wcyI6eyJwdWJsaWNfa2V5IjoiIn19LCJDbG9zZWQiOnsibmFtZSI6IkNsb3NlZCIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnt9fSwiSW50ZXJuYWxFcnJvciI6eyJuYW1lIjoiSW50ZXJuYWxFcnJvciIsInN1YnR5cGVzIjpbXSwicHJvcHMiOnt9fSwiU2VydmVyRXJyb3IiOnsibmFtZSI6IlNlcnZlckVycm9yIiwic3VidHlwZXMiOlsiVHhFeGVjdXRpb25FcnJvciIsIlRpbWVvdXQiLCJDbG9zZWQiLCJJbnRlcm5hbEVycm9yIl0sInByb3BzIjp7fX0sIlRpbWVvdXQiOnsibmFtZSI6IlRpbWVvdXQiLCJzdWJ0eXBlcyI6W10sInByb3BzIjp7fX19fScpfSw2MzE2OTpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siJGlkIjoiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fqdi12YWxpZGF0b3IvYWp2L21hc3Rlci9saWIvcmVmcy9kYXRhLmpzb24jIiwiZGVzY3JpcHRpb24iOiJNZXRhLXNjaGVtYSBmb3IgJGRhdGEgcmVmZXJlbmNlIChKU09OIEFueVNjaGVtYSBleHRlbnNpb24gcHJvcG9zYWwpIiwidHlwZSI6Im9iamVjdCIsInJlcXVpcmVkIjpbIiRkYXRhIl0sInByb3BlcnRpZXMiOnsiJGRhdGEiOnsidHlwZSI6InN0cmluZyIsImFueU9mIjpbeyJmb3JtYXQiOiJyZWxhdGl2ZS1qc29uLXBvaW50ZXIifSx7ImZvcm1hdCI6Impzb24tcG9pbnRlciJ9XX19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2V9Jyl9LDkyOTQ3OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyIkc2NoZW1hIjoiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjIiwiJGlkIjoiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjIiwidGl0bGUiOiJDb3JlIHNjaGVtYSBtZXRhLXNjaGVtYSIsImRlZmluaXRpb25zIjp7InNjaGVtYUFycmF5Ijp7InR5cGUiOiJhcnJheSIsIm1pbkl0ZW1zIjoxLCJpdGVtcyI6eyIkcmVmIjoiIyJ9fSwibm9uTmVnYXRpdmVJbnRlZ2VyIjp7InR5cGUiOiJpbnRlZ2VyIiwibWluaW11bSI6MH0sIm5vbk5lZ2F0aXZlSW50ZWdlckRlZmF1bHQwIjp7ImFsbE9mIjpbeyIkcmVmIjoiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXIifSx7ImRlZmF1bHQiOjB9XX0sInNpbXBsZVR5cGVzIjp7ImVudW0iOlsiYXJyYXkiLCJib29sZWFuIiwiaW50ZWdlciIsIm51bGwiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciXX0sInN0cmluZ0FycmF5Ijp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidW5pcXVlSXRlbXMiOnRydWUsImRlZmF1bHQiOltdfX0sInR5cGUiOlsib2JqZWN0IiwiYm9vbGVhbiJdLCJwcm9wZXJ0aWVzIjp7IiRpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZm9ybWF0IjoidXJpLXJlZmVyZW5jZSJ9LCIkc2NoZW1hIjp7InR5cGUiOiJzdHJpbmciLCJmb3JtYXQiOiJ1cmkifSwiJHJlZiI6eyJ0eXBlIjoic3RyaW5nIiwiZm9ybWF0IjoidXJpLXJlZmVyZW5jZSJ9LCIkY29tbWVudCI6eyJ0eXBlIjoic3RyaW5nIn0sInRpdGxlIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOnsidHlwZSI6InN0cmluZyJ9LCJkZWZhdWx0Ijp0cnVlLCJyZWFkT25seSI6eyJ0eXBlIjoiYm9vbGVhbiIsImRlZmF1bHQiOmZhbHNlfSwiZXhhbXBsZXMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnRydWV9LCJtdWx0aXBsZU9mIjp7InR5cGUiOiJudW1iZXIiLCJleGNsdXNpdmVNaW5pbXVtIjowfSwibWF4aW11bSI6eyJ0eXBlIjoibnVtYmVyIn0sImV4Y2x1c2l2ZU1heGltdW0iOnsidHlwZSI6Im51bWJlciJ9LCJtaW5pbXVtIjp7InR5cGUiOiJudW1iZXIifSwiZXhjbHVzaXZlTWluaW11bSI6eyJ0eXBlIjoibnVtYmVyIn0sIm1heExlbmd0aCI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9ub25OZWdhdGl2ZUludGVnZXIifSwibWluTGVuZ3RoIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlckRlZmF1bHQwIn0sInBhdHRlcm4iOnsidHlwZSI6InN0cmluZyIsImZvcm1hdCI6InJlZ2V4In0sImFkZGl0aW9uYWxJdGVtcyI6eyIkcmVmIjoiIyJ9LCJpdGVtcyI6eyJhbnlPZiI6W3siJHJlZiI6IiMifSx7IiRyZWYiOiIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5In1dLCJkZWZhdWx0Ijp0cnVlfSwibWF4SXRlbXMiOnsiJHJlZiI6IiMvZGVmaW5pdGlvbnMvbm9uTmVnYXRpdmVJbnRlZ2VyIn0sIm1pbkl0ZW1zIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlckRlZmF1bHQwIn0sInVuaXF1ZUl0ZW1zIjp7InR5cGUiOiJib29sZWFuIiwiZGVmYXVsdCI6ZmFsc2V9LCJjb250YWlucyI6eyIkcmVmIjoiIyJ9LCJtYXhQcm9wZXJ0aWVzIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlciJ9LCJtaW5Qcm9wZXJ0aWVzIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL25vbk5lZ2F0aXZlSW50ZWdlckRlZmF1bHQwIn0sInJlcXVpcmVkIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL3N0cmluZ0FycmF5In0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7IiRyZWYiOiIjIn0sImRlZmluaXRpb25zIjp7InR5cGUiOiJvYmplY3QiLCJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyIkcmVmIjoiIyJ9LCJkZWZhdWx0Ijp7fX0sInByb3BlcnRpZXMiOnsidHlwZSI6Im9iamVjdCIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7IiRyZWYiOiIjIn0sImRlZmF1bHQiOnt9fSwicGF0dGVyblByb3BlcnRpZXMiOnsidHlwZSI6Im9iamVjdCIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7IiRyZWYiOiIjIn0sInByb3BlcnR5TmFtZXMiOnsiZm9ybWF0IjoicmVnZXgifSwiZGVmYXVsdCI6e319LCJkZXBlbmRlbmNpZXMiOnsidHlwZSI6Im9iamVjdCIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7ImFueU9mIjpbeyIkcmVmIjoiIyJ9LHsiJHJlZiI6IiMvZGVmaW5pdGlvbnMvc3RyaW5nQXJyYXkifV19fSwicHJvcGVydHlOYW1lcyI6eyIkcmVmIjoiIyJ9LCJjb25zdCI6dHJ1ZSwiZW51bSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6dHJ1ZSwibWluSXRlbXMiOjEsInVuaXF1ZUl0ZW1zIjp0cnVlfSwidHlwZSI6eyJhbnlPZiI6W3siJHJlZiI6IiMvZGVmaW5pdGlvbnMvc2ltcGxlVHlwZXMifSx7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL3NpbXBsZVR5cGVzIn0sIm1pbkl0ZW1zIjoxLCJ1bmlxdWVJdGVtcyI6dHJ1ZX1dfSwiZm9ybWF0Ijp7InR5cGUiOiJzdHJpbmcifSwiY29udGVudE1lZGlhVHlwZSI6eyJ0eXBlIjoic3RyaW5nIn0sImNvbnRlbnRFbmNvZGluZyI6eyJ0eXBlIjoic3RyaW5nIn0sImlmIjp7IiRyZWYiOiIjIn0sInRoZW4iOnsiJHJlZiI6IiMifSwiZWxzZSI6eyIkcmVmIjoiIyJ9LCJhbGxPZiI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheSJ9LCJhbnlPZiI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheSJ9LCJvbmVPZiI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheSJ9LCJub3QiOnsiJHJlZiI6IiMifX0sImRlZmF1bHQiOnRydWV9Jyl9LDQyNTQ0OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJBRWxpZyI6Ilx4YzYiLCJBTVAiOiImIiwiQWFjdXRlIjoiXHhjMSIsIkFjaXJjIjoiXHhjMiIsIkFncmF2ZSI6Ilx4YzAiLCJBcmluZyI6Ilx4YzUiLCJBdGlsZGUiOiJceGMzIiwiQXVtbCI6Ilx4YzQiLCJDT1BZIjoiXHhhOSIsIkNjZWRpbCI6Ilx4YzciLCJFVEgiOiJceGQwIiwiRWFjdXRlIjoiXHhjOSIsIkVjaXJjIjoiXHhjYSIsIkVncmF2ZSI6Ilx4YzgiLCJFdW1sIjoiXHhjYiIsIkdUIjoiPiIsIklhY3V0ZSI6Ilx4Y2QiLCJJY2lyYyI6Ilx4Y2UiLCJJZ3JhdmUiOiJceGNjIiwiSXVtbCI6Ilx4Y2YiLCJMVCI6IjwiLCJOdGlsZGUiOiJceGQxIiwiT2FjdXRlIjoiXHhkMyIsIk9jaXJjIjoiXHhkNCIsIk9ncmF2ZSI6Ilx4ZDIiLCJPc2xhc2giOiJceGQ4IiwiT3RpbGRlIjoiXHhkNSIsIk91bWwiOiJceGQ2IiwiUVVPVCI6IlxcIiIsIlJFRyI6Ilx4YWUiLCJUSE9STiI6Ilx4ZGUiLCJVYWN1dGUiOiJceGRhIiwiVWNpcmMiOiJceGRiIiwiVWdyYXZlIjoiXHhkOSIsIlV1bWwiOiJceGRjIiwiWWFjdXRlIjoiXHhkZCIsImFhY3V0ZSI6Ilx4ZTEiLCJhY2lyYyI6Ilx4ZTIiLCJhY3V0ZSI6Ilx4YjQiLCJhZWxpZyI6Ilx4ZTYiLCJhZ3JhdmUiOiJceGUwIiwiYW1wIjoiJiIsImFyaW5nIjoiXHhlNSIsImF0aWxkZSI6Ilx4ZTMiLCJhdW1sIjoiXHhlNCIsImJydmJhciI6Ilx4YTYiLCJjY2VkaWwiOiJceGU3IiwiY2VkaWwiOiJceGI4IiwiY2VudCI6Ilx4YTIiLCJjb3B5IjoiXHhhOSIsImN1cnJlbiI6Ilx4YTQiLCJkZWciOiJceGIwIiwiZGl2aWRlIjoiXHhmNyIsImVhY3V0ZSI6Ilx4ZTkiLCJlY2lyYyI6Ilx4ZWEiLCJlZ3JhdmUiOiJceGU4IiwiZXRoIjoiXHhmMCIsImV1bWwiOiJceGViIiwiZnJhYzEyIjoiXHhiZCIsImZyYWMxNCI6Ilx4YmMiLCJmcmFjMzQiOiJceGJlIiwiZ3QiOiI+IiwiaWFjdXRlIjoiXHhlZCIsImljaXJjIjoiXHhlZSIsImlleGNsIjoiXHhhMSIsImlncmF2ZSI6Ilx4ZWMiLCJpcXVlc3QiOiJceGJmIiwiaXVtbCI6Ilx4ZWYiLCJsYXF1byI6Ilx4YWIiLCJsdCI6IjwiLCJtYWNyIjoiXHhhZiIsIm1pY3JvIjoiXHhiNSIsIm1pZGRvdCI6Ilx4YjciLCJuYnNwIjoiXHhhMCIsIm5vdCI6Ilx4YWMiLCJudGlsZGUiOiJceGYxIiwib2FjdXRlIjoiXHhmMyIsIm9jaXJjIjoiXHhmNCIsIm9ncmF2ZSI6Ilx4ZjIiLCJvcmRmIjoiXHhhYSIsIm9yZG0iOiJceGJhIiwib3NsYXNoIjoiXHhmOCIsIm90aWxkZSI6Ilx4ZjUiLCJvdW1sIjoiXHhmNiIsInBhcmEiOiJceGI2IiwicGx1c21uIjoiXHhiMSIsInBvdW5kIjoiXHhhMyIsInF1b3QiOiJcXCIiLCJyYXF1byI6Ilx4YmIiLCJyZWciOiJceGFlIiwic2VjdCI6Ilx4YTciLCJzaHkiOiJceGFkIiwic3VwMSI6Ilx4YjkiLCJzdXAyIjoiXHhiMiIsInN1cDMiOiJceGIzIiwic3psaWciOiJceGRmIiwidGhvcm4iOiJceGZlIiwidGltZXMiOiJceGQ3IiwidWFjdXRlIjoiXHhmYSIsInVjaXJjIjoiXHhmYiIsInVncmF2ZSI6Ilx4ZjkiLCJ1bWwiOiJceGE4IiwidXVtbCI6Ilx4ZmMiLCJ5YWN1dGUiOiJceGZkIiwieWVuIjoiXHhhNSIsInl1bWwiOiJceGZmIn0nKX0sNzAxMjk6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7IjAiOiLvv70iLCIxMjgiOiLigqwiLCIxMzAiOiLigJoiLCIxMzEiOiLGkiIsIjEzMiI6IuKAniIsIjEzMyI6IuKApiIsIjEzNCI6IuKAoCIsIjEzNSI6IuKAoSIsIjEzNiI6IsuGIiwiMTM3Ijoi4oCwIiwiMTM4IjoixaAiLCIxMzkiOiLigLkiLCIxNDAiOiLFkiIsIjE0MiI6IsW9IiwiMTQ1Ijoi4oCYIiwiMTQ2Ijoi4oCZIiwiMTQ3Ijoi4oCcIiwiMTQ4Ijoi4oCdIiwiMTQ5Ijoi4oCiIiwiMTUwIjoi4oCTIiwiMTUxIjoi4oCUIiwiMTUyIjoiy5wiLCIxNTMiOiLihKIiLCIxNTQiOiLFoSIsIjE1NSI6IuKAuiIsIjE1NiI6IsWTIiwiMTU4Ijoixb4iLCIxNTkiOiLFuCJ9Jyl9LDk2MDE1OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2k4OiI2LjUuNyJ9fSw3MzM5NDpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siMTAwIjoiQ29udGludWUiLCIxMDEiOiJTd2l0Y2hpbmcgUHJvdG9jb2xzIiwiMTAyIjoiUHJvY2Vzc2luZyIsIjEwMyI6IkVhcmx5IEhpbnRzIiwiMjAwIjoiT0siLCIyMDEiOiJDcmVhdGVkIiwiMjAyIjoiQWNjZXB0ZWQiLCIyMDMiOiJOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbiIsIjIwNCI6Ik5vIENvbnRlbnQiLCIyMDUiOiJSZXNldCBDb250ZW50IiwiMjA2IjoiUGFydGlhbCBDb250ZW50IiwiMjA3IjoiTXVsdGktU3RhdHVzIiwiMjA4IjoiQWxyZWFkeSBSZXBvcnRlZCIsIjIyNiI6IklNIFVzZWQiLCIzMDAiOiJNdWx0aXBsZSBDaG9pY2VzIiwiMzAxIjoiTW92ZWQgUGVybWFuZW50bHkiLCIzMDIiOiJGb3VuZCIsIjMwMyI6IlNlZSBPdGhlciIsIjMwNCI6Ik5vdCBNb2RpZmllZCIsIjMwNSI6IlVzZSBQcm94eSIsIjMwNiI6IihVbnVzZWQpIiwiMzA3IjoiVGVtcG9yYXJ5IFJlZGlyZWN0IiwiMzA4IjoiUGVybWFuZW50IFJlZGlyZWN0IiwiNDAwIjoiQmFkIFJlcXVlc3QiLCI0MDEiOiJVbmF1dGhvcml6ZWQiLCI0MDIiOiJQYXltZW50IFJlcXVpcmVkIiwiNDAzIjoiRm9yYmlkZGVuIiwiNDA0IjoiTm90IEZvdW5kIiwiNDA1IjoiTWV0aG9kIE5vdCBBbGxvd2VkIiwiNDA2IjoiTm90IEFjY2VwdGFibGUiLCI0MDciOiJQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCIsIjQwOCI6IlJlcXVlc3QgVGltZW91dCIsIjQwOSI6IkNvbmZsaWN0IiwiNDEwIjoiR29uZSIsIjQxMSI6Ikxlbmd0aCBSZXF1aXJlZCIsIjQxMiI6IlByZWNvbmRpdGlvbiBGYWlsZWQiLCI0MTMiOiJQYXlsb2FkIFRvbyBMYXJnZSIsIjQxNCI6IlVSSSBUb28gTG9uZyIsIjQxNSI6IlVuc3VwcG9ydGVkIE1lZGlhIFR5cGUiLCI0MTYiOiJSYW5nZSBOb3QgU2F0aXNmaWFibGUiLCI0MTciOiJFeHBlY3RhdGlvbiBGYWlsZWQiLCI0MTgiOiJJXCdtIGEgdGVhcG90IiwiNDIxIjoiTWlzZGlyZWN0ZWQgUmVxdWVzdCIsIjQyMiI6IlVucHJvY2Vzc2FibGUgRW50aXR5IiwiNDIzIjoiTG9ja2VkIiwiNDI0IjoiRmFpbGVkIERlcGVuZGVuY3kiLCI0MjUiOiJVbm9yZGVyZWQgQ29sbGVjdGlvbiIsIjQyNiI6IlVwZ3JhZGUgUmVxdWlyZWQiLCI0MjgiOiJQcmVjb25kaXRpb24gUmVxdWlyZWQiLCI0MjkiOiJUb28gTWFueSBSZXF1ZXN0cyIsIjQzMSI6IlJlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UiLCI0NTEiOiJVbmF2YWlsYWJsZSBGb3IgTGVnYWwgUmVhc29ucyIsIjUwMCI6IkludGVybmFsIFNlcnZlciBFcnJvciIsIjUwMSI6Ik5vdCBJbXBsZW1lbnRlZCIsIjUwMiI6IkJhZCBHYXRld2F5IiwiNTAzIjoiU2VydmljZSBVbmF2YWlsYWJsZSIsIjUwNCI6IkdhdGV3YXkgVGltZW91dCIsIjUwNSI6IkhUVFAgVmVyc2lvbiBOb3QgU3VwcG9ydGVkIiwiNTA2IjoiVmFyaWFudCBBbHNvIE5lZ290aWF0ZXMiLCI1MDciOiJJbnN1ZmZpY2llbnQgU3RvcmFnZSIsIjUwOCI6Ikxvb3AgRGV0ZWN0ZWQiLCI1MDkiOiJCYW5kd2lkdGggTGltaXQgRXhjZWVkZWQiLCI1MTAiOiJOb3QgRXh0ZW5kZWQiLCI1MTEiOiJOZXR3b3JrIEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkIn0nKX19LGZ1bmN0aW9uKGUpeyhmdW5jdGlvbih0KXtlKGUucz10KX0pKCIxMjgzNyIpfV0pOw== |
| 1 | EiwKJAFVEiC3t2rhgx17T46KcShXSUag8BIH22bMGfBqERQodny6zxIAGICAEBIsCiQBVRIgL/bOji1+90u68N+4uqaS8SJ1ygBB33l/V03wQ2UojlISABiAgBASLAokAVUSIBZYvF2faLvmyAK+ZHMKj66Imtx4KD3dw6xXd3PSu5yDEgAYgIAQEiwKJAFVEiAbBXO+7VUsvutfG54seXtqbSyAE1O5hmEMPUYkT3tfARIAGICAEBIsCiQBVRIgr/CfP3R8J2leSDj2F6DZM7qvq6hmjQFfMhcC/nVsnI0SABiAgBASLAokAVUSIMRh0rwiLPobKsZlggAUUkc3fKs0n8EHmtkmLUcHAZsPEgAYgIAQEiwKJAFVEiApqXSmEfKfAqlz5ecLsNUpS/KxQMLjmD6lOiSHxxHikBIAGICAEBIsCiQBVRIgPw0OG8B931VamgdI0zs/hLRiMNEJv7kF1RjdQ+sX1WYSABiAgBASLAokAVUSIETGI8wyJ6keHLRw8k5iJY1jBbZS6f8hdodAeDe1UJzHEgAYgIAQEiwKJAFVEiBasJCYgolCYPEj8IA2rftDfwZNZ/8ciyc89c3SNAs2zRIAGICAEBIsCiQBVRIgWEpRlIdpy2ZDOemx5n4juJYG1EtP4of24WGlOFZSBxoSABiAgBASLAokAVUSIOnC7Yeb0SGD1gx86PY8kY4rYN5LP3vDFfJVErVvutLVEgAYgIAQEiwKJAFVEiDvj42yE6cl0sX6SKOeJ6DwrAjqqqY+RDA7OIuTXskFTBIAGICAEBIsCiQBVRIgGe1DPVDjDKM+lGV/BrctFPQh2ZT/5xIPFAgmGEOiuUMSABiAgBASLAokAVUSIDtPEhBER+NCJcn4pVHj34T4VgRzLTQHNR87NAODCPEFEgAYgIAQEiwKJAFVEiBASWG5Cl+//wMvqx3y4Adisy3if3y6f/excwV5sHH4gRIAGICAEBIsCiQBVRIg5kx/jI5HsGd7A8n3k+L4vSGae3PDGsiFBRDA5Ik7wGASABiAgBASLAokAVUSIFqlBBu3cQ6u/juSIQJ0pG1wDVhf/dbqH4vttWntKHNcEgAYgIAQEiwKJAFVEiCQUb92ka6h5+B5YC2Y8AC+mEZf1BagHNSqaNiKjZwMoBIAGICAEBIsCiQBVRIgv5AwQrDFXYs4irxe7FuKIJai953FNG1q7QTB1UG6OisSABiAgBASLAokAVUSIGgYv1nYDbcvW6DLO55Eh94XFMZXp4cY936IpJXWUKirEgAYhMMNClsIAhiEw80CIICAECCAgBAggIAQIICAECCAgBAggIAQIICAECCAgBAggIAQIICAECCAgBAggIAQIICAECCAgBAggIAQIICAECCAgBAggIAQIICAECCAgBAghMMN |
| 1 | KCgpPT57InVzZSBzdHJpY3QiO3ZhciBlPXt9LGE9e307ZnVuY3Rpb24gYyh0KXt2YXIgZj1hW3RdO2lmKHZvaWQgMCE9PWYpcmV0dXJuIGYuZXhwb3J0czt2YXIgZD1hW3RdPXtpZDp0LGxvYWRlZDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVt0XS5jYWxsKGQuZXhwb3J0cyxkLGQuZXhwb3J0cyxjKSxkLmxvYWRlZD0hMCxkLmV4cG9ydHN9Yy5tPWUsYy5uPWZ1bmN0aW9uKGUpe3ZhciBhPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBjLmQoYSx7YTphfSksYX0sKCgpPT57dmFyIGUsYT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y/ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffTtjLnQ9ZnVuY3Rpb24odCxmKXtpZigxJmYmJih0PXRoaXModCkpLDgmZnx8Im9iamVjdCI9PXR5cGVvZiB0JiZ0JiYoNCZmJiZ0Ll9fZXNNb2R1bGV8fDE2JmYmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW4pKXJldHVybiB0O3ZhciBkPU9iamVjdC5jcmVhdGUobnVsbCk7Yy5yKGQpO3ZhciBuPXt9O2U9ZXx8W251bGwsYSh7fSksYShbXSksYShhKV07Zm9yKHZhciByPTImZiYmdDsib2JqZWN0Ij09dHlwZW9mIHImJiF+ZS5pbmRleE9mKHIpO3I9YShyKSlPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZV09ZnVuY3Rpb24oKXtyZXR1cm4gdFtlXX19KTtyZXR1cm4gbi5kZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGMuZChkLG4pLGR9fSkoKSxjLmQ9ZnVuY3Rpb24oZSxhKXtmb3IodmFyIHQgaW4gYSljLm8oYSx0KSYmIWMubyhlLHQpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGdldDphW3RdfSl9LGMuZj17fSxjLmU9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKGMuZikucmVkdWNlKGZ1bmN0aW9uKGEsdCl7cmV0dXJuIGMuZlt0XShlLGEpLGF9LFtdKSl9LGMudT1mdW5jdGlvbihlKXtyZXR1cm4iIitlKyIuIisoezExMTI6IjlhNjI5ZDZlOTk3MmE1OTM5ZjRiIiwxMTQ6ImRhNjdiMTBiNjM0NGQzNjMwYTE3IiwxMjA1OiJlOWIwMjgzZTE0Njk1MGYzZDFhNSIsMTI5NToiYjFiMjE2OGVjNWZhNTQ0YTVkNWIiLDEzMTI6IjAwMmQ2MzY1NjhlZDRiNGUzZjFjIiwxMzk1OiJkZGY1MWM4ZjM0OTlhY2Y5ZGQxOCIsMTM5NjoiOTYxOTM5NWU1MjU5YTE5YWVhNTIiLDE1Njc6IjU3YWUzM2I5NWQzMWZkNzQ5N2EyIiwxNTc4OiI0MjE4MDQ0MjgwNjQyOTExYmZiYyIsMTczMjoiZDc2NjExOTdjODZmZjVmZDRiNTIiLDIwMDM6ImQ1ZGJiZjI3NDQ4ZjZjY2EyMzNiIiwyMTkzOiI5MzQwYzRmNjE2MGI4NGE3OTY4ZiIsMjM2MzoiZTMwZWM3NDBlMWRlNmExYWUyZDAiLDIzNjc6IjdmMzc1ZDdkYjg0Y2YwNzIwNGQxIiwyNDE5OiI1MDZlMWZmZDk4MDQ1NjQ4NTgzNCIsMjY0MzoiYWZiZTY2NTUwYjk5NDlmYWIwYTIiLDI2ODY6ImVlZTIxNGY5YTE4YWUyMjcyNjFlIiwyNzA2OiI1NmIzMWIwYTNjYWJlN2JkYWY3MSIsMjc3ODoiNWNkMzdhMjgyZjAyMTdmZmZjNWMiLDI4MTM6Ijg2OWI1MmJhMDllMDZkMjRlYjVkIiwyODcwOiJhYmM0OGNiYzhjNTM5YjNlNjRlNSIsMzAyMDoiMWVkOGFmNDk2Mzc5YTQ2MTY3NTEiLDMwMjM6IjYxYmMzMDljZTkxOTNkYmQyOTRmIiwzMjQ0OiJlNmFjYmYzZDc0MGI3NmQzOWU1YSIsMzI5NDoiNDc0M2Y2NTkwMWY5NDE1OTcxMTkiLDMzMjA6ImU4MjQ5MzMxOTAzNzQ1MGYzMTRkIiwzMzY2OiI3YWVlMzVkNzgzODgyM2NiOGIzNiIsMzM4OiIzNmRkNGY1YWVkMzIwNTBhYjM2MCIsMzM5NzoiYTkxZTM0M2I4MWM4ZDMyZDY1ZjIiLDM1NTU6IjVlZTQ2NzY3MmJhMjdhODBhZWZkIiwzNTYwOiI2MzNlNjNlMWQ3ZTdkZTM4OGU5MyIsMzU2MToiMDA5YTFjN2NkOWQyZDE0NzExYWIiLDM1ODc6ImQ2MmRjMjk0ZGJiOTQzOWI1NjllIiwzNjA6IjQxMDdkNmIzYTExZjljNGIwMjQ5IiwzNjk2OiJhMzEzMThhNjlmYTkwOWU5ZjhkZiIsMzc4OToiMjczMjU3ODMzZDQ4MmYyNmIyYWIiLDM4OTA6IjM4MThlZDQ5ODQ1ZDZjMzllMmZkIiwzOTM6ImUzYTYwNGIwMDg1YmQxZmNkNjI1IiwzOTUwOiI4Y2Q2YjlmZmExODBlZmEyNGJlYSIsNDI2MDoiOTljYzQwZTY2Y2Y4ZTI0MWVhYTAiLDQ1MzQ6IjA0MTMyNDM4MDg5ZGE2NDNkNTM2Iiw0NTUxOiJkNGEzY2M2ODI0NzliOGVjYzRhYyIsNDkxOToiNzM0ZGI0NGYyMTg5NTdmYmViMTIiLDQ5NDM6IjJjZWYwMzFkMDYyZjA3ZDIxMzA4Iiw1MTIwOiJhMjAyYTY2ZTllNGI4ZDZiZjAzNiIsNTM2MDoiMzU0NTI5NTQwYzQ4ZWMwZTg5YWYiLDUzNzg6ImJhZDIxN2IxODg1NDAyMWRhM2RlIiw1NTQxOiJmNmUyYjQ2YmE0NGI0MDYzNTllYiIsNTU2ODoiMzE3ZGRiYjZlNjZmMzBmZDQxYWIiLDU3MTU6IjkwYjY4MzY5OWQwMDFjNGFjZDA3Iiw1NzgxOiJmYzdmYTQ0Mzc4NWRhNjM4NGY0NSIsNTk1OiIxMzg3Y2YxMzUyMTBhMTNmY2FkMiIsNjAzOiI1ZjQ5OWQ0MjE0ZmRiNjk1ZTRkYiIsNjA5MjoiOGFlNzE4NGU5YWE0MTY0Y2I4ZWIiLDYxMjI6ImVmNmI4ZGJlYjRhMDA4MGU5MmRlIiw2MTQ4OiJjOTExM2FjNDNkOGMzMzIzNGRkNiIsNjIyMDoiNWE2NzU0ZjhlMzA4ODY2YTYxOTIiLDYyNDA6IjdjMDRiMmEyZGVkM2RlZDE0YmY3Iiw2MzE0OiJhMGVlNDUyZGZhZDRiZWQxYTg5NCIsNjQyMDoiMmY3OTBjMjdhZjZhNzRkYTExZDkiLDY0NTE6ImJmNzk3OTMzZGNkNTY3YTkyMTY2Iiw2NjcyOiI5YTlhOWFlYjFhY2EyMWRkMmI2NCIsNjcxMDoiNjhlZTgyZGI1YjdhYWU5M2JlYmIiLDY5Mzk6Ijc4ODM4YWE3NTk5ZjBiMTU1NmQzIiw3MTE2OiI5YjUxZDk5YzJkMjFkZGZlMzhhNiIsNzE4MzoiMDlhODljOWFkNzYyMWY2MzJlYWUiLDcxOTc6Ijg5N2IwYzM2MjBkODAyZTg4ZTA2Iiw3Mzk0OiI5NTk3MWNmMGU2MDBmY2FlNGNjNyIsNzQwODoiODlhZWIwYjFjNDY3Njk5YjQxNzMiLDc4NjY6ImMxMGJjNWY3M2NjZmM2MGI0ZGU5Iiw4MDg4OiI0ZTczNTFkYzY1MTMxMmI5OTdkZiIsODEwMToiNWQ3NjZmMTMwMjBkOThhMTJhZWMiLDgzNzA6IjAwYjQzN2UxZjgyNDAwYzZiNTk3Iiw4NDcxOiJmYmU1ZTQwMmIxMjMzYmIxMzYwMiIsODgzNzoiYjc1ZWE0NjUyNWJlOGYzMzNhY2EiLDg5NzY6IjBhMzdhNDViMTI2OTViYTc4NjE1Iiw5MTMyOiI5YmMyZTI3NzQyNTI3YjVhMGIzMCIsOTMyMzoiZjYyMTI5ZTk4NTFiOTgyYzU4OTUiLDk0Njk6IjhlZWIyYWU3YjljNDdmMjBkZGVkIiw5NDk1OiIxMDFhY2RhNzNhYTg3ZTA4MzU1ZCIsOTUyMjoiYjQ5NDhlYjYyODAxZmU2ZjFlOGMiLDk1OTI6IjFjNDM5ZTE1ZjNiNDRkODk5ZWFjIiw5ODI1OiIxODk2MjJhYzNmNjhiZDdmZTM0NiIsOTgzMzoiMWZjOWNiYTYzZDAxNTFiZmUyZjciLDk5NTM6IjNiODA1MzY3NWJmMzdlYmFlMTc4In0pW2VdKyIuYnVuZGxlLmpzIn0sYy5nPWZ1bmN0aW9uKCl7aWYoIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaChlKXtpZigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxjLm89ZnVuY3Rpb24oZSxhKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsYSl9LCgoKT0+e3ZhciBlPXt9LGE9Im5lYXItYm9zLXdlYmNvbXBvbmVudDoiO2MubD1mdW5jdGlvbih0LGYsZCxuKXtpZihlW3RdKXtlW3RdLnB1c2goZik7cmV0dXJufWlmKHZvaWQgMCE9PWQpe2Zvcih2YXIgcixiLG89ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLHU9MDt1PG8ubGVuZ3RoO3UrKyl7dmFyIGk9b1t1XTtpZihpLmdldEF0dHJpYnV0ZSgic3JjIik9PXR8fGkuZ2V0QXR0cmlidXRlKCJkYXRhLXdlYnBhY2siKT09YStkKXtyPWk7YnJlYWt9fX0hciYmKGI9ITAsKHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpLmNoYXJzZXQ9InV0Zi04IixyLnRpbWVvdXQ9MTIwLGMubmMmJnIuc2V0QXR0cmlidXRlKCJub25jZSIsYy5uYyksci5zZXRBdHRyaWJ1dGUoImRhdGEtd2VicGFjayIsYStkKSxyLnNyYz10KSxlW3RdPVtmXTt2YXIgbD1mdW5jdGlvbihhLGMpe3Iub25lcnJvcj1yLm9ubG9hZD1udWxsLGNsZWFyVGltZW91dChzKTt2YXIgZj1lW3RdO2lmKGRlbGV0ZSBlW3RdLHIucGFyZW50Tm9kZSYmci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpLGYmJmYuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZShjKX0pLGEpcmV0dXJuIGEoYyl9LHM9c2V0VGltZW91dChsLmJpbmQobnVsbCx2b2lkIDAse3R5cGU6InRpbWVvdXQiLHRhcmdldDpyfSksMTJlNCk7ci5vbmVycm9yPWwuYmluZChudWxsLHIub25lcnJvciksci5vbmxvYWQ9bC5iaW5kKG51bGwsci5vbmxvYWQpLGImJmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocil9fSkoKSxjLnI9ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sYy5ubWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGF0aHM9W10sIWUuY2hpbGRyZW4mJihlLmNoaWxkcmVuPVtdKSxlfSxjLm5jPXZvaWQgMCwoKCk9Pnt2YXIgZT1bXTtjLk89ZnVuY3Rpb24oYSx0LGYsZCl7aWYodCl7ZD1kfHwwO2Zvcih2YXIgbj1lLmxlbmd0aDtuPjAmJmVbbi0xXVsyXT5kO24tLSllW25dPWVbbi0xXTtlW25dPVt0LGYsZF07cmV0dXJufWZvcih2YXIgcj0xLzAsbj0wO248ZS5sZW5ndGg7bisrKXtmb3IodmFyIHQ9ZVtuXVswXSxmPWVbbl1bMV0sZD1lW25dWzJdLGI9ITAsbz0wO288dC5sZW5ndGg7bysrKSghMSZkfHxyPj1kKSYmT2JqZWN0LmtleXMoYy5PKS5ldmVyeShmdW5jdGlvbihlKXtyZXR1cm4gYy5PW2VdKHRbb10pfSk/dC5zcGxpY2Uoby0tLDEpOihiPSExLGQ8ciYmKHI9ZCkpO2lmKGIpe2Uuc3BsaWNlKG4tLSwxKTt2YXIgdT1mKCk7dm9pZCAwIT09dSYmKGE9dSl9fXJldHVybiBhfX0pKCksYy5wPSIvIixjLnJ2PWZ1bmN0aW9uKCl7cmV0dXJuIjEuMC43In0sKCgpPT57Yy5iPWRvY3VtZW50LmJhc2VVUkl8fHNlbGYubG9jYXRpb24uaHJlZjt2YXIgZT17MzgxMDowfTtjLmYuaj1mdW5jdGlvbihhLHQpe3ZhciBmPWMubyhlLGEpP2VbYV06dm9pZCAwO2lmKDAhPT1mKXtpZihmKXQucHVzaChmWzJdKTtlbHNlIGlmKDM4MTAhPWEpe3ZhciBkPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGMsdCl7Zj1lW2FdPVtjLHRdfSk7dC5wdXNoKGZbMl09ZCk7dmFyIG49Yy5wK2MudShhKSxyPUVycm9yKCk7Yy5sKG4sZnVuY3Rpb24odCl7aWYoYy5vKGUsYSkmJigwIT09KGY9ZVthXSkmJihlW2FdPXZvaWQgMCksZikpe3ZhciBkPXQmJigibG9hZCI9PT10LnR5cGU/Im1pc3NpbmciOnQudHlwZSksbj10JiZ0LnRhcmdldCYmdC50YXJnZXQuc3JjO3IubWVzc2FnZT0iTG9hZGluZyBjaHVuayAiK2ErIiBmYWlsZWQuXG4oIitkKyI6ICIrbisiKSIsci5uYW1lPSJDaHVua0xvYWRFcnJvciIsci50eXBlPWQsci5yZXF1ZXN0PW4sZlsxXShyKX19LCJjaHVuay0iK2EsYSl9ZWxzZSBlW2FdPTB9fSxjLk8uaj1mdW5jdGlvbihhKXtyZXR1cm4gMD09PWVbYV19O3ZhciBhPWZ1bmN0aW9uKGEsdCl7dmFyIGY9dFswXSxkPXRbMV0sbj10WzJdLHIsYixvPTA7aWYoZi5zb21lKGZ1bmN0aW9uKGEpe3JldHVybiAwIT09ZVthXX0pKXtmb3IociBpbiBkKWMubyhkLHIpJiYoYy5tW3JdPWRbcl0pO2lmKG4pdmFyIHU9bihjKX1mb3IoYSYmYSh0KTtvPGYubGVuZ3RoO28rKyliPWZbb10sYy5vKGUsYikmJmVbYl0mJmVbYl1bMF0oKSxlW2JdPTA7cmV0dXJuIGMuTyh1KX0sdD1zZWxmLndlYnBhY2tDaHVua25lYXJfYm9zX3dlYmNvbXBvbmVudD1zZWxmLndlYnBhY2tDaHVua25lYXJfYm9zX3dlYmNvbXBvbmVudHx8W107dC5mb3JFYWNoKGEuYmluZChudWxsLDApKSx0LnB1c2g9YS5iaW5kKG51bGwsdC5wdXNoLmJpbmQodCkpfSkoKSxjLnJ1aWQ9ImJ1bmRsZXI9cnNwYWNrQDEuMC43In0pKCk7 |
| 1 | Ek8KJAFVEiAZl8ePtzP45eXfzFoDKBqMwQOAts6D71xJE7vpS5YnehIjMTExMi45YTYyOWQ2ZTk5NzJhNTkzOWY0Yi5idW5kbGUuanMY6bABEk0KJAFVEiDThVTsXXfatzY/rDe026edUF7wQNNBBmzCFaI2+W2tCRIiMTE0LmRhNjdiMTBiNjM0NGQzNjMwYTE3LmJ1bmRsZS5qcxjVFhJPCiQBVRIgdS+u6TUiuzrIT9kLugZQAsSz8VrsAUSMMC/0gFeLq3ESIzEyMDUuZTliMDI4M2UxNDY5NTBmM2QxYTUuYnVuZGxlLmpzGMjVARJOCiQBVRIg4eSswUnSHsGps7Zpaod3b8zxN6ed4JTYqQ6jtZQVZ9sSIzEyOTUuYjFiMjE2OGVjNWZhNTQ0YTVkNWIuYnVuZGxlLmpzGNYUEk4KJAFVEiCuF+GeBTK+Nq6C6dgOgb2wiBL1uDYqzy6kporiVPXjmxIjMTMxMi4wMDJkNjM2NTY4ZWQ0YjRlM2YxYy5idW5kbGUuanMYyQUSTgokAVUSIKXsVQ3Sfo+Whb2tTY8px51PzDqfhGpc2vwW1LTv12oKEiMxMzk1LmRkZjUxYzhmMzQ5OWFjZjlkZDE4LmJ1bmRsZS5qcxjLGRJOCiQBVRIgWgh/peO+zbV8Q6HWDTL+H7i2Wt5DI6f7cx0rAUX5u+YSIzEzOTYuOTYxOTM5NWU1MjU5YTE5YWVhNTIuYnVuZGxlLmpzGOAJEk4KJAFVEiCmj/Ucnfv1yheGxfupcCRZnUo3D/hOIg72UydgGTsFqhIjMTU2Ny41N2FlMzNiOTVkMzFmZDc0OTdhMi5idW5kbGUuanMYhwESTgokAVUSILtOp7GmTOuLKNvALtFQ1HJBtqYJbjMj9zE0AgTY+1qPEiMxNTc4LjQyMTgwNDQyODA2NDI5MTFiZmJjLmJ1bmRsZS5qcxjYDhJOCiQBVRIgVi801QI4J18/4bZ3PaGXk98lCKFIdhRyLgc3rVwMk34SIzE3MzIuZDc2NjExOTdjODZmZjVmZDRiNTIuYnVuZGxlLmpzGIoJEk4KJAFVEiACsaIfLbLZFkhv0PLhA8N2nF+VoOG/bxRY1biKKkgcBRIjMjAwMy5kNWRiYmYyNzQ0OGY2Y2NhMjMzYi5idW5kbGUuanMYrxUSTgokAVUSIPQlVFI5arx/qnGQ9u7eY+pImiBOgwE+3mgQXBQzWCdbEiMyMTkzLjkzNDBjNGY2MTYwYjg0YTc5NjhmLmJ1bmRsZS5qcxiXCxJPCiQBVRIgnYHdaOiYgdV4fuhyBNEOlIcRVlGdd4PTjOlB/wHqjRYSIzIzNjMuZTMwZWM3NDBlMWRlNmExYWUyZDAuYnVuZGxlLmpzGMCLAhJOCiQBVRIgf3bdtcprE34+Qh4TYGTw4Ql98YQf7mchJXZs6k9mrtsSIzIzNjcuN2YzNzVkN2RiODRjZjA3MjA0ZDEuYnVuZGxlLmpzGI0IEk4KJAFVEiDtyHT5TJGTj6SbU1A7iCRDw8Lt+h9ZvFfvTFbGRdiuZxIjMjQxOS41MDZlMWZmZDk4MDQ1NjQ4NTgzNC5idW5kbGUuanMYnjsSTgokAVUSIHwURxFRjAt8vN8A3aCVAcEmwcLwGq6T9jQEw48OvwA4EiMyNjQzLmFmYmU2NjU1MGI5OTQ5ZmFiMGEyLmJ1bmRsZS5qcxjCFRJOCiQBVRIgQ07NMTFkaTMPLzwkCEDZdVCxs/CIm0daqOT9mSclglsSIzI2ODYuZWVlMjE0ZjlhMThhZTIyNzI2MWUuYnVuZGxlLmpzGMUNEk4KJAFVEiADYwxincIMfllKDwRiAeu4PYK6QSngASeogb0jkNmGxhIjMjcwNi41NmIzMWIwYTNjYWJlN2JkYWY3MS5idW5kbGUuanMY/wYSTgokAVUSIJ6B97LGwK5nTth/ERohe3p34r4yIK4WmsSyDnHx/H6sEiMyNzc4LjVjZDM3YTI4MmYwMjE3ZmZmYzVjLmJ1bmRsZS5qcxjYFhJOCiQBVRIgRMYPzDIKHrpgNgnV01c0NJbysmeJq+AVneNUK/VjqvcSIzI4MTMuODY5YjUyYmEwOWUwNmQyNGViNWQuYnVuZGxlLmpzGJ4REk4KJAFVEiCF7aj1RxAgQQWH/vOmxOQDJbvj0qa0vCDfwJNz63xQKBIjMjg3MC5hYmM0OGNiYzhjNTM5YjNlNjRlNS5idW5kbGUuanMYoRASTgokAVUSILDepOHetcgoJLwsNIa6b6d//CaMjnlwKPWk4/f7a3gwEiMzMDIwLjFlZDhhZjQ5NjM3OWE0NjE2NzUxLmJ1bmRsZS5qcxjEDBJOCiQBVRIgLrTzaLqj7ivH7+uAJ0Dz3OotBZ5zoQvqCS9MXyOlPyoSIzMwMjMuNjFiYzMwOWNlOTE5M2RiZDI5NGYuYnVuZGxlLmpzGM8mEk8KJAFVEiBERGrUddaSVOPys7rOMAgym/19EHBR1iaq0kwEcty3lxIjMzI0NC5lNmFjYmYzZDc0MGI3NmQzOWU1YS5idW5kbGUuanMY75MBEk4KJAFVEiCqf7jdVvm0kEAIqOsI/N51u1EY7mUubepPDvn+PmXdhxIjMzI5NC40NzQzZjY1OTAxZjk0MTU5NzExOS5idW5kbGUuanMY/RQSTgokAVUSIHh48gwS9d8pJcig/MdtFcZSZAZLV2A+JZgzXkGkPOABEiMzMzIwLmU4MjQ5MzMxOTAzNzQ1MGYzMTRkLmJ1bmRsZS5qcxiGIBJOCiQBVRIgE8sZlMP0WkH9IearcJs0kSB2pt0KNxkIyLwWiFwquogSIzMzNjYuN2FlZTM1ZDc4Mzg4MjNjYjhiMzYuYnVuZGxlLmpzGIkFEk4KJAFVEiDbRV79YrIKkqA65V3NFqOEFRx6ekptsvAx37G9W9uXFxIiMzM4LjM2ZGQ0ZjVhZWQzMjA1MGFiMzYwLmJ1bmRsZS5qcxjnowUSTgokAVUSIOdVy5NOPRNzQZo+MLDrJRzAtCG+gBObw9Z8b5IDwDI0EiMzMzk3LmE5MWUzNDNiODFjOGQzMmQ2NWYyLmJ1bmRsZS5qcxjrARJOCiQBVRIgbbOtjMo/EbC+FwOzWSMn3ZyfWosCzMd1q2kPSeXto8oSIzM1NTUuNWVlNDY3NjcyYmEyN2E4MGFlZmQuYnVuZGxlLmpzGLQJEk4KJAFVEiAyHa4rapU2rO9nr3MRVEhTAGmM5WXEd7KRkGF4yUJCXhIjMzU2MC42MzNlNjNlMWQ3ZTdkZTM4OGU5My5idW5kbGUuanMYvQwSTgokAVUSIGqa53m9IPWqsSkM/IdXXQxJkuNroGy91k6mu1FzO+0iEiMzNTYxLjAwOWExYzdjZDlkMmQxNDcxMWFiLmJ1bmRsZS5qcxiTQBJPCiQBVRIgOYl/2+xdVQeNq0OCKImeuqnJUBPY/NJdMubNiCTWEJ4SIzM1ODcuZDYyZGMyOTRkYmI5NDM5YjU2OWUuYnVuZGxlLmpzGOijBRJOCiQBVRIgN90D9xZWGqJoj4+Gc0JC27pIgVCgAwcLc6FXjBv/F/YSIjM2MC40MTA3ZDZiM2ExMWY5YzRiMDI0OS5idW5kbGUuanMY3NgBEk4KJAFVEiDKW/AvsbSyo9NcVXT8KznHgMewdz3k6r+CGuZNvrdEsxIjMzY5Ni5hMzEzMThhNjlmYTkwOWU5ZjhkZi5idW5kbGUuanMYxSgSTgokAVUSIMbplnXrLdzJ4Fg2vHXmTUhxwfV9rTCkVCQVOOAzhT2REiMzNzg5LjI3MzI1NzgzM2Q0ODJmMjZiMmFiLmJ1bmRsZS5qcxjhExJPCiQBVRIg4uiqdwbn6k7Xo4TChYHgPpRX5Fgq8V63IDElw2BC/2ESIzM4OTAuMzgxOGVkNDk4NDVkNmMzOWUyZmQuYnVuZGxlLmpzGNKGCRJNCiQBVRIgWG01LYnxbhPIFHqJgQFXLJkUlDKBr/Y60tnvX/Bq3ZsSIjM5My5lM2E2MDRiMDA4NWJkMWZjZDYyNS5idW5kbGUuanMY+AgSTgokAVUSILGIRBbH7YZYSc0Ij9DEWzkUZcujcrhjIHTyz0Rr8ZZoEiMzOTUwLjhjZDZiOWZmYTE4MGVmYTI0YmVhLmJ1bmRsZS5qcxjuARI0CiQBVRIgkQzksNO1i/61UJj+SI6ucfA9WI7xNerKn2pRSGuisOsSCDQwNC5odG1sGO2GARJPCiQBVRIgv3P92/827jglY/SWKnxc8L8ks47agFVLmo8WOJupgCsSIzQyNjAuOTljYzQwZTY2Y2Y4ZTI0MWVhYTAuYnVuZGxlLmpzGJfYBBJPCiQBcBIg9MKDV0tJrwiFFmzGQL7aodTR3/S5Ot4IC63I68gzp18SIzQ1MzQuMDQxMzI0MzgwODlkYTY0M2Q1MzYuYnVuZGxlLmpzGLa3NRJPCiQBVRIggwaIKbxzBG9pUpuPbHB8Dwa1NnWLNjxlNJiYsTyuFCgSIzQ1NTEuZDRhM2NjNjgyNDc5YjhlY2M0YWMuYnVuZGxlLmpzGP/GARJOCiQBVRIgZRrLd7/rc+p3Mm9bNy/1nMNk8L53KUo73iGfEYYVxqISIzQ5MTkuNzM0ZGI0NGYyMTg5NTdmYmViMTIuYnVuZGxlLmpzGJMEEk8KJAFVEiC5+AQzMt1Z3uCssg4yHXF7qLhcINrpVhR4Q8RCSWXKTxIjNDk0My4yY2VmMDMxZDA2MmYwN2QyMTMwOC5idW5kbGUuanMYho8EEk4KJAFVEiCdiyNnGQLfcuSr9KMULH5UB6YdydhIEpUzuM7kLCxRAhIjNTEyMC5hMjAyYTY2ZTllNGI4ZDZiZjAzNi5idW5kbGUuanMY8BoSTgokAVUSIOG7zl/zS8nHu+FMha6zL7e8LxDBQbBUBnkA3gazMq3vEiM1MzYwLjM1NDUyOTU0MGM0OGVjMGU4OWFmLmJ1bmRsZS5qcxi4BxJOCiQBVRIgQgSAwyndXRCsaQj+D0YAreuIgHUkNy7afgbqgNz1ntQSIzUzNzguYmFkMjE3YjE4ODU0MDIxZGEzZGUuYnVuZGxlLmpzGN4EEk4KJAFVEiCaMB8QoI26VHUhyD2OTquMXzG64CY5I6GYCa1Ob1nVPxIjNTU0MS5mNmUyYjQ2YmE0NGI0MDYzNTllYi5idW5kbGUuanMYnRgSTwokAVUSIL+BXh4M3QaB72P5szhmz3sgtoOzi42Ld6weX7Y2dUYTEiM1NTY4LjMxN2RkYmI2ZTY2ZjMwZmQ0MWFiLmJ1bmRsZS5qcxic+wESTgokAVUSICwtDXkmGlMGtwUINL9pKGEoiuim3vv51gmnkYkUh/TjEiM1NzE1LjkwYjY4MzY5OWQwMDFjNGFjZDA3LmJ1bmRsZS5qcxjlDRJOCiQBVRIggGchrj00OnfZL9hmBTJUKL4ZxK7Vf5asYkWcu8AftWcSIzU3ODEuZmM3ZmE0NDM3ODVkYTYzODRmNDUuYnVuZGxlLmpzGMk6Ek0KJAFVEiCzrH9T9bacXBCp8YXmJjz3WQnRhhsKlEdVbindT1gYvxIiNTk1LjEzODdjZjEzNTIxMGExM2ZjYWQyLmJ1bmRsZS5qcxivEhJNCiQBVRIgzfBhgxigUOt0CuvxMlQVs1JDtK/mNx7vjPOb+Khl8qwSIjYwMy41ZjQ5OWQ0MjE0ZmRiNjk1ZTRkYi5idW5kbGUuanMYsUwSTgokAVUSIO6r2UGESIDemC+kJxLz5dwIDYRytxthJi8cdlo6sSaoEiM2MDkyLjhhZTcxODRlOWFhNDE2NGNiOGViLmJ1bmRsZS5qcxjQERJOCiQBVRIgtS3QLrEBGBdkM/SfLqdtqfcLUh+XaQJRmcRLOrWwomoSIzYxMjIuZWY2YjhkYmViNGEwMDgwZTkyZGUuYnVuZGxlLmpzGPAIEk4KJAFVEiA6j3C2sSl/Gv4601Z8y9S4sLJzHUFFOzktJPSkjqUClxIjNjE0OC5jOTExM2FjNDNkOGMzMzIzNGRkNi5idW5kbGUuanMY7U8STgokAVUSIHX7MNdbXS4H6YLRheKnXxsgXKVSqUoDzDGeBsoKdaawEiM2MjIwLjVhNjc1NGY4ZTMwODg2NmE2MTkyLmJ1bmRsZS5qcxj3XhJOCiQBVRIgep18hd8BqCzV5hN/L/sd6tPO6J9WQdh/4FuPEal6lZMSIzYyNDAuN2MwNGIyYTJkZWQzZGVkMTRiZjcuYnVuZGxlLmpzGJIIEk4KJAFVEiDFimyDAvinmdAvfd3nnsYf/g5Cz0rqXcOqY3cy+cWqdBIjNjMxNC5hMGVlNDUyZGZhZDRiZWQxYTg5NC5idW5kbGUuanMY5RUSTwokAVUSIC/GhtMnyCLoLOvgVrrW7pkR/tlm61WDagDDOYnt2mXJEiM2NDIwLjJmNzkwYzI3YWY2YTc0ZGExMWQ5LmJ1bmRsZS5qcxjCuAESTgokAVUSIH+dkUE4JzRLwsfhfYqsl83+1Mt+vmXD4dFkldKETPKiEiM2NDUxLmJmNzk3OTMzZGNkNTY3YTkyMTY2LmJ1bmRsZS5qcxjwCxJOCiQBVRIgxrKfN4i/zD5VFvpBOvwCJWmymJq0EbnGUQaPgVRosH4SIzY2NzIuOWE5YTlhZWIxYWNhMjFkZDJiNjQuYnVuZGxlLmpzGLZhEk4KJAFVEiDb9ipExdrdwiJG7NWe38tXwjz/oKO2U9rOfS45k4ks8xIjNjcxMC42OGVlODJkYjViN2FhZTkzYmViYi5idW5kbGUuanMYvQoSTgokAVUSIABUKTytg8dsfWn5L4MxdrjhpTaU4IwyIACGHnuNEiQREiM2OTM5Ljc4ODM4YWE3NTk5ZjBiMTU1NmQzLmJ1bmRsZS5qcxjSLhJPCiQBVRIgHEgrlL8j5row5kDvfUDNAN6pDTkRZiMBxLZbp7z75hkSIzcxMTYuOWI1MWQ5OWMyZDIxZGRmZTM4YTYuYnVuZGxlLmpzGMCcARJOCiQBVRIgJr8GgyM+ZGKeKWRP/TS8fmteDCkYt7z80QSA/D7AdgQSIzcxODMuMDlhODljOWFkNzYyMWY2MzJlYWUuYnVuZGxlLmpzGKgUEk8KJAFVEiC39Sb8nYDR5Cc9oeFZdylbxY+Y2TYKH+4nP/EFcD798RIjNzE5Ny44OTdiMGMzNjIwZDgwMmU4OGUwNi5idW5kbGUuanMY4a4GEk8KJAFVEiA92SWN+B23C9VTJh7/Vync1PKZnQeVNi/v0QvrM9XO9BIjNzM5NC45NTk3MWNmMGU2MDBmY2FlNGNjNy5idW5kbGUuanMYkcgHEk4KJAFVEiDnVJCwK04C3FPcArE6cdjwhLdIRcZAHQvDcIOoQeauyxIjNzQwOC44OWFlYjBiMWM0Njc2OTliNDE3My5idW5kbGUuanMYkRwSTwokAVUSIErtFClYTQKmrw7e9sh29YxHUCYtYciLURB1rV2mDuaSEiM3ODY2LmMxMGJjNWY3M2NjZmM2MGI0ZGU5LmJ1bmRsZS5qcxjLtwcSTgokAVUSIB3RwSLbQPVRcKkKaiydhuyF/hBCj/slqVGKKrD/59qqEiM4MDg4LjRlNzM1MWRjNjUxMzEyYjk5N2RmLmJ1bmRsZS5qcxjCBhJOCiQBVRIgDU+NZhoAwEQdnX1rlGePZoFlvzUYRZjM/jZlLJOjJxkSIzgxMDEuNWQ3NjZmMTMwMjBkOThhMTJhZWMuYnVuZGxlLmpzGO0EEk4KJAFVEiD44xikpPTjAuIOu0i+QvoK2Jrp45iPwwtzb+rbRBhLaRIjODM3MC4wMGI0MzdlMWY4MjQwMGM2YjU5Ny5idW5kbGUuanMY2CoSTwokAVUSIHkgKX/l4vpgbnz+YPqSKiBXRfR0lE3s9D3ie2hUAxcLEiM4NDcxLmZiZTVlNDAyYjEyMzNiYjEzNjAyLmJ1bmRsZS5qcxjynQ0STwokAXASIM3tpoVb6f8SNyl4/R6Wfz5rhgAoGZS9yjQJ7VfHRMkTEiM4ODM3LmI3NWVhNDY1MjViZThmMzMzYWNhLmJ1bmRsZS5qcxighzgSTgokAVUSIOfZvztF1x59maUg92xQFXUy225KtKmPUA1f5RpgLAfqEiM4OTc2LjBhMzdhNDViMTI2OTViYTc4NjE1LmJ1bmRsZS5qcxilBRJOCiQBVRIgnIKOph7OwUBHbqE0CCkdC8LpLhPnV6ZBBnljgK1e948SIzkxMzIuOWJjMmUyNzc0MjUyN2I1YTBiMzAuYnVuZGxlLmpzGPgOEk4KJAFVEiBUzsCtBvwsHKZhDlr1mksWzLc+pUANE3gxF2NSxZoI6xIjOTMyMy5mNjIxMjllOTg1MWI5ODJjNTg5NS5idW5kbGUuanMYsjYSTgokAVUSIJDg1uonoF9LfuakGhJGZsI/hgtx9zNpWSOxkAOB5C0xEiM5NDY5LjhlZWIyYWU3YjljNDdmMjBkZGVkLmJ1bmRsZS5qcxiHARJOCiQBVRIgb9Qppm9ovS7OpcuZgNNThIxitINbLg6rw5KqF3N47R4SIzk0OTUuMTAxYWNkYTczYWE4N2UwODM1NWQuYnVuZGxlLmpzGOISEk4KJAFVEiDHDE5baz0j8NxfNQgNvdwbOodQV6MHqmM6cXgwRGeGzBIjOTUyMi5iNDk0OGViNjI4MDFmZTZmMWU4Yy5idW5kbGUuanMY/wYSTgokAVUSIHkyK9dsQsi3NcaBm2OGKbBojefCAhfzV0mip1VZzbzTEiM5NTkyLjFjNDM5ZTE1ZjNiNDRkODk5ZWFjLmJ1bmRsZS5qcxjaOhJOCiQBVRIgn7cjU6QOCtVX7jOTKLewGqIdYjegwgBpgwAF+E2Lp7ASIzk4MjUuMTg5NjIyYWMzZjY4YmQ3ZmUzNDYuYnVuZGxlLmpzGJ8XEk4KJAFVEiC0BqYnOa/u9FXywxuJaqsDqdI5ETQAxOu7/Bcld6ipxRIjOTgzMy4xZmM5Y2JhNjNkMDE1MWJmZTJmNy5idW5kbGUuanMY6RkSTgokAVUSIAesapWd2/W02zoI634oIQOml+pB3+FLPdd8FcS+i44qEiM5OTUzLjNiODA1MzY3NWJmMzdlYmFlMTc4LmJ1bmRsZS5qcxicBxI+CiQBVRIgZ26gyUt+eIVLvEVSKDQlla2XzfKNGwH5O8gQvQXS3GsSE2Fzc2V0LW1hbmlmZXN0Lmpzb24Y7CsSNgokAVUSIJEM5LDTtYv+tVCY/kiOrnHwPViO8TXqyp9qUUhrorDrEgppbmRleC5odG1sGO2GARJQCiQBcBIg9O4cIR3DfBpe/MRWHCacwVjWA1PM9VESvdsboadevYESI21haW4uYWE5ZTNjMzg5NzdlMjM3NWExMTkuYnVuZGxlLmpzGKfLzQISUQokAVUSIC4UJK73L1PecW85gz1HAj0p8q3EdBc6gJ9UlC212K9WEiZydW50aW1lLjE2ZGZmMzgzNTA0ODc4NDEyMjM1LmJ1bmRsZS5qcxjiLxI9CiQBVRIgk9WVMFbwJFEccN4TLZTMxDOzSWebAZkBCMvAjQa3BS4SEndlYmNvbXBvbmVudGFwcC5qcxiQDQoCCAE= |
| 1 | { |
| 2 | "ActionError": { |
| 3 | "kind": { |
| 4 | "FunctionCallError": { |
| 5 | "CompilationError": { |
| 6 | "CodeDoesNotExist": { |
| 7 | "accountId": "devs.near" |
| 8 | } |
| 9 | } |
| 10 | } |
| 11 | }, |
| 12 | "index": 0 |
| 13 | } |
| 14 | } |
| 1 | |
| 1 | { |
| 2 | "deposit": "25018642780489865099378" |
| 3 | } |
| 1 | |
| 1 | |