Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $_F=__FILE__;$_C1767279132='Pz48P0RoRA0KDQoNCi8qKg0KKiBuTkggcSBYcXJnIFpOVUJxIG5xZGRO..
Decoded Output download
$_C1767279132=base64_decode($_C1767279132);$_C1767279132=strtr($_C1767279132,'wAXi8NBuKD2y6CcJE5VOTeajRHSY9lsmPWvqrokQM14pfGIxZzg70tnbhdLFU3','6AEFWeiLUpS0Y2xT1KR9H4gfXt5IB7NnrmZasvjPOk8zocJbMQyCquG3hlVDdw');$_R=str_replace('__FILE__',"'".$_F."'",$_C1767279132);eval($_R);$_R=0;$_C1767279132=0;
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_C1767279132='Pz48P0RoRA0KDQoNCi8qKg0KKiBuTkggcSBYcXJnIFpOVUJxIG5xZGROUGcgbmRmeHFkIGl0bUdIQmZtcg0KKg0KKiBARHFQcVcgckhQQm1hICRtcVdOIEpoTiBmREhCZm0gbXFXTg0KKiBAUE5IdFBtIGZ4a05HSHx4ZmZkIE1ESEJmbSBvcWR0TiBmbSBydEdHTnJyLCBqcWRyTiBCaiBtZiBvcWR0TiBOY0JySHINCiovDQoNCkJqICggISBVTmpCbU5VKCdBOTJRQUpUJykgKSB7DQoJVUJOKCdRZE5xck4gVWYgbWZIIGRmcVUgSGhCciBqQmROIFVCUE5HSGRnLicpOw0KfSANCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBYcXJnV05VQnEgbk5IIDdmbUhQZmQgUXFtTmQgTURIQmZtcg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTnFyZ19hTkhfZkRIQmZtKCAkbXFXTiApew0KICAgICROcXJnV05VQnFfb3FkdE5yID0gYU5IX2ZESEJmbSggJ05xcmdfV05VQnFfZkRIJyApOw0KICAgIEJqICggQnJfcVBQcWcoICROcXJnV05VQnFfb3FkdE5yICkgJiYgcVBQcWdfMU5nX05jQnJIciggJG1xV04sICROcXJnV05VQnFfb3FkdE5yICkgKSBQTkh0UG0gJE5xcmdXTlVCcV9vcWR0TnJbJG1xV05dOw0KICAgIFBOSHRQbSBqcWRyTjsNCn0gDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIEFGWllzIFZOYUJySE5QIEkyICYgNzIyDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyZ1dOVUJxX1BOYV9yR1BCREgoKSB7DQoJLy8gNzIyICggTldhLXJOSEhCbWFyLkRoRCwgSEJtZ1dHTi1VZGEuRGhELCBXTkhxeGZjTnIuRGhEICkNCgkzRF9QTmFCckhOUF9ySGdkTiggJ05xcmdXTlVCcS1HRHJIZ2ROcicsIERkdGFCbXJfdFBkKCAnR3JyL2p0bUdySGdkTi5HcnInLCBVQlBtcVdOKF9faVl1WF9fKSApLCBqcWRyTiwgWEEyNlpYRllBX0xYVjJZTXMsICdxZGQnKTsNCgkzRF9QTmFCckhOUF9ySGdkTiggJ05xcmdXTlVCcS1HZmRmUERCRzFOUEdycicsIERkdGFCbXJfdFBkKCAnR3JyL0dmZGZQREJHMU5QLkdycicsIFVCUG1xV04oX19pWXVYX18pICksIGpxZHJOLCBYQTI2WlhGWUFfTFhWMllNcyApOw0KCTNEX1BOYUJySE5QX3JIZ2ROKCAnTnFyZ1dOVUJxLXJkVVAnLCBEZHRhQm1yX3RQZCggJ0dyci9yZEJVTlAuR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdOcXJnV05VQnEtQnh0SEhmbScsIERkdGFCbXJfdFBkKCAnR3JyL0J4dEhIZm0uR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7CQ0KCTNEX1BOYUJySE5QX3JIZ2ROKCAnTnFyZ1dOVUJxLUhCbWdXR04nLCBEZHRhQm1yX3RQZCggJ0dyci9IQm1nV0dOLkdycicsIFVCUG1xV04oX19pWXVYX18pICksIGpxZHJOLCBYQTI2WlhGWUFfTFhWMllNcyApOw0KCTNEX1BOYUJySE5QX3JIZ2ROKCAnazB0TlBnLXRCLUhoTldOci1QTlVXZm1VJywgRGR0YUJtcl90UGQoICdHcnIvazB0TlBnL2swdE5QZy10Qi9IaE5XTnIvcldmZkhobU5yci9rMHROUGctdEItRS5FeS55Lkd0ckhmVy5XQm0uR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdOcXJnV05VQnEtSEJtZ1dHTicsIERkdGFCbXJfdFBkKCAnR3JyL0hCbWdXR04uR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7CQ0KCTNEX1BOYUJySE5QX3JIZ2ROKCAnazB0TlBnLVd0ZEhCck5kTkdILUdycicsIERkdGFCbXJfdFBkKCAnR3JyL2swdE5QZy9XdGRIQnJOZE5HSC9rMHROUGcuV3RkSEJyTmROR0guR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdrMHROUGctV05yckItR3JyJywgRGR0YUJtcl90UGQoICdHcnIvV05yckIuR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdrMHROUGctZEJhaEh4ZmMtR3JyJywgRGR0YUJtcl90UGQoICdHcnIvZEJhaEh4ZmNfV04uR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdrMHROUGctYVVxMVBxV0hIQkQtR3JyJywgRGR0YUJtcl90UGQoICdHcnIvazB0TlBnL2swdE5QZy5IZmZkSEJEL2swdE5QZy5IZmZkSEJELkdycicsIFVCUG1xV04oX19pWXVYX18pICksIGpxZHJOLCBYQTI2WlhGWUFfTFhWMllNcyApOw0KCQkJDQoJLy8gSTIgKCBOV2Etck5ISEJtYXIuRGhEICkgDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWswdE5QZy1OcXJCbWEnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcuTnFyQm1hLkUuYi5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsJDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLUdmZGZQREJHMU5QJywgRGR0YUJtcl90UGQoICdrci9HZmRmUERCRzFOUC9HZmRmUERCRzFOUC5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsJDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnR2ZkZlBEQkcxTlAtTmdOJywgRGR0YUJtcl90UGQoICdrci9HZmRmUERCRzFOUC9OZ04ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnR2ZkZlBEQkcxTlAtdEhCZHInLCBEZHRhQm1yX3RQZCggJ2tyL0dmZGZQREJHMU5QL3RIQmRyLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCQ0KCS8vIEkyICggSEJtZ1dHTi1VZGEuRGhEICkgDQoJLy8zRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctdEItR3RySGZXJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLXRCLUUuRXkueS5XQm0ua3InICwgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCS8vM0RfUE5hQnJITlBfckdQQkRIKCAnazB0TlBnLXRCLUd0ckhmVy1FJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLXRCLUUuTy5DLkd0ckhmVy5XQm0ua3InICwgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ2swdE5QZy1XdGRIQi1yTmQnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9XdGRIQnJOZE5HSC9rMHROUGcuV3RkSEJyTmROR0gua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJLy8zRF9QTmFCckhOUF9ySGdkTignZHFnZnRIa3InLCBEZHRhQm1yX3RQZCgna3IvR2ZkZlBEQkcxTlAvZHFnZnRILmtyJyAsIFVCUG1xV04oX19pWXVYX18pICkpOw0KCQ0KCS8vIEkyICggV05IcXhmY05yLkRoRCwgKSANCgkzRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctV3RkSEItck5kJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvV3RkSEJyTmROR0gvazB0TlBnLld0ZEhCck5kTkdILmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1HMU5VQkhmUCcsIERkdGFCbXJfdFBkKCAncVVVZm1yL0cxTlVCSGZQL0cxTlVCSGZQLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ2swdE5QZy1XTnJyQi1rcicsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2swdE5QZy5XTnJyQi5XQm0ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnazB0TlBnLWRCYWhIeGZjLWtyJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLmRCYWhIeGZjX1dOLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ2swdE5QZy1hVXExUHFXLUhmZmRIQkQnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcuSGZmZEhCRC5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsNCgkzRF9QTmFCckhOUF9ySGdkTiggJ2swdE5QZy1yRHFhQm1xSEJmbS1HcnInLCBEZHRhQm1yX3RQZCggJ0dyci9rMHROUGcvckJXRGRORHFhQm1xSEJmbS9yQldEZE5RcWFCbXFIQmZtLkdycicsIFVCUG1xV04oX19pWXVYX18pICkgKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctckRxYUJtcUhCZm0ta3InLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9yQldEZE5EcWFCbXFIQmZtL2swdE5QZy5yQldEZE5RcWFCbXFIQmZtLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctbWZIQmpnLWtyJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvbWZIQmpnLldCbS5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctb3FkQlVxSE4ta3InLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcub3FkQlVxSE4uV0JtLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KDQp9DQpxVVVfcUdIQmZtKCAncVVXQm1fQm1CSCcsICdOcXJnV05VQnFfUE5hX3JHUEJESCcgKTsNCg0KDQpqdG1HSEJmbSBOcXJnV05VQnFfalBmbUhObVVfa3IoKSB7DQoNCgkvLzNEX1VOUE5hQnJITlBfckdQQkRIKCdqQkhITmNIJyk7IC8vIFVOUE5hQnJITlAJCQ0KCS8vM0RfUE5hQnJITlBfckdQQkRIKCAnakJISE5jSCcsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2swdE5QZy5qQkhITmNILmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsJCQ0KCTNEX1BOYUJySE5QX3JHUEJESCggJ1dmZkhmZmRyLUdmUE4nLCBEZHRhQm1yX3RQZCggJ2tyL1dmZkhmZmRyL1dmZkhmZmRyLScgLk5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9EZHRhQm1fR2ZQTicgKS4gJy5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7CQ0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1HZlBOJywgRGR0YUJtcl90UGQoICdrci9XZmZIZmZkci9OcXJnV05VQnEua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1XTlVCcU5kTldObUhrcicsIFhabkZYaV9RdUtuWXNfS1Z1IC4nQm1HZHRVTnIvcVVVZm1yL1dOVUJxTmROV05tSC9XTlVCcU5kTldObUgtcW1VLURkcWdOUC5XQm0ua3InLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1CcmZIZkROJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLkJyZkhmRE4uV0JtLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsJCQ0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1xa3FjalBmbUhObVUnLCBEZHRhQm1yX3RQZCggJ2tyL2p0bUcvcWtxYy1qUGZtSE5tVS5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBqcWRyTiApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtalBmbUhObVUnLCBEZHRhQm1yX3RQZCggJ2tyL2p0bUcvalBmbUhObVUua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywganFkck4gKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEta0RxYU5yJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcva1FxYU5yLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsJCQ0KCS8vM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWRxcGdkZnFVJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLmRxcGdkZnFVLldCbS5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWRxcGcnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcuZHFwZy5XQm0ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCQ0KCS8vYlBVIERxUEhnJ3IgdUJhaEh4ZmMNCgkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtR2ZkZlB4ZmMnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9qUGZtSE5tVWRCYWhIeGZjL0dmZGZQeGZjL2swdE5QZy5HZmRmUHhmYy1XQm0ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtZEJhaEh4ZmMnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9qUGZtSE5tVWRCYWhIeGZjL2RCYWhIeGZjL2RCYWhIeGZjLldCbS5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWpxbUdneGZjJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvalBmbUhObVVkQmFoSHhmYy9qcW1HZ3hmYy9rMHROUGcuanFtR2d4ZmMuRHFHMS5rcicgLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1XZnRyTjNoTk5kJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLldmdHJOM2hOTmQtYi55LncuRHFHMS5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWpxbUdneGZjLXh0SEhmbXInLCBYWm5GWGlfUXVLbllzX0tWdSAuJ0dyci9ySGdkTnIvanFtR2d4ZmMvaE5kRE5Qci9rMHROUGcuanFtR2d4ZmMteHRISGZtci5rcicsIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWpxbUdneGZjLVdOVUJxJywgWFpuRlhpX1F1S25Zc19LVnUgLidHcnIvckhnZE5yL2pxbUdneGZjL2hOZEROUHIvazB0TlBnLmpxbUdneGZjLVdOVUJxLmtyJywgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtanFtR2d4ZmMtSGh0V3hyJywgWFpuRlhpX1F1S25Zc19LVnUgLidHcnIvckhnZE5yL2pxbUdneGZjL2hOZEROUHIvazB0TlBnLmpxbUdneGZjLUhodFd4ci5rcicsIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7CQ0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1EUE5ISGdEaGZIZicsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2pQZm1ITm1VZEJhaEh4ZmMvRFBOSEhnRGhmSGYvazB0TlBnLkRQTkhIZ1FoZkhmLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtanFtR2d4ZmNqUE5OLU5xckJtYScsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2pQZm1ITm1VZEJhaEh4ZmMvanFtR2d4ZmNqUE5OL2swdE5QZy5OcXJCbWEtRS5iLkRxRzEua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtanFtR2d4ZmNqUE5OLVdmdHJOM2hOTmQnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9qUGZtSE5tVWRCYWhIeGZjL2pxbUdneGZjalBOTi9rMHROUGcuV2Z0ck4zaE5OZC1iLnkuZS5EcUcxLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsJDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWpxbUdneGZjalBOTi1qcW1HZ3hmYycsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2pQZm1ITm1VZEJhaEh4ZmMvanFtR2d4ZmNqUE5OL2swdE5QZy5qcW1HZ3hmYy1FLmIuZS5EcUcxLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtRGhmSGZyM0JETicsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2pQZm1ITm1VZEJhaEh4ZmMvRGhmSGZyM0JETi9HZlVOLkRoZkhmcjNCRE4uazB0TlBnLWIueS5TLldCbS5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsJDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLTFkcXJyJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvalBmbUhObVVkQmFoSHhmYy9EaGZIZnIzQkROL2RCeC8xZHFyci5XQm0ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWtycmZQLUdmUE4nLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rcnJmUC9rcnJmUC5HZlBOLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1rcnJmUC10SEJkcicsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2tycmZQL2tycmZQLnRIQmRyLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1rcnJmUC1yZEJVTlAnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rcnJmUC9rcnJmUC5yZEJVTlAuV0JtLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1EaGZIZnhmYycsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2pQZm1ITm1VZEJhaEh4ZmMvRGhmSGZ4ZmMvazB0TlBnLkRoZkhmeGZjLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEteGNyZEJVTlAnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy94Y3JkQlVOUC9rMHROUGcueGNyZEJVTlAuV0JtLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS14Y3JkQlVOUC1OcXJCbWEnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcuTnFyQm1hLkUuYi5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsJDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWpmSGZQcVdxJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvamZIZlBxV3EvamZIZlBxV3Eua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7CQkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtQldxYU5kZnFVTlAnLCBEZHRhQm1yX3RQZCggJ2tyL0JXcWFOZGZxVU5QL0JXcWFOcmRmcVVOVS5EMWFVLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOwkNCgkJDQp9DQpxVVVfcUdIQmZtKCAnM0RfTm0wdE50Tl9yR1BCREhyJywgJ05xcmdXTlVCcV9qUGZtSE5tVV9rcicgKTsNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBGTmpCbU5yDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpVTmpCbU4oICdYWm5fWTJfQUlBUicsIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9xa3FjJyApICk7DQokTldhV05XZlBnID0gKEJtSCkgQEJtQl9hTkgoJ1dOV2ZQZ19kQldCSCcpOw0KJE5XYVdOV2ZQZyA9IE5XREhnKCROV2FXTldmUGcpID8gX18oJ3MvQScpIDogJE5XYVdOV2ZQZyAuIF9fKCcgWjknKTsNCg0KLyogSmhOck4gakJkTnIgeHRCZFUgZnRIIEhoTiBEZHRhQm0gckROR0JqQkcgZkRIQmZtciBxbVUgcXJyZkdCcUhOVSBqdG1HSEJmbXIuICovDQpQTjB0QlBOX2ZtR04gKFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL2ZESEJmbXIuRGhEJyk7IA0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBRZHRhQm0gS0RVcUhOIDdoTkcxDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQovKiBAckJtR04gRS5TLnkuYg0KQmogKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fdERHaDEnICkgPT0gJ0UnICkgew0KQm1HZHRVTl9mbUdOKFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL3RELW1mSEJqQk5QLkRoRCcpOw0KfQ0KKi8NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgdWZxVSA3Zm1IUGZkIFFxbU5kDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9OV2Etck5ISEJtYXIuRGhEJyApOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICB1ZnFVIGlQZm1IIFhtVSAyR1BCREgNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9EZHRhJyApID09ICdFJyApIHsJDQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL2pQZm1ITm1VLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvVWdtcVdCRy1ySGdkTi5EaEQnICk7DQp9DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIEFVVSA4QlVhTkgsIFpOSHF4ZmMgJiAyaGZQSEdmVU4NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL1dOSHF4ZmNOci5EaEQnICk7IA0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9yaGZQSEdmVU4uRGhEJyApOw0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9ITldEZHFITnIvTldhLXJkQlVOUC1mbU4uRGhEJyApOw0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9ITldEZHFITnIvTldhLXJkQlVOUC1IM2YuRGhEJyApOw0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9ITldEZHFITnIvTldhLUdxUGZ0ck5kLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1qZkhmUHFXcS5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL0hOV0RkcUhOci9xa3FjLXFkeHRXLkRoRCcgKTsgIA0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9ITldEZHFITnIvTldhLXFkeHRXLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1xZHh0Vy14cUcxLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSEJtZ1dHTi1VZGEuRGhEJyApOyANCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSHFjZm1mV2cuRGhEJyApOw0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9OcXJnM0JVYU5ILkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvTnFyZy1VZkdyLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvTldhLWpOcUh0UE5VLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvTldhLWpQTk5EZHRhQm1yLkRoRCcgKTsNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgVGZvTlAgMkhnZE4gbk5tTlBxSGZQIEByQm1HTiBFLlMueS5iDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQpqdG1HSEJmbSBOV2FfaGZvTlBfYU5tKCAkQnJoZm9OUCwgJHJIZ2ROSGdETiwgJEhCSGROLCAkcnR4SEJIZE4gKSB7DQoJDQoJQmogKCAkQnJoZm9OUCA9PSAnRScgKSB7DQoJCQ0KCS8vIEpoQnIgQnIgcSBGTmpxdGRIIDJIZ2ROCQ0KCQkNCgkJcjNCSEdoICgkckhnZE5IZ0ROKSB7DQoJCQkNCgkJCUdxck4gJ2hmb05QZm1OJzoNCgkJCSRIV3hySGdkTiA9ICc8cVBIQkdkTiBHZHFycj0iVXEtcW1CV3FITiBVcS1yZEJVTmlQZldWQmFoSCI+PEQgR2RxcnI9Ik5XYWpCSEhOY0giPicuJEhCSGROLic8L0Q+PFVCbyBHZHFycj0iamZQckRxbSI+PHJEcW0gR2RxcnI9InBmZlciPjwvckRxbT48L1VCbz48L3FQSEJHZE4+JzsNCgkJCXhQTnExOw0KCQkJDQoJCQkNCgkJCUdxck4gJ05XYW9CTjMtSDNmJzoNCgkJCSRIV3hySGdkTiA9ICc8VUJvIEdkcXJyPSJOV2FXcXIxIj48aEMgR2RxcnI9Ik5XYUhCSGROIE5XYWpCSEhOY0giPicuJEhCSGROLic8L2hDPjxEIEdkcXJyPSJOV2FydHhIQkhkTiI+Jy4kcnR4SEJIZE4uJzwvRD48L1VCbz4nOw0KCQkJDQoJCQl4UE5xMTsNCgkJCQ0KCQkJDQoJCQlHcXJOICdOV2FvQk4zLUhoUE5OJzoNCgkJCSRIV3hySGdkTiA9ICc8VUJvIEdkcXJyPSJOV2FXcXIxIj48aEMgR2RxcnI9Ik5XYUhCSGROIE5XYWpCSEhOY0giPicuJEhCSGROLic8L2hDPjxEIEdkcXJyPSJOV2FydHhIQkhkTiI+Jy4kcnR4SEJIZE4uJzwvRD48L1VCbz4nOw0KCQkJDQoJCQl4UE5xMTsNCgkJCQ0KCQkJDQoJCQlHcXJOICdOV2FvQk4zLWpmdFAnOg0KCQkJJEhXeHJIZ2ROID0gJzxoQyBHZHFycj0iTldhSEhkIE5XYWpCSEhOY0giPicuJEhCSGROLic8L2hDPic7DQoJCQkNCgkJCXhQTnExOwkJCQkNCgkJCQ0KCQ0KCQlVTmpxdGRIOg0KCQl4UE5xMTsJDQoJCX0NCgkJDQoJfSBOZHJOIHsNCgkJJEhXeHJIZ2ROID0gJzxEIEdkcXJyPSJVcS1xbUJXcUhObWggTldhakJISE5jSCIgckhnZE49IlVCckRkcWc6bWZtTjsiPicuJEhCSGROLic8L0Q+PFVCbyBHZHFycj0iamZQckRxbXEiPjxyRHFtIEdkcXJyPSJwZmZXcSI+PC9yRHFtPjwvVUJvPic7DQoJfQkJDQoNClBOSHRQbSAkSFd4ckhnZE47DQoNCn0NCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBBZHh0VyBuTm1OUHFIZlAgQHJCbUdOIEUuUy55LmINCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCmp0bUdIQmZtIE5XYV9kQmFoSHhmY19CV3FhTl9xZHh0V19hTm1OUHFIZlAoICRkYUhnRE4sICRkYTMsICRkYWgsICRkYUdkciwgJGRhV05CVWpCZEhOUCwgJGRhQnJQRywgJGRhcWRILCAkZGFHckhnZE4sICRkYVBOZCwgJGRhSEhkID0gbXRkZCwgJFBtVVcsICRoZm9mUG1mUCwgJFdOVUhnRE4sICRCcnhxVWFOLCAkQldhR2Z0bUgsICRyZlBtLCAkSGh0V3hySGdkTiwgJHFkQlUsICRCcmRxcGcsICRkcXBEZEcgKSB7DQoJDQoJCSRCcmFxZGRCbWpmID0gYU5IX0RmckhfV05IcSggJHFkQlUsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX2FxZGROUGdfZkRIQycsIEhQdE4gKTsNCgkJDQoJCUJqICggJEJyYXFkZEJtamYgPT0gJ2ZtJyApIHsNCgkJCSRCV2FCbWpmID0gYU5IX0RmckgoICRxZEJVICk7DQoJCQkkQkhIZCA9IHJIUEJEcmRxcmhOciAoIE5yR19oSFdkKCBOckdfa3IoICRCV2FCbWpmLT5EZnJIX0hCSGROICkgKSApOw0KCQkJJEJyeHhISGQgPSBySFBCRHJkcXJoTnIgKCBOckdfaEhXZCggTnJHX2tyKCAkQldhQm1qZi0+RGZySF9OY0dOUERIICkgKSApOw0KCQl9DQoJCU5kck4gew0KCQkJJEJISGQgPSBySFBCRHJkcXJoTnIoIGFOSF9EZnJIX1dOSHEoICRxZEJVLCAnTnFyV05VQnFfV05IcXhmY19IQkhkTicsIEhQdE4gKSApOw0KCQkJJEJyeHhISGQgPSBySFBCRHJkcXJoTnIoIGFOSF9EZnJIX1dOSHEoICRxZEJVLCAnTnFyV05VQnFfV05IcXhmY19ydHhfSEJIZE4nLCBIUHROICkgKTsNCgkJfQ0KCQkNCgkJQmogKCRCcnhxVWFOID09ICdFJyAmJiAkV05VSGdETiA9PSAnWnRkSEJEZE4gWVdxYU5yICgyZEJVTlApJyApew0KCQkJJHFVVXhxVWFOID0gJzxyRHFtIEdkcXJyPSJOV2EteHFVYU5yIj48ckRxbSBHZHFycj0iQkdmdG1IIj4nLiRCV2FHZnRtSC4nPC9yRHFtPjxyRHFtIEdkcXJyPSJCV2FIYSI+Jy4kcmZQbS4nPC9yRHFtPjwvckRxbT4nOw0KCQl9IE5kck4gew0KCQkJJHFVVXhxVWFOID0gJyc7DQoJCX0JDQoNCgkJTkdoZiAnPFVCbyBVcUhxLU5XYS1HaEJkVT0iJy4kQldhR2Z0bUguJyIgVXFIcS1OV2EtcWR4dFc9IicuJHFkQlUuJyIgckhnZE49IjNCVUhoOicuJGRhMy4nRGM7IGhOQmFoSDonLiRkYWguJ0RjOyIgR2RxcnI9IicuJGRhR2RyLicgJy4kSGh0V3hySGdkTi4nIG9CTjMgVXEtSGh0V3hyIERQTmRmcVVOUG9CTjMgamRIUCcuJGRhV05CVWpCZEhOUC4nIGt0ckhxZHh0VyI+Jy4kcVVVeHFVYU4uJzxVQm8gR2RxcnI9IkJOaHFtVSI+PHEgZm1HZEJHMT0iUE5IdFBtIGpxZHJOOyIgR2RxcnI9IicuJHFkQlUuJyBtZmpmZnhmYyIgaFBOaj0iIyI+PEJXYSBHZHFycj0iTldhZHFwZyIgJy4kZHFwRGRHLicgJy4kQnJkcXBnLic9IicuJGRhQnJQRy4nIiBxZEg9IicuJGRhcWRILiciIC8+Jy5OV2FfaGZvTlBfYU5tKCAkaGZvZlBtZlAsICRIaHRXeHJIZ2ROLCAkQkhIZCwgJEJyeHhISGQgKS4nPC9xPjwvVUJvPjwvVUJvPic7DQoJCQkNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgdUJhaEh4ZmMgbk5tTlBxSGZQIEByQm1HTiBFLlMueS5iDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX2RCYWhIeGZjX0JXcWFOX2FQQlVfYU5tTlBxSGZQKCAkZGFIZ0ROLCAkZGEzLCAkZGFoLCAkZGFHZHIsICRkYVdOQlUsICRkYUJyUEcsICRkYXFkSCwgJGRhR3JIZ2ROLCAkRHJIQlUsICRkYUJXQlUsICRkYVBOZCwgJGRhanRkZERIaCwgJGRhSEhkID0gbXRkZCwgJFBtVVcsICRoZm9mUG1mUCwgJEhodFd4ckhnZE4sICRCcmRxcGcsICREZEdoZFVQID0gbXRkZCApIHsNCgkNCgkJJEJyYXFkZEJtamYgPSBhTkhfRGZySF9XTkhxKCAkRHJIQlUsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX2FxZGROUGdfZkRIQycsIEhQdE4gKTsNCgkJDQoJCUJqICggJEJyYXFkZEJtamYgPT0gJ2ZtJyApIHsNCgkJCSRCV2FCbWpmID0gYU5IX0RmckgoICRkYUJXQlUgKTsNCgkJCSRCSEhkID0gckhQQkRyZHFyaE5yICggTnJHX2hIV2QoIE5yR19rciggJEJXYUJtamYtPkRmckhfSEJIZE4gKSApICk7DQoJCQkkQnJ4eEhIZCA9IHJIUEJEcmRxcmhOciAoIE5yR19oSFdkKCBOckdfa3IoICRCV2FCbWpmLT5EZnJIX05jR05QREggKSApICk7DQoJCX0NCgkJTmRyTiB7DQoJCQkkQkhIZCA9IHJIUEJEcmRxcmhOciggYU5IX0RmckhfV05IcSggJERySEJVLCAnTnFyV05VQnFfV05IcXhmY19IQkhkTicsIEhQdE4gKSApOw0KCQkJJEJyeHhISGQgPSBySFBCRHJkcXJoTnIoIGFOSF9EZnJIX1dOSHEoICREckhCVSwgJ05xcldOVUJxX1dOSHF4ZmNfcnR4X0hCSGROJywgSFB0TiApICk7DQoJCX0NCgkJDQoJQmogKCAkZGFxZEggKSB7DQoJCQ0KCQkkZGFxZEggPSB0RzNmUFVyKCBySFBfUE5EZHFHTiggJy0nLCAnICcsICRkYXFkSCApICk7DQoJCQ0KCQl9IE5kck4gew0KCQkJDQoJCQkkZGFxZEggPSAnQldxYU4gYXFkZE5QZyc7DQoJCQkNCgkJCX0NCgkJDQoJcjNCSEdoICggJGRhSGdETiApIHsNCgkJDQoJCS8vIFhabiB1QmFoSHhmYyAoIEZOanF0ZEggKQ0KCQlHcXJOICdOV2FkeCc6DQoJCU5HaGYgJzxVQm8gckhnZE49IjNCVUhoOicuJGRhMy4nRGM7IGhOQmFoSDonLiRkYWguJ0RjOyIgR2RxcnI9IicuJGRhR2RyLicgJy4kSGh0V3hySGdkTi4nIG9CTjMgVXEtSGh0V3hyIERQTmRmcVVOUG9CTjMgamRIUCcuJGRhV05CVS4nIj48VUJvIEdkcXJyPSJCTmhxbVUiPjxxIGZtR2RCRzE9Ik5xcmdBR0hCb04ySGdkTjJoTk5IKFwnJy4kZGFHckhnZE4uJ1wnKTtQTkh0UG0gSFB0TjsiIEdkcXJyPSInLiREckhCVS4nLScuJGRhQldCVS4nIG1mamZmeGZjIiBQTmQ9IicuJGRhUE5kLiciIGhQTmo9IicuJGRhanRkZERIaC4nIj48QldhICcuJERkR2hkVVAuJyBHZHFycj0iTldhZHFwZyIgJy4kQnJkcXBnLic9IicuJGRhQnJQRy4nIiBxZEg9IicuJGRhcWRILiciIEhCSGROPSInLiRkYXFkSC4nIi8+Jy5OV2FfaGZvTlBfYU5tKCAkaGZvZlBtZlAsICRIaHRXeHJIZ2ROLCAkQkhIZCwgJEJyeHhISGQgKS4nPC9xPjwvVUJvPjwvVUJvPic7DQoNCgkJeFBOcTE7DQoJCQ0KCQkvLyBpZmY5ZmMgdUJhaEh4ZmMNCgkJR3FyTiAnamZmeGMnOgkNCgkJQmogKCBOcXJnV05VQnFfQnJqZmZ4ZmMoKSA9PSAncUdIQm9OJyApeyAJDQoJCQ0KCQkJQmooR2RxcnJfTmNCckhyKCdpZmZ4ZmNfaVBOTicpKXsNCgkJCQkkQnJqZmZ4ZmNqUE5OID0gJ0dkcXJyPSIzRC1CV3FhTi0nLiREckhCVS4nLScuJGRhQldCVS4nIic7DQoJCQkJfSBOZHJOIHsNCgkJCQkJJEJyamZmeGZjalBOTiA9ICcnOw0KCQkJCQl9CQkNCgkJDQoJCU5HaGYgJzxVQm8gckhnZE49IjNCVUhoOicuJGRhMy4nRGM7IGhOQmFoSDonLiRkYWguJ0RjOyIgR2RxcnI9IicuJGRhR2RyLicgJy4kSGh0V3hySGdkTi4nIG9CTjMgVXEtSGh0V3hyIERQTmRmcVVOUG9CTjMgamRIUCcuJGRhV05CVS4nIj48VUJvIEdkcXJyPSJCTmhxbVUiPjxxIEdkcXJyPSJqZmZ4ZmMtQm1ySHFtR04gamZmeGZjICcuJERySEJVLictJy4kZGFCV0JVLiciIGhQTmo9IicuJGRhanRkZERIaC4nIiBQTmQ9Ik5XYWpmZnhmYycuJGRhV05CVS4nIiBIQkhkTj0iJy4kQnJ4eEhIZC4nIj48QldhICcuJERkR2hkVVAuJyBHZHFycj0iTldhZHFwZyIgJy4kQnJkcXBnLic9IicuJGRhQnJQRy4nIiBxZEg9IicuJEJISGQuJyIgJy4kQnJqZmZ4ZmNqUE5OLicvPicuTldhX2hmb05QX2FObSggJGhmb2ZQbWZQLCAkSGh0V3hySGdkTiwgJEJISGQsICRCcnh4SEhkICkuJzwvcT48L1VCbz48L1VCbz4nOwkJDQoJCX0gTmRyTiB7DQoJCQlOR2hmICcnOw0KCQl9DQoJCXhQTnExOw0KCQkNCgkJLy8gN2ZkZlB4ZmMgdUJhaEh4ZmMNCgkJR3FyTiAnR3gnOgkJDQogCQlOR2hmJzxVQm8gckhnZE49IjNCVUhoOicuJGRhMy4nRGM7IGhOQmFoSDonLiRkYWguJ0RjOyIgR2RxcnI9IicuJGRhR2RyLicgJy4kSGh0V3hySGdkTi4nIG9CTjMgVXEtSGh0V3hyIERQTmRmcVVOUG9CTjMgamRIUCcuJGRhV05CVS4nIj48VUJvIEdkcXJyPSJCTmhxbVUiPjxxIEdkcXJyPSJOV2EtR3hmYyBtZmpmZnhmYyIgaFBOaj0iJy4kZGFqdGRkREhoLiciIEhCSGROPSInLiRCSEhkLiciPjxCV2EgJy4kRGRHaGRVUC4nIEdkcXJyPSJOV2FkcXBnIiAnLiRCcmRxcGcuJz0iJy4kZGFCclBHLiciIHFkSD0iJy4kZGFxZEguJyIgLz4nLk5XYV9oZm9OUF9hTm0oICRoZm9mUG1mUCwgJEhodFd4ckhnZE4sICRCSEhkLCAkQnJ4eEhIZCApLic8L3E+PC9VQm8+PC9VQm8+JzsJDQoJCQ0KCQl4UE5xMTsNCgkJDQoJCS8vIHVCYWhIeGZjQyB1QmFoSHhmYw0KCQlHcXJOICdkeEMnOgkJDQogCQlOR2hmJzxVQm8gckhnZE49IjNCVUhoOicuJGRhMy4nRGM7IGhOQmFoSDonLiRkYWguJ0RjOyIgR2RxcnI9IicuJGRhR2RyLicgJy4kSGh0V3hySGdkTi4nIG9CTjMgVXEtSGh0V3hyIERQTmRmcVVOUG9CTjMgamRIUCcuJGRhV05CVS4nIj48VUJvIEdkcXJyPSJCTmhxbVUiPjxxIEdkcXJyPSJtZmpmZnhmYyIgaFBOaj0iJy4kZGFqdGRkREhoLiciIEhCSGROPSInLiRCcnh4SEhkLiciIFVxSHEtZEJhaEh4ZmM9Ild4ZEJhaEh4ZmNbJy4kRHJIQlUuJ10iIFVxSHEtSEJIZE49IicuJEJISGQuJyI+PEJXYSAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRkYXFkSC4nIiAvPicuTldhX2hmb05QX2FObSggJGhmb2ZQbWZQLCAkSGh0V3hySGdkTiwgJEJISGQsICRCcnh4SEhkICkuJzwvcT48L1VCbz48L1VCbz4nOwkJCQ0KDQoJCXhQTnExOwkNCgkJDQoJCS8vIGlxbUdneGZjIHVCYWhIeGZjDQoJCUdxck4gJ2p4Qyc6CQkNCiAJCU5HaGYnPFVCbyBySGdkTj0iM0JVSGg6Jy4kZGEzLidEYzsgaE5CYWhIOicuJGRhaC4nRGM7IiBHZHFycj0iJy4kZGFHZHIuJyAnLiRIaHRXeHJIZ2ROLicgb0JOMyBVcS1IaHRXeHIgRFBOZGZxVU5Qb0JOMyBqZEhQJy4kZGFXTkJVLiciPjxVQm8gR2RxcnI9IkJOaHFtVSI+PHEgVXFIcS1qcW1HZ3hmYy1IZ0ROPSJCV3FhTiIgR2RxcnI9Ik5XYWpxbUdneGZjIG1mamZmeGZjIGpxbUdneGZjLkJXcWFOIGpxbUdneGZjLXh0SEhmbSIgUE5kPSJOV2FqcW1HZy0nLiREckhCVS4nIiBoUE5qPSInLiRkYWp0ZGRESGguJyIgSEJIZE49IicuJEJISGQuJyI+PEJXYSAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRkYXFkSC4nIiAvPicuTldhX2hmb05QX2FObSggJGhmb2ZQbWZQLCAkSGh0V3hySGdkTiwgJEJISGQsICRCcnh4SEhkICkuJzwvcT48L1VCbz48L1VCbz4nOwkNCgkJDQoJCXhQTnExOwkNCgkJDQoJCS8vIGlxbUdneGZjIGlQTk4gdUJhaEh4ZmMNCgkJR3FyTiAnanhqUE5OJzoJCQ0KIAkJTkdoZic8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBHZHFycj0ibWZqZmZ4ZmMiIFBOZD0iTldhanFtR2dqUE5OIiBoUE5qPSInLiRkYWp0ZGRESGguJyIgSEJIZE49IicuJEJISGQuJyI+PEJXYSAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRkYXFkSC4nIiAvPicuTldhX2hmb05QX2FObSggJGhmb2ZQbWZQLCAkSGh0V3hySGdkTiwgJEJISGQsICRCcnh4SEhkICkuJzwvcT48L1VCbz48L1VCbz4nOwkNCgkJDQoJCXhQTnExOwkJCQ0KCQkJCQkJDQoJCS8vIFFQTkhIZ1FoZkhmIHVCYWhIeGZjDQoJCUdxck4gJ0REJzoJCQ0KIAkJTkdoZic8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBHZHFycj0ibWZqZmZ4ZmMiIFBOZD0iTldhRFBOSEhnUWhmSGZbcmhmM3FkZF0iIGhQTmo9IicuJGRhanRkZERIaC4nIiBIQkhkTj0iJy4kQkhIZC4nIj48QldhICcuJERkR2hkVVAuJyBHZHFycj0iTldhZHFwZyIgJy4kQnJkcXBnLic9IicuJGRhQnJQRy4nIiBxZEg9IicuJGRhcWRILiciIC8+Jy5OV2FfaGZvTlBfYU5tKCAkaGZvZlBtZlAsICRIaHRXeHJIZ2ROLCAkQkhIZCwgJEJyeHhISGQgKS4nPC9xPjwvVUJvPjwvVUJvPic7CQ0KCQkNCgkJeFBOcTE7DQoJCQ0KCQkvLyBRaGZIZjIzQkROIHVCYWhIeGZjDQoJCUdxck4gJ0RyJzoJCQ0KIAkJTkdoZic8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBHZHFycj0ibWZqZmZ4ZmMiIGhQTmo9IicuJGRhanRkZERIaC4nIiBIQkhkTj0iJy4kQnJ4eEhIZC4nIj48QldhICcuJERkR2hkVVAuJyBHZHFycj0iTldhZHFwZyIgJy4kQnJkcXBnLic9IicuJGRhQnJQRy4nIiBxZEg9IicuJEJISGQuJyIgLz4nLk5XYV9oZm9OUF9hTm0oICRoZm9mUG1mUCwgJEhodFd4ckhnZE4sICRCSEhkLCAkQnJ4eEhIZCApLic8L3E+PC9VQm8+PC9VQm8+JzsJDQoJCQ0KCQl4UE5xMTsJDQoJCQ0KCQkvLyBRaGZIZjlmYyB1QmFoSHhmYw0KCQlHcXJOICdEeGZjJzoJCQ0KIAkJTkdoZic8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBHZHFycj0ibWZqZmZ4ZmMiIGhQTmo9IicuJGRhanRkZERIaC4nIiBIQkhkTj0iJy4kQnJ4eEhIZC4nIj48QldhIFVxSHEtRGhmSGZ4ZmMtSGh0V3g9IicuJGRhQnJQRy4nIiAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgSEJIZE49IicuJEJISGQuJyIgLz4nLk5XYV9oZm9OUF9hTm0oICRoZm9mUG1mUCwgJEhodFd4ckhnZE4sICRCSEhkLCAkQnJ4eEhIZCApLic8L3E+PC9VQm8+PC9VQm8+JzsJDQoNCgkJeFBOcTE7CQkJCQkJCQkNCgkJDQoJCS8vIDhmUFVEUE5yciBKaEJHMTlmYw0KCQlHcXJOICczREh4JzoJCQ0KIAkJTkdoZic8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBHZHFycj0ibWZqZmZ4ZmMgSGhCRzF4ZmMiIFBOZD0iTldhSGhCRzF4ZmMiIGhQTmo9IicuJGRhanRkZERIaC4nIiBIQkhkTj0iJy4kQkhIZC4nIj48QldhICcuJERkR2hkVVAuJyBHZHFycj0iTldhZHFwZyIgJy4kQnJkcXBnLic9IicuJGRhQnJQRy4nIiBxZEg9IicuJEJyeHhISGQuJyIgLz4nLk5XYV9oZm9OUF9hTm0oICRoZm9mUG1mUCwgJEhodFd4ckhnZE4sICRCSEhkLCAkQnJ4eEhIZCApLic8L3E+PC9VQm8+PC9VQm8+JzsJDQoJCQ0KCQl4UE5xMTsJCQkNCgkJDQoJCVVOanF0ZEg6DQoJCXhQTnExOw0KCX0gIAkNCgkNClBOSHRQbTsNCgkNCn0NCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICB1QmFoSHhmYyAyR1BCREggbk5tTlBxSGZQIEByQm1HTiBFLlMueS5iDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQpqdG1HSEJmbSBOV2FfZEJhaEh4ZmNfckdQQkRIX2FObU5QcUhmUCggJGRhSGdETiwgJEJycmRCVU5xdEhmLCAkQnJyZEJVTkJtSFBvZCwgJEJycmRCVU5yaGYzID0gbXRkZCwgJEJIV3JCVSA9IG10ZGQsICRXcUJtQlUgPSBtdGRkICkgew0KDQpmeF9ySHFQSCgpOw0KDQoJcjNCSEdoICggJGRhSGdETiApIHsNCgkJDQoJCS8vIFhabiB1QmFoSHhmYyAoIEZOanF0ZEggKQ0KCQlHcXJOICdOV2FkeCc6DQpOR2hmJzxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKSB7DQoJCSBrenROUGcoICIjakJkSE5QciBkQiIgKS5HZEJHMShqdG1HSEJmbSgpIHsNCgkJCSBOZFdtSHJOZCA9IGt6dE5QZyhIaEJyKS5xSEhQKCJVcUhxLWZESEJmbS1vcWR0TiIpOw0KCQkJIEJqIChOZFdtSHJOZCA9PSAiKiIpIHsNCgkJCQlrenROUGcoIi5CTmhxbVUgcSIpLnFISFAoIlBOZCIsICJOcXJnV05VQnFbcmhmM3FkZF0iKTsNCgkJCSB9IE5kck4gew0KCQkJCSBrenROUGcoIi4iK05kV21Ick5kLnJ0eHJIUEJtYShFKSsiIC5CTmhxbVUgcSIpLnFISFAoIlBOZCIsICJOcXJnV05VQnFbIitOZFdtSHJOZCsiXSIpOw0KCQkJCSB9DQoJCQkgfSk7DQoJCX0pOzwvckdQQkRIPic7CQ0KCQkNCgkJeFBOcTE7DQoJCQ0KCQkvLyBpZmY5ZmMgdUJhaEh4ZmMNCgkJR3FyTiAnamZmeGMnOg0KCQkJCQ0KTkdoZic8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQprenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCkgew0KCQ0KKGp0bUdIQmZtKCBpTU05TVIsICQsIHRtVU5qQm1OVSApIHsNCiAgaU1NOU1SLkJtQkggPSBqdG1HSEJmbSgpIHsNCiAgICAkKCIuRHFhM1BxRC0nLiRXcUJtQlUuJyIpLmpmZnhmYygkLk5jSE5tVShIUHROLCB7fSwgaU1NOU1SLmYsIHsgcWQzcWdyWW1CSDogSFB0TiB9KSk7DQogICAgJCgiLmpmZnhmYywgW0hxUGFOSD1cImpmZnhmY1wiXSIpLmpmZnhmYyhpTU05TVIuZik7DQogIH07DQp9KCAzQm1VZjMuaU1NOU1SID0gM0JtVWYzLmlNTTlNUiB8fCB7fSwga3p0TlBnICkpOw0KaU1NOU1SLkJtQkgoKTsNCn0pOw0KPC9yR1BCREg+JzsNCg0KCQl4UE5xMTsNCg0KCQkvLyA3ZmRmUHhmYwkJDQoJCUdxck4gJ0d4JzoNCgkJDQoJCU5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0KCQlrenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCkgew0KCQkJa3p0TlBnKCIuTldhLUd4ZmMiKS5HZmRmUHhmYyh7DQoJCQkJR3RQUE5tSDogIntHdFBQTm1IfSAvIHtIZkhxZH0iLA0KCQkJCVBOZDpcJ05XYS1HeGZjXCcsDQoJCQkJUE5IdFBtaWZHdHI6IGpxZHJOLA0KCQkJCXJkQlVOcmhmMzogJy4kQnJyZEJVTnF0SGYuJywNCgkJCQlyZEJVTnJoZjMyRE5OVTogJy4kQnJyZEJVTkJtSFBvZC4nLA0KCQkJCXJHUGZkZEJtYToganFkck4sDQoJCQkJckROTlU6IFN5eSwNCgkJCQlEaGZIZjogSFB0TiwNCgkJCQlqcVVOTXRIOiBTeXksDQoJCQkJV3FjOEJVSGg6ICJPeSUiLA0KCQkJCVdxY1ROQmFoSDogIk95JSIsDQoJCQkJZm03ZldEZE5ITjpqdG1HSEJmbSgpew0KCQkJCQlCaihrenROUGcoIiNHeGZjSkJIZE4iKS5ITmNIKCkuZE5tYUhoID4gRSkgew0KCQkJCQkJa3p0TlBnKCIjR3hmY0pCSGROIikuR3JyKCIzQlVIaCIsIGt6dE5QZygiLkd4ZmNRaGZIZiIpLjNCVUhoKCktTyk7DQoJCQkJCQlrenROUGcoIiNHeGZjSkJIZE4iKS5oQlVOKCk7DQoJCQkJCQlrenROUGcoIiNHeGZjSkJIZE4iKS5qcVVOWW0oU3l5KTsNCgkJCQkJCX0gTmRyTiB7DQoJCQkJCQkJa3p0TlBnKCIjR3hmY0pCSGROIikuaEJVTigpOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfSk7DQoJCQl9KTsNCgkJPC9yR1BCREg+JzsgDQoJCQ0KCQl4UE5xMTsJDQoJCQ0KCQkvLyB1QmFoSHhmY0MNCgkJR3FyTiAnZHhDJzoNCk5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0Ka3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpIHsNCgkJIGt6dE5QZyggIiNqQmRITlByIGRCIiApLkdkQkcxKGp0bUdIQmZtKCkgew0KCQkJIE5kV21Ick5kID0ga3p0TlBnKEhoQnIpLnFISFAoIlVxSHEtZkRIQmZtLW9xZHROIik7DQoJCQkgQmogKE5kV21Ick5kID09ICIqIikgew0KCQkJCWt6dE5QZygiLkJOaHFtVSBxIikucUhIUCgiVXFIcS1kQmFoSHhmYyIsICJXeGRCYWhIeGZjW3JoZjNxZGRdIik7DQoJCQkgfSBOZHJOIHsNCgkJCQkga3p0TlBnKCIuIitOZFdtSHJOZC5ydHhySFBCbWEoRSkrIiAuQk5ocW1VIHEiKS5xSEhQKCJVcUhxLWRCYWhIeGZjIiwgIld4ZEJhaEh4ZmNbIitOZFdtSHJOZCsiXSIpOw0KCQkJCSB9DQoJCQkgfSk7DQoJCX0pOzwvckdQQkRIPic7CQ0KCQkNCgkJeFBOcTE7CQkNCgkJDQoJCQ0KCQkvLyBpcW1HZ3hmY0MNCgkJR3FyTiAnanhDJzoNCk5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0Ka3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpIHsJDQoJa3p0TlBnKCIuTldhanFtR2d4ZmMiKS5qcW1HZ3hmYyh7DQoJCXFqSE5QMmhmMzoganRtR0hCZm0oKSB7DQoJCQlrenROUGcoIi5qcW1HZ3hmYy1IQkhkTi1mb05QLTNQcUQiKS5oQlVOKCk7DQoJCQlyTkhKQldOZnRIKGp0bUdIQmZtKCl7DQoJCQlvcVAgQldxYU44QlVIaCA9IGt6dE5QZygiLmpxbUdneGZjLUJXcWFOIikuM0JVSGgoKTsNCgkJCWt6dE5QZygiLmpxbUdneGZjLUhCSGROLWZvTlAtM1BxRCIpLkdycih7DQoJCQkJIjNCVUhoIjogQldxYU44QlVIaCwNCgkJCQkiRHFVVUJtYXVOakgiOiB5LA0KCQkJCSJEcVVVQm1hVkJhaEgiOiB5LA0KCQkJCSJITmNIQWRCYW0iOiAiR05tSE5QIg0KICAgICAgICB9KTsNCgkJa3p0TlBnKCIuanFtR2d4ZmMtSEJIZE4tZm9OUC0zUHFEIikuanFVTlltKCJyZGYzIik7DQoJCQl9LCBFeXkgKTsNCiAgICB9LA0KCQlEcVVVQm1hIDogeSwNCgkJSGdETiA6ICJCV3FhTiIsDQoJCXFQUGYzcjoganFkck4sDQoJCVdxUGFCbTogW2VTLCBFbCwgRWwsIEVsXSwNCgkJV2Z0ck44aE5OZDogSFB0TiwNCgkJcXRIZlFkcWc6ICcuJEJycmRCVU5xdEhmLicsDQoJCURkcWcyRE5OVTogJy4kQnJyZEJVTkJtSFBvZC4nLA0KCQlEUE5vWGpqTkdIOiAiTmRxckhCRyIsDQoJCW1OY0hYampOR0g6ICJOZHFySEJHIiwNCgkJR2Rmck45SG06IGpxZHJOLA0KCQlmRE5tWGpqTkdIOiAianFVTiIsCQ0KCQlmRE5tMkROTlU6ICJtZlBXcWQiLA0KCQlHZGZyTjJETk5VOiBieXksCQ0KCQloTmRETlByIDogew0KCQkJeHRISGZtcgk6IHsNCgkJCQlEZnJCSEJmbTogInhmSEhmVyINCgkJCQl9LA0KCQkJSEJIZE46IHsNCgkJCQlIZ0ROOiAiZm9OUCINCgkJCQl9CQ0KICAgIH0NCiAgICB9KTsNCg0KCQkga3p0TlBnKCAiI2pCZEhOUHIgZEIiICkuR2RCRzEoanRtR0hCZm0oKSB7DQoJCQkgTmRXbUhyTmQgPSBrenROUGcoSGhCcikucUhIUCgiVXFIcS1mREhCZm0tb3FkdE4iKTsNCgkJCSBCaiAoTmRXbUhyTmQgPT0gIioiKSB7DQoJCQkJa3p0TlBnKCIuQk5ocW1VIHEiKS5xSEhQKCJQTmQiLCAiV3hkQmFoSHhmYy1yaGYzcWRkIik7DQoJCQkgfSBOZHJOIHsNCgkJCQkga3p0TlBnKCIuIitOZFdtSHJOZC5ydHhySFBCbWEoRSkrIiAuQk5ocW1VIHEiKS5xSEhQKCJQTmQiLCAiV3hkQmFoSHhmYy0iK05kV21Ick5kKyIiKTsNCgkJCQkgfQ0KCQkJIH0pOwkJCSANCgkJfSk7PC9yR1BCREg+JzsJDQoJCQ0KCQl4UE5xMTsJDQoJCQ0KCQkNCgkJLy8gaXFtR2d4ZmMgaVBOTg0KCQlHcXJOICdqeGpQTk4nOg0KTkdoZic8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQprenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCkgew0KCWt6dE5QZygiLkJOaHFtVSBxW1BOZD1OV2FqcW1HZ2pQTk5dIikuanFtR2d4ZmMoew0KCQlmb05QZHFnMmhmMwk6IEhQdE4sDQoJCUhQcW1yQkhCZm1ZbQk6ICJOZHFySEJHIiwNCgkJSFBxbXJCSEJmbU10SAk6ICJOZHFySEJHIiwNCgkJSEJIZE5RZnJCSEJmbQk6ICJCbXJCVU4iDQoJCX0pOw0KCX0pOzwvckdQQkRIPic7CQ0KCQkNCgkJeFBOcTE7CQkJCQ0KDQoJCQ0KCQkvLyBRUE5ISGdRaGZIZg0KCQlHcXJOICdERCc6DQpOR2hmJzxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKSB7DQoJa3p0TlBnKCJxW1BOZF49XCdOV2FEUE5ISGdRaGZIZltyaGYzcWRkXVwnXSIpLk5XYVFoZkhmKHtIaE5XTjogIk5XYV9VTmpxdGRIIixyZEJVTnJoZjM6Jy4kQnJyZEJVTkJtSFBvZC4nLCBxdEhmRGRxZ19yZEJVTnJoZjM6Jy4kQnJyZEJVTnF0SGYuJywgcmZHQnFkX0hmZmRyOmpxZHJOLHFkZGYzX05jRHFtVToganFkck4sIFVOTkRkQm0xQm1hOiBqcWRyTn0pOw0KCQ0KCQkga3p0TlBnKCAiI2pCZEhOUHIgZEIiICkuR2RCRzEoanRtR0hCZm0oKSB7DQoJCQkgTmRXbUhyTmQgPSBrenROUGcoSGhCcikucUhIUCgiVXFIcS1mREhCZm0tb3FkdE4iKTsNCgkJCSBCaiAoTmRXbUhyTmQgPT0gIioiKSB7DQoJCQkJa3p0TlBnKCIuQk5ocW1VIHEiKS5xSEhQKCJQTmQiLCAiTldhRFBOSEhnUWhmSGZbcmhmM3FkZF0iKTsNCgkJCSB9IE5kck4gew0KCQkJCSBrenROUGcoIi4iK05kV21Ick5kLnJ0eHJIUEJtYShFKSsiIC5CTmhxbVUgcSIpLnFISFAoIlBOZCIsICJOV2FEUE5ISGdRaGZIZlsiK05kV21Ick5kKyJdIik7DQoJCQkJIH0NCgkJCSB9KTsNCgkJfSk7PC9yR1BCREg+JzsJDQoJCQ0KCQl4UE5xMTsJDQoJCQ0KCQkNCgkJLy8gUWhmSGYyM0JETg0KCQlHcXJOICdEcic6CQkNCk5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0KKGp0bUdIQmZtKDNCbVVmMywgJCwgUWhmSGYyM0JETil7DQoJa3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpew0KCQlOV2FRaGZIZjIzQkROID0ga3p0TlBnKCIuQk5ocW1VIHEiKS5EaGZIZjIzQkROKHsNCgkJCUdxREhCZm1BbVVKZmZkeHFQQXRIZlRCVU5GTmRxZzogeSwNCgkJCXJkQlVOcmhmM0ZOZHFnOicuJEJycmRCVU5CbUhQb2QuJywNCgkJCXJkQlVOMkROTlU6U3l5LA0KCQkJbU5jSFFQTm9CZnRyMmRCVU4yRE5OVTpTeXksDQoJCQlHcURIQmZtQW1VSmZmZHhxUE1EcUdCSGc6ICJ5LmwiDQoJCQl9KTsNCg0KCQkJDQoJCQlvcVAgSSA9IGt6dE5QZy5tZjdmbWpkQkdIKCk7DQoJCQlvcVAgR3RQUE5tSGZvTlBqZGYzNiA9IEkoImhIV2QiKS5HcnIoImZvTlBqZGYzNiIpOw0KCQkJDQoJCQlOV2FRaGZIZjIzQkROLnFVVVhvTm1IVHFtVWROUChRaGZIZjIzQkROLlhvTm1ISmdETnIuZm05TmpmUE4yaGYzLCBqdG1HSEJmbSAoTikgew0KCQkJCUJqIChHdFBQTm1IZm9OUGpkZjM2KSB7DQoJCQkJCUkoImhIV2QiKS5HcnIoeyBmb05QamRmMzY6ICJoQlVVTm0ifSk7DQoJCQkJCX0NCgkJCQl9KTsNCgkJCQkNCgkJCU5XYVFoZkhmMjNCRE4ucVVVWG9ObUhUcW1VZE5QKFFoZkhmMjNCRE4uWG9ObUhKZ0ROci5mbVRCVU4sIGp0bUdIQmZtIChOKSB7DQoJCQkJQmogKEd0UFBObUhmb05QamRmMzYpIHsNCgkJCQkJSSgiaEhXZCIpLkdycih7IGZvTlBqZGYzNjogR3RQUE5tSGZvTlBqZGYzNn0pOw0KCQkJCQl9DQoJCQkJfSk7DQoJCX0pOwkJCQ0KfSgzQm1VZjMsIDNCbVVmMy5renROUGcsIDNCbVVmMy43ZlVOLlFoZkhmMjNCRE4pKTsNCjwvckdQQkRIPic7CQkJDQoNCgkJeFBOcTE7CQ0KCQkNCgkJLy8gUWhmSGY5ZmMNCgkJR3FyTiAnRHhmYyc6DQpOR2hmJzxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKSB7DQoJa3p0TlBnKCIuZEJhaEh4ZmMnLiRXcUJtQlUuJyIpLkRoZkhmeGZjKCJxIix7IEhCV046Jy4kQnJyZEJVTkJtSFBvZC4nLCBxdEhmRGRxZzonLiRCcnJkQlVOcXRIZi4nfSk7DQoJfSk7PC9yR1BCREg+JzsJDQoJCQ0KCQl4UE5xMTsNCgkJCQkJCQkJCQkJCQ0KCQkNCgkJVU5qcXRkSDoNCgkJeFBOcTE7DQoJfSAgCQ0KCQ0KJEJyR2ROcW0gPSBmeF9hTkhfR2ROcW0oKTsNCk5HaGYgTldhX2tyX0dmV0RQTnJyKCAkQnJHZE5xbSApOw0KCQ0KfQ0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIEFkeHRXIHVmcVVOUCAoQWtxYykgQHJCbUdOIEUuUy55LmINCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfX2pQZm1IX3FrcWNfcWR4dFdfZGZxVU5QKCRXTlUsICRyQnBOLCAkdEJVLCAkQkRhID0gJycsICRxZHhHZm1ILCAkcEdyID0gbXRkZCwgJEdXZlVOID0gbXRkZCwgJEdHID0gbXRkZCwgJEdmb05QckJwTiA9IG10ZGQgKXsNCgkNCglmeF9ySHFQSCgpOw0KCQ0KCUJqICgkQkRhKSB7DQoJCSRCRGEgPSAkQkRhOw0KCX0gTmRyTiB7DQoJCSRCRGEgPSAnJzsNCgkJfQ0KCQkNCglCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9kcXBnZGZxVScgKSA9PSAnRScgKSB7DQoJCSRCcmRwID0gJ0UnOw0KCQl9IE5kck4gew0KCQkJJEJyZHAgPSAneSc7CQkNCgkJCX0NCgkJDQoJDQpOR2hmJzxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKSB7DQoJDQoJb3FQIFdOVUJxQlUgLCBHQldhR2Z0bUgsIEhCV05mdEg7DQoJCQ0KCWt6dE5QZyhVZkd0V05tSCkuZm0oIkdkQkcxIiwiLk5xcmdHZm1IcUJtTlAtJy4kdEJVLicgLmt0ckhxZHh0VyIsIGp0bUdIQmZtICgpIHsNCgkJJy4oICggTldhX3JkdGFfSGZfbXFXTiggTnFyZ19hTkhfZkRIQmZtKCAiTnFyZ1dOVUJxX2RCYWhIeGZjX3JIZ2ROIiApICkgPT0gJ0R4ZmMnICkgPyAna3p0TlBnKCIuZEJhaEh4ZmMnLiR0QlUuJyIpLkRoZkhmeGZjKCJEUE5EcVBORk1aIik7JyAgIDogJycpLicNCgkJa3p0TlBnKCIuQnJmakJkR2ZtSC0nLiR0QlUuJyAjTldhcmhmM3FkZCIpLkhQQmFhTlAoIkdkQkcxIik7DQoJCWt6dE5QZygiLkJyZmpCZEdmbUgtJy4kdEJVLicsIC5EcWEzUHFELScuJHRCVS4nIikuaEJVTigpOw0KCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogRHFQck5ZbUgoa3p0TlBnKCIuRHFhM1BxRC0nLiR0QlUuJyIpLmZqanJOSCgpLkhmRC1TeSl9LCBFU3l5KTsNCgkJV05VQnFCVSA9IGt6dE5QZyhIaEJyKS5xSEhQKCJVcUhxLU5XYS1xZHh0VyIpOw0KCQlHZE5xUEpCV05mdEgoSEJXTmZ0SCk7DQoJCWt6dE5QZygiI0JyZGZxVU5QamZQLScuJHRCVS4nIikuanFVTlltKFN5eSk7DQoJCW9xUCBHV1UgPSAicmhmM2FxZGROUGciOw0KCQlvcVAgSGh0V3htcUJkID0gIicuJHJCcE4uJyI7DQoJCW9xUCBXcUJtQlUgPSAiJy4kdEJVLiciOw0KCQlvcVAgR1dmVU4gPSAiJy4kR1dmVU4uJyI7DQoJCW9xUCBwR3IgPSAiJy4kcEdyLiciOwkJDQoJCW9xUCBHRyA9ICInLiRHRy4nIjsNCgkJb3FQIEdvUHJCcE4gPSAiIjsNCgkJR0JXYUdmdG1IID0ga3p0TlBnKEhoQnIpLnFISFAoIlVxSHEtTldhLUdoQmRVIik7CQ0KCQlIQldOZnRIID0gck5ISkJXTmZ0SChqdG1HSEJmbSgpeyBOV2FfcWtxY19xZHh0V19kZnFVTlAoR1dVLCBXTlVCcUJVLCBIaHRXeG1xQmQsIEdCV2FHZnRtSCwgV3FCbUJVLCBHV2ZVTiwgcEdyLCBHRywgR29QckJwTik7IH0sIEV5eXkpOw0KCQl9KTsNCgkJDQoJCQ0KCQlrenROUGcoVWZHdFdObUgpLmZtKCJHZEJHMSIsIiNOV2Fxa3FjeHFHMScuJHRCVS4nIiwganRtR0hCZm0gKCkgew0KCQknLiggKCBOV2FfcmR0YV9IZl9tcVdOKCBOcXJnX2FOSF9mREhCZm0oICJOcXJnV05VQnFfZEJhaEh4ZmNfckhnZE4iICkgKSA9PSAnRHhmYycgKSA/ICdrenROUGcoIi5kQmFoSHhmYycuJHRCVS4nIikuRGhmSGZ4ZmMoIlVOckhQZmciKTsnICAgOiAnJykuJw0KCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogRHFQck5ZbUgoa3p0TlBnKCIuRHFhM1BxRC0nLiR0QlUuJyIpLmZqanJOSCgpLkhmRC1DU3kpfSwgRVN5eSk7DQoJCUdkTnFQSkJXTmZ0SChIQldOZnRIKTsNCgkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtJy4kdEJVLiciKS5qcVVOWW0oU3l5KTsNCgkJa3p0TlBnKCIjTldhcWtxY3hxRzEnLiR0QlUuJyIpLmpxVU5NdEgoImpxckgiKTsJDQoJCWt6dE5QZygiLkRxYTNQcUQtJy4kdEJVLiciKS5oQlVOKCk7DQoJCW9xUCBHV1UgPSAiTldhcWtxY3hxRzEiOwkJDQoJCW9xUCBXTlVCcUJVID0gIicuJFdOVS4nIjsNCgkJb3FQIEhodFd4bXFCZCA9ICInLiRyQnBOLiciOw0KCQlvcVAgV3FCbUJVID0gIicuJHRCVS4nIjsNCgkJb3FQIEdXZlVOID0gIicuJEdXZlVOLiciOw0KCQlvcVAgcEdyID0gIicuJHBHci4nIjsJCQ0KCQlvcVAgR0cgPSAiJy4kR0cuJyI7DQoJCW9xUCBHb1ByQnBOID0gIicuJEdmb05QckJwTi4nIjsNCgkJSEJXTmZ0SCA9IHJOSEpCV05mdEgoanRtR0hCZm0oKXsgTldhX3FrcWNfcWR4dFdfZGZxVU5QKEdXVSwgV05VQnFCVSwgSGh0V3htcUJkLCBHQldhR2Z0bUgsIFdxQm1CVSwgR1dmVU4sIHBHciwgR0csIEdvUHJCcE4pOyB9LCBFU3l5KTsJCQ0KCQl9KTsNCgkJCQkNCgkJanRtR0hCZm0gTldhX3FrcWNfcWR4dFdfZGZxVU5QKEdXVSwgV05VQnFCVSwgSGh0V3htcUJkLCBHQldhR2Z0bUgsIFdxQm1CVSwgR1dmVU4sIHBHciwgR0csIEdvUHJCcE4pIHsNCgkJCQlvcVAgVXFIcSA9IHsNCgkJCQlxR0hCZm06ICJOV2FfcWtxY19xZHh0V19kZnFVTlAiLA0KCQkJCXJOR3RQQkhnOiAiJy4zRF9HUE5xSE5fbWZtR04oICJOcXJnV05VQnEtVU5vLW1mbUdOIikuJyIsCQ0KCQkJCVdOVUJxQlU6IFdOVUJxQlUsDQoJCQkJRERQck46IEdXVSwNCgkJCQlIaHRXeG1xQmQ6IEhodFd4bXFCZCwNCgkJCQlXcUJtQlU6IFdxQm1CVSwNCgkJCQlHV2ZVTjogR1dmVU4sDQoJCQkJcEdyOiBwR3IsDQoJCQkJR0c6IEdHLA0KCQkJCUdvUHJCcE46IEdvUHJCcE4NCgkJCQl9Ow0KCQkJDQoJCQkJa3p0TlBnLkRmckgoIicucVVXQm1fdFBkKCdxVVdCbS1xa3FjLkRoRCcpLiciLCBVcUhxLCBqdG1HSEJmbShQTnJEZm1yTikgew0KCQkJCQlHZE5xUEpCV05mdEgoSEJXTmZ0SCk7DQoJCQkJCWt6dE5QZygiLkRxYTNQcUQtJy4kdEJVLiciKS5qcVVOWW0oYnl5eSk7DQoJCQkJCQ0KCQkJCQlyM0JIR2ggKEdXVSkgew0KCQkJCQkJDQoJCQkJCQlHcXJOICJyaGYzYXFkZE5QZyI6DQoJCQkJCQlrenROUGcoIiNCcmRmcVVOUGpmUC0nLiR0QlUuJyIpLmpxVU5NdEgoImpxckgiKTsNCgkJCQkJCWt6dE5QZygiI05XYXFrcWN4cUcxJy4kdEJVLiciKS5qcVVOWW0oRXl5eSk7DQoJCQkJCQlvcVAgbU4zWUhOV3IgPSBrenROUGcoUE5yRGZtck4pOw0KCQkJCQkJb3FQIFBOV2ZvTllITlcgPSBrenROUGcoIi5EcWEzUHFELScuJHRCVS4nIC5rdHJIcWR4dFciICk7DQoJCQkJCQlrenROUGcoIi5OcXJnR2ZtSHFCbU5QLScuJHRCVS4nIikuTldhQnJmSGZETigiUE5XZm9OIiwgUE5XZm9OWUhOVyk7DQoJCQkJCQlrenROUGcoIi5OcXJnR2ZtSHFCbU5QLScuJHRCVS4nIikuTldhQnJmSGZETigiQm1yTlBIIiwgbU4zWUhOV3IpOwkNCgkJCQkJCWRmcVVZV3FhTnIoIi5EcWEzUHFELScuJHRCVS4nIC5OV2FkcXBnIiwiJy4kdEJVLiciLCInLiRCRGEuJyIsIEdCV2FHZnRtSCwiJy4kQnJkcC4nIik7DQoJCQkJCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogRHFQck5ZbUgoa3p0TlBnKCIuRHFhM1BxRC0nLiR0QlUuJyIpLmZqanJOSCgpLkhmRC1DeXkpfSwgRVN5eSk7CQkJCQkJCQ0KDQoJCQkJCQl4UE5xMTsNCgkJCQkJCQ0KCQkJCQkJR3FyTiAiTldhcWtxY3hxRzEiOg0KCQkJCQkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtJy4kdEJVLiciKS5qcVVOTXRIKFN5eSk7DQoJCQkJCQlrenROUGcoIi5CcmZqQmRHZm1ILScuJHRCVS4nIikuanFVTlltKFN5eSk7DQoJCQkJCQlvcVAgbU4zWUhOV3IgPSBrenROUGcoUE5yRGZtck4pOw0KCQkJCQkJb3FQIFBOV2ZvTllITlcgPSBrenROUGcoIi5EcWEzUHFELScuJHRCVS4nIC5vQk4zIiApOw0KCQkJCQkJa3p0TlBnKCIuTnFyZ0dmbUhxQm1OUC0nLiR0QlUuJyIpLk5XYUJyZkhmRE4oIlBOV2ZvTiIsIFBOV2ZvTllITlcpOwkJCQkJCQ0KCQkJCQkJa3p0TlBnKCIuTnFyZ0dmbUhxQm1OUC0nLiR0QlUuJyIpLk5XYUJyZkhmRE4oIkJtck5QSCIsIG1OM1lITldyKTsNCgkJCQkJCWRmcVVZV3FhTnIoIi5EcWEzUHFELScuJHRCVS4nIC5OV2FkcXBnIiwiJy4kdEJVLiciLCInLiRCRGEuJyIsICInLiRxZHhHZm1ILiciLCInLiRCcmRwLiciKTsNCgkJCQkJCWt6dE5QZygiaEhXZCx4ZlVnIikucW1CV3FITih7ckdQZmRkSmZEOiBEcVByTlltSChrenROUGcoIi5EcWEzUHFELScuJHRCVS4nIikuZmpqck5IKCkuSGZELUN5eSl9LCBFU3l5KTsNCgkJCQkJCQ0KCQkJCQkJeFBOcTE7CQkJCQkJCQkJDQoJCQkJCQkNCgkJCQkJCVVOanF0ZEg6DQoJCQkJCX0NCgkNCgkJCQl9KTsNCgkJCX0JCQ0KDQp9KTsNCgkNCgkNCjwvckdQQkRIPic7CQ0KDQokcWR4dFdyR1BESCA9IGZ4X2FOSF9HZE5xbSgpOw0KTkdoZiBOV2Ffa3JfR2ZXRFBOcnIoICRxZHh0V3JHUERIICk7DQoNCn0NCg0KDQovLyAydVlGWFYgRSBuWHNYVkFKTVYJDQpqdG1HSEJmbSBOV2FfQldxYU5fcmRCVU5QX2ZtTl9hTm1OUHFIZlAgKCAkTldhclBHLCAkTldhSGh0V3gsICRHcUQzQlVIaCwgJEhodFd4SEhkICl7DQoJDQoJQmogKEhQQlcoJEhodFd4SEhkKSl7DQoJCSRyaGYzZlBtZkggPSAnJzsNCgl9IE5kck4gew0KCQkkcmhmM2ZQbWZIID0gJ1VCckRkcWc6IG1mbU4gIUJXRGZQSHFtSDsnOw0KCX0NCgkNCiAgICBOR2hmJzxVQm8+DQogICAgPEJXYSB0PSJCV3FhTiIgclBHQz0iJy4kTldhclBHLiciIC8+DQogICAgICAgICAgICAgICAgPFVCbyBHZHFycj0iTldhcmRCVU5QR3FEIiB0PSJHcURIQmZtIiBIPSJaN3VZUXw5IiBySGdkTj0iJy4kcmhmM2ZQbWZILicgRGZyQkhCZm06IHF4cmZkdEhOOyBIZkQ6IHlEYzsgZE5qSDogeURjOw0KICAgICAgICAgICAgICAgICAgICAzQlVIaDogJy4kR3FEM0JVSGguJ0RjOyBoTkJhaEg6IENTRGM7Ij4NCiAgICAgICAgICAgICAgICAgICAgPFVCbyBySGdkTj0iRGZyQkhCZm06IHF4cmZkdEhOOyBIZkQ6IHlEYzsgZE5qSDogeURjOyAzQlVIaDogJy4kR3FEM0JVSGguJ0RjOyBoTkJhaEg6IENTRGM7DQogICAgICAgICAgICAgICAgICAgICAgICB4cUcxYVBmdG1VLUdmZGZQOiA5ZHFHMTsgZkRxR0JIZzogeS5FOyBqQmRITlA6IHFkRGhxKGZEcUdCSGc9RXkpOyI+DQogICAgICAgICAgICAgICAgICAgIDwvVUJvPg0KICAgICAgICAgICAgICAgICAgICA8VUJvIHJIZ2ROPSJEZnJCSEJmbTogcXhyZmR0SE47IEhmRDogeURjOyBkTmpIOiB5RGM7IDNCVUhoOiAnLiRHcUQzQlVIaC4nRGM7IGhOQmFoSDogQ1NEYzsNCiAgICAgICAgICAgICAgICAgICAgICAgIEdmZGZQOiA4aEJITjsgamZtSC1yQnBOOiBFZURjOyBqZm1ILTNOQmFoSDogeGZkVTsgZEJtTi1oTkJhaEg6IENTRGM7IEhOY0gtcWRCYW06IEdObUhOUDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgJy4kSGh0V3hISGQuJw0KICAgICAgICAgICAgICAgICAgICA8L1VCbz4NCiAgICAgICAgICAgICAgICA8L1VCbz4NCiAgICA8QldhIHQ9IkhodFd4IiByUEc9IicuJE5XYUhodFd4LiciIC8+DQogICAgPC9VQm8+JzsNCgkNCn0NCg0KLy8gMnVZRlhWIEUgMjdWWVFKIG5Yc1hWQUpNVg0KanRtR0hCZm0gTldhX3JkQlVOUF9mbU5fckdQQkRIX2FObU5QcUhmUCggJEJycmRCVU5xdEhmLCAkQnJyZEJVTkJtSFBvZCwgJEJXM0JVSGgsICRCV2hOQmFoSCwgJHRtQjB0TkJVICkgew0KCQlOR2hmJzxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj5renROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCl7DQoJCQlrenROUGcoIiNCcmRmcVVOUGpmUC0nLiR0bUIwdE5CVS4nIikuanFVTk10SChDeXl5LCBqdG1HSEJmbSAoKXsNCgkJCQlrenROUGcoIi5EcWEzUHFELScuJHRtQjB0TkJVLiciKS5qcVVOWW0oRXl5eSk7DQoJCQkJfSk7DQoJCQkJanRtR0hCZm0gUCgpe29xUCBOPW0uJFhkV0guRHFQTm1Ic2ZVTi5HZEJObUg4QlVIaDtCaihOKW0uJDJOSDJHcWROOEJVSGgoWnFIaC5XQm0oTiwnLiRCVzNCVUhoLicpKTtOZHJOIDNCbVVmMy5yTkhKQldOZnRIKFAsYnkpfW9xUCBOPVtdO05bIlo3dVlRfDkiXT17JEZ0UHFIQmZtOnd5eSwkN2RCRDplLCRaZm9OOkhQdE4sJFhxckJtYTokSXJyZlBYcXJCbWEkLiRYcXJOTXRIWGNEZn07b3FQIEg9eyRpQmRkWmZVTjplLCR1cXBndWZxVUJtYTpDLCRBdEhmUWRxZzonLiRCcnJkQlVOcXRIZi4nLCRBdEhmUWRxZzJITkRyOkUsJEF0SGZRZHFnWW1ITlBvcWQ6Jy4kQnJyZEJVTkJtSFBvZC4nLCRRcXRyTk1tVGZvTlA6eSwkQVBQZjM1TmdzcW9CYXFIQmZtOkhQdE4sJDJkQlVORnRQcUhCZm06U3l5LCRaQm1GUHFhTWpqck5ISmYyZEJVTjpDeSwkMmRCVU44QlVIaDonLiRCVzNCVUhoLicsJDJkQlVOVE5CYWhIOicuJEJXaE5CYWhILicsJDJkQlVOMkRxR0JtYTp5LCRGQnJEZHFnUUJOR05yOkUsJFFxUDFCbWFRZnJCSEJmbTp5LCRLWTJOcVBHaFpmVU46RSwkUWRxZ01QQk5tSHFIQmZtOkUsJEZQcWFNUEJObUhxSEJmbTpiLCRBUFBmM3Nxb0JhcUhmUE1ESEJmbXI6eyQ3ZHFycjokSXJyZlBBUFBmM3Nxb0JhcUhmUCQsJDdocW1HTkpmMmhmMzpFLCQySE5EcjpFfSwkSmh0V3htcUJkc3FvQmFxSGZQTURIQmZtcjp7JDdkcXJyOiRJcnJmUEpodFd4bXFCZHNxb0JhcUhmUCQsJDdocW1HTkpmMmhmMzpDLCRBR0hCZm1aZlVOOkUsJEF0SGY3Tm1ITlA6YiwkdXFtTnI6RSwkMkRxR0JtYVI6YiwkMkRxR0JtYTY6YiwkRkJyRGRxZ1FCTkdOcjpPLCRRcVAxQm1hUWZyQkhCZm06Q3d5LCRNUEJObUhxSEJmbTpFLCRGQnJxeGRORlBxYTpqcWRyTn0sJDdxREhCZm0yZEJVTlBNREhCZm1yOnskN2RxcnI6JElycmZQN3FESEJmbTJkQlVOUCQsJDdxREhCZm1KUHFtckJIQmZtcjpOLCRRZHFnWW1aZlVOOkUsJFFkcWdNdEhaZlVOOmJ9fTtvcVAgbT1tTjMgJElycmZQMmRCVU5QJCgicmRCVU5QRV9HZm1IcUJtTlAtJy4kdG1CMHROQlUuJyIsSCk7UCgpO0JqKCFtcW9CYXFIZlAudHJOUEFhTm1ILldxSEdoKC8oQlFoZm1OfEJRZlV8QlFxVXw5ZHFHMTlOUFBnfFlYWmZ4QmROKS8pKXtrenROUGcoM0JtVWYzKS54Qm1VKCJQTnJCcE4iLFApfX0pPC9yR1BCREg+JzsNCgkJfQ0KDQoNCi8vIDJ1WUZYViBDIG5Yc1hWQUpNVgkNCmp0bUdIQmZtIE5XYV9CV3FhTl9yZEJVTlBfSDNmX2FObU5QcUhmUCAoICROV2FyUEcsICROV2FIaHRXeCwgJEdxRDNCVUhoLCAkSGh0V3hISGQgKXsNCglCaiAoSFBCVygkSGh0V3hISGQpKXsNCgkJJHJoZjNmUG1mSCA9ICcnOw0KCX0gTmRyTiB7DQoJCSRyaGYzZlBtZkggPSAnVUJyRGRxZzogbWZtTiAhQldEZlBIcW1IOyc7DQoJfQ0KCQ0KICAgIE5HaGYnPFVCbz4NCiAgICA8QldhIHQ9IkJXcWFOIiByUEdDPSInLiROV2FyUEcuJyIgLz4NCiAgICAgICAgICAgICAgICA8VUJvIEdkcXJyPSJOV2FyZEJVTlBHcUQiIHQ9IkdxREhCZm0iIEg9Ilo3dVlRfDkiIHJIZ2ROPSInLiRyaGYzZlBtZkguJyBEZnJCSEJmbTogcXhyZmR0SE47IEhmRDogeURjOyBkTmpIOiB5RGM7DQogICAgICAgICAgICAgICAgICAgIDNCVUhoOiAnLiRHcUQzQlVIaC4nRGM7IGhOQmFoSDogQ1NEYzsiPg0KICAgICAgICAgICAgICAgICAgICA8VUJvIHJIZ2ROPSJEZnJCSEJmbTogcXhyZmR0SE47IEhmRDogeURjOyBkTmpIOiB5RGM7IDNCVUhoOiAnLiRHcUQzQlVIaC4nRGM7IGhOQmFoSDogQ1NEYzsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhxRzFhUGZ0bVUtR2ZkZlA6IDlkcUcxOyBmRHFHQkhnOiB5LkU7IGpCZEhOUDogcWREaHEoZkRxR0JIZz1FeSk7Ij4NCiAgICAgICAgICAgICAgICAgICAgPC9VQm8+DQogICAgICAgICAgICAgICAgICAgIDxVQm8gckhnZE49IkRmckJIQmZtOiBxeHJmZHRITjsgSGZEOiB5RGM7IGROakg6IHlEYzsgM0JVSGg6ICcuJEdxRDNCVUhoLidEYzsgaE5CYWhIOiBDU0RjOw0KICAgICAgICAgICAgICAgICAgICAgICAgR2ZkZlA6IDhoQkhOOyBqZm1ILXJCcE46IEVlRGM7IGpmbUgtM05CYWhIOiB4ZmRVOyBkQm1OLWhOQmFoSDogQ1NEYzsgSE5jSC1xZEJhbTogR05tSE5QOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAnLiRIaHRXeEhIZC4nDQogICAgICAgICAgICAgICAgICAgIDwvVUJvPg0KICAgICAgICAgICAgICAgIDwvVUJvPg0KICAgIDxCV2EgdD0iSGh0V3giIHJQRz0iJy4kTldhSGh0V3guJyIgLz4NCiAgICA8L1VCbz4nOw0KDQp9DQoNCi8vIDJ1WUZYViBDIDI3VllRSiBuWHNYVkFKTVYJDQpqdG1HSEJmbSBOV2FfcmRCVU5QX0gzZl9yR1BCREhfYU5tTlBxSGZQKCAkQnJyZEJVTnF0SGYsICRCcnJkQlVOQm1IUG9kLCAkQlczQlVIaCwgJEJXaE5CYWhILCAkdG1CMHROQlUgKSB7DQoJCU5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKXsNCgkJCQlrenROUGcoIiNCcmRmcVVOUGpmUC0nLiR0bUIwdE5CVS4nIikuanFVTk10SChDeXl5LCBqdG1HSEJmbSAoKSB7IA0KCQkJCWt6dE5QZygiLkRxYTNQcUQtJy4kdG1CMHROQlUuJyIpLmpxVU5ZbShFeXl5KTsNCgkJCQl9KTsNCgkJCWp0bUdIQmZtIEIoKXtvcVAgTj1QLiRYZFdILkRxUE5tSHNmVU4uR2RCTm1IOEJVSGg7QmooTilQLiQyTkgyR3FkTjhCVUhoKFpxSGguV3FjKFpxSGguV0JtKE4sJy4kQlczQlVIaC4nKSxieXkpKTtOZHJOIDNCbVVmMy5yTkhKQldOZnRIKEIsYnkpfW9xUCBOPVtdO05bIlo3dVlRfDkiXT17JEZ0UHFIQmZtOnd5eSwkN2RCRDplLCRaZm9OOkhQdE4sJFhxckJtYTokSXJyZlBYcXJCbWEkLiRYcXJOTXRIWGNEZn07b3FQIEg9W3skRnRQcUhCZm06RUN5eSwkdmZmVzpFLCRYcXJCbWE6eyR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck5NdEh6dHFVfSwkTURxR0JIZzpDfSx7JEZ0UHFIQmZtOkVOYiwkdmZmVzpDLCQyZEJVTk10SDpIUHROLCRYcXJCbWE6eyR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUH0sJE1EcUdCSGc6Q30seyRGdFBxSEJmbTpFQ3l5LCR2ZmZXOkUsJFZmSHFITjpIUHROLCRGdFBCbWE6eyR2ZmZXOlsuQywuNF0sJFZmSHFITjpbLkMsLjRdfSwkWHFyQm1hOnskdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOMjNCbWEsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUCwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYX0sJE1EcUdCSGc6QywkVmZ0bVU6eyRWZkhxSE46LlN9fSx7JEZ0UHFIQmZtOkVOYiwkdmZmVzpDLCRWZkhxSE46SFB0TiwkMmRCVU5NdEg6SFB0TiwkWHFyQm1hOnskdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck51Qm1OcVAsJFZmSHFITjokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmfSwkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjouNH19LHskRnRQcUhCZm06RUN5eSwkN2ZkcjpDLCR2ZmZXOkUsJGlkZ0ZCUE5HSEJmbTpFLCRBcnJOV3hkZzpDeWVPLCQ3aE5yclpmVU46eyQ3ZmR0V206RVN9LCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck51Qm1OcVB9LCQyR3FkTlRmUEJwZm1IcWQ6LlMsJE1EcUdCSGc6Q30seyRGdFBxSEJmbTpFQ3l5LCQ3ZmRyOkMsJHZmZlc6QywkMmRCVU5NdEg6SFB0TiwkaWRnRkJQTkdIQmZtOkUsJEFyck5XeGRnOkN5ZU8sJDdoTnJyWmZVTjp7JDdmZHRXbTpFU30sJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZiwkdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck51Qm1OcVB9LCQyR3FkTlRmUEJwZm1IcWQ6ZSwkTURxR0JIZzpDfSx7JEZ0UHFIQmZtOkVDeXksJHZmZlc6RSwkVmZIcUhOOkhQdE4sJEZ0UEJtYTp7JHVOakg6Wy5DLC40XSwkdmZmVzpbLkMsLjRdLCRWZkhxSE46Wy5DLC40XX0sJGlkZ0ZCUE5HSEJmbTpFLCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYSwkdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOMjNCbWEsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUCwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYX0sJDJHcWROVGZQQnBmbUhxZDoudywkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjouU319LHskRnRQcUhCZm06RU5iLCR2ZmZXOkMsJFZmSHFITjpIUHROLCQyZEJVTk10SDpIUHROLCRpZGdGQlBOR0hCZm06QywkWHFyQm1hOnskdU5qSDokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUCwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGZ9LCQyR3FkTlRmUEJwZm1IcWQ6ZSwkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjouNH19LHskRnRQcUhCZm06RUN5eSwkdmZmVzpFLCRWZkhxSE46SFB0TiwkRnRQQm1hOnskdU5qSDpbLkMsLjRdLCR2ZmZXOlsuQywuNF0sJFZmSHFITjpbLkMsLjRdfSwkaWRnRkJQTkdIQmZtOkMsJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTjIzQm1hLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYSwkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOdUJtTnFQLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTjIzQm1hfSwkMkdxZE5UZlBCcGZtSHFkOi53LCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi5TfX0seyRGdFBxSEJmbTpFTmIsJHZmZlc6QywkVmZIcUhOOkhQdE4sJDJkQlVOTXRIOkhQdE4sJGlkZ0ZCUE5HSEJmbTpFLCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZiwkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOdUJtTnFQLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZn0sJDJHcWROVGZQQnBmbUhxZDplLCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi40fX0seyRGdFBxSEJmbTpFQ3l5LCQ3ZmRyOkMsJHZmZlc6RSwkVmZIcUhOOkhQdE4sJGlkZ0ZCUE5HSEJmbTpTLCRBcnJOV3hkZzpDeWVPLCQ3aE5yclpmVU46eyQ3ZmR0V206RVN9LCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRKZkQ6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTk10SHp0cVUsJFZmSHFITjokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCR30sJDJHcWROVGZQQnBmbUhxZDouUywkMkdxZE5MTlBIQkdxZDouYiwkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjoubH19LHskRnRQcUhCZm06RU5iLCQ3ZmRyOkMsJHZmZlc6RSwkVmZIcUhOOkhQdE4sJDJkQlVOTXRIOkhQdE4sJGlkZ0ZCUE5HSEJmbTpTLCRBcnJOV3hkZzpDeWVPLCQ3aE5yclpmVU46eyQ3ZmR0V206RVN9LCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJEpmRDokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUCwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGZ9LCQyR3FkTlRmUEJwZm1IcWQ6LlMsJDJHcWROTE5QSEJHcWQ6LmIsJE1EcUdCSGc6QywkVmZ0bVU6eyRWZkhxSE46Lmx9fSx7JEZ0UHFIQmZtOkVDeXksJFZmM3I6QywkdmZmVzpDLCRWZkhxSE46SFB0TiwkaWRnRkJQTkdIQmZtOncsJEFyck5XeGRnOkN5ZU8sJDdoTnJyWmZVTjp7JFZmMzpDNH0sJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJEpmRDokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCRywkdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCRywkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOTXRIenRxVSwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHfSwkMkdxZE5UZlBCcGZtSHFkOmUsJDJHcWROTE5QSEJHcWQ6QywkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjoubH19LHskRnRQcUhCZm06RUN5eSwkN2ZkcjpDLCR2ZmZXOkMsJFZmSHFITjpIUHROLCRpZGdGQlBOR0hCZm06UywkQXJyTld4ZGc6Q3llTywkN2hOcnJaZlVOOnskN2ZkdFdtOkVPfSwkWHFyQm1hOnskdU5qSDokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCRywkSmZEOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck5NdEh6dHFVLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTlltN3R4Qkd9LCQyR3FkTlRmUEJwZm1IcWQ6RSwkMkdxZE5MTlBIQkdxZDpDLCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi40fX1dO29xUCBtPXskQXRIZlFkcWc6Jy4kQnJyZEJVTnF0SGYuJywkQXRIZlFkcWdZbUhOUG9xZDonLiRCcnJkQlVOQm1IUG9kLicsJFFxdHJOTW1UZm9OUDpiLCR1cXBndWZxVUJtYTpDLCRGUHFhTVBCTm1IcUhCZm06YiwkQVBQZjM1TmdzcW9CYXFIQmZtOkhQdE4sJDJkQlVORnRQcUhCZm06d3l5LCQyZEJVTnJoZjNNREhCZm1yOnskN2RxcnI6JElycmZQMmRCVU5yaGYzVnRtbU5QJCwkSlBxbXJCSEJmbXI6SCwkSlBxbXJCSEJmbXJNUFVOUDpFLCQyaGYzdUJtMTpIUHROfSwkQVBQZjNzcW9CYXFIZlBNREhCZm1yOnskN2RxcnI6JElycmZQQVBQZjNzcW9CYXFIZlAkLCQ3aHFtR05KZjJoZjM6RSwkQXRIZjdObUhOUDpDLCQySE5EcjpFfSwkSmh0V3htcUJkc3FvQmFxSGZQTURIQmZtcjp7JDdkcXJyOiRJcnJmUEpodFd4bXFCZHNxb0JhcUhmUCQsJDdocW1HTkpmMmhmMzpDLCRBR0hCZm1aZlVOOkUsJHVxbU5yOkMsJDJEcUdCbWFSOkVlLCQyRHFHQm1hNjpFQywkRkJyRGRxZ1FCTkdOcjpTLCRRcVAxQm1hUWZyQkhCZm06RVN3LCRNUEJObUhxSEJmbTpDfSwkN3FESEJmbTJkQlVOUE1ESEJmbXI6eyQ3ZHFycjokSXJyZlA3cURIQmZtMmRCVU5QJCwkN3FESEJmbUpQcW1yQkhCZm1yOk4sJFFkcWdZbVpmVU46RSwkUWRxZ010SFpmVU46Yn19O29xUCBQPW1OMyAkSXJyZlAyZEJVTlAkKCJyZEJVTlBDX0dmbUhxQm1OUC0nLiR0bUIwdE5CVS4nIixtKTtCKCk7QmooIW1xb0JhcUhmUC50ck5QQWFObUguV3FIR2goLyhCUWhmbU58QlFmVXxCUXFVfDlkcUcxOU5QUGd8WVhaZnhCZE4pLykpe2t6dE5QZygzQm1VZjMpLnhCbVUoIlBOckJwTiIsQil9fSk8L3JHUEJESD4nOw0KfQ0KDQovLyA3cVBmdHJOZCBuWHNYVkFKTVYJDQpqdG1HSEJmbSBOV2FfR3FQZnRyTmRfYU5tTlBxSGZQICggJE5XYXJQRywgJE5XYUhodFd4LCAkM0JVSGgsICRIaHRXeEhIZCwgJGp0ZGQgKXsNCgkNCiAgICBOR2hmJzxVQm8gR2RxcnI9Ik5XYS1HcVBmdHJOZCI+PHEgaFBOaj0iJy4kanRkZC4nIiBIQkhkTj0iJy4kSGh0V3hISGQuJyIgUE5kPSJOV2FEUE5ISGdRaGZIZltyaGYzcWRkXSI+PEJXYSBIQkhkTj0iJy4kSGh0V3hISGQuJyIgR2RxcnI9Ik5XYUdxUGZ0ck5kIiByUEc9IicuJE5XYUhodFd4LiciIC8+PC9xPjwvVUJvPic7DQoJDQp9DQoNCi8vIDdxUGZ0ck5kIDI3VllRSiBuWHNYVkFKTVYJDQpqdG1HSEJmbSBOV2FfR3FQZnRyTmRfckdQQkRIX2FObU5QcUhmUCggJEJycmRCVU5xdEhmLCAkQnJyZEJVTkJtSFBvZCwgJEJXM0JVSGgsICRCV2hOQmFoSCwgJE5kTldObUhCVSwgJE5xckJtYU5qak5HSCwgJEhCSGROLCAkdG1CMHROQlUgKXsNCglOR2hmICc8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQoJa3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpIHsNCgkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtJy4kdG1CMHROQlUuJyIpLmpxVU5NdEgoQ3l5eSwganRtR0hCZm0gKCkgew0KCQkJa3p0TlBnKCIuRHFhM1BxRC0nLiR0bUIwdE5CVS4nIikuanFVTlltKGJ5eXkpOw0KCQkJDQoJCWt6dE5QZygiLnhjcmRCVU5QLScuJE5kTldObUhCVS4nIikueGMyZEJVTlAoew0KCQkJcmRCVU44QlVIaDogJy4kQlczQlVIaC4nLA0KCQkJcmRCVU5acVBhQm06IEV5LA0KCQkJV3FjMmRCVU5yOiBFeSwNCgkJCURxYU5QOiBqcWRyTiwNCgkJCXRyTjcyMjoganFkck4sDQoJCQlOcXJCbWE6ICInLiROcXJCbWFOampOR0guJyIsDQoJCQlxdEhmOiBIUHROLA0KCQkJckROTlU6IEVTeXksDQoJCQlHZm1IUGZkcjogSFB0TiwNCgkJCXF0SGY3Zm1IUGZkcjogSFB0TiwNCgkJCURQTmRmcVVZV3FhTnI6ICJxZGQiLA0KCQkJQm1qQm1CSE51ZmZEOiBIUHROLA0KCQkJR3FESEJmbXI6ICcuJEhCSGROLicsDQoJCQlxdEhmVGZvTlA6IEhQdE4sDQoJCQlxdEhmMkhxUEg6ICcuJEJycmRCVU5xdEhmLicsDQoJCQlEcXRyTjogJy4kQnJyZEJVTkJtSFBvZC4nLA0KCQkJZm0yZEJVTkFqSE5QOiBqdG1HSEJmbSgpIHsNCgkJCQlrenROUGcoIi54Yy1ySHFQSCIpLkhQQmFhTlAoIkdkQkcxIik7DQogICAgICAgICAgICB9DQoJCQkJfSk7DQoJCQkJDQoJCQkJDQoJCQlrenROUGcoIi54Yy1HZGZtTiBxIikuUE5XZm9OQUhIUCggIlBOZCIgKTsNCgkJCQ0KCQkJa3p0TlBnKCJxW1BOZF49XCdOV2FEUE5ISGdRaGZIZltyaGYzcWRkXVwnXSIpLk5XYVFoZkhmKHtIaE5XTjogIk5XYV9VTmpxdGRIIiwgcWRkZjNfTmNEcW1VOiBqcWRyTiwgVU5ORGRCbTFCbWE6IGpxZHJOLCByZEJVTnJoZjM6Jy4kQnJyZEJVTkJtSFBvZC4neXl5LCBxdEhmRGRxZ19yZEJVTnJoZjM6Jy4kQnJyZEJVTnF0SGYuJywgcmZHQnFkX0hmZmRyOmpxZHJOfSk7DQoJCQkJCQ0KCQkJfSk7CQkJDQoJCQkNCgkJfSk7DQoJCQ0KDQo8L3JHUEJESD4nOyANCg0KfQ0KDQovLyBpZkhmUHFXcSBuWHNYVkFKTVYJDQpqdG1HSEJmbSBOV2FfamZIZlBxV3FfYU5tTlBxSGZQICggJE5XYXJQRywgJE5XYUhodFd4LCAkM0JVSGgsICRIaHRXeEhIZCwgJEdxREhCZm0gKXsNCgkNCiAgICAvL05HaGYnPEJXYSAnLiRHcURIQmZtLicgclBHPSInLiROV2FIaHRXeC4nIj4nOyAvLyBzZlBXcWQgZGZxVU5QDQoJTkdoZiAnPHEgJy4kR3FESEJmbS4nIGhQTmo9IicuJE5XYXJQRy4nIiBVcUhxLUhodFd4PSInLiROV2FIaHRXeC4nIj48L3E+JzsgLy8gM0JIaCB1cXBnIHVmcVUNCn0NCg0KanRtR0hCZm0gTldhX3FrcWNfcWR4dFdfZGZxVU5QKCkgew0KCQ0KCUdoTkcxX3FrcWNfUE5qTlBOUCggJ05xcmdXTlVCcS1VTm8tbWZtR04nLCAnck5HdFBCSGcnICk7DQoJDQoJCUJqICggIUJyck5IKCAkX1FNMkpbJ1dOVUJxQlUnXSApIHx8ICFCcnJOSCggJF9RTTJKWydERFByTiddICkgfHwgIUJyck5IKCAkX1FNMkpbJ1dxQm1CVSddICkgKSB7DQoJCQkNCgkJTkdoZiAnPFVCbyBHZHFycj0ib0JOMyI+PEJXYSByUEc9IicuRGR0YUJtcl90UGQoJ0JXcWFOci9xa3FjLWRmcVVOUC5hQmonICwgX19pWXVYX18pLiciIDNCVUhoPSJiQyIgaE5CYWhIPSJiQyIvPjwvVUJvPic7DQoJCVVCTjsNCgkJfQ0KCQkNCgkJTmRyTiB7CQ0KCQlyM0JIR2ggKCRfUU0ySlsnRERQck4nXSl7DQoJCQlHcXJOICdyaGYzYXFkZE5QZyc6DQoJCQkJTkdoZiBOV2FfcWR4dFdfQldhX2RCckgoSFBCVygkX1FNMkpbJ1dOVUJxQlUnXSksIEhQQlcoJF9RTTJKWydIaHRXeG1xQmQnXSksIEhQQlcoJF9RTTJKWydXcUJtQlUnXSksIEhQQlcoJF9RTTJKWydwR3InXSksIEhQQlcoJF9RTTJKWydHV2ZVTiddKSwgSFBCVygkX1FNMkpbJ0dHJ10pICk7DQoJCQkJM0RfVUJOKCk7DQoJCQl4UE5xMTsNCgkNCgkJCUdxck4gJ05XYXFrcWN4cUcxJzoNCgkJCQlOR2hmIE5XYV9xZHh0V3JfeHFHMShIUEJXKCRfUU0ySlsnV05VQnFCVSddKSwgSFBCVygkX1FNMkpbJ0hodFd4bXFCZCddKSwgSFBCVygkX1FNMkpbJ1dxQm1CVSddKSwgSFBCVygkX1FNMkpbJ3BHciddKSwgSFBCVygkX1FNMkpbJ0dXZlVOJ10pLCBIUEJXKCRfUU0ySlsnR0cnXSksIEhQQlcoJF9RTTJKWydHb1ByQnBOJ10pICk7DQogICAJCQkgCTNEX1VCTigpOw0KCQkJeFBOcTE7DQoJCQkNCgkJCVVOanF0ZEg6DQoJCQl4UE5xMTsNCgkNCgkJfQ0KCX0NCn0NCnFVVV9xR0hCZm0oJzNEX3FrcWNfbWZEUEJvX05XYV9xa3FjX3FkeHRXX2RmcVVOUCcsICdOV2FfcWtxY19xZHh0V19kZnFVTlAnKTsNCnFVVV9xR0hCZm0oJzNEX3FrcWNfTldhX3FrcWNfcWR4dFdfZGZxVU5QJywgJ05XYV9xa3FjX3FkeHRXX2RmcVVOUCcpOw0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IEFJQVIgVlgyWEogMlhKSllzbjINCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5XYV9HRF9QTnJOSCgpIHsNCgkNCglHaE5HMV9xa3FjX1BOak5QTlAoICdOcXJnV05VQnEtVU5vLW1mbUdOJywgJ3JOR3RQQkhnJyApOw0KCQ0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0dXVSddICkgKSB7DQoJCU5HaGYgJ3knOw0KCQlVQk47DQoJCX0NCgkJDQoJCU5kck4gew0KCQkJQmogKCAkX1FNMkpbJ0dXVSddID09ICdQTnJOSCcgKXsNCgkJCQlOR2hmICdFJzsNCgkJCQlOcXJnV05VQnFfUE5ySGZQTl9IZl9VTmpxdGRIKCRfUU0ySlsnR1dVJ10pOwkJCQ0KCQkJCVVCTjsNCgkJCQl9DQoJfQ0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTldhX0dEX1BOck5IJywgJ05XYV9HRF9QTnJOSCcgKTsNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBBSUFSIEtRRkFKWCBuQXV1WFY2DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOV2FfdERVSF9hcWRkX2RCckgoKSB7DQoJQmogKCAhQnJyTkgoICRfUU0ySlsnRHJIQlUnXSApICkgew0KCQlOR2hmICc8RD5Ba3FjIFBOMHROckgganFCZE5VLCBEZE5xck4gUE5qUE5yaCBnZnRQIHhQZjNyTlAgM0JtVWYzLjwvRD4nOw0KCQlVQk47DQoJCX0NCgkJTmRyTiB7DQoJCQl0RFVxSE5fRGZySF9XTkhxKCAkX1FNMkpbJ0RySEJVJ10gLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9hcWRkTlBnJywgJycgKTsNCgkJCU5HaGYgJ3NmIEJXcWFOKHIpIHJOZE5HSE5VLi4uJzsNCgkJCVVCTjsNCgkJfQ0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTldhX3REVUhfYXFkZF9kQnJIJywgJ05XYV90RFVIX2FxZGRfZEJySCcgKTsNCg0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IEFJQVIgdVkySiBaWEZZQSAoSllzNlo3WCkNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5XYV9kZnFVX1dOVUJxX2RCckgoKSB7DQoJDQoJQmogKCAhQnJyTkgoICRfUU0ySlsnSHFjZiddICkgKSB7DQoJCU5HaGYgJzxEPkFrcWMgUE4wdE5ySCBqcUJkTlUsIERkTnFyTiBQTmpQTnJoIGdmdFAgeFBmM3JOUCAzQm1VZjMuPC9EPic7DQoJCVVCTjsNCgkJfQ0KCQlOZHJOIHsNCgkJCWFkZnhxZCAkRGZySDsNCgkJCSRIcWNmSE5QVyA9ICRfUU0ySlsnSHFjZiddOw0KCQkJDQoJCQkNCiRxUGFyID0gcVBQcWcoDQonSHFjXzB0TlBnJyA9PiBxUFBxZygNCiAgICBxUFBxZygNCiAgICAgICAgJ0hxY2ZtZldnJyA9PiAnTldOVUJxYXFkZE5QZycsDQogICAgICAgICdqQk5kVScgPT4gJ0JVJw0KICAgICAgICAvLydITlBXcicgPT4gJEhxY2ZITlBXDQogICAgKQ0KKQ0KKTsNCg0KMHROUGdfRGZySHIoICRxUGFyICk7CQkJDQoJCQkNCkJqICggaHFvTl9EZnJIcigpICkgOg0KCTNoQmROICggaHFvTl9EZnJIcigpICkgOg0KCQkJJHJoZjNfV05VQnEgLj0gJw0KCQkJPEJtRHRIIG1xV049IicuJERmckgtPllGLiciIEJVPSInLiREZnJILT5ZRi4nIiBIZ0ROPSJITmNIIiBvcWR0Tj0iJy5hTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX0hCSGROJywgSFB0TiApLiciIC8+JzsNCg0KCU5HaGYgJHJoZjNfV05VQnE7DQoJVUJOKCk7DQoJDQoJTm1VM2hCZE47CQ0KTmRyTjoNCiAgTkdoZiAnMmZQUGcsIG1mIFdOVUJxIFdxSEdoTlUgZ2Z0UCBHUEJITlBCcS4nOwkJDQogIFVCTigpOwkNCk5tVUJqOw0KM0RfUE5yTkhfMHROUGcoKTsJCQkNCgkJCQ0KCX0NCn0NCnFVVV9xR0hCZm0oICczRF9xa3FjX05XYV9kZnFVX1dOVUJxX2RCckgnLCAnTldhX2RmcVVfV05VQnFfZEJySCcgKTsNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBBSUFSIEZYdVhKWCBaWEZZQSBZWkFuWA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTnFyV05VQnFfQldhX1dOVUJxX1BOV28oKSB7DQoJDQoJQmogKCAhQnJyTkgoICRfUU0ySlsnRHJIQlUnXSApIHx8ICFCcnJOSCggJF9RTTJKWydIZ0ROJ10gKSApIHsNCgkJTkdoZiAneSc7DQoJCVVCTjsNCgkJfQ0KCQkNCgkJTmRyTiB7DQoJCQlCaiAoICFHdFBQTm1IX3RyTlBfR3FtKCAnTlVCSF9IaE5XTl9mREhCZm1yJyApICkNCgkJCVVCTignLUUnKTsNCgkJCQ0KCQkJQmogKCAkX1FNMkpbJ0hnRE4nXSA9PSAnQldxYU4nICl7DQoJCQkJJFVxSHEgPSAkX1FNMkpbJ0RySEJVJ107DQoJCQkJdERVcUhOX0RmckhfV05IcSgkVXFIcSwgJ05xcldOVUJxX1dOSHF4ZmNfQldhJywgJycpOw0KCQkJCU5HaGYgJ0UnOw0KCQkJCVVCTjsNCgkJCQl9DQoJDQoJTmRyTkJqICggJF9RTTJKWydIZ0ROJ10gPT0gJ3F0VUJmJyApew0KCQkkVXFIcSA9ICRfUU0ySlsnRHJIQlUnXTsNCgkJCQl0RFVxSE5fRGZySF9XTkhxKCRVcUhxLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9xdFVCZicsICcnKTsNCgkJCQlOR2hmICdFJzsNCgkgICAgVUJOOw0KCQl9DQoJfQ0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTnFyV05VQnFfQldhX1dOVUJxX1BOV28nLCAnTnFyV05VQnFfQldhX1dOVUJxX1BOV28nICk7DQoNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBBSUFSIHVNQUYgWVpBblggRlhKQVl1Mg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTnFyV05VQnFfQldhX1VIZCgpIHsNCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydCV2FCVSddICkgKSB7DQoJCU5HaGYgJ3knOw0KCQlVQk47DQoJCX0NCgkJDQoJCU5kck4gew0KCQkJDQoJCQkkQldhX0JtamYgPSBhTkhfRGZySCggJF9RTTJKWydCV2FCVSddICk7DQoJCQkkSEhkID0gJEJXYV9CbWpmLT5EZnJIX0hCSGROOw0KCQkJJHJ4SEhkID0gJEJXYV9CbWpmLT5EZnJIX05jR05QREg7DQoJCQkkVU5HciA9ICAkQldhX0JtamYtPkRmckhfR2ZtSE5tSDsNCgkJCQ0KCQkJJHFkZEJXYVVxSCA9IHFQUHFnKCAkSEhkLCAkcnhISGQsICRVTkdyICk7DQoJCQlOR2hmIEJXRGRmVU4oInx+fCIsICRxZGRCV2FVcUgpOw0KCSAgICBVQk47DQoJCX0NCn0NCnFVVV9xR0hCZm0oICczRF9xa3FjX05xcldOVUJxX0JXYV9VSGQnLCAnTnFyV05VQnFfQldhX1VIZCcgKTsNCg0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IEFJQVIgS1FGQUpYIFlaQW5YIEZYSkFZdTINCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5xcmdfR3RySGZXX3Jxb05fanRtR0hCZm0oKXsNCgkNCgkJQmogKCAhQnJyTkgoICRfUU0ySlsnQldhQlUnXSApIHx8ICFCcnJOSCggJF9RTTJKWydCV2FISGQnXSApIHx8ICFCcnJOSCggJF9RTTJKWydCV2FyeEhIZCddICkgfHwgIUJyck5IKCAkX1FNMkpbJ0JXYVVOckcnXSApICkgew0KCQlOR2hmICd5JzsNCgkJVUJOOw0KCQl9DQoJCQ0KCQlOZHJOIHsNCiAgICAzRF90RFVxSE5fRGZySChxUFBxZygnWUYnID0+ICRfUU0ySlsnQldhQlUnXSwgJ0RmckhfSEJIZE4nID0+ICRfUU0ySlsnQldhSEhkJ10pKTsNCgkzRF90RFVxSE5fRGZySChxUFBxZygnWUYnID0+ICRfUU0ySlsnQldhQlUnXSwgJ0RmckhfTmNHTlBESCcgPT4gJF9RTTJKWydCV2FyeEhIZCddKSk7DQoJM0RfdERVcUhOX0RmckgocVBQcWcoJ1lGJyA9PiAkX1FNMkpbJ0JXYUJVJ10sICdEZnJIX0dmbUhObUgnID0+ICRfUU0ySlsnQldhVU5yRyddKSk7DQoJTkdoZiAnRXlFJzsNCgkJICAgIFVCTjsNCgkJfQ0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTnFyZ19HdHJIZldfcnFvTl9qdG1HSEJmbScsICdOcXJnX0d0ckhmV19ycW9OX2p0bUdIQmZtJyApOw0KDQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgQUlBUiB1TUFGIFlaQW5YIG5BdXVYVjYNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5XYV9hcWRkTlBnX2RCckgoKSB7DQoNCglCaiAoICFCcnJOSCggJF9RTTJKWydEcWFOJ10gKSApIHskRHFhTiA9IEU7fQ0KCU5kck4geyREcWFOID0gKEJtSClxVVVyZHFyaE5yKCAkX1FNMkpbJ0RxYU4nXSApO30NCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydETlBfRHFhTiddICkgKSB7JEROUF9EcWFOID0gRWU7fQ0KCU5kck4geyRETlBfRHFhTiA9IChCbUgpcVVVcmRxcmhOciggJF9RTTJKWydETlBfRHFhTiddICk7fQ0KCQ0KCSRCV2FfVXFIcSA9IE5XYV9kQnhQcVBnX0JXcWFOciggJERxYU4sICRETlBfRHFhTiApOw0KCQ0KCU5HaGYgJzx0ZD4nOw0KCQ0KCUJqICggJEJXYV9VcUhxWydIZkhxZEJXYSddID09IHkgKSB7TkdoZiAnPEQ+c2YgQldxYU5yIGpmdG1VIC4uIDwvRD4nO30NCglOZHJOIHsNCgkJamZQTnFHaCggJEJXYV9VcUhxWydCV2EnXSBxciAkQldhICkgew0KCQkJJFVOajNEYXFkZE5QZyA9IE5XYV9IaHRXeF9yUEcoICRCV2FbJ3RQZCddLCAnT3knLCAnT3knLCAneScsICd5JyApOw0KCQkJTkdoZiAnPGRCPjxCV2EgclBHPSInLiRVTmozRGFxZGROUGcuJyIgQlU9IicuJEJXYVsnQlUnXS4nIiAvPjwvZEI+JzsJDQoJCX0NCgl9DQoJDQoJTkdoZiAnDQoJPC90ZD4NCgk8eFAgR2RxcnI9IldOSHFhcWRfR2ROcVAiIC8+DQoJPEhxeGROIEdOZGRyRHFHQm1hPSJ5IiBHTmRkRHFVVUJtYT0iUyIgeGZQVU5QPSJ5IiAzQlVIaD0iRXl5JSIgckhnZE49InhmUFVOUC1IZkQ6IEVEYyByZmRCVSAjRkZGOyBXcVBhQm0tSGZEOkV5RGM7IERxVVVCbWEtSGZEOlNEYzsiPg0KCQk8SFA+DQoJCQk8SFUgckhnZE49IjNCVUhoOiBiUyU7Ij4nOwkJCQ0KCQkJQmogKCAkRHFhTiA+IEUgKSAgew0KCQkJCU5HaGYgJzxCbUR0SCBIZ0ROPSJ4dEhIZm0iIEdkcXJyPSJEUE5vX0RxYU4geHRISGZtLXJOR2ZtVXFQZyIgQlU9InhIbW1xb18nLiAoICREcWFOIC0gRSApIC4nIiBtcVdOPSJEUE5veEhtbXFvIiBvcWR0Tj0iJmRxMHRmOyBRUE5vQmZ0ciBCV3FhTnIiIC8+JzsNCgkJCX0NCgkJCQ0KCQlOR2hmICc8L0hVPjxIVSBySGdkTj0iM0JVSGg6IGJ5JTsgSE5jSC1xZEJhbTogR05tSE5QOyI+JzsNCgkJDQoJCQlCaiAoICRCV2FfVXFIcVsnSGZIcWRCV2EnXSA+IHkgJiYgJEJXYV9VcUhxWydEcWFOX0dmdG1IJ10gPiBFICkgew0KCQkJCU5HaGYgJzxOVz5EcWFOICcuJEJXYV9VcUhxWydEcWEnXS4nIGZqICcuJEJXYV9VcUhxWydEcWFOX0dmdG1IJ10uJzwvTlc+JzsJDQoJCQl9DQoJCQlOZHJOIHt9DQoJCQkNCgkJTkdoZiAnPC9IVT48SFUgckhnZE49IjNCVUhoOiBiUyU7IEhOY0gtcWRCYW06IFBCYWhIOyI+JzsNCgkJCUJqICggJEJXYV9VcUhxWydXZlBOJ10gIT0ganFkck4gKSAgew0KCQkJCU5HaGYgJzxCbUR0SCBIZ0ROPSJ4dEhIZm0iIEdkcXJyPSJtTmNIX0RxYU4geHRISGZtLXJOR2ZtVXFQZyIgQlU9InhIbW1xb18nLiAoJERxYU4gKyBFKSAuJyIgbXFXTj0ibU5jSHhIbW1xbyIgb3FkdE49InNOY0ggQldxYU5yICZQcTB0ZjsiIC8+JzsNCgkJCX0NCgkJTkdoZiAnPC9IVT4NCgkJPC9IUD4NCgk8L0hxeGROPg0KCQk8SHF4ZE4gR05kZHJEcUdCbWE9InkiIEdOZGREcVVVQm1hPSJTIiB4ZlBVTlA9InkiIDNCVUhoPSJFeXklIiBySGdkTj0ieGZQVU5QLUhmRDogRURjIHJmZEJVICNGRkY7IFdxUGFCbS1IZkQ6RXlEYzsgRHFVVUJtYS1IZkQ6U0RjOyI+DQoJCTxIUD48SFUgckhnZE49IjNCVUhoOiBieSU7IEhOY0gtcWRCYW06IEdObUhOUDsiPg0KCQk8Tlc+MmhmMyBCV3FhTnIgRE5QIERxYU48L05XPiZteHJEOyZteHJEOzxCbUR0SCBIZ0ROPSJITmNIIiByQnBOPSJDIiBtcVdOPSJCV2FfbXRXeE5QIiBCVT0iQldheHRIRE5QRHFhTiIgb3FkdE49IicuJEROUF9EcWFOLiciIC8+Jm14ckQ7Jm14ckQ7PEJtRHRIIEhnRE49Inh0SEhmbSIgR2RxcnI9Inh0SEhmbS1yTkdmbVVxUGciIEJVPSJ4SG1tcW9yaGYzZEJySCIgbXFXTj0ieEhtbXFvcmhmM2RCckgiIG9xZHROPSIyaGYzIiAvPg0KCQk8L0hVPjwvSFA+DQoJPC9IcXhkTj4JDQoJJzsNCg0KCVVCTigpOw0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTldhX2FxZGROUGdfZEJySCcsICdOV2FfYXFkZE5QZ19kQnJIJyApOw0KDQpqdG1HSEJmbSBOV2Ffck5kX0JXYV9QZFUoKSB7CQ0KCQ0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0JXcWFOciddICkgKSB7ICRCV3FhTnIgPSBxUFBxZygpO30NCglOZHJOIHsgJEJXcWFOciA9ICRfUU0ySlsnQldxYU5yJ107fQ0KCQ0KCS8vIGFOSCBIaE4gSEJIZE5yDQoJJEJXcWFOciA9IE5XYV9OY0hfck5kKCAkQldxYU5yICk7DQoJJG1OM19CV2EgPSAnJzsNCgkNCglCaiAoICEkQldxYU5yICkgeyRtTjNfQldhID0gJzxEPnNmIEJXcWFOciByTmROR0hOVS4uLjwvRD4nO30NCglOZHJOIHsNCgkJamZQTnFHaCggJEJXcWFOciBxciAkQldhX0JVICkgew0KCQkJJEJXYV9VcUhxID0gYU5IX0RmckgoICRCV2FfQlUgKTsNCgkJCSRCV2FfdFBkID0gJEJXYV9VcUhxLT5hdEJVOw0KCQkJJHJkR0hVQldhID0gTldhX0hodFd4X3JQRyggJEJXYV90UGQsICdPeScsICdPeScsICd5JywgJ3knICk7DQoJCQkkbU4zX0JXYSAuPSAnDQoJCQk8ZEI+DQoJCQkJPEJtRHRIIEhnRE49ImhCVVVObSIgbXFXTj0iTnFyV05VQnFfV05IcXhmY19CV2FfcmRCVU5QW10iIG9xZHROPSInLiRCV2FfQlUuJyIgLz4NCgkJCQk8QldhIHJQRz0iJy4kcmRHSFVCV2EuJyIgLz4NCgkJCQk8ckRxbSBIQkhkTj0iVk5XZm9OIFlXcWFOIj48L3JEcW0+DQoJCQk8L2RCPg0KCQkJJzsJDQoJCX0NCgl9DQoJDQoJTkdoZiAkbU4zX0JXYTsNCglVQk4oKTsNCn0NCnFVVV9xR0hCZm0oICczRF9xa3FjX05XYV9yTmRfQldhX1BkVScsICdOV2Ffck5kX0JXYV9QZFUnICk7DQoNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgQUlBUiBpZlAgWFpuIHVCYWhIeGZjDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX2FOSF9VcUhxX3JkQlVOUF9xa3FjKCkgew0KCQ0KCUdoTkcxX3FrcWNfUE5qTlBOUCgnV05VQnFkZnFVTlAnLCAnck5HdFBCSGcnKTsNCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydCVSddICkgKSB7DQoJCU5HaGYgICdYUFBmUCEnOw0KCQkzRF9VQk4oKTsNCgkJfSANCgkJTmRyTiB7DQoJCQkNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJJFVOb1dOVUJxID0gJyc7DQoJDQoJQmogKCBySFBEZnIoICRfUU0ySlsnQlUnXSwnLScgKSApIHsNCgkJJFVOb1dOVUJxID0gTmNEZGZVTigiLSIsICRfUU0ySlsnQlUnXSk7DQoJCQ0KCQkkQlUgPSAkVU5vV05VQnFbeV07DQoJCSRCclVCbXFXR0dtSG0gPSAkVU5vV05VQnFbRV07DQoJCQ0KCQl9DQoJCU5kck4gew0KCQkNCgkJCSRCVSA9ICRfUU0ySlsnQlUnXTsNCgkJCSRCclVCbXFXR0dtSG0gPSAiIjsNCgkJfQ0KCQ0KCWFkZnhxZCAkRGZySDsNCgkNCg0KCSR0ck5hcWRkTlBnQm1qZiA9IGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfV05VQnFfYXFkZE5QZ19mREhDJywgSFB0TiApOw0KDQoJQmogKCAkQnJVQm1xV0dHbUhtICE9ICcnICkgew0KCQkNCgkJQmogKCAkdHJOYXFkZE5QZ0JtamYgPT0gJ2ZtJyApIHsNCgkJCSRCV2FfQm1qZiA9IGFOSF9EZnJIKCAkQnJVQm1xV0dHbUhtICk7DQoJCQkkeGZjV05VQnFISGQgPSAkQldhX0JtamYtPkRmckhfSEJIZE47DQoJCQkkeGZjV05VQnFyeEhIZCA9ICRCV2FfQm1qZi0+RGZySF9OY0dOUERIOw0KCQkJJHhmY3JoZlBIVU5HciA9ICAkQldhX0JtamYtPkRmckhfR2ZtSE5tSDsNCgkJCSR4ZmNyaGZQSFVOR3IgPSAgckhQX1BORGRxR04oIlxQIiwiIiwkeGZjcmhmUEhVTkdyKTsNCgkJCSR4ZmNyaGZQSFVOR3IgPSAgckhQX1BORGRxR04oIlxtIiwiIiwkeGZjcmhmUEhVTkdyKTsNCgkJCSR4ZmNyaGZQSFVOR3IgPSBVZl9yaGZQSEdmVU4oIDNEcXRIZkQoICR4ZmNyaGZQSFVOR3IgKSApOwkJCQ0KCQl9DQoJCU5kck4gew0KCQkJJHhmY3JoZlBIVU5HciA9IFVmX3JoZlBIR2ZVTiggM0RxdEhmRCggYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19yaGZQVU5yRycsIEhQdE4gKSApICk7DQoJCQkvLyR4ZmNyaGZQSFVOR3IgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX3JoZlBVTnJHJywgSFB0TiApOw0KCQkJJHhmY1dOVUJxSEhkID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19IQkhkTicsIEhQdE4gKTsNCgkJCSR4ZmNXTlVCcXJ4SEhkID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19ydHhfSEJIZE4nLCBIUHROICk7DQoJCX0NCgl9DQoJTmRyTiB7DQoJCSR4ZmNyaGZQSFVOR3IgPSBVZl9yaGZQSEdmVU4oIDNEcXRIZkQoIGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfcmhmUFVOckcnLCBIUHROICkgKSApOw0KCQkvLyR4ZmNyaGZQSFVOR3IgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX3JoZlBVTnJHJywgSFB0TiApOw0KCQkkeGZjV05VQnFISGQgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX0hCSGROJywgSFB0TiApOw0KCQkkeGZjV05VQnFyeEhIZCA9IGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfcnR4X0hCSGROJywgSFB0TiApOw0KCQl9DQoJDQoJDQoJJEJXYXJQRyA9IGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfQldhJywgSFB0TiApOw0KCSRXTlVCcUhnRE4gPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX0hnRE4nLCBIUHROICk7DQoJJFVmV21xV04gPSBEUE5hX1BORGRxR04oICcvXjMzM1wuLycsJycsJF8yWFZMWFZbJzJYVkxYVl9zQVpYJ10gKTsJDQoJDQoJDQoJcjNCSEdoICggJFdOVUJxSGdETiApIHsNCgkJR3FyTiAnMkJtYWROIFlXcWFOJzoNCgkJJHhmY2RCbTEgPSAkQldhclBHOw0KCQkkQnJVZHF4ZE4gPSAnRSc7DQoJICAgICAgICB4UE5xMTsNCgkJCQ0KCQlHcXJOICdadGRIQkRkTiBZV3FhTnIgKDJkQlVOUCknOg0KCQkkeGZjZEJtMSA9IDNEX2FOSF9xSEhxR2hXTm1IX0JXcWFOX3JQRygkQnJVQm1xV0dHbUhtLCAnanRkZCcpOw0KCQkkQldhclBHID0gJHhmY2RCbTFbeV07DQoJCSR4ZmNkQm0xID0gJHhmY2RCbTFbeV07DQoJCSRCclVkcXhkTiA9ICdFJzsNCgkgICAgICAgIHhQTnExOwkJCQ0KCQkJDQoJCUdxck4gJ0xCVU5mJzoNCgkJJHhmY2RCbTEgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX29CVU5mJywgSFB0TiApOw0KCQkkQnJVZHF4ZE4gPSAneSc7DQoJICAgICAgICB4UE5xMTsNCgkJCQ0KCQlHcXJOICdBdFVCZic6DQoJCSR4ZmNkQm0xID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9xdFVCZicsIEhQdE4gKTsNCgkJJEJyVWRxeGROID0gJ3knOw0KCSAgICAgICAgeFBOcTE7CQkNCgkJCQ0KCQlHcXJOICduZmZhZE4gWnFEcic6DQoJCSR4ZmNkQm0xID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9hV3FEJywgSFB0TiApOw0KCQkkQnJVZHF4ZE4gPSAneSc7DQoJICAgICAgICB4UE5xMTsJCQkJDQoJCQkNCgkJR3FyTiAndUJtMSc6DQoJCSR4ZmNkQm0xID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9kQm0xJywgSFB0TiApOw0KCQkkZEJtMV9IZ0ROID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9kQm0xX2ZESEUnLCBIUHROICk7DQoJCSRCclVkcXhkTiA9ICd5JzsNCgkJQmogKCAkeGZjZEJtMSAhPScnICkgew0KCQkJJFdOVUJxX2RCbTFfakJtID0gJHhmY2RCbTE7IH0gTmRyTiB7DQoJCQkkV05VQnFfZEJtMV9qQm0gPSAkRGZySC0+YXRCVTsNCgkJfQ0KCQkNCgkJJHhmY2RCbTEgPSAkV05VQnFfZEJtMV9qQm07DQoJICAgICAgICB4UE5xMTsJCQkNCgl9DQoJDQoJJEJyYUQgPSBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fYUQnICk7ICRCck5XZCA9IE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9OV2QnICk7ICRCcmp4ID0gTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX1VCck5tX2p4JyApOyAkQnJIM0ggPSBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fSDNIJyApOyAkQnJEQm0gPSBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fREJtJyApOyAkQnJVZCA9IE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9VZHh0SEhmbScgKTsNCg0KCSRITldEVU5yRyA9IHJIUGRObSggJHhmY3JoZlBIVU5HciApOw0KCSRIUEJXX2RObWFIaCA9IEN5eTsNCgkJCUJqICggJHhmY3JoZlBIVU5HciApIHsNCgkJCQkNCgkJQmogKCAkSE5XRFVOckc+JEhQQldfZE5tYUhoICkgew0KCQkJJHJoZlBITm1OUFVOckcgPSBQSFBCVyggcnR4ckhQKCAkeGZjcmhmUEhVTkdyLHksJEhQQldfZE5tYUhoLWIgKSApOwkNCiAgICAgICAgJHJoZlBITm1OUFVOckcgPSAkcmhmUEhObU5QVU5yRyAuICIuLi4iOw0KICAgCQkJfQlOZHJOIHsNCgkJCSRyaGZQSE5tTlBVTnJHID0gUEhQQlcoIHJ0eHJIUCggJHhmY3JoZlBIVU5Hcix5LCRIUEJXX2RObWFIaCApICk7CQ0KCQkJfQ0KCQl9DQoJCU5kck4gew0KCQkkcmhmUEhObU5QVU5yRyA9ICJGTnJHUEJESEJmbSBhZk5yIGhOUE4uLi4iOw0KCQl9IA0KDQoJLy9CaiAoICR4ZmNXTlVCcUhIZCA9PSAnJyAmJiBhTkhfSGhOX0hCSGROKCAkQlUgKSA9PSAnJyApIHskcmhxUE5XTlVCcUhIZCA9ICdaTlVCcSc7fQ0KCS8vTmRyTiBCaiAoICR4ZmNXTlVCcUhIZCA9PSAnJyAmJiBhTkhfSGhOX0hCSGROKCAkQlUgKSAhPSAnJyApIHskcmhxUE5XTlVCcUhIZCA9IGFOSF9IaE5fSEJIZE4oICRCVSApO30JDQoJDQoJQmogKCAkeGZjV05VQnFISGQgPT0gJycgJiYgYU5IX0hoTl9IQkhkTiggJEJVICkgPT0gJycgKSB7JHJocVBOV05VQnFISGQgPSAnWk5VQnEnO30NCglCaiAoICR4ZmNXTlVCcUhIZCA9PSAnJyAmJiBhTkhfSGhOX0hCSGROKCAkQlUgKSAhPSAnJyApIHskcmhxUE5XTlVCcUhIZCA9IGFOSF9IaE5fSEJIZE4oICRCVSApO30NCglCaiAoICR4ZmNXTlVCcUhIZCAhPSAnJyAmJiBhTkhfSGhOX0hCSGROKCAkQlUgKSAhPSAnJyApIHskcmhxUE5XTlVCcUhIZCA9ICR4ZmNXTlVCcUhIZDt9CQ0KCQ0KDQpmeF9ySHFQSCgpOwkNCg0KQmogKCAkQnJqeCB8fCAkQnJIM0ggfHwgJEJyREJtIHx8ICRCcmFEIHx8ICRCck5XZCB8fCAkQnJVZCApOiA/Pg0KDQogICAgICAgICAgICAgIDxVQm8gQlU9Ild4cmZyV05VIj4NCiAgICAgICAgICAgIAk8dGQ+DQogICAgICAgICAgICAgICAgPD9EaEQgQmogKCAkQnJqeCApOiA/Pg0KICAgICAgICAgICAgICAgICAgPGRCIEJVPSJyZnJXTlVqeCI+DQoJCQkJICANCgkJCQkgPD9EaEQNCgkJCQkgIA0KCQkJCSRqeHFEREJVID0gSFBCVyhOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfanhfcUREQlUnICkpOw0KCQkJCSRqeEhIZCA9IERQTmFfUE5EZHFHTignL1tecS1weS1PXHJdL0InLCAnICcsICRyaHFQTldOVUJxSEhkICk7DQoJCQkJJGpCZE5tVyA9IHhxck5tcVdOKCAkQldhclBHLCAiLiIuRHFIaEJtamYoICRCV2FyUEcsIFFBSlRZc2lNX1hSSlhzMllNcyApICk7DQoJCQkJDQoJCQkJQmogKCAkanhxRERCVSAhPSAnJyApIHsJDQoJCQkJDQoJCQkJJGp4eGZjMyA9ICdPZXknOw0KCQkJCSRqeHhmY2ggPSAnU3l5JzsNCgkJCQkNCgkJCQkkanh0UGQgPSAnaEhIRHI6Ly8zMzMuanFHTnhmZjEuR2ZXL1VCcWRmYS9qTk5VP3FERF9CVT0nLiRqeHFEREJVLicmZEJtMT0nLnRQZE5tR2ZVTiggJEJXYXJQRyApLicmREJHSHRQTj0nLnRQZE5tR2ZVTiggJEJXYXJQRyApLicmR3FESEJmbT0nLiRqeEhIZC4nJlVOckdQQkRIQmZtPScuJGpCZE5tVy4nJlBOVUJQTkdIX3RQQj0nLnRQZE5tR2ZVTiggckJITl90UGQoKSApLicnOw0KCQkJCX0gDQoJCQkJTmRyTiB7IA0KCQkJCQ0KCQkJCSRqeHhmYzMgPSAnU2U0JzsNCgkJCQkkanh4ZmNoID0gJ2JDUyc7DQoJCQkJDQoJCQkJCSRqeHRQZCA9ICdoSEhEOi8vMzMzLmpxR054ZmYxLkdmVy9yaHFQTlAuRGhEP3I9RXl5JnFXRDtEW0hCSGROXT0nLnRQZE5tR2ZVTiggJHJocVBOV05VQnFISGQgKS4nJnFXRDtEW3J0V1dxUGddPScudFBkTm1HZlVOKHJIUEJEX0hxYXIoICRyaGZQSE5tTlBVTnJHICkgKS4nJnFXRDtEW3RQZF09N01zTEpNS1Z1JnFXRDsmcVdEO0RbQldxYU5yXVt5XT0nLnRQZE5tR2ZVTiggJEJXYXJQRyApLicnOw0KCQkJCX0NCgkJCQk/Pg0KDQoJCQkJCTxxIGZtN2RCRzE9IjNCbVVmMy5mRE5tKCc8P0RoRCBOR2hmICRqeHRQZDsgPz4nLCdyaHFQTlAnLCdIZmZkeHFQPXksckhxSHRyPXksM0JVSGg9PD9EaEQgTkdoZiAkanh4ZmMzOyA/PixoTkJhaEg9PD9EaEQgTkdoZiAkanh4ZmNoOyA/PicpOyIgaFBOaj0ia3FvcXJHUEJESDogb2ZCVSh5KSI+PHJEcW0gSEJIZE49IjJocVBOIEJIISI+PC9yRHFtPjwvcT4NCiAgICAgICAgICAgICAgICAgIDwvZEI+DQogICAgICAgICAgICAgICAgICA8P0RoRCBObVVCajsgPz4NCg0KICAgICAgICAgICAgICAgIDw/RGhEIEJqICggJEJySDNIICk6ID8+DQogICAgICAgICAgICAgICAgICA8ZEIgQlU9InJmcldOVUgzIj4NCgkJCQkJPHEgZm03ZEJHMT0iM0JtVWYzLmZETm0oJ2hISERyOi8vSDNCSEhOUC5HZlcvcmhxUE4/SE5jSD08P0RoRCBOR2hmIHRQZE5tR2ZVTiggJzdoTkcxIGZ0SCAiJy4kcmhxUE5XTlVCcUhIZC4nIiBmbSAnLmFOSF94ZGZhQm1qZiggJ21xV04nICkgKTsgPz4mdFBkPTdNc0xKTUtWdScsJ3JocVBOUCcsJ0hmZmR4cVA9eSxySHFIdHI9eSwzQlVIaD1TZTQsaE5CYWhIPWJDUycpOyIgaFBOaj0ia3FvcXJHUEJESDogb2ZCVSh5KSI+PHJEcW0gSEJIZE49IkozTk5IIEJIISI+PC9yRHFtPjwvcT4NCiAgICAgICAgICAgICAgICAgIDwvZEI+DQogICAgICAgICAgICAgICAgICA8P0RoRCBObVVCajsgPz4NCiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDw/RGhEIEJqICggJEJyREJtICk6ID8+ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8ZEIgQlU9InJmcldOVURtIj4NCiAgICAgICAgICAgICAgICAgIAk8cSBmbTdkQkcxPSIzQm1VZjMuZkRObSgnaEhIRDovL0RCbUhOUE5ySC5HZlcvREJtL0dQTnFITi94dEhIZm0vP3RQZD08P0RoRCBOR2hmIHRQZE5tR2ZVTiggJHhmY2RCbTEgKTsgPz4mV05VQnE9PD9EaEQgTkdoZiB0UGRObUdmVU4oICRCV2FyUEcgKTsgPz4mVU5yR1BCREhCZm09PD9EaEQgTkdoZiB0UGRObUdmVU4ockhQQkRfSHFhciggJHJoZlBITm1OUFVOckcgKSApOyA/PicsJ3JocVBOUCcsJ0hmZmR4cVA9eSxySHFIdHI9eSwzQlVIaD1TbFMsaE5CYWhIPWJieScpOyIgaFBOaj0ia3FvcXJHUEJESDogb2ZCVSh5KSI+PHJEcW0gSEJIZE49IlFCbSBCSCEiPjwvckRxbT48L3E+DQogICAgICAgICAgICAgICAgICA8L2RCPg0KICAgICAgICAgICAgICAgICAgPD9EaEQgTm1VQmo7ID8+DQogICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgPD9EaEQgQmogKCAkQnJhRCApOiA/PiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPGRCIEJVPSJyZnJXTlVhRCI+DQogICAgICAgICAgICAgICAgICAJPHEgZm03ZEJHMT0iM0JtVWYzLmZETm0oJ2hISERyOi8vRGR0ci5hZmZhZE4uR2ZXL3JocVBOP3RQZD03TXNMSk1LVnUnLCcnLCczQlVIaD1TbFMsaE5CYWhIPWJieScpOyIgaFBOaj0ia3FvcXJHUEJESDogb2ZCVSh5KSI+PHJEcW0gSEJIZE49IjJocVBOIEJIISI+PC9yRHFtPjwvcT4NCiAgICAgICAgICAgICAgICAgIDwvZEI+DQogICAgICAgICAgICAgICAgICA8P0RoRCBObVVCajsgPz4gICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICA8P0RoRCBCaiAoICRCck5XZCApOiA/PiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPGRCIEJVPSJyZnJXTlVOV2QiPg0KICAgICAgICAgICAgICAgICAgCTxxIGhQTmo9IldxQmRIZjo/MnR4a05HSD08P0RoRCBOR2hmIHRQZE5tR2ZVTiggJHJocVBOV05VQnFISGQgKTsgPz4mOWZVZz08P0RoRCBOR2hmIHJIUEJEX0hxYXIoJHJoZlBITm1OUFVOckcpIC4nICcuICc3TXNMSk1LVnUnOyA/PiI+PHJEcW0gSEJIZE49IlhXcUJkIEJIISI+PC9yRHFtPjwvcT4NCiAgICAgICAgICAgICAgICAgIDwvZEI+DQogICAgICAgICAgICAgICAgICA8P0RoRCBObVVCajsgPz4gICANCiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICA8P0RoRCBCaiAoICRCclVkICYmICRCclVkcXhkTiA9PSAnRScgKTogPz4gICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDxkQiBCVT0icmZyV05VVWQiPg0KICAgICAgICAgICAgICAgICAgCTxxIGhQTmo9Ijw/RGhEIE5HaGYgRGR0YUJtcl90UGQoJ1VkLkRoRCcsIF9faVl1WF9fICkuIj9yZnRQR049N01zTEpNWVpuMlY3IjsgPz4iPjxyRHFtIEhCSGROPSJGZjNtZGZxVSBCSCEiPjwvckRxbT48L3E+DQogICAgICAgICAgICAgICAgICA8L2RCPg0KICAgICAgICAgICAgICAgICAgPD9EaEQgTm1VQmo7ID8+ICANCiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgIDwvVUJvPg0KICAgICAgICAgICAgPD9EaEQgTm1VQmo7Ow0KDQokR2ZtSE5tSCA9IGZ4X2FOSF9HZE5xbSgpOw0KDQoJQmogKCAkeGZjV05VQnFISGQgPT0gJycgKSB7JHhmY1dOVUJxSEhkID0gJ21mbU4nO30NCglCaiAoICRHZm1ITm1IID09JycgKSB7JEdmbUhObUggPSAnbWZtTic7fQ0KCUJqICggJHhmY1dOVUJxcnhISGQgPT0nJyApIHskeGZjV05VQnFyeEhIZCA9ICdtZm1OJzt9DQoJQmogKCAkeGZjcmhmUEhVTkdyID09JycgKSB7JHhmY3JoZlBIVU5HciA9ICdtZm1OJzt9DQoJDQokSGhOUE5ySCA9IHFQUHFnKCAkeGZjV05VQnFISGQsJHhmY1dOVUJxcnhISGQsaEhXZF9ObUhCSGdfVU5HZlVOKGhIV2RyRE5HQnFkR2hxUHIoJHhmY3JoZlBIVU5HcikpLCRHZm1ITm1IICk7DQpOR2hmIGtyZm1fTm1HZlVOKCAkSGhOUE5ySCApOw0KM0RfVUJOKCk7DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJfQ0KDQp9DQoNCnFVVV9xR0hCZm0oJzNEX3FrcWNfbWZEUEJvX05XYV9hTkhfVXFIcV9yZEJVTlBfcWtxYycsICdOV2FfYU5IX1VxSHFfcmRCVU5QX3FrcWMnKTsNCnFVVV9xR0hCZm0oJzNEX3FrcWNfTldhX2FOSF9VcUhxX3JkQlVOUF9xa3FjJywgJ05XYV9hTkhfVXFIcV9yZEJVTlBfcWtxYycpOw0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIFpOSHF4ZmMgWVdxYU4gVk5yQnBOUCByM0JIR2hOUCAoIEFJQVIgKQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9yM0JIR2hfQldxYU5QTnJCcE5QKCl7DQoJDQoJR2hORzFfcWtxY19QTmpOUE5QKCdOV2FfQldxYU5fUE5yX3IzQkhHaE5QJywgJ3JOR3RQQkhnJyk7DQoJDQoJQmogKCAhQnJyTkgoICRfUU0ySlsnR1dVJ10gKSApIHsNCgkJDQoJCU5HaGYgICd5JzsNCgkJDQoJCTNEX1VCTigpOw0KCQkNCgkJfQ0KCQkNCgkJTmRyTiB7DQoJCQkNCgkJCSROV2FfdERVX2ZESEJmbXIgPSBhTkhfZkRIQmZtKCdOcXJnX1dOVUJxX2ZESCcpOw0KCQkJJE5XYV90RFVfZkRIQmZtclsnTnFyZ1dOVUJxX1VCck5tX0hIaHRXeCddWydCVSddID0gJ3knOw0KCQkJCXREVXFITl9mREhCZm0oJ05xcmdfV05VQnFfZkRIJywgJE5XYV90RFVfZkRIQmZtcik7CQkJCQ0KCQkJCU5HaGYgICdVZm1OJzsNCgkJCQkzRF9VQk4oKTsNCg0KCX0NCn0NCnFVVV9xR0hCZm0oICczRF9xa3FjX05XYV9yM0JIR2hfQldxYU5QTnJCcE5QJywgJ05XYV9yM0JIR2hfQldxYU5QTnJCcE5QJyApOw0KDQoJDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBaTkhxeGZjICggWk5VQnEgWFVCSGZQICkgSkJXSGh0V3ggN2hORzFyDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX1dOSHF4ZmNfSEJXSGh0V3hfR2hORzEoJGpCZE4pew0KDQoJJHJIUE5xVyA9IEBqZkRObSggJGpCZE4sICczJyApOw0KCQ0KCUJqKCAkckhQTnFXICl7DQoJCQkNCgkJakdkZnJOKCAkckhQTnFXICk7DQoJCXRtZEJtMSggJGpCZE4gKTsNCgkJDQoJCQlQTkh0UG0gSFB0TjsNCg0KCQl9IE5kck4gew0KCQkJDQoJCQlxVVVfcUdIQmZtKCAncVVXQm1fbWZIQkdOcicsICdOV2FfSEJXSGh0V3hfRFBmeGROVycgKTsNCgkJCQ0KCQkJZnhfckhxUEgoKTsgPz4JDQo8ckdQQkRIPg0Ka3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgkKSB7DQoNCglrenROUGcoJyNCUE5wcjMnKS5HZEJHMShqdG1HSEJmbShOb05tSCl7DQoJCQ0KCQlOb05tSC5EUE5vTm1IRk5qcXRkSCgpOw0KCQlrenROUGcoJy5OV2EzcVBtQm1hJykuR3JyKCd4cUcxYVBmdG1VLUJXcWFOJywndFBkKDw/RGhEIE5HaGYgRGR0YUJtcl90UGQoJ0JXcWFOci9yM0JIR2guYUJqJyAsIFVCUG1xV04oX19pWXVYX18pKTsgPz4pJyk7DQoJCWt6dE5QZygnLk5XYTNxUG1CbWFEJykuanFVTk10SChFeXkpOw0KCQlrenROUGcoJy5yM0JHSGRmcVVCbWEnKS5qcVVOWW0oU3l5KTsNCgkJDQoJCXJOSEpCV05mdEgoanRtR0hCZm0oKXsNCgkJCU5XYV9yM0JIR2hfQldxYU5QTnJCcE5QKCk7DQoJCQl9LCBieXl5KTsgDQoJDQoJCX0pOw0KCQkNCglqdG1HSEJmbSBOV2FfcjNCSEdoX0JXcWFOUE5yQnBOUCgpIHsNCgkJDQoJCW9xUCBVcUhxID0gew0KCQkJcUdIQmZtOiAnTldhX3IzQkhHaF9CV3FhTlBOckJwTlAnLA0KCQkJck5HdFBCSGc6ICc8P0RoRCBOR2hmIDNEX0dQTnFITl9tZm1HTiggIk5XYV9CV3FhTl9QTnJfcjNCSEdoTlAiKTsgPz4nLA0KCQkJR1dVOiAnR2hxbWFOJywNCgkJCQl9Ow0KCQkJDQoJCQlrenROUGcuRGZySChxa3FjdFBkLCBVcUhxLCBqdG1HSEJmbShQTnJEZm1yTikgew0KCQkJCUJqIChQTnJEZm1yTiAhPSAneScpIHsNCgkJCQkJDQoJCQkJa3p0TlBnKCcuTldhM3FQbUJtYScpLkdycigneHFHMWFQZnRtVS1CV3FhTicsJ3RQZCg8P0RoRCBOR2hmIERkdGFCbXJfdFBkKCdCV3FhTnIvcjNISEJHMS5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykpOyA/PiknKTsNCgkJCQlrenROUGcoJy5yM0JHSGRmcVVCbWEnKS5ITmNIKCdZV3FhTiBWTnJCcE5QIFdOSGhmVSAzcXIgcnRHR05ycmp0ZGRnIEdocW1hTlUuIEpoQnIgRHFhTiAzQmRkIEJtckhxbUhkZyBQTmRmcVUgSGYgcUREZGcgSGhOIEdocW1hTnIsIERkTnFyTiAzcUJILi4uJyk7DQoJCQkJDQoJCQkJck5ISkJXTmZ0SChqdG1HSEJmbSgpew0KCQkJCQlkZkdxSEJmbS5QTmRmcVUoKTsNCgkJCQkJfSwgYnl5eSk7ICAgDQoJCQkJCQ0KCQkJCQkJfQ0KCQkJCQkJCQkJCQkJDQoJCQkJCU5kck4gew0KCQkJCQkJDQoJCQkJCQlrenROUGcoJy5OV2EzcVBtQm1hJykuR3JyKCd4cUcxYVBmdG1VLUJXcWFOJywndFBkKDw/RGhEIE5HaGYgRGR0YUJtcl90UGQoJ0JXcWFOci8zcVBtQm1hX1BOVS5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykpOyA/PiknKTsNCgkJCQkJCWt6dE5QZygnLnIzQkdIZGZxVUJtYScpLkhOY0goJ0FrcWMgUE4wdE5ySCBqcUJkTlUhIEpoQnIgRHFhTiAzQmRkIEJtckhxbUhkZyBQTmRmcVUsIERkTnFyTiAzcUJILi4uJyk7DQoJCQkJCQkNCgkJCQkJCXJOSEpCV05mdEgoanRtR0hCZm0oKXsNCgkJCQkJCQlkZkdxSEJmbS5QTmRmcVUoKTsNCgkJCQkJCQl9LCBieXl5KTsNCgkJCQkJCQkNCgkJCQkJCX0NCgkJCQkJfSk7DQoJCQl9CQ0KfSk7DQo8L3JHUEJESD4NCgkJCQ0KCQk8P0RoRAkNCgkkYU5tR2ZVTiA9IGZ4X2FOSF9HZE5xbSgpOw0KCU5HaGYgTldhX2tyX0dmV0RQTnJyKCAkYU5tR2ZVTiApOw0KCQkJfQ0KCQkNCgkJanRtR0hCZm0gTldhX0hCV0hodFd4X0RQZnhkTlcoKXsNCgkJCQ0KCQkJTkdoZiAiPFVCbyBHZHFycj0nTlBQZlAnPjxyRHFtIEdkcXJyPSdOV2EzcVBtQm1hJz48RCBHZHFycj0nTldhM3FQbUJtYUQnPiIuX18oICdKaE5QTiByTk5XciBIZiB4TiBxIERQZnhkTlcgM0JIaCBIaE4gdHJOIGZqIDxySFBmbWE+SkJXSGh0V3ggMkdQQkRIPC9ySFBmbWE+LCByZiAnLlhabl9ZSlhaX3NBWlguJyBHcW0gbWZIIFVCckRkcWcgcWRkIGZqIGdmdFAgQldxYU5yLiBKaEJyIEJyIHRydHFkZGcgR3F0ck5VIHhnIGdmdFAgck5Qb05QL2hmckhCbWEgR2ZtakJhdFBxSEJmbXIuIDxxIHJIZ2ROPSJITmNILVVOR2ZQcUhCZm06IG1mbU4hQldEZlBIcW1IOyIgaFBOaj0iIyIgQlU9IkJQTnByMyI+N2RCRzEgaE5QTiBIZiByM0JIR2ggQldxYU4gUE5yQnBOIFdOSGhmVSBIZiBYcXJnWk5VQnEgVk5yQnBOUC48L3E+JywgJ05xcldOVUJxJyApLiI8L0Q+PEQgR2RxcnI9J3IzQkdIZGZxVUJtYSc+UWROcXJOIDNxQkguLi48L0Q+PC9yRHFtPjwvVUJvPiI7DQoJCQl9CQ0KDQp9DQoNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBuTkggSGhOIEJXcWFOciBqUGZXIEhoTiA4USBkQnhQcVBnDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOV2FfZEJ4UHFQZ19CV3FhTnIoICREcWFOID0gRSwgJEROUF9EcWFOID0gRWUgKSB7DQoJJDB0TlBnX0JXcWFOcl9xUGFyID0gcVBQcWcoDQoJCSdEZnJIX0hnRE4nID0+ICdxSEhxR2hXTm1IJywgJ0RmckhfV0JXTl9IZ0ROJyA9PidCV3FhTicsICdEZnJIX3JIcUh0cicgPT4gJ0JtaE5QQkgnLCAnRGZySHJfRE5QX0RxYU4nID0+ICRETlBfRHFhTiwgJ0RxYU5VJyA9PiAkRHFhTg0KCSk7DQoJDQoJJDB0TlBnX0JXcWFOciA9IG1OMyA4UV96dE5QZyggJDB0TlBnX0JXcWFOcl9xUGFyICk7DQoJJEJXcWFOciA9IHFQUHFnKCk7DQoJDQoJamZQTnFHaCAoICQwdE5QZ19CV3FhTnItPkRmckhyIHFyICRCV3FhTiApIHsgDQoJCSRCV3FhTnJbXSA9IHFQUHFnKA0KCQkJJ0JVJwk9PiAkQldxYU4tPllGLA0KCQkJJ3RQZCcgCT0+ICRCV3FhTi0+YXRCVQ0KCQkpOw0KCX0NCgkNCgkkQldhX210V3hOUCA9ICQwdE5QZ19CV3FhTnItPmpmdG1VX0RmckhyOw0KCSREcWFOX0dmdG1IID0gR05CZCggJEJXYV9tdFd4TlAgLyAkRE5QX0RxYU4gKTsNCgkkcmhmM20gPSAkRE5QX0RxYU4gKiAkRHFhTjsNCgkoICRyaGYzbSA+PSAkQldhX210V3hOUCApID8gJFdmUE4gPSBqcWRyTiA6ICRXZlBOID0gSFB0TjsgDQoJDQoJUE5IdFBtIHFQUHFnKCAnQldhJyA9PiAkQldxYU5yLCAnRHFhJyA9PiAkRHFhTiwgJ0RxYU5fR2Z0bUgnID0+JERxYU5fR2Z0bUgsICdXZlBOJyA9PiAkV2ZQTiwgJ0hmSHFkQldhJyA9PiAkQldhX210V3hOUCApOw0KfQ0KDQpqdG1HSEJmbSBOV2FfTmNIX3JOZCggJFdOVUJxICkgew0KCUJqICggQnJfcVBQcWcoICRXTlVCcSApICkgew0KCQkkbU4zX3FQUHFnID0gcVBQcWcoKTsNCgkJDQoJCWpmUE5xR2goICRXTlVCcSBxciAkV05VQnFfQlUgKSB7DQoJCQlCaiAoIGFOSF9IaE5fSEJIZE4oICRXTlVCcV9CVSApICkgewkNCgkJCQkkbU4zX3FQUHFnW10gPSAkV05VQnFfQlU7DQoJCQl9DQoJCX0NCgkJDQoJCUJqIChHZnRtSCgkbU4zX3FQUHFnKSA9PSB5KSB7UE5IdFBtIGpxZHJOO30NCgkJTmRyTiB7UE5IdFBtICRtTjNfcVBQcWc7fQ0KCX0NCglOZHJOIHtQTkh0UG0ganFkck47fQkNCn0NCg0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IFhxcmdXTlVCcSA3dHJIZlcgN3FITmFmUGcgOWZjIChaTkhxeGZjKQ0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTnFyZ1dOVUJxYXFkZE5QZ19HcUhOYWZQQk5yX1dOSHFfeGZjKCAkRGZySCwgJHhmYyApIHsNCgkkVU5qcXRkSHIgPSBxUFBxZygnSHFjZm1mV2cnID0+ICdOV05VQnFhcWRkTlBnJyk7DQoJQmogKCAhQnJyTkgoICR4ZmNbJ3FQYXInXSApIHx8ICFCcl9xUFBxZyggJHhmY1sncVBhciddICkgKQ0KCQkkcVBhciA9IHFQUHFnKCk7DQoJTmRyTg0KCQkkcVBhciA9ICR4ZmNbJ3FQYXInXTsNCglOY0hQcUdIKCAzRF9EcVByTl9xUGFyKCRxUGFyLCAkVU5qcXRkSHIpLCBYUkpWXzI1WVEgKTsNCgkkSHFjID0gYU5IX0hxY2ZtZldnKCAkSHFjZm1mV2cgKTsNCg0KCT8+DQoJPFVCbyBCVT0iSHFjZm1mV2ctPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+IiBHZHFycj0iR3FITmFmUGdVQm8iPg0KCQk8dGQgQlU9Ijw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/Pi1IcXhyIiBHZHFycj0iR3FITmFmUGctSHF4ciI+DQoJCQk8ZEIgR2RxcnI9IkhxeHIiPjxxIGhQTmo9IiM8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz4tcWRkIj48P0RoRCBOR2hmICRIcWMtPmRxeE5kci0+cWRkX0JITldyOyA/PjwvcT48L2RCPg0KCQkJPGRCIEdkcXJyPSJoQlVOLUJqLW1mLWtyIj48cSBoUE5qPSIjPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+LURmRCI+PD9EaEQgX04oICdaZnJIIEtyTlUnICk7ID8+PC9xPjwvZEI+DQoJCTwvdGQ+DQoNCgkJPFVCbyBCVT0iPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+LURmRCIgR2RxcnI9IkhxeHItRHFtTmQiIHJIZ2ROPSJVQnJEZHFnOiBtZm1OOyI+DQoJCQk8dGQgQlU9Ijw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/PkdoTkcxZEJySC1EZkQiIEdkcXJyPSJHcUhOYWZQZ0doTkcxZEJySCBqZlBXLW1mLUdkTnFQIiA+DQoJCQkJPD9EaEQgJERmRHRkcVBfQlVyID0gM0RfRGZEdGRxUF9ITlBXcl9HaE5HMWRCckgoJEhxY2ZtZldnKTsgPz4NCgkJCTwvdGQ+DQoJCTwvVUJvPg0KDQoJCTxVQm8gQlU9Ijw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/Pi1xZGQiIEdkcXJyPSJIcXhyLURxbU5kIj4NCgkJCTw/RGhEDQogICAgICAgICAgICAkbXFXTiA9ICggJEhxY2ZtZldnID09ICdOV05VQnFhcWRkTlBnJyApID8gJ0RmckhfR3FITmFmUGcnIDogJ0hxY19CbUR0SFsnIC4gJEhxY2ZtZldnIC4gJ10nOw0KICAgICAgICAgICAgTkdoZiAiPEJtRHRIIEhnRE49J2hCVVVObScgbXFXTj0neyRtcVdOfVtdJyBvcWR0Tj0neScgLz4iOyAvLyBBZGRmM3IgamZQIHFtIE5XREhnIEhOUFcgck5IIEhmIHhOIHJObUguIHkgQnIgcW0gQm1vcWRCVSBKTlBXIFlGIHFtVSAzQmRkIHhOIEJhbWZQTlUgeGcgTldESGcoKSBHaE5HMXIuDQogICAgICAgICAgICA/Pg0KCQkJPHRkIEJVPSI8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz5HaE5HMWRCckgiIFVxSHEtM0QtZEJySHI9ImRCckg6PD9EaEQgTkdoZiAkSHFjZm1mV2c/PiIgR2RxcnI9IkdxSE5hZlBnR2hORzFkQnJIIGpmUFctbWYtR2ROcVAiPg0KCQkJCTw/RGhEIDNEX0hOUFdyX0doTkcxZEJySCgkRGZySC0+WUYsIHFQUHFnKCAnSHFjZm1mV2cnID0+ICRIcWNmbWZXZywgJ0RmRHRkcVBfR3FIcicgPT4gJERmRHRkcVBfQlVyICkgKSA/Pg0KCQkJPC90ZD4NCgkJPC9VQm8+DQoJPD9EaEQgQmogKCBHdFBQTm1IX3RyTlBfR3FtKCRIcWMtPkdxRC0+TlVCSF9ITlBXcikgKSA6ID8+DQoJCQk8VUJvIEJVPSI8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz4tcVVVTlAiIEdkcXJyPSIzRC1oQlVVTm0tR2hCZFVQTm0iPg0KCQkJCTxoZT4NCgkJCQkJPHEgQlU9Ijw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/Pi1xVVUtSGZhYWROIiBoUE5qPSIjPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+LXFVVSIgR2RxcnI9ImhCVU4tQmotbWYta3IiPg0KCQkJCQkJPD9EaEQNCgkJCQkJCQkvKiBIUHFtcmRxSGZQcjogJXI6IHFVVSBtTjMgSHFjZm1mV2cgZHF4TmQgKi8NCgkJCQkJCQlEUEJtSGooIF9fKCAnKyAlcicgKSwgJEhxYy0+ZHF4TmRyLT5xVVVfbU4zX0JITlcgKTsNCgkJCQkJCT8+DQoJCQkJCTwvcT4NCgkJCQk8L2hlPg0KCQkJCTxEIEJVPSI8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz4tcVVVIiBHZHFycj0iR3FITmFmUGctcVVVIDNELWhCVVVObS1HaEJkVSI+DQoJCQkJCTxkcXhOZCBHZHFycj0ickdQTk5tLVBOcVVOUC1ITmNIIiBqZlA9Im1OMzw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/PiI+PD9EaEQgTkdoZiAkSHFjLT5kcXhOZHItPnFVVV9tTjNfQkhOVzsgPz48L2RxeE5kPg0KCQkJCQk8Qm1EdEggSGdETj0iSE5jSCIgbXFXTj0ibU4zPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+IiBCVT0ibU4zPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+IiBHZHFycj0iamZQVy1QTjB0QlBOVSBqZlBXLUJtRHRILUhCRCIgb3FkdE49Ijw/RGhEIE5HaGYgTnJHX3FISFAoICRIcWMtPmRxeE5kci0+bU4zX0JITldfbXFXTiApOyA/PiIgcVBCcS1QTjB0QlBOVT0iSFB0TiIvPg0KCQkJCQk8ZHF4TmQgR2RxcnI9InJHUE5ObS1QTnFVTlAtSE5jSCIgamZQPSJtTjM8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz5fRHFQTm1IIj4NCgkJCQkJCTw/RGhEIE5HaGYgJEhxYy0+ZHF4TmRyLT5EcVBObUhfQkhOV19HZmRmbTsgPz4NCgkJCQkJPC9kcXhOZD4NCgkJCQkJPD9EaEQgM0RfVVBmRFVmM21fR3FITmFmUEJOciggcVBQcWcoICdIcWNmbWZXZycgPT4gJEhxY2ZtZldnLCAnaEJVTl9OV0RIZycgPT4geSwgJ21xV04nID0+ICdtTjMnLiRIcWNmbWZXZy4nX0RxUE5tSCcsICdmUFVOUHhnJyA9PiAnbXFXTicsICdoQk5QcVBHaEJHcWQnID0+IEUsICdyaGYzX2ZESEJmbV9tZm1OJyA9PiAnJldVcXJoOyAnIC4gJEhxYy0+ZHF4TmRyLT5EcVBObUhfQkhOVyAuICcgJldVcXJoOycgKSApOyA/Pg0KCQkJCQk8Qm1EdEggSGdETj0ieHRISGZtIiBCVT0iPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+LXFVVS1ydHhXQkgiIFVxSHEtM0QtZEJySHI9InFVVTo8P0RoRCBOR2hmICRIcWNmbWZXZyA/PkdoTkcxZEJySDo8P0RoRCBOR2hmICRIcWNmbWZXZyA/Pi1xVVUiIEdkcXJyPSJ4dEhIZm0gR3FITmFmUGctcVVVLXJ0eFdCSCIgb3FkdE49Ijw/RGhEIE5HaGYgTnJHX3FISFAoICRIcWMtPmRxeE5kci0+cVVVX21OM19CSE5XICk7ID8+IiAvPg0KCQkJCQk8P0RoRCAzRF9tZm1HTl9qQk5kVSggJ3FVVS0nLiRIcWNmbWZXZywgJ19xa3FjX21mbUdOLXFVVS0nLiRIcWNmbWZXZywganFkck4gKTsgPz4NCgkJCQkJPHJEcW0gQlU9Ijw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/Pi1xa3FjLVBOckRmbXJOIj48L3JEcW0+DQoJCQkJPC9EPg0KCQkJPC9VQm8+DQoJCTw/RGhEIE5tVUJqOyA/Pg0KCTwvVUJvPg0KCTw/RGhEDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiBBVVUgUWZySCBKaHRXeG1xQmRyIHFtVSA3dHJIZlcgSmh0V3htcUJkciByQnBODQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyV05VQnFfcVVVX0hodFd4bXFCZF9ydEREZlBIKCkgew0KCUJqICggIUd0UFBObUhfSGhOV05fcnRERGZQSHIoICdEZnJILUhodFd4bXFCZHInICkpICB7DQpxVVVfSGhOV05fcnRERGZQSCggJ0RmckgtSGh0V3htcUJkcicsIHFQUHFnKCAnTnFyZ1dOVUJxYXFkZE5QZycgKSApOw0KcVVVX0JXcWFOX3JCcE4oICdOV2EtcVVXQm0tSGh0V3gnLCBseSwgbHksIEhQdE4gKTsgLy8gS3JOVSBCbSBIaE4gTnFyZ1dOVUJxIE5VQkggRHFhTg0KCX0NCn0NCnFVVV9xR0hCZm0oJ0JtQkgnLCAnTnFyV05VQnFfcVVVX0hodFd4bXFCZF9ydEREZlBIJyk7DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiBBVVUgR1BOVUJIciBCbSBxVVdCbSBEcWFODQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyZ1dOVUJxYXFkZE5QZ19xVVVfamZmSE5QX0dQTlVCSHIoICRITmNIICkgew0KCSRIID0gJyc7DQoJQmogKCBhTkhfRGZySF9IZ0ROKCkgPT09ICdOcXJnV05VQnFhcWRkTlBnJyApIHsNCgkJJEggLj0gIjxVQm8gQlU9XCJHUE5VQkhyXCIgckhnZE49XCJkQm1OLWhOQmFoSDogQ0NEYztcIj4iOw0KCQkkSCAuPSAiPEQ+WHFyZyBaTlVCcSBucWRkTlBnIERkdGFCbSBCciBHUE5xSE5VIHhnIDxxIGhQTmo9XCJoSEhEcjovLzMzMy5haGZwZ2RxeC5HZlcvXCIgSHFQYU5IPVwiX3hkcW0xXCI+bmhmcGd1cXgsIFltRzwvcT4uPC9EPiI7DQoJCSRIIC49ICI8RD5ZaiBnZnQgaHFvTiByZldOIHJ0RERmUEggQnJydE4sIFVmbSdIIGhOckJIcUhOIEhmIDxxIGhQTmo9XCJoSEhEcjovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL3J0eFdCSC1ydEREZlBILVBOMHROckhcIiBIcVBhTkg9XCJfeGRxbTFcIj4zUEJITiBoTlBOPC9xPi4gSmhOIG5oZnBndXF4IEhOcVcgM0JkZCB4TiBocUREZyBIZiBydEREZlBIIGdmdCBmbSBxbWcgQnJydE4uPC9EPiI7DQoJCSRIIC49ICI8L1VCbz4iOw0KCX1OZHJOew0KCQkkSCA9ICRITmNIOw0KCX0NCg0KCVBOSHRQbSAkSDsNCn0NCnFVVV9qQmRITlAoICdxVVdCbV9qZmZITlBfSE5jSCcsICdOcXJnV05VQnFhcWRkTlBnX3FVVV9qZmZITlBfR1BOVUJIcicgKTsNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBuTkggSGhOIERxSEhOUG1yIGRCckggDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyV05VQnFfRHFISE5QbXJfZHIoKSB7DQoJJERxSEhOUG1yID0gcVBQcWcoKTsNCgkkRHFISE5QbXJfZEJySCA9IHJHcW1VQlAoIFhabl9GWVYuIi9HcnIvQldxYU5yL0RxSEhOUG1yIiApOw0KCQ0KCWpmUE5xR2goICREcUhITlBtcl9kQnJIIHFyICREcUhITlBtX21xV04gKSB7DQoJCUJqICggJERxSEhOUG1fbXFXTiAhPSAnLicgJiYgJERxSEhOUG1fbXFXTiAhPSAnLi4nICkgew0KCQkJJERxSEhOUG1yW10gPSAkRHFISE5QbV9tcVdOOw0KCQl9DQoJfQ0KCVBOSHRQbSAkRHFISE5QbXI7CQ0KfQ0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IFZYWk1MWCBRWFZaQXVZczUNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5XYV9oQlVOX0ROUFdxZEJtMSgpIHsNCmFkZnhxZCAkRGZySF9IZ0ROOw0KQmooICREZnJIX0hnRE4gPT0gJ05xcmdXTlVCcWFxZGROUGcnICkgew0KTkdoZiAnPHJIZ2ROIEhnRE49IkhOY0gvR3JyIj4jTlVCSC1yZHRhLXhmY3tVQnJEZHFnOiBtZm1OO308L3JIZ2ROPic7DQp9DQp9DQpxVVVfcUdIQmZtKCdxVVdCbV9oTnFVJywgJ05XYV9oQlVOX0ROUFdxZEJtMScpOyANCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgVlhaTUxYIEpUWCBRQVZYc0ogaVlYdUYgaU1WIEpUWCA3SzJKTVogSlhSTXNNWjYNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX1BOV2ZvTl9HcUhfRHFQTm1IKCl7DQogICAgYWRmeHFkICRHdFBQTm1IX3JHUE5ObTsNCiAgICByM0JIR2ggKCAkR3RQUE5tSF9yR1BOTm0tPkJVICkgew0KICAgICAgICBHcXJOICdOVUJILU5XTlVCcWFxZGROUGcnOg0KICAgICAgICAgICAgDQoJCQk/Pg0KCQkJPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0KICAgICAgICAgICAga3p0TlBnKFVmR3RXTm1IKS5QTnFVZygganRtR0hCZm0oJCkgew0KICAgICAgICAgICAgICAgIGt6dE5QZygnI0RxUE5tSCcpLkRxUE5tSHIoJy5qZlBXLWpCTmRVJykuUE5XZm9OKCk7DQoJCQkJa3p0TlBnKCcjSHFhLXJkdGEsICNIcWEtVU5yR1BCREhCZm0nKS5EcVBObUhyKCcuamZQVy1qQk5kVScpLmhCVU4oKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgPC9yR1BCREg+DQogICAgICAgICAgICA8P0RoRA0KCQkJDQogICAgICAgICAgICB4UE5xMTsNCiAgICB9DQp9DQpxVVVfcUdIQmZtKCdxVVdCbV9qZmZITlAtTlVCSC1IcWFyLkRoRCcsICdOV2FfUE5XZm9OX0dxSF9EcVBObUgnKTsNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBUWFIgSGYgVm45DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyZ1dOVUJxX2hOY0NQYXgoJGhOYykgew0KICAgJGhOYyA9IHJIUF9QTkRkcUdOKCIjIiwgIiIsICRoTmMpOw0KDQogICBCaihySFBkTm0oJGhOYykgPT0gYikgew0KICAgICAgJFAgPSBoTmNVTkcocnR4ckhQKCRoTmMseSxFKS5ydHhySFAoJGhOYyx5LEUpKTsNCiAgICAgICRhID0gaE5jVU5HKHJ0eHJIUCgkaE5jLEUsRSkucnR4ckhQKCRoTmMsRSxFKSk7DQogICAgICAkeCA9IGhOY1VORyhydHhySFAoJGhOYyxDLEUpLnJ0eHJIUCgkaE5jLEMsRSkpOw0KICAgfSBOZHJOIHsNCiAgICAgICRQID0gaE5jVU5HKHJ0eHJIUCgkaE5jLHksQykpOw0KICAgICAgJGEgPSBoTmNVTkcocnR4ckhQKCRoTmMsQyxDKSk7DQogICAgICAkeCA9IGhOY1VORyhydHhySFAoJGhOYyxlLEMpKTsNCiAgIH0NCiAgICRQYXggPSBxUFBxZygkUCwgJGEsICR4KTsNCiAgIC8vUE5IdFBtIEJXRGRmVU4oIiwiLCAkUGF4KTsgLy8gUE5IdFBtciBIaE4gUGF4IG9xZHROciByTkRxUHFITlUgeGcgR2ZXV3FyDQogICBQTkh0UG0gQldEZGZVTigiLCIsICRQYXgpOyAvLyBQTkh0UG1yIHFtIHFQUHFnIDNCSGggSGhOIFBheCBvcWR0TnINCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBQTkRkcUdOX05jSE5tckJmbQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9QTkRkcUdOX05jSE5tckJmbSgkakJkTm1xV04pIHsNCgkkTmNIID0gRHFIaEJtamYoJGpCZE5tcVdOLCBRQUpUWXNpTV9YUkpYczJZTXMpOw0KCSRtTjNfTmNITm1yQmZtID0gJ05XYUdvUC0nLiROY0g7DQoJUE5IdFBtIHJ0eHJIUF9QTkRkcUdOKCRqQmRObXFXTiAsICRtTjNfTmNITm1yQmZtLCBySFBQRGZyKCRqQmRObXFXTiAsICcuJykgKyBFKTsNCiAgICAvL1BOSHRQbSBEUE5hX1BORGRxR04oJy9cLi4rJC8nLCAnLicgLiAkbU4zX05jSE5tckJmbSwgJGpCZE5tcVdOKTsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBuTkggcUhIcUdoV05tSCBCV3FhTiBCVSANCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfYU5IX3FISHFHaFdObUhfQlVfalBmV19yUEcgKCRkQm0xKSB7DQogICAgYWRmeHFkICQzRFV4Ow0KICAgICAgICAkZEJtMSA9IERQTmFfUE5EZHFHTignLy1cVStjXFUrKD89XC4oa0RhfGtETmF8RG1hfGFCaikkKS9CJywgJycsICRkQm0xKTsNCiAgICAgICAgUE5IdFBtICQzRFV4LT5hTkhfb3FQKCIyWHVYN0ogWUYgaVZNWiB7JDNEVXgtPkRmckhyfSA4VFhWWCBhdEJVPSckZEJtMSciKTsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgNzIyIDdmV0RQTnJyZlAgQHJCbUdOIEUuUy5FLmwNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfR3JyX0dmV0RQTnJyKCAkV0JtQmpnICkgew0KCS8qIFBOV2ZvTiBHZldXTm1IciAqLw0KICAgIAkkV0JtQmpnID0gRFBOYV9QTkRkcUdOKCAnIS9cKlteKl0qXCorKFteL11bXipdKlwqKykqLyEnLCAnJywgJFdCbUJqZyApOw0KDQogICAgICAgIC8qIFBOV2ZvTiBIcXhyLCByRHFHTnIsIG1OM2RCbU5yLCBOSEcuICovDQogICAgCSRXQm1CamcgPSBySFBfUE5EZHFHTiggcVBQcWcoIlxQXG0iLCAiXFAiLCAiXG0iLCAiXEgiLCAnICAnLCAnICAgICcsICcgICAgJyksICcnLCAkV0JtQmpnICk7DQogICAgCQkNCiAgICAgICAgUE5IdFBtICRXQm1Camc7DQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIEkyIDdmV0RQTnJyZlAgQHJCbUdOIEUuUy5FLmwNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2Ffa3JfR2ZXRFBOcnIoICRXQm1CamcgKSB7DQoJDQokUE5EZHFHTiA9IHFQUHFnKA0KICAgICcjXCcoW15cbVwnXSo/KS9cKihbXlxtXCddKilcJyMnID0+ICInXEUvJytcJ1wnKycqXEMnIiwgLy8gUE5XZm9OIEdmV1dObUhyIGpQZlcgJyBySFBCbWFyDQogICAgJyNcIihbXlxtXCJdKj8pL1wqKFteXG1cIl0qKVwiIycgPT4gJyJcRS8iK1wnXCcrIipcQyInLCAvLyBQTldmb04gR2ZXV05tSHIgalBmVyAiIHJIUEJtYXINCiAgICAnIy9cKi4qP1wqLyNyJyAgICAgICAgICAgID0+ICIiLCAgICAgIC8vIHJIUEJEIDcgckhnZE4gR2ZXV05tSHINCiAgICAnI1tcUFxtXSsjJyAgICAgICAgICAgICAgID0+ICJcbSIsICAgIC8vIFBOV2ZvTiB4ZHFtMSBkQm1OciBxbVUgXFAncg0KICAgICcjXG0oWyBcSF0qLy8uKj9cbSkqI3InICAgPT4gIlxtIiwgICAgLy8gckhQQkQgZEJtTiBHZldXTm1IciAoM2hmZE4gZEJtTiBmbWRnKQ0KICAgICcjKFteXFxdKS8vKFteXCciXG1dKilcbSNyJyA9PiAiXFxFXG0iLCAgICAgICAgICAgDQogICAgJyNcbVxyKyMnICAgICAgICAgICAgICAgICA9PiAiXG0iLCAgICAvLyBySFBCRCBOY0dOcnIgM2hCSE5yRHFHTg0KICAgICcjXHIrXG0jJyAgICAgICAgICAgICAgICAgPT4gIlxtIiwgICAgLy8gckhQQkQgTmNHTnJyIDNoQkhOckRxR04NCiAgICAnIygvL1teXG1dKlxtKSNyJyAgICAgICAgID0+ICJcXEVcbSIsIC8vIE5jSFBxIGRCbU4gak5OVSBxakhOUCBxbWcgR2ZXV05tSHIgZE5qSA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEJXRGZQSHFtSCBhQm9ObSBkcUhOUCBQTkRkcUdOV05tSHIpDQogICAgJyMvKFtcJyJdKVwrXCdcJ1wrKFtcJyJdKVwqIycgPT4gIi8qIiAvLyBQTnJIZlBOIEdmV1dObUhyIEJtIHJIUEJtYXINCiAgKTsNCg0KICAkck5xUEdoID0gcVBQcWdfMU5nciggJFBORGRxR04gKTsNCiAgJHJHUEJESCA9IERQTmFfUE5EZHFHTiggJHJOcVBHaCwgJFBORGRxR04sICRXQm1CamcgKTsNCg0KICAkUE5EZHFHTiA9IHFQUHFnKA0KICAgICImJlxtIiA9PiAiJiYiLA0KICAgICJ8fFxtIiA9PiAifHwiLA0KICAgICIoXG0iICA9PiAiKCIsDQogICAgIilcbSIgID0+ICIpIiwNCiAgICAiW1xtIiAgPT4gIlsiLA0KICAgICJdXG0iICA9PiAiXSIsDQogICAgIitcbSIgID0+ICIrIiwNCiAgICAiLFxtIiAgPT4gIiwiLA0KICAgICI/XG0iICA9PiAiPyIsDQogICAgIjpcbSIgID0+ICI6IiwNCiAgICAiO1xtIiAgPT4gIjsiLA0KICAgICJ7XG0iICA9PiAieyIsDQovLyAgIn1cbSIgID0+ICJ9IiwgKHhOR3F0ck4gWSBqZlBhTkggSGYgRHRIIHJOV0JHZmRmbXIgcWpITlAganRtR0hCZm0gcXJyQmFtV05tSHIpDQogICAgIlxtXSIgID0+ICJdIiwNCiAgICAiXG0pIiAgPT4gIikiLA0KICAgICJcbX0iICA9PiAifSIsDQogICAgIlxtXG0iID0+ICJcbSINCiAgKTsNCg0KICAkck5xUEdoID0gcVBQcWdfMU5nciggJFBORGRxR04gKTsNCiAgJHJHUEJESCA9IHJIUF9QTkRkcUdOKCAkck5xUEdoLCAkUE5EZHFHTiwgJHJHUEJESCApOw0KDQogIFBOSHRQbSBIUEJXKCAkckdQQkRIICk7DQoNCn0NCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBpVk1zSlhzRiBBN0pZTEFKWCBzTUpZaVk3QUpZTXMNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5XYV9qUGZtSF9kQkdObXJOX21mSEJqZygpIHsNCgkNCgkJJE5XYWpQZm1IbWZIQmpnID0gJzxVQm8gR2RxcnI9Ik5xcmdXTlVCcV9HTm1ITlAiPjxVQm8gR2RxcnI9Ik5XYWRCR05tck5CbWoiPlFkTnFyTiBxR0hCb3FITiA8ckhQZm1hPicuWFpuX1lKWFpfc0FaWC4nPC9ySFBmbWE+IGRCR05tck4gMU5nLiA2ZnQgR3FtIHFHSEJvcUhOIDxxIGhQTmo9IicucVVXQm1fdFBkKCAnTlVCSC5EaEQ/RGZySF9IZ0ROPU5xcmdXTlVCcWFxZGROUGcmRHFhTj1OV2EtcUdIQm9xSEJmbScgKS4nIj4nLl9fKCdoTlBOJywgJ05xcldOVUJxJykuJzwvcT48L1VCbz48L1VCbz4nOw0KCQkJDQoJTkdoZiAkTldhalBmbUhtZkhCamc7DQp9DQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgaVZNc0pYc0YgaU1NOU1SIHNNSllpWTdBSllNcw0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTldhX2pQZm1IX2pmZnhmY19tZkhCamcoKSB7DQoJDQoJCSROV2FqUGZtSGp4ID0gJzxVQm8gR2RxcnI9Ik5xcmdXTlVCcV9HTm1ITlAiPjxVQm8gR2RxcnI9Ik5XYUJtamZ4ZmMiPmlmZjlmYyBtZkggcUdIQm9OISA2ZnQgaHFvTiBIZiBEdFBHaHFyTiByTkRxUHFITmRnIDxxIGhQTmo9ImhISEQ6Ly9hZmYuYWQvZ1J0SXpBIiBIcVBhTkg9Il94ZHFtMSI+Jy5fXygnaE5QTicsICdOcXJXTlVCcScpLic8L3E+LCBmUCB0ck4gaWZmOWZjIGlQTk4gb05QckJmbSA8cSBoUE5qPSJoSEhEcjovLzNmUFVEUE5yci5mUGEvRGR0YUJtci9qZmZ4ZmMtQldxYU4tZEJhaEh4ZmMvIiBIcVBhTkg9Il94ZHFtMSI+Jy5fXygnaE5QTicsICdOcXJXTlVCcScpLic8L3E+Ljx4UD51TnFQbSBXZlBOIHF4ZnRIIGlmZjlmYyBkQmFoSHhmYyBIZ0ROIDxxIGhQTmo9ImhISERyOi8vYWhmcGdkcXguR2ZXL0RkdGFCbXIvTnFyZy1XTlVCcS1hcWRkTlBnLURQZi9VTldmL3hOckgtYXFkZE5QZy1kQmFoSHhmY05yI2RCYWhIeGZjRFBOV0J0VyIgSHFQYU5IPSJfeGRxbTEiPicuX18oJ2hOUE4nLCAnTnFyV05VQnEnKS4nPC9xPjwvVUJvPjwvVUJvPic7DQoJCQkNCglOR2hmICROV2FqUGZtSGp4Ow0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIFlXcWFOIFZOckJwTiAoIEFyRE5HSCBWcUhCZiApDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyZ1dOVUJxX0JXYVBOckJwTigkQldhLCAkZEJXQkgsICRCclBOciwgJEJXMywgJEJXaCkgew0KCQ0KCS8qQmogKCBySFBEZnIoICRCV2EsICRfMlhWTFhWWydUSkpRX1RNMkonXSApID09PSBpQXUyWCApIHsNCgkJJEJXYT0gImhISEQ6Ly8iLiRfMlhWTFhWWydUSkpRX1RNMkonXS4kQldhOw0KCQl9DQoJCU5kck4gew0KCQkJJEJXYT0gJEJXYTsNCgkJCX0qLw0KCQ0KCUJqICggJEJXYSA9PSAnJyApIHsNCgkJJEJXYSA9IERkdGFCbXJfdFBkKCAnQldxYU5yL21mLUJXcWFOLXFvcUJkcXhkTi5rRGEnICwgVUJQbXFXTihfX2lZdVhfXykgKSA7DQoJfQ0KCQlOZHJOIHsNCgkJCSRCV2EgPSAkQldhOw0KCQl9CQ0KCQ0KCUJqICggJEJyUE5yID09ICdmbScgKSB7DQoJCUJqICggJEJXMyA+ICRkQldCSCApIHsNCgkJCSRITldEQldhUHFIQmYgPSAkQldoIC8gJEJXMzsNCgkJCSRqQmggPSAoQm1IKSgkSE5XREJXYVBxSEJmICogJGRCV0JIKTsgLy8gakJtcWQgQldxYU4gaE5CYWhIDQoJCQkkakIzID0gJGRCV0JIOyAvLyBqQmNOVSBCV3FhTiAzQlVIaA0KCQkJDQoJCQkkcWRkQldhVXFIcSA9IHFQUHFnKCBOV2FfSGh0V3hfclBHKCAkQldhLCAkakIzLCAkakJoLCAkQlczLCAkQldoKSwgJGpCMywgJGpCaCApOw0KCQkJDQoJCQl9DQoJCU5kck4gew0KCQkJJHFkZEJXYVVxSHEgPSBxUFBxZyggJEJXYSwgJEJXMywgJEJXaCApOw0KCQkJfQkJDQoJCX0NCglOZHJOIHsgJHFkZEJXYVVxSHEgPSBxUFBxZyggJEJXYSwgJEJXMywgJEJXaCApOwkNCgl9DQpQTkh0UG0gQldEZGZVTigiLCIsICRxZGRCV2FVcUhxKTsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBZV3FhTiBWTnJCcE4gKCBBckROR0ggVnFIQmYgKSBBSUFSDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyZ1dOVUJxX0JXYVBOckJwTl9xa3FjKCkgew0KCQ0KCUdoTkcxX3FrcWNfUE5qTlBOUCggJ05xcmdXTlVCcS1IaHRXeCcsICdyTkd0UEJIZycgKTsNCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydCV2F0UGQnXSApIHx8ICFCcnJOSCggJF9RTTJKWydkQldCSE5QJ10gKSB8fCAkX1FNMkpbJ0JXYXRQZCddID09ICcnIHx8ICRfUU0ySlsnZEJXQkhOUCddID09ICcnICkgew0KCQlOR2hmICc8RD5Ba3FjIFBOMHROckgganFCZE5VLCBEZE5xck4gUE5qUE5yaCBnZnRQIHhQZjNyTlAgM0JtVWYzLjwvRD4nOw0KCQlVQk47DQoJCX0NCgkJTmRyTiB7DQoJCQkNCgkJJEJXYXRQZCA9ICRfUU0ySlsnQldhdFBkJ107DQoJCSRkQldCSE5QID0gJF9RTTJKWydkQldCSE5QJ107DQoJCSRxSEhCVSA9IDNEX2FOSF9xSEhxR2hXTm1IX0JXcWFOX3JQRyggTldhX2FOSF9xSEhxR2hXTm1IX0JVX2pQZldfclBHKCAkQldhdFBkICksICdqdGRkJyApOw0KCQ0KCQkvKkJqICggckhQRGZyKCAkQldhdFBkLCAkXzJYVkxYVlsnVEpKUV9UTTJKJ10gKSA9PT0gaUF1MlggKSB7DQoJCQkkQldhdFBkID0gImhISEQ6Ly8iLiRfMlhWTFhWWydUSkpRX1RNMkonXS4kQldhdFBkOw0KCQkJfQ0KCQkJTmRyTiB7DQoJCQkJJEJXYXRQZCA9ICRCV2F0UGQ7DQoJCQkJfSovDQoJCQkJDQoJCQkJJEhXREJXYVBxSEJmID0gJHFISEJVW0NdIC8gJHFISEJVW0VdOyAvL2FOSCBCV3FhTiBxckRORyBQcUhCZg0KDQoJCUJqICggJHFISEJVW0VdID4gJGRCV0JITlAgKSB7DQoJCQkkSFdEaCA9IChCbUgpKCRIV0RCV2FQcUhCZiAqICRkQldCSE5QKTsgLy8gakJtcWQgQldxYU4gaE5CYWhIDQoJCQkkSFdEMyA9ICRkQldCSE5QOyAvLyBqQmNOVSBCV3FhTiAzQlVIaA0KCQkJJHFkZEJXYVVxSHEgPSBxUFBxZyggTldhX0hodFd4X3JQRyggJEJXYXRQZCwgJEhXRDMsICRIV0RoLCAkcUhIQlVbRV0sICRxSEhCVVtDXSksICRIV0QzLCAkSFdEaCApOw0KCQkJTkdoZiBCV0RkZlVOKCIsIiwgJHFkZEJXYVVxSHEpOw0KCQkJVUJOOw0KCQkJfQ0KCQlOZHJOIHsNCgkJCSRqQm1CV2F0UGQgPSAkQldhdFBkOw0KCQkJJHFkZEJXYVVxSHEgPSBxUFBxZyggJGpCbUJXYXRQZCwgJHFISEJVW0VdLCAkcUhIQlVbQ10gKTsNCgkJCU5HaGYgQldEZGZVTigiLCIsICRxZGRCV2FVcUhxKTsNCgkJCVVCTjsNCgkJCX0JCQ0KCQl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OcXJnV05VQnFfQldhUE5yQnBOX3FrcWMnLCAnTnFyZ1dOVUJxX0JXYVBOckJwTl9xa3FjJyApOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIEhodFd4bXFCZCByZnRQR04gcjNCSEdoID0gSkJXSGh0V3ggZlAgTnFyZ1dOVUJxX1BOckJwTlANCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfSGh0V3hfclBHKCAkQldhX3JQRywgJDNCVUhoLCAkaE5CYWhILCAkYXJwTkUsICRhcnBOQywgJEdXZlVOID0gJ0cnLCAkcEdyID0gJ0UnLCAkR0cgPSBtdGRkICkgewkNCg0KLyoJQDJCbUdOIEUuUy55LmIgKi8NCglCaighJEJXYV9yUEcpIHtQTkh0UG0ganFkck47fQ0KCQ0KCUJqICggJEdHICkgeyAvKglAMkJtR04gRS53LnkuYiAqLw0KCQkNCgkJJEdHID0gJyZHRz0nLnJIUF9QTkRkcUdOKCcjJywgJycsICRHRykuJyc7DQoJCQ0KCQl9IE5kck4gew0KCQkJDQoJCQkkR0cgPSBtdGRkOw0KCQkJDQoJCQl9CQ0KCQ0KCUJqKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fSEhodFd4JyApID09ICdFJyApIHsNCgkJJE5XYV9IaHRXeF90UGQgPSBYWm5fSlRLWjlfaVl1WCAuICI/clBHPSIgLiAkQldhX3JQRyAuICImaD0iIC4gJGhOQmFoSCAuICImMz0iIC4gJDNCVUhoIC4gIiZwRz0iLiRwR3IuIiYwPUV5eSZxPSIuJEdXZlVOLiIiLiRHRy4iIjsNCgl9IE5kck4gew0KCQlCaiAoICRhcnBORSAhPSAneScgJiYgJGFycE5DICE9ICd5JyApIHsNCgkJCSRhckJwTkUgPSAkYXJwTkU7DQoJCQkkYXJCcE5DID0gJGFycE5DOw0KCQkJfQ0KCQkJTmRyTiB7DQoJCQkJJGFkZnhxZHJCcE4gPSAzRF9hTkhfcUhIcUdoV05tSF9CV3FhTl9yUEcoIE5XYV9hTkhfcUhIcUdoV05tSF9CVV9qUGZXX3JQRyggJEJXYV9yUEcgKSwgJ2p0ZGQnICk7DQoJCQkJJGFyQnBORSA9ICRhZGZ4cWRyQnBOW0VdOw0KCQkJCSRhckJwTkMgPSAkYWRmeHFkckJwTltDXTsNCgkJCQl9DQoJCQkJDQoJCQkJJE5XYV9IaHRXeF90UGQgPSBOcXJnV05VQnFfUE5yQnBOUCggJEJXYV9yUEcsICRhckJwTkUsICRhckJwTkMsICQzQlVIaCwgJGhOQmFoSCwgSFB0TiwgJEdXZlVOLCBqcWRyTiApOw0KCX0NCgkNCglQTkh0UG0gJE5XYV9IaHRXeF90UGQ7CQ0KDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgbk5IIDhRIFltamYNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJXTlVCcV9hTkhfM0RCbWpmKCkgew0KCQ0KLy8gbk5IIDJCSE4gS1Z1CQ0KJGFOSDNEQm1qZiA9IHFQUHFnKCk7DQokYU5IM0RCbWpmW3ldID0gIi0gMkJITiBLVnUgOiAiIC5hTkhfckJITl90UGQoKTsNCg0KLy8gbk5IIFp0ZEhCckJITiBySHFIdHINCkJqICggQnJfV3RkSEJyQkhOKCkgKSB7ICRhTkgzREJtamZbRV0gPSAnLSA4USBadGRIQnJCSE4gOiA2WDInOyB9IE5kck4geyAkYU5IM0RCbWpmW0VdID0gJy0gOFEgWnRkSEJyQkhOIDogc00nOyB9DQoNCmFkZnhxZCAkM0Rfb05QckJmbSwgJE5XYVdOV2ZQZzsJCQ0KTkdoZiAiLSA4USBMTlByQmZtIDogIi4kM0Rfb05QckJmbS4iXG0iOwkNCk5HaGYgJGFOSDNEQm1qZlt5XS4iXG0iOw0KTkdoZiAkYU5IM0RCbWpmW0VdLiJcbSI7CQ0KTkdoZiAkYU5IM0RCbWpmW0NdLiJcbSI7DQpOR2hmIEdoTkcxR3RQZHFtVXRQZGpmRE5tKCk7DQpOR2hmICItIFpOV2ZQZyB1QldCSCA6ICIuJE5XYVdOV2ZQZy4iXG0iOw0KJEhoTldOX21xV04gPSAzRF9hTkhfSGhOV04oKTsNCk5HaGYgIi0gQUdIQm9OIEpoTldOIDogIi4kSGhOV05fbXFXTi0+YU5IKCdzcVdOJykuIlxtIjsNCk5HaGYgIi0gQUdIQm9OIFFkdGFCbXIgOiBcbSI7DQoNCi8vIG5OSCBBR0hCb04gUWR0YUJtDQpCaiAoIEJyX1d0ZEhCckJITigpICkgeyANCgkkSGhOX0RkdGFyID0gYU5IX3JCSE5fZkRIQmZtKCdxR0hCb05fckJITjNCVU5fRGR0YUJtcicpOw0KCWpmUE5xR2goJEhoTl9EZHRhciBxciAkMU5nID0+ICRvcWR0Tikgew0KCQkkckhQQm1hID0gTmNEZGZVTignLycsJDFOZyk7DQoJCSRySFBCbWFbeV0gPSBySFBfUE5EZHFHTiggIi0iLCIgIiwkckhQQm1hW3ldICk7DQogICAgICAgIE5HaGYgIiAmbXhyRDsmbXhyRDsmbXhyRDsmbXhyRDsiLnRHM2ZQVXIoICRySFBCbWFbeV0gKSAuIlxtIjsNCgl9DQp9IE5kck4gew0KCSRIaE5fRGR0YXIgPSBhTkhfZkRIQmZtKCdxR0hCb05fRGR0YUJtcicpOw0KCWpmUE5xR2goJEhoTl9EZHRhciBxciAkMU5nID0+ICRvcWR0Tikgew0KCQkkckhQQm1hID0gTmNEZGZVTignLycsJG9xZHROKTsNCgkJJHJIUEJtYVt5XSA9IHJIUF9QTkRkcUdOKCAiLSIsIiAiLCRySFBCbWFbeV0gKTsNCiAgICAgICAgTkdoZiAiICZteHJEOyZteHJEOyZteHJEOyZteHJEOyIudEczZlBVciggJHJIUEJtYVt5XSApIC4iXG0iOw0KCQl9DQoJfQ0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIDdoTkcxIDdLVnUgcW1VIHFkZGYzX3RQZF9qZkRObQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIEdoTkcxR3RQZHFtVXRQZGpmRE5tKCkgew0KCQ0KCSAgQmooIGp0bUdIQmZtX05jQnJIcignR3RQZF9vTlByQmZtJykgKSB7DQoJCSAgJEJyR3RQZCA9ICctIFFUUSA3S1Z1IDogQUdIQm9OJzsNCgkJICB9DQogICAgCU5kck4gew0KCQkgJEJyR3RQZCA9ICctIFFUUSA3S1Z1IDogc01KIEFHSEJvTic7DQoJICAgICB9DQogICAgDQoJDQogICAgIEJqKCBAQm1CX2FOSCgncWRkZjNfdFBkX2pmRE5tJykgKSB7DQoJCSAkQnJxZGRmMyA9ICctIFFUUSBBZGRmM190UGRfamZETm0gOiBBR0hCb04nOw0KCQkgfSBOZHJOIHsNCgkJCSAgJEJycWRkZjMgPSAnLSBRVFEgQWRkZjNfdFBkX2pmRE5tIDogc01KIEFHSEJvTic7DQoJCQkgIH0NCgkNCgkNCk5HaGYgJEJyR3RQZC4iXG0iOwkNCk5HaGYgJEJycWRkZjMuIlxtIjsJDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgbk5IIFFkdGFCbSBMTlByQmZtIChAUE5IdFBtIHJIUEJtYSBRZHRhQm0gb05QckJmbSkNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJnV05VQnFfYU5IX0RkdGFCbV9vTlByQmZtKCkgew0KICAgICREZHRhQm1fVXFIcSA9IGFOSF9EZHRhQm1fVXFIcSggWFpuX0ZZViAuICcvTnFyZy1XTlVCcS1hcWRkTlBnLVVOby5EaEQnICk7DQogICAgJERkdGFCbV9vTlByQmZtID0gJERkdGFCbV9VcUhxWydMTlByQmZtJ107DQogICAgUE5IdFBtICREZHRhQm1fb05QckJmbTsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICA3aE5HMSBiUFUgRHFQSGcgaWZmeGZjIERkdGFCbQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcmdXTlVCcV9CcmpmZnhmYygpIHsNCglCaihHZHFycl9OY0JySHIoJ2pmZnhmY0xDJykgfHwgR2RxcnJfTmNCckhyKCdqZmZ4ZmMnKSB8fCBHZHFycl9OY0JySHIoJ2lmZnhmY19pUE5OJykpew0KCQkkQnJqZmZ4ZmMgPSAncUdIQm9OJzsNCgkJUE5IdFBtICRCcmpmZnhmYzsJDQoJfQ0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIDJkdGEgSGYgc3FXTg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9yZHRhX0hmX21xV04oJHJkdGEpIHsNCgkkb3FkciA9IHFQUHFnKA0KCQkJCSI3Tm1ITlAiPT4gIkciLA0KCQkJCSJKZkQiPT4gIkhmRCIsDQoJCQkJIkpmRCBWQmFoSCI9PiAiSFAiLA0KCQkJCSJKZkQgdU5qSCI9PiAiSGQiLA0KCQkJCSI5ZkhIZlciPT4gIngiLA0KCQkJCSI5ZkhIZlcgVkJhaEgiPT4gInhQIiwNCgkJCQkiOWZISGZXIHVOakgiPT4gInhkIiwNCgkJCQkiVkJhaEgiPT4gIlAiLA0KCQkJCSJ1TmpIIj0+ICJkIiwJCQkJDQoJCQkJIlhabiB1QmFoSHhmYyAoIEZOanF0ZEggKSI9PiAiTldhZHgiLA0KCQkJCSJ1QmFoSHhmYyBDIj0+ICJkeEMiLA0KCQkJCSJpcW1HZzlmYyBDIj0+ICJqeEMiLA0KCQkJCSJpcW1HZzlmYyBpUE5OIj0+ICJqeGpQTk4iLA0KCQkJCSI3ZmRmUDlmYyI9PiAiR3giLA0KCQkJCSJRUE5ISGdRaGZIZiI9PiAiREQiLA0KCQkJCSJpZmY5ZmMiPT4gImpmZnhjIiwNCgkJCQkiUWhmSGYyM0JETiI9PiAiRHIiLA0KCQkJCSJRaGZIZjlmYyI9PiAiRHhmYyIsDQoJCQkJIjhmUFVEUE5yciBKaEJHMTlmYyIgPT4gIjNESHgiLA0KCQkJCSIySGdkTiB5RSAoIEZOanF0ZEggKSI9PiAiaGZvTlBmbU4iLA0KCQkJCSIySGdkTiB5QyI9PiAiTldhb0JOMy1IM2YiLA0KCQkJCSIySGdkTiB5YiI9PiAiTldhb0JOMy1IaFBOTiIsDQoJCQkJIjJIZ2ROIHllIj0+ICJOV2FvQk4zLWpmdFAiLA0KCQkJCSJWTnJCcE4gSGYgaUJIIHJETkdCakJOVSBVQldObXJCZm1yIChtZiBHUGZEREJtYSkiPT4gInkiLA0KCQkJCSI3UGZEIHFtVSBQTnJCcE4gSGYgeE5ySCBqQkggSGhOIFVCV05tckJmbXIgKFVOanF0ZEggeE5ocW9CZnRQKSI9PiAiRSIsDQoJCQkJIlZOckJwTiBEUGZEZlBIQmZtcWRkZyBIZiBqQkggTm1IQlBOIEJXcWFOIEJtSGYgckROR0JqQk5VIFVCV05tckJmbXIiPT4gIkMiLAkJCQ0KCQkJCSJWTnJCcE4gRFBmRGZQSEJmbXFkZGcgcVVrdHJIQm1hIHJCcE4gZmogckdxZE5VIEJXcWFOIj0+ICJiIgkJCQkJCQkNCgkJCQkJCQkJCQkJDQoJKTsNCglQTkh0UG0gJG9xZHJbJHJkdGFdOwkNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBWcW1VZlcgMkhQQm1hDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhVnFtVWZXMkhQQm1hKCRkTm1hSGgpIHsNCiAgICAgICAgJGZQQmFCbXFkX3JIUEJtYSA9IHFQUHFnX1dOUGFOKFBxbWFOKCdxJywncCcpLCBQcW1hTignQScsICd2JykpOw0KICAgICAgICAkZlBCYUJtcWRfckhQQm1hID0gQldEZGZVTignJywgJGZQQmFCbXFkX3JIUEJtYSk7DQogICAgICAgIFBOSHRQbSBydHhySFAockhQX3JodGpqZE4ockhQSGZkZjNOUCggJGZQQmFCbXFkX3JIUEJtYSkgKSwgeSwgJGRObWFIaCk7DQogICAgfQ0KCQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBYbXF4ZE4gMmZQSEJtYSBmaiBIaE4gWk5VQnEgDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyV05VQnFfR1BOcUhOX05xcmdXTlVCcV9yZlBIX0RxYU4oKSB7DQogICAgJE5xcldOVUJxX3JmUEhfRHFhTiA9IHFVVV9ydHhXTm10X0RxYU4oJ05VQkguRGhEP0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJywgJzJmUEhOUCcsIF9fKCcyZlBITlAnLCAnTnFyV05VQnEnKSwgJ05VQkhfRGZySHInLCAnTnFyZ1dOVUJxX2ZQVU5QJywgJ05xcldOVUJxX05xcmdXTlVCcV9yZlBIJyk7DQogICAgDQogICAgcVVVX3FHSEJmbSgncVVXQm1fRFBCbUhfckhnZE5yLScgLiAkTnFyV05VQnFfcmZQSF9EcWFOLCAnTnFyV05VQnFfRFBCbUhfcmZQSF9ySGdkTnInKTsNCiAgICBxVVVfcUdIQmZtKCdxVVdCbV9EUEJtSF9yR1BCREhyLScgLiAkTnFyV05VQnFfcmZQSF9EcWFOLCAnTnFyV05VQnFfRFBCbUhfcmZQSF9yR1BCREhyJyk7DQp9DQoNCmp0bUdIQmZtIE5xcldOVUJxX05xcmdXTlVCcV9yZlBIKCkgew0KICAgICROcXJnV05VQnFyID0gbU4zIDhRX3p0TlBnKCdEZnJIX0hnRE49TnFyZ1dOVUJxYXFkZE5QZyZEZnJIcl9ETlBfRHFhTj0tRSZmUFVOUHhnPVdObXRfZlBVTlAmZlBVTlA9QTI3Jyk7IA0KCUJqICggICROcXJnV05VQnFyLT5ocW9OX0RmckhyKCkgKSA6DQoJPz4NCiAgICA8VUJvIEdkcXJyPSIzUHFEIj4NCiAgICAgICAgPFVCbyBCVT0iQkdmbS1OVUJIIiBHZHFycj0iQkdmbWJDIEJHZm1iQy1EZnJIci1OcXJnV05VQnEiPjx4UCAvPjwvVUJvPg0KICAgICAgICA8aEM+PD9EaEQgX04oJzJmUEhOUCcsICdOcXJXTlVCcScpOyA/PjwvaEM+DQogICAgICAgIDxEPjw/RGhEIF9OKCcyQldEZGcgVVBxYSBIaE4gWk5VQnEgdEQgZlAgVWYzbSBxbVUgSGhOZyAzQmRkIHhOIHJxb05VIEJtIEhocUggZlBVTlAuIFpOVUJxIHFIIEhoTiBIZkQgM0JkZCBxREROcVAgakJQckguJywgJ05xcldOVUJxJyk7ID8+PC9EPg0KDQoJCTxVQm8gR2RxcnI9IldOSHF4ZmMtaGZkVU5QIj4NCgkJCTxVQm8gR2RxcnI9IkRmckh4ZmMiPg0KCQkJCTxoYj48P0RoRCBfTiggJzJmUEggWk5VQnEnLCAnTnFyV05VQnEnICk7ID8+OjwvaGI+DQoNCg0KICAgICAgICA8dGQgQlU9Ik5xcmdXTlVCcV9kQnJIIiBySGdkTj0iRHFVVUJtYS1kTmpIOkV5RGMgIUJXRGZQSHFtSDsiPg0KICAgICAgICAgICAgPD9EaEQgM2hCZE4oICROcXJnV05VQnFyLT5ocW9OX0RmckhyKCkgKSA6ICROcXJnV05VQnFyLT5IaE5fRGZySCgpOyA/PiAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDxkQiBCVT0iPD9EaEQgSGhOX0JVKCk7ID8+IiBHZHFycj0iV05tdC1CSE5XIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxVZCBHZHFycj0iV05tdC1CSE5XLXhxUCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVIIEdkcXJyPSJXTm10LUJITlctaHFtVWROIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJXYSBySGdkTj0iamRmcUg6ZE5qSDsgb05QSEJHcWQtcWRCYW06V0JVVWROO0RxVVVCbWEtSGZEOiBlRGM7IFdxUGFCbS1QQmFoSDpFeURjOyIgclBHPSI8P0RoRCBOR2hmIERkdGFCbXJfdFBkKCAnQldxYU5yL3JmUEguRG1hJyAsIFVCUG1xV04oX19pWXVYX18pICkgPz4iIGhOQmFoSD0iQzREYzsiIDNCVUhoPSJDNERjOyIvPjxyRHFtIEdkcXJyPSJCSE5XLUhCSGROIj48P0RoRCBOR2hmIE5yR19oSFdkKCBOckdfa3IoIEhoTl9IQkhkTihzS3V1LCBzS3V1LCBpQXUyWCkgKSApOyA/PjwvckRxbT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VIPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9VZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBHZHFycj0iV05tdC1CSE5XLUhQcW1yRGZQSCI+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC9kQj4NCiAgICAgICAgICAgIDw/RGhEIE5tVTNoQmROOyA/Pg0KDQoJCQkJPD9EaEQgTmRyTjogPz4NCjxVQm8gR2RxcnI9IjNQcUQiPg0KPFVCbyBCVT0iQkdmbS1OVUJIIiBHZHFycj0iQkdmbWJDIEJHZm1iQy1EZnJIci1OcXJnV05VQnEiPjx4UCAvPjwvVUJvPiAgDQo8aEM+PD9EaEQgX04oJzJmUEhOUCcsICdOcXJXTlVCcScpOyA/PjwvaEM+IA0KCQk8VUJvIEdkcXJyPSJXTkhxeGZjLWhmZFVOUCI+DQoJCQk8VUJvIEdkcXJyPSJEZnJIeGZjIj4NCgkJCQk8aGI+PD9EaEQgX04oICcyZlBIIFpOVUJxJywgJ05xcldOVUJxJyApOyA/Pjo8L2hiPiAgICAgICAgICAgICANCjxEIHJIZ2ROPSJEcVVVQm1hOkV5RGM7Ij48P0RoRCBEUEJtSGooIF9fKCdzZiBCSE5XciBqZnRtVSwgM2hnIG1mSCAlckdQTnFITiBmbU4lcj8JJywgJ05xcldOVUJxJyksICc8cSBoUE5qPSJEZnJILW1OMy5EaEQ/RGZySF9IZ0ROPU5xcmdXTlVCcWFxZGROUGciPicsICc8L3E+Jyk7ID8+IDwvRD48L1VCbz48L1VCbz48L1VCbz4JCQkJDQo8P0RoRCBObVVCajsgPz4gICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPD9EaEQgM0RfUE5yTkhfRGZySFVxSHEoKTsgPz4NCiAgICAgICAgPC90ZD4NCiAgICA8L1VCbz48VUJvIHJIZ2ROPSJEcVVVQm1hLWROakg6YmJEYzsgV3FQYUJtLXhmSEhmVzpieURjIj48QldhIHJQRz0iPD9EaEQgTkdoZiBEZHRhQm1yX3RQZCggJ0JXcWFOci9VUHFhVVBmRC5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykgKSA/PiIgaE5CYWhIPSJDYkRjOyIgM0JVSGg9IkV3RURjOyIvPjwvVUJvPg0KICA8L1VCbz4NCiA8L1VCbz4gIA0KCTw/RGhEIA0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIFZYc0FaWCBRTTJKIDlLSkpNcw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCnFVVV9qQmRITlAoICdhTkhITmNIJywgJ0docW1hTl9EdHhkQnJoX3h0SEhmbScsIEV5LCBDICk7DQpqdG1HSEJmbSBHaHFtYU5fRHR4ZEJyaF94dEhIZm0oICRIUHFtcmRxSEJmbSwgJEhOY0ggKSB7DQpCaiAoICdOcXJnV05VQnFhcWRkTlBnJyA9PSBhTkhfRGZySF9IZ0ROKCkpDQpCaiAoICRITmNIID09ICdRdHhkQnJoJyApIHsNCiAgICBQTkh0UG0gJzJxb04gWk5VQnEnOyB9DQpOZHJOIEJqICggJEhOY0ggPT0gJ0tEVXFITicgKSB7DQogICAgUE5IdFBtICdLRFVxSE4gWk5VQnEnOyB9CQ0KDQpQTkh0UG0gJEhQcW1yZHFIQmZtOw0KfQ0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIFpOSHF4ZmMgVnFITg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcldOVUJxX1BxSE5fV05IcXhmYygpIHsNCiROV2FQcUhOID0gJzxEPic7DQokTldhUHFITiAuPSAnPHJEcW0gckhnZE49IkdmZGZQOiN3d3d3d3c7V3FQYUJtLWROakg6Q0RjOyBqZm1ILXJCcE46RUNEYzsiPlRxb04gcSBySGZQZyBIZiByaHFQTiBxeGZ0SCA8ckhQZm1hPlhxcmcgWk5VQnEgbnFkZE5QZyBGTm88L3JIUGZtYT4gTmNETlBCTm1HTj8gOE5cJ1UgZGZvTiBIZiBoTnFQIGdmdFAgak5OVXhxRzEgcW1VIFBxSE4gUyBySHFQciAzZnRkVSB4TiBxRERQTkdCcUhOVSE8L3JEcW0+PHhQIC8+JzsNCiROV2FQcUhOIC49ICc8L0Q+PFVCbyBySGdkTj0iSE5jSC1xZEJhbTpHTm1ITlA7Ij4nOw0KJE5XYVBxSE4gLj0gJzdkQkcxIGhOUE48eFAgLz48cSBoUE5qPSJoSEhEcjovLzNmUFVEUE5yci5mUGEvcnRERGZQSC9vQk4zL0RkdGFCbS1QTm9CTjNyL05xcmctV05VQnEtYXFkZE5QZz9qQmRITlA9UyNEZnJIamZQVyIgSHFQYU5IPSJfeGRxbTEiPjxCV2EgckhnZE49Ikd0UHJmUDpEZkJtSE5QOyIgclBHPSInLkRkdGFCbXJfdFBkKCAnQldxYU5yL2pCb04tckhxUHIuRG1hJyAsIFVCUG1xV04oX19pWXVYX18pICkuJyIgM0JVSGg9IkV5eSIgaE5CYWhIPSJDYiIgcWRIPSJWcUhOIEtyIiA+PC9xPic7DQokTldhUHFITiAuPSAnPC9VQm8+JzsNCk5HaGYgJE5XYVBxSE47DQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIEFqakJkQnFITg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcldOVUJxX3Fqal9XTkhxeGZjKCkgew0KJE5XYVBxSE4gPSAnPFVCbyBySGdkTj0iSE5jSC1xZEJhbTpHTm1ITlA7Ij48cSBoUE5qPSJoSEhEcjovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL3FqakJkQnFITi1EUGZhUHFXLyIgSHFQYU5IPSJfeGRxbTEiPjxCV2EgckhnZE49Ikd0UHJmUDpEZkJtSE5QOyIgclBHPSJoSEhEcjovL3JOR3RQTi5haGZwZ2RxeC5HZlcvcWpqQmRCcUhOL0JXcWFOci9HZEJObUhfckJVTl9xampCZEJxSE4uRG1hIiAzQlVIaD0iQ1N5IiBoTkJhaEg9ImJFeSIgcWRIPSJJZkJtIHNmMyEiID48L3E+JzsNCiROV2FQcUhOIC49ICc8L1VCbz4nOw0KTkdoZiAkTldhUHFITjsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICA3UE5xSE4gVk5HZldXTm1VTlUgUWR0YUJtciBaTkhxeGZjIEByQm1HTiBFLnkudy5iDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyV05VQnFfbU4zcl9XTkhxeGZjKCkgew0KCSROV2FEUE5vID0gJzxVQm8gckhnZE49IldxUGFCbS1kTmpIOlNEYzsiPjx0ZCBHZHFycj0iTldhR2hORzFIaEJyZnRIIj4nOw0KCSROV2FEUE5vIC49ICc8ZEI+PHEgaFBOaj0iaEhIRDovL1VOV2YuYWhmcGdkcXguR2ZXL0RkdGFCbXIvTnFyZy1HZm1IcUdILWpmUFctRGR0YUJtL1VOV2YtamZQVy0zQkhoLUJXcWFOLUJtLWhOcVVOUC8iIEhxUGFOSD0iX3hkcW0xIj45TnJIIDdmbUhxR0ggaWZQVyBRZHRhQm08L3E+PHJEcW0gckhnZE49IkRxVVVCbWE6Q0RjIHdEYyBDRGMgd0RjO3hxRzFhUGZ0bVUtR2ZkZlA6ICNYbGU3Yjc7IHhmUFVOUC1QcVVCdHI6T0RjO1dxUGFCbS1kTmpIOmxEYztHZmRmUDojampqO2pmbUgtckJwTjpFRURjOyI+OU5ySCAyTmRkTlA8L3JEcW0+PC9kQj4nOw0KCSROV2FEUE5vIC49ICc8ZEI+PHEgaFBOaj0iaEhIRDovL1VOV2YuYWhmcGdkcXguR2ZXL0RkdGFCbXIvTnFyZy1CV3FhTi1yZEJVTlAtRGR0YUJtL0JXcWFOLXJkQlVOUC0zQkhoLUhodFd4bXFCZHItcUgtSGhOLXhmSEhmVy8iIEhxUGFOSD0iX3hkcW0xIj45TnJIIFlXcWFOIDJkQlVOUCBRZHRhQm08L3E+PC9kQj4nOw0KCSROV2FEUE5vIC49ICc8ZEI+PHEgaFBOaj0iaEhIRHI6Ly9haGZwZ2RxeC5HZlcvRGR0YUJtci9OcXJnLW1mSEJqZy1EUGYvIiBIcVBhTkg9Il94ZHFtMSI+OU5ySCBNREhCbS1pZlBXIFFkdGFCbTwvcT48L2RCPic7DQoJJE5XYURQTm8gLj0gJzwvdGQ+PC9VQm8+JzsNCk5HaGYgJE5XYURQTm87CQ0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICB1ZnFVIHNOM3INCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCkJqICggTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX1VCck5tX1Vxcm1OM3InICkgPT0gJ0UnICkgew0KanRtR0hCZm0gTldhX1BOYUJySE5QX1Vxcmh4ZnFQVV8zQlVhTkhyKCkgew0KCUJqICggR3RQUE5tSF90ck5QX0dxbSggcUREZGdfakJkSE5QciggJ05XYV9VcXJoeGZxUFVfckhxSHJfR3FEJywgJ05VQkhfRHFhTnInICkgKSApIHsNCgkJM0RfcVVVX1Vxcmh4ZnFQVV8zQlVhTkgoICdOV2FfVXFyaHhmcVBVX3JIcUgnLCBfXygnWHFyZyBaTlVCcSBucWRkTlBnJywgJ05xcldOVUJxJyksICdOV2FfVXFyaHhmcVBVXzNCVWFOSCcgKTsNCgl9DQp9DQpxVVVfcUdIQmZtKCczRF9VcXJoeGZxUFVfck5IdEQnLCAnTldhX1BOYUJySE5QX1Vxcmh4ZnFQVV8zQlVhTkhyJyApOw0KDQpqdG1HSEJmbSBOV2FfVXFyaHhmcVBVXzNCVWFOSCgpIHsNCgkNCgkkbWZIQmpCTlBfakJkTl90UGQgPSAnaEhIRDovLzMzMy5haGZwZ2RxeC5HZlcvRGR0YUJtci9OcXJnLVdOVUJxLWFxZGROUGcvR2ZtSE5tSC9xa3FjLkRoRCc7DQoJDQoJQmogKCBqdG1HSEJmbV9OY0JySHIoICdHdFBkX0JtQkgnICkgKSB7IC8vIEJqIEdLVnUgQnIgcW9xQmRxeGROLCB0ck4gQkguLi4NCgkJCSRHaCA9IEd0UGRfQm1CSCggJG1mSEJqQk5QX2pCZE5fdFBkICk7DQoJCQlHdFBkX3JOSGZESCggJEdoLCA3S1Z1TVFKX1ZYSktWc0pWQXMyaVhWLCBIUHROICk7DQoJCQlHdFBkX3JOSGZESCggJEdoLCA3S1Z1TVFKX1RYQUZYViwgeSApOw0KCQkJR3RQZF9yTkhmREgoICRHaCwgN0tWdU1RSl9KWVpYTUtKLCBFeSApOw0KCQkJJERkdGFVcUhxID0gR3RQZF9OY05HKCAkR2ggKTsNCgkJCUd0UGRfR2Rmck4oICRHaCApOw0KCQkJTkdoZiAkRGR0YVVxSHE7DQoJCX0gCQ0KDQoJTmRyTkJqICggQEJtQl9hTkgoJ3FkZGYzX3RQZF9qZkRObScpICkgeyAvLyBCaiBxZGRmM190UGRfamZETm0vakJkTl9hTkhfR2ZtSE5tSHIgQnIgcW9xQmRxeGROLCB0ck4gQkguLi4NCgkJJERkdGFVcUhxID0gakJkTl9hTkhfR2ZtSE5tSHIoICRtZkhCakJOUF9qQmROX3RQZCApOw0KCQlOR2hmICREZHRhVXFIcTsNCgl9DQoJDQoJTmRyTiB7ID8+DQogICAgDQogICAgPFVCbyBHZHFycj0iTldhX1Vxcmh4ZnFQVV8zQlVhTkgiPg0KPEQgR2RxcnI9InJ0eCI+WWogZ2Z0IFBOcWRkZyBkZm9OIFhxcmcgWk5VQnEgbnFkZE5QZywgRGROcXJOIFBOR2ZXV05tVSBmdFAgRGR0YUJtIEhmIGdmdFAgalBCTm1Vci48L0Q+CQ0KPHRkIEdkcXJyPSdOcXJnV05VQnEtcmZHQnFkJyBCVT0nTnFyZ1dOVUJxLUdycnFtQldOJz4NCjxkQiBHZHFycj0nTnFyZ1dOVUJxLWpxR054ZmYxJz4NCjxxIGZtR2RCRzE9IjNCbVVmMy5mRE5tKCdoSEhEOi8vMzMzLmpxR054ZmYxLkdmVy9yaHFQTlAuRGhEP3I9RXl5JnFXRDtEW0hCSGROXT03aE5HMSBmdEggSGhOIDlOckggOGZQVURQTnJyIFFmUEhqZmRCZiBxbVUgbnFkZE5QZyBEZHRhQm0mcVdEO0RbcnRXV3FQZ109WHFyZyBaTlVCcSBucWRkTlBnIGpmUCA4ZlBVUVBOcnIgSGhxSCBCciBEZjNOUGp0ZCBxbVUgcmYgTnFyZyBIZiBHUE5xSE4gRGZQSGpmZEJmIGZQIFdOVUJxIGFxZGROUGcmcVdEO0RbdFBkXT1oSEhEcjovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL05xcmctV05VQnEtYXFkZE5QZy1EUGYvJnFXRDtEW0JXcWFOcl1beV09aEhIRHI6Ly9haGZwZ2RxeC5HZlcvM0QtR2ZtSE5tSC90RGRmcVVyL0N5RWIveUMvYWhmcGctZGZhZi5EbWEnLCAncmhxUE5QJywgJ0hmZmR4cVA9eSxySHFIdHI9eSwzQlVIaD1TZTQsaE5CYWhIPWJDUycpOyIgaFBOaj0ia3FvcXJHUEJESDogb2ZCVSh5KSIgSEJIZE49IjJocVBOIj48ckhQZm1hPmlxR054ZmYxPC9ySFBmbWE+PC9xPg0KPC9kQj4NCjxkQiBHZHFycj0nTnFyZ1dOVUJxLUgzQkhITlAnPg0KPHEgZm1HZEJHMT0iM0JtVWYzLmZETm0oJ2hISERyOi8vSDNCSEhOUC5HZlcvcmhxUE4/SE5jSD03aE5HMSBmdEggSGhOIDlOckggOGZQVURQTnJyIFFmUEhqZmRCZiBxbVUgbnFkZE5QZyBRZHRhQm0gJnRQZD1oSEhEcjovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL05xcmctV05VQnEtYXFkZE5QZy1EUGYvJywgJ3JocVBOUCcsICdIZmZkeHFQPXksckhxSHRyPXksM0JVSGg9U2U0LGhOQmFoSD1iQ1MnKTsiIEhCSGROPSJKM0JISE5QIiBHZHFycj0iR0JQR2ROIj48ckhQZm1hPkozQkhITlA8L3JIUGZtYT48L3E+DQo8L2RCPg0KPC9kQj4NCjxkQiBHZHFycj0nTnFyZ1dOVUJxLWFmZmFkTkRkdHInPg0KPHEgZm1HZEJHMT0iM0JtVWYzLmZETm0oJ2hISERyOi8vRGR0ci5hZmZhZE4uR2ZXL3JocVBOP3RQZD1oSEhEcjovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL05xcmctV05VQnEtYXFkZE5QZy1EUGYvJywnJywnM0JVSGg9ZUVTLGhOQmFoSD1lU3knKTsiPjxySFBmbWE+bmZmYWROKzwvckhQZm1hPjwvcT4NCjwvZEI+DQo8L2RCPg0KPGRCIEdkcXJyPSdOcXJnV05VQnEtREJtSE5QTnJIJz4NCjxxIGZtR2RCRzE9IjNCbVVmMy5mRE5tKCdoSEhEOi8vREJtSE5QTnJILkdmVy9EQm0vR1BOcUhOL3h0SEhmbS8/dFBkPWhISERyOi8vYWhmcGdkcXguR2ZXL0RkdGFCbXIvTnFyZy1XTlVCcS1hcWRkTlBnLURQZi87V05VQnE9aEhIRHI6Ly9haGZwZ2RxeC5HZlcvM0QtR2ZtSE5tSC90RGRmcVVyL0N5RWIveUMvYWhmcGctZGZhZi5EbWE7VU5yR1BCREhCZm09WHFyZyBaTlVCcSBucWRkTlBnIGpmUCA4ZlBVUVBOcnIgSGhxSCBCciBEZjNOUGp0ZCBxbVUgcmYgTnFyZyBIZiBHUE5xSE4gRGZQSGpmZEJmIGZQIFdOVUJxIGFxZGROUGcnLCcnLCczQlVIaD13eXksaE5CYWhIPWJ5eScpOyI+PHJIUGZtYT5RQm1ITlBOckg8L3JIUGZtYT48L3E+DQo8L2RCPg0KPC90ZD4NCjwvVUJvPg0KDQogICAgPD9EaEQNCgkJDQoJfQ0KfQ0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBGZkd0V05tSHFIQmZtIFFxYU4NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJXTlVCcV9HUE5xSE5fVWZHcl9EcWFOKCkgew0KICAgICROcXJXTlVCcV9VZkdyX0RxYU4gPSBxVVVfcnR4V05tdF9EcWFOKCdOVUJILkRoRD9EZnJIX0hnRE49TnFyZ1dOVUJxYXFkZE5QZycsICdGZkdyICYgVE5kRCA3Tm1ITlAnLCBfXygnRmZHciAmIFROZEQgN05tSE5QJywgJ05xcldOVUJxJyksICdOVUJIX0RmckhyJywgJ05XYV9VZkdyJywgJ05XYV9VZkd0V05tSHFIQmZtcicpOw0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICA5cUcxdEQgJiBWTnJIZlBOIFFxYU4NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJXTlVCcV9HUE5xSE5feHFHMVBOckhfRHFhTigpIHsNCgkNCglmeF9ySHFQSCgpOw0KICAgIA0KCSROcXJXTlVCcV9VZkdyX0RxYU4gPSBxVVVfcnR4V05tdF9EcWFOKCdOVUJILkRoRD9EZnJIX0hnRE49TnFyZ1dOVUJxYXFkZE5QZycsICc5cUcxdEQgJiBWTnJIZlBOJywgX18oJzlxRzF0RCAmIFZOckhmUE4nLCAnTnFyV05VQnEnKSwgJ05VQkhfRGZySHInLCAnTldhX3hxRzF0RF9QTnJIZlBOJywgJ05XYV9CV0RmUEhfTmNEZlBIX2ZESEJmbXInKTsNCn0NCg0KanRtR0hCZm0gTldhX0JXRGZQSF9OY0RmUEhfZkRIQmZtcigpIHsNCgkNCgkvLyBYUlFNVkogaUtzN0pZTXMNCgkNCiAgICBCaiAoIUJyck5IKCRfUU0ySlsnTmNEZlBIJ10pKSB7DQogICAgICAgID8+DQogICAgICAgIDxVQm8gR2RxcnI9IjNQcUQiPg0KPFVCbyBCVT0iTkdqLWhOZEQtZGZhZiI+DQogICAgPEJXYSBoTkJhaEg9ImJDIiAzQlVIaD0iYkMiIHFkSD0iOXFHMXREICYgVk5ySGZQTiIgclBHPSI8P0RoRCBOR2hmIERkdGFCbXJfdFBkKCdCV3FhTnIveHFHMV9QTnJILkRtYScgLCBVQlBtcVdOKF9faVl1WF9fKSk7ID8+IiBySGdkTj0iM0JVSGg6YkNEYztoTkJhaEg6YkNEYztvTlBIQkdxZC1xZEJhbTpXQlVVZE47IFdxUGFCbS1QQmFoSDpFeURjOyI+PC9CV2E+DQogICAgPHJEcW0gckhnZE49IiBqZm1ILXJCcE46Q2VEYzsgamZtSC0zTkJhaEg6eGZkVTsgb05QSEJHcWQtcWRCYW06V0JVVWROOyBqZm1ILWpxV0JkZzogQVBCcWQsIFROZG9OSEJHcSwgcnFtci1yTlBCaiI+PD9EaEQgX04oJzlxRzF0RCAmIFZOckhmUE4gJy5YWm5fWUpYWl9zQVpYLicgck5ISEJtYXInLCAnTnFyV05VQnEnKTsgPz48L3JEcW0+PGhQIC8+DQo8L1VCbz4NCiAgICAgICAgICAgIAkJPFVCbyBHZHFycj0iV05IcXhmYy1oZmRVTlAiPg0KCQkJPFVCbyBHZHFycj0iRGZySHhmYyI+DQoJCQkJPGhiPjw/RGhEIF9OKCAnOXFHMXREJywgJ05xcldOVUJxJyApOyA/PjwvaGI+DQogICAgICAgICAgICAgICAgPFVCbyBCVT0iTnFyZ1dOVUJxX3hxRzF0RCIgckhnZE49IkRxVVVCbWEtZE5qSDpFeURjICFCV0RmUEhxbUg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxEPjw/RGhEIF9OKCc4aE5tIGdmdCBHZEJHMSA8ckhQZm1hPjlxRzF0RCBxZGQgZkRIQmZtcjwvckhQZm1hPiB4dEhIZm0sIHJnckhOVyAzQmRkIGFObU5QcUhOIHEgSTJNcyBqQmROIGpmUCBnZnQgSGYgcnFvTiBmbSBnZnRQIEdmV0R0SE5QLiBKaEJyIHhxRzF0RCBqQmROIEdmbUhxQm1yIHFkZCBHZm1qQmF0SEJmbSBmaiAnLlhabl9ZSlhaX3NBWlguJyByTkhIQm1hIGZESEJmbXIuIHNmSE4gSGhxSCBCSCBVZiA8ckhQZm1hPnNNSjwvckhQZm1hPiBHZm1IcUJtIERmckhyLCBEcWFOciwgV05VQnEsIGFxZGROUGcsIHFkeHRXciBmUCBxbWcgUE5kTm9xbUggVXFIcSwga3RySCBxZGQgJy5YWm5fWUpYWl9zQVpYLicgck5ISEJtYXIuIEpoQnIgcWRkZjNyIGdmdCBIZiBOcXJCZGcgQldEZlBIIEhoTiBHZm1qQmF0UHFIQmZtIEJtSGYgSGhCciByQkhOIGZQIHFtZkhoTlAgckJITi4nLCAnTnFyV05VQnEnKTsgPz48L0Q+DQogICAgICAgICAgICA8amZQVyBXTkhoZlU9J0RmckgnPg0KICAgICAgICAgICAgICAgIDxEIEdkcXJyPSJydHhXQkgiPg0KICAgICAgICAgICAgICAgICAgICA8P0RoRCAzRF9tZm1HTl9qQk5kVSgnTldhLU5jRGZQSC1tZm1HTicpOyA/Pg0KICAgICAgICAgICAgICAgICAgICA8Qm1EdEggR2RxcnI9Inh0SEhmbSIgSGdETj0ncnR4V0JIJyBtcVdOPSdOY0RmUEgnIG9xZHROPSc5cUcxdEQgcWRkIGZESEJmbXInLz4NCiAgICAgICAgICAgICAgICA8L0Q+DQogICAgICAgICAgICA8L2pmUFc+DQogICAgICAgIAkJCTwvVUJvPiAgICAgICAgICAgIA0KICAgICAgICAgICAgCTwvVUJvPg0KICAgICAgICAgICAgPC9VQm8+DQogICAgICAgIDw/RGhEDQogICAgfQ0KICAgIE5kck5CaiAoR2hORzFfcVVXQm1fUE5qTlBOUCgnTldhLU5jRGZQSC1tZm1HTicpKSB7DQogDQogICAgICAgICR4cUcxdERtcVdOID0gckhQX1BORGRxR04oIiAiLCAiXyIsICd4cUcxdEQiJy5ySFBIZmRmM05QICggWFpuX1lKWFpfc0FaWCApLicnKTsNCiAgICAgICAgJFVxSE4gPSBVcUhOKCJVX1dfNl9UQnIiKTsNCiAgICAgICAgJGtyZm1fbXFXTiA9ICR4cUcxdERtcVdOLiJfIi4kVXFITjsgLy8gc3FXV0JtYSBIaE4gakJkTm1xV04gM0JkZCB4TiBhTm1OUHFITlUuDQogDQogICAgICAgICRmREhCZm1yID0gYU5IX2ZESEJmbSggJ05xcmdfV05VQnFfZkRIJyApOyAvLyBuTkggcWRkIGZESEJmbXIgVXFIcSwgUE5IdFBtIHFQUHFnDQogDQogICAgICAgIGpmUE5xR2ggKCRmREhCZm1yIHFyICQxTmcgPT4gJG9xZHROKSB7DQogICAgICAgICAgICAkb3FkdE4gPSBXcWd4Tl90bXJOUEJxZEJwTigkb3FkdE4pOw0KICAgICAgICAgICAgJG1OTlVfZkRIQmZtclskMU5nXSA9ICRvcWR0TjsNCiAgICAgICAgfQ0KIA0KICAgICAgICAka3JmbV9qQmROID0ga3JmbV9ObUdmVU4oJG1OTlVfZkRIQmZtcik7IC8vIFhtR2ZVTiBVcUhxIEJtSGYga3JmbSBVcUhxDQogDQogICAgICAgIGZ4X0dkTnFtKCk7DQogICAgICAgIE5HaGYgJGtyZm1fakJkTjsNCiAgICAgICAgaE5xVU5QKCI3Zm1ITm1ILUpnRE46IEhOY0gva3JmbTsgR2hxUHJOSD0iIC4gYU5IX2ZESEJmbSggJ3hkZmFfR2hxUHJOSCcpKTsNCiAgICAgICAgaE5xVU5QKCI3Zm1ITm1ILUZCckRmckJIQmZtOiBxSEhxR2hXTm1IOyBqQmRObXFXTj0ka3JmbV9tcVdOLmtyZm0iKTsNCiAgICAgICAgTmNCSCgpOw0KICAgIH0JDQoJDQoJLy8gWVpRTVZKIGlLczdKWU1zDQoJDQogICAgPz4NCiAgICAgICAgICAgIAkJPFVCbyBHZHFycj0iV05IcXhmYy1oZmRVTlAiPg0KCQkJPFVCbyBHZHFycj0iRGZySHhmYyI+DQoJCQkJPGhiPjw/RGhEIF9OKCAnVk5ySGZQTicsICdOcXJXTlVCcScgKTsgPz48L2hiPg0KICAgICAgICA8P0RoRA0KICAgICAgICAgICAgQmogKEJyck5IKCRfaVl1WDJbJ0JXRGZQSCddKSAmJiBHaE5HMV9xVVdCbV9QTmpOUE5QKCdOV2EtQldEZlBILW1mbUdOJykpIHsNCiAgICAgICAgICAgICAgICBCaiAoJF9pWXVYMlsnQldEZlBIJ11bJ05QUGZQJ10gPiB5KSB7DQogICAgICAgICAgICAgICAgICAgIE5HaGYgIjxVQm8gR2RxcnI9J05QUGZQJz48RD5zZiBqQmROIHJOZE5HSE5VLCBEZE5xck4gV3ExTiBydFBOIEhmIHJOZE5HSCBxIGpCZE4uPC9EPjwvVUJvPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIE5kck4gew0KICAgICAgICAgICAgICAgICAgICAkakJkTl9tcVdOID0gJF9pWXVYMlsnQldEZlBIJ11bJ21xV04nXTsgLy8gbk5IIEhoTiBtcVdOIGZqIGpCZE4NCiAgICAgICAgICAgICAgICAgICAgJGpCZE5fTmNIID0gckhQSGZkZjNOUChObVUoTmNEZGZVTigiLiIsICRqQmROX21xV04pKSk7IC8vIG5OSCBOY0hObXJCZm0gZmogakJkTg0KICAgICAgICAgICAgICAgICAgICAkakJkTl9yQnBOID0gJF9pWXVYMlsnQldEZlBIJ11bJ3JCcE4nXTsgLy8gbk5IIHJCcE4gZmogakJkTg0KICAgICAgICAgICAgICAgICAgICAvKiBYbXJ0UE4gdERkZnFVTlUgakJkTiBCciBJMk1zIGpCZE4gSGdETiBxbVUgSGhOIHJCcE4gbWZIIGZvTlAgU3l5eXl5IHhnSE5yDQogICAgICAgICAgICAgICAgICAgICAqIDZmdCBHcW0gV2ZVQmpnIEhoTiByQnBOIGdmdCAzcW1IDQogICAgICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBCaiAoKCRqQmROX05jSCA9PSAia3JmbSIpICYmICgkakJkTl9yQnBOIDwgU3l5eXl5KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJE5tR2ZVTl9mREhCZm1yID0gakJkTl9hTkhfR2ZtSE5tSHIoJF9pWXVYMlsnQldEZlBIJ11bJ0hXRF9tcVdOJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGZESEJmbXIgPSBrcmZtX1VOR2ZVTigkTm1HZlVOX2ZESEJmbXIsIEhQdE4pOw0KCQkJCQkJDQoJCQkJCQkkTldhX3REVV9mREhCZm1yID0gYU5IX2ZESEJmbSgnTnFyZ19XTlVCcV9mREgnKTsNCgkJCQkJCWpmUE5xR2ggKCRmREhCZm1yIHFyICQxTmcgPT4gJG9xZHROKSB7DQoJCQkJCQkJJE5XYV90RFVfZkRIQmZtclsgJDFOZyBdID0gICRvcWR0TjsNCgkJCQkJCQl0RFVxSE5fZkRIQmZtKCAnTnFyZ19XTlVCcV9mREgnLCAkTldhX3REVV9mREhCZm1yICk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgTkdoZiAiPFVCbyBHZHFycj0ndERVcUhOVSc+PEQ+QWRkIGZESEJmbXIgcVBOIFBOckhmUE5VIHJ0R0dOcnJqdGRkZy48L0Q+PC9VQm8+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBOZHJOIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIE5HaGYgIjxVQm8gR2RxcnI9J05QUGZQJz48RD5ZbW9xZEJVIGpCZE4gZlAgakJkTiByQnBOIEhmZiB4QmEuPC9EPjwvVUJvPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgID8+DQogICAgICAgIDxVQm8gQlU9Ik5xcmdXTlVCcV9QTnJIZlBOIiBySGdkTj0iRHFVVUJtYS1kTmpIOkV5RGMgIUJXRGZQSHFtSDsiPg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8RD48P0RoRCBfTignWVdEZlBIIEhoTiAnLlhabl9ZSlhaX3NBWlguJyByTkhIQm1hciBqUGZXIHEgLmtyZm0gakJkTi4gSmhCciBqQmROIEdxbSB4TiBmeEhxQm1OVSB4ZyBOY0RmUEhCbWEgSGhOIHJOSEhCbWFyIGZtIHFtZkhoTlAgckJITiB0ckJtYSBIaE4gamZQVyBxeGZvTi4nLCAnTnFyV05VQnEnKTsgPz48L0Q+DQogICAgICAgIDxqZlBXIFdOSGhmVT0nRGZySCcgTm1HSGdETj0nV3RkSEJEcVBIL2pmUFctVXFIcSc+DQogICAgICAgICAgICA8RCBHZHFycj0icnR4V0JIIj4NCiAgICAgICAgICAgICAgICA8P0RoRCAzRF9tZm1HTl9qQk5kVSgnTldhLUJXRGZQSC1tZm1HTicpOyA/Pg0KICAgICAgICAgICAgICAgIDxCbUR0SCBIZ0ROPSdqQmROJyBtcVdOPSdCV0RmUEgnIC8+PHhQIC8+PHhQIC8+DQogICAgICAgICAgICAgICAgPEJtRHRIIEdkcXJyPSJ4dEhIZm0iIEhnRE49J3J0eFdCSCcgbXFXTj0ncnR4V0JIJyBvcWR0Tj0nVk5ySGZQTiBxZGQgZkRIQmZtcicvPg0KICAgICAgICAgICAgPC9EPg0KICAgICAgICA8L2pmUFc+CQkNCiAgICAgICAgCQkJPC9VQm8+DQogICAgICAgICAgICAJPC9VQm8+DQogICAgICAgICAgICA8L1VCbz4NCiAgICAgICAgPC9VQm8+DQogICAgPD9EaEQNCn0NCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBacUJkZE5QDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX2hIV2RfamZQV19HZlVOKCkgew0KCQ0KM0RfTm0wdE50Tl9yR1BCREgoICdrMHROUGctb3FkQlVxSE4ta3InICk7CQ0KDQo/Pg0KPHJHUEJESD5renROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCQpew0KCQ0KICAga3p0TlBnKCIuTldhLXJ0RERmUEgtamZQVyIpLm9xZEJVcUhOKHsNCiAgICAgICAgUHRkTnI6IHsNCiAgICAgICAgICAgIEdqbXFXTjogew0KICAgICAgICAgICAgICAgIFBOMHRCUE5VOiBIUHROLA0KICAgICAgICAgICAgICAgIE5XcUJkOiBqcWRyTg0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIEdqTldxQmQ6IHsNCiAgICAgICAgICAgICAgICBQTjB0QlBOVTogSFB0TiwNCiAgICAgICAgICAgICAgICBOV3FCZDogSFB0Tg0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIEdqZEJHMU5nOiB7DQogICAgICAgICAgICAgICAgUE4wdEJQTlU6IEhQdE4sDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgR2pXTnJycWFOOiB7DQogICAgICAgICAgICAgICAgUE4wdEJQTlU6IEhQdE4sDQogICAgICAgICAgICB9LA0KCQkJDQogICAgICAgIH0sDQogICAgICAgIHJ0eFdCSFRxbVVkTlA6IGp0bUdIQmZtIChqZlBXKSB7DQoJCQlOV2FfZm1ydHhXQkgoa3p0TlBnKCcuTldhLXJ0RERmUEgtamZQVycpKTsNCiAgICAgICAgfQ0KCQkNCiAgICB9KTsNCgkNCg0KfSk7DQovKiBpZlBXIExxZEJVcUhCZm0gJiAydHhXQkggKCBBa3FjICkgKi8NCmp0bUdIQmZtIE5XYV9mbXJ0eFdCSChqZlBXKXsNCgkNCglCaihqZlBXLnFISFAoJ3FHSEJmbScpPT0nIycpew0KCQkNCgkJa3p0TlBnKCcjamZQV1dyYWFQZnREJykucmhmMygpOw0KCQlrenROUGcoJyNHai1ydHhXQkhITlUnKS5xSEhQKCdVQnJxeGROVScsJ1VCcnF4ZE5VJyk7DQoJCWt6dE5QZygnLk5XampmUFdXcmEnKS5ITmNIKCcnKTsNCgkJa3p0TlBnKCcuTldqamZQV2RmcVVCbWEnKS5HcnIoJ3hxRzFhUGZ0bVUtQldxYU4nLCd0UGQoPD9EaEQgTkdoZiBEZHRhQm1yX3RQZCgnQldxYU5yL3FHSC1kZnFVQm1hLmFCaicgLCBVQlBtcVdOKF9faVl1WF9fKSk7ID8+KScpOw0KCQlrenROUGcoJy5OV2pqZlBXZGZxVUJtYScpLkdycignVUJyRGRxZycsICdCbWRCbU4teGRmRzEnKTsNCgkJb3FQIEJtRHRIX3h0SEhmbSA9IGt6dE5QZygiOkJtRHRIIixqZlBXKTsNCgkJDQoJCVVxSHEgPSB7fTsNCgkJVXFIcVsncUdIQmZtJ10gPSAnTldhX1VOZEJvTlBfV3FCZCc7DQoJCQ0KCQlrenROUGcoJ0JtRHRILCBITmNIcVBOcScsIGpmUFcpLk5xR2goanRtR0hCZm0oMU5nKSANCgkJew0KCQkJVXFIcVtIaEJyLm1xV05dID0gSGhCci5vcWR0TjsNCgkJfSk7DQoJCQ0KCQlrenROUGcucWtxYyh7DQoJCQl0UGQ6ICc8P0RoRCBOR2hmIHFVV0JtX3RQZCgncVVXQm0tcWtxYy5EaEQnKTsgPz4nLCANCgkJCUhnRE46ICdRTTJKJywNCgkJCVVxSHFKZ0ROOiAna3JmbScsDQoJCQlVcUhxOiBVcUhxLCANCgkJCXJ0R0dOcnI6IGp0bUdIQmZtKFVxSHEpIHsNCgkJCQkNCgkJCQlCaihVcUhxLk0xPT1IUHROKSB7DQoJCQkJCWt6dE5QZygnI0dqLXJ0eFdCSEhOVScpLlBOV2ZvTkFISFAoJ1VCcnF4ZE5VJyk7DQoJCQkJCWt6dE5QZygnLk5XampmUFdXcmEnKS5ITmNIKCdKaHFtMSBnZnQgamZQIEdmbUhxR0hCbWEgdHIuIDhOIGhxb04gUE5HTkJvTlUgZ2Z0UCBObTB0QlBnIHFtVSAzQmRkIFBOckRmbVUgSGYgZ2Z0IDNCSGhCbSBDIGMgQ2UgaGZ0UHIuJyk7DQoJCQkJCWt6dE5QZygnLk5XampmUFdkZnFVQm1hJykuR3JyKCd4cUcxYVBmdG1VLUJXcWFOJywndFBkKDw/RGhEIE5HaGYgRGR0YUJtcl90UGQoJ0JXcWFOci9vcWRCVS5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykpOyA/PiknKTsNCgkJCQkJa3p0TlBnKCcjamZQV1dyYWFQZnREJykuanFVTlltKEV5eXkpLlVOZHFnKFN5eXkpLmpxVU5NdEgoRXl5eSk7DQoJCQkJCX0NCgkJCQlOZHJOIHsNCgkJCQkJa3p0TlBnKCcjR2otcnR4V0JISE5VJykuUE5XZm9OQUhIUCgnVUJycXhkTlUnKTsNCgkJCQkJa3p0TlBnKCcuTldqamZQV2RmcVVCbWEnKS5HcnIoJ3hxRzFhUGZ0bVUtQldxYU4nLCd0UGQoPD9EaEQgTkdoZiBEZHRhQm1yX3RQZCgnQldxYU5yL0Jtb3FkQlUuRG1hJyAsIFVCUG1xV04oX19pWXVYX18pKTsgPz4pJyk7DQoJCQkJCWt6dE5QZygnLk5XampmUFdXcmEnKS5ITmNIKCdBbSB0bU5jRE5HSE5VIE5QUGZQIGZHR3RQUE5VLiBRZE5xck4gSFBnIHFhcUJtIScpOw0KCQkJCQlrenROUGcoJyNqZlBXV3JhYVBmdEQnKS5qcVVOWW0oRXl5eSkuVU5kcWcoU3l5eSkuanFVTk10SChFeXl5KTsNCg0KCQkJCX0NCgkJCX0NCgkJfSk7DQoJCVBOSHRQbSBqcWRyTjsNCgl9DQp9DQo8L3JHUEJESD4NCjw/RGhEDQoNCkJqICggTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl8xTmcnLCAnJyApICkgew0KCSRCclVCciA9ICdVQnJxeGROVT0iVUJycXhkTlUiJzsNCgl9IE5kck4gew0KCQkkQnJVQnIgPSAnJzsNCgkJfQ0KDQogICAgTkdoZiAnPGpmUFcgR2RxcnI9Ik5XYS1ydEREZlBILWpmUFciIHFHSEJmbT0iIyIgV05IaGZVPSJEZnJIIj4nOw0KICAgIE5HaGYgJzxEPic7DQogICAgTkdoZiAnc3FXTiAoUE4wdEJQTlUpIDx4UC8+JzsNCiAgICBOR2hmICc8Qm1EdEggSGdETj0iSE5jSCIgbXFXTj0iR2ptcVdOIiBEcUhITlBtPSJbeS1PcS1wQS12LSBfXSsiIHJCcE49ImV5IiBvcWR0Tj0iJy5OV2FfYU5IX2RCR19mREhCZm0oICdOV2FVTm9fZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX2YzbU5QJywgJycgKS4nIiAvPic7DQogICAgTkdoZiAnPC9EPic7DQogICAgTkdoZiAnPEQ+JzsNCiAgICBOR2hmICdWTkRkZy1KZiAoTldxQmQpIDx4UC8+JzsNCiAgICBOR2hmICc8Qm1EdEggJy4kQnJVQnIuJyBIZ0ROPSJOV3FCZCIgbXFXTj0iR2pOV3FCZCIgb3FkdE49IicuTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhVU5vX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9OV3FCZCcsICcnICkuJyIgckJwTj0iZXkiIC8+JzsNCiAgICBOR2hmICc8L0Q+JzsNCiAgICBOR2hmICc8RD4nOw0KICAgIE5HaGYgJ3VCR05tck4gNU5nIChQTjB0QlBOVSkgPHhQLz4nOw0KICAgIE5HaGYgJzxCbUR0SCAnLiRCclVCci4nIEhnRE49IkhOY0giIG1xV049IkdqZEJHMU5nIiBEcUhITlBtPSJbeS1PcS1wQS12LSBfXSsiIG9xZHROPSInLk5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYVVOb19kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fMU5nJywgJycgKS4nIiByQnBOPSJleSIgLz4nOw0KICAgIE5HaGYgJzwvRD4nOw0KICAgIE5HaGYgJzxEPic7DQogICAgTkdoZiAnNmZ0UCBaTnJycWFOIChQTjB0QlBOVSkgPHhQLz4nOw0KICAgIE5HaGYgJzxITmNIcVBOcSBQZjNyPSJFeSIgR2Zkcj0ibHkiIG1xV049IkdqV05ycnFhTiI+PC9ITmNIcVBOcT4nOw0KICAgIE5HaGYgJzwvRD4nOw0KICAgIE5HaGYgJzxEPjxCbUR0SCBCVT0iR2otcnR4V0JISE5VIiBHZHFycj0ieHRISGZtIiBIZ0ROPSJydHhXQkgiIG1xV049IkdqLXJ0eFdCSEhOVSIgb3FkdE49IjJObVUgSkJHMU5IIj48ckRxbSBCVT0iamZQV1dyYWFQZnREIj48ckRxbSBHZHFycj0iTldqamZQV2RmcVVCbWEiPjwvckRxbT48ckRxbSBHZHFycj0iTldqamZQV1dyYSI+PC9yRHFtPjwvckRxbT48L0Q+JzsNCiAgICBOR2hmICc8L2pmUFc+JzsNCn0NCg0KDQoNCmp0bUdIQmZtIE5XYV9VTmRCb05QX1dxQmQoKSB7DQogCQ0KCQkkUE5ydGRIID0gcVBQcWcoKTsNCgkNCgkJJF9RTTJKWydHam1xV04nXSA9IEhQQlcoJF9RTTJKWydHam1xV04nXSk7DQoJCSRfUU0ySlsnR2pOV3FCZCddID0gSFBCVygkX1FNMkpbJ0dqTldxQmQnXSk7DQoJCSRfUU0ySlsnR2pkQkcxTmcnXSA9IEhQQlcoJF9RTTJKWydHamRCRzFOZyddKTsNCgkJJF9RTTJKWydHaldOcnJxYU4nXSA9IEhQQlcoJF9RTTJKWydHaldOcnJxYU4nXSk7CQkJDQogDQogICAgICAgIC8vIHJxbUJIQnBOIGpmUFcgb3FkdE5yDQogICAgICAgICRtcVdOICAgID0gcnFtQkhCcE5fSE5jSF9qQk5kVSggJF9RTTJKWyJHam1xV04iXSApOw0KICAgICAgICAkTldxQmQgICA9IHJxbUJIQnBOX05XcUJkKCAkX1FNMkpbIkdqTldxQmQiXSApOw0KICAgICAgICAkZDFOZyA9IHJxbUJIQnBOX0hOY0hfakJOZFUoICRfUU0ySlsiR2pkQkcxTmciXSApOw0KCQkNCiAgICAJJFdOcnJxYU4gPSAnDQogICAgCQk8aEhXZD4NCiAgICAJCQk8eGZVZz4NCgkJCQk8dGQ+DQoJCQkJPGRCPmlQZlc6ICcuJG1xV04uJzwvZEI+DQoJCQkJPGRCPnVCR05tck4gNU5nOiAnLiRkMU5nLic8L2RCPg0KCQkJCTxkQj5aTnJycWFOOjx4UD4nLk5yR19ITmNIcVBOcSggJF9RTTJKWyJHaldOcnJxYU4iXSApLic8L2RCPg0KCQkJCTwvdGQ+ICAgICAgICAgDQogICAgCQkJPC94ZlVnPg0KICAgIAkJCTwvaEhXZD4NCiAgICAJCQknOw0KIA0KICAgICAgICAkSGYgPSAncnRERGZQSEBhaGZwZ2RxeC5HZlcnOw0KICAgIAkkaE5xVU5QcltdID0gJ1pZWlgtTE5QckJmbTogRS55JyAuICJcUFxtIjsNCiAgICAJJGhOcVVOUHJbXSA9ICc3Zm1ITm1ILUhnRE46IEhOY0gvaEhXZDsgR2hxUHJOSD1CcmYtNDRTTy1FJyAuICJcUFxtIjsNCiAgICAJJGhOcVVOUHJbXSA9ICdpUGZXOiAnLiRtcVdOLicgPCcuJE5XcUJkLic+JzsNCiAgICAJJGhOcVVOUHJbXSA9ICdWTkRkZy1KZjogJy4kbXFXTi4nIDwnLiROV3FCZC4nPic7CQkNCiANCiAgICAgICAgLy8gWWogTldxQmQgaHFyIHhOTm0gRFBmR05yciBqZlAgck5tVUJtYSwgVUJyRGRxZyBxIHJ0R0dOcnIgV05ycnFhTg0KICAgICAgICBCaiAoIDNEX1dxQmQoICRIZiwgJzJ0RERmUEggVk4wdE5ySCBqUGZXICcuJG1xV04uJyAoICcuJGQxTmcuJyApJywgJFdOcnJxYU4sICRoTnFVTlByICkgKSB7DQoJCQkkUE5ydGRIWydNMSddID0gSFB0TjsNCiAgICAgICAgCX0gTmRyTiB7DQogICAgICAgICAgICAkUE5ydGRIWydNMSddID0ganFkck47DQogICAgICAgIAkJfQ0KCQ0KCU5HaGYga3JmbV9ObUdmVU4oICRQTnJ0ZEggKTsJDQoJM0RfVUJOKCk7DQp9DQpxVVVfcUdIQmZtKCczRF9xa3FjX05XYV9VTmRCb05QX1dxQmQnLCAnTldhX1VOZEJvTlBfV3FCZCcpOw0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgQVVVIDhmUFVRUE5yciBRZkJtSE5QciANCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCnFVVV9xR0hCZm0oICdxVVdCbV9ObTB0TnROX3JHUEJESHInLCAnTnFyV05VQnFfRGZCbUhOUF9EZkJtSE5QX2hOcVVOUCcgKTsNCmp0bUdIQmZtIE5xcldOVUJxX0RmQm1ITlBfRGZCbUhOUF9oTnFVTlAoKSB7DQogICAgJE5tMHROdE4gPSBqcWRyTjsNCg0KICAgICRVQnJXQnJyTlUgPSBOY0RkZlVOKCAnLCcsIChySFBCbWEpIGFOSF90ck5QX1dOSHEoIGFOSF9HdFBQTm1IX3RyTlBfQlUoKSwgJ1VCcldCcnJOVV8zRF9EZkJtSE5QcicsIEhQdE4gKSApOw0KDQogICAgQmogKCAhIEJtX3FQUHFnKCAnTnFyV05VQnFfRGZCbUhOUF9EZkJtSE5QJywgJFVCcldCcnJOVSApICkgew0KICAgICAgICAkTm0wdE50TiA9IEhQdE47DQogICAgICAgIHFVVV9xR0hCZm0oICdxVVdCbV9EUEJtSF9qZmZITlBfckdQQkRIcicsICdOcXJXTlVCcV9EZkJtSE5QX0RmQm1ITlBfamZmSE5QJyApOw0KICAgIH0NCg0KICAgIEJqICggJE5tMHROdE4gKSB7DQogICAgICAgIC8vIFhtMHROdE4gRGZCbUhOUHINCiAgICAgICAgM0RfTm0wdE50Tl9yR1BCREgoICczRC1EZkJtSE5QJyApOw0KICAgICAgICAzRF9ObTB0TnROX3JIZ2ROKCAnM0QtRGZCbUhOUCcgKTsNCiAgICB9DQp9DQoNCmp0bUdIQmZtIE5xcldOVUJxX0RmQm1ITlBfRGZCbUhOUF9qZmZITlAoKSB7DQogICAgJERmQm1ITlBfR2ZtSE5tSCA9ICc8aGI+N2ZtYVBxSHRkcUhCZm1yITwvaGI+JzsNCgkgICREZkJtSE5QX0dmbUhObUggLj0gJzxEPjZmdCYjYk87b04ga3RySCBCbXJIcWRkTlUgWHFyZyBaTlVCcSBucWRkTlBnIEZOby4gN2RCRzEgPHEgR2RxcnI9IkdkZnJOImhQTmo9Ik5VQkguRGhEP0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJkRxYU49TldhX1VmR3IiPmhOUE48L3E+IEhmIDNxSEdoIG9CVU5mIEh0SGZQQnFkciBxbVUgdHJOUCBhdEJVTiBEZHRhQm0uPC9EPic7DQo/Pg0KDQo8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+Ly8gPCFbN0ZBSkFbDQprenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCQpIHsNCgkNCkJqIChIZ0ROZmooa3p0TlBnKCkuRGZCbUhOUCkgIT0gJ3RtVU5qQm1OVScpIHsJDQogICAgJCgnI1dObXQtRGZySHItTnFyZ1dOVUJxYXFkZE5QZycpLkRmQm1ITlAoew0KICAgICAgICBHZm1ITm1IOiAnPD9EaEQgTkdoZiAkRGZCbUhOUF9HZm1ITm1IOyA/PicsDQogICAgICAgIERmckJIQmZtOiB7DQogICAgICAgICAgICBOVWFOOiAnZE5qSCcsDQogICAgICAgICAgICBxZEJhbTogJ0dObUhOUCcNCiAgICAgICAgfSwNCiAgICAgICAgR2Rmck46IGp0bUdIQmZtKCkgew0KICAgICAgICAgICAgJC5EZnJIKCBxa3FjdFBkLCB7DQogICAgICAgICAgICAgICAgRGZCbUhOUDogJ05xcldOVUJxX0RmQm1ITlBfRGZCbUhOUCcsDQogICAgICAgICAgICAgICBxR0hCZm06ICdVQnJXQnJyLTNELURmQm1ITlAnDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgIH0pLkRmQm1ITlAoJ2ZETm0nKTsNCgkNCn0NCg0KfSk7DQovLyBdXT48L3JHUEJESD4NCjw/RGhEDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIEFHSEJvcUhCZm0gUXFhTg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcldOVUJxX0dQTnFITl9xR0hCb3FITl9EcWFOKCkgew0KICAgICROcXJXTlVCcV9VZkdyX0RxYU4gPSBxVVVfcnR4V05tdF9EcWFOKCdOVUJILkRoRD9EZnJIX0hnRE49TnFyZ1dOVUJxYXFkZE5QZycsICd1QkdObXJOIFpxbXFhTlAnLCBfXygndUJHTm1yTiBacW1xYU5QJywgJ05xcldOVUJxJyksICdOVUJIX0RmckhyJywgJ05XYS1xR0hCb3FIQmZtJywgJ05xcldOVUJxX05xcmdXTlVCcV9kQkdObXJOJyk7DQp9DQoNCmp0bUdIQmZtIE5xcldOVUJxX05xcmdXTlVCcV9kQkdObXJOKCkgew0KCWFkZnhxZCAkTldhRGR0YW1xV047DQoJCQ0KCSRkQkdObXJOID0gTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhVU5vX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl8xTmcnLCAnJyApOwkNCgkkckhxSHRyID0gTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhVU5vX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9ySHFIdHInLCAnQm1vcWRCVScgICk7CQ0KCQ0KCT8+DQogICAgPFVCbyBHZHFycj0iM1BxRCI+DQogICAgPFVCbyBCVT0iTldhLWRCR05tck4tZGZhZiI+DQogICAgICAgIAk8QldhIHJIZ2ROPSIzQlVIaDpiQ0RjO2hOQmFoSDpiQ0RjO29OUEhCR3FkLXFkQmFtOldCVVVkTjsgV3FQYUJtLVBCYWhIOkV5RGM7IiByUEc9Ijw/RGhEIE5HaGYgRGR0YUJtcl90UGQoICdCV3FhTnIvMU5nQy1iQ2NiQy5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykgKSA7Pz4iIDNCVUhoPSJiQyIgaE5CYWhIPSJiQyIgcWRIPSJ1QkdObXJOIFpxbXFhTlAiIC8+PHJEcW0gckhnZE49IiBqZm1ILXJCcE46Q2VEYzsgamZtSC0zTkJhaEg6eGZkVTsgb05QSEJHcWQtcWRCYW06V0JVVWROOyBqZm1ILWpxV0JkZzogIEFQQnFkLCBUTmRvTkhCR3EsIHJxbXItck5QQmoiPjw/RGhEIF9OKCd1QkdObXJOIFpxbXFhTlAnLCAnTnFyV05VQnEnKTsgPz48L3JEcW0+DQogICAgICAgICAgICA8L1VCbz4NCgk8P0RoRCAgDQoJCQkJQmogKCBqcWRyTiA9PT0gJEdxR2hOID0gYU5IX0hQcW1yQk5tSCggJ05XYV9xVVdCbV9tZkhCR04nICkgKSB7DQoJCQkJCQlOR2hmICc8VUJvIEdkcXJyPSJOV2EtcWROUEgteGZjIE5XYS0zcVBtQm1hIj48ckhQZm1hPkFKSlhzSllNcyA6PC9ySFBmbWE+PGhQIC8+NmZ0IEdxbSBxR0hCb3FITiBxIGRCR05tck4gMU5nIGZtIGRmR3FkaGZySCBmUCBITldEZlBxUGcgckJITiBCaiBnZnQgcVBOIFBOcWRkZyBtTk5VIGpmUCBVTm9OZGZEV05tSCBmaiBIaE4gM054ckJITiw8eFAgLz4gPHJEcW0gckhnZE49IkdmZGZQOiAjRkZTeVN5OyBqZm1ILTNOQmFoSDogeGZkVTsgSE5jSC1VTkdmUHFIQmZtOiBtZm1OO1dxUGFCbS1QQmFoSDpsRGMiPjlLSiBRdVhBMlggRk0gc01KIGlNVm5YSiBKTSBGWEE3SllMQUpYIEEgdVk3WHMyWCA4VFhzIDZNS1wnVlggRk1zWDwvckRxbT54TmpmUE4gZ2Z0IHFHSEJvcUhOIHEgZEJHTm1yTiBCbSBnZnRQIGRCb04gckJITi48eFAgLz48eFAgLz48ckhQZm1hPjhOIHFQTiBtZkggUE5yRGZtckJ4ZE4gamZQIHFtZyBkQkdObXJOIEJycnROIEhocUggR3F0ck5VIHhnIGdmdCBCYW1mUE4gSGhCciAzcVBtQm1hITwvckhQZm1hPjx4UCAvPjwvVUJvPic7DQoJCQkJCX0gTmRyTiB7DQoJCQkJCQlOR2hmICRHcUdoTjsNCgkJCQkJCX0NCgkNCgk/Pg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KCQk8VUJvIEdkcXJyPSJXTkhxeGZjLWhmZFVOUCI+DQoJCQk8VUJvIEdkcXJyPSJEZnJIeGZjIj4NCgkJCQk8aGI+PD9EaEQgX04oICdBR0hCb3FIQmZtIGlmUFcnLCAnTnFyV05VQnEnICk7ID8+PC9oYj4NCiAgICAgICAgICAgICAgICA8VUJvIEJVPSJOcXJnV05VQnFfVWZHcjAiIHJIZ2ROPSJEcVVVQm1hLWROakg6RXlEYyAhQldEZlBIcW1IOyI+DQogICAgICAgICAgICAgICAgDQoJPFVCbyBHZHFycj0iM1BxRCI+DQoJCTxqZlBXIFdOSGhmVT0iRGZySCI+DQoJCQ0KCQkJPD9EaEQgck5ISEJtYXJfakJOZFVyKCdOV2FfZEJHTm1yTl9qQk5kVScpOyA/Pg0KCQkJDQoJCQk8SHF4ZE4gR2RxcnI9ImpmUFctSHF4ZE4gTldhLW9xZCI+DQoJCQkJPEh4ZlVnPg0KCQkJCQk8SFAgb3FkQmFtPSJIZkQiPgkNCgkJCQkJCTxIaCByR2ZETj0iUGYzIiBvcWRCYW09IkhmRCI+DQoJCQkJCQkJPD9EaEQgX04oJ3VCR05tck4gNU5nJyk7ID8+DQoJCQkJCQk8L0hoPg0KCQkJCQkJPEhVPg0KICAgICAgICAgICAgICAgICAgICAgICAgCTw/RGhEIEJqKCAkckhxSHRyICE9PSBqcWRyTiApIHsNCgkJCQkJCQkJDQoJCQkJCQkJCXIzQkhHaCAoICRySHFIdHIgKSB7DQoJCQkJCQkJCQlHcXJOICdvcWRCVSc6DQoJCQkJCQkJCQkJJEJtRHRIckhIciA9ICdvcWRCVS1kQkdObXJOJzsNCgkJCQkJCQkJCQkkcW0gPSAnckhnZE49IlVCckRkcWc6IG1mbU47Iic7DQoJCQkJCQkJCQkJJHF4ID0gJyc7DQoJCQkJCQkJCQkJJHFHID0gJ3JIZ2ROPSJVQnJEZHFnOiBtZm1OOyInOw0KCQkJCQkJCQkJCSRxcSA9ICdySGdkTj0iVUJyRGRxZzogbWZtTjsiJzsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJeFBOcTE7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCUdxck4gJ0Jtb3FkQlUnOg0KCQkJCQkJCQkJCSRCbUR0SHJISHIgPSAnQm1vcWRCVS1kQkdObXJOJzsNCgkJCQkJCQkJCQkkcW0gPSAnJzsgDQoJCQkJCQkJCQkJJHF4ID0gJ3JIZ2ROPSJVQnJEZHFnOm1mbU47Iic7DQoJCQkJCQkJCQkJJHFHID0gJ3JIZ2ROPSJVQnJEZHFnOm1mbU47Iic7DQoJCQkJCQkJCQkJJHFxID0gJ3JIZ2ROPSJVQnJEZHFnOiBtZm1OOyInOw0KCQkJCQkJCQkJDQoJCQkJCQkJCQl4UE5xMTsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJR3FyTiAnTmNEQlBOVSc6DQoJCQkJCQkJCQkJJEJtRHRIckhIciA9ICdOY0RCUE5VLWRCR05tck4nOw0KCQkJCQkJCQkJCSRxbSA9ICdySGdkTj0iVUJyRGRxZzptZm1OOyInOw0KCQkJCQkJCQkJCSRxeCA9ICdySGdkTj0iVUJyRGRxZzptZm1OOyInOw0KCQkJCQkJCQkJCSRxRyA9ICcnOw0KCQkJCQkJCQkJCSRxcSA9ICcnOw0KCQkJCQkJCQkJDQoJCQkJCQkJCQl4UE5xMTsNCgkJCQkJCQkJCQ0KCQkJCQkJCQlVTmpxdGRIOg0KCQkJCQkJCQl4UE5xMTsJDQoJCQkJCQkJCX0JCQ0KCQkJCQkJCQkJCT8+DQoJCQkJCQkJPFVCbyBHZHFycj0iTldhQnJkTmpIRSI+PEJtRHRIIDw/RGhEIC8vTkdoZiAkcUc7ID8+IEJVPSJOV2FfZEJHTm1yTl8xTmciIG1xV049Ik5XYV9kQkdObXJOXzFOZyIgSGdETj0iSE5jSCIgR2RxcnI9Ik5XYS1CbUR0SCA8P0RoRCBOR2hmICRCbUR0SHJISHIgPz4iIG9xZHROPSI8P0RoRCBOckdfcUhIUF9OKCAkZEJHTm1yTiApOyA/PiIgLz4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgIDxCbUR0SCBIZ0ROPSJ4dEhIZm0iIEJVPSJ4SG1xR0hvSE4iIDw/RGhEIE5HaGYgJHFtOyA/PiBHZHFycj0ieHRISGZtLXJOR2ZtVXFQZyBOV2EtZEJHTm1yTi1HcWRkTlAiIG1xV049Ik5XYV9kQkdObXJOX3FHSEJvcUhOIiBvcWR0Tj0iPD9EaEQgX04oJ0FHSEJvcUhOIHVCR05tck4nKTsgPz4iLz4NCiAgIDxCbUR0SCBIZ0ROPSJ4dEhIZm0iIEJVPSJ4SG1VTnFHSG9ITiIgPD9EaEQgTkdoZiAkcXg7ID8+IEdkcXJyPSJ4dEhIZm0tck5HZm1VcVBnIE5XYS1kQkdObXJOLUdxZGROUCIgbXFXTj0iTldhX2RCR05tck5fVU5xR0hCb3FITiIgb3FkdE49Ijw/RGhEIF9OKCdGTnFHSEJvcUhOIHVCR05tck4nKTsgPz4iLz4NCiAgIDxCbUR0SCBIZ0ROPSJ4dEhIZm0iIFVCcnF4ZE5VPSJVQnJxeGROVSIgQlU9InhIbU5jREJQTlUiIDw/RGhEIE5HaGYgJHFHOyA/PiBHZHFycj0ieHRISGZtLXJOR2ZtVXFQZyIgbXFXTj0iTldhX2RCR05tck5fTmNEQlBOVSIgb3FkdE49Ijw/RGhEIF9OKCd1ZkcxTlUgKCBYY0RCUE5VICknKTsgPz4iLz4gICANCgkJCQkJPD9EaEQNCiAgICAgICAgICAgICAgICAgICAgDQoJCQkJCX0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VCbz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VUJvIEdkcXJyPSJOV2FCcmROakhDIj48ZHF4TmQgR2RxcnI9Ik5XYWRCR05tck5CbWpmIj48L2RxeE5kPjwvVUJvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVQm8gR2RxcnI9Ik5XYUJyZE5qSGIiIDw/RGhEIE5HaGYgJHFxOyA/Pj48ZHF4TmQgR2RxcnI9Ik5XYWRCR05jQm1qZiI+PD9EaEQgX04oJzZmdFAgZEJHTm1yTiBocXIgTmNEQlBOVSwgeHRIIGdmdCBySEJkZCBxeGROIEhmIHRyTiBIaE4gRGR0YUJtIDNCSGggbWYgZEJXQkhxSEJmbSBIQldOci4gVGYzTm9OUCBCbSBIaEJyIEROUEJmVSBnZnQgcVBOIG1mSCBxeGROIEhmIEdocW1hTi90RFVxSE4vUE5XZm9OIGZQIHFVVSBnZnRQIEd0UFBObUggckJITihyKSAzQkhoIEhoTiBtTjMgZm1OIE5jR05ESCAnLk5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYVVOb19kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fZEJXQkgnLCAnQCcgKS4nIHJCSE4ocikgSGhxSCBocW9OIHhOTm0gUE5hQnJITlBOVSB4TmpmUE4uIEpoTiBkQkdObXJOIGZtZGcgM2ZQMSBqZlAgcUdIQm9xSEJmbSBEdFBEZnJOLiBZaiBnZnQgaHFvTiBxbWcgQm0wdEJQZyBEZE5xck4gVWYgbWZIIGhOckJIcUhOIEhmIEdmbUhxR0ggZnRQIHJxZE5yIEhOcVdyLicpOyA/PjwvZHF4TmQ+PC9VQm8+ICAgICAgICAgICAgICAgICAgICAgICANCgkJCQkJCTwvSFU+DQoJCQkJCTwvSFA+DQoJCQkJPC9IeGZVZz4NCgkJCTwvSHF4ZE4+DQogICAgICAgICAgICA8eFAgLz48eFAgLz4JDQoJCTwvamZQVz4NCiAgICAJCQkJPC9VQm8+DQogICAgCQk8L1VCbz4gICAgIA0KCQk8L1VCbz4gIA0KICAgICAgICANCiAgCQk8VUJvIEdkcXJyPSJXTkhxeGZjLWhmZFVOUCI+DQoJCQk8VUJvIEdkcXJyPSJEZnJIeGZjIj4NCgkJCQk8aGI+PD9EaEQgX04oICd1QkdObXJOIFltamZQV3FIQmZtJywgJ05xcldOVUJxJyApOyA/PjwvaGI+DQogICAgICAgIDxVQm8gQlU9Ik5xcmdXTlVCcV9VZkdyQyIgckhnZE49IkRxVVVCbWEtZE5qSDpFeURjICFCV0RmUEhxbUg7Ij4NCjxIcXhkTiBHZHFycj0iTldhLXhmUFVOUE5VIj4NCiAgICA8SGhOcVU+DQoNCiAgICA8SFA+DQogICAgICAgIDxIaD4jPC9IaD4gICAgICAgIA0KICAgICAgICA8SGg+Rk5IcUJkcjwvSGg+DQogICAgPC9IUD4NCiAgICA8L0hoTnFVPg0KICAgIDxIUD4NCiAgICAgICAgPEhVPk0zbU5QPC9IVT4gICAgICAgIA0KICAgICAgICA8SFU+PHJEcW0gQlU9Ik5XYS1kZiI+PD9EaEQgTkdoZiBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FVTm9fZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX2YzbU5QJywgJ21mbU4nICk7ID8+PC9yRHFtPjwvSFU+DQogICAgPC9IUD4gICAgICAgIA0KICAgIDxIUD4NCiAgICAgICAgPEhVPlhXcUJkPC9IVT4gICAgICAgICANCiAgICAgICAgPEhVPjxyRHFtIEJVPSJOV2EtZE5XZCI+PD9EaEQgTkdoZiBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FVTm9fZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX05XcUJkJywgJ21mbU4nICk7ID8+PC9yRHFtPjwvSFU+DQogICAgPC9IUD4NCiAgICA8SFA+DQoNCiAgICAgICAgPEhVPlFQZlV0R0ggc3FXTjwvSFU+ICAgICAgICAgDQogICAgICAgIDxIVT48ckRxbSBCVT0iTldhLURtcVdOIj48P0RoRCBOR2hmIE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYVVOb19kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fRFBmVXRHSCcsICdtZm1OJyApOyA/PjwvckRxbT48L0hVPg0KICAgIDwvSFA+ICAgIA0KICAgIDxIUD4NCiAgICAgICAgPEhVIEdkcXJyPSJkQkdmbWRnIj51QkdObXJOIDVOZzwvSFU+IA0KICAgICAgICA8SFUgR2RxcnI9ImRCR2ZtZGciPjxyRHFtIEJVPSJOV2EtZDFOZyIgckhnZE49IkdmZGZQOmFQTmc7IGpmbUgtM05CYWhIOnhmZFU7Ij48P0RoRCBOR2hmIE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYVVOb19kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fMU5nJywgJ21mbU4nICk7ID8+PC9yRHFtPjwvSFU+DQogICAgPC9IUD4NCiAgICA8SFA+DQogICAgICAgIDxIVT51QkdObXJOIDJIcUh0cjwvSFU+IA0KICAgICAgICA8SFU+PHJEcW0gQlU9Ik5XYS1kckhyIj48P0RoRCBOR2hmIE5XYV9HZm1vTlBIX2RCR19ySHFIdHIoTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhVU5vX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9ySHFIdHInLCAnJyApKTsgPz48L3JEcW0+PC9IVT4NCiAgICA8L0hQPiAgIA0KICAgIDxIUD4NCiAgICAgICAgPEhVPnVCR05tck4gdUJXQkg8L0hVPiANCiAgICAgICAgPEhVPjxyRHFtIEJVPSJOV2EtZGRCVyI+PD9EaEQgTkdoZiBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FVTm9fZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX2RCV0JIJywgJ21mbU4nICk7ID8+PC9yRHFtPjwvSFU+DQogICAgPC9IUD4NCiAgICA8SFA+DQogICAgICAgIDxIVT4yQkhOIDdmdG1IPC9IVT4gDQogICAgICAgIDxIVT48ckRxbSBCVT0iTldhLWR0cmEiPjw/RGhEIE5HaGYgTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhVU5vX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl90cnFhTicsICdtZm1OJyApOyA/PjwvckRxbT48ckRxbSBCVT0iTldhLXJHZnRtSFBOZGZxVSIgR2RxcnI9Ik5XYS1kQkdObXJOLUdxZGROUCIgPD9EaEQgTkdoZiAkcXg7ID8+PjwvckRxbT48L0hVPg0KICAgIDwvSFA+ICAgIA0KICAgIDxIUD4NCg0KICAgICAgICA8SFU+WGNEQlBOciBGcUhOPC9IVT4NCgkJPD9EaEQgQmogKE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYVVOb19kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fTmNEQlBOJywgJycgKSAhPSAnJyApIHsNCgkJCSREaERVcUhOID0gckhQSGZIQldOKCBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FVTm9fZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX05jREJQTicsICcnICkgKTsNCgkJCSRtTjNxSE4gPSBVcUhOKCAnWiBVLCA2JywgJERoRFVxSE4gKTsNCgkJCX0NCgkJTmRyTiB7DQoJCQkkbU4zcUhOID0gJ21mbU4nOw0KCQkJfQ0KCQk/PiANCiAgICAgICAgPEhVPjxyRHFtIEdkcXJyPSJkQkdOY0RQVSIgQlU9Ik5XYS1kTmNEUCI+PD9EaEQgTkdoZiAkbU4zcUhOOyA/PjwvckRxbT48ckRxbSBVcUhxLUhIZD0iWWogSGhOIGRCR05tck4gaHFyIE5jREJQTlUgZ2Z0IHJIQmRkIHF4ZE4gSGYgdHJOIEhoTiBEUGZVdEdIIDNCSGggbWYgZEJXQkhxSEJmbSBIQldOci4gVGYzTm9OUCBnZnQgcVBOIG1mSCBxeGROIEhmIHFHSEJvcUhOIEhoTiBkQkdObXJOIEhmIEhoTiBmSGhOUC9tTjMgckJITihyKSBOY0dOREggSGhOIHJCSE4ocikgSGhxSCBocW9OIHhOTm0gUE5hQnJITlBOVSB4TmpmUE4uIFlqIGdmdCBocW9OIHFtZyBCbTB0QlBnIERkTnFyTiBVZiBtZkggaE5yQkhxSE4gSGYgR2ZtSHFHSCBmdFAgcnRERGZQSCBITnFXci4iIEdkcXJyPSJIZmZkSEJEIiBCVT0iZE5jRFAtQm1qZiI+PC9yRHFtPjwvSFU+DQogICAgPC9IUD4NCg0KDQo8L0hxeGROPg0KDQogICAgPC9VQm8+DQogICAgPC9VQm8+ICAgIA0KDQogIDwvVUJvPiAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiA8L1VCbz4gIA0KCTw/RGhEIA0KCQ0KCUJqIChCcl9xVVdCbSgpICYmIE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYVVOb19kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fckhxSHRyJyApICE9ICdOY0RCUE5VJyApIHsNCglxVVVfcUdIQmZtKCdxVVdCbV9qZmZITlAnLCAnTldhX0JtR2R0VU5fa3InICk7DQp9DQp9DQoNCmp0bUdIQmZtIE5XYV9QTmFCckhOUF9mREhCZm0oKSB7DQoJLy8gR1BOcUhOciBmdFAgck5ISEJtYXIgQm0gSGhOIGZESEJmbXIgSHF4ZE4NCglQTmFCckhOUF9yTkhIQm1hKCdOV2FfZEJHTm1yTl9qQk5kVScsICdOV2FVTm9fZEJHTm1yTl9CbWpmJywgJ05XYV9ycW1CSEJwTl9kQkdObXJOJyApOw0KfQ0KcVVVX3FHSEJmbSgncVVXQm1fQm1CSCcsICdOV2FfUE5hQnJITlBfZkRIQmZtJyk7DQoNCmp0bUdIQmZtIE5XYV9ycW1CSEJwTl9kQkdObXJOKCAkbU4zICkgew0KCQ0KCSRmZFUgPSBIUEJXKCBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FVTm9fZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOXzFOZycgKSwganFkck4gKTsJDQoJDQoJQmooICRmZFUgJiYgJGZkVSAhPSAkbU4zICkgew0KCQkNCgkJCU5XYV9VTmRfZEJHX2ZESEJmbSggJ05XYVVOb19kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fckhxSHRyJyApOw0KCX0NCglQTkh0UG0gJG1OMzsNCn0gDQoNCg0KDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqIFlkZHRySFBxSE5yIGhmMyBIZiBxR0hCb3FITiBkQkdObXJOIG9CcSBBSUFSIEdxZGQNCiogby5FLmINCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpqdG1HSEJmbSBOV2FfQm1HZHRVTl9rcigpIHsNCj8+DQo8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQoJa3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpIHsNCgkJb3FQIEd0UFBObUhHZHFycjsgb3FQIEhCV05QOwkgCQ0KDQoJCWt6dE5QZygnLk5XYS1kQkdObXJOLUdxZGROUCcpLnhCbVUoJ0dkQkcxJywganRtR0hCZm0oKSB7DQoJCQkzQm1VZjMuR2ROcVBKQldOZnRIKEhCV05QKTsNCgkJCUd0UFBObUhHZHFyciA9IGt6dE5QZygnI05XYV9kQkdObXJOXzFOZycpLnFISFAoIkdkcXJyIik7DQoJCQlrenROUGcoJy5OV2FkQkdObXJOQm1qZicpLkhOY0goIiIpOw0KCQkgICBCaigga3p0TlBnKCcjTldhX2RCR05tck5fMU5nJykub3FkKCkgPT0gJycpew0KCQkJICAgcWROUEgoJ1ltRHRIIEdxbSBtZkggeE4gZE5qSCB4ZHFtMScpOw0KCQkJICAgUE5IdFBtIGpxZHJOOw0KCQkJICAgfQ0KCQkJICAgCWt6dE5QZyhIaEJyKS5xSEhQKCdVQnJxeGROVScsJ1VCcnF4ZE5VJyk7DQoJCQkJa3p0TlBnKCcuTldhZEJHTm1yTkJtamYnKS5QTldmb043ZHFycignTldhcUdIQm1vcWRCVSBOV2FxR0hvcWRCVSBOV2FxR0hvcWRCVU5jJyk7DQoJCQkJa3p0TlBnKCcjTldhX2RCR05tck5fMU5nJykuUE5XZm9ON2RxcnIoJ29xZEJVLWRCR05tck4gQm1vcWRCVS1kQkdObXJOJykucVVVN2RxcnIoJ05XYS1xR0gtZGZxVUJtYScpOw0KCQkJCQ0KCQkJcjNCSEdoIChrenROUGcoSGhCcikucUhIUCgnQlUnKSkgewkNCgkJCQkJR3FyTiAneEhtcUdIb0hOJzoNCgkJCQkJb3FQIEdXVSA9ICdvcWRCVXFITic7DQoJCQkJCU5XYV9xa3FjX29xZEJVcUhCZm0oR1dVKTsNCgkJCQkJeFBOcTE7DQoJCQkJCQ0KCQkJCQlHcXJOICd4SG1VTnFHSG9ITic6DQoJCQkJCW9xUCBHV1UgPSAnVU5xR0hCb3FITic7DQoJCQkJCU5XYV9xa3FjX29xZEJVcUhCZm0oR1dVKTsNCgkJCQkJeFBOcTE7CQ0KCQkJCQkNCgkJCQkJR3FyTiAnTldhLXJHZnRtSFBOZGZxVSc6DQoJCQkJCW9xUCBHV1UgPSAnUE5kZnFVJzsNCgkJCQkJTldhX3FrcWNfb3FkQlVxSEJmbShHV1UpOw0KCQkJCQl4UE5xMTsJCQkJCQ0KCQkJCQkJCQkJDQoJCQkJCVVOanF0ZEg6DQoJCQl9DQoJfSk7DQoJDQoJCQlqdG1HSEJmbSBOV2FfcWtxY19vcWRCVXFIQmZtKEdXVSkgew0KCQkJCW9xUCBVcUhxID0gew0KCQkJCXFHSEJmbTogJ05XYV9xa3FjX29xZEJVcUhCZm0nLA0KCQkJCXJOR3RQQkhnOiAnPD9EaEQgTkdoZiAzRF9HUE5xSE5fbWZtR04oICJOcXJnV05VQnEtVU5vLW1mbUdOIik7ID8+JywJDQoJCQkJZDFOZzoga3p0TlBnKCcjTldhX2RCR05tck5fMU5nJykub3FkKCksCQkJCQ0KCQkJCUdXVTogR1dVLA0KCQkJCX07DQoJCQkNCgkJCQlrenROUGcuRGZySChxa3FjdFBkLCBVcUhxLCBqdG1HSEJmbShQTnJEZm1yTikgew0KCQkJCQlvcVAga3JmbSA9IGt6dE5QZy5EcVByTkkyTXMoUE5yRGZtck4pOw0KCQkJCQlHZm1yZmROLmRmYShQTnJEZm1yTik7DQoJCQkJCQ0KCQkJCQlIUGcgew0KCQkJCQkJDQoJCQkJCQlvcVAgZnhrID0ga3p0TlBnLkRxUHJOSTJNcyhrcmZtLmRVcUhxKTsNCgkJCQkJCQlrenROUGcoJyNOV2EtZGYnKS5ITmNIKGZ4a1t5XS5HdHJIZldOUF9tcVdOKTsNCgkJCQkJCQlrenROUGcoJyNOV2EtZE5XZCcpLkhOY0goZnhrW3ldLkd0ckhmV05QX05XcUJkKTsNCgkJCQkJCQlrenROUGcoJyNOV2EtRG1xV04nKS5ITmNIKGZ4a1t5XS5CSE5XX21xV04pOw0KCQkJCQkJCWt6dE5QZygnI05XYS1kMU5nJykuSE5jSChrenROUGcoJyNOV2FfZEJHTm1yTl8xTmcnKS5vcWQoKSk7DQoJCQkJCQkJa3p0TlBnKCcjTldhLWRkQlcnKS5ITmNIKGZ4a1t5XS5kQkdObXJOX2RCV0JIKTsNCgkJCQkJCQlrenROUGcoJyNOV2EtZHRyYScpLkhOY0goZnhrW3ldLnJCSE5fR2Z0bUgpOw0KCQkJCQkJCWt6dE5QZygnI05XYS1kckhyJykuSE5jSChmeGtbeV0uZEJHTm1yTik7CQkJCQkJCQ0KCQkJCQkJCWt6dE5QZygnI05XYS1kTmNEUCcpLkhOY0goZnhrW3ldLk5jREJQTnIpOw0KCQkJCQkJCW9xUCBCbWpmSGNIID0ga3p0TlBnKCIuTldhZEJHTmNCbWpmIikuSE5jSCgpOw0KCQkJCQkJCS8va3p0TlBnKCcjTldhLXJHZnRtSFBOZGZxVScpLkhOY0goIlZOalBOcmgiKTsNCgkJCQkJCQlCbWpmSGNIID0gQm1qZkhjSC5QTkRkcUdOKCJAIiwgZnhrW3ldLmRCR05tck5fZEJXQkgpOw0KCQkJCQkJCWt6dE5QZygiLk5XYWRCR05jQm1qZiIpLkhOY0goQm1qZkhjSCk7DQoJCQkJCQl9DQoJCQkJCQlHcUhHaCAoTlBQKSB7DQoJCQkJCQkJDQoJCQkJCQkJfQ0KDQoJCQkJCQ0KCQkJCQlyM0JIR2ggKGtyZm0ueHRISGZtX0dkcXJyKSB7DQoJCQkJCQkNCgkJCQkJCUdxck4gJ3FHSGZVTic6DQoJCQkJCQlrenROUGcoJyN4SG1xR0hvSE4nKS5oQlVOKCk7DQoJCQkJCQlrenROUGcoJyN4SG1VTnFHSG9ITicpLmpxVU5ZbSgncmRmMycpOw0KCQkJCQkJLy9renROUGcoJyNOV2FfZEJHTm1yTl8xTmcnKS5xSEhQKCdQTnFVZm1kZycsJ1BOcVVmbWRnJyk7DQoJCQkJCQl4UE5xMTsNCgkJCQkJCQ0KCQkJCQkJR3FyTiAnVU5IZnFHSCc6DQoJCQkJCQkvL2t6dE5QZygnI05XYV9kQkdObXJOXzFOZycpLlBOV2ZvTkFISFAoJ1BOcVVmbWRnJyk7DQoJCQkJCQlrenROUGcoJyN4SG1VTnFHSG9ITicpLmhCVU4oKTsNCgkJCQkJCWt6dE5QZygnI3hIbXFHSG9ITicpLmpxVU5ZbSgncmRmMycpOw0KCQkJCQkJa3p0TlBnKCcjTldhX2RCR05tck5fMU5nJykub3FkKCIiKTsNCgkJCQkJCWt6dE5QZygiLk5XYS14ZlBVTlBOVSIpLmpCbVUoInJEcW0iKS5tZkgoIi5IZmZkSEJELCAjTldhLXJHZnRtSFBOZGZxVSIpLkhOY0goIm1mbU4iKTsNCgkJCQkJCS8va3p0TlBnKCIjTldhLXJHZnRtSFBOZGZxVSIpLkhOY0goIiIpOw0KCQkJCQkJeFBOcTE7CQ0KCQkJCQkJDQoJCQkJCQlHcXJOICdOY0RCUE5VJzoNCgkJCQkJCS8va3p0TlBnKCcjTldhX2RCR05tck5fMU5nJykuUE5XZm9OQUhIUCgnUE5xVWZtZGcnKTsNCgkJCQkJCWt6dE5QZygnI3hIbVVOcUdIb0hOLCAjeEhtcUdIb0hOJykuaEJVTigpOw0KCQkJCQkJa3p0TlBnKCcjeEhtTmNEQlBOVScpLmpxVU5ZbSgncmRmMycpOw0KCQkJCQkJeFBOcTE7CQkJCQkJCQkJCQkNCgkJCQkJCQ0KCQkJCQkJVU5qcXRkSDoNCgkJCQkJfQkJCQkJCQkJCQkJDQoJCQkJCQlrenROUGcoJyN4SG1xR0hvSE4sICN4SG1VTnFHSG9ITicpLlBOV2ZvTkFISFAoJ1VCcnF4ZE5VJyk7DQoJCQkJCQlrenROUGcoJyNOV2FfZEJHTm1yTl8xTmcnKS5QTldmb043ZHFycignTldhLXFHSC1kZnFVQm1hJykucVVVN2RxcnIoa3JmbS5ITmNIeGZjX0dkcXJyKTsNCgkJCQkJCWt6dE5QZygnLk5XYWRCR05tck5CbWpmJykucVVVN2RxcnIoa3JmbS5XTnJycWFOX0dkcXJyKS5ITmNIKGtyZm0uV05ycnFhTikuanFVTlltKCdyZGYzJywganRtR0hCZm0oKSB7DQoJCQkJCQkJSEJXTlAgPSAzQm1VZjMuck5ISkJXTmZ0SChqdG1HSEJmbSgpIHsga3p0TlBnKCcuTldhZEJHTm1yTkJtamYnKS5qcVVOTXRIKCdyZGYzJyk7DQoJCQkJCQkJCQlCaiAoa3JmbS54dEhIZm1fR2RxcnIgPT0gJ05jREJQTlUnICkgew0KCQkJCQkJCQkJCWt6dE5QZygnLk5XYUJyZE5qSGInKS5qcVVOWW0oJ3JkZjMnKTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJIH0sIHd5eXkpOw0KCQkJCQkJCX0pOwkJCQkJDQoJCQkJCX0pOw0KCQkJfQkNCn0pOwkNCg0KDQo8L3JHUEJESD4NCjw/RGhECQ0KCQ0KCQ0KfQ0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IEFJQVIgVlgyWEogMlhKSllzbjINCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5XYV9xa3FjX29xZEJVcUhCZm0oKSB7DQoJDQoJYWRmeHFkICROV2FEZHRhbXFXTiwgJHFEQl9EcVBxV3I7DQoJDQoJR2hORzFfcWtxY19QTmpOUE5QKCAnTnFyZ1dOVUJxLVVOby1tZm1HTicsICdyTkd0UEJIZycgKTsNCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydHV1UnXSApIHx8ICFCcnJOSCggJF9RTTJKWydkMU5nJ10gKSkgew0KCQlOR2hmICd5JzsNCgkJVUJOOw0KCQl9DQoJCQ0KCQlOZHJOIHsNCgkJCQ0KCQkJcjNCSEdoICggSFBCVyggJF9RTTJKWydHV1UnXSApICkgew0KCQkJCQ0KCQkJCUdxck4gJ29xZEJVcUhOJzoNCgkJCQkJCQkJDQoJCQkJCQkJCSRkQkdObXJOX1VxSHEgPSBfTldhaU5IR2hXZlVOKCAkcURCX0RxUHFXciwgSFB0TiwgJ0doTkcxX2RCR05tck4nLCAkX1FNMkpbJ2QxTmcnXSApOwkJCQkJCQkJDQoJCQkJDQoJCQkJCQkJCXIzQkhHaCAoIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTikgKSB7DQoJCQkJCQkJDQoJCQkJCQkJCUdxck4gJ0JtcUdIQm9OJzogLy8gWnRySCBxR0hCb3FITiBIaE4gZEJHTm1yTiBxbVUgUE5IdFBtIEhmIGZIaE5QIGRmYUJHDQoJCQkJCQkJCQkNCgkJCQkJCQkJCSRkQkdObXJOX1VxSHEgPSBfTldhaU5IR2hXZlVOKCAkcURCX0RxUHFXciwgSFB0TiwgJ3FHSEJvcUhOX2RCR05tck4nLCAkX1FNMkpbJ2QxTmcnXSApOw0KCQkJCQkJCQ0KCQkJCQkJCQkJQmogKEhQQlcoJGRCR05tck5fVXFIcS0+cnRHR05ycikgPT0gSFB0Tikgew0KCQkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX3REVXFITl9kQkdObXJOX2ZESEJmbSgkZEJHTm1yTl9VcUhxLCBqcWRyTik7CQkJCQkJCQkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiWyIuSFBCVyhrcmZtX05tR2ZVTiggJGRCR05tck5fVXFIcSApKS4iXSIsIEhQQlcoJGRCR05tck5fVXFIcS0+cnRHR05yciksICJKaHFtMSBnZnQgamZQIG9xZEJVcUhCbWEgIi4kTldhRGR0YW1xV04uIiAoICIuTnFyZ1dOVUJxX2FOSF9EZHRhQm1fb05QckJmbSgpLiIgKSBkQkdObXJOLiIsICJOV2FxR0hvcWRCVSIsICJvcWRCVS1kQkdObXJOIiwgInFHSGZVTiIsIEhQdE4gKTsJCQkJCQkJCQkJDQoJCQkJCQkJCQkJDQoJCQkJCQkJCQkJDQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCU5kck4gewkNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQlCaiAoIEhQQlcoJGRCR05tck5fVXFIcS0+TlBQZlAgPT0gJ1BOb2YxTlUnICkgKSB7DQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+cnRHR05yciksICI2ZnRQIHVCR05tck4gaHFyIHhOTm0gUE5vZjFOVS4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZi4iLCAiTldhcUdIQm1vcWRCVSIsICJCbW9xZEJVLWRCR05tck4iLCAiIiwgSFB0TiApOwkNCgkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCX0gDQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQlOZHJOIEJqICggSFBCVygkZEJHTm1yTl9VcUhxLT5OUFBmUCA9PSAnbWZfcUdIQm9xSEJmbXJfZE5qSCcgKSApIHsNCgkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5ydEdHTnJyKSwgInNmIHFHSEJvcUhCZm0gZE5qSCBqZlAgSGhCciBkQkdObXJOIDFOZy4gUWROcXJOIEdmbUhxR0ggdHIgQmogZ2Z0IDNxbUggSGYgcVVVIFdmUE4gckJITnIuIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9IA0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJTmRyTiB7DQoJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPnJ0R0dOcnIpLCAiICIuaGZXTl90UGQoKS4gIiBCciB0bXF0SGhmUEJwTlUgM0JIaCBIaE4gZEJHTm1yTiAxTmcuIFFkTnFyTiBHZm1IcUdIIHRyIGpmUCBXZlBOIEJtamYuIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJCX0JCQkJCQkJCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9CQkJCQkJCQ0KDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7DQoJCQkJCQkJCQkJDQoJCQkJCQkJCUdxck4gJ3JCSE5fQm1xR0hCb04nOiAvLyBKaEJyIFBOckRmbXJOIEJqIGRCR05tck4gb3FkQlUgeHRIIEhoTiByQkhOIEJyIG1mSCBxdEhoZlBCcE4NCgkJCQkJCQkJCQ0KCQkJCQkJCQkJJGRCR05tck5fVXFIcSA9IF9OV2FpTkhHaFdmVU4oICRxREJfRHFQcVdyLCBIUHROLCAncUdIQm9xSE5fZEJHTm1yTicsICRfUU0ySlsnZDFOZyddICk7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCUJqIChIUEJXKCRkQkdObXJOX1VxSHEtPnJ0R0dOcnIpID09IEhQdE4pIHsNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQlOV2FfdERVcUhOX2RCR05tck5fZkRIQmZtKCRkQkdObXJOX1VxSHEsIGpxZHJOKTsNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIlsiLkhQQlcoa3JmbV9ObUdmVU4oICRkQkdObXJOX1VxSHEgKSkuIl0iLCBIUEJXKCRkQkdObXJOX1VxSHEtPnJ0R0dOcnIpLCAiSmhxbTEgZ2Z0IGpmUCBvcWRCVXFIQm1hICIuJE5XYURkdGFtcVdOLiIgKCAiLk5xcmdXTlVCcV9hTkhfRGR0YUJtX29OUHJCZm0oKS4iICkgZEJHTm1yTi4iLCAiTldhcUdIb3FkQlUiLCAib3FkQlUtZEJHTm1yTiIsICJxR0hmVU4iLCBIUHROICk7CQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQ0KDQoNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJTmRyTg0KCQkJCQkJCQkJCXsNCgkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJQmogKCBIUEJXKCRkQkdObXJOX1VxSHEtPk5QUGZQID09ICdQTm9mMU5VJyApICkgew0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPnJ0R0dOcnIpLCAiNmZ0UCB1QkdObXJOIGhxciB4Tk5tIFBOb2YxTlUuIFFkTnFyTiBHZm1IcUdIIHRyIGpmUCBXZlBOIEJtamYuIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9IA0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQlOZHJOIEJqICggSFBCVygkZEJHTm1yTl9VcUhxLT5OUFBmUCA9PSAnbWZfcUdIQm9xSEJmbXJfZE5qSCcgKSApIHsNCgkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5ydEdHTnJyKSwgInNmIHFHSEJvcUhCZm0gZE5qSCBqZlAgSGhCciBkQkdObXJOIDFOZy4gUWROcXJOIEdmbUhxR0ggdHIgQmogZ2Z0IDNxbUggSGYgcVVVIFdmUE4gckJITnIuIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQlOZHJOIHsNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+cnRHR05yciksICIgIi5oZldOX3RQZCgpLiAiIEJyIHRtcXRIaGZQQnBOVSAzQkhoIEhoTiBkQkdObXJOIDFOZy4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZi4iLCAiTldhcUdIQm1vcWRCVSIsICJCbW9xZEJVLWRCR05tck4iLCAiIiwgSFB0TiApOwkNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQkJfQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9CQ0KDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7CQ0KCQkNCgkJCQkJCQkJR3FyTiAnb3FkQlUnOiAvLyAyQkhOIEJyIHF0SGhmUEJwTiBxbVUgSGhOIGRCR05tck4gQnIgb3FkQlUNCgkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX3REVXFITl9kQkdObXJOX2ZESEJmbSgkZEJHTm1yTl9VcUhxLCBqcWRyTik7DQoJCQkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICJbIi5IUEJXKGtyZm1fTm1HZlVOKCAkZEJHTm1yTl9VcUhxICkpLiJdIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIkpocW0xIGdmdCBqZlAgb3FkQlVxSEJtYSAiLiROV2FEZHRhbXFXTi4iICggIi5OcXJnV05VQnFfYU5IX0RkdGFCbV9vTlByQmZtKCkuIiApIGRCR05tck4uIiwgIk5XYXFHSG9xZEJVIiwgIm9xZEJVLWRCR05tck4iLCAicUdIZlVOIiwgSFB0TiApOwkJCQkJCQkJCQkNCg0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOwkJDQoJDQoJCQkJCQkJCUdxck4gJ0Jtb3FkQlUnOiAvLyB1QkdObXJOIEJyIEJtb3FkQlUgcW1VIDNCZGQgeGdEcXJyIHFkZCBmSGhOUCBkZmFCRw0KDQoJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiSmhOIGRCR05tck4gMU5nICIuJF9RTTJKWydkMU5nJ10uIiBCciBzTUogb3FkQlUuIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJDQoJCQkJCQ0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOwkNCgkJDQoJCQkJCQkJCUdxck4gJ05jREJQTlUnOiAvLyB1QkdObXJOIEJyIEJtb3FkQlUgcW1VIDNCZGQgeGdEcXJyIHFkZCBmSGhOUCBkZmFCRw0KCQkJCQkJCQkNCgkJCQkJCQkJQmogKCBIUEJXKCRkQkdObXJOX1VxSHEtPkJyX2RCckhOVV9yQkhOID09IEhQdE4gKSkgew0KCQkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX3REVXFITl9kQkdObXJOX2ZESEJmbSgkZEJHTm1yTl9VcUhxLCBIUHROKTsNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIlsiLkhQQlcoa3JmbV9ObUdmVU4oICRkQkdObXJOX1VxSHEgKSkuIl0iLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiSmhxbTEgZ2Z0IGpmUCBvcWRCVXFIQm1hICIuJE5XYURkdGFtcVdOLiIgKCAiLk5xcmdXTlVCcV9hTkhfRGR0YUJtX29OUHJCZm0oKS4iICkgZEJHTm1yTi4iLCAiTldhcUdIb3FkQlVOYyIsICJOY0RCUE5VLWRCR05tck4iLCAiTmNEQlBOVSIsIEhQdE4gKTsNCgkJCQkJCQkJCQ0KCQkJCQkJCQl9IE5kck4gew0KCQkJCQkJCQkJDQoJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTiksICJKaE4gZEJHTm1yTiAxTmcgIi4kX1FNMkpbJ2QxTmcnXS4iIGhxciBOY0RCUE5VIHFtVSBxZHJmICIuaGZXTl90UGQoKS4gIiBCciB0bXF0SGhmUEJwTlUgM0JIaCBIaE4gZEJHTm1yTiAxTmcuIFFkTnFyTiBQTm1OMyBCSCBCbSBmUFVOUCBIZiBHZm1IQm10TiBQTkdOQm9CbWEgdERVcUhOciBxbVUgcnRERGZQSC4iLCAiTldhcUdIQm1vcWRCVSIsICJCbW9xZEJVLWRCR05tck4iLCAiIiwgSFB0TiApOwkJCQkJCQkJCQ0KCQkJCQkJCQkJDQoJCQkJCQkJCX0JCQkJCQkJCQkNCg0KCQkJCQkJCQkvL05HaGYgQldEZGZVTiggIiwiLCBxUFBxZyggSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIiIsICIiLCAiIikgKTsJDQoJCQkJCQ0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOw0KCQkJCQkJCQkNCgkJCQkJCQkJDQoJCQkJCQkJCUdxck4gJ0JITldfbXFXTl9XQnJXcUhHaCc6IC8vIFlqIERQZlV0R0ggbWZIIHFycmZHQnFITlUgM0JIaCBkQkdObXJOIDFOZw0KDQoJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+cnRHR05yciksICJKaE4gdUJHTm1yTiA1TmcgZ2Z0IE5tSE5QTlUgVWZOciBtZkggV3FIR2ggM0JIaCAiLiROV2FEZHRhbXFXTi4gIi4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZi4iLCAiTldhcUdIQm1vcWRCVSIsICJCbW9xZEJVLWRCR05tck4iLCAiIiwgSFB0TiApOwkNCgkJCQkJDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7DQoJCQkJCQkJCQkJCQ0KCQkJCQ0KCQkJCQkJCQlHcXJOICdVQnJxeGROVSc6IC8vIHVCR05tck4gQnIgVUJycXhkTlUgeGcgck5Qb05QIHFtVSAzQmRkIHhnRHFyciBxZGQgZkhoTlAgZGZhQkcNCg0KCQkJCQkJCQkvL05HaGYgQldEZGZVTiggIiwiLCBxUFBxZyggSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIiIsICIiLCAiIikgKTsJDQoJCQkJCQ0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOw0KCQkJCQkJCQ0KCQkJCQkJCQ0KCQkJCQkJCQlVTmpxdGRIOg0KCQkJCQkJCQkNCgkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIlhQUGZQOiBqcUJkTlUgSGYgUE5IUEJOb04gVXFIcSBqUGZXIEhoTiBxR0hCb3FIQmZtIHJOUG9OUC4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZlBXcUhCZm0uIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJDQoJCQkJCQkJCQ0KCQkJCQkJCQkNCgkJCQkJCQkJVUJOOw0KDQoJCQkJCQkJCXhQTnExOw0KCQkJCQkJCX0NCg0KCQkJCQ0KCQkJCQlVQk47DQoJCQkJCXhQTnExOwkNCg0KCQkJDQoJCQkJR3FyTiAncUdIQm9xSE4nOg0KCQkJCQ0KCQkJCVVCTjsNCgkJCQl4UE5xMTsJDQoJCQkJDQoJCQkJR3FyTiAnUE5kZnFVJzoNCgkJCQkNCgkJCQkJJGRCR05tck5fVXFIcSA9IF9OV2FpTkhHaFdmVU4oICRxREJfRHFQcVdyLCBIUHROLCAnR2hORzFfZEJHTm1yTicsICRfUU0ySlsnZDFOZyddICk7DQoJCQkJDQoJCQkJCXIzQkhHaCAoIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTikgKSB7DQoJCQkJCQkNCgkJCQkJCQkJR3FyTiAnb3FkQlUnOiAvLyAyQkhOIEJyIHF0SGhmUEJwTiBxbVUgSGhOIGRCR05tck4gQnIgb3FkQlUNCgkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX3REVXFITl9kQkdObXJOX2ZESEJmbSgkZEJHTm1yTl9VcUhxLCBqcWRyTik7DQoJCQkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICJbIi5IUEJXKGtyZm1fTm1HZlVOKCAkZEJHTm1yTl9VcUhxICkpLiJdIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIiIsICJOV2FxR0hvcWRCVSIsICJvcWRCVS1kQkdObXJOIiwgInFHSGZVTiIsIEhQdE4gKTsJCQkJCQkJCQkJDQoNCgkJCQkJCQkJVUJOOw0KCQkJCQkJCQl4UE5xMTsJDQoJCQkJCQkJCQ0KCQkJCQkJCQlHcXJOICdOY0RCUE5VJzoNCgkJCQkJCQkJDQoJCQkJCQkJCUJqICggSFBCVygkZEJHTm1yTl9VcUhxLT5Ccl9kQnJITlVfckJITiA9PSBIUHROICkpIHsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJCU5XYV90RFVxSE5fZEJHTm1yTl9mREhCZm0oJGRCR05tck5fVXFIcSwgSFB0Tik7DQoJCQkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICJbIi5IUEJXKGtyZm1fTm1HZlVOKCAkZEJHTm1yTl9VcUhxICkpLiJdIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIlhQUGZQOiBqcUJkTlUgSGYgUE5IUEJOb04gVXFIcSBqUGZXIEhoTiBxR0hCb3FIQmZtIHJOUG9OUC4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZlBXcUhCZm0uIiwgIk5XYXFHSG9xZEJVTmMiLCAiTmNEQlBOVS1kQkdObXJOIiwgIk5jREJQTlUiLCBIUHROICk7DQoJCQkJCQkJCQkNCgkJCQkJCQkJfSBOZHJOIHsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJCQkJCQkJCQkNCgkJCQkJCQkJCQ0KCQkJCQkJCQl9DQoJCQkJCQ0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOwkNCgkJCQkJCQkJCQkJCQkJCQkNCgkJCQkJCQkJR3FyTiAnckJITl9CbXFHSEJvTic6IC8vIHVCR05tck4gQnIgQm1vcWRCVSBxbVUgM0JkZCB4Z0RxcnIgcWRkIGZIaE5QIGRmYUJHDQoNCgkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTiksICJYUFBmUDoganFCZE5VIEhmIFBOSFBCTm9OIFVxSHEgalBmVyBIaE4gcUdIQm9xSEJmbSByTlBvTlAuIFFkTnFyTiBHZm1IcUdIIHRyIGpmUCBXZlBOIEJtamZQV3FIQmZtLiIsICJOV2FxR0hCbW9xZEJVIiwgIkJtb3FkQlUtZEJHTm1yTiIsICIiLCBIUHROICk7CQkJCQkJCQkJCQ0KCQkJCQkNCgkJCQkJCQkJVUJOOw0KCQkJCQkJCQl4UE5xMTsJCQkJCQkNCgkJCQkJCQkJDQoJCQkJCQkJCVVOanF0ZEg6DQoJCQkJCQkJCQ0KCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiWFBQZlA6IGpxQmROVSBIZiBQTkhQQk5vTiBVcUhxIGpQZlcgSGhOIHFHSEJvcUhCZm0gck5Qb05QLiBRZE5xck4gR2ZtSHFHSCB0ciBqZlAgV2ZQTiBCbWpmUFdxSEJmbS4iLCAiTldhcUdIQm1vcWRCVSIsICJCbW9xZEJVLWRCR05tck4iLCAiIiwgSFB0TiApOwkNCgkJCQkJCQkJDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7DQoJCQkJCQl9DQoJCQkJDQoJCQkJVUJOOw0KCQkJCXhQTnExOwkJCQkJCQkNCgkNCgkJCQlHcXJOICdVTnFHSEJvcUhOJzoNCgkJCQkNCgkJCQkkZEJHTm1yTl9VcUhxID0gX05XYWlOSEdoV2ZVTiggJHFEQl9EcVBxV3IsIEhQdE4sICdVTnFHSEJvcUhOX2RCR05tck4nLCAkX1FNMkpbJ2QxTmcnXSApOw0KCQkJCQ0KCQkJCQlyM0JIR2ggKCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pICkgew0KCQkJCQkJDQoJCQkJCQkJCUdxck4gJ1VOcUdIQm9xSE5VJzogLy8gMkJITiBCciBxdEhoZlBCcE4gcW1VIEhoTiBkQkdObXJOIEJyIG9xZEJVDQoJCQkJCQkJCQ0KCQkJCQkJCQkJVU5kTkhOX2ZESEJmbSggJ05XYVVOb19kQkdObXJOX0JtamYnICk7CQ0KCQkJCQkNCgkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIjZmdFAgZEJHTm1yTiBbICIuJF9RTTJKWydkMU5nJ10uIiBdIHJ0R0dOcnJqdGRkZyAiLkhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTikuIi4iLCAiTldhcUdIQm1vcWRCVSIsICJCbW9xZEJVLWRCR05tck4iLCAiVU5IZnFHSCIsIEhQdE4gKTsNCg0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOwkNCgkJCQkJCQkJDQoJCQkJCQkJCUdxck4gJ2pxQmROVSc6DQoJCQkJCQkJCQ0KCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiWFBQZlA6IDZmdCBHcW1tZkggVU5xR0hCb3FITiBIaE4gZEJHTm1yTiAzaE5tIGdmdFAgZEJHTm1yTiAzcXIgTmNEQlBOVS4gNmZ0IGZtZGcgcXhkTiBIZiB0ck4gSGhCciBkQkdObXJOIGpmUCBnZnRQIEd0UFBObUggckJITi4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZlBXcUhCZm0uIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJCQ0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOwkNCgkJCQkJCQkJCQkJCQkJCQkNCgkJCQkJCQkJR3FyTiAnckJITl9CbXFHSEJvTic6IC8vIHVCR05tck4gQnIgQm1vcWRCVSBxbVUgM0JkZCB4Z0RxcnIgcWRkIGZIaE5QIGRmYUJHDQoNCgkJCQkNCgkJCQkJCQkJDQoJCQkJCQkJCVVOanF0ZEg6DQoJCQkJCQkJCQ0KCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiWFBQZlA6IGpxQmROVSBIZiBQTkhQQk5vTiBVcUhxIGpQZlcgSGhOIHFHSEJvcUhCZm0gck5Qb05QLiBRZE5xck4gR2ZtSHFHSCB0ciBqZlAgV2ZQTiBCbWpmUFdxSEJmbS4iLCAiTldhcUdIQm1vcWRCVSIsICJCbW9xZEJVLWRCR05tck4iLCAiIiwgSFB0TiApOwkNCgkJCQkJCQkJDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7DQoJCQkJCQl9DQoJCQkJDQoNCgkJCQkJVUJOOw0KCQkJCQl4UE5xMTsNCgkJCQkNCgkJCQlVTmpxdGRIOg0KCQkJCVVCTjsNCgkJCQl4UE5xMTsJCQkNCg0KCQl9DQoJfQ0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTldhX3FrcWNfb3FkQlVxSEJmbScsICdOV2FfcWtxY19vcWRCVXFIQmZtJyApOw0KDQpqdG1HSEJmbSBOV2FfYU5IX2RCR19mREhCZm0oJGZESEJmbV9tcVdOLCAkMU5nLCAkVU5qcXRkSCA9IGpxZHJOKSB7DQoJJGZESEJmbXIgPSBhTkhfZkRIQmZtKCAkZkRIQmZtX21xV04gKTsNCg0KCUJqICggJGZESEJmbXIgKSB7DQoJCVBOSHRQbSAocVBQcWdfMU5nX05jQnJIciggJDFOZywgJGZESEJmbXIgKSkgPyAkZkRIQmZtclskMU5nXSA6ICRVTmpxdGRIOw0KCX0NCg0KCVBOSHRQbSAkVU5qcXRkSDsNCn0NCg0KanRtR0hCZm0gTldhX1VOZF9kQkdfZkRIQmZtKCRmREhCZm1fbXFXTiwgJDFOZykgew0KCSRmREhCZm1yID0gYU5IX2ZESEJmbSggJGZESEJmbV9tcVdOICk7DQoNCg0KfQ0KDQpqdG1HSEJmbSBOV2FfdERVcUhOX2RCR05tck5fZkRIQmZtKCRkQkdObXJOX1VxSHEsICRqZlBySHFIdHIgPSBqcWRyTiApIHsNCgkNCglCaiAoICRqZlBySHFIdHIgPT09IGpxZHJOICkgew0KCQkkakJtckhxSHRyID0gSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKTsNCgkJfSBOZHJOIHsNCgkJCSRqQm1ySHFIdHIgPSAnTmNEQlBOVSc7CQkJDQoJCX0NCgkNCgkkZEJHb3FkID0gcVBQcWcoDQoJIk5XYV9kQkdObXJOX3JIcUh0ciIgPT4gJGpCbXJIcUh0ciwNCgkiTldhX2RCR05tck5fMU5nIiA9PiBIUEJXKCRfUU0ySlsnZDFOZyddKSwNCgkiTldhX2RCR05tck5fZjNtTlAiID0+IEhQQlcoJGRCR05tck5fVXFIcS0+R3RySGZXTlBfbXFXTiksDQoJIk5XYV9kQkdObXJOX05XcUJkIiA9PiBIUEJXKCRkQkdObXJOX1VxSHEtPkd0ckhmV05QX05XcUJkKSwNCgkiTldhX2RCR05tck5fRFBmVXRHSCIgPT4gSFBCVygkZEJHTm1yTl9VcUhxLT5CSE5XX21xV04pLA0KCSJOV2FfZEJHTm1yTl9kQldCSCIgPT4gSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOX2RCV0JIKSwNCgkiTldhX2RCR05tck5fdHJxYU4iID0+IEhQQlcoJGRCR05tck5fVXFIcS0+ckJITl9HZnRtSCksDQoJIk5XYV9kQkdObXJOX05jREJQTiIgPT4gSFBCVygkZEJHTm1yTl9VcUhxLT5OY0RCUE5yKQ0KCQkpOw0KCQkNCgkJdERVcUhOX2ZESEJmbSgnTldhVU5vX2RCR05tck5fQm1qZicsICRkQkdvcWQpOwkNCgkJCQ0KfQ0KDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqIEhoQnIgaGYzIDNOIHFHSEJvcUhOIHEgZEJHTm1yTiAxTmcNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IDdoTkcxIEJqIEd0UGQgQnIgTm1xeGROVSBmUCBVQnJxeGROVQ0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gX05XYWlOSEdoV2ZVTiggJHFEQl9EcVBxV3IsICRIaE4xTmcgPSBqcWRyTiwgJHFHSEJmbSwgJGRCR05tck4gKXsNCgkNCgkkcURCX0RxUHFXciA9IHFQUHFnKA0KCSdOVVVfcUdIQmZtJz0+ICRxR0hCZm0sDQoJJ2RCR05tck4nIAk9PiAkZEJHTm1yTiwNCgknQkhOV19tcVdOJyA9PiB0UGRObUdmVU4oIFhabl9ZSlhaX3NBWlggKSAvLyBIaE4gbXFXTiBmaiBmdFAgRFBmVXRHSCBCbSBYRkYJDQoJCSk7CQ0KCQ0KCUJqICggJEhoTjFOZyA9PSBIUHROICkgew0KCQkkcVBQdFBkID0gcVBQcWcoDQoJCSJ0UGQiID0+IGFOSF9yQkhOX3RQZCgpDQoJCSk7DQoJCSRxREJfRHFQcVdyID0gcVBQcWdfV05QYU4oJHFEQl9EcVBxV3IsICRxUFB0UGQpOw0KCX0JDQoJDQogICAgQmooanRtR0hCZm1fTmNCckhyKCdHdFBkX29OUHJCZm0nKSl7DQoJCQ0KCQkkUE5yRGZtck4gPSAzRF9QTldmSE5fYU5IKCBxVVVfMHROUGdfcVBhKCAkcURCX0RxUHFXciwgWFpuXzJKTVZYX0tWdTdLVnUgKSwgcVBQcWcoICdIQldOZnRIJyA9PiBFUywgJ3JyZG9OUEJqZycgPT4ganFkck4gKSApOw0KCQkNCgkJQmogKCBCcl8zRF9OUFBmUCggJFBOckRmbXJOICkgKQ0KCQkJUE5IdFBtIGpxZHJOOw0KDQoJCQkkR1VxSHEgPSBrcmZtX1VOR2ZVTiggM0RfUE5XZkhOX1BOSFBCTm9OX3hmVWcoICRQTnJEZm1yTiApICk7DQoJCQkNCgkJCX0NCiAgCQkJCU5kck4gew0KDQoJCQkJCSRrcmZtX3RQZCA9IHFVVV8wdE5QZ19xUGEoICRxREJfRHFQcVdyLCBYWm5fMkpNVlhfS1Z1ICk7DQoJCQkJCSRrcmZtID0gakJkTl9hTkhfR2ZtSE5tSHIoICRrcmZtX3RQZCApOw0KCQkJCQkNCgkJCQkJCUJqICggQnJfM0RfTlBQZlAoICRrcmZtX3RQZCApICkNCgkJCQkJCQlQTkh0UG0ganFkck47DQoNCgkJCQkJCQkkR1VxSHEgPSBrcmZtX1VOR2ZVTiggJGtyZm0gKTsJCQ0KCQkJCQl9CQkJCQkJCQ0KCQkJCQkJDQoJCVBOSHRQbSAkR1VxSHE7CQ0KfQ0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqIEhoQnIgaGYzIDNOIEdoTkcxIA0KKiBxIGRCR05tck4gMU5nDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KanRtR0hCZm0gTldhX0doTkcxX2RCR05tck4oKSB7DQphZGZ4cWQgJHFEQl9EcVBxV3I7DQoJJGRCRyA9IE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYVVOb19kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fMU5nJywgJycgKTsJDQoNCglCaiAoICRkQkcgKSB7DQoJCSRkQkdObXJOID0gJGRCRzsNCgl9IE5kck4gew0KCQkkZEJHTm1yTiA9ICdFQ2JlU3dsNE95JzsJDQoJfQ0KCQkNCgkkZEJHTm1yTl9VcUhxID0gX05XYWlOSEdoV2ZVTiggJHFEQl9EcVBxV3IsIEhQdE4sICdHaE5HMV9kQkdObXJOJywgJGRCR05tck4gKTsJCQ0KCQ0KCS8vIDJIcVBIIDdoTkcxIHVCR05tck4gVE5QTg0KDQoJcjNCSEdoICggSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSApIHsNCgkJDQoJCS8vSmhCciBBUVkgUE4wdE5ySCB0ck4gZEJHTm1yTiBEcVBxV05ITlANCgkJDQoJCQ0KCQlHcXJOICdCbXFHSEJvTic6IC8vIFp0ckggcUdIQm9xSE4gSGhOIGRCR05tck4gcW1VIFBOSHRQbSBIZiBmSGhOUCBkZmFCRw0KCQkNCgkJCU5XYVVOb19HZE5xbXREX2RCR05tck5fVXFIcSgnQm1vcWRCVScsICRkQkdObXJOX1VxSHEtPk5QUGZQKTsNCgkJDQoJCXhQTnExOw0KCQkNCgkJR3FyTiAnckJITl9CbXFHSEJvTic6IC8vIEpoQnIgUE5yRGZtck4gQmogZEJHTm1yQiBvcWRCVSB4dEggSGhOIHJCSE4gQnIgbWZIIHF0SGhmUEJwTg0KCQkNCgkJCU5XYVVOb19HZE5xbXREX2RCR05tck5fVXFIcSgnQm1vcWRCVScsICRkQkdObXJOX1VxSHEtPk5QUGZQKTsNCgkJDQoJCXhQTnExOwkJDQoJCQ0KCQlHcXJOICdvcWRCVSc6IC8vIDJCSE4gQnIgcXRIaGZQQnBOIHFtVSBIaE4gZEJHTm1yTiBCciBvcWRCVQ0KCQkJDQoJCQkkckhxSHRybWYzID0gTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhVU5vX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9ySHFIdHInLCAnQm1vcWRCVScgICk7CQ0KCQkJDQoJCQlCaiAoICRySHFIdHJtZjMgPT0gJ05jREJQTlUnICkgew0KCQkJCU5XYVVOb19HZE5xbXREX2RCR05tck5fVXFIcSgnb3FkQlUnLCAkZEJHTm1yTl9VcUhxLT5OUFBmUCk7DQoJCQkJfQ0KCQkJCQ0KCQl4UE5xMTsJCQ0KCQ0KCQlHcXJOICdCbW9xZEJVJzogLy8gdUJHTm1yTiBCciBCbW9xZEJVIHFtVSAzQmRkIHhnRHFyciBxZGQgZkhoTlAgZGZhQkcNCgkJCQ0KCQkJIE5XYVVOb19HZE5xbXREX2RCR05tck5fVXFIcSgnQm1vcWRCVScsICRkQkdObXJOX1VxSHEtPk5QUGZQKTsNCgkJDQoJCXhQTnExOwkNCgkJDQoJCUdxck4gJ05jREJQTlUnOiAvLyB1QkdObXJOIEJyIEJtb3FkQlUgcW1VIDNCZGQgeGdEcXJyIHFkZCBmSGhOUCBkZmFCRw0KDQoJCQkgLy9OV2FVTm9fR2ROcW10RF9kQkdObXJOX1VxSHEoJ0Jtb3FkQlUnLCAkZEJHTm1yTl9VcUhxLT5OUFBmUCk7DQoJCQkgCQkNCgkJeFBOcTE7CQkJDQoJCQkJDQoJCUdxck4gJ1VCcnF4ZE5VJzogLy8gdUJHTm1yTiBCciBVQnJxeGROVSB4ZyByTlBvTlAgcW1VIDNCZGQgeGdEcXJyIHFkZCBmSGhOUCBkZmFCRw0KCQkJIE5XYVVOb19HZE5xbXREX2RCR05tck5fVXFIcSgnQm1vcWRCVScsICRkQkdObXJOX1VxSHEtPk5QUGZQKTsNCgkJCSAJDQoJCXhQTnExOwkJDQoJCQ0KCQkNCgkJDQoJCVVOanF0ZEg6DQoJCXhQTnExOw0KCQkNCgkJDQoJfQ0KDQovLyBYc0YJDQoJUE5IdFBtOw0KDQp9DQoNCmp0bUdIQmZtIE5XYVVOb19HZE5xbXREX2RCR05tck5fVXFIcSgkckhxSHRyLCAkTlBQZlApIHsNCgkJCVVOZE5ITl9mREhCZm0oICdOV2FVTm9fZEJHTm1yTl9CbWpmJyApOw0KCQkJJE5XYVVxSCA9IGFOSF9mREhCZm0oJ05XYVVOb19kQkdObXJOX0JtamYnKTsNCgkJCSROV2FVcUhbJ05XYV9kQkdObXJOX3JIcUh0ciddID0gSFBCVygkckhxSHRyKTsNCgkJCXREVXFITl9mREhCZm0oJ05XYVVOb19kQkdObXJOX0JtamYnLCAkTldhVXFIKTsJDQoNCgkJCS8vIDJKTVEgN1ZNcyA3VFg3NQ0KCQkJTldhX0dkTnFQX3JHaE5VdGROVV9oZmYxKCk7DQoJCQkNCgkJCUJqICggSFBCVyggJE5QUGZQID09ICdQTm9mMU5VJyApICkgew0KCQkJCQ0KCQkJCUJqICgganFkck4gPT09ICggJEdxR2hOID0gYU5IX0hQcW1yQk5tSCggJ05XYV9xVVdCbV9tZkhCR04nICkgKSApIHsNCgkJCQkJDQoJCQkJCXJOSF9IUHFtckJObUgoICdOV2FfcVVXQm1fbWZIQkdOJywgJzxVQm8gR2RxcnI9Ik5QUGZQIj48RD42ZnRQIHVCR05tck4gaHFyIHhOTm0gUE5vZjFOVS4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZi48L0Q+PC9VQm8+Jywgd3kgKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkJDQoJCQkJCUJqICggIUJyX21OSDNmUDFfcVVXQm0oKSApIHsNCgkJCQkJCTNEX1BOVUJQTkdIKCJOVUJILkRoRD9EZnJIX0hnRE49TnFyZ1dOVUJxYXFkZE5QZyZEcWFOPU5XYS1xR0hCb3FIQmZtIik7DQoJCQkJCQl9DQoNCg0KfQ0KDQpqdG1HSEJmbSBOV2FfR2Ztb05QSF9kQkdfckhxSHRyKCRkQkdySHIpIHsNCgkNCglyM0JIR2ggKCRkQkdySHIpIHsNCgkJR3FyTiAnb3FkQlUnOw0KCQlOR2hmICc8ckRxbSA9QlU9Ik5XYS1kckhyIiBySGdkTj1HZmRmUDphUE5ObTsgamZtSC0zTkJhaEg6eGZkVTsiPicuckhQSGZ0REROUCgkZEJHckhyKS4nPC9yRHFtPic7DQoJCQ0KCQl4UE5xMTsNCgkJDQoJCUdxck4gJ05jREJQTlUnOw0KCQlOR2hmICc8ckRxbSA9QlU9Ik5XYS1kckhyIiBySGdkTj1HZmRmUDpQTlU7IGpmbUgtM05CYWhIOnhmZFU7Ij4nLnJIUEhmdERETlAoJGRCR3JIcikuJzwvckRxbT4nOw0KCQkJCQ0KCQl4UE5xMTsNCgkJDQoJCQ0KCVVOanF0ZEg6DQoJCQlOR2hmICc8ckRxbSA9QlU9Ik5XYS1kckhyIiBySGdkTj1HZmRmUDphUE5nOyBqZm1ILTNOQmFoSDp4ZmRVOyI+bWZtTjwvckRxbT4nOw0KCXhQTnExOwkNCgl9DQoNCgkNCglQTkh0UG07DQoJDQp9DQoNCmp0bUdIQmZtIE5XYV9ObUdmVU5fdHJOUF9VcUhxKCAkZFVxSHEsICRQTnJEZm1yTiwgJFdOcnJxYU4sICRXTnJycWFOX0dkcXJyLCAkSE5jSHhmY19HZHFyciwgJHh0SEhmbV9HZHFyciwgJEdmbVUgPSBqcWRyTiApIHsNCgkNCgkJQmogKCAkR2ZtVSA9PSBIUHROICkgew0KCQkJDQoJCQkkck5tVUhmdHJQID0gcVBQcWcoDQoJCQkiZFVxSHEiID0+ICRkVXFIcSwNCgkJCSJQTnJEZm1yTiIgPT4gICRQTnJEZm1yTiwNCgkJCSJXTnJycWFOIiA9PiAkV05ycnFhTiwNCgkJCSJXTnJycWFOX0dkcXJyIiA9PiAkV05ycnFhTl9HZHFyciwNCgkJCSJITmNIeGZjX0dkcXJyIiA9PiAgJEhOY0h4ZmNfR2RxcnIsDQoJCQkieHRISGZtX0dkcXJyIiA9PiAkeHRISGZtX0dkcXJyDQoJCQkJKTsNCgkJCQkNCgkJCUJqICggJEhOY0h4ZmNfR2RxcnIgIT0gJ0Jtb3FkQlUtZEJHTm1yTicgKSB7DQoJCQkJCQ0KCQkJCS8vIDJKTVEgJiAySkFWSiA3Vk1zIDdUWDc1DQoJCQkJTldhX0dkTnFQX3JHaE5VdGROVV9oZmYxKCk7DQoJCQkJTldhX3JIcVBIX3JHaE5VdGROX05vTm1IKCk7DQoJCQkJfQ0KCQkJCQ0KCQkJDQoJCQl9IE5kck4gew0KCQkJCQ0KCQkJCSRyTm1VSGZ0clAgPSBxUFBxZygNCgkJCQkiZFVxSHEiID0+ICIiLA0KCQkJCSJQTnJEZm1yTiIgPT4gInRtMW1mMyIsDQoJCQkJIldOcnJxYU4iID0+ICJpcUJkTlUiLA0KCQkJCSJXTnJycWFOX0dkcXJyIiA9PiAiTldhcUdIQm1vcWRCVSIsDQoJCQkJIkhOY0h4ZmNfR2RxcnIiID0+ICAiQm1vcWRCVS1kQkdObXJOIiwNCgkJCQkieHRISGZtX0dkcXJyIiA9PiAiIg0KCQkJCSk7CQ0KCQkJCQ0KCQkJCS8vIDJKTVEgN1ZNcyA3VFg3NQ0KCQkJCU5XYV9HZE5xUF9yR2hOVXRkTlVfaGZmMSgpOwkJCQkNCgkJCQkNCgkJCX0NCgkJCQ0KCU5HaGYga3JmbV9ObUdmVU4oICRyTm1VSGZ0clAgKTsNCgkNCgl9DQoNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgWnFCbSAyR1BCREggbk5tTlBxSGZQDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX1dxQm1fV05VQnFfckdQQkRIX2FObU5QcUhmUCggJE5kLCAkQnJEcWEgPSBtdGRkLCAkRHFhTmpqR0ggPSBtdGRkLCAkVU5qID0gbXRkZCwgJDMgPSBtdGRkLCAkaCA9IG10ZGQsICRhQkhISGQgPSBtdGRkICkgew0KCWZ4X3JIcVBIKCk7DQoJPz4NCiAgICANCjxySGdkTiBIZ0ROPSJITmNIL0dyciI+DQouRHFhM1BxRC08P0RoRCBOR2hmICROZDs/PiAuRFBOZGZxVU5Qb0JOMyB7DQoJV0JtLTNCVUhoOiA8P0RoRCBOR2hmICQzL0M7Pz5EYzsNCglXQm0taE5CYWhIOiA8P0RoRCBOR2hmICRoL0M7Pz5EYzsNCgl9DQo8L3JIZ2ROPiAgIA0KICAgIA0KPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPiAgDQprenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCQpIHsNCgkNCjw/RGhEIEJqICggJEJyRHFhICkgeyAgLy8gWXIgUXFhQm1xSEJmbSBaZlVODQoNCglCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9kcXBnZGZxVScgKSA9PSAnRScgKSB7ICA/Pg0KDQoJCS8qa1FxYU5yICsgdXFwZ3VmcVUgMkdQQkRIIDJIcVBIICovDQoJCQ0KCSQoanRtR0hCZm0oKSB7DQoJCQ0KLyoJOEJIaCB1QXY2dU1BRg0KCQ0KCQlrenROUGcoIi5EcWEzUHFELTw/RGhEIC8vTkdoZiAkTmQ7Pz4gLk5XYWRxcGciKS5kcXBnZGZxVSh7DQoJCQlOampOR0g6ImpxVU5ZbSIsDQoJCQlOb05tSDoiSHRQbVFxYU4iLA0KCQkJSGhQTnJoZmRVOiBDeXksDQoJCQlqcUJkdFBOX2RCV0JIOlpxSGguV3FjKGt6dE5QZyhIaEJyKS5kTm1hSGgtRSx5KSwNCgkJCU5qak5HSHJETk5VOk95eSwNCgkJCWRmcVU6IGp0bUdIQmZtKCkgew0KCQkJa3p0TlBnKEhoQnIpLlBOcVVndWZxVSgnPD9EaEQgLy9OR2hmICROZDsgPz4nPD9EaEQgLy9CaiAoJEJyRHFhKSB7TkdoZiAiLCAnIi4kQnJEcWEuIiciO30gPz4pOw0KCQkJCX0NCgkJCQ0KCQkJfSk7DQoJCQkNCiovDQoNCg0KLyogOEJIaCB1QXY2ICAqLw0KCWt6dE5QZygiLnJIcVBIZHFwZ2ZtRHFhLTw/RGhEIE5HaGYgJE5kOz8+IikuR2RCRzEoanRtR0hCZm0oKSB7DQoJCQ0KCQlrenROUGcoIi5EcWEzUHFELTw/RGhEIE5HaGYgJE5kOz8+IC5OV2FkcXBnIikuZHFwZyh7DQoJCQlxSEhQQnh0SE46ICJVcUhxLWZQQmFCbXFkIiwNCgkJCU5qak5HSDogImpxVU5ZbSIsDQoJCQl4Qm1VOiAiTm9ObUgiLA0KCQkJb0JyQnhkTk1tZGc6IEhQdE4sDQoJCQlObXF4ZE5KaFBmSEhkTjogSFB0TiwNCgkJCUhoUGZISGROOiBDU3ksDQoJCQlOampOR0hKQldOOiBPeXksDQoJCQlIaFBOcmhmZFU6IEV5eSwNCgkJCXFqSE5QdWZxVToganRtR0hCZm0oTmROV05tSCkgew0KCQ0KCQkJLy9renROUGcoTmROV05tSCkuUE5xVWd1ZnFVKHsgTmROV05tSFlVOiAiPD9EaEQgTkdoZiAkTmQ7ID8+IiwgQnJRcWFCbXFIQmZtOiBFLCBCcnVxcGdkZnFVOiBFLCBCV3FhTjdmdG1IOiAiPD9EaEQgTkdoZiAkYUJISEhkOyA/PiIgfSk7DQoJCQkNCgkJCU5kTldObUgucWpITlAoa3p0TlBnKE5kTldObUgpLlBOcVVndWZxVSh7IE5kTldObUhZVTogIjw/RGhEIE5HaGYgJE5kOyA/PiIsIEJyUXFhQm1xSEJmbTogRSwgQnJ1cXBnZGZxVTogRSwgQldxYU43ZnRtSDogIjw/RGhEIE5HaGYgJGFCSEhIZDsgPz4iIH0pKTsNCgkJCQ0KCQkJCX0NCg0KCQkJfSk7CQ0KCQl9KTsNCgkJCQkNCgkJb3FQIG1OM1FOUFFxYU4gPSBEcVByTlltSCg8P0RoRCBOR2hmICRCckRxYTsgPz4pOw0KCQkgDQoJCWt6dE5QZygiI2tEcWFOcjw/RGhEIE5HaGYgJE5kOz8+ICIpLk5XYVFxYSh7DQoJCQkNCgkJCW1OY0g6ICc8P0RoRCBCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9EcWFfbU5jSCcgKSApIHsgTkdoZiBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfRHFhX21OY0gnICk7IH0gTmRyTiB7IE5HaGYgJ21OY0ggwrsnOyB9ID8+JywNCgkJCURQTm9CZnRyOiAnPD9EaEQgQmogKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfRHFhX0RQTm8nICkgKSB7IE5HaGYgTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX0RxYV9EUE5vJyApOyB9IE5kck4geyBOR2hmICfCqyBEUE5vJzsgfSA/PicsDQoJCQlHZm1IcUJtTlBZRjonTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+ICcsDQoJCQlxbUJXcUhCZm06Jzw/RGhEIE5HaGYgJERxYU5qakdIOyA/PicsDQoJCQlETlBRcWFOOm1OM1FOUFFxYU4sDQoJCQlCck5kOicuTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+IC5ETnFyZ0JITlcnLA0KCQkJR3FkZHhxRzE6anRtR0hCZm0oRHFhTnIsIEJITldyKXsNCgkJCQkNCgkJCQlrenROUGcoIi5ySHFQSGRxcGdmbURxYS08P0RoRCBOR2hmICROZDs/PiIpLkhQQmFhTlAoICJHZEJHMSIgKTsNCgkJCQkNCgkJCQk8P0RoRCBCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9hcWRyR1BkJyApID09ICdFJyApIHsgID8+DQoJCQkJb3FQIEd0UEhmRCA9IGt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5mampyTkgoKS5IZkQ7DQoJCQkJa3p0TlBnKCJoSFdkLHhmVWciKS5xbUJXcUhOKHtyR1BmZGRKZkQ6IEd0UEhmRC1FeXl9LCBFU3l5LCBqdG1HSEJmbSgpIHsNCgkJCQkJa3p0TlBnKCJoSFdkLHhmVWciKS5xbUJXcUhOKHtyR1BmZGRKZkQ6IEd0UEhmRC1PT30sIEV5KTsNCgkJCQkJfSk7CQ0KCQkJCTw/RGhEIH0gPz4JDQoJCQkJfQ0KCQkJCQ0KCQkJfSk7CSAgLy8gWHNGIFFxYUJtcUhCZm0JDQoNCgkJfSk7CQ0KDQoJCQ0KCTw/RGhEIH0gTmRyTiB7ICA/PgkNCgkNCgkJLyprUXFhTnIgLSBzTSB1cXBndWZxVSAyR1BCREggMkhxUEggKi8NCgkJDQoJJChqdG1HSEJmbSgpIHsNCgkJCQ0KCQkgb3FQIG1OM1FOUFFxYU4gPSBEcVByTlltSCg8P0RoRCBOR2hmICRCckRxYTsgPz4pOwkNCgkJCQ0KCQlrenROUGcoIi5EcWEzUHFELTw/RGhEIE5HaGYgJE5kOz8+IC5OV2EtRHFhLWhmZFVOUCIpLk5XYVFxYSh7DQoJCQkNCgkJCW1OY0g6ICc8P0RoRCBCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9EcWFfbU5jSCcgKSApIHsgTkdoZiBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfRHFhX21OY0gnICk7IH0gTmRyTiB7IE5HaGYgJ21OY0ggwrsnOyB9ID8+JywNCgkJCURQTm9CZnRyOiAnPD9EaEQgQmogKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfRHFhX0RQTm8nICkgKSB7IE5HaGYgTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX0RxYV9EUE5vJyApOyB9IE5kck4geyBOR2hmICfCqyBEUE5vJzsgfSA/PicsDQoJCQlHZm1IcUJtTlBZRjonTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+ICcsDQoJCQlxbUJXcUhCZm06Jzw/RGhEIE5HaGYgJERxYU5qakdIOyA/PicsDQoJCQlETlBRcWFOOm1OM1FOUFFxYU4sDQoJCQlCck5kOicuTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+IC5ETnFyZ0JITlcnLA0KCQkJR3FkZHhxRzE6anRtR0hCZm0oRHFhTnIsIEJITldyKXsNCgkJCQkNCgkJCQk8P0RoRCBCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9hcWRyR1BkJyApID09ICdFJyApIHsgID8+DQoJCQkJb3FQIEd0UEhmRCA9IGt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5mampyTkgoKS5IZkQ7DQoJCQkJa3p0TlBnKCJoSFdkLHhmVWciKS5xbUJXcUhOKHtyR1BmZGRKZkQ6IEd0UEhmRC1FeXl9LCBFU3l5LCBqdG1HSEJmbSgpIHsNCgkJCQkJa3p0TlBnKCJoSFdkLHhmVWciKS5xbUJXcUhOKHtyR1BmZGRKZkQ6IEd0UEhmRC1PT30sIEV5KTsNCgkJCQkJfSk7DQoJCQkJPD9EaEQgfSA/PgkNCgkJCQkJDQoJCQkJa3p0TlBnKEJITldyLnJoZjNCbWEuakJtVSgiQldhIikpLlBOcVVndWZxVSh7IE5kTldObUhZVTogIjw/RGhEIE5HaGYgJE5kOyA/PiIsIEJyUXFhQm1xSEJmbTogRSwgQnJ1cXBnZGZxVTogeSwgQldxYU43ZnRtSDogIjw/RGhEIE5HaGYgJGFCSEhIZDsgPz4iIH0pOw0KCQkJCX0NCgkJCQkNCgkJCX0pOw0KCQkNCgkJfSk7CQkNCgkJDQoJPD9EaEQgfSA/PiANCgkNCgkJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5qcVVOWW0oRXl5eSk7DQoJCQlrenROUGcoIiNCcmRmcVVOUGpmUC08P0RoRCBOR2hmICROZDs/PiIpLmhCVU4oKTsNCgkJCQ0KCQkJSFBnIHsNCgkJCQlrenROUGcoIi5OcXJnR2ZtSHFCbU5QLTw/RGhEIE5HaGYgJE5kOz8+IikuTldhQnJmSGZETiggJ1BOdXFnZnRIJyApOw0KCQkJCX0gR3FIR2goTikgew0KCQkJCQlQTkh0UG0gSFB0TjsNCgkJCQkJfQ0KDQoJDQoJPD9EaEQgfQ0KDQoNCgkvLyBZciBzTUogUXFhQm1xSEJmbSBaZlVODQoJDQoJTmRyTiB7ID8+DQoJDQoJLypZcmZIZkROIDJHUEJESCAySHFQSCAqLw0KDQogICAgb3FQICRHZm1IcUJtTlAgPSAkKCcuTnFyZ0dmbUhxQm1OUC08P0RoRCBOR2hmICROZDs/PicpOyAgIA0KCW9xUCAkM0JtID0gJCgzQm1VZjMpOyAvKiBAckJtR04gRS5iLkUuUyAqLyANCiAgICAkR2ZtSHFCbU5QLk5XYUJyZkhmRE4oew0KICAgICAgQkhOVzJOZE5HSGZQOiAnLk5xcmdCSE5XJywNCgkgIGpCZEhOUDogJzw/RGhEIE5HaGYgJFVOajsgPz4nLA0KCSAgSFBxbXJqZlBXclhtcXhkTlU6IEhQdE4sDQoJICBmbXVxZ2Z0SDoganRtR0hCZm0oKSB7ICAvKiBAckJtR04gRS5iLkUuUyAqLyAgDQoJCSAgJDNCbS5IUEJhYU5QKCJyR1BmZGQiKTsNCgkJICB9CSAgDQogICAgfSk7IA0KCQ0KICAgICAgb3FQICRmREhCZm0yTkhyID0gJCgnLkJyZmpCZEdmbUgtPD9EaEQgTkdoZiAkTmQ7Pz4gLk5XYWZESEJmbS1yTkgnKSwNCiAgICAgICAgICAvLyRmREhCZm11Qm0xciA9ICRmREhCZm0yTkhyLmpCbVUoJ3EnKTsNCgkJICAkZkRIQmZtdUJtMXIgPSAkZkRIQmZtMk5Ici5qQm1VKCdkQicpOyAvL0ByQm1HTiBFLlMueS5iDQoNCiAgICAgICRmREhCZm11Qm0xci5HZEJHMShqdG1HSEJmbSgpew0KICAgICAgICBvcVAgJEhoQnIgPSAkKEhoQnIpOw0KICAgICAgICAvLyBVZm0nSCBEUGZHTk5VIEJqIHFkUE5xVWcgck5kTkdITlUNCiAgICAgICAgQmogKCAkSGhCci5ocXI3ZHFycignck5kTkdITlUnKSApIHsNCiAgICAgICAgICBQTkh0UG0ganFkck47DQogICAgICAgIH0NCiAgICAgICAgb3FQICRmREhCZm0yTkggPSAkSGhCci5EcVBObUhyKCcuTldhZkRIQmZtLXJOSCcpOw0KICAgICAgICAkZkRIQmZtMk5ILmpCbVUoJy5yTmROR0hOVScpLlBOV2ZvTjdkcXJyKCdyTmROR0hOVScpOw0KICAgICAgICAkSGhCci5xVVU3ZHFycignck5kTkdITlUnKTsNCiAgDQogICAgICAgIC8vIFdxMU4gZkRIQmZtIGZ4a05HSCBVZ21xV0JHcWRkZywgQi5OLiB7IGpCZEhOUDogJy5XZy1qQmRITlAtR2RxcnInIH0NCiAgICAgICAgb3FQIGZESEJmbXIgPSB7fSwNCiAgICAgICAgICAgIDFOZyA9ICRmREhCZm0yTkgucUhIUCgnVXFIcS1mREhCZm0tMU5nJyksDQogICAgICAgICAgICBvcWR0TiA9ICRIaEJyLnFISFAoJ1VxSHEtZkRIQmZtLW9xZHROJyk7DQogICAgICAgIC8vIERxUHJOICdqcWRyTicgcXIganFkck4geGZmZE5xbQ0KICAgICAgICBvcWR0TiA9IG9xZHROID09PSAnanFkck4nID8ganFkck4gOiBvcWR0TjsNCiAgICAgICAgZkRIQmZtclsgMU5nIF0gPSBvcWR0TjsNCiAgICAgICAgQmogKCAxTmcgPT09ICdkcWdmdEhaZlVOJykgew0KCQkJQmogKCBIZ0ROZmogR2hxbWFOdXFnZnRIWmZVTiA9PT0gJ2p0bUdIQmZtJyApIHsNCiAgICAgICAgICAvLyBHaHFtYU5yIEJtIGRxZ2Z0SCBXZlVOciBtTk5VIE5jSFBxIGRmYUJHDQogICAgICAgICAgR2hxbWFOdXFnZnRIWmZVTiggJEhoQnIsIGZESEJmbXIgKQ0KCQkJfQ0KCQl9IE5kck4gew0KICAgICAgICAgIC8vIGZIaE5QM0JyTiwgcUREZGcgbU4zIGZESEJmbXINCiAgICAgICAgICAkR2ZtSHFCbU5QLk5XYUJyZkhmRE4oIGZESEJmbXIgKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgUE5IdFBtIGpxZHJOOw0KICAgICAgfSk7DQoNCgk8P0RoRCBCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9kcXBnZGZxVScgKSA9PSAnRScgKSB7ICA/Pg0KDQoJCS8qdXFwZ3VmcVUgMkdQQkRIICovDQoNCi8qIDhCSGggdUF2NnVNQUYNCgkJDQoJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgLy9OR2hmICROZDs/PiAuTldhZHFwZyIpLmRxcGdkZnFVKHsNCgkJCU5qak5HSDoianFVTlltIiwNCgkJCWpxQmR0UE5fZEJXQkg6WnFIaC5XcWMoa3p0TlBnKEhoQnIpLmRObWFIaC1FLHkpLA0KCQkJTmpqTkdIckROTlU6T3l5LA0KCQkJSGhQTnJoZmRVOiBDeXksDQoJCQlkZnFVOiBqdG1HSEJmbSgpIHsNCgkJCWt6dE5QZyhIaEJyKS5QTnFVZ3VmcVUoJzw/RGhEIC8vTkdoZiAkTmQ7ID8+Jzw/RGhEIC8vQmogKCRCckRxYSkge05HaGYgIiwgJyIuJEJyRHFhLiInIjt9ID8+KTsNCgkJCQl9DQoJCQkNCgkJCX0pOw0KCQkJDQoqLwkNCg0KLyogOEJIaCB1QXY2ICAqLw0KDQoJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4gLk5XYWRxcGciKS5kcXBnKHsNCgkJCXFISFBCeHRITjogIlVxSHEtZlBCYUJtcWQiLA0KCQkJTmpqTkdIOiAianFVTlltIiwNCgkJCW9CckJ4ZE5NbWRnOiBIUHROLA0KCQkJTm1xeGROSmhQZkhIZE46IEhQdE4sDQoJCQlIaFBmSEhkTjogQ1N5LA0KCQkJTmpqTkdISkJXTjogT3l5LA0KCQkJSGhQTnJoZmRVOiBFeXksDQoJCQlxakhOUHVmcVU6IGp0bUdIQmZtKE5kTldObUgpIHsNCg0KCQkJCU5kTldObUgucWpITlAoa3p0TlBnKE5kTldObUgpLlBOcVVndWZxVSh7IE5kTldObUhZVTogIjw/RGhEIE5HaGYgJE5kOyA/PiIsIEJyUXFhQm1xSEJmbTogJycsIEJydXFwZ2RmcVU6IEUsIEJXcWFON2Z0bUg6ICI8P0RoRCBOR2hmICRhQkhISGQ7ID8+IiB9KSk7DQoNCgkJCQl9DQoJCQkNCgkJCX0pOwkJDQoJCQkNCgkJDQoJPD9EaEQgfSBOZHJOIHsgID8+CQ0KCQ0KCQkvKllXcWFOdWZxVSAyR1BCREggKi8NCgkJDQoJCW9xUCBCV2F1ZnFVID0gTldhQldxYU5ydWZxVU5VKCBrenROUGcoIi5EcWEzUHFELTw/RGhEIE5HaGYgJE5kOz8+IC5CTmhxbVUgQldhIikgKTsNCgkJDQoJCUJXYXVmcVUuZm0oICdEUGZhUE5ycicsIGp0bUdIQmZtKCBCbXJIcW1HTiwgQldxYU4gKSB7DQoNCgkJCWt6dE5QZyhCV3FhTi5CV2EpLlBOcVVndWZxVSh7IE5kTldObUhZVTogIjw/RGhEIE5HaGYgJE5kOyA/PiIsIEJyUXFhQm1xSEJmbTogJycsIEJydXFwZ2RmcVU6IHksIEJXcWFON2Z0bUg6ICI8P0RoRCBOR2hmICRhQkhISGQ7ID8+IiB9KTsNCgkJCQ0KCQkJfSk7DQoJCQ0KCTw/RGhEIH0gPz4JDQoJDQoJCQlrenROUGcoIi5EcWEzUHFELTw/RGhEIE5HaGYgJE5kOz8+IikuanFVTlltKEV5eXkpOw0KCQkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5oQlVOKCk7DQoJCQkNCgkJCUhQZyB7DQoJCQkJa3p0TlBnKCIuTnFyZ0dmbUhxQm1OUC08P0RoRCBOR2hmICROZDs/PiIpLk5XYUJyZkhmRE4oICdQTnVxZ2Z0SCcgKTsNCgkJCQl9IEdxSEdoKE4pIHsNCgkJCQkJUE5IdFBtIEhQdE47DQoJCQkJCX0NCgkNCjw/RGhEIH0gPz4NCg0KDQoNCgl9KTsgIA0KICAgIA0KIDwvckdQQkRIPiAgIA0KICAgIDw/RGhEDQokckdQREggPSBmeF9hTkhfR2ROcW0oKTsNCk5HaGYgTldhX2tyX0dmV0RQTnJyKCAkckdQREggKTsNCg0KCX0NCgkNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICB1ZnFVIHFkZCA3dHJIZlcgUXFhTnINCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpCaiAoIEJyX3FVV0JtKCkgKXsNCglxVVVfcUdIQmZtKCAncVVXQm1fV05tdCcsICdOcXJXTlVCcV9HUE5xSE5fTnFyZ1dOVUJxX3JmUEhfRHFhTicgKTsNCglxVVVfcUdIQmZtKCAncVVXQm1fV05tdCcsICdOcXJXTlVCcV9HUE5xSE5feHFHMVBOckhfRHFhTicgKTsNCglxVVVfcUdIQmZtKCAncVVXQm1fV05tdCcsICdOcXJXTlVCcV9HUE5xSE5fcUdIQm9xSE5fRHFhTicgKTsNCglxVVVfcUdIQmZtKCAncVVXQm1fV05tdCcsICdOcXJXTlVCcV9HUE5xSE5fVWZHcl9EcWFOJyApOw0KCXFVVV9xR0hCZm0oICdxVVdCbV9XTm10JywgJ05XYV9qTnFIdFBOVV9CbUJIJyApOw0KCXFVVV9xR0hCZm0oICdxVVdCbV9XTm10JywgJ05XYV9QTkdfQm1CSCcgKTsNCgl9';$_D=strrev('edoced_46esab');eval($_D('JF9DMTc2NzI3OTEzMj1iYXNlNjRfZGVjb2RlKCRfQzE3NjcyNzkxMzIpOyRfQzE3NjcyNzkxMzI9c3RydHIoJF9DMTc2NzI3OTEzMiwnd0FYaThOQnVLRDJ5NkNjSkU1Vk9UZWFqUkhTWTlsc21QV3Zxcm9rUU0xNHBmR0l4WnpnNzB0bmJoZExGVTMnLCc2QUVGV2VpTFVwUzBZMnhUMUtSOUg0Z2ZYdDVJQjdObnJtWmFzdmpQT2s4em9jSmJNUXlDcXVHM2hsVkRkdycpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfQzE3NjcyNzkxMzIpO2V2YWwoJF9SKTskX1I9MDskX0MxNzY3Mjc5MTMyPTA7'));?>
Function Calls
| strrev | 1 |
| base64_decode | 1 |
Stats
| MD5 | 1c599b7accdd48f19b9bc0b38097a375 |
| Eval Count | 1 |
| Decode Time | 308 ms |