From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-ee0-f46.google.com ([74.125.83.46]:57264 "EHLO mail-ee0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751035Ab2BZMPe (ORCPT ); Sun, 26 Feb 2012 07:15:34 -0500 Received: by eekc41 with SMTP id c41so338396eek.19 for ; Sun, 26 Feb 2012 04:15:32 -0800 (PST) Message-ID: <4F4A2260.2000203@uni-bielefeld.de> Date: Sun, 26 Feb 2012 13:15:28 +0100 From: Robert Abel Reply-To: abel@uni-bielefeld.de MIME-Version: 1.0 To: Gregor Jasny CC: linux-media@vger.kernel.org Subject: Re: [PATCH][libv4l] Bytes per Line References: <4F3BD50A.3010608@uni-bielefeld.de> <4F3C31F9.8070000@googlemail.com> <4F42A22D.4010704@uni-bielefeld.de> <4F49183A.6080105@googlemail.com> In-Reply-To: <4F49183A.6080105@googlemail.com> Content-Type: multipart/mixed; boundary="------------020500030503030401080206" Sender: linux-media-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------020500030503030401080206 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit A patch for conversion bayer => rgb as well as bayer => yuv is attached. Basically, every time where width was assumed to be the offset to the neighboring pixel below, now step is used for compatibility with images where width != bytesperline. Signed-off-by: Robert Abel --------------020500030503030401080206 Content-Type: text/plain; name="0001-fix_bayer_stepsize.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-fix_bayer_stepsize.patch" ZGlmZiAtTmF1ciBhL2xpYi9saWJ2NGxjb252ZXJ0L2JheWVyLmMgYi9saWIvbGlidjRsY29u dmVydC9iYXllci5jDQotLS0gYS9saWIvbGlidjRsY29udmVydC9iYXllci5jCTIwMTItMDIt MTUgMTE6MDM6NDYuNzkyMjc5NjM4ICswMTAwDQorKysgYi9saWIvbGlidjRsY29udmVydC9i YXllci5jCTIwMTItMDItMjAgMjA6MTc6MzYuNzQxMDI2NzY4ICswMTAwDQpAQCAtNDQsNyAr NDQsNyBAQA0KIC8qIGluc3BpcmVkIGJ5IE9wZW5DVidzIEJheWVyIGRlY29kaW5nICovDQog c3RhdGljIHZvaWQgdjRsY29udmVydF9ib3JkZXJfYmF5ZXJfbGluZV90b19iZ3IyNCgNCiAJ CWNvbnN0IHVuc2lnbmVkIGNoYXIgKmJheWVyLCBjb25zdCB1bnNpZ25lZCBjaGFyICphZGph Y2VudF9iYXllciwNCi0JCXVuc2lnbmVkIGNoYXIgKmJnciwgaW50IHdpZHRoLCBpbnQgc3Rh cnRfd2l0aF9ncmVlbiwgaW50IGJsdWVfbGluZSkNCisJCXVuc2lnbmVkIGNoYXIgKmJnciwg aW50IHdpZHRoLCBjb25zdCBpbnQgc3RhcnRfd2l0aF9ncmVlbiwgY29uc3QgaW50IGJsdWVf bGluZSkNCiB7DQogCWludCB0MCwgdDE7DQogDQpAQCAtMTY0LDExICsxNjQsMTEgQEANCiAN CiAvKiBGcm9tIGxpYmRjMTM5NCwgd2hpY2ggb24gdHVybiB3YXMgYmFzZWQgb24gT3BlbkNW J3MgQmF5ZXIgZGVjb2RpbmcgKi8NCiBzdGF0aWMgdm9pZCBiYXllcl90b19yZ2JiZ3IyNChj b25zdCB1bnNpZ25lZCBjaGFyICpiYXllciwNCi0JCXVuc2lnbmVkIGNoYXIgKmJnciwgaW50 IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBpbnQgcGl4Zm10LA0KKwkJdW5zaWduZWQg Y2hhciAqYmdyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IHVuc2lnbmVkIGludCBz dGVwLCB1bnNpZ25lZCBpbnQgcGl4Zm10LA0KIAkJaW50IHN0YXJ0X3dpdGhfZ3JlZW4sIGlu dCBibHVlX2xpbmUpDQogew0KIAkvKiByZW5kZXIgdGhlIGZpcnN0IGxpbmUgKi8NCi0JdjRs Y29udmVydF9ib3JkZXJfYmF5ZXJfbGluZV90b19iZ3IyNChiYXllciwgYmF5ZXIgKyB3aWR0 aCwgYmdyLCB3aWR0aCwNCisJdjRsY29udmVydF9ib3JkZXJfYmF5ZXJfbGluZV90b19iZ3Iy NChiYXllciwgYmF5ZXIgKyBzdGVwLCBiZ3IsIHdpZHRoLA0KIAkJCXN0YXJ0X3dpdGhfZ3Jl ZW4sIGJsdWVfbGluZSk7DQogCWJnciArPSB3aWR0aCAqIDM7DQogDQpAQCAtMTc5LDEzOSAr MTc5LDE0MSBAQA0KIAkJY29uc3QgdW5zaWduZWQgY2hhciAqYmF5ZXJfZW5kID0gYmF5ZXIg KyAod2lkdGggLSAyKTsNCiANCiAJCWlmIChzdGFydF93aXRoX2dyZWVuKSB7DQotCQkJLyog T3BlbkNWIGhhcyBhIGJ1ZyBpbiB0aGUgbmV4dCBsaW5lLCB3aGljaCB3YXMNCi0JCQkgICB0 MCA9IChiYXllclswXSArIGJheWVyW3dpZHRoICogMl0gKyAxKSA+PiAxOyAqLw0KLQkJCXQw ID0gKGJheWVyWzFdICsgYmF5ZXJbd2lkdGggKiAyICsgMV0gKyAxKSA+PiAxOw0KKw0KKwkJ CXQwID0gKGJheWVyWzFdICsgYmF5ZXJbc3RlcCAqIDIgKyAxXSArIDEpID4+IDE7DQogCQkJ LyogV3JpdGUgZmlyc3QgcGl4ZWwgKi8NCi0JCQl0MSA9IChiYXllclswXSArIGJheWVyW3dp ZHRoICogMl0gKyBiYXllclt3aWR0aCArIDFdICsgMSkgLyAzOw0KKwkJCXQxID0gKGJheWVy WzBdICsgYmF5ZXJbc3RlcCAqIDJdICsgYmF5ZXJbc3RlcCArIDFdICsgMSkgLyAzOw0KIAkJ CWlmIChibHVlX2xpbmUpIHsNCiAJCQkJKmJncisrID0gdDA7DQogCQkJCSpiZ3IrKyA9IHQx Ow0KLQkJCQkqYmdyKysgPSBiYXllclt3aWR0aF07DQorCQkJCSpiZ3IrKyA9IGJheWVyW3N0 ZXBdOw0KIAkJCX0gZWxzZSB7DQotCQkJCSpiZ3IrKyA9IGJheWVyW3dpZHRoXTsNCisJCQkJ KmJncisrID0gYmF5ZXJbc3RlcF07DQogCQkJCSpiZ3IrKyA9IHQxOw0KIAkJCQkqYmdyKysg PSB0MDsNCiAJCQl9DQogDQogCQkJLyogV3JpdGUgc2Vjb25kIHBpeGVsICovDQotCQkJdDEg PSAoYmF5ZXJbd2lkdGhdICsgYmF5ZXJbd2lkdGggKyAyXSArIDEpID4+IDE7DQorCQkJdDEg PSAoYmF5ZXJbc3RlcF0gKyBiYXllcltzdGVwICsgMl0gKyAxKSA+PiAxOw0KIAkJCWlmIChi bHVlX2xpbmUpIHsNCiAJCQkJKmJncisrID0gdDA7DQotCQkJCSpiZ3IrKyA9IGJheWVyW3dp ZHRoICsgMV07DQorCQkJCSpiZ3IrKyA9IGJheWVyW3N0ZXAgKyAxXTsNCiAJCQkJKmJncisr ID0gdDE7DQogCQkJfSBlbHNlIHsNCiAJCQkJKmJncisrID0gdDE7DQotCQkJCSpiZ3IrKyA9 IGJheWVyW3dpZHRoICsgMV07DQorCQkJCSpiZ3IrKyA9IGJheWVyW3N0ZXAgKyAxXTsNCiAJ CQkJKmJncisrID0gdDA7DQogCQkJfQ0KIAkJCWJheWVyKys7DQogCQl9IGVsc2Ugew0KIAkJ CS8qIFdyaXRlIGZpcnN0IHBpeGVsICovDQotCQkJdDAgPSAoYmF5ZXJbMF0gKyBiYXllclt3 aWR0aCAqIDJdICsgMSkgPj4gMTsNCisJCQl0MCA9IChiYXllclswXSArIGJheWVyW3N0ZXAg KiAyXSArIDEpID4+IDE7DQogCQkJaWYgKGJsdWVfbGluZSkgew0KIAkJCQkqYmdyKysgPSB0 MDsNCi0JCQkJKmJncisrID0gYmF5ZXJbd2lkdGhdOw0KLQkJCQkqYmdyKysgPSBiYXllclt3 aWR0aCArIDFdOw0KKwkJCQkqYmdyKysgPSBiYXllcltzdGVwXTsNCisJCQkJKmJncisrID0g YmF5ZXJbc3RlcCArIDFdOw0KIAkJCX0gZWxzZSB7DQotCQkJCSpiZ3IrKyA9IGJheWVyW3dp ZHRoICsgMV07DQotCQkJCSpiZ3IrKyA9IGJheWVyW3dpZHRoXTsNCisJCQkJKmJncisrID0g YmF5ZXJbc3RlcCArIDFdOw0KKwkJCQkqYmdyKysgPSBiYXllcltzdGVwXTsNCiAJCQkJKmJn cisrID0gdDA7DQogCQkJfQ0KIAkJfQ0KIA0KIAkJaWYgKGJsdWVfbGluZSkgew0KIAkJCWZv ciAoOyBiYXllciA8PSBiYXllcl9lbmQgLSAyOyBiYXllciArPSAyKSB7DQotCQkJCXQwID0g KGJheWVyWzBdICsgYmF5ZXJbMl0gKyBiYXllclt3aWR0aCAqIDJdICsNCi0JCQkJCWJheWVy W3dpZHRoICogMiArIDJdICsgMikgPj4gMjsNCi0JCQkJdDEgPSAoYmF5ZXJbMV0gKyBiYXll clt3aWR0aF0gKyBiYXllclt3aWR0aCArIDJdICsNCi0JCQkJCWJheWVyW3dpZHRoICogMiAr IDFdICsgMikgPj4gMjsNCisJCQkJdDAgPSAoYmF5ZXJbMF0gKyBiYXllclsyXSArIGJheWVy W3N0ZXAgKiAyXSArDQorCQkJCQliYXllcltzdGVwICogMiArIDJdICsgMikgPj4gMjsNCisJ CQkJdDEgPSAoYmF5ZXJbMV0gKyBiYXllcltzdGVwXSArIGJheWVyW3N0ZXAgKyAyXSArDQor CQkJCQliYXllcltzdGVwICogMiArIDFdICsgMikgPj4gMjsNCiAJCQkJKmJncisrID0gdDA7 DQogCQkJCSpiZ3IrKyA9IHQxOw0KLQkJCQkqYmdyKysgPSBiYXllclt3aWR0aCArIDFdOw0K KwkJCQkqYmdyKysgPSBiYXllcltzdGVwICsgMV07DQogDQotCQkJCXQwID0gKGJheWVyWzJd ICsgYmF5ZXJbd2lkdGggKiAyICsgMl0gKyAxKSA+PiAxOw0KLQkJCQl0MSA9IChiYXllclt3 aWR0aCArIDFdICsgYmF5ZXJbd2lkdGggKyAzXSArIDEpID4+IDE7DQorCQkJCXQwID0gKGJh eWVyWzJdICsgYmF5ZXJbc3RlcCAqIDIgKyAyXSArIDEpID4+IDE7DQorCQkJCXQxID0gKGJh eWVyW3N0ZXAgKyAxXSArIGJheWVyW3N0ZXAgKyAzXSArIDEpID4+IDE7DQogCQkJCSpiZ3Ir KyA9IHQwOw0KLQkJCQkqYmdyKysgPSBiYXllclt3aWR0aCArIDJdOw0KKwkJCQkqYmdyKysg PSBiYXllcltzdGVwICsgMl07DQogCQkJCSpiZ3IrKyA9IHQxOw0KIAkJCX0NCiAJCX0gZWxz ZSB7DQogCQkJZm9yICg7IGJheWVyIDw9IGJheWVyX2VuZCAtIDI7IGJheWVyICs9IDIpIHsN Ci0JCQkJdDAgPSAoYmF5ZXJbMF0gKyBiYXllclsyXSArIGJheWVyW3dpZHRoICogMl0gKw0K LQkJCQkJYmF5ZXJbd2lkdGggKiAyICsgMl0gKyAyKSA+PiAyOw0KLQkJCQl0MSA9IChiYXll clsxXSArIGJheWVyW3dpZHRoXSArIGJheWVyW3dpZHRoICsgMl0gKw0KLQkJCQkJYmF5ZXJb d2lkdGggKiAyICsgMV0gKyAyKSA+PiAyOw0KLQkJCQkqYmdyKysgPSBiYXllclt3aWR0aCAr IDFdOw0KKwkJCQl0MCA9IChiYXllclswXSArIGJheWVyWzJdICsgYmF5ZXJbc3RlcCAqIDJd ICsNCisJCQkJCWJheWVyW3N0ZXAgKiAyICsgMl0gKyAyKSA+PiAyOw0KKwkJCQl0MSA9IChi YXllclsxXSArIGJheWVyW3N0ZXBdICsgYmF5ZXJbc3RlcCArIDJdICsNCisJCQkJCWJheWVy W3N0ZXAgKiAyICsgMV0gKyAyKSA+PiAyOw0KKwkJCQkqYmdyKysgPSBiYXllcltzdGVwICsg MV07DQogCQkJCSpiZ3IrKyA9IHQxOw0KIAkJCQkqYmdyKysgPSB0MDsNCiANCi0JCQkJdDAg PSAoYmF5ZXJbMl0gKyBiYXllclt3aWR0aCAqIDIgKyAyXSArIDEpID4+IDE7DQotCQkJCXQx ID0gKGJheWVyW3dpZHRoICsgMV0gKyBiYXllclt3aWR0aCArIDNdICsgMSkgPj4gMTsNCisJ CQkJdDAgPSAoYmF5ZXJbMl0gKyBiYXllcltzdGVwICogMiArIDJdICsgMSkgPj4gMTsNCisJ CQkJdDEgPSAoYmF5ZXJbc3RlcCArIDFdICsgYmF5ZXJbc3RlcCArIDNdICsgMSkgPj4gMTsN CiAJCQkJKmJncisrID0gdDE7DQotCQkJCSpiZ3IrKyA9IGJheWVyW3dpZHRoICsgMl07DQor CQkJCSpiZ3IrKyA9IGJheWVyW3N0ZXAgKyAyXTsNCiAJCQkJKmJncisrID0gdDA7DQogCQkJ fQ0KIAkJfQ0KIA0KIAkJaWYgKGJheWVyIDwgYmF5ZXJfZW5kKSB7DQogCQkJLyogd3JpdGUg c2Vjb25kIHRvIGxhc3QgcGl4ZWwgKi8NCi0JCQl0MCA9IChiYXllclswXSArIGJheWVyWzJd ICsgYmF5ZXJbd2lkdGggKiAyXSArDQotCQkJCWJheWVyW3dpZHRoICogMiArIDJdICsgMikg Pj4gMjsNCi0JCQl0MSA9IChiYXllclsxXSArIGJheWVyW3dpZHRoXSArIGJheWVyW3dpZHRo ICsgMl0gKw0KLQkJCQliYXllclt3aWR0aCAqIDIgKyAxXSArIDIpID4+IDI7DQorCQkJdDAg PSAoYmF5ZXJbMF0gKyBiYXllclsyXSArIGJheWVyW3N0ZXAgKiAyXSArDQorCQkJCWJheWVy W3N0ZXAgKiAyICsgMl0gKyAyKSA+PiAyOw0KKwkJCXQxID0gKGJheWVyWzFdICsgYmF5ZXJb c3RlcF0gKyBiYXllcltzdGVwICsgMl0gKw0KKwkJCQliYXllcltzdGVwICogMiArIDFdICsg MikgPj4gMjsNCiAJCQlpZiAoYmx1ZV9saW5lKSB7DQogCQkJCSpiZ3IrKyA9IHQwOw0KIAkJ CQkqYmdyKysgPSB0MTsNCi0JCQkJKmJncisrID0gYmF5ZXJbd2lkdGggKyAxXTsNCisJCQkJ KmJncisrID0gYmF5ZXJbc3RlcCArIDFdOw0KIAkJCX0gZWxzZSB7DQotCQkJCSpiZ3IrKyA9 IGJheWVyW3dpZHRoICsgMV07DQorCQkJCSpiZ3IrKyA9IGJheWVyW3N0ZXAgKyAxXTsNCiAJ CQkJKmJncisrID0gdDE7DQogCQkJCSpiZ3IrKyA9IHQwOw0KIAkJCX0NCiAJCQkvKiB3cml0 ZSBsYXN0IHBpeGVsICovDQotCQkJdDAgPSAoYmF5ZXJbMl0gKyBiYXllclt3aWR0aCAqIDIg KyAyXSArIDEpID4+IDE7DQorCQkJdDAgPSAoYmF5ZXJbMl0gKyBiYXllcltzdGVwICogMiAr IDJdICsgMSkgPj4gMTsNCiAJCQlpZiAoYmx1ZV9saW5lKSB7DQogCQkJCSpiZ3IrKyA9IHQw Ow0KLQkJCQkqYmdyKysgPSBiYXllclt3aWR0aCArIDJdOw0KLQkJCQkqYmdyKysgPSBiYXll clt3aWR0aCArIDFdOw0KKwkJCQkqYmdyKysgPSBiYXllcltzdGVwICsgMl07DQorCQkJCSpi Z3IrKyA9IGJheWVyW3N0ZXAgKyAxXTsNCiAJCQl9IGVsc2Ugew0KLQkJCQkqYmdyKysgPSBi YXllclt3aWR0aCArIDFdOw0KLQkJCQkqYmdyKysgPSBiYXllclt3aWR0aCArIDJdOw0KKwkJ CQkqYmdyKysgPSBiYXllcltzdGVwICsgMV07DQorCQkJCSpiZ3IrKyA9IGJheWVyW3N0ZXAg KyAyXTsNCiAJCQkJKmJncisrID0gdDA7DQogCQkJfQ0KKw0KIAkJCWJheWVyKys7DQorDQog CQl9IGVsc2Ugew0KIAkJCS8qIHdyaXRlIGxhc3QgcGl4ZWwgKi8NCi0JCQl0MCA9IChiYXll clswXSArIGJheWVyW3dpZHRoICogMl0gKyAxKSA+PiAxOw0KLQkJCXQxID0gKGJheWVyWzFd ICsgYmF5ZXJbd2lkdGggKiAyICsgMV0gKyBiYXllclt3aWR0aF0gKyAxKSAvIDM7DQorCQkJ dDAgPSAoYmF5ZXJbMF0gKyBiYXllcltzdGVwICogMl0gKyAxKSA+PiAxOw0KKwkJCXQxID0g KGJheWVyWzFdICsgYmF5ZXJbc3RlcCAqIDIgKyAxXSArIGJheWVyW3N0ZXBdICsgMSkgLyAz Ow0KIAkJCWlmIChibHVlX2xpbmUpIHsNCiAJCQkJKmJncisrID0gdDA7DQogCQkJCSpiZ3Ir KyA9IHQxOw0KLQkJCQkqYmdyKysgPSBiYXllclt3aWR0aCArIDFdOw0KKwkJCQkqYmdyKysg PSBiYXllcltzdGVwICsgMV07DQogCQkJfSBlbHNlIHsNCi0JCQkJKmJncisrID0gYmF5ZXJb d2lkdGggKyAxXTsNCisJCQkJKmJncisrID0gYmF5ZXJbc3RlcCArIDFdOw0KIAkJCQkqYmdy KysgPSB0MTsNCiAJCQkJKmJncisrID0gdDA7DQogCQkJfQ0KKw0KIAkJfQ0KIA0KLQkJLyog c2tpcCAyIGJvcmRlciBwaXhlbHMgKi8NCi0JCWJheWVyICs9IDI7DQorCQkvKiBza2lwIDIg Ym9yZGVyIHBpeGVscyBhbmQgcGFkZGluZyAqLw0KKwkJYmF5ZXIgKz0gKHN0ZXAgLSB3aWR0 aCkgKyAyOw0KIA0KIAkJYmx1ZV9saW5lID0gIWJsdWVfbGluZTsNCiAJCXN0YXJ0X3dpdGhf Z3JlZW4gPSAhc3RhcnRfd2l0aF9ncmVlbjsNCiAJfQ0KIA0KIAkvKiByZW5kZXIgdGhlIGxh c3QgbGluZSAqLw0KLQl2NGxjb252ZXJ0X2JvcmRlcl9iYXllcl9saW5lX3RvX2JncjI0KGJh eWVyICsgd2lkdGgsIGJheWVyLCBiZ3IsIHdpZHRoLA0KKwl2NGxjb252ZXJ0X2JvcmRlcl9i YXllcl9saW5lX3RvX2JncjI0KGJheWVyICsgc3RlcCwgYmF5ZXIsIGJnciwgd2lkdGgsDQog CQkJIXN0YXJ0X3dpdGhfZ3JlZW4sICFibHVlX2xpbmUpOw0KIH0NCiANCiB2b2lkIHY0bGNv bnZlcnRfYmF5ZXJfdG9fcmdiMjQoY29uc3QgdW5zaWduZWQgY2hhciAqYmF5ZXIsDQotCQl1 bnNpZ25lZCBjaGFyICpiZ3IsIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgaW50 IHBpeGZtdCkNCisJCXVuc2lnbmVkIGNoYXIgKmJnciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0 LCBjb25zdCB1bnNpZ25lZCBpbnQgc3RlcCwgdW5zaWduZWQgaW50IHBpeGZtdCkNCiB7DQot CWJheWVyX3RvX3JnYmJncjI0KGJheWVyLCBiZ3IsIHdpZHRoLCBoZWlnaHQsIHBpeGZtdCwN CisJYmF5ZXJfdG9fcmdiYmdyMjQoYmF5ZXIsIGJnciwgd2lkdGgsIGhlaWdodCwgc3RlcCwg cGl4Zm10LA0KIAkJCXBpeGZtdCA9PSBWNEwyX1BJWF9GTVRfU0dCUkc4CQkvKiBzdGFydCB3 aXRoIGdyZWVuICovDQogCQkJfHwgcGl4Zm10ID09IFY0TDJfUElYX0ZNVF9TR1JCRzgsDQog CQkJcGl4Zm10ICE9IFY0TDJfUElYX0ZNVF9TQkdHUjgJCS8qIGJsdWUgbGluZSAqLw0KQEAg LTMxOSw5ICszMjEsOSBAQA0KIH0NCiANCiB2b2lkIHY0bGNvbnZlcnRfYmF5ZXJfdG9fYmdy MjQoY29uc3QgdW5zaWduZWQgY2hhciAqYmF5ZXIsDQotCQl1bnNpZ25lZCBjaGFyICpiZ3Is IGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgaW50IHBpeGZtdCkNCisJCXVuc2ln bmVkIGNoYXIgKmJnciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCB1bnNpZ25lZCBp bnQgc3RlcCwgdW5zaWduZWQgaW50IHBpeGZtdCkNCiB7DQotCWJheWVyX3RvX3JnYmJncjI0 KGJheWVyLCBiZ3IsIHdpZHRoLCBoZWlnaHQsIHBpeGZtdCwNCisJYmF5ZXJfdG9fcmdiYmdy MjQoYmF5ZXIsIGJnciwgd2lkdGgsIGhlaWdodCwgc3RlcCwgcGl4Zm10LA0KIAkJCXBpeGZt dCA9PSBWNEwyX1BJWF9GTVRfU0dCUkc4CQkvKiBzdGFydCB3aXRoIGdyZWVuICovDQogCQkJ fHwgcGl4Zm10ID09IFY0TDJfUElYX0ZNVF9TR1JCRzgsDQogCQkJcGl4Zm10ID09IFY0TDJf UElYX0ZNVF9TQkdHUjgJCS8qIGJsdWUgbGluZSAqLw0KQEAgLTQyOCw3ICs0MzAsNyBAQA0K IH0NCiANCiB2b2lkIHY0bGNvbnZlcnRfYmF5ZXJfdG9feXV2NDIwKGNvbnN0IHVuc2lnbmVk IGNoYXIgKmJheWVyLCB1bnNpZ25lZCBjaGFyICp5dXYsDQotCQlpbnQgd2lkdGgsIGludCBo ZWlnaHQsIHVuc2lnbmVkIGludCBzcmNfcGl4Zm10LCBpbnQgeXZ1KQ0KKwkJaW50IHdpZHRo LCBpbnQgaGVpZ2h0LCBjb25zdCB1bnNpZ25lZCBpbnQgc3RlcCwgdW5zaWduZWQgaW50IHNy Y19waXhmbXQsIGludCB5dnUpDQogew0KIAlpbnQgYmx1ZV9saW5lID0gMCwgc3RhcnRfd2l0 aF9ncmVlbiA9IDAsIHgsIHk7DQogCXVuc2lnbmVkIGNoYXIgKnlkc3QgPSB5dXY7DQpAQCAt NDUxLDEyICs0NTMsMTIgQEANCiANCiAJCQkJYiAgPSBiYXllclt4XTsNCiAJCQkJZyAgPSBi YXllclt4ICsgMV07DQotCQkJCWcgKz0gYmF5ZXJbeCArIHdpZHRoXTsNCi0JCQkJciAgPSBi YXllclt4ICsgd2lkdGggKyAxXTsNCisJCQkJZyArPSBiYXllclt4ICsgc3RlcF07DQorCQkJ CXIgID0gYmF5ZXJbeCArIHN0ZXAgKyAxXTsNCiAJCQkJKnVkc3QrKyA9ICgtNDg3OCAqIHIg LSA0Nzg5ICogZyArIDE0NDU2ICogYiArIDQyMTA2ODgpID4+IDE1Ow0KIAkJCQkqdmRzdCsr ID0gKDE0NDU2ICogciAtIDYwNTIgKiBnIC0gIDIzNTEgKiBiICsgNDIxMDY4OCkgPj4gMTU7 DQogCQkJfQ0KLQkJCWJheWVyICs9IDIgKiB3aWR0aDsNCisJCQliYXllciArPSAyICogc3Rl cDsNCiAJCX0NCiAJCWJsdWVfbGluZSA9IDE7DQogCQlicmVhazsNCkBAIC00NjgsMTIgKzQ3 MCwxMiBAQA0KIA0KIAkJCQlyICA9IGJheWVyW3hdOw0KIAkJCQlnICA9IGJheWVyW3ggKyAx XTsNCi0JCQkJZyArPSBiYXllclt4ICsgd2lkdGhdOw0KLQkJCQliICA9IGJheWVyW3ggKyB3 aWR0aCArIDFdOw0KKwkJCQlnICs9IGJheWVyW3ggKyBzdGVwXTsNCisJCQkJYiAgPSBiYXll clt4ICsgc3RlcCArIDFdOw0KIAkJCQkqdWRzdCsrID0gKC00ODc4ICogciAtIDQ3ODkgKiBn ICsgMTQ0NTYgKiBiICsgNDIxMDY4OCkgPj4gMTU7DQogCQkJCSp2ZHN0KysgPSAoMTQ0NTYg KiByIC0gNjA1MiAqIGcgLSAgMjM1MSAqIGIgKyA0MjEwNjg4KSA+PiAxNTsNCiAJCQl9DQot CQkJYmF5ZXIgKz0gMiAqIHdpZHRoOw0KKwkJCWJheWVyICs9IDIgKiBzdGVwOw0KIAkJfQ0K IAkJYnJlYWs7DQogDQpAQCAtNDg0LDEyICs0ODYsMTIgQEANCiANCiAJCQkJZyAgPSBiYXll clt4XTsNCiAJCQkJYiAgPSBiYXllclt4ICsgMV07DQotCQkJCXIgID0gYmF5ZXJbeCArIHdp ZHRoXTsNCi0JCQkJZyArPSBiYXllclt4ICsgd2lkdGggKyAxXTsNCisJCQkJciAgPSBiYXll clt4ICsgc3RlcF07DQorCQkJCWcgKz0gYmF5ZXJbeCArIHN0ZXAgKyAxXTsNCiAJCQkJKnVk c3QrKyA9ICgtNDg3OCAqIHIgLSA0Nzg5ICogZyArIDE0NDU2ICogYiArIDQyMTA2ODgpID4+ IDE1Ow0KIAkJCQkqdmRzdCsrID0gKDE0NDU2ICogciAtIDYwNTIgKiBnIC0gIDIzNTEgKiBi ICsgNDIxMDY4OCkgPj4gMTU7DQogCQkJfQ0KLQkJCWJheWVyICs9IDIgKiB3aWR0aDsNCisJ CQliYXllciArPSAyICogc3RlcDsNCiAJCX0NCiAJCWJsdWVfbGluZSA9IDE7DQogCQlzdGFy dF93aXRoX2dyZWVuID0gMTsNCkBAIC01MDIsMjEgKzUwNCwyMiBAQA0KIA0KIAkJCQlnICA9 IGJheWVyW3hdOw0KIAkJCQlyICA9IGJheWVyW3ggKyAxXTsNCi0JCQkJYiAgPSBiYXllclt4 ICsgd2lkdGhdOw0KLQkJCQlnICs9IGJheWVyW3ggKyB3aWR0aCArIDFdOw0KKwkJCQliICA9 IGJheWVyW3ggKyBzdGVwXTsNCisJCQkJZyArPSBiYXllclt4ICsgc3RlcCArIDFdOw0KIAkJ CQkqdWRzdCsrID0gKC00ODc4ICogciAtIDQ3ODkgKiBnICsgMTQ0NTYgKiBiICsgNDIxMDY4 OCkgPj4gMTU7DQogCQkJCSp2ZHN0KysgPSAoMTQ0NTYgKiByIC0gNjA1MiAqIGcgLSAgMjM1 MSAqIGIgKyA0MjEwNjg4KSA+PiAxNTsNCiAJCQl9DQotCQkJYmF5ZXIgKz0gMiAqIHdpZHRo Ow0KKwkJCWJheWVyICs9IDIgKiBzdGVwOw0KIAkJfQ0KIAkJc3RhcnRfd2l0aF9ncmVlbiA9 IDE7DQogCQlicmVhazsNCiAJfQ0KIA0KLQliYXllciAtPSB3aWR0aCAqIGhlaWdodDsNCisJ LyogUG9pbnQgYmF5ZXIgYmFjayB0byBzdGFydCBvZiBmcmFtZSAqLw0KKwliYXllciAtPSBz dGVwICogaGVpZ2h0Ow0KIA0KIAkvKiByZW5kZXIgdGhlIGZpcnN0IGxpbmUgKi8NCi0JdjRs Y29udmVydF9ib3JkZXJfYmF5ZXJfbGluZV90b195KGJheWVyLCBiYXllciArIHdpZHRoLCB5 ZHN0LCB3aWR0aCwNCisJdjRsY29udmVydF9ib3JkZXJfYmF5ZXJfbGluZV90b195KGJheWVy LCBiYXllciArIHN0ZXAsIHlkc3QsIHdpZHRoLA0KIAkJCXN0YXJ0X3dpdGhfZ3JlZW4sIGJs dWVfbGluZSk7DQogCXlkc3QgKz0gd2lkdGg7DQogDQpAQCAtNTI3LDEwNCArNTMwLDEwNCBA QA0KIAkJY29uc3QgdW5zaWduZWQgY2hhciAqYmF5ZXJfZW5kID0gYmF5ZXIgKyAod2lkdGgg LSAyKTsNCiANCiAJCWlmIChzdGFydF93aXRoX2dyZWVuKSB7DQotCQkJdDAgPSBiYXllclsx XSArIGJheWVyW3dpZHRoICogMiArIDFdOw0KKwkJCXQwID0gYmF5ZXJbMV0gKyBiYXllcltz dGVwICogMiArIDFdOw0KIAkJCS8qIFdyaXRlIGZpcnN0IHBpeGVsICovDQotCQkJdDEgPSBi YXllclswXSArIGJheWVyW3dpZHRoICogMl0gKyBiYXllclt3aWR0aCArIDFdOw0KKwkJCXQx ID0gYmF5ZXJbMF0gKyBiYXllcltzdGVwICogMl0gKyBiYXllcltzdGVwICsgMV07DQogCQkJ aWYgKGJsdWVfbGluZSkNCi0JCQkJKnlkc3QrKyA9ICg4NDUzICogYmF5ZXJbd2lkdGhdICsg NTUxNiAqIHQxICsNCisJCQkJKnlkc3QrKyA9ICg4NDUzICogYmF5ZXJbc3RlcF0gKyA1NTE2 ICogdDEgKw0KIAkJCQkJCTE2NjEgKiB0MCArIDUyNDI4OCkgPj4gMTU7DQogCQkJZWxzZQ0K IAkJCQkqeWRzdCsrID0gKDQyMjYgKiB0MCArIDU1MTYgKiB0MSArDQotCQkJCQkJMzIyMyAq IGJheWVyW3dpZHRoXSArIDUyNDI4OCkgPj4gMTU7DQorCQkJCQkJMzIyMyAqIGJheWVyW3N0 ZXBdICsgNTI0Mjg4KSA+PiAxNTsNCiANCiAJCQkvKiBXcml0ZSBzZWNvbmQgcGl4ZWwgKi8N Ci0JCQl0MSA9IGJheWVyW3dpZHRoXSArIGJheWVyW3dpZHRoICsgMl07DQorCQkJdDEgPSBi YXllcltzdGVwXSArIGJheWVyW3N0ZXAgKyAyXTsNCiAJCQlpZiAoYmx1ZV9saW5lKQ0KLQkJ CQkqeWRzdCsrID0gKDQyMjYgKiB0MSArIDE2NTk0ICogYmF5ZXJbd2lkdGggKyAxXSArDQor CQkJCSp5ZHN0KysgPSAoNDIyNiAqIHQxICsgMTY1OTQgKiBiYXllcltzdGVwICsgMV0gKw0K IAkJCQkJCTE2MTEgKiB0MCArIDUyNDI4OCkgPj4gMTU7DQogCQkJZWxzZQ0KLQkJCQkqeWRz dCsrID0gKDQyMjYgKiB0MCArIDE2NTk0ICogYmF5ZXJbd2lkdGggKyAxXSArDQorCQkJCSp5 ZHN0KysgPSAoNDIyNiAqIHQwICsgMTY1OTQgKiBiYXllcltzdGVwICsgMV0gKw0KIAkJCQkJ CTE2MTEgKiB0MSArIDUyNDI4OCkgPj4gMTU7DQogCQkJYmF5ZXIrKzsNCiAJCX0gZWxzZSB7 DQogCQkJLyogV3JpdGUgZmlyc3QgcGl4ZWwgKi8NCi0JCQl0MCA9IGJheWVyWzBdICsgYmF5 ZXJbd2lkdGggKiAyXTsNCisJCQl0MCA9IGJheWVyWzBdICsgYmF5ZXJbc3RlcCAqIDJdOw0K IAkJCWlmIChibHVlX2xpbmUpIHsNCi0JCQkJKnlkc3QrKyA9ICg4NDUzICogYmF5ZXJbd2lk dGggKyAxXSArIDE2NTk0ICogYmF5ZXJbd2lkdGhdICsNCisJCQkJKnlkc3QrKyA9ICg4NDUz ICogYmF5ZXJbc3RlcCArIDFdICsgMTY1OTQgKiBiYXllcltzdGVwXSArDQogCQkJCQkJMTY2 MSAqIHQwICsgNTI0Mjg4KSA+PiAxNTsNCiAJCQl9IGVsc2Ugew0KLQkJCQkqeWRzdCsrID0g KDQyMjYgKiB0MCArIDE2NTk0ICogYmF5ZXJbd2lkdGhdICsNCi0JCQkJCQkzMjIzICogYmF5 ZXJbd2lkdGggKyAxXSArIDUyNDI4OCkgPj4gMTU7DQorCQkJCSp5ZHN0KysgPSAoNDIyNiAq IHQwICsgMTY1OTQgKiBiYXllcltzdGVwXSArDQorCQkJCQkJMzIyMyAqIGJheWVyW3N0ZXAg KyAxXSArIDUyNDI4OCkgPj4gMTU7DQogCQkJfQ0KIAkJfQ0KIA0KIAkJaWYgKGJsdWVfbGlu ZSkgew0KIAkJCWZvciAoOyBiYXllciA8PSBiYXllcl9lbmQgLSAyOyBiYXllciArPSAyKSB7 DQotCQkJCXQwID0gYmF5ZXJbMF0gKyBiYXllclsyXSArIGJheWVyW3dpZHRoICogMl0gKyBi YXllclt3aWR0aCAqIDIgKyAyXTsNCi0JCQkJdDEgPSBiYXllclsxXSArIGJheWVyW3dpZHRo XSArIGJheWVyW3dpZHRoICsgMl0gKyBiYXllclt3aWR0aCAqIDIgKyAxXTsNCi0JCQkJKnlk c3QrKyA9ICg4NDUzICogYmF5ZXJbd2lkdGggKyAxXSArIDQxNDggKiB0MSArDQorCQkJCXQw ID0gYmF5ZXJbMF0gKyBiYXllclsyXSArIGJheWVyW3N0ZXAgKiAyXSArIGJheWVyW3N0ZXAg KiAyICsgMl07DQorCQkJCXQxID0gYmF5ZXJbMV0gKyBiYXllcltzdGVwXSArIGJheWVyW3N0 ZXAgKyAyXSArIGJheWVyW3N0ZXAgKiAyICsgMV07DQorCQkJCSp5ZHN0KysgPSAoODQ1MyAq IGJheWVyW3N0ZXAgKyAxXSArIDQxNDggKiB0MSArDQogCQkJCQkJODA2ICogdDAgKyA1MjQy ODgpID4+IDE1Ow0KIA0KLQkJCQl0MCA9IGJheWVyWzJdICsgYmF5ZXJbd2lkdGggKiAyICsg Ml07DQotCQkJCXQxID0gYmF5ZXJbd2lkdGggKyAxXSArIGJheWVyW3dpZHRoICsgM107DQot CQkJCSp5ZHN0KysgPSAoNDIyNiAqIHQxICsgMTY1OTQgKiBiYXllclt3aWR0aCArIDJdICsN CisJCQkJdDAgPSBiYXllclsyXSArIGJheWVyW3N0ZXAgKiAyICsgMl07DQorCQkJCXQxID0g YmF5ZXJbc3RlcCArIDFdICsgYmF5ZXJbc3RlcCArIDNdOw0KKwkJCQkqeWRzdCsrID0gKDQy MjYgKiB0MSArIDE2NTk0ICogYmF5ZXJbc3RlcCArIDJdICsNCiAJCQkJCQkxNjExICogdDAg KyA1MjQyODgpID4+IDE1Ow0KIAkJCX0NCiAJCX0gZWxzZSB7DQogCQkJZm9yICg7IGJheWVy IDw9IGJheWVyX2VuZCAtIDI7IGJheWVyICs9IDIpIHsNCi0JCQkJdDAgPSBiYXllclswXSAr IGJheWVyWzJdICsgYmF5ZXJbd2lkdGggKiAyXSArIGJheWVyW3dpZHRoICogMiArIDJdOw0K LQkJCQl0MSA9IGJheWVyWzFdICsgYmF5ZXJbd2lkdGhdICsgYmF5ZXJbd2lkdGggKyAyXSAr IGJheWVyW3dpZHRoICogMiArIDFdOw0KKwkJCQl0MCA9IGJheWVyWzBdICsgYmF5ZXJbMl0g KyBiYXllcltzdGVwICogMl0gKyBiYXllcltzdGVwICogMiArIDJdOw0KKwkJCQl0MSA9IGJh eWVyWzFdICsgYmF5ZXJbc3RlcF0gKyBiYXllcltzdGVwICsgMl0gKyBiYXllcltzdGVwICog MiArIDFdOw0KIAkJCQkqeWRzdCsrID0gKDIxMTMgKiB0MCArIDQxNDggKiB0MSArDQotCQkJ CQkJMzIyMyAqIGJheWVyW3dpZHRoICsgMV0gKyA1MjQyODgpID4+IDE1Ow0KKwkJCQkJCTMy MjMgKiBiYXllcltzdGVwICsgMV0gKyA1MjQyODgpID4+IDE1Ow0KIA0KLQkJCQl0MCA9IGJh eWVyWzJdICsgYmF5ZXJbd2lkdGggKiAyICsgMl07DQotCQkJCXQxID0gYmF5ZXJbd2lkdGgg KyAxXSArIGJheWVyW3dpZHRoICsgM107DQotCQkJCSp5ZHN0KysgPSAoNDIyNiAqIHQwICsg MTY1OTQgKiBiYXllclt3aWR0aCArIDJdICsNCisJCQkJdDAgPSBiYXllclsyXSArIGJheWVy W3N0ZXAgKiAyICsgMl07DQorCQkJCXQxID0gYmF5ZXJbc3RlcCArIDFdICsgYmF5ZXJbc3Rl cCArIDNdOw0KKwkJCQkqeWRzdCsrID0gKDQyMjYgKiB0MCArIDE2NTk0ICogYmF5ZXJbc3Rl cCArIDJdICsNCiAJCQkJCQkxNjExICogdDEgKyA1MjQyODgpID4+IDE1Ow0KIAkJCX0NCiAJ CX0NCiANCiAJCWlmIChiYXllciA8IGJheWVyX2VuZCkgew0KIAkJCS8qIFdyaXRlIHNlY29u ZCB0byBsYXN0IHBpeGVsICovDQotCQkJdDAgPSBiYXllclswXSArIGJheWVyWzJdICsgYmF5 ZXJbd2lkdGggKiAyXSArIGJheWVyW3dpZHRoICogMiArIDJdOw0KLQkJCXQxID0gYmF5ZXJb MV0gKyBiYXllclt3aWR0aF0gKyBiYXllclt3aWR0aCArIDJdICsgYmF5ZXJbd2lkdGggKiAy ICsgMV07DQorCQkJdDAgPSBiYXllclswXSArIGJheWVyWzJdICsgYmF5ZXJbc3RlcCAqIDJd ICsgYmF5ZXJbc3RlcCAqIDIgKyAyXTsNCisJCQl0MSA9IGJheWVyWzFdICsgYmF5ZXJbc3Rl cF0gKyBiYXllcltzdGVwICsgMl0gKyBiYXllcltzdGVwICogMiArIDFdOw0KIAkJCWlmIChi bHVlX2xpbmUpDQotCQkJCSp5ZHN0KysgPSAoODQ1MyAqIGJheWVyW3dpZHRoICsgMV0gKyA0 MTQ4ICogdDEgKw0KKwkJCQkqeWRzdCsrID0gKDg0NTMgKiBiYXllcltzdGVwICsgMV0gKyA0 MTQ4ICogdDEgKw0KIAkJCQkJCTgwNiAqIHQwICsgNTI0Mjg4KSA+PiAxNTsNCiAJCQllbHNl DQogCQkJCSp5ZHN0KysgPSAoMjExMyAqIHQwICsgNDE0OCAqIHQxICsNCi0JCQkJCQkzMjIz ICogYmF5ZXJbd2lkdGggKyAxXSArIDUyNDI4OCkgPj4gMTU7DQorCQkJCQkJMzIyMyAqIGJh eWVyW3N0ZXAgKyAxXSArIDUyNDI4OCkgPj4gMTU7DQogDQogCQkJLyogd3JpdGUgbGFzdCBw aXhlbCAqLw0KLQkJCXQwID0gYmF5ZXJbMl0gKyBiYXllclt3aWR0aCAqIDIgKyAyXTsNCisJ CQl0MCA9IGJheWVyWzJdICsgYmF5ZXJbc3RlcCAqIDIgKyAyXTsNCiAJCQlpZiAoYmx1ZV9s aW5lKSB7DQotCQkJCSp5ZHN0KysgPSAoODQ1MyAqIGJheWVyW3dpZHRoICsgMV0gKyAxNjU5 NCAqIGJheWVyW3dpZHRoICsgMl0gKw0KKwkJCQkqeWRzdCsrID0gKDg0NTMgKiBiYXllcltz dGVwICsgMV0gKyAxNjU5NCAqIGJheWVyW3N0ZXAgKyAyXSArDQogCQkJCQkJMTY2MSAqIHQw ICsgNTI0Mjg4KSA+PiAxNTsNCiAJCQl9IGVsc2Ugew0KLQkJCQkqeWRzdCsrID0gKDQyMjYg KiB0MCArIDE2NTk0ICogYmF5ZXJbd2lkdGggKyAyXSArDQotCQkJCQkJMzIyMyAqIGJheWVy W3dpZHRoICsgMV0gKyA1MjQyODgpID4+IDE1Ow0KKwkJCQkqeWRzdCsrID0gKDQyMjYgKiB0 MCArIDE2NTk0ICogYmF5ZXJbc3RlcCArIDJdICsNCisJCQkJCQkzMjIzICogYmF5ZXJbc3Rl cCArIDFdICsgNTI0Mjg4KSA+PiAxNTsNCiAJCQl9DQogCQkJYmF5ZXIrKzsNCiAJCX0gZWxz ZSB7DQogCQkJLyogd3JpdGUgbGFzdCBwaXhlbCAqLw0KLQkJCXQwID0gYmF5ZXJbMF0gKyBi YXllclt3aWR0aCAqIDJdOw0KLQkJCXQxID0gYmF5ZXJbMV0gKyBiYXllclt3aWR0aCAqIDIg KyAxXSArIGJheWVyW3dpZHRoXTsNCisJCQl0MCA9IGJheWVyWzBdICsgYmF5ZXJbc3RlcCAq IDJdOw0KKwkJCXQxID0gYmF5ZXJbMV0gKyBiYXllcltzdGVwICogMiArIDFdICsgYmF5ZXJb c3RlcF07DQogCQkJaWYgKGJsdWVfbGluZSkNCi0JCQkJKnlkc3QrKyA9ICg4NDUzICogYmF5 ZXJbd2lkdGggKyAxXSArIDU1MTYgKiB0MSArDQorCQkJCSp5ZHN0KysgPSAoODQ1MyAqIGJh eWVyW3N0ZXAgKyAxXSArIDU1MTYgKiB0MSArDQogCQkJCQkJMTY2MSAqIHQwICsgNTI0Mjg4 KSA+PiAxNTsNCiAJCQllbHNlDQogCQkJCSp5ZHN0KysgPSAoNDIyNiAqIHQwICsgNTUxNiAq IHQxICsNCi0JCQkJCQkzMjIzICogYmF5ZXJbd2lkdGggKyAxXSArIDUyNDI4OCkgPj4gMTU7 DQorCQkJCQkJMzIyMyAqIGJheWVyW3N0ZXAgKyAxXSArIDUyNDI4OCkgPj4gMTU7DQogCQl9 DQogDQotCQkvKiBza2lwIDIgYm9yZGVyIHBpeGVscyAqLw0KLQkJYmF5ZXIgKz0gMjsNCisJ CS8qIHNraXAgMiBib3JkZXIgcGl4ZWxzIGFuZCBwYWRkaW5nICovDQorCQliYXllciArPSAo c3RlcCAtIHdpZHRoKSArIDI7DQogDQogCQlibHVlX2xpbmUgPSAhYmx1ZV9saW5lOw0KIAkJ c3RhcnRfd2l0aF9ncmVlbiA9ICFzdGFydF93aXRoX2dyZWVuOw0KIAl9DQogDQogCS8qIHJl bmRlciB0aGUgbGFzdCBsaW5lICovDQotCXY0bGNvbnZlcnRfYm9yZGVyX2JheWVyX2xpbmVf dG9feShiYXllciArIHdpZHRoLCBiYXllciwgeWRzdCwgd2lkdGgsDQorCXY0bGNvbnZlcnRf Ym9yZGVyX2JheWVyX2xpbmVfdG9feShiYXllciArIHN0ZXAsIGJheWVyLCB5ZHN0LCB3aWR0 aCwNCiAJCQkhc3RhcnRfd2l0aF9ncmVlbiwgIWJsdWVfbGluZSk7DQogfQ0KZGlmZiAtTmF1 ciBhL2xpYi9saWJ2NGxjb252ZXJ0L2xpYnY0bGNvbnZlcnQuYyBiL2xpYi9saWJ2NGxjb252 ZXJ0L2xpYnY0bGNvbnZlcnQuYw0KLS0tIGEvbGliL2xpYnY0bGNvbnZlcnQvbGlidjRsY29u dmVydC5jCTIwMTItMDItMTUgMTE6MDM6NDYuNzkyMjc5NjM4ICswMTAwDQorKysgYi9saWIv bGlidjRsY29udmVydC9saWJ2NGxjb252ZXJ0LmMJMjAxMi0wMi0xNiAxMTo0MTo0NS4zMDEz ODcyNjcgKzAxMDANCkBAIC02MjksNiArNjI5LDcgQEANCiAJdW5zaWduZWQgaW50IHNyY19w aXhfZm10ID0gZm10LT5mbXQucGl4LnBpeGVsZm9ybWF0Ow0KIAl1bnNpZ25lZCBpbnQgd2lk dGggID0gZm10LT5mbXQucGl4LndpZHRoOw0KIAl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gZm10 LT5mbXQucGl4LmhlaWdodDsNCisJdW5zaWduZWQgaW50IGJ5dGVzcGVybGluZSA9IGZtdC0+ Zm10LnBpeC5ieXRlc3BlcmxpbmU7DQogDQogCXN3aXRjaCAoc3JjX3BpeF9mbXQpIHsNCiAJ LyogSlBHIGFuZCB2YXJpYW50cyAqLw0KQEAgLTg1OCwxNiArODU5LDE2IEBADQogCWNhc2Ug VjRMMl9QSVhfRk1UX1NSR0dCODoNCiAJCXN3aXRjaCAoZGVzdF9waXhfZm10KSB7DQogCQlj YXNlIFY0TDJfUElYX0ZNVF9SR0IyNDoNCi0JCQl2NGxjb252ZXJ0X2JheWVyX3RvX3JnYjI0 KHNyYywgZGVzdCwgd2lkdGgsIGhlaWdodCwgc3JjX3BpeF9mbXQpOw0KKwkJCXY0bGNvbnZl cnRfYmF5ZXJfdG9fcmdiMjQoc3JjLCBkZXN0LCB3aWR0aCwgaGVpZ2h0LCBieXRlc3Blcmxp bmUsIHNyY19waXhfZm10KTsNCiAJCQlicmVhazsNCiAJCWNhc2UgVjRMMl9QSVhfRk1UX0JH UjI0Og0KLQkJCXY0bGNvbnZlcnRfYmF5ZXJfdG9fYmdyMjQoc3JjLCBkZXN0LCB3aWR0aCwg aGVpZ2h0LCBzcmNfcGl4X2ZtdCk7DQorCQkJdjRsY29udmVydF9iYXllcl90b19iZ3IyNChz cmMsIGRlc3QsIHdpZHRoLCBoZWlnaHQsIGJ5dGVzcGVybGluZSwgc3JjX3BpeF9mbXQpOw0K IAkJCWJyZWFrOw0KIAkJY2FzZSBWNEwyX1BJWF9GTVRfWVVWNDIwOg0KLQkJCXY0bGNvbnZl cnRfYmF5ZXJfdG9feXV2NDIwKHNyYywgZGVzdCwgd2lkdGgsIGhlaWdodCwgc3JjX3BpeF9m bXQsIDApOw0KKwkJCXY0bGNvbnZlcnRfYmF5ZXJfdG9feXV2NDIwKHNyYywgZGVzdCwgd2lk dGgsIGhlaWdodCwgYnl0ZXNwZXJsaW5lLCBzcmNfcGl4X2ZtdCwgMCk7DQogCQkJYnJlYWs7 DQogCQljYXNlIFY0TDJfUElYX0ZNVF9ZVlU0MjA6DQotCQkJdjRsY29udmVydF9iYXllcl90 b195dXY0MjAoc3JjLCBkZXN0LCB3aWR0aCwgaGVpZ2h0LCBzcmNfcGl4X2ZtdCwgMSk7DQor CQkJdjRsY29udmVydF9iYXllcl90b195dXY0MjAoc3JjLCBkZXN0LCB3aWR0aCwgaGVpZ2h0 LCBieXRlc3BlcmxpbmUsIHNyY19waXhfZm10LCAxKTsNCiAJCQlicmVhazsNCiAJCX0NCiAJ CWlmIChzcmNfc2l6ZSA8ICh3aWR0aCAqIGhlaWdodCkpIHsNCmRpZmYgLU5hdXIgYS9saWIv bGlidjRsY29udmVydC9saWJ2NGxjb252ZXJ0LXByaXYuaCBiL2xpYi9saWJ2NGxjb252ZXJ0 L2xpYnY0bGNvbnZlcnQtcHJpdi5oDQotLS0gYS9saWIvbGlidjRsY29udmVydC9saWJ2NGxj b252ZXJ0LXByaXYuaAkyMDEyLTAyLTE1IDExOjAzOjQ2Ljc5MjI3OTYzOCArMDEwMA0KKysr IGIvbGliL2xpYnY0bGNvbnZlcnQvbGlidjRsY29udmVydC1wcml2LmgJMjAxMi0wMi0xNiAx MTo0Mjo1MC4wODEwNTQ4MzMgKzAxMDANCkBAIC0yMzAsMTMgKzIzMCwxMyBAQA0KIAkJaW50 IHdpZHRoLCBpbnQgaGVpZ2h0KTsNCiANCiB2b2lkIHY0bGNvbnZlcnRfYmF5ZXJfdG9fcmdi MjQoY29uc3QgdW5zaWduZWQgY2hhciAqYmF5ZXIsDQotCQl1bnNpZ25lZCBjaGFyICpyZ2Is IGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgaW50IHBpeGZtdCk7DQorCQl1bnNp Z25lZCBjaGFyICpyZ2IsIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgdW5zaWduZWQg aW50IHN0ZXAsIHVuc2lnbmVkIGludCBwaXhmbXQpOw0KIA0KIHZvaWQgdjRsY29udmVydF9i YXllcl90b19iZ3IyNChjb25zdCB1bnNpZ25lZCBjaGFyICpiYXllciwNCi0JCXVuc2lnbmVk IGNoYXIgKnJnYiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBpbnQgcGl4Zm10 KTsNCisJCXVuc2lnbmVkIGNoYXIgKnJnYiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25z dCB1bnNpZ25lZCBpbnQgc3RlcCwgdW5zaWduZWQgaW50IHBpeGZtdCk7DQogDQogdm9pZCB2 NGxjb252ZXJ0X2JheWVyX3RvX3l1djQyMChjb25zdCB1bnNpZ25lZCBjaGFyICpiYXllciwg dW5zaWduZWQgY2hhciAqeXV2LA0KLQkJaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25l ZCBpbnQgc3JjX3BpeGZtdCwgaW50IHl2dSk7DQorCQlpbnQgd2lkdGgsIGludCBoZWlnaHQs IGNvbnN0IHVuc2lnbmVkIGludCBzdGVwLCB1bnNpZ25lZCBpbnQgc3JjX3BpeGZtdCwgaW50 IHl2dSk7DQogDQogdm9pZCB2NGxjb252ZXJ0X2htMTJfdG9fcmdiMjQoY29uc3QgdW5zaWdu ZWQgY2hhciAqc3JjLA0KIAkJdW5zaWduZWQgY2hhciAqZHN0LCBpbnQgd2lkdGgsIGludCBo ZWlnaHQpOw0K --------------020500030503030401080206--