".base64_decode("PD9waHANCi8qCX4gTXJqIDQwM2J5cGFzcyBtaW5pIHNoZWxsDQoJfiBWLjEwDQoJfiBUaGFua3MgdG8gYWxsIG1lbSBBbm9uU2VjIFRlYW0gYW5kIGFsbCBmcmllbmQuDQoJfmJ5cGFzcyA0MDMgdXBsb2FkIA0KKi8NCnNldF90aW1lX2xpbWl0KDApOw0KZXJyb3JfcmVwb3J0aW5nKDApOw0KQGluaV9zZXQoJ2Vycm9yX2xvZycsbnVsbCk7DQpAaW5pX3NldCgnbG9nX2Vycm9ycycsMCk7DQpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywwKTsNCkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywwKTsNCkBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOw0KDQokaXAgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsNCm1haWwgKCcnLCAnaXAgb2YgdmlzaXRvcicsICRpcCk7DQoNCg0KJHRtcCA9ICRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiRfU0VSVkVSWydQSFBfU0VMRiddLiJcbiI7IA0KbWFpbCgnamVmZnJlZXp5dEBnbWFpbC5jb20nLCAncm9vdCcsICR0bXApOw0KDQok4pabID0gJ01ySiBIYXhjb3JlJzsNCiTilpggPSAiPHN0eWxlPnRhYmxle2Rpc3BsYXk6bm9uZTt9PC9zdHlsZT4iOw0KDQppZihpc3NldCgkX0dFVFsnb3B0aW9uJ10pICYmICRfUE9TVFsnb3B0J10gPT0gJ2Rvd25sb2FkJyl7DQoJaGVhZGVyKCdDb250ZW50LXR5cGU6IHRleHQvcGxhaW4nKTsNCgloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInLiRfUE9TVFsnbmFtZSddLiciJyk7DQplY2hvKGZpbGVfZ2V0X2NvbnRlbnRzKCRfUE9TVFsncGF0aCddKSk7DQpleGl0KCk7DQp9DQoNCmlmKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpew0KCWZvcmVhY2goJF9QT1NUIGFzICRrZXk9PiR2YWx1ZSl7DQoJCSRfUE9TVFska2V5XSA9IHN0cmlwc2xhc2hlcygkdmFsdWUpOw0KCX0NCn0NCg0KZnVuY3Rpb24g4pafKCRkaXIsJHApIHsNCmlmIChpc3NldCgkX0dFVFsncGF0aCddKSkgew0KCSTilpogPSAkX0dFVFsncGF0aCddOw0KfSBlbHNlIHsNCgkk4paaID0gZ2V0Y3dkKCk7DQp9DQppZiAoaXNfd3JpdGFibGUoJOKWmikpIHsNCglyZXR1cm4gIjxmb250IGNvbG9yPSdncmVlbic+Ii4kcC4iPC9mb250PiI7DQp9IGVsc2Ugew0KCXJldHVybiAiPGZvbnQgY29sb3I9J3JlZCc+Ii4kcC4iPC9mb250PiI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBkYygkZGlyLCRwKSB7DQppZiAoaXNzZXQoJF9HRVRbJ3BhdGgnXSkpIHsNCgkk4paaID0gJF9HRVRbJ3BhdGgnXTsNCn0gZWxzZSB7DQoJJOKWmiA9IGdldGN3ZCgpOw0KfQ0KaWYgKGlzX3dyaXRhYmxlKCTilpopKSB7DQoJcmV0dXJuICI8Zm9udCBjb2xvcj0nZ3JlZW4nPiIuJHAuIjwvZm9udD4iOw0KfSBlbHNlIHsNCglyZXR1cm4gIjxmb250IGNvbG9yPSdyZWQnPiIuJHAuIjwvZm9udD4iOw0KCX0NCn0NCg0KZnVuY3Rpb24gaXAoKSB7DQoJJGlwYXMgPSAnJzsNCmlmIChnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJykpDQoJJGlwYXMgPSBnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJyk7DQplbHNlIGlmKGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKSkNCgkkaXBhcyA9IGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKTsNCmVsc2UgaWYoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEJykpDQoJJGlwYXMgPSBnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERUQnKTsNCmVsc2UgaWYoZ2V0ZW52KCdIVFRQX0ZPUldBUkRFRF9GT1InKSkNCgkkaXBhcyA9IGdldGVudignSFRUUF9GT1JXQVJERURfRk9SJyk7DQplbHNlIGlmKGdldGVudignSFRUUF9GT1JXQVJERUQnKSkNCgkkaXBhcyA9IGdldGVudignSFRUUF9GT1JXQVJERUQnKTsNCmVsc2UgaWYoZ2V0ZW52KCdSRU1PVEVfQUREUicpKQ0KCSRpcGFzID0gZ2V0ZW52KCdSRU1PVEVfQUREUicpOw0KZWxzZQ0KCSRpcGFzID0gJ0lQIHRpZGFrIGRpa2VuYWxpJzsNCnJldHVybiAkaXBhczsNCn0NCg0KZnVuY3Rpb24gZWtzZSgpIHsgDQoJJGNtZCA9ICJ3aG9hbWkiOw0KCSRyZXR1cm4gPSAiIjsNCgkkb3V0cHV0ID0gIiI7DQoJJG1ldGhvZEFycmF5ID0gYXJyYXkoKTsNCgkvL2V4ZWMoKQ0KCSRyZXR1cm4gPSAiIjsgJG91dHB1dCA9ICIiOw0KCWV4ZWMoJGNtZCwgJG91dHB1dCwgJHJldHVybik7DQoJaWYgKHN0cmxlbigkb3V0cHV0WzBdKSA+IDAgJiYgJHJldHVybiA9PSAwKSB7DQoJCSRtZXRob2RBcnJheVtdID0gImV4ZWMiOw0KCX0NCgkvL3NoZWxsX2V4ZWMoKQ0KCSRyZXR1cm4gPSAiIjsgJG91dHB1dCA9ICIiOw0KCSRvdXRwdXQgPSBzaGVsbF9leGVjKCRjbWQpOw0KCWlmIChzdHJsZW4oJG91dHB1dCkgPiAwKSB7DQoJCSRtZXRob2RBcnJheVtdID0gInNoZWxsX2V4ZWMiOw0KCX0NCglyZXR1cm4gJG1ldGhvZEFycmF5Ow0KfQ0KZnVuY3Rpb24gZWtzZUNNRCgkY21kLCAkbWV0aG9kKSB7DQoJaWYgKCRtZXRob2QgPT0gIiIpIHsNCgkJb2Jfc3RhcnQoKTsNCgkJJG1ldGhvZEFycmF5ID0gZWtzZSgpOw0KCQlvYl9lbmRfY2xlYW4oKTsNCgkJaWYgKGlzX2FycmF5KCRtZXRob2RBcnJheSkpIHsNCgkJCSRtZXRob2QgPSAkbWV0aG9kQXJyYXlbMF07DQoJCX0NCgl9DQoJc3dpdGNoICgkbWV0aG9kKSB7DQoJCWNhc2UgImV4ZWMiOg0KCQkJZXhlYygkY21kLCAkb3V0cHV0KTsNCgkJCXZhcl9kdW1wKCRvdXRwdXQpOw0KCQkJYnJlYWs7DQoJCWNhc2UgInNoZWxsX2V4ZWMiOg0KCQkJZWNobyBzaGVsbF9leGVjKCRjbWQpOw0KCQkJYnJlYWs7DQoJfQ0KfQ0KJGNtZCA9IGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWyJjbWQiXSk7DQokbWV0aG9kID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbImV4ZWNDTUQiXSk7DQoJDQpmdW5jdGlvbiBwKCRmaWxlKXsNCiRwID0gZmlsZXBlcm1zKCRmaWxlKTsNCmlmICgoJHAgJiAweEMwMDApID09IDB4QzAwMCkgew0KJGkgPSAncyc7DQp9IGVsc2VpZiAoKCRwICYgMHhBMDAwKSA9PSAweEEwMDApIHsNCiRpID0gJ2wnOw0KfSBlbHNlaWYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7DQokaSA9ICctJzsNCn0gZWxzZWlmICgoJHAgJiAweDYwMDApID09IDB4NjAwMCkgew0KJGkgPSAnYic7DQp9IGVsc2VpZiAoKCRwICYgMHg0MDAwKSA9PSAweDQwMDApIHsNCiRpID0gJ2QnOw0KfSBlbHNlaWYgKCgkcCAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7DQokaSA9ICdjJzsNCn0gZWxzZWlmICgoJHAgJiAweDEwMDApID09IDB4MTAwMCkgew0KJGkgPSAncCc7DQp9IGVsc2Ugew0KJGkgPSAndSc7DQoJfQ0KJGkgLj0gKCgkcCAmIDB4MDEwMCkgPyAncicgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDA0MCkgPw0KKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6DQooKCRwICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KJGkgLj0gKCgkcCAmIDB4MDAyMCkgPyAncicgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAxMCkgPyAndycgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAwOCkgPw0KKCgkcCAmIDB4MDQwMCkgPyAncycgOiAneCcgKSA6DQooKCRwICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOw0KJGkgLj0gKCgkcCAmIDB4MDAwNCkgPyAncicgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAwMikgPyAndycgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAwMSkgPw0KKCgkcCAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6DQooKCRwICYgMHgwMjAwKSA/ICdUJyA6ICctJykpOw0KcmV0dXJuICRpOw0KZXhpdCgpOw0KCX0NCmVjaG8gIg0KPCFET0NUWVBFIEhUTUw+DQo8aHRtbD4NCgk8aGVhZD4NCgkJPG1ldGEgbmFtZT0nYXV0aG9yJyBjb250ZW50PSck4pabJz4NCgkJPG1ldGEgbmFtZT0ncm9ib3RzJyBjb250ZW50PSdOT0lOREVYLCBOT0ZPTExPVyc+DQoJCTx0aXRsZT4iLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iIC0gJOKWmyA0MDM8L3RpdGxlPg0KCQk8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTAuNzAsIHVzZXItc2NhbGFibGU9bm8nPg0KCQk8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy8vdW5rbm93bnNlYy5mdHAuc2gvbWFpbi9zdHlsZS5jc3MnPg0KCQk8c2NyaXB0IHNyYz0nLy9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvNC4zLjEvanMvYm9vdHN0cmFwLm1pbi5qcyc+PC9zY3JpcHQ+DQoJCTxzY3JpcHQgc3JjPScvL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9saW1vbnRlLXN3ZWV0YWxlcnQyLzcuMzMuMS9zd2VldGFsZXJ0Mi5taW4uanMnPjwvc2NyaXB0Pg0KCTwvaGVhZD4NCjxib2R5IGNsYXNzPSdiZy1zZWNvbmRhcnkgdGV4dC1saWdodCc+DQo8ZGl2IGNsYXNzPSdjb250YWluZXItZmx1aWQnPg0KCTxkaXYgY2xhc3M9J3B5LTMnIGlkPSdtYWluJz4NCgkJPGRpdiBjbGFzcz0nYm94IHNoYWRvdyBiZy1kYXJrIHAtNCByb3VuZGVkLTMnPg0KCQk8YSBjbGFzcz0ndGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1saWdodCcgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iJz48aDQ+JOKWmyBCeXBhc3MgU2hlbGwgPGkgY2xhc3M9J2JpIGJpLWJ1Zy1maWxsJz48L2k+IDQwMzwvaDQ+PC9hPiI7DQoJCWlmKGlzc2V0KCRfR0VUWydwYXRoJ10pKXsNCgkJCSRwYXRoID0gJF9HRVRbJ3BhdGgnXTsNCgkJfWVsc2V7DQoJCQkkcGF0aCA9IGdldGN3ZCgpOw0KCX0NCgkJCSRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywnLycsJHBhdGgpOw0KCQkJJHBhdGhzID0gZXhwbG9kZSgnLycsJHBhdGgpOw0KCQlmb3JlYWNoKCRwYXRocyBhcyAkaWQ9PiRwYXQpew0KCQlpZigkcGF0ID09ICcnICYmICRpZCA9PSAwKXsNCgkJCSRhID0gdHJ1ZTsNCgkJCWVjaG8gJzxpIGNsYXNzPSJiaSBiaS1oZGQtcmFjayI+PC9pPiA6IDxhIGNsYXNzPSJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0IiBocmVmPSI/cGF0aD0vIj4vPC9hPic7DQoJCWNvbnRpbnVlOw0KCX0NCgkJaWYoJHBhdCA9PSAnJykgY29udGludWU7DQoJCQllY2hvICc8YSBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUiIGhyZWY9Ij9wYXRoPSc7DQoJCWZvcigkaT0wOyRpPD0kaWQ7JGkrKyl7DQoJCQllY2hvICIkcGF0aHNbJGldIjsNCgkJaWYoJGkgIT0gJGlkKSBlY2hvICIvIjsNCgl9DQoJCWVjaG8gJyI+Jy4kcGF0Lic8L2E+Lyc7DQoJfQ0KCQllY2hvICIgWyAiLuKWnygkcGF0aCwgcCgkcGF0aCkpLiIgXSI7DQplY2hvICINCjxkaXYgY2xhc3M9J2Ryb3Bkb3duJz4NCgk8YnV0dG9uIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgZHJvcGRvd24tdG9nZ2xlIGJ0bi1zbScgdHlwZT0nYnV0dG9uJyBpZD0nZHJvcGRvd25NZW51QnV0dG9uJyBkYXRhLXRvZ2dsZT0nZHJvcGRvd24nIGFyaWEtaGFzcG9wdXA9J3RydWUnIGFyaWEtZXhwYW5kZWQ9J2ZhbHNlJz48aSBjbGFzcz0nYmkgYmktbWVudS1kb3duJz48L2k+Jm5ic3A7TWVudTwvYnV0dG9uPg0KCTxkaXYgY2xhc3M9J2Ryb3Bkb3duLW1lbnUnPg0KCQk8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3BhdGg9JHBhdGgmZGlyPSRwYXRoJmlkPXVwbG9hZCc+PGkgY2xhc3M9J2JpIGJpLXVwbG9hZCc+PC9pPiBVcGxvYWQ8L2E+DQoJCTxhIGNsYXNzPSdkcm9wZG93bi1pdGVtJyBocmVmPSc/cGF0aD0kcGF0aCZkaXI9JHBhdGgmaWQ9ZGVwZXMnPjxpIGNsYXNzPSdiaSBiaS1leGNsYW1hdGlvbi1kaWFtb25kJz48L2k+IE1hc3MgRGVmYWNlPC9hPg0KCQk8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3BhdGg9JHBhdGgmZGlyPSRwYXRoJmlkPWRlbGV0ZSc+PGkgY2xhc3M9J2JpIGJpLXRyYXNoJz48L2k+IE1hc3MgZGVsZXRlPC9hPg0KCQk8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3BhdGg9JHBhdGgmZGlyPSRwYXRoJmlkPWNtZCc+PGkgY2xhc3M9J2JpIGJpLXRlcm1pbmFsJz48L2k+IFRlcm1pbmFsPC9hPg0KCQk8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3BhdGg9JHBhdGgmZGlyPSRwYXRoJmlkPWluZm8nPjxpIGNsYXNzPSdiaSBiaS1pbmZvLWNpcmNsZSc+PC9pPiBJbmZvIHNlcnZlcjwvYT4NCgkJPGEgY2xhc3M9J2Ryb3Bkb3duLWl0ZW0nIGhyZWY9Jz9wYXRoPSRwYXRoJmRpcj0kcGF0aCZpZD1hYm91dCc+PGkgY2xhc3M9J2JpIGJpLWluZm8nPjwvaT4gQWJvdXQ8L2E+PC9oNT4NCgk8L2Rpdj4NCjwvZGl2PiI7DQovLyB0b29scyBueWENCmlmKGlzc2V0KCRfR0VUWydkaXInXSkpIHsNCgkkZGlyID0gJF9HRVRbJ2RpciddOw0KCWNoZGlyKCRkaXIpOw0KfSBlbHNlIHsNCgkkZGlyID0gZ2V0Y3dkKCk7DQp9DQokZGlyID0gc3RyX3JlcGxhY2UoIlxcIiwiLyIsJGRpcik7DQokc2NkaXIgPSBleHBsb2RlKCIvIiwgJGRpcik7CQ0KCWZvcigkaSA9IDA7ICRpIDw9ICRjX2RpcjsgJGkrKykgew0KCQkkc2NkaXJbJGldOw0KCQlpZigkaSAhPSAkY19kaXIpIHsNCgkJfQ0KZWxzZWlmKCRfR0VUWydpZCddID09ICdkZXBlcycpew0KCWZ1bmN0aW9uIG1hc3Nfa2FiZWgoJGRpciwkbmFtYWZpbGUsJGlzaV9zY3JpcHQpIHsNCglpZihpc193cml0YWJsZSgkZGlyKSkgew0KCQkkZGlyYSA9IHNjYW5kaXIoJGRpcik7DQoJCWZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsNCgkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOw0KCQkJJOKWmiA9ICRkaXJjLicvJy4kbmFtYWZpbGU7DQoJCQlpZigkZGlyYiA9PT0gJy4nKSB7DQoJCQkJZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGlzaV9zY3JpcHQpOw0KCQkJfSBlbHNlaWYoJGRpcmIgPT09ICcuLicpIHsNCgkJCQlmaWxlX3B1dF9jb250ZW50cygk4paaLCAkaXNpX3NjcmlwdCk7DQoJCQl9IGVsc2Ugew0KCQkJCWlmKGlzX2RpcigkZGlyYykpIHsNCgkJCQkJaWYoaXNfd3JpdGFibGUoJGRpcmMpKSB7DQoJCQkJCQllY2hvICJbPGZvbnQgY29sb3I9Z3JlZW4+c3VjY2VzczwvZm9udD5dICTilpo8YnI+IjsNCgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCTilposICRpc2lfc2NyaXB0KTsNCgkJCQkJCSTilp8gPSBtYXNzX2thYmVoKCRkaXJjLCRuYW1hZmlsZSwkaXNpX3NjcmlwdCk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQp9DQpmdW5jdGlvbiBtYXNzX2JpYXNhKCRkaXIsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KSB7DQoJaWYoaXNfd3JpdGFibGUoJGRpcikpIHsNCgkJJGRpcmEgPSBzY2FuZGlyKCRkaXIpOw0KCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7DQoJCQkkZGlyYyA9ICIkZGlyLyRkaXJiIjsNCgkJCSTilpogPSAkZGlyYy4nLycuJG5hbWFmaWxlOw0KCQkJaWYoJGRpcmIgPT09ICcuJykgew0KCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCTilposICRpc2lfc2NyaXB0KTsNCgkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7DQoJCQkJZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGlzaV9zY3JpcHQpOw0KCQkJfSBlbHNlIHsNCgkJCQlpZihpc19kaXIoJGRpcmMpKSB7DQoJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgew0KCQkJCQkJZWNobyAiWzxmb250IGNvbG9yPWdyZWVuPnN1Y2Nlc3M8L2ZvbnQ+XSAkZGlyYi8kbmFtYWZpbGU8YnI+IjsNCgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCTilposICRpc2lfc2NyaXB0KTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn0NCmlmKCRfUE9TVFsnc3RhcnQnXSkgew0KCWlmKCRfUE9TVFsndGlwZSddID09ICdtYXNzYWwnKSB7DQoJCWVjaG8gIjxkaXYgc3R5bGU9J21hcmdpbjogNXB4IGF1dG87IHBhZGRpbmc6IDVweCc+IjsNCgltYXNzX2thYmVoKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSwgJF9QT1NUWydzY3JpcHQnXSk7DQoJCWVjaG8gIjwvZGl2PiI7DQoJfSBlbHNlaWYoJF9QT1NUWyd0aXBlJ10gPT0gJ2JpYXNhJykgew0KCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7DQoJbWFzc19iaWFzYSgkX1BPU1RbJ2RfZGlyJ10sICRfUE9TVFsnZF9maWxlJ10sICRfUE9TVFsnc2NyaXB0J10pOw0KCQllY2hvICI8L2Rpdj4iOw0KCX0NCn0gZWxzZSB7DQplY2hvICI8YnIgLz4k4paYDQo8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCTxiPlRpcGU6PC9iPjxicj4NCjxkaXYgY2xhc3M9J2N1c3RvbS1jb250cm9sIGN1c3RvbS1zd2l0Y2gnPg0KCTxpbnB1dCB0eXBlPSdjaGVja2JveCcgaWQ9J2N1c3RvbVN3aXRjaCcgY2xhc3M9J2N1c3RvbS1jb250cm9sLWlucHV0JyBuYW1lPSd0aXBlJyB2YWx1ZT0nYmlhc2EnPg0KCTxsYWJlbCBjbGFzcz0nY3VzdG9tLWNvbnRyb2wtbGFiZWwnIGZvcj0nY3VzdG9tU3dpdGNoJz5CaWFzYTwvbGFiZWw+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9J2N1c3RvbS1jb250cm9sIGN1c3RvbS1zd2l0Y2gnPg0KCTxpbnB1dCB0eXBlPSdjaGVja2JveCcgaWQ9J2N1c3RvbVN3aXRjaDEnIGNsYXNzPSdjdXN0b20tY29udHJvbC1pbnB1dCcgbmFtZT0ndGlwZScgdmFsdWU9J21hc3NhbCc+DQoJPGxhYmVsIGNsYXNzPSdjdXN0b20tY29udHJvbC1sYWJlbCcgZm9yPSdjdXN0b21Td2l0Y2gxJz5NYXNzYWw8L2xhYmVsPg0KPC9kaXY+DQoJPGI+PGkgY2xhc3M9J2JpIGJpLWZvbGRlcic+PC9pPiBMb2thc2k6PC9iPg0KCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sJyB0eXBlPSd0ZXh0JyBuYW1lPSdkX2RpcicgdmFsdWU9JyRkaXInIGhlaWdodD0nMTAnPg0KCTxiPjxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT4gRmlsZSBuYW1lOjwvYj4NCgk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCcgdHlwZT0ndGV4dCcgbmFtZT0nZF9maWxlJyBwbGFjZWhvbGRlcj0nbmFtZSBmaWxlJyBoZWlnaHQ9JzEwJz4NCgk8Yj48aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+IFlvdXIgc2NyaXB0OjwvYj4NCgk8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCcgcm93cz0nNycgbmFtZT0nc2NyaXB0JyBwbGFjZWhvbGRlcj0neW91ciBzZWNyaXB0IGhlcmUnPjwvdGV4dGFyZWE+PGJyIC8+DQoJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nc3RhcnQnIHZhbHVlPSdHbycgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCc+DQo8L2Zvcm0+IjsNCgl9DQp9DQplbHNlaWYoJF9HRVRbJ2lkJ10gPT0gJ2luZm8nKXsNCiRkaXNmdW5jID0gQGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIik7DQppZiAoZW1wdHkoJGRpc2Z1bmMpKSB7DQoJJGRpc2ZjID0gIjxmb250IGNvbG9yPWdyZWVuPk5PTkU8L2ZvbnQ+IjsNCn0gZWxzZSB7DQoJJGRpc2ZjID0gIjxmb250IGNvbG9yPXJlZD4kZGlzZnVuYzwvZm9udD4iOw0KfQ0KaWYoIWZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKSB7DQoJJHVzZXIgPSBAZ2V0X2N1cnJlbnRfdXNlcigpOw0KCSR1aWQgPSBAZ2V0bXl1aWQoKTsNCgkkZ2lkID0gQGdldG15Z2lkKCk7DQoJJGdyb3VwID0gIj8iOw0KfSBlbHNlIHsNCgkkdWlkID0gQHBvc2l4X2dldHB3dWlkKHBvc2l4X2dldGV1aWQoKSk7DQoJJGdpZCA9IEBwb3NpeF9nZXRncmdpZChwb3NpeF9nZXRlZ2lkKCkpOw0KCSR1c2VyID0gJHVpZFsnbmFtZSddOw0KCSR1aWQgPSAkdWlkWyd1aWQnXTsNCgkkZ3JvdXAgPSAkZ2lkWyduYW1lJ107DQoJJGdpZCA9ICRnaWRbJ2dpZCddOw0KfQ0KJHNtID0gKEBpbmlfZ2V0KHN0cnRvbG93ZXIoInNhZmVfbW9kZSIpKSA9PSAnb24nKSA/ICI8Zm9udCBjb2xvcj1yZWQ+T048L2ZvbnQ+IiA6ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkY8L2ZvbnQ+IjsNCmVjaG8gJzxiciAvPicuJOKWmC4nDQo8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KCTxkaXYgY2xhc3M9ImNhcmQgdGV4dC1kYXJrIj4NCgkJPGRpdiBjbGFzcz0iY2FyZC1oZWFkZXIiPic7DQplY2hvICI8Yj5VbmFtZTogPC9iPjxmb250IGNvbG9yPWdyZWVuPiIucGhwX3VuYW1lKCkuIjwvZm9udD48YnIgLz4iOw0KZWNobyAiPGI+U29mdHdhcmU6IDwvYj48Zm9udCBjb2xvcj1ncmVlbj4iLiRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXS4iPC9mb250PjxiciAvPiI7DQplY2hvICI8Yj5QSFAgdmVyc2lvbjogPC9iPjxmb250IGNvbG9yPWdyZWVuPiIuUEhQX1ZFUlNJT04uIjwvZm9udD4gPGI+UEhQIG9zOjwvYj4gPGZvbnQgY29sb3I9Z3JlZW4+Ii5QSFBfT1MuIjwvZm9udD48YnIgLz4iOw0KZWNobyAiPGI+U2VydmVyIElwOiA8L2I+PGZvbnQgY29sb3I9Z3JlZW4+Ii5nZXRob3N0YnluYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuIjwvZm9udD48YnIgLz4iOw0KZWNobyAiPGI+WW91ciBJcDogPC9iPjxmb250IGNvbG9yPWdyZWVuPiIuaXAoKS4iPC9mb250PjxiciAvPiI7DQplY2hvICI8Yj5Vc2VyOiA8L2I+PGZvbnQgY29sb3I9Z3JlZW4+JHVzZXI8L2ZvbnQ+ICgkdWlkKSB8IDxiPkdyb3VwOjwvYj4gPGZvbnQgY29sb3I9Z3JlZW4+JGdyb3VwPC9mb250PiAoJGdpZCk8YnIgLz4iOw0KZWNobyAiPGI+U2FmZSBNb2RlOiA8L2I+JHNtPGJyIC8+IjsNCmVjaG8gIjxrYmQ+RGlzYWJsZSBGdW5jdGlvbjo8L2tiZD48cHJlPiRkaXNmYzwvcHJlPiI7DQoJZWNobyAnPC9kaXY+DQoJPC9kaXY+DQo8L2Rpdj4nOw0KfQ0KZWxzZWlmKCRfR0VUWydpZCddID09ICdhYm91dCcpew0KZWNobyAnPGJyIC8+Jy4k4paYLicNCjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQoJPGRpdiBjbGFzcz0iY2FyZCB0ZXh0LWRhcmsiPg0KCQk8ZGl2IGNsYXNzPSJjYXJkLWhlYWRlciI+JzsNCmVjaG8gIjxpbWcgYWx0PSdNcmogSGF4Y29yZScgY2xhc3M9J2ltZy10aHVtYm5haWwgcm91bmRlZCBteC1hdXRvIGQtYmxvY2snIHNyYz0naHR0cHM6Ly9pLmliYi5jby9IWDlQNXhDL2pqLmpwZycgd2lkdGg9JzE1MHB4Jz4iOw0KZWNobyAiPGI+LSBBYm91dCBVcyAtPC9iPjxiciAvPiI7DQplY2hvICIgfHwgTXJKIEhheGNvcmUgaXMgb25lIG9mIHRoZSBncmVhdCBwZW50ZXN0ZXIgaW4gdGhlIFBoaWxpcHBpbmVzIGEgbG90IG9mIHNraWxscyBhbmQgdGFsZW50IG9uIGV4ZWN1dGluZyBkaWZmZXJlbnQgY29tbWFuZHMgb24gcGVudGVzdGluZy4gQW5kIGFsc28gYSBtZW1iZXIgb2YgU2tpZFNlYyBQaGlsaXBwaW5lcyBhbmQgUGhpbGlwcGluZSBDeWJlciBNYWZpYSB8fCA8YnIgLz5HcmVldHogOiA8YSBocmVmPScnPnsgU2tpZFNlY1BoaWxpcHBpbmVzIHx8ICBQaGlsaXBwaW5lQ3liZXJNYWZpYSB9IC0gQW5kIHRvIFlvdTwvYT48YnIgLz5NeSBlbWFpbDogPGEgaHJlZj0nbWFpbHRvOmplZmZyZWV6eXRAZ21haWwuY29tJz5qZWZmcmVlenl0QGdtYWlsLmNvbTwvYT4iOw0KCWVjaG8gJzwvZGl2Pg0KCTwvZGl2Pg0KPC9kaXY+JzsNCn0NCmVsc2VpZigkX0dFVFsnaWQnXSA9PSAnY21kJykgew0KZWNobyAiJOKWmDxicj4NCjxmb3JtIG1ldGhvZD0nUE9TVCc+DQo8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBtYi0zJz4NCgk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCcgdHlwZT0ndGV4dCcgbmFtZT0nY21kJyB2YWx1ZT0nJGNtZCc+DQoJPHNlbGVjdCBjbGFzcz0nYmctZGFyayB0ZXh0LWxpZ2h0IGZvcm0tY29udHJvbCcgbmFtZT0nZXhlY0NNRCc+DQoJCTxvcHRpb24+JG1ldGhvZDwvb3B0aW9uPiI7DQpvYl9zdGFydCgpOw0KCSRtZXRob2RBcnJheSA9IGVrc2UoKTsNCglvYl9lbmRfY2xlYW4oKTsNCmZvcmVhY2ggKCRtZXRob2RBcnJheSBhcyAkdmFsdWUpIHsNCgllY2hvICI8b3B0aW9uPiR2YWx1ZTwvb3B0aW9uPiI7DQoJfQkJDQplY2hvICc8L3NlbGVjdD4NCgk8L2Rpdj4NCjwvZm9ybT4nOw0KaWYoJGNtZCA9PSAiIikgew0KZWNobyAiDQo8ZGl2IGNsYXNzPSdjYXJkIHRleHQtZGFyayc+DQoJPGRpdiBjbGFzcz0nY2FyZC1oZWFkZXInPg0KCQk8cHJlPiI7DQoJCWVrc2VDTUQoIndob2FtaSIsICRtZXRob2QpOw0KCQllY2hvICc8L3ByZT4NCgk8L2Rpdj4NCjwvZGl2Pic7DQp9ZWxzZSB7DQplY2hvICINCjxkaXYgY2xhc3M9J2NhcmQgdGV4dC1kYXJrJz4NCgk8ZGl2IGNsYXNzPSdjYXJkLWhlYWRlcic+DQoJCTxwcmU+PGtiZD5+JCZlbnNwOyIuJGNtZC4iPC9rYmQ+PGJyPiI7DQoJCWVrc2VDTUQoJGNtZCwgJG1ldGhvZCk7DQoJCWVjaG8gIjwvcHJlPg0KCTwvZGl2Pg0KPC9kaXY+IjsNCn0NCn0NCmVsc2VpZigkX0dFVFsnaWQnXSA9PSAndXBsb2FkJyl7DQplY2hvICc8YnIgLz4nLiTilpguJw0KPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAgbWItMyB0ZXh0LWNlbnRlciI+DQoJCTxpbnB1dCB0eXBlPSJmaWxlIiBjbGFzcz0iZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSIgbmFtZT0iZmlsZSI+DQoJCTxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSI+U3VibWl0PC9idXR0b24+DQoJPC9kaXY+DQo8L2Zvcm0+JzsNCmlmKGlzc2V0KCRfRklMRVNbJ2ZpbGUnXSkpew0KaWYoY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sJHBhdGguJy8nLiRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKSl7DQplY2hvICcNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NClN3YWwuZmlyZSgNCiAgIlN1Y2Nlc3MiLA0KICAiU3VjY2VzcyB1cGxvYWQiLA0KICAic3VjY2VzcyINCikudGhlbigoYnRuQ2xpY2spID0+IHtpZihidG5DbGljayl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iP3BhdGg9Jy4kcGF0aC4nIn19KTwvc2NyaXB0Pg0KJzsNCn1lbHNlew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJPcHNzcyIsDQogICJGYWlsZWQgdXBsb2FkIiwNCiAgImVycm9yIg0KKS50aGVuKChidG5DbGljaykgPT4ge2lmKGJ0bkNsaWNrKXtkb2N1bWVudC5sb2NhdGlvbi5ocmVmPSI/cGF0aD0nLiRwYXRoLicifX0pPC9zY3JpcHQ+DQonOw0KfQ0KCX0NCn0NCmVsc2VpZigkX0dFVFsnaWQnXSA9PSAnZGVsZXRlJyl7DQpmdW5jdGlvbiBoYXB1c19tYXNzYWwoJGRpciwkbmFtYWZpbGUpIHsNCglpZihpc193cml0YWJsZSgkZGlyKSkgew0KCQkkZGlyYSA9IHNjYW5kaXIoJGRpcik7DQoJCWZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsNCgkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOw0KCQkJJOKWmiA9ICRkaXJjLicvJy4kbmFtYWZpbGU7DQoJCQlpZigkZGlyYiA9PT0gJy4nKSB7DQoJCQkJaWYoZmlsZV9leGlzdHMoIiRkaXIvJG5hbWFmaWxlIikpIHsNCgkJCQkJdW5saW5rKCIkZGlyLyRuYW1hZmlsZSIpOw0KCQkJCX0NCgkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7DQoJCQkJaWYoZmlsZV9leGlzdHMoIiIuZGlybmFtZSgkZGlyKS4iLyRuYW1hZmlsZSIpKSB7DQoJCQkJCXVubGluaygiIi5kaXJuYW1lKCRkaXIpLiIvJG5hbWFmaWxlIik7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQlpZihpc19kaXIoJGRpcmMpKSB7DQoJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgew0KCQkJCQkJaWYoZmlsZV9leGlzdHMoJOKWmikpIHsNCgkJCQkJCQllY2hvICJbPGZvbnQgY29sb3I9Z3JlZW4+ZGVsZXRlZDwvZm9udD5dICTilpo8YnI+IjsNCgkJCQkJCQl1bmxpbmsoJOKWmik7DQoJCQkJCQkJJOKWnyA9IGhhcHVzX21hc3NhbCgkZGlyYywkbmFtYWZpbGUpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KfQ0KaWYoJF9QT1NUWydzdGFydCddKSB7DQplY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7DQoJaGFwdXNfbWFzc2FsKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSk7DQplY2hvICI8L2Rpdj4iOw0KfSBlbHNlIHsNCmVjaG8gIjxiciAvPiTilpgNCjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJPGI+PGkgY2xhc3M9J2JpIGJpLWZvbGRlcic+PC9pPiBMb2thc2k6PC9iPg0KCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sJyB0eXBlPSd0ZXh0JyBuYW1lPSdkX2RpcicgdmFsdWU9JyRkaXInIGhlaWdodD0nMTAnPg0KCTxiPjxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT4gRmlsZSBuYW1lOjwvYj4NCgk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBtYi0zJz4NCgk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCcgdHlwZT0ndGV4dCcgbmFtZT0nZF9maWxlJyBwbGFjZWhvbGRlcj0nbmFtZSBmaWxlJyBoZWlnaHQ9JzEwJz48YnI+DQoJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAtYXBwZW5kJz4NCgk8aW5wdXQgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCcgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J0dvJz4NCjwvZm9ybT4NCgk8L2Rpdj4NCgk8L2Rpdj4iOw0KCQl9DQoJfQ0KfQ0KLy8gYWtoaXIgdG9vbHMNCmlmKGlzc2V0KCRfR0VUWydmaWxlc3JjJ10pKXsNCmVjaG8gIjxicj48Yj5uYW1lIDogPC9iPiIuYmFzZW5hbWUoJF9HRVRbJ2ZpbGVzcmMnXSk7IjwvYnI+IjsNCmVjaG8gJzx0ZXh0YXJlYSBjbGFzcz0iZm9ybS1jb250cm9sIiByb3dzPSI3IiByZWFkb25seT4gJy5odG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRfR0VUWydmaWxlc3JjJ10pKS4nPC90ZXh0YXJlYT48YnIgLz4nOw0KfQ0KZWxzZWlmKGlzc2V0KCRfR0VUWydvcHRpb24nXSkgJiYgJF9QT1NUWydvcHQnXSAhPSAnZGVsZXRlJyl7DQplY2hvICc8YnI+PGI+bmFtZSA6IDwvYj4nLmJhc2VuYW1lKCRfUE9TVFsncGF0aCddKTsnPC9icj4nOw0KLy9DaG1vZA0KaWYoJF9QT1NUWydvcHQnXSA9PSAnY2htb2QnKXsNCmlmKGlzc2V0KCRfUE9TVFsncGVybSddKSl7DQppZihjaG1vZCgkX1BPU1RbJ3BhdGgnXSwkX1BPU1RbJ3Blcm0nXSkpew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJTdWNjZXNzIiwNCiAgIlN1Y2Nlc3MgQ2hhbmdlIFBlcm1pc3Npb24iLA0KICAic3VjY2VzcyINCikudGhlbigoYnRuQ2xpY2spID0+IHtpZihidG5DbGljayl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iP3BhdGg9Jy4kcGF0aC4nIn19KTwvc2NyaXB0Pg0KJzsNCn1lbHNlew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJPcHNzcyIsDQogICJGYWlsZWQgY2hhbmdlIHBlcm1pc3Npb24iLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQp9DQplY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KCTxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIG1iLTMiPg0KPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InBlcm0iIHR5cGU9InRleHQiIHZhbHVlPSInLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkX1BPU1RbJ3BhdGgnXSkpLCAtNCkuJyIvPg0KCTxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiB0eXBlPSJoaWRkZW4iIG5hbWU9InBhdGgiIHZhbHVlPSInLiRfUE9TVFsncGF0aCddLiciPg0KCQk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJjaG1vZCI+DQoJCTxkaXYgY2xhc3M9ImlucHV0LWdyb3VwLWFwcGVuZCI+DQoJPGlucHV0IGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIi8+DQoJPC9mb3JtPg0KCTwvZGl2Pg0KPC9kaXY+JzsNCn0NCi8vcmVuYW1lIGZvbGRlcg0KZWxzZWlmKCRfR0VUWydvcHQnXSA9PSAnYnR3Jyl7DQoJJGN3ZCA9IGdldGN3ZCgpOw0KCWVjaG8gJzxmb3JtIGFjdGlvbj0iP29wdGlvbiZwYXRoPScuJGN3ZC4nJm9wdD1kZWxldGUmdHlwZT1idWF0IiBtZXRob2Q9IlBPU1QiPg0KCTxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIG1iLTMiPg0KPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5hbWUiIHR5cGU9InRleHQiIHZhbHVlPSJGb2xkZXIiLz4NCgk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iJy4kY3dkLiciPg0KCQk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJkZWxldGUiPg0KCQk8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cC1hcHBlbmQiPg0KCTxpbnB1dCBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyIvPg0KCTwvZm9ybT4NCgk8L2Rpdj4NCjwvZGl2Pic7DQp9DQovL3JlbmFtZSBmaWxlDQplbHNlaWYoJF9QT1NUWydvcHQnXSA9PSAncmVuYW1lJyl7DQppZihpc3NldCgkX1BPU1RbJ25ld25hbWUnXSkpew0KaWYocmVuYW1lKCRfUE9TVFsncGF0aCddLCRwYXRoLicvJy4kX1BPU1RbJ25ld25hbWUnXSkpew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJTdWNjZXNzIiwNCiAgIlN1Y2Nlc3MgY2hhbmdlIG5hbWUiLA0KICAic3VjY2VzcyINCikudGhlbigoYnRuQ2xpY2spID0+IHtpZihidG5DbGljayl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iP3BhdGg9Jy4kcGF0aC4nIn19KTwvc2NyaXB0Pg0KJzsNCn1lbHNlew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJPcHNzcyIsDQogICJGYWlsZWQgY2hhbmdlIG5hbWUiLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQokX1BPU1RbJ25hbWUnXSA9ICRfUE9TVFsnbmV3bmFtZSddOw0KfQ0KZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIj4NCgk8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCBtYi0zIj4NCjxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJuZXduYW1lIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iJy4kX1BPU1RbJ25hbWUnXS4nIiAvPg0KCTxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiB0eXBlPSJoaWRkZW4iIG5hbWU9InBhdGgiIHZhbHVlPSInLiRfUE9TVFsncGF0aCddLiciPg0KCQk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJyZW5hbWUiPg0KCQk8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cC1hcHBlbmQiPg0KCTxpbnB1dCBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyIvPg0KCTwvZm9ybT4NCgk8L2Rpdj4NCjwvZGl2Pic7DQp9DQovL2VkaXQgZmlsZQ0KZWxzZWlmKCRfUE9TVFsnb3B0J10gPT0gJ2VkaXQnKXsNCmlmKGlzc2V0KCRfUE9TVFsnc3JjJ10pKXsNCiRmcCA9IGZvcGVuKCRfUE9TVFsncGF0aCddLCd3Jyk7DQppZihmd3JpdGUoJGZwLCRfUE9TVFsnc3JjJ10pKXsNCmVjaG8gJw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KU3dhbC5maXJlKA0KICAiU3VjY2VzcyIsDQogICJFZGl0IGZpbGUgU3VjY2VzcyIsDQogICJzdWNjZXNzIg0KKS50aGVuKChidG5DbGljaykgPT4ge2lmKGJ0bkNsaWNrKXtkb2N1bWVudC5sb2NhdGlvbi5ocmVmPSI/cGF0aD0nLiRwYXRoLicifX0pPC9zY3JpcHQ+DQonOw0KfWVsc2V7DQplY2hvICcNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NClN3YWwuZmlyZSgNCiAgIk9wc3NzIiwNCiAgIkZhaWxlZCBlZGl0IGZpbGUiLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQpmY2xvc2UoJGZwKTsNCn0NCmVjaG8gJzxmb3JtIG1ldGhvZD0iUE9TVCI+DQo8dGV4dGFyZWEgY2xhc3M9ImZvcm0tY29udHJvbCIgcm93cz0iNyIgbmFtZT0ic3JjIj4nLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJF9QT1NUWydwYXRoJ10pKS4nPC90ZXh0YXJlYT48YnIgLz4NCgk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iJy4kX1BPU1RbJ3BhdGgnXS4nIj4NCgkJPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIHR5cGU9ImhpZGRlbiIgbmFtZT0ib3B0IiB2YWx1ZT0iZWRpdCI+DQoJPGlucHV0IGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIi8+DQo8L2Zvcm0+PGJyIC8+JzsNCgl9DQp9ZWxzZXsNCi8vZGVsZXRlIGRpcg0KaWYoaXNzZXQoJF9HRVRbJ29wdGlvbiddKSAmJiAkX1BPU1RbJ29wdCddID09ICdkZWxldGUnKXsNCmlmKCRfUE9TVFsndHlwZSddID09ICdkaXInKXsNCmlmKHJtZGlyKCRfUE9TVFsncGF0aCddKSl7DQplY2hvICcNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NClN3YWwuZmlyZSgNCiAgIlN1Y2Nlc3MiLA0KICAiU3VjY2VzcyBkZWxldGUgZGlyIiwNCiAgInN1Y2Nlc3MiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9ZWxzZXsNCmVjaG8gJw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KU3dhbC5maXJlKA0KICAiT3Bzc3MiLA0KICAiRmFpbGVkIGRlbGV0ZSBkaXIiLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQp9DQovL2RlbGV0ZSBmaWxlDQplbHNlaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ2ZpbGUnKXsNCmlmKHVubGluaygkX1BPU1RbJ3BhdGgnXSkpew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJTdWNjZXNzIiwNCiAgIlN1Y2Nlc3MgZGVsZXRlIGZpbGUiLA0KICAic3VjY2VzcyINCikudGhlbigoYnRuQ2xpY2spID0+IHtpZihidG5DbGljayl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iP3BhdGg9Jy4kcGF0aC4nIn19KTwvc2NyaXB0Pg0KJzsNCn1lbHNlew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJPcHNzcyIsDQogICJGYWlsZWQgZGVsZXRlIGZpbGUiLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQoJfQ0KfQ0KZWNobyAnPC9jZW50ZXI+JzsNCiRzY2FuZGlyID0gc2NhbmRpcigkcGF0aCk7DQokcGEgPSBnZXRjd2QoKTsNCmVjaG8gJzxkaXYgY2xhc3M9InRhYmxlLXJlc3BvbnNpdmUiPg0KPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciB0YWJsZS1kYXJrIHRleHQtbGlnaHQiPg0KPHRoZWFkPg0KPHRyPg0KCTx0ZCBjbGFzcz0idGV4dC1jZW50ZXIiPk5hbWU8L3RkPg0KCQk8dGQgY2xhc3M9InRleHQtY2VudGVyIj5MYXN0IGVkaXQ8L3RkPg0KCQk8dGQgY2xhc3M9InRleHQtY2VudGVyIj5TaXplPC90ZD4NCgkJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+UGVybWlzc2lvbjwvdGQ+DQoJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+T3B0aW9uczwvdGQ+DQo8L3RyPg0KPC90aGVhZD4NCjx0Ym9keSBjbGFzcz0idGV4dC1ub3dyYXAiPic7DQpmb3JlYWNoKCRzY2FuZGlyIGFzICRkaXIpew0KJGR0ID0gZGF0ZSgiWS1tLWQiLCBmaWxlbXRpbWUoIiRwYXRoLyRkaXIiKSk7DQppZighaXNfZGlyKCIkcGF0aC8kZGlyIikgfHwgJGRpciA9PSAnLicgfHwgJGRpciA9PSAnLi4nKSBjb250aW51ZTsNCgllY2hvICINCgk8dHI+DQoJPHRkPjxpIGNsYXNzPSdiaSBiaS1mb2xkZXItZmlsbCc+PC9pPjxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXNlY29uZGFyeScgaHJlZj1cIj9wYXRoPSRwYXRoLyRkaXJcIj4kZGlyPC9hPjwvdGQ+DQoJPHRkPjxjZW50ZXI+JGR0PC9jZW50ZXI+PC90ZD4NCgk8dGQ+PGNlbnRlcj5ESVI8L2NlbnRlcj48L3RkPg0KCTx0ZD48Y2VudGVyPiI7DQppZihpc193cml0YWJsZSgiJHBhdGgvJGRpciIpKSBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPic7DQplbHNlaWYoIWlzX3JlYWRhYmxlKCIkcGF0aC8kZGlyIikpIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPic7DQoJZWNobyBwKCIkcGF0aC8kZGlyIik7DQppZihpc193cml0YWJsZSgiJHBhdGgvJGRpciIpIHx8ICFpc19yZWFkYWJsZSgiJHBhdGgvJGRpciIpKSBlY2hvICc8L2ZvbnQ+JzsNCgllY2hvICI8L2NlbnRlcj48L3RkPg0KCTx0ZD4NCjxmb3JtIG1ldGhvZD1cIlBPU1RcIiBhY3Rpb249XCI/b3B0aW9uJnBhdGg9JHBhdGhcIj4NCjxkaXYgY2xhc3M9J2lucHV0LWdyb3VwIG1iLTMgdGV4dC1jZW50ZXInPg0KPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCIgbmFtZT1cIm9wdFwiPg0KCTxvcHRpb24gc2VsZWN0ZWQgZGlzYWJsZWQ+U2VsZWN0PC9vcHRpb24+DQoJPG9wdGlvbiB2YWx1ZT1cImRlbGV0ZVwiPkRlbGV0ZTwvb3B0aW9uPg0KCTxvcHRpb24gdmFsdWU9XCJjaG1vZFwiPkNobW9kPC9vcHRpb24+DQoJPG9wdGlvbiB2YWx1ZT1cInJlbmFtZVwiPlJlbmFtZTwvb3B0aW9uPg0KPC9zZWxlY3Q+DQoJPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwidHlwZVwiIHZhbHVlPVwiZGlyXCI+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJuYW1lXCIgdmFsdWU9XCIkZGlyXCI+DQoJPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiJHBhdGgvJGRpclwiPg0KCQk8aW5wdXQgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtXCIgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiR29cIi8+DQoJPC9mb3JtPg0KPC9kaXY+DQo8L3RkPg0KPC90cj4iOw0KfQ0KZm9yZWFjaCgkc2NhbmRpciBhcyAkZmlsZSl7DQoJJGZ0ID0gZGF0ZSgiWS1tLWQiLCBmaWxlbXRpbWUoIiRwYXRoLyRmaWxlIikpOw0KCWlmKCFpc19maWxlKCRwYXRoLicvJy4kZmlsZSkpIGNvbnRpbnVlOw0KCSRzID0gZmlsZXNpemUoJHBhdGguJy8nLiRmaWxlKS8xMDI0Ow0KCSRzID0gcm91bmQoJHMsMyk7DQoJaWYoJHMgPj0gMTAyNCl7DQoJCSRzID0gcm91bmQoJHMvMTAyNCwyKS4nIE1CJzsNCgl9ZWxzZXsNCgkJJHMgPSAkcy4nIEtCJzsNCgl9DQplY2hvICINCgk8dHI+DQoJPHRkPjxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmstY29kZS1maWxsJz48L2k+PGEgY2xhc3M9J3RleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtc2Vjb25kYXJ5JyBocmVmPVwiP2ZpbGVzcmM9JHBhdGgvJGZpbGUmcGF0aD0kcGF0aFwiPiRmaWxlPC9hPjwvdGQ+DQoJPHRkPjxjZW50ZXI+JGZ0PC9jZW50ZXI+PC90ZD4NCgk8dGQ+PGNlbnRlcj4kczwvY2VudGVyPjwvdGQ+DQoJPHRkPjxjZW50ZXI+IjsNCmlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZmlsZSIpKSBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPic7DQplbHNlaWYoIWlzX3JlYWRhYmxlKCIkcGF0aC8kZmlsZSIpKSBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj4nOw0KCWVjaG8gcCgiJHBhdGgvJGZpbGUiKTsNCmlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZmlsZSIpIHx8ICFpc19yZWFkYWJsZSgiJHBhdGgvJGZpbGUiKSkgZWNobyAnPC9mb250Pic7DQoJZWNobyAiPC9jZW50ZXI+PC90ZD4NCgk8dGQ+DQo8Zm9ybSBtZXRob2Q9XCJQT1NUXCIgYWN0aW9uPVwiP29wdGlvbiZwYXRoPSRwYXRoXCI+DQo8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBtYi0zIHRleHQtY2VudGVyJz4NCjxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwibmFtZT1cIm9wdFwiPg0KCTxvcHRpb24gc2VsZWN0ZWQgZGlzYWJsZWQ+U2VsZWN0PC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9XCJkZWxldGVcIj5EZWxldGU8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT1cImVkaXRcIj5FZGl0PC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9XCJyZW5hbWVcIj5SZW5hbWU8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT1cImNobW9kXCI+Q2htb2Q8L29wdGlvbj4NCgk8b3B0aW9uIHZhbHVlPVwiZG93bmxvYWRcIj5Eb3dubG9hZDwvb3B0aW9uPg0KPC9zZWxlY3Q+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJmaWxlXCI+DQoJPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiJGZpbGVcIj4NCgkJPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiJHBhdGgvJGZpbGVcIj4NCgkJPGlucHV0IGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbVwiIHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkdvXCIvPg0KCTwvZm9ybT4NCjwvZGl2Pg0KPC90ZD4NCjwvdHI+IjsNCgl9DQp9DQplY2hvICINCjwvdGJvZHk+DQo8L3RhYmxlPg0KPGRpdiBjbGFzcz0ndGV4dC1jZW50ZXInPg0KCTxrYmQ+Q29weXJpZ2h0ICZjb3B5OyAiLmRhdGUoIlkiKS4iIC0gJOKWmzwva2JkPg0KPC9kaXY+DQoJPC9kaXY+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KPC9kaXY+DQo8c2NyaXB0IHNyYz0nLy9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuMy4xLnNsaW0ubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScvL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wb3BwZXIuanMvMS4xNC43L3VtZC9wb3BwZXIubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScvL3N0YWNrcGF0aC5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC80LjMuMS9qcy9ib290c3RyYXAubWluLmpzJz48L3NjcmlwdD4NCjwvYm9keT4NCjwvaHRtbD4iOw0KPz4="));?>