IyEvYmluL3NoCiMKIyBTcGVsbCBhIGZpbGUgJiBnZW5lcmF0ZSB0aGUgc3ludGF4IHN0YXRlbWVudHMgbmVjZXNzYXJ5IHRvCiMgaGlnaGxpZ2h0IGluIHZpbS4gIEJhc2VkIG9uIGEgcHJvZ3JhbSBmcm9tIEtyaXNobmEgR2FkZXBhbGxpCiMgPGtyaXNobmFAc3RkYXZpZHMucGlja2VyLmNvbT4uCiMKIyBJIHVzZSB0aGUgZm9sbG93aW5nIG1hcHBpbmdzIChpbiAudmltcmMpOgojCiMJbm9yZW1hcCA8Rjg+IDpzbyBgdmltc3BlbGwuc2ggJWA8Q1I+PENSPgojCW5vcmVtYXAgPEY3PiA6c3ludGF4IGNsZWFyIFNwZWxsRXJyb3JzPENSPgojCiMgTmVpbCBTY2hlbWVuYXVlciA8bmFzY2hlbWVAdWNhbGdhcnkuY2E+CiMgTWFyY2ggMTk5OQojIHVwZGF0ZWQgMjAwOCBKdWwgMTcgYnkgQnJhbQojCiMgU2FmZSBtZXRob2QgZm9yIHRoZSB0ZW1wIGZpbGUgYnkgSmF2aWVyIEZlcm7hbmRlei1TYW5ndWlub19QZfFhCgpJTkZJTEU9JDEKdG1wPSIke1RNUERJUi0vdG1wfSIKT1VURklMRT1gbWt0ZW1wIC10IHZpbXNwZWxsWFhYWFhYIHx8IHRlbXBmaWxlIC1wIHZpbXNwZWxsIHx8IGVjaG8gbm9uZWAKIyBJZiB0aGUgc3RhbmRhcmQgY29tbWFuZHMgZmFpbGVkIHRoZW4gY3JlYXRlIHRoZSBmaWxlCiMgc2luY2Ugd2UgY2Fubm90IGNyZWF0ZSBhIGRpcmVjdG9yeSAod2UgY2Fubm90IHJlbW92ZSBpdCBvbiBleGl0KQojIGNyZWF0ZSBhIGZpbGUgaW4gdGhlIHNhZmVzdCB3YXkgcG9zc2libGUuCmlmIHRlc3QgIiRPVVRGSUxFIiA9IG5vbmU7IHRoZW4KICAgICAgICBPVVRGSUxFPSR0bXAvdmltc3BlbGwkJAoJWyAtZSAkT1VURklMRSBdICYmIHsgZWNobyAiQ2Fubm90IHVzZSB0ZW1wb3JhcnkgZmlsZSAkT1VURklMRSwgaXQgYWxyZWFkeSBleGlzdHMhIjsgZXhpdCAxIDsgfSAKICAgICAgICAodW1hc2sgMDc3OyB0b3VjaCAkT1VURklMRSkKZmkKIyBOb3RlIHRoZSBjb3B5IG9mIHZpbXNwZWxsIGNhbm5vdCBiZSBkZWxldGVkIG9uIGV4aXQgc2luY2UgaXQgaXMKIyB1c2VkIGJ5IHZpbSwgb3RoZXJ3aXNlIGl0IHNob3VsZCBkbyB0aGlzOgojIHRyYXAgInJtIC1mICRPVVRGSUxFIiAwIDEgMiAzIDkgMTEgMTMgMTUKCgojCiMgbG9jYWwgc3BlbGxpbmdzCiMKTE9DQUxfRElDVD0ke0xPQ0FMX0RJQ1QtJEhPTUUvbG9jYWwvbGliL2xvY2FsX2RpY3R9CgppZiBbIC1mICRMT0NBTF9ESUNUIF0KdGhlbgoJU1BFTExfQVJHUz0iKyRMT0NBTF9ESUNUIgpmaQoKc3BlbGwgJFNQRUxMX0FSR1MgJElORklMRSB8IHNvcnQgLXUgfAphd2sgJwogICAgICB7CglwcmludGYgInN5bnRheCBtYXRjaCBTcGVsbEVycm9ycyBcIlxcPCVzXFw+XCJcbiIsICQwIDsKICAgICAgfQoKRU5EICAgewoJcHJpbnRmICJoaWdobGlnaHQgbGluayBTcGVsbEVycm9ycyBFcnJvck1zZ1xuXG4iIDsKICAgICAgfQonID4gJE9VVEZJTEUKZWNobyAiIXJtICRPVVRGSUxFIiA+PiAkT1VURklMRQplY2hvICRPVVRGSUxFCg==