IyBMb2NhbGUgbmFtZSBhbGlhcyBkYXRhIGJhc2UuCiMgQ29weXJpZ2h0IChDKSAxOTk2LDE5OTcsMTk5OCwxOTk5LDIwMDAsMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAojIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCiMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCAtIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsCiMgVVNBLgoKIyBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcyB0aGUgc2FtZSBhcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBvZgojIHRoZSBYIFdpbmRvdyBTeXN0ZW0sIHdoaWNoIG5vcm1hbGx5IGNhbiBiZSBmb3VuZCBpbgojCS91c3IvbGliL1gxMS9sb2NhbGUvbG9jYWxlLmFsaWFzCiMgQSBzaW5nbGUgbGluZSBjb250YWlucyB0d28gZmllbGRzOiBhbiBhbGlhcyBhbmQgYSBzdWJzdGl0dXRpb24gdmFsdWUuCiMgQWxsIGVudHJpZXMgYXJlIGNhc2UgaW5kZXBlbmRlbnQuCgojIE5vdGU6IFRoaXMgZmlsZSBpcyBmYXIgZnJvbSBiZWluZyBjb21wbGV0ZS4gIElmIHlvdSBoYXZlIGEgdmFsdWUgZm9yCiMgeW91ciBvd24gc2l0ZSB3aGljaCB5b3UgdGhpbmsgbWlnaHQgYmUgdXNlZnVsIGZvciBvdGhlcnMgdG9vLCBzaGFyZQojIGl0IHdpdGggdGhlIHJlc3Qgb2YgdXMuICBTZW5kIGl0IHVzaW5nIHRoZSBgZ2xpYmNidWcnIHNjcmlwdCB0bwojIGJ1Z3NAZ251Lm9yZy4KCiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAKCmJva21hbAkJbm9fTk8uSVNPLTg4NTktMQpib2tt5WwJCW5vX05PLklTTy04ODU5LTEKY2F0YWxhbgkJY2FfRVMuSVNPLTg4NTktMQpjcm9hdGlhbglocl9IUi5JU08tODg1OS0yCmN6ZWNoCQljc19DWi5JU08tODg1OS0yCmRhbmlzaCAgICAgICAgICBkYV9ESy5JU08tODg1OS0xCmRhbnNrCQlkYV9ESy5JU08tODg1OS0xCmRldXRzY2gJCWRlX0RFLklTTy04ODU5LTEKZHV0Y2gJCW5sX05MLklTTy04ODU5LTEKZWVzdGkJCWV0X0VFLklTTy04ODU5LTEKZXN0b25pYW4JZXRfRUUuSVNPLTg4NTktMQpmaW5uaXNoICAgICAgICAgZmlfRkkuSVNPLTg4NTktMQpmcmFu52Fpcwlmcl9GUi5JU08tODg1OS0xCmZyZW5jaAkJZnJfRlIuSVNPLTg4NTktMQpnYWxlZ28JCWdsX0VTLklTTy04ODU5LTEKZ2FsaWNpYW4JZ2xfRVMuSVNPLTg4NTktMQpnZXJtYW4JCWRlX0RFLklTTy04ODU5LTEKZ3JlZWsgICAgICAgICAgIGVsX0dSLklTTy04ODU5LTcKaGVicmV3ICAgICAgICAgIGhlX0lMLklTTy04ODU5LTgKaHJ2YXRza2kJaHJfSFIuSVNPLTg4NTktMgpodW5nYXJpYW4gICAgICAgaHVfSFUuSVNPLTg4NTktMgppY2VsYW5kaWMgICAgICAgaXNfSVMuSVNPLTg4NTktMQppdGFsaWFuICAgICAgICAgaXRfSVQuSVNPLTg4NTktMQpqYXBhbmVzZQlqYV9KUC5ldWNKUApqYXBhbmVzZS5ldWMJamFfSlAuZXVjSlAKamFfSlAJCWphX0pQLmV1Y0pQCmphX0pQLnVqaXMJamFfSlAuZXVjSlAKamFwYW5lc2Uuc2ppcwlqYV9KUC5TSklTCmtvcmVhbgkJa29fS1IuZXVjS1IKa29yZWFuLmV1YyAJa29fS1IuZXVjS1IKa29fS1IJCWtvX0tSLmV1Y0tSCmxpdGh1YW5pYW4gICAgICBsdF9MVC5JU08tODg1OS0xMwpuYl9OTwkJbm9fTk8uSVNPLTg4NTktMQpuYl9OTy5JU08tODg1OS0xIG5vX05PLklTTy04ODU5LTEKbm9yd2VnaWFuICAgICAgIG5vX05PLklTTy04ODU5LTEKbnlub3JzawkJbm5fTk8uSVNPLTg4NTktMQpwb2xpc2ggICAgICAgICAgcGxfUEwuSVNPLTg4NTktMgpwb3J0dWd1ZXNlICAgICAgcHRfUFQuSVNPLTg4NTktMQpyb21hbmlhbiAgICAgICAgcm9fUk8uSVNPLTg4NTktMgpydXNzaWFuICAgICAgICAgcnVfUlUuSVNPLTg4NTktNQpzbG92YWsgICAgICAgICAgc2tfU0suSVNPLTg4NTktMgpzbG92ZW5lICAgICAgICAgc2xfU0kuSVNPLTg4NTktMgpzbG92ZW5pYW4gICAgICAgc2xfU0kuSVNPLTg4NTktMgpzcGFuaXNoICAgICAgICAgZXNfRVMuSVNPLTg4NTktMQpzd2VkaXNoICAgICAgICAgc3ZfU0UuSVNPLTg4NTktMQp0aGFpCQl0aF9USC5USVMtNjIwCnR1cmtpc2ggICAgICAgICB0cl9UUi5JU08tODg1OS05Cg==