'PD9waHAKLyoqIFNoYXJlZCBoZWFkZXIsIHNpZGViYXIgYW5kIGZvb3RlciBmb3IgdGhlIGFkbWluIHBhbmVsLiAqLwoKZnVuY3Rpb24gYWRtaW5faGVhZCgkdGl0bGUpIHsKICAgID8+PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgo8dGl0bGU+PD89IGgoJHRpdGxlKSA/PiAtIDw/PSBoKFBMQVRGT1JNX05BTUUpID8+PC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9hc3NldHMvYWRtaW4uY3NzIj4KPHN0eWxlPgouc2l0ZWNoZWNrc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDI0MHB4LDFmcikpO2dhcDoxMHB4O21hcmdpbi10b3A6OHB4fQouc2l0ZWNoZWNrcyBsYWJlbHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo5cHg7cGFkZGluZzoxMXB4IDEzcHg7Ym9yZGVyOjEuNXB4IHNvbGlkICNlM2U2ZWE7Ym9yZGVyLXJhZGl1czo4cHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDojZmZmO2ZvbnQtc2l6ZToxNHB4fQouc2l0ZWNoZWNrcyBsYWJlbDpob3Zlcntib3JkZXItY29sb3I6IzlkYjhmZjtiYWNrZ3JvdW5kOiNmYmZjZmZ9Ci5zaXRlY2hlY2tzIGlucHV0OmNoZWNrZWQrc3Bhbntmb250LXdlaWdodDo3MDB9Ci5zaXRlY2hlY2tzIC5kb217ZGlzcGxheTpibG9jaztmb250LXNpemU6MTJweDtjb2xvcjojN2E3Zjg4O2ZvbnQtd2VpZ2h0OjQwMH0KLnBpbGxyb3d7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo1cHh9Ci5waWxscm93IC5we2JhY2tncm91bmQ6I2VlZjJmZjtjb2xvcjojMzM0MDhhO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6M3B4IDhweDtib3JkZXItcmFkaXVzOjIwcHg7d2hpdGUtc3BhY2U6bm93cmFwfQoucGlsbHJvdyAubm9uZXtiYWNrZ3JvdW5kOiNmZGVjZWE7Y29sb3I6I2E1MjUxZn0KLmZpbHRlcnN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjE2cHh9Ci5maWx0ZXJzIHNlbGVjdCwuZmlsdGVycyBpbnB1dHtwYWRkaW5nOjlweCAxMXB4O2JvcmRlcjoxLjVweCBzb2xpZCAjZTNlNmVhO2JvcmRlci1yYWRpdXM6N3B4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXR9Ci5tc2dib3h7d2hpdGUtc3BhY2U6cHJlLXdyYXA7YmFja2dyb3VuZDojZmFmYmZjO2JvcmRlcjoxcHggc29saWQgI2VlZjBmMztib3JkZXItcmFkaXVzOjdweDtwYWRkaW5nOjExcHggMTNweDttYXJnaW4tdG9wOjdweDtmb250LXNpemU6MTMuNXB4fQoudW5yZWFke2ZvbnQtd2VpZ2h0OjgwMH0KLm11dGVke2NvbG9yOiM3YTdmODg7Zm9udC1zaXplOjEyLjVweH0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGRpdiBjbGFzcz0ibGF5b3V0Ij4KPD9waHAgaW5jbHVkZSBfX0RJUl9fIC4gJy9fbmF2LnBocCc7ID8+CjxkaXYgY2xhc3M9Im1haW4iPgo8P3BocAp9CgpmdW5jdGlvbiBhZG1pbl90b3BiYXIoJGgxLCAkcmlnaHRIdG1sID0gJycpIHsKICAgIGVjaG8gJzxkaXYgY2xhc3M9InRvcGJhciI+PGgxPicgLiBoKCRoMSkgLiAnPC9oMT4nIC4gJHJpZ2h0SHRtbCAuICc8L2Rpdj4nOwogICAgaWYgKCRtID0gZmxhc2goJ29rJykpICBlY2hvICc8ZGl2IGNsYXNzPSJmbGFzaCI+JyAuIGgoJG0pIC4gJzwvZGl2Pic7CiAgICBpZiAoJG0gPSBmbGFzaCgnZXJyJykpIGVjaG8gJzxkaXYgY2xhc3M9ImZsYXNoIGVycm9yIj4nIC4gaCgkbSkgLiAnPC9kaXY+JzsKfQoKZnVuY3Rpb24gYWRtaW5fZm9vdCgpIHsKICAgID8+CjwvZGl2Pgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cjw/cGhwCn0KCi8qKiBBbGwgc2l0ZXMsIHVzZWQgZm9yIGNoZWNrYm94ZXMgYW5kIGZpbHRlcnMuICovCmZ1bmN0aW9uIGFsbF9zaXRlcygpIHsKICAgIHN0YXRpYyAkcyA9IG51bGw7CiAgICBpZiAoJHMgPT09IG51bGwpICRzID0gZGIoKS0+cXVlcnkoIlNFTEVDVCBpZCwgZG9tYWluLCBjb21wYW55X25hbWUsIGlzX2FjdGl2ZSBGUk9NIHNpdGVzIE9SREVSIEJZIGNvbXBhbnlfbmFtZSIpLT5mZXRjaEFsbCgpOwogICAgcmV0dXJuICRzOwp9CgovKiogVGhlIHNpdGVzIGEgdmVoaWNsZSBpcyBwdWJsaXNoZWQgb24uICovCmZ1bmN0aW9uIHZlaGljbGVfc2l0ZV9pZHMoJHZlaGljbGVJZCkgewogICAgJHN0ID0gZGIoKS0+cHJlcGFyZSgiU0VMRUNUIHNpdGVfaWQgRlJPTSB2ZWhpY2xlX3NpdGVzIFdIRVJFIHZlaGljbGVfaWQgPSA/Iik7CiAgICAkc3QtPmV4ZWN1dGUoWyR2ZWhpY2xlSWRdKTsKICAgIHJldHVybiBhcnJheV9tYXAoJ2ludHZhbCcsICRzdC0+ZmV0Y2hBbGwoUERPOjpGRVRDSF9DT0xVTU4pKTsKfQoKLyoqIFJlcGxhY2UgYSB2ZWhpY2xlJ3Mgc2l0ZSBsaW5rcyB3aXRoIHRoZSB0aWNrZWQgYm94ZXMuICovCmZ1bmN0aW9uIHNldF92ZWhpY2xlX3NpdGVzKCR2ZWhpY2xlSWQsIGFycmF5ICRzaXRlSWRzKSB7CiAgICAkdmFsaWQgPSBhcnJheV9jb2x1bW4oYWxsX3NpdGVzKCksICdpZCcpOwogICAgJHNpdGVJZHMgPSBhcnJheV92YWx1ZXMoYXJyYXlfdW5pcXVlKGFycmF5X2ludGVyc2VjdChhcnJheV9tYXAoJ2ludHZhbCcsICRzaXRlSWRzKSwgYXJyYXlfbWFwKCdpbnR2YWwnLCAkdmFsaWQpKSkpOwoKICAgIGRiKCktPnByZXBhcmUoIkRFTEVURSBGUk9NIHZlaGljbGVfc2l0ZXMgV0hFUkUgdmVoaWNsZV9pZCA9ID8iKS0+ZXhlY3V0ZShbJHZlaGljbGVJZF0pOwogICAgaWYgKCEkc2l0ZUlkcykgcmV0dXJuOwogICAgJGlucyA9IGRiKCktPnByZXBhcmUoIklOU0VSVCBJTlRPIHZlaGljbGVfc2l0ZXMgKHZlaGljbGVfaWQsIHNpdGVfaWQpIFZBTFVFUyAoPywgPykiKTsKICAgIGZvcmVhY2ggKCRzaXRlSWRzIGFzICRzaWQpICRpbnMtPmV4ZWN1dGUoWyR2ZWhpY2xlSWQsICRzaWRdKTsKfQoKLyoqIFRoZSBzaXRlcyBhIHJldmlldyBpcyBwdWJsaXNoZWQgb24uICovCmZ1bmN0aW9uIHJldmlld19zaXRlX2lkcygkcmV2aWV3SWQpIHsKICAgICRzdCA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCBzaXRlX2lkIEZST00gcmV2aWV3X3NpdGVzIFdIRVJFIHJldmlld19pZCA9ID8iKTsKICAgICRzdC0+ZXhlY3V0ZShbJHJldmlld0lkXSk7CiAgICByZXR1cm4gYXJyYXlfbWFwKCdpbnR2YWwnLCAkc3QtPmZldGNoQWxsKFBETzo6RkVUQ0hfQ09MVU1OKSk7Cn0KCi8qKiBSZXBsYWNlIGEgcmV2aWV3J3Mgc2l0ZSBsaW5rcyB3aXRoIHRoZSB0aWNrZWQgYm94ZXMuICovCmZ1bmN0aW9uIHNldF9yZXZpZXdfc2l0ZXMoJHJldmlld0lkLCBhcnJheSAkc2l0ZUlkcykgewogICAgJHZhbGlkID0gYXJyYXlfbWFwKCdpbnR2YWwnLCBhcnJheV9jb2x1bW4oYWxsX3NpdGVzKCksICdpZCcpKTsKICAgICRzaXRlSWRzID0gYXJyYXlfdmFsdWVzKGFycmF5X3VuaXF1ZShhcnJheV9pbnRlcnNlY3QoYXJyYXlfbWFwKCdpbnR2YWwnLCAkc2l0ZUlkcyksICR2YWxpZCkpKTsKCiAgICBkYigpLT5wcmVwYXJlKCJERUxFVEUgRlJPTSByZXZpZXdfc2l0ZXMgV0hFUkUgcmV2aWV3X2lkID0gPyIpLT5leGVjdXRlKFskcmV2aWV3SWRdKTsKICAgIGlmICghJHNpdGVJZHMpIHJldHVybjsKICAgICRpbnMgPSBkYigpLT5wcmVwYXJlKCJJTlNFUlQgSU5UTyByZXZpZXdfc2l0ZXMgKHJldmlld19pZCwgc2l0ZV9pZCkgVkFMVUVTICg/LCA/KSIpOwogICAgZm9yZWFjaCAoJHNpdGVJZHMgYXMgJHNpZCkgJGlucy0+ZXhlY3V0ZShbJHJldmlld0lkLCAkc2lkXSk7Cn0KCi8qKiBSZW5kZXJzIHRoZSAid2hpY2ggc2l0ZXMiIGNoZWNrYm94IGdyaWQuICRjaGVja2VkIGlzIGFuIGFycmF5IG9mIHNpdGUgaWRzLiAqLwpmdW5jdGlvbiBzaXRlX2NoZWNrYm94ZXMoYXJyYXkgJGNoZWNrZWQsICRuYW1lID0gJ3NpdGVzJykgewogICAgaWYgKCFhbGxfc2l0ZXMoKSkgewogICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImZsYXNoIGVycm9yIiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4Ij5UaGVyZSBhcmUgbm8gc2l0ZXMgeWV0LiA8YSBocmVmPSJzaXRlX2Zvcm0ucGhwIj5BZGQgdGhlIGZpcnN0IHNpdGU8L2E+LjwvZGl2Pic7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgPz4KICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTBweDttYXJnaW46MTJweCAwIDRweCI+CiAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNtYWxsIHNlY29uZGFyeSIgb25jbGljaz0iZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNpdGVjaGVja3MgaW5wdXQnKS5mb3JFYWNoKGM9PmMuY2hlY2tlZD10cnVlKSI+VGljayBhbGw8L2J1dHRvbj4KICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc21hbGwgc2Vjb25kYXJ5IiBvbmNsaWNrPSJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2l0ZWNoZWNrcyBpbnB1dCcpLmZvckVhY2goYz0+Yy5jaGVja2VkPWZhbHNlKSI+VW50aWNrIGFsbDwvYnV0dG9uPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzaXRlY2hlY2tzIj4KICAgICAgPD9waHAgZm9yZWFjaCAoYWxsX3NpdGVzKCkgYXMgJHMpOiA/PgogICAgICA8bGFiZWw+CiAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8Pz0gaCgkbmFtZSkgPz5bXSIgdmFsdWU9Ijw/PSAoaW50KSRzWydpZCddID8+IiA8Pz0gaW5fYXJyYXkoKGludCkkc1snaWQnXSwgJGNoZWNrZWQsIHRydWUpID8gJ2NoZWNrZWQnIDogJycgPz4+CiAgICAgICAgPHNwYW4+PD89IGgoJHNbJ2NvbXBhbnlfbmFtZSddKSA/PgogICAgICAgICAgPHNwYW4gY2xhc3M9ImRvbSI+PD89IGgoJHNbJ2RvbWFpbiddKSA/Pjw/PSAkc1snaXNfYWN0aXZlJ10gPyAnJyA6ICcgKGRpc2FibGVkKScgPz48L3NwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L2xhYmVsPgogICAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogICAgPC9kaXY+CiAgICA8P3BocAp9CgovKiogUGxhdGZvcm0td2lkZSB1bmlxdWUgc2x1ZyAoYSB2ZWhpY2xlIG5vIGxvbmdlciBiZWxvbmdzIHRvIGEgc2luZ2xlIHNpdGUpLiAqLwpmdW5jdGlvbiB1bmlxdWVfc2x1ZygkdGl0bGUsICRpZ25vcmVJZCA9IG51bGwpIHsKICAgICRiYXNlID0gc2x1Z2lmeSgkdGl0bGUpOwogICAgJHNsdWcgPSAkYmFzZTsKICAgIGZvciAoJGkgPSAyOyAkaSA8IDUwMDsgJGkrKykgewogICAgICAgICRzcWwgPSAiU0VMRUNUIGlkIEZST00gdmVoaWNsZXMgV0hFUkUgc2x1ZyA9ID8iIC4gKCRpZ25vcmVJZCA/ICIgQU5EIGlkIDw+ID8iIDogIiIpIC4gIiBMSU1JVCAxIjsKICAgICAgICAkc3QgID0gZGIoKS0+cHJlcGFyZSgkc3FsKTsKICAgICAgICAkc3QtPmV4ZWN1dGUoJGlnbm9yZUlkID8gWyRzbHVnLCAkaWdub3JlSWRdIDogWyRzbHVnXSk7CiAgICAgICAgaWYgKCEkc3QtPmZldGNoKCkpIHJldHVybiAkc2x1ZzsKICAgICAgICAkc2x1ZyA9ICRiYXNlIC4gJy0nIC4gJGk7CiAgICB9CiAgICByZXR1cm4gJGJhc2UgLiAnLScgLiB1bmlxaWQoKTsKfQo=', 'admin/_nav.php' => 'PD9waHAgJF9fcCA9IGJhc2VuYW1lKCRfU0VSVkVSWydQSFBfU0VMRiddKTsgPz4KPGJ1dHRvbiBjbGFzcz0ic2lkZWJhci10b2dnbGUiIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpZGViYXInKS5jbGFzc0xpc3QudG9nZ2xlKCdvcGVuJykiIGFyaWEtbGFiZWw9Ik1lbnUiPiYjOTc3Njs8L2J1dHRvbj4KPGRpdiBjbGFzcz0ic2lkZWJhciI+CiAgPGgyPjw/PSBoKFBMQVRGT1JNX05BTUUpID8+PC9oMj4KICA8bmF2PgogICAgPGEgaHJlZj0iZGFzaGJvYXJkLnBocCIgY2xhc3M9Ijw/PSAkX19wID09PSAnZGFzaGJvYXJkLnBocCcgPyAnYWN0aXZlJyA6ICcnID8+Ij48c3BhbiBjbGFzcz0iaWMiPiYjMTI4MjAyOzwvc3Bhbj5EYXNoYm9hcmQ8L2E+CiAgICA8YSBocmVmPSJ2ZWhpY2xlcy5waHAiIGNsYXNzPSI8Pz0gaW5fYXJyYXkoJF9fcCwgWyd2ZWhpY2xlcy5waHAnLCAndmVoaWNsZV9mb3JtLnBocCddLCB0cnVlKSA/ICdhY3RpdmUnIDogJycgPz4iPjxzcGFuIGNsYXNzPSJpYyI+JiMxMjg2NjM7PC9zcGFuPkludmVudG9yeTwvYT4KICAgIDxhIGhyZWY9InNpdGVzLnBocCIgY2xhc3M9Ijw/PSBpbl9hcnJheSgkX19wLCBbJ3NpdGVzLnBocCcsICdzaXRlX2Zvcm0ucGhwJ10sIHRydWUpID8gJ2FjdGl2ZScgOiAnJyA/PiI+PHNwYW4gY2xhc3M9ImljIj4mIzEyNzk3MDs8L3NwYW4+U2l0ZXM8L2E+CiAgICA8YSBocmVmPSJyZXZpZXdzLnBocCIgY2xhc3M9Ijw/PSAkX19wID09PSAncmV2aWV3cy5waHAnID8gJ2FjdGl2ZScgOiAnJyA/PiI+PHNwYW4gY2xhc3M9ImljIj4mIzExMDg4Ozwvc3Bhbj5SZXZpZXdzPC9hPgogICAgPGEgaHJlZj0ibWVzc2FnZXMucGhwIiBjbGFzcz0iPD89ICRfX3AgPT09ICdtZXNzYWdlcy5waHAnID8gJ2FjdGl2ZScgOiAnJyA/PiI+PHNwYW4gY2xhc3M9ImljIj4mIzk5OTM7JiM2NTAzOTs8L3NwYW4+TWVzc2FnZXM8L2E+CiAgICA8YSBocmVmPSJsb2dvdXQucGhwIiBjbGFzcz0ibmF2LXNlcCI+PHNwYW4gY2xhc3M9ImljIj4mIzg2MTg7PC9zcGFuPkxvZyBvdXQ8L2E+CiAgPC9uYXY+CiAgPGRpdiBjbGFzcz0ic2lkZWJhci1mb290Ij5QbGF0Zm9ybSBDb250cm9sPC9kaXY+CjwvZGl2Pgo=', 'admin/_satellite/.htaccess' => 'UmVxdWlyZSBhbGwgZGVuaWVkCg==', 'admin/_satellite/htaccess.tpl' => 'IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICBTYXRlbGxpdGUgLSByb3V0aW5nIHRvIGluZGV4LnBocAojICBHb2VzIGludG8gcHVibGljX2h0bWwvIG5leHQgdG8gaW5kZXgucGhwCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCk9wdGlvbnMgLUluZGV4ZXMKRGlyZWN0b3J5SW5kZXggaW5kZXgucGhwCgojIFRoZSBsb2NhbCBjYWNoZSBhbmQgYW55IGhpZGRlbiBmaWxlcyBhcmUgbmV2ZXIgc2VydmVkCjxGaWxlc01hdGNoICJeXC4iPgogICAgUmVxdWlyZSBhbGwgZGVuaWVkCjwvRmlsZXNNYXRjaD4KUmVkaXJlY3RNYXRjaCA0MDQgXi9cLmNhY2hlKC8uKik/JAoKPElmTW9kdWxlIG1vZF9yZXdyaXRlLmM+CiAgICBSZXdyaXRlRW5naW5lIE9uCgogICAgIyBQYWdlcyBhcmUgcmVxdWVzdGVkIHVuZGVyIHRoZWlyIHRlbXBsYXRlIG5hbWVzIChsaW5rcyBidWlsdCBieSBtYWluLmpzCiAgICAjIHBvaW50IGF0IHZlaGljbGUucGhwP3NsdWc9Li4uKS4gTWFwIHRoZW0gb250byB0aGUgcm91dGVyIGluIGluZGV4LnBocC4KICAgIFJld3JpdGVSdWxlIF52ZWhpY2xlXC5waHAkICAgICAgICAgICAgICBpbmRleC5waHA/cGFnZT12ZWhpY2xlICAgICAgICAgICAgW1FTQSxMXQogICAgUmV3cml0ZVJ1bGUgXmludmVudG9yeVwucGhwJCAgICAgICAgICAgIGluZGV4LnBocD9wYWdlPWludmVudG9yeSAgICAgICAgICBbUVNBLExdCiAgICBSZXdyaXRlUnVsZSBeaW52ZW50b3J5X2RhdGFcLnBocCQgICAgICAgaW5kZXgucGhwP3BhZ2U9aW52ZW50b3J5X2RhdGEgICAgIFtRU0EsTF0KICAgIFJld3JpdGVSdWxlIF5yZXZpZXdzXC5waHAkICAgICAgICAgICAgICBpbmRleC5waHA/cGFnZT1yZXZpZXdzICAgICAgICAgICAgW1FTQSxMXQogICAgUmV3cml0ZVJ1bGUgXmNvbnRhY3RcLnBocCQgICAgICAgICAgICAgIGluZGV4LnBocD9wYWdlPWNvbnRhY3QgICAgICAgICAgICBbUVNBLExdCiAgICBSZXdyaXRlUnVsZSBeYWJvdXRcLnBocCQgICAgICAgICAgICAgICAgaW5kZXgucGhwP3BhZ2U9YWJvdXQgICAgICAgICAgICAgIFtRU0EsTF0KICAgIFJld3JpdGVSdWxlIF5kZWxpdmVyeVwucGhwJCAgICAgICAgICAgICBpbmRleC5waHA/cGFnZT1kZWxpdmVyeSAgICAgICAgICAgW1FTQSxMXQogICAgUmV3cml0ZVJ1bGUgXndhcnJhbnR5XC5waHAkICAgICAgICAgICAgIGluZGV4LnBocD9wYWdlPXdhcnJhbnR5ICAgICAgICAgICBbUVNBLExdCiAgICBSZXdyaXRlUnVsZSBeYnV5LWJhY2stZ3VhcmFudGVlXC5waHAkICAgaW5kZXgucGhwP3BhZ2U9YnV5LWJhY2stZ3VhcmFudGVlIFtRU0EsTF0KICAgIFJld3JpdGVSdWxlIF5idXktYmFjay1wb2xpY3lcLnBocCQgICAgICBpbmRleC5waHA/cGFnZT1idXktYmFjay1ndWFyYW50ZWUgW1FTQSxMXQogICAgUmV3cml0ZVJ1bGUgXnRlcm1zLW9mLXVzZVwucGhwJCAgICAgICAgIGluZGV4LnBocD9wYWdlPXRlcm1zLW9mLXVzZSAgICAgICBbUVNBLExdCiAgICBSZXdyaXRlUnVsZSBecHJpdmFjeS1wb2xpY3lcLnBocCQgICAgICAgaW5kZXgucGhwP3BhZ2U9cHJpdmFjeS1wb2xpY3kgICAgIFtRU0EsTF0KICAgIFJld3JpdGVSdWxlIF5jb29raWVzLXBvbGljeVwucGhwJCAgICAgICBpbmRleC5waHA/cGFnZT1jb29raWVzLXBvbGljeSAgICAgW1FTQSxMXQoKICAgICMgT3B0aW9uYWwgY2xlYW4gVVJMczogL2ludmVudG9yeSwgL3ZlaGljbGUvY2FyLXNsdWcKICAgIFJld3JpdGVSdWxlIF52ZWhpY2xlLyhbQS1aYS16MC05Ll8tXSspLz8kIGluZGV4LnBocD9wYWdlPXZlaGljbGUmc2x1Zz0kMSBbUVNBLExdCiAgICBSZXdyaXRlQ29uZCAle1JFUVVFU1RfRklMRU5BTUV9ICEtZgogICAgUmV3cml0ZUNvbmQgJXtSRVFVRVNUX0ZJTEVOQU1FfSAhLWQKICAgIFJld3JpdGVSdWxlIF4oW2EtejAtOS1dKykvPyQgaW5kZXgucGhwP3BhZ2U9JDEgW1FTQSxMXQo8L0lmTW9kdWxlPgoKPElmTW9kdWxlIG1vZF9kZWZsYXRlLmM+CiAgICBBZGRPdXRwdXRGaWx0ZXJCeVR5cGUgREVGTEFURSB0ZXh0L2h0bWwgdGV4dC9jc3MgYXBwbGljYXRpb24vamF2YXNjcmlwdCBhcHBsaWNhdGlvbi9qc29uCjwvSWZNb2R1bGU+Cg==', 'admin/_satellite/index.php.tpl' => 'PD9waHAKLyoqCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICBTQVRFTExJVEUgRU5HSU5FICAtLSAgb25lIGZpbGUsIHVwbG9hZGVkIHVuY2hhbmdlZCB0byBldmVyeSBzYXRlbGxpdGUgZG9tYWluCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICBObyBNeVNRTCBjb25uZWN0aW9uLiBFdmVyeXRoaW5nIGlzIGZldGNoZWQgZnJvbSB0aGUgYWRtaW4gb3ZlciBIVFRQUzoKICogICAgICBodHRwczovL2FkbWluc2l0ZXVrLmNvbS9hcGkvPGVuZHBvaW50Pi5waHAKICogIFdvcmtzIG9uIGFueSBob3N0aW5nLCByZWdhcmRsZXNzIG9mIGZpcmV3YWxsIG9yIFJlbW90ZSBNeVNRTCBydWxlcy4KICoKICogIFVQTE9BRCBUTzogICBwdWJsaWNfaHRtbC9pbmRleC5waHAgICAodG9nZXRoZXIgd2l0aCAuaHRhY2Nlc3MpCiAqICBPTiBBRE1JTjogICAgcHVibGljX2h0bWwvYXBpLyAgICAgICAgKHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlKQogKgogKiAgQ09OTkVDVElPTiBURVNUOgogKiAgICAgIGh0dHBzOi8veW91ci1zYXRlbGxpdGUtZG9tYWluLmNvLnVrLz9fX3NhdGNoZWNrPTxTQVRfQ0hFQ0tfS0VZPgogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKi8KCmVycm9yX3JlcG9ydGluZyhFX0FMTCk7CmluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IENPTkZJR1VSQVRJT04gPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKZGVmaW5lKCdBRE1JTl9ST09UJywgICAne3tBRE1JTl9ST09UfX0nKTsKZGVmaW5lKCdBUElfQkFTRScsICAgICBBRE1JTl9ST09UIC4gJ2FwaS8nKTsKZGVmaW5lKCdBU1NFVFNfQkFTRScsICBBRE1JTl9ST09UIC4gJ3NpdGUtdGVtcGxhdGUvYXNzZXRzLycpOwoKLy8gTXVzdCBiZSBJREVOVElDQUwgdG8gQVBJX0tFWSBpbiBhcGkvX2FwaV9pbmMucGhwIG9uIHRoZSBhZG1pbgpkZWZpbmUoJ0FQSV9LRVknLCAne3tBUElfS0VZfX0nKTsKCi8vIEtleSBmb3IgdGhlIGRpYWdub3N0aWMgcGFnZSAoP19fc2F0Y2hlY2s9Li4uKS4gRGlmZmVyZW50IGZyb20gQVBJX0tFWS4KZGVmaW5lKCdTQVRfQ0hFQ0tfS0VZJywgJ3t7U0FUX0NIRUNLX0tFWX19Jyk7CgpkZWZpbmUoJ0NBQ0hFX1RUTCcsICA5MCk7ICAgICAvLyBzZWNvbmRzOyAwID0gbm8gY2FjaGUKZGVmaW5lKCdDQUNIRV9ESVInLCAgX19ESVJfXyAuICcvLmNhY2hlJyk7CmRlZmluZSgnU0FUX0RFQlVHJywgIGZhbHNlKTsgIC8vIHRydWUgb25seSB0ZW1wb3JhcmlseSwgZm9yIGRpYWdub3N0aWNzCmRlZmluZSgnRk9SQ0VfRE9NQUlOJywgJycpOyAgIC8vIGUuZy4gJ2V4YW1wbGUuY28udWsnIHdoZW4gdGVzdGluZyBiZWZvcmUgRE5TCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IEFQSSBDTElFTlQgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKZnVuY3Rpb24gY3VycmVudF9kb21haW4oKSB7CiAgICBpZiAoRk9SQ0VfRE9NQUlOICE9PSAnJykgcmV0dXJuIEZPUkNFX0RPTUFJTjsKICAgICRoID0gc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9IT1NUJ10gPz8gJycpOwogICAgJGggPSBwcmVnX3JlcGxhY2UoJy9ed3d3XC4vJywgJycsICRoKTsKICAgIHJldHVybiBwcmVnX3JlcGxhY2UoJy86XGQrJC8nLCAnJywgJGgpOwp9CgpmdW5jdGlvbiBjYWNoZV9wYXRoKCRrZXkpIHsKICAgIHJldHVybiBydHJpbShDQUNIRV9ESVIsICcvJykgLiAnLycgLiBtZDUoJGtleSkgLiAnLmpzb24nOwp9CgpmdW5jdGlvbiBjYWNoZV9yZWFkKCRrZXksICR0dGwpIHsKICAgICRmID0gY2FjaGVfcGF0aCgka2V5KTsKICAgIGlmICghaXNfZmlsZSgkZikpIHJldHVybiBudWxsOwogICAgaWYgKCR0dGwgPiAwICYmICh0aW1lKCkgLSBmaWxlbXRpbWUoJGYpKSA+ICR0dGwpIHJldHVybiBudWxsOwogICAgJHJhdyA9IEBmaWxlX2dldF9jb250ZW50cygkZik7CiAgICAkZCA9IGpzb25fZGVjb2RlKChzdHJpbmcpJHJhdywgdHJ1ZSk7CiAgICByZXR1cm4gaXNfYXJyYXkoJGQpID8gJGQgOiBudWxsOwp9CgovKiogTGFzdCBzYXZlZCBjb3B5LCBob3dldmVyIG9sZCAtLSB1c2VkIHdoZW4gdGhlIGFkbWluIGRvZXMgbm90IHJlc3BvbmQuICovCmZ1bmN0aW9uIGNhY2hlX3JlYWRfc3RhbGUoJGtleSkgewogICAgcmV0dXJuIGNhY2hlX3JlYWQoJGtleSwgMCk7Cn0KCmZ1bmN0aW9uIGNhY2hlX3dyaXRlKCRrZXksICRkYXRhKSB7CiAgICBpZiAoQ0FDSEVfVFRMIDw9IDApIHJldHVybjsKICAgIGlmICghaXNfZGlyKENBQ0hFX0RJUikpIEBta2RpcihDQUNIRV9ESVIsIDA3NTUsIHRydWUpOwogICAgQGZpbGVfcHV0X2NvbnRlbnRzKGNhY2hlX3BhdGgoJGtleSksIGpzb25fZW5jb2RlKCRkYXRhKSwgTE9DS19FWCk7Cn0KCmZ1bmN0aW9uIGh0dHBfanNvbigkdXJsLCAkcG9zdCA9IG51bGwpIHsKICAgICRyYXcgPSBudWxsOwoKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxfaW5pdCcpKSB7CiAgICAgICAgJGNoID0gY3VybF9pbml0KCR1cmwpOwogICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRjaCwgWwogICAgICAgICAgICBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSID0+IHRydWUsCiAgICAgICAgICAgIENVUkxPUFRfVElNRU9VVCAgICAgICAgPT4gMTIsCiAgICAgICAgICAgIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQgPT4gNiwKICAgICAgICAgICAgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiA9PiB0cnVlLAogICAgICAgICAgICBDVVJMT1BUX1NTTF9WRVJJRllIT1NUID0+IDIsCiAgICAgICAgICAgIENVUkxPUFRfRk9MTE9XTE9DQVRJT04gPT4gZmFsc2UsCiAgICAgICAgICAgIENVUkxPUFRfSFRUUEhFQURFUiAgICAgPT4gWydYLUFwaS1LZXk6ICcgLiBBUElfS0VZLCAnQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uJ10sCiAgICAgICAgXSk7CiAgICAgICAgaWYgKCRwb3N0ICE9PSBudWxsKSB7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGh0dHBfYnVpbGRfcXVlcnkoJHBvc3QpKTsKICAgICAgICB9CiAgICAgICAgJHJhdyA9IGN1cmxfZXhlYygkY2gpOwogICAgICAgIGlmICgkcmF3ID09PSBmYWxzZSkgJHJhdyA9IG51bGw7CiAgICAgICAgY3VybF9jbG9zZSgkY2gpOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBmYWxsYmFjayB3aGVuIHRoZSBjVVJMIGV4dGVuc2lvbiBpcyBtaXNzaW5nIG9uIHRoZSBzYXRlbGxpdGUgaG9zdAogICAgICAgICRvcHRzID0gWydodHRwJyA9PiBbCiAgICAgICAgICAgICdtZXRob2QnICAgICAgICA9PiAkcG9zdCAhPT0gbnVsbCA/ICdQT1NUJyA6ICdHRVQnLAogICAgICAgICAgICAndGltZW91dCcgICAgICAgPT4gMTIsCiAgICAgICAgICAgICdpZ25vcmVfZXJyb3JzJyA9PiB0cnVlLAogICAgICAgICAgICAnaGVhZGVyJyAgICAgICAgPT4gIlgtQXBpLUtleTogIiAuIEFQSV9LRVkgLiAiXHJcbkFjY2VwdDogYXBwbGljYXRpb24vanNvblxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoJHBvc3QgIT09IG51bGwgPyAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcclxuIiA6ICcnKSwKICAgICAgICBdXTsKICAgICAgICBpZiAoJHBvc3QgIT09IG51bGwpICRvcHRzWydodHRwJ11bJ2NvbnRlbnQnXSA9IGh0dHBfYnVpbGRfcXVlcnkoJHBvc3QpOwogICAgICAgICRyYXcgPSBAZmlsZV9nZXRfY29udGVudHMoJHVybCwgZmFsc2UsIHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkb3B0cykpOwogICAgICAgIGlmICgkcmF3ID09PSBmYWxzZSkgJHJhdyA9IG51bGw7CiAgICB9CgogICAgaWYgKCRyYXcgPT09IG51bGwpIHJldHVybiBudWxsOwogICAgJGQgPSBqc29uX2RlY29kZSgkcmF3LCB0cnVlKTsKICAgIHJldHVybiBpc19hcnJheSgkZCkgPyAkZCA6IG51bGw7Cn0KCi8qKiBHRVQgdG8gdGhlIEFQSSwgY2FjaGVkLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGxhc3QgZ29vZCBjb3B5IGlmIHRoZSBhZG1pbiBpcyBkb3duLiAqLwpmdW5jdGlvbiBhcGlfZ2V0KCRlbmRwb2ludCwgJHBhcmFtcyA9IFtdKSB7CiAgICAkcGFyYW1zWydkb21haW4nXSA9ICRwYXJhbXNbJ2RvbWFpbiddID8/IGN1cnJlbnRfZG9tYWluKCk7CiAgICAkdXJsID0gQVBJX0JBU0UgLiAkZW5kcG9pbnQgLiAnPycgLiBodHRwX2J1aWxkX3F1ZXJ5KCRwYXJhbXMpOwogICAgJGtleSA9ICRlbmRwb2ludCAuICd8JyAuIGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcyk7CgogICAgJGhpdCA9IGNhY2hlX3JlYWQoJGtleSwgQ0FDSEVfVFRMKTsKICAgIGlmICgkaGl0ICE9PSBudWxsKSByZXR1cm4gJGhpdDsKCiAgICAkcmVzID0gaHR0cF9qc29uKCR1cmwpOwogICAgaWYgKCRyZXMgIT09IG51bGwgJiYgIWVtcHR5KCRyZXNbJ29rJ10pKSB7CiAgICAgICAgY2FjaGVfd3JpdGUoJGtleSwgJHJlcyk7CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CiAgICAvLyBhZG1pbiBpcyBkb3duIG9yIGVycm9yaW5nOiBzdGFsZSBjb250ZW50IGJlYXRzIGEgYmxhbmsgcGFnZQogICAgJHN0YWxlID0gY2FjaGVfcmVhZF9zdGFsZSgka2V5KTsKICAgIHJldHVybiAkc3RhbGUgIT09IG51bGwgPyAkc3RhbGUgOiAkcmVzOwp9CgovKiogUE9TVCB0byB0aGUgQVBJLiBOZXZlciBjYWNoZWQuICovCmZ1bmN0aW9uIGFwaV9wb3N0KCRlbmRwb2ludCwgJGZpZWxkcykgewogICAgJGZpZWxkc1snZG9tYWluJ10gPSAkZmllbGRzWydkb21haW4nXSA/PyBjdXJyZW50X2RvbWFpbigpOwogICAgcmV0dXJuIGh0dHBfanNvbihBUElfQkFTRSAuICRlbmRwb2ludCwgJGZpZWxkcyk7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSEVMUEVSUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgpmdW5jdGlvbiBoKCR2KSAgICAgeyByZXR1cm4gaHRtbHNwZWNpYWxjaGFycygoc3RyaW5nKSgkdiA/PyAnJyksIEVOVF9RVU9URVMsICdVVEYtOCcpOyB9CmZ1bmN0aW9uIG1vbmV5KCR2KSB7IHJldHVybiBudW1iZXJfZm9ybWF0KChmbG9hdCkkdiwgMik7IH0KZnVuY3Rpb24gdSgkcGFnZSwgJGV4dHJhID0gW10pIHsKICAgICRxID0gYXJyYXlfbWVyZ2UoWydwYWdlJyA9PiAkcGFnZV0sICRleHRyYSk7CiAgICByZXR1cm4gJ2luZGV4LnBocD8nIC4gaHR0cF9idWlsZF9xdWVyeSgkcSk7Cn0KCmRlZmluZSgnU1ZHX0NBUicsICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTMgMTNsMS41LTQuNUEyIDIgMCAwIDEgNi40IDdoMTEuMmEyIDIgMCAwIDEgMS45IDEuNUwyMSAxMyIvPjxwYXRoIGQ9Ik0zIDEzaDE4djRhMSAxIDAgMCAxLTEgMWgtMWExIDEgMCAwIDEtMS0xdi0xSDZ2MWExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMXYtNHoiLz48Y2lyY2xlIGN4PSI3LjUiIGN5PSIxNyIgcj0iMS41Ii8+PGNpcmNsZSBjeD0iMTYuNSIgY3k9IjE3IiByPSIxLjUiLz48L3N2Zz4nKTsKZGVmaW5lKCdTVkdfU1BFRURPJywgJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTciIGhlaWdodD0iMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMTIgMjFhOSA5IDAgMSAwIDAtMTggOSA5IDAgMCAwIDAgMThaIi8+PHBhdGggZD0iTTEyIDEybDMuNS0zLjUiLz48cGF0aCBkPSJNMTIgOHYuMDEiLz48cGF0aCBkPSJNMTYgMTJoLjAxIi8+PHBhdGggZD0iTTggMTJoLjAxIi8+PHBhdGggZD0iTTEyIDE2di4wMSIvPjwvc3ZnPicpOwpkZWZpbmUoJ1NWR19GVUVMJywgJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTciIGhlaWdodD0iMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMyAyMlY2YTIgMiAwIDAgMSAyLTJoNmEyIDIgMCAwIDEgMiAydjE2Ii8+PHBhdGggZD0iTTMgMjJoMTAiLz48cGF0aCBkPSJNMTMgOWgyYTIgMiAwIDAgMSAyIDJ2MWEyIDIgMCAwIDAgMiAydjBhMiAyIDAgMCAwIDItMlY4bC0zLTMiLz48cGF0aCBkPSJNNiA2aDQiLz48L3N2Zz4nKTsKZGVmaW5lKCdTVkdfR0VBUkJPWCcsICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxNyIgcj0iMS40Ii8+PHBhdGggZD0iTTEyIDE1LjVWNiIvPjxwYXRoIGQ9Ik04IDZoOCIvPjxwYXRoIGQ9Ik02IDEwaDQiLz48cGF0aCBkPSJNMTQgMTBoNCIvPjwvc3ZnPicpOwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBTRUxGLVRFU1QgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKZnVuY3Rpb24gc2F0X3NlbGZ0ZXN0KCkgewogICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOCcpOwogICAgJHJvd3MgPSBbXTsKICAgICRhZGQgPSBmdW5jdGlvbiAoJGwsICRvaywgJGQpIHVzZSAoJiRyb3dzKSB7ICRyb3dzW10gPSBbJGwsICRvaywgJGRdOyB9OwoKICAgICRkb21haW4gPSBjdXJyZW50X2RvbWFpbigpOwogICAgJGFkZCgnUEhQJywgdmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCAnOC4wJywgJz49JyksIFBIUF9WRVJTSU9OKTsKICAgICRhZGQoJ2NVUkwgZXh0ZW5zaW9uJywgZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSwKICAgICAgICAgZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSA/ICdhdmFpbGFibGUnIDogJ21pc3NpbmcgLSBmYWxsaW5nIGJhY2sgdG8gZmlsZV9nZXRfY29udGVudHMgKG5lZWRzIGFsbG93X3VybF9mb3BlbiknKTsKICAgICRhZGQoJ1NhdGVsbGl0ZSBzZXJ2ZXIgSVAnLCB0cnVlLCAkX1NFUlZFUlsnU0VSVkVSX0FERFInXSA/PyAnKHVua25vd24pJyk7CiAgICAkYWRkKCdEZXRlY3RlZCBkb21haW4nLCAkZG9tYWluICE9PSAnJywgJGRvbWFpbiAhPT0gJycgPyAkZG9tYWluIDogJ25vdCBkZXRlY3RlZCcpOwoKICAgICR3ciA9IGlzX2RpcihDQUNIRV9ESVIpID8gaXNfd3JpdGFibGUoQ0FDSEVfRElSKSA6IGlzX3dyaXRhYmxlKF9fRElSX18pOwogICAgJGFkZCgnQ2FjaGUgZm9sZGVyJywgJHdyLCAkd3IgPyAnd3JpdGFibGUgYXQgJyAuIENBQ0hFX0RJUiA6ICdOT1Qgd3JpdGFibGUgLSBjYWNoZSBkaXNhYmxlZCwgdGhlIHNpdGUgc3RpbGwgd29ya3MgYnV0IHNsb3dlcicpOwoKICAgIC8vIEhUVFBTIGNvbm5lY3Rpdml0eSB0byB0aGUgYWRtaW4KICAgICR0MCA9IG1pY3JvdGltZSh0cnVlKTsKICAgICRyYXcgPSBodHRwX2pzb24oQVBJX0JBU0UgLiAnc2l0ZV9pbmZvLnBocD8nIC4gaHR0cF9idWlsZF9xdWVyeShbJ2RvbWFpbicgPT4gJGRvbWFpbl0pKTsKICAgICRtcyA9IHJvdW5kKChtaWNyb3RpbWUodHJ1ZSkgLSAkdDApICogMTAwMCk7CgogICAgaWYgKCRyYXcgPT09IG51bGwpIHsKICAgICAgICAkYWRkKCdIVFRQUyB0byBhZG1pbicsIGZhbHNlLAogICAgICAgICAgICAgJ05vIHJlc3BvbnNlIGZyb20gJyAuIEFQSV9CQVNFIC4gJy4gVXN1YWwgY2F1c2VzOiB0aGUgc2F0ZWxsaXRlIGhvc3QgYmxvY2tzIG91dGJvdW5kIGNvbm5lY3Rpb25zLCBvciB0aGUgYXBpLyBmb2xkZXIgaXMgbm90IHVwbG9hZGVkIG9uIHRoZSBhZG1pbi4nKTsKICAgIH0gZWxzZWlmICghZW1wdHkoJHJhd1snb2snXSkpIHsKICAgICAgICAkYWRkKCdIVFRQUyB0byBhZG1pbicsIHRydWUsICdPSyAoJyAuICRtcyAuICcgbXMpJyk7CiAgICAgICAgJGFkZCgnQVBJIGtleScsIHRydWUsICdhY2NlcHRlZCcpOwogICAgICAgICRzID0gJHJhd1snc2l0ZSddOwogICAgICAgICRhZGQoJ1NpdGUgZm91bmQnLCB0cnVlLCAnIycgLiAkc1snaWQnXSAuICcgLSAnIC4gaCgkc1snY29tcGFueV9uYW1lJ10pKTsKICAgICAgICAkYWRkKCdWZWhpY2xlcyBhdmFpbGFibGUnLCB0cnVlLCAoaW50KSgkcmF3Wyd2ZWhpY2xlX2NvdW50J10gPz8gMCkpOwoKICAgICAgICAkcmV2ID0gYXBpX2dldCgncmV2aWV3cy5waHAnLCBbJ2xpbWl0JyA9PiAzXSk7CiAgICAgICAgJGFkZCgnRW5kcG9pbnQgcmV2aWV3cycsICFlbXB0eSgkcmV2WydvayddKSwgIWVtcHR5KCRyZXZbJ29rJ10pID8gKGludCkoJHJldlsndG90YWwnXSA/PyAwKSAuICcgYXBwcm92ZWQgcmV2aWV3cycgOiAnZXJyb3I6ICcgLiBoKCRyZXZbJ2Vycm9yJ10gPz8gJ25vIHJlc3BvbnNlJykpOwoKICAgICAgICAkdmVoID0gYXBpX2dldCgndmVoaWNsZXMucGhwJywgWydsaW1pdCcgPT4gMV0pOwogICAgICAgICRhZGQoJ0VuZHBvaW50IHZlaGljbGVzJywgIWVtcHR5KCR2ZWhbJ29rJ10pLCAhZW1wdHkoJHZlaFsnb2snXSkgPyAnT0snIDogJ2Vycm9yOiAnIC4gaCgkdmVoWydlcnJvciddID8/ICdubyByZXNwb25zZScpKTsKCiAgICAgICAgLy8gaW1hZ2VzIHNlcnZlZCBmcm9tIHRoZSBhZG1pbjogY2hlY2sgdGhlIGxvZ28sIGVsc2UgdGhlIGZpcnN0IHZlaGljbGUgcGhvdG8uCiAgICAgICAgLy8gSWYgdGhlIHNpdGUgaGFzIG5laXRoZXIgeWV0LCB0aGVyZSBpcyBub3RoaW5nIHRvIGNoZWNrIC0tIHJlcG9ydGVkIGFzCiAgICAgICAgLy8gc2tpcHBlZCByYXRoZXIgdGhhbiBhcyBhIGZhaWx1cmUuCiAgICAgICAgJHByb2JlID0gJHNbJ2xvZ29fdXJsJ10gPzogKCR2ZWhbJ3ZlaGljbGVzJ11bMF1bJ2NvdmVyJ10gPz8gbnVsbCk7CiAgICAgICAgaWYgKCRwcm9iZSkgewogICAgICAgICAgICAkY3R4ID0gc3RyZWFtX2NvbnRleHRfY3JlYXRlKFsnaHR0cCcgPT4gWydtZXRob2QnID0+ICdIRUFEJywgJ3RpbWVvdXQnID0+IDYsICdpZ25vcmVfZXJyb3JzJyA9PiB0cnVlXV0pOwogICAgICAgICAgICAkaGRyID0gQGdldF9oZWFkZXJzKCRwcm9iZSwgZmFsc2UsICRjdHgpOwogICAgICAgICAgICAkaW1nT2sgPSAkaGRyICYmIHByZWdfbWF0Y2goJy9ccygyMDB8MzBcZClccy8nLCAkaGRyWzBdKTsKICAgICAgICAgICAgJGFkZCgnSW1hZ2VzIGZyb20gYWRtaW4nLCAoYm9vbCkkaW1nT2ssICgkaW1nT2sgPyAncmVhY2hhYmxlJyA6ICdVTlJFQUNIQUJMRScpIC4gJyAtICcgLiBoKCRwcm9iZSkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRhZGQoJ0ltYWdlcyBmcm9tIGFkbWluJywgdHJ1ZSwgJ3NraXBwZWQ6IHRoZSBzaXRlIGhhcyBubyBsb2dvIGFuZCBubyB2ZWhpY2xlIHBob3RvcyB0byBjaGVjayB5ZXQnKTsKICAgICAgICB9CgogICAgICAgICRjdHgyID0gc3RyZWFtX2NvbnRleHRfY3JlYXRlKFsnaHR0cCcgPT4gWydtZXRob2QnID0+ICdIRUFEJywgJ3RpbWVvdXQnID0+IDYsICdpZ25vcmVfZXJyb3JzJyA9PiB0cnVlXV0pOwogICAgICAgICRoMiA9IEBnZXRfaGVhZGVycyhBU1NFVFNfQkFTRSAuICdzdHlsZS5jc3MnLCBmYWxzZSwgJGN0eDIpOwogICAgICAgICRjc3NPayA9ICRoMiAmJiBwcmVnX21hdGNoKCcvXHMoMjAwfDMwXGQpXHMvJywgJGgyWzBdKTsKICAgICAgICAkYWRkKCdDU1MgZnJvbSBhZG1pbicsIChib29sKSRjc3NPaywgKCRjc3NPayA/ICdyZWFjaGFibGUnIDogJ1VOUkVBQ0hBQkxFJykgLiAnIC0gJyAuIGgoQVNTRVRTX0JBU0UgLiAnc3R5bGUuY3NzJykpOwogICAgfSBlbHNlIHsKICAgICAgICAkZXJyID0gJHJhd1snZXJyb3InXSA/PyAnbmVjdW5vc2N1dGEnOwogICAgICAgICRtc2cgPSBbCiAgICAgICAgICAgICd1bmF1dGhvcml6ZWQnICAgPT4gJ0FQSSBrZXkgbWlzbWF0Y2guIEFQSV9LRVkgaW4gaW5kZXgucGhwIG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBvbmUgaW4gYXBpL19hcGlfaW5jLnBocC4nLAogICAgICAgICAgICAnc2l0ZV9ub3RfZm91bmQnID0+ICdEb21haW4gIicgLiBoKCRkb21haW4pIC4gJyIgaXMgbm90IGluIHRoZSBzaXRlcyB0YWJsZS4gQWRkIGl0IGZyb20gdGhlIGFkbWluIHBhbmVsLCBleGFjdGx5IGxpa2UgdGhpcywgd2l0aG91dCBodHRwczovLyBhbmQgd2l0aG91dCB3d3cuJywKICAgICAgICAgICAgJ3NpdGVfaW5hY3RpdmUnICA9PiAnVGhlIHNpdGUgZXhpc3RzIGJ1dCBpcyBkaXNhYmxlZCBpbiB0aGUgYWRtaW4gcGFuZWwuJywKICAgICAgICAgICAgJ2RiX3VuYXZhaWxhYmxlJyA9PiAnVGhlIGFkbWluIHJlc3BvbmRzIGJ1dCBjYW5ub3QgcmVhY2ggaXRzIG93biBkYXRhYmFzZS4gQ2hlY2sgdGhlIGNyZWRlbnRpYWxzIGluIGFwaS9fYXBpX2luYy5waHAuJywKICAgICAgICBdWyRlcnJdID8/ICgnRXJyb3I6ICcgLiBoKCRlcnIpKTsKICAgICAgICAkYWRkKCdIVFRQUyB0byBhZG1pbicsIHRydWUsICdyZXNwb25kcyAoJyAuICRtcyAuICcgbXMpJyk7CiAgICAgICAgJGFkZCgnQVBJIHJlc3BvbnNlJywgZmFsc2UsICRtc2cpOwogICAgfQoKICAgICRhbGxPayA9IHRydWU7CiAgICBmb3JlYWNoICgkcm93cyBhcyAkcikgaWYgKCEkclsxXSkgJGFsbE9rID0gZmFsc2U7CgogICAgZWNobyAnPCFkb2N0eXBlIGh0bWw+PG1ldGEgY2hhcnNldD0idXRmLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj48dGl0bGU+U2F0ZWxsaXRlIGNvbm5lY3Rpb24gY2hlY2s8L3RpdGxlPic7CiAgICBlY2hvICc8c3R5bGU+Ym9keXtmb250OjE0cHgvMS42IHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLHNhbnMtc2VyaWY7YmFja2dyb3VuZDojZjZmN2Y5O21hcmdpbjowO3BhZGRpbmc6MzJweCAxNnB4O2NvbG9yOiMxYTFkMjN9CiAgICAud3ttYXgtd2lkdGg6ODYwcHg7bWFyZ2luOjAgYXV0bztiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZTNlNmVhO2JvcmRlci1yYWRpdXM6MTBweDtvdmVyZmxvdzpoaWRkZW59CiAgICBoMXttYXJnaW46MDtwYWRkaW5nOjIwcHggMjRweDtmb250LXNpemU6MTdweDtiYWNrZ3JvdW5kOicgLiAoJGFsbE9rID8gJyMwZjdiM2YnIDogJyNhNTIyMjInKSAuICc7Y29sb3I6I2ZmZn0KICAgIHRhYmxle3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfXRke3BhZGRpbmc6MTFweCAyNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlZWYwZjM7dmVydGljYWwtYWxpZ246dG9wfQogICAgdGQuc3t3aWR0aDozNHB4O2ZvbnQtd2VpZ2h0OjcwMH10ZC5se3dpZHRoOjIxMHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojM2I0MDQ4fXRkLmR7Y29sb3I6IzU1NTt3b3JkLWJyZWFrOmJyZWFrLXdvcmR9CiAgICAub2t7Y29sb3I6IzBmN2IzZn0ubm97Y29sb3I6I2MwMzkyYn0KICAgIC5me3BhZGRpbmc6MTZweCAyNHB4O2JhY2tncm91bmQ6I2ZiZmJmYztib3JkZXItdG9wOjFweCBzb2xpZCAjZWVmMGYzO2NvbG9yOiM2NjY7Zm9udC1zaXplOjEyLjVweH08L3N0eWxlPic7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJ3Ij48aDE+JyAuICgkYWxsT2sgPyAnJiMxMDAwMzsgQWRtaW4gJnJhcnI7IHNhdGVsbGl0ZSBjb25uZWN0aW9uIHdvcmtzJyA6ICcmIzEwMDA3OyBDb25uZWN0aW9uIGlzIG5vdCBjb21wbGV0ZScpIC4gJzwvaDE+PHRhYmxlPic7CiAgICBmb3JlYWNoICgkcm93cyBhcyAkcikgewogICAgICAgIGVjaG8gJzx0cj48dGQgY2xhc3M9InMgJyAuICgkclsxXSA/ICdvayI+JiMxMDAwMzsnIDogJ25vIj4mIzEwMDA3OycpIC4gJzwvdGQ+PHRkIGNsYXNzPSJsIj4nIC4gJHJbMF0gLiAnPC90ZD48dGQgY2xhc3M9ImQiPicgLiAkclsyXSAuICc8L3RkPjwvdHI+JzsKICAgIH0KICAgIGVjaG8gJzwvdGFibGU+PGRpdiBjbGFzcz0iZiI+QWRtaW46ICcgLiBoKEFQSV9CQVNFKSAuICcgJm1pZGRvdDsgZ2VuZXJhdGVkICcgLiBkYXRlKCdZLW0tZCBIOmk6cycpIC4gJzwvZGl2PjwvZGl2Pic7CiAgICBleGl0Owp9CgppZiAoaXNzZXQoJF9HRVRbJ19fc2F0Y2hlY2snXSkgJiYgaGFzaF9lcXVhbHMoU0FUX0NIRUNLX0tFWSwgKHN0cmluZykkX0dFVFsnX19zYXRjaGVjayddKSkgewogICAgc2F0X3NlbGZ0ZXN0KCk7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU0lURSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgokc2l0ZVJlc3AgPSBhcGlfZ2V0KCdzaXRlX2luZm8ucGhwJyk7CgppZiAoJHNpdGVSZXNwID09PSBudWxsKSB7CiAgICBodHRwX3Jlc3BvbnNlX2NvZGUoNTAzKTsKICAgIGRpZSgnU2l0ZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZS4gUGxlYXNlIHRyeSBhZ2FpbiBzaG9ydGx5LicpOwp9CmlmIChlbXB0eSgkc2l0ZVJlc3BbJ29rJ10pKSB7CiAgICAkZXJyID0gJHNpdGVSZXNwWydlcnJvciddID8/ICcnOwogICAgaWYgKCRlcnIgPT09ICdzaXRlX2luYWN0aXZlJykgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNTAzKTsgZGllKCdUaGlzIHNpdGUgaXMgY3VycmVudGx5IHVuYXZhaWxhYmxlLicpOyB9CiAgICBpZiAoJGVyciA9PT0gJ3VuYXV0aG9yaXplZCcgJiYgU0FUX0RFQlVHKSB7IGh0dHBfcmVzcG9uc2VfY29kZSg1MDApOyBkaWUoJ0FQSSBrZXkgbWlzbWF0Y2ggYmV0d2VlbiBpbmRleC5waHAgYW5kIGFwaS9fYXBpX2luYy5waHAuJyk7IH0KICAgIGh0dHBfcmVzcG9uc2VfY29kZSg0MDQpOwogICAgZGllKCdUaGlzIGRvbWFpbiBpcyBub3QgY29uZmlndXJlZCB5ZXQuIFBsZWFzZSBjb250YWN0IHRoZSBzaXRlIGFkbWluaXN0cmF0b3IuJyk7Cn0KJFNJVEUgPSAkc2l0ZVJlc3BbJ3NpdGUnXTsKJFZFSElDTEVfQ09VTlQgPSAoaW50KSgkc2l0ZVJlc3BbJ3ZlaGljbGVfY291bnQnXSA/PyAwKTsKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUk9VVEVSID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiRwYWdlcyA9IFsKICAgICdob21lJyAgICAgICAgICAgICAgICAgPT4gJ0hvbWUnLAogICAgJ2ludmVudG9yeScgICAgICAgICAgICA9PiAnSW52ZW50b3J5JywKICAgICd2ZWhpY2xlJyAgICAgICAgICAgICAgPT4gJ1ZlaGljbGUnLAogICAgJ3Jldmlld3MnICAgICAgICAgICAgICA9PiAnUmV2aWV3cycsCiAgICAnY29udGFjdCcgICAgICAgICAgICAgID0+ICdDb250YWN0IFVzJywKICAgICdhYm91dCcgICAgICAgICAgICAgICAgPT4gJ0Fib3V0IFVzJywKICAgICdkZWxpdmVyeScgICAgICAgICAgICAgPT4gJ0RlbGl2ZXJ5JywKICAgICd3YXJyYW50eScgICAgICAgICAgICAgPT4gJ1dhcnJhbnR5JywKICAgICdidXktYmFjay1ndWFyYW50ZWUnICAgPT4gJzE0IERheXMgQnV5IEJhY2sgR3VhcmFudGVlJywKICAgICd0ZXJtcy1vZi11c2UnICAgICAgICAgPT4gJ1Rlcm1zIG9mIFVzZScsCiAgICAncHJpdmFjeS1wb2xpY3knICAgICAgID0+ICdQcml2YWN5IFBvbGljeScsCiAgICAnY29va2llcy1wb2xpY3knICAgICAgID0+ICdDb29raWVzIFBvbGljeScsCl07CgokcGFnZSA9IChzdHJpbmcpKCRfR0VUWydwYWdlJ10gPz8gJ2hvbWUnKTsKCi8vIEpTT04gZW5kcG9pbnQgZm9yIHRoZSBsaXZlIGZpbHRlcmluZyBpbiBtYWluLmpzCmlmICgkcGFnZSA9PT0gJ2ludmVudG9yeV9kYXRhJykgewogICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnKTsKICAgICRyZXMgPSBhcGlfZ2V0KCd2ZWhpY2xlcy5waHAnLCBbCiAgICAgICAgJ3EnICAgICAgICAgICAgPT4gJF9HRVRbJ3EnXSA/PyAnJywKICAgICAgICAnbWFrZScgICAgICAgICA9PiAkX0dFVFsnbWFrZSddID8/ICcnLAogICAgICAgICdtb2RlbCcgICAgICAgID0+ICRfR0VUWydtb2RlbCddID8/ICcnLAogICAgICAgICd0cmFuc21pc3Npb24nID0+ICRfR0VUWyd0cmFuc21pc3Npb24nXSA/PyAnJywKICAgICAgICAnYm9keV90eXBlJyAgICA9PiAkX0dFVFsnYm9keV90eXBlJ10gPz8gJycsCiAgICAgICAgJ2Z1ZWwnICAgICAgICAgPT4gJF9HRVRbJ2Z1ZWwnXSA/PyAnJywKICAgICAgICAncHJpY2UnICAgICAgICA9PiAkX0dFVFsncHJpY2UnXSA/PyAnJywKICAgICAgICAnbGltaXQnICAgICAgICA9PiAxMjAsCiAgICBdKTsKICAgICRsaXN0ID0gJHJlc1sndmVoaWNsZXMnXSA/PyBbXTsKICAgIGVjaG8ganNvbl9lbmNvZGUoWydjb3VudCcgPT4gY291bnQoJGxpc3QpLCAndmVoaWNsZXMnID0+IGFycmF5X21hcChmdW5jdGlvbiAoJHYpIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnc2x1ZycgICAgICAgICAgICAgICAgPT4gJHZbJ3NsdWcnXSwKICAgICAgICAgICAgJ3RpdGxlJyAgICAgICAgICAgICAgID0+ICR2Wyd0aXRsZSddLAogICAgICAgICAgICAneWVhcicgICAgICAgICAgICAgICAgPT4gJHZbJ3llYXInXSwKICAgICAgICAgICAgJ21pbGVhZ2UnICAgICAgICAgICAgID0+IG51bWJlcl9mb3JtYXQoKGludCkkdlsnbWlsZWFnZSddKSwKICAgICAgICAgICAgJ3RyYW5zbWlzc2lvbicgICAgICAgID0+ICR2Wyd0cmFuc21pc3Npb24nXSwKICAgICAgICAgICAgJ2Z1ZWwnICAgICAgICAgICAgICAgID0+ICR2WydmdWVsJ10sCiAgICAgICAgICAgICdwcmljZScgICAgICAgICAgICAgICA9PiBtb25leSgkdlsncHJpY2UnXSksCiAgICAgICAgICAgICdzdGF0dXMnICAgICAgICAgICAgICA9PiAkdlsnc3RhdHVzJ10sCiAgICAgICAgICAgICdyZWdpc3RyYXRpb25fbnVtYmVyJyA9PiAkdlsncmVnaXN0cmF0aW9uX251bWJlciddLAogICAgICAgICAgICAnY292ZXInICAgICAgICAgICAgICAgPT4gJHZbJ2NvdmVyJ10sCiAgICAgICAgXTsKICAgIH0sICRsaXN0KV0pOwogICAgZXhpdDsKfQoKaWYgKCFpc3NldCgkcGFnZXNbJHBhZ2VdKSkgJHBhZ2UgPSAnaG9tZSc7CiRQQUdFX1RJVExFID0gJHBhZ2VzWyRwYWdlXTsKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gVEVNUExBVEUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKZnVuY3Rpb24gcmVuZGVyX2hlYWRlcigkdGl0bGUpIHsKICAgIGdsb2JhbCAkU0lURTsKICAgICRsb2dvID0gJFNJVEVbJ2xvZ29fdXJsJ107CiAgICA/PjwhZG9jdHlwZSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cjx0aXRsZT48Pz0gaCgkdGl0bGUpID8+IC0gPD89IGgoJFNJVEVbJ2NvbXBhbnlfbmFtZSddKSA/PjwvdGl0bGU+CjxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSI8Pz0gaCgkU0lURVsnY29tcGFueV9uYW1lJ10pID8+IC0gcXVhbGl0eSwgaW5zcGVjdGVkIHZlaGljbGVzIHdpdGggd2FycmFudHkuIj4KPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIj4KPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbj4KPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1CZWJhcytOZXVlJmZhbWlseT1ETStTYW5zOndnaHRANDAwOzUwMDs2MDA7NzAwOzgwMDs5MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ijw/PSBoKEFTU0VUU19CQVNFKSA/PnN0eWxlLmNzcyI+CjxzdHlsZT46cm9vdHstLXByaW1hcnk6IDw/PSBoKCRTSVRFWyd0aGVtZV9jb2xvciddID86ICcjMGQ2ZWZkJykgPz47fTwvc3R5bGU+Cjw/cGhwIGlmICgkbG9nbyk6ID8+PGxpbmsgcmVsPSJpY29uIiBocmVmPSI8Pz0gaCgkbG9nbykgPz4iPjw/cGhwIGVuZGlmOyA/Pgo8L2hlYWQ+Cjxib2R5Pgo8P3BocCBpZiAoJFNJVEVbJ2NvbnRhY3RfcGhvbmUnXSB8fCAkU0lURVsnY29udGFjdF9lbWFpbCddKTogPz4KPGRpdiBjbGFzcz0idXRpbGl0eS1iYXIiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJ1Yi1sZWZ0Ij4KICAgICAgPHNwYW4gY2xhc3M9InViLXRleHQtZnVsbCI+JiMxMjg2NjM7IEZyZWUgVUsgZGVsaXZlcnkgJm1pZGRvdDsgMS15ZWFyIHdhcnJhbnR5ICZtaWRkb3Q7IDE0LWRheSBidXkgYmFjayBndWFyYW50ZWU8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJ1Yi10ZXh0LXNob3J0Ij4mIzEyODY2MzsgRnJlZSBVSyBkZWxpdmVyeSAmbWlkZG90OyAxLXllYXIgd2FycmFudHkgJm1pZGRvdDsgMTQtZGF5IGJ1eSBiYWNrPC9zcGFuPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ1Yi1yaWdodCI+CiAgICAgIDw/cGhwIGlmICgkU0lURVsnY29udGFjdF9waG9uZSddKTogPz48YSBocmVmPSJ0ZWw6PD89IGgoJFNJVEVbJ2NvbnRhY3RfcGhvbmUnXSkgPz4iPiYjMTI4MjIyOyA8Pz0gaCgkU0lURVsnY29udGFjdF9waG9uZSddKSA/PjwvYT48P3BocCBlbmRpZjsgPz4KICAgICAgPD9waHAgaWYgKCRTSVRFWydjb250YWN0X2VtYWlsJ10pOiA/PjxhIGhyZWY9Im1haWx0bzo8Pz0gaCgkU0lURVsnY29udGFjdF9lbWFpbCddKSA/PiI+JiM5OTkzOyYjNjUwMzk7IDw/PSBoKCRTSVRFWydjb250YWN0X2VtYWlsJ10pID8+PC9hPjw/cGhwIGVuZGlmOyA/PgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2Pgo8P3BocCBlbmRpZjsgPz4KPGhlYWRlciBjbGFzcz0ic2l0ZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBoZWFkZXItaW5uZXIiPgogICAgPGEgaHJlZj0iPD89IHUoJ2hvbWUnKSA/PiIgY2xhc3M9ImJyYW5kIj4KICAgICAgPD9waHAgaWYgKCRsb2dvKTogPz48c3BhbiBjbGFzcz0iYnJhbmQtbG9nby1mcmFtZSI+PGltZyBzcmM9Ijw/PSBoKCRsb2dvKSA/PiIgYWx0PSI8Pz0gaCgkU0lURVsnY29tcGFueV9uYW1lJ10pID8+IiBjbGFzcz0iYnJhbmQtbG9nbyI+PC9zcGFuPgogICAgICA8P3BocCBlbHNlOiA/PjxzcGFuPjw/PSBoKCRTSVRFWydjb21wYW55X3Nob3J0X25hbWUnXSA/OiAkU0lURVsnY29tcGFueV9uYW1lJ10pID8+PC9zcGFuPjw/cGhwIGVuZGlmOyA/PgogICAgPC9hPgogICAgPGJ1dHRvbiBjbGFzcz0ibmF2LXRvZ2dsZSIgb25jbGljaz0iZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1haW4tbmF2JykuY2xhc3NMaXN0LnRvZ2dsZSgnb3BlbicpIiBhcmlhLWxhYmVsPSJNZW51Ij4mIzk3NzY7PC9idXR0b24+CiAgICA8bmF2IGNsYXNzPSJtYWluLW5hdiI+CiAgICAgIDxhIGhyZWY9Ijw/PSB1KCdob21lJykgPz4iPkhvbWU8L2E+CiAgICAgIDxhIGhyZWY9Ijw/PSB1KCdpbnZlbnRvcnknKSA/PiI+SW52ZW50b3J5PC9hPgogICAgICA8YSBocmVmPSI8Pz0gdSgnZGVsaXZlcnknKSA/PiI+RGVsaXZlcnk8L2E+CiAgICAgIDxhIGhyZWY9Ijw/PSB1KCdidXktYmFjay1ndWFyYW50ZWUnKSA/PiI+MTQgRGF5cyBCdXkgQmFjayBHdWFyYW50ZWU8L2E+CiAgICAgIDxhIGhyZWY9Ijw/PSB1KCd3YXJyYW50eScpID8+Ij5XYXJyYW50eTwvYT4KICAgICAgPGEgaHJlZj0iPD89IHUoJ2Fib3V0JykgPz4iPkFib3V0IFVzPC9hPgogICAgICA8YSBocmVmPSI8Pz0gdSgncmV2aWV3cycpID8+Ij5SZXZpZXdzPC9hPgogICAgICA8YSBocmVmPSI8Pz0gdSgnY29udGFjdCcpID8+IiBjbGFzcz0ibmF2LWN0YSI+JiM5OTkzOyYjNjUwMzk7IENvbnRhY3QgVXM8L2E+CiAgICA8L25hdj4KICA8L2Rpdj4KPC9oZWFkZXI+CjxtYWluPgo8P3BocAp9CgpmdW5jdGlvbiByZW5kZXJfZm9vdGVyKCkgewogICAgZ2xvYmFsICRTSVRFOwogICAgJGYgPSBhcGlfZ2V0KCd2ZWhpY2xlcy5waHAnLCBbJ2xpbWl0JyA9PiAxMDBdKTsKICAgICRtYWtlcyA9ICRmWydmaWx0ZXJzJ11bJ21ha2VzJ10gPz8gW107CiAgICAkdHlwZXMgPSAkZlsnZmlsdGVycyddWydib2R5X3R5cGVzJ10gPz8gW107CiAgICA/Pgo8L21haW4+Cjxmb290ZXIgY2xhc3M9InNpdGUtZm9vdGVyIj4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIgZm9vdGVyLWdyaWQiPgogICAgPGRpdj48aDQ+Q29tcGFueTwvaDQ+PHA+CiAgICAgIDxhIGhyZWY9Ijw/PSB1KCdhYm91dCcpID8+Ij5BYm91dCBVczwvYT48YnI+CiAgICAgIDxhIGhyZWY9Ijw/PSB1KCdjb250YWN0JykgPz4iPkNvbnRhY3QgVXM8L2E+PGJyPgogICAgICA8YSBocmVmPSI8Pz0gdSgncmV2aWV3cycpID8+Ij5SZXZpZXdzPC9hPgogICAgPC9wPjwvZGl2PgogICAgPGRpdj48aDQ+UXVpY2sgTGlua3M8L2g0PjxwPgogICAgICA8YSBocmVmPSI8Pz0gdSgnaG9tZScpID8+Ij5Ib21lPC9hPjxicj4KICAgICAgPGEgaHJlZj0iPD89IHUoJ2ludmVudG9yeScpID8+Ij5JbnZlbnRvcnk8L2E+PGJyPgogICAgICA8YSBocmVmPSI8Pz0gdSgnZGVsaXZlcnknKSA/PiI+RGVsaXZlcnk8L2E+PGJyPgogICAgICA8YSBocmVmPSI8Pz0gdSgnd2FycmFudHknKSA/PiI+V2FycmFudHk8L2E+CiAgICA8L3A+PC9kaXY+CiAgICA8ZGl2PjxoND5PdXIgQnJhbmRzPC9oND48cD4KICAgICAgPD9waHAgaWYgKCRtYWtlcyk6IGZvcmVhY2ggKGFycmF5X3NsaWNlKCRtYWtlcywgMCwgOCkgYXMgJG0pOiA/PgogICAgICAgIDxhIGhyZWY9Ijw/PSB1KCdpbnZlbnRvcnknLCBbJ21ha2UnID0+ICRtXSkgPz4iPjw/PSBoKCRtKSA/PjwvYT48YnI+CiAgICAgIDw/cGhwIGVuZGZvcmVhY2g7IGVsc2U6ID8+PHNwYW4gc3R5bGU9ImNvbG9yOiM4YjhkOWEiPk5vIGJyYW5kcyBmb3VuZDwvc3Bhbj48P3BocCBlbmRpZjsgPz4KICAgIDwvcD48L2Rpdj4KICAgIDxkaXY+PGg0PlZlaGljbGUgVHlwZXM8L2g0PjxwPgogICAgICA8P3BocCBpZiAoJHR5cGVzKTogZm9yZWFjaCAoYXJyYXlfc2xpY2UoJHR5cGVzLCAwLCA4KSBhcyAkdCk6ID8+CiAgICAgICAgPGEgaHJlZj0iPD89IHUoJ2ludmVudG9yeScsIFsnYm9keV90eXBlJyA9PiAkdF0pID8+Ij48Pz0gaCgkdCkgPz48L2E+PGJyPgogICAgICA8P3BocCBlbmRmb3JlYWNoOyBlbHNlOiA/PjxzcGFuIHN0eWxlPSJjb2xvcjojOGI4ZDlhIj5ObyB0eXBlcyBmb3VuZDwvc3Bhbj48P3BocCBlbmRpZjsgPz4KICAgIDwvcD48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIgZm9vdGVyLWJvdHRvbSI+CiAgICA8ZGl2IGNsYXNzPSJmb290ZXItbGVnYWwiPgogICAgICA8YSBocmVmPSI8Pz0gdSgndGVybXMtb2YtdXNlJykgPz4iPlRlcm1zIG9mIFVzZTwvYT4KICAgICAgPGEgaHJlZj0iPD89IHUoJ3ByaXZhY3ktcG9saWN5JykgPz4iPlByaXZhY3kgUG9saWN5PC9hPgogICAgICA8YSBocmVmPSI8Pz0gdSgnY29va2llcy1wb2xpY3knKSA/PiI+Q29va2llcyBQb2xpY3k8L2E+CiAgICAgIDxhIGhyZWY9Ijw/PSB1KCdidXktYmFjay1ndWFyYW50ZWUnKSA/PiI+QnV5IEJhY2sgUG9saWN5PC9hPgogICAgPC9kaXY+CiAgICAmY29weTsgPD89IGRhdGUoJ1knKSA/PiA8Pz0gaCgkU0lURVsnY29tcGFueV9uYW1lJ10pID8+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgPD9waHAgaWYgKCRTSVRFWydjb21wYW55X251bWJlciddKTogPz4KICAgIDxkaXYgY2xhc3M9InBvd2VyZWQtYnkiPlJlZ2lzdGVyZWQgaW4gRW5nbGFuZCBhbmQgV2FsZXMsIGNvbXBhbnkgbnVtYmVyIDw/PSBoKCRTSVRFWydjb21wYW55X251bWJlciddKSA/PjwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgPC9kaXY+CjwvZm9vdGVyPgo8c2NyaXB0IHNyYz0iPD89IGgoQVNTRVRTX0JBU0UpID8+bWFpbi5qcyI+PC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo8P3BocAp9CgpmdW5jdGlvbiB2ZWhpY2xlX2NhcmQoJHYpIHsgPz4KICA8YSBjbGFzcz0idmVoaWNsZS1jYXJkIiBocmVmPSI8Pz0gdSgndmVoaWNsZScsIFsnc2x1ZycgPT4gJHZbJ3NsdWcnXV0pID8+Ij4KICAgIDxkaXYgY2xhc3M9ImltZyI+PD9waHAgaWYgKCR2Wydjb3ZlciddKTogPz48aW1nIHNyYz0iPD89IGgoJHZbJ2NvdmVyJ10pID8+IiBhbHQ9Ijw/PSBoKCR2Wyd0aXRsZSddKSA/PiI+PD9waHAgZW5kaWY7ID8+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgPD9waHAgaWYgKCgkdlsnc3RhdHVzJ10gPz8gJycpID09PSAncmVzZXJ2ZWQnKTogPz48c3BhbiBjbGFzcz0ic3RhdHVzLXRhZyByZXNlcnZlZCI+UmVzZXJ2ZWQ8L3NwYW4+PD9waHAgZW5kaWY7ID8+CiAgICAgIDxoMz48Pz0gaCgkdlsndGl0bGUnXSkgPz48L2gzPgogICAgICA8P3BocCBpZiAoIWVtcHR5KCR2WydyZWdpc3RyYXRpb25fbnVtYmVyJ10pKTogPz48ZGl2IGNsYXNzPSJjYXJkLXBsYXRlIj48Pz0gaCgkdlsncmVnaXN0cmF0aW9uX251bWJlciddKSA/PjwvZGl2Pjw/cGhwIGVuZGlmOyA/PgogICAgICA8ZGl2IGNsYXNzPSJzcGVjLXJvdyI+CiAgICAgICAgPHNwYW4+PD89IFNWR19TUEVFRE8gPz48Pz0gbnVtYmVyX2Zvcm1hdCgoaW50KSR2WydtaWxlYWdlJ10pID8+IE1pbGVzPC9zcGFuPgogICAgICAgIDxzcGFuPjw/PSBTVkdfRlVFTCA/Pjw/PSBoKCR2WydmdWVsJ10pID8+PC9zcGFuPgogICAgICAgIDxzcGFuPjw/PSBTVkdfR0VBUkJPWCA/Pjw/PSBoKCR2Wyd0cmFuc21pc3Npb24nXSkgPz48L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYXJkLWZvb3QiPgogICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4mcG91bmQ7PD89IG1vbmV5KCR2WydwcmljZSddKSA/PjwvZGl2PgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aWV3LWxpbmsiPlZpZXcgRGV0YWlsczwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2E+Cjw/cGhwIH0KCmZ1bmN0aW9uIGxlZ2FsX3BhZ2UoJHRpdGxlLCAkZXllYnJvdywgJGludHJvLCAkc2VjdGlvbnMpIHsKICAgIGdsb2JhbCAkU0lURTsgPz4KPHNlY3Rpb24gY2xhc3M9Imhlcm8gaGVyby1hbHQiIHN0eWxlPSJwYWRkaW5nOjgwcHggMDt0ZXh0LWFsaWduOmxlZnQiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9Im1heC13aWR0aDo4MjBweCI+CiAgICA8cCBjbGFzcz0iaGVyby1leWVicm93Ij48Pz0gaCgkZXllYnJvdykgPz48L3A+CiAgICA8aDEgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PD89IGgoJHRpdGxlKSA/PjwvaDE+CiAgICA8cCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O21hcmdpbjowIj48Pz0gJGludHJvID8+PC9wPgogIDwvZGl2Pgo8L3NlY3Rpb24+CjxzZWN0aW9uIGNsYXNzPSJyZXZlYWwiPjxkaXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9Im1heC13aWR0aDo4MjBweCI+CiAgPHAgc3R5bGU9ImNvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MTNweCI+TGFzdCB1cGRhdGVkOiA8Pz0gZGF0ZSgnRiBZJykgPz48L3A+CiAgPD9waHAgJGkgPSAxOyBmb3JlYWNoICgkc2VjdGlvbnMgYXMgJGhlYWQgPT4gJGJvZHkpOiA/PgogICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIiBzdHlsZT0ibWFyZ2luLXRvcDo8Pz0gJGkgPT09IDEgPyAxMCA6IDMwID8+cHgiPjw/PSAkaSA/Pi4gPD89IGgoJGhlYWQpID8+PC9oMj4KICAgIDw/PSAkYm9keSA/PgogIDw/cGhwICRpKys7IGVuZGZvcmVhY2g7ID8+CjwvZGl2Pjwvc2VjdGlvbj4KPD9waHAgfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBQQUdFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgpyZW5kZXJfaGVhZGVyKCRQQUdFX1RJVExFKTsKCnN3aXRjaCAoJHBhZ2UpIHsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSE9NRSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmNhc2UgJ2hvbWUnOgogICAgJHJlcyAgICAgID0gYXBpX2dldCgndmVoaWNsZXMucGhwJywgWydsaW1pdCcgPT4gOF0pOwogICAgJGZlYXR1cmVkID0gJHJlc1sndmVoaWNsZXMnXSA/PyBbXTsKICAgICRyZXZSZXMgICA9IGFwaV9nZXQoJ3Jldmlld3MucGhwJywgWydsaW1pdCcgPT4gOF0pOwogICAgJHJldmlld3MgID0gJHJldlJlc1sncmV2aWV3cyddID8/IFtdOwogICAgJGJvZHlUeXBlcyA9IFsnSGF0Y2hiYWNrJywnU1VWJywnU2Fsb29uJywnRXN0YXRlJywnQ291cGUnLCdDb252ZXJ0aWJsZSddOwo/Pgo8c2VjdGlvbiBjbGFzcz0iaGVybyI+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgIDxwIGNsYXNzPSJoZXJvLWV5ZWJyb3ciPlRydXN0ZWQgVUsgVmVoaWNsZSBTcGVjaWFsaXN0PC9wPgogICAgPGgxPkZpbmQgdGhlIHJpZ2h0IGNhciBhdCA8Pz0gaCgkU0lURVsnY29tcGFueV9uYW1lJ10pID8+PC9oMT4KICAgIDxwPldlIGFyZSBhbiBpbnRlcm5ldC1iYXNlZCBjb21wYW55IGFuZCBkbyBub3Qgb3BlcmF0ZSBhIHBoeXNpY2FsIHNob3dyb29tICZtZGFzaDsgaW5zcGVjdGVkIHZlaGljbGVzLCBjbGVhciBoaXN0b3J5LCB3YXJyYW50eSBpbmNsdWRlZC48L3A+CiAgICA8Zm9ybSBjbGFzcz0ic2VhcmNoLWJhciIgYWN0aW9uPSJpbmRleC5waHAiIG1ldGhvZD0iZ2V0Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZSIgdmFsdWU9ImludmVudG9yeSI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJxIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGJ5IGtleXdvcmRzIChlLmcuIEJNVywgMjAyMiwgUGV0cm9sKS4uLiI+CiAgICAgIDxzZWxlY3QgbmFtZT0iYm9keV90eXBlIj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPkJvZHkgVHlwZXM8L29wdGlvbj4KICAgICAgICA8P3BocCBmb3JlYWNoICgkYm9keVR5cGVzIGFzICRidCk6ID8+PG9wdGlvbiB2YWx1ZT0iPD89IGgoJGJ0KSA/PiI+PD89IGgoJGJ0KSA/Pjwvb3B0aW9uPjw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgIDwvc2VsZWN0PgogICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCI+U2VhcmNoIENhcnM8L2J1dHRvbj4KICAgIDwvZm9ybT4KICA8L2Rpdj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gY2xhc3M9InN0YXRzLXN0cmlwIj48ZGl2IGNsYXNzPSJjb250YWluZXIiPgogIDxkaXYgY2xhc3M9InN0YXQtaXRlbSI+PGRpdiBjbGFzcz0ic3RhdC1udW0iPjw/PSAkVkVISUNMRV9DT1VOVCA/Pis8L2Rpdj48ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5WZWhpY2xlcyBBdmFpbGFibGU8L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJzdGF0LWl0ZW0iPjxkaXYgY2xhc3M9InN0YXQtbnVtIj4xMDAlPC9kaXY+PGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+VUsgRGVsaXZlcmVkPC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0ic3RhdC1pdGVtIj48ZGl2IGNsYXNzPSJzdGF0LW51bSI+MXlyPC9kaXY+PGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+V2FycmFudHkgSW5jbHVkZWQ8L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJzdGF0LWl0ZW0iPjxkaXYgY2xhc3M9InN0YXQtbnVtIj4xNGQ8L2Rpdj48ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5CdXkgQmFjayBHdWFyYW50ZWU8L2Rpdj48L2Rpdj4KPC9kaXY+PC9zZWN0aW9uPgoKPD9waHAgaWYgKCRmZWF0dXJlZCk6ICRzcG90ID0gJGZlYXR1cmVkWzBdOyA/Pgo8c2VjdGlvbiBjbGFzcz0ic3BvdGxpZ2h0IHJldmVhbCI+PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8cCBjbGFzcz0ic2VjdGlvbi1leWVicm93IiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPkp1c3QgTGlzdGVkPC9wPgogIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj5GZWF0dXJlZCBWZWhpY2xlPC9oMj4KICA8ZGl2IGNsYXNzPSJzcG90bGlnaHQtd3JhcCI+CiAgICA8ZGl2IGNsYXNzPSJzcG90bGlnaHQtaW1nIj48P3BocCBpZiAoJHNwb3RbJ2NvdmVyJ10pOiA/PjxpbWcgc3JjPSI8Pz0gaCgkc3BvdFsnY292ZXInXSkgPz4iIGFsdD0iPD89IGgoJHNwb3RbJ3RpdGxlJ10pID8+Ij48P3BocCBlbmRpZjsgPz48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InNwb3RsaWdodC1ib2R5Ij4KICAgICAgPHAgY2xhc3M9InNwb3RsaWdodC10YWciPiYjMTEwODg7IEhhbmRwaWNrZWQgVGhpcyBXZWVrPC9wPgogICAgICA8aDM+PD89IGgoJHNwb3RbJ3RpdGxlJ10pID8+PC9oMz4KICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPiZwb3VuZDs8Pz0gbW9uZXkoJHNwb3RbJ3ByaWNlJ10pID8+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPgogICAgICAgIDw/cGhwIGlmICgkc3BvdFsneWVhciddKTogPz48c3Bhbj48Pz0gaCgkc3BvdFsneWVhciddKSA/Pjwvc3Bhbj48P3BocCBlbmRpZjsgPz4KICAgICAgICA8c3Bhbj48Pz0gbnVtYmVyX2Zvcm1hdCgoaW50KSRzcG90WydtaWxlYWdlJ10pID8+IG1pPC9zcGFuPgogICAgICAgIDw/cGhwIGlmICgkc3BvdFsndHJhbnNtaXNzaW9uJ10pOiA/PjxzcGFuPjw/PSBoKCRzcG90Wyd0cmFuc21pc3Npb24nXSkgPz48L3NwYW4+PD9waHAgZW5kaWY7ID8+CiAgICAgICAgPD9waHAgaWYgKCRzcG90WydmdWVsJ10pOiA/PjxzcGFuPjw/PSBoKCRzcG90WydmdWVsJ10pID8+PC9zcGFuPjw/cGhwIGVuZGlmOyA/PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDoxMnB4O2ZsZXgtd3JhcDp3cmFwIj4KICAgICAgICA8YSBjbGFzcz0iYnRuIiBocmVmPSI8Pz0gdSgndmVoaWNsZScsIFsnc2x1ZycgPT4gJHNwb3RbJ3NsdWcnXV0pID8+Ij5WaWV3IERldGFpbHM8L2E+CiAgICAgICAgPGEgY2xhc3M9ImJ0biBzZWNvbmRhcnkiIGhyZWY9Ijw/PSB1KCdpbnZlbnRvcnknKSA/PiI+QnJvd3NlIEFsbDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+PC9zZWN0aW9uPgo8P3BocCBlbmRpZjsgPz4KCjxzZWN0aW9uIGNsYXNzPSJyZXZlYWwiPjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ccm93c2UgRmVhdHVyZWQgTW9kZWw8L2gyPgogIDxwIGNsYXNzPSJzZWN0aW9uLXN1YiI+Q2hvb3NlIGEgYm9keSBzdHlsZSB0byBxdWlja2x5IGJyb3dzZSBhdmFpbGFibGUgc3RvY2suPC9wPgogIDxkaXYgY2xhc3M9ImJvZHl0eXBlLWdyaWQiPgogICAgPD9waHAgZm9yZWFjaCAoJGJvZHlUeXBlcyBhcyAkYnQpOiA/PgogICAgICA8YSBjbGFzcz0iYm9keXR5cGUtY2FyZCIgaHJlZj0iPD89IHUoJ2ludmVudG9yeScsIFsnYm9keV90eXBlJyA9PiAkYnRdKSA/PiI+PHNwYW4gY2xhc3M9Imljb24tYmFkZ2UiPjw/PSBTVkdfQ0FSID8+PC9zcGFuPjw/PSBoKCRidCkgPz48L2E+CiAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogIDwvZGl2Pgo8L2Rpdj48L3NlY3Rpb24+Cgo8c2VjdGlvbiBjbGFzcz0icmV2ZWFsIiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1zb2Z0KSI+PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlZlaGljbGVzIEF2YWlsYWJsZTwvaDI+CiAgPHAgY2xhc3M9InNlY3Rpb24tc3ViIj5UaGUgbGF0ZXN0IGFkZGl0aW9ucyB0byBvdXIgc3RvY2suPC9wPgogIDw/cGhwIGlmICgkZmVhdHVyZWQpOiA/PgogICAgPGRpdiBjbGFzcz0idmVoaWNsZS1ncmlkIj48P3BocCBmb3JlYWNoICgkZmVhdHVyZWQgYXMgJHYpIHZlaGljbGVfY2FyZCgkdik7ID8+PC9kaXY+CiAgICA8cCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLXRvcDoyNHB4Ij48YSBjbGFzcz0iYnRuIiBocmVmPSI8Pz0gdSgnaW52ZW50b3J5JykgPz4iPkV4cGxvcmUgQWxsIFZlaGljbGVzPC9hPjwvcD4KICA8P3BocCBlbHNlOiA/PgogICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPk5vIHZlaGljbGVzIGxpc3RlZCBhdCB0aGUgbW9tZW50LiBQbGVhc2UgY2hlY2sgYmFjayBzb29uLjwvZGl2PgogIDw/cGhwIGVuZGlmOyA/Pgo8L2Rpdj48L3NlY3Rpb24+Cgo8P3BocCBpZiAoJHJldmlld3MpOiA/Pgo8c2VjdGlvbiBjbGFzcz0icmV2ZWFsIj48ZGl2IGNsYXNzPSJjb250YWluZXIiPgogIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj5DdXN0b21lciBSZXZpZXdzPC9oMj4KICA8ZGl2IGNsYXNzPSJyZXZpZXctZ3JpZCI+CiAgICA8P3BocCBmb3JlYWNoICgkcmV2aWV3cyBhcyAkcik6ID8+CiAgICA8ZGl2IGNsYXNzPSJyZXZpZXctY2FyZCI+CiAgICAgIDw/cGhwIGlmICghZW1wdHkoJHJbJ2ltYWdlX3VybCddKSk6ID8+PGltZyBzcmM9Ijw/PSBoKCRyWydpbWFnZV91cmwnXSkgPz4iIHN0eWxlPSJ3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzoxNi85O29iamVjdC1maXQ6Y292ZXI7bWFyZ2luLWJvdHRvbToxMnB4IiBhbHQ9Ijw/PSBoKCRyWydhdXRob3JfbmFtZSddKSA/PiI+PD9waHAgZW5kaWY7ID8+CiAgICAgIDxkaXYgY2xhc3M9InN0YXJzIj48Pz0gc3RyX3JlcGVhdCgn4piFJywgKGludCkkclsncmF0aW5nJ10pIC4gc3RyX3JlcGVhdCgn4piGJywgNSAtIChpbnQpJHJbJ3JhdGluZyddKSA/PjwvZGl2PgogICAgICA8cD48Pz0gbmwyYnIoaCgkclsnY29udGVudCddKSkgPz48L3A+CiAgICAgIDxzdHJvbmc+PD89IGgoJHJbJ2F1dGhvcl9uYW1lJ10pID8+PC9zdHJvbmc+CiAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgPC9kaXY+CiAgPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO21hcmdpbi10b3A6MjJweCI+PGEgY2xhc3M9ImJ0biIgaHJlZj0iPD89IHUoJ3Jldmlld3MnKSA/PiI+VmlldyBBbGwgUmV2aWV3czwvYT48L3A+CjwvZGl2Pjwvc2VjdGlvbj4KPD9waHAgZW5kaWY7CmJyZWFrOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSU5WRU5UT1JZIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmNhc2UgJ2ludmVudG9yeSc6CiAgICAkcGFyYW1zID0gWwogICAgICAgICdxJyAgICAgICAgICAgID0+ICRfR0VUWydxJ10gPz8gJycsCiAgICAgICAgJ21ha2UnICAgICAgICAgPT4gJF9HRVRbJ21ha2UnXSA/PyAnJywKICAgICAgICAnbW9kZWwnICAgICAgICA9PiAkX0dFVFsnbW9kZWwnXSA/PyAnJywKICAgICAgICAndHJhbnNtaXNzaW9uJyA9PiAkX0dFVFsndHJhbnNtaXNzaW9uJ10gPz8gJycsCiAgICAgICAgJ2JvZHlfdHlwZScgICAgPT4gJF9HRVRbJ2JvZHlfdHlwZSddID8/ICcnLAogICAgICAgICdmdWVsJyAgICAgICAgID0+ICRfR0VUWydmdWVsJ10gPz8gJycsCiAgICAgICAgJ3ByaWNlJyAgICAgICAgPT4gJF9HRVRbJ3ByaWNlJ10gPz8gJycsCiAgICAgICAgJ2xpbWl0JyAgICAgICAgPT4gMTIwLAogICAgXTsKICAgICRyZXMgICAgICA9IGFwaV9nZXQoJ3ZlaGljbGVzLnBocCcsICRwYXJhbXMpOwogICAgJHZlaGljbGVzID0gJHJlc1sndmVoaWNsZXMnXSA/PyBbXTsKICAgICRmICAgICAgICA9ICRyZXNbJ2ZpbHRlcnMnXSA/PyBbXTsKICAgICRzZWwgPSBmdW5jdGlvbiAoJGspIHsgcmV0dXJuIChzdHJpbmcpKCRfR0VUWyRrXSA/PyAnJyk7IH07Cj8+CjxzZWN0aW9uIGNsYXNzPSJoZXJvIGhlcm8taW52ZW50b3J5IiBzdHlsZT0icGFkZGluZzo3MHB4IDAiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICA8cCBjbGFzcz0iaGVyby1leWVicm93IiBzdHlsZT0ianVzdGlmeS1jb250ZW50OmNlbnRlciI+T3VyIHN0b2NrPC9wPgogICAgPGgxPkludmVudG9yeTwvaDE+CiAgICA8cD5Ccm93c2UgdGhlIHZlaGljbGVzIGN1cnJlbnRseSBhdmFpbGFibGUgYXQgPD89IGgoJFNJVEVbJ2NvbXBhbnlfbmFtZSddKSA/Pi48L3A+CiAgPC9kaXY+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIGNsYXNzPSJyZXZlYWwiPjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0iZmlsdGVyLWJhciByaWNoIiBpZD0iZmlsdGVyQmFyIiBkYXRhLWVuZHBvaW50PSJpbmRleC5waHA/cGFnZT1pbnZlbnRvcnlfZGF0YSI+CiAgICA8ZGl2IGNsYXNzPSJzZWFyY2gtcm93Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJmX3EiIHBsYWNlaG9sZGVyPSJTZWFyY2ggYnkga2V5d29yZHMgKGUuZy4gQk1XLCAyMDIyLCBQZXRyb2wpLi4uIiB2YWx1ZT0iPD89IGgoJHNlbCgncScpKSA/PiI+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZpbHRlci1ncmlkIj4KICAgICAgPHNlbGVjdCBpZD0iZl9tYWtlIj48b3B0aW9uIHZhbHVlPSIiPkFueSBNYWtlczwvb3B0aW9uPgogICAgICAgIDw/cGhwIGZvcmVhY2ggKCgkZlsnbWFrZXMnXSA/PyBbXSkgYXMgJG0pOiA/PjxvcHRpb24gdmFsdWU9Ijw/PSBoKCRtKSA/PiIgPD89ICRzZWwoJ21ha2UnKSA9PT0gJG0gPyAnc2VsZWN0ZWQnIDogJycgPz4+PD89IGgoJG0pID8+PC9vcHRpb24+PD9waHAgZW5kZm9yZWFjaDsgPz48L3NlbGVjdD4KICAgICAgPHNlbGVjdCBpZD0iZl9tb2RlbCI+PG9wdGlvbiB2YWx1ZT0iIj5BbnkgTW9kZWxzPC9vcHRpb24+CiAgICAgICAgPD9waHAgZm9yZWFjaCAoKCRmWydtb2RlbHMnXSA/PyBbXSkgYXMgJG0pOiA/PjxvcHRpb24gdmFsdWU9Ijw/PSBoKCRtKSA/PiIgPD89ICRzZWwoJ21vZGVsJykgPT09ICRtID8gJ3NlbGVjdGVkJyA6ICcnID8+Pjw/PSBoKCRtKSA/Pjwvb3B0aW9uPjw/cGhwIGVuZGZvcmVhY2g7ID8+PC9zZWxlY3Q+CiAgICAgIDxzZWxlY3QgaWQ9ImZfcHJpY2UiPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiI+QWxsIFByaWNlczwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9IjAtNTAwMCIgPD89ICRzZWwoJ3ByaWNlJykgPT09ICcwLTUwMDAnID8gJ3NlbGVjdGVkJyA6ICcnID8+PlVuZGVyICZwb3VuZDs1LDAwMDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9IjUwMDAtMTAwMDAiIDw/PSAkc2VsKCdwcmljZScpID09PSAnNTAwMC0xMDAwMCcgPyAnc2VsZWN0ZWQnIDogJycgPz4+JnBvdW5kOzUsMDAwICZuZGFzaDsgJnBvdW5kOzEwLDAwMDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9IjEwMDAwLTIwMDAwIiA8Pz0gJHNlbCgncHJpY2UnKSA9PT0gJzEwMDAwLTIwMDAwJyA/ICdzZWxlY3RlZCcgOiAnJyA/Pj4mcG91bmQ7MTAsMDAwICZuZGFzaDsgJnBvdW5kOzIwLDAwMDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9IjIwMDAwLTk5OTk5OSIgPD89ICRzZWwoJ3ByaWNlJykgPT09ICcyMDAwMC05OTk5OTknID8gJ3NlbGVjdGVkJyA6ICcnID8+PiZwb3VuZDsyMCwwMDArPC9vcHRpb24+CiAgICAgIDwvc2VsZWN0PgogICAgICA8c2VsZWN0IGlkPSJmX3RyYW5zbWlzc2lvbiI+PG9wdGlvbiB2YWx1ZT0iIj5UcmFuc21pc3Npb25zPC9vcHRpb24+CiAgICAgICAgPD9waHAgZm9yZWFjaCAoKCRmWyd0cmFuc21pc3Npb25zJ10gPz8gW10pIGFzICR0KTogPz48b3B0aW9uIHZhbHVlPSI8Pz0gaCgkdCkgPz4iIDw/PSAkc2VsKCd0cmFuc21pc3Npb24nKSA9PT0gJHQgPyAnc2VsZWN0ZWQnIDogJycgPz4+PD89IGgoJHQpID8+PC9vcHRpb24+PD9waHAgZW5kZm9yZWFjaDsgPz48L3NlbGVjdD4KICAgICAgPHNlbGVjdCBpZD0iZl9ib2R5X3R5cGUiPjxvcHRpb24gdmFsdWU9IiI+Qm9keSBUeXBlczwvb3B0aW9uPgogICAgICAgIDw/cGhwIGZvcmVhY2ggKCgkZlsnYm9keV90eXBlcyddID8/IFtdKSBhcyAkdCk6ID8+PG9wdGlvbiB2YWx1ZT0iPD89IGgoJHQpID8+IiA8Pz0gJHNlbCgnYm9keV90eXBlJykgPT09ICR0ID8gJ3NlbGVjdGVkJyA6ICcnID8+Pjw/PSBoKCR0KSA/Pjwvb3B0aW9uPjw/cGhwIGVuZGZvcmVhY2g7ID8+PC9zZWxlY3Q+CiAgICAgIDxzZWxlY3QgaWQ9ImZfZnVlbCI+PG9wdGlvbiB2YWx1ZT0iIj5GdWVsIFR5cGVzPC9vcHRpb24+CiAgICAgICAgPD9waHAgZm9yZWFjaCAoKCRmWydmdWVscyddID8/IFtdKSBhcyAkdCk6ID8+PG9wdGlvbiB2YWx1ZT0iPD89IGgoJHQpID8+IiA8Pz0gJHNlbCgnZnVlbCcpID09PSAkdCA/ICdzZWxlY3RlZCcgOiAnJyA/Pj48Pz0gaCgkdCkgPz48L29wdGlvbj48P3BocCBlbmRmb3JlYWNoOyA/Pjwvc2VsZWN0PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJmaWx0ZXItZm9vdGVyIj4KICAgICAgPGRpdiBjbGFzcz0iY291bnQiPjxzcGFuIGNsYXNzPSJkb3QiPjwvc3Bhbj48c3BhbiBpZD0icmVzdWx0Q291bnQiPkZvdW5kIDw/PSBjb3VudCgkdmVoaWNsZXMpID8+IHZlaGljbGVzPC9zcGFuPjwvZGl2PgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJlc2V0IiBpZD0icmVzZXRGaWx0ZXJzIj4mIzEwMjI3OyBSZXNldCBBbGwgRmlsdGVyczwvYnV0dG9uPgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgaWQ9InZlaGljbGVHcmlkV3JhcCI+CiAgICA8P3BocCBpZiAoJHZlaGljbGVzKTogPz4KICAgICAgPGRpdiBjbGFzcz0idmVoaWNsZS1ncmlkIiBpZD0idmVoaWNsZUdyaWQiPjw/cGhwIGZvcmVhY2ggKCR2ZWhpY2xlcyBhcyAkdikgdmVoaWNsZV9jYXJkKCR2KTsgPz48L2Rpdj4KICAgIDw/cGhwIGVsc2U6ID8+CiAgICAgIDxkaXYgY2xhc3M9Im5vLXJlc3VsdHMiPjxoMz5ObyB2ZWhpY2xlcyBtYXRjaCB5b3VyIHNlYXJjaDwvaDM+PHA+VHJ5IGFkanVzdGluZyBvciByZXNldHRpbmcgdGhlIGZpbHRlcnMuPC9wPjwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgPC9kaXY+CjwvZGl2Pjwvc2VjdGlvbj4KPD9waHAKYnJlYWs7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVkVISUNMRSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KY2FzZSAndmVoaWNsZSc6CiAgICAkc2x1ZyA9IHRyaW0oKHN0cmluZykoJF9HRVRbJ3NsdWcnXSA/PyAnJykpOwogICAgJHJlcyAgPSBhcGlfZ2V0KCd2ZWhpY2xlLnBocCcsIFsnc2x1ZycgPT4gJHNsdWddKTsKICAgIGlmIChlbXB0eSgkcmVzWydvayddKSkgewogICAgICAgIGVjaG8gJzxzZWN0aW9uIGNsYXNzPSJyZXZlYWwiPjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+PGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPlZlaGljbGUgbm90IGZvdW5kLiA8YSBocmVmPSInIC4gdSgnaW52ZW50b3J5JykgLiAnIj5CYWNrIHRvIGludmVudG9yeTwvYT48L2Rpdj48L2Rpdj48L3NlY3Rpb24+JzsKICAgICAgICBicmVhazsKICAgIH0KICAgICR2ICAgICAgID0gJHJlc1sndmVoaWNsZSddOwogICAgJGltYWdlcyAgPSAkdlsnaW1hZ2VzJ10gPz8gW107CiAgICAkcmVsYXRlZCA9ICRyZXNbJ3JlbGF0ZWQnXSA/PyBbXTsKICAgICRzZW50ICAgID0gbnVsbDsKCiAgICBpZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT09ICdQT1NUJyAmJiAoJF9QT1NUWydmb3JtJ10gPz8gJycpID09PSAnZW5xdWlyeScpIHsKICAgICAgICAkciA9IGFwaV9wb3N0KCdjb250YWN0X3N1Ym1pdC5waHAnLCBbCiAgICAgICAgICAgICduYW1lJyAgICAgICA9PiAkX1BPU1RbJ25hbWUnXSA/PyAnJywKICAgICAgICAgICAgJ2VtYWlsJyAgICAgID0+ICRfUE9TVFsnZW1haWwnXSA/PyAnJywKICAgICAgICAgICAgJ3Bob25lJyAgICAgID0+ICRfUE9TVFsncGhvbmUnXSA/PyAnJywKICAgICAgICAgICAgJ21lc3NhZ2UnICAgID0+ICRfUE9TVFsnbWVzc2FnZSddID8/ICcnLAogICAgICAgICAgICAnd2Vic2l0ZScgICAgPT4gJF9QT1NUWyd3ZWJzaXRlJ10gPz8gJycsCiAgICAgICAgICAgICd2ZWhpY2xlX2lkJyA9PiAkdlsnaWQnXSwKICAgICAgICBdKTsKICAgICAgICAkc2VudCA9ICFlbXB0eSgkclsnb2snXSk7CiAgICB9Cj8+CjxzZWN0aW9uIGNsYXNzPSJyZXZlYWwiPjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0idmVoaWNsZS1oZWFkIj4KICAgIDxkaXY+CiAgICAgIDxoMSBzdHlsZT0ibWFyZ2luOjAiPjw/PSBoKCR2Wyd0aXRsZSddKSA/PjwvaDE+CiAgICAgIDw/cGhwIGlmICgkdlsncmVnaXN0cmF0aW9uX251bWJlciddKTogPz48ZGl2IGNsYXNzPSJwbGF0ZSI+PD89IGgoJHZbJ3JlZ2lzdHJhdGlvbl9udW1iZXInXSkgPz48L2Rpdj48P3BocCBlbmRpZjsgPz4KICAgICAgPGRpdiBjbGFzcz0idmVoaWNsZS1iYWRnZXMiPgogICAgICAgIDw/cGhwIGlmICgkdlsneWVhciddKTogPz48c3BhbiBjbGFzcz0icGlsbCI+JiMxMjgxOTc7IDw/PSBoKCR2Wyd5ZWFyJ10pID8+PC9zcGFuPjw/cGhwIGVuZGlmOyA/PgogICAgICAgIDxzcGFuIGNsYXNzPSJwaWxsIj4mIzEyODY2MzsgPD89IG51bWJlcl9mb3JtYXQoKGludCkkdlsnbWlsZWFnZSddKSA/PiBtaTwvc3Bhbj4KICAgICAgICA8P3BocCBpZiAoJHZbJ3RyYW5zbWlzc2lvbiddKTogPz48c3BhbiBjbGFzcz0icGlsbCI+JiM5ODgxOyYjNjUwMzk7IDw/PSBoKCR2Wyd0cmFuc21pc3Npb24nXSkgPz48L3NwYW4+PD9waHAgZW5kaWY7ID8+CiAgICAgICAgPD9waHAgaWYgKCR2WydmdWVsJ10pOiA/PjxzcGFuIGNsYXNzPSJwaWxsIj4mIzk5ODE7IDw/PSBoKCR2WydmdWVsJ10pID8+PC9zcGFuPjw/cGhwIGVuZGlmOyA/PgogICAgICAgIDw/cGhwIGlmICgkdlsnc3RhdHVzJ10gPT09ICdyZXNlcnZlZCcpOiA/PjxzcGFuIGNsYXNzPSJwaWxsIj5SZXNlcnZlZDwvc3Bhbj48P3BocCBlbmRpZjsgPz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlIj4mcG91bmQ7PD89IG1vbmV5KCR2WydwcmljZSddKSA/PjwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJ0d28tY29sIHJldmVhbCIgc3R5bGU9ImFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7bWFyZ2luLXRvcDoyNnB4Ij4KICAgIDxkaXY+CiAgICAgIDxkaXYgY2xhc3M9InZlaGljbGUtZ2FsbGVyeSIgZGF0YS1pbWFnZXM9Jzw/PSBoKGpzb25fZW5jb2RlKGFycmF5X3ZhbHVlcygkaW1hZ2VzKSwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUykpID8+Jz4KICAgICAgICA8ZGl2IGNsYXNzPSJtYWluLWltZyI+CiAgICAgICAgICA8aW1nIGRhdGEtbWFpbi1pbWcgc3JjPSI8Pz0gaCgkaW1hZ2VzWzBdID8/ICcnKSA/PiIgYWx0PSI8Pz0gaCgkdlsndGl0bGUnXSkgPz4iPgogICAgICAgICAgPD9waHAgaWYgKGNvdW50KCRpbWFnZXMpID4gMSk6ID8+PGRpdiBjbGFzcz0iZ2FsbGVyeS1jb3VudCIgaWQ9ImdhbGxlcnlDb3VudCI+MSAvIDw/PSBjb3VudCgkaW1hZ2VzKSA/PjwvZGl2Pjw/cGhwIGVuZGlmOyA/PgogICAgICAgIDwvZGl2PgogICAgICAgIDw/cGhwIGlmIChjb3VudCgkaW1hZ2VzKSA+IDEpOiA/PgogICAgICAgIDxkaXYgY2xhc3M9InRodW1iLWNvbCI+CiAgICAgICAgICA8P3BocCBmb3JlYWNoIChhcnJheV9zbGljZSgkaW1hZ2VzLCAwLCA0KSBhcyAkaW1nKTogPz4KICAgICAgICAgICAgPGltZyBkYXRhLXRodW1iPSI8Pz0gaCgkaW1nKSA/PiIgc3JjPSI8Pz0gaCgkaW1nKSA/PiIgc3R5bGU9ImN1cnNvcjpwb2ludGVyIj4KICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgIDwvZGl2PgogICAgICA8P3BocCBpZiAoJGltYWdlcyk6ID8+CiAgICAgIDxkaXYgY2xhc3M9ImxpZ2h0Ym94IiBpZD0ibGlnaHRib3giPgogICAgICAgIDxidXR0b24gY2xhc3M9ImxpZ2h0Ym94LWNsb3NlIiBpZD0ibGlnaHRib3hDbG9zZSIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJDbG9zZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgIDxkaXYgY2xhc3M9ImxpZ2h0Ym94LWlubmVyIj48aW1nIGlkPSJsaWdodGJveEltZyIgc3JjPSIiIGFsdD0iPD89IGgoJHZbJ3RpdGxlJ10pID8+Ij48L2Rpdj4KICAgICAgICA8P3BocCBpZiAoY291bnQoJGltYWdlcykgPiAxKTogPz4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJsaWdodGJveC1hcnIgbGlnaHRib3gtbCIgaWQ9ImxpZ2h0Ym94UHJldiIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJQcmV2aW91cyI+JiM4MjQ5OzwvYnV0dG9uPgogICAgICAgIDxidXR0b24gY2xhc3M9ImxpZ2h0Ym94LWFyciBsaWdodGJveC1yIiBpZD0ibGlnaHRib3hOZXh0IiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9Ik5leHQiPiYjODI1MDs8L2J1dHRvbj4KICAgICAgICA8ZGl2IGNsYXNzPSJsaWdodGJveC1jb3VudCIgaWQ9ImxpZ2h0Ym94Q291bnQiPjwvZGl2PgogICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICA8L2Rpdj4KICAgICAgPD9waHAgZW5kaWY7ID8+CgogICAgICA8dGFibGUgY2xhc3M9Im92ZXJ2aWV3LXRhYmxlIj4KICAgICAgICA8dHI+PHRkPk1ha2U8L3RkPjx0ZD48Pz0gaCgkdlsnbWFrZSddKSA/PjwvdGQ+PC90cj4KICAgICAgICA8dHI+PHRkPk1vZGVsPC90ZD48dGQ+PD89IGgoJHZbJ21vZGVsJ10pID8+IDw/PSBoKCR2Wyd2YXJpYW50J10pID8+PC90ZD48L3RyPgogICAgICAgIDx0cj48dGQ+WWVhcjwvdGQ+PHRkPjw/PSBoKCR2Wyd5ZWFyJ10pID8+PC90ZD48L3RyPgogICAgICAgIDx0cj48dGQ+TWlsZWFnZTwvdGQ+PHRkPjw/PSBudW1iZXJfZm9ybWF0KChpbnQpJHZbJ21pbGVhZ2UnXSkgPz4gbWk8L3RkPjwvdHI+CiAgICAgICAgPHRyPjx0ZD5GdWVsPC90ZD48dGQ+PD89IGgoJHZbJ2Z1ZWwnXSkgPz48L3RkPjwvdHI+CiAgICAgICAgPHRyPjx0ZD5UcmFuc21pc3Npb248L3RkPjx0ZD48Pz0gaCgkdlsndHJhbnNtaXNzaW9uJ10pID8+PC90ZD48L3RyPgogICAgICAgIDx0cj48dGQ+Qm9keSBUeXBlPC90ZD48dGQ+PD89IGgoJHZbJ2JvZHlfdHlwZSddKSA/PjwvdGQ+PC90cj4KICAgICAgICA8dHI+PHRkPkNvbG91cjwvdGQ+PHRkPjw/PSBoKCR2Wydjb2xvciddKSA/PjwvdGQ+PC90cj4KICAgICAgICA8P3BocCBpZiAoJHZbJ21vdF9leHBpcnknXSk6ID8+PHRyPjx0ZD5NT1QgRXhwaXJ5PC90ZD48dGQ+PD89IGgoJHZbJ21vdF9leHBpcnknXSkgPz48L3RkPjwvdHI+PD9waHAgZW5kaWY7ID8+CiAgICAgIDwvdGFibGU+CgogICAgICA8P3BocCBpZiAodHJpbSgoc3RyaW5nKSR2WydkZXNjcmlwdGlvbiddKSAhPT0gJycpOiA/PgogICAgICA8ZGl2IGNsYXNzPSJpbmZvLWNhcmQiIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHgiPgogICAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSIgc3R5bGU9Im1hcmdpbi1ib3R0b206OHB4Ij5EZXNjcmlwdGlvbjwvaDI+CiAgICAgICAgPHA+PD89IG5sMmJyKGgoJHZbJ2Rlc2NyaXB0aW9uJ10pKSA/PjwvcD4KICAgICAgPC9kaXY+CiAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPC9kaXY+CgogICAgPGRpdj4KICAgICAgPGRpdiBjbGFzcz0iaW5mby1jYXJkIj4KICAgICAgICA8aDMgc3R5bGU9Im1hcmdpbi10b3A6MCI+RW5xdWlyZSBhYm91dCB0aGlzIHZlaGljbGU8L2gzPgogICAgICAgIDw/cGhwIGlmICgkc2VudCA9PT0gdHJ1ZSk6ID8+CiAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6IzBmN2IzZjtmb250LXdlaWdodDo2MDAiPlRoYW5rIHlvdSAmbWRhc2g7IHlvdXIgZW5xdWlyeSBoYXMgYmVlbiBzZW50LiBXZSdsbCBiZSBpbiB0b3VjaCBzaG9ydGx5LjwvcD4KICAgICAgICA8P3BocCBlbHNlaWYgKCRzZW50ID09PSBmYWxzZSk6ID8+CiAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6I2MwMzkyYjtmb250LXdlaWdodDo2MDAiPlNvcnJ5LCB5b3VyIGVucXVpcnkgY291bGQgbm90IGJlIHNlbnQuIFBsZWFzZSB0cnkgYWdhaW4gb3IgZW1haWwgdXMgZGlyZWN0bHkuPC9wPgogICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb3JtIiB2YWx1ZT0iZW5xdWlyeSI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0id2Vic2l0ZSIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiI+CiAgICAgICAgICA8cD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgbmFtZSIgcmVxdWlyZWQ+PC9wPgogICAgICAgICAgPHA+PGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJlbWFpbCIgcGxhY2Vob2xkZXI9IllvdXIgZW1haWwiIHJlcXVpcmVkPjwvcD4KICAgICAgICAgIDxwPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwaG9uZSIgcGxhY2Vob2xkZXI9IllvdXIgcGhvbmUgKG9wdGlvbmFsKSI+PC9wPgogICAgICAgICAgPHA+PHRleHRhcmVhIG5hbWU9Im1lc3NhZ2UiIHJvd3M9IjQiIHJlcXVpcmVkPkknbSBpbnRlcmVzdGVkIGluIDw/PSBoKCR2Wyd0aXRsZSddKSA/PjwvdGV4dGFyZWE+PC9wPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiB0eXBlPSJzdWJtaXQiPlNlbmQgZW5xdWlyeTwvYnV0dG9uPgogICAgICAgIDwvZm9ybT4KICAgICAgICA8P3BocCBpZiAoJFNJVEVbJ2NvbnRhY3RfZW1haWwnXSk6ID8+CiAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6MTRweDtmb250LXNpemU6MTMuNXB4O2NvbG9yOnZhcigtLW11dGVkKSI+T3IgZW1haWwgdXMgYXQgPGEgaHJlZj0ibWFpbHRvOjw/PSBoKCRTSVRFWydjb250YWN0X2VtYWlsJ10pID8+Ij48Pz0gaCgkU0lURVsnY29udGFjdF9lbWFpbCddKSA/PjwvYT48L3A+CiAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDw/cGhwIGlmICgkcmVsYXRlZCk6ID8+CiAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIiBzdHlsZT0ibWFyZ2luLXRvcDo0MHB4Ij5Zb3UgbWF5IGFsc28gbGlrZTwvaDI+CiAgPGRpdiBjbGFzcz0idmVoaWNsZS1ncmlkIj48P3BocCBmb3JlYWNoICgkcmVsYXRlZCBhcyAkcikgdmVoaWNsZV9jYXJkKCRyICsgWydzdGF0dXMnID0+ICdhdmFpbGFibGUnLCAncmVnaXN0cmF0aW9uX251bWJlcicgPT4gJyddKTsgPz48L2Rpdj4KICA8P3BocCBlbmRpZjsgPz4KPC9kaXY+PC9zZWN0aW9uPgo8P3BocApicmVhazsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSRVZJRVdTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpjYXNlICdyZXZpZXdzJzoKICAgICRyZXMgICAgID0gYXBpX2dldCgncmV2aWV3cy5waHAnLCBbJ2xpbWl0JyA9PiA1MF0pOwogICAgJHJldmlld3MgPSAkcmVzWydyZXZpZXdzJ10gPz8gW107Cj8+CjxzZWN0aW9uIGNsYXNzPSJoZXJvIGhlcm8tcmV2aWV3cyIgc3R5bGU9InBhZGRpbmc6NzBweCAwIj48ZGl2IGNsYXNzPSJjb250YWluZXIiPgogIDxwIGNsYXNzPSJoZXJvLWV5ZWJyb3ciIHN0eWxlPSJqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIj5XaGF0IG91ciBjdXN0b21lcnMgc2F5PC9wPgogIDxoMT5SZXZpZXdzPC9oMT4KICA8P3BocCBpZiAoIWVtcHR5KCRyZXNbJ3RvdGFsJ10pKTogPz4KICAgIDxwPjw/PSBoKCRyZXNbJ2F2ZXJhZ2UnXSkgPz4gb3V0IG9mIDUsIGJhc2VkIG9uIDw/PSAoaW50KSRyZXNbJ3RvdGFsJ10gPz4gcmV2aWV3cy48L3A+CiAgPD9waHAgZW5kaWY7ID8+CjwvZGl2Pjwvc2VjdGlvbj4KPHNlY3Rpb24gY2xhc3M9InJldmVhbCI+PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8P3BocCBpZiAoJHJldmlld3MpOiA/PgogIDxkaXYgY2xhc3M9InJldmlldy1ncmlkIj4KICAgIDw/cGhwIGZvcmVhY2ggKCRyZXZpZXdzIGFzICRyKTogPz4KICAgIDxkaXYgY2xhc3M9InJldmlldy1jYXJkIj4KICAgICAgPD9waHAgaWYgKCFlbXB0eSgkclsnaW1hZ2VfdXJsJ10pKTogPz48aW1nIHNyYz0iPD89IGgoJHJbJ2ltYWdlX3VybCddKSA/PiIgc3R5bGU9IndpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7b2JqZWN0LWZpdDpjb3ZlcjttYXJnaW4tYm90dG9tOjEycHgiIGFsdD0iPD89IGgoJHJbJ2F1dGhvcl9uYW1lJ10pID8+Ij48P3BocCBlbmRpZjsgPz4KICAgICAgPGRpdiBjbGFzcz0ic3RhcnMiPjw/PSBzdHJfcmVwZWF0KCfimIUnLCAoaW50KSRyWydyYXRpbmcnXSkgLiBzdHJfcmVwZWF0KCfimIYnLCA1IC0gKGludCkkclsncmF0aW5nJ10pID8+PC9kaXY+CiAgICAgIDxwPjw/PSBubDJicihoKCRyWydjb250ZW50J10pKSA/PjwvcD4KICAgICAgPHN0cm9uZz48Pz0gaCgkclsnYXV0aG9yX25hbWUnXSkgPz48L3N0cm9uZz4KICAgIDwvZGl2PgogICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICA8L2Rpdj4KICA8P3BocCBlbHNlOiA/PgogICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPk5vIHJldmlld3MgcHVibGlzaGVkIHlldC48L2Rpdj4KICA8P3BocCBlbmRpZjsgPz4KPC9kaXY+PC9zZWN0aW9uPgo8P3BocApicmVhazsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDT05UQUNUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpjYXNlICdjb250YWN0JzoKICAgICRzZW50ID0gbnVsbDsKICAgIGlmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PT0gJ1BPU1QnICYmICgkX1BPU1RbJ2Zvcm0nXSA/PyAnJykgPT09ICdjb250YWN0JykgewogICAgICAgICRyID0gYXBpX3Bvc3QoJ2NvbnRhY3Rfc3VibWl0LnBocCcsIFsKICAgICAgICAgICAgJ25hbWUnICAgID0+ICRfUE9TVFsnbmFtZSddID8/ICcnLAogICAgICAgICAgICAnZW1haWwnICAgPT4gJF9QT1NUWydlbWFpbCddID8/ICcnLAogICAgICAgICAgICAncGhvbmUnICAgPT4gJF9QT1NUWydwaG9uZSddID8/ICcnLAogICAgICAgICAgICAnbWVzc2FnZScgPT4gJF9QT1NUWydtZXNzYWdlJ10gPz8gJycsCiAgICAgICAgICAgICd3ZWJzaXRlJyA9PiAkX1BPU1RbJ3dlYnNpdGUnXSA/PyAnJywKICAgICAgICBdKTsKICAgICAgICAkc2VudCA9ICFlbXB0eSgkclsnb2snXSkgPyB0cnVlIDogKCRyWydlcnJvciddID8/ICdlcnJvcicpOwogICAgfQo/Pgo8c2VjdGlvbiBjbGFzcz0iaGVybyBoZXJvLWNvbnRhY3QiIHN0eWxlPSJwYWRkaW5nOjcwcHggMCI+PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8cCBjbGFzcz0iaGVyby1leWVicm93IiBzdHlsZT0ianVzdGlmeS1jb250ZW50OmNlbnRlciI+R2V0IGluIHRvdWNoPC9wPgogIDxoMT5Db250YWN0IDw/PSBoKCRTSVRFWydjb21wYW55X25hbWUnXSkgPz48L2gxPgogIDxwPldlJ3JlIGFuIG9ubGluZSBkZWFsZXJzaGlwICZtZGFzaDsgdGhlIGZhc3Rlc3Qgd2F5IHRvIHJlYWNoIHVzIGlzIHRoZSBmb3JtIGJlbG93LjwvcD4KPC9kaXY+PC9zZWN0aW9uPgo8c2VjdGlvbiBjbGFzcz0icmV2ZWFsIj48ZGl2IGNsYXNzPSJjb250YWluZXIgdHdvLWNvbCIgc3R5bGU9ImFsaWduLWl0ZW1zOmZsZXgtc3RhcnQiPgogIDxkaXYgY2xhc3M9ImluZm8tY2FyZCI+CiAgICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiIHN0eWxlPSJtYXJnaW4tdG9wOjAiPlNlbmQgdXMgYSBtZXNzYWdlPC9oMj4KICAgIDw/cGhwIGlmICgkc2VudCA9PT0gdHJ1ZSk6ID8+CiAgICAgIDxwIHN0eWxlPSJjb2xvcjojMGY3YjNmO2ZvbnQtd2VpZ2h0OjYwMCI+VGhhbmsgeW91ICZtZGFzaDsgeW91ciBtZXNzYWdlIGhhcyBiZWVuIHNlbnQuPC9wPgogICAgPD9waHAgZWxzZWlmICgkc2VudCA9PT0gJ3Rvb19tYW55X3JlcXVlc3RzJyk6ID8+CiAgICAgIDxwIHN0eWxlPSJjb2xvcjojYzAzOTJiO2ZvbnQtd2VpZ2h0OjYwMCI+WW91J3ZlIGp1c3Qgc2VudCBhIG1lc3NhZ2UuIFBsZWFzZSB3YWl0IGEgbW9tZW50IGJlZm9yZSBzZW5kaW5nIGFub3RoZXIuPC9wPgogICAgPD9waHAgZWxzZWlmICgkc2VudCAhPT0gbnVsbCk6ID8+CiAgICAgIDxwIHN0eWxlPSJjb2xvcjojYzAzOTJiO2ZvbnQtd2VpZ2h0OjYwMCI+U29ycnksIHlvdXIgbWVzc2FnZSBjb3VsZCBub3QgYmUgc2VudC4gUGxlYXNlIGNoZWNrIHRoZSBmaWVsZHMgYW5kIHRyeSBhZ2Fpbi48L3A+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcm0iIHZhbHVlPSJjb250YWN0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IndlYnNpdGUiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHRhYmluZGV4PSItMSIgYXV0b2NvbXBsZXRlPSJvZmYiPgogICAgICA8cD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgbmFtZSIgcmVxdWlyZWQ+PC9wPgogICAgICA8cD48aW5wdXQgdHlwZT0iZW1haWwiIG5hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iWW91ciBlbWFpbCIgcmVxdWlyZWQ+PC9wPgogICAgICA8cD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icGhvbmUiIHBsYWNlaG9sZGVyPSJZb3VyIHBob25lIChvcHRpb25hbCkiPjwvcD4KICAgICAgPHA+PHRleHRhcmVhIG5hbWU9Im1lc3NhZ2UiIHJvd3M9IjYiIHBsYWNlaG9sZGVyPSJIb3cgY2FuIHdlIGhlbHA/IiByZXF1aXJlZD48L3RleHRhcmVhPjwvcD4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiB0eXBlPSJzdWJtaXQiPlNlbmQgbWVzc2FnZTwvYnV0dG9uPgogICAgPC9mb3JtPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImluZm8tY2FyZCI+CiAgICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiIHN0eWxlPSJtYXJnaW4tdG9wOjAiPkNvbXBhbnkgZGV0YWlsczwvaDI+CiAgICA8cD48c3Ryb25nPjw/PSBoKCRTSVRFWydjb21wYW55X25hbWUnXSkgPz48L3N0cm9uZz48L3A+CiAgICA8P3BocCBpZiAoJFNJVEVbJ2NvbXBhbnlfbnVtYmVyJ10pOiA/PjxwPlJlZ2lzdGVyZWQgaW4gRW5nbGFuZCBhbmQgV2FsZXMsIGNvbXBhbnkgbnVtYmVyIDw/PSBoKCRTSVRFWydjb21wYW55X251bWJlciddKSA/Pi48L3A+PD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJFNJVEVbJ2FkZHJlc3NfbGluZTEnXSk6ID8+CiAgICAgIDxwPjw/PSBoKCRTSVRFWydhZGRyZXNzX2xpbmUxJ10pID8+PD89ICRTSVRFWydhZGRyZXNzX2xpbmUyJ10gPyAnPGJyPicgLiBoKCRTSVRFWydhZGRyZXNzX2xpbmUyJ10pIDogJycgPz4KICAgICAgPD89ICRTSVRFWydjaXR5J10gPyAnPGJyPicgLiBoKCRTSVRFWydjaXR5J10pIDogJycgPz48Pz0gJFNJVEVbJ3Bvc3Rjb2RlJ10gPyAnPGJyPicgLiBoKCRTSVRFWydwb3N0Y29kZSddKSA6ICcnID8+CiAgICAgIDw/PSAkU0lURVsnY291bnRyeSddID8gJzxicj4nIC4gaCgkU0lURVsnY291bnRyeSddKSA6ICcnID8+PC9wPgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJFNJVEVbJ2NvbnRhY3RfZW1haWwnXSk6ID8+PHA+RW1haWw6IDxhIGhyZWY9Im1haWx0bzo8Pz0gaCgkU0lURVsnY29udGFjdF9lbWFpbCddKSA/PiI+PD89IGgoJFNJVEVbJ2NvbnRhY3RfZW1haWwnXSkgPz48L2E+PC9wPjw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKCRTSVRFWydjb250YWN0X3Bob25lJ10pOiA/PjxwPlBob25lOiA8YSBocmVmPSJ0ZWw6PD89IGgoJFNJVEVbJ2NvbnRhY3RfcGhvbmUnXSkgPz4iPjw/PSBoKCRTSVRFWydjb250YWN0X3Bob25lJ10pID8+PC9hPjwvcD48P3BocCBlbmRpZjsgPz4KICA8L2Rpdj4KPC9kaXY+PC9zZWN0aW9uPgo8P3BocApicmVhazsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQUJPVVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpjYXNlICdhYm91dCc6ID8+CjxzZWN0aW9uIGNsYXNzPSJoZXJvIGhlcm8tYWJvdXQiIHN0eWxlPSJwYWRkaW5nOjcwcHggMCI+PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8cCBjbGFzcz0iaGVyby1leWVicm93IiBzdHlsZT0ianVzdGlmeS1jb250ZW50OmNlbnRlciI+V2hvIHdlIGFyZTwvcD4KICA8aDE+QWJvdXQgPD89IGgoJFNJVEVbJ2NvbXBhbnlfbmFtZSddKSA/PjwvaDE+CjwvZGl2Pjwvc2VjdGlvbj4KPHNlY3Rpb24gY2xhc3M9InJldmVhbCI+PGRpdiBjbGFzcz0iY29udGFpbmVyIiBzdHlsZT0ibWF4LXdpZHRoOjgyMHB4Ij4KICA8cD48c3Ryb25nPjw/PSBoKCRTSVRFWydjb21wYW55X25hbWUnXSkgPz48L3N0cm9uZz4gaXMgYW4gaW50ZXJuZXQtYmFzZWQgdmVoaWNsZSByZXRhaWxlcjw/PSAkU0lURVsneWVhcl9mb3VuZGVkJ10gPyAnIGZvdW5kZWQgaW4gJyAuIChpbnQpJFNJVEVbJ3llYXJfZm91bmRlZCddIDogJycgPz4uCiAgPD9waHAgaWYgKCRTSVRFWydjb21wYW55X251bWJlciddKTogPz4gV2UgYXJlIHJlZ2lzdGVyZWQgaW4gRW5nbGFuZCBhbmQgV2FsZXMgdW5kZXIgY29tcGFueSBudW1iZXIgPHN0cm9uZz48Pz0gaCgkU0lURVsnY29tcGFueV9udW1iZXInXSkgPz48L3N0cm9uZz4uPD9waHAgZW5kaWY7ID8+PC9wPgogIDxwPldlIGRvIG5vdCBvcGVyYXRlIGEgcGh5c2ljYWwgc2hvd3Jvb20uIFZlaGljbGVzIGFyZSBpbnNwZWN0ZWQgYW5kIHByZXBhcmVkIGJlZm9yZSBzYWxlLCBkZWxpdmVyZWQgdG8geW91ciBhZGRyZXNzLCBhbmQgc3VwcGxpZWQgd2l0aCBhIDEyLW1vbnRoIHdhcnJhbnR5IGFuZCBhIDE0LWRheSBidXkgYmFjayBndWFyYW50ZWUsIHNvIHlvdSBoYXZlIHRpbWUgdG8gaGF2ZSB0aGUgY2FyIGNoZWNrZWQgaW5kZXBlbmRlbnRseSBhZnRlciBpdCBhcnJpdmVzLjwvcD4KICA8ZGl2IGNsYXNzPSJpbmZvLWdyaWQiIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHgiPgogICAgPGRpdiBjbGFzcz0iaW5mby1jYXJkIj4mIzEwMDAzOyBJbnNwZWN0ZWQgdmVoaWNsZXMgd2l0aCBjbGVhciBoaXN0b3J5PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbmZvLWNhcmQiPiYjMTAwMDM7IEZyZWUgZGVsaXZlcnkgYWNyb3NzIG1haW5sYW5kIEdCPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbmZvLWNhcmQiPiYjMTAwMDM7IDEyLW1vbnRoIHdhcnJhbnR5IGluY2x1ZGVkPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbmZvLWNhcmQiPiYjMTAwMDM7IDE0LWRheSBidXkgYmFjayBndWFyYW50ZWU8L2Rpdj4KICA8L2Rpdj4KICA8cCBzdHlsZT0ibWFyZ2luLXRvcDoyNHB4Ij48YSBjbGFzcz0iYnRuIiBocmVmPSI8Pz0gdSgnaW52ZW50b3J5JykgPz4iPkJyb3dzZSBvdXIgc3RvY2s8L2E+PC9wPgo8L2Rpdj48L3NlY3Rpb24+Cjw/cGhwCmJyZWFrOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gREVMSVZFUlkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmNhc2UgJ2RlbGl2ZXJ5JzogPz4KPHNlY3Rpb24gY2xhc3M9Imhlcm8gaGVyby1kZWxpdmVyeSIgc3R5bGU9InBhZGRpbmc6NzBweCAwIj48ZGl2IGNsYXNzPSJjb250YWluZXIiPgogIDxwIGNsYXNzPSJoZXJvLWV5ZWJyb3ciIHN0eWxlPSJqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIj5GYXN0ICZhbXA7IGhhc3NsZS1mcmVlPC9wPgogIDxoMT5EZWxpdmVyeSBhbnl3aGVyZSBpbiBHcmVhdCBCcml0YWluPC9oMT4KICA8cD5GcmVlIGRlbGl2ZXJ5IGFjcm9zcyBtYWlubGFuZCBHQiBhbmQgSXNsZSBvZiBXaWdodCBwb3N0Y29kZXMsIE1vbmRheSB0byBTYXR1cmRheS48L3A+CjwvZGl2Pjwvc2VjdGlvbj4KPHNlY3Rpb24gY2xhc3M9InJldmVhbCI+PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkhvdyBpdCB3b3JrczwvaDI+CiAgPGRpdiBjbGFzcz0ic3RlcHMtZ3JpZCI+CiAgICA8ZGl2IGNsYXNzPSJzdGVwIj48ZGl2IGNsYXNzPSJudW0iPjE8L2Rpdj48aDQgc3R5bGU9Im1hcmdpbjowIDAgNnB4Ij5CdXkgb25saW5lPC9oND48cCBzdHlsZT0iY29sb3I6dmFyKC0tbXV0ZWQpIj5CdXkgeW91ciBjYXIgYW5kIHBpY2sgYSBkZWxpdmVyeSBzbG90IHRoYXQgd29ya3MgZm9yIHlvdS48L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzdGVwIj48ZGl2IGNsYXNzPSJudW0iPjI8L2Rpdj48aDQgc3R5bGU9Im1hcmdpbjowIDAgNnB4Ij5XZSBwcmVwICZhbXA7IHZhbGV0PC9oND48cCBzdHlsZT0iY29sb3I6dmFyKC0tbXV0ZWQpIj5DaGVja3MsIHBhcGVyd29yayBhbmQgYSBmdWxsIHByb2Zlc3Npb25hbCB2YWxldCBiZWZvcmUgZGlzcGF0Y2guPC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3RlcCI+PGRpdiBjbGFzcz0ibnVtIj4zPC9kaXY+PGg0IHN0eWxlPSJtYXJnaW46MCAwIDZweCI+SGFuZG92ZXIgYXQgeW91ciBkb29yPC9oND48cCBzdHlsZT0iY29sb3I6dmFyKC0tbXV0ZWQpIj5BIHNwZWNpYWxpc3QgZGVsaXZlcnMgdGhlIGNhciwga2V5cyBhbmQgZG9jdW1lbnRzLCBhbmQgd2Fsa3MgeW91IHRocm91Z2ggaXQuPC9wPjwvZGl2PgogIDwvZGl2PgogIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSIgc3R5bGU9Im1hcmdpbi10b3A6MzZweCI+V2hhdCdzIGluY2x1ZGVkPC9oMj4KICA8ZGl2IGNsYXNzPSJpbmZvLWdyaWQiPgogICAgPGRpdiBjbGFzcz0iaW5mby1jYXJkIj4mIzEwMDAzOyBGcmVlIGRlbGl2ZXJ5IGluIG1haW5sYW5kIEdCPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbmZvLWNhcmQiPiYjMTAwMDM7IDEyLW1vbnRoIHdhcnJhbnR5PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbmZvLWNhcmQiPiYjMTAwMDM7IDE0LWRheSBidXkgYmFjayBndWFyYW50ZWU8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImluZm8tY2FyZCI+JiMxMDAwMzsgRnVsbCBwcm9mZXNzaW9uYWwgdmFsZXQ8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+PC9zZWN0aW9uPgo8P3BocApicmVhazsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdBUlJBTlRZIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpjYXNlICd3YXJyYW50eSc6ID8+CjxzZWN0aW9uIGNsYXNzPSJoZXJvIGhlcm8td2FycmFudHkiIHN0eWxlPSJwYWRkaW5nOjcwcHggMDt0ZXh0LWFsaWduOmxlZnQiPjxkaXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9Im1heC13aWR0aDo4MjBweCI+CiAgPHAgY2xhc3M9Imhlcm8tZXllYnJvdyI+UGVhY2Ugb2YgbWluZDwvcD4KICA8aDEgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+MS15ZWFyIHdhcnJhbnR5IG9uIGV2ZXJ5IHZlaGljbGU8L2gxPgogIDxwIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7bWFyZ2luOjAiPkV2ZXJ5IGNhciBmcm9tIDxzdHJvbmc+PD89IGgoJFNJVEVbJ2NvbXBhbnlfbmFtZSddKSA/Pjwvc3Ryb25nPiBjb21lcyB3aXRoIGEgMTItbW9udGggd2FycmFudHkgY292ZXJpbmcgdW5leHBlY3RlZCBtZWNoYW5pY2FsIGFuZCBlbGVjdHJpY2FsIGZhaWx1cmUgdW5kZXIgbm9ybWFsIHByaXZhdGUgdXNlLjwvcD4KPC9kaXY+PC9zZWN0aW9uPgo8c2VjdGlvbiBjbGFzcz0icmV2ZWFsIj48ZGl2IGNsYXNzPSJjb250YWluZXIiPgogIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Q292ZXJhZ2UgYXQgYSBnbGFuY2U8L2gyPgogIDxkaXYgY2xhc3M9ImluZm8tZ3JpZCI+CiAgICA8ZGl2IGNsYXNzPSJpbmZvLWNhcmQiPkVuZ2luZSAmYW1wOyB0aW1pbmcgY29tcG9uZW50czwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW5mby1jYXJkIj5HZWFyYm94ICZhbXA7IGRyaXZlbGluZTwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW5mby1jYXJkIj5TdGVlcmluZyAmYW1wOyBzdXNwZW5zaW9uPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbmZvLWNhcmQiPkNvb2xpbmcgc3lzdGVtPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbmZvLWNhcmQiPkFpciBjb25kaXRpb25pbmcgbWFqb3IgcGFydHM8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImluZm8tY2FyZCI+S2V5IGVsZWN0cmljYWwgY29tcG9uZW50czwvZGl2PgogIDwvZGl2PgogIDxwIHN0eWxlPSJjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDoxNnB4Ij5Sb3V0aW5lIHNlcnZpY2UgaXRlbXMsIHdlYXItYW5kLXRlYXIsIGFjY2lkZW50YWwgZGFtYWdlLCBuZWdsZWN0IGFuZCBtb2RpZmljYXRpb25zIGJleW9uZCBtYW51ZmFjdHVyZXIgc3BlY2lmaWNhdGlvbiBhcmUgbm90IGNvdmVyZWQuIEFsbCBjbGFpbXMgcmVxdWlyZSBwcmUtYXV0aG9yaXNhdGlvbiBiZWZvcmUgd29yayBiZWdpbnMuPC9wPgogIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSIgc3R5bGU9Im1hcmdpbi10b3A6MzZweCI+SG93IHRvIGNsYWltPC9oMj4KICA8b2wgc3R5bGU9ImxpbmUtaGVpZ2h0OjIiPgogICAgPGxpPlN0b3AgZHJpdmluZyB0aGUgdmVoaWNsZSBpZiBmdXJ0aGVyIGRhbWFnZSBjb3VsZCBvY2N1ci48L2xpPgogICAgPGxpPkNvbnRhY3QgdXM8P3BocCBpZiAoJFNJVEVbJ2NvbnRhY3RfZW1haWwnXSk6ID8+IGF0IDxhIGhyZWY9Im1haWx0bzo8Pz0gaCgkU0lURVsnY29udGFjdF9lbWFpbCddKSA/PiI+PD89IGgoJFNJVEVbJ2NvbnRhY3RfZW1haWwnXSkgPz48L2E+PD9waHAgZW5kaWY7ID8+IHdpdGggeW91ciByZWdpc3RyYXRpb24sIG1pbGVhZ2UgYW5kIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZhdWx0LjwvbGk+CiAgICA8bGk+V2UnbGwgZGlyZWN0IHlvdSB0byBhbiBhcHByb3ZlZCByZXBhaXJlciBmb3IgZGlhZ25vc2lzLjwvbGk+CiAgICA8bGk+V29yayBtdXN0IG5vdCBiZWdpbiB1bnRpbCB3ZSBpc3N1ZSB3cml0dGVuIGF1dGhvcmlzYXRpb24uPC9saT4KICA8L29sPgo8L2Rpdj48L3NlY3Rpb24+Cjw/cGhwCmJyZWFrOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tIEJVWSBCQUNLIC8gSU5TUEVDVElPTiBQRVJJT0QgLS0tLS0tLS0tLS0tLS0tLS0tICovCmNhc2UgJ2J1eS1iYWNrLWd1YXJhbnRlZSc6ID8+CjxzZWN0aW9uIGNsYXNzPSJoZXJvIGhlcm8tYnV5YmFjayIgc3R5bGU9InBhZGRpbmc6NzBweCAwO3RleHQtYWxpZ246bGVmdCI+PGRpdiBjbGFzcz0iY29udGFpbmVyIiBzdHlsZT0ibWF4LXdpZHRoOjg2MHB4Ij4KICA8cCBjbGFzcz0iaGVyby1leWVicm93Ij5CdXkgd2l0aCBjb25maWRlbmNlPC9wPgogIDxoMSBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij4xNC1kYXkgYnV5IGJhY2sgZ3VhcmFudGVlICZtZGFzaDsgeW91ciBpbnNwZWN0aW9uIHBlcmlvZDwvaDE+CiAgPHAgc3R5bGU9InRleHQtYWxpZ246bGVmdDttYXJnaW46MCI+QmVjYXVzZSB5b3UgYnV5IGZyb20gPHN0cm9uZz48Pz0gaCgkU0lURVsnY29tcGFueV9uYW1lJ10pID8+PC9zdHJvbmc+IG9ubGluZSByYXRoZXIgdGhhbiBmcm9tIGEgc2hvd3Jvb20sIGV2ZXJ5IHZlaGljbGUgaXMgZGVsaXZlcmVkIHdpdGggYSAxNC1kYXkgaW5zcGVjdGlvbiBwZXJpb2QuPC9wPgo8L2Rpdj48L3NlY3Rpb24+CjxzZWN0aW9uIGNsYXNzPSJyZXZlYWwiIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLXNvZnQpIj48ZGl2IGNsYXNzPSJjb250YWluZXIiPgogIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SG93IHRoZSAxNCBkYXlzIHdvcms8L2gyPgogIDxkaXYgY2xhc3M9InN0ZXBzLWdyaWQiPgogICAgPGRpdiBjbGFzcz0ic3RlcCI+PGRpdiBjbGFzcz0ibnVtIj4xPC9kaXY+PGg0IHN0eWxlPSJtYXJnaW46MCAwIDZweCI+RGVsaXZlcnkgZGF5PC9oND48cCBzdHlsZT0iY29sb3I6dmFyKC0tbXV0ZWQpIj5UaGUgcGVyaW9kIHN0YXJ0cyB0aGUgZGF5IGFmdGVyIGRlbGl2ZXJ5IGFuZCBydW5zIGZvciAxNCBjYWxlbmRhciBkYXlzLjwvcD48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN0ZXAiPjxkaXYgY2xhc3M9Im51bSI+MjwvZGl2PjxoNCBzdHlsZT0ibWFyZ2luOjAgMCA2cHgiPkluc3BlY3QgaXQgcHJvcGVybHk8L2g0PjxwIHN0eWxlPSJjb2xvcjp2YXIoLS1tdXRlZCkiPkJvb2sgYW4gaW5kZXBlbmRlbnQgaW5zcGVjdGlvbiwgcnVuIGhpc3RvcnkgY2hlY2tzLCBoYXZlIHlvdXIgb3duIG1lY2hhbmljIGxvb2sgYXQgaXQuPC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3RlcCI+PGRpdiBjbGFzcz0ibnVtIj4zPC9kaXY+PGg0IHN0eWxlPSJtYXJnaW46MCAwIDZweCI+VGVsbCB1czwvaDQ+PHAgc3R5bGU9ImNvbG9yOnZhcigtLW11dGVkKSI+Tm90IGhhcHB5PyBMZXQgdXMga25vdyBpbiB3cml0aW5nIGJlZm9yZSB0aGUgMTQgZGF5cyBhcmUgdXAuPC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3RlcCI+PGRpdiBjbGFzcz0ibnVtIj40PC9kaXY+PGg0IHN0eWxlPSJtYXJnaW46MCAwIDZweCI+Q29sbGVjdGlvbiAmYW1wOyByZWZ1bmQ8L2g0PjxwIHN0eWxlPSJjb2xvcjp2YXIoLS1tdXRlZCkiPldlIGFycmFuZ2UgY29sbGVjdGlvbiBhbmQgcmVmdW5kIHdpdGhpbiAxNCBkYXlzIG9mIHRoZSBjYXIgYmVpbmcgYmFjayB3aXRoIHVzLjwvcD48L2Rpdj4KICA8L2Rpdj4KPC9kaXY+PC9zZWN0aW9uPgo8c2VjdGlvbiBjbGFzcz0icmV2ZWFsIj48ZGl2IGNsYXNzPSJjb250YWluZXIiIHN0eWxlPSJtYXgtd2lkdGg6OTAwcHgiPgogIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Q29uZGl0aW9uczwvaDI+CiAgPGRpdiBjbGFzcz0iaW5mby1jYXJkIj48dWwgc3R5bGU9ImxpbmUtaGVpZ2h0OjI7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OjE4cHgiPgogICAgPGxpPk5vdGlmeSB1cyBpbiB3cml0aW5nPD9waHAgaWYgKCRTSVRFWydjb250YWN0X2VtYWlsJ10pOiA/PiBhdCA8YSBocmVmPSJtYWlsdG86PD89IGgoJFNJVEVbJ2NvbnRhY3RfZW1haWwnXSkgPz4iPjw/PSBoKCRTSVRFWydjb250YWN0X2VtYWlsJ10pID8+PC9hPjw/cGhwIGVuZGlmOyA/PiBiZWZvcmUgdGhlIHBlcmlvZCBlbmRzLjwvbGk+CiAgICA8bGk+VGhlIHZlaGljbGUgbXVzdCBjb21lIGJhY2sgaW4gdGhlIHNhbWUgY29uZGl0aW9uLCB3aXRoIGFsbCBrZXlzIGFuZCBkb2N1bWVudHMuPC9saT4KICAgIDxsaT5BIG1pbGVhZ2UgYWxsb3dhbmNlIG9mIDI1MCBtaWxlcyBhcHBsaWVzOyBiZXlvbmQgaXQgYSByZWFzb25hYmxlIHBlci1taWxlIGNoYXJnZSBtYXkgYmUgZGVkdWN0ZWQuPC9saT4KICAgIDxsaT5ObyBtb2RpZmljYXRpb25zLCByZS1yZWdpc3RyYXRpb24sIGNvbW1lcmNpYWwgdXNlLCB0b3dpbmcsIHJhY2luZyBvciBvZmYtcm9hZCB1c2UuPC9saT4KICAgIDxsaT5BbnkgbmV3IGRhbWFnZSBtYXkgYmUgZGVkdWN0ZWQsIGl0ZW1pc2VkIGluIHdyaXRpbmcgYmVmb3JlIHRoZSByZWZ1bmQgaXMgZmluYWxpc2VkLjwvbGk+CiAgPC91bD48L2Rpdj4KICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiIHN0eWxlPSJtYXJnaW4tdG9wOjM2cHgiPllvdXIgbGVnYWwgcmlnaHRzPC9oMj4KICA8cD5UaGlzIGd1YXJhbnRlZSBzaXRzIGFsb25nc2lkZSB5b3VyIHN0YXR1dG9yeSByaWdodHMsIGl0IGRvZXMgbm90IHJlcGxhY2UgdGhlbS4gVW5kZXIgdGhlIDxzdHJvbmc+Q29uc3VtZXIgQ29udHJhY3RzIChJbmZvcm1hdGlvbiwgQ2FuY2VsbGF0aW9uIGFuZCBBZGRpdGlvbmFsIENoYXJnZXMpIFJlZ3VsYXRpb25zIDIwMTM8L3N0cm9uZz4geW91IGhhdmUgMTQgZGF5cyBmcm9tIHRoZSBkYXkgYWZ0ZXIgZGVsaXZlcnkgdG8gY2FuY2VsIGEgZGlzdGFuY2UgcHVyY2hhc2UsIGFuZCB3ZSBtdXN0IHJlZnVuZCB3aXRoaW4gMTQgZGF5cyBvZiB0aGUgdmVoaWNsZSBjb21pbmcgYmFjay4gVW5kZXIgdGhlIDxzdHJvbmc+Q29uc3VtZXIgUmlnaHRzIEFjdCAyMDE1PC9zdHJvbmc+IHlvdSBoYXZlIGEgc2hvcnQtdGVybSByaWdodCB0byByZWplY3QgYSBmYXVsdHkgdmVoaWNsZSB3aXRoaW4gMzAgZGF5cyBvZiBkZWxpdmVyeS48L3A+CiAgPHA+V2hlcmUgYSB2ZWhpY2xlIGlzIHNvbGQgb24gY29uc2lnbm1lbnQgb24gYmVoYWxmIG9mIGl0cyBvd25lciwgd2UgcmVtYWluIHRoZSBzZWxsZXIgZm9yIHRoZSBwdXJwb3NlcyBvZiB5b3VyIGNvbnRyYWN0LCBhbmQgeW91ciByaWdodHMgYW5kIHBvaW50IG9mIGNvbnRhY3QgYXJlIHVuY2hhbmdlZC48L3A+CjwvZGl2Pjwvc2VjdGlvbj4KPD9waHAKYnJlYWs7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExFR0FMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KY2FzZSAndGVybXMtb2YtdXNlJzoKICAgIGxlZ2FsX3BhZ2UoJ1Rlcm1zIG9mIFVzZScsICdMZWdhbCcsCiAgICAgICdUaGVzZSB0ZXJtcyBnb3Zlcm4geW91ciB1c2Ugb2YgdGhpcyB3ZWJzaXRlIGFuZCBhbnkgcHVyY2hhc2UgeW91IG1ha2UgZnJvbSAnIC4gaCgkU0lURVsnY29tcGFueV9uYW1lJ10pIC4gJy4nLAogICAgICBbCiAgICAgICAgJ1dobyBXZSBBcmUnID0+ICc8cD4nIC4gaCgkU0lURVsnY29tcGFueV9uYW1lJ10pIC4gJyBvcGVyYXRlcyB0aGlzIHdlYnNpdGUgYW5kIGlzIGFuIGludGVybmV0LWJhc2VkIHVzZWQgdmVoaWNsZSByZXRhaWxlci4nCiAgICAgICAgICAgIC4gKCRTSVRFWydjb21wYW55X251bWJlciddID8gJyBXZSBhcmUgcmVnaXN0ZXJlZCBpbiBFbmdsYW5kIGFuZCBXYWxlcyB1bmRlciBjb21wYW55IG51bWJlciA8c3Ryb25nPicgLiBoKCRTSVRFWydjb21wYW55X251bWJlciddKSAuICc8L3N0cm9uZz4uJyA6ICcnKQogICAgICAgICAgICAuICgkU0lURVsnYWRkcmVzc19saW5lMSddID8gJyBPdXIgcmVnaXN0ZXJlZCBhZGRyZXNzIGlzICcgLiBoKCRTSVRFWydhZGRyZXNzX2xpbmUxJ10pIC4gKCRTSVRFWydhZGRyZXNzX2xpbmUyJ10gPyAnLCAnIC4gaCgkU0lURVsnYWRkcmVzc19saW5lMiddKSA6ICcnKSAuICcuJyA6ICcnKSAuICc8L3A+JywKICAgICAgICAnQWNjZXB0YW5jZSBvZiBUaGVzZSBUZXJtcycgPT4gJzxwPkJ5IGJyb3dzaW5nIHRoaXMgd2Vic2l0ZSwgc3VibWl0dGluZyBhbiBlbnF1aXJ5IG9yIHB1cmNoYXNpbmcgYSB2ZWhpY2xlLCB5b3UgYWdyZWUgdG8gdGhlc2UgdGVybXMgYW5kIHRvIG91ciA8YSBocmVmPSInIC4gdSgncHJpdmFjeS1wb2xpY3knKSAuICciPlByaXZhY3kgUG9saWN5PC9hPiwgPGEgaHJlZj0iJyAuIHUoJ2Nvb2tpZXMtcG9saWN5JykgLiAnIj5Db29raWVzIFBvbGljeTwvYT4gYW5kIDxhIGhyZWY9IicgLiB1KCdidXktYmFjay1ndWFyYW50ZWUnKSAuICciPkJ1eSBCYWNrIFBvbGljeTwvYT4uPC9wPicsCiAgICAgICAgJ1VzZSBvZiBUaGlzIFdlYnNpdGUnID0+ICc8cD5Zb3UgbWF5IHVzZSB0aGlzIHdlYnNpdGUgb25seSBmb3IgbGF3ZnVsIHB1cnBvc2VzLiBZb3UgbXVzdCBub3QgaW50cm9kdWNlIG1hbGljaW91cyBtYXRlcmlhbCwgYXR0ZW1wdCB1bmF1dGhvcmlzZWQgYWNjZXNzLCBvciBzY3JhcGUgY29udGVudCBieSBhdXRvbWF0ZWQgbWVhbnMgd2l0aG91dCBvdXIgd3JpdHRlbiBwZXJtaXNzaW9uLjwvcD4nLAogICAgICAgICdWZWhpY2xlIExpc3RpbmdzICZhbXA7IEFjY3VyYWN5JyA9PiAnPHA+V2UgdGFrZSByZWFzb25hYmxlIGNhcmUgdGhhdCBsaXN0aW5ncyBhcmUgYWNjdXJhdGUgYXQgdGhlIHRpbWUgb2YgcHVibGljYXRpb24sIGJ1dCB0aGV5IGFyZSBmb3IgZ2VuZXJhbCBndWlkYW5jZSBhbmQgZG8gbm90IGZvcm0gcGFydCBvZiBhIGNvbnRyYWN0LiBBbGwgdmVoaWNsZXMgYXJlIHN1YmplY3QgdG8gYXZhaWxhYmlsaXR5LiBQbGVhc2UgY29uZmlybSBzcGVjaWZpY2F0aW9uLCBtaWxlYWdlIGFuZCBjb25kaXRpb24gd2l0aCB1cyBiZWZvcmUgY29tcGxldGluZyBhIHB1cmNoYXNlLjwvcD4nLAogICAgICAgICdDb25zdW1lciBSaWdodHMnID0+ICc8cD5Ob3RoaW5nIGluIHRoZXNlIHRlcm1zIGFmZmVjdHMgeW91ciBzdGF0dXRvcnkgcmlnaHRzIHVuZGVyIHRoZSA8c3Ryb25nPkNvbnN1bWVyIFJpZ2h0cyBBY3QgMjAxNTwvc3Ryb25nPiBvciB5b3VyIHJpZ2h0IHRvIGNhbmNlbCBhIGRpc3RhbmNlIHB1cmNoYXNlIHVuZGVyIHRoZSA8c3Ryb25nPkNvbnN1bWVyIENvbnRyYWN0cyBSZWd1bGF0aW9ucyAyMDEzPC9zdHJvbmc+LiBTZWUgb3VyIDxhIGhyZWY9IicgLiB1KCdidXktYmFjay1ndWFyYW50ZWUnKSAuICciPkJ1eSBCYWNrIFBvbGljeTwvYT4uPC9wPicsCiAgICAgICAgJ0xpbWl0YXRpb24gb2YgTGlhYmlsaXR5JyA9PiAnPHA+V2UgcHJvdmlkZSB0aGlzIHdlYnNpdGUgb24gYW4gImFzIGlzIiBiYXNpcy4gVG8gdGhlIGZ1bGxlc3QgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXcgd2UgZXhjbHVkZSBsaWFiaWxpdHkgZm9yIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgbG9zcy4gTm90aGluZyBleGNsdWRlcyBsaWFiaWxpdHkgZm9yIGRlYXRoIG9yIHBlcnNvbmFsIGluanVyeSBjYXVzZWQgYnkgbmVnbGlnZW5jZSwgZm9yIGZyYXVkLCBvciBhbnkgbGlhYmlsaXR5IHRoYXQgY2Fubm90IGJlIGV4Y2x1ZGVkIHVuZGVyIEVuZ2xpc2ggbGF3LjwvcD4nLAogICAgICAgICdHb3Zlcm5pbmcgTGF3JyA9PiAnPHA+VGhlc2UgdGVybXMgYXJlIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIEVuZ2xhbmQgYW5kIFdhbGVzLCBhbmQgdGhlIGNvdXJ0cyBvZiBFbmdsYW5kIGFuZCBXYWxlcyBoYXZlIGV4Y2x1c2l2ZSBqdXJpc2RpY3Rpb24uPC9wPicsCiAgICAgIF0pOwpicmVhazsKCmNhc2UgJ3ByaXZhY3ktcG9saWN5JzoKICAgIGxlZ2FsX3BhZ2UoJ1ByaXZhY3kgUG9saWN5JywgJ0xlZ2FsJywKICAgICAgJ1RoaXMgcG9saWN5IGV4cGxhaW5zIHdoYXQgcGVyc29uYWwgZGF0YSAnIC4gaCgkU0lURVsnY29tcGFueV9uYW1lJ10pIC4gJyBjb2xsZWN0cywgd2h5LCBhbmQgd2hhdCB5b3VyIHJpZ2h0cyBhcmUgdW5kZXIgdGhlIFVLIEdEUFIuJywKICAgICAgWwogICAgICAgICdEYXRhIFdlIENvbGxlY3QnID0+ICc8cD5XaGVuIHlvdSBzdWJtaXQgYW4gZW5xdWlyeSB3ZSBjb2xsZWN0IHlvdXIgbmFtZSwgZW1haWwgYWRkcmVzcywgcGhvbmUgbnVtYmVyIChpZiBnaXZlbikgYW5kIHRoZSBjb250ZW50IG9mIHlvdXIgbWVzc2FnZS4gV2UgZG8gbm90IGNvbGxlY3QgcGF5bWVudCBkZXRhaWxzIHRocm91Z2ggdGhpcyB3ZWJzaXRlLjwvcD4nLAogICAgICAgICdXaHkgV2UgVXNlIEl0JyA9PiAnPHA+VG8gcmVzcG9uZCB0byB5b3VyIGVucXVpcnkgYW5kIHRvIGFkbWluaXN0ZXIgYW55IHN1YnNlcXVlbnQgc2FsZS4gVGhlIGxhd2Z1bCBiYXNpcyBpcyBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCBpbiBhbnN3ZXJpbmcgZW5xdWlyaWVzLCBhbmQgcGVyZm9ybWFuY2Ugb2YgYSBjb250cmFjdCB3aGVyZSB5b3UgZ28gb24gdG8gYnV5IGEgdmVoaWNsZS48L3A+JywKICAgICAgICAnSG93IExvbmcgV2UgS2VlcCBJdCcgPT4gJzxwPkVucXVpcmllcyBhcmUga2VwdCBmb3IgYXMgbG9uZyBhcyBuZWVkZWQgdG8gZGVhbCB3aXRoIHRoZW0gYW5kIHRvIG1lZXQgb3VyIGxlZ2FsIGFuZCBhY2NvdW50aW5nIG9ibGlnYXRpb25zLCB0aGVuIGRlbGV0ZWQuPC9wPicsCiAgICAgICAgJ1NoYXJpbmcnID0+ICc8cD5XZSBkbyBub3Qgc2VsbCB5b3VyIGRhdGEuIFdlIHNoYXJlIGl0IG9ubHkgd2l0aCBzZXJ2aWNlIHByb3ZpZGVycyB3aG8gaGVscCB1cyBvcGVyYXRlIChmb3IgZXhhbXBsZSBvdXIgaG9zdGluZyBhbmQgZW1haWwgcHJvdmlkZXJzKSBhbmQgd2hlcmUgcmVxdWlyZWQgYnkgbGF3LjwvcD4nLAogICAgICAgICdZb3VyIFJpZ2h0cycgPT4gJzxwPllvdSBtYXkgcmVxdWVzdCBhY2Nlc3MgdG8sIGNvcnJlY3Rpb24gb2YsIG9yIGRlbGV0aW9uIG9mIHlvdXIgcGVyc29uYWwgZGF0YSwgb2JqZWN0IHRvIHByb2Nlc3NpbmcsIG9yIHJlcXVlc3QgcG9ydGFiaWxpdHkuIENvbnRhY3QgdXMnCiAgICAgICAgICAgIC4gKCRTSVRFWydjb250YWN0X2VtYWlsJ10gPyAnIGF0IDxhIGhyZWY9Im1haWx0bzonIC4gaCgkU0lURVsnY29udGFjdF9lbWFpbCddKSAuICciPicgLiBoKCRTSVRFWydjb250YWN0X2VtYWlsJ10pIC4gJzwvYT4nIDogJycpCiAgICAgICAgICAgIC4gJy4gWW91IGNhbiBhbHNvIGNvbXBsYWluIHRvIHRoZSBJbmZvcm1hdGlvbiBDb21taXNzaW9uZXJcJ3MgT2ZmaWNlIGF0IDxhIGhyZWY9Imh0dHBzOi8vaWNvLm9yZy51ayIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPmljby5vcmcudWs8L2E+LjwvcD4nLAogICAgICBdKTsKYnJlYWs7CgpjYXNlICdjb29raWVzLXBvbGljeSc6CiAgICBsZWdhbF9wYWdlKCdDb29raWVzIFBvbGljeScsICdMZWdhbCcsCiAgICAgICdUaGlzIHBvbGljeSBleHBsYWlucyBob3cgJyAuIGgoJFNJVEVbJ2NvbXBhbnlfbmFtZSddKSAuICcgdXNlcyBjb29raWVzLCBpbiBsaW5lIHdpdGggdGhlIFVLIFByaXZhY3kgYW5kIEVsZWN0cm9uaWMgQ29tbXVuaWNhdGlvbnMgUmVndWxhdGlvbnMgKFBFQ1IpLicsCiAgICAgIFsKICAgICAgICAnV2hhdCBBcmUgQ29va2llcz8nID0+ICc8cD5Db29raWVzIGFyZSBzbWFsbCB0ZXh0IGZpbGVzIHBsYWNlZCBvbiB5b3VyIGRldmljZSB3aGVuIHlvdSB2aXNpdCBhIHdlYnNpdGUuIFRoZXkgYXJlIHdpZGVseSB1c2VkIHRvIG1ha2Ugd2Vic2l0ZXMgd29yaywgb3Igd29yayBtb3JlIGVmZmljaWVudGx5LjwvcD4nLAogICAgICAgICdDb29raWVzIFdlIFVzZScgPT4gJzxwPldlIHVzZSBvbmx5IDxzdHJvbmc+c3RyaWN0bHkgbmVjZXNzYXJ5IGNvb2tpZXM8L3N0cm9uZz4gcmVxdWlyZWQgZm9yIHRoaXMgd2Vic2l0ZSBhbmQgaXRzIGVucXVpcnkgZm9ybXMgdG8gd29yay4gV2UgZG8gbm90IHVzZSBhbmFseXRpY3MsIGFkdmVydGlzaW5nIG9yIHRoaXJkLXBhcnR5IHRyYWNraW5nIGNvb2tpZXMuIFN0cmljdGx5IG5lY2Vzc2FyeSBjb29raWVzIGRvIG5vdCByZXF1aXJlIGNvbnNlbnQgdW5kZXIgUEVDUi48L3A+JywKICAgICAgICAnTWFuYWdpbmcgQ29va2llcycgPT4gJzxwPk1vc3QgYnJvd3NlcnMgbGV0IHlvdSBibG9jayBvciBkZWxldGUgY29va2llcyBpbiB0aGVpciBzZXR0aW5ncy4gQmxvY2tpbmcgc3RyaWN0bHkgbmVjZXNzYXJ5IGNvb2tpZXMgbWF5IHN0b3AgZW5xdWlyeSBmb3JtcyBmcm9tIHdvcmtpbmcuIE1vcmUgaW5mb3JtYXRpb246IDxhIGhyZWY9Imh0dHBzOi8vaWNvLm9yZy51ay9mb3ItdGhlLXB1YmxpYy9vbmxpbmUvY29va2llcy8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5pY28ub3JnLnVrPC9hPi48L3A+JywKICAgICAgXSk7CmJyZWFrOwoKfQoKcmVuZGVyX2Zvb3RlcigpOwo=', 'admin/dashboard.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2xheW91dC5waHAnOwoKJG9uZSA9IGZ1bmN0aW9uICgkc3FsKSB7IHJldHVybiAoaW50KWRiKCktPnF1ZXJ5KCRzcWwpLT5mZXRjaCgpWydjJ107IH07Cgokc2l0ZXMgICAgICAgICAgPSAkb25lKCJTRUxFQ1QgQ09VTlQoKikgYyBGUk9NIHNpdGVzIik7CiRzaXRlc0FjdGl2ZSAgICA9ICRvbmUoIlNFTEVDVCBDT1VOVCgqKSBjIEZST00gc2l0ZXMgV0hFUkUgaXNfYWN0aXZlPTEiKTsKJHZlaGljbGVzICAgICAgID0gJG9uZSgiU0VMRUNUIENPVU5UKCopIGMgRlJPTSB2ZWhpY2xlcyIpOwokdW5hc3NpZ25lZCAgICAgPSAkb25lKCJTRUxFQ1QgQ09VTlQoKikgYyBGUk9NIHZlaGljbGVzIHYgV0hFUkUgTk9UIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSB2ZWhpY2xlX3NpdGVzIHZzIFdIRVJFIHZzLnZlaGljbGVfaWQ9di5pZCkiKTsKJHBlbmRpbmdSZXZpZXdzID0gJG9uZSgiU0VMRUNUIENPVU5UKCopIGMgRlJPTSByZXZpZXdzIFdIRVJFIGlzX2FwcHJvdmVkPTAiKTsKJHVucmVhZE1zZ3MgICAgID0gJG9uZSgiU0VMRUNUIENPVU5UKCopIGMgRlJPTSBjb250YWN0X21lc3NhZ2VzIFdIRVJFIGlzX3JlYWQ9MCIpOwoKJHBlclNpdGUgPSBkYigpLT5xdWVyeSgiU0VMRUNUIHMuaWQsIHMuY29tcGFueV9uYW1lLCBzLmRvbWFpbiwgcy5pc19hY3RpdmUsCiAgICAoU0VMRUNUIENPVU5UKCopIEZST00gdmVoaWNsZV9zaXRlcyB2cyBKT0lOIHZlaGljbGVzIHYgT04gdi5pZD12cy52ZWhpY2xlX2lkCiAgICAgICBXSEVSRSB2cy5zaXRlX2lkPXMuaWQgQU5EIHYuc3RhdHVzPD4nc29sZCcpIEFTIHZlaCwKICAgIChTRUxFQ1QgQ09VTlQoKikgRlJPTSBjb250YWN0X21lc3NhZ2VzIG0gV0hFUkUgbS5zaXRlX2lkPXMuaWQgQU5EIG0uaXNfcmVhZD0wKSBBUyBtc2cKICBGUk9NIHNpdGVzIHMgT1JERVIgQlkgcy5jb21wYW55X25hbWUiKS0+ZmV0Y2hBbGwoKTsKCmFkbWluX2hlYWQoJ0Rhc2hib2FyZCcpOwphZG1pbl90b3BiYXIoJ0Rhc2hib2FyZCcpOwo/Pgo8ZGl2IGNsYXNzPSJncmlkIj4KICA8ZGl2IGNsYXNzPSJzdGF0Ij48ZGl2IGNsYXNzPSJpYyI+JiMxMjc5NzA7PC9kaXY+PGRpdiBjbGFzcz0ibnVtIj48Pz0gJHNpdGVzQWN0aXZlID8+Lzw/PSAkc2l0ZXMgPz48L2Rpdj48ZGl2IGNsYXNzPSJsYWJlbCI+QWN0aXZlIHNpdGVzPC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0ic3RhdCI+PGRpdiBjbGFzcz0iaWMiPiYjMTI4NjYzOzwvZGl2PjxkaXYgY2xhc3M9Im51bSI+PD89ICR2ZWhpY2xlcyA/PjwvZGl2PjxkaXYgY2xhc3M9ImxhYmVsIj5WZWhpY2xlcyBpbiBzdG9jazwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9InN0YXQiPjxkaXYgY2xhc3M9ImljIj4mIzExMDg4OzwvZGl2PjxkaXYgY2xhc3M9Im51bSI+PD89ICRwZW5kaW5nUmV2aWV3cyA/PjwvZGl2PjxkaXYgY2xhc3M9ImxhYmVsIj5SZXZpZXdzIHRvIGFwcHJvdmU8L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJzdGF0Ij48ZGl2IGNsYXNzPSJpYyI+JiM5OTkzOyYjNjUwMzk7PC9kaXY+PGRpdiBjbGFzcz0ibnVtIj48Pz0gJHVucmVhZE1zZ3MgPz48L2Rpdj48ZGl2IGNsYXNzPSJsYWJlbCI+VW5yZWFkIG1lc3NhZ2VzPC9kaXY+PC9kaXY+CjwvZGl2PgoKPD9waHAgaWYgKCR1bmFzc2lnbmVkID4gMCk6ID8+CjxkaXYgY2xhc3M9ImZsYXNoIGVycm9yIj48Pz0gJHVuYXNzaWduZWQgPz4gdmVoaWNsZShzKSBhcmUgbm90IHRpY2tlZCBmb3IgYW55IHNpdGUsIHNvIHRoZXkgYXBwZWFyIG5vd2hlcmUuCiAgPGEgaHJlZj0idmVoaWNsZXMucGhwP2Fzc2lnbmVkPW5vbmUiPlNob3cgdGhlbTwvYT4uPC9kaXY+Cjw/cGhwIGVuZGlmOyA/PgoKPGRpdiBjbGFzcz0iY2FyZCI+CiAgPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjA7Zm9udC1zaXplOjE2cHgiPlBlci1zaXRlIG92ZXJ2aWV3PC9oMj4KICA8dGFibGU+CiAgICA8dHI+PHRoPkNvbXBhbnk8L3RoPjx0aD5Eb21haW48L3RoPjx0aD5WZWhpY2xlcyBzaG93bjwvdGg+PHRoPlVucmVhZCBtZXNzYWdlczwvdGg+PHRoPlN0YXR1czwvdGg+PHRoPjwvdGg+PC90cj4KICAgIDw/cGhwIGZvcmVhY2ggKCRwZXJTaXRlIGFzICRzKTogPz4KICAgIDx0cj4KICAgICAgPHRkPjw/PSBoKCRzWydjb21wYW55X25hbWUnXSkgPz48L3RkPgogICAgICA8dGQ+PD89IGgoJHNbJ2RvbWFpbiddKSA/PjwvdGQ+CiAgICAgIDx0ZD48Pz0gKGludCkkc1sndmVoJ10gPz48L3RkPgogICAgICA8dGQ8Pz0gJHNbJ21zZyddID8gJyBjbGFzcz0idW5yZWFkIicgOiAnJyA/Pj48Pz0gKGludCkkc1snbXNnJ10gPz48L3RkPgogICAgICA8dGQ+PHNwYW4gY2xhc3M9ImJhZGdlIDw/PSAkc1snaXNfYWN0aXZlJ10gPyAnYXZhaWxhYmxlJyA6ICdzb2xkJyA/PiI+PD89ICRzWydpc19hY3RpdmUnXSA/ICdBY3RpdmUnIDogJ0Rpc2FibGVkJyA/Pjwvc3Bhbj48L3RkPgogICAgICA8dGQgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+PGEgY2xhc3M9ImJ0biBzbWFsbCBzZWNvbmRhcnkiIGhyZWY9InNhdGVsbGl0ZV9kb3dubG9hZC5waHA/aWQ9PD89IChpbnQpJHNbJ2lkJ10gPz4iPiYjMTEwMTU7IFNhdGVsbGl0ZTwvYT48L3RkPgogICAgPC90cj4KICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICA8P3BocCBpZiAoISRwZXJTaXRlKTogPz48dHI+PHRkIGNvbHNwYW49IjYiPk5vIHNpdGVzIHlldC4gPGEgaHJlZj0ic2l0ZV9mb3JtLnBocCI+QWRkIHRoZSBmaXJzdCBvbmU8L2E+LjwvdGQ+PC90cj48P3BocCBlbmRpZjsgPz4KICA8L3RhYmxlPgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNhcmQiPgogIDxwIHN0eWxlPSJtYXJnaW46MCI+V2VsY29tZSwgPD89IGgoQXV0aDo6dXNlcigpWyduYW1lJ10pID8+LiBVc2UgPGEgaHJlZj0idmVoaWNsZXMucGhwIj5JbnZlbnRvcnk8L2E+IHRvIGFkZCB2ZWhpY2xlcyBhbmQgdGljayB3aGljaCBzaXRlcyB0aGV5IGFwcGVhciBvbiwgYW5kIDxhIGhyZWY9InNpdGVzLnBocCI+U2l0ZXM8L2E+IHRvIG1hbmFnZSBzYXRlbGxpdGVzIGFuZCBkb3dubG9hZCBlYWNoIG9uZSdzIGZpbGUuPC9wPgogIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTJweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOjE2cHgiPgogICAgPGEgY2xhc3M9ImJ0biIgaHJlZj0idmVoaWNsZV9mb3JtLnBocCI+KyBBZGQgdmVoaWNsZTwvYT4KICAgIDxhIGNsYXNzPSJidG4gc2Vjb25kYXJ5IiBocmVmPSJzaXRlX2Zvcm0ucGhwIj4rIE5ldyBzaXRlPC9hPgogIDwvZGl2Pgo8L2Rpdj4KPD9waHAgYWRtaW5fZm9vdCgpOyA/Pgo=', 'admin/login.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CgppZiAoQXV0aDo6Y2hlY2soKSAmJiBBdXRoOjp1c2VyKClbJ3JvbGUnXSA9PT0gJ3N1cGVyX2FkbWluJykgcmVkaXJlY3QoJ2Rhc2hib2FyZC5waHAnKTsKCiRlcnIgPSAnJzsKaWYgKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09PSAnUE9TVCcpIHsKICAgIGNzcmZfY2hlY2soKTsKICAgIGlmIChBdXRoOjphdHRlbXB0KGVfcG9zdCgnZW1haWwnKSwgJF9QT1NUWydwYXNzd29yZCddID8/ICcnLCAnc3VwZXJfYWRtaW4nKSkgewogICAgICAgIHJlZGlyZWN0KCdkYXNoYm9hcmQucGhwJyk7CiAgICB9CiAgICAkZXJyID0gJ0luY29ycmVjdCBlbWFpbCBvciBwYXNzd29yZC4nOwp9Cj8+PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgo8dGl0bGU+TG9nIGluIC0gPD89IGgoUExBVEZPUk1fTkFNRSkgPz48L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Fzc2V0cy9hZG1pbi5jc3MiPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGNsYXNzPSJsb2dpbi13cmFwIj4KICA8ZGl2IGNsYXNzPSJsb2dpbi1ib3giPgogICAgPGgxPjw/PSBoKFBMQVRGT1JNX05BTUUpID8+PC9oMT4KICAgIDw/cGhwIGlmICgkZXJyKTogPz48ZGl2IGNsYXNzPSJmbGFzaCBlcnJvciI+PD89IGgoJGVycikgPz48L2Rpdj48P3BocCBlbmRpZjsgPz4KICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+CiAgICAgIDw/PSBjc3JmX2ZpZWxkKCkgPz4KICAgICAgPGxhYmVsPkVtYWlsPC9sYWJlbD4KICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJlbWFpbCIgcmVxdWlyZWQgYXV0b2ZvY3VzPgogICAgICA8bGFiZWw+UGFzc3dvcmQ8L2xhYmVsPgogICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkIiByZXF1aXJlZD4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiB0eXBlPSJzdWJtaXQiPkxvZyBpbjwvYnV0dG9uPgogICAgPC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==', 'admin/logout.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OmxvZ291dCgpOwpyZWRpcmVjdCgnbG9naW4ucGhwJyk7Cg==', 'admin/messages.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2xheW91dC5waHAnOwoKaWYgKCRhY3QgPSBlX2dldCgncmVhZCcpKSB7CiAgICBpZiAoZW1wdHkoJF9HRVRbJ2NzcmYnXSkgfHwgIWhhc2hfZXF1YWxzKGNzcmZfdG9rZW4oKSwgKHN0cmluZykkX0dFVFsnY3NyZiddKSkgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNDAwKTsgZGllKCdJbnZhbGlkIHNlY3VyaXR5IHRva2VuLicpOyB9CiAgICBkYigpLT5wcmVwYXJlKCJVUERBVEUgY29udGFjdF9tZXNzYWdlcyBTRVQgaXNfcmVhZCA9IDEgV0hFUkUgaWQgPSA/IiktPmV4ZWN1dGUoWyhpbnQpJGFjdF0pOwogICAgZmxhc2goJ29rJywgJ01lc3NhZ2UgbWFya2VkIGFzIHJlYWQuJyk7CiAgICByZWRpcmVjdCgnbWVzc2FnZXMucGhwJyAuICgkX0dFVFsnc2l0ZSddID8/ICcnID8gJz9zaXRlPScgLiAoaW50KSRfR0VUWydzaXRlJ10gOiAnJykpOwp9CmlmICgkZGVsID0gZV9nZXQoJ2RlbGV0ZScpKSB7CiAgICBpZiAoZW1wdHkoJF9HRVRbJ2NzcmYnXSkgfHwgIWhhc2hfZXF1YWxzKGNzcmZfdG9rZW4oKSwgKHN0cmluZykkX0dFVFsnY3NyZiddKSkgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNDAwKTsgZGllKCdJbnZhbGlkIHNlY3VyaXR5IHRva2VuLicpOyB9CiAgICBkYigpLT5wcmVwYXJlKCJERUxFVEUgRlJPTSBjb250YWN0X21lc3NhZ2VzIFdIRVJFIGlkID0gPyIpLT5leGVjdXRlKFsoaW50KSRkZWxdKTsKICAgIGZsYXNoKCdvaycsICdNZXNzYWdlIGRlbGV0ZWQuJyk7CiAgICByZWRpcmVjdCgnbWVzc2FnZXMucGhwJyAuICgkX0dFVFsnc2l0ZSddID8/ICcnID8gJz9zaXRlPScgLiAoaW50KSRfR0VUWydzaXRlJ10gOiAnJykpOwp9Cgokc2l0ZUlkID0gKGludCllX2dldCgnc2l0ZScpOwokd2hlcmUgID0gJHNpdGVJZCA/ICdXSEVSRSBtLnNpdGVfaWQgPSA/JyA6ICcnOwokcGFyYW1zID0gJHNpdGVJZCA/IFskc2l0ZUlkXSA6IFtdOwoKJHN0ID0gZGIoKS0+cHJlcGFyZSgiU0VMRUNUIG0uKiwgcy5jb21wYW55X25hbWUsIHYudGl0bGUgQVMgdmVoaWNsZV90aXRsZSwgdi5zbHVnIEFTIHZlaGljbGVfc2x1ZwogICAgICAgICAgICAgICAgICAgICBGUk9NIGNvbnRhY3RfbWVzc2FnZXMgbQogICAgICAgICAgICAgICAgICAgICBMRUZUIEpPSU4gc2l0ZXMgcyBPTiBzLmlkID0gbS5zaXRlX2lkCiAgICAgICAgICAgICAgICAgICAgIExFRlQgSk9JTiB2ZWhpY2xlcyB2IE9OIHYuaWQgPSBtLnZlaGljbGVfaWQKICAgICAgICAgICAgICAgICAgICAgJHdoZXJlIE9SREVSIEJZIG0uY3JlYXRlZF9hdCBERVNDIExJTUlUIDMwMCIpOwokc3QtPmV4ZWN1dGUoJHBhcmFtcyk7CiRtc2dzID0gJHN0LT5mZXRjaEFsbCgpOwoKYWRtaW5faGVhZCgnTWVzc2FnZXMnKTsKYWRtaW5fdG9wYmFyKCdDb250YWN0IG1lc3NhZ2VzJyk7Cj8+CjxkaXYgY2xhc3M9ImNhcmQiPgogIDxmb3JtIG1ldGhvZD0iZ2V0IiBjbGFzcz0iZmlsdGVycyI+CiAgICA8c2VsZWN0IG5hbWU9InNpdGUiIG9uY2hhbmdlPSJ0aGlzLmZvcm0uc3VibWl0KCkiPgogICAgICA8b3B0aW9uIHZhbHVlPSIiPkFsbCBzaXRlczwvb3B0aW9uPgogICAgICA8P3BocCBmb3JlYWNoIChhbGxfc2l0ZXMoKSBhcyAkcyk6ID8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPD89IChpbnQpJHNbJ2lkJ10gPz4iIDw/PSAkc2l0ZUlkID09PSAoaW50KSRzWydpZCddID8gJ3NlbGVjdGVkJyA6ICcnID8+Pjw/PSBoKCRzWydjb21wYW55X25hbWUnXSkgPz48L29wdGlvbj4KICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgIDwvc2VsZWN0PgogICAgPG5vc2NyaXB0PjxidXR0b24gY2xhc3M9ImJ0biBzbWFsbCIgdHlwZT0ic3VibWl0Ij5GaWx0ZXI8L2J1dHRvbj48L25vc2NyaXB0PgogIDwvZm9ybT4KCiAgPHRhYmxlPgogICAgPHRyPjx0aD5EYXRlPC90aD48dGg+U2l0ZTwvdGg+PHRoPkZyb208L3RoPjx0aD5NZXNzYWdlPC90aD48dGg+PC90aD48L3RyPgogICAgPD9waHAgZm9yZWFjaCAoJG1zZ3MgYXMgJG0pOiAkcXMgPSAkc2l0ZUlkID8gJyZhbXA7c2l0ZT0nIC4gJHNpdGVJZCA6ICcnOyA/PgogICAgPHRyPD89ICRtWydpc19yZWFkJ10gPyAnJyA6ICcgY2xhc3M9InVucmVhZCInID8+PgogICAgICA8dGQgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+PD89IGgoZGF0ZSgnZC5tLlkgSDppJywgc3RydG90aW1lKCRtWydjcmVhdGVkX2F0J10pKSkgPz48Pz0gJG1bJ2lzX3JlYWQnXSA/ICcnIDogJzxicj48c3BhbiBjbGFzcz0iYmFkZ2UgcmVzZXJ2ZWQiPm5ldzwvc3Bhbj4nID8+PC90ZD4KICAgICAgPHRkPjw/PSBoKCRtWydjb21wYW55X25hbWUnXSA/OiAn4oCUJykgPz48L3RkPgogICAgICA8dGQ+CiAgICAgICAgPHN0cm9uZz48Pz0gaCgkbVsnbmFtZSddKSA/Pjwvc3Ryb25nPjxicj4KICAgICAgICA8YSBocmVmPSJtYWlsdG86PD89IGgoJG1bJ2VtYWlsJ10pID8+Ij48Pz0gaCgkbVsnZW1haWwnXSkgPz48L2E+CiAgICAgICAgPD9waHAgaWYgKCRtWydwaG9uZSddKTogPz48YnI+PHNwYW4gY2xhc3M9Im11dGVkIj48Pz0gaCgkbVsncGhvbmUnXSkgPz48L3NwYW4+PD9waHAgZW5kaWY7ID8+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICA8P3BocCBpZiAoJG1bJ3ZlaGljbGVfdGl0bGUnXSk6ID8+PHNwYW4gY2xhc3M9ImJhZGdlIGF2YWlsYWJsZSI+PD89IGgoJG1bJ3ZlaGljbGVfdGl0bGUnXSkgPz48L3NwYW4+PD9waHAgZW5kaWY7ID8+CiAgICAgICAgPGRpdiBjbGFzcz0ibXNnYm94Ij48Pz0gaCgkbVsnbWVzc2FnZSddKSA/PjwvZGl2PgogICAgICA8L3RkPgogICAgICA8dGQgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+CiAgICAgICAgPD9waHAgaWYgKCEkbVsnaXNfcmVhZCddKTogPz4KICAgICAgICAgIDxhIGNsYXNzPSJidG4gc21hbGwgc2Vjb25kYXJ5IiBocmVmPSJtZXNzYWdlcy5waHA/cmVhZD08Pz0gKGludCkkbVsnaWQnXSA/PiZhbXA7Y3NyZj08Pz0gaChjc3JmX3Rva2VuKCkpID8+PD89ICRxcyA/PiI+TWFyayByZWFkPC9hPgogICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgIDxhIGNsYXNzPSJidG4gc21hbGwgZGFuZ2VyIiBocmVmPSJtZXNzYWdlcy5waHA/ZGVsZXRlPTw/PSAoaW50KSRtWydpZCddID8+JmFtcDtjc3JmPTw/PSBoKGNzcmZfdG9rZW4oKSkgPz48Pz0gJHFzID8+IiBvbmNsaWNrPSJyZXR1cm4gY29uZmlybSgnRGVsZXRlIHRoaXMgbWVzc2FnZT8nKSI+RGVsZXRlPC9hPgogICAgICA8L3RkPgogICAgPC90cj4KICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICA8P3BocCBpZiAoISRtc2dzKTogPz48dHI+PHRkIGNvbHNwYW49IjUiPk5vIG1lc3NhZ2VzLjwvdGQ+PC90cj48P3BocCBlbmRpZjsgPz4KICA8L3RhYmxlPgo8L2Rpdj4KPD9waHAgYWRtaW5fZm9vdCgpOyA/Pgo=', 'admin/review_form.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2xheW91dC5waHAnOwoKJGlkID0gKGludCllX2dldCgnaWQnKTsKJHJldmlldyA9IG51bGw7CgppZiAoJGlkKSB7CiAgICAkc3QgPSBkYigpLT5wcmVwYXJlKCJTRUxFQ1QgKiBGUk9NIHJldmlld3MgV0hFUkUgaWQgPSA/IExJTUlUIDEiKTsKICAgICRzdC0+ZXhlY3V0ZShbJGlkXSk7CiAgICAkcmV2aWV3ID0gJHN0LT5mZXRjaCgpOwogICAgaWYgKCEkcmV2aWV3KSB7IGZsYXNoKCdlcnInLCAnUmV2aWV3IG5vdCBmb3VuZC4nKTsgcmVkaXJlY3QoJ3Jldmlld3MucGhwJyk7IH0KfQoKLy8gbmV3IHJldmlld3Mgc3RhcnQgd2l0aCBldmVyeSBzaXRlIHRpY2tlZAokY2hlY2tlZCA9ICRpZCA/IHJldmlld19zaXRlX2lkcygkaWQpIDogYXJyYXlfbWFwKCdpbnR2YWwnLCBhcnJheV9jb2x1bW4oYWxsX3NpdGVzKCksICdpZCcpKTsKCmlmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PT0gJ1BPU1QnKSB7CiAgICBjc3JmX2NoZWNrKCk7CgogICAgJGF1dGhvciAgPSBlX3Bvc3QoJ2F1dGhvcl9uYW1lJyk7CiAgICAkY29udGVudCA9IHRyaW0oKHN0cmluZykoJF9QT1NUWydjb250ZW50J10gPz8gJycpKTsKICAgICRyYXRpbmcgID0gbWF4KDEsIG1pbig1LCAoaW50KWVfcG9zdCgncmF0aW5nJywgJzUnKSkpOwoKICAgIGlmICgkYXV0aG9yID09PSAnJyB8fCAkY29udGVudCA9PT0gJycpIHsKICAgICAgICBmbGFzaCgnZXJyJywgJ0F1dGhvciBhbmQgY29udGVudCBhcmUgcmVxdWlyZWQuJyk7CiAgICAgICAgJGNoZWNrZWQgPSBhcnJheV9tYXAoJ2ludHZhbCcsICRfUE9TVFsnc2l0ZXMnXSA/PyBbXSk7CiAgICB9IGVsc2UgewogICAgICAgICRpc0FwcHJvdmVkID0gaXNzZXQoJF9QT1NUWydpc19hcHByb3ZlZCddKSA/IDEgOiAwOwogICAgICAgICRjcmVhdGVkICAgID0gZV9wb3N0KCdjcmVhdGVkX2F0JykgIT09ICcnID8gZV9wb3N0KCdjcmVhdGVkX2F0JykgLiAnIDEyOjAwOjAwJyA6IGRhdGUoJ1ktbS1kIEg6aTpzJyk7CgogICAgICAgICRpbWFnZSA9IHVwbG9hZF9pbWFnZSgnaW1hZ2UnLCBfX0RJUl9fIC4gJy8uLi91cGxvYWRzL3ZlaGljbGVzJywgJ3JldicpOwogICAgICAgIGlmICgkaW1hZ2UgJiYgJHJldmlldyAmJiAhZW1wdHkoJHJldmlld1snaW1hZ2VfcGF0aCddKQogICAgICAgICAgICAmJiAhcHJlZ19tYXRjaCgnL15yZXZpZXdcZCtcLnBuZyQvJywgJHJldmlld1snaW1hZ2VfcGF0aCddKSkgewogICAgICAgICAgICAkb2xkID0gX19ESVJfXyAuICcvLi4vdXBsb2Fkcy92ZWhpY2xlcy8nIC4gYmFzZW5hbWUoJHJldmlld1snaW1hZ2VfcGF0aCddKTsKICAgICAgICAgICAgaWYgKGlzX2ZpbGUoJG9sZCkpIEB1bmxpbmsoJG9sZCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGlkKSB7CiAgICAgICAgICAgICRzcWwgPSAiVVBEQVRFIHJldmlld3MgU0VUIGF1dGhvcl9uYW1lID0gPywgcmF0aW5nID0gPywgY29udGVudCA9ID8sIGlzX2FwcHJvdmVkID0gPywgY3JlYXRlZF9hdCA9ID8iCiAgICAgICAgICAgICAgICAgLiAoJGltYWdlID8gIiwgaW1hZ2VfcGF0aCA9ID8iIDogIiIpIC4gIiBXSEVSRSBpZCA9ID8iOwogICAgICAgICAgICAkYXJncyA9IFskYXV0aG9yLCAkcmF0aW5nLCAkY29udGVudCwgJGlzQXBwcm92ZWQsICRjcmVhdGVkXTsKICAgICAgICAgICAgaWYgKCRpbWFnZSkgJGFyZ3NbXSA9ICRpbWFnZTsKICAgICAgICAgICAgJGFyZ3NbXSA9ICRpZDsKICAgICAgICAgICAgZGIoKS0+cHJlcGFyZSgkc3FsKS0+ZXhlY3V0ZSgkYXJncyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gc2l0ZV9pZCBzdGF5cyBvbiB0aGUgZmlyc3QgdGlja2VkIHNpdGUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OwogICAgICAgICAgICAvLyByZXZpZXdfc2l0ZXMgaXMgd2hhdCBhY3R1YWxseSBkZWNpZGVzIHdoZXJlIGl0IHNob3dzLgogICAgICAgICAgICAkZmlyc3QgPSAoaW50KSgoJF9QT1NUWydzaXRlcyddID8/IFtudWxsXSlbMF0gPz8gMCk7CiAgICAgICAgICAgIGRiKCktPnByZXBhcmUoIklOU0VSVCBJTlRPIHJldmlld3MgKHNpdGVfaWQsIGF1dGhvcl9uYW1lLCByYXRpbmcsIGNvbnRlbnQsIGltYWdlX3BhdGgsIGlzX2FwcHJvdmVkLCBjcmVhdGVkX2F0KQogICAgICAgICAgICAgICAgICAgICAgICAgICBWQUxVRVMgKD8sPyw/LD8sPyw/LD8pIikKICAgICAgICAgICAgICAgIC0+ZXhlY3V0ZShbJGZpcnN0ID86IG51bGwsICRhdXRob3IsICRyYXRpbmcsICRjb250ZW50LCAkaW1hZ2UsICRpc0FwcHJvdmVkLCAkY3JlYXRlZF0pOwogICAgICAgICAgICAkaWQgPSAoaW50KWRiKCktPmxhc3RJbnNlcnRJZCgpOwogICAgICAgIH0KCiAgICAgICAgc2V0X3Jldmlld19zaXRlcygkaWQsICRfUE9TVFsnc2l0ZXMnXSA/PyBbXSk7CiAgICAgICAgJG4gPSBjb3VudCgkX1BPU1RbJ3NpdGVzJ10gPz8gW10pOwoKICAgICAgICBmbGFzaCgnb2snLCAkbgogICAgICAgICAgICA/ICJSZXZpZXcgc2F2ZWQgYW5kIHNob3duIG9uICRuIHNpdGUocykuIgogICAgICAgICAgICA6ICdSZXZpZXcgc2F2ZWQsIGJ1dCBpdCBpcyBub3QgdGlja2VkIGZvciBhbnkgc2l0ZSwgc28gaXQgYXBwZWFycyBub3doZXJlLicpOwogICAgICAgIHJlZGlyZWN0KCdyZXZpZXdzLnBocCcpOwogICAgfQp9CgokdmFsID0gZnVuY3Rpb24gKCRrLCAkZCA9ICcnKSB1c2UgKCRyZXZpZXcpIHsgcmV0dXJuICRyZXZpZXdbJGtdID8/ICRkOyB9OwoKYWRtaW5faGVhZCgkaWQgPyAnRWRpdCByZXZpZXcnIDogJ05ldyByZXZpZXcnKTsKYWRtaW5fdG9wYmFyKCRpZCA/ICdFZGl0IHJldmlldycgOiAnTmV3IHJldmlldycsICc8YSBocmVmPSJyZXZpZXdzLnBocCIgY2xhc3M9ImJ0biBzZWNvbmRhcnkiPiZsYXJyOyBCYWNrIHRvIHJldmlld3M8L2E+Jyk7Cj8+Cjxmb3JtIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+Cjw/PSBjc3JmX2ZpZWxkKCkgPz4KCjxkaXYgY2xhc3M9ImNhcmQiPgogIDxoMiBzdHlsZT0ibWFyZ2luLXRvcDowO2ZvbnQtc2l6ZToxNnB4Ij5SZXZpZXc8L2gyPgogIDxkaXYgY2xhc3M9InJvdzIiPgogICAgPGRpdj48bGFiZWw+QXV0aG9yIG5hbWUgKjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImF1dGhvcl9uYW1lIiByZXF1aXJlZCB2YWx1ZT0iPD89IGgoJHZhbCgnYXV0aG9yX25hbWUnKSkgPz4iPjwvZGl2PgogICAgPGRpdj4KICAgICAgPGxhYmVsPlJhdGluZzwvbGFiZWw+CiAgICAgIDxzZWxlY3QgbmFtZT0icmF0aW5nIj4KICAgICAgICA8P3BocCBmb3IgKCRpID0gNTsgJGkgPj0gMTsgJGktLSk6ID8+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI8Pz0gJGkgPz4iIDw/PSAoaW50KSR2YWwoJ3JhdGluZycsIDUpID09PSAkaSA/ICdzZWxlY3RlZCcgOiAnJyA/Pj48Pz0gc3RyX3JlcGVhdCgn4piFJywgJGkpIC4gc3RyX3JlcGVhdCgn4piGJywgNSAtICRpKSA/PiAoPD89ICRpID8+KTwvb3B0aW9uPgogICAgICAgIDw/cGhwIGVuZGZvcjsgPz4KICAgICAgPC9zZWxlY3Q+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGxhYmVsPkNvbnRlbnQgKjwvbGFiZWw+CiAgPHRleHRhcmVhIG5hbWU9ImNvbnRlbnQiIHJvd3M9IjYiIHJlcXVpcmVkPjw/PSBoKCR2YWwoJ2NvbnRlbnQnKSkgPz48L3RleHRhcmVhPgoKICA8ZGl2IGNsYXNzPSJyb3cyIj4KICAgIDxkaXY+CiAgICAgIDxsYWJlbD5EYXRlPC9sYWJlbD4KICAgICAgPGlucHV0IHR5cGU9ImRhdGUiIG5hbWU9ImNyZWF0ZWRfYXQiIHZhbHVlPSI8Pz0gaCgkdmFsKCdjcmVhdGVkX2F0JykgPyBkYXRlKCdZLW0tZCcsIHN0cnRvdGltZSgkdmFsKCdjcmVhdGVkX2F0JykpKSA6IGRhdGUoJ1ktbS1kJykpID8+Ij4KICAgIDwvZGl2PgogICAgPGRpdj4KICAgICAgPGxhYmVsPlBob3RvIChvcHRpb25hbCk8L2xhYmVsPgogICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iaW1hZ2UiIGFjY2VwdD0iaW1hZ2UvanBlZyxpbWFnZS9wbmcsaW1hZ2Uvd2VicCI+CiAgICAgIDw/cGhwIGlmICgkdmFsKCdpbWFnZV9wYXRoJykpOiA/PgogICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6OHB4Ij48aW1nIGNsYXNzPSJ0aHVtYiIgc3JjPSIuLi91cGxvYWRzL3ZlaGljbGVzLzw/PSBoKCR2YWwoJ2ltYWdlX3BhdGgnKSkgPz4iIGFsdD0iIj48L2Rpdj4KICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7bWFyZ2luLXRvcDoxNHB4Ij4KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iaXNfYXBwcm92ZWQiIHZhbHVlPSIxIiA8Pz0gJHZhbCgnaXNfYXBwcm92ZWQnLCAwKSA/ICdjaGVja2VkJyA6ICcnID8+PgogICAgUHVibGlzaGVkICh1bnRpY2tlZCwgaXQgc3RheXMgcGVuZGluZyBhbmQgaXMgbm90IHNob3duIG9uIGFueSBzaXRlKQogIDwvbGFiZWw+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY2FyZCI+CiAgPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjA7Zm9udC1zaXplOjE2cHgiPldoaWNoIHNpdGVzIGl0IGFwcGVhcnMgb248L2gyPgogIDxwIGNsYXNzPSJtdXRlZCIgc3R5bGU9Im1hcmdpbjowIj5UaWNrIHRoZSBzYXRlbGxpdGVzIHdoZXJlIHRoaXMgcmV2aWV3IHNob3VsZCBiZSBzaG93bi48L3A+CiAgPD9waHAgc2l0ZV9jaGVja2JveGVzKCRjaGVja2VkKTsgPz4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjYXJkIj4KICA8YnV0dG9uIGNsYXNzPSJidG4iIHR5cGU9InN1Ym1pdCI+PD89ICRpZCA/ICdTYXZlIGNoYW5nZXMnIDogJ0NyZWF0ZSByZXZpZXcnID8+PC9idXR0b24+CjwvZGl2Pgo8L2Zvcm0+Cjw/cGhwIGFkbWluX2Zvb3QoKTsgPz4K', 'admin/reviews.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2xheW91dC5waHAnOwoKJHNpdGVJZCA9IChpbnQpZV9nZXQoJ3NpdGUnKTsKJHFzICAgICA9ICRzaXRlSWQgPyAnJmFtcDtzaXRlPScgLiAkc2l0ZUlkIDogJyc7CiRiYWNrICAgPSAncmV2aWV3cy5waHAnIC4gKCRzaXRlSWQgPyAnP3NpdGU9JyAuICRzaXRlSWQgOiAnJyk7CgokZ3VhcmQgPSBmdW5jdGlvbiAoKSB7CiAgICBpZiAoZW1wdHkoJF9HRVRbJ2NzcmYnXSkgfHwgIWhhc2hfZXF1YWxzKGNzcmZfdG9rZW4oKSwgKHN0cmluZykkX0dFVFsnY3NyZiddKSkgewogICAgICAgIGh0dHBfcmVzcG9uc2VfY29kZSg0MDApOwogICAgICAgIGRpZSgnSW52YWxpZCBzZWN1cml0eSB0b2tlbi4nKTsKICAgIH0KfTsKCmZvcmVhY2ggKFsnYXBwcm92ZScgPT4gMSwgJ3VuYXBwcm92ZScgPT4gMF0gYXMgJGFjdGlvbiA9PiAkZmxhZykgewogICAgaWYgKCR2ID0gZV9nZXQoJGFjdGlvbikpIHsKICAgICAgICAkZ3VhcmQoKTsKICAgICAgICBkYigpLT5wcmVwYXJlKCJVUERBVEUgcmV2aWV3cyBTRVQgaXNfYXBwcm92ZWQgPSA/IFdIRVJFIGlkID0gPyIpLT5leGVjdXRlKFskZmxhZywgKGludCkkdl0pOwogICAgICAgIGZsYXNoKCdvaycsICRmbGFnID8gJ1JldmlldyBwdWJsaXNoZWQuJyA6ICdSZXZpZXcgdGFrZW4gZG93bi4nKTsKICAgICAgICByZWRpcmVjdCgkYmFjayk7CiAgICB9Cn0KCmlmICgkZGVsID0gZV9nZXQoJ2RlbGV0ZScpKSB7CiAgICAkZ3VhcmQoKTsKICAgICRzdCA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCBpbWFnZV9wYXRoIEZST00gcmV2aWV3cyBXSEVSRSBpZCA9ID8iKTsKICAgICRzdC0+ZXhlY3V0ZShbKGludCkkZGVsXSk7CiAgICBpZiAoJHIgPSAkc3QtPmZldGNoKCkpIHsKICAgICAgICAvLyBzaGFyZWQgc3RvY2sgaW1hZ2VzIChyZXZpZXcxLnBuZyAuLi4gcmV2aWV3MTEucG5nKSBhcmUgbmV2ZXIgcmVtb3ZlZCBmcm9tIGRpc2sKICAgICAgICBpZiAoJHJbJ2ltYWdlX3BhdGgnXSAmJiAhcHJlZ19tYXRjaCgnL15yZXZpZXdcZCtcLnBuZyQvJywgJHJbJ2ltYWdlX3BhdGgnXSkpIHsKICAgICAgICAgICAgJGYgPSBfX0RJUl9fIC4gJy8uLi91cGxvYWRzL3ZlaGljbGVzLycgLiBiYXNlbmFtZSgkclsnaW1hZ2VfcGF0aCddKTsKICAgICAgICAgICAgaWYgKGlzX2ZpbGUoJGYpKSBAdW5saW5rKCRmKTsKICAgICAgICB9CiAgICB9CiAgICBkYigpLT5wcmVwYXJlKCJERUxFVEUgRlJPTSByZXZpZXdzIFdIRVJFIGlkID0gPyIpLT5leGVjdXRlKFsoaW50KSRkZWxdKTsKICAgIGZsYXNoKCdvaycsICdSZXZpZXcgZGVsZXRlZC4nKTsKICAgIHJlZGlyZWN0KCRiYWNrKTsKfQoKaWYgKCRzaXRlSWQpIHsKICAgICRzdCA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCByLiogRlJPTSByZXZpZXdzIHIKICAgICAgICAgICAgICAgICAgICAgICAgIEpPSU4gcmV2aWV3X3NpdGVzIHJzIE9OIHJzLnJldmlld19pZCA9IHIuaWQKICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHJzLnNpdGVfaWQgPSA/CiAgICAgICAgICAgICAgICAgICAgICAgICBPUkRFUiBCWSByLmlzX2FwcHJvdmVkIEFTQywgci5jcmVhdGVkX2F0IERFU0MgTElNSVQgMzAwIik7CiAgICAkc3QtPmV4ZWN1dGUoWyRzaXRlSWRdKTsKfSBlbHNlIHsKICAgICRzdCA9IGRiKCktPnF1ZXJ5KCJTRUxFQ1Qgci4qIEZST00gcmV2aWV3cyByIE9SREVSIEJZIHIuaXNfYXBwcm92ZWQgQVNDLCByLmNyZWF0ZWRfYXQgREVTQyBMSU1JVCAzMDAiKTsKfQokcmV2aWV3cyA9ICRzdC0+ZmV0Y2hBbGwoKTsKCi8vIHdoaWNoIHNpdGVzIGVhY2ggcmV2aWV3IGlzIHNob3duIG9uLCBpbiBvbmUgcXVlcnkKJG1hcCA9IFtdOwppZiAoJHJldmlld3MpIHsKICAgICRpZHMgPSBpbXBsb2RlKCcsJywgYXJyYXlfbWFwKGZuKCRyKSA9PiAoaW50KSRyWydpZCddLCAkcmV2aWV3cykpOwogICAgZm9yZWFjaCAoZGIoKS0+cXVlcnkoIlNFTEVDVCBycy5yZXZpZXdfaWQsIHMuY29tcGFueV9uYW1lIEZST00gcmV2aWV3X3NpdGVzIHJzCiAgICAgICAgICAgICAgICAgICAgICAgICAgSk9JTiBzaXRlcyBzIE9OIHMuaWQgPSBycy5zaXRlX2lkCiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnMucmV2aWV3X2lkIElOICgkaWRzKSBPUkRFUiBCWSBzLmNvbXBhbnlfbmFtZSIpLT5mZXRjaEFsbCgpIGFzICRyKSB7CiAgICAgICAgJG1hcFsoaW50KSRyWydyZXZpZXdfaWQnXV1bXSA9ICRyWydjb21wYW55X25hbWUnXTsKICAgIH0KfQoKJHBlbmRpbmcgPSAoaW50KWRiKCktPnF1ZXJ5KCJTRUxFQ1QgQ09VTlQoKikgYyBGUk9NIHJldmlld3MgV0hFUkUgaXNfYXBwcm92ZWQgPSAwIiktPmZldGNoKClbJ2MnXTsKCmFkbWluX2hlYWQoJ1Jldmlld3MnKTsKYWRtaW5fdG9wYmFyKCdSZXZpZXdzJywgJzxhIGhyZWY9InJldmlld19mb3JtLnBocCIgY2xhc3M9ImJ0biI+KyBBZGQgcmV2aWV3PC9hPicpOwo/Pgo8ZGl2IGNsYXNzPSJjYXJkIj4KICA8Zm9ybSBtZXRob2Q9ImdldCIgY2xhc3M9ImZpbHRlcnMiPgogICAgPHNlbGVjdCBuYW1lPSJzaXRlIiBvbmNoYW5nZT0idGhpcy5mb3JtLnN1Ym1pdCgpIj4KICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5BbGwgc2l0ZXM8L29wdGlvbj4KICAgICAgPD9waHAgZm9yZWFjaCAoYWxsX3NpdGVzKCkgYXMgJHMpOiA/PgogICAgICAgIDxvcHRpb24gdmFsdWU9Ijw/PSAoaW50KSRzWydpZCddID8+IiA8Pz0gJHNpdGVJZCA9PT0gKGludCkkc1snaWQnXSA/ICdzZWxlY3RlZCcgOiAnJyA/Pj48Pz0gaCgkc1snY29tcGFueV9uYW1lJ10pID8+PC9vcHRpb24+CiAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICA8L3NlbGVjdD4KICAgIDw/cGhwIGlmICgkcGVuZGluZyk6ID8+PHNwYW4gY2xhc3M9Im11dGVkIj48Pz0gJHBlbmRpbmcgPz4gcGVuZGluZyBhY3Jvc3MgdGhlIHBsYXRmb3JtPC9zcGFuPjw/cGhwIGVuZGlmOyA/PgogICAgPG5vc2NyaXB0PjxidXR0b24gY2xhc3M9ImJ0biBzbWFsbCIgdHlwZT0ic3VibWl0Ij5GaWx0ZXI8L2J1dHRvbj48L25vc2NyaXB0PgogIDwvZm9ybT4KCiAgPHRhYmxlPgogICAgPHRyPjx0aD5EYXRlPC90aD48dGg+QXV0aG9yPC90aD48dGg+UmF0aW5nPC90aD48dGg+Q29udGVudDwvdGg+PHRoPlNob3duIG9uPC90aD48dGg+U3RhdHVzPC90aD48dGg+PC90aD48L3RyPgogICAgPD9waHAgZm9yZWFjaCAoJHJldmlld3MgYXMgJHIpOiAkc2l0ZXNPZiA9ICRtYXBbKGludCkkclsnaWQnXV0gPz8gW107ID8+CiAgICA8dHI8Pz0gJHJbJ2lzX2FwcHJvdmVkJ10gPyAnJyA6ICcgY2xhc3M9InVucmVhZCInID8+PgogICAgICA8dGQgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+PD89IGgoZGF0ZSgnZCBNIFknLCBzdHJ0b3RpbWUoJHJbJ2NyZWF0ZWRfYXQnXSkpKSA/PjwvdGQ+CiAgICAgIDx0ZD48Pz0gaCgkclsnYXV0aG9yX25hbWUnXSkgPz48L3RkPgogICAgICA8dGQgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+PD89IHN0cl9yZXBlYXQoJ+KYhScsIChpbnQpJHJbJ3JhdGluZyddKSAuIHN0cl9yZXBlYXQoJ+KYhicsIDUgLSAoaW50KSRyWydyYXRpbmcnXSkgPz48L3RkPgogICAgICA8dGQ+PGRpdiBjbGFzcz0ibXNnYm94Ij48Pz0gaCgkclsnY29udGVudCddKSA/PjwvZGl2PjwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICA8ZGl2IGNsYXNzPSJwaWxscm93Ij4KICAgICAgICAgIDw/cGhwIGlmICgkc2l0ZXNPZik6IGZvcmVhY2ggKCRzaXRlc09mIGFzICRuKTogPz48c3BhbiBjbGFzcz0icCI+PD89IGgoJG4pID8+PC9zcGFuPjw/cGhwIGVuZGZvcmVhY2g7CiAgICAgICAgICAgICAgICBlbHNlOiA/PjxzcGFuIGNsYXNzPSJwIG5vbmUiPm5vIHNpdGU8L3NwYW4+PD9waHAgZW5kaWY7ID8+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD48c3BhbiBjbGFzcz0iYmFkZ2UgPD89ICRyWydpc19hcHByb3ZlZCddID8gJ2F2YWlsYWJsZScgOiAncmVzZXJ2ZWQnID8+Ij48Pz0gJHJbJ2lzX2FwcHJvdmVkJ10gPyAnUHVibGlzaGVkJyA6ICdQZW5kaW5nJyA/Pjwvc3Bhbj48L3RkPgogICAgICA8dGQgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+CiAgICAgICAgPGEgY2xhc3M9ImJ0biBzbWFsbCBzZWNvbmRhcnkiIGhyZWY9InJldmlld19mb3JtLnBocD9pZD08Pz0gKGludCkkclsnaWQnXSA/PiI+RWRpdDwvYT4KICAgICAgICA8P3BocCBpZiAoJHJbJ2lzX2FwcHJvdmVkJ10pOiA/PgogICAgICAgICAgPGEgY2xhc3M9ImJ0biBzbWFsbCBzZWNvbmRhcnkiIGhyZWY9InJldmlld3MucGhwP3VuYXBwcm92ZT08Pz0gKGludCkkclsnaWQnXSA/PiZhbXA7Y3NyZj08Pz0gaChjc3JmX3Rva2VuKCkpID8+PD89ICRxcyA/PiI+VGFrZSBkb3duPC9hPgogICAgICAgIDw/cGhwIGVsc2U6ID8+CiAgICAgICAgICA8YSBjbGFzcz0iYnRuIHNtYWxsIiBocmVmPSJyZXZpZXdzLnBocD9hcHByb3ZlPTw/PSAoaW50KSRyWydpZCddID8+JmFtcDtjc3JmPTw/PSBoKGNzcmZfdG9rZW4oKSkgPz48Pz0gJHFzID8+Ij5QdWJsaXNoPC9hPgogICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgIDxhIGNsYXNzPSJidG4gc21hbGwgZGFuZ2VyIiBocmVmPSJyZXZpZXdzLnBocD9kZWxldGU9PD89IChpbnQpJHJbJ2lkJ10gPz4mYW1wO2NzcmY9PD89IGgoY3NyZl90b2tlbigpKSA/Pjw/PSAkcXMgPz4iIG9uY2xpY2s9InJldHVybiBjb25maXJtKCdEZWxldGUgdGhpcyByZXZpZXc/JykiPkRlbGV0ZTwvYT4KICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogICAgPD9waHAgaWYgKCEkcmV2aWV3cyk6ID8+PHRyPjx0ZCBjb2xzcGFuPSI3Ij5ObyByZXZpZXdzLiA8YSBocmVmPSJyZXZpZXdfZm9ybS5waHAiPkFkZCBvbmU8L2E+LjwvdGQ+PC90cj48P3BocCBlbmRpZjsgPz4KICA8L3RhYmxlPgo8L2Rpdj4KPD9waHAgYWRtaW5fZm9vdCgpOyA/Pgo=', 'admin/satellite_download.php' => 'PD9waHAKLyoqCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICBTQVRFTExJVEUgRklMRSBET1dOTE9BRCAgLS0gIGFkbWluL3NhdGVsbGl0ZV9kb3dubG9hZC5waHAKICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogIEJ1aWxkcyB0aGUgc2F0ZWxsaXRlJ3MgaW5kZXgucGhwLCBhbHJlYWR5IGZpbGxlZCBpbiB3aXRoOgogKiAgICAtIEFETUlOX1JPT1QgICAgID0gdGhpcyBhZG1pbidzIGFkZHJlc3MKICogICAgLSBBUElfS0VZICAgICAgICA9IHRoZSBrZXkgcmVhZCBmcm9tIGFwaS9fYXBpX2luYy5waHAKICogICAgLSBTQVRfQ0hFQ0tfS0VZICA9IGEgZGlhZ25vc3RpYyBrZXksIHVuaXF1ZSBhbmQgc3RhYmxlIHBlciBkb21haW4KICoKICogIFVzYWdlOgogKiAgICBzYXRlbGxpdGVfZG93bmxvYWQucGhwP2lkPTUgICAgICAgICAgLT4gemlwIGFyY2hpdmUgKGluZGV4LnBocCArIC5odGFjY2VzcykKICogICAgc2F0ZWxsaXRlX2Rvd25sb2FkLnBocD9pZD01Jm9ubHk9cGhwIC0+IGluZGV4LnBocCBvbmx5CiAqICAgIHNhdGVsbGl0ZV9kb3dubG9hZC5waHA/aWQ9NSZnbz10ZXN0ICAtPiBvcGVucyB0aGF0IHNhdGVsbGl0ZSdzIGNoZWNrIHBhZ2UKICoKICogIFRlbXBsYXRlcyBsaXZlIGluIGFkbWluL19zYXRlbGxpdGUvIGFuZCBhcmUgbm90IHJlYWNoYWJsZSBmcm9tIGEgYnJvd3Nlci4KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICovCgpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvLi4vY29yZS9ib290c3RyYXAucGhwJzsKQXV0aDo6cmVxdWlyZVJvbGUoJ3N1cGVyX2FkbWluJyk7CgovKiogQSBzYXRlbGxpdGUncyBkaWFnbm9zdGljIGtleTogZGVyaXZlZCBmcm9tIEFQSV9LRVkgKyBkb21haW4uCiAqICBTdGFibGUgYWNyb3NzIGRvd25sb2FkcywgYW5kIGRpZmZlcmVudCBmb3IgZXZlcnkgc2l0ZS4gKi8KZnVuY3Rpb24gc2F0X2NoZWNrX2tleSgkYXBpS2V5LCAkZG9tYWluKSB7CiAgICByZXR1cm4gc3Vic3RyKGhhc2goJ3NoYTI1NicsICRhcGlLZXkgLiAnfHNhdGNoZWNrfCcgLiBzdHJ0b2xvd2VyKCRkb21haW4pKSwgMCwgMjQpOwp9CgovKiogUmVhZHMgYSBjb25zdGFudCBvdXQgb2YgYXBpL19hcGlfaW5jLnBocCB3aXRob3V0IGluY2x1ZGluZyB0aGUgZmlsZQogKiAgKGluY2x1ZGluZyBpdCB3b3VsZCByZWRlZmluZSBEQl9OQU1FL0RCX1VTRVIgYW5kIGNhdXNlIGEgZmF0YWwgZXJyb3IpLiAqLwpmdW5jdGlvbiByZWFkX2FwaV9jb25zdCgkbmFtZSkgewogICAgJGYgPSBfX0RJUl9fIC4gJy8uLi9hcGkvX2FwaV9pbmMucGhwJzsKICAgIGlmICghaXNfZmlsZSgkZikpIHJldHVybiBudWxsOwogICAgJHNyYyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmKTsKICAgIGlmIChwcmVnX21hdGNoKCIvZGVmaW5lXChccyonIiAuIHByZWdfcXVvdGUoJG5hbWUsICcvJykgLiAiJ1xzKixccyonKFteJ10qKSdccypcKVxzKjsvIiwgJHNyYywgJG0pKSB7CiAgICAgICAgcmV0dXJuICRtWzFdOwogICAgfQogICAgcmV0dXJuIG51bGw7Cn0KCiRpZCA9IChpbnQpKCRfR0VUWydpZCddID8/IDApOwokc3RtdCA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCBpZCwgZG9tYWluLCBjb21wYW55X25hbWUgRlJPTSBzaXRlcyBXSEVSRSBpZCA9ID8gTElNSVQgMSIpOwokc3RtdC0+ZXhlY3V0ZShbJGlkXSk7CiRzaXRlID0gJHN0bXQtPmZldGNoKCk7CgppZiAoISRzaXRlKSB7CiAgICBmbGFzaCgnZXJyJywgJ1NpdGUgbm90IGZvdW5kLicpOwogICAgcmVkaXJlY3QoJ3NpdGVzLnBocCcpOwp9CgokYXBpS2V5ID0gcmVhZF9hcGlfY29uc3QoJ0FQSV9LRVknKTsKaWYgKCEkYXBpS2V5IHx8IHN0cmxlbigkYXBpS2V5KSA8IDIwKSB7CiAgICBmbGFzaCgnZXJyJywgJ0FQSV9LRVkgaXMgbm90IHNldCBpbiBhcGkvX2FwaV9pbmMucGhwLiBQdXQgYSBsb25nIHJhbmRvbSBrZXkgdGhlcmUgZmlyc3QuJyk7CiAgICByZWRpcmVjdCgnc2l0ZXMucGhwJyk7Cn0KCiR0cGxEaXIgPSBfX0RJUl9fIC4gJy9fc2F0ZWxsaXRlJzsKJHRwbFBocCA9ICR0cGxEaXIgLiAnL2luZGV4LnBocC50cGwnOwppZiAoIWlzX2ZpbGUoJHRwbFBocCkpIHsKICAgIGZsYXNoKCdlcnInLCAnTWlzc2luZyB0ZW1wbGF0ZSBhZG1pbi9fc2F0ZWxsaXRlL2luZGV4LnBocC50cGwuJyk7CiAgICByZWRpcmVjdCgnc2l0ZXMucGhwJyk7Cn0KCiRzY2hlbWUgICAgPSAoIWVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSAhPT0gJ29mZicpID8gJ2h0dHBzJyA6ICdodHRwJzsKJGFkbWluUm9vdCA9ICRzY2hlbWUgLiAnOi8vJyAuICgkX1NFUlZFUlsnSFRUUF9IT1NUJ10gPz8gJ2xvY2FsaG9zdCcpIC4gJy8nOwokY2hlY2tLZXkgID0gc2F0X2NoZWNrX2tleSgkYXBpS2V5LCAkc2l0ZVsnZG9tYWluJ10pOwoKJGluZGV4U3JjID0gc3RydHIoZmlsZV9nZXRfY29udGVudHMoJHRwbFBocCksIFsKICAgICd7e0FETUlOX1JPT1R9fScgICAgPT4gJGFkbWluUm9vdCwKICAgICd7e0FQSV9LRVl9fScgICAgICAgPT4gJGFwaUtleSwKICAgICd7e1NBVF9DSEVDS19LRVl9fScgPT4gJGNoZWNrS2V5LApdKTsKCi8vICJUZXN0IiBidXR0b24gaW4gdGhlIGxpc3Q6IGdvIHN0cmFpZ2h0IHRvIHRoZSBzYXRlbGxpdGUncyBjaGVjayBwYWdlCmlmICgoJF9HRVRbJ2dvJ10gPz8gJycpID09PSAndGVzdCcpIHsKICAgIHJlZGlyZWN0KCRzY2hlbWUgLiAnOi8vJyAuICRzaXRlWydkb21haW4nXSAuICcvP19fc2F0Y2hlY2s9JyAuICRjaGVja0tleSk7Cn0KCi8vIGZyaWVuZGx5IGZpbGUgbmFtZSwgZGVyaXZlZCBmcm9tIHRoZSBkb21haW4KJHNhZmUgPSBwcmVnX3JlcGxhY2UoJy9bXmEtejAtOS4tXSsvaScsICctJywgJHNpdGVbJ2RvbWFpbiddKTsKJHNhZmUgPSB0cmltKCRzYWZlLCAnLScpID86ICdzYXRlbGxpdGUnOwoKJG9ubHlQaHAgPSAoKCRfR0VUWydvbmx5J10gPz8gJycpID09PSAncGhwJyk7CgppZiAoISRvbmx5UGhwICYmIGNsYXNzX2V4aXN0cygnWmlwQXJjaGl2ZScpKSB7CiAgICAkaHRhY2Nlc3MgPSBpc19maWxlKCR0cGxEaXIgLiAnL2h0YWNjZXNzLnRwbCcpID8gZmlsZV9nZXRfY29udGVudHMoJHRwbERpciAuICcvaHRhY2Nlc3MudHBsJykgOiAnJzsKICAgICRyZWFkbWUgPQogICAgICAgICJTQVRFTExJVEU6IHskc2l0ZVsnY29tcGFueV9uYW1lJ119ICh7JHNpdGVbJ2RvbWFpbiddfSlcbiIKICAgICAgLiBzdHJfcmVwZWF0KCc9JywgNjApIC4gIlxuXG4iCiAgICAgIC4gIjEuIEV4dHJhY3QgYm90aCBmaWxlcyBpbnRvIHB1YmxpY19odG1sIG9mIHRoZSBkb21haW4geyRzaXRlWydkb21haW4nXX1cbiIKICAgICAgLiAiICAgWW91IHNob3VsZCBlbmQgdXAgd2l0aDogIHB1YmxpY19odG1sL2luZGV4LnBocCAgYW5kICBwdWJsaWNfaHRtbC8uaHRhY2Nlc3NcbiIKICAgICAgLiAiICAgLmh0YWNjZXNzIHN0YXJ0cyB3aXRoIGEgZG90LCBzbyBpdCBpcyBoaWRkZW4uIEluIGNQYW5lbCBGaWxlIE1hbmFnZXJcbiIKICAgICAgLiAiICAgdHVybiBvbiBTZXR0aW5ncyA+IFNob3cgSGlkZGVuIEZpbGVzIHRvIHNlZSBpdC5cblxuIgogICAgICAuICIyLiBFbmFibGUgU1NMIGZvciB0aGUgZG9tYWluOiBjUGFuZWwgPiBTU0wvVExTIFN0YXR1cyA+IEF1dG9TU0xcblxuIgogICAgICAuICIzLiBDaGVjayB0aGUgY29ubmVjdGlvbiB0byB0aGUgYWRtaW46XG4iCiAgICAgIC4gIiAgIHskc2NoZW1lfTovL3skc2l0ZVsnZG9tYWluJ119Lz9fX3NhdGNoZWNrPXskY2hlY2tLZXl9XG5cbiIKICAgICAgLiAiWW91IGRvIE5PVCBuZWVkIHRvIGVkaXQgYW55dGhpbmcgaW4gaW5kZXgucGhwLiBUaGUga2V5cyBhcmUgYWxyZWFkeSBzZXQuXG4iCiAgICAgIC4gIlRoZSBzYW1lIGZpbGUgd29ya3Mgb24gYW55IHNhdGVsbGl0ZTsgaXQgaWRlbnRpZmllcyBpdHNlbGYgYnkgdGhlIGRvbWFpbi5cblxuIgogICAgICAuICJHZW5lcmF0ZWQ6ICIgLiBkYXRlKCdZLW0tZCBIOmk6cycpIC4gIlxuIjsKCiAgICAkdG1wID0gdGVtcG5hbShzeXNfZ2V0X3RlbXBfZGlyKCksICdzYXQnKTsKICAgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpOwogICAgaWYgKCR6aXAtPm9wZW4oJHRtcCwgWmlwQXJjaGl2ZTo6T1ZFUldSSVRFKSA9PT0gdHJ1ZSkgewogICAgICAgICR6aXAtPmFkZEZyb21TdHJpbmcoJ2luZGV4LnBocCcsICRpbmRleFNyYyk7CiAgICAgICAgaWYgKCRodGFjY2VzcyAhPT0gJycpICR6aXAtPmFkZEZyb21TdHJpbmcoJy5odGFjY2VzcycsICRodGFjY2Vzcyk7CiAgICAgICAgJHppcC0+YWRkRnJvbVN0cmluZygnUkVBRC1NRS50eHQnLCAkcmVhZG1lKTsKICAgICAgICAkemlwLT5jbG9zZSgpOwoKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vemlwJyk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0ic2F0ZWxsaXRlLScgLiAkc2FmZSAuICcuemlwIicpOwogICAgICAgIGhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBmaWxlc2l6ZSgkdG1wKSk7CiAgICAgICAgaGVhZGVyKCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3NuaWZmJyk7CiAgICAgICAgcmVhZGZpbGUoJHRtcCk7CiAgICAgICAgQHVubGluaygkdG1wKTsKICAgICAgICBleGl0OwogICAgfQogICAgQHVubGluaygkdG1wKTsKfQoKLy8gbm8gWmlwQXJjaGl2ZSAob3IgZXhwbGljaXRseSByZXF1ZXN0ZWQpOiBzZXJ2ZSBpbmRleC5waHAgb24gaXRzIG93bgpoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7CmhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ImluZGV4LnBocCInKTsKaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIHN0cmxlbigkaW5kZXhTcmMpKTsKaGVhZGVyKCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3NuaWZmJyk7CmVjaG8gJGluZGV4U3JjOwo=', 'admin/site_delete.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwoKaWYgKGVtcHR5KCRfR0VUWydjc3JmJ10pIHx8ICFoYXNoX2VxdWFscyhjc3JmX3Rva2VuKCksIChzdHJpbmcpJF9HRVRbJ2NzcmYnXSkpIHsKICAgIGh0dHBfcmVzcG9uc2VfY29kZSg0MDApOwogICAgZGllKCdJbnZhbGlkIHNlY3VyaXR5IHRva2VuLicpOwp9CgokaWQgPSAoaW50KWVfZ2V0KCdpZCcpOwokc3QgPSBkYigpLT5wcmVwYXJlKCJTRUxFQ1QgY29tcGFueV9uYW1lLCBsb2dvX3BhdGggRlJPTSBzaXRlcyBXSEVSRSBpZCA9ID8gTElNSVQgMSIpOwokc3QtPmV4ZWN1dGUoWyRpZF0pOwokc2l0ZSA9ICRzdC0+ZmV0Y2goKTsKaWYgKCEkc2l0ZSkgeyBmbGFzaCgnZXJyJywgJ1NpdGUgbm90IGZvdW5kLicpOyByZWRpcmVjdCgnc2l0ZXMucGhwJyk7IH0KCi8vIHRoZSBsb2dvIGZpbGUgb24gZGlzawppZiAoIWVtcHR5KCRzaXRlWydsb2dvX3BhdGgnXSkpIHsKICAgICRmID0gX19ESVJfXyAuICcvLi4vdXBsb2Fkcy9sb2dvcy8nIC4gYmFzZW5hbWUoJHNpdGVbJ2xvZ29fcGF0aCddKTsKICAgIGlmIChpc19maWxlKCRmKSkgQHVubGluaygkZik7Cn0KCi8vIFZlaGljbGVzIGFuZCByZXZpZXdzIHN0YXkgaW4gcGxhY2U7IG9ubHkgdGhlaXIgbGlua3MgdG8gdGhpcyBzaXRlIGdvIGF3YXkKLy8gKHZlaGljbGVfc2l0ZXMgYW5kIHJldmlld19zaXRlcyBoYXZlIE9OIERFTEVURSBDQVNDQURFKSwgYWxvbmcgd2l0aCB0aGlzCi8vIHNpdGUncyBvd24gbWVzc2FnZXMuCmRiKCktPnByZXBhcmUoIkRFTEVURSBGUk9NIHNpdGVzIFdIRVJFIGlkID0gPyIpLT5leGVjdXRlKFskaWRdKTsKCmZsYXNoKCdvaycsICdTaXRlICInIC4gJHNpdGVbJ2NvbXBhbnlfbmFtZSddIC4gJyIgaGFzIGJlZW4gZGVsZXRlZC4gSXRzIHZlaGljbGVzIGFuZCByZXZpZXdzIHJlbWFpbiBpbiB0aGUgcGFuZWwuJyk7CnJlZGlyZWN0KCdzaXRlcy5waHAnKTsK', 'admin/site_form.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2xheW91dC5waHAnOwoKJGlkID0gKGludCllX2dldCgnaWQnKTsKJHNpdGUgPSBudWxsOwoKaWYgKCRpZCkgewogICAgJHN0ID0gZGIoKS0+cHJlcGFyZSgiU0VMRUNUICogRlJPTSBzaXRlcyBXSEVSRSBpZCA9ID8gTElNSVQgMSIpOwogICAgJHN0LT5leGVjdXRlKFskaWRdKTsKICAgICRzaXRlID0gJHN0LT5mZXRjaCgpOwogICAgaWYgKCEkc2l0ZSkgeyBmbGFzaCgnZXJyJywgJ1NpdGUgbm90IGZvdW5kLicpOyByZWRpcmVjdCgnc2l0ZXMucGhwJyk7IH0KfQoKaWYgKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09PSAnUE9TVCcpIHsKICAgIGNzcmZfY2hlY2soKTsKCiAgICAkZG9tYWluID0gc3RydG9sb3dlcih0cmltKGVfcG9zdCgnZG9tYWluJykpKTsKICAgICRkb21haW4gPSBwcmVnX3JlcGxhY2UoJyNeaHR0cHM/Oi8vI2knLCAnJywgJGRvbWFpbik7CiAgICAkZG9tYWluID0gcHJlZ19yZXBsYWNlKCcjXnd3d1wuIycsICcnLCAkZG9tYWluKTsKICAgICRkb21haW4gPSBwcmVnX3JlcGxhY2UoJyNbLzpdLiokIycsICcnLCAkZG9tYWluKTsKCiAgICAkY29tcGFueSA9IGVfcG9zdCgnY29tcGFueV9uYW1lJyk7CgogICAgaWYgKCRkb21haW4gPT09ICcnIHx8ICRjb21wYW55ID09PSAnJykgewogICAgICAgIGZsYXNoKCdlcnInLCAnRG9tYWluIGFuZCBjb21wYW55IG5hbWUgYXJlIHJlcXVpcmVkLicpOwogICAgfSBlbHNlIHsKICAgICAgICAkZHVwID0gZGIoKS0+cHJlcGFyZSgiU0VMRUNUIGlkIEZST00gc2l0ZXMgV0hFUkUgZG9tYWluID0gPyIgLiAoJGlkID8gIiBBTkQgaWQgPD4gPyIgOiAiIikgLiAiIExJTUlUIDEiKTsKICAgICAgICAkZHVwLT5leGVjdXRlKCRpZCA/IFskZG9tYWluLCAkaWRdIDogWyRkb21haW5dKTsKCiAgICAgICAgaWYgKCRkdXAtPmZldGNoKCkpIHsKICAgICAgICAgICAgZmxhc2goJ2VycicsICdEb21haW4gIicgLiAkZG9tYWluIC4gJyIgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgc2l0ZS4nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZmllbGRzID0gWwogICAgICAgICAgICAgICAgJ2RvbWFpbicgICAgICAgICAgICAgPT4gJGRvbWFpbiwKICAgICAgICAgICAgICAgICdjb21wYW55X25hbWUnICAgICAgID0+ICRjb21wYW55LAogICAgICAgICAgICAgICAgJ2NvbXBhbnlfc2hvcnRfbmFtZScgPT4gZV9wb3N0KCdjb21wYW55X3Nob3J0X25hbWUnKSwKICAgICAgICAgICAgICAgICdjb21wYW55X251bWJlcicgICAgID0+IGVfcG9zdCgnY29tcGFueV9udW1iZXInKSwKICAgICAgICAgICAgICAgICd5ZWFyX2ZvdW5kZWQnICAgICAgID0+IGVfcG9zdCgneWVhcl9mb3VuZGVkJykgIT09ICcnID8gKGludCllX3Bvc3QoJ3llYXJfZm91bmRlZCcpIDogbnVsbCwKICAgICAgICAgICAgICAgICd0aGVtZV9jb2xvcicgICAgICAgID0+IHByZWdfbWF0Y2goJy9eI1swLTlhLWZBLUZdezZ9JC8nLCBlX3Bvc3QoJ3RoZW1lX2NvbG9yJykpID8gZV9wb3N0KCd0aGVtZV9jb2xvcicpIDogJyMwZDZlZmQnLAogICAgICAgICAgICAgICAgJ2NvbnRhY3RfZW1haWwnICAgICAgPT4gZV9wb3N0KCdjb250YWN0X2VtYWlsJyksCiAgICAgICAgICAgICAgICAnY29udGFjdF9waG9uZScgICAgICA9PiBlX3Bvc3QoJ2NvbnRhY3RfcGhvbmUnKSwKICAgICAgICAgICAgICAgICdhZGRyZXNzX2xpbmUxJyAgICAgID0+IGVfcG9zdCgnYWRkcmVzc19saW5lMScpLAogICAgICAgICAgICAgICAgJ2FkZHJlc3NfbGluZTInICAgICAgPT4gZV9wb3N0KCdhZGRyZXNzX2xpbmUyJyksCiAgICAgICAgICAgICAgICAnY2l0eScgICAgICAgICAgICAgICA9PiBlX3Bvc3QoJ2NpdHknKSwKICAgICAgICAgICAgICAgICdwb3N0Y29kZScgICAgICAgICAgID0+IGVfcG9zdCgncG9zdGNvZGUnKSwKICAgICAgICAgICAgICAgICdjb3VudHJ5JyAgICAgICAgICAgID0+IGVfcG9zdCgnY291bnRyeScpICE9PSAnJyA/IGVfcG9zdCgnY291bnRyeScpIDogJ1VuaXRlZCBLaW5nZG9tJywKICAgICAgICAgICAgICAgICdpc19hY3RpdmUnICAgICAgICAgID0+IGlzc2V0KCRfUE9TVFsnaXNfYWN0aXZlJ10pID8gMSA6IDAsCiAgICAgICAgICAgIF07CgogICAgICAgICAgICAkbG9nbyA9IHVwbG9hZF9pbWFnZSgnbG9nbycsIF9fRElSX18gLiAnLy4uL3VwbG9hZHMvbG9nb3MnLCAnbG9nbycpOwogICAgICAgICAgICBpZiAoJGxvZ28pIHsKICAgICAgICAgICAgICAgIGlmICgkc2l0ZSAmJiAhZW1wdHkoJHNpdGVbJ2xvZ29fcGF0aCddKSkgewogICAgICAgICAgICAgICAgICAgICRvbGQgPSBfX0RJUl9fIC4gJy8uLi91cGxvYWRzL2xvZ29zLycgLiBiYXNlbmFtZSgkc2l0ZVsnbG9nb19wYXRoJ10pOwogICAgICAgICAgICAgICAgICAgIGlmIChpc19maWxlKCRvbGQpKSBAdW5saW5rKCRvbGQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGZpZWxkc1snbG9nb19wYXRoJ10gPSAkbG9nbzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRpZCkgewogICAgICAgICAgICAgICAgJHNldCA9IGltcGxvZGUoJywgJywgYXJyYXlfbWFwKGZuKCRrKSA9PiAiJGsgPSA/IiwgYXJyYXlfa2V5cygkZmllbGRzKSkpOwogICAgICAgICAgICAgICAgZGIoKS0+cHJlcGFyZSgiVVBEQVRFIHNpdGVzIFNFVCAkc2V0IFdIRVJFIGlkID0gPyIpLT5leGVjdXRlKFsuLi5hcnJheV92YWx1ZXMoJGZpZWxkcyksICRpZF0pOwogICAgICAgICAgICAgICAgZmxhc2goJ29rJywgJ1NpdGUgdXBkYXRlZC4nKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRjb2xzID0gaW1wbG9kZSgnLCAnLCBhcnJheV9rZXlzKCRmaWVsZHMpKTsKICAgICAgICAgICAgICAgICRwaCAgID0gaW1wbG9kZSgnLCAnLCBhcnJheV9maWxsKDAsIGNvdW50KCRmaWVsZHMpLCAnPycpKTsKICAgICAgICAgICAgICAgIGRiKCktPnByZXBhcmUoIklOU0VSVCBJTlRPIHNpdGVzICgkY29scykgVkFMVUVTICgkcGgpIiktPmV4ZWN1dGUoYXJyYXlfdmFsdWVzKCRmaWVsZHMpKTsKICAgICAgICAgICAgICAgICRpZCA9IChpbnQpZGIoKS0+bGFzdEluc2VydElkKCk7CiAgICAgICAgICAgICAgICBmbGFzaCgnb2snLCAnU2l0ZSBjcmVhdGVkLiBEb3dubG9hZCBpdHMgc2F0ZWxsaXRlIGZpbGUgZnJvbSB0aGUgbGlzdCBhbmQgdXBsb2FkIGl0IHRvIHRoYXQgZG9tYWluXCdzIGhvc3RpbmcuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVkaXJlY3QoJ3NpdGVzLnBocCcpOwogICAgICAgIH0KICAgIH0KfQoKJHZhbCA9IGZ1bmN0aW9uICgkaywgJGQgPSAnJykgdXNlICgkc2l0ZSkgeyByZXR1cm4gJHNpdGVbJGtdID8/ICRkOyB9OwoKYWRtaW5faGVhZCgkaWQgPyAnRWRpdCBzaXRlJyA6ICdOZXcgc2l0ZScpOwphZG1pbl90b3BiYXIoJGlkID8gJ0VkaXQgc2l0ZScgOiAnTmV3IHNpdGUnLCAnPGEgaHJlZj0ic2l0ZXMucGhwIiBjbGFzcz0iYnRuIHNlY29uZGFyeSI+JmxhcnI7IEJhY2sgdG8gc2l0ZXM8L2E+Jyk7Cj8+Cjxmb3JtIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+Cjw/PSBjc3JmX2ZpZWxkKCkgPz4KCjxkaXYgY2xhc3M9ImNhcmQiPgogIDxoMiBzdHlsZT0ibWFyZ2luLXRvcDowO2ZvbnQtc2l6ZToxNnB4Ij5JZGVudGl0eTwvaDI+CiAgPGxhYmVsPkRvbWFpbiAqPC9sYWJlbD4KICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZG9tYWluIiByZXF1aXJlZCB2YWx1ZT0iPD89IGgoJHZhbCgnZG9tYWluJykpID8+IiBwbGFjZWhvbGRlcj0iZXhhbXBsZS1tb3RvcnMuY28udWsiPgogIDxwIGNsYXNzPSJtdXRlZCIgc3R5bGU9Im1hcmdpbjo1cHggMCAwIj5FeGFjdGx5IGFzIGl0IGFwcGVhcnMgaW4gdGhlIGFkZHJlc3MgYmFyLCB3aXRob3V0IGh0dHBzOi8vIGFuZCB3aXRob3V0IHd3dy48L3A+CgogIDxkaXYgY2xhc3M9InJvdzIiPgogICAgPGRpdj48bGFiZWw+Q29tcGFueSBuYW1lICo8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjb21wYW55X25hbWUiIHJlcXVpcmVkIHZhbHVlPSI8Pz0gaCgkdmFsKCdjb21wYW55X25hbWUnKSkgPz4iPjwvZGl2PgogICAgPGRpdj48bGFiZWw+U2hvcnQgbmFtZTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNvbXBhbnlfc2hvcnRfbmFtZSIgdmFsdWU9Ijw/PSBoKCR2YWwoJ2NvbXBhbnlfc2hvcnRfbmFtZScpKSA/PiI+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icm93MiI+CiAgICA8ZGl2PjxsYWJlbD5Db21wYW55IG51bWJlcjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNvbXBhbnlfbnVtYmVyIiB2YWx1ZT0iPD89IGgoJHZhbCgnY29tcGFueV9udW1iZXInKSkgPz4iPjwvZGl2PgogICAgPGRpdj48bGFiZWw+WWVhciBmb3VuZGVkPC9sYWJlbD48aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJ5ZWFyX2ZvdW5kZWQiIG1pbj0iMTkwMCIgbWF4PSIyMTAwIiB2YWx1ZT0iPD89IGgoJHZhbCgneWVhcl9mb3VuZGVkJykpID8+Ij48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJyb3cyIj4KICAgIDxkaXY+PGxhYmVsPlRoZW1lIGNvbG91cjwvbGFiZWw+PGlucHV0IHR5cGU9ImNvbG9yIiBuYW1lPSJ0aGVtZV9jb2xvciIgdmFsdWU9Ijw/PSBoKCR2YWwoJ3RoZW1lX2NvbG9yJywgJyMwZDZlZmQnKSkgPz4iPjwvZGl2PgogICAgPGRpdj4KICAgICAgPGxhYmVsPkxvZ288L2xhYmVsPgogICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0ibG9nbyIgYWNjZXB0PSJpbWFnZS9qcGVnLGltYWdlL3BuZyxpbWFnZS93ZWJwIj4KICAgICAgPD9waHAgaWYgKCR2YWwoJ2xvZ29fcGF0aCcpKTogPz4KICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjhweCI+PGltZyBjbGFzcz0idGh1bWIiIHNyYz0iLi4vdXBsb2Fkcy9sb2dvcy88Pz0gaCgkdmFsKCdsb2dvX3BhdGgnKSkgPz4iIGFsdD0iIj48L2Rpdj4KICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDttYXJnaW4tdG9wOjE0cHgiPgogICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJpc19hY3RpdmUiIHZhbHVlPSIxIiA8Pz0gJHZhbCgnaXNfYWN0aXZlJywgMSkgPyAnY2hlY2tlZCcgOiAnJyA/Pj4KICAgIFNpdGUgYWN0aXZlICh3aGVuIHVudGlja2VkLCB0aGUgZG9tYWluIHNob3dzIGFuIHVuYXZhaWxhYmxlIG1lc3NhZ2UpCiAgPC9sYWJlbD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjYXJkIj4KICA8aDIgc3R5bGU9Im1hcmdpbi10b3A6MDtmb250LXNpemU6MTZweCI+Q29udGFjdCBhbmQgYWRkcmVzczwvaDI+CiAgPHAgY2xhc3M9Im11dGVkIiBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4Ij5TaG93biBwdWJsaWNseSBvbiB0aGUgc2F0ZWxsaXRlIHNpdGUuIEVucXVpcmllcyBmcm9tIHRoYXQgZG9tYWluIGFycml2ZSBhdCB0aGlzIGVtYWlsIGFkZHJlc3MuPC9wPgogIDxkaXYgY2xhc3M9InJvdzIiPgogICAgPGRpdj48bGFiZWw+Q29udGFjdCBlbWFpbDwvbGFiZWw+PGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJjb250YWN0X2VtYWlsIiB2YWx1ZT0iPD89IGgoJHZhbCgnY29udGFjdF9lbWFpbCcpKSA/PiI+PC9kaXY+CiAgICA8ZGl2PjxsYWJlbD5QaG9uZTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNvbnRhY3RfcGhvbmUiIHZhbHVlPSI8Pz0gaCgkdmFsKCdjb250YWN0X3Bob25lJykpID8+Ij48L2Rpdj4KICA8L2Rpdj4KICA8bGFiZWw+QWRkcmVzcyBsaW5lIDE8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJhZGRyZXNzX2xpbmUxIiB2YWx1ZT0iPD89IGgoJHZhbCgnYWRkcmVzc19saW5lMScpKSA/PiI+CiAgPGxhYmVsPkFkZHJlc3MgbGluZSAyPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYWRkcmVzc19saW5lMiIgdmFsdWU9Ijw/PSBoKCR2YWwoJ2FkZHJlc3NfbGluZTInKSkgPz4iPgogIDxkaXYgY2xhc3M9InJvdzIiPgogICAgPGRpdj48bGFiZWw+Q2l0eTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNpdHkiIHZhbHVlPSI8Pz0gaCgkdmFsKCdjaXR5JykpID8+Ij48L2Rpdj4KICAgIDxkaXY+PGxhYmVsPlBvc3Rjb2RlPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icG9zdGNvZGUiIHZhbHVlPSI8Pz0gaCgkdmFsKCdwb3N0Y29kZScpKSA/PiI+PC9kaXY+CiAgPC9kaXY+CiAgPGxhYmVsPkNvdW50cnk8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjb3VudHJ5IiB2YWx1ZT0iPD89IGgoJHZhbCgnY291bnRyeScsICdVbml0ZWQgS2luZ2RvbScpKSA/PiI+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY2FyZCI+CiAgPGJ1dHRvbiBjbGFzcz0iYnRuIiB0eXBlPSJzdWJtaXQiPjw/PSAkaWQgPyAnU2F2ZSBjaGFuZ2VzJyA6ICdDcmVhdGUgc2l0ZScgPz48L2J1dHRvbj4KPC9kaXY+CjwvZm9ybT4KPD9waHAgYWRtaW5fZm9vdCgpOyA/Pgo=', 'admin/sites.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2xheW91dC5waHAnOwoKJHNpdGVzID0gZGIoKS0+cXVlcnkoIlNFTEVDVCBzLiosCiAgICAoU0VMRUNUIENPVU5UKCopIEZST00gdmVoaWNsZV9zaXRlcyB2cyBKT0lOIHZlaGljbGVzIHYgT04gdi5pZCA9IHZzLnZlaGljbGVfaWQKICAgICAgIFdIRVJFIHZzLnNpdGVfaWQgPSBzLmlkIEFORCB2LnN0YXR1cyA8PiAnc29sZCcpIEFTIHZlaGljbGVfY291bnQsCiAgICAoU0VMRUNUIENPVU5UKCopIEZST00gY29udGFjdF9tZXNzYWdlcyBtIFdIRVJFIG0uc2l0ZV9pZCA9IHMuaWQgQU5EIG0uaXNfcmVhZCA9IDApIEFTIHVucmVhZAogIEZST00gc2l0ZXMgcyBPUkRFUiBCWSBzLmNyZWF0ZWRfYXQgREVTQyIpLT5mZXRjaEFsbCgpOwoKYWRtaW5faGVhZCgnU2l0ZXMnKTsKYWRtaW5fdG9wYmFyKCdTaXRlcycsICc8YSBocmVmPSJzaXRlX2Zvcm0ucGhwIiBjbGFzcz0iYnRuIj4rIE5ldyBzaXRlPC9hPicpOwo/Pgo8ZGl2IGNsYXNzPSJjYXJkIj4KPHRhYmxlPgo8dHI+PHRoPkNvbXBhbnk8L3RoPjx0aD5Eb21haW48L3RoPjx0aD5WZWhpY2xlczwvdGg+PHRoPk1lc3NhZ2VzPC90aD48dGg+U3RhdHVzPC90aD48dGg+PC90aD48L3RyPgo8P3BocCBmb3JlYWNoICgkc2l0ZXMgYXMgJHMpOiA/Pgo8dHI+CiAgPHRkPjw/PSBoKCRzWydjb21wYW55X25hbWUnXSkgPz48L3RkPgogIDx0ZD48Pz0gaCgkc1snZG9tYWluJ10pID8+PC90ZD4KICA8dGQ+PD89IChpbnQpJHNbJ3ZlaGljbGVfY291bnQnXSA/PjwvdGQ+CiAgPHRkPD89ICRzWyd1bnJlYWQnXSA/ICcgY2xhc3M9InVucmVhZCInIDogJycgPz4+PD89IChpbnQpJHNbJ3VucmVhZCddID8+PC90ZD4KICA8dGQ+PHNwYW4gY2xhc3M9ImJhZGdlIDw/PSAkc1snaXNfYWN0aXZlJ10gPyAnYXZhaWxhYmxlJyA6ICdzb2xkJyA/PiI+PD89ICRzWydpc19hY3RpdmUnXSA/ICdBY3RpdmUnIDogJ0Rpc2FibGVkJyA/Pjwvc3Bhbj48L3RkPgogIDx0ZCBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj4KICAgIDxhIGNsYXNzPSJidG4gc21hbGwgc2Vjb25kYXJ5IiBocmVmPSJzaXRlX2Zvcm0ucGhwP2lkPTw/PSAoaW50KSRzWydpZCddID8+Ij5FZGl0PC9hPgogICAgPGEgY2xhc3M9ImJ0biBzbWFsbCIgaHJlZj0ic2F0ZWxsaXRlX2Rvd25sb2FkLnBocD9pZD08Pz0gKGludCkkc1snaWQnXSA/PiIKICAgICAgIHRpdGxlPSJEb3dubG9hZCBpbmRleC5waHAgKyAuaHRhY2Nlc3MsIGFscmVhZHkgZmlsbGVkIGluIHdpdGggdGhlIGtleXMsIGZvciA8Pz0gaCgkc1snZG9tYWluJ10pID8+Ij4mIzExMDE1OyBTYXRlbGxpdGU8L2E+CiAgICA8YSBjbGFzcz0iYnRuIHNtYWxsIHNlY29uZGFyeSIgaHJlZj0ic2F0ZWxsaXRlX2Rvd25sb2FkLnBocD9pZD08Pz0gKGludCkkc1snaWQnXSA/PiZhbXA7Z289dGVzdCIgdGFyZ2V0PSJfYmxhbmsiCiAgICAgICB0aXRsZT0iT3BlbiB0aGlzIHNhdGVsbGl0ZSYjMzk7cyBkaWFnbm9zdGljIHBhZ2UiPlRlc3Q8L2E+CiAgICA8YSBjbGFzcz0iYnRuIHNtYWxsIGRhbmdlciIgaHJlZj0ic2l0ZV9kZWxldGUucGhwP2lkPTw/PSAoaW50KSRzWydpZCddID8+JmFtcDtjc3JmPTw/PSBoKGNzcmZfdG9rZW4oKSkgPz4iCiAgICAgICBvbmNsaWNrPSJyZXR1cm4gY29uZmlybSgnUGVybWFuZW50bHkgZGVsZXRlIFwnPD89IGgoYWRkc2xhc2hlcygkc1snY29tcGFueV9uYW1lJ10pKSA/PlwnICg8Pz0gaChhZGRzbGFzaGVzKCRzWydkb21haW4nXSkpID8+KT9cblxuVGhpcyBzaXRlJmFwb3M7cyBtZXNzYWdlcyBhcmUgZGVsZXRlZC4gVmVoaWNsZXMgYW5kIHJldmlld3MgYXJlIE5PVCBkZWxldGVkLCB0aGV5IHNpbXBseSBzdG9wIGFwcGVhcmluZyBvbiB0aGlzIGRvbWFpbi4nKSI+RGVsZXRlPC9hPgogIDwvdGQ+CjwvdHI+Cjw/cGhwIGVuZGZvcmVhY2g7ID8+Cjw/cGhwIGlmICghJHNpdGVzKTogPz48dHI+PHRkIGNvbHNwYW49IjYiPk5vIHNpdGVzIGFkZGVkIHlldC48L3RkPjwvdHI+PD9waHAgZW5kaWY7ID8+CjwvdGFibGU+CjwvZGl2Pgo8P3BocCBhZG1pbl9mb290KCk7ID8+Cg==', 'admin/vehicle_delete.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwoKaWYgKGVtcHR5KCRfR0VUWydjc3JmJ10pIHx8ICFoYXNoX2VxdWFscyhjc3JmX3Rva2VuKCksIChzdHJpbmcpJF9HRVRbJ2NzcmYnXSkpIHsKICAgIGh0dHBfcmVzcG9uc2VfY29kZSg0MDApOwogICAgZGllKCdJbnZhbGlkIHNlY3VyaXR5IHRva2VuLicpOwp9CgokaWQgPSAoaW50KWVfZ2V0KCdpZCcpOwokc3QgPSBkYigpLT5wcmVwYXJlKCJTRUxFQ1QgdGl0bGUgRlJPTSB2ZWhpY2xlcyBXSEVSRSBpZCA9ID8gTElNSVQgMSIpOwokc3QtPmV4ZWN1dGUoWyRpZF0pOwokdiA9ICRzdC0+ZmV0Y2goKTsKaWYgKCEkdikgeyBmbGFzaCgnZXJyJywgJ1ZlaGljbGUgbm90IGZvdW5kLicpOyByZWRpcmVjdCgndmVoaWNsZXMucGhwJyk7IH0KCi8vIHBob3RvcyBvbiBkaXNrICh0aGUgcm93cyBnbyB2aWEgT04gREVMRVRFIENBU0NBREUpCiRpbWdzID0gZGIoKS0+cHJlcGFyZSgiU0VMRUNUIHBhdGggRlJPTSB2ZWhpY2xlX2ltYWdlcyBXSEVSRSB2ZWhpY2xlX2lkID0gPyIpOwokaW1ncy0+ZXhlY3V0ZShbJGlkXSk7CmZvcmVhY2ggKCRpbWdzLT5mZXRjaEFsbChQRE86OkZFVENIX0NPTFVNTikgYXMgJHApIHsKICAgICRmID0gX19ESVJfXyAuICcvLi4vdXBsb2Fkcy92ZWhpY2xlcy8nIC4gYmFzZW5hbWUoJHApOwogICAgaWYgKGlzX2ZpbGUoJGYpKSBAdW5saW5rKCRmKTsKfQoKZGIoKS0+cHJlcGFyZSgiREVMRVRFIEZST00gdmVoaWNsZXMgV0hFUkUgaWQgPSA/IiktPmV4ZWN1dGUoWyRpZF0pOwoKZmxhc2goJ29rJywgJ1ZlaGljbGUgIicgLiAkdlsndGl0bGUnXSAuICciIGhhcyBiZWVuIGRlbGV0ZWQuJyk7CnJlZGlyZWN0KCd2ZWhpY2xlcy5waHAnKTsK', 'admin/vehicle_form.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2xheW91dC5waHAnOwoKJGlkID0gKGludCllX2dldCgnaWQnKTsKJHZlaGljbGUgPSBudWxsOwoKaWYgKCRpZCkgewogICAgJHN0ID0gZGIoKS0+cHJlcGFyZSgiU0VMRUNUICogRlJPTSB2ZWhpY2xlcyBXSEVSRSBpZCA9ID8gTElNSVQgMSIpOwogICAgJHN0LT5leGVjdXRlKFskaWRdKTsKICAgICR2ZWhpY2xlID0gJHN0LT5mZXRjaCgpOwogICAgaWYgKCEkdmVoaWNsZSkgeyBmbGFzaCgnZXJyJywgJ1ZlaGljbGUgbm90IGZvdW5kLicpOyByZWRpcmVjdCgndmVoaWNsZXMucGhwJyk7IH0KfQoKLy8gbmV3IHZlaGljbGVzIHN0YXJ0IHdpdGggZXZlcnkgc2l0ZSB0aWNrZWQKJGNoZWNrZWQgPSAkaWQgPyB2ZWhpY2xlX3NpdGVfaWRzKCRpZCkgOiBhcnJheV9tYXAoJ2ludHZhbCcsIGFycmF5X2NvbHVtbihhbGxfc2l0ZXMoKSwgJ2lkJykpOwoKaWYgKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09PSAnUE9TVCcpIHsKICAgIGNzcmZfY2hlY2soKTsKCiAgICAkdGl0bGUgPSBlX3Bvc3QoJ3RpdGxlJyk7CiAgICBpZiAoJHRpdGxlID09PSAnJykgewogICAgICAgIGZsYXNoKCdlcnInLCAnVGl0bGUgaXMgcmVxdWlyZWQuJyk7CiAgICB9IGVsc2UgewogICAgICAgICRmaWVsZHMgPSBbCiAgICAgICAgICAgICd0aXRsZScgICAgICAgICAgICAgICA9PiAkdGl0bGUsCiAgICAgICAgICAgICdtYWtlJyAgICAgICAgICAgICAgICA9PiBlX3Bvc3QoJ21ha2UnKSwKICAgICAgICAgICAgJ21vZGVsJyAgICAgICAgICAgICAgID0+IGVfcG9zdCgnbW9kZWwnKSwKICAgICAgICAgICAgJ3ZhcmlhbnQnICAgICAgICAgICAgID0+IGVfcG9zdCgndmFyaWFudCcpLAogICAgICAgICAgICAncmVnaXN0cmF0aW9uX251bWJlcicgPT4gZV9wb3N0KCdyZWdpc3RyYXRpb25fbnVtYmVyJyksCiAgICAgICAgICAgICd5ZWFyJyAgICAgICAgICAgICAgICA9PiBlX3Bvc3QoJ3llYXInKSAhPT0gJycgPyAoaW50KWVfcG9zdCgneWVhcicpIDogbnVsbCwKICAgICAgICAgICAgJ21pbGVhZ2UnICAgICAgICAgICAgID0+IGVfcG9zdCgnbWlsZWFnZScpICE9PSAnJyA/IChpbnQpZV9wb3N0KCdtaWxlYWdlJykgOiAwLAogICAgICAgICAgICAnZnVlbCcgICAgICAgICAgICAgICAgPT4gZV9wb3N0KCdmdWVsJyksCiAgICAgICAgICAgICd0cmFuc21pc3Npb24nICAgICAgICA9PiBlX3Bvc3QoJ3RyYW5zbWlzc2lvbicpLAogICAgICAgICAgICAnYm9keV90eXBlJyAgICAgICAgICAgPT4gZV9wb3N0KCdib2R5X3R5cGUnKSwKICAgICAgICAgICAgJ2NvbG9yJyAgICAgICAgICAgICAgID0+IGVfcG9zdCgnY29sb3InKSwKICAgICAgICAgICAgJ21vdF9leHBpcnknICAgICAgICAgID0+IGVfcG9zdCgnbW90X2V4cGlyeScpICE9PSAnJyA/IGVfcG9zdCgnbW90X2V4cGlyeScpIDogbnVsbCwKICAgICAgICAgICAgJ3ByaWNlJyAgICAgICAgICAgICAgID0+IChmbG9hdClzdHJfcmVwbGFjZSgnLCcsICcnLCBlX3Bvc3QoJ3ByaWNlJykpLAogICAgICAgICAgICAnc3RhdHVzJyAgICAgICAgICAgICAgPT4gaW5fYXJyYXkoZV9wb3N0KCdzdGF0dXMnKSwgWydhdmFpbGFibGUnLCdyZXNlcnZlZCcsJ3NvbGQnXSwgdHJ1ZSkgPyBlX3Bvc3QoJ3N0YXR1cycpIDogJ2F2YWlsYWJsZScsCiAgICAgICAgICAgICdkZXNjcmlwdGlvbicgICAgICAgICA9PiB0cmltKChzdHJpbmcpKCRfUE9TVFsnZGVzY3JpcHRpb24nXSA/PyAnJykpLAogICAgICAgIF07CgogICAgICAgIGlmICgkaWQpIHsKICAgICAgICAgICAgJHNldCA9IGltcGxvZGUoJywgJywgYXJyYXlfbWFwKGZuKCRrKSA9PiAiJGsgPSA/IiwgYXJyYXlfa2V5cygkZmllbGRzKSkpOwogICAgICAgICAgICBkYigpLT5wcmVwYXJlKCJVUERBVEUgdmVoaWNsZXMgU0VUICRzZXQgV0hFUkUgaWQgPSA/IiktPmV4ZWN1dGUoWy4uLmFycmF5X3ZhbHVlcygkZmllbGRzKSwgJGlkXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGZpZWxkc1snc2x1ZyddICAgICAgID0gdW5pcXVlX3NsdWcoJHRpdGxlKTsKICAgICAgICAgICAgJGZpZWxkc1snY3JlYXRlZF9ieSddID0gQXV0aDo6dXNlcigpWydpZCddOwogICAgICAgICAgICAkY29scyA9IGltcGxvZGUoJywgJywgYXJyYXlfa2V5cygkZmllbGRzKSk7CiAgICAgICAgICAgICRwaCAgID0gaW1wbG9kZSgnLCAnLCBhcnJheV9maWxsKDAsIGNvdW50KCRmaWVsZHMpLCAnPycpKTsKICAgICAgICAgICAgZGIoKS0+cHJlcGFyZSgiSU5TRVJUIElOVE8gdmVoaWNsZXMgKCRjb2xzKSBWQUxVRVMgKCRwaCkiKS0+ZXhlY3V0ZShhcnJheV92YWx1ZXMoJGZpZWxkcykpOwogICAgICAgICAgICAkaWQgPSAoaW50KWRiKCktPmxhc3RJbnNlcnRJZCgpOwogICAgICAgIH0KCiAgICAgICAgc2V0X3ZlaGljbGVfc2l0ZXMoJGlkLCAkX1BPU1RbJ3NpdGVzJ10gPz8gW10pOwogICAgICAgICRuID0gY291bnQoJF9QT1NUWydzaXRlcyddID8/IFtdKTsKCiAgICAgICAgZmxhc2goJ29rJywgJG4KICAgICAgICAgICAgPyAiVmVoaWNsZSBzYXZlZCBhbmQgcHVibGlzaGVkIG9uICRuIHNpdGUocykuIEFkZCBwaG90b3MgYmVsb3cuIgogICAgICAgICAgICA6ICdWZWhpY2xlIHNhdmVkLCBidXQgaXQgaXMgbm90IHRpY2tlZCBmb3IgYW55IHNpdGUsIHNvIGl0IGFwcGVhcnMgbm93aGVyZS4nKTsKICAgICAgICByZWRpcmVjdCgndmVoaWNsZV9mb3JtLnBocD9pZD0nIC4gJGlkKTsKICAgIH0KICAgICRjaGVja2VkID0gYXJyYXlfbWFwKCdpbnR2YWwnLCAkX1BPU1RbJ3NpdGVzJ10gPz8gW10pOwp9CgokaW1hZ2VzID0gW107CmlmICgkaWQpIHsKICAgICRzdCA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCAqIEZST00gdmVoaWNsZV9pbWFnZXMgV0hFUkUgdmVoaWNsZV9pZCA9ID8gT1JERVIgQlkgc29ydF9vcmRlciBBU0MiKTsKICAgICRzdC0+ZXhlY3V0ZShbJGlkXSk7CiAgICAkaW1hZ2VzID0gJHN0LT5mZXRjaEFsbCgpOwp9CgokdmFsID0gZnVuY3Rpb24gKCRrLCAkZCA9ICcnKSB1c2UgKCR2ZWhpY2xlKSB7IHJldHVybiAkdmVoaWNsZVska10gPz8gJGQ7IH07CgphZG1pbl9oZWFkKCRpZCA/ICdFZGl0IHZlaGljbGUnIDogJ05ldyB2ZWhpY2xlJyk7CmFkbWluX3RvcGJhcigkaWQgPyAnRWRpdCB2ZWhpY2xlJyA6ICdOZXcgdmVoaWNsZScsICc8YSBocmVmPSJ2ZWhpY2xlcy5waHAiIGNsYXNzPSJidG4gc2Vjb25kYXJ5Ij4mbGFycjsgQmFjayB0byBpbnZlbnRvcnk8L2E+Jyk7Cj8+Cjxmb3JtIG1ldGhvZD0icG9zdCI+Cjw/PSBjc3JmX2ZpZWxkKCkgPz4KCjxkaXYgY2xhc3M9ImNhcmQiPgogIDxoMiBzdHlsZT0ibWFyZ2luLXRvcDowO2ZvbnQtc2l6ZToxNnB4Ij5WZWhpY2xlIGRldGFpbHM8L2gyPgogIDxsYWJlbD5EaXNwbGF5IHRpdGxlICo8L2xhYmVsPgogIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ0aXRsZSIgcmVxdWlyZWQgdmFsdWU9Ijw/PSBoKCR2YWwoJ3RpdGxlJykpID8+IiBwbGFjZWhvbGRlcj0iZS5nLiAyMDE5IEJNVyAzMjBkIE0gU3BvcnQiPgoKICA8ZGl2IGNsYXNzPSJyb3cyIj4KICAgIDxkaXY+PGxhYmVsPk1ha2U8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtYWtlIiB2YWx1ZT0iPD89IGgoJHZhbCgnbWFrZScpKSA/PiI+PC9kaXY+CiAgICA8ZGl2PjxsYWJlbD5Nb2RlbDwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1vZGVsIiB2YWx1ZT0iPD89IGgoJHZhbCgnbW9kZWwnKSkgPz4iPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InJvdzIiPgogICAgPGRpdj48bGFiZWw+VmFyaWFudDwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InZhcmlhbnQiIHZhbHVlPSI8Pz0gaCgkdmFsKCd2YXJpYW50JykpID8+Ij48L2Rpdj4KICAgIDxkaXY+PGxhYmVsPlJlZ2lzdHJhdGlvbiBudW1iZXI8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyZWdpc3RyYXRpb25fbnVtYmVyIiB2YWx1ZT0iPD89IGgoJHZhbCgncmVnaXN0cmF0aW9uX251bWJlcicpKSA/PiI+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icm93MiI+CiAgICA8ZGl2PjxsYWJlbD5ZZWFyPC9sYWJlbD48aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJ5ZWFyIiBtaW49IjE5MDAiIG1heD0iMjEwMCIgdmFsdWU9Ijw/PSBoKCR2YWwoJ3llYXInKSkgPz4iPjwvZGl2PgogICAgPGRpdj48bGFiZWw+TWlsZWFnZSAobWlsZXMpPC9sYWJlbD48aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJtaWxlYWdlIiBtaW49IjAiIHZhbHVlPSI8Pz0gaCgkdmFsKCdtaWxlYWdlJywgJzAnKSkgPz4iPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InJvdzIiPgogICAgPGRpdj48bGFiZWw+RnVlbDwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZ1ZWwiIHZhbHVlPSI8Pz0gaCgkdmFsKCdmdWVsJykpID8+IiBwbGFjZWhvbGRlcj0iUGV0cm9sIC8gRGllc2VsIC8gSHlicmlkIC8gRWxlY3RyaWMiPjwvZGl2PgogICAgPGRpdj48bGFiZWw+VHJhbnNtaXNzaW9uPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idHJhbnNtaXNzaW9uIiB2YWx1ZT0iPD89IGgoJHZhbCgndHJhbnNtaXNzaW9uJykpID8+IiBwbGFjZWhvbGRlcj0iTWFudWFsIC8gQXV0b21hdGljIj48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJyb3cyIj4KICAgIDxkaXY+PGxhYmVsPkJvZHkgdHlwZTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImJvZHlfdHlwZSIgdmFsdWU9Ijw/PSBoKCR2YWwoJ2JvZHlfdHlwZScpKSA/PiIgcGxhY2Vob2xkZXI9IkhhdGNoYmFjayAvIFNVViAvIFNhbG9vbi4uLiI+PC9kaXY+CiAgICA8ZGl2PjxsYWJlbD5Db2xvdXI8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjb2xvciIgdmFsdWU9Ijw/PSBoKCR2YWwoJ2NvbG9yJykpID8+Ij48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJyb3cyIj4KICAgIDxkaXY+PGxhYmVsPlByaWNlICgmcG91bmQ7KTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InByaWNlIiB2YWx1ZT0iPD89IGgoJHZhbCgncHJpY2UnLCAnMC4wMCcpKSA/PiI+PC9kaXY+CiAgICA8ZGl2PjxsYWJlbD5NT1QgZXhwaXJ5PC9sYWJlbD48aW5wdXQgdHlwZT0iZGF0ZSIgbmFtZT0ibW90X2V4cGlyeSIgdmFsdWU9Ijw/PSBoKCR2YWwoJ21vdF9leHBpcnknKSkgPz4iPjwvZGl2PgogIDwvZGl2PgogIDxsYWJlbD5TdGF0dXM8L2xhYmVsPgogIDxzZWxlY3QgbmFtZT0ic3RhdHVzIj4KICAgIDw/cGhwIGZvcmVhY2ggKFsnYXZhaWxhYmxlJyA9PiAnQXZhaWxhYmxlJywgJ3Jlc2VydmVkJyA9PiAnUmVzZXJ2ZWQnLCAnc29sZCcgPT4gJ1NvbGQnXSBhcyAkayA9PiAkbGJsKTogPz4KICAgICAgPG9wdGlvbiB2YWx1ZT0iPD89ICRrID8+IiA8Pz0gJHZhbCgnc3RhdHVzJywgJ2F2YWlsYWJsZScpID09PSAkayA/ICdzZWxlY3RlZCcgOiAnJyA/Pj48Pz0gJGxibCA/Pjwvb3B0aW9uPgogICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICA8L3NlbGVjdD4KICA8bGFiZWw+RGVzY3JpcHRpb248L2xhYmVsPgogIDx0ZXh0YXJlYSBuYW1lPSJkZXNjcmlwdGlvbiIgcm93cz0iNyI+PD89IGgoJHZhbCgnZGVzY3JpcHRpb24nKSkgPz48L3RleHRhcmVhPgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNhcmQiPgogIDxoMiBzdHlsZT0ibWFyZ2luLXRvcDowO2ZvbnQtc2l6ZToxNnB4Ij5XaGljaCBzaXRlcyBpdCBhcHBlYXJzIG9uPC9oMj4KICA8cCBjbGFzcz0ibXV0ZWQiIHN0eWxlPSJtYXJnaW46MCI+VGljayB0aGUgc2F0ZWxsaXRlcyB3aGVyZSB0aGlzIHZlaGljbGUgc2hvdWxkIGJlIGxpc3RlZC4gUHJpY2UsIHN0YXR1cyBhbmQgZGVzY3JpcHRpb24gYXJlIHNoYXJlZCBhY3Jvc3MgYWxsIG9mIHRoZW0uPC9wPgogIDw/cGhwIHNpdGVfY2hlY2tib3hlcygkY2hlY2tlZCk7ID8+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY2FyZCI+CiAgPGJ1dHRvbiBjbGFzcz0iYnRuIiB0eXBlPSJzdWJtaXQiPjw/PSAkaWQgPyAnU2F2ZSBjaGFuZ2VzJyA6ICdDcmVhdGUgdmVoaWNsZScgPz48L2J1dHRvbj4KICA8P3BocCBpZiAoISRpZCk6ID8+PHNwYW4gY2xhc3M9Im11dGVkIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTJweCI+UGhvdG9zIGNhbiBiZSBhZGRlZCBvbmNlIHRoZSB2ZWhpY2xlIGlzIGNyZWF0ZWQuPC9zcGFuPjw/cGhwIGVuZGlmOyA/Pgo8L2Rpdj4KPC9mb3JtPgoKPD9waHAgaWYgKCRpZCk6ID8+CjxkaXYgY2xhc3M9ImNhcmQiPgogIDxoMiBzdHlsZT0ibWFyZ2luLXRvcDowO2ZvbnQtc2l6ZToxNnB4Ij5QaG90b3MgKDw/PSBjb3VudCgkaW1hZ2VzKSA/Pik8L2gyPgogIDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSJ2ZWhpY2xlX2ltYWdlX3VwbG9hZC5waHAiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPgogICAgPD89IGNzcmZfZmllbGQoKSA/PgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idmVoaWNsZV9pZCIgdmFsdWU9Ijw/PSAkaWQgPz4iPgogICAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImltYWdlc1tdIiBhY2NlcHQ9ImltYWdlL2pwZWcsaW1hZ2UvcG5nLGltYWdlL3dlYnAiIG11bHRpcGxlIHJlcXVpcmVkPgogICAgPGJ1dHRvbiBjbGFzcz0iYnRuIHNtYWxsIiB0eXBlPSJzdWJtaXQiIHN0eWxlPSJtYXJnaW4tdG9wOjEwcHgiPlVwbG9hZCBwaG90b3M8L2J1dHRvbj4KICAgIDxzcGFuIGNsYXNzPSJtdXRlZCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPmpwZywgcG5nIG9yIHdlYnAsIDggTUIgbWF4IGVhY2guIFRoZSBmaXJzdCBwaG90byBpcyB0aGUgY292ZXIuPC9zcGFuPgogIDwvZm9ybT4KICA8P3BocCBpZiAoJGltYWdlcyk6ID8+CiAgPGRpdiBjbGFzcz0iZ2FsbGVyeS1ncmlkIiBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4Ij4KICAgIDw/cGhwIGZvcmVhY2ggKCRpbWFnZXMgYXMgJGltZyk6ID8+CiAgICA8ZGl2IGNsYXNzPSJnYWxsZXJ5LXRodW1iIj4KICAgICAgPGltZyBzcmM9Ii4uL3VwbG9hZHMvdmVoaWNsZXMvPD89IGgoJGltZ1sncGF0aCddKSA/PiIgYWx0PSIiPgogICAgICA8YSBjbGFzcz0iZ2FsbGVyeS1yZW1vdmUiIHRpdGxlPSJEZWxldGUgcGhvdG8iCiAgICAgICAgIGhyZWY9InZlaGljbGVfaW1hZ2VfZGVsZXRlLnBocD9pZD08Pz0gKGludCkkaW1nWydpZCddID8+JmFtcDtjc3JmPTw/PSBoKGNzcmZfdG9rZW4oKSkgPz4iCiAgICAgICAgIG9uY2xpY2s9InJldHVybiBjb25maXJtKCdEZWxldGUgdGhpcyBwaG90bz8nKSI+JnRpbWVzOzwvYT4KICAgIDwvZGl2PgogICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICA8L2Rpdj4KICA8P3BocCBlbHNlOiA/PgogICAgPHAgY2xhc3M9Im11dGVkIiBzdHlsZT0ibWFyZ2luOjEycHggMCAwIj5ObyBwaG90b3MgeWV0LiBQaWNrIG9uZSBvciBtb3JlIGZpbGVzIGFib3ZlIGFuZCBwcmVzcyBVcGxvYWQgcGhvdG9zLjwvcD4KICA8P3BocCBlbmRpZjsgPz4KPC9kaXY+Cjw/cGhwIGVuZGlmOyA/Pgo8P3BocCBhZG1pbl9mb290KCk7ID8+Cg==', 'admin/vehicle_image_delete.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwoKaWYgKGVtcHR5KCRfR0VUWydjc3JmJ10pIHx8ICFoYXNoX2VxdWFscyhjc3JmX3Rva2VuKCksIChzdHJpbmcpJF9HRVRbJ2NzcmYnXSkpIHsKICAgIGh0dHBfcmVzcG9uc2VfY29kZSg0MDApOwogICAgZGllKCdJbnZhbGlkIHNlY3VyaXR5IHRva2VuLicpOwp9CgokaWQgPSAoaW50KWVfZ2V0KCdpZCcpOwokc3QgPSBkYigpLT5wcmVwYXJlKCJTRUxFQ1QgKiBGUk9NIHZlaGljbGVfaW1hZ2VzIFdIRVJFIGlkID0gPyBMSU1JVCAxIik7CiRzdC0+ZXhlY3V0ZShbJGlkXSk7CiRpbWcgPSAkc3QtPmZldGNoKCk7CgppZiAoISRpbWcpIHsgZmxhc2goJ2VycicsICdQaG90byBub3QgZm91bmQuJyk7IHJlZGlyZWN0KCd2ZWhpY2xlcy5waHAnKTsgfQoKJGZpbGUgPSBfX0RJUl9fIC4gJy8uLi91cGxvYWRzL3ZlaGljbGVzLycgLiBiYXNlbmFtZSgkaW1nWydwYXRoJ10pOwppZiAoaXNfZmlsZSgkZmlsZSkpIEB1bmxpbmsoJGZpbGUpOwpkYigpLT5wcmVwYXJlKCJERUxFVEUgRlJPTSB2ZWhpY2xlX2ltYWdlcyBXSEVSRSBpZCA9ID8iKS0+ZXhlY3V0ZShbJGlkXSk7CgpmbGFzaCgnb2snLCAnUGhvdG8gZGVsZXRlZC4nKTsKcmVkaXJlY3QoJ3ZlaGljbGVfZm9ybS5waHA/aWQ9JyAuIChpbnQpJGltZ1sndmVoaWNsZV9pZCddKTsK', 'admin/vehicle_image_upload.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwpjc3JmX2NoZWNrKCk7CgokdmlkID0gKGludCllX3Bvc3QoJ3ZlaGljbGVfaWQnKTsKJHN0ID0gZGIoKS0+cHJlcGFyZSgiU0VMRUNUIGlkIEZST00gdmVoaWNsZXMgV0hFUkUgaWQgPSA/IExJTUlUIDEiKTsKJHN0LT5leGVjdXRlKFskdmlkXSk7CmlmICghJHN0LT5mZXRjaCgpKSB7IGZsYXNoKCdlcnInLCAnVmVoaWNsZSBub3QgZm91bmQuJyk7IHJlZGlyZWN0KCd2ZWhpY2xlcy5waHAnKTsgfQoKJGRlc3REaXIgPSBfX0RJUl9fIC4gJy8uLi91cGxvYWRzL3ZlaGljbGVzJzsKJG1heE9yZGVyID0gZGIoKS0+cHJlcGFyZSgiU0VMRUNUIENPQUxFU0NFKE1BWChzb3J0X29yZGVyKSwgMCkgbSBGUk9NIHZlaGljbGVfaW1hZ2VzIFdIRVJFIHZlaGljbGVfaWQgPSA/Iik7CiRtYXhPcmRlci0+ZXhlY3V0ZShbJHZpZF0pOwokb3JkZXIgPSAoaW50KSRtYXhPcmRlci0+ZmV0Y2goKVsnbSddOwoKJGlucyA9IGRiKCktPnByZXBhcmUoIklOU0VSVCBJTlRPIHZlaGljbGVfaW1hZ2VzICh2ZWhpY2xlX2lkLCBwYXRoLCBzb3J0X29yZGVyKSBWQUxVRVMgKD8sPyw/KSIpOwokb2sgPSAwOyAkZmFpbGVkID0gMDsKCiRmaWxlcyA9ICRfRklMRVNbJ2ltYWdlcyddID8/IG51bGw7CmlmICgkZmlsZXMgJiYgaXNfYXJyYXkoJGZpbGVzWyduYW1lJ10pKSB7CiAgICAkY291bnQgPSBjb3VudCgkZmlsZXNbJ25hbWUnXSk7CiAgICBmb3IgKCRpID0gMDsgJGkgPCAkY291bnQ7ICRpKyspIHsKICAgICAgICBpZiAoJGZpbGVzWydlcnJvciddWyRpXSAhPT0gVVBMT0FEX0VSUl9PSykgeyAkZmFpbGVkKys7IGNvbnRpbnVlOyB9CgogICAgICAgIC8vIHJlc2hhcGUgaW50byB0aGUgc2luZ2xlLWZpbGUgZm9ybSB1cGxvYWRfaW1hZ2UoKSBleHBlY3RzCiAgICAgICAgJF9GSUxFU1snX19vbmUnXSA9IFsKICAgICAgICAgICAgJ25hbWUnICAgICA9PiAkZmlsZXNbJ25hbWUnXVskaV0sCiAgICAgICAgICAgICd0eXBlJyAgICAgPT4gJGZpbGVzWyd0eXBlJ11bJGldLAogICAgICAgICAgICAndG1wX25hbWUnID0+ICRmaWxlc1sndG1wX25hbWUnXVskaV0sCiAgICAgICAgICAgICdlcnJvcicgICAgPT4gJGZpbGVzWydlcnJvciddWyRpXSwKICAgICAgICAgICAgJ3NpemUnICAgICA9PiAkZmlsZXNbJ3NpemUnXVskaV0sCiAgICAgICAgXTsKICAgICAgICAkbmFtZSA9IHVwbG9hZF9pbWFnZSgnX19vbmUnLCAkZGVzdERpciwgJ3ZlaCcgLiAkdmlkKTsKICAgICAgICBpZiAoJG5hbWUpIHsgJGlucy0+ZXhlY3V0ZShbJHZpZCwgJG5hbWUsICsrJG9yZGVyXSk7ICRvaysrOyB9IGVsc2UgeyAkZmFpbGVkKys7IH0KICAgIH0KfQoKZmxhc2goJGZhaWxlZCA/ICdlcnInIDogJ29rJywKICAgICRmYWlsZWQKICAgICAgICA/ICIkb2sgcGhvdG8ocykgdXBsb2FkZWQsICRmYWlsZWQgcmVqZWN0ZWQgKHVuc3VwcG9ydGVkIGZvcm1hdCBvciBvdmVyIDggTUIpLiIKICAgICAgICA6ICIkb2sgcGhvdG8ocykgdXBsb2FkZWQuIik7CnJlZGlyZWN0KCd2ZWhpY2xlX2Zvcm0ucGhwP2lkPScgLiAkdmlkKTsK', 'admin/vehicles.php' => 'PD9waHAKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2NvcmUvYm9vdHN0cmFwLnBocCc7CkF1dGg6OnJlcXVpcmVSb2xlKCdzdXBlcl9hZG1pbicpOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2xheW91dC5waHAnOwoKJHEgICAgICAgID0gZV9nZXQoJ3EnKTsKJHNpdGVJZCAgID0gKGludCllX2dldCgnc2l0ZScpOwokc3RhdHVzICAgPSBlX2dldCgnc3RhdHVzJyk7CiRhc3NpZ25lZCA9IGVfZ2V0KCdhc3NpZ25lZCcpOwoKJHdoZXJlID0gWycxPTEnXTsKJHBhcmFtcyA9IFtdOwoKaWYgKCRxICE9PSAnJykgewogICAgJHdoZXJlW10gPSAnKHYudGl0bGUgTElLRSA/IE9SIHYubWFrZSBMSUtFID8gT1Igdi5tb2RlbCBMSUtFID8gT1Igdi5yZWdpc3RyYXRpb25fbnVtYmVyIExJS0UgPyknOwogICAgJGxpa2UgPSAnJScgLiAkcSAuICclJzsKICAgIGFycmF5X3B1c2goJHBhcmFtcywgJGxpa2UsICRsaWtlLCAkbGlrZSwgJGxpa2UpOwp9CmlmIChpbl9hcnJheSgkc3RhdHVzLCBbJ2F2YWlsYWJsZScsICdyZXNlcnZlZCcsICdzb2xkJ10sIHRydWUpKSB7CiAgICAkd2hlcmVbXSA9ICd2LnN0YXR1cyA9ID8nOwogICAgJHBhcmFtc1tdID0gJHN0YXR1czsKfQppZiAoJHNpdGVJZCA+IDApIHsKICAgICR3aGVyZVtdID0gJ0VYSVNUUyAoU0VMRUNUIDEgRlJPTSB2ZWhpY2xlX3NpdGVzIHZzIFdIRVJFIHZzLnZlaGljbGVfaWQgPSB2LmlkIEFORCB2cy5zaXRlX2lkID0gPyknOwogICAgJHBhcmFtc1tdID0gJHNpdGVJZDsKfQppZiAoJGFzc2lnbmVkID09PSAnbm9uZScpIHsKICAgICR3aGVyZVtdID0gJ05PVCBFWElTVFMgKFNFTEVDVCAxIEZST00gdmVoaWNsZV9zaXRlcyB2cyBXSEVSRSB2cy52ZWhpY2xlX2lkID0gdi5pZCknOwp9Cgokc3FsID0gIlNFTEVDVCB2LiosCiAgICAgICAgKFNFTEVDVCBwYXRoIEZST00gdmVoaWNsZV9pbWFnZXMgdmkgV0hFUkUgdmkudmVoaWNsZV9pZCA9IHYuaWQgT1JERVIgQlkgdmkuc29ydF9vcmRlciBMSU1JVCAxKSBBUyBjb3ZlciwKICAgICAgICAoU0VMRUNUIENPVU5UKCopIEZST00gdmVoaWNsZV9pbWFnZXMgdmkgV0hFUkUgdmkudmVoaWNsZV9pZCA9IHYuaWQpIEFTIGltZ19jb3VudAogICAgICAgIEZST00gdmVoaWNsZXMgdiBXSEVSRSAiIC4gaW1wbG9kZSgnIEFORCAnLCAkd2hlcmUpIC4gIgogICAgICAgIE9SREVSIEJZIHYuY3JlYXRlZF9hdCBERVNDIExJTUlUIDUwMCI7CiRzdCA9IGRiKCktPnByZXBhcmUoJHNxbCk7CiRzdC0+ZXhlY3V0ZSgkcGFyYW1zKTsKJHZlaGljbGVzID0gJHN0LT5mZXRjaEFsbCgpOwoKLy8gd2hpY2ggc2l0ZXMgZWFjaCB2ZWhpY2xlIGlzIG9uLCBpbiBvbmUgcXVlcnkKJG1hcCA9IFtdOwppZiAoJHZlaGljbGVzKSB7CiAgICAkaWRzID0gaW1wbG9kZSgnLCcsIGFycmF5X21hcChmbigkdikgPT4gKGludCkkdlsnaWQnXSwgJHZlaGljbGVzKSk7CiAgICBmb3JlYWNoIChkYigpLT5xdWVyeSgiU0VMRUNUIHZzLnZlaGljbGVfaWQsIHMuY29tcGFueV9uYW1lIEZST00gdmVoaWNsZV9zaXRlcyB2cwogICAgICAgICAgICAgICAgICAgICAgICAgIEpPSU4gc2l0ZXMgcyBPTiBzLmlkID0gdnMuc2l0ZV9pZAogICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHZzLnZlaGljbGVfaWQgSU4gKCRpZHMpIE9SREVSIEJZIHMuY29tcGFueV9uYW1lIiktPmZldGNoQWxsKCkgYXMgJHIpIHsKICAgICAgICAkbWFwWyhpbnQpJHJbJ3ZlaGljbGVfaWQnXV1bXSA9ICRyWydjb21wYW55X25hbWUnXTsKICAgIH0KfQoKYWRtaW5faGVhZCgnSW52ZW50b3J5Jyk7CmFkbWluX3RvcGJhcignSW52ZW50b3J5JywgJzxhIGhyZWY9InZlaGljbGVfZm9ybS5waHAiIGNsYXNzPSJidG4iPisgQWRkIHZlaGljbGU8L2E+Jyk7Cj8+CjxkaXYgY2xhc3M9ImNhcmQiPgogIDxmb3JtIG1ldGhvZD0iZ2V0IiBjbGFzcz0iZmlsdGVycyI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB0aXRsZSwgbWFrZSwgbW9kZWwsIHJlZ2lzdHJhdGlvbi4uLiIgdmFsdWU9Ijw/PSBoKCRxKSA/PiI+CiAgICA8c2VsZWN0IG5hbWU9InNpdGUiPgogICAgICA8b3B0aW9uIHZhbHVlPSIiPkFsbCBzaXRlczwvb3B0aW9uPgogICAgICA8P3BocCBmb3JlYWNoIChhbGxfc2l0ZXMoKSBhcyAkcyk6ID8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPD89IChpbnQpJHNbJ2lkJ10gPz4iIDw/PSAkc2l0ZUlkID09PSAoaW50KSRzWydpZCddID8gJ3NlbGVjdGVkJyA6ICcnID8+Pjw/PSBoKCRzWydjb21wYW55X25hbWUnXSkgPz48L29wdGlvbj4KICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgIDwvc2VsZWN0PgogICAgPHNlbGVjdCBuYW1lPSJzdGF0dXMiPgogICAgICA8b3B0aW9uIHZhbHVlPSIiPkFueSBzdGF0dXM8L29wdGlvbj4KICAgICAgPD9waHAgZm9yZWFjaCAoWydhdmFpbGFibGUnID0+ICdBdmFpbGFibGUnLCAncmVzZXJ2ZWQnID0+ICdSZXNlcnZlZCcsICdzb2xkJyA9PiAnU29sZCddIGFzICRrID0+ICR2KTogPz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSI8Pz0gJGsgPz4iIDw/PSAkc3RhdHVzID09PSAkayA/ICdzZWxlY3RlZCcgOiAnJyA/Pj48Pz0gJHYgPz48L29wdGlvbj4KICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgIDwvc2VsZWN0PgogICAgPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHg7Zm9udC1zaXplOjE0cHgiPgogICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImFzc2lnbmVkIiB2YWx1ZT0ibm9uZSIgPD89ICRhc3NpZ25lZCA9PT0gJ25vbmUnID8gJ2NoZWNrZWQnIDogJycgPz4+CiAgICAgIE9ubHkgdGhvc2Ugbm90IHRpY2tlZCBmb3IgYW55IHNpdGUKICAgIDwvbGFiZWw+CiAgICA8YnV0dG9uIGNsYXNzPSJidG4gc21hbGwiIHR5cGU9InN1Ym1pdCI+RmlsdGVyPC9idXR0b24+CiAgICA8P3BocCBpZiAoJHEgIT09ICcnIHx8ICRzaXRlSWQgfHwgJHN0YXR1cyAhPT0gJycgfHwgJGFzc2lnbmVkICE9PSAnJyk6ID8+CiAgICAgIDxhIGNsYXNzPSJidG4gc21hbGwgc2Vjb25kYXJ5IiBocmVmPSJ2ZWhpY2xlcy5waHAiPlJlc2V0PC9hPgogICAgPD9waHAgZW5kaWY7ID8+CiAgPC9mb3JtPgoKICA8dGFibGU+CiAgICA8dHI+PHRoPjwvdGg+PHRoPlZlaGljbGU8L3RoPjx0aD5QcmljZTwvdGg+PHRoPlN0YXR1czwvdGg+PHRoPlNob3duIG9uPC90aD48dGg+UGhvdG9zPC90aD48dGg+PC90aD48L3RyPgogICAgPD9waHAgZm9yZWFjaCAoJHZlaGljbGVzIGFzICR2KTogJHNpdGVzT2YgPSAkbWFwWyhpbnQpJHZbJ2lkJ11dID8/IFtdOyA/PgogICAgPHRyPgogICAgICA8dGQgc3R5bGU9IndpZHRoOjc0cHgiPgogICAgICAgIDw/cGhwIGlmICgkdlsnY292ZXInXSk6ID8+CiAgICAgICAgICA8aW1nIGNsYXNzPSJ0aHVtYiIgc3JjPSIuLi91cGxvYWRzL3ZlaGljbGVzLzw/PSBoKCR2Wydjb3ZlciddKSA/PiIgYWx0PSIiPgogICAgICAgIDw/cGhwIGVsc2U6ID8+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ibXV0ZWQiPm5vIHBob3RvPC9zcGFuPgogICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICA8L3RkPgogICAgICA8dGQ+CiAgICAgICAgPHN0cm9uZz48Pz0gaCgkdlsndGl0bGUnXSkgPz48L3N0cm9uZz4KICAgICAgICA8c3BhbiBjbGFzcz0ibXV0ZWQiPjw/PSBoKHRyaW0oJHZbJ21ha2UnXSAuICcgJyAuICR2Wydtb2RlbCddKSkgPz48Pz0gJHZbJ3llYXInXSA/ICcgJm1pZGRvdDsgJyAuIChpbnQpJHZbJ3llYXInXSA6ICcnID8+PD89ICR2WydtaWxlYWdlJ10gPyAnICZtaWRkb3Q7ICcgLiBudW1iZXJfZm9ybWF0KChpbnQpJHZbJ21pbGVhZ2UnXSkgLiAnIG1pJyA6ICcnID8+PC9zcGFuPgogICAgICA8L3RkPgogICAgICA8dGQ+JnBvdW5kOzw/PSBtb25leSgkdlsncHJpY2UnXSkgPz48L3RkPgogICAgICA8dGQ+PHNwYW4gY2xhc3M9ImJhZGdlIDw/PSBoKCR2WydzdGF0dXMnXSkgPz4iPjw/PSBoKHVjZmlyc3QoJHZbJ3N0YXR1cyddKSkgPz48L3NwYW4+PC90ZD4KICAgICAgPHRkPgogICAgICAgIDxkaXYgY2xhc3M9InBpbGxyb3ciPgogICAgICAgICAgPD9waHAgaWYgKCRzaXRlc09mKTogZm9yZWFjaCAoJHNpdGVzT2YgYXMgJG4pOiA/PjxzcGFuIGNsYXNzPSJwIj48Pz0gaCgkbikgPz48L3NwYW4+PD9waHAgZW5kZm9yZWFjaDsKICAgICAgICAgICAgICAgIGVsc2U6ID8+PHNwYW4gY2xhc3M9InAgbm9uZSI+bm8gc2l0ZTwvc3Bhbj48P3BocCBlbmRpZjsgPz4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZD4KICAgICAgPHRkPjw/PSAoaW50KSR2WydpbWdfY291bnQnXSA/PjwvdGQ+CiAgICAgIDx0ZCBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj4KICAgICAgICA8YSBjbGFzcz0iYnRuIHNtYWxsIHNlY29uZGFyeSIgaHJlZj0idmVoaWNsZV9mb3JtLnBocD9pZD08Pz0gKGludCkkdlsnaWQnXSA/PiI+RWRpdDwvYT4KICAgICAgICA8YSBjbGFzcz0iYnRuIHNtYWxsIGRhbmdlciIgaHJlZj0idmVoaWNsZV9kZWxldGUucGhwP2lkPTw/PSAoaW50KSR2WydpZCddID8+JmFtcDtjc3JmPTw/PSBoKGNzcmZfdG9rZW4oKSkgPz4iCiAgICAgICAgICAgb25jbGljaz0icmV0dXJuIGNvbmZpcm0oJ1Blcm1hbmVudGx5IGRlbGV0ZSA8Pz0gaChhZGRzbGFzaGVzKCR2Wyd0aXRsZSddKSkgPz4/XG5cbkl0cyBwaG90b3MgYW5kIHNpdGUgbGlua3Mgd2lsbCBiZSByZW1vdmVkIHRvby4nKSI+RGVsZXRlPC9hPgogICAgICA8L3RkPgogICAgPC90cj4KICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICA8P3BocCBpZiAoISR2ZWhpY2xlcyk6ID8+PHRyPjx0ZCBjb2xzcGFuPSI3Ij5ObyB2ZWhpY2xlcyBmb3VuZC4gPGEgaHJlZj0idmVoaWNsZV9mb3JtLnBocCI+QWRkIG9uZTwvYT4uPC90ZD48L3RyPjw/cGhwIGVuZGlmOyA/PgogIDwvdGFibGU+CjwvZGl2Pgo8P3BocCBhZG1pbl9mb290KCk7ID8+Cg==', 'api/.htaccess' => 'IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICBQcm90ZWN0aW9uIGZvciB0aGUgYXBpLyBmb2xkZXIgIC0tICBnb2VzIGludG8gcHVibGljX2h0bWwvYXBpLy5odGFjY2VzcwojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpPcHRpb25zIC1JbmRleGVzCgojIEJhY2t1cCBmaWxlcyBhbmQgYW55dGhpbmcgdGhhdCBpcyBub3QgYW4gZW5kcG9pbnQgYXJlIG5ldmVyIHNlcnZlZC4KIyBXaXRob3V0IHRoaXMsIGFwaS9fYXBpX2luYy5waHAuYmFrIHdvdWxkIGRvd25sb2FkIGFzIHBsYWluIHRleHQsIGRhdGFiYXNlCiMgY3JlZGVudGlhbHMgaW5jbHVkZWQuCjxGaWxlc01hdGNoICJcLihiYWt8b2xkfHNhdmV8b3JpZ3xjb3B5fHN3cHxzd298c3FsfHppcHxnenx0YXJ8dHh0fGxvZ3xqc29ufG1kfGluaXxjb25mfGRpc3R8ZXhhbXBsZXxzYW1wbGV8fikkIj4KICAgIFJlcXVpcmUgYWxsIGRlbmllZAo8L0ZpbGVzTWF0Y2g+Cgo8RmlsZXNNYXRjaCAifiQiPgogICAgUmVxdWlyZSBhbGwgZGVuaWVkCjwvRmlsZXNNYXRjaD4KCiMgX2FwaV9pbmMucGhwIGlzIHB1bGxlZCBpbiBieSB0aGUgb3RoZXIgZW5kcG9pbnRzIHRocm91Z2ggcmVxdWlyZV9vbmNlIChhdCB0aGUKIyBmaWxlc3lzdGVtIGxldmVsLCBub3Qgb3ZlciBIVFRQKSwgc28gaXQgaGFzIG5vIHJlYXNvbiB0byBiZSByZWFjaGFibGUuCjxGaWxlcyAiX2FwaV9pbmMucGhwIj4KICAgIFJlcXVpcmUgYWxsIGRlbmllZAo8L0ZpbGVzPgoKPEZpbGVzTWF0Y2ggIl5cLiI+CiAgICBSZXF1aXJlIGFsbCBkZW5pZWQKPC9GaWxlc01hdGNoPgo=', 'api/contact_submit.php' => 'PD9waHAKLyoqCiAqIFJlY2VpdmVzIGEgbWVzc2FnZSBmcm9tIGEgc2F0ZWxsaXRlJ3MgY29udGFjdCBmb3JtIGFuZCBzdG9yZXMgaXQgaW4KICogY29udGFjdF9tZXNzYWdlcy4gVGhlIGVtYWlsIG5vdGlmaWNhdGlvbiBpcyBzZW50IGZyb20gSEVSRSwgb24gdGhlIGFkbWluLAogKiB0aHJvdWdoIGNvcmUvc210cF9tYWlsZXIucGhwIC0tIHNvIHRoZSBzYXRlbGxpdGUgbmVlZHMgbm8gb3BlbiBTTVRQIHBvcnQuCiAqLwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2FwaV9pbmMucGhwJzsKcmVxdWlyZV9rZXkoKTsKCmlmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSAhPT0gJ1BPU1QnKSBqc29uX2VycignbWV0aG9kX25vdF9hbGxvd2VkJywgNDA1KTsKCiRzaXRlID0gcmVxdWlyZV9zaXRlKCk7CgokbmFtZSAgICA9IHRyaW0oKHN0cmluZykoJF9QT1NUWyduYW1lJ10gPz8gJycpKTsKJGVtYWlsICAgPSB0cmltKChzdHJpbmcpKCRfUE9TVFsnZW1haWwnXSA/PyAnJykpOwokcGhvbmUgICA9IHRyaW0oKHN0cmluZykoJF9QT1NUWydwaG9uZSddID8/ICcnKSk7CiRtZXNzYWdlID0gdHJpbSgoc3RyaW5nKSgkX1BPU1RbJ21lc3NhZ2UnXSA/PyAnJykpOwokaHAgICAgICA9IHRyaW0oKHN0cmluZykoJF9QT1NUWyd3ZWJzaXRlJ10gPz8gJycpKTsgICAvLyBob25leXBvdDogYm90cyBmaWxsIHRoaXMgaW4KCi8vIFRoZSBib3QgZ2V0cyBvaz10cnVlIGFuZCBnb2VzIGF3YXksIGJ1dCBub3RoaW5nIGlzIHN0b3JlZC4KaWYgKCRocCAhPT0gJycpIGpzb25fb3V0KFsnb2snID0+IHRydWVdKTsKCmlmICgkbmFtZSA9PT0gJycgfHwgJGVtYWlsID09PSAnJyB8fCAkbWVzc2FnZSA9PT0gJycpIGpzb25fZXJyKCdtaXNzaW5nX2ZpZWxkcycsIDQyMik7CmlmICghZmlsdGVyX3ZhcigkZW1haWwsIEZJTFRFUl9WQUxJREFURV9FTUFJTCkpICAgICAgIGpzb25fZXJyKCdpbnZhbGlkX2VtYWlsJywgNDIyKTsKaWYgKG1iX3N0cmxlbigkbmFtZSkgPiAyNTUgfHwgbWJfc3RybGVuKCRlbWFpbCkgPiAyNTUgfHwgbWJfc3RybGVuKCRwaG9uZSkgPiA1MCkgewogICAganNvbl9lcnIoJ2ZpZWxkX3Rvb19sb25nJywgNDIyKTsKfQppZiAobWJfc3RybGVuKCRtZXNzYWdlKSA+IDUwMDApIGpzb25fZXJyKCdtZXNzYWdlX3Rvb19sb25nJywgNDIyKTsKCi8vIHZlaGljbGVfaWQsIG9ubHkgaWYgdGhlIHZlaGljbGUgcmVhbGx5IGJlbG9uZ3MgdG8gdGhpcyBzaXRlCiR2ZWhpY2xlSWQgPSBudWxsOwppZiAoIWVtcHR5KCRfUE9TVFsndmVoaWNsZV9pZCddKSkgewogICAgJGNoayA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCB2LmlkIEZST00gdmVoaWNsZXMgdgogICAgICAgICAgICAgICAgICAgICAgICAgIEpPSU4gdmVoaWNsZV9zaXRlcyB2cyBPTiB2cy52ZWhpY2xlX2lkID0gdi5pZAogICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHYuaWQgPSA/IEFORCB2cy5zaXRlX2lkID0gPyBMSU1JVCAxIik7CiAgICAkY2hrLT5leGVjdXRlKFsoaW50KSRfUE9TVFsndmVoaWNsZV9pZCddLCAkc2l0ZVsnaWQnXV0pOwogICAgJHJvdyA9ICRjaGstPmZldGNoKCk7CiAgICBpZiAoJHJvdykgJHZlaGljbGVJZCA9IChpbnQpJHJvd1snaWQnXTsKfQoKLy8gc2ltcGxlIHRocm90dGxlOiBzYW1lIGVtYWlsLCBzYW1lIHNpdGUsIHdpdGhpbiB0aGUgbGFzdCA2MCBzZWNvbmRzCiRkdXAgPSBkYigpLT5wcmVwYXJlKCJTRUxFQ1QgQ09VTlQoKikgYyBGUk9NIGNvbnRhY3RfbWVzc2FnZXMKICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHNpdGVfaWQgPSA/IEFORCBlbWFpbCA9ID8gQU5EIGNyZWF0ZWRfYXQgPiAoTk9XKCkgLSBJTlRFUlZBTCA2MCBTRUNPTkQpIik7CiRkdXAtPmV4ZWN1dGUoWyRzaXRlWydpZCddLCAkZW1haWxdKTsKaWYgKChpbnQpJGR1cC0+ZmV0Y2goKVsnYyddID4gMCkganNvbl9lcnIoJ3Rvb19tYW55X3JlcXVlc3RzJywgNDI5KTsKCmRiKCktPnByZXBhcmUoIklOU0VSVCBJTlRPIGNvbnRhY3RfbWVzc2FnZXMgKHNpdGVfaWQsIHZlaGljbGVfaWQsIG5hbWUsIGVtYWlsLCBwaG9uZSwgbWVzc2FnZSkKICAgICAgICAgICAgICAgVkFMVUVTICg/LD8sPyw/LD8sPykiKQogICAgLT5leGVjdXRlKFskc2l0ZVsnaWQnXSwgJHZlaGljbGVJZCwgJG5hbWUsICRlbWFpbCwgJHBob25lLCAkbWVzc2FnZV0pOwoKLy8gbm90aWZ5IHRoZSBzaXRlJ3MgY29udGFjdCBhZGRyZXNzIChhIGZhaWx1cmUgbXVzdCBub3QgYnJlYWsgdGhlIHJlc3BvbnNlKQokbWFpbGVyID0gX19ESVJfXyAuICcvLi4vY29yZS9zbXRwX21haWxlci5waHAnOwppZiAoIWVtcHR5KCRzaXRlWydjb250YWN0X2VtYWlsJ10pICYmIGlzX2ZpbGUoJG1haWxlcikpIHsKICAgIHJlcXVpcmVfb25jZSAkbWFpbGVyOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnc210cF9zZW5kJykpIHsKICAgICAgICAkc3ViamVjdCA9ICdOZXcgZW5xdWlyeSAtICcgLiAkc2l0ZVsnY29tcGFueV9uYW1lJ107CiAgICAgICAgJGJvZHkgICAgPSAiTmFtZTogJG5hbWVcbkVtYWlsOiAkZW1haWxcblBob25lOiAkcGhvbmVcbiIKICAgICAgICAgICAgICAgICAuICgkdmVoaWNsZUlkID8gIlZlaGljbGUgSUQ6ICR2ZWhpY2xlSWRcbiIgOiAnJykKICAgICAgICAgICAgICAgICAuICJcbiRtZXNzYWdlXG4iOwogICAgICAgIEBzbXRwX3NlbmQoJHNpdGVbJ2NvbnRhY3RfZW1haWwnXSwgJHN1YmplY3QsICRib2R5LCAkZW1haWwsICRzaXRlWydjb21wYW55X25hbWUnXSk7CiAgICB9Cn0KCmpzb25fb3V0KFsnb2snID0+IHRydWVdKTsK', 'api/reviews.php' => 'PD9waHAKLyoqIEFwcHJvdmVkIHJldmlld3MgZm9yIG9uZSBzaXRlLiAqLwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2FwaV9pbmMucGhwJzsKcmVxdWlyZV9rZXkoKTsKCiRzaXRlICA9IHJlcXVpcmVfc2l0ZSgpOwokbGltaXQgPSBpc3NldCgkX0dFVFsnbGltaXQnXSkgPyBtYXgoMSwgbWluKDUwLCAoaW50KSRfR0VUWydsaW1pdCddKSkgOiAxMjsKCiRzdG10ID0gZGIoKS0+cHJlcGFyZSgiU0VMRUNUIHIuYXV0aG9yX25hbWUsIHIucmF0aW5nLCByLmNvbnRlbnQsIHIuaW1hZ2VfcGF0aCwgci5jcmVhdGVkX2F0CiAgICAgICAgICAgICAgICAgICAgICAgRlJPTSByZXZpZXdzIHIKICAgICAgICAgICAgICAgICAgICAgICBKT0lOIHJldmlld19zaXRlcyBycyBPTiBycy5yZXZpZXdfaWQgPSByLmlkCiAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnMuc2l0ZV9pZCA9ID8gQU5EIHIuaXNfYXBwcm92ZWQgPSAxCiAgICAgICAgICAgICAgICAgICAgICAgT1JERVIgQlkgci5jcmVhdGVkX2F0IERFU0MKICAgICAgICAgICAgICAgICAgICAgICBMSU1JVCAkbGltaXQiKTsKJHN0bXQtPmV4ZWN1dGUoWyRzaXRlWydpZCddXSk7CgokcmV2aWV3cyA9IGFycmF5X21hcChmdW5jdGlvbiAoJHIpIHsKICAgIHJldHVybiBbCiAgICAgICAgJ2F1dGhvcl9uYW1lJyA9PiAkclsnYXV0aG9yX25hbWUnXSwKICAgICAgICAncmF0aW5nJyAgICAgID0+IChpbnQpJHJbJ3JhdGluZyddLAogICAgICAgICdjb250ZW50JyAgICAgPT4gJHJbJ2NvbnRlbnQnXSwKICAgICAgICAnaW1hZ2VfdXJsJyAgID0+IHVwbG9hZF91cmwoJHJbJ2ltYWdlX3BhdGgnXSwgJ3ZlaGljbGVzJyksCiAgICAgICAgJ2NyZWF0ZWRfYXQnICA9PiAkclsnY3JlYXRlZF9hdCddLAogICAgXTsKfSwgJHN0bXQtPmZldGNoQWxsKCkpOwoKJGF2ZyA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCBST1VORChBVkcoci5yYXRpbmcpLDEpIGEsIENPVU5UKCopIGMgRlJPTSByZXZpZXdzIHIKICAgICAgICAgICAgICAgICAgICAgIEpPSU4gcmV2aWV3X3NpdGVzIHJzIE9OIHJzLnJldmlld19pZCA9IHIuaWQKICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHJzLnNpdGVfaWQgPSA/IEFORCByLmlzX2FwcHJvdmVkID0gMSIpOwokYXZnLT5leGVjdXRlKFskc2l0ZVsnaWQnXV0pOwokYWdnID0gJGF2Zy0+ZmV0Y2goKTsKCmpzb25fb3V0KFsKICAgICdvaycgICAgICA9PiB0cnVlLAogICAgJ3Jldmlld3MnID0+ICRyZXZpZXdzLAogICAgJ2F2ZXJhZ2UnID0+ICRhZ2dbJ2EnXSAhPT0gbnVsbCA/IChmbG9hdCkkYWdnWydhJ10gOiBudWxsLAogICAgJ3RvdGFsJyAgID0+IChpbnQpJGFnZ1snYyddLApdKTsK', 'api/site_info.php' => 'PD9waHAKLyoqIEEgc2l0ZSdzIHB1YmxpYyBkZXRhaWxzIHBsdXMgaXRzIGF2YWlsYWJsZSB2ZWhpY2xlIGNvdW50LiAqLwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2FwaV9pbmMucGhwJzsKcmVxdWlyZV9rZXkoKTsKCiRzaXRlID0gcmVxdWlyZV9zaXRlKCk7CgokYyA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCBDT1VOVCgqKSBjIEZST00gdmVoaWNsZXMgdgogICAgICAgICAgICAgICAgICAgIEpPSU4gdmVoaWNsZV9zaXRlcyB2cyBPTiB2cy52ZWhpY2xlX2lkID0gdi5pZAogICAgICAgICAgICAgICAgICAgIFdIRVJFIHZzLnNpdGVfaWQgPSA/IEFORCB2LnN0YXR1cyA8PiAnc29sZCciKTsKJGMtPmV4ZWN1dGUoWyRzaXRlWydpZCddXSk7Cgpqc29uX291dChbCiAgICAnb2snICAgICAgICAgICAgID0+IHRydWUsCiAgICAnc2l0ZScgICAgICAgICAgID0+IHNpdGVfcHVibGljKCRzaXRlKSwKICAgICd2ZWhpY2xlX2NvdW50JyAgPT4gKGludCkkYy0+ZmV0Y2goKVsnYyddLAogICAgJ3NlcnZlcl90aW1lJyAgICA9PiBkYXRlKCdjJyksCl0pOwo=', 'api/vehicle.php' => 'PD9waHAKLyoqCiAqIE9uZSB2ZWhpY2xlIGJ5IHNsdWcsIHdpdGggYWxsIGl0cyBwaG90b3MgcGx1cyBhIGZldyByZWxhdGVkIG9uZXMuCiAqIFRoZSBsb29rdXAgaXMgc2NvcGVkIHRvIHRoZSBhc2tpbmcgZG9tYWluJ3Mgc2l0ZSwgc28gYSBzYXRlbGxpdGUgY2Fubm90CiAqIHJlYWQgYW5vdGhlciBzaXRlJ3Mgc3RvY2suCiAqLwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvX2FwaV9pbmMucGhwJzsKcmVxdWlyZV9rZXkoKTsKCiRzaXRlID0gcmVxdWlyZV9zaXRlKCk7CiRzbHVnID0gdHJpbSgoc3RyaW5nKSgkX0dFVFsnc2x1ZyddID8/ICcnKSk7CmlmICgkc2x1ZyA9PT0gJycpIGpzb25fZXJyKCdtaXNzaW5nX3NsdWcnLCA0MDApOwoKJHN0bXQgPSBkYigpLT5wcmVwYXJlKCJTRUxFQ1Qgdi4qIEZST00gdmVoaWNsZXMgdgogICAgICAgICAgICAgICAgICAgICAgIEpPSU4gdmVoaWNsZV9zaXRlcyB2cyBPTiB2cy52ZWhpY2xlX2lkID0gdi5pZAogICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHZzLnNpdGVfaWQgPSA/IEFORCB2LnNsdWcgPSA/IExJTUlUIDEiKTsKJHN0bXQtPmV4ZWN1dGUoWyRzaXRlWydpZCddLCAkc2x1Z10pOwokdiA9ICRzdG10LT5mZXRjaCgpOwppZiAoISR2KSBqc29uX2Vycignbm90X2ZvdW5kJywgNDA0KTsKCiRpbWcgPSBkYigpLT5wcmVwYXJlKCJTRUxFQ1QgcGF0aCBGUk9NIHZlaGljbGVfaW1hZ2VzIFdIRVJFIHZlaGljbGVfaWQgPSA/IE9SREVSIEJZIHNvcnRfb3JkZXIgQVNDIik7CiRpbWctPmV4ZWN1dGUoWyR2WydpZCddXSk7CiRpbWFnZXMgPSBbXTsKZm9yZWFjaCAoJGltZy0+ZmV0Y2hBbGwoUERPOjpGRVRDSF9DT0xVTU4pIGFzICRwKSB7CiAgICAkaW1hZ2VzW10gPSB1cGxvYWRfdXJsKCRwLCAndmVoaWNsZXMnKTsKfQoKLy8gcmVsYXRlZCB2ZWhpY2xlczogc2FtZSBzaXRlLCBzYW1lIG1ha2Ugd2hlcmUgcG9zc2libGUsIG90aGVyd2lzZSBhbnkKJHJlbCA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCB2LnNsdWcsIHYudGl0bGUsIHYucHJpY2UsIHYubWlsZWFnZSwgdi55ZWFyLCB2LmZ1ZWwsIHYudHJhbnNtaXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCBwYXRoIEZST00gdmVoaWNsZV9pbWFnZXMgdmkgV0hFUkUgdmkudmVoaWNsZV9pZD12LmlkIE9SREVSIEJZIHZpLnNvcnRfb3JkZXIgTElNSVQgMSkgY292ZXIKICAgICAgICAgICAgICAgICAgICAgIEZST00gdmVoaWNsZXMgdgogICAgICAgICAgICAgICAgICAgICAgSk9JTiB2ZWhpY2xlX3NpdGVzIHZzIE9OIHZzLnZlaGljbGVfaWQgPSB2LmlkCiAgICAgICAgICAgICAgICAgICAgICBXSEVSRSB2cy5zaXRlX2lkID0gPyBBTkQgdi5pZCA8PiA/IEFORCB2LnN0YXR1cyA8PiAnc29sZCcKICAgICAgICAgICAgICAgICAgICAgIE9SREVSIEJZICh2Lm1ha2UgPSA/KSBERVNDLCB2LmNyZWF0ZWRfYXQgREVTQwogICAgICAgICAgICAgICAgICAgICAgTElNSVQgMyIpOwokcmVsLT5leGVjdXRlKFskc2l0ZVsnaWQnXSwgJHZbJ2lkJ10sIChzdHJpbmcpJHZbJ21ha2UnXV0pOwokcmVsYXRlZCA9IGFycmF5X21hcChmdW5jdGlvbiAoJHIpIHsKICAgIHJldHVybiBbCiAgICAgICAgJ3NsdWcnICAgICAgICAgPT4gJHJbJ3NsdWcnXSwKICAgICAgICAndGl0bGUnICAgICAgICA9PiAkclsndGl0bGUnXSwKICAgICAgICAncHJpY2UnICAgICAgICA9PiAoZmxvYXQpJHJbJ3ByaWNlJ10sCiAgICAgICAgJ21pbGVhZ2UnICAgICAgPT4gKGludCkkclsnbWlsZWFnZSddLAogICAgICAgICd5ZWFyJyAgICAgICAgID0+ICRyWyd5ZWFyJ10gIT09IG51bGwgPyAoaW50KSRyWyd5ZWFyJ10gOiBudWxsLAogICAgICAgICdmdWVsJyAgICAgICAgID0+ICRyWydmdWVsJ10sCiAgICAgICAgJ3RyYW5zbWlzc2lvbicgPT4gJHJbJ3RyYW5zbWlzc2lvbiddLAogICAgICAgICdjb3ZlcicgICAgICAgID0+IHVwbG9hZF91cmwoJHJbJ2NvdmVyJ10sICd2ZWhpY2xlcycpLAogICAgXTsKfSwgJHJlbC0+ZmV0Y2hBbGwoKSk7Cgpqc29uX291dChbJ29rJyA9PiB0cnVlLCAndmVoaWNsZScgPT4gWwogICAgJ2lkJyAgICAgICAgICAgICAgICAgID0+IChpbnQpJHZbJ2lkJ10sCiAgICAnc2x1ZycgICAgICAgICAgICAgICAgPT4gJHZbJ3NsdWcnXSwKICAgICd0aXRsZScgICAgICAgICAgICAgICA9PiAkdlsndGl0bGUnXSwKICAgICdtYWtlJyAgICAgICAgICAgICAgICA9PiAkdlsnbWFrZSddLAogICAgJ21vZGVsJyAgICAgICAgICAgICAgID0+ICR2Wydtb2RlbCddLAogICAgJ3ZhcmlhbnQnICAgICAgICAgICAgID0+ICR2Wyd2YXJpYW50J10sCiAgICAncmVnaXN0cmF0aW9uX251bWJlcicgPT4gJHZbJ3JlZ2lzdHJhdGlvbl9udW1iZXInXSwKICAgICd5ZWFyJyAgICAgICAgICAgICAgICA9PiAkdlsneWVhciddICE9PSBudWxsID8gKGludCkkdlsneWVhciddIDogbnVsbCwKICAgICdtaWxlYWdlJyAgICAgICAgICAgICA9PiAoaW50KSR2WydtaWxlYWdlJ10sCiAgICAnZnVlbCcgICAgICAgICAgICAgICAgPT4gJHZbJ2Z1ZWwnXSwKICAgICd0cmFuc21pc3Npb24nICAgICAgICA9PiAkdlsndHJhbnNtaXNzaW9uJ10sCiAgICAnYm9keV90eXBlJyAgICAgICAgICAgPT4gJHZbJ2JvZHlfdHlwZSddLAogICAgJ2NvbG9yJyAgICAgICAgICAgICAgID0+ICR2Wydjb2xvciddLAogICAgJ21vdF9leHBpcnknICAgICAgICAgID0+ICR2Wydtb3RfZXhwaXJ5J10sCiAgICAncHJpY2UnICAgICAgICAgICAgICAgPT4gKGZsb2F0KSR2WydwcmljZSddLAogICAgJ3N0YXR1cycgICAgICAgICAgICAgID0+ICR2WydzdGF0dXMnXSwKICAgICdkZXNjcmlwdGlvbicgICAgICAgICA9PiAkdlsnZGVzY3JpcHRpb24nXSwKICAgICdpbWFnZXMnICAgICAgICAgICAgICA9PiAkaW1hZ2VzLApdLCAncmVsYXRlZCcgPT4gJHJlbGF0ZWRdKTsK', 'api/vehicles.php' => 'PD9waHAKLyoqCiAqIE9uZSBzaXRlJ3MgdmVoaWNsZSBsaXN0LCB3aXRoIGZpbHRlcnMuCiAqIFBhcmFtczogZG9tYWluIChyZXF1aXJlZCksIHEsIG1ha2UsIG1vZGVsLCBib2R5X3R5cGUsIGZ1ZWwsIHRyYW5zbWlzc2lvbiwKICogICAgICAgICBwcmljZSAoYmFuZCAiMC01MDAwIiksIHN0YXR1cywgbGltaXQuCiAqIEFsc28gcmV0dXJucyB0aGUgZGlzdGluY3QgbWFrZSAvIGJvZHlfdHlwZSAvIGZ1ZWwgbGlzdHMgdXNlZCBieSB0aGUgZmlsdGVyIGJhci4KICovCnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9fYXBpX2luYy5waHAnOwpyZXF1aXJlX2tleSgpOwoKJHNpdGUgPSByZXF1aXJlX3NpdGUoKTsKJHNpZCAgPSAkc2l0ZVsnaWQnXTsKCi8vIEEgdmVoaWNsZSBhcHBlYXJzIG9uIGEgc2l0ZSB0aHJvdWdoIHRoZSB2ZWhpY2xlX3NpdGVzIGpvaW4gdGFibGUuCiR3aGVyZSAgPSBbJ0VYSVNUUyAoU0VMRUNUIDEgRlJPTSB2ZWhpY2xlX3NpdGVzIHZzIFdIRVJFIHZzLnZlaGljbGVfaWQgPSB2LmlkIEFORCB2cy5zaXRlX2lkID0gPyknXTsKJHBhcmFtcyA9IFskc2lkXTsKCi8vIHNvbGQgdmVoaWNsZXMgYXJlIGhpZGRlbiBieSBkZWZhdWx0CiRzdGF0dXMgPSB0cmltKChzdHJpbmcpKCRfR0VUWydzdGF0dXMnXSA/PyAnJykpOwppZiAoJHN0YXR1cyA9PT0gJycgKSB7CiAgICAkd2hlcmVbXSA9ICJ2LnN0YXR1cyA8PiAnc29sZCciOwp9IGVsc2VpZiAoaW5fYXJyYXkoJHN0YXR1cywgWydhdmFpbGFibGUnLCAncmVzZXJ2ZWQnLCAnc29sZCddLCB0cnVlKSkgewogICAgJHdoZXJlW10gPSAndi5zdGF0dXMgPSA/JzsKICAgICRwYXJhbXNbXSA9ICRzdGF0dXM7Cn0KCiRxID0gdHJpbSgoc3RyaW5nKSgkX0dFVFsncSddID8/ICcnKSk7CmlmICgkcSAhPT0gJycpIHsKICAgICR3aGVyZVtdID0gJyh2LnRpdGxlIExJS0UgPyBPUiB2Lm1ha2UgTElLRSA/IE9SIHYubW9kZWwgTElLRSA/IE9SIHYueWVhciBMSUtFID8gT1Igdi5mdWVsIExJS0UgPyknOwogICAgJGxpa2UgPSAnJScgLiAkcSAuICclJzsKICAgIGFycmF5X3B1c2goJHBhcmFtcywgJGxpa2UsICRsaWtlLCAkbGlrZSwgJGxpa2UsICRsaWtlKTsKfQoKZm9yZWFjaCAoWydtYWtlJyA9PiAndi5tYWtlJywgJ21vZGVsJyA9PiAndi5tb2RlbCcsICdib2R5X3R5cGUnID0+ICd2LmJvZHlfdHlwZScsCiAgICAgICAgICAnZnVlbCcgPT4gJ3YuZnVlbCcsICd0cmFuc21pc3Npb24nID0+ICd2LnRyYW5zbWlzc2lvbiddIGFzICRnZXQgPT4gJGNvbCkgewogICAgJHZhbCA9IHRyaW0oKHN0cmluZykoJF9HRVRbJGdldF0gPz8gJycpKTsKICAgIGlmICgkdmFsICE9PSAnJykgeyAkd2hlcmVbXSA9ICIkY29sID0gPyI7ICRwYXJhbXNbXSA9ICR2YWw7IH0KfQoKJGJhbmQgPSB0cmltKChzdHJpbmcpKCRfR0VUWydwcmljZSddID8/ICcnKSk7CiRiYW5kcyA9IFsKICAgICcwLTUwMDAnICAgICAgID0+IFswLCA1MDAwXSwKICAgICc1MDAwLTEwMDAwJyAgID0+IFs1MDAwLCAxMDAwMF0sCiAgICAnMTAwMDAtMjAwMDAnICA9PiBbMTAwMDAsIDIwMDAwXSwKICAgICcyMDAwMC05OTk5OTknID0+IFsyMDAwMCwgOTk5OTk5OTk5XSwKXTsKaWYgKCRiYW5kICE9PSAnJyAmJiBpc3NldCgkYmFuZHNbJGJhbmRdKSkgewogICAgJHdoZXJlW10gID0gJ3YucHJpY2UgPj0gPyBBTkQgdi5wcmljZSA8PSA/JzsKICAgICRwYXJhbXNbXSA9ICRiYW5kc1skYmFuZF1bMF07CiAgICAkcGFyYW1zW10gPSAkYmFuZHNbJGJhbmRdWzFdOwp9CgokbGltaXQgPSBpc3NldCgkX0dFVFsnbGltaXQnXSkgPyBtYXgoMSwgbWluKDIwMCwgKGludCkkX0dFVFsnbGltaXQnXSkpIDogMTIwOwoKJHNxbCA9ICJTRUxFQ1Qgdi4qLAogICAgICAgIChTRUxFQ1QgcGF0aCBGUk9NIHZlaGljbGVfaW1hZ2VzIHZpIFdIRVJFIHZpLnZlaGljbGVfaWQgPSB2LmlkIE9SREVSIEJZIHZpLnNvcnRfb3JkZXIgTElNSVQgMSkgQVMgY292ZXIKICAgICAgICBGUk9NIHZlaGljbGVzIHYKICAgICAgICBXSEVSRSAiIC4gaW1wbG9kZSgnIEFORCAnLCAkd2hlcmUpIC4gIgogICAgICAgIE9SREVSIEJZIHYuY3JlYXRlZF9hdCBERVNDCiAgICAgICAgTElNSVQgJGxpbWl0IjsKCiRzdG10ID0gZGIoKS0+cHJlcGFyZSgkc3FsKTsKJHN0bXQtPmV4ZWN1dGUoJHBhcmFtcyk7CiRyb3dzID0gJHN0bXQtPmZldGNoQWxsKCk7CgokdmVoaWNsZXMgPSBhcnJheV9tYXAoZnVuY3Rpb24gKCR2KSB7CiAgICByZXR1cm4gWwogICAgICAgICdpZCcgICAgICAgICAgICAgICAgICA9PiAoaW50KSR2WydpZCddLAogICAgICAgICdzbHVnJyAgICAgICAgICAgICAgICA9PiAkdlsnc2x1ZyddLAogICAgICAgICd0aXRsZScgICAgICAgICAgICAgICA9PiAkdlsndGl0bGUnXSwKICAgICAgICAnbWFrZScgICAgICAgICAgICAgICAgPT4gJHZbJ21ha2UnXSwKICAgICAgICAnbW9kZWwnICAgICAgICAgICAgICAgPT4gJHZbJ21vZGVsJ10sCiAgICAgICAgJ3ZhcmlhbnQnICAgICAgICAgICAgID0+ICR2Wyd2YXJpYW50J10sCiAgICAgICAgJ3JlZ2lzdHJhdGlvbl9udW1iZXInID0+ICR2WydyZWdpc3RyYXRpb25fbnVtYmVyJ10sCiAgICAgICAgJ3llYXInICAgICAgICAgICAgICAgID0+ICR2Wyd5ZWFyJ10gIT09IG51bGwgPyAoaW50KSR2Wyd5ZWFyJ10gOiBudWxsLAogICAgICAgICdtaWxlYWdlJyAgICAgICAgICAgICA9PiAoaW50KSR2WydtaWxlYWdlJ10sCiAgICAgICAgJ2Z1ZWwnICAgICAgICAgICAgICAgID0+ICR2WydmdWVsJ10sCiAgICAgICAgJ3RyYW5zbWlzc2lvbicgICAgICAgID0+ICR2Wyd0cmFuc21pc3Npb24nXSwKICAgICAgICAnYm9keV90eXBlJyAgICAgICAgICAgPT4gJHZbJ2JvZHlfdHlwZSddLAogICAgICAgICdjb2xvcicgICAgICAgICAgICAgICA9PiAkdlsnY29sb3InXSwKICAgICAgICAncHJpY2UnICAgICAgICAgICAgICAgPT4gKGZsb2F0KSR2WydwcmljZSddLAogICAgICAgICdzdGF0dXMnICAgICAgICAgICAgICA9PiAkdlsnc3RhdHVzJ10sCiAgICAgICAgJ2NvdmVyJyAgICAgICAgICAgICAgID0+IHVwbG9hZF91cmwoJHZbJ2NvdmVyJ10sICd2ZWhpY2xlcycpLAogICAgXTsKfSwgJHJvd3MpOwoKLy8gZGlzdGluY3QgdmFsdWVzIGZvciB0aGUgZmlsdGVyIGJhcgokZmFjZXQgPSBmdW5jdGlvbiAoJGNvbCkgdXNlICgkc2lkKSB7CiAgICAkcyA9IGRiKCktPnByZXBhcmUoIlNFTEVDVCBESVNUSU5DVCB2LiRjb2wgQVMgdiBGUk9NIHZlaGljbGVzIHYKICAgICAgICAgICAgICAgICAgICAgICAgSk9JTiB2ZWhpY2xlX3NpdGVzIHZzIE9OIHZzLnZlaGljbGVfaWQgPSB2LmlkCiAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHZzLnNpdGVfaWQgPSA/IEFORCB2LnN0YXR1cyA8PiAnc29sZCcKICAgICAgICAgICAgICAgICAgICAgICAgICBBTkQgdi4kY29sIElTIE5PVCBOVUxMIEFORCB2LiRjb2wgPD4gJycKICAgICAgICAgICAgICAgICAgICAgICAgT1JERVIgQlkgdi4kY29sIik7CiAgICAkcy0+ZXhlY3V0ZShbJHNpZF0pOwogICAgcmV0dXJuICRzLT5mZXRjaEFsbChQRE86OkZFVENIX0NPTFVNTik7Cn07Cgpqc29uX291dChbCiAgICAnb2snICAgICAgID0+IHRydWUsCiAgICAnY291bnQnICAgID0+IGNvdW50KCR2ZWhpY2xlcyksCiAgICAndmVoaWNsZXMnID0+ICR2ZWhpY2xlcywKICAgICdmaWx0ZXJzJyAgPT4gWwogICAgICAgICdtYWtlcycgICAgICAgICA9PiAkZmFjZXQoJ21ha2UnKSwKICAgICAgICAnbW9kZWxzJyAgICAgICAgPT4gJGZhY2V0KCdtb2RlbCcpLAogICAgICAgICdib2R5X3R5cGVzJyAgICA9PiAkZmFjZXQoJ2JvZHlfdHlwZScpLAogICAgICAgICdmdWVscycgICAgICAgICA9PiAkZmFjZXQoJ2Z1ZWwnKSwKICAgICAgICAndHJhbnNtaXNzaW9ucycgPT4gJGZhY2V0KCd0cmFuc21pc3Npb24nKSwKICAgIF0sCl0pOwo=', 'superadmin/.htaccess' => 'IyBUaGUgcGFuZWwgbW92ZWQgdG8gL2FkbWluLyAuIEV2ZXJ5IHJlcXVlc3QgdG8gL3N1cGVyYWRtaW4vIGdvZXMgdGhlcmUuCjxJZk1vZHVsZSBtb2RfcmV3cml0ZS5jPgogICAgUmV3cml0ZUVuZ2luZSBPbgogICAgUmV3cml0ZVJ1bGUgXmxvZ2luXC5waHAkIC9hZG1pbi9sb2dpbi5waHAgW1I9MzAxLExdCiAgICBSZXdyaXRlUnVsZSBeKC4qKSQgL2FkbWluL2Rhc2hib2FyZC5waHAgW1I9MzAxLExdCjwvSWZNb2R1bGU+Cg==', 'superadmin/index.php' => 'PD9waHAKLy8gVGhlIHBhbmVsIG1vdmVkIHRvIC9hZG1pbi8uIFRoaXMga2VlcHMgb2xkIGxpbmtzIHdvcmtpbmcuCiR0byA9ICcuLi9hZG1pbi8nIC4gYmFzZW5hbWUoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pIDsKaGVhZGVyKCdMb2NhdGlvbjogLi4vYWRtaW4vZGFzaGJvYXJkLnBocCcsIHRydWUsIDMwMSk7CmV4aXQ7Cg==', ]; if (!isset($_GET['t']) || !hash_equals(SETUP_TOKEN, (string)$_GET['t'])) { http_response_code(403); exit('Forbidden.'); } @set_time_limit(120); header('Content-Type: text/html; charset=utf-8'); $ROOT = __DIR__; $TS = date('Ymd-His'); $rows = []; $hard = false; function step(&$rows, $label, $ok, $detail, $isHard = false) { global $hard; $rows[] = ['l' => $label, 'ok' => $ok, 'd' => $detail]; if (!$ok && $isHard) $hard = true; return $ok; } /* ------------------------- database connection ------------------------- */ if (!is_file($ROOT . '/config.php')) { step($rows, 'config.php', false, 'Not found in ' . htmlspecialchars($ROOT) . '. Upload the script into public_html, next to config.php.', true); } else { require_once $ROOT . '/config.php'; } $pdo = null; if (!$hard) { try { $pdo = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8mb4', DB_USER, DB_PASS, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]); step($rows, 'Database connection', true, 'OK to ' . htmlspecialchars(DB_NAME)); } catch (PDOException $e) { step($rows, 'Database connection', false, htmlspecialchars($e->getMessage()), true); } } /* --------------------------- schema helpers --------------------------- */ function tbl_exists($pdo, $t) { $s = $pdo->prepare("SELECT COUNT(*) c FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?"); $s->execute([$t]); return (int)$s->fetch()['c'] > 0; } function idx_exists($pdo, $t, $i) { $s = $pdo->prepare("SELECT COUNT(*) c FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ? AND INDEX_NAME = ?"); $s->execute([$t, $i]); return (int)$s->fetch()['c'] > 0; } function fk_names($pdo, $t, $col) { $s = $pdo->prepare("SELECT CONSTRAINT_NAME n FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ? AND COLUMN_NAME = ? AND REFERENCED_TABLE_NAME IS NOT NULL"); $s->execute([$t, $col]); return $s->fetchAll(PDO::FETCH_COLUMN); } /* ---------------------------- 1. MIGRATION ---------------------------- */ if ($pdo) { try { // join table if (!tbl_exists($pdo, 'vehicle_sites')) { $pdo->exec("CREATE TABLE vehicle_sites ( vehicle_id INT(11) NOT NULL, site_id INT(11) NOT NULL, PRIMARY KEY (vehicle_id, site_id), KEY site_id (site_id), CONSTRAINT fk_vs_vehicle FOREIGN KEY (vehicle_id) REFERENCES vehicles (id) ON DELETE CASCADE, CONSTRAINT fk_vs_site FOREIGN KEY (site_id) REFERENCES sites (id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci"); step($rows, 'Table vehicle_sites', true, 'created'); } else { step($rows, 'Table vehicle_sites', true, 'already there, left alone'); } // migrate the existing links $cols = $pdo->query("SHOW COLUMNS FROM vehicles LIKE 'site_id'")->fetch(); if ($cols) { $n = $pdo->exec("INSERT IGNORE INTO vehicle_sites (vehicle_id, site_id) SELECT v.id, v.site_id FROM vehicles v WHERE v.site_id IS NOT NULL AND EXISTS (SELECT 1 FROM sites s WHERE s.id = v.site_id)"); step($rows, 'Vehicle-site links migrated', true, $n . ' link(s) moved from vehicles.site_id'); } // platform-wide unique slug $dups = $pdo->query("SELECT slug, COUNT(*) c FROM vehicles GROUP BY slug HAVING c > 1")->fetchAll(); $fixed = 0; foreach ($dups as $d) { $ids = $pdo->prepare("SELECT id FROM vehicles WHERE slug = ? ORDER BY id"); $ids->execute([$d['slug']]); $list = $ids->fetchAll(PDO::FETCH_COLUMN); array_shift($list); // the first one keeps the original slug $i = 2; foreach ($list as $vid) { $pdo->prepare("UPDATE vehicles SET slug = ? WHERE id = ?")->execute([$d['slug'] . '-' . $i, $vid]); $i++; $fixed++; } } step($rows, 'Duplicate slugs', true, $fixed ? $fixed . ' renamed to stay unique' : 'none'); // reviews can also appear on several sites if (!tbl_exists($pdo, 'review_sites')) { $pdo->exec("CREATE TABLE review_sites ( review_id INT(11) NOT NULL, site_id INT(11) NOT NULL, PRIMARY KEY (review_id, site_id), KEY site_id (site_id), CONSTRAINT fk_rs_review FOREIGN KEY (review_id) REFERENCES reviews (id) ON DELETE CASCADE, CONSTRAINT fk_rs_site FOREIGN KEY (site_id) REFERENCES sites (id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci"); step($rows, 'Table review_sites', true, 'created'); } else { step($rows, 'Table review_sites', true, 'already there, left alone'); } if ($pdo->query("SHOW COLUMNS FROM reviews LIKE 'site_id'")->fetch()) { $nr = $pdo->exec("INSERT IGNORE INTO review_sites (review_id, site_id) SELECT r.id, r.site_id FROM reviews r WHERE r.site_id IS NOT NULL AND EXISTS (SELECT 1 FROM sites s WHERE s.id = r.site_id)"); step($rows, 'Review-site links migrated', true, $nr . ' link(s) moved from reviews.site_id'); foreach (fk_names($pdo, 'reviews', 'site_id') as $fk) { $pdo->exec("ALTER TABLE reviews DROP FOREIGN KEY `" . $fk . "`"); } $pdo->exec("ALTER TABLE reviews MODIFY site_id INT(11) NULL"); step($rows, 'Column reviews.site_id', true, 'now optional; review_sites is the source of truth'); } // drop the dependency on vehicles.site_id foreach (fk_names($pdo, 'vehicles', 'site_id') as $fk) { $pdo->exec("ALTER TABLE vehicles DROP FOREIGN KEY `" . $fk . "`"); } if (idx_exists($pdo, 'vehicles', 'uniq_site_slug')) { $pdo->exec("ALTER TABLE vehicles DROP INDEX uniq_site_slug"); } if (!idx_exists($pdo, 'vehicles', 'uniq_slug')) { $pdo->exec("ALTER TABLE vehicles ADD UNIQUE KEY uniq_slug (slug)"); } $pdo->exec("ALTER TABLE vehicles MODIFY site_id INT(11) NULL"); step($rows, 'Column vehicles.site_id', true, 'now optional; vehicle_sites is the source of truth'); // site admin accounts have nowhere left to log in $del = $pdo->exec("DELETE FROM users WHERE role = 'site_admin'"); step($rows, 'site_admin accounts', true, $del ? $del . ' account(s) permanently deleted' : 'none to delete'); if (tbl_exists($pdo, 'impersonation_tokens')) { $pdo->exec("DROP TABLE impersonation_tokens"); step($rows, 'Table impersonation_tokens', true, 'dropped, impersonation is gone'); } else { step($rows, 'Table impersonation_tokens', true, 'not present'); } $sa = (int)$pdo->query("SELECT COUNT(*) c FROM users WHERE role='super_admin' AND is_active=1")->fetch()['c']; step($rows, 'Admin account', $sa > 0, $sa > 0 ? $sa . ' active account(s)' : 'NO active super_admin account. You will not be able to log in to /admin/.', true); } catch (PDOException $e) { step($rows, 'Database migration', false, htmlspecialchars($e->getMessage()), true); } } /* ------------------------ 2. BACKUP AND WRITE ------------------------ */ $written = 0; $backed = 0; $errors = []; if (!$hard) { $backupDir = $ROOT . '/_backup-' . $TS; // the old panel is moved to the backup folder if (is_dir($ROOT . '/superadmin')) { @mkdir($backupDir, 0755, true); @file_put_contents($backupDir . '/.htaccess', "Require all denied\n"); if (@rename($ROOT . '/superadmin', $backupDir . '/superadmin')) { step($rows, 'Old /superadmin/', true, 'moved to _backup-' . $TS . '/superadmin/ (blocked from the browser)'); } else { step($rows, 'Old /superadmin/', false, 'could not be moved; move it manually from File Manager'); } } foreach ($FILES as $rel => $b64) { $dest = $ROOT . '/' . $rel; $dir = dirname($dest); if (!is_dir($dir) && !@mkdir($dir, 0755, true)) { $errors[] = "cannot create $dir"; continue; } if (is_file($dest)) { @mkdir($backupDir, 0755, true); @file_put_contents($backupDir . '/.htaccess', "Require all denied\n"); $bdest = $backupDir . '/' . $rel; @mkdir(dirname($bdest), 0755, true); if (@copy($dest, $bdest)) $backed++; } if (@file_put_contents($dest, base64_decode($b64)) !== false) $written++; else $errors[] = $rel; } step($rows, 'Files written', empty($errors), $written . ' written, ' . $backed . ' saved to backup' . ($errors ? '
Failed: ' . htmlspecialchars(implode(', ', $errors)) . '' : '')); foreach (['uploads/vehicles', 'uploads/logos'] as $d) { if (!is_dir($ROOT . '/' . $d)) @mkdir($ROOT . '/' . $d, 0755, true); } step($rows, 'Upload folders', is_dir($ROOT . '/uploads/vehicles') && is_dir($ROOT . '/uploads/logos'), 'checked'); // _api_inc.php is left alone: it holds the DB password and the API key step($rows, 'api/_api_inc.php', true, 'left untouched (holds API_KEY and the DB credentials)'); } /* ------------------------------ REPORT ------------------------------ */ $allOk = true; foreach ($rows as $r) if (!$r['ok']) $allOk = false; $scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http'; $base = $scheme . '://' . ($_SERVER['HTTP_HOST'] ?? 'localhost'); ?> Panel update

✓' : 'no">✗' ?>
The script could NOT delete itself; remove it manually. '; } echo 'Generated ' . date('Y-m-d H:i:s'); ?>