VXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCgpTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KCmRpZmYgLU5hdXIgbWFuLTEuNmUub3JpZy9zcmMvYXByb3Bvcy5zaCBtYW4tMS42ZS9zcmMvYXByb3Bvcy5zaAotLS0gbWFuLTEuNmUub3JpZy9zcmMvYXByb3Bvcy5zaAkyMDA3LTA1LTE4IDEzOjQ5OjMxLjAwMDAwMDAwMCAtMDMwMAorKysgbWFuLTEuNmUvc3JjL2Fwcm9wb3Muc2gJMjAwNy0wNS0xOCAxNDoyNDozMy4wMDAwMDAwMDAgLTAzMDAKQEAgLTYwLDE2ICs2MCw1NiBAQAogICAgIGVzYWMKIGRvbmUKIAorIyBsaXN0IG9mIGxhbmd1YWdlcyB0byBsb29rIGZvcgorTEFOR19MSVNUPWBlY2hvICRMQU5HVUFHRTokTENfQUxMOiRMQ19NRVNTQUdFUzokTEFORyB8IHRyICc6JyAnICdgCitESVJfTElTVD0iIgorZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gJG1hbnBhdGggL3Vzci9saWIKK2RvCisgICAgZm9yIGwgaW4gJExBTkdfTElTVAorICAgIGRvCisgICAgICAgIGlmIFsgLWQgJGQvJGwgXQorICAgICAgICB0aGVuCisgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHBhdGggaXMgbm90IGFscmVhZHkgaW4gdGhlIGxpc3QKKyAgICAgICAgICAgIGlmICEgZWNobyAiJERJUl9MSVNUIiB8IGdyZXAgIiAkZC8kbFxiIiA+IC9kZXYvbnVsbAorICAgICAgICAgICAgdGhlbgorICAgICAgICAgICAgICAgIERJUl9MSVNUPSIkRElSX0xJU1QgJGQvJGwiCisgICAgICAgICAgICBmaQorICAgICAgICBmaQorICAgIGRvbmUKKyAgICBESVJfTElTVD0iJERJUl9MSVNUICRkIgorICAgICMgY2hlY2sgdGhhdCB0aGUgcGF0aCBpcyBub3QgYWxyZWFkeSBpbiB0aGUgbGlzdAorICAgIGlmICEgZWNobyAiJERJUl9MSVNUIiB8IGdyZXAgIiAkZFxiIiA+IC9kZXYvbnVsbAorICAgIHRoZW4KKyAgICAgICAgRElSX0xJU1Q9IiRESVJfTElTVCAkZC8kbCIKKyAgICBmaQorZG9uZQorCiB3aGlsZSBbICIkMSIgIT0gIiIgXQogZG8KICAgICBmb3VuZD0wCi0gICAgZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gJG1hbnBhdGggL3Vzci9saWIKKyAgICAjIGluIG9yZGVyIG5vdCB0byBkaXNwbGF5IGxpbmVzIGluIG1vcmUgdGhhbiBvbmUgbGFuZ3VhZ2UgZm9yCisgICAgIyBhIHNhbWUgbWFuIHBhZ2U7IHdlIGNoZWNrIHRoYXQgYSBnaXZlbiBtYW4gcGFnZSBuYW1lCisgICAgIyBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRpc3BsYXllZAorICAgIEJBWj0iIgorICAgIGZvciBkIGluICRESVJfTElTVAogICAgIGRvCiAgICAgICAgIGlmIFsgLWYgJGQvd2hhdGlzIF0KICAgICAgICAgdGhlbgotICAgICAgICAgICAgaWYgZ3JlcCAtIiRncmVwb3B0MSIgIiRncmVwb3B0MiIiJDEiICRkL3doYXRpcworICAgICAgICAgICAgaWYgRk9PPWBncmVwIC0iJGdyZXBvcHQxIiAiJGdyZXBvcHQyIiIkMSIgJGQvd2hhdGlzYAogICAgICAgICAgICAgdGhlbgotICAgICAgICAgICAgICAgIGZvdW5kPTEKKyAgICAgICAgICAgICAgICAjIHRoZSBMQ19BTEw9QyBpcyBuZWVkZWQgaW4gY2FzZSB0aGUgdGV4dCBpcworICAgICAgICAgICAgICAgICMgaW4gYSBkaWZmZXJlbnQgZW5jb2RpbmcgdGhhbiB0aGUgbG9jYWxlCisgICAgICAgICAgICAgICAgQkFSPWBlY2hvIC1lICIkRk9PIiB8IExDX0FMTD1DIHNlZCAncy8gLSAuKiQvLycgfCB0ciAnIFtdJyAnXycgfCBzb3J0IC11YAorICAgICAgICAgICAgICAgIGZvciBpIGluICRCQVIKKyAgICAgICAgICAgICAgICBkbworICAgICAgICAgICAgICAgICAgICBpZiAhIGVjaG8gIiRCQVoiIHwgZ3JlcCAiJGkiID4gL2Rldi9udWxsCisgICAgICAgICAgICAgICAgICAgIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJBWj0iJEJBWiAkaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGk9Il5gZWNobyAkaSB8IHNlZCAnczpfXCs6XFxcKFxbXyBcXVxcXHxcXFxbXFxcfFxcXF1cXFwpXFxcKzpnJ2AiCisgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIC1lICIkRk9PIiB8IGdyZXAgIiRpIgorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQ9MQorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGRvbmUKICMgU29tZSBwZW9wbGUgYXJlIHNhdGlzZmllZCB3aXRoIGEgc2luZ2xlIG9jY3VycmVuY2UKICMgQnV0IGl0IGlzIGJldHRlciB0byBnaXZlIGFsbAogIyAgICAgICAgICAgICAgIGJyZWFrCmRpZmYgLU5hdXIgbWFuLTEuNmUub3JpZy9zcmMvbWFrZXdoYXRpcy5zaCBtYW4tMS42ZS9zcmMvbWFrZXdoYXRpcy5zaAotLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFrZXdoYXRpcy5zaAkyMDA3LTA1LTE4IDEzOjQ5OjMxLjAwMDAwMDAwMCAtMDMwMAorKysgbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gJMjAwNy0wNS0xOCAxMzo1MDowNy4wMDAwMDAwMDAgLTAzMDAKQEAgLTQxLDEyICs0MSwzMiBAQAogCiBwcm9ncmFtPWBiYXNlbmFtZSAkMGAKIAorIyB0aGlzIGFsbG93cyB0byBkZWZpbmUgbGFuZ3VhZ2Ugc3BlY2lmaWMgdmFsdWVzIGZybyBOQU1FLCBERVNDUklQVElPTgorIyBpZiBub3QgZGVmaW5lZCwgdXNpbmcgdGhvc2UgZGVmYXVsdCB2YWx1ZXMKK2lmIFsgLXogIiRNQU5fTkFNRSIgXQordGhlbgorCU1BTl9OQU1FPSLQmNCc0JV8Tk9NfEpNw4lOT3xOQVZOfM6fzp3On86czpF8Tk9NQlJFfE5JTUV8SVpFTkF8TklNSXxJTUV8XAorTsOJVnxOT01FfOWQjeWJjXzsnbTrpoR8TkFBTXxOQVpXQXxOVU1FfNCY0JzQr3xNRU5PfNCd0JDQl9CS0JB85ZCN56ewfOWQjeeosSIKK2ZpCitpZiBbIC16ICIkTUFOX0RFU0NSSVBUSU9OIiBdCit0aGVuCisJTUFOX0RFU0NSSVBUSU9OPSLQntCf0JjQodCQ0J3QmNCVfERFU0NSSVBDScOTfFBPUElTfEJFU0tSSVZFTFNFfEJFU0NIUkVJQlVOR3xcCivOoM6VzqHOmc6TzqHOkc6mzpd8REVTQ1JJUENJw5NOfEtJUkpFTERVU3xBWkFMUEVOQXxLVVZBVVN8T1BJU3xMRcONUsOBU3xERVNDUklaSU9ORXxcCivoqqzmmI587ISk66qFfEJFU0NIUklKVklOR3xERVNDUknDh8ODT3xERVNDUklFUkV80J7Qn9CY0KF85o+P6L+wIgorZmkKKyMgbWFrZSB0aGVtIGludG8gYXdrIHJlZ2V4cAorTUFOX05BTUU9Il4oJHtNQU5fTkFNRX0pIjsKK01BTl9ERVNDUklQVElPTj0iXigke01BTl9ERVNDUklQVElPTn0pIjsKKwogIyBJbiBjYXNlIGJvdGggL3Vzci9tYW4gYW5kIC91c3Ivc2hhcmUvbWFuIGV4aXN0LCB0aGUgZm9ybWVyIGlzIGxvY2FsCiAjIGFuZCBzaG91bGQgYmUgZmlyc3QuCiAjIEl0IGlzIGEgYnVnIHRvIGFkZCAvdmFyL2NhY2hlL21hbiB0byBERUZDQVRQQVRILgogZG09CiBmb3IgZCBpbiAvdXNyL3NoYXJlL21hbiAvdXNyL21hbiAvdXNyL1gxMVI2L21hbiAvdXNyL2xvY2FsL21hbgogZG8KKyAgICBpZiBbIC1uICIkTEFORyIgLWEgLWQgIiRkLyRMQU5HIiBdOyB0aGVuCisJaWYgWyB4JGRtID0geCBdOyB0aGVuIGRtPSIkZC8kTEFORyI7IGVsc2UgZG09JGRtOiIkZC8kTEFORyI7IGZpCisgICAgZmkKICAgICBpZiBbIC1kICRkIF07IHRoZW4KIAlpZiBbIHgkZG0gPSB4IF07IHRoZW4gZG09JGQ7IGVsc2UgZG09JGRtOiRkOyBmaQogICAgIGZpCkBAIC01NSw2ICs3NSw5IEBACiBkYz0KIGZvciBkIGluIC92YXIvY2FjaGUvbWFuIC91c3Ivc2hhcmUvbWFuL3ByZWZvcm1hdCAvdXNyL21hbi9wcmVmb3JtYXQgL3Vzci9zaGFyZS9tYW4gL3Vzci9tYW4KIGRvCisgICAgaWYgWyAtbiAiJExBTkciIC1hIC1kICIkZC8kTEFORyIgXTsgdGhlbgorCWlmIFsgeCRkYyA9IHggXTsgdGhlbiBkbT0iJGQvJExBTkciOyBlbHNlIGRtPSRkYzoiJGQvJExBTkciOyBmaQorICAgIGZpCiAgICAgaWYgWyAtZCAkZCBdOyB0aGVuCiAJaWYgWyB4JGRjID0geCBdOyB0aGVuIGRjPSRkOyBlbHNlIGRjPSRkYzokZDsgZmkKICAgICBmaQpAQCAtMTk0LDcgKzIxNyw3IEBACiAJICAgIHNlY3Rpb249JGkKIAkgICAgY3VyZGlyPSRtYW5kaXIvJHtwYWdlc30kaQogCSAgICBleHBvcnQgc2VjdGlvbiB2ZXJib3NlIGN1cmRpcgotCSAgICBmaW5kICRtYW5kaXIvJHtwYWdlc30kaS8uIC1uYW1lICcqJyAkZmluZGFyZzAgJGZpbmRhcmcgLXByaW50IHwgJEFXSyAnCisJICAgIGZpbmQgJG1hbmRpci8ke3BhZ2VzfSRpLy4gLW5hbWUgJyonICRmaW5kYXJnMCAkZmluZGFyZyAtcHJpbnQgfCBMQ19BTEw9QyAkQVdLIC12IE1BTl9OQU1FPSIkTUFOX05BTUUiIC12IE1BTl9ERVNDUklQVElPTj0iJE1BTl9ERVNDUklQVElPTiIgJwogCiAJICAgIGZ1bmN0aW9uIHJlYWRsaW5lKCkgewogCSAgICAgIGlmICh1c2VfemNhdCB8fCB1c2VfYnpjYXQpIHsKQEAgLTI2MSwxMyArMjg0LDcgQEAKIAkJZ3N1YigvLlxiLywgIiIpOwogCQlpZiAoKCQxIH4gL15cLltTc11bSGhdLyAmJgogCQkgICgkMiB+IC9bTm5dW0FhXVtNbV1bRWVdLyB8fAotCQkgICAkMiB+IC9eSk3JTk8vIHx8ICQyIH4gL15OQVZOLyB8fCAkMiB+IC9eTlVNRS8gfHwKLQkJICAgJDIgfiAvXkJFWkVJQ0hOVU5HLyB8fCAkMiB+IC9eTk9NQlJFLyB8fAotCQkgICAkMiB+IC9eTklNSS8gfHwgJDIgfiAvXk5PTS8gfHwgJDIgfiAvXklNRS8gfHwKLQkJICAgJDIgfiAvXk5byUVdVi8gfHwgJDIgfiAvXk5BTUEvIHx8ICQyIH4gL17MvsGwLyB8fAotCQkgICAkMiB+IC9ezL6+zi8gfHwgJDIgfiAvXsDMuKcvIHx8ICQyIH4gL15OQVpXQS8gfHwKLQkJICAgJDIgfiAvXu7h+vfh7unlLyB8fCAkMiB+IC9ew/uzxi8gfHwgJDIgfiAvXqZXutkvIHx8Ci0JCSAgICQyIH4gL15OT01FLyB8fCAkMiB+IC9eTkFBTS8gfHwgJDIgfiAvXsjMxS8pKSB8fAorCQkgICAkMiB+IE1BTl9OQU1FICkpIHx8CiAJCSAgKHBhZ2VzID09ICJjYXQiICYmICQxIH4gL15OQU1FLykpIHsKIAkJICAgIGlmICghaW5zaCkgewogCQkgICAgICBpbnNoID0gMTsKQEAgLTI3OCw2ICsyOTUsNyBAQAogCQkgIGlmICgkMSB+IC9eXC5bU3NdW0hoWVNdLyB8fAogCQkgICAgKHBhZ2VzID09ICJjYXQiICYmCiAJCSAgICAoJDEgfiAvXlNbeVllRV0vIHx8ICQxIH4gL15ERVNDUklQVElPTi8gfHwKKwkJICAgICAkMSB+IE1BTl9ERVNDUklQVElPTiB8fAogCQkgICAgICQxIH4gL15DT01NQU5ELyB8fCAkMSB+IC9eT1ZFUlZJRVcvIHx8CiAJCSAgICAgJDEgfiAvXlNUUlVDVFVSRVMvIHx8ICQxIH4gL15JTlRST0RVQ1RJT04vIHx8CiAJCSAgICAgJDAgfiAvXlteIF0vKSkpIHsK