return ( <iframe style={{ width: "100%", height: "600px" }} src="data:text/html;base64,PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4yLjMvZGlzdC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgaW50ZWdyaXR5PSJzaGEzODQtcmJzQTJWQktRaGdnd3p4SDdwUENhQXFPNDZNZ25PTTgwelcxUld1SDYxREdMd1pKRWRLMkthZHEyRjlDVUc2NSIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYm9vdHN0cmFwLWljb25zQDEuOC4xL2ZvbnQvYm9vdHN0cmFwLWljb25zLmNzcyI+CjwvaGVhZD4KPGJvZHk+CiAgICA8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWV4cGFuZC1tZCBuYXZiYXItZGFyayBiZy1kYXJrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgICAgICA8YSBjbGFzcz0ibmF2YmFyLWJyYW5kIG5hdi1saW5rIiBocmVmPSIvIj5ORUFSIGFjY291bnQgcmVwb3J0PC9hPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJuYXZiYXItdG9nZ2xlciIgdHlwZT0iYnV0dG9uIiBkYXRhLWJzLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtYnMtdGFyZ2V0PSIjbmF2YmFyTmF2QWx0TWFya3VwIiBhcmlhLWNvbnRyb2xzPSJuYXZiYXJOYXZBbHRNYXJrdXAiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibmF2YmFyLXRvZ2dsZXItaWNvbiI+PC9zcGFuPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIiBpZD0ibmF2YmFyTmF2QWx0TWFya3VwIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmJhci1uYXYiPiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9Im5hdi1pdGVtIG5hdi1saW5rIiBocmVmPSIveWVhci1yZXBvcnQiIGRhdGEtcGFnZT0ieWVhci1yZXBvcnQiPlllYXIgcmVwb3J0PC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJuYXYtaXRlbSBuYXYtbGluayIgaHJlZj0iL3RyYW5zYWN0aW9ucyIgZGF0YS1wYWdlPSJ0cmFuc2FjdGlvbnMiPlRyYW5zYWN0aW9uczwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ibmF2LWl0ZW0gbmF2LWxpbmsiIGhyZWY9Ii9zdGFraW5nIiBkYXRhLXBhZ2U9InN0YWtpbmciPlN0YWtpbmcgcmV3YXJkczwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ibmF2LWl0ZW0gbmF2LWxpbmsiIGhyZWY9Ii9hY2NvdW50cyIgZGF0YS1wYWdlPSJhY2NvdW50cyI+QWNjb3VudHM8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9Im5hdi1pdGVtIG5hdi1saW5rIiBocmVmPSIvc3RvcmFnZSIgZGF0YS1wYWdlPSJzdG9yYWdlIj5TdG9yYWdlPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9uYXY+CiAgICA8YnI+CiAgICA8YXBwLW5lYXItbnVtYmVycz48L2FwcC1uZWFyLW51bWJlcnM+CgoKPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQHBvcHBlcmpzL2NvcmVAMi4xMS42L2Rpc3QvdW1kL3BvcHBlci5taW4uanMiIGludGVncml0eT0ic2hhMzg0LW9CcURWbU16OUFUS3hJZXA5dGlDeFMvWjlmTmZFWGlEQVlUdWpNQWVCQXNqRnVDWlNtS2JTU1VuUWxtaC9qcDMiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4yLjMvZGlzdC9qcy9ib290c3RyYXAubWluLmpzIiBpbnRlZ3JpdHk9InNoYTM4NC1jdVllU3hudG9uejBQUE5sSGhCczY4dXlJQVZwSUlPWlo1SnFlcXZZWUljRUw3Mjdrc2tDNjZrRjkydDZYbDJWIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJtb2R1bGUiPmltcG9ydCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL25lYXItYXBpLWpzQDAuNDQuMi9kaXN0L25lYXItYXBpLWpzLm1pbi5qcyI7bGV0IHQ7ZnVuY3Rpb24gZShlLG4pe251bGwhPT1lPyh0fHwodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwcm9ncmVzcy1iYXIiKSxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodCkpLHQuc2V0VmFsdWUoZSxuKSk6dCYmKHQucmVtb3ZlKCksdD1udWxsKX1jdXN0b21FbGVtZW50cy5kZWZpbmUoInByb2dyZXNzLWJhciIsY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5zaGFkb3dSb290LmlubmVySFRNTD0nXG48c3R5bGUgdHlwZT0idGV4dC9jc3MiPlxuOmhvc3Qge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6MDtcblx0Ym90dG9tOiAwO1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogMDtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAwLCAxMDAsIDEwMCwgMC41KTtcbn1cblxuLnByb2dyZXNzLWJvcmRlciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDowO1xuXHRib3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuICBcdFxuICAgIG1hcmdpbjogYXV0bztcblxuICAgIGJvcmRlcjogZ3JlZW4gc29saWQgMXB4O1xuICAgIGhlaWdodDogNTBweDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLnByb2dyZXNzLXRleHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBmb250LXNpemU6IDIycHg7XG59XG5cbi5wcm9ncmVzcy1maWxsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMjU1LDAsIDAuNyk7XG4gICAgaGVpZ2h0OiA1MHB4OyAgICBcbiAgICBhbmltYXRpb24tbmFtZTogaW5kZXRlcm1pbmF0ZTtcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xuICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBpbmRldGVybWluYXRlIHtcbiAgICAwJSB7IG1hcmdpbi1sZWZ0OiAwJTsgd2lkdGg6IDEwJTt9XG4gICAgMjUlIHsgd2lkdGg6IDIwJTsgfVxuICAgIDUwJSB7IG1hcmdpbi1sZWZ0OiA5MCU7IHdpZHRoOiAxMCU7IH1cbiAgICA3NSUgeyB3aWR0aDogMjAlOyB9XG4gICAgMTAwJSB7IG1hcmdpbi1sZWZ0OiAwJTsgd2lkdGg6IDEwJTsgfVxufVxuPC9zdHlsZT5cbjxkaXYgaWQ9Im1haW4tcHJvZ3Jlc3MtYmFyIiBjbGFzcz0icHJvZ3Jlc3MtYm9yZGVyIj5cbjxkaXYgY2xhc3M9InByb2dyZXNzLXRleHQiPjUwJTwvZGl2PlxuPGRpdiBjbGFzcz0icHJvZ3Jlc3MtZmlsbCIgc3R5bGU9IndpZHRoOjIwJSI+PC9kaXY+XG48L2Rpdj5cbid9c2V0VmFsdWUodCxlKXsiaW5kZXRlcm1pbmF0ZSI9PXQ/KHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIucHJvZ3Jlc3MtdGV4dCIpLmlubmVySFRNTD1gPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTBweCI+JHtlfTwvZGl2PmAsdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5wcm9ncmVzcy1maWxsIikuc3R5bGUud2lkdGg9IjEwJSIsdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5wcm9ncmVzcy1maWxsIikuc3R5bGUuYW5pbWF0aW9uTmFtZT0iaW5kZXRlcm1pbmF0ZSIpOih0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnByb2dyZXNzLWZpbGwiKS5zdHlsZS5hbmltYXRpb25OYW1lPSJub25lIix0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnByb2dyZXNzLXRleHQiKS5pbm5lckhUTUw9YCR7KDEwMCp0KS50b0ZpeGVkKDApfSUke2U/YDxiciAvPiR7ZX1gOiIifWAsdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5wcm9ncmVzcy1maWxsIikuc3R5bGUud2lkdGg9YCR7KDEwMCp0KS50b0ZpeGVkKDIpfSVgKX19KTtjb25zdCBuPW5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbKCgpPT57Y29uc3QgdD1mdW5jdGlvbigpe2xldCB0LGUsbj0hMTtjb25zdCBhPSJuZWFyZWFybmluZ3NkYXRhIjtsZXQgbz0iQU5PTllNT1VTIjtYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUuX29wZW49WE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW4sWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24odCxlLG4sYSxpKXt0aGlzLl9vcGVuKHQsZSxuLGEsaSksdGhpcy5zZXRSZXF1ZXN0SGVhZGVyKCJBdXRob3JpemF0aW9uIixgQmVhcmVyICR7b31gKX0sc2VsZi5Nb2R1bGU9e2xvY2F0ZUZpbGU6ZnVuY3Rpb24odCl7cmV0dXJuImh0dHBzOi8vdW5wa2cuY29tL3dhc20tZ2l0QDAuMC4xMC8iK3R9LHByaW50OmZ1bmN0aW9uKGUpe24mJih0Kz1lKyJcbiIpLHBvc3RNZXNzYWdlKHtwcm9ncmVzczplfSksY29uc29sZS5sb2coZSl9LHByaW50RXJyOmZ1bmN0aW9uKHQpe24mJihlKz10KyJcbiIpLGNvbnNvbGUuZXJyb3IodCl9fSxpbXBvcnRTY3JpcHRzKCJodHRwczovL3VucGtnLmNvbS93YXNtLWdpdEAwLjAuMTAvbGcyLmpzIik7Y29uc3QgaT1uZXcgUHJvbWlzZSgodD0+e01vZHVsZS5vblJ1bnRpbWVJbml0aWFsaXplZD0oKT0+e0ZTLm1rZGlyKCIvbmVhcmVhcm5pbmdzZGF0YSIpLEZTLm1vdW50KCJudWxsIj09c2VsZi5vcmlnaW4/TUVNRlM6SURCRlMse30sIi9uZWFyZWFybmluZ3NkYXRhIiksRlMuY2hkaXIoIi9uZWFyZWFybmluZ3NkYXRhIiksRlMuc3luY2ZzKCEwLCgoKT0+e3QoTW9kdWxlKX0pKX19KSk7YXN5bmMgZnVuY3Rpb24gcygpe2F3YWl0IG5ldyBQcm9taXNlKCh0PT5GUy5zeW5jZnMoITEsdCkpKX1zZWxmLm9ubWVzc2FnZT1hc3luYyBjPT57YXdhaXQgaTt0cnl7bGV0IGk7ZT0iIix0PSIiO2NvbnN0IHI9Yy5kYXRhO3N3aXRjaChyLmNvbW1hbmQpe2Nhc2UiY29uZmlndXJldXNlciI6bz1yLmFjY2Vzc1Rva2VuLGNhbGxNYWluKFsiY29uZmlnIiwidXNlci5uYW1lIixyLnVzZXJuYW1lXSksY2FsbE1haW4oWyJjb25maWciLCJ1c2VyLmVtYWlsIixyLnVzZXJlbWFpbF0pLGk9e2FjY2Vzc1Rva2VuQ29uZmlndXJlZDohMH07YnJlYWs7Y2FzZSJ3cml0ZUZpbGUiOkZTLndyaXRlRmlsZShyLmZpbGVuYW1lLHIuY29udGVudCksYXdhaXQgcygpO2JyZWFrO2Nhc2UicmVhZFRleHRGaWxlIjppPUZTLnJlYWRGaWxlKHIuZmlsZW5hbWUse2VuY29kaW5nOiJ1dGY4In0pO2JyZWFrO2Nhc2UiZXhpc3RzIjppPUZTLmFuYWx5emVQYXRoKHIucGF0aCkuZXhpc3RzO2JyZWFrO2Nhc2UibWtkaXIiOkZTLm1rZGlyKHIucGF0aCk7YnJlYWs7Y2FzZSJyZWFkZGlyIjppPUZTLnJlYWRkaXIoci5wYXRoKTticmVhaztjYXNlImdpdCI6bj0hMCxjYWxsTWFpbihyKSxuPSExLFsiaW5pdCIsImNvbW1pdCIsImFkZCIsInJldmVydCIsInB1bGwiLCJmZXRjaCIsIm1lcmdlIiwiY2xvbmUiXS5pbmRleE9mKHJbMF0pPi0xJiZhd2FpdCBzKCksaT17c3Rkb3V0OnQsc3RkZXJyOmV9O2JyZWFrO2Nhc2UiZ2V0cmVtb3RlIjpuPSEwLGNhbGxNYWluKFsicmVtb3RlIiwic2hvdyIsIi12Il0pLG49ITEsaT10O2JyZWFrO2Nhc2Uic2V0cmVtb3RlIjpjYWxsTWFpbihbInJlbW90ZSIsInJlbW92ZSIsIm9yaWdpbiJdKSxjYWxsTWFpbihbInJlbW90ZSIsImFkZCIsIm9yaWdpbiIsci5yZW1vdGV1cmxdKSxhd2FpdCBzKCk7YnJlYWs7Y2FzZSJzeW5jIjppZihuPSEwLGNhbGxNYWluKFsiZmV0Y2giLCJvcmlnaW4iXSksY2FsbE1haW4oWyJtZXJnZSIsIm9yaWdpbi9tYXN0ZXIiXSksY2FsbE1haW4oWyJwdXNoIl0pLG49ITEsZSl0aHJvdyBlO2k9dCxhd2FpdCBzKCk7YnJlYWs7Y2FzZSJkZWxldGVsb2NhbCI6RlMudW5tb3VudCgiL25lYXJlYXJuaW5nc2RhdGEiKSxjb25zb2xlLmxvZygiZGVsZXRpbmcgZGF0YWJhc2UiLGEpLHNlbGYuaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCIvbmVhcmVhcm5pbmdzZGF0YSIpLGk9e2RlbGV0ZWQ6YX07YnJlYWs7Y2FzZSJjb21taXRhbGwiOm49ITAsY2FsbE1haW4oWyJzdGF0dXMiXSksbj0hMTtjb25zdCBjPXQuc3BsaXQoIlxuIik7Yy5maWx0ZXIoKHQ9PjA9PXQuaW5kZXhPZigiI1x0bW9kaWZpZWQ6IikpKS5tYXAoKHQ9PnQuc3Vic3RyKCIjXHRtb2RpZmllZDoiLmxlbmd0aCkudHJpbSgpKSkuZm9yRWFjaCgodD0+Y2FsbE1haW4oWyJhZGQiLHRdKSkpO2NvbnN0IGw9Yy5pbmRleE9mKCIjIFVudHJhY2tlZCBmaWxlczoiKTtpZihsPi0xKXtsZXQgdD1jLnNsaWNlKGwrMykubWFwKCh0PT50LnN1YnN0cigiI1x0Ii5sZW5ndGgpKSk7dD10LnNsaWNlKDAsdC5sZW5ndGgtMSksdC5sZW5ndGg+MCYmdC5mb3JFYWNoKCh0PT5jYWxsTWFpbihbImFkZCIsdF0pKSl9bj0hMCxjYWxsTWFpbihbInN0YXR1cyJdKSxuPSExLHQuaW5kZXhPZigiQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6Iik+LTE/KGNhbGxNYWluKFsiY29tbWl0IiwiLW0iLCJhZGQgYWxsIHVudHJhY2tlZCBkYXRhIGZpbGVzIl0pLGF3YWl0IHMoKSk6Y29uc29sZS5sb2coIm5vdGhpbmcgdG8gY29tbWl0Iil9cG9zdE1lc3NhZ2Uoe3Jlc3VsdDppfSl9Y2F0Y2godCl7cG9zdE1lc3NhZ2Uoe2Vycm9yOnQudG9TdHJpbmcoKX0pfX19LnRvU3RyaW5nKCk7cmV0dXJuIHQuc3Vic3RyaW5nKHQuaW5kZXhPZigieyIpKzEsdC5sYXN0SW5kZXhPZigifSIpKX0pKCldLHt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQifSkpKTtsZXQgYTtjb25zdCBvPWFzeW5jKG8saSk9Pntmb3IoO2E7KWF3YWl0IGE7cmV0dXJuIGE9bmV3IFByb21pc2UoKChzLGMpPT57Y29uc3Qgcj0hIXQ7bi5vbm1lc3NhZ2U9dD0+e2E9bnVsbCx0LmRhdGEuZXJyb3I/Yyh0LmRhdGEuZXJyb3IpOnQuZGF0YS5wcm9ncmVzcz9lKCJpbmRldGVybWluYXRlIix0LmRhdGEucHJvZ3Jlc3MpOihyfHxlKG51bGwpLHModC5kYXRhKSl9LG4ucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihpLHtjb21tYW5kOm99KSl9KSksYX07YXN5bmMgZnVuY3Rpb24gaSh0LGUpe3JldHVybiBhd2FpdCBvKCJ3cml0ZUZpbGUiLHtmaWxlbmFtZTp0LGNvbnRlbnQ6ZX0pfWFzeW5jIGZ1bmN0aW9uIHModCl7cmV0dXJuKGF3YWl0IG8oInJlYWRUZXh0RmlsZSIse2ZpbGVuYW1lOnR9KSkucmVzdWx0fWFzeW5jIGZ1bmN0aW9uIGModCl7cmV0dXJuKGF3YWl0IG8oImV4aXN0cyIse3BhdGg6dH0pKS5yZXN1bHR9YXN5bmMgZnVuY3Rpb24gcih0KXthd2FpdCBvKCJta2RpciIse3BhdGg6dH0pfWFzeW5jIGZ1bmN0aW9uIGwodCxuPTEwLGE9M2U0KXtsZXQgbztmb3IobGV0IGk9MDtpPG47aSsrKXRyeXtyZXR1cm4gYXdhaXQgdCgpfWNhdGNoKHQpe289dCxjb25zb2xlLmVycm9yKCJlcnJvciIsdCwicmV0cnlpbmcgaW4gIixhLCJtaWxsaXNlY29uZHMiKSxlKCJpbmRldGVybWluYXRlIixgZXJyb3IgJHt0fSByZXRyeWluZyBpbiAkeyhhLzFlMykudG9GaXhlZCgwKX0gc2Vjb25kc2ApLGF3YWl0IG5ldyBQcm9taXNlKCh0PT5zZXRUaW1lb3V0KHQsYSkpKX10aHJvdyBlKG51bGwpLGNvbnNvbGUuZXJyb3IoIm1heCByZXRyaWVzIHJlYWNoZWQiKSxvfWFzeW5jIGZ1bmN0aW9uIGQodCxlPTEwMCxuPTFlNioobmV3IERhdGUpLmdldFRpbWUoKSl7cmV0dXJuIGF3YWl0IGZldGNoKGBodHRwczovL2FwaS5raXR3YWxsZXQuYXBwL2FjY291bnQvJHt0fS9hY3Rpdml0eT9vZmZzZXQ9JHtufSZsaW1pdD0ke2V9YCkudGhlbigodD0+dC5qc29uKCkpKX1hc3luYyBmdW5jdGlvbiBoKHQsZSl7Y29uc3Qgbj0oYXdhaXQgYXN5bmMgZnVuY3Rpb24odCxlKXtyZXR1cm4oYXdhaXQgZmV0Y2goIiBodHRwczovL2FyY2hpdmFsLXJwYy5tYWlubmV0Lm5lYXIub3JnIix7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiY29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe2pzb25ycGM6IjIuMCIsaWQ6ImRvbnRjYXJlIixtZXRob2Q6InR4IixwYXJhbXM6W3QsZV19KX0pLnRoZW4oKHQ9PnQuanNvbigpKSkpLnJlc3VsdH0oZSx0KSkucmVjZWlwdHNfb3V0Y29tZS5tYXAoKHQ9PnQuYmxvY2tfaGFzaCkpLGE9YXdhaXQgUHJvbWlzZS5hbGwobi5tYXAoKGU9PmFzeW5jIGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGF3YWl0IGZldGNoKCIgaHR0cHM6Ly9hcmNoaXZhbC1ycGMubWFpbm5ldC5uZWFyLm9yZyIse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7ImNvbnRlbnQtdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxib2R5OkpTT04uc3RyaW5naWZ5KHtqc29ucnBjOiIyLjAiLGlkOiJkb250Y2FyZSIsbWV0aG9kOiJxdWVyeSIscGFyYW1zOntyZXF1ZXN0X3R5cGU6InZpZXdfYWNjb3VudCIsYWNjb3VudF9pZDplLGJsb2NrX2lkOiJmaW5hbCI9PT10P3ZvaWQgMDp0LGZpbmFsaXR5OiJmaW5hbCI9PT10P3Q6dm9pZCAwfX0pfSkudGhlbigodD0+dC5qc29uKCkpKSkucmVzdWx0fShlLHQpKSkpO3JldHVybiBhLnNvcnQoKCh0LGUpPT5lLmJsb2NrX2hlaWdodC10LmJsb2NrX2hlaWdodCkpLGFbMF0uYW1vdW50fWFzeW5jIGZ1bmN0aW9uIHUoKXtyZXR1cm4gSlNPTi5wYXJzZShhd2FpdCBzKCJhY2NvdW50cy5qc29uIikpfWFzeW5jIGZ1bmN0aW9uIHAodCl7Y29uc3QgZT1gYWNjb3VudGRhdGEvJHt0fS90cmFuc2FjdGlvbnMuanNvbmA7cmV0dXJuIGF3YWl0IGMoZSk/SlNPTi5wYXJzZShhd2FpdCBzKGUpKTpbXX1hc3luYyBmdW5jdGlvbiBtKHQpe2F3YWl0IGMoImFjY291bnRkYXRhIil8fGF3YWl0IHIoImFjY291bnRkYXRhIik7Y29uc3QgZT1gYWNjb3VudGRhdGEvJHt0fWA7YXdhaXQgYyhlKXx8YXdhaXQgcihlKX1hc3luYyBmdW5jdGlvbiB3KHQsbj0xZTYqKG5ldyBEYXRlKS5nZXRUaW1lKCkpe2xldCBhPWF3YWl0IHAodCk7cmV0dXJuIGE9YXdhaXQgYXN5bmMgZnVuY3Rpb24odCxuLGE9W10sbz0xMDApe2xldCBpPWF3YWl0IGQodCxvLG4pLHM9MDtmb3IoOzspe2xldCBjPTA7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspe2NvbnN0IHI9aVtvXTthLmZpbmQoKHQ9PnQuaGFzaD09ci5oYXNoJiZ0LmFjdGlvbl9pbmRleD09ci5hY3Rpb25faW5kZXgmJnIuYmxvY2tfaGFzaD09dC5ibG9ja19oYXNoJiZ0LmFjdGlvbl9raW5kPT1yLmFjdGlvbl9raW5kJiZ0LnNpZ25lcl9pZD09ci5zaWduZXJfaWQpKXx8KHIuYmFsYW5jZT1hd2FpdCBsKCgoKT0+aCh0LHIuaGFzaCkpKSxyLmFyZ3MmJmRlbGV0ZSByLmFyZ3MuYXJnc19iYXNlNjQsYS5zcGxpY2UocysrLDAsciksbj1wYXJzZUludChyLmJsb2NrX3RpbWVzdGFtcCkrMSxjKyspLGUoby9pLmxlbmd0aCxgJHt0fSAke25ldyBEYXRlKHIuYmxvY2tfdGltZXN0YW1wLzFlNikudG9EYXRlU3RyaW5nKCl9YCl9aWYoMD09YylicmVhaztpPWF3YWl0IGQodCxvLG4pfXJldHVybiBhfSh0LG4sYSksYXdhaXQgYXN5bmMgZnVuY3Rpb24odCxlKXthd2FpdCBtKHQpLGF3YWl0IGkoYGFjY291bnRkYXRhLyR7dH0vdHJhbnNhY3Rpb25zLmpzb25gLEpTT04uc3RyaW5naWZ5KGUsbnVsbCwxKSl9KHQsYSksYX1mdW5jdGlvbiBnKHQpe3JldHVybmBhY2NvdW50ZGF0YS8ke3R9L3N0YWtpbmdwb29sc2B9ZnVuY3Rpb24geSh0LGUpe3JldHVybmAke2codCl9LyR7ZX0uanNvbmB9YXN5bmMgZnVuY3Rpb24gYih0LGUpe2NvbnN0IG49eSh0LGUpO3JldHVybiBhd2FpdCBjKG4pP0pTT04ucGFyc2UoYXdhaXQgcyhuKSk6W119YXN5bmMgZnVuY3Rpb24gZih0LG4pe2NvbnN0IGE9YXdhaXQgYih0LG4pLG89YXdhaXQgYXN5bmMgZnVuY3Rpb24odCxuLGEsbz0iZmluYWwiKXtsZXQgaT1hd2FpdCB2KG8pO2NvbnN0IHM9KGF3YWl0IHAobikpLmZpbHRlcigoZT0+KGUucmVjZWl2ZXJfaWQ9PT10fHxlLnNpZ25lcl9pZD09PXQpJiZlLmJsb2NrX3RpbWVzdGFtcDxpLmhlYWRlci50aW1lc3RhbXApKSxjPXNbcy5sZW5ndGgtMV0scj1wYXJzZUludChjLmJsb2NrX3RpbWVzdGFtcCksZD1pLmhlYWRlci50aW1lc3RhbXA7bGV0IGg9YXdhaXQgayh0LG4saS5oZWFkZXIuaGVpZ2h0KTswPT1oJiYoaT1hd2FpdCB2KHNbMF0uYmxvY2tfaGFzaCksaD1hd2FpdCBrKHQsbixpLmhlYWRlci5oZWlnaHQpKTtsZXQgdT1hLmxlbmd0aD4wP2FbMF0uZXBvY2hfaWQ6bnVsbCxtPTA7Zm9yKDtlKDEtKGkuaGVhZGVyLnRpbWVzdGFtcC1yKS8oZC1yKSxgJHtufSAvICR7dH0gJHtuZXcgRGF0ZShpLmhlYWRlci50aW1lc3RhbXAvMWU2KS50b0RhdGVTdHJpbmcoKX1gKSwhKGkuaGVhZGVyLmVwb2NoX2lkPT11fHxpLmhlYWRlci50aW1lc3RhbXA8cik7KXtjb25zdCBlPWF3YWl0IGwoKCgpPT5rKHQsbixpLmhlYWRlci5uZXh0X2Vwb2NoX2lkKSkpLG89e3RpbWVzdGFtcDpuZXcgRGF0ZShpLmhlYWRlci50aW1lc3RhbXAvMWU2KSxiYWxhbmNlOmgsYmxvY2tfaGVpZ2h0OmkuaGVhZGVyLmhlaWdodCxlcG9jaF9pZDppLmhlYWRlci5lcG9jaF9pZCxuZXh0X2Vwb2NoX2lkOmkuaGVhZGVyLm5leHRfZXBvY2hfaWQsZGVwb3NpdDowLHdpdGhkcmF3YWw6MH07YS5zcGxpY2UobSsrLDAsbyksaD1lLGk9YXdhaXQgbCgoKCk9PnYoaS5oZWFkZXIubmV4dF9lcG9jaF9pZCkpKX1mb3IobGV0IGUgb2YgcylpZighYS5maW5kKCh0PT50Lmhhc2g9PT1lLmhhc2gpKSl7aT1hd2FpdCBsKCgoKT0+dihlLmJsb2NrX2hhc2gpKSk7Y29uc3Qgbz1hd2FpdCBsKCgoKT0+ayh0LG4sZS5ibG9ja19oYXNoKSkpO2EucHVzaCh7dGltZXN0YW1wOm5ldyBEYXRlKGUuYmxvY2tfdGltZXN0YW1wLzFlNiksYmFsYW5jZTpvLGhhc2g6ZS5oYXNoLGJsb2NrX2hlaWdodDppLmhlYWRlci5oZWlnaHQsZXBvY2hfaWQ6aS5oZWFkZXIuZXBvY2hfaWQsbmV4dF9lcG9jaF9pZDppLmhlYWRlci5uZXh0X2Vwb2NoX2lkLGRlcG9zaXQ6ZS5zaWduZXJfaWQ9PW4/cGFyc2VJbnQoZS5hcmdzLmRlcG9zaXQpOjAsd2l0aGRyYXdhbDplLnNpZ25lcl9pZD09dD9wYXJzZUludChlLmFyZ3MuZGVwb3NpdCk6MH0pfWEuc29ydCgoKHQsZSk9PmUuYmxvY2tfaGVpZ2h0LXQuYmxvY2tfaGVpZ2h0KSk7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aC0xO3QrKyl7Y29uc3QgZT1hW3RdO2UuZGVwb3NpdHx8KGUuZGVwb3NpdD0wKSxlLndpdGhkcmF3YWx8fChlLndpdGhkcmF3YWw9MCksZS5lYXJuaW5ncz1lLmJhbGFuY2UtYVt0KzFdLmJhbGFuY2UtZS5kZXBvc2l0K2Uud2l0aGRyYXdhbH1yZXR1cm4gYVthLmxlbmd0aC0xXS5lYXJuaW5ncz0wLGF9KG4sdCxhKTthd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsbil7YXdhaXQgbSh0KTtjb25zdCBhPWcodCk7YXdhaXQgYyhhKXx8YXdhaXQgcihhKTtjb25zdCBvPXkodCxlKTthd2FpdCBpKG8sSlNPTi5zdHJpbmdpZnkobixudWxsLDEpKX0odCxuLG8pfWFzeW5jIGZ1bmN0aW9uIHYodCl7cmV0dXJuKGF3YWl0IGZldGNoKCJodHRwczovL2FyY2hpdmFsLXJwYy5tYWlubmV0Lm5lYXIub3JnIix7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiY29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe2pzb25ycGM6IjIuMCIsaWQ6ImRvbnRjYXJlIixtZXRob2Q6ImJsb2NrIixwYXJhbXM6e2Jsb2NrX2lkOiJmaW5hbCI9PT10P3ZvaWQgMDp0LGZpbmFsaXR5OiJmaW5hbCI9PT10P3Q6dm9pZCAwfX0pfSkudGhlbigodD0+dC5qc29uKCkpKSkucmVzdWx0fWFzeW5jIGZ1bmN0aW9uIGsodCxlLG4pe3JldHVybiBhd2FpdCBmZXRjaCgiaHR0cHM6Ly9hcmNoaXZhbC1ycGMubWFpbm5ldC5uZWFyLm9yZyIse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7ImNvbnRlbnQtdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxib2R5OkpTT04uc3RyaW5naWZ5KHtqc29ucnBjOiIyLjAiLGlkOiJkb250Y2FyZSIsbWV0aG9kOiJxdWVyeSIscGFyYW1zOntyZXF1ZXN0X3R5cGU6ImNhbGxfZnVuY3Rpb24iLGJsb2NrX2lkOm4sYWNjb3VudF9pZDp0LG1ldGhvZF9uYW1lOiJnZXRfYWNjb3VudF90b3RhbF9iYWxhbmNlIixhcmdzX2Jhc2U2NDpidG9hKEpTT04uc3RyaW5naWZ5KHthY2NvdW50X2lkOmV9KSl9fSl9KS50aGVuKCh0PT50Lmpzb24oKSkpLnRoZW4oKHQ9PnBhcnNlSW50KHQucmVzdWx0LnJlc3VsdC5tYXAoKHQ9PlN0cmluZy5mcm9tQ2hhckNvZGUodCkpKS5qb2luKCIiKS5yZXBsYWNlKC9cIi9nLCIiKSkpKX1hc3luYyBmdW5jdGlvbiBTKHQpe2NvbnN0IGU9KGF3YWl0IHAodCkpLmZpbHRlcigodD0+IkZVTkNUSU9OX0NBTEwiPT10LmFjdGlvbl9raW5kJiYiZGVwb3NpdF9hbmRfc3Rha2UiPT10LmFyZ3MubWV0aG9kX25hbWUpKSxuPVtdO3JldHVybiBlLmZvckVhY2goKHQ9PntuLmZpbmQoKGU9PmU9PXQucmVjZWl2ZXJfaWQpKXx8bi5wdXNoKHQucmVjZWl2ZXJfaWQpfSkpLG59ZnVuY3Rpb24gXyh0KXtyZXR1cm5bLi4ubmV3IFNldCh0LmZpbHRlcigodD0+IkZVTkNUSU9OX0NBTEwiPT09dC5hY3Rpb25fa2luZCYmImRlcG9zaXRfYW5kX3N0YWtlIj09PXQuYXJncy5tZXRob2RfbmFtZSkpLm1hcCgodD0+dC5yZWNlaXZlcl9pZCkpKV19YXN5bmMgZnVuY3Rpb24geCh0LGUpe3JldHVybiBhc3luYyBmdW5jdGlvbih0KXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNvbW1vbi1tb2RhbCIpO2Uuc2hhZG93Um9vdC5pbm5lckhUTUw9YDxzdHlsZT5cbiAgICA6aG9zdCB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgdG9wOjA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAgIH1cbiAgICAubW9kYWxkaXYge1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpO1xuICAgICAgICBib3JkZXI6ICM0YTQgc29saWQgNXB4O1xuICAgICAgICBjb2xvcjogIzRhNDtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDgwMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICAgIH1cbiAgICBidXR0b24sIHRleHRhcmVhLCBzZWxlY3Qge1xuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2ZjO1xuICAgICAgICBib3JkZXItY29sb3I6ICM0YTQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICBjb2xvcjojMDUwO1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIFxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIFxuICAgICAgICBtYXJnaW46IDJweDtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgfVxuICAgIHRleHRhcmVhIHtcbiAgICAgICAgd2lkdGg6IDgwJTtcbiAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgIH1cbjwvc3R5bGU+XG48ZGl2IGNsYXNzPSJtb2RhbGRpdiI+XG4gICAgJHt0fVxuPC9kaXY+YCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZSk7Y29uc3Qgbj1hd2FpdCBlLnJlc3VsdFByb21pc2U7cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZChlKSxufShgXG4gICAgPGgzPiR7dH08L2gzPlxuICAgIDxwPiR7ZX08L3A+XG4gICAgPHA+XG4gICAgICAgIDxidXR0b24gb25jbGljaz0iZ2V0Um9vdE5vZGUoKS5yZXN1bHQodHJ1ZSkiPkRpc21pc3M8L2J1dHRvbj5cbiAgICA8L3A+YCl9Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJjb21tb24tbW9kYWwiLGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLHRoaXMucmVzdWx0UHJvbWlzZT1uZXcgUHJvbWlzZSgodD0+dGhpcy5zaGFkb3dSb290LnJlc3VsdD10KSl9fSksY3VzdG9tRWxlbWVudHMuZGVmaW5lKCJhY2NvdW50cy1wYWdlIixjbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiJ9KSx0aGlzLnJlYWR5UHJvbWlzZT10aGlzLmxvYWRIVE1MKCl9YXN5bmMgbG9hZEhUTUwoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290LmlubmVySFRNTD0nPHRlbXBsYXRlIGlkPSJhY2NvdW50Um93VGVtcGxhdGUiPlxuICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj5cbiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJhY2NvdW50bmFtZSBmb3JtLWNvbnRyb2wiPjwvdGQ+XG4gICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGFuZ2VyIHJlbW92ZUFjY291bnRCdXR0b24iPjxpIGNsYXNzPSJiaSBiaS10cmFzaCI+PC9pPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPGRpdiBjbGFzcz0iY2FyZCI+XG4gICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkZXIiPkFjY291bnRzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz0iY2FyZC1ib2R5Ij5cbiAgICAgICAgPGRpdiBpZD0iYWNjb3VudHNUYWJsZSI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz0iY2FyZC1mb290ZXIiPlxuICAgICAgICA8YnV0dG9uIGlkPSJhZGRBY2NvdW50QnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5BZGQgYWNjb3VudDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaWQ9ImxvYWRkYXRhYnV0dG9uIj5sb2FkIGRhdGE8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuJyx0aGlzLmFjY291bnRzVGFibGU9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNhY2NvdW50c1RhYmxlIiksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNhZGRBY2NvdW50QnV0dG9uIikub25jbGljaz1hc3luYygpPT57dGhpcy5hZGRBY2NvdW50Um93KCksYXdhaXQgdGhpcy5zdG9yZUFjY291bnRzKCl9LGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImxpbmsiKS5mb3JFYWNoKCh0PT50aGlzLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQodC5jbG9uZU5vZGUoKSkpKSx0aGlzLnNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImxvYWRkYXRhYnV0dG9uIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChhc3luYygpPT57ZSgwKTt0cnl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5nZXRBY2NvdW50cygpKXtjb25zdCBlPWF3YWl0IHcodCksbj1hd2FpdCBfKGUpO2Zvcihjb25zdCBlIG9mIG4pYXdhaXQgZih0LGUpfWUobnVsbCl9Y2F0Y2godCl7ZShudWxsKSx4KCJFcnJvciBmZXRjaGluZyBkYXRhIix0Lm1lc3NhZ2UpfXRoaXMuZGlzcGF0Y2hDaGFuZ2VFdmVudCgpfSkpLGF3YWl0IGMoImFjY291bnRzLmpzb24iKSYmdGhpcy5zZXRBY2NvdW50cyhhd2FpdCB1KCkpLHRoaXMuc2hhZG93Um9vdH1kaXNwYXRjaENoYW5nZUV2ZW50KCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiY2hhbmdlIikpfWFkZEFjY291bnRSb3codCl7Y29uc3QgZT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI2FjY291bnRSb3dUZW1wbGF0ZSIpO3RoaXMuYWNjb3VudHNUYWJsZS5hcHBlbmRDaGlsZChlLmNvbnRlbnQuY2xvbmVOb2RlKCEwKSk7Y29uc3Qgbj10aGlzLmFjY291bnRzVGFibGUubGFzdEVsZW1lbnRDaGlsZCxhPW4ucXVlcnlTZWxlY3RvcigiLmFjY291bnRuYW1lIik7dCYmKGEudmFsdWU9dCksYS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChhc3luYyB0PT57YXdhaXQgdGhpcy5zdG9yZUFjY291bnRzKCksdGhpcy5kaXNwYXRjaENoYW5nZUV2ZW50KCl9KSksbi5xdWVyeVNlbGVjdG9yKCIucmVtb3ZlQWNjb3VudEJ1dHRvbiIpLm9uY2xpY2s9YXN5bmMoKT0+e24ucmVtb3ZlKCksYXdhaXQgdGhpcy5zdG9yZUFjY291bnRzKCl9fXNldEFjY291bnRzKHQpe3RoaXMuYWNjb3VudHNUYWJsZS5yZXBsYWNlQ2hpbGRyZW4oW10pLHQuZm9yRWFjaCgodD0+dGhpcy5hZGRBY2NvdW50Um93KHQpKSl9Z2V0QWNjb3VudHMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmFjY291bnRzVGFibGUucXVlcnlTZWxlY3RvckFsbCgiLmFjY291bnRuYW1lIikpLm1hcCgodD0+dC52YWx1ZSkpfWFzeW5jIHN0b3JlQWNjb3VudHMoKXthd2FpdCBhc3luYyBmdW5jdGlvbih0KXthd2FpdCBpKCJhY2NvdW50cy5qc29uIixKU09OLnN0cmluZ2lmeSh0KSl9KHRoaXMuZ2V0QWNjb3VudHMoKSl9fSk7Y29uc3QgVD17fTthc3luYyBmdW5jdGlvbiBNKCl7Y29uc3QgdD0oYXdhaXQoYXdhaXQgZmV0Y2goImh0dHBzOi8vYXBpLmNvaW5nZWNrby5jb20vYXBpL3YzL2NvaW5zL25lYXIiKSkuanNvbigpKS5tYXJrZXRfZGF0YS5jdXJyZW50X3ByaWNlO3JldHVybiBPYmplY3Qua2V5cyh0KX1hc3luYyBmdW5jdGlvbiBFKHQsZSl7Y29uc3Qgbj1uZXcgRGF0ZShlKS5nZXRUaW1lKCksYT1hd2FpdCBhc3luYyBmdW5jdGlvbih0KXtyZXR1cm4gVFt0XXx8KFRbdF09KGF3YWl0IGZldGNoKGBodHRwczovL2FwaS5jb2luZ2Vja28uY29tL2FwaS92My9jb2lucy9uZWFyL21hcmtldF9jaGFydC9yYW5nZT92c19jdXJyZW5jeT0ke3R9JmZyb209MCZ0bz0keyhuZXcgRGF0ZSkuZ2V0VGltZSgpLzFlM31gKS50aGVuKCh0PT50Lmpzb24oKSkpKS5wcmljZXMpLFRbdF19KHQpLG89YS5maW5kKCh0PT50WzBdPT09bikpO3JldHVybiBvP29bMV06bnVsbH1jdXN0b21FbGVtZW50cy5kZWZpbmUoInRyYW5zYWN0aW9ucy1wYWdlIixjbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiJ9KSx0aGlzLnJlYWR5UHJvbWlzZT10aGlzLmxvYWRIVE1MKCl9YXN5bmMgbG9hZEhUTUwoKXt0aGlzLnNoYWRvd1Jvb3QuaW5uZXJIVE1MPSc8c3R5bGU+XG4gICAgLm51bWVyaWMge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAudHJhbnNhY3Rpb25yb3dfZGF0ZXRpbWUge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC50YWJsZS1yZXNwb25zaXZlIHtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICB0YWJsZSB0aGVhZCxcbiAgICB0YWJsZSB0Zm9vdCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgfVxuXG4gICAgdGFibGUgdGhlYWQge1xuICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgIH1cblxuICAgIHRhYmxlIHRmb290IHtcbiAgICAgICAgaW5zZXQtYmxvY2stZW5kOiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgfVxuICAgIC50cmFuc2FjdGlvbnJvd19zaWduZXIge1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBjbGlwO1xuICAgIH1cbiAgICAudHJhbnNhY3Rpb25yb3dfcmVjZWl2ZXIge1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBjbGlwO1xuICAgIH1cbjwvc3R5bGU+XG48aDM+VHJhbnNhY3Rpb25zPC9oMz5cbjxkaXYgY2xhc3M9InJvdyI+XG48ZGl2IGNsYXNzPSJjb2wtbWQtNiI+XG4gICAgPGxhYmVsIGZvcj0iYWNjb3VudHNlbGVjdCIgY2xhc3M9ImZvcm0tbGFiZWwiPkFjY291bnQ8L2xhYmVsPlxuICAgIDxzZWxlY3QgY2xhc3M9ImZvcm0tc2VsZWN0IiBhcmlhLWxhYmVsPSJTZWxlY3QgYWNjb3VudCIgaWQ9ImFjY291bnRzZWxlY3QiPlxuICAgICAgICA8b3B0aW9uIGRpc2FibGVkIHNlbGVjdGVkIHZhbHVlPlNlbGVjdCBhY2NvdW50PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG48L2Rpdj5cbjxkaXYgY2xhc3M9ImNvbC1tZC02Ij5cbiAgICA8bGFiZWwgZm9yPSJjdXJyZW5jeXNlbGVjdCIgY2xhc3M9ImZvcm0tbGFiZWwiPkN1cnJlbmN5PC9sYWJlbD5cbiAgICA8c2VsZWN0IGNsYXNzPSJmb3JtLXNlbGVjdCIgYXJpYS1sYWJlbD0iU2VsZWN0IGN1cnJlbmN5IiBpZD0iY3VycmVuY3lzZWxlY3QiPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPSJuZWFyIj5ORUFSPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG48L2Rpdj5cbjx0ZW1wbGF0ZSBpZD0idHJhbnNhY3Rpb25yb3d0ZW1wbGF0ZSI+XG4gICAgPHRyPlxuICAgICAgICA8dGQgY2xhc3M9InRyYW5zYWN0aW9ucm93X2RhdGV0aW1lIj48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9InRyYW5zYWN0aW9ucm93X2tpbmQiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz0idHJhbnNhY3Rpb25yb3dfYmFsYW5jZSBudW1lcmljIj48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9InRyYW5zYWN0aW9ucm93X2NoYW5nZSBudW1lcmljIj48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9InRyYW5zYWN0aW9ucm93X3NpZ25lciI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPSJ0cmFuc2FjdGlvbnJvd19yZWNlaXZlciI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPSJ0cmFuc2FjdGlvbnJvd19oYXNoIj48L3RkPlxuICAgIDwvdHI+XG48L3RlbXBsYXRlPlxuPGRpdiBjbGFzcz0idGFibGUtcmVzcG9uc2l2ZSI+XG4gICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1zbSI+XG4gICAgICAgIDx0aGVhZCBjbGFzcz0idGFibGUtZGFyayI+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgZGF0ZVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cbiAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPlxuICAgICAgICAgICAgICAgIGJhbGFuY2VcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgY2hhbmdlXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPlxuICAgICAgICAgICAgICAgIHNpZ25lclxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cbiAgICAgICAgICAgICAgICByZWNlaXZlclxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cbiAgICAgICAgICAgICAgICBoYXNoXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHkgaWQ9InRyYW5zYWN0aW9uc3RhYmxlIj5cblxuICAgICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG48L2Rpdj5cbicsdGhpcy50cmFuc2FjdGlvbnNUYWJsZT10aGlzLnNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoInRyYW5zYWN0aW9uc3RhYmxlIiksZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgibGluayIpLmZvckVhY2goKHQ9PnRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZCh0LmNsb25lTm9kZSgpKSkpO2NvbnN0IHQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNhY2NvdW50c2VsZWN0Iik7YXdhaXQgUHJvbWlzZS5hbGwoKGF3YWl0IHUoKSkubWFwKChhc3luYyBlPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtuLnZhbHVlPWUsbi50ZXh0PWUsdC5hcHBlbmRDaGlsZChuKX0pKSk7Y29uc3QgZT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI2N1cnJlbmN5c2VsZWN0Iik7KGF3YWl0IE0oKSkuZm9yRWFjaCgodD0+e2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7bi52YWx1ZT10LG4udGV4dD10LnRvVXBwZXJDYXNlKCksZS5hcHBlbmRDaGlsZChuKX0pKTtjb25zdCBuPSgpPT57Y29uc3Qgbj10LnZhbHVlLGE9ZS52YWx1ZTt0aGlzLnVwZGF0ZVZpZXcobixhLDIpfTtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLG4pLGUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixuKSx0aGlzLnNoYWRvd1Jvb3R9YXN5bmMgdXBkYXRlVmlldyh0LGUsbil7Y29uc3QgYT1hd2FpdCBwKHQpLG89dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiN0cmFuc2FjdGlvbnJvd3RlbXBsYXRlIik7Zm9yKDt0aGlzLnRyYW5zYWN0aW9uc1RhYmxlLmxhc3RFbGVtZW50Q2hpbGQ7KXRoaXMudHJhbnNhY3Rpb25zVGFibGUucmVtb3ZlQ2hpbGQodGhpcy50cmFuc2FjdGlvbnNUYWJsZS5sYXN0RWxlbWVudENoaWxkKTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrKyl7dGhpcy50cmFuc2FjdGlvbnNUYWJsZS5hcHBlbmRDaGlsZChvLmNvbnRlbnQuY2xvbmVOb2RlKCEwKSk7Y29uc3QgaT10aGlzLnRyYW5zYWN0aW9uc1RhYmxlLmxhc3RFbGVtZW50Q2hpbGQscz1hW3RdLGM9dDxhLmxlbmd0aC0xP2FbdCsxXS5iYWxhbmNlOjAscj0ocy5iYWxhbmNlLWMpLzFlMjQsbD1uZXcgRGF0ZShzLmJsb2NrX3RpbWVzdGFtcC8xZTYpLnRvSlNPTigpLnN1YnN0cmluZygwLCJ5eXl5LU1NLWRkIi5sZW5ndGgpLGQ9Im5lYXIiPT1lPzE6YXdhaXQgRShlLGwpO2kucXVlcnlTZWxlY3RvcigiLnRyYW5zYWN0aW9ucm93X2RhdGV0aW1lIikuaW5uZXJIVE1MPWwsaS5xdWVyeVNlbGVjdG9yKCIudHJhbnNhY3Rpb25yb3dfa2luZCIpLmlubmVySFRNTD1gJHtzLmFjdGlvbl9raW5kfSR7IkZVTkNUSU9OX0NBTEwiPT1zLmFjdGlvbl9raW5kP2AoJHtzLmFyZ3MubWV0aG9kX25hbWV9KWA6IiJ9YCxpLnF1ZXJ5U2VsZWN0b3IoIi50cmFuc2FjdGlvbnJvd19iYWxhbmNlIikuaW5uZXJIVE1MPShkKihwYXJzZUludChzLmJhbGFuY2UpLzFlMjQpKS50b0ZpeGVkKG4pO2NvbnN0IGg9ZCpyO2kucXVlcnlTZWxlY3RvcigiLnRyYW5zYWN0aW9ucm93X2NoYW5nZSIpLmlubmVySFRNTD1oLnRvRml4ZWQobiksaS5xdWVyeVNlbGVjdG9yKCIudHJhbnNhY3Rpb25yb3dfc2lnbmVyIikuaW5uZXJIVE1MPXMuc2lnbmVyX2lkLGkucXVlcnlTZWxlY3RvcigiLnRyYW5zYWN0aW9ucm93X3JlY2VpdmVyIikuaW5uZXJIVE1MPXMucmVjZWl2ZXJfaWQsaS5xdWVyeVNlbGVjdG9yKCIudHJhbnNhY3Rpb25yb3dfaGFzaCIpLmlubmVySFRNTD1zLmhhc2h9Y29uc3QgaT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnRhYmxlLXJlc3BvbnNpdmUiKTtpLnN0eWxlLmhlaWdodD13aW5kb3cuaW5uZXJIZWlnaHQtaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ArInB4In19KTtjdXN0b21FbGVtZW50cy5kZWZpbmUoInN0YWtpbmctcGFnZSIsY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5yZWFkeVByb21pc2U9dGhpcy5sb2FkSFRNTCgpfWFzeW5jIGxvYWRIVE1MKCl7dGhpcy5zaGFkb3dSb290LmlubmVySFRNTD0nPHN0eWxlPlxuICAgIC5udW1lcmljIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLnN0YWtpbmdyZXdhcmRyb3dfZGF0ZXRpbWUge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5zdGFraW5ncmV3YXJkcm93X2JhbGFuY2Uge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC50YWJsZS1yZXNwb25zaXZlIHtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICB0YWJsZSB0aGVhZCxcbiAgICB0YWJsZSB0Zm9vdCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgfVxuXG4gICAgdGFibGUgdGhlYWQge1xuICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgIH1cblxuICAgIHRhYmxlIHRmb290IHtcbiAgICAgICAgaW5zZXQtYmxvY2stZW5kOiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgfVxuPC9zdHlsZT5cbjx0ZW1wbGF0ZSBpZD0ic3Rha2luZ3Bvb2xzZWxlY3RvcHRpb24iPlxuICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgY2xhc3M9ImJ0bi1jaGVjayIgbmFtZT0ic3Rha2luZ3Bvb2xzZWxlY3RvcHRpb25zIiBhdXRvY29tcGxldGU9Im9mZiIgY2hlY2tlZD5cbiAgICA8bGFiZWwgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1zdWNjZXNzIj48L2xhYmVsPlxuPC90ZW1wbGF0ZT5cbjxoMz5TdGFraW5nIGJhbGFuY2UgYW5kIHJld2FyZHM8L2gzPlxuPGRpdiBjbGFzcz0icm93Ij5cbjxkaXYgY2xhc3M9ImNvbC1tZC02Ij5cbiAgICA8bGFiZWwgZm9yPSJhY2NvdW50c2VsZWN0IiBjbGFzcz0iZm9ybS1sYWJlbCI+QWNjb3VudDwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz0iZm9ybS1zZWxlY3QiIGFyaWEtbGFiZWw9IlNlbGVjdCBhY2NvdW50IiBpZD0iYWNjb3VudHNlbGVjdCI+XG4gICAgICAgIDxvcHRpb24gZGlzYWJsZWQgc2VsZWN0ZWQgdmFsdWU+U2VsZWN0IGFjY291bnQ8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbjwvZGl2PlxuPGRpdiBjbGFzcz0iY29sLW1kLTYiPlxuICAgIDxsYWJlbCBmb3I9ImN1cnJlbmN5c2VsZWN0IiBjbGFzcz0iZm9ybS1sYWJlbCI+Q3VycmVuY3k8L2xhYmVsPlxuICAgIDxzZWxlY3QgY2xhc3M9ImZvcm0tc2VsZWN0IiBhcmlhLWxhYmVsPSJTZWxlY3QgY3VycmVuY3kiIGlkPSJjdXJyZW5jeXNlbGVjdCI+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9Im5lYXIiPk5FQVI8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbjwvZGl2PlxuPGRpdiBpZD0ic3Rha2luZ3Bvb2xzZWxlY3QiPlxuXG48L2Rpdj5cbjx0ZW1wbGF0ZSBpZD0ic3Rha2luZ3Jld2FyZHJvd3RlbXBsYXRlIj5cbiAgICA8dHI+XG4gICAgICAgIDx0ZCBjbGFzcz0ic3Rha2luZ3Jld2FyZHJvd19kYXRldGltZSI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPSJzdGFraW5ncmV3YXJkcm93X2JhbGFuY2UgbnVtZXJpYyI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPSJzdGFraW5ncmV3YXJkcm93X2Vhcm5pbmdzIG51bWVyaWMiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz0ic3Rha2luZ3Jld2FyZHJvd19kZXBvc2l0IG51bWVyaWMiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz0ic3Rha2luZ3Jld2FyZHJvd193aXRoZHJhd2FsIG51bWVyaWMiPjwvdGQ+XG4gICAgPC90cj5cbjwvdGVtcGxhdGU+XG48ZGl2IGNsYXNzPSJ0YWJsZS1yZXNwb25zaXZlIj5cbiAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLXNtIj5cbiAgICAgICAgPHRoZWFkIGNsYXNzPSJ0YWJsZS1kYXJrIj5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cbiAgICAgICAgICAgICAgICBkYXRlXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPlxuICAgICAgICAgICAgICAgIGJhbGFuY2VcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgZWFybmluZ3NcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgZGVwb3NpdHNcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgd2l0aGRyYXdhbHNcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keSBpZD0ic3Rha2luZ3Jld2FyZHN0YWJsZSI+XG5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPHRmb290IGNsYXNzPSJ0YWJsZS1kYXJrIj5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGlkPSJ0b3RhbEVhcm5pbmdzIiBjbGFzcz0ibnVtZXJpYyI+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJudW1lcmljIj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9Im51bWVyaWMiPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgPC90Zm9vdD5cbiAgICA8L3RhYmxlPlxuPC9kaXY+XG5cbjwvZGl2PlxuJyx0aGlzLnN0YWtpbmdSZXdhcmRzVGFibGU9dGhpcy5zaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJzdGFraW5ncmV3YXJkc3RhYmxlIiksZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgibGluayIpLmZvckVhY2goKHQ9PnRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZCh0LmNsb25lTm9kZSgpKSkpO2NvbnN0IHQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNhY2NvdW50c2VsZWN0Iik7YXdhaXQgUHJvbWlzZS5hbGwoKGF3YWl0IHUoKSkubWFwKChhc3luYyBlPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtuLnZhbHVlPWUsbi50ZXh0PWUsdC5hcHBlbmRDaGlsZChuKX0pKSk7Y29uc3QgZT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI2N1cnJlbmN5c2VsZWN0Iik7KGF3YWl0IE0oKSkuZm9yRWFjaCgodD0+e2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7bi52YWx1ZT10LG4udGV4dD10LnRvVXBwZXJDYXNlKCksZS5hcHBlbmRDaGlsZChuKX0pKTtjb25zdCBuPSgpPT57Y29uc3Qgbj10LnZhbHVlLGE9ZS52YWx1ZTt0aGlzLnVwZGF0ZVZpZXcobixhLDIpfTtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLG4pLGUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixuKSx0aGlzLnNoYWRvd1Jvb3R9YXN5bmMgdXBkYXRlVmlldyh0LGUsbil7Y29uc3QgYT1hd2FpdCBTKHQpLG89dGhpcy5zaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJzdGFraW5ncG9vbHNlbGVjdG9wdGlvbiIpLGk9dGhpcy5zaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJzdGFraW5ncG9vbHNlbGVjdCIpO2Zvcig7aS5sYXN0RWxlbWVudENoaWxkOylpLnJlbW92ZUNoaWxkKGkubGFzdEVsZW1lbnRDaGlsZCk7YS5mb3JFYWNoKChhc3luYyBhPT57Y29uc3Qgcz1vLmNsb25lTm9kZSghMCkuY29udGVudDtzLnF1ZXJ5U2VsZWN0b3IoImlucHV0IikuaWQ9YSxzLnF1ZXJ5U2VsZWN0b3IoImxhYmVsIikuaHRtbEZvcj1hLHMucXVlcnlTZWxlY3RvcigibGFiZWwiKS5pbm5lckhUTUw9YSxzLnF1ZXJ5U2VsZWN0b3IoImlucHV0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChhc3luYygpPT57Y29uc3Qgbz1hd2FpdCBiKHQsYSksaT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3N0YWtpbmdyZXdhcmRyb3d0ZW1wbGF0ZSIpO2xldCBzPTA7Zm9yKDt0aGlzLnN0YWtpbmdSZXdhcmRzVGFibGUubGFzdEVsZW1lbnRDaGlsZDspdGhpcy5zdGFraW5nUmV3YXJkc1RhYmxlLnJlbW92ZUNoaWxkKHRoaXMuc3Rha2luZ1Jld2FyZHNUYWJsZS5sYXN0RWxlbWVudENoaWxkKTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7Y29uc3QgYT1pLmNsb25lTm9kZSghMCkuY29udGVudCxjPW9bdF0scj1jLnRpbWVzdGFtcC5zdWJzdHJpbmcoMCwieXl5eS1NTS1kZCIubGVuZ3RoKSxsPSJuZWFyIj09ZT8xOmF3YWl0IEUoZSxyKSxkPWwqYy5lYXJuaW5ncy8xZTI0O3MrPWQ7Y29uc3QgaD1sKmMuZGVwb3NpdC8xZTI0LHU9bCpjLndpdGhkcmF3YWwvMWUyNDthLnF1ZXJ5U2VsZWN0b3IoIi5zdGFraW5ncmV3YXJkcm93X2RhdGV0aW1lIikuaW5uZXJIVE1MPXIsYS5xdWVyeVNlbGVjdG9yKCIuc3Rha2luZ3Jld2FyZHJvd19iYWxhbmNlIikuaW5uZXJIVE1MPShsKihjLmJhbGFuY2UvMWUyNCkpLnRvRml4ZWQobiksYS5xdWVyeVNlbGVjdG9yKCIuc3Rha2luZ3Jld2FyZHJvd19lYXJuaW5ncyIpLmlubmVySFRNTD1kLnRvRml4ZWQobiksYS5xdWVyeVNlbGVjdG9yKCIuc3Rha2luZ3Jld2FyZHJvd19kZXBvc2l0IikuaW5uZXJIVE1MPWgudG9GaXhlZChuKSxhLnF1ZXJ5U2VsZWN0b3IoIi5zdGFraW5ncmV3YXJkcm93X3dpdGhkcmF3YWwiKS5pbm5lckhUTUw9dS50b0ZpeGVkKG4pLHRoaXMuc3Rha2luZ1Jld2FyZHNUYWJsZS5hcHBlbmRDaGlsZChhKX10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3RvdGFsRWFybmluZ3MiKS5pbm5lckhUTUw9cy50b0ZpeGVkKG4pfSkpLGkuYXBwZW5kQ2hpbGQocyl9KSk7Y29uc3Qgcz10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnRhYmxlLXJlc3BvbnNpdmUiKTtzLnN0eWxlLmhlaWdodD13aW5kb3cuaW5uZXJIZWlnaHQtcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ArInB4In19KTtjb25zdCBSPXtub2RlVXJsOiJodHRwczovL3JwYy5tYWlubmV0Lm5lYXIub3JnIix3YWxsZXRVcmw6Imh0dHBzOi8vd2FsbGV0Lm5lYXIub3JnIixoZWxwZXJVcmw6Imh0dHBzOi8vaGVscGVyLm1haW5uZXQubmVhci5vcmciLGNvbnRyYWN0TmFtZToid2FzbWdpdC5uZWFyIixkZXBzOnt9fSxMPW5ldyBQcm9taXNlKChhc3luYyB0PT57aWYod2luZG93LnRvcD09d2luZG93KXtSLmRlcHMua2V5U3RvcmU9bmV3IG5lYXJBcGkua2V5U3RvcmVzLkJyb3dzZXJMb2NhbFN0b3JhZ2VLZXlTdG9yZTtjb25zdCBlPWF3YWl0IG5lYXJBcGkuY29ubmVjdChSKTt0KG5ldyBuZWFyQXBpLldhbGxldENvbm5lY3Rpb24oZSkpfWVsc2UgY29uc29sZS5sb2coIndhbGxldCBjb25uZWN0aW9uIG5vdCBzdXBwb3J0ZWQgaW4gaW5mcmFtZSIpLHQobnVsbCl9KSk7Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJzdG9yYWdlLXBhZ2UiLGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLHRoaXMucmVhZHlQcm9taXNlPXRoaXMubG9hZEhUTUwoKX1hc3luYyBsb2FkSFRNTCgpe2lmKHRoaXMuc2hhZG93Um9vdC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImNhcmQiPlxuICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGVyIj5TdG9yZSBkYXRhIG9uIGEgZ2l0IHNlcnZlcjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9ImNhcmQtYm9keSI+XG4gICAgICAgIDxwPllvdSBtYXkgc3RvcmUgYSByZW1vdGUgY29weSBvZiB5b3VyIGRhdGEgaW4gYSBnaXQgc2VydmVyLCB3aGljaCB5b3UgY2FuIHRoZW4gdXNlIHRvIHN5bmNocm9uaXplIHdpdGggb3RoZXIgYnJvd3NlcnMgYW5kIGRldmljZXM8L3A+XG4gICAgICAgIDxwPkNyZWF0ZSBhIGdpdCByZXBvc3Rpb3J5IGF0IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3dhc20tZ2l0LnBldGVyc2Fsb21vbnNlbi5jb20iPndhc20tZ2l0LnBldGVyc2Fsb21vbnNlbi5jb208L2E+IGFuZCB0aGVuXG4gICAgICAgIGxvZyBpbiBhbmQgc3luY2hyb25pemUgaXQgaGVyZS48L3A+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgICA8c3BhbiBpZD0iY3VycmVudHVzZXJzcGFuIj48L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGlkPSJsb2dpbmJ1dHRvbiI+TG9naW48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4td2FybmluZyIgaWQ9ImxvZ291dGJ1dHRvbiI+TG9nb3V0PC9idXR0b24+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgIDxsYWJlbCBmb3I9InJlbW90ZXJlcG8iIGNsYXNzPSJmb3JtLWxhYmVsIj5VUkwgdG8gZ2l0IHJlcG9zaXRvcnk8L2xhYmVsPlxuICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9InJlbW90ZXJlcG8iIHBsYWNlaG9sZGVyPSJodHRwczovL3dhc20tZ2l0LnBldGVyc2Fsb21vbnNlbi5jb20vWU9VUl9BQ0NPVU5ULW5lYXJzaWdodCI+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBpZD0ic3luY2J1dHRvbiI+U3luY2hyb25pemU8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBpZD0iZGVsZXRlbG9jYWxkYXRhYnV0dG9uIj5EZWxldGUgbG9jYWwgZGF0YTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Jyxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJsaW5rIikuZm9yRWFjaCgodD0+dGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHQuY2xvbmVOb2RlKCkpKSksdGhpcy5sb2dpbmJ1dHRvbj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI2xvZ2luYnV0dG9uIiksdGhpcy5sb2dvdXRidXR0b249dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNsb2dvdXRidXR0b24iKSx0aGlzLmRlbGV0ZWxvY2FsZGF0YWJ1dHRvbj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI2RlbGV0ZWxvY2FsZGF0YWJ1dHRvbiIpLHRoaXMuZGVsZXRlbG9jYWxkYXRhYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoYXN5bmMoKT0+e2NvbnNvbGUubG9nKCJkZWxldGUgbG9jYWwgZGF0YSIpLHRoaXMuZGVsZXRlbG9jYWxkYXRhYnV0dG9uLmRpc2FibGVkPSEwLGF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7YXdhaXQgbygiZGVsZXRlbG9jYWwiLFtdKX0oKSxsb2NhdGlvbi5yZWxvYWQoKX0pKSx3aW5kb3cudG9wPT13aW5kb3cpe2lmKCEoYXdhaXQgTCkuZ2V0QWNjb3VudElkKCkpcmV0dXJuIGNvbnNvbGUubG9nKCJubyBsb2dnZWRpbiB1c2VyIiksdGhpcy5sb2dvdXRidXR0b24uc3R5bGUuZGlzcGxheT0ibm9uZSIsdm9pZCB0aGlzLmxvZ2luYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoYXN5bmMoKT0+e2F3YWl0KGF3YWl0IEwpLnJlcXVlc3RTaWduSW4oUi5jb250cmFjdE5hbWUsIndhc20tZ2l0IiksdGhpcy5sb2FkQWNjb3VudERhdGEoKX0pKTt0aGlzLmxvYWRBY2NvdW50RGF0YSgpLHRoaXMubG9nb3V0YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoYXN5bmMoKT0+eyhhd2FpdCBMKS5zaWduT3V0KCksY29uc29sZS5sb2coImxvZ2dlZCBvdXQiKSx0aGlzLmxvZ2luYnV0dG9uLnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLmxvZ291dGJ1dHRvbi5zdHlsZS5kaXNwbGF5PSJub25lIn0pKSx0aGlzLnJlbW90ZVJlcG9JbnB1dD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3JlbW90ZXJlcG8iKSx0aGlzLnJlbW90ZVJlcG9JbnB1dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChhc3luYygpPT57YXdhaXQgYXN5bmMgZnVuY3Rpb24odCl7cmV0dXJuKGF3YWl0IG8oInNldHJlbW90ZSIse3JlbW90ZXVybDp0fSkpLnJlc3VsdH0odGhpcy5yZW1vdGVSZXBvSW5wdXQudmFsdWUpfSkpLHRoaXMucmVtb3RlUmVwb0lucHV0LnZhbHVlPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgdD0oYXdhaXQgbygiZ2V0cmVtb3RlIixbXSkpLnJlc3VsdDtyZXR1cm4gdD90LnNwbGl0KCJcbiIpWzBdLnNwbGl0KC9ccysvKVsxXTpudWxsfSgpLHRoaXMuc3luY2J1dHRvbj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3N5bmNidXR0b24iKSx0aGlzLnN5bmNidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChhc3luYygpPT57ZSgiaW5kZXRlcm1pbmF0ZSIsInN5bmNpbmcgd2l0aCByZW1vdGUiKTt0cnl7dGhpcy5zeW5jYnV0dG9uLmRpc2FibGVkPSEwLGF3YWl0IGMoIi5naXQiKXx8KHRoaXMucmVtb3RlUmVwb0lucHV0LnZhbHVlP2F3YWl0IGFzeW5jIGZ1bmN0aW9uKHQpe3JldHVybihhd2FpdCBvKCJnaXQiLFsiY2xvbmUiLHQsIi4iXSkpLnJlc3VsdH0odGhpcy5yZW1vdGVSZXBvSW5wdXQudmFsdWUpOmF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuKGF3YWl0IG8oImdpdCIsWyJpbml0IiwiLiJdKSkucmVzdWx0fSgpKSxhd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybihhd2FpdCBvKCJjb21taXRhbGwiLFtdKSkucmVzdWx0fSgpLGF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7YXdhaXQgbygic3luYyIsW10pfSgpLHRoaXMuZGlzcGF0Y2hTeW5jRXZlbnQoKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKHQpLHgoIkVycm9yIHN5bmNpbmcgd2l0aCByZW1vdGUiLHQpfWUobnVsbCksdGhpcy5zeW5jYnV0dG9uLmRpc2FibGVkPSExfSkpfXJldHVybiB0aGlzLnNoYWRvd1Jvb3R9ZGlzcGF0Y2hTeW5jRXZlbnQoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJzeW5jIikpfWFzeW5jIGxvYWRBY2NvdW50RGF0YSgpe2xldCB0PXthY2NvdW50SWQ6KGF3YWl0IEwpLmdldEFjY291bnRJZCgpfTt0aGlzLmxvZ2luYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIjY3VycmVudHVzZXJzcGFuIikuaW5uZXJIVE1MPWBMb2dnZWQgaW4gYXMgJHt0LmFjY291bnRJZH1gO2NvbnN0IGU9YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtjb25zdCB0PWF3YWl0IEwsZT10LmdldEFjY291bnRJZCgpLG49YnRvYShKU09OLnN0cmluZ2lmeSh7YWNjb3VudElkOmUsaWF0OihuZXcgRGF0ZSkuZ2V0VGltZSgpfSkpLGE9YXdhaXQgdC5hY2NvdW50KCkuY29ubmVjdGlvbi5zaWduZXIuc2lnbk1lc3NhZ2UoKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKG4pLGUpO3JldHVybiBuKyIuIitidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uYS5zaWduYXR1cmUpKX0oKTshYXN5bmMgZnVuY3Rpb24odCl7KGF3YWl0IG8oImNvbmZpZ3VyZXVzZXIiLHQpKS5yZXN1bHR9KHthY2Nlc3NUb2tlbjplLHVzZXJlbWFpbDp0LmFjY291bnRJZCx1c2VybmFtZTp0LmFjY291bnRJZH0pfX0pO2N1c3RvbUVsZW1lbnRzLmRlZmluZSgieWVhci1yZXBvcnQtcGFnZSIsY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5yZWFkeVByb21pc2U9dGhpcy5sb2FkSFRNTCgpfWFzeW5jIGxvYWRIVE1MKCl7dGhpcy5zaGFkb3dSb290LmlubmVySFRNTD0nPHN0eWxlPlxuICAgIC5udW1lcmljIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLmRhaWx5YmFsYW5jZXJvd19kYXRldGltZSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmRhaWx5YmFsYW5jZXJvd19iYWxhbmNlIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAudGFibGUtcmVzcG9uc2l2ZSB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgdGFibGUgdGhlYWQsXG4gICAgdGFibGUgdGZvb3Qge1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIH1cblxuICAgIHRhYmxlIHRoZWFkIHtcbiAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICB0YWJsZSB0Zm9vdCB7XG4gICAgICAgIGluc2V0LWJsb2NrLWVuZDogMDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgIH1cblxuICAgIHRyLmluZm9yb3cgdGQge1xuICAgICAgICBmb250LXNpemU6IDEycHg7ICAgXG4gICAgfVxuPC9zdHlsZT5cbjxoMz5ZZWFyIHJlcG9ydCAoIGFsbCBhY2NvdW50cyApPC9oMz5cbjxkaXYgY2xhc3M9InJvdyI+XG4gICAgPGRpdiBjbGFzcz0iY29sLW1kLTYiPlxuICAgICAgICA8bGFiZWwgZm9yPSJ5ZWFyc2VsZWN0IiBjbGFzcz0iZm9ybS1sYWJlbCI+U2VsZWN0IHllYXI8L2xhYmVsPiAgIFxuICAgICAgICA8c2VsZWN0IGlkPSJ5ZWFyc2VsZWN0IiBjbGFzcz0iZm9ybS1zZWxlY3QiPjwvc2VsZWN0PiAgICAgICAgXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz0iY29sLW1kLTYiPlxuICAgICAgICA8bGFiZWwgZm9yPSJjdXJyZW5jeXNlbGVjdCIgY2xhc3M9ImZvcm0tbGFiZWwiPkN1cnJlbmN5PC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBjbGFzcz0iZm9ybS1zZWxlY3QiIGFyaWEtbGFiZWw9IlNlbGVjdCBjdXJyZW5jeSIgaWQ9ImN1cnJlbmN5c2VsZWN0Ij5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5lYXIiPk5FQVI8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+ICAgICAgICBcbiAgICA8L2Rpdj5cbjwvZGl2PlxuPHRlbXBsYXRlIGlkPSJkYWlseWJhbGFuY2Vyb3d0ZW1wbGF0ZSI+XG4gICAgPHRyPlxuICAgICAgICA8dGQgY2xhc3M9ImRhaWx5YmFsYW5jZXJvd19kYXRldGltZSI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPSJkYWlseWJhbGFuY2Vyb3dfdG90YWxiYWxhbmNlIG51bWVyaWMiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz0iZGFpbHliYWxhbmNlcm93X2NoYW5nZSBudW1lcmljIj48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9ImRhaWx5YmFsYW5jZXJvd19hY2NvdW50YmFsYW5jZSBudW1lcmljIj48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9ImRhaWx5YmFsYW5jZXJvd19hY2NvdW50Y2hhbmdlIG51bWVyaWMiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz0iZGFpbHliYWxhbmNlcm93X3N0YWtpbmdiYWxhbmNlIG51bWVyaWMiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz0iZGFpbHliYWxhbmNlcm93X3N0YWtpbmdjaGFuZ2UgbnVtZXJpYyI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPSJkYWlseWJhbGFuY2Vyb3dfc3Rha2luZ3Jld2FyZCBudW1lcmljIj48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9ImRhaWx5YmFsYW5jZXJvd19kZXBvc2l0IG51bWVyaWMiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz0iZGFpbHliYWxhbmNlcm93X3dpdGhkcmF3YWwgbnVtZXJpYyI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPSJkYWlseWJhbGFuY2Vyb3dfcHJvZml0IG51bWVyaWMiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz0iZGFpbHliYWxhbmNlcm93X2xvc3MgbnVtZXJpYyI+PC90ZD5cbiAgICA8L3RyPlxuICAgIDx0ciBjbGFzcz0iaW5mb3JvdyBiZy1pbmZvIj5cbiAgICAgICAgPHRkIGNvbHNwYW49IjEyIiA+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLXNtIHRhYmxlLWJvcmRlcmxlc3MiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPmFjcXVpc2l0aW9uIGRhdGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPmFjcXVpcmVkIGFtb3VudDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+YWNxdWlzaXRpb24gcHJpY2U8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPnJlYWxpemVkIGFtb3VudDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+cmVhbGl6YXRpb24gcHJpY2U8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgPHRib2R5PjwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L3RkPlxuICAgIDwvdHI+XG48L3RlbXBsYXRlPlxuPGRpdiBjbGFzcz0idGFibGUtcmVzcG9uc2l2ZSI+XG4gICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1zbSI+XG4gICAgICAgIDx0aGVhZCBjbGFzcz0idGFibGUtZGFyayI+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgZGF0ZVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cbiAgICAgICAgICAgICAgICB0b3RhbCBiYWxhbmNlXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPlxuICAgICAgICAgICAgICAgIGNoYW5nZVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cbiAgICAgICAgICAgICAgICBhY2NvdW50IGJhbGFuY2VcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgY2hhbmdlXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPlxuICAgICAgICAgICAgICAgIHN0YWtpbmcgYmFsYW5jZVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cbiAgICAgICAgICAgICAgICBjaGFuZ2VcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgcmV3YXJkXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPlxuICAgICAgICAgICAgICAgIGRlcG9zaXRcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgd2l0aGRyYXdhbHNcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCI+XG4gICAgICAgICAgICAgICAgcHJvZml0XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiPlxuICAgICAgICAgICAgICAgIGxvc3NcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHkgaWQ9ImRhaWx5YmFsYW5jZXN0YWJsZSI+XG5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPHRmb290IGNsYXNzPSJ0YWJsZS1kYXJrIj5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cblxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cblxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cblxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cblxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cblxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cblxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIj5cblxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ibnVtZXJpYyIgaWQ9InRvdGFscmV3YXJkIj5cblxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT0iY29sIiBjbGFzcz0ibnVtZXJpYyIgaWQ9InRvdGFsZGVwb3NpdCI+XG5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9ImNvbCIgY2xhc3M9Im51bWVyaWMiIGlkPSJ0b3RhbHdpdGhkcmF3YWwiPlxuXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJudW1lcmljIiBpZD0idG90YWxwcm9maXQiPlxuXG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJudW1lcmljIiBpZD0idG90YWxsb3NzIj5cblxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICA8L3Rmb290PlxuICAgIDwvdGFibGU+XG48L2Rpdj5cbicsZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgibGluayIpLmZvckVhY2goKHQ9PnRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZCh0LmNsb25lTm9kZSgpKSkpLHRoaXMueWVhcj0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCksdGhpcy55ZWFyU2VsZWN0PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIjeWVhcnNlbGVjdCIpO2ZvcihsZXQgdD10aGlzLnllYXI7dD49MjAyMDt0LS0pe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7ZS52YWx1ZT10LGUuaW5uZXJIVE1MPWAke3R9YCx0PT09dGhpcy55ZWFyJiYoZS5zZWxlY3RlZD0hMCksdGhpcy55ZWFyU2VsZWN0LmFwcGVuZENoaWxkKGUpfXRoaXMueWVhclNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCgoKT0+e3RoaXMueWVhcj1wYXJzZUludCh0aGlzLnllYXJTZWxlY3QudmFsdWUpLHRoaXMucmVmcmVzaFZpZXcoKX0pKTtjb25zdCB0PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIjY3VycmVuY3lzZWxlY3QiKTsoYXdhaXQgTSgpKS5mb3JFYWNoKChlPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtuLnZhbHVlPWUsbi50ZXh0PWUudG9VcHBlckNhc2UoKSx0LmFwcGVuZENoaWxkKG4pfSkpO3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKCgpPT50aGlzLnVwZGF0ZVZpZXcodC52YWx1ZSwyKSkpLHRoaXMudXBkYXRlVmlldyh0LnZhbHVlLDIpLHRoaXMuc2hhZG93Um9vdH1hc3luYyB1cGRhdGVWaWV3KHQsZSl7dGhpcy5jb252ZXJ0VG9DdXJyZW5jeT10LHRoaXMubnVtRGVjaW1hbHM9ZSxhd2FpdCB0aGlzLnJlZnJlc2hWaWV3KCl9YXN5bmMgcmVmcmVzaFZpZXcoKXtjb25zdHtkYWlseUJhbGFuY2VzOnQsY2xvc2VkUG9zaXRpb25zOmUsb3BlblBvc2l0aW9uczpufT1hd2FpdCBhc3luYyBmdW5jdGlvbih0LGU9Im5lYXIiKXtpZigibmVhciI9PWUpcmV0dXJue2RhaWx5QmFsYW5jZXM6dH07Y29uc3Qgbj1bXSxhPVtdO2Zvcihjb25zdCBvIGluIHQpe2NvbnN0IGk9dFtvXTtsZXQgcz0wLGM9MDtpZihpLmRlcG9zaXQ+MHx8aS5yZXdhcmQ+MCl7Y29uc3QgdD1pLmRlcG9zaXQ/PzAraS5yZXdhcmQ/PzAsYT1hd2FpdCBFKGUsbyk7bi5wdXNoKHtkYXRlOm8saW5pdGlhbEFtb3VudDp0LHJlbWFpbmluZ0Ftb3VudDp0LGNvbnZlcnRlZFZhbHVlOmEqKHQvMWUyNCksY29udmVyc2lvblJhdGU6YSxyZWFsaXphdGlvbnM6W119KX1pZihpLndpdGhkcmF3YWw+MCl7bGV0IHQ9MDtpLnJlYWxpemF0aW9ucz1bXTtjb25zdCByPWF3YWl0IEUoZSxvKTtmb3IoO24ubGVuZ3RoPjAmJnQ8aS53aXRoZHJhd2FsOyl7Y29uc3QgZT1uWzBdO2lmKHQrZS5yZW1haW5pbmdBbW91bnQ+aS53aXRoZHJhd2FsKXtjb25zdCBuPWkud2l0aGRyYXdhbC10LGE9ZS5jb252ZXJ0ZWRWYWx1ZSoobi9lLmluaXRpYWxBbW91bnQpLGw9bi8xZTI0KnI7ZS5yZW1haW5pbmdBbW91bnQtPW4sdD1pLndpdGhkcmF3YWw7Y29uc3QgZD1sLWE7ZD49MD9zKz1kOmMrPS1kO2NvbnN0IGg9e2RhdGU6byxhbW91bnQ6bixjb252ZXJ0ZWRWYWx1ZTpsLHByb2ZpdDpkPj0wP2Q6MCxjb252ZXJzaW9uUmF0ZTpyLGxvc3M6ZDwwPy1kOjB9O2UucmVhbGl6YXRpb25zLnB1c2goaCksaS5yZWFsaXphdGlvbnMucHVzaChPYmplY3QuYXNzaWduKHt9LGgse3Bvc2l0aW9uOk9iamVjdC5hc3NpZ24oe30sZSx7cmVhbGl6YXRpb25zOnZvaWQgMH0pfSkpfWVsc2V7dCs9ZS5yZW1haW5pbmdBbW91bnQ7Y29uc3QgbD1yKihlLnJlbWFpbmluZ0Ftb3VudC8xZTI0KSxkPWwtZS5jb252ZXJ0ZWRWYWx1ZSooZS5yZW1haW5pbmdBbW91bnQvZS5pbml0aWFsQW1vdW50KTtkPj0wP3MrPWQ6Yys9LWQ7Y29uc3QgaD17ZGF0ZTpvLGFtb3VudDplLnJlbWFpbmluZ0Ftb3VudCxjb252ZXJ0ZWRWYWx1ZTpsLGNvbnZlcnNpb25SYXRlOnIscHJvZml0OmQ+PTA/ZDowLGxvc3M6ZDwwPy1kOjB9O2UucmVhbGl6YXRpb25zLnB1c2goaCksaS5yZWFsaXphdGlvbnMucHVzaChPYmplY3QuYXNzaWduKHt9LGgse3Bvc2l0aW9uOk9iamVjdC5hc3NpZ24oe30sZSx7cmVhbGl6YXRpb25zOnZvaWQgMH0pfSkpLGUucmVtYWluaW5nQW1vdW50PTAsYS5wdXNoKGUpLG4uc2hpZnQoKX19aS5wcm9maXQ9cyxpLmxvc3M9Yyx0PGkud2l0aGRyYXdhbCYmY29uc29sZS5lcnJvcihgc2hvdWxkIG5vdCBoYXBwZW46IHdpdGhkcmF3biBhbW91bnQgbGFyZ2VyIHRoYW4gYXZhaWxhYmxlIHBvc2l0aW9ucy4gd2FudGVkIHRvIHdpdGhkcmF3OiAke2kud2l0aGRyYXdhbH0sIGF2YWlsYWJsZTogJHt0fWApfX1yZXR1cm57b3BlblBvc2l0aW9uczpuLGNsb3NlZFBvc2l0aW9uczphLGRhaWx5QmFsYW5jZXM6dH19KGF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgdD1hd2FpdCB1KCksZT17fSxuPXt9LGE9e30sbz17fTtmb3IobGV0IGkgb2YgdCl7Y29uc3QgdD1hd2FpdCBwKGkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBvPXRbZV07by5hY2NvdW50PWksby5jaGFuZ2VkQmFsYW5jZT1CaWdJbnQoby5iYWxhbmNlKS0oZTx0Lmxlbmd0aC0xP0JpZ0ludCh0W2UrMV0uYmFsYW5jZSk6QmlnSW50KG8uYmFsYW5jZSkpLG5bby5oYXNoXXx8KG5bby5oYXNoXT1bXSksbltvLmhhc2hdLnB1c2gobyk7Y29uc3Qgcz1uZXcgRGF0ZShvLmJsb2NrX3RpbWVzdGFtcC8xZTYpLnRvSlNPTigpLnN1YnN0cmluZygwLCJ5eXl5LU1NLWRkIi5sZW5ndGgpO2Fbc118fChhW3NdPVtdKSxhW3NdLnVuc2hpZnQobyl9Y29uc3Qgcz1hd2FpdCBTKGkpO2VbaV09e2Fycjp0LHN0YWtpbmdBY2NvdW50czpzLHN0YWtpbmdCYWxhbmNlczp7fX07Zm9yKGxldCB0IG9mIHMpe29bdF09ITA7Y29uc3Qgbj1hd2FpdCBiKGksdCk7Zm9yKGxldCBhIG9mIG4pe2NvbnN0IG49YS50aW1lc3RhbXAuc3Vic3RyKDAsInl5eXktTU0tZGQiLmxlbmd0aCksbz1lW2ldLnN0YWtpbmdCYWxhbmNlcztvW25dfHwob1tuXT17dG90YWxTdGFraW5nQmFsYW5jZTowLHRvdGFsRWFybmluZ3M6MH0pLG51bGw9PW9bbl1bdF0mJihvW25dW3RdPWEuYmFsYW5jZSxvW25dLnRvdGFsU3Rha2luZ0JhbGFuY2UrPWEuYmFsYW5jZSksb1tuXS50b3RhbEVhcm5pbmdzKz1hLmVhcm5pbmdzfX19Y29uc3QgaT17fTtsZXQgcyxjPW5ldyBEYXRlKDIwMjAsMCwxKTtjb25zdCByPW5ldyBEYXRlLGw9e307Zm9yKDtjLmdldFRpbWUoKTxyOyl7Y29uc3Qgcj1jLnRvSlNPTigpLnN1YnN0cmluZygwLCJ5eXl5LU1NLWRkIi5sZW5ndGgpO2lmKGlbcl09e3RvdGFsQmFsYW5jZTowLGFjY291bnRCYWxhbmNlOjAsc3Rha2luZ0JhbGFuY2U6MCxzdGFraW5nRWFybmluZ3M6MCxkZXBvc2l0OjAsd2l0aGRyYXdhbDowfSxjPW5ldyBEYXRlKGMuZ2V0RnVsbFllYXIoKSxjLmdldE1vbnRoKCksYy5nZXREYXRlKCkrMSksdC5mb3JFYWNoKCh0PT57Y29uc3Qgbj1lW3RdO24uc3Rha2luZ0JhbGFuY2VzW3JdPyhpW3JdLnN0YWtpbmdCYWxhbmNlKz1uLnN0YWtpbmdCYWxhbmNlc1tyXS50b3RhbFN0YWtpbmdCYWxhbmNlLGlbcl0uc3Rha2luZ0Vhcm5pbmdzKz1uLnN0YWtpbmdCYWxhbmNlc1tyXS50b3RhbEVhcm5pbmdzKTpzJiZuLnN0YWtpbmdCYWxhbmNlc1tzXSYmKGlbcl0uc3Rha2luZ0JhbGFuY2UrPW4uc3Rha2luZ0JhbGFuY2VzW3NdLnRvdGFsU3Rha2luZ0JhbGFuY2UpfSkpLGFbcl0mJmFbcl0uZm9yRWFjaCgodD0+e2xldCBlPUJpZ0ludCgwKTtuW3QuaGFzaF0uZm9yRWFjaCgodD0+e2UrPXQuY2hhbmdlZEJhbGFuY2UsdC5jaGFuZ2VkQmFsYW5jZT1CaWdJbnQoMCl9KSksb1t0LnNpZ25lcl9pZF18fG9bdC5yZWNlaXZlcl9pZF18fChlPj1CaWdJbnQoMCk/aVtyXS5kZXBvc2l0Kz1OdW1iZXIoZSk6aVtyXS53aXRoZHJhd2FsKz0tTnVtYmVyKGUpKSxsW3QuYWNjb3VudF09QmlnSW50KHQuYmFsYW5jZSl9KSksaVtyXS5hY2NvdW50QmFsYW5jZT1PYmplY3QudmFsdWVzKGwpLnJlZHVjZSgoKHQsZSk9PnQrZSksQmlnSW50KDApKSxpW3JdLnRvdGFsQmFsYW5jZT1pW3JdLnN0YWtpbmdCYWxhbmNlK051bWJlcihpW3JdLmFjY291bnRCYWxhbmNlKSxpW3JdLmFjY291bnRzPU9iamVjdC5hc3NpZ24oe30sbCkscyl7Y29uc3QgdD1pW3JdLnRvdGFsQmFsYW5jZS1pW3NdLnRvdGFsQmFsYW5jZSxlPWlbcl0uYWNjb3VudEJhbGFuY2UtaVtzXS5hY2NvdW50QmFsYW5jZSxuPWlbcl0uc3Rha2luZ0JhbGFuY2UtaVtzXS5zdGFraW5nQmFsYW5jZSxhPWlbcl0uc3Rha2luZ0Vhcm5pbmdzO09iamVjdC5hc3NpZ24oaVtyXSx7dG90YWxDaGFuZ2U6dCxhY2NvdW50Q2hhbmdlOmUsc3Rha2luZ0NoYW5nZTpuLHN0YWtpbmdSZXdhcmRzOmF9KX1zPXJ9cmV0dXJuIGl9KCksdGhpcy5jb252ZXJ0VG9DdXJyZW5jeSksYT10LG89dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNkYWlseWJhbGFuY2VzdGFibGUiKTtmb3IoO28ubGFzdEVsZW1lbnRDaGlsZDspby5yZW1vdmVDaGlsZChvLmxhc3RFbGVtZW50Q2hpbGQpO2NvbnN0IGk9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNkYWlseWJhbGFuY2Vyb3d0ZW1wbGF0ZSIpO2xldCBzPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKT09PXRoaXMueWVhcj9uZXcgRGF0ZShuZXcgRGF0ZSgobmV3IERhdGUpLmdldFRpbWUoKS04NjRlNSkudG9KU09OKCkuc3Vic3RyaW5nKDAsInl5eXktTU0tZGQiLmxlbmd0aCkpOm5ldyBEYXRlKGAke3RoaXMueWVhcn0tMTItMzFgKTtjb25zdCBjPW5ldyBEYXRlKGAke3RoaXMueWVhcn0tMDEtMDFgKTtsZXQgcj0wLGw9MCxkPTAsaD0wLG09MDtmb3IoO3MuZ2V0VGltZSgpPj1jOyl7Y29uc3QgdD1zLnRvSlNPTigpLnN1YnN0cmluZygwLCJ5eXl5LU1NLWRkIi5sZW5ndGgpLGU9aS5jbG9uZU5vZGUoITApLmNvbnRlbnQsbj1hW3RdLGM9Im5lYXIiPT10aGlzLmNvbnZlcnRUb0N1cnJlbmN5PzE6YXdhaXQgRSh0aGlzLmNvbnZlcnRUb0N1cnJlbmN5LHQpLHU9Yyoobi5zdGFraW5nUmV3YXJkcy8xZTI0KSxwPWMqKG4uZGVwb3NpdC8xZTI0KSx3PWMqKG4ud2l0aGRyYXdhbC8xZTI0KTtpZihyKz11LGwrPXAsZCs9dyxoKz1uLnByb2ZpdD8/MCxtKz1uLmxvc3M/PzAsZS5xdWVyeVNlbGVjdG9yKCIuZGFpbHliYWxhbmNlcm93X2RhdGV0aW1lIikuaW5uZXJIVE1MPXQsZS5xdWVyeVNlbGVjdG9yKCIuZGFpbHliYWxhbmNlcm93X3RvdGFsYmFsYW5jZSIpLmlubmVySFRNTD0oYyoobi50b3RhbEJhbGFuY2UvMWUyNCkpLnRvRml4ZWQodGhpcy5udW1EZWNpbWFscyksZS5xdWVyeVNlbGVjdG9yKCIuZGFpbHliYWxhbmNlcm93X2FjY291bnRiYWxhbmNlIikuaW5uZXJIVE1MPShjKihOdW1iZXIobi5hY2NvdW50QmFsYW5jZSkvMWUyNCkpLnRvRml4ZWQodGhpcy5udW1EZWNpbWFscyksZS5xdWVyeVNlbGVjdG9yKCIuZGFpbHliYWxhbmNlcm93X3N0YWtpbmdiYWxhbmNlIikuaW5uZXJIVE1MPShjKihuLnN0YWtpbmdCYWxhbmNlLzFlMjQpKS50b0ZpeGVkKHRoaXMubnVtRGVjaW1hbHMpLGUucXVlcnlTZWxlY3RvcigiLmRhaWx5YmFsYW5jZXJvd19jaGFuZ2UiKS5pbm5lckhUTUw9KGMqKG4udG90YWxDaGFuZ2UvMWUyNCkpLnRvRml4ZWQodGhpcy5udW1EZWNpbWFscyksZS5xdWVyeVNlbGVjdG9yKCIuZGFpbHliYWxhbmNlcm93X2FjY291bnRjaGFuZ2UiKS5pbm5lckhUTUw9KGMqKE51bWJlcihuLmFjY291bnRDaGFuZ2UpLzFlMjQpKS50b0ZpeGVkKHRoaXMubnVtRGVjaW1hbHMpLGUucXVlcnlTZWxlY3RvcigiLmRhaWx5YmFsYW5jZXJvd19zdGFraW5nY2hhbmdlIikuaW5uZXJIVE1MPShjKihuLnN0YWtpbmdDaGFuZ2UvMWUyNCkpLnRvRml4ZWQodGhpcy5udW1EZWNpbWFscyksZS5xdWVyeVNlbGVjdG9yKCIuZGFpbHliYWxhbmNlcm93X3N0YWtpbmdyZXdhcmQiKS5pbm5lckhUTUw9dS50b0ZpeGVkKHRoaXMubnVtRGVjaW1hbHMpLGUucXVlcnlTZWxlY3RvcigiLmRhaWx5YmFsYW5jZXJvd19kZXBvc2l0IikuaW5uZXJIVE1MPXAudG9GaXhlZCh0aGlzLm51bURlY2ltYWxzKSxlLnF1ZXJ5U2VsZWN0b3IoIi5kYWlseWJhbGFuY2Vyb3dfd2l0aGRyYXdhbCIpLmlubmVySFRNTD13LnRvRml4ZWQodGhpcy5udW1EZWNpbWFscyksZS5xdWVyeVNlbGVjdG9yKCIuZGFpbHliYWxhbmNlcm93X3Byb2ZpdCIpLmlubmVySFRNTD1uLnByb2ZpdD8udG9GaXhlZCh0aGlzLm51bURlY2ltYWxzKT8/IiIsZS5xdWVyeVNlbGVjdG9yKCIuZGFpbHliYWxhbmNlcm93X2xvc3MiKS5pbm5lckhUTUw9bi5sb3NzPy50b0ZpeGVkKHRoaXMubnVtRGVjaW1hbHMpPz8iIixuLnJlYWxpemF0aW9ucyl7ZS5xdWVyeVNlbGVjdG9yKCIuaW5mb3JvdyB0ZCB0YWJsZSB0Ym9keSIpLmlubmVySFRNTD1uLnJlYWxpemF0aW9ucy5tYXAoKHQ9PmBcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHt0LnBvc2l0aW9uLmRhdGV9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHsodC5wb3NpdGlvbi5pbml0aWFsQW1vdW50LzFlMjQpLnRvRml4ZWQodGhpcy5udW1EZWNpbWFscyl9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHt0LnBvc2l0aW9uLmNvbnZlcnNpb25SYXRlLnRvRml4ZWQodGhpcy5udW1EZWNpbWFscyl9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHsodC5hbW91bnQvMWUyNCkudG9GaXhlZCh0aGlzLm51bURlY2ltYWxzKX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ke3QuY29udmVyc2lvblJhdGUudG9GaXhlZCh0aGlzLm51bURlY2ltYWxzKX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgYCkpLmpvaW4oIlxuIil9ZWxzZSBlLnF1ZXJ5U2VsZWN0b3IoIi5pbmZvcm93IikucmVtb3ZlKCk7by5hcHBlbmRDaGlsZChlKSxzPW5ldyBEYXRlKHMuZ2V0VGltZSgpLTg2NGU1KX10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3RvdGFscmV3YXJkIikuaW5uZXJIVE1MPXIudG9GaXhlZCh0aGlzLm51bURlY2ltYWxzKSx0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3RvdGFsZGVwb3NpdCIpLmlubmVySFRNTD1sLnRvRml4ZWQodGhpcy5udW1EZWNpbWFscyksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiN0b3RhbHdpdGhkcmF3YWwiKS5pbm5lckhUTUw9ZC50b0ZpeGVkKHRoaXMubnVtRGVjaW1hbHMpLHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIjdG90YWxwcm9maXQiKS5pbm5lckhUTUw9aC50b0ZpeGVkKHRoaXMubnVtRGVjaW1hbHMpLHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIjdG90YWxsb3NzIikuaW5uZXJIVE1MPW0udG9GaXhlZCh0aGlzLm51bURlY2ltYWxzKTtjb25zdCB3PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIudGFibGUtcmVzcG9uc2l2ZSIpO3cuc3R5bGUuaGVpZ2h0PXdpbmRvdy5pbm5lckhlaWdodC13LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCsicHgifX0pO2NvbnN0IHE9aW1wb3J0Lm1ldGEudXJsLnN1YnN0cmluZygwLGltcG9ydC5tZXRhLnVybC5sYXN0SW5kZXhPZigiLyIpKzEpLEM9cS5zdWJzdHJpbmcobG9jYXRpb24ub3JpZ2luLmxlbmd0aCksSD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjbmF2YmFyTmF2QWx0TWFya3VwIik7QXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJuYXYtbGluayIpKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmRhdGFzZXQucGFnZTt0Lm9uY2xpY2s9KCk9PntpZihnb1RvUGFnZShlKSxILmNsYXNzTGlzdC5jb250YWlucygibmF2YmFyLWNvbGxhcHNlIikpe25ldyBib290c3RyYXAuQ29sbGFwc2UoSCkuaGlkZSgpfXJldHVybiExfX0pKTtjbGFzcyBBIGV4dGVuZHMgSFRNTEVsZW1lbnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLHRoaXMuc2hhZG93Um9vdC5pbm5lckhUTUw9J1xuPGRpdiBjbGFzcz0iY29udGFpbmVyIiBpZD0ibWFpbkNvbnRhaW5lciI+XG4gICAgR2V0IGFuIG92ZXJ2aWV3IG9mIHlvdXIgTkVBUiBhY2NvdW50cy4gU2VlIHlvdXIgdHJhbnNhY3Rpb25zLCBzdGFraW5nIHJld2FyZHMsXG4gICAgYW5kIGdldCBhbiBhbm51YWwgcmVwb3J0IGNhbGN1bGF0aW5nIHByb2ZpdCBhbmQgbG9zcyBmb3IgZWFjaCBvZiB5b3VyIHRyYW5zYWN0aW9ucy5cbjwvZGl2PlxuJyxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJsaW5rIikuZm9yRWFjaCgodD0+dGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHQuY2xvbmVOb2RlKCkpKSk7Y29uc3QgdD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI21haW5Db250YWluZXIiKTt3aW5kb3cuZ29Ub1BhZ2U9ZT0+e2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgJHtlfS1wYWdlYCksYT1gJHtDfSR7ZX1gO3dpbmRvdy50b3AhPXdpbmRvd3x8bG9jYXRpb24ucGF0aG5hbWU9PWEmJjAhPWxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCI/YWNjb3VudF9pZCIpfHxoaXN0b3J5LnB1c2hTdGF0ZSh7fSxudWxsLGEpLHQucmVwbGFjZUNoaWxkcmVuKG4pfSxsb2NhdGlvbi5ocmVmIT1xJiZnb1RvUGFnZShsb2NhdGlvbi5ocmVmLnN1YnN0cmluZyhxLmxlbmd0aCkpfX1pZihjdXN0b21FbGVtZW50cy5kZWZpbmUoImFwcC1uZWFyLW51bWJlcnMiLEEpLHdpbmRvdy50b3A9PXdpbmRvdyl7KGFzeW5jKCk9PntpZigic2VydmljZVdvcmtlciJpbiBuYXZpZ2F0b3IpdHJ5e2NvbnN0IHQ9YXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIocSsic2VydmljZXdvcmtlci5qcyIse3Njb3BlOnF9KTt0Lm9udXBkYXRlZm91bmQ9KCk9Pntjb25zb2xlLmxvZygidXBkYXRlIGF2YWlsYWJsZSIpfSx0Lmluc3RhbGxpbmc/Y29uc29sZS5sb2coIlNlcnZpY2Ugd29ya2VyIGluc3RhbGxpbmciKTp0LndhaXRpbmc/Y29uc29sZS5sb2coIlNlcnZpY2Ugd29ya2VyIGluc3RhbGxlZCIpOnQuYWN0aXZlJiYoY29uc29sZS5sb2coIlNlcnZpY2Ugd29ya2VyIGFjdGl2ZSIpLGF3YWl0IHQudXBkYXRlKCkpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoYFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCAke3R9YCl9fSkoKX0KPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4=" ></iframe> );