ZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9mbGFzaC5jIGIvc3Vwd2lzZG9tL3NwX2ZsYXNoLmMKaW5kZXggMDc4OGFlZC4uMDMyZjdiNiAxMDA2NDQKLS0tIGEvc3Vwd2lzZG9tL3NwX2ZsYXNoLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2ZsYXNoLmMKQEAgLTMyLDM1ICszMiwyNiBAQAogKiovCiB1aW50MTYgc3BfZmxhc2hfcGFnZV9yZWFkKHVpbnQzMiBhZGRyLHVpbnQ4IGJ1ZltdLHVpbnQzMiBsZW4pCiB7Ci0gIHVpbnQzMiBpOwotICB1aW50MzIgb2Zmc2V0ID0gMDsKLSAgdWludDggdGVtcFsxMjhdOworICB1aW50MzIgb2Zmc2V0OworICB1aW50OCB0ZW1wWzI1Nl07CiAKICAgaWYobGVuID4gc2l6ZW9mKHRlbXApKQogICB7CisgICAgbWVtc2V0KGJ1ZiwwLGxlbik7CiAgICAgcmV0dXJuIDE7CiAgIH0KLQorICAKKyAgb2Zmc2V0ID0gMDsKICAgd2hpbGUoMSkKICAgewotICAgIGkgPSAwOworICAgIG1lbXNldCh0ZW1wLDAsc2l6ZW9mIHRlbXApOwogICAgIHNwX2ZsYXNoX3JlYWQoYWRkciArb2Zmc2V0LHRlbXAsIGxlbik7Ci0gICAgd2hpbGUoaSA8IGxlbikKLSAgICB7Ci0gICAgICBpZigweEZGID09IHRlbXBbaV0pCi0gICAgICB7Ci0gICAgICAgICsraTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmKGxlbiA9PSBpKQorICAgIGlmKDAgPT0gaXNGRih0ZW1wLCh1aW50MTYpbGVuKSkKICAgICB7CiAgICAgICBpZigwID09IG9mZnNldCkKICAgICAgIHsKICAgICAgICAgLy/O3sr9vt0KKyAgICAgICAgbWVtc2V0KGJ1ZiwwLGxlbik7CiAgICAgICAgIHJldHVybiAxOwogICAgICAgfQogICAgICAgZWxzZQpAQCAtNzAsOSArNjEsMTEgQEAKICAgICAgIH0KICAgICB9CiAgICAgb2Zmc2V0ICs9IGxlbjsKLSAgICBpZihERUZfRkxBU0hfUGFnZVNpemUgPCAob2Zmc2V0ICtsZW4pKSAvLyAgs6y5/bWx0rPOtNXStb23tbvYMQorICAgIC8qKtK70rO41brD0LTN6rvys6y5/bWxx7DSsyDLtcP30rvSs7jVusPTw83qKiovCisgICAgaWYoREVGX0ZMQVNIX1BhZ2VTaXplIDwgKG9mZnNldCArbGVuKSkKICAgICB7Ci0gICAgICByZXR1cm4gMTsKKyAgICAgIG1lbWNweShidWYsdGVtcCxsZW4pOworICAgICAgcmV0dXJuIDA7CiAgICAgfQogICB9CiB9CkBAIC04NCw0MCArNzcsMzAgQEAKICoqLwogdWludDE2IHNwX2ZsYXNoX3BhZ2Vfd3JpdGUodWludDMyIGFkZHIsdWludDggYnVmW10sdWludDMyIGxlbikKIHsKLSAgdWludDMyIGk7Ci0gIHVpbnQzMiBvZmZzZXQgPSAwOwotICB1aW50OCB0ZW1wWzY0XTsKKyAgdWludDMyIG9mZnNldDsKKyAgdWludDggdGVtcFsyNTZdOwogCi0gIGlmKGxlbiA+IDY0KQorICBpZihsZW4gPiBzaXplb2YodGVtcCkpCiAgIHsKICAgICByZXR1cm4gMTsKICAgfQorICAKKyAgb2Zmc2V0ID0gMDsKICAgd2hpbGUoMSkKICAgewotICAgIGkgPSAwOworICAgIG1lbXNldCh0ZW1wLDAsc2l6ZW9mIHRlbXApOwogICAgIHNwX2ZsYXNoX3JlYWQoYWRkciArb2Zmc2V0LHRlbXAsIGxlbik7Ci0gICAgd2hpbGUoaSA8IGxlbikKKyAgICBpZigwID09IGlzRkYodGVtcCwodWludDE2KWxlbikpCiAgICAgewotICAgICAgaWYoMHhGRiA9PSB0ZW1wW2ldKQotICAgICAgewotICAgICAgICArK2k7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQorICAgICAgcmV0dXJuIHNwX2ZsYXNoX3dyaXRlKGFkZHIgK29mZnNldCxidWYsIGxlbik7CiAgICAgfQorICAgIG9mZnNldCArPSBsZW47CiAgICAgaWYoREVGX0ZMQVNIX1BhZ2VTaXplIDwgKG9mZnNldCArbGVuKSkgLy8gILOsuf21sdKzse3KvtLR0LTC+iyywbP91tjQtAogICAgIHsKICAgICAgIHNwX2ZsYXNoX2VyYXNlKGFkZHIpOwogICAgICAgcmV0dXJuIHNwX2ZsYXNoX3dyaXRlKGFkZHIsYnVmLCBsZW4pOwogICAgIH0KLSAgICBpZihsZW4gPT0gaSkKLSAgICB7Ci0gICAgICAvL87eyv2+3QotICAgICAgcmV0dXJuIHNwX2ZsYXNoX3dyaXRlKGFkZHIgK29mZnNldCxidWYsIGxlbik7Ci0gICAgfQotICAgIG9mZnNldCArPSBsZW47CiAgIH0KIH0KIAorCg==