[sane-devel] Re: Avision backend

Jose Paulo Moitinho de Almeida moitinho@civil.ist.utl.pt
Tue, 13 Nov 2001 09:51:49 +0000


--------------Boundary-00=_DQGQTZJ0INPIVZH9VTX1
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Hello

On Monday 12 November 2001 13:00, you wrote:

> ....
>
> Attached is a slightly modified avision.c (simply replace the sane-1.0.6
> one). It doesn't yet do the software color-packing ... - But it includes
> all vendor strings I was able to find, outputs some scanner parameters
> in a readable way and (most importantly) it generated the gamma-table in
> another way. It like to make Christian another test scan using this new
> code (test my theory ...).
>
>...
>
> WARNING: All test are done on your own risk ...


It recognised my scanner :-), but failed on reporting dimensions / 
resolutions ...

I did not try to scan, but made some changes to the code in attach, which I 
am attaching (of course!), as well as a log. The relevant parts have comments 
with questions.

I have two questions (and a side note) which may be of general interest to 
the list:

a) coolscan uses sane.type = "slide scanner",
   canon uses "film scanner".

   Shouldn't the same name be used for both?

b) Is there a backend that implements film strip sense/control (and works)?

c) From backend/coolscan.c "This file implements a SANE backend for COOLSCAN 
flatbed scanners." Flatbed coolscan?

Regards 

Ze Paulo
--------------Boundary-00=_DQGQTZJ0INPIVZH9VTX1
Content-Type: text/english;
  name="sane.log"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sane.log"

W3NhbmVpX2RlYnVnXSBTZXR0aW5nIGRlYnVnIGxldmVsIG9mIGF2aXNpb24gdG8gMjU1LgpbYXZp
c2lvbl0gc2FuZV9pbml0OiBwYXJzaW5nIGNvbmZpZyBsaW5lICJzY3NpIEFWSVNJT04iClthdmlz
aW9uXSBzYW5lX2luaXQ6IGNvbmZpZyBmaWxlIGxpbmUgMTogdHJ5aW5nIHRvIGF0dGFjaCBgc2Nz
aSBBVklTSU9OJwpbYXZpc2lvbl0gc2FuZV9pbml0OiBwYXJzaW5nIGNvbmZpZyBsaW5lICIvZGV2
L3NnMCIKW2F2aXNpb25dIHNhbmVfaW5pdDogY29uZmlnIGZpbGUgbGluZSAyOiB0cnlpbmcgdG8g
YXR0YWNoIGAvZGV2L3NnMCcKW2F2aXNpb25dIGF0dGFjaApbYXZpc2lvbl0gYXR0YWNoOiBvcGVu
aW5nIC9kZXYvc2cwClthdmlzaW9uXSBhdHRhY2g6IHNlbmRpbmcgSU5RVUlSWQpbYXZpc2lvbl0g
d2FpdF9yZWFkeTogc2VuZGluZyBURVNUX1VOSVRfUkVBRFkKW2F2aXNpb25dIGF0dGFjaDogSW5x
dWlyeSBnaXZlcyBtZmc9TUlOT0xUQSwgbW9kZWw9RlMtVjEsIHByb2R1Y3QgcmV2aXNpb249MS4y
My4KW2F2aXNpb25dIHJlc3VsdFsgIDBdIDAwMDAwMTEwYiAgIDZvICAgNmQgIDZ4ClthdmlzaW9u
XSByZXN1bHRbICAxXSAxMDAwMDAwMGIgMjAwbyAxMjhkIDgweApbYXZpc2lvbl0gcmVzdWx0WyAg
Ml0gMDAwMDAwMTBiICAgMm8gICAyZCAgMngKW2F2aXNpb25dIHJlc3VsdFsgIDNdIDAxMDAwMDEw
YiAxMDJvICA2NmQgNDJ4ClthdmlzaW9uXSByZXN1bHRbICA0XSAwMTAxMTAxMWIgMTMzbyAgOTFk
IDVieApbYXZpc2lvbl0gcmVzdWx0WyAgNV0gMDAwMDAwMDBiICAgMG8gICAwZCAgMHgKW2F2aXNp
b25dIHJlc3VsdFsgIDZdIDAwMDAwMDAwYiAgIDBvICAgMGQgIDB4ClthdmlzaW9uXSByZXN1bHRb
ICA3XSAwMDAwMDAwMGIgICAwbyAgIDBkICAweApbYXZpc2lvbl0gcmVzdWx0WyAgOF0gMDEwMDEx
MDFiIDExNW8gIDc3ZCA0ZHgKW2F2aXNpb25dIHJlc3VsdFsgIDldIDAxMDAxMDAxYiAxMTFvICA3
M2QgNDl4ClthdmlzaW9uXSByZXN1bHRbIDEwXSAwMTAwMTExMGIgMTE2byAgNzhkIDRleApbYXZp
c2lvbl0gcmVzdWx0WyAxMV0gMDEwMDExMTFiIDExN28gIDc5ZCA0ZngKW2F2aXNpb25dIHJlc3Vs
dFsgMTJdIDAxMDAxMTAwYiAxMTRvICA3NmQgNGN4ClthdmlzaW9uXSByZXN1bHRbIDEzXSAwMTAx
MDEwMGIgMTI0byAgODRkIDU0eApbYXZpc2lvbl0gcmVzdWx0WyAxNF0gMDEwMDAwMDFiIDEwMW8g
IDY1ZCA0MXgKW2F2aXNpb25dIHJlc3VsdFsgMTVdIDAwMTAwMDAwYiAgNDBvICAzMmQgMjB4Clth
dmlzaW9uXSByZXN1bHRbIDE2XSAwMTAwMDExMGIgMTA2byAgNzBkIDQ2eApbYXZpc2lvbl0gcmVz
dWx0WyAxN10gMDEwMTAwMTFiIDEyM28gIDgzZCA1M3gKW2F2aXNpb25dIHJlc3VsdFsgMThdIDAw
MTAxMTAxYiAgNTVvICA0NWQgMmR4ClthdmlzaW9uXSByZXN1bHRbIDE5XSAwMTAxMDExMGIgMTI2
byAgODZkIDU2eApbYXZpc2lvbl0gcmVzdWx0WyAyMF0gMDAxMTAwMDFiICA2MW8gIDQ5ZCAzMXgK
W2F2aXNpb25dIHJlc3VsdFsgMjFdIDAwMTAwMDAwYiAgNDBvICAzMmQgMjB4ClthdmlzaW9uXSBy
ZXN1bHRbIDIyXSAwMDEwMDAwMGIgIDQwbyAgMzJkIDIweApbYXZpc2lvbl0gcmVzdWx0WyAyM10g
MDAxMDAwMDBiICA0MG8gIDMyZCAyMHgKW2F2aXNpb25dIHJlc3VsdFsgMjRdIDAwMTAwMDAwYiAg
NDBvICAzMmQgMjB4ClthdmlzaW9uXSByZXN1bHRbIDI1XSAwMDEwMDAwMGIgIDQwbyAgMzJkIDIw
eApbYXZpc2lvbl0gcmVzdWx0WyAyNl0gMDAxMDAwMDBiICA0MG8gIDMyZCAyMHgKW2F2aXNpb25d
IHJlc3VsdFsgMjddIDAwMTAwMDAwYiAgNDBvICAzMmQgMjB4ClthdmlzaW9uXSByZXN1bHRbIDI4
XSAwMDEwMDAwMGIgIDQwbyAgMzJkIDIweApbYXZpc2lvbl0gcmVzdWx0WyAyOV0gMDAxMDAwMDBi
ICA0MG8gIDMyZCAyMHgKW2F2aXNpb25dIHJlc3VsdFsgMzBdIDAwMTAwMDAwYiAgNDBvICAzMmQg
MjB4ClthdmlzaW9uXSByZXN1bHRbIDMxXSAwMDEwMDAwMGIgIDQwbyAgMzJkIDIweApbYXZpc2lv
bl0gcmVzdWx0WyAzMl0gMDAxMTAwMDFiICA2MW8gIDQ5ZCAzMXgKW2F2aXNpb25dIHJlc3VsdFsg
MzNdIDAwMTAxMTEwYiAgNTZvICA0NmQgMmV4ClthdmlzaW9uXSByZXN1bHRbIDM0XSAwMDExMDAx
MGIgIDYybyAgNTBkIDMyeApbYXZpc2lvbl0gcmVzdWx0WyAzNV0gMDAxMTAwMTFiICA2M28gIDUx
ZCAzM3gKW2F2aXNpb25dIHJlc3VsdFsgMzZdIDEwMTAwMDAwYiAyNDBvIDE2MGQgYTB4Clthdmlz
aW9uXSByZXN1bHRbIDM3XSAwMDAwMDAxMWIgICAzbyAgIDNkICAzeApbYXZpc2lvbl0gcmVzdWx0
WyAzOF0gMDAwMDAxMTBiICAgNm8gICA2ZCAgNngKW2F2aXNpb25dIHJlc3VsdFsgMzldIDExMTAw
MTExYiAzNDdvIDIzMWQgZTd4ClthdmlzaW9uXSByZXN1bHRbIDQwXSAwMDAwMTAxMWIgIDEzbyAg
MTFkICBieApbYXZpc2lvbl0gcmVzdWx0WyA0MV0gMDAwMDAxMDBiICAgNG8gICA0ZCAgNHgKW2F2
aXNpb25dIHJlc3VsdFsgNDJdIDAwMDAxMDExYiAgMTNvICAxMWQgIGJ4ClthdmlzaW9uXSByZXN1
bHRbIDQzXSAwMDAwMDEwMGIgICA0byAgIDRkICA0eApbYXZpc2lvbl0gcmVzdWx0WyA0NF0gMDAw
MDEwMTFiICAxM28gIDExZCAgYngKW2F2aXNpb25dIHJlc3VsdFsgNDVdIDAwMDAwMTAwYiAgIDRv
ICAgNGQgIDR4ClthdmlzaW9uXSByZXN1bHRbIDQ2XSAwMDAwMTAxMWIgIDEzbyAgMTFkICBieApb
YXZpc2lvbl0gcmVzdWx0WyA0N10gMDAwMDAxMDBiICAgNG8gICA0ZCAgNHgKW2F2aXNpb25dIHJl
c3VsdFsgNDhdIDAwMDAwMDAwYiAgIDBvICAgMGQgIDB4ClthdmlzaW9uXSByZXN1bHRbIDQ5XSAw
MDAwMDAwMGIgICAwbyAgIDBkICAweApbYXZpc2lvbl0gcmVzdWx0WyA1MF0gMTEwMTEwMDFiIDMz
MW8gMjE3ZCBkOXgKW2F2aXNpb25dIHJlc3VsdFsgNTFdIDEwMDEwMTAwYiAyMjRvIDE0OGQgOTR4
ClthdmlzaW9uXSByZXN1bHRbIDUyXSAxMTExMTAxMGIgMzcybyAyNTBkIGZheApbYXZpc2lvbl0g
cmVzdWx0WyA1M10gMDAwMDEwMDBiICAxMG8gICA4ZCAgOHgKW2F2aXNpb25dIHJlc3VsdFsgNTRd
IDAwMDAwMTAwYiAgIDRvICAgNGQgIDR4ClthdmlzaW9uXSByZXN1bHRbIDU1XSAwMDAwMDEwMGIg
ICA0byAgIDRkICA0eApbYXZpc2lvbl0gcmVzdWx0WyA1Nl0gMDAwMDAwMTBiICAgMm8gICAyZCAg
MngKW2F2aXNpb25dIHJlc3VsdFsgNTddIDAwMDAxMDAwYiAgMTBvICAgOGQgIDh4ClthdmlzaW9u
XSByZXN1bHRbIDU4XSAwMDAwMTAwMGIgIDEwbyAgIDhkICA4eApbYXZpc2lvbl0gcmVzdWx0WyA1
OV0gMDAwMDEwMDBiICAxMG8gICA4ZCAgOHgKW2F2aXNpb25dIHJlc3VsdFsgNjBdIDExMDAwMDAw
YiAzMDBvIDE5MmQgYzB4ClthdmlzaW9uXSByZXN1bHRbIDYxXSAxMTAxMDAwMGIgMzIwbyAyMDhk
IGQweApbYXZpc2lvbl0gcmVzdWx0WyA2Ml0gMTAxMDEwMDBiIDI1MG8gMTY4ZCBhOHgKW2F2aXNp
b25dIHJlc3VsdFsgNjNdIDAwMDAwMTAxYiAgIDVvICAgNWQgIDV4ClthdmlzaW9uXSByZXN1bHRb
IDY0XSAwMDAwMDAwMWIgICAxbyAgIDFkICAxeApbYXZpc2lvbl0gcmVzdWx0WyA2NV0gMDAwMDAw
MDFiICAgMW8gICAxZCAgMXgKW2F2aXNpb25dIHJlc3VsdFsgNjZdIDAwMDAwMDEwYiAgIDJvICAg
MmQgIDJ4ClthdmlzaW9uXSByZXN1bHRbIDY3XSAwMDAwMDAxMWIgICAzbyAgIDNkICAzeApbYXZp
c2lvbl0gcmVzdWx0WyA2OF0gMDAwMDAxMDBiICAgNG8gICA0ZCAgNHgKW2F2aXNpb25dIHJlc3Vs
dFsgNjldIDAwMDAwMTAxYiAgIDVvICAgNWQgIDV4ClthdmlzaW9uXSByZXN1bHRbIDcwXSAwMDAw
MDAwMGIgICAwbyAgIDBkICAweApbYXZpc2lvbl0gcmVzdWx0WyA3MV0gMDAwMDAwMDBiICAgMG8g
ICAwZCAgMHgKW2F2aXNpb25dIHJlc3VsdFsgNzJdIDAwMDAwMDAwYiAgIDBvICAgMGQgIDB4Clth
dmlzaW9uXSByZXN1bHRbIDczXSAwMDAwMDAwMGIgICAwbyAgIDBkICAweApbYXZpc2lvbl0gcmVz
dWx0WyA3NF0gMDAwMDAwMDBiICAgMG8gICAwZCAgMHgKW2F2aXNpb25dIHJlc3VsdFsgNzVdIDAw
MDAxMTExYiAgMTdvICAxNWQgIGZ4ClthdmlzaW9uXSByZXN1bHRbIDc2XSAxMTExMTExMWIgMzc3
byAyNTVkIGZmeApbYXZpc2lvbl0gcmVzdWx0WyA3N10gMDAwMDAwMDBiICAgMG8gICAwZCAgMHgK
W2F2aXNpb25dIHJlc3VsdFsgNzhdIDAwMDAwMDAwYiAgIDBvICAgMGQgIDB4ClthdmlzaW9uXSBy
ZXN1bHRbIDc5XSAwMDAwMDAwMGIgICAwbyAgIDBkICAweApbYXZpc2lvbl0gcmVzdWx0WyA4MF0g
MDAwMDAwMDBiICAgMG8gICAwZCAgMHgKW2F2aXNpb25dIHJlc3VsdFsgODFdIDAwMDAxMDEwYiAg
MTJvICAxMGQgIGF4ClthdmlzaW9uXSByZXN1bHRbIDgyXSAxMDAwMDAwMGIgMjAwbyAxMjhkIDgw
eApbYXZpc2lvbl0gcmVzdWx0WyA4M10gMDAwMDExMTFiICAxN28gIDE1ZCAgZngKW2F2aXNpb25d
IHJlc3VsdFsgODRdIDExMDAwMDAwYiAzMDBvIDE5MmQgYzB4ClthdmlzaW9uXSByZXN1bHRbIDg1
XSAwMDAwMTAxMGIgIDEybyAgMTBkICBheApbYXZpc2lvbl0gcmVzdWx0WyA4Nl0gMTAwMDAwMDBi
IDIwMG8gMTI4ZCA4MHgKW2F2aXNpb25dIHJlc3VsdFsgODddIDAwMDAxMTExYiAgMTdvICAxNWQg
IGZ4ClthdmlzaW9uXSByZXN1bHRbIDg4XSAxMTAwMDAwMGIgMzAwbyAxOTJkIGMweApbYXZpc2lv
bl0gcmVzdWx0WyA4OV0gMDAwMDEwMTFiICAxM28gIDExZCAgYngKW2F2aXNpb25dIHJlc3VsdFsg
OTBdIDAwMDAwMTAwYiAgIDRvICAgNGQgIDR4ClthdmlzaW9uXSByZXN1bHRbIDkxXSAwMDAwMDAx
MWIgICAzbyAgIDNkICAzeApbYXZpc2lvbl0gcmVzdWx0WyA5Ml0gMDAwMDAwMDBiICAgMG8gICAw
ZCAgMHgKW2F2aXNpb25dIHJlc3VsdFsgOTNdIDAwMTAwMDAwYiAgNDBvICAzMmQgMjB4Clthdmlz
aW9uXSByZXN1bHRbIDk0XSAwMDAwMDAwMGIgICAwbyAgIDBkICAweApbYXZpc2lvbl0gcmVzdWx0
WyA5NV0gMDAwMDAwMDBiICAgMG8gICAwZCAgMHgKW2F2aXNpb25dIGF0dGFjaDogbGluZSBkaWZm
ZXJlbmNlIChzb2Z0d2FyZSBjb2xvciBwYWNrKTogOApbYXZpc2lvbl0gYXR0YWNoOiBjb2xvciBt
b2RlIHBpeGVsIGJvdW5kYXJ5OiA0ClthdmlzaW9uXSBhdHRhY2g6IGdyZXkgbW9kZSBwaXhlbCBi
b3VuZGFyeTogNApbYXZpc2lvbl0gYXR0YWNoOiBjaGFubmVscyBwZXIgcGl4ZWw6IDE5MgpbYXZp
c2lvbl0gYXR0YWNoOiBiaXRzIHBlciBjaGFubmVsOiAyMDgKW2F2aXNpb25dIGF0dGFjaDogZm91
bmQgQVZJU0lPTiBzY2FubmVyIG1vZGVsIEZTLVYxIChmbGF0YmVkIHNjYW5uZXIpClthdmlzaW9u
XSAgICAgICAgIFgtUmFuZ2U6IDIwMy4xOTk5OTdtbSwgWS1SYW5nZTogMzMwLjE5OTk5N21tIChS
YXctUmFuZ2U6IDEwLCAxMjgsIDE1LCAxOTIpClthdmlzaW9uXSBSQVcuUmVzdWx0OgpbYXZpc2lv
bl0gWzBdOjYtPgYKW2F2aXNpb25dIFsxXTo4MC0+gApbYXZpc2lvbl0gWzJdOjItPgIKW2F2aXNp
b25dIFszXTo0Mi0+QgpbYXZpc2lvbl0gWzRdOjViLT5bClthdmlzaW9uXSBbNV06MC0+AApbYXZp
c2lvbl0gWzZdOjAtPgAKW2F2aXNpb25dIFs3XTowLT4AClthdmlzaW9uXSBbOF06NGQtPk0KW2F2
aXNpb25dIFs5XTo0OS0+SQpbYXZpc2lvbl0gWzEwXTo0ZS0+TgpbYXZpc2lvbl0gWzExXTo0Zi0+
TwpbYXZpc2lvbl0gWzEyXTo0Yy0+TApbYXZpc2lvbl0gWzEzXTo1NC0+VApbYXZpc2lvbl0gWzE0
XTo0MS0+QQpbYXZpc2lvbl0gWzE1XToyMC0+IApbYXZpc2lvbl0gWzE2XTo0Ni0+RgpbYXZpc2lv
bl0gWzE3XTo1My0+UwpbYXZpc2lvbl0gWzE4XToyZC0+LQpbYXZpc2lvbl0gWzE5XTo1Ni0+Vgpb
YXZpc2lvbl0gWzIwXTozMS0+MQpbYXZpc2lvbl0gWzIxXToyMC0+IApbYXZpc2lvbl0gWzIyXToy
MC0+IApbYXZpc2lvbl0gWzIzXToyMC0+IApbYXZpc2lvbl0gWzI0XToyMC0+IApbYXZpc2lvbl0g
WzI1XToyMC0+IApbYXZpc2lvbl0gWzI2XToyMC0+IApbYXZpc2lvbl0gWzI3XToyMC0+IApbYXZp
c2lvbl0gWzI4XToyMC0+IApbYXZpc2lvbl0gWzI5XToyMC0+IApbYXZpc2lvbl0gWzMwXToyMC0+
IApbYXZpc2lvbl0gWzMxXToyMC0+IApbYXZpc2lvbl0gWzMyXTozMS0+MQpbYXZpc2lvbl0gWzMz
XToyZS0+LgpbYXZpc2lvbl0gWzM0XTozMi0+MgpbYXZpc2lvbl0gWzM1XTozMy0+MwpbYXZpc2lv
bl0gWzM2XTphMC0+oApbYXZpc2lvbl0gWzM3XTozLT4DClthdmlzaW9uXSBbMzhdOjYtPgYKW2F2
aXNpb25dIFszOV06ZTctPucKW2F2aXNpb25dIFs0MF06Yi0+CwpbYXZpc2lvbl0gWzQxXTo0LT4E
ClthdmlzaW9uXSBbNDJdOmItPgsKW2F2aXNpb25dIFs0M106NC0+BApbYXZpc2lvbl0gWzQ0XTpi
LT4LClthdmlzaW9uXSBbNDVdOjQtPgQKW2F2aXNpb25dIFs0Nl06Yi0+CwpbYXZpc2lvbl0gWzQ3
XTo0LT4EClthdmlzaW9uXSBbNDhdOjAtPgAKW2F2aXNpb25dIFs0OV06MC0+AApbYXZpc2lvbl0g
WzUwXTpkOS0+2QpbYXZpc2lvbl0gWzUxXTo5NC0+lApbYXZpc2lvbl0gWzUyXTpmYS0++gpbYXZp
c2lvbl0gWzUzXTo4LT4IClthdmlzaW9uXSBbNTRdOjQtPgQKW2F2aXNpb25dIFs1NV06NC0+BApb
YXZpc2lvbl0gWzU2XToyLT4CClthdmlzaW9uXSBbNTddOjgtPggKW2F2aXNpb25dIFs1OF06OC0+
CApbYXZpc2lvbl0gWzU5XTo4LT4IClthdmlzaW9uXSBbNjBdOmMwLT7AClthdmlzaW9uXSBbNjFd
OmQwLT7QClthdmlzaW9uXSBbNjJdOmE4LT6oClthdmlzaW9uXSBbNjNdOjUtPgUKW2F2aXNpb25d
IFs2NF06MS0+AQpbYXZpc2lvbl0gWzY1XToxLT4BClthdmlzaW9uXSBbNjZdOjItPgIKW2F2aXNp
b25dIFs2N106My0+AwpbYXZpc2lvbl0gWzY4XTo0LT4EClthdmlzaW9uXSBbNjldOjUtPgUKW2F2
aXNpb25dIFs3MF06MC0+AApbYXZpc2lvbl0gWzcxXTowLT4AClthdmlzaW9uXSBbNzJdOjAtPgAK
W2F2aXNpb25dIFs3M106MC0+AApbYXZpc2lvbl0gWzc0XTowLT4AClthdmlzaW9uXSBbNzVdOmYt
Pg8KW2F2aXNpb25dIFs3Nl06ZmYtPv8KW2F2aXNpb25dIFs3N106MC0+AApbYXZpc2lvbl0gWzc4
XTowLT4AClthdmlzaW9uXSBbNzldOjAtPgAKW2F2aXNpb25dIFs4MF06MC0+AApbYXZpc2lvbl0g
WzgxXTphLT4KClthdmlzaW9uXSBbODJdOjgwLT6AClthdmlzaW9uXSBbODNdOmYtPg8KW2F2aXNp
b25dIFs4NF06YzAtPsAKW2F2aXNpb25dIFs4NV06YS0+CgpbYXZpc2lvbl0gWzg2XTo4MC0+gApb
YXZpc2lvbl0gWzg3XTpmLT4PClthdmlzaW9uXSBbODhdOmMwLT7AClthdmlzaW9uXSBbODldOmIt
PgsKW2F2aXNpb25dIFs5MF06NC0+BApbYXZpc2lvbl0gWzkxXTozLT4DClthdmlzaW9uXSBbOTJd
OjAtPgAKW2F2aXNpb25dIFs5M106MjAtPiAKW2F2aXNpb25dIFs5NF06MC0+AApbYXZpc2lvbl0g
Wzk1XTowLT4AClthdmlzaW9uXSBJbnF1aXJ5IHgveS1yYW5nZSBpcyB2YWlsZD8hPwpbYXZpc2lv
bl0gc2FuZV9pbml0OiBwYXJzaW5nIGNvbmZpZyBsaW5lICIiClthdmlzaW9uXSBzYW5lX2luaXQ6
IGNvbmZpZyBmaWxlIGxpbmUgMzogaWdub3JpbmcgZW1wdHkgbGluZQpbYXZpc2lvbl0gc2FuZV9n
ZXRfZGV2aWNlcwpbYXZpc2lvbl0gc2FuZV9vcGVuOgpbYXZpc2lvbl0gaW5pdF9vcHRpb25zClth
dmlzaW9uXSBtYXhfc3RyaW5nX3NpemUKW2F2aXNpb25dIG1ha2VfbW9kZQpbYXZpc2lvbl0gc2Fu
ZV9jb250cm9sX29wdGlvbgpbYXZpc2lvbl0gc2FuZV9nZXRfb3B0aW9uX2Rlc2NyaXB0b3IKW2F2
aXNpb25dIHNhbmVfZ2V0X29wdGlvbl9kZXNjcmlwdG9yClthdmlzaW9uXSBzYW5lX2NvbnRyb2xf
b3B0aW9uClthdmlzaW9uXSBzYW5lX2dldF9vcHRpb25fZGVzY3JpcHRvcgpbYXZpc2lvbl0gc2Fu
ZV9jb250cm9sX29wdGlvbgpbYXZpc2lvbl0gc2FuZV9nZXRfb3B0aW9uX2Rlc2NyaXB0b3IKW2F2
aXNpb25dIHNhbmVfY29udHJvbF9vcHRpb24KW2F2aXNpb25dIHNhbmVfZ2V0X29wdGlvbl9kZXNj
cmlwdG9yClthdmlzaW9uXSBzYW5lX2dldF9vcHRpb25fZGVzY3JpcHRvcgpbYXZpc2lvbl0gc2Fu
ZV9nZXRfb3B0aW9uX2Rlc2NyaXB0b3IKW2F2aXNpb25dIHNhbmVfY29udHJvbF9vcHRpb24KW2F2
aXNpb25dIHNhbmVfZ2V0X29wdGlvbl9kZXNjcmlwdG9yClthdmlzaW9uXSBzYW5lX2NvbnRyb2xf
b3B0aW9uClthdmlzaW9uXSBzYW5lX2dldF9vcHRpb25fZGVzY3JpcHRvcgpbYXZpc2lvbl0gc2Fu
ZV9jb250cm9sX29wdGlvbgpbYXZpc2lvbl0gc2FuZV9nZXRfb3B0aW9uX2Rlc2NyaXB0b3IKW2F2
aXNpb25dIHNhbmVfY29udHJvbF9vcHRpb24KW2F2aXNpb25dIHNhbmVfZ2V0X29wdGlvbl9kZXNj
cmlwdG9yClthdmlzaW9uXSBzYW5lX2dldF9vcHRpb25fZGVzY3JpcHRvcgpbYXZpc2lvbl0gc2Fu
ZV9jb250cm9sX29wdGlvbgpbYXZpc2lvbl0gc2FuZV9nZXRfb3B0aW9uX2Rlc2NyaXB0b3IKW2F2
aXNpb25dIHNhbmVfY29udHJvbF9vcHRpb24KW2F2aXNpb25dIHNhbmVfZ2V0X29wdGlvbl9kZXNj
cmlwdG9yClthdmlzaW9uXSBzYW5lX2NvbnRyb2xfb3B0aW9uClthdmlzaW9uXSBzYW5lX2dldF9v
cHRpb25fZGVzY3JpcHRvcgpbYXZpc2lvbl0gc2FuZV9jb250cm9sX29wdGlvbgpbYXZpc2lvbl0g
c2FuZV9nZXRfb3B0aW9uX2Rlc2NyaXB0b3IKW2F2aXNpb25dIHNhbmVfY29udHJvbF9vcHRpb24K
W2F2aXNpb25dIHNhbmVfZ2V0X29wdGlvbl9kZXNjcmlwdG9yClthdmlzaW9uXSBzYW5lX2NvbnRy
b2xfb3B0aW9uCihNZXNzYWdlcyByZXBlYXRlZCBtYW55IHRpbWVzLi4uKQo=

--------------Boundary-00=_DQGQTZJ0INPIVZH9VTX1
Content-Type: text/x-c;
  name="attach.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attach.c"

c3RhdGljIFNBTkVfU3RhdHVzCmF0dGFjaCAoY29uc3QgY2hhciogZGV2bmFtZSwgQXZpc2lvbl9E
ZXZpY2UqKiBkZXZwKQp7CiAgdW5zaWduZWQgY2hhciByZXN1bHQgW0lOUV9MRU5dOwogIGludCBm
ZDsKICBBdmlzaW9uX0RldmljZSogZGV2OwogIFNBTkVfU3RhdHVzIHN0YXR1czsKICBzaXplX3Qg
c2l6ZTsKCiAgY2hhciBtZmdbOV07CiAgY2hhciBtb2RlbFsxN107CiAgY2hhciByZXZbNV07CiAg
CiAgaW50IGk7CgogIGRvdWJsZSB4X3JhbmdlOwogIGRvdWJsZSB5X3JhbmdlOwogIAogIERCRyAo
MywgImF0dGFjaFxuIik7CgogIGZvciAoZGV2ID0gZmlyc3RfZGV2OyBkZXY7IGRldiA9IGRldi0+
bmV4dCkKICAgIGlmIChzdHJjbXAgKGRldi0+c2FuZS5uYW1lLCBkZXZuYW1lKSA9PSAwKSB7CiAg
ICAgIGlmIChkZXZwKQoJKmRldnAgPSBkZXY7CiAgICAgIHJldHVybiBTQU5FX1NUQVRVU19HT09E
OwogICAgfQoKICBEQkcgKDMsICJhdHRhY2g6IG9wZW5pbmcgJXNcbiIsIGRldm5hbWUpOwogIHN0
YXR1cyA9IHNhbmVpX3Njc2lfb3BlbiAoZGV2bmFtZSwgJmZkLCBzZW5zZV9oYW5kbGVyLCAwKTsK
ICBpZiAoc3RhdHVzICE9IFNBTkVfU1RBVFVTX0dPT0QpIHsKICAgIERCRyAoMSwgImF0dGFjaDog
b3BlbiBmYWlsZWQgKCVzKVxuIiwgc2FuZV9zdHJzdGF0dXMgKHN0YXR1cykpOwogICAgcmV0dXJu
IFNBTkVfU1RBVFVTX0lOVkFMOwogIH0KCiAgREJHICgzLCAiYXR0YWNoOiBzZW5kaW5nIElOUVVJ
UllcbiIpOwogIHNpemUgPSBzaXplb2YgKHJlc3VsdCk7CiAgc3RhdHVzID0gc2FuZWlfc2NzaV9j
bWQgKGZkLCBpbnF1aXJ5LCBzaXplb2YgKGlucXVpcnkpLCByZXN1bHQsICZzaXplKTsKICBpZiAo
c3RhdHVzICE9IFNBTkVfU1RBVFVTX0dPT0QgfHwgc2l6ZSAhPSBJTlFfTEVOKSB7CiAgICBEQkcg
KDEsICJhdHRhY2g6IGlucXVpcnkgZmFpbGVkICglcylcbiIsIHNhbmVfc3Ryc3RhdHVzIChzdGF0
dXMpKTsKICAgIHNhbmVpX3Njc2lfY2xvc2UgKGZkKTsKICAgIHJldHVybiBzdGF0dXM7CiAgfQoK
ICBzdGF0dXMgPSB3YWl0X3JlYWR5IChmZCk7CiAgc2FuZWlfc2NzaV9jbG9zZSAoZmQpOwogIGlm
IChzdGF0dXMgIT0gU0FORV9TVEFUVVNfR09PRCkKICAgIHJldHVybiBzdGF0dXM7CiAgCiAgLyog
Y29weSBzdHJpbmcgaW5mb3JtYXRpb24gLSBhbmQgYnVpbGQgemVybyB0ZXJtaW5hdGVkIGMtc3Ry
aW5ncyAqLwogIG1lbWNweSAoJm1mZywgcmVzdWx0ICsgOCwgOCk7CiAgbWZnIFs4XSA9IDA7CiAg
bWVtY3B5ICgmbW9kZWwsIHJlc3VsdCArIDE2LCAxNik7CiAgbW9kZWwgWzE2XSA9IDA7CiAgbWVt
Y3B5ICgmcmV2LCByZXN1bHQgKyAzMiwgNCk7CiAgcmV2IFs0XSA9IDA7CiAgCiAgLy8gc2hvcnRl
biBzdHJpbmdzICggLTEgZm9yIGxhc3QgaW5kZXg7IC0xIGZvciBsYXN0IDA7ID4wIGJlY2FzdWUg
b25lIGNoYXIgYXQgbGVhc3QpKQogIGZvciAoaSA9IHNpemVvZiAobWZnKSAtIDI7IGkgPiAwOyBp
LS0pIHsKICAgIGlmIChtZmdbaV0gPT0gMHgyMCkKICAgICAgbWZnW2ldID0gMDsKICAgIGVsc2UK
ICAgICAgYnJlYWs7CiAgfQogIGZvciAoaSA9IHNpemVvZiAobW9kZWwpIC0gMjsgaSA+IDA7IGkt
LSkgewogICAgaWYgKG1vZGVsW2ldID09IDB4MjApCiAgICAgIG1vZGVsW2ldID0gMDsKICAgIGVs
c2UKICAgICAgYnJlYWs7CiAgfQogIAogIERCRyAoMSwgImF0dGFjaDogSW5xdWlyeSBnaXZlcyBt
Zmc9JXMsIG1vZGVsPSVzLCBwcm9kdWN0IHJldmlzaW9uPSVzLlxuIiwgJm1mZywgJm1vZGVsLCAm
cmV2KTsKICAKICBpZiAoc3RyY21wIChtZmcsICJBVklTSU9OIikgIT0gMCAmJgogICAgICBzdHJj
bXAgKG1mZywgIkhQIikgIT0gMCAmJgogICAgICBzdHJjbXAgKG1mZywgIk1JTk9MVEEiKSAhPSAw
KQogICAgewogICAgICBEQkcgKDEsICJhdHRhY2g6IGRldmljZSBkb2Vzbid0IGxvb2sgbGlrZSBh
biBBVklTSU9OIChvciBPRU0pIHNjYW5uZXIhXG4iKTsKICAgICAgcmV0dXJuIFNBTkVfU1RBVFVT
X0lOVkFMOwogICAgfQogIAogIGlmIChzdHJjbXAgKG1vZGVsLCAiQVY2MzBDUyIpICE9IDAgJiYK
ICAgICAgc3RyY21wIChtb2RlbCwgIkFWNjIwQ1MiKSAhPSAwICYmCiAgICAgIHN0cmNtcCAobW9k
ZWwsICJTY2FuSmV0IDUzNzBDIikgIT0gMCAmJgogICAgICBzdHJjbXAgKG1vZGVsLCAic2Nhbmpl
dCA3NDAwYyIpICE9IDAgJiYKICAgICAgc3RyY21wIChtb2RlbCwgIkZTLVYxIikgIT0gMCkKICAg
IHsKICAgICAgREJHICgxLCAiYXR0YWNoOiBtb2RlbCBpcyBub3QgaW4gdGhlIGxpc3Qgb2Ygc3Vw
cG9ydGVkIG1vZGVsIVxuIik7CiAgICAgIERCRyAoMSwgImF0dGFjaCAgWW91IG1pZ2h0IHdhbnQg
dG8gcmVwb3J0IHRoaXMgb3V0cHV0LlxuIik7CiAgICAgIHJldHVybiBTQU5FX1NUQVRVU19JTlZB
TDsKICAgIH0KICAKICBkZXYgPSBtYWxsb2MgKHNpemVvZiAoKmRldikpOwogIGlmICghZGV2KQog
ICAgcmV0dXJuIFNBTkVfU1RBVFVTX05PX01FTTsKICAKICBtZW1zZXQgKGRldiwgMHgwLCBzaXpl
b2YgKCpkZXYpKTsKCiAgZGV2LT5zYW5lLm5hbWUgICA9IHN0cmR1cCAoZGV2bmFtZSk7CiAgZGV2
LT5zYW5lLnZlbmRvciA9IHN0cmR1cCAobWZnKTsKICBkZXYtPnNhbmUubW9kZWwgID0gc3RyZHVw
IChtb2RlbCk7CiAgaWYgKHN0cmNtcCAobW9kZWwsICJGUy1WMSIpICE9IDApCiAgICB7CiAgICAg
IGRldi0+c2FuZS50eXBlICAgPSAiZmxhdGJlZCBzY2FubmVyIjsKICAgIH0KICBlbHNlCiAgICB7
CiAgICAgIC8qIFRoZSBjb29sc2NhbiBiYWNrZW5kIHNheXMgInNsaWRlIHNjYW5uZXIiLCB0aGUg
Y2Fub24gc2F5cyAiZmlsbSBzY2FubmVyIgogICAgICAgICBkZWNpZGluZyBvbiBhIG5hbWUgd291
bGQgYmUgdXNlZnVsPyAqLwogICAgICBkZXYtPnNhbmUudHlwZSAgID0gInNsaWRlIHNjYW5uZXIi
OwogICAgfQoKIyBkZWZpbmUgQklUKG4sIHApICAobiAmICggMSA8PCBwKSk/MTowCiAgZm9yIChp
PTA7IGk8c2l6ZW9mKHJlc3VsdCk7IGkrKykgewogICAgREJHICgxLCAicmVzdWx0WyUzZF0gJTFk
JTFkJTFkJTFkJTFkJTFkJTFkJTFkYiAlM29vICUzZGQgJTJ4eFxuIiwgaSwgQklUKHJlc3VsdFtp
XSw3KSwgCiAgICAgICAgIEJJVChyZXN1bHRbaV0sNiksIEJJVChyZXN1bHRbaV0sNSksIEJJVChy
ZXN1bHRbaV0sNCksIEJJVChyZXN1bHRbaV0sMyksIEJJVChyZXN1bHRbaV0sMiksCiAgICAgICAg
IEJJVChyZXN1bHRbaV0sMSksIEJJVChyZXN1bHRbaV0sMCksIHJlc3VsdFtpXSwgcmVzdWx0W2ld
LCByZXN1bHRbaV0pOwogIH0KICAKICAvKiBwcmludCBzb21lIG1vcmUgc2Nhbm5lciBmZWF0dXJl
cy9wYXJhbXMgKi8KICBEQkcgKDMsICJhdHRhY2g6IGxpbmUgZGlmZmVyZW5jZSAoc29mdHdhcmUg
Y29sb3IgcGFjayk6ICVpXG4iLCByZXN1bHRbNTNdKTsKICBEQkcgKDMsICJhdHRhY2g6IGNvbG9y
IG1vZGUgcGl4ZWwgYm91bmRhcnk6ICVpXG4iLCByZXN1bHRbNTRdKTsKICBEQkcgKDMsICJhdHRh
Y2g6IGdyZXkgbW9kZSBwaXhlbCBib3VuZGFyeTogJWlcbiIsIHJlc3VsdFs1NV0pOwogIAogIERC
RyAoMywgImF0dGFjaDogY2hhbm5lbHMgcGVyIHBpeGVsOiAlaVxuIiwgcmVzdWx0WzYwXSk7CiAg
REJHICgzLCAiYXR0YWNoOiBiaXRzIHBlciBjaGFubmVsOiAlaVxuIiwgcmVzdWx0WzYxXSk7CiAg
CiAgLyogR2V0IG1heCBYIGFuZCBtYXggWSAuLi4qLwogIC8qIEluc3RlYWQgb2YgZGl2aWRpbmcg
YnkgMzAwIEkgd291bGQgZGl2aWRlIGJ5ICAKICAgICAoIG9wdGljYWxfcmVzb2x1dGlvbiA9ICgo
dW5zaWduZWQgaW50KXJlc3VsdFs4OV0gPDwgOCkgKyAodW5zaWduZWQgaW50KXJlc3VsdFs5MF0g
KQogICAgIEkgd291bGQgYXNzdW1lIHRoYXQgdGhlIGRvY3VtZW50IGlzIG5vdCBjb3JyZWN0Lgog
ICAgIEZvciBteSBzY2FubmVyIG9wdGljYWxfcmVzb2x1dGlvbiBpcyAoMTE8PDgrNCk9MjgyMAog
ICAgIElzIHRoaXMgY29ycmVjdCBmb3Igb3RoZXIgc2Nhbm5lcnM/IFRoZSA3NDAwIGRvZXMgMjQw
MGRwaSBJIHRoaW5rLiBXaGF0IHZhbHVlcyBhcmUgcmVwb3J0ZWQ/CiAgKi8KICB4X3JhbmdlID0g
KCAoICggKHVuc2lnbmVkIGludClyZXN1bHRbODFdIDw8IDgpICsgKHVuc2lnbmVkIGludClyZXN1
bHRbODJdICkgLyAzMDAgKSAqIE1NX1BFUl9JTkNIOwogIHlfcmFuZ2UgPSAoICggKCAodW5zaWdu
ZWQgaW50KXJlc3VsdFs4M10gPDwgOCkgKyAodW5zaWduZWQgaW50KXJlc3VsdFs4NF0gKSAvIDMw
MCApICogTU1fUEVSX0lOQ0g7CiAgZGV2LT54X3JhbmdlLm1heCA9IFNBTkVfRklYICh4X3Jhbmdl
KTsKICBkZXYtPnlfcmFuZ2UubWF4ID0gU0FORV9GSVggKHlfcmFuZ2UpOwogIAogIGRldi0+eF9y
YW5nZS5xdWFudCA9IDA7CiAgZGV2LT55X3JhbmdlLnF1YW50ID0gMDsKICAKICBkZXYtPmRwaV9y
YW5nZS5taW4gPSA1MDsKICBkZXYtPmRwaV9yYW5nZS5xdWFudCA9IDE7CiAgZGV2LT5kcGlfcmFu
Z2UubWF4ID0gMTIwMDsgLyogQ2hhbmdlIGFzIGFib3ZlPyAqLwoKICBEQkcgKDMsICJhdHRhY2g6
IGZvdW5kIEFWSVNJT04gc2Nhbm5lciBtb2RlbCAlcyAoJXMpXG4iLCBkZXYtPnNhbmUubW9kZWws
IGRldi0+c2FuZS50eXBlKTsKICBEQkcgKDMsICIgICAgICAgIFgtUmFuZ2U6ICVmbW0sIFktUmFu
Z2U6ICVmbW0gKFJhdy1SYW5nZTogJWQsICVkLCAlZCwgJWQpXG4iLAogICAgICAgU0FORV9VTkZJ
WCAoZGV2LT54X3JhbmdlLm1heCksCiAgICAgICBTQU5FX1VORklYIChkZXYtPnlfcmFuZ2UubWF4
KSwKICAgICAgIChpbnQpcmVzdWx0WzgxXSwgKGludClyZXN1bHRbODJdLCAoaW50KXJlc3VsdFs4
M10sIChpbnQpcmVzdWx0Wzg0XSk7CiAgCiAgREJHICg1LCAiUkFXLlJlc3VsdDpcbiIpOwogIGZv
ciAoaSA9IDA7IGkgPCBzaXplb2YgKHJlc3VsdCk7IGkrKykKICAgIHsKICAgICAgREJHICg1LCAi
WyVkXToleC0+IiIlYyIiXG4iLCBpLCAodW5zaWduZWQgY2hhcikgcmVzdWx0W2ldLCByZXN1bHRb
aV0pOwogICAgfQogIAogIC8qIGNoZWNrIGlmIHgveSByYW5nZSBpcyB2YWlsZCA6LSgoKCAqLwoK
ICAvKiBUaGVzZSBjaGVja3MgYXJlIHZlcnkgIGRhbmdlcm91cyBmb3IgYSBuZWdhdGl2ZSAoMjR4
MzYgbW0hISkgCiAgICAgV2hhdCBpcyB0aGUgYmVzdCBhcHByb2FjaD8gVXNlIGRldi0+c2FuZS50
eXBlIG9yIGEgdmFyaWFibGU/IAogICAgIFRoZW4gdXNlIGEgbGFyZ2UgaWYgdGhhdCBjb250cm9s
cyB0aGlzID8gKi8KCiAgaWYgKGRldi0+eF9yYW5nZS5tYXggPT0gMCB8fCBkZXYtPnlfcmFuZ2Uu
bWF4ID09IDApCiAgICB7CiAgICAgIERCRyAoMSwgIklucXVpcnkgeC95LXJhbmdlIGlzIGludmFp
bGQhIFVzaW5nIGRlZmF1bGQgJWZ4JWZpbmNoIChJU08gQTQpLlxuIiwgTUFYX1hfUkFOR0UsIE1B
WF9ZX1JBTkdFKTsKICAgICAgZGV2LT54X3JhbmdlLm1heCA9IFNBTkVfRklYIChNQVhfWF9SQU5H
RSAqIE1NX1BFUl9JTkNIKTsKICAgICAgZGV2LT55X3JhbmdlLm1heCA9IFNBTkVfRklYIChNQVhf
WV9SQU5HRSAqIE1NX1BFUl9JTkNIKTsKICAgIH0KICBlbHNlCiAgICBEQkcgKDMsICJJbnF1aXJ5
IHgveS1yYW5nZSBpcyB2YWlsZD8hP1xuIik7CiAgCiAgaWYgKGZvcmNlX2E0KQogICAgewogICAg
ICBEQkcgKDEsICJvcHRpb246IFwiZm9yY2VfYTRcIiBmb3VuZCEgVXNpbmcgZGVmYXVsZCAlZngl
ZmluY2ggKElTTyBBNCkuXG4iLAoJICAgTUFYX1hfUkFOR0UsIE1BWF9ZX1JBTkdFKTsKICAgICAg
ZGV2LT54X3JhbmdlLm1heCA9IFNBTkVfRklYIChNQVhfWF9SQU5HRSAqIE1NX1BFUl9JTkNIKTsK
ICAgICAgZGV2LT55X3JhbmdlLm1heCA9IFNBTkVfRklYIChNQVhfWV9SQU5HRSAqIE1NX1BFUl9J
TkNIKTsKICAgIH0KICAKICArK251bV9kZXZpY2VzOwogIGRldi0+bmV4dCA9IGZpcnN0X2RldjsK
ICBmaXJzdF9kZXYgPSBkZXY7CgogIGlmIChkZXZwKQogICAgKmRldnAgPSBkZXY7CiAgcmV0dXJu
IFNBTkVfU1RBVFVTX0dPT0Q7Cn0KCg==

--------------Boundary-00=_DQGQTZJ0INPIVZH9VTX1--