ZGlmZiAtLWdpdCBhL2NvcmUvZnBkZmRvYy9jcGRmX2Zvcm1maWVsZC5jcHAgYi9jb3JlL2ZwZGZkb2MvY3BkZl9mb3JtZmllbGQuY3BwCmluZGV4IDcwNTgyN2QuLmY0YTYyYmQgMTAwNjQ0Ci0tLSBhL2NvcmUvZnBkZmRvYy9jcGRmX2Zvcm1maWVsZC5jcHAKKysrIGIvY29yZS9mcGRmZG9jL2NwZGZfZm9ybWZpZWxkLmNwcApAQCAtNDkzLDIwICs0OTMsMjQgQEAKIH0KIAogYm9vbCBDUERGX0Zvcm1GaWVsZDo6SXNJdGVtU2VsZWN0ZWQoaW50IGluZGV4KSBjb25zdCB7Ci0gIERDSEVDSyhHZXRUeXBlKCkgPT0ga0NvbWJvQm94IHx8IEdldFR5cGUoKSA9PSBrTGlzdEJveCk7Ci0gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gQ291bnRPcHRpb25zKCkpCisgIGlmIChHZXRUeXBlKCkgIT0ga0NvbWJvQm94ICYmIEdldFR5cGUoKSAhPSBrTGlzdEJveCkgewogICAgIHJldHVybiBmYWxzZTsKLQorICB9CisgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gQ291bnRPcHRpb25zKCkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KICAgLy8gRmlyc3QgY29uc2lkZXIgdGhlIC9JIGVudHJ5IGlmIGl0IGlzIHZhbGlkLCB0aGVuIGZhbGwgYmFjayB0byB0aGUgL1YgZW50cnkuCiAgIHJldHVybiBtX2JVc2VTZWxlY3RlZEluZGljZXMgPyBJc1NlbGVjdGVkSW5kZXgoaW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBJc1NlbGVjdGVkT3B0aW9uKEdldE9wdGlvblZhbHVlKGluZGV4KSk7CiB9CiAKIGJvb2wgQ1BERl9Gb3JtRmllbGQ6OlNldEl0ZW1TZWxlY3Rpb24oaW50IGluZGV4LCBOb3RpZmljYXRpb25PcHRpb24gbm90aWZ5KSB7Ci0gIERDSEVDSyhHZXRUeXBlKCkgPT0ga0NvbWJvQm94IHx8IEdldFR5cGUoKSA9PSBrTGlzdEJveCk7Ci0gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gQ291bnRPcHRpb25zKCkpCisgIGlmIChHZXRUeXBlKCkgIT0ga0NvbWJvQm94ICYmIEdldFR5cGUoKSAhPSBrTGlzdEJveCkgewogICAgIHJldHVybiBmYWxzZTsKLQorICB9CisgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gQ291bnRPcHRpb25zKCkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KICAgV2lkZVN0cmluZyBvcHRfdmFsdWUgPSBHZXRPcHRpb25WYWx1ZShpbmRleCk7CiAgIGlmIChub3RpZnkgPT0gTm90aWZpY2F0aW9uT3B0aW9uOjprTm90aWZ5ICYmCiAgICAgICAhTm90aWZ5TGlzdE9yQ29tYm9Cb3hCZWZvcmVDaGFuZ2Uob3B0X3ZhbHVlKSkgewpkaWZmIC0tZ2l0IGEvZnBkZnNkay9mcGRmX2Zvcm1maWxsX2VtYmVkZGVydGVzdC5jcHAgYi9mcGRmc2RrL2ZwZGZfZm9ybWZpbGxfZW1iZWRkZXJ0ZXN0LmNwcAppbmRleCAzZjNmNTFlLi4yNTlhNGZiIDEwMDY0NAotLS0gYS9mcGRmc2RrL2ZwZGZfZm9ybWZpbGxfZW1iZWRkZXJ0ZXN0LmNwcAorKysgYi9mcGRmc2RrL2ZwZGZfZm9ybWZpbGxfZW1iZWRkZXJ0ZXN0LmNwcApAQCAtMTMxNiw2ICsxMzE2LDIyIEBACiAgIEZPUk1fT25MQnV0dG9uVXAoZm9ybV9oYW5kbGUoKSwgcGFnZSwgMCwgMTQwLCA1OTApOwogICBVbmxvYWRQYWdlKHBhZ2UpOwogfQorCisvLyBUZXN0IHBhc3NlcyBpZiBEQ0hFQ0soKSBub3QgaGl0LgorVEVTVF9GKEZQREZGb3JtRmlsbEVtYmVkZGVyVGVzdCwgQlVHXzE0NzcwOTMpIHsKKyAgRW1iZWRkZXJUZXN0VGltZXJIYW5kbGluZ0RlbGVnYXRlIGRlbGVnYXRlOworICBTZXREZWxlZ2F0ZSgmZGVsZWdhdGUpOworCisgIEFTU0VSVF9UUlVFKE9wZW5Eb2N1bWVudCgiYnVnXzE0NzcwOTMucGRmIikpOworICBGUERGX1BBR0UgcGFnZSA9IExvYWRQYWdlKDApOworICBFWFBFQ1RfVFJVRShwYWdlKTsKKworICBEb09wZW5BY3Rpb25zKCk7CisgIGRlbGVnYXRlLkFkdmFuY2VUaW1lKDEwMDApOworICBkZWxlZ2F0ZS5BZHZhbmNlVGltZSgxMDAwKTsKKyAgVW5sb2FkUGFnZShwYWdlKTsKK30KKwogI2VuZGlmICAvLyBQREZfRU5BQkxFX1Y4CiAKIFRFU1RfRihGUERGRm9ybUZpbGxFbWJlZGRlclRlc3QsIEZvcm1UZXh0KSB7CmRpZmYgLS1naXQgYS90ZXN0aW5nL3Jlc291cmNlcy9idWdfMTQ3NzA5My5pbiBiL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z18xNDc3MDkzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNjBlN2YKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Jlc291cmNlcy9idWdfMTQ3NzA5My5pbgpAQCAtMCwwICsxLDY2IEBACit7e2hlYWRlcn19Cit7e29iamVjdCAxIDB9fSA8PAorICAvVHlwZSAvQ2F0YWxvZworICAvT3BlbkFjdGlvbiA3IDAgUgorICAvUGFnZXMgMiAwIFIKKz4+CitlbmRvYmoKK3t7b2JqZWN0IDIgMH19IDw8CisgIC9UeXBlIC9QYWdlcworICAvS2lkcyBbMyAwIFJdCisgIC9Db3VudCAxCis+PgorZW5kb2JqCit7e29iamVjdCAzIDB9fSA8PAorICAvVHlwZSAvUGFnZQorICAvUGFyZW50IDIgMCBSCisgIC9Bbm5vdHMgWzYgMCBSXQorICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQorICAvQ29udGVudHMgWzQgMCBSXQorPj4KK2VuZG9iagore3tvYmplY3QgNCAwfX0gPDwKKyAge3tzdHJlYW1sZW59fQorPj4KK3N0cmVhbQorJSBzdGFydCB0aGUgc3RyZWFtCisxIDAgMCAxIDUwIDcwMCBjbSAlIHRleHQgYXJlYe+8iDUwLDcwMO+8iQorQlQgICUgc3RhcnQgIHRoZSB0ZXh0IGNvbnRlbnQKKyAvRjAgMzYgVGYgICAgICAgICAlIGZvbnQgc2l6ZQorIChIb3BlIHUgYXJlIFVzZUZ1bCEpIFRqICUgZm9udCBjb250ZW50CitFVCAgJSBlbmQgdGhlIHRleHQgY29udGVudAorZW5kc3RyZWFtCitlbmRvYmoKK3t7b2JqZWN0IDUgMH19ICA8PAorICB7e3N0cmVhbWxlbn19Cis+Pgorc3RyZWFtCisgIGZ1bmN0aW9uIHJ1bigpIHsKKyAgICB0aGlzLmdldEZpZWxkKCdiYWRfZmllbGQnKS52YWx1ZSA9ICdBcHBsZSc7CisgIH0KKyAgYXBwLnNldFRpbWVPdXQoJ3J1bigpJywgMTAwMCApOworZW5kc3RyZWFtCitlbmRvYmoKK3t7b2JqZWN0IDYgMH19IDw8CisgIC9UeXBlIC9Bbm5vdAorICAvU3VidHlwZSAvV2lkZ2V0CisgIC9GIDQKKyAgL0ZUIC9UeAorICAvT3B0IFsoQXBwbGUpIChCYW5hbmEpXQorICAvUmVjdCBbMjAwIDIwMCA0MDAgNDAwXQorICAvVCAoYmFkX2ZpZWxkKQorICAvViA8PAorICAgIC9BIChiKQorICA+PgorPj4KK2VuZG9iagore3tvYmplY3QgNyAwfX0gPDwKKyAgL1R5cGUgL0FjdGlvbgorICAvSlMgNSAwIFIKKyAgL1MgL0phdmFTY3JpcHQKKz4+CitlbmRvYmoKK3t7eHJlZn19Cit7e3RyYWlsZXJ9fQore3tzdGFydHhyZWZ9fQorJSVFT0YKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z18xNDc3MDkzLnBkZiBiL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z18xNDc3MDkzLnBkZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDQ0MDJiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzE0NzcwOTMucGRmCkBAIC0wLDAgKzEsODAgQEAKKyVQREYtMS43CisloPKk9AorMSAwIG9iaiA8PAorICAvVHlwZSAvQ2F0YWxvZworICAvT3BlbkFjdGlvbiA3IDAgUgorICAvUGFnZXMgMiAwIFIKKz4+CitlbmRvYmoKKzIgMCBvYmogPDwKKyAgL1R5cGUgL1BhZ2VzCisgIC9LaWRzIFszIDAgUl0KKyAgL0NvdW50IDEKKz4+CitlbmRvYmoKKzMgMCBvYmogPDwKKyAgL1R5cGUgL1BhZ2UKKyAgL1BhcmVudCAyIDAgUgorICAvQW5ub3RzIFs2IDAgUl0KKyAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KKyAgL0NvbnRlbnRzIFs0IDAgUl0KKz4+CitlbmRvYmoKKzQgMCBvYmogPDwKKyAgL0xlbmd0aCAxODkKKz4+CitzdHJlYW0KKyUgc3RhcnQgdGhlIHN0cmVhbQorMSAwIDAgMSA1MCA3MDAgY20gJSB0ZXh0IGFyZWHvvIg1MCw3MDDvvIkKK0JUICAlIHN0YXJ0ICB0aGUgdGV4dCBjb250ZW50CisgL0YwIDM2IFRmICAgICAgICAgJSBmb250IHNpemUKKyAoSG9wZSB1IGFyZSBVc2VGdWwhKSBUaiAlIGZvbnQgY29udGVudAorRVQgICUgZW5kIHRoZSB0ZXh0IGNvbnRlbnQKK2VuZHN0cmVhbQorZW5kb2JqCis1IDAgb2JqICA8PAorICAvTGVuZ3RoIDEwNQorPj4KK3N0cmVhbQorICBmdW5jdGlvbiBydW4oKSB7CisgICAgdGhpcy5nZXRGaWVsZCgnYmFkX2ZpZWxkJykudmFsdWUgPSAnQXBwbGUnOworICB9CisgIGFwcC5zZXRUaW1lT3V0KCdydW4oKScsIDEwMDAgKTsKK2VuZHN0cmVhbQorZW5kb2JqCis2IDAgb2JqIDw8CisgIC9UeXBlIC9Bbm5vdAorICAvU3VidHlwZSAvV2lkZ2V0CisgIC9GIDQKKyAgL0ZUIC9UeAorICAvT3B0IFsoQXBwbGUpIChCYW5hbmEpXQorICAvUmVjdCBbMjAwIDIwMCA0MDAgNDAwXQorICAvVCAoYmFkX2ZpZWxkKQorICAvViA8PAorICAgIC9BIChiKQorICA+PgorPj4KK2VuZG9iagorNyAwIG9iaiA8PAorICAvVHlwZSAvQWN0aW9uCisgIC9KUyA1IDAgUgorICAvUyAvSmF2YVNjcmlwdAorPj4KK2VuZG9iagoreHJlZgorMCA4CiswMDAwMDAwMDAwIDY1NTM1IGYgCiswMDAwMDAwMDE1IDAwMDAwIG4gCiswMDAwMDAwMDg4IDAwMDAwIG4gCiswMDAwMDAwMTUxIDAwMDAwIG4gCiswMDAwMDAwMjY2IDAwMDAwIG4gCiswMDAwMDAwNTA3IDAwMDAwIG4gCiswMDAwMDAwNjY1IDAwMDAwIG4gCiswMDAwMDAwODMwIDAwMDAwIG4gCit0cmFpbGVyIDw8CisgIC9Sb290IDEgMCBSCisgIC9TaXplIDgKKz4+CitzdGFydHhyZWYKKzg5NgorJSVFT0YK