ZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFyc2VyLmggYi9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhcnNlci5oCmluZGV4IGVjMDA1ZGUuLmRhYjA3MTkgMTAwNjQ0Ci0tLSBhL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFyc2VyLmgKKysrIGIvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYXJzZXIuaApAQCAtNDgyLDcgKzQ4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiU2tpcCwKICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJGaXJzdCk7CiAKLSAgRlhfQk9PTCBMb2FkQ3Jvc3NSZWZWNShGWF9GSUxFU0laRSBwb3MsIEZYX0ZJTEVTSVpFJiBwcmV2LCBGWF9CT09MIGJNYWluWFJlZik7CisgIEZYX0JPT0wgTG9hZENyb3NzUmVmVjUoRlhfRklMRVNJWkUqIHBvcywgRlhfQk9PTCBiTWFpblhSZWYpOwogCiAgIENQREZfRGljdGlvbmFyeSogTG9hZFRyYWlsZXJWNCgpOwogCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX3BhcnNlci5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX3BhcnNlci5jcHAKaW5kZXggZjY0YmEwZC4uYmM1ZDNlZCAxMDA2NDQKLS0tIGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhcnNlci9mcGRmX3BhcnNlcl9wYXJzZXIuY3BwCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfcGFyc2VyLmNwcApAQCAtNTgyLDIxICs1ODIsMjkgQEAKICAgICB9CiAgICAgbV9TeW50YXguUmVzdG9yZVBvcyhTYXZlZFBvcyArIGNvdW50ICogcmVjb3Jkc2l6ZSk7CiAgIH0KLSAgcmV0dXJuICFzdHJlYW1wb3MgfHwgTG9hZENyb3NzUmVmVjUoc3RyZWFtcG9zLCBzdHJlYW1wb3MsIEZBTFNFKTsKKyAgcmV0dXJuICFzdHJlYW1wb3MgfHwgTG9hZENyb3NzUmVmVjUoJnN0cmVhbXBvcywgRkFMU0UpOwogfQogCiBGWF9CT09MIENQREZfUGFyc2VyOjpMb2FkQWxsQ3Jvc3NSZWZWNShGWF9GSUxFU0laRSB4cmVmcG9zKSB7Ci0gIGlmICghTG9hZENyb3NzUmVmVjUoeHJlZnBvcywgeHJlZnBvcywgVFJVRSkpIHsKKyAgaWYgKCFMb2FkQ3Jvc3NSZWZWNSgmeHJlZnBvcywgVFJVRSkpIHsKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KLSAgd2hpbGUgKHhyZWZwb3MpCi0gICAgaWYgKCFMb2FkQ3Jvc3NSZWZWNSh4cmVmcG9zLCB4cmVmcG9zLCBGQUxTRSkpIHsKKyAgc3RkOjpzZXQ8RlhfRklMRVNJWkU+IHNlZW5feHJlZnBvczsKKyAgd2hpbGUgKHhyZWZwb3MpIHsKKyAgICBzZWVuX3hyZWZwb3MuaW5zZXJ0KHhyZWZwb3MpOworICAgIGlmICghTG9hZENyb3NzUmVmVjUoJnhyZWZwb3MsIEZBTFNFKSkgewogICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KKyAgICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcy4KKyAgICBpZiAoc2Vlbl94cmVmcG9zLmZpbmQoeHJlZnBvcykgIT0gc2Vlbl94cmVmcG9zLmVuZCgpKSB7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICB9CiAgIG1fT2JqZWN0U3RyZWFtTWFwLkluaXRIYXNoVGFibGUoMTAxLCBGQUxTRSk7CiAgIG1fYlhSZWZTdHJlYW0gPSBUUlVFOwogICByZXR1cm4gVFJVRTsKIH0KKwogRlhfQk9PTCBDUERGX1BhcnNlcjo6UmVidWlsZENyb3NzUmVmKCkgewogICBtX0Nyb3NzUmVmLlJlbW92ZUFsbCgpOwogICBtX1Y1VHlwZS5SZW1vdmVBbGwoKTsKQEAgLTk3NSwxMCArOTgzLDggQEAKICAgcmV0dXJuIG1fcFRyYWlsZXIgJiYgbV9Dcm9zc1JlZi5HZXRTaXplKCkgPiAwOwogfQogCi1GWF9CT09MIENQREZfUGFyc2VyOjpMb2FkQ3Jvc3NSZWZWNShGWF9GSUxFU0laRSBwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GSUxFU0laRSYgcHJldiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYk1haW5YUmVmKSB7Ci0gIENQREZfT2JqZWN0KiBwT2JqZWN0ID0gUGFyc2VJbmRpcmVjdE9iamVjdEF0KG1fcERvY3VtZW50LCBwb3MsIDAsIG51bGxwdHIpOworRlhfQk9PTCBDUERGX1BhcnNlcjo6TG9hZENyb3NzUmVmVjUoRlhfRklMRVNJWkUqIHBvcywgRlhfQk9PTCBiTWFpblhSZWYpIHsKKyAgQ1BERl9PYmplY3QqIHBPYmplY3QgPSBQYXJzZUluZGlyZWN0T2JqZWN0QXQobV9wRG9jdW1lbnQsICpwb3MsIDAsIG51bGxwdHIpOwogICBpZiAoIXBPYmplY3QpCiAgICAgcmV0dXJuIEZBTFNFOwogCkBAIC05OTcsNyArMTAwMyw3IEBACiAgIGlmICghcFN0cmVhbSkKICAgICByZXR1cm4gRkFMU0U7CiAKLSAgcHJldiA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiUHJldiIpKTsKKyAgKnBvcyA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiUHJldiIpKTsKICAgaW50MzJfdCBzaXplID0gcFN0cmVhbS0+R2V0RGljdCgpLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJTaXplIikpOwogICBpZiAoc2l6ZSA8IDApIHsKICAgICBwU3RyZWFtLT5SZWxlYXNlKCk7CkBAIC0xNTYzLDcgKzE1NjksNyBAQAogICBGWF9CT09MIGJYUmVmUmVidWlsdCA9IEZBTFNFOwogICBGWF9CT09MIGJMb2FkVjQgPSBGQUxTRTsKICAgaWYgKCEoYkxvYWRWNCA9IExvYWRDcm9zc1JlZlY0KGR3Rmlyc3RYUmVmT2Zmc2V0LCAwLCBGQUxTRSwgRkFMU0UpKSAmJgotICAgICAgIUxvYWRDcm9zc1JlZlY1KGR3Rmlyc3RYUmVmT2Zmc2V0LCBkd0ZpcnN0WFJlZk9mZnNldCwgVFJVRSkpIHsKKyAgICAgICFMb2FkQ3Jvc3NSZWZWNSgmZHdGaXJzdFhSZWZPZmZzZXQsIFRSVUUpKSB7CiAgICAgaWYgKCFSZWJ1aWxkQ3Jvc3NSZWYoKSkgewogICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsKICAgICB9CkBAIC0xNjIzLDEzICsxNjI5LDIwIEBACiAgIHJldHVybiBQREZQQVJTRV9FUlJPUl9TVUNDRVNTOwogfQogRlhfQk9PTCBDUERGX1BhcnNlcjo6TG9hZExpbmVhcml6ZWRBbGxDcm9zc1JlZlY1KEZYX0ZJTEVTSVpFIHhyZWZwb3MpIHsKLSAgaWYgKCFMb2FkQ3Jvc3NSZWZWNSh4cmVmcG9zLCB4cmVmcG9zLCBGQUxTRSkpIHsKKyAgaWYgKCFMb2FkQ3Jvc3NSZWZWNSgmeHJlZnBvcywgRkFMU0UpKSB7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9Ci0gIHdoaWxlICh4cmVmcG9zKQotICAgIGlmICghTG9hZENyb3NzUmVmVjUoeHJlZnBvcywgeHJlZnBvcywgRkFMU0UpKSB7CisgIHN0ZDo6c2V0PEZYX0ZJTEVTSVpFPiBzZWVuX3hyZWZwb3M7CisgIHdoaWxlICh4cmVmcG9zKSB7CisgICAgc2Vlbl94cmVmcG9zLmluc2VydCh4cmVmcG9zKTsKKyAgICBpZiAoIUxvYWRDcm9zc1JlZlY1KCZ4cmVmcG9zLCBGQUxTRSkpIHsKICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CisgICAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMuCisgICAgaWYgKHNlZW5feHJlZnBvcy5maW5kKHhyZWZwb3MpICE9IHNlZW5feHJlZnBvcy5lbmQoKSkgeworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQogICBtX09iamVjdFN0cmVhbU1hcC5Jbml0SGFzaFRhYmxlKDEwMSwgRkFMU0UpOwogICBtX2JYUmVmU3RyZWFtID0gVFJVRTsKICAgcmV0dXJuIFRSVUU7CmRpZmYgLS1naXQgYS9mcGRmc2RrL3NyYy9mcGRmdmlld19lbWJlZGRlcnRlc3QuY3BwIGIvZnBkZnNkay9zcmMvZnBkZnZpZXdfZW1iZWRkZXJ0ZXN0LmNwcAppbmRleCAzNWRhOWI2Li4zYmU5NmU3IDEwMDY0NAotLS0gYS9mcGRmc2RrL3NyYy9mcGRmdmlld19lbWJlZGRlcnRlc3QuY3BwCisrKyBiL2ZwZGZzZGsvc3JjL2ZwZGZ2aWV3X2VtYmVkZGVydGVzdC5jcHAKQEAgLTE5OSwzICsxOTksOCBAQAogICAvLyBEb2N1bWVudCBpcyBkYW1hbmdlZCBhbmQgY2FuJ3QgYmUgb3BlbmVkLgogICBFWFBFQ1RfRkFMU0UoT3BlbkRvY3VtZW50KCJidWdfNDU0Njk1LnBkZiIpKTsKIH0KKworLy8gVGhlIGZvbGxvd2luZyB0ZXN0cyBwYXNzIGlmIHRoZSBkb2N1bWVudCBvcGVucyB3aXRob3V0IGluZmluaXRlIGxvb3BpbmcuCitURVNUX0YoRlBERlZpZXdFbWJlZGRlcnRlc3QsIEhhbmdfMjk4KSB7CisgIEVYUEVDVF9GQUxTRShPcGVuRG9jdW1lbnQoImJ1Z18yOTgucGRmIikpOworfQpkaWZmIC0tZ2l0IGEvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzI5OC5pbiBiL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z18yOTguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA2Njc3OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z18yOTguaW4KQEAgLTAsMCArMSwyMSBAQAore3toZWFkZXJ9fQore3tvYmplY3QgMSAwfX0gPDwKKz4+CitlbmRvYmoKK3t7b2JqZWN0IDIgMH19IDw8CisgIC9UeXBlIC9DYXRhbG9nCisgIC9MZW5ndGggMAorICAvRmlsdGVyIEFTQ0lJSGV4RGVjb2RlCisgIC9QcmV2IDM1CisgIC9XIFsxIDIgM10KKz4+CitzdHJlYW0KK2VuZHN0cmVhbQorZW5kb2JqCit0cmFpbGVyIDw8CisgIC9TaXplIDYKKyAgL1Jvb3QgMSAwIFIKKz4+CitzdGFydHhyZWYKKzM1CislJUVPRgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzI5OC5wZGYgYi90ZXN0aW5nL3Jlc291cmNlcy9idWdfMjk4LnBkZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjE5NTU5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzI5OC5wZGYKQEAgLTAsMCArMSwyMiBAQAorJVBERi0xLjcKKyWg8qT0CisxIDAgb2JqIDw8Cis+PgorZW5kb2JqCisyIDAgb2JqIDw8CisgIC9UeXBlIC9DYXRhbG9nCisgIC9MZW5ndGggMAorICAvRmlsdGVyIEFTQ0lJSGV4RGVjb2RlCisgIC9QcmV2IDM1CisgIC9XIFsxIDIgM10KKz4+CitzdHJlYW0KK2VuZHN0cmVhbQorZW5kb2JqCit0cmFpbGVyIDw8CisgIC9TaXplIDYKKyAgL1Jvb3QgMSAwIFIKKz4+CitzdGFydHhyZWYKKzM1CislJUVPRgo=