rendered paste bodybase64_decode("DQovKg0KICogTXlTUUwgV2ViIEludGVyZmFjZSBWZXJzaW9uIDAuOA0KICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogRGV2ZWxvcGVkIEJ5IFNvb01pbiBLaW0gKHNta2ltQHBvcGV5ZS5zbnUuYWMua3IpDQogKiBMaWNlbnNlIDogR05VIFB1YmxpYyBMaWNlbnNlIChHUEwpDQogKiBIb21lcGFnZSA6IGh0dHA6Ly9wb3BleWUuc251LmFjLmtyL35zbWtpbS9teXNxbA0KICovDQoNCiRIT1NUTkFNRSA9ICJsb2NhbGhvc3QiOw0KDQpmdW5jdGlvbiBsb2dvbigpIHsNCglnbG9iYWwgJFBIUF9TRUxGOw0KDQoJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWluX3VzZXJuYW1lIiApOw0KCXNldGNvb2tpZSggIm15c3FsX3dlYl9hZG1pbl9wYXNzd29yZCIgKTsNCgllY2hvICI8aHRtbD5cbiI7DQoJZWNobyAiPGhlYWQ+XG4iOw0KCWVjaG8gIjx0aXRsZT5NeVNRTCBXZWIgSW50ZXJmYWNlPC90aXRsZT5cbiI7DQoJZWNobyAiPC9oZWFkPlxuIjsNCgllY2hvICI8Ym9keT5cbiI7DQoJZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCU+PHRyPjx0ZD48Y2VudGVyPlxuIjsNCgllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9Mj48dHI+PHRkIGJnY29sb3I9I2E0YTI2MD48Y2VudGVyPlxuIjsNCgllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9MjA+PHRyPjx0ZCBiZ2NvbG9yPSNmZmZmZmY+PGNlbnRlcj5cbiI7DQoJZWNobyAiPGgxPk15U1FMIFdlYiBJbnRlcmZhY2U8L2gxPlxuIjsNCgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1ZT1sb2dvbl9zdWJtaXQ+XG4iOw0KCWVjaG8gIjx0YWJsZSBjZWxscGFkZGluZz01IGNlbGxzcGFjaW5nPTE+XG4iOw0KCWVjaG8gIjx0cj48dGQ+VXNlcm5hbWUgPC90ZD48dGQ+IDxpbnB1dCB0eXBlPXRleHQgbmFtZT11c2VybmFtZT48L3RkPjwvdHI+XG4iOw0KCWVjaG8gIjx0cj48dGQ+UGFzc3dvcmQgPC90ZD48dGQ+IDxpbnB1dCB0eXBlPXBhc3N3b3JkIG5hbWU9cGFzc3dvcmQ+PC90ZD48L3RyPlxuIjsNCgllY2hvICI8L3RhYmxlPjxwPlxuIjsNCgllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0VudGVyJz5cbiI7DQoJZWNobyAiPGlucHV0IHR5cGU9cmVzZXQgdmFsdWU9J0NsZWFyJz48YnI+XG4iOw0KCWVjaG8gIjwvZm9ybT5cbiI7DQoJZWNobyAiPC9jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+XG4iOw0KCWVjaG8gIjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPlxuIjsNCgllY2hvICI8cD48aHIgd2lkdGg9MzAwPlxuIjsNCgllY2hvICI8Zm9udCBzaXplPTI+XG4iOw0KCWVjaG8gIkNvcHlsZWZ0ICZjb3B5OyBzaW5jZSAxOTk5LFxuIjsNCgllY2hvICI8YSBocmVmPSdtYWlsdG86c21raW03NkBpY3FtYWlsLmNvbSc+U29vTWluIEtpbTwvYT48YnI+XG4iOw0KCWVjaG8gIjxhIGhyZWY9J2h0dHA6Ly9wb3BleWUuc251LmFjLmtyL35zbWtpbS9teXNxbCc+SG9tcGFnZTxhPiBpcyBhdmFpbGFibGU8YnI+IjsNCgllY2hvICI8L2ZvbnQ+XG4iOw0KCWVjaG8gIjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPlxuIjsNCgllY2hvICI8L2JvZHk+XG4iOw0KCWVjaG8gIjwvaHRtbD5cbiI7DQp9DQoNCmZ1bmN0aW9uIGxvZ29uX3N1Ym1pdCgpIHsNCglnbG9iYWwgJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRQSFBfU0VMRjsNCg0KCXNldGNvb2tpZSggIm15c3FsX3dlYl9hZG1pbl91c2VybmFtZSIsICR1c2VybmFtZSApOw0KCXNldGNvb2tpZSggIm15c3FsX3dlYl9hZG1pbl9wYXNzd29yZCIsICRwYXNzd29yZCApOw0KCWVjaG8gIjxodG1sPiI7DQoJZWNobyAiPGhlYWQ+IjsNCgllY2hvICI8TUVUQSBIVFRQLUVRVUlWPVJlZnJlc2ggQ09OVEVOVD0nMDsgVVJMPSRQSFBfU0VMRj9hY3Rpb249bGlzdERCcyc+IjsNCgllY2hvICI8L2hlYWQ+IjsNCgllY2hvICI8L2h0bWw+IjsNCn0NCg0KZnVuY3Rpb24gZWNob1F1ZXJ5UmVzdWx0KCkgew0KCWdsb2JhbCAkcXVlcnlTdHIsICRlcnJNc2c7DQoNCglpZiggJGVyck1zZyA9PSAiIiApICRlcnJNc2cgPSAiU3VjY2VzcyI7DQoJaWYoICRxdWVyeVN0ciAhPSAiIiApIHsNCgkJZWNobyAiPHRhYmxlIGNlbGxwYWRkaW5nPTU+XG4iOw0KCQllY2hvICI8dHI+PHRkPlF1ZXJ5PC90ZD48dGQ+JHF1ZXJ5U3RyPC90ZD48L3RyPlxuIjsNCgkJZWNobyAiPHRyPjx0ZD5SZXN1bHQ8L3RkPjx0ZD4kZXJyTXNnPC90ZD48L3RyPlxuIjsNCgkJZWNobyAiPC90YWJsZT48cD5cbiI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBsaXN0RGF0YWJhc2VzKCkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRQSFBfU0VMRjsNCg0KCWVjaG8gIjxoMT5EYXRhYmFzZSBMaXN0PC9oMT5cbiI7DQoNCgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1ZT1jcmVhdGVEQj5cbiI7DQoJZWNobyAiPGlucHV0IHR5cGU9dGV4dCBuYW1lPWRibmFtZT5cbiI7DQoJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdDcmVhdGUgRGF0YWJhc2UnPlxuIjsNCgllY2hvICI8L2Zvcm0+XG4iOw0KCWVjaG8gIjxocj5cbiI7DQoNCgllY2hvICI8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz01PlxuIjsNCg0KCSRwREIgPSBteXNxbF9saXN0X2RicyggJG15c3FsSGFuZGxlICk7DQoJJG51bSA9IG15c3FsX251bV9yb3dzKCAkcERCICk7DQoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsNCgkJJGRibmFtZSA9IG15c3FsX2RibmFtZSggJHBEQiwgJGkgKTsNCgkJZWNobyAiPHRyPlxuIjsNCgkJZWNobyAiPHRkPiRkYm5hbWU8L3RkPlxuIjsNCgkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bGlzdFRhYmxlcyZkYm5hbWU9JGRibmFtZSc+VGFibGU8L2E+PC90ZD5cbiI7DQoJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWRyb3BEQiZkYm5hbWU9JGRibmFtZScgb25DbGljaz1cInJldHVybiBjb25maXJtKCdEcm9wIERhdGFiYXNlIFwnJGRibmFtZVwnPycpXCI+RHJvcDwvYT48L3RkPlxuIjsNCgkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZHVtcERCJmRibmFtZT0kZGJuYW1lJz5EdW1wPC9hPjwvdGQ+XG4iOw0KCQllY2hvICI8L3RyPlxuIjsNCgl9DQoJZWNobyAiPC90YWJsZT5cbiI7DQp9DQoNCmZ1bmN0aW9uIGNyZWF0ZURhdGFiYXNlKCkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICRQSFBfU0VMRjsNCg0KCW15c3FsX2NyZWF0ZV9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7DQoJbGlzdERhdGFiYXNlcygpOw0KfQ0KDQpmdW5jdGlvbiBkcm9wRGF0YWJhc2UoKSB7DQoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJFBIUF9TRUxGOw0KDQoJbXlzcWxfZHJvcF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7DQoJbGlzdERhdGFiYXNlcygpOw0KfQ0KDQpmdW5jdGlvbiBsaXN0VGFibGVzKCkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICRQSFBfU0VMRjsNCg0KCWVjaG8gIjxoMT5UYWJsZSBMaXN0PC9oMT5cbiI7DQoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZTwvcD5cbiI7DQoJZWNob1F1ZXJ5UmVzdWx0KCk7DQoJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEYnPlxuIjsNCgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9Y3JlYXRlVGFibGU+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWRibmFtZSB2YWx1ZT0kZGJuYW1lPlxuIjsNCgllY2hvICI8aW5wdXQgdHlwZT10ZXh0IG5hbWU9dGFibGVuYW1lPlxuIjsNCgllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0NyZWF0ZSBUYWJsZSc+XG4iOw0KCWVjaG8gIjwvZm9ybT5cbiI7DQoJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEYnPlxuIjsNCgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9cXVlcnk+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWRibmFtZSB2YWx1ZT0kZGJuYW1lPlxuIjsNCgllY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNpemU9NDAgbmFtZT1xdWVyeVN0cj5cbiI7DQoJLy9lY2hvICI8dGV4dGFyZWEgY29scz0zMCByb3dzPTMgbmFtZT1xdWVyeVN0cj48L3RleHRhcmVhPjxicj4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nUXVlcnknPlxuIjsNCgllY2hvICI8L2Zvcm0+XG4iOw0KCWVjaG8gIjxocj5cbiI7DQoNCgkkcFRhYmxlID0gbXlzcWxfbGlzdF90YWJsZXMoICRkYm5hbWUgKTsNCg0KCWlmKCAkcFRhYmxlID09IDAgKSB7DQoJCSRtc2cgID0gbXlzcWxfZXJyb3IoKTsNCgkJZWNobyAiPGgzPkVycm9yIDogJG1zZzwvaDM+PHA+XG4iOw0KCQlyZXR1cm47DQoJfQ0KCSRudW0gPSBteXNxbF9udW1fcm93cyggJHBUYWJsZSApOw0KDQoJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7DQoNCglmb3IoICRpID0gMDsgJGkgPCAkbnVtOyAkaSsrICkgew0KCQkkdGFibGVuYW1lID0gbXlzcWxfdGFibGVuYW1lKCAkcFRhYmxlLCAkaSApOw0KDQoJCWVjaG8gIjx0cj5cbiI7DQoJCWVjaG8gIjx0ZD5cbiI7DQoJCWVjaG8gIiR0YWJsZW5hbWVcbiI7DQoJCWVjaG8gIjwvdGQ+XG4iOw0KCQllY2hvICI8dGQ+XG4iOw0KCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXZpZXdTY2hlbWEmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUnPlNjaGVtYTwvYT5cbiI7DQoJCWVjaG8gIjwvdGQ+XG4iOw0KCQllY2hvICI8dGQ+XG4iOw0KCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXZpZXdEYXRhJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5EYXRhPC9hPlxuIjsNCgkJZWNobyAiPC90ZD5cbiI7DQoJCWVjaG8gIjx0ZD5cbiI7DQoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZHJvcFRhYmxlJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBvbkNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ0Ryb3AgRGF0YWJhc2UgXCckZGJuYW1lXCc/JylcIj5Ecm9wPC9hPlxuIjsNCgkJZWNobyAiPC90ZD5cbiI7DQoJCWVjaG8gIjx0ZD5cbiI7DQoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZHVtcFRhYmxlJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5EdW1wPC9hPlxuIjsNCgkJZWNobyAiPC90ZD5cbiI7DQoJCWVjaG8gIjwvdHI+XG4iOw0KCX0NCg0KCWVjaG8gIjwvdGFibGU+IjsNCn0NCg0KZnVuY3Rpb24gY3JlYXRlVGFibGUoKSB7DQoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7DQoNCgkkcXVlcnlTdHIgPSAiQ1JFQVRFIFRBQkxFICR0YWJsZW5hbWUgKCBubyBJTlQgKSI7DQoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsNCglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUgKTsNCgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsNCg0KCWxpc3RUYWJsZXMoKTsNCn0NCg0KZnVuY3Rpb24gZHJvcFRhYmxlKCkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQSFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJyTXNnOw0KDQoJJHF1ZXJ5U3RyID0gIkRST1AgVEFCTEUgJHRhYmxlbmFtZSI7DQoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsNCglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUgKTsNCgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsNCg0KCWxpc3RUYWJsZXMoKTsNCn0NCg0KZnVuY3Rpb24gdmlld1NjaGVtYSgpIHsNCglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZzsNCg0KCWVjaG8gIjxoMT5UYWJsZSBTY2hlbWE8L2gxPlxuIjsNCgllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7DQoNCgllY2hvUXVlcnlSZXN1bHQoKTsNCg0KCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249YWRkRmllbGQmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUnPkFkZCBGaWVsZDwvYT4gfCBcbiI7DQoJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj12aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+VmlldyBEYXRhPC9hPlxuIjsNCgllY2hvICI8aHI+XG4iOw0KDQoJJHBSZXN1bHQgPSBteXNxbF9kYl9xdWVyeSggJGRibmFtZSwgIlNIT1cgZmllbGRzIEZST00gJHRhYmxlbmFtZSIgKTsNCgkkbnVtID0gbXlzcWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7DQoNCgllY2hvICI8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz01PlxuIjsNCgllY2hvICI8dHI+XG4iOw0KCWVjaG8gIjx0aD5GaWVsZDwvdGg+XG4iOw0KCWVjaG8gIjx0aD5UeXBlPC90aD5cbiI7DQoJZWNobyAiPHRoPk51bGw8L3RoPlxuIjsNCgllY2hvICI8dGg+S2V5PC90aD5cbiI7DQoJZWNobyAiPHRoPkRlZmF1bHQ8L3RoPlxuIjsNCgllY2hvICI8dGg+RXh0cmE8L3RoPlxuIjsNCgllY2hvICI8dGggY29sc3Bhbj0yPkFjdGlvbjwvdGg+XG4iOw0KCWVjaG8gIjwvdHI+XG4iOw0KDQoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsNCgkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0ICk7DQoJCWVjaG8gIjx0cj5cbiI7DQoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiRmllbGQiXS4iPC90ZD5cbiI7DQoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiVHlwZSJdLiI8L3RkPlxuIjsNCgkJZWNobyAiPHRkPiIuJGZpZWxkWyJOdWxsIl0uIjwvdGQ+XG4iOw0KCQllY2hvICI8dGQ+Ii4kZmllbGRbIktleSJdLiI8L3RkPlxuIjsNCgkJZWNobyAiPHRkPiIuJGZpZWxkWyJEZWZhdWx0Il0uIjwvdGQ+XG4iOw0KCQllY2hvICI8dGQ+Ii4kZmllbGRbIkV4dHJhIl0uIjwvdGQ+XG4iOw0KCQkkZmllbGRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOw0KCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1lZGl0RmllbGQmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmZmllbGRuYW1lPSRmaWVsZG5hbWUnPkVkaXQ8L2E+PC90ZD5cbiI7DQoJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWRyb3BGaWVsZCZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZmaWVsZG5hbWU9JGZpZWxkbmFtZScgb25DbGljaz1cInJldHVybiBjb25maXJtKCdEcm9wIEZpZWxkIFwnJGZpZWxkbmFtZVwnPycpXCI+RHJvcDwvYT48L3RkPlxuIjsNCgkJZWNobyAiPC90cj5cbiI7DQoJfQ0KCWVjaG8gIjwvdGFibGU+XG4iOw0KfQ0KDQpmdW5jdGlvbiBtYW5hZ2VGaWVsZCggJGNtZCApIHsNCglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEY7DQoNCglpZiggJGNtZCA9PSAiYWRkIiApDQoJCWVjaG8gIjxoMT5BZGQgRmllbGQ8L2gxPlxuIjsNCgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsNCgkJZWNobyAiPGgxPkVkaXQgRmllbGQ8L2gxPlxuIjsNCgkJJHBSZXN1bHQgPSBteXNxbF9kYl9xdWVyeSggJGRibmFtZSwgIlNIT1cgZmllbGRzIEZST00gJHRhYmxlbmFtZSIgKTsNCgkJJG51bSA9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOw0KCQlmb3IoICRpID0gMDsgJGkgPCAkbnVtOyAkaSsrICkgew0KCQkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0ICk7DQoJCQlpZiggJGZpZWxkWyJGaWVsZCJdID09ICRmaWVsZG5hbWUgKSB7DQoJCQkJJGZpZWxkdHlwZSA9ICRmaWVsZFsiVHlwZSJdOw0KCQkJCSRmaWVsZGtleSA9ICRmaWVsZFsiS2V5Il07DQoJCQkJJGZpZWxkZXh0cmEgPSAkZmllbGRbIkV4dHJhIl07DQoJCQkJJGZpZWxkbnVsbCA9ICRmaWVsZFsiTnVsbCJdOw0KCQkJCSRmaWVsZGRlZmF1bHQgPSAkZmllbGRbIkRlZmF1bHQiXTsNCgkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCQkkdHlwZSA9IHN0cnRvayggJGZpZWxkdHlwZSwgIiAoLClcbiIgKTsNCgkJaWYoIHN0cnBvcyggJGZpZWxkdHlwZSwgIigiICkgKSB7DQoJCQlpZiggJHR5cGUgPT0gImVudW0iIHwgJHR5cGUgPT0gInNldCIgKSB7DQoJCQkJJHZhbHVlbGlzdCA9IHN0cnRvayggIiAoKVxuIiApOw0KCQkJfSBlbHNlIHsNCgkJCQkkTSA9IHN0cnRvayggIiAoLClcbiIgKTsNCgkJCQlpZiggc3RycG9zKCAkZmllbGR0eXBlLCAiLCIgKSApDQoJCQkJCSREID0gc3RydG9rKCAiICgsKVxuIiApOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZSAmZ3Q7ICR0YWJsZW5hbWU8L3A+XG4iOw0KCWVjaG8gIjxmb3JtIGFjdGlvbj0kUEhQX1NFTEY+XG4iOw0KDQoJaWYoICRjbWQgPT0gImFkZCIgKQ0KCQllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9YWRkRmllbGRfc3VibWl0PlxuIjsNCgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsNCgkJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWVkaXRGaWVsZF9zdWJtaXQ+XG4iOw0KCQllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1vbGRfbmFtZSB2YWx1ZT0kZmllbGRuYW1lPlxuIjsNCgl9DQoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXRhYmxlbmFtZSB2YWx1ZT0kdGFibGVuYW1lPlxuIjsNCg0KCWVjaG8gIjxoMz5OYW1lPC9oMz5cbiI7DQoJZWNobyAiPGlucHV0IHR5cGU9dGV4dCBuYW1lPW5hbWUgdmFsdWU9JGZpZWxkbmFtZT48cD5cbiI7DQo/Pg0KDQo8aDM+VHlwZTwvaDM+DQoNCjxmb250IHNpemU9Mj4NCiogYE0nIGluZGljYXRlcyB0aGUgbWF4aW11bSBkaXNwbGF5IHNpemUuPGJyPg0KKiBgRCcgYXBwbGllcyB0byBmbG9hdGluZy1wb2ludCB0eXBlcyBhbmQgaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGZvbGxvd2luZyB0aGUgZGVjaW1hbCBwb2ludC48YnI+DQo8L2ZvbnQ+DQoNCjx0YWJsZT4NCjx0cj4NCjx0aD5UeXBlPC90aD48dGg+Jm5ic3BNJm5ic3A8L3RoPjx0aD4mbmJzcEQmbmJzcDwvdGg+PHRoPnVuc2lnbmVkPC90aD48dGg+emVyb2ZpbGw8L3RoPjx0aD5iaW5hcnk8L3RoPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTllJTlQiIDw/IGlmKCAkdHlwZSA9PSAidGlueWludCIgKSBlY2hvICJjaGVja2VkIjs/Pj5USU5ZSU5UICgtMTI4IH4gMTI3KTwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPk88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPk88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJTTUFMTElOVCIgPD8gaWYoICR0eXBlID09ICJzbWFsbGludCIgKSBlY2hvICJjaGVja2VkIjs/Pj5TTUFMTElOVCAoLTMyNzY4IH4gMzI3NjcpPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9Ik1FRElVTUlOVCIgPD8gaWYoICR0eXBlID09ICJtZWRpdW1pbnQiICkgZWNobyAiY2hlY2tlZCI7Pz4+TUVESVVNSU5UICgtODM4ODYwOCB+IDgzODg2MDcpPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IklOVCIgPD8gaWYoICR0eXBlID09ICJpbnQiICkgZWNobyAiY2hlY2tlZCI7Pz4+SU5UICgtMjE0NzQ4MzY0OCB+IDIxNDc0ODM2NDcpPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkJJR0lOVCIgPD8gaWYoICR0eXBlID09ICJiaWdpbnQiICkgZWNobyAiY2hlY2tlZCI7Pz4+QklHSU5UICgtOTIyMzM3MjAzNjg1NDc3NTgwOCB+IDkyMjMzNzIwMzY4NTQ3NzU4MDcpPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkZMT0FUIiA8PyBpZiggJHR5cGUgPT0gImZsb2F0IiApIGVjaG8gImNoZWNrZWQiOz8+PkZMT0FUPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPk88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRPVUJMRSIgPD8gaWYoICR0eXBlID09ICJkb3VibGUiICkgZWNobyAiY2hlY2tlZCI7Pz4+RE9VQkxFPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPk88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRFQ0lNQUwiIDw/IGlmKCAkdHlwZSA9PSAiZGVjaW1hbCIgKSBlY2hvICJjaGVja2VkIjs/Pj5ERUNJTUFMKE5VTUVSSUMpPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPk88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRBVEUiIDw/IGlmKCAkdHlwZSA9PSAiZGF0ZSIgKSBlY2hvICJjaGVja2VkIjs/Pj5EQVRFICgxMDAwLTAxLTAxIH4gOTk5OS0xMi0zMSwgWVlZWS1NTS1ERCk8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iREFURVRJTUUiIDw/IGlmKCAkdHlwZSA9PSAiZGF0ZXRpbWUiICkgZWNobyAiY2hlY2tlZCI7Pz4+REFURVRJTUUgKDEwMDAtMDEtMDEgMDA6MDA6MDAgfiA5OTk5LTEyLTMxIDIzOjU5OjU5LCBZWVlZLU1NLUREIEhIOk1NOlNTKTwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJUSU1FU1RBTVAiIDw/IGlmKCAkdHlwZSA9PSAidGltZXN0YW1wIiApIGVjaG8gImNoZWNrZWQiOz8+PlRJTUVTVEFNUCAoMTk3MC0wMS0wMSAwMDowMDowMCB+IDIxMDYuLi4sIFlZWVlNTUREW0hIW01NW1NTXV1dKTwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPk88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJUSU1FIiA8PyBpZiggJHR5cGUgPT0gInRpbWUiICkgZWNobyAiY2hlY2tlZCI7Pz4+VElNRSAoLTgzODo1OTo1OSB+IDgzODo1OTo1OSwgSEg6TU06U1MpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IllFQVIiIDw/IGlmKCAkdHlwZSA9PSAieWVhciIgKSBlY2hvICJjaGVja2VkIjs/Pj5ZRUFSICgxOTAxIH4gMjE1NSwgMDAwMCwgWVlZWSk8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQ0hBUiIgPD8gaWYoICR0eXBlID09ICJjaGFyIiApIGVjaG8gImNoZWNrZWQiOz8+PkNIQVI8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iVkFSQ0hBUiIgPD8gaWYoICR0eXBlID09ICJ2YXJjaGFyIiApIGVjaG8gImNoZWNrZWQiOz8+PlZBUkNIQVI8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iVElOWVRFWFQiIDw/IGlmKCAkdHlwZSA9PSAidGlueXRleHQiICkgZWNobyAiY2hlY2tlZCI7Pz4+VElOWVRFWFQgKDAgfiAyNTUpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRFWFQiIDw/IGlmKCAkdHlwZSA9PSAidGV4dCIgKSBlY2hvICJjaGVja2VkIjs/Pj5URVhUICgwIH4gNjU1MzUpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9Ik1FRElVTVRFWFQiIDw/IGlmKCAkdHlwZSA9PSAibWVkaXVtdGV4dCIgKSBlY2hvICJjaGVja2VkIjs/Pj5NRURJVU1URVhUICgwIH4gMTY3NzcyMTUpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkxPTkdURVhUIiA8PyBpZiggJHR5cGUgPT0gImxvbmd0ZXh0IiApIGVjaG8gImNoZWNrZWQiOz8+PkxPTkdURVhUICgwIH4gNDI5NDk2NzI5NSk8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iVElOWUJMT0IiIDw/IGlmKCAkdHlwZSA9PSAidGlueWJsb2IiICkgZWNobyAiY2hlY2tlZCI7Pz4+VElOWUJMT0IgKDAgfiAyNTUpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkJMT0IiIDw/IGlmKCAkdHlwZSA9PSAiYmxvYiIgKSBlY2hvICJjaGVja2VkIjs/Pj5CTE9CICgwIH4gNjU1MzUpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9Ik1FRElVTUJMT0IiIDw/IGlmKCAkdHlwZSA9PSAibWVkaXVtYmxvYiIgKSBlY2hvICJjaGVja2VkIjs/Pj5NRURJVU1CTE9CICgwIH4gMTY3NzcyMTUpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkxPTkdCTE9CIiA8PyBpZiggJHR5cGUgPT0gImxvbmdibG9iIiApIGVjaG8gImNoZWNrZWQiOz8+PkxPTkdCTE9CICgwIH4gNDI5NDk2NzI5NSk8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iRU5VTSIgPD8gaWYoICR0eXBlID09ICJlbnVtIiApIGVjaG8gImNoZWNrZWQiOz8+PkVOVU08L3RkPg0KPHRkIGNvbHNwYW49NT48Y2VudGVyPnZhbHVlIGxpc3Q8L2NlbnRlcj48L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlNFVCIgPD8gaWYoICR0eXBlID09ICJzZXQiICkgZWNobyAiY2hlY2tlZCI7Pz4+U0VUPC90ZD4NCjx0ZCBjb2xzcGFuPTU+PGNlbnRlcj52YWx1ZSBsaXN0PC9jZW50ZXI+PC90ZD4NCjwvdHI+DQoNCjwvdGFibGU+DQo8dGFibGU+DQo8dHI+PHRoPk08L3RoPjx0aD5EPC90aD48dGg+dW5zaWduZWQ8L3RoPjx0aD56ZXJvZmlsbDwvdGg+PHRoPmJpbmFyeTwvdGg+PHRoPnZhbHVlIGxpc3QgKGV4OiAnYXBwbGUnLCAnb3JhbmdlJywgJ2JhbmFuYScpIDwvdGg+PC90cj4NCjx0cj4NCjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9dGV4dCBzaXplPTQgbmFtZT1NIDw/IGlmKCAkTSAhPSAiIiApIGVjaG8gInZhbHVlPSRNIjs/Pj48L3RkPg0KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT10ZXh0IHNpemU9NCBuYW1lPUQgPD8gaWYoICREICE9ICIiICkgZWNobyAidmFsdWU9JEQiOz8+PjwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9dW5zaWduZWQgdmFsdWU9IlVOU0lHTkVEIiA8PyBpZiggc3RycG9zKCAkZmllbGR0eXBlLCAidW5zaWduZWQiICkgKSBlY2hvICJjaGVja2VkIjs/Pj48L3RkPg0KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXplcm9maWxsIHZhbHVlPSJaRVJPRklMTCIgPD8gaWYoIHN0cnBvcyggJGZpZWxkdHlwZSwgInplcm9maWxsIiApICkgZWNobyAiY2hlY2tlZCI7Pz4+PC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1iaW5hcnkgdmFsdWU9IkJJTkFSWSIgPD8gaWYoIHN0cnBvcyggJGZpZWxkdHlwZSwgImJpbmFyeSIgKSAgKSBlY2hvICJjaGVja2VkIjs/Pj48L3RkPg0KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT10ZXh0IHNpemU9NjAgbmFtZT12YWx1ZWxpc3QgPD8gaWYoICR2YWx1ZWxpc3QgIT0gIiIgKSBlY2hvICJ2YWx1ZT1cIiR2YWx1ZWxpc3RcIiI7Pz4+PC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQoNCjxoMz5GbGFnczwvaDM+DQo8dGFibGU+DQo8dHI+PHRoPm5vdCBudWxsPC90aD48dGg+ZGVmYXVsdCB2YWx1ZTwvdGg+PHRoPmF1dG8gaW5jcmVtZW50PC90aD48dGg+cHJpbWFyeSBrZXk8L3RoPjwvdHI+DQo8dHI+DQo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9bm90X251bGwgdmFsdWU9Ik5PVCBOVUxMIiA8PyBpZiggJGZpZWxkbnVsbCAhPSAiWUVTIiApIGVjaG8gImNoZWNrZWQiOz8+PjwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1kZWZhdWx0X3ZhbHVlIDw/IGlmKCAkZmllbGRkZWZhdWx0ICE9ICIiICkgZWNobyAidmFsdWU9JGZpZWxkZGVmYXVsdCI7Pz4+PC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1hdXRvX2luY3JlbWVudCB2YWx1ZT0iQVVUT19JTkNSRU1FTlQiIDw/IGlmKCAkZmllbGRleHRyYSA9PSAiYXV0b19pbmNyZW1lbnQiICkgZWNobyAiY2hlY2tlZCI7Pz4+PC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1wcmltYXJ5X2tleSB2YWx1ZT0iUFJJTUFSWSBLRVkiIDw/IGlmKCAkZmllbGRrZXkgPT0gIlBSSSIgKSBlY2hvICJjaGVja2VkIjs/Pj48L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPg0KDQo8Pw0KCWlmKCAkY21kID09ICJhZGQiICkNCgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdBZGQgRmllbGQnPlxuIjsNCgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApDQoJCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRWRpdCBGaWVsZCc+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT1DYW5jZWwgb25DbGljaz0naGlzdG9yeS5iYWNrKCknPlxuIjsNCgllY2hvICI8L2Zvcm0+XG4iOw0KfQ0KDQpmdW5jdGlvbiBtYW5hZ2VGaWVsZF9zdWJtaXQoICRjbWQgKSB7DQoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJG9sZF9uYW1lLCAkbmFtZSwgJHR5cGUsICRQSFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJyTXNnLA0KCQkkTSwgJEQsICR1bnNpZ25lZCwgJHplcm9maWxsLCAkYmluYXJ5LCAkbm90X251bGwsICRkZWZhdWx0X3ZhbHVlLCAkYXV0b19pbmNyZW1lbnQsICRwcmltYXJ5X2tleSwgJHZhbHVlbGlzdDsNCg0KCWlmKCAkY21kID09ICJhZGQiICkNCgkJJHF1ZXJ5U3RyID0gIkFMVEVSIFRBQkxFICR0YWJsZW5hbWUgQUREICRuYW1lICI7DQoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKQ0KCQkkcXVlcnlTdHIgPSAiQUxURVIgVEFCTEUgJHRhYmxlbmFtZSBDSEFOR0UgJG9sZF9uYW1lICRuYW1lICI7DQoNCglpZiggJE0gIT0gIiIgKQ0KCQlpZiggJEQgIT0gIiIgKQ0KCQkJJHF1ZXJ5U3RyIC49ICIkdHlwZSgkTSwkRCkgIjsNCgkJZWxzZQ0KCQkJJHF1ZXJ5U3RyIC49ICIkdHlwZSgkTSkgIjsNCgllbHNlIGlmKCAkdmFsdWVsaXN0ICE9ICIiICkgew0KCQkkdmFsdWVsaXN0ID0gc3RyaXBzbGFzaGVzKCAkdmFsdWVsaXN0ICk7DQoJCSRxdWVyeVN0ciAuPSAiJHR5cGUoJHZhbHVlbGlzdCkgIjsNCgl9IGVsc2UNCgkJJHF1ZXJ5U3RyIC49ICIkdHlwZSAiOw0KDQoJJHF1ZXJ5U3RyIC49ICIkdW5zaWduZWQgJHplcm9maWxsICRiaW5hcnkgIjsNCg0KCWlmKCAkZGVmYXVsdF92YWx1ZSAhPSAiIiApDQoJCSRxdWVyeVN0ciAuPSAiREVGQVVMVCAnJGRlZmF1bHRfdmFsdWUnICI7DQoNCgkkcXVlcnlTdHIgLj0gIiRub3RfbnVsbCAkYXV0b19pbmNyZW1lbnQiOw0KDQoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsNCglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUgKTsNCgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsNCg0KCS8vIGtleSBjaGFuZ2UNCgkka2V5Q2hhbmdlID0gZmFsc2U7DQoJJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCAiU0hPVyBLRVlTIEZST00gJHRhYmxlbmFtZSIgKTsNCgkkcHJpbWFyeSA9ICIiOw0KCXdoaWxlKCAkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkgKQ0KCQlpZiggJHJvd1siS2V5X25hbWUiXSA9PSAiUFJJTUFSWSIgKSB7DQoJCQlpZiggJHJvd1tDb2x1bW5fbmFtZV0gPT0gJG5hbWUgKQ0KCQkJCSRrZXlDaGFuZ2UgPSB0cnVlOw0KCQkJZWxzZQ0KCQkJCSRwcmltYXJ5IC49ICIsICRyb3dbQ29sdW1uX25hbWVdIjsNCgkJfQ0KCWlmKCAkcHJpbWFyeV9rZXkgPT0gIlBSSU1BUlkgS0VZIiApIHsNCgkJJHByaW1hcnkgLj0gIiwgJG5hbWUiOw0KCQkka2V5Q2hhbmdlID0gISRrZXlDaGFuZ2U7DQoJfQ0KCSRwcmltYXJ5ID0gc3Vic3RyKCAkcHJpbWFyeSwgMiApOw0KCWlmKCAka2V5Q2hhbmdlID09IHRydWUgKSB7DQoJCSRxID0gIkFMVEVSIFRBQkxFICR0YWJsZW5hbWUgRFJPUCBQUklNQVJZIEtFWSI7DQoJCW15c3FsX3F1ZXJ5KCAkcSApOw0KCQkkcXVlcnlTdHIgLj0gIjxicj5cbiIgLiAkcTsNCgkJJGVyck1zZyAuPSAiPGJyPlxuIiAuIG15c3FsX2Vycm9yKCk7DQoJCSRxID0gIkFMVEVSIFRBQkxFICR0YWJsZW5hbWUgQUREIFBSSU1BUlkgS0VZKCAkcHJpbWFyeSApIjsNCgkJbXlzcWxfcXVlcnkoICRxICk7DQoJCSRxdWVyeVN0ciAuPSAiPGJyPlxuIiAuICRxOw0KCQkkZXJyTXNnIC49ICI8YnI+XG4iIC4gbXlzcWxfZXJyb3IoKTsNCgl9DQoNCgl2aWV3U2NoZW1hKCk7DQp9DQoNCmZ1bmN0aW9uIGRyb3BGaWVsZCgpIHsNCglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZzsNCg0KCSRxdWVyeVN0ciA9ICJBTFRFUiBUQUJMRSAkdGFibGVuYW1lIERST1AgQ09MVU1OICRmaWVsZG5hbWUiOw0KCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7DQoJbXlzcWxfcXVlcnkoICRxdWVyeVN0ciAsICRteXNxbEhhbmRsZSApOw0KCSRlcnJNc2cgPSBteXNxbF9lcnJvcigpOw0KDQoJdmlld1NjaGVtYSgpOw0KfQ0KDQpmdW5jdGlvbiB2aWV3RGF0YSggJHF1ZXJ5U3RyICkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQSFBfU0VMRiwgJGVyck1zZywgJHBhZ2UsICRyb3dwZXJwYWdlLCAkb3JkZXJieTsNCg0KCWVjaG8gIjxoMT5EYXRhIGluIFRhYmxlPC9oMT5cbiI7DQoJaWYoICR0YWJsZW5hbWUgIT0gIiIgKQ0KCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7DQoJZWxzZQ0KCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZGJuYW1lPC9wPlxuIjsNCg0KCSRxdWVyeVN0ciA9IHN0cmlwc2xhc2hlcyggJHF1ZXJ5U3RyICk7DQoJaWYoICRxdWVyeVN0ciA9PSAiIiApIHsNCgkJJHF1ZXJ5U3RyID0gIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSI7DQoJCWlmKCAkb3JkZXJieSAhPSAiIiApDQoJCQkkcXVlcnlTdHIgLj0gIiBPUkRFUiBCWSAkb3JkZXJieSI7DQoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249YWRkRGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+QWRkIERhdGE8L2E+IHwgXG4iOw0KCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXZpZXdTY2hlbWEmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUnPlNjaGVtYTwvYT5cbiI7DQoJfQ0KDQoJJHBSZXN1bHQgPSBteXNxbF9kYl9xdWVyeSggJGRibmFtZSwgJHF1ZXJ5U3RyICk7DQoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7DQoNCgkkR0xPQkFMU1txdWVyeVN0cl0gPSAkcXVlcnlTdHI7DQoNCglpZiggJHBSZXN1bHQgPT0gZmFsc2UgKSB7DQoJCWVjaG9RdWVyeVJlc3VsdCgpOw0KCQlyZXR1cm47DQoJfQ0KCWlmKCAkcFJlc3VsdCA9PSAxICkgew0KCQkkZXJyTXNnID0gIlN1Y2Nlc3MiOw0KCQllY2hvUXVlcnlSZXN1bHQoKTsNCgkJcmV0dXJuOw0KCX0NCg0KCWVjaG8gIjxocj5cbiI7DQoNCgkkcm93ID0gbXlzcWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7DQoJJGNvbCA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7DQoNCglpZiggJHJvdyA9PSAwICkgew0KCQllY2hvICJObyBEYXRhIEV4aXN0ISI7DQoJCXJldHVybjsNCgl9DQoNCglpZiggJHJvd3BlcnBhZ2UgPT0gIiIgKSAkcm93cGVycGFnZSA9IDIwOw0KCWlmKCAkcGFnZSA9PSAiIiApICRwYWdlID0gMDsNCgllbHNlICRwYWdlLS07DQoJbXlzcWxfZGF0YV9zZWVrKCAkcFJlc3VsdCwgJHBhZ2UgKiAkcm93cGVycGFnZSApOw0KDQoJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9Mj5cbiI7DQoJZWNobyAiPHRyPlxuIjsNCglmb3IoICRpID0gMDsgJGkgPCAkY29sOyAkaSsrICkgew0KCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQsICRpICk7DQoJCWVjaG8gIjx0aD4iOw0KCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXZpZXdEYXRhJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJm9yZGVyYnk9Ii4kZmllbGQtPm5hbWUuIic+Ii4kZmllbGQtPm5hbWUuIjwvYT5cbiI7DQoJCWVjaG8gIjwvdGg+XG4iOw0KCX0NCgllY2hvICI8dGggY29sc3Bhbj0yPkFjdGlvbjwvdGg+XG4iOw0KCWVjaG8gIjwvdHI+XG4iOw0KDQoJZm9yKCAkaSA9IDA7ICRpIDwgJHJvd3BlcnBhZ2U7ICRpKysgKSB7DQoJCSRyb3dBcnJheSA9IG15c3FsX2ZldGNoX3JvdyggJHBSZXN1bHQgKTsNCgkJaWYoICRyb3dBcnJheSA9PSBmYWxzZSApIGJyZWFrOw0KCQllY2hvICI8dHI+XG4iOw0KCQkka2V5ID0gIiI7DQoJCWZvciggJGogPSAwOyAkaiA8ICRjb2w7ICRqKysgKSB7DQoJCQkkZGF0YSA9ICRyb3dBcnJheVskal07DQoNCgkJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdCwgJGogKTsNCgkJCWlmKCAkZmllbGQtPnByaW1hcnlfa2V5ID09IDEgKQ0KCQkJCSRrZXkgLj0gIiYiIC4gJGZpZWxkLT5uYW1lIC4gIj0iIC4gJGRhdGE7DQoNCgkJCWlmKCBzdHJsZW4oICRkYXRhICkgPiAyMCApDQoJCQkJJGRhdGEgPSBzdWJzdHIoICRkYXRhLCAwLCAyMCApIC4gIi4uLiI7DQoJCQkkZGF0YSA9IGh0bWxzcGVjaWFsY2hhcnMoICRkYXRhICk7DQoJCQllY2hvICI8dGQ+XG4iOw0KCQkJZWNobyAiJGRhdGFcbiI7DQoJCQllY2hvICI8L3RkPlxuIjsNCgkJfQ0KDQoJCWlmKCAka2V5ID09ICIiICkNCgkJCWVjaG8gIjx0ZCBjb2xzcGFuPTI+bm8gS2V5PC90ZD5cbiI7DQoJCWVsc2Ugew0KCQkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZWRpdERhdGEmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUka2V5Jz5FZGl0PC9hPjwvdGQ+XG4iOw0KCQkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZGVsZXRlRGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSRrZXknIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRGVsZXRlIFJvdz8nKVwiPkRlbGV0ZTwvYT48L3RkPlxuIjsNCgkJfQ0KCQllY2hvICI8L3RyPlxuIjsNCgl9DQoJZWNobyAiPC90YWJsZT5cbiI7DQoNCgllY2hvICI8Zm9udCBzaXplPTI+XG4iOw0KCWVjaG8gIjxmb3JtIGFjdGlvbj0nJFBIUF9TRUxGP2FjdGlvbj12aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZScgbWV0aG9kPXBvc3Q+XG4iOw0KCWVjaG8gIjxmb250IGNvbG9yPWdyZWVuPlxuIjsNCgllY2hvICgkcGFnZSsxKS4iLyIuKGludCkoJHJvdy8kcm93cGVycGFnZSsxKS4iIHBhZ2UiOw0KCWVjaG8gIjwvZm9udD5cbiI7DQoJZWNobyAiIHwgIjsNCglpZiggJHBhZ2UgPiAwICkgew0KCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXZpZXdEYXRhJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnBhZ2U9Ii4oJHBhZ2UpOw0KCQlpZiggJG9yZGVyYnkgIT0gIiIgKQ0KCQkJZWNobyAiJm9yZGVyYnk9JG9yZGVyYnkiOw0KCQllY2hvICInPlByZXY8L2E+XG4iOw0KCX0gZWxzZQ0KCQllY2hvICJQcmV2IjsNCgllY2hvICIgfCAiOw0KCWlmKCAkcGFnZSA8ICgkcm93LyRyb3dwZXJwYWdlKS0xICkgew0KCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXZpZXdEYXRhJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnBhZ2U9Ii4oJHBhZ2UrMik7DQoJCWlmKCAkb3JkZXJieSAhPSAiIiApDQoJCQllY2hvICImb3JkZXJieT0kb3JkZXJieSI7DQoJCWVjaG8gIic+TmV4dDwvYT5cbiI7DQoJfSBlbHNlDQoJCWVjaG8gIk5leHQiOw0KCWVjaG8gIiB8ICI7DQoJaWYoICRyb3cgPiAkcm93cGVycGFnZSApIHsNCgkJZWNobyAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTQgbmFtZT1wYWdlPlxuIjsNCgkJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdHbyc+XG4iOw0KCX0NCgllY2hvICI8L2Zvcm0+XG4iOw0KCWVjaG8gIjwvZm9udD5cbiI7DQp9DQoNCmZ1bmN0aW9uIG1hbmFnZURhdGEoICRjbWQgKSB7DQoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJFBIUF9TRUxGOw0KDQoJaWYoICRjbWQgPT0gImFkZCIgKQ0KCQllY2hvICI8aDE+QWRkIERhdGE8L2gxPlxuIjsNCgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsNCgkJZWNobyAiPGgxPkVkaXQgRGF0YTwvaDE+XG4iOw0KCQkkcFJlc3VsdCA9IG15c3FsX2xpc3RfZmllbGRzKCAkZGJuYW1lLCAkdGFibGVuYW1lICk7DQoJCSRudW0gPSBteXNxbF9udW1fZmllbGRzKCAkcFJlc3VsdCApOw0KDQoJCSRrZXkgPSAiIjsNCgkJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsNCgkJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdCwgJGkgKTsNCgkJCWlmKCAkZmllbGQtPnByaW1hcnlfa2V5ID09IDEgKQ0KCQkJCWlmKCAkZmllbGQtPm51bWVyaWMgPT0gMSApDQoJCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1lIC4gIj0iIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7DQoJCQkJZWxzZQ0KCQkJCQkka2V5IC49ICRmaWVsZC0+bmFtZSAuICI9JyIgLiAkR0xPQkFMU1skZmllbGQtPm5hbWVdIC4gIicgQU5EICI7DQoJCX0NCgkJJGtleSA9IHN1YnN0ciggJGtleSwgMCwgc3RybGVuKCRrZXkpLTQgKTsNCg0KCQlteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOw0KCQkkcFJlc3VsdCA9IG15c3FsX3F1ZXJ5KCAkcXVlcnlTdHIgPSAgIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSBXSEVSRSAka2V5IiwgJG15c3FsSGFuZGxlICk7DQoJCSRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0ICk7DQoJfQ0KDQoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZSAmZ3Q7ICR0YWJsZW5hbWU8L3A+XG4iOw0KDQoJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEYnIG1ldGhvZD1wb3N0PlxuIjsNCglpZiggJGNtZCA9PSAiYWRkIiApDQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1ZT1hZGREYXRhX3N1Ym1pdD5cbiI7DQoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKQ0KCQllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9ZWRpdERhdGFfc3VibWl0PlxuIjsNCgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kYm5hbWUgdmFsdWU9JGRibmFtZT5cbiI7DQoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9dGFibGVuYW1lIHZhbHVlPSR0YWJsZW5hbWU+XG4iOw0KCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+XG4iOw0KCWVjaG8gIjx0cj5cbiI7DQoJZWNobyAiPHRoPk5hbWU8L3RoPlxuIjsNCgllY2hvICI8dGg+VHlwZTwvdGg+XG4iOw0KCWVjaG8gIjx0aD5GdW5jdGlvbjwvdGg+XG4iOw0KCWVjaG8gIjx0aD5EYXRhPC90aD5cbiI7DQoJZWNobyAiPC90cj5cbiI7DQoNCgkkcFJlc3VsdCA9IG15c3FsX2RiX3F1ZXJ5KCAkZGJuYW1lLCAiU0hPVyBmaWVsZHMgRlJPTSAkdGFibGVuYW1lIiApOw0KCSRudW0gPSBteXNxbF9udW1fcm93cyggJHBSZXN1bHQgKTsNCg0KCSRwUmVzdWx0TGVuID0gbXlzcWxfbGlzdF9maWVsZHMoICRkYm5hbWUsICR0YWJsZW5hbWUgKTsNCg0KCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7DQoJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJlc3VsdCApOw0KCQkkZmllbGRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOw0KCQkkZmllbGR0eXBlID0gJGZpZWxkWyJUeXBlIl07DQoJCSRsZW4gPSBteXNxbF9maWVsZF9sZW4oICRwUmVzdWx0TGVuLCAkaSApOw0KDQoJCWVjaG8gIjx0cj4iOw0KCQllY2hvICI8dGQ+JGZpZWxkbmFtZTwvdGQ+IjsNCgkJZWNobyAiPHRkPiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+IjsNCgkJZWNobyAiPHRkPlxuIjsNCgkJZWNobyAiPHNlbGVjdCBuYW1lPSR7ZmllbGRuYW1lfV9mdW5jdGlvbj5cbiI7DQoJCWVjaG8gIjxvcHRpb24+XG4iOw0KCQllY2hvICI8b3B0aW9uPkFTQ0lJXG4iOw0KCQllY2hvICI8b3B0aW9uPkNIQVJcbiI7DQoJCWVjaG8gIjxvcHRpb24+U09VTkRFWFxuIjsNCgkJZWNobyAiPG9wdGlvbj5DVVJEQVRFXG4iOw0KCQllY2hvICI8b3B0aW9uPkNVUlRJTUVcbiI7DQoJCWVjaG8gIjxvcHRpb24+RlJPTV9EQVlTXG4iOw0KCQllY2hvICI8b3B0aW9uPkZST01fVU5JWFRJTUVcbiI7DQoJCWVjaG8gIjxvcHRpb24+Tk9XXG4iOw0KCQllY2hvICI8b3B0aW9uPlBBU1NXT1JEXG4iOw0KCQllY2hvICI8b3B0aW9uPlBFUklPRF9BRERcbiI7DQoJCWVjaG8gIjxvcHRpb24+UEVSSU9EX0RJRkZcbiI7DQoJCWVjaG8gIjxvcHRpb24+VE9fREFZU1xuIjsNCgkJZWNobyAiPG9wdGlvbj5VU0VSXG4iOw0KCQllY2hvICI8b3B0aW9uPldFRUtEQVlcbiI7DQoJCWVjaG8gIjxvcHRpb24+UkFORFxuIjsNCgkJZWNobyAiPC9zZWxlY3Q+XG4iOw0KCQllY2hvICI8L3RkPlxuIjsNCgkJJHZhbHVlID0gaHRtbHNwZWNpYWxjaGFycygkZGF0YVskaV0pOw0KCQlpZiggJGNtZCA9PSAiYWRkIiApIHsNCgkJCSR0eXBlID0gc3RydG9rKCAkZmllbGR0eXBlLCAiICgsKVxuIiApOw0KCQkJaWYoICR0eXBlID09ICJlbnVtIiB8fCAkdHlwZSA9PSAic2V0IiApIHsNCgkJCQllY2hvICI8dGQ+XG4iOw0KCQkJCWlmKCAkdHlwZSA9PSAiZW51bSIgKQ0KCQkJCQllY2hvICI8c2VsZWN0IG5hbWU9JGZpZWxkbmFtZT5cbiI7DQoJCQkJZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQ0KCQkJCQllY2hvICI8c2VsZWN0IG5hbWU9JGZpZWxkbmFtZSBzaXplPTQgbXVsdGlwbGU+XG4iOw0KCQkJCWVjaG8gc3RydG9rKCAiJyIgKTsNCgkJCQl3aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkgKSB7DQoJCQkJCWVjaG8gIjxvcHRpb24+JHN0clxuIjsNCgkJCQkJc3RydG9rKCAiJyIgKTsNCgkJCQl9DQoJCQkJZWNobyAiPC9zZWxlY3Q+XG4iOw0KCQkJCWVjaG8gIjwvdGQ+XG4iOw0KCQkJfSBlbHNlIHsNCgkJCQlpZiggJGxlbiA8IDQwICkNCgkJCQkJZWNobyAiPHRkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00MCBtYXhsZW5ndGg9JGxlbiBuYW1lPSRmaWVsZG5hbWU+PC90ZD5cbiI7DQoJCQkJZWxzZQ0KCQkJCQllY2hvICI8dGQ+PHRleHRhcmVhIGNvbHM9NDAgcm93cz0zIG1heGxlbmd0aD0kbGVuIG5hbWU9JGZpZWxkbmFtZT48L3RleHRhcmVhPlxuIjsNCgkJCX0NCgkJfSBlbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsNCgkJCSR0eXBlID0gc3RydG9rKCAkZmllbGR0eXBlLCAiICgsKVxuIiApOw0KCQkJaWYoICR0eXBlID09ICJlbnVtIiB8fCAkdHlwZSA9PSAic2V0IiApIHsNCgkJCQllY2hvICI8dGQ+XG4iOw0KCQkJCWlmKCAkdHlwZSA9PSAiZW51bSIgKQ0KCQkJCQllY2hvICI8c2VsZWN0IG5hbWU9JGZpZWxkbmFtZT5cbiI7DQoJCQkJZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQ0KCQkJCQllY2hvICI8c2VsZWN0IG5hbWU9JGZpZWxkbmFtZSBzaXplPTQgbXVsdGlwbGU+XG4iOw0KCQkJCWVjaG8gc3RydG9rKCAiJyIgKTsNCgkJCQl3aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkgKSB7DQoJCQkJCWlmKCAkdmFsdWUgPT0gJHN0ciApDQoJCQkJCQllY2hvICI8b3B0aW9uIHNlbGVjdGVkPiRzdHJcbiI7DQoJCQkJCWVsc2UNCgkJCQkJCWVjaG8gIjxvcHRpb24+JHN0clxuIjsNCgkJCQkJc3RydG9rKCAiJyIgKTsNCgkJCQl9DQoJCQkJZWNobyAiPC9zZWxlY3Q+XG4iOw0KCQkJCWVjaG8gIjwvdGQ+XG4iOw0KCQkJfSBlbHNlIHsNCgkJCQlpZiggJGxlbiA8IDQwICkNCgkJCQkJZWNobyAiPHRkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00MCBtYXhsZW5ndGg9JGxlbiBuYW1lPSRmaWVsZG5hbWUgdmFsdWU9XCIkdmFsdWVcIj48L3RkPlxuIjsNCgkJCQllbHNlDQoJCQkJCWVjaG8gIjx0ZD48dGV4dGFyZWEgY29scz00MCByb3dzPTMgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPiR2YWx1ZTwvdGV4dGFyZWE+XG4iOw0KCQkJfQ0KCQl9DQoJCWVjaG8gIjwvdHI+IjsNCgl9DQoJZWNobyAiPC90YWJsZT48cD5cbiI7DQoJaWYoICRjbWQgPT0gImFkZCIgKQ0KCQllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0FkZCBEYXRhJz5cbiI7DQoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKQ0KCQllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0VkaXQgRGF0YSc+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT0nQ2FuY2VsJyBvbkNsaWNrPSdoaXN0b3J5LmJhY2soKSc+XG4iOw0KCWVjaG8gIjwvZm9ybT5cbiI7DQp9DQoNCmZ1bmN0aW9uIG1hbmFnZURhdGFfc3VibWl0KCAkY21kICkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRmaWVsZG5hbWUsICRQSFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJyTXNnOw0KDQoJJHBSZXN1bHQgPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOw0KCSRudW0gPSBteXNxbF9udW1fZmllbGRzKCAkcFJlc3VsdCApOw0KDQoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsNCglpZiggJGNtZCA9PSAiYWRkIiApDQoJCSRxdWVyeVN0ciA9ICJJTlNFUlQgSU5UTyAkdGFibGVuYW1lIFZBTFVFUyAoIjsNCgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApDQoJCSRxdWVyeVN0ciA9ICJSRVBMQUNFIElOVE8gJHRhYmxlbmFtZSBWQUxVRVMgKCI7DQoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bS0xOyAkaSsrICkgew0KCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQgKTsNCgkJJGZ1bmMgPSAkR0xPQkFMU1skZmllbGQtPm5hbWUuIl9mdW5jdGlvbiJdOw0KCQlpZiggJGZ1bmMgIT0gIiIgKQ0KCQkJJHF1ZXJ5U3RyIC49ICIgJGZ1bmMoIjsNCgkJaWYoICRmaWVsZC0+bnVtZXJpYyA9PSAxICkgew0KCQkJJHF1ZXJ5U3RyIC49ICRHTE9CQUxTWyRmaWVsZC0+bmFtZV07DQoJCQlpZiggJGZ1bmMgIT0gIiIgKQ0KCQkJCSRxdWVyeVN0ciAuPSAiKSwiOw0KCQkJZWxzZQ0KCQkJCSRxdWVyeVN0ciAuPSAiLCI7DQoJCX0gZWxzZSB7DQoJCQkkcXVlcnlTdHIgLj0gIiciIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXTsNCgkJCWlmKCAkZnVuYyAhPSAiIiApDQoJCQkJJHF1ZXJ5U3RyIC49ICInKSwiOw0KCQkJZWxzZQ0KCQkJCSRxdWVyeVN0ciAuPSAiJywiOw0KCQl9DQoJfQ0KCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdCApOw0KCWlmKCAkZmllbGQtPm51bWVyaWMgPT0gMSApDQoJCSRxdWVyeVN0ciAuPSAkR0xPQkFMU1skZmllbGQtPm5hbWVdIC4gIikiOw0KCWVsc2UNCgkJJHF1ZXJ5U3RyIC49ICInIiAuICRHTE9CQUxTWyRmaWVsZC0+bmFtZV0gLiAiJykiOw0KDQoJbXlzcWxfcXVlcnkoICRxdWVyeVN0ciAsICRteXNxbEhhbmRsZSApOw0KCSRlcnJNc2cgPSBteXNxbF9lcnJvcigpOw0KDQoJdmlld0RhdGEoICIiICk7DQp9DQoNCmZ1bmN0aW9uIGRlbGV0ZURhdGEoKSB7DQoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7DQoNCgkkcFJlc3VsdCA9IG15c3FsX2xpc3RfZmllbGRzKCAkZGJuYW1lLCAkdGFibGVuYW1lICk7DQoJJG51bSA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7DQoNCgkka2V5ID0gIiI7DQoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsNCgkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfZmllbGQoICRwUmVzdWx0LCAkaSApOw0KCQlpZiggJGZpZWxkLT5wcmltYXJ5X2tleSA9PSAxICkNCgkJCWlmKCAkZmllbGQtPm51bWVyaWMgPT0gMSApDQoJCQkJJGtleSAuPSAkZmllbGQtPm5hbWUgLiAiPSIgLiAkR0xPQkFMU1skZmllbGQtPm5hbWVdIC4gIiBBTkQgIjsNCgkJCWVsc2UNCgkJCQkka2V5IC49ICRmaWVsZC0+bmFtZSAuICI9JyIgLiAkR0xPQkFMU1skZmllbGQtPm5hbWVdIC4gIicgQU5EICI7DQoJfQ0KCSRrZXkgPSBzdWJzdHIoICRrZXksIDAsIHN0cmxlbigka2V5KS00ICk7DQoNCglteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOw0KCSRxdWVyeVN0ciA9ICAiREVMRVRFIEZST00gJHRhYmxlbmFtZSBXSEVSRSAka2V5IjsNCglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUgKTsNCgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsNCg0KCXZpZXdEYXRhKCAiIiApOw0KfQ0KDQpmdW5jdGlvbiBkdW1wKCkgew0KCWdsb2JhbCAkUEhQX1NFTEYsICRVU0VSTkFNRSwgJFBBU1NXT1JELCAkYWN0aW9uLCAkZGJuYW1lLCAkdGFibGVuYW1lOw0KDQoJaWYoICRhY3Rpb24gPT0gImR1bXBUYWJsZSIgKQ0KCQkkZmlsZW5hbWUgPSAkdGFibGVuYW1lOw0KCWVsc2UNCgkJJGZpbGVuYW1lID0gJGRibmFtZTsNCg0KCWhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogZmlsZW5hbWU9JGZpbGVuYW1lLnNxbCIpOw0KCWhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldHN0cmVhbSIpOw0KCWhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOw0KCWhlYWRlcigiRXhwaXJlczogMCIpOw0KDQoJJHBSZXN1bHQgPSBteXNxbF9xdWVyeSggInNob3cgdmFyaWFibGVzIiApOw0KCXdoaWxlKCAxICkgew0KCQkkcm93QXJyYXkgPSBteXNxbF9mZXRjaF9yb3coICRwUmVzdWx0ICk7DQoJCWlmKCAkcm93QXJyYXkgPT0gZmFsc2UgKSBicmVhazsNCgkJaWYoICRyb3dBcnJheVswXSA9PSAiYmFzZWRpciIgKQ0KCQkJJGJpbmRpciA9ICRyb3dBcnJheVsxXS4iYmluLyI7DQoJfQ0KDQoJcGFzc3RocnUoICRiaW5kaXIuIm15c3FsZHVtcCAtLXVzZXI9JFVTRVJOQU1FIC0tcGFzc3dvcmQ9JFBBU1NXT1JEICRkYm5hbWUgJHRhYmxlbmFtZSIgKTsNCn0NCg0KZnVuY3Rpb24gdXRpbHMoKSB7DQoJZ2xvYmFsICRQSFBfU0VMRiwgJGNvbW1hbmQ7DQoJZWNobyAiPGgxPlV0aWxpdGllczwvaDE+XG4iOw0KCWlmKCAkY29tbWFuZCA9PSAiIiB8fCBzdWJzdHIoICRjb21tYW5kLCAwLCA1ICkgPT0gImZsdXNoIiApIHsNCgkJZWNobyAiPGhyPlxuIjsNCgkJZWNobyAiU2hvd1xuIjsNCgkJZWNobyAiPHVsPlxuIjsNCgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1zaG93X3N0YXR1cyc+U3RhdHVzPC9hPlxuIjsNCgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1zaG93X3ZhcmlhYmxlcyc+VmFyaWFibGVzPC9hPlxuIjsNCgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1zaG93X3Byb2Nlc3NsaXN0Jz5Qcm9jZXNzbGlzdDwvYT5cbiI7DQoJCWVjaG8gIjwvdWw+XG4iOw0KCQllY2hvICJGbHVzaFxuIjsNCgkJZWNobyAiPHVsPlxuIjsNCgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1mbHVzaF9ob3N0cyc+SG9zdHM8L2E+XG4iOw0KCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2hvc3RzIiApIHsNCgkJCWlmKCBteXNxbF9xdWVyeSggIkZsdXNoIGhvc3RzIiApICE9IGZhbHNlICkNCgkJCQllY2hvICI8Zm9udCBzaXplPTIgY29sb3I9cmVkPi0gU3VjY2VzczwvZm9udD4iOw0KCQkJZWxzZQ0KCQkJCWVjaG8gIjxmb250IHNpemU9MiBjb2xvcj1yZWQ+LSBGYWlsPC9mb250PiI7DQoJCX0NCgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1mbHVzaF9sb2dzJz5Mb2dzPC9hPlxuIjsNCgkJaWYoICRjb21tYW5kID09ICJmbHVzaF9sb2dzIiApIHsNCgkJCWlmKCBteXNxbF9xdWVyeSggIkZsdXNoIGxvZ3MiICkgIT0gZmFsc2UgKQ0KCQkJCWVjaG8gIjxmb250IHNpemU9MiBjb2xvcj1yZWQ+LSBTdWNjZXNzPC9mb250PiI7DQoJCQllbHNlDQoJCQkJZWNobyAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD4tIEZhaWw8L2ZvbnQ+IjsNCgkJfQ0KCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3ByaXZpbGVnZXMnPlByaXZpbGVnZXM8L2E+XG4iOw0KCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3ByaXZpbGVnZXMiICkgew0KCQkJaWYoIG15c3FsX3F1ZXJ5KCAiRmx1c2ggcHJpdmlsZWdlcyIgKSAhPSBmYWxzZSApDQoJCQkJZWNobyAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD4tIFN1Y2Nlc3M8L2ZvbnQ+IjsNCgkJCWVsc2UNCgkJCQllY2hvICI8Zm9udCBzaXplPTIgY29sb3I9cmVkPi0gRmFpbDwvZm9udD4iOw0KCQl9DQoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1c2hfdGFibGVzJz5UYWJsZXM8L2E+XG4iOw0KCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3RhYmxlcyIgKSB7DQoJCQlpZiggbXlzcWxfcXVlcnkoICJGbHVzaCB0YWJsZXMiICkgIT0gZmFsc2UgKQ0KCQkJCWVjaG8gIjxmb250IHNpemU9MiBjb2xvcj1yZWQ+LSBTdWNjZXNzPC9mb250PiI7DQoJCQllbHNlDQoJCQkJZWNobyAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD4tIEZhaWw8L2ZvbnQ+IjsNCgkJfQ0KCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3N0YXR1cyc+U3RhdHVzPC9hPlxuIjsNCgkJaWYoICRjb21tYW5kID09ICJmbHVzaF9zdGF0dXMiICkgew0KCQkJaWYoIG15c3FsX3F1ZXJ5KCAiRmx1c2ggc3RhdHVzIiApICE9IGZhbHNlICkNCgkJCQllY2hvICI8Zm9udCBzaXplPTIgY29sb3I9cmVkPi0gU3VjY2VzczwvZm9udD4iOw0KCQkJZWxzZQ0KCQkJCWVjaG8gIjxmb250IHNpemU9MiBjb2xvcj1yZWQ+LSBGYWlsPC9mb250PiI7DQoJCX0NCgkJZWNobyAiPC91bD5cbiI7DQoJfSBlbHNlIHsNCgkJJHF1ZXJ5U3RyID0gZXJlZ19yZXBsYWNlKCAiXyIsICIgIiwgJGNvbW1hbmQgKTsNCgkJJHBSZXN1bHQgPSBteXNxbF9xdWVyeSggJHF1ZXJ5U3RyICk7DQoJCWlmKCAkcFJlc3VsdCA9PSBmYWxzZSApIHsNCgkJCWVjaG8gIkZhaWwiOw0KCQkJcmV0dXJuOw0KCQl9DQoJCSRjb2wgPSBteXNxbF9udW1fZmllbGRzKCAkcFJlc3VsdCApOw0KDQoJCWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRxdWVyeVN0cjwvcD5cbiI7DQoJCWVjaG8gIjxocj5cbiI7DQoNCgkJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9MiBib3JkZXI9MD5cbiI7DQoJCWVjaG8gIjx0cj5cbiI7DQoJCWZvciggJGkgPSAwOyAkaSA8ICRjb2w7ICRpKysgKSB7DQoJCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQsICRpICk7DQoJCQllY2hvICI8dGg+Ii4kZmllbGQtPm5hbWUuIjwvdGg+XG4iOw0KCQl9DQoJCWVjaG8gIjwvdHI+XG4iOw0KDQoJCXdoaWxlKCAxICkgew0KCQkJJHJvd0FycmF5ID0gbXlzcWxfZmV0Y2hfcm93KCAkcFJlc3VsdCApOw0KCQkJaWYoICRyb3dBcnJheSA9PSBmYWxzZSApIGJyZWFrOw0KCQkJZWNobyAiPHRyPlxuIjsNCgkJCWZvciggJGogPSAwOyAkaiA8ICRjb2w7ICRqKysgKQ0KCQkJCWVjaG8gIjx0ZD4iLmh0bWxzcGVjaWFsY2hhcnMoICRyb3dBcnJheVskal0gKS4iPC90ZD5cbiI7DQoJCQllY2hvICI8L3RyPlxuIjsNCgkJfQ0KCQllY2hvICI8L3RhYmxlPlxuIjsNCgl9DQp9DQoNCmZ1bmN0aW9uIGhlYWRlcl9odG1sKCkgew0KCWdsb2JhbCAkUEhQX1NFTEY7DQoNCj8+DQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPk15U1FMIFdlYiBJbnRlcmZhY2U8L3RpdGxlPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCjwhLS0NCnAubG9jYXRpb24gew0KCWNvbG9yOiAjMTFiYjMzOw0KCWZvbnQtc2l6ZTogc21hbGw7DQp9DQpoMSB7DQoJY29sb3I6ICNBNEEyNjA7DQp9DQp0aCB7DQoJYmFja2dyb3VuZC1jb2xvcjogI0JEQkU0MjsNCgljb2xvcjogI0ZGRkZGRjsNCglmb250LXNpemU6IHgtc21hbGw7DQp9DQp0ZCB7DQoJYmFja2dyb3VuZC1jb2xvcjogI0RFREZBNTsNCglmb250LXNpemU6IHgtc21hbGw7DQp9DQpmb3JtIHsNCgltYXJnaW4tdG9wOiAwOw0KCW1hcmdpbi1ib3R0b206IDA7DQp9DQphIHsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsNCgljb2xvcjogIzg0ODIwMDsNCglmb250LXNpemU6eC1zbWFsbDsNCn0NCmE6bGluayB7DQp9DQphOmhvdmVyIHsNCgliYWNrZ3JvdW5kLWNvbG9yOiNFRUVGRDU7DQoJY29sb3I6IzY0NjIwMDsNCgl0ZXh0LWRlY29yYXRpb246bm9uZQ0KfQ0KLy8tLT4NCjwvc3R5bGU+DQo8L2hlYWQ+DQo8Ym9keT4NCjw/DQp9DQoNCmZ1bmN0aW9uIGZvb3Rlcl9odG1sKCkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQSFBfU0VMRiwgJFVTRVJOQU1FOw0KDQoJZWNobyAiPGhyPlxuIjsNCgllY2hvICI8Zm9udCBzaXplPTI+XG4iOw0KCWVjaG8gIjxmb250IGNvbG9yPWJsdWU+WyRVU0VSTkFNRV08L2ZvbnQ+IC0gXG4iOw0KDQoJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1saXN0REJzJz5EYXRhYmFzZSBMaXN0PC9hPiB8IFxuIjsNCglpZiggJHRhYmxlbmFtZSAhPSAiIiApDQoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bGlzdFRhYmxlcyZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+VGFibGUgTGlzdDwvYT4gfCAiOw0KCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMnPlV0aWxzPC9hPiB8XG4iOw0KCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bG9nb3V0Jz5Mb2dvdXQ8L2E+XG4iOw0KCWVjaG8gIjwvZm9udD5cbiI7DQoJZWNobyAiPC9ib2R5PlxuIjsNCgllY2hvICI8L2h0bWw+XG4iOw0KfQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNQUlODQoNCmlmKCAkYWN0aW9uID09ICJsb2dvbiIgfHwgJGFjdGlvbiA9PSAiIiB8fCAkYWN0aW9uID09ICJsb2dvdXQiICkNCglsb2dvbigpOw0KZWxzZSBpZiggJGFjdGlvbiA9PSAibG9nb25fc3VibWl0IiApDQoJbG9nb25fc3VibWl0KCk7DQplbHNlIGlmKCAkYWN0aW9uID09ICJkdW1wVGFibGUiIHx8ICRhY3Rpb24gPT0gImR1bXBEQiIgKSB7DQoJd2hpbGUoIGxpc3QoJHZhciwgJHZhbHVlKSA9IGVhY2goJEhUVFBfQ09PS0lFX1ZBUlMpICkgew0KCQlpZiggJHZhciA9PSAibXlzcWxfd2ViX2FkbWluX3VzZXJuYW1lIiApICRVU0VSTkFNRSA9ICR2YWx1ZTsNCgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl9wYXNzd29yZCIgKSAkUEFTU1dPUkQgPSAkdmFsdWU7DQoJfQ0KCSRteXNxbEhhbmRsZSA9IG15c3FsX3Bjb25uZWN0KCAkSE9TVE5BTUUsICRVU0VSTkFNRSwgJFBBU1NXT1JEICk7DQoJZHVtcCgpOw0KfSBlbHNlIHsNCgl3aGlsZSggbGlzdCgkdmFyLCAkdmFsdWUpID0gZWFjaCgkSFRUUF9DT09LSUVfVkFSUykgKSB7DQoJCWlmKCAkdmFyID09ICJteXNxbF93ZWJfYWRtaW5fdXNlcm5hbWUiICkgJFVTRVJOQU1FID0gJHZhbHVlOw0KCQlpZiggJHZhciA9PSAibXlzcWxfd2ViX2FkbWluX3Bhc3N3b3JkIiApICRQQVNTV09SRCA9ICR2YWx1ZTsNCgl9DQoJZWNobyAiPCEtLSI7DQoJJG15c3FsSGFuZGxlID0gbXlzcWxfcGNvbm5lY3QoICRIT1NUTkFNRSwgJFVTRVJOQU1FLCAkUEFTU1dPUkQgKTsNCgllY2hvICItLT4iOw0KDQoJaWYoICRteXNxbEhhbmRsZSA9PSBmYWxzZSApIHsNCgkJZWNobyAiPGh0bWw+XG4iOw0KCQllY2hvICI8aGVhZD5cbiI7DQoJCWVjaG8gIjx0aXRsZT5NeVNRTCBXZWIgSW50ZXJmYWNlPC90aXRsZT5cbiI7DQoJCWVjaG8gIjwvaGVhZD5cbiI7DQoJCWVjaG8gIjxib2R5PlxuIjsNCgkJZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCU+PHRyPjx0ZD48Y2VudGVyPlxuIjsNCgkJZWNobyAiPGgxPldyb25nIFBhc3N3b3JkITwvaDE+XG4iOw0KCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWxvZ29uJz5Mb2dvbjwvYT5cbiI7DQoJCWVjaG8gIjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPlxuIjsNCgkJZWNobyAiPC9ib2R5PlxuIjsNCgkJZWNobyAiPC9odG1sPlxuIjsNCgl9IGVsc2Ugew0KCQloZWFkZXJfaHRtbCgpOw0KCQlpZiggJGFjdGlvbiA9PSAibGlzdERCcyIgKQ0KCQkJbGlzdERhdGFiYXNlcygpOw0KCQllbHNlIGlmKCAkYWN0aW9uID09ICJjcmVhdGVEQiIgKQ0KCQkJY3JlYXRlRGF0YWJhc2UoKTsNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZHJvcERCIiApDQoJCQlkcm9wRGF0YWJhc2UoKTsNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAibGlzdFRhYmxlcyIgKQ0KCQkJbGlzdFRhYmxlcygpOw0KCQllbHNlIGlmKCAkYWN0aW9uID09ICJjcmVhdGVUYWJsZSIgKQ0KCQkJY3JlYXRlVGFibGUoKTsNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZHJvcFRhYmxlIiApDQoJCQlkcm9wVGFibGUoKTsNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAidmlld1NjaGVtYSIgKQ0KCQkJdmlld1NjaGVtYSgpOw0KCQllbHNlIGlmKCAkYWN0aW9uID09ICJxdWVyeSIgKQ0KCQkJdmlld0RhdGEoICRxdWVyeVN0ciApOw0KCQllbHNlIGlmKCAkYWN0aW9uID09ICJhZGRGaWVsZCIgKQ0KCQkJbWFuYWdlRmllbGQoICJhZGQiICk7DQoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkX3N1Ym1pdCIgKQ0KCQkJbWFuYWdlRmllbGRfc3VibWl0KCAiYWRkIiApOw0KCQllbHNlIGlmKCAkYWN0aW9uID09ICJlZGl0RmllbGQiICkNCgkJCW1hbmFnZUZpZWxkKCAiZWRpdCIgKTsNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdEZpZWxkX3N1Ym1pdCIgKQ0KCQkJbWFuYWdlRmllbGRfc3VibWl0KCAiZWRpdCIgKTsNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZHJvcEZpZWxkIiApDQoJCQlkcm9wRmllbGQoKTsNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAidmlld0RhdGEiICkNCgkJCXZpZXdEYXRhKCAiIiApOw0KCQllbHNlIGlmKCAkYWN0aW9uID09ICJhZGREYXRhIiApDQoJCQltYW5hZ2VEYXRhKCAiYWRkIiApOw0KCQllbHNlIGlmKCAkYWN0aW9uID09ICJhZGREYXRhX3N1Ym1pdCIgKQ0KCQkJbWFuYWdlRGF0YV9zdWJtaXQoICJhZGQiICk7DQoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImVkaXREYXRhIiApDQoJCQltYW5hZ2VEYXRhKCAiZWRpdCIgKTsNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdERhdGFfc3VibWl0IiApDQoJCQltYW5hZ2VEYXRhX3N1Ym1pdCggImVkaXQiICk7DQoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImRlbGV0ZURhdGEiICkNCgkJCWRlbGV0ZURhdGEoKTsNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAidXRpbHMiICkNCgkJCXV0aWxzKCk7DQoNCgkJbXlzcWxfY2xvc2UoICRteXNxbEhhbmRsZSk7DQoJCWZvb3Rlcl9odG1sKCk7DQoJfQ0KfQ0KDQo=");