This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to [email protected] for more info.
---171960392-1423184503-1006314472=:10970 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, I've hacked the umax backend to support that scanner. It works fine, at least on linux. My main problem is the integration into SANE. * I had to disable the other scanners support to redirect the 6 sanei_scsi_* functions to some usb functions. Since this scanner is a scsi scanner based on the powervision 8630, the rest of the code is virtually unchanged. That why I'd like to change the umax backed to support both scsi and usb scanners. I think this can be solved by using some function ptr magic. I'd like to have some comments from the maintainer of that backend. * I used the libusb library to support usb. As a result, the backend autodetect the scanner and does not use /dev/usbscanner nor the configuration files. And it does not use the scanner driver. Is the use of the libusb a good idea? To use the scanner, apply the patch, rebuild and install Sane. type "setenv LD_PRELOAD /usr/local/lib/libusb-0.1.so.4" (or whatever the path is) so the libusb will be preloaded. and then "xscanimage umax:" This is a usable but unfinished work. Patch attached. Frank. ---171960392-1423184503-1006314472=:10970 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="umaxusb-backend.diff" Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: Content-Disposition: attachment; filename="umaxusb-backend.diff" ZGlmZiAtdSAtciBzYW5lLWJhY2tlbmRzLTEuMC42Lm9yZy9iYWNrZW5kL3Vt YXguYyBzYW5lLWJhY2tlbmRzLTEuMC42L2JhY2tlbmQvdW1heC5jDQotLS0g c2FuZS1iYWNrZW5kcy0xLjAuNi5vcmcvYmFja2VuZC91bWF4LmMJU2F0IE9j dCAyNyAwNjo1Nzo0NSAyMDAxDQorKysgc2FuZS1iYWNrZW5kcy0xLjAuNi9i YWNrZW5kL3VtYXguYwlUdWUgTm92IDIwIDIxOjM4OjM3IDIwMDENCkBAIC0x ODgsNyArMTg4LDcgQEANCiAvKiBudW1iZXIgb2YgbGluZXMgdGhhdCBzaGFs bCBiZSBzY2FubmVkIGluIG9uZSBidWZmZXIgZm9yIHNjYW4gaWYgcG9zc2li bGUgKi8NCiBzdGF0aWMgaW50IHVtYXhfc2Nhbl9saW5lcyAgICA9IDQwOyAv KiBkZWZhdWx0OiA0MCBzY2FuIGxpbmVzICovDQogDQotc3RhdGljIGludCB1 bWF4X3Njc2lfbWF4cXVldWUgPSAyOyAvKiB1c2UgY29tbWFuZCBxdWV1ZWlu ZyBkZXB0aCAyIGFzIGRlZmF1bHQgKi8NCitzdGF0aWMgaW50IHVtYXhfc2Nz aV9tYXhxdWV1ZSA9IDE7IC8qIHVzZSBjb21tYW5kIHF1ZXVlaW5nIGRlcHRo IDIgYXMgZGVmYXVsdCAqLw0KIHN0YXRpYyBpbnQgdW1heF9oYW5kbGVfYmFk X3NlbnNlX2Vycm9yID0gMDsgLyogZGVmYXVsdDogaGFuZGxlIGJhZCBzZW5z ZSBlcnJvciBjb2RlIGFzIGRldmljZSBidXN5ICovDQogc3RhdGljIGludCB1 bWF4X2V4ZWN1dGVfcmVxdWVzdF9zZW5zZSAgPSAwOyAvKiBkZWZhdWx0OiBk byBub3QgdXNlIHJlcXVlc3Qgc2Vuc2UgaW4gZG9fY2FsaWJyYXRpb24gKi8N CiBzdGF0aWMgaW50IHVtYXhfZm9yY2VfcHJldmlld19iaXRfcmdiICA9IDA7 IC8qIGRlZmF1bHQ6IGRvIG5vdCBmb3JjZSBwcmV2aWV3IGJpdCBpbiByZWFs IGNvbG9yIHNjYW4gKi8NCkBAIC0yOTEsNiArMjkxLDM3MyBAQA0KICAgcmV0 dXJuIFNBTkVfRkFMU0U7DQogfQ0KIA0KKw0KKy8qIFVTQiBzcGVjaWZpYyBw YXJ0cyAqLw0KKw0KKyNpbmNsdWRlIDx1c2IuaD4NCisNCisvKiBJZHMgZm9y IHRoZSBVTUFYIDIyMDBVLiAqLw0KK3N0YXRpYyBpbnQgaWRWZW5kb3IgPSAw eDE2MDY7DQorc3RhdGljIGludCBpZFByb2R1Y3QgPSAweDAyMzA7DQorDQor DQorLyogcmVxdWVzdCAqLw0KKyNkZWZpbmUgUFY4NjMwX1JFUV9SRUFEQllU RSAgICAgICAgIDB4MDANCisjZGVmaW5lIFBWODYzMF9SRVFfV1JJVEVCWVRF ICAgICAgICAweDAxDQorI2RlZmluZSBQVjg2MzBfUkVRX0VQUEJVTEtSRUFE ICAgICAgMHgwMg0KKyNkZWZpbmUgUFY4NjMwX1JFUV9FUFBCVUxLV1JJVEUg ICAgIDB4MDMNCisjZGVmaW5lIFBWODYzMF9SRVFfRkxVU0hCVUZGRVIgICAg ICAweDA0DQorI2RlZmluZSBQVjg2MzBfUkVRX0VOQUJMRUlOVEVSUlVQVCAg MHgwNQ0KKyNkZWZpbmUgUFY4NjMwX1JFUV9ESVNBQkxFSU5URVJSVVBUIDB4 MDYNCisjZGVmaW5lIFBWODYzMF9SRVFfUkVBRFdPUkQgICAgICAgICAweDA4 DQorI2RlZmluZSBQVjg2MzBfUkVRX1dSSVRFV09SRCAgICAgICAgMHgwOQ0K Kw0KKy8qIGluZGV4ICovDQorI2RlZmluZSBQVjg2MzBfUkRBVEEgICAgICAg MHgwMA0KKyNkZWZpbmUgUFY4NjMwX1JFUFBBRERSRVNTIDB4MDENCisjZGVm aW5lIFBWODYzMF9VTktOT1dOCSAgIDB4MDINCisjZGVmaW5lIFBWODYzMF9S TU9ERSAgICAgICAweDAzDQorI2RlZmluZSBQVjg2MzBfUlNUQVRVUyAgICAg MHgwNA0KKw0KK3ZvaWQgcHY4NjMwX3dyaXRlX2J5dGUodXNiX2Rldl9oYW5k bGUgKmRldiwgaW50IHZhbHVlLCBpbnQgaW5kZXgpDQorew0KKwlpZiAodXNi X2NvbnRyb2xfbXNnKGRldiwgMHg0MCwgUFY4NjMwX1JFUV9XUklURUJZVEUs IHZhbHVlLCBpbmRleCwgTlVMTCwgMCwgMTAwMDApID09IC0xKSB7DQorCQlw ZXJyb3IoInVzYl9jb250cm9sX21zZyBQVjg2MzBfUkVRX1dSSVRFQllURSIp Ow0KKwkJZXhpdCgxKTsNCisJfQ0KK30NCisNCit2b2lkIHB2ODYzMF9yZWFk X2J5dGUodXNiX2Rldl9oYW5kbGUgKmRldiwgdW5zaWduZWQgY2hhciAqZGF0 YSwgaW50IGluZGV4KQ0KK3sNCisJaWYgKHVzYl9jb250cm9sX21zZyhkZXYs IDB4YzAsIFBWODYzMF9SRVFfUkVBREJZVEUsIDAsIGluZGV4LCBkYXRhLCAx LCAxMDAwMCkgPT0gLTEpIHsNCisJCXBlcnJvcigidXNiX2NvbnRyb2xfbXNn IFBWODYzMF9SRVFfUkVBREJZVEUiKTsNCisJCWV4aXQoMSk7DQorCX0NCit9 DQorDQordm9pZCBwdjg2MzBfZmx1c2hfYnVmZmVyKHVzYl9kZXZfaGFuZGxl ICpkZXYpDQorew0KKwlpZiAodXNiX2NvbnRyb2xfbXNnKGRldiwgMHg0MCwg UFY4NjMwX1JFUV9GTFVTSEJVRkZFUiwgMCwgMCwgTlVMTCwgMCwgMTAwMDAp ID09IC0xKSB7DQorCQlwZXJyb3IoInVzYl9jb250cm9sX21zZyBQVjg2MzBf UkVRX0ZMVVNIQlVGRkVSIik7DQorCQlleGl0KDEpOw0KKwl9DQorfQ0KKw0K K3ZvaWQgcHY4NjMwX3ByZXBfYnVsa3dyaXRlKHVzYl9kZXZfaGFuZGxlICpk ZXYsIGludCBsZW4pDQorew0KKwlpZiAodXNiX2NvbnRyb2xfbXNnKGRldiwg MHg0MCwgUFY4NjMwX1JFUV9FUFBCVUxLV1JJVEUsIGxlbiAmIDB4ZmZmZiwg bGVuID4+IDE2LCBOVUxMLCAwLCAxMDAwMCkgPT0gLTEpIHsNCisJCXBlcnJv cigidXNiX2NvbnRyb2xfbXNnIFBWODYzMF9SRVFfRVBQQlVMS1dSSVRFIik7 DQorCQlleGl0KDEpOw0KKwl9DQorfQ0KKw0KK3ZvaWQgcHY4NjMwX3ByZXBf YnVsa3JlYWQodXNiX2Rldl9oYW5kbGUgKmRldiwgaW50IGxlbikNCit7DQor CWlmICh1c2JfY29udHJvbF9tc2coZGV2LCAweDQwLCBQVjg2MzBfUkVRX0VQ UEJVTEtSRUFELCBsZW4gJiAweGZmZmYsIGxlbiA+PiAxNiwgTlVMTCwgMCwg MTAwMDApID09IC0xKSB7DQorCQlwZXJyb3IoInVzYl9jb250cm9sX21zZyBQ Vjg2MzBfUkVRX0VQUEJVTEtSRUFEIik7DQorCQlleGl0KDEpOw0KKwl9DQor fQ0KKw0KK3ZvaWQgcHY4NjMwX2J1bGt3cml0ZSh1c2JfZGV2X2hhbmRsZSAq ZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKQ0KK3sNCisJaWYgKHVz Yl9idWxrX3dyaXRlKGRldiwgMHgwMSwgKGNoYXIgKilkYXRhLCBsZW4sIDEw MDAwKSAhPSBsZW4pIHsNCisJCXBlcnJvcigidXNiX2J1bGtfd3JpdGUiKTsN CisJCWV4aXQoLTEpOw0KKwl9DQorfQ0KKw0KK3NpemVfdCBwdjg2MzBfYnVs a3JlYWQodXNiX2Rldl9oYW5kbGUgKmRldiwgdm9pZCAqZGF0YSwgc2l6ZV90 IGxlbikNCit7DQorCXNzaXplX3QgbGVuX3JldDsNCisNCisJaWYgKChsZW5f cmV0ID0gdXNiX2J1bGtfcmVhZChkZXYsIDB4ODIsIGRhdGEsIGxlbiwgMTAw MDApKSA9PSAtMSkgew0KKwkJcGVycm9yKCJ1c2JfYnVsa19yZWFkIik7DQor CX0NCisNCisJcmV0dXJuKGxlbl9yZXQpOw0KK30NCisNCit2b2lkIHB2ODYz MF9zdGF0dXNfd2FpdCh1c2JfZGV2X2hhbmRsZSAqZGV2LCB1bnNpZ25lZCBj aGFyIHN0YXR1cykNCit7DQorCXVuc2lnbmVkIGNoYXIgczsNCisJaW50IGk7 DQorDQorCWZvciAoaT0wOyBpPDEwMDA7IGkrKykgew0KKwkJcHY4NjMwX3Jl YWRfYnl0ZShkZXYsICZzLCBQVjg2MzBfUlNUQVRVUyk7DQorCQlpZiAocyA9 PSBzdGF0dXMpDQorCQkJcmV0dXJuOw0KKwkJdXNsZWVwKDEwMDAwMCk7DQor CX0NCisJREJHKERCR19pbmZvLCAic3RhdHVzIG5ldmVyIG9rXG4iKTsNCisJ ZXhpdCgxKTsNCit9DQorDQordm9pZCBtaW5pX2luaXRfc2Nhbm5lcih1c2Jf ZGV2X2hhbmRsZSAqZGV2KQ0KK3sNCisJREJHKERCR19pbmZvLCAibWluaV9p bml0X3NjYW5uZXJcbiIpOw0KKw0KKwkvKiBJbml0IHRoZSBkZXZpY2UgKD8p ICovDQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwgMHgwNCwgUFY4NjMwX1VO S05PV04pOw0KKwlwdjg2MzBfd3JpdGVfYnl0ZShkZXYsIDB4MDIsIFBWODYz MF9STU9ERSk7DQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwgMHgwMiwgUFY4 NjMwX1JNT0RFKTsNCisNCisJcHY4NjMwX3N0YXR1c193YWl0KGRldiwgMHhk MCk7DQorfQ0KKw0KKy8qIEZaOiBjZGJfc2l6ZXMgaXMgaW5jb3JyZWN0LiBh dCBsZWFzdCBvbmUgMTYgYnl0ZSBpcyBtaXNzaW5nLiAqLw0KK3N0YXRpYyB1 X2NoYXIgY2RiX3NpemVzWzhdID0NCisgIHsNCisgICAgNiwgMTAsIDEwLCAx MiwgMTIsIDEyLCAxMCwgMTANCisgIH07DQorI2RlZmluZSBDREJfU0laRShv cGNvZGUpCWNkYl9zaXplc1soKChvcGNvZGUpID4+IDUpICYgNyldDQorDQor c3RhdGljIFNBTkVfU3RhdHVzIHNhbmVpX3VtYXh1c2JfY21kKHVzYl9kZXZf aGFuZGxlICpkZXYsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IHNyY19zaXpl LCB2b2lkICpkc3QsIHNpemVfdCAqIGRzdF9zaXplKQ0KK3sNCisJdW5zaWdu ZWQgY2hhciByZXN1bHQ7DQorCXNpemVfdCBjbWRfc2l6ZSA9IENEQl9TSVpF ICgqKGNoYXIgKikgc3JjKTsNCisJc2l6ZV90IHBhcmFtX3NpemUgPSBzcmNf c2l6ZSAtIGNtZF9zaXplOw0KKwljaGFyICogcGFyYW1fcHRyID0gKChjaGFy ICopIHNyYykgKyBjbWRfc2l6ZTsNCisNCisJREJHKERCR19pbmZvLCAiU2Vu ZGluZyBTQ1NJIGNtZCAweCUwMnggY2RiIGxlbiAlZCwgcGFyYW0gbGVuICVk LCByZXN1bHQgbGVuICVkXG4iLCAoKHVuc2lnbmVkIGNoYXIgKilzcmMpWzBd LCBjbWRfc2l6ZSwgcGFyYW1fc2l6ZSwgZHN0X3NpemU/ICpkc3Rfc2l6ZTow KTsNCisNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAweDBjLCBQVjg2MzBf VU5LTk9XTik7DQorCXB2ODYzMF9zdGF0dXNfd2FpdChkZXYsIDB4ZjApOw0K Kwlwdjg2MzBfd3JpdGVfYnl0ZShkZXYsIDB4MDQsIFBWODYzMF9VTktOT1dO KTsNCisNCisJLyogU2VuZCB0aGUgQ0RCIGFuZCBjaGVjayBpdCdzIGJlZW4g cmVjZWl2ZWQgT0suICovDQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwgMHgx NiwgUFY4NjMwX1JNT0RFKTsNCisJcHY4NjMwX2ZsdXNoX2J1ZmZlcihkZXYp Ow0KKwlwdjg2MzBfcHJlcF9idWxrd3JpdGUoZGV2LCBjbWRfc2l6ZSk7DQor CQ0KKwlwdjg2MzBfYnVsa3dyaXRlKGRldiwgc3JjLCBjbWRfc2l6ZSk7DQor CXB2ODYzMF9zdGF0dXNfd2FpdChkZXYsIDB4ZjgpOw0KKw0KKwlwdjg2MzBf Zmx1c2hfYnVmZmVyKGRldik7DQorCXB2ODYzMF9wcmVwX2J1bGtyZWFkKGRl diwgMSk7DQorDQorCXJlc3VsdCA9IDB4QTU7CQkJCS8qIHRvIGJlIHN1cmUg Ki8NCisJcHY4NjMwX2J1bGtyZWFkKGRldiwgJnJlc3VsdCwgMSk7DQorCWlm IChyZXN1bHQgIT0gMCkgew0KKwkJREJHKERCR19pbmZvLCAiZXJyb3IgaW4g cHY4NjMwX2J1bGtyZWFkIChnb3QgJTAyeClcbiIsIHJlc3VsdCk7DQorCQlp ZiAocmVzdWx0ID09IDgpIHsNCisJCQltaW5pX2luaXRfc2Nhbm5lcihkZXYp Ow0KKwkJfQ0KKwkJcmV0dXJuKFNBTkVfU1RBVFVTX0lPX0VSUk9SKTsNCisJ fQ0KKwkNCisJLyogU2VuZCB0aGUgcGFyYW1ldGVycyBhbmQgY2hlY2sgdGhl eSd2ZSBiZWVuIHJlY2VpdmVkIE9LLiAqLw0KKwlpZiAocGFyYW1fc2l6ZSkg ew0KKwkJcHY4NjMwX2ZsdXNoX2J1ZmZlcihkZXYpOw0KKwkJcHY4NjMwX3By ZXBfYnVsa3dyaXRlKGRldiwgcGFyYW1fc2l6ZSk7DQorCQkNCisJCXB2ODYz MF9idWxrd3JpdGUoZGV2LCBwYXJhbV9wdHIsIHBhcmFtX3NpemUpOw0KKwkJ cHY4NjMwX3N0YXR1c193YWl0KGRldiwgMHhmOCk7DQorCQkNCisJCXB2ODYz MF9mbHVzaF9idWZmZXIoZGV2KTsNCisJCXB2ODYzMF9wcmVwX2J1bGtyZWFk KGRldiwgMSk7DQorCQkNCisJCXJlc3VsdCA9IDB4QTU7CQkJCS8qIHRvIGJl IHN1cmUgKi8NCisJCXB2ODYzMF9idWxrcmVhZChkZXYsICZyZXN1bHQsIDEp Ow0KKwkJaWYgKHJlc3VsdCAhPSAwKSB7DQorCQkJREJHKERCR19pbmZvLCAi ZXJyb3IgaW4gcHY4NjMwX2J1bGtyZWFkIChnb3QgJTAyeClcbiIsIHJlc3Vs dCk7DQorCQkJaWYgKHJlc3VsdCA9PSA4KSB7DQorCQkJCW1pbmlfaW5pdF9z Y2FubmVyKGRldik7DQorCQkJfQ0KKwkJCXJldHVybihTQU5FX1NUQVRVU19J T19FUlJPUik7DQorCQl9DQorCX0NCisNCisJaWYgKGRzdF9zaXplICE9IE5V TEwgJiYgKmRzdF9zaXplICE9IDAgJiYgZHN0ICE9IE5VTEwpIHsNCisJCS8q IFRoaXMgY29tbWFuZCBleHBlY3QgYSByZXR1cm4uICovDQorCQlwdjg2MzBf Zmx1c2hfYnVmZmVyKGRldik7DQorCQlwdjg2MzBfcHJlcF9idWxrcmVhZChk ZXYsICpkc3Rfc2l6ZSk7DQorCQkqZHN0X3NpemUgPSBwdjg2MzBfYnVsa3Jl YWQoZGV2LCBkc3QsICpkc3Rfc2l6ZSk7DQorDQorCQlEQkcoREJHX2luZm8s ICIgIFNDU0kgY21kIHJldHVybmVkICVkIGJ5dGVzXG4iLCAqZHN0X3NpemUp Ow0KKw0KKwkJcHY4NjMwX3N0YXR1c193YWl0KGRldiwgMHhmOCk7DQorDQor CQlwdjg2MzBfZmx1c2hfYnVmZmVyKGRldik7DQorCQlwdjg2MzBfcHJlcF9i dWxrcmVhZChkZXYsIDEpOw0KKw0KKwkJcmVzdWx0ID0gMHg1QTsJCQkvKiBq dXN0IHRvIGJlIHN1cmUgKi8NCisJCXB2ODYzMF9idWxrcmVhZChkZXYsICZy ZXN1bHQsIDEpOw0KKwkJaWYgKHJlc3VsdCAhPSAwKSB7DQorCQkJREJHKERC R19pbmZvLCAiZXJyb3IgaW4gcHY4NjMwX2J1bGtyZWFkIChnb3QgJTAyeClc biIsIHJlc3VsdCk7DQorCQkJaWYgKHJlc3VsdCA9PSA4KSB7DQorCQkJCW1p bmlfaW5pdF9zY2FubmVyKGRldik7DQorCQkJfQ0KKwkJCXJldHVybihTQU5F X1NUQVRVU19JT19FUlJPUik7DQorCQl9DQorCX0NCisNCisJcHY4NjMwX3dy aXRlX2J5dGUoZGV2LCAweDA0LCBQVjg2MzBfVU5LTk9XTik7DQorCXB2ODYz MF93cml0ZV9ieXRlKGRldiwgMHgwMiwgUFY4NjMwX1JNT0RFKTsNCisJcHY4 NjMwX3dyaXRlX2J5dGUoZGV2LCAweDAyLCBQVjg2MzBfUk1PREUpOw0KKwlw djg2MzBfc3RhdHVzX3dhaXQoZGV2LCAweGQwKTsNCisNCisJREJHKERCR19p bmZvLCAiICBTQ1NJIGNtZCAweCUwMnggc2VudFxuIiwgKChjaGFyICopc3Jj KVswXSk7DQorIA0KKwlyZXR1cm4oU0FORV9TVEFUVVNfR09PRCk7DQorfQ0K Kw0KKw0KK3ZvaWQgKnVtYXh1c2JfcmVxX2J1ZmZlcjsJCS8qIGtlZXAgdGhl IGJ1ZmZlciBwdHIgYXMgYW4gSUQgKi8NCitTQU5FX1N0YXR1cw0KK3NhbmVp X3VtYXh1c2JfcmVxX3dhaXQgKHZvaWQgKmlkKQ0KK3sNCisJaWYgKGlkICE9 IHVtYXh1c2JfcmVxX2J1ZmZlcikgew0KKwkJREJHKERCR19pbmZvLCAic2Fu ZWlfdW1heHVzYl9yZXFfd2FpdDogQUlFLCBpbnZhbGlkIGlkXG4iKTsNCisJ CXJldHVybihTQU5FX1NUQVRVU19JT19FUlJPUik7DQorCX0NCisJcmV0dXJu KFNBTkVfU1RBVFVTX0dPT0QpOw0KK30NCisNCitTQU5FX1N0YXR1cyBzYW5l aV91bWF4dXNiX3JlcV9lbnRlciAodXNiX2Rldl9oYW5kbGUgKmRldiwNCisJ CQkJCQkJCSAgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgc3JjX3NpemUsDQor CQkJCQkJCQkgIHZvaWQgKmRzdCwgc2l6ZV90ICogZHN0X3NpemUsIHZvaWQg KippZHApDQorew0KKwl1bWF4dXNiX3JlcV9idWZmZXIgPSAqaWRwID0gZHN0 Ow0KKwlyZXR1cm4oc2FuZWlfdW1heHVzYl9jbWQoZGV2LCBzcmMsIHNyY19z aXplLCBkc3QsIGRzdF9zaXplKSk7DQorfQ0KKw0KK2ludCBpbml0X3VtYXh1 c2Jfc2Nhbm5lcih1c2JfZGV2X2hhbmRsZSAqZGV2KQ0KK3sNCisJREJHKERC R19pbmZvLCAiSW5pdGlhbGl6ZSB0aGUgZGV2aWNlXG4iKTsNCisNCisJLyog SW5pdCB0aGUgZGV2aWNlICovDQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwg MHgwNCwgUFY4NjMwX1VOS05PV04pOw0KKwlwdjg2MzBfd3JpdGVfYnl0ZShk ZXYsIDB4MDIsIFBWODYzMF9STU9ERSk7DQorCXB2ODYzMF93cml0ZV9ieXRl KGRldiwgMHgwMiwgUFY4NjMwX1JNT0RFKTsNCisNCisJcHY4NjMwX3N0YXR1 c193YWl0KGRldiwgMHhkMCk7DQorDQorCXB2ODYzMF93cml0ZV9ieXRlKGRl diwgMHgwYywgUFY4NjMwX1VOS05PV04pOw0KKwlwdjg2MzBfc3RhdHVzX3dh aXQoZGV2LCAweGYwKTsNCisNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAw eDA0LCBQVjg2MzBfVU5LTk9XTik7DQorCXB2ODYzMF9zdGF0dXNfd2FpdChk ZXYsIDB4ZjApOw0KKw0KKwlwdjg2MzBfd3JpdGVfYnl0ZShkZXYsIDB4MGMs IFBWODYzMF9VTktOT1dOKTsNCisJcHY4NjMwX3N0YXR1c193YWl0KGRldiwg MHhmMCk7DQorCXB2ODYzMF9zdGF0dXNfd2FpdChkZXYsIDB4ZjgpOw0KKw0K Kwlwdjg2MzBfd3JpdGVfYnl0ZShkZXYsIDB4MDQsIFBWODYzMF9VTktOT1dO KTsgLyogMTk3ICovDQorDQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwgMHgw MiwgUFY4NjMwX1JNT0RFKTsNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAw eDAyLCBQVjg2MzBfUk1PREUpOw0KKwlwdjg2MzBfc3RhdHVzX3dhaXQoZGV2 LCAweGQwKTsNCisNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAweDBjLCBQ Vjg2MzBfVU5LTk9XTik7IC8qIDIwMSAqLw0KKwlwdjg2MzBfc3RhdHVzX3dh aXQoZGV2LCAweGYwKTsNCisNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAw eDA0LCBQVjg2MzBfVU5LTk9XTik7IC8qIDIwMyAqLw0KKw0KKwlwdjg2MzBf d3JpdGVfYnl0ZShkZXYsIDB4MTYsIFBWODYzMF9STU9ERSk7CS8qIDIwNCAq Lw0KKw0KKwlEQkcoREJHX2luZm8sICJEZXZpY2UgaW5pdGlhbGl6ZWRcbiIp Ow0KKwkNCisJcmV0dXJuKDApOyANCit9DQorDQorDQordXNiX2Rldl9oYW5k bGUgKg0KK29wZW5fZGV2aWNlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2aWNl KQ0KK3sNCisJdXNiX2Rldl9oYW5kbGUgKmhhbmRsZTsNCisNCisJREJHKERC R19pbmZvLCAib3BlbmluZyBkZXZpY2UgJXMgb24gYnVzICVzXG4iLA0KKwkJ CWRldmljZS0+ZmlsZW5hbWUsIGRldmljZS0+YnVzLT5kaXJuYW1lKTsNCisN CisJaGFuZGxlID0gdXNiX29wZW4gKGRldmljZSk7DQorDQorCWlmICghaGFu ZGxlKSB7DQorCQlwZXJyb3IoIm9wZW4iKTsNCisJCXJldHVybiAwOw0KKwl9 DQorDQorCXJldHVybiBoYW5kbGU7DQorfQ0KKw0KK3VzYl9kZXZfaGFuZGxl ICoNCitzY2FuX2J1cyAoc3RydWN0IHVzYl9idXMgKmJ1cykNCit7DQorCXN0 cnVjdCB1c2JfZGV2aWNlICpyb290dHJlZSA9IGJ1cy0+ZGV2aWNlczsNCisJ c3RydWN0IHVzYl9kZXZpY2UgKmRldmljZTsNCisJdXNiX2Rldl9oYW5kbGUg KmRldmljZV9oYW5kbGU7DQorDQorCURCRyhEQkdfaW5mbywgInNjYW5uaW5n IGJ1cyAlc1xuIiwgYnVzLT5kaXJuYW1lKTsNCisNCisJZm9yIChkZXZpY2Ug PSByb290dHJlZTsgZGV2aWNlOyBkZXZpY2UgPSBkZXZpY2UtPm5leHQpIHsN CisJCWlmICgoZGV2aWNlLT5kZXNjcmlwdG9yLmlkVmVuZG9yID09IGlkVmVu ZG9yKSAmJiANCisJCQkoZGV2aWNlLT5kZXNjcmlwdG9yLmlkUHJvZHVjdCA9 PSBpZFByb2R1Y3QpKSB7DQorDQorCQkJREJHKERCR19pbmZvLCAiZm91bmQg ZGV2aWNlICVzIG9uIGJ1cyAlcyAoaWRWZW5kb3IgMHgleCBpZFByb2R1Y3Qg MHgleClcbiIsDQorCQkJCSBkZXZpY2UtPmZpbGVuYW1lLCBkZXZpY2UtPmJ1 cy0+ZGlybmFtZSwNCisJCQkJIGRldmljZS0+ZGVzY3JpcHRvci5pZFZlbmRv ciwgZGV2aWNlLT5kZXNjcmlwdG9yLmlkUHJvZHVjdCk7DQorDQorCQkJaWYg KChkZXZpY2VfaGFuZGxlID0gb3Blbl9kZXZpY2UgKGRldmljZSkpKSB7DQor CQkJCXJldHVybihkZXZpY2VfaGFuZGxlKTsNCisJCQl9DQorDQorCQkJREJH KERCR19pbmZvLCAiY29udGludWluZyB0byBzY2FuIGJ1cyAlc1xuIiwgYnVz LT5kaXJuYW1lKTsNCisJCX0NCisJCWVsc2UNCisJCQlEQkcoREJHX2luZm8s ICJkZXZpY2UgJXMgb24gYnVzICVzIGRvZXMgbm90IG1hdGNoXG4iLA0KKwkJ CQkJZGV2aWNlLT5maWxlbmFtZSwgZGV2aWNlLT5idXMtPmRpcm5hbWUpOw0K Kwl9DQorDQorCXJldHVybihOVUxMKTsNCit9DQorDQorLyogSWdub3JlIGRl di4gUmV0dXJucyB0aGUgZmlyc3QgZ29vZCBkZXZpY2UuICovDQorU0FORV9T dGF0dXMNCitzYW5laV91bWF4dXNiX29wZW4gKGNvbnN0IGNoYXIgKmRldiwg dXNiX2Rldl9oYW5kbGUgKipmZHAsDQorCQkJCQlTQU5FSV9TQ1NJX1NlbnNl X0hhbmRsZXIgaGFuZGxlciwgdm9pZCAqaGFuZGxlcl9hcmcpDQorew0KKwlz dHJ1Y3QgdXNiX2J1cyogYnVzOw0KKw0KKwl1c2JfaW5pdCAoKTsNCisJdXNi X2ZpbmRfYnVzc2VzICgpOw0KKwl1c2JfZmluZF9kZXZpY2VzICgpOw0KKw0K Kwlmb3IoIGJ1cyA9IHVzYl9idXNzZXM7IGJ1czsgYnVzID0gYnVzLT5uZXh0 ICkgew0KKwkJDQorCQkqZmRwID0gc2Nhbl9idXMgKGJ1cyk7DQorCQlpZiAo KmZkcCkgYnJlYWs7DQorCX0NCisNCisJaWYgKCpmZHAgPT0gTlVMTCkgew0K KwkJcmV0dXJuKFNBTkVfU1RBVFVTX0lOVkFMKTsNCisJfSBlbHNlIHsNCisJ CWluaXRfdW1heHVzYl9zY2FubmVyKCpmZHApOw0KKwkJcmV0dXJuKFNBTkVf U1RBVFVTX0dPT0QpOw0KKwl9DQorfQ0KKw0KK1NBTkVfU3RhdHVzDQorc2Fu ZWlfdW1heHVzYl9vcGVuX2V4dGVuZGVkIChjb25zdCBjaGFyICpkZXYsIHVz Yl9kZXZfaGFuZGxlICoqZmRwLA0KKwkJCQkJU0FORUlfU0NTSV9TZW5zZV9I YW5kbGVyIGhhbmRsZXIsIHZvaWQgKmhhbmRsZXJfYXJnLCBpbnQgKmJ1ZmZl cnNpemUpDQorew0KKwlyZXR1cm4oc2FuZWlfdW1heHVzYl9vcGVuKGRldiwg ZmRwLCBoYW5kbGVyLCBoYW5kbGVyX2FyZykpOw0KK30NCisNCit2b2lkDQor c2FuZWlfdW1heHVzYl9jbG9zZSAodXNiX2Rldl9oYW5kbGUgKmZkcCkNCit7 DQorCXVzYl9jbG9zZShmZHApOw0KK30NCisNCisjZGVmaW5lIHNhbmVpX3Nj c2lfY21kIHNhbmVpX3VtYXh1c2JfY21kDQorI2RlZmluZSBzYW5laV9zY3Np X29wZW4gc2FuZWlfdW1heHVzYl9vcGVuDQorI2RlZmluZSBzYW5laV9zY3Np X2Nsb3NlIHNhbmVpX3VtYXh1c2JfY2xvc2UNCisjZGVmaW5lIHNhbmVpX3Nj c2lfb3Blbl9leHRlbmRlZCBzYW5laV91bWF4dXNiX29wZW5fZXh0ZW5kZWQN CisjZGVmaW5lIHNhbmVpX3Njc2lfcmVxX2VudGVyIHNhbmVpX3VtYXh1c2Jf cmVxX2VudGVyDQorI2RlZmluZSBzYW5laV9zY3NpX3JlcV93YWl0IHNhbmVp X3VtYXh1c2JfcmVxX3dhaXQNCisNCisvKiBFbmQgb2YgVVNCIHNwZWNpZmlj IHBhcnRzICovDQorDQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERCR19pbnFfbnog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQogDQogDQpA QCAtMTI4OCw3ICsxNjU1LDcgQEANCiAgIH0NCiANCiAgIHNhbmVpX3Njc2lf Y2xvc2Uoc2Nhbm5lci0+ZGV2aWNlLT5zZmQpOw0KLSAgc2Nhbm5lci0+ZGV2 aWNlLT5zZmQgPSAtMTsNCisgIHNjYW5uZXItPmRldmljZS0+c2ZkID0gTlVM TDsNCiANCiAgcmV0dXJuIHN0YXR1czsNCiB9DQpAQCAtNDA1Miw3ICs0NDE5 LDcgQEANCiAgIERCRyhEQkdfcHJvYywiaW5pdFxuIik7DQogDQogICBkZXYt PmRldmljZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICA9IE5VTEw7DQot ICBkZXYtPnNmZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IC0x Ow0KKyAgZGV2LT5zZmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PSBOVUxMOw0KICAgZGV2LT5waXhlbGJ1ZmZlciAgICAgICAgICAgICAgICAg ICAgICAgPSBOVUxMOw0KIA0KICAgLyogY29uZmlnIGZpbGUgb3IgcHJlZGVm aW5lZCBzZXR0aW5ncyAqLw0KQEAgLTQyMzQsMTIgKzQ2MDEsMTIgQEANCiAg ICAgfQ0KICAgfQ0KIA0KLSAgaWYgKHNjYW5uZXItPmRldmljZS0+c2ZkID49 IDApDQorICBpZiAoc2Nhbm5lci0+ZGV2aWNlLT5zZmQpDQogICB7DQogICAg IHVtYXhfZ2l2ZV9zY2FubmVyKHNjYW5uZXItPmRldmljZSk7IC8qIHJlcG9z aXRpb24gYW5kIHJlbGVhc2Ugc2Nhbm5lciAqLw0KICAgICBEQkcoREJHX3Nh bmVfaW5mbywiY2xvc2luZyBzY2FubmVyZGV2aWNlIGZpbGVkZXNjcmlwdG9y XG4iKTsNCiAgICAgc2FuZWlfc2NzaV9jbG9zZShzY2FubmVyLT5kZXZpY2Ut PnNmZCk7DQotICAgIHNjYW5uZXItPmRldmljZS0+c2ZkID0gLTE7DQorICAg IHNjYW5uZXItPmRldmljZS0+c2ZkID0gTlVMTDsNCiAgIH0NCiANCiAgIHNj YW5uZXItPmRldmljZS0+dGhyZWVfcGFzc19jb2xvciA9IDE7IC8qIHJlc2V0 IGNvbG9yIGluIGNvbG9yIHNjYW5uaW5nICovDQpAQCAtNDI1NCw3ICs0NjIx LDcgQEANCiBzdGF0aWMgU0FORV9TdGF0dXMgYXR0YWNoX3NjYW5uZXIoY29u c3QgY2hhciAqZGV2aWNlbmFtZSwgVW1heF9EZXZpY2UgKipkZXZwKQ0KIHsN CiAgVW1heF9EZXZpY2UgKmRldjsNCi0gaW50IHNmZDsNCisgdXNiX2Rldl9o YW5kbGUgKnNmZDsNCiAgaW50IGk7DQogDQogICBEQkcoREJHX3NhbmVfcHJv YywiYXR0YWNoX3NjYW5uZXI6ICVzXG4iLCBkZXZpY2VuYW1lKTsNCkBAIC00 MzM4LDcgKzQ3MDUsNyBAQA0KICAgew0KICAgICBEQkcoREJHX2Vycm9yLCAi RVJST1I6IGF0dGFjaF9zY2FubmVyOiBzY2FubmVyLWlkZW50aWZpY2F0aW9u IGZhaWxlZFxuIik7DQogICAgIHNhbmVpX3Njc2lfY2xvc2UoZGV2LT5zZmQp Ow0KLSAgICBkZXYtPnNmZD0tMTsNCisgICAgZGV2LT5zZmQ9TlVMTDsNCiAg ICAgZnJlZShkZXYtPmJ1ZmZlclswXSk7DQogICAgIGZyZWUoZGV2KTsNCiAg ICAgcmV0dXJuIFNBTkVfU1RBVFVTX0lOVkFMOw0KQEAgLTQzNjYsNyArNDcz Myw3IEBADQogICBEQkcoREJHX2lucXVpcnksIlxuIik7DQogDQogICBzYW5l aV9zY3NpX2Nsb3NlKGRldi0+c2ZkKTsNCi0gIGRldi0+c2ZkPS0xOw0KKyAg ZGV2LT5zZmQ9TlVMTDsNCiANCiAgIGRldi0+c2FuZS5uYW1lICAgPSBkZXYt PmRldmljZW5hbWU7DQogICBkZXYtPnNhbmUudmVuZG9yID0gZGV2LT52ZW5k b3I7DQpAQCAtNTYyNSw3ICs1OTkyLDcgQEANCiAgIG1lbXNldChzY2FubmVy LCAwLCBzaXplb2YgKCpzY2FubmVyKSk7DQogDQogICBzY2FubmVyLT5kZXZp Y2UgICAgICA9IGRldjsNCi0gIHNjYW5uZXItPmRldmljZS0+c2ZkID0gLTE7 DQorICBzY2FubmVyLT5kZXZpY2UtPnNmZCA9IE5VTEw7DQogDQogICBpZiAo c2Nhbm5lci0+ZGV2aWNlLT5pbnF1aXJ5X0dJQiAmIDMyKQ0KICAgew0KQEAg LTY2NjYsNyArNzAzMyw3IEBADQogDQogICBtb2RlID0gc2Nhbm5lci0+dmFs W09QVF9NT0RFXS5zOw0KIA0KLSAgaWYgKHNjYW5uZXItPmRldmljZS0+c2Zk IDwgMCkgICAvKiBmaXJzdCBjYWxsLCBkb25gdCBydW4gdGhpcyByb3V0aW5l IGFnYWluIG9uIG11bHRpIGZyYW1lIG9yIG11bHRpIGltYWdlIHNjYW4gKi8N CisgIGlmIChzY2FubmVyLT5kZXZpY2UtPnNmZCA9PSBOVUxMKSAgIC8qIGZp cnN0IGNhbGwsIGRvbmB0IHJ1biB0aGlzIHJvdXRpbmUgYWdhaW4gb24gbXVs dGkgZnJhbWUgb3IgbXVsdGkgaW1hZ2Ugc2NhbiAqLw0KICAgew0KICAgICB1 bWF4X2luaXRpYWxpemVfdmFsdWVzKHNjYW5uZXItPmRldmljZSk7CQkJCQkJ CQkgICAgLyogcmVzZXQgdmFsdWVzICovDQogDQpAQCAtNjY4NSw3ICs3MDUy LDcgQEANCiAgICAgICB7DQogICAgICAgICBEQkcoREJHX2Vycm9yLCJFUlJP UjogVHJhbnNwYXJlbmN5IEFkYXB0ZXIgbm90IGF2YWlsYWJsZVxuIik7DQog ICAgICAgICBzYW5laV9zY3NpX2Nsb3NlKHNjYW5uZXItPmRldmljZS0+c2Zk KTsNCi0gICAgICAgIHNjYW5uZXItPmRldmljZS0+c2ZkPS0xOw0KKyAgICAg ICAgc2Nhbm5lci0+ZGV2aWNlLT5zZmQ9TlVMTDsNCiAgICAgICAgcmV0dXJu IFNBTkVfU1RBVFVTX0lOVkFMOw0KICAgICAgIH0NCiAgICAgfQ0KQEAgLTY3 MDMsNyArNzA3MCw3IEBADQogICAgICAgICB7DQogICAgICAgICAgIERCRyhE QkdfZXJyb3IsIkVSUk9SOiBBdXRvbWF0aWMgRG9jdW1lbnQgRmVlZGVyIG5v dCBhdmFpbGFibGVcbiIpOw0KICAgICAgICAgIHNhbmVpX3Njc2lfY2xvc2Uo c2Nhbm5lci0+ZGV2aWNlLT5zZmQpOw0KLSAgICAgICAgIHNjYW5uZXItPmRl dmljZS0+c2ZkPS0xOw0KKyAgICAgICAgIHNjYW5uZXItPmRldmljZS0+c2Zk PU5VTEw7DQogICAgICAgICAgcmV0dXJuIFNBTkVfU1RBVFVTX0lOVkFMOw0K ICAgICAgICAgfQ0KICAgICAgIH0NCkBAIC03MTIxLDcgKzc0ODgsNyBAQA0K ICAgICBpZiAodW1heF9ncmFiX3NjYW5uZXIoc2Nhbm5lci0+ZGV2aWNlKSkN CiAgICAgew0KICAgICAgIHNhbmVpX3Njc2lfY2xvc2Uoc2Nhbm5lci0+ZGV2 aWNlLT5zZmQpOw0KLSAgICAgIHNjYW5uZXItPmRldmljZS0+c2ZkPS0xOw0K KyAgICAgIHNjYW5uZXItPmRldmljZS0+c2ZkPU5VTEw7DQogICAgICAgc2Nh bm5lci0+c2Nhbm5pbmcgPSBTQU5FX0ZBTFNFOw0KICAgICAgIERCRyhEQkdf d2FybmluZywiV0FSTklORzogdW5hYmxlIHRvIHJlc2VydmUgc2Nhbm5lcjog ZGV2aWNlIGJ1c3lcbiIpOw0KICAgICAgcmV0dXJuIFNBTkVfU1RBVFVTX0RF VklDRV9CVVNZOw0KQEAgLTczMDUsNyArNzY3Miw3IEBADQogICAgIHNjYW5u ZXItPnNjYW5uaW5nID0gU0FORV9GQUxTRTsNCiAgICAgdW1heF9naXZlX3Nj YW5uZXIoc2Nhbm5lci0+ZGV2aWNlKTsgLyogcmVwb3NpdGlvbiBhbmQgcmVs ZWFzZSBzY2FubmVyICovDQogICAgIHNhbmVpX3Njc2lfY2xvc2Uoc2Nhbm5l ci0+ZGV2aWNlLT5zZmQpOw0KLSAgICBzY2FubmVyLT5kZXZpY2UtPnNmZD0t MTsNCisgICAgc2Nhbm5lci0+ZGV2aWNlLT5zZmQ9TlVMTDsNCiAgICByZXR1 cm4gU0FORV9TVEFUVVNfSU9fRVJST1I7DQogICB9DQogDQpkaWZmIC11IC1y IHNhbmUtYmFja2VuZHMtMS4wLjYub3JnL2JhY2tlbmQvdW1heC5oIHNhbmUt YmFja2VuZHMtMS4wLjYvYmFja2VuZC91bWF4LmgNCi0tLSBzYW5lLWJhY2tl bmRzLTEuMC42Lm9yZy9iYWNrZW5kL3VtYXguaAlTdW4gSnVuIDE3IDE3OjQ5 OjE3IDIwMDENCisrKyBzYW5lLWJhY2tlbmRzLTEuMC42L2JhY2tlbmQvdW1h eC5oCVR1ZSBOb3YgMjAgMjE6MzU6MTEgMjAwMQ0KQEAgLTU0LDYgKzU0LDcg QEANCiAjIGluY2x1ZGUgInNhbmUvc2FuZWlfaXBjLmgiDQogI2VuZGlmDQog DQorI2luY2x1ZGUgPHVzYi5oPg0KIA0KIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq Lw0KIC8qIENPTVBJTEVSIE9QVElPTlM6ICovDQpAQCAtMTg4LDEwICsxODks MTAgQEANCiANCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KIA0KLQ0KIC8qIExJ U1QgT0YgQVZBSUxBQkxFIFNDQU5ORVJTLCBUSEUgVkFMVUVTIExJU1RFRCBI RVJFIEFSRSBUSEUgU0FNRSBGT1IgRElGRkVSRU5UIEFQUExJQ0FUSU9OUw0K ICAgIFRIQVQgVVNFIFRIRSBTQU1FIERFVklDRSAqLw0KLSAgIA0KKw0KKw0K IC8qIFVtYXhfRGV2aWNlIGNvbnRhaW5zIHZhbHVlcyByZWxldmFudCBmb3Ig dGhlIGRldmljZSB0aGF0IGFyZSBub3QgaW50ZXJzdGluZyBmb3IgdGhlIHNh bmUgaW50ZXJmYWNlICovDQogDQogdHlwZWRlZiBzdHJ1Y3QgVW1heF9EZXZp Y2UNCkBAIC0yMzYsNyArMjM3LDcgQEANCiAjICBkZWZpbmUgQ0NEX2NvbG9y X2JsdWUgIDINCiANCiAgIGNoYXIJCQkqZGV2aWNlbmFtZTsJCQkJCSAgICAg ICAvKiBuYW1lIG9mIHRoZSBzY2FubmVyIGRldmljZSAqLw0KLSAgaW50CQkJ c2ZkOwkJCQkJICAgLyogb3V0cHV0IGZpbGUgZGVzY3JpcHRvciwgc2Nhbm5l ciBkZXZpY2UgKi8NCisgIHVzYl9kZXZfaGFuZGxlICpzZmQ7CQkJCQkgICAv KiBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yLCBzY2FubmVyIGRldmljZSAqLw0K IA0KICAgY2hhcgkJCXZlbmRvcls5XTsJCQkJCQkJICAgICAvKiB3aWxsIGJl IFVNQVggKi8NCiAgIGNoYXIJCQlwcm9kdWN0WzE3XTsJCQkJCSAgICAgIC8q IGUuZy4gIlN1cGVyVmlzdGFfUzEyIiBvciBzbyAqLw0K ---171960392-1423184503-1006314472=:10970--
