bin/142526: [patch] Cleanups and updates to newfs_msdos(8)
Pedro F. Giffuni
giffunip at tutopia.com
Thu Jan 14 22:00:09 UTC 2010
The following reply was made to PR bin/142526; it has been noted by GNATS.
From: "Pedro F. Giffuni" <giffunip at tutopia.com>
To: bug-followup at freebsd.org, David Naylor <naylor.b.david at gmail.com>
Cc:
Subject: Re: bin/142526: [patch] Cleanups and updates to newfs_msdos(8)
Date: Thu, 14 Jan 2010 13:52:34 -0800 (PST)
--0-550664387-1263505954=:34069
Content-Type: text/plain; charset=us-ascii
I integrated the changes into my WIP, thanks!
I now renamed the struct fields to match what is found in the
msdosfs headers. We could replace a couple of those fields with
bpb.h and bootsect.h but there are missing fields in newfs so I
will defer that for later.
--0-550664387-1263505954=:34069
Content-Type: application/octet-stream; name=patch-newfs_msdos
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=patch-newfs_msdos
ZGlmZiAtcnUgbmV3ZnNfbXNkb3Mub3JpZy9uZXdmc19tc2Rvcy44IG5ld2Zz
X21zZG9zL25ld2ZzX21zZG9zLjgKLS0tIG5ld2ZzX21zZG9zLm9yaWcvbmV3
ZnNfbXNkb3MuOAkyMDEwLTAxLTA2IDExOjA2OjAyLjAwMDAwMDAwMCArMDAw
MAorKysgbmV3ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuOAkyMDEwLTAxLTE0IDEz
OjMyOjI1LjAwMDAwMDAwMCArMDAwMApAQCAtMTE2LDcgKzExNiw3IEBACiAu
SXQgRmwgUyBBciBzZWN0b3Itc2l6ZQogTnVtYmVyIG9mIGJ5dGVzIHBlciBz
ZWN0b3IuCiBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgcG93ZXJzIG9mIDIKLWlu
IHRoZSByYW5nZSAxMjggdGhyb3VnaCAzMjc2OC4KK2luIHRoZSByYW5nZSA1
MTIgdGhyb3VnaCAzMjc2OC4KIC5JdCBGbCBhIEFyIEZBVC1zaXplCiBOdW1i
ZXIgb2Ygc2VjdG9ycyBwZXIgRkFULgogLkl0IEZsIGIgQXIgYmxvY2stc2l6
ZQpkaWZmIC1ydSBuZXdmc19tc2Rvcy5vcmlnL25ld2ZzX21zZG9zLmMgbmV3
ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuYwotLS0gbmV3ZnNfbXNkb3Mub3JpZy9u
ZXdmc19tc2Rvcy5jCTIwMTAtMDEtMDYgMTE6MDY6MDIuMDAwMDAwMDAwICsw
MDAwCisrKyBuZXdmc19tc2Rvcy9uZXdmc19tc2Rvcy5jCTIwMTAtMDEtMTQg
MTY6NDI6MzEuMDAwMDAwMDAwICswMDAwCkBAIC01NSw2ICs1NSw3IEBACiAj
ZGVmaW5lIE5QQgkgIDIJCS8qIG5pYmJsZXMgcGVyIGJ5dGUgKi8KIAogI2Rl
ZmluZSBET1NNQUdJQyAgMHhhYTU1CS8qIERPUyBtYWdpYyBudW1iZXIgKi8K
KyNkZWZpbmUgTUFYQlBTCSAgNDA5NgkJLyogbWF4aW11bSBieXRlcyBwZXIg
c2VjdG9yICovCiAjZGVmaW5lIE1JTkJQUwkgIDUxMgkJLyogbWluaW11bSBi
eXRlcyBwZXIgc2VjdG9yICovCiAjZGVmaW5lIE1BWFNQQwkgIDEyOAkJLyog
bWF4aW11bSBzZWN0b3JzIHBlciBjbHVzdGVyICovCiAjZGVmaW5lIE1BWE5G
VAkgIDE2CQkvKiBtYXhpbXVtIG51bWJlciBvZiBGQVRzICovCkBAIC02Miwx
MiArNjMsMTIgQEAKICNkZWZpbmUgREVGQkxLMTYgIDIwNDgJCS8qIGRlZmF1
bHQgYmxvY2sgc2l6ZSBGQVQxNiAqLwogI2RlZmluZSBERUZSREUJICA1MTIJ
CS8qIGRlZmF1bHQgcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLwogI2RlZmlu
ZSBSRVNGVEUJICAyCQkvKiByZXNlcnZlZCBGQVQgZW50cmllcyAqLwotI2Rl
ZmluZSBNSU5DTFMxMiAgMQkJLyogbWluaW11bSBGQVQxMiBjbHVzdGVycyAq
LwotI2RlZmluZSBNSU5DTFMxNiAgMHgxMDAwCS8qIG1pbmltdW0gRkFUMTYg
Y2x1c3RlcnMgKi8KLSNkZWZpbmUgTUlOQ0xTMzIgIDIJCS8qIG1pbmltdW0g
RkFUMzIgY2x1c3RlcnMgKi8KLSNkZWZpbmUgTUFYQ0xTMTIgIDB4ZmVkIAkv
KiBtYXhpbXVtIEZBVDEyIGNsdXN0ZXJzICovCi0jZGVmaW5lIE1BWENMUzE2
ICAweGZmZjUJLyogbWF4aW11bSBGQVQxNiBjbHVzdGVycyAqLwotI2RlZmlu
ZSBNQVhDTFMzMiAgMHhmZmZmZmY1CS8qIG1heGltdW0gRkFUMzIgY2x1c3Rl
cnMgKi8KKyNkZWZpbmUgTUlOQ0xTMTIgIDF1CQkvKiBtaW5pbXVtIEZBVDEy
IGNsdXN0ZXJzICovCisjZGVmaW5lIE1JTkNMUzE2ICAweDEwMDB1CS8qIG1p
bmltdW0gRkFUMTYgY2x1c3RlcnMgKi8KKyNkZWZpbmUgTUlOQ0xTMzIgIDJ1
CQkvKiBtaW5pbXVtIEZBVDMyIGNsdXN0ZXJzICovCisjZGVmaW5lIE1BWENM
UzEyICAweGZlZHUgCS8qIG1heGltdW0gRkFUMTIgY2x1c3RlcnMgKi8KKyNk
ZWZpbmUgTUFYQ0xTMTYgIDB4ZmZmNXUJLyogbWF4aW11bSBGQVQxNiBjbHVz
dGVycyAqLworI2RlZmluZSBNQVhDTFMzMiAgMHhmZmZmZmY1dQkvKiBtYXhp
bXVtIEZBVDMyIGNsdXN0ZXJzICovCiAKICNkZWZpbmUgbWluY2xzKGZhdCkg
ICgoZmF0KSA9PSAxMiA/IE1JTkNMUzEyIDoJXAogCQkgICAgICAoZmF0KSA9
PSAxNiA/IE1JTkNMUzE2IDoJXApAQCAtOTYsMjMgKzk3LDIzIEBACiAjZGVm
aW5lIGFyZ3RveChhcmcsIGxvLCBtc2cpICBhcmd0b3UoYXJnLCBsbywgVUlO
VF9NQVgsIG1zZykKIAogc3RydWN0IGJzIHsKLSAgICB1X2ludDhfdCBqbXBb
M107CQkvKiBib290c3RyYXAgZW50cnkgcG9pbnQgKi8KLSAgICB1X2ludDhf
dCBvZW1bOF07CQkvKiBPRU0gbmFtZSBhbmQgdmVyc2lvbiAqLworICAgIHVf
aW50OF90IGJzSnVtcFszXTsJCS8qIGJvb3RzdHJhcCBlbnRyeSBwb2ludCAq
LworICAgIHVfaW50OF90IGJzT2VtTmFtZVs4XTsJCS8qIE9FTSBuYW1lIGFu
ZCB2ZXJzaW9uICovCiB9OwogCiBzdHJ1Y3QgYnNicGIgewotICAgIHVfaW50
OF90IGJwc1syXTsJCS8qIGJ5dGVzIHBlciBzZWN0b3IgKi8KLSAgICB1X2lu
dDhfdCBzcGM7CQkvKiBzZWN0b3JzIHBlciBjbHVzdGVyICovCi0gICAgdV9p
bnQ4X3QgcmVzWzJdOwkJLyogcmVzZXJ2ZWQgc2VjdG9ycyAqLwotICAgIHVf
aW50OF90IG5mdDsJCS8qIG51bWJlciBvZiBGQVRzICovCi0gICAgdV9pbnQ4
X3QgcmRlWzJdOwkJLyogcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLwotICAg
IHVfaW50OF90IHNlY1syXTsJCS8qIHRvdGFsIHNlY3RvcnMgKi8KLSAgICB1
X2ludDhfdCBtaWQ7CQkvKiBtZWRpYSBkZXNjcmlwdG9yICovCi0gICAgdV9p
bnQ4X3Qgc3BmWzJdOwkJLyogc2VjdG9ycyBwZXIgRkFUICovCi0gICAgdV9p
bnQ4X3Qgc3B0WzJdOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8KLSAgICB1
X2ludDhfdCBoZHNbMl07CQkvKiBkcml2ZSBoZWFkcyAqLwotICAgIHVfaW50
OF90IGhpZFs0XTsJCS8qIGhpZGRlbiBzZWN0b3JzICovCi0gICAgdV9pbnQ4
X3QgYnNlY1s0XTsJCS8qIGJpZyB0b3RhbCBzZWN0b3JzICovCisgICAgdV9p
bnQ4X3QgYnBiQnl0ZXNQZXJTZWNbMl07CQkvKiBieXRlcyBwZXIgc2VjdG9y
ICovCisgICAgdV9pbnQ4X3QgYnBiU2VjUGVyQ2x1c3Q7CQkvKiBzZWN0b3Jz
IHBlciBjbHVzdGVyICovCisgICAgdV9pbnQ4X3QgYnBiUmVzU2VjdG9yc1sy
XTsJCS8qIHJlc2VydmVkIHNlY3RvcnMgKi8KKyAgICB1X2ludDhfdCBicGJG
QVRzOwkJCS8qIG51bWJlciBvZiBGQVRzICovCisgICAgdV9pbnQ4X3QgYnBi
Um9vdERpckVudHNbMl07CQkvKiByb290IGRpcmVjdG9yeSBlbnRyaWVzICov
CisgICAgdV9pbnQ4X3QgYnBiU2VjdG9yc1syXTsJCS8qIHRvdGFsIHNlY3Rv
cnMgKi8KKyAgICB1X2ludDhfdCBicGJNZWRpYTsJCQkvKiBtZWRpYSBkZXNj
cmlwdG9yICovCisgICAgdV9pbnQ4X3QgYnBiRkFUc2Vjc1syXTsJCS8qIHNl
Y3RvcnMgcGVyIEZBVCAqLworICAgIHVfaW50OF90IGJwYlNlY1BlclRyYWNr
WzJdOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8KKyAgICB1X2ludDhfdCBi
cGJIZWFkc1syXTsJCS8qIGRyaXZlIGhlYWRzICovCisgICAgdV9pbnQ4X3Qg
YnBiSGlkZGVuU2Vjc1s0XTsJCS8qIGhpZGRlbiBzZWN0b3JzICovCisgICAg
dV9pbnQ4X3QgYnBiSHVnZVNlY3RvcnNbNF07CQkvKiBiaWcgdG90YWwgc2Vj
dG9ycyAqLwogfTsKIAogc3RydWN0IGJzeGJwYiB7CkBAIC0xMjIsMTYgKzEy
MywxNiBAQAogICAgIHVfaW50OF90IHJkY2xbNF07CQkvKiByb290IGRpcmVj
dG9yeSBzdGFydCBjbHVzdGVyICovCiAgICAgdV9pbnQ4X3QgaW5mc1syXTsJ
CS8qIGZpbGUgc3lzdGVtIGluZm8gc2VjdG9yICovCiAgICAgdV9pbnQ4X3Qg
Ymtic1syXTsJCS8qIGJhY2t1cCBib290IHNlY3RvciAqLwotICAgIHVfaW50
OF90IHJzdmRbMTJdOwkJLyogcmVzZXJ2ZWQgKi8KKyAgICB1X2ludDhfdCBy
c3ZkWzEyXTsJCQkvKiByZXNlcnZlZCAqLwogfTsKIAogc3RydWN0IGJzeCB7
Ci0gICAgdV9pbnQ4X3QgZHJ2OwkJLyogZHJpdmUgbnVtYmVyICovCi0gICAg
dV9pbnQ4X3QgcnN2ZDsJCS8qIHJlc2VydmVkICovCi0gICAgdV9pbnQ4X3Qg
c2lnOwkJLyogZXh0ZW5kZWQgYm9vdCBzaWduYXR1cmUgKi8KLSAgICB1X2lu
dDhfdCB2b2xpZFs0XTsJCS8qIHZvbHVtZSBJRCBudW1iZXIgKi8KLSAgICB1
X2ludDhfdCBsYWJlbFsxMV07IAkvKiB2b2x1bWUgbGFiZWwgKi8KLSAgICB1
X2ludDhfdCB0eXBlWzhdOwkJLyogZmlsZSBzeXN0ZW0gdHlwZSAqLworICAg
IHVfaW50OF90IGV4RHJpdmVOdW1iZXI7CQkvKiBkcml2ZSBudW1iZXIgKi8K
KyAgICB1X2ludDhfdCBleFJlc2VydmVkMTsJCS8qIHJlc2VydmVkICovCisg
ICAgdV9pbnQ4X3QgZXhCb290U2lnbmF0dXJlOwkJLyogZXh0ZW5kZWQgYm9v
dCBzaWduYXR1cmUgKi8KKyAgICB1X2ludDhfdCBleFZvbHVtZUlEWzRdOwkJ
Lyogdm9sdW1lIElEIG51bWJlciAqLworICAgIHVfaW50OF90IGV4Vm9sdW1l
TGFiZWxbMTFdOyAJLyogdm9sdW1lIGxhYmVsICovCisgICAgdV9pbnQ4X3Qg
ZXhGaWxlU3lzVHlwZVs4XTsJCS8qIGZpbGUgc3lzdGVtIHR5cGUgKi8KIH07
CiAKIHN0cnVjdCBkZSB7CkBAIC0xNDUsNDAgKzE0Niw0NCBAQAogfTsKIAog
c3RydWN0IGJwYiB7Ci0gICAgdV9pbnQgYnBzOwkJCS8qIGJ5dGVzIHBlciBz
ZWN0b3IgKi8KLSAgICB1X2ludCBzcGM7CQkJLyogc2VjdG9ycyBwZXIgY2x1
c3RlciAqLwotICAgIHVfaW50IHJlczsJCQkvKiByZXNlcnZlZCBzZWN0b3Jz
ICovCi0gICAgdV9pbnQgbmZ0OwkJCS8qIG51bWJlciBvZiBGQVRzICovCi0g
ICAgdV9pbnQgcmRlOwkJCS8qIHJvb3QgZGlyZWN0b3J5IGVudHJpZXMgKi8K
LSAgICB1X2ludCBzZWM7CQkJLyogdG90YWwgc2VjdG9ycyAqLwotICAgIHVf
aW50IG1pZDsJCQkvKiBtZWRpYSBkZXNjcmlwdG9yICovCi0gICAgdV9pbnQg
c3BmOwkJCS8qIHNlY3RvcnMgcGVyIEZBVCAqLwotICAgIHVfaW50IHNwdDsJ
CQkvKiBzZWN0b3JzIHBlciB0cmFjayAqLwotICAgIHVfaW50IGhkczsJCQkv
KiBkcml2ZSBoZWFkcyAqLwotICAgIHVfaW50IGhpZDsJCQkvKiBoaWRkZW4g
c2VjdG9ycyAqLwotICAgIHVfaW50IGJzZWM7IAkJLyogYmlnIHRvdGFsIHNl
Y3RvcnMgKi8KLSAgICB1X2ludCBic3BmOyAJCS8qIGJpZyBzZWN0b3JzIHBl
ciBGQVQgKi8KLSAgICB1X2ludCByZGNsOyAJCS8qIHJvb3QgZGlyZWN0b3J5
IHN0YXJ0IGNsdXN0ZXIgKi8KLSAgICB1X2ludCBpbmZzOyAJCS8qIGZpbGUg
c3lzdGVtIGluZm8gc2VjdG9yICovCi0gICAgdV9pbnQgYmticzsgCQkvKiBi
YWNrdXAgYm9vdCBzZWN0b3IgKi8KKyAgICB1X2ludCBicGJCeXRlc1BlclNl
YzsJCS8qIGJ5dGVzIHBlciBzZWN0b3IgKi8KKyAgICB1X2ludCBicGJTZWNQ
ZXJDbHVzdDsJCS8qIHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8KKyAgICB1X2lu
dCBicGJSZXNTZWN0b3JzOwkJLyogcmVzZXJ2ZWQgc2VjdG9ycyAqLworICAg
IHVfaW50IGJwYkZBVHM7CQkJLyogbnVtYmVyIG9mIEZBVHMgKi8KKyAgICB1
X2ludCBicGJSb290RGlyRW50czsJCS8qIHJvb3QgZGlyZWN0b3J5IGVudHJp
ZXMgKi8KKyAgICB1X2ludCBicGJTZWN0b3JzOwkJCS8qIHRvdGFsIHNlY3Rv
cnMgKi8KKyAgICB1X2ludCBicGJNZWRpYTsJCQkvKiBtZWRpYSBkZXNjcmlw
dG9yICovCisgICAgdV9pbnQgYnBiRkFUc2VjczsJCQkvKiBzZWN0b3JzIHBl
ciBGQVQgKi8KKyAgICB1X2ludCBicGJTZWNQZXJUcmFjazsJCS8qIHNlY3Rv
cnMgcGVyIHRyYWNrICovCisgICAgdV9pbnQgYnBiSGVhZHM7CQkJLyogZHJp
dmUgaGVhZHMgKi8KKyAgICB1X2ludCBicGJIaWRkZW5TZWNzOwkJLyogaGlk
ZGVuIHNlY3RvcnMgKi8KKyAgICB1X2ludCBicGJIdWdlU2VjdG9yczsgCQkv
KiBiaWcgdG90YWwgc2VjdG9ycyAqLworICAgIHVfaW50IGJwYkJpZ0ZBVHNl
Y3M7IAkJLyogYmlnIHNlY3RvcnMgcGVyIEZBVCAqLworLyogWFhYOiBNaXNz
aW5nIEVYVEZsYWdzIEZTVmVycyAqLworICAgIHVfaW50IGJwYlJvb3RDbHVz
dDsgCQkvKiByb290IGRpcmVjdG9yeSBzdGFydCBjbHVzdGVyICovCisgICAg
dV9pbnQgYnBiRlNJbmZvOyAJCS8qIGZpbGUgc3lzdGVtIGluZm8gc2VjdG9y
ICovCisgICAgdV9pbnQgYnBiQmFja3VwOyAJCS8qIGJhY2t1cCBib290IHNl
Y3RvciAqLwogfTsKIAogI2RlZmluZSBCUEJHQVAgMCwgMCwgMCwgMCwgMCwg
MAogCisjZGVmaW5lIElOSVQoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwg
aikgXAorICAgIHsgLmJwYkJ5dGVzUGVyU2VjID0gYSwgLmJwYlNlY1BlckNs
dXN0ID0gYiwgLmJwYlJlc1NlY3RvcnMgPSBjLCAuYnBiRkFUcyA9IGQsIC5i
cGJSb290RGlyRW50cyA9IGUsIFwKKyAgICAgIC5icGJTZWN0b3JzID0gZiwg
LmJwYk1lZGlhID0gZywgLmJwYkZBVHNlY3MgPSBoLCAuYnBiU2VjUGVyVHJh
Y2sgPSBpLCAuYnBiSGVhZHMgPSBqLCB9CiBzdGF0aWMgc3RydWN0IHsKICAg
ICBjb25zdCBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBicGIgYnBiOwogfSBj
b25zdCBzdGRmbXRbXSA9IHsKLSAgICB7IjE2MCIsICB7NTEyLCAxLCAxLCAy
LCAgNjQsICAzMjAsIDB4ZmUsIDEsICA4LCAxLCBCUEJHQVB9fSwKLSAgICB7
IjE4MCIsICB7NTEyLCAxLCAxLCAyLCAgNjQsICAzNjAsIDB4ZmMsIDIsICA5
LCAxLCBCUEJHQVB9fSwKLSAgICB7IjMyMCIsICB7NTEyLCAyLCAxLCAyLCAx
MTIsICA2NDAsIDB4ZmYsIDEsICA4LCAyLCBCUEJHQVB9fSwKLSAgICB7IjM2
MCIsICB7NTEyLCAyLCAxLCAyLCAxMTIsICA3MjAsIDB4ZmQsIDIsICA5LCAy
LCBCUEJHQVB9fSwKLSAgICB7IjY0MCIsICB7NTEyLCAyLCAxLCAyLCAxMTIs
IDEyODAsIDB4ZmIsIDIsICA4LCAyLCBCUEJHQVB9fSwgICAgCi0gICAgeyI3
MjAiLCAgezUxMiwgMiwgMSwgMiwgMTEyLCAxNDQwLCAweGY5LCAzLCAgOSwg
MiwgQlBCR0FQfX0sCi0gICAgeyIxMjAwIiwgezUxMiwgMSwgMSwgMiwgMjI0
LCAyNDAwLCAweGY5LCA3LCAxNSwgMiwgQlBCR0FQfX0sCi0gICAgeyIxMjMy
IiwgezEwMjQsMSwgMSwgMiwgMTkyLCAxMjMyLCAweGZlLCAyLCAgOCwgMiwg
QlBCR0FQfX0sICAgIAotICAgIHsiMTQ0MCIsIHs1MTIsIDEsIDEsIDIsIDIy
NCwgMjg4MCwgMHhmMCwgOSwgMTgsIDIsIEJQQkdBUH19LAotICAgIHsiMjg4
MCIsIHs1MTIsIDIsIDEsIDIsIDI0MCwgNTc2MCwgMHhmMCwgOSwgMzYsIDIs
IEJQQkdBUH19CisgICAgeyIxNjAiLCAgSU5JVCg1MTIsIDEsIDEsIDIsICA2
NCwgIDMyMCwgMHhmZSwgMSwgIDgsIDEpfSwKKyAgICB7IjE4MCIsICBJTklU
KDUxMiwgMSwgMSwgMiwgIDY0LCAgMzYwLCAweGZjLCAyLCAgOSwgMSl9LAor
ICAgIHsiMzIwIiwgIElOSVQoNTEyLCAyLCAxLCAyLCAxMTIsICA2NDAsIDB4
ZmYsIDEsICA4LCAyKX0sCisgICAgeyIzNjAiLCAgSU5JVCg1MTIsIDIsIDEs
IDIsIDExMiwgIDcyMCwgMHhmZCwgMiwgIDksIDIpfSwKKyAgICB7IjY0MCIs
ICBJTklUKDUxMiwgMiwgMSwgMiwgMTEyLCAxMjgwLCAweGZiLCAyLCAgOCwg
Mil9LCAgICAKKyAgICB7IjcyMCIsICBJTklUKDUxMiwgMiwgMSwgMiwgMTEy
LCAxNDQwLCAweGY5LCAzLCAgOSwgMil9LAorICAgIHsiMTIwMCIsIElOSVQo
NTEyLCAxLCAxLCAyLCAyMjQsIDI0MDAsIDB4ZjksIDcsIDE1LCAyKX0sCisg
ICAgeyIxMjMyIiwgSU5JVCgxMDI0LDEsIDEsIDIsIDE5MiwgMTIzMiwgMHhm
ZSwgMiwgIDgsIDIpfSwgICAgCisgICAgeyIxNDQwIiwgSU5JVCg1MTIsIDEs
IDEsIDIsIDIyNCwgMjg4MCwgMHhmMCwgOSwgMTgsIDIpfSwKKyAgICB7IjI4
ODAiLCBJTklUKDUxMiwgMiwgMSwgMiwgMjQwLCA1NzYwLCAweGYwLCA5LCAz
NiwgMil9CiB9OwogCiBzdGF0aWMgY29uc3QgdV9pbnQ4X3QgYm9vdGNvZGVb
XSA9IHsKQEAgLTM4MSw0OSArMzg2LDUxIEBACiAgICAgbWVtc2V0KCZicGIs
IDAsIHNpemVvZihicGIpKTsKICAgICBpZiAob3B0X2YpIHsKIAlnZXRzdGRm
bXQob3B0X2YsICZicGIpOwotCWJwYi5ic2VjID0gYnBiLnNlYzsKLQlicGIu
c2VjID0gMDsKLQlicGIuYnNwZiA9IGJwYi5zcGY7Ci0JYnBiLnNwZiA9IDA7
CisJYnBiLmJwYkh1Z2VTZWN0b3JzID0gYnBiLmJwYlNlY3RvcnM7CisJYnBi
LmJwYlNlY3RvcnMgPSAwOworCWJwYi5icGJCaWdGQVRzZWNzID0gYnBiLmJw
YkZBVHNlY3M7CisJYnBiLmJwYkZBVHNlY3MgPSAwOwogICAgIH0KICAgICBp
ZiAob3B0X2gpCi0JYnBiLmhkcyA9IG9wdF9oOworCWJwYi5icGJIZWFkcyA9
IG9wdF9oOwogICAgIGlmIChvcHRfdSkKLQlicGIuc3B0ID0gb3B0X3U7CisJ
YnBiLmJwYlNlY1BlclRyYWNrID0gb3B0X3U7CiAgICAgaWYgKG9wdF9TKQot
CWJwYi5icHMgPSBvcHRfUzsKKwlicGIuYnBiQnl0ZXNQZXJTZWMgPSBvcHRf
UzsKICAgICBpZiAob3B0X3MpCi0JYnBiLmJzZWMgPSBvcHRfczsKKwlicGIu
YnBiSHVnZVNlY3RvcnMgPSBvcHRfczsKICAgICBpZiAob2ZsYWcpCi0JYnBi
LmhpZCA9IG9wdF9vOworCWJwYi5icGJIaWRkZW5TZWNzID0gb3B0X287CiAg
ICAgaWYgKCEob3B0X2YgfHwgKG9wdF9oICYmIG9wdF91ICYmIG9wdF9TICYm
IG9wdF9zICYmIG9mbGFnKSkpIHsKIAlvZmZfdCBkZWx0YTsKIAlnZXRkaXNr
aW5mbyhmZCwgZm5hbWUsIGR0eXBlLCBvZmxhZywgJmJwYik7Ci0JYnBiLmJz
ZWMgLT0gKG9wdF9vZnMgLyBicGIuYnBzKTsKLQlkZWx0YSA9IGJwYi5ic2Vj
ICUgYnBiLnNwdDsKKwlicGIuYnBiSHVnZVNlY3RvcnMgLT0gKG9wdF9vZnMg
LyBicGIuYnBiQnl0ZXNQZXJTZWMpOworCWRlbHRhID0gYnBiLmJwYkh1Z2VT
ZWN0b3JzICUgYnBiLmJwYlNlY1BlclRyYWNrOwogCWlmIChkZWx0YSAhPSAw
KSB7CiAJICAgIHdhcm54KCJ0cmltICVkIHNlY3RvcnMgdG8gYWRqdXN0IHRv
IGEgbXVsdGlwbGUgb2YgJWQiLAotCQkoaW50KWRlbHRhLCBicGIuc3B0KTsK
LQkgICAgYnBiLmJzZWMgLT0gZGVsdGE7CisJCShpbnQpZGVsdGEsIGJwYi5i
cGJTZWNQZXJUcmFjayk7CisJICAgIGJwYi5icGJIdWdlU2VjdG9ycyAtPSBk
ZWx0YTsKIAl9Ci0JaWYgKGJwYi5zcGMgPT0gMCkgewkvKiBzZXQgZGVmYXVs
dHMgKi8KLQkgICAgaWYgKGJwYi5ic2VjIDw9IDYwMDApCS8qIGFib3V0IDNN
QiAtPiA1MTIgYnl0ZXMgKi8KLQkJYnBiLnNwYyA9IDE7Ci0JICAgIGVsc2Ug
aWYgKGJwYi5ic2VjIDw9ICgxPDwxNykpIC8qIDY0TSAtPiA0ayAqLwotCQli
cGIuc3BjID0gODsKLQkgICAgZWxzZSBpZiAoYnBiLmJzZWMgPD0gKDE8PDE5
KSkgLyogMjU2TSAtPiA4ayAqLwotCQlicGIuc3BjID0gMTY7Ci0JICAgIGVs
c2UgaWYgKGJwYi5ic2VjIDw9ICgxPDwyMSkpIC8qIDFHIC0+IDE2ayAqLwot
CQlicGIuc3BjID0gMzI7CisJaWYgKGJwYi5icGJTZWNQZXJDbHVzdCA9PSAw
KSB7CS8qIHNldCBkZWZhdWx0cyAqLworCSAgICBpZiAoYnBiLmJwYkh1Z2VT
ZWN0b3JzIDw9IDYwMDApCS8qIGFib3V0IDNNQiAtPiA1MTIgYnl0ZXMgKi8K
KwkJYnBiLmJwYlNlY1BlckNsdXN0ID0gMTsKKwkgICAgZWxzZSBpZiAoYnBi
LmJwYkh1Z2VTZWN0b3JzIDw9ICgxPDwxNykpIC8qIDY0TSAtPiA0ayAqLwor
CQlicGIuYnBiU2VjUGVyQ2x1c3QgPSA4OworCSAgICBlbHNlIGlmIChicGIu
YnBiSHVnZVNlY3RvcnMgPD0gKDE8PDE5KSkgLyogMjU2TSAtPiA4ayAqLwor
CQlicGIuYnBiU2VjUGVyQ2x1c3QgPSAxNjsKKwkgICAgZWxzZSBpZiAoYnBi
LmJwYkh1Z2VTZWN0b3JzIDw9ICgxPDwyMSkpIC8qIDFHIC0+IDE2ayAqLwor
CQlicGIuYnBiU2VjUGVyQ2x1c3QgPSAzMjsKIAkgICAgZWxzZQotCQlicGIu
c3BjID0gNjQ7CQkvKiBvdGhlcndpc2UgMzJrICovCisJCWJwYi5icGJTZWNQ
ZXJDbHVzdCA9IDY0OwkJLyogb3RoZXJ3aXNlIDMyayAqLwogCX0KICAgICB9
Ci0gICAgaWYgKCFwb3dlcm9mMihicGIuYnBzKSkKLQllcnJ4KDEsICJieXRl
cy9zZWN0b3IgKCV1KSBpcyBub3QgYSBwb3dlciBvZiAyIiwgYnBiLmJwcyk7
Ci0gICAgaWYgKGJwYi5icHMgPCBNSU5CUFMpCisgICAgaWYgKGJwYi5icGJC
eXRlc1BlclNlYyA+IE1BWEJQUykKKyAgICAJcHJpbnRmKCIgV0FSTklORzog
Ynl0ZXMvc2VjdG9yICgldSkgaXMgdG9vIGJpZyIsIGJwYi5icGJCeXRlc1Bl
clNlYyk7CisgICAgZWxzZSBpZiAoYnBiLmJwYkJ5dGVzUGVyU2VjIDwgTUlO
QlBTKQogCWVycngoMSwgImJ5dGVzL3NlY3RvciAoJXUpIGlzIHRvbyBzbWFs
bDsgbWluaW11bSBpcyAldSIsCi0JICAgICBicGIuYnBzLCBNSU5CUFMpOwor
CSAgICAgYnBiLmJwYkJ5dGVzUGVyU2VjLCBNSU5CUFMpOworICAgIGlmICgh
cG93ZXJvZjIoYnBiLmJwYkJ5dGVzUGVyU2VjKSkKKwllcnJ4KDEsICJieXRl
cy9zZWN0b3IgKCV1KSBpcyBub3QgYSBwb3dlciBvZiAyIiwgYnBiLmJwYkJ5
dGVzUGVyU2VjKTsKICAgICBpZiAoIShmYXQgPSBvcHRfRikpIHsKIAlpZiAo
b3B0X2YpCiAJICAgIGZhdCA9IDEyOwpAQCAtNDM1LDQ0ICs0NDIsNDQgQEAK
IAkgICAgIGZhdCA9PSAzMiA/ICdlJyA6IG9wdF9pID8gJ2knIDogJ2snLAog
CSAgICAgZmF0ID09IDMyID8gIjMyIiA6ICIxMi8xNiIpOwogICAgIGlmIChv
cHRfZiAmJiBmYXQgPT0gMzIpCi0JYnBiLnJkZSA9IDA7CisJYnBiLmJwYlJv
b3REaXJFbnRzID0gMDsKICAgICBpZiAob3B0X2IpIHsKIAlpZiAoIXBvd2Vy
b2YyKG9wdF9iKSkKIAkgICAgZXJyeCgxLCAiYmxvY2sgc2l6ZSAoJXUpIGlz
IG5vdCBhIHBvd2VyIG9mIDIiLCBvcHRfYik7Ci0JaWYgKG9wdF9iIDwgYnBi
LmJwcykKKwlpZiAob3B0X2IgPCBicGIuYnBiQnl0ZXNQZXJTZWMpCiAJICAg
IGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gc21hbGw7IG1pbmlt
dW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMpOwotCWlmIChvcHRfYiA+
IGJwYi5icHMgKiBNQVhTUEMpCisJCSBvcHRfYiwgYnBiLmJwYkJ5dGVzUGVy
U2VjKTsKKwlpZiAob3B0X2IgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBNQVhT
UEMpCiAJICAgIGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gbGFy
Z2U7IG1heGltdW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMgKiBNQVhT
UEMpOwotCWJwYi5zcGMgPSBvcHRfYiAvIGJwYi5icHM7CisJCSBvcHRfYiwg
YnBiLmJwYkJ5dGVzUGVyU2VjICogTUFYU1BDKTsKKwlicGIuYnBiU2VjUGVy
Q2x1c3QgPSBvcHRfYiAvIGJwYi5icGJCeXRlc1BlclNlYzsKICAgICB9CiAg
ICAgaWYgKG9wdF9jKSB7CiAJaWYgKCFwb3dlcm9mMihvcHRfYykpCiAJICAg
IGVycngoMSwgInNlY3RvcnMvY2x1c3RlciAoJXUpIGlzIG5vdCBhIHBvd2Vy
IG9mIDIiLCBvcHRfYyk7Ci0JYnBiLnNwYyA9IG9wdF9jOworCWJwYi5icGJT
ZWNQZXJDbHVzdCA9IG9wdF9jOwogICAgIH0KICAgICBpZiAob3B0X3IpCi0J
YnBiLnJlcyA9IG9wdF9yOworCWJwYi5icGJSZXNTZWN0b3JzID0gb3B0X3I7
CiAgICAgaWYgKG9wdF9uKSB7CiAJaWYgKG9wdF9uID4gTUFYTkZUKQogCSAg
ICBlcnJ4KDEsICJudW1iZXIgb2YgRkFUcyAoJXUpIGlzIHRvbyBsYXJnZTsg
bWF4aW11bSBpcyAldSIsCiAJCSBvcHRfbiwgTUFYTkZUKTsKLQlicGIubmZ0
ID0gb3B0X247CisJYnBiLmJwYkZBVHMgPSBvcHRfbjsKICAgICB9CiAgICAg
aWYgKG9wdF9lKQotCWJwYi5yZGUgPSBvcHRfZTsKKwlicGIuYnBiUm9vdERp
ckVudHMgPSBvcHRfZTsKICAgICBpZiAobWZsYWcpIHsKIAlpZiAob3B0X20g
PCAweGYwKQogCSAgICBlcnJ4KDEsICJpbGxlZ2FsIG1lZGlhIGRlc2NyaXB0
b3IgKCUjeCkiLCBvcHRfbSk7Ci0JYnBiLm1pZCA9IG9wdF9tOworCWJwYi5i
cGJNZWRpYSA9IG9wdF9tOwogICAgIH0KICAgICBpZiAob3B0X2EpCi0JYnBi
LmJzcGYgPSBvcHRfYTsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IG9wdF9hOwog
ICAgIGlmIChvcHRfaSkKLQlicGIuaW5mcyA9IG9wdF9pOworCWJwYi5icGJG
U0luZm8gPSBvcHRfaTsKICAgICBpZiAob3B0X2spCi0JYnBiLmJrYnMgPSBv
cHRfazsKKwlicGIuYnBiQmFja3VwID0gb3B0X2s7CiAgICAgYnNzID0gMTsK
ICAgICBibmFtZSA9IE5VTEw7CiAgICAgZmQxID0gLTE7CkBAIC00ODUsODcg
KzQ5Miw4NyBAQAogCX0KIAlpZiAoKGZkMSA9IG9wZW4oYm5hbWUsIE9fUkRP
TkxZKSkgPT0gLTEgfHwgZnN0YXQoZmQxLCAmc2IpKQogCSAgICBlcnIoMSwg
IiVzIiwgYm5hbWUpOwotCWlmICghU19JU1JFRyhzYi5zdF9tb2RlKSB8fCBz
Yi5zdF9zaXplICUgYnBiLmJwcyB8fAotCSAgICBzYi5zdF9zaXplIDwgYnBi
LmJwcyB8fCBzYi5zdF9zaXplID4gYnBiLmJwcyAqIE1BWFUxNikKKwlpZiAo
IVNfSVNSRUcoc2Iuc3RfbW9kZSkgfHwgc2Iuc3Rfc2l6ZSAlIGJwYi5icGJC
eXRlc1BlclNlYyB8fAorCSAgICBzYi5zdF9zaXplIDwgYnBiLmJwYkJ5dGVz
UGVyU2VjIHx8IHNiLnN0X3NpemUgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBN
QVhVMTYpCiAJICAgIGVycngoMSwgIiVzOiBpbmFwcHJvcHJpYXRlIGZpbGUg
dHlwZSBvciBmb3JtYXQiLCBibmFtZSk7Ci0JYnNzID0gc2Iuc3Rfc2l6ZSAv
IGJwYi5icHM7CisJYnNzID0gc2Iuc3Rfc2l6ZSAvIGJwYi5icGJCeXRlc1Bl
clNlYzsKICAgICB9Ci0gICAgaWYgKCFicGIubmZ0KQotCWJwYi5uZnQgPSAy
OworICAgIGlmICghYnBiLmJwYkZBVHMpCisJYnBiLmJwYkZBVHMgPSAyOwog
ICAgIGlmICghZmF0KSB7Ci0JaWYgKGJwYi5ic2VjIDwgKGJwYi5yZXMgPyBi
cGIucmVzIDogYnNzKSArCi0JICAgIGhvd21hbnkoKFJFU0ZURSArIChicGIu
c3BjID8gTUlOQ0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCi0JCSAgICAoKGJw
Yi5zcGMgPyAxNiA6IDEyKSAvIEJQTiksIGJwYi5icHMgKiBOUEIpICoKLQkg
ICAgYnBiLm5mdCArCi0JICAgIGhvd21hbnkoYnBiLnJkZSA/IGJwYi5yZGUg
OiBERUZSREUsCi0JCSAgICBicGIuYnBzIC8gc2l6ZW9mKHN0cnVjdCBkZSkp
ICsKLQkgICAgKGJwYi5zcGMgPyBNSU5DTFMxNiA6IE1BWENMUzEyICsgMSkg
KgotCSAgICAoYnBiLnNwYyA/IGJwYi5zcGMgOiBob3dtYW55KERFRkJMSywg
YnBiLmJwcykpKQorCWlmIChicGIuYnBiSHVnZVNlY3RvcnMgPCAoYnBiLmJw
YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCSAg
ICBob3dtYW55KChSRVNGVEUgKyAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlO
Q0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCisJCSAgICAoKGJwYi5icGJTZWNQ
ZXJDbHVzdCA/IDE2IDogMTIpIC8gQlBOKSwgYnBiLmJwYkJ5dGVzUGVyU2Vj
ICogTlBCKSAqCisJICAgIGJwYi5icGJGQVRzICsKKwkgICAgaG93bWFueShi
cGIuYnBiUm9vdERpckVudHMgPyBicGIuYnBiUm9vdERpckVudHMgOiBERUZS
REUsCisJCSAgICBicGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0
IGRlKSkgKworCSAgICAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlOQ0xTMTYg
OiBNQVhDTFMxMiArIDEpICoKKwkgICAgKGJwYi5icGJTZWNQZXJDbHVzdCA/
IGJwYi5icGJTZWNQZXJDbHVzdCA6IGhvd21hbnkoREVGQkxLLCBicGIuYnBi
Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTI7Ci0JZWxzZSBpZiAoYnBi
LnJkZSB8fCBicGIuYnNlYyA8Ci0JCSAoYnBiLnJlcyA/IGJwYi5yZXMgOiBi
c3MpICsKLQkJIGhvd21hbnkoKFJFU0ZURSArIE1BWENMUzE2KSAqIDIsIGJw
Yi5icHMpICogYnBiLm5mdCArCi0JCSBob3dtYW55KERFRlJERSwgYnBiLmJw
cyAvIHNpemVvZihzdHJ1Y3QgZGUpKSArCisJZWxzZSBpZiAoYnBiLmJwYlJv
b3REaXJFbnRzIHx8IGJwYi5icGJIdWdlU2VjdG9ycyA8CisJCSAoYnBiLmJw
YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCQkg
aG93bWFueSgoUkVTRlRFICsgTUFYQ0xTMTYpICogMiwgYnBiLmJwYkJ5dGVz
UGVyU2VjKSAqIGJwYi5icGJGQVRzICsKKwkJIGhvd21hbnkoREVGUkRFLCBi
cGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0IGRlKSkgKwogCQkg
KE1BWENMUzE2ICsgMSkgKgotCQkgKGJwYi5zcGMgPyBicGIuc3BjIDogaG93
bWFueSg4MTkyLCBicGIuYnBzKSkpCisJCSAoYnBiLmJwYlNlY1BlckNsdXN0
ID8gYnBiLmJwYlNlY1BlckNsdXN0IDogaG93bWFueSg4MTkyLCBicGIuYnBi
Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTY7CiAJZWxzZQogCSAgICBm
YXQgPSAzMjsKICAgICB9CiAgICAgeCA9IGJzczsKICAgICBpZiAoZmF0ID09
IDMyKSB7Ci0JaWYgKCFicGIuaW5mcykgewotCSAgICBpZiAoeCA9PSBNQVhV
MTYgfHwgeCA9PSBicGIuYmticykKKwlpZiAoIWJwYi5icGJGU0luZm8pIHsK
KwkgICAgaWYgKHggPT0gTUFYVTE2IHx8IHggPT0gYnBiLmJwYkJhY2t1cCkK
IAkJZXJyeCgxLCAibm8gcm9vbSBmb3IgaW5mbyBzZWN0b3IiKTsKLQkgICAg
YnBiLmluZnMgPSB4OworCSAgICBicGIuYnBiRlNJbmZvID0geDsKIAl9Ci0J
aWYgKGJwYi5pbmZzICE9IE1BWFUxNiAmJiB4IDw9IGJwYi5pbmZzKQotCSAg
ICB4ID0gYnBiLmluZnMgKyAxOwotCWlmICghYnBiLmJrYnMpIHsKKwlpZiAo
YnBiLmJwYkZTSW5mbyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYnBiRlNJbmZv
KQorCSAgICB4ID0gYnBiLmJwYkZTSW5mbyArIDE7CisJaWYgKCFicGIuYnBi
QmFja3VwKSB7CiAJICAgIGlmICh4ID09IE1BWFUxNikKIAkJZXJyeCgxLCAi
bm8gcm9vbSBmb3IgYmFja3VwIHNlY3RvciIpOwotCSAgICBicGIuYmticyA9
IHg7Ci0JfSBlbHNlIGlmIChicGIuYmticyAhPSBNQVhVMTYgJiYgYnBiLmJr
YnMgPT0gYnBiLmluZnMpCisJICAgIGJwYi5icGJCYWNrdXAgPSB4OworCX0g
ZWxzZSBpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYgJiYgYnBiLmJwYkJh
Y2t1cCA9PSBicGIuYnBiRlNJbmZvKQogCSAgICBlcnJ4KDEsICJiYWNrdXAg
c2VjdG9yIHdvdWxkIG92ZXJ3cml0ZSBpbmZvIHNlY3RvciIpOwotCWlmIChi
cGIuYmticyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYmticykKLQkgICAgeCA9
IGJwYi5ia2JzICsgMTsKKwlpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYg
JiYgeCA8PSBicGIuYnBiQmFja3VwKQorCSAgICB4ID0gYnBiLmJwYkJhY2t1
cCArIDE7CiAgICAgfQotICAgIGlmICghYnBiLnJlcykKLQlicGIucmVzID0g
ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icHMsIDQpKSA6
IHg7Ci0gICAgZWxzZSBpZiAoYnBiLnJlcyA8IHgpCi0JZXJyeCgxLCAidG9v
IGZldyByZXNlcnZlZCBzZWN0b3JzIik7Ci0gICAgaWYgKGZhdCAhPSAzMiAm
JiAhYnBiLnJkZSkKLQlicGIucmRlID0gREVGUkRFOwotICAgIHJkcyA9IGhv
d21hbnkoYnBiLnJkZSwgYnBiLmJwcyAvIHNpemVvZihzdHJ1Y3QgZGUpKTsK
LSAgICBpZiAoIWJwYi5zcGMpCi0JZm9yIChicGIuc3BjID0gaG93bWFueShm
YXQgPT0gMTYgPyBERUZCTEsxNiA6IERFRkJMSywgYnBiLmJwcyk7Ci0JICAg
ICBicGIuc3BjIDwgTUFYU1BDICYmCi0JICAgICBicGIucmVzICsKKyAgICBp
ZiAoIWJwYi5icGJSZXNTZWN0b3JzKQorCWJwYi5icGJSZXNTZWN0b3JzID0g
ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icGJCeXRlc1Bl
clNlYywgNCkpIDogeDsKKyAgICBlbHNlIGlmIChicGIuYnBiUmVzU2VjdG9y
cyA8IHgpCisJZXJyeCgxLCAidG9vIGZldyByZXNlcnZlZCBzZWN0b3JzIChu
ZWVkICVkIGhhdmUgJWQpIiwgeCwgYnBiLmJwYlJlc1NlY3RvcnMpOworICAg
IGlmIChmYXQgIT0gMzIgJiYgIWJwYi5icGJSb290RGlyRW50cykKKwlicGIu
YnBiUm9vdERpckVudHMgPSBERUZSREU7CisgICAgcmRzID0gaG93bWFueShi
cGIuYnBiUm9vdERpckVudHMsIGJwYi5icGJCeXRlc1BlclNlYyAvIHNpemVv
ZihzdHJ1Y3QgZGUpKTsKKyAgICBpZiAoIWJwYi5icGJTZWNQZXJDbHVzdCkK
Kwlmb3IgKGJwYi5icGJTZWNQZXJDbHVzdCA9IGhvd21hbnkoZmF0ID09IDE2
ID8gREVGQkxLMTYgOiBERUZCTEssIGJwYi5icGJCeXRlc1BlclNlYyk7CisJ
ICAgICBicGIuYnBiU2VjUGVyQ2x1c3QgPCBNQVhTUEMgJiYKKwkgICAgIGJw
Yi5icGJSZXNTZWN0b3JzICsKIAkgICAgIGhvd21hbnkoKFJFU0ZURSArIG1h
eGNscyhmYXQpKSAqIChmYXQgLyBCUE4pLAotCQkgICAgIGJwYi5icHMgKiBO
UEIpICogYnBiLm5mdCArCisJCSAgICAgYnBiLmJwYkJ5dGVzUGVyU2VjICog
TlBCKSAqIGJwYi5icGJGQVRzICsKIAkgICAgIHJkcyArCi0JICAgICAodV9p
bnQ2NF90KShtYXhjbHMoZmF0KSArIDEpICogYnBiLnNwYyA8PSBicGIuYnNl
YzsKLQkgICAgIGJwYi5zcGMgPDw9IDEpOwotICAgIGlmIChmYXQgIT0gMzIg
JiYgYnBiLmJzcGYgPiBNQVhVMTYpCisJICAgICAodV9pbnQ2NF90KShtYXhj
bHMoZmF0KSArIDEpICogYnBiLmJwYlNlY1BlckNsdXN0IDw9IGJwYi5icGJI
dWdlU2VjdG9yczsKKwkgICAgIGJwYi5icGJTZWNQZXJDbHVzdCA8PD0gMSk7
CisgICAgaWYgKGZhdCAhPSAzMiAmJiBicGIuYnBiQmlnRkFUc2VjcyA+IE1B
WFUxNikKIAllcnJ4KDEsICJ0b28gbWFueSBzZWN0b3JzL0ZBVCBmb3IgRkFU
MTIvMTYiKTsKLSAgICB4MSA9IGJwYi5yZXMgKyByZHM7Ci0gICAgeCA9IGJw
Yi5ic3BmID8gYnBiLmJzcGYgOiAxOwotICAgIGlmICh4MSArICh1X2ludDY0
X3QpeCAqIGJwYi5uZnQgPiBicGIuYnNlYykKKyAgICB4MSA9IGJwYi5icGJS
ZXNTZWN0b3JzICsgcmRzOworICAgIHggPSBicGIuYnBiQmlnRkFUc2VjcyA/
IGJwYi5icGJCaWdGQVRzZWNzIDogMTsKKyAgICBpZiAoeDEgKyAodV9pbnQ2
NF90KXggKiBicGIuYnBiRkFUcyA+IGJwYi5icGJIdWdlU2VjdG9ycykKIAll
cnJ4KDEsICJtZXRhIGRhdGEgZXhjZWVkcyBmaWxlIHN5c3RlbSBzaXplIik7
Ci0gICAgeDEgKz0geCAqIGJwYi5uZnQ7Ci0gICAgeCA9ICh1X2ludDY0X3Qp
KGJwYi5ic2VjIC0geDEpICogYnBiLmJwcyAqIE5QQiAvCi0JKGJwYi5zcGMg
KiBicGIuYnBzICogTlBCICsgZmF0IC8gQlBOICogYnBiLm5mdCk7CisgICAg
eDEgKz0geCAqIGJwYi5icGJGQVRzOworICAgIHggPSAodV9pbnQ2NF90KShi
cGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgKiBicGIuYnBiQnl0ZXNQZXJTZWMg
KiBOUEIgLworCShicGIuYnBiU2VjUGVyQ2x1c3QgKiBicGIuYnBiQnl0ZXNQ
ZXJTZWMgKiBOUEIgKyBmYXQgLyBCUE4gKiBicGIuYnBiRkFUcyk7CiAgICAg
eDIgPSBob3dtYW55KChSRVNGVEUgKyBNSU4oeCwgbWF4Y2xzKGZhdCkpKSAq
IChmYXQgLyBCUE4pLAotCQkgYnBiLmJwcyAqIE5QQik7Ci0gICAgaWYgKCFi
cGIuYnNwZikgewotCWJwYi5ic3BmID0geDI7Ci0JeDEgKz0gKGJwYi5ic3Bm
IC0gMSkgKiBicGIubmZ0OworCQkgYnBiLmJwYkJ5dGVzUGVyU2VjICogTlBC
KTsKKyAgICBpZiAoIWJwYi5icGJCaWdGQVRzZWNzKSB7CisJYnBiLmJwYkJp
Z0ZBVHNlY3MgPSB4MjsKKwl4MSArPSAoYnBiLmJwYkJpZ0ZBVHNlY3MgLSAx
KSAqIGJwYi5icGJGQVRzOwogICAgIH0KLSAgICBjbHMgPSAoYnBiLmJzZWMg
LSB4MSkgLyBicGIuc3BjOwotICAgIHggPSAodV9pbnQ2NF90KWJwYi5ic3Bm
ICogYnBiLmJwcyAqIE5QQiAvIChmYXQgLyBCUE4pIC0gUkVTRlRFOworICAg
IGNscyA9IChicGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgLyBicGIuYnBiU2Vj
UGVyQ2x1c3Q7CisgICAgeCA9ICh1X2ludDY0X3QpYnBiLmJwYkJpZ0ZBVHNl
Y3MgKiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBOUEIgLyAoZmF0IC8gQlBOKSAt
IFJFU0ZURTsKICAgICBpZiAoY2xzID4geCkKIAljbHMgPSB4OwotICAgIGlm
IChicGIuYnNwZiA8IHgyKQorICAgIGlmIChicGIuYnBiQmlnRkFUc2VjcyA8
IHgyKQogCXdhcm54KCJ3YXJuaW5nOiBzZWN0b3JzL0ZBVCBsaW1pdHMgZmls
ZSBzeXN0ZW0gdG8gJXUgY2x1c3RlcnMiLAogCSAgICAgIGNscyk7CiAgICAg
aWYgKGNscyA8IG1pbmNscyhmYXQpKQpAQCAtNTczLDc5ICs1ODAsNzkgQEAK
IAkgICAgbWluY2xzKGZhdCkpOwogICAgIGlmIChjbHMgPiBtYXhjbHMoZmF0
KSkgewogCWNscyA9IG1heGNscyhmYXQpOwotCWJwYi5ic2VjID0geDEgKyAo
Y2xzICsgMSkgKiBicGIuc3BjIC0gMTsKKwlicGIuYnBiSHVnZVNlY3RvcnMg
PSB4MSArIChjbHMgKyAxKSAqIGJwYi5icGJTZWNQZXJDbHVzdCAtIDE7CiAJ
d2FybngoIndhcm5pbmc6IEZBVCB0eXBlIGxpbWl0cyBmaWxlIHN5c3RlbSB0
byAldSBzZWN0b3JzIiwKLQkgICAgICBicGIuYnNlYyk7CisJICAgICAgYnBi
LmJwYkh1Z2VTZWN0b3JzKTsKICAgICB9CiAgICAgcHJpbnRmKCIlczogJXUg
c2VjdG9yJXMgaW4gJXUgRkFUJXUgY2x1c3RlciVzICIKLQkgICAiKCV1IGJ5
dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xzICogYnBiLnNwYywKLQkgICBj
bHMgKiBicGIuc3BjID09IDEgPyAiIiA6ICJzIiwgY2xzLCBmYXQsCi0JICAg
Y2xzID09IDEgPyAiIiA6ICJzIiwgYnBiLmJwcyAqIGJwYi5zcGMpOwotICAg
IGlmICghYnBiLm1pZCkKLQlicGIubWlkID0gIWJwYi5oaWQgPyAweGYwIDog
MHhmODsKKwkgICAiKCV1IGJ5dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xz
ICogYnBiLmJwYlNlY1BlckNsdXN0LAorCSAgIGNscyAqIGJwYi5icGJTZWNQ
ZXJDbHVzdCA9PSAxID8gIiIgOiAicyIsIGNscywgZmF0LAorCSAgIGNscyA9
PSAxID8gIiIgOiAicyIsIGJwYi5icGJCeXRlc1BlclNlYyAqIGJwYi5icGJT
ZWNQZXJDbHVzdCk7CisgICAgaWYgKCFicGIuYnBiTWVkaWEpCisJYnBiLmJw
Yk1lZGlhID0gIWJwYi5icGJIaWRkZW5TZWNzID8gMHhmMCA6IDB4Zjg7CiAg
ICAgaWYgKGZhdCA9PSAzMikKLQlicGIucmRjbCA9IFJFU0ZURTsKLSAgICBp
ZiAoYnBiLmhpZCArIGJwYi5ic2VjIDw9IE1BWFUxNikgewotCWJwYi5zZWMg
PSBicGIuYnNlYzsKLQlicGIuYnNlYyA9IDA7CisJYnBiLmJwYlJvb3RDbHVz
dCA9IFJFU0ZURTsKKyAgICBpZiAoYnBiLmJwYkhpZGRlblNlY3MgKyBicGIu
YnBiSHVnZVNlY3RvcnMgPD0gTUFYVTE2KSB7CisJYnBiLmJwYlNlY3RvcnMg
PSBicGIuYnBiSHVnZVNlY3RvcnM7CisJYnBiLmJwYkh1Z2VTZWN0b3JzID0g
MDsKICAgICB9CiAgICAgaWYgKGZhdCAhPSAzMikgewotCWJwYi5zcGYgPSBi
cGIuYnNwZjsKLQlicGIuYnNwZiA9IDA7CisJYnBiLmJwYkZBVHNlY3MgPSBi
cGIuYnBiQmlnRkFUc2VjczsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IDA7CiAg
ICAgfQogICAgIHByaW50X2JwYigmYnBiKTsKICAgICBpZiAoIW9wdF9OKSB7
CiAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CiAJbm93ID0gdHYudHZfc2Vj
OwogCXRtID0gbG9jYWx0aW1lKCZub3cpOwotCWlmICghKGltZyA9IG1hbGxv
YyhicGIuYnBzKSkpCisJaWYgKCEoaW1nID0gbWFsbG9jKGJwYi5icGJCeXRl
c1BlclNlYykpKQogCSAgICBlcnIoMSwgTlVMTCk7Ci0JZGlyID0gYnBiLnJl
cyArIChicGIuc3BmID8gYnBiLnNwZiA6IGJwYi5ic3BmKSAqIGJwYi5uZnQ7
Ci0JZm9yIChsc24gPSAwOyBsc24gPCBkaXIgKyAoZmF0ID09IDMyID8gYnBi
LnNwYyA6IHJkcyk7IGxzbisrKSB7CisJZGlyID0gYnBiLmJwYlJlc1NlY3Rv
cnMgKyAoYnBiLmJwYkZBVHNlY3MgPyBicGIuYnBiRkFUc2VjcyA6IGJwYi5i
cGJCaWdGQVRzZWNzKSAqIGJwYi5icGJGQVRzOworCWZvciAobHNuID0gMDsg
bHNuIDwgZGlyICsgKGZhdCA9PSAzMiA/IGJwYi5icGJTZWNQZXJDbHVzdCA6
IHJkcyk7IGxzbisrKSB7CiAJICAgIHggPSBsc247CiAJICAgIGlmIChvcHRf
QiAmJgotCQlmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYmCi0J
CWJzcyA8PSBicGIuYmticyAmJiB4ID49IGJwYi5ia2JzKSB7Ci0JCXggLT0g
YnBiLmJrYnM7CisJCWZhdCA9PSAzMiAmJiBicGIuYnBiQmFja3VwICE9IE1B
WFUxNiAmJgorCQlic3MgPD0gYnBiLmJwYkJhY2t1cCAmJiB4ID49IGJwYi5i
cGJCYWNrdXApIHsKKwkJeCAtPSBicGIuYnBiQmFja3VwOwogCQlpZiAoIXgg
JiYgbHNlZWsoZmQxLCBvcHRfb2ZzLCBTRUVLX1NFVCkpCiAJCSAgICBlcnIo
MSwgIiVzIiwgYm5hbWUpOwogCSAgICB9CiAJICAgIGlmIChvcHRfQiAmJiB4
IDwgYnNzKSB7Ci0JCWlmICgobiA9IHJlYWQoZmQxLCBpbWcsIGJwYi5icHMp
KSA9PSAtMSkKKwkJaWYgKChuID0gcmVhZChmZDEsIGltZywgYnBiLmJwYkJ5
dGVzUGVyU2VjKSkgPT0gLTEpCiAJCSAgICBlcnIoMSwgIiVzIiwgYm5hbWUp
OwotCQlpZiAoKHVuc2lnbmVkKW4gIT0gYnBiLmJwcykKKwkJaWYgKCh1bnNp
Z25lZCluICE9IGJwYi5icGJCeXRlc1BlclNlYykKIAkJICAgIGVycngoMSwg
IiVzOiBjYW4ndCByZWFkIHNlY3RvciAldSIsIGJuYW1lLCB4KTsKIAkgICAg
fSBlbHNlCi0JCW1lbXNldChpbWcsIDAsIGJwYi5icHMpOworCQltZW1zZXQo
aW1nLCAwLCBicGIuYnBiQnl0ZXNQZXJTZWMpOwogCSAgICBpZiAoIWxzbiB8
fAotCSAgICAgIChmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYm
IGxzbiA9PSBicGIuYmticykpIHsKKwkgICAgICAoZmF0ID09IDMyICYmIGJw
Yi5icGJCYWNrdXAgIT0gTUFYVTE2ICYmIGxzbiA9PSBicGIuYnBiQmFja3Vw
KSkgewogCQl4MSA9IHNpemVvZihzdHJ1Y3QgYnMpOwogCQlic2JwYiA9IChz
dHJ1Y3QgYnNicGIgKikoaW1nICsgeDEpOwotCQltazIoYnNicGItPmJwcywg
YnBiLmJwcyk7Ci0JCW1rMShic2JwYi0+c3BjLCBicGIuc3BjKTsKLQkJbWsy
KGJzYnBiLT5yZXMsIGJwYi5yZXMpOwotCQltazEoYnNicGItPm5mdCwgYnBi
Lm5mdCk7Ci0JCW1rMihic2JwYi0+cmRlLCBicGIucmRlKTsKLQkJbWsyKGJz
YnBiLT5zZWMsIGJwYi5zZWMpOwotCQltazEoYnNicGItPm1pZCwgYnBiLm1p
ZCk7Ci0JCW1rMihic2JwYi0+c3BmLCBicGIuc3BmKTsKLQkJbWsyKGJzYnBi
LT5zcHQsIGJwYi5zcHQpOwotCQltazIoYnNicGItPmhkcywgYnBiLmhkcyk7
Ci0JCW1rNChic2JwYi0+aGlkLCBicGIuaGlkKTsKLQkJbWs0KGJzYnBiLT5i
c2VjLCBicGIuYnNlYyk7CisJCW1rMihic2JwYi0+YnBiQnl0ZXNQZXJTZWMs
IGJwYi5icGJCeXRlc1BlclNlYyk7CisJCW1rMShic2JwYi0+YnBiU2VjUGVy
Q2x1c3QsIGJwYi5icGJTZWNQZXJDbHVzdCk7CisJCW1rMihic2JwYi0+YnBi
UmVzU2VjdG9ycywgYnBiLmJwYlJlc1NlY3RvcnMpOworCQltazEoYnNicGIt
PmJwYkZBVHMsIGJwYi5icGJGQVRzKTsKKwkJbWsyKGJzYnBiLT5icGJSb290
RGlyRW50cywgYnBiLmJwYlJvb3REaXJFbnRzKTsKKwkJbWsyKGJzYnBiLT5i
cGJTZWN0b3JzLCBicGIuYnBiU2VjdG9ycyk7CisJCW1rMShic2JwYi0+YnBi
TWVkaWEsIGJwYi5icGJNZWRpYSk7CisJCW1rMihic2JwYi0+YnBiRkFUc2Vj
cywgYnBiLmJwYkZBVHNlY3MpOworCQltazIoYnNicGItPmJwYlNlY1BlclRy
YWNrLCBicGIuYnBiU2VjUGVyVHJhY2spOworCQltazIoYnNicGItPmJwYkhl
YWRzLCBicGIuYnBiSGVhZHMpOworCQltazQoYnNicGItPmJwYkhpZGRlblNl
Y3MsIGJwYi5icGJIaWRkZW5TZWNzKTsKKwkJbWs0KGJzYnBiLT5icGJIdWdl
U2VjdG9ycywgYnBiLmJwYkh1Z2VTZWN0b3JzKTsKIAkJeDEgKz0gc2l6ZW9m
KHN0cnVjdCBic2JwYik7CiAJCWlmIChmYXQgPT0gMzIpIHsKIAkJICAgIGJz
eGJwYiA9IChzdHJ1Y3QgYnN4YnBiICopKGltZyArIHgxKTsKLQkJICAgIG1r
NChic3hicGItPmJzcGYsIGJwYi5ic3BmKTsKKwkJICAgIG1rNChic3hicGIt
PmJzcGYsIGJwYi5icGJCaWdGQVRzZWNzKTsKIAkJICAgIG1rMihic3hicGIt
PnhmbGcsIDApOwogCQkgICAgbWsyKGJzeGJwYi0+dmVycywgMCk7Ci0JCSAg
ICBtazQoYnN4YnBiLT5yZGNsLCBicGIucmRjbCk7Ci0JCSAgICBtazIoYnN4
YnBiLT5pbmZzLCBicGIuaW5mcyk7Ci0JCSAgICBtazIoYnN4YnBiLT5ia2Jz
LCBicGIuYmticyk7CisJCSAgICBtazQoYnN4YnBiLT5yZGNsLCBicGIuYnBi
Um9vdENsdXN0KTsKKwkJICAgIG1rMihic3hicGItPmluZnMsIGJwYi5icGJG
U0luZm8pOworCQkgICAgbWsyKGJzeGJwYi0+YmticywgYnBiLmJwYkJhY2t1
cCk7CiAJCSAgICB4MSArPSBzaXplb2Yoc3RydWN0IGJzeGJwYik7CiAJCX0K
IAkJYnN4ID0gKHN0cnVjdCBic3ggKikoaW1nICsgeDEpOwotCQltazEoYnN4
LT5zaWcsIDB4MjkpOworCQltazEoYnN4LT5leEJvb3RTaWduYXR1cmUsIDB4
MjkpOwogCQlpZiAoSWZsYWcpCiAJCSAgICB4ID0gb3B0X0k7CiAJCWVsc2UK
QEAgLTY1NiwzNCArNjYzLDM0IEBACiAJCQkoKHVfaW50KSgxOTAwICsgdG0t
PnRtX3llYXIpICsKIAkJCSAoKHVfaW50KXRtLT50bV9ob3VyIDw8IDggfAog
CQkJICAodV9pbnQpdG0tPnRtX21pbikpOwotCQltazQoYnN4LT52b2xpZCwg
eCk7Ci0JCW1rbGFiZWwoYnN4LT5sYWJlbCwgb3B0X0wgPyBvcHRfTCA6ICJO
TyBOQU1FIik7Ci0JCXNwcmludGYoYnVmLCAiRkFUJXUiLCBmYXQpOwotCQlz
ZXRzdHIoYnN4LT50eXBlLCBidWYsIHNpemVvZihic3gtPnR5cGUpKTsKKwkJ
bWs0KGJzeC0+ZXhWb2x1bWVJRCwgeCk7CisJCW1rbGFiZWwoYnN4LT5leFZv
bHVtZUxhYmVsLCBvcHRfTCA/IG9wdF9MIDogIk5PX05BTUUiKTsKKwkJc25w
cmludGYoYnVmLCBzaXplb2YoYnVmKSwgIkZBVCV1IiwgZmF0KTsKKwkJc2V0
c3RyKGJzeC0+ZXhGaWxlU3lzVHlwZSwgYnVmLCBzaXplb2YoYnN4LT5leEZp
bGVTeXNUeXBlKSk7CiAJCWlmICghb3B0X0IpIHsKIAkJICAgIHgxICs9IHNp
emVvZihzdHJ1Y3QgYnN4KTsKIAkJICAgIGJzID0gKHN0cnVjdCBicyAqKWlt
ZzsKLQkJICAgIG1rMShicy0+am1wWzBdLCAweGViKTsKLQkJICAgIG1rMShi
cy0+am1wWzFdLCB4MSAtIDIpOwotCQkgICAgbWsxKGJzLT5qbXBbMl0sIDB4
OTApOwotCQkgICAgc2V0c3RyKGJzLT5vZW0sIG9wdF9PID8gb3B0X08gOiAi
QlNEICA0LjQiLAotCQkJICAgc2l6ZW9mKGJzLT5vZW0pKTsKKwkJICAgIG1r
MShicy0+YnNKdW1wWzBdLCAweGViKTsKKwkJICAgIG1rMShicy0+YnNKdW1w
WzFdLCB4MSAtIDIpOworCQkgICAgbWsxKGJzLT5ic0p1bXBbMl0sIDB4OTAp
OworCQkgICAgc2V0c3RyKGJzLT5ic09lbU5hbWUsIG9wdF9PID8gb3B0X08g
OiAiQlNENC40ICAiLAorCQkJICAgc2l6ZW9mKGJzLT5ic09lbU5hbWUpKTsK
IAkJICAgIG1lbWNweShpbWcgKyB4MSwgYm9vdGNvZGUsIHNpemVvZihib290
Y29kZSkpOwogCQkgICAgbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01BR0lD
KTsKIAkJfQotCSAgICB9IGVsc2UgaWYgKGZhdCA9PSAzMiAmJiBicGIuaW5m
cyAhPSBNQVhVMTYgJiYKLQkJICAgICAgIChsc24gPT0gYnBiLmluZnMgfHwK
LQkJCShicGIuYmticyAhPSBNQVhVMTYgJiYKLQkJCSBsc24gPT0gYnBiLmJr
YnMgKyBicGIuaW5mcykpKSB7CisJICAgIH0gZWxzZSBpZiAoZmF0ID09IDMy
ICYmIGJwYi5icGJGU0luZm8gIT0gTUFYVTE2ICYmCisJCSAgICAgICAobHNu
ID09IGJwYi5icGJGU0luZm8gfHwKKwkJCShicGIuYnBiQmFja3VwICE9IE1B
WFUxNiAmJgorCQkJIGxzbiA9PSBicGIuYnBiQmFja3VwICsgYnBiLmJwYkZT
SW5mbykpKSB7CiAJCW1rNChpbWcsIDB4NDE2MTUyNTIpOwogCQltazQoaW1n
ICsgTUlOQlBTIC0gMjgsIDB4NjE0MTcyNzIpOwogCQltazQoaW1nICsgTUlO
QlBTIC0gMjQsIDB4ZmZmZmZmZmYpOwotCQltazQoaW1nICsgTUlOQlBTIC0g
MjAsIGJwYi5yZGNsKTsKKwkJbWs0KGltZyArIE1JTkJQUyAtIDIwLCBicGIu
YnBiUm9vdENsdXN0KTsKIAkJbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01B
R0lDKTsKLQkgICAgfSBlbHNlIGlmIChsc24gPj0gYnBiLnJlcyAmJiBsc24g
PCBkaXIgJiYKLQkJICAgICAgICEoKGxzbiAtIGJwYi5yZXMpICUKLQkJCSAo
YnBiLnNwZiA/IGJwYi5zcGYgOiBicGIuYnNwZikpKSB7Ci0JCW1rMShpbWdb
MF0sIGJwYi5taWQpOworCSAgICB9IGVsc2UgaWYgKGxzbiA+PSBicGIuYnBi
UmVzU2VjdG9ycyAmJiBsc24gPCBkaXIgJiYKKwkJICAgICAgICEoKGxzbiAt
IGJwYi5icGJSZXNTZWN0b3JzKSAlCisJCQkgKGJwYi5icGJGQVRzZWNzID8g
YnBiLmJwYkZBVHNlY3MgOiBicGIuYnBiQmlnRkFUc2VjcykpKSB7CisJCW1r
MShpbWdbMF0sIGJwYi5icGJNZWRpYSk7CiAJCWZvciAoeCA9IDE7IHggPCBm
YXQgKiAoZmF0ID09IDMyID8gMyA6IDIpIC8gODsgeCsrKQogCQkgICAgbWsx
KGltZ1t4XSwgZmF0ID09IDMyICYmIHggJSA0ID09IDMgPyAweDBmIDogMHhm
Zik7CiAJICAgIH0gZWxzZSBpZiAobHNuID09IGRpciAmJiBvcHRfTCkgewpA
QCAtNjk5LDkgKzcwNiw5IEBACiAJCSAgICAodV9pbnQpdG0tPnRtX21kYXk7
CiAJCW1rMihkZS0+ZGF0ZSwgeCk7CiAJICAgIH0KLQkgICAgaWYgKChuID0g
d3JpdGUoZmQsIGltZywgYnBiLmJwcykpID09IC0xKQorCSAgICBpZiAoKG4g
PSB3cml0ZShmZCwgaW1nLCBicGIuYnBiQnl0ZXNQZXJTZWMpKSA9PSAtMSkK
IAkJZXJyKDEsICIlcyIsIGZuYW1lKTsKLQkgICAgaWYgKCh1bnNpZ25lZClu
ICE9IGJwYi5icHMpCisJICAgIGlmICgodW5zaWduZWQpbiAhPSBicGIuYnBi
Qnl0ZXNQZXJTZWMpCiAJCWVycngoMSwgIiVzOiBjYW4ndCB3cml0ZSBzZWN0
b3IgJXUiLCBmbmFtZSwgbHNuKTsKIAl9CiAgICAgfQpAQCAtNzk0LDE4ICs4
MDEsMTkgQEAKIAogICAgIC8qIE1heWJlIGl0J3MgYSBmaXhlZCBkcml2ZSAq
LwogICAgIGlmIChscCA9PSBOVUxMKSB7CisJaWYgKGJwYi0+YnBiQnl0ZXNQ
ZXJTZWMpCisJICAgIGRscC5kX3NlY3NpemUgPSBicGItPmJwYkJ5dGVzUGVy
U2VjOwogCWlmIChpb2N0bChmZCwgRElPQ0dESU5GTywgJmRscCkgPT0gLTEp
IHsKLQkgICAgaWYgKGJwYi0+YnBzID09IDAgJiYgaW9jdGwoZmQsIERJT0NH
U0VDVE9SU0laRSwgJmRscC5kX3NlY3NpemUpID09IC0xKQorCSAgICBpZiAo
YnBiLT5icGJCeXRlc1BlclNlYyA9PSAwICYmIGlvY3RsKGZkLCBESU9DR1NF
Q1RPUlNJWkUsICZkbHAuZF9zZWNzaXplKSA9PSAtMSkKIAkJZXJyeCgxLCAi
Q2Fubm90IGdldCBzZWN0b3Igc2l6ZSwgJXMiLCBzdHJlcnJvcihlcnJubykp
OwogCi0JICAgIC8qIFhYWCBTaG91bGQgd2UgdXNlIGJwYi0+YnBzIGlmIGl0
J3Mgc2V0PyAqLwogCSAgICBkbHAuZF9zZWNwZXJ1bml0ID0gbXMgLyBkbHAu
ZF9zZWNzaXplOwogCi0JICAgIGlmIChicGItPnNwdCA9PSAwICYmIGlvY3Rs
KGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9PSAtMSkg
eworCSAgICBpZiAoYnBiLT5icGJTZWNQZXJUcmFjayA9PSAwICYmIGlvY3Rs
KGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9PSAtMSkg
ewogCQl3YXJueCgiQ2Fubm90IGdldCBudW1iZXIgb2Ygc2VjdG9ycyBwZXIg
dHJhY2ssICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAkJZGxwLmRfbnNlY3Rv
cnMgPSA2MzsKIAkgICAgfQotCSAgICBpZiAoYnBiLT5oZHMgPT0gMCAmJiBp
b2N0bChmZCwgRElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykgPT0gLTEp
IHsKKwkgICAgaWYgKGJwYi0+YnBiSGVhZHMgPT0gMCAmJiBpb2N0bChmZCwg
RElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykgPT0gLTEpIHsKIAkJd2Fy
bngoIkNhbm5vdCBnZXQgbnVtYmVyIG9mIGhlYWRzLCAlcyIsIHN0cmVycm9y
KGVycm5vKSk7CiAJCWlmIChkbHAuZF9zZWNwZXJ1bml0IDw9IDYzKjEqMTAy
NCkKIAkJICAgIGRscC5kX250cmFja3MgPSAxOwpAQCAtODIwLDE2ICs4Mjgs
MTYgQEAKIAlscCA9ICZkbHA7CiAgICAgfQogCi0gICAgaWYgKGJwYi0+YnBz
ID09IDApCi0JYnBiLT5icHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX3NlY3Np
emUsICJieXRlcy9zZWN0b3IiKTsKLSAgICBpZiAoYnBiLT5zcHQgPT0gMCkK
LQlicGItPnNwdCA9IGNrZ2VvbShmbmFtZSwgbHAtPmRfbnNlY3RvcnMsICJz
ZWN0b3JzL3RyYWNrIik7Ci0gICAgaWYgKGJwYi0+aGRzID09IDApCi0JYnBi
LT5oZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJkcml2ZSBo
ZWFkcyIpOwotICAgIGlmIChicGItPmJzZWMgPT0gMCkKLQlicGItPmJzZWMg
PSBscC0+ZF9zZWNwZXJ1bml0OwotICAgIGlmIChicGItPmhpZCA9PSAwKQot
CWJwYi0+aGlkID0gaHM7CisgICAgaWYgKGJwYi0+YnBiQnl0ZXNQZXJTZWMg
PT0gMCkKKwlicGItPmJwYkJ5dGVzUGVyU2VjID0gY2tnZW9tKGZuYW1lLCBs
cC0+ZF9zZWNzaXplLCAiYnl0ZXMvc2VjdG9yIik7CisgICAgaWYgKGJwYi0+
YnBiU2VjUGVyVHJhY2sgPT0gMCkKKwlicGItPmJwYlNlY1BlclRyYWNrID0g
Y2tnZW9tKGZuYW1lLCBscC0+ZF9uc2VjdG9ycywgInNlY3RvcnMvdHJhY2si
KTsKKyAgICBpZiAoYnBiLT5icGJIZWFkcyA9PSAwKQorCWJwYi0+YnBiSGVh
ZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJkcml2ZSBoZWFk
cyIpOworICAgIGlmIChicGItPmJwYkh1Z2VTZWN0b3JzID09IDApCisJYnBi
LT5icGJIdWdlU2VjdG9ycyA9IGxwLT5kX3NlY3BlcnVuaXQ7CisgICAgaWYg
KGJwYi0+YnBiSGlkZGVuU2VjcyA9PSAwKQorCWJwYi0+YnBiSGlkZGVuU2Vj
cyA9IGhzOwogfQogCiAvKgpAQCAtODM4LDI0ICs4NDYsMjQgQEAKIHN0YXRp
YyB2b2lkCiBwcmludF9icGIoc3RydWN0IGJwYiAqYnBiKQogewotICAgIHBy
aW50ZigiYnBzPSV1IHNwYz0ldSByZXM9JXUgbmZ0PSV1IiwgYnBiLT5icHMs
IGJwYi0+c3BjLCBicGItPnJlcywKLQkgICBicGItPm5mdCk7Ci0gICAgaWYg
KGJwYi0+cmRlKQotCXByaW50ZigiIHJkZT0ldSIsIGJwYi0+cmRlKTsKLSAg
ICBpZiAoYnBiLT5zZWMpCi0JcHJpbnRmKCIgc2VjPSV1IiwgYnBiLT5zZWMp
OwotICAgIHByaW50ZigiIG1pZD0lI3giLCBicGItPm1pZCk7Ci0gICAgaWYg
KGJwYi0+c3BmKQotCXByaW50ZigiIHNwZj0ldSIsIGJwYi0+c3BmKTsKLSAg
ICBwcmludGYoIiBzcHQ9JXUgaGRzPSV1IGhpZD0ldSIsIGJwYi0+c3B0LCBi
cGItPmhkcywgYnBiLT5oaWQpOwotICAgIGlmIChicGItPmJzZWMpCi0JcHJp
bnRmKCIgYnNlYz0ldSIsIGJwYi0+YnNlYyk7Ci0gICAgaWYgKCFicGItPnNw
ZikgewotCXByaW50ZigiIGJzcGY9JXUgcmRjbD0ldSIsIGJwYi0+YnNwZiwg
YnBiLT5yZGNsKTsKLQlwcmludGYoIiBpbmZzPSIpOwotCXByaW50ZihicGIt
PmluZnMgPT0gTUFYVTE2ID8gIiUjeCIgOiAiJXUiLCBicGItPmluZnMpOwot
CXByaW50ZigiIGJrYnM9Iik7Ci0JcHJpbnRmKGJwYi0+YmticyA9PSBNQVhV
MTYgPyAiJSN4IiA6ICIldSIsIGJwYi0+Ymticyk7CisgICAgcHJpbnRmKCJC
eXRlc1BlclNlYz0ldSBTZWNQZXJDbHVzdD0ldSBSZXNTZWN0b3JzPSV1IEZB
VHM9JXUiLCBicGItPmJwYkJ5dGVzUGVyU2VjLCBicGItPmJwYlNlY1BlckNs
dXN0LCBicGItPmJwYlJlc1NlY3RvcnMsCisJICAgYnBiLT5icGJGQVRzKTsK
KyAgICBpZiAoYnBiLT5icGJSb290RGlyRW50cykKKwlwcmludGYoIiBSb290
RGlyRW50cz0ldSIsIGJwYi0+YnBiUm9vdERpckVudHMpOworICAgIGlmIChi
cGItPmJwYlNlY3RvcnMpCisJcHJpbnRmKCIgU2VjdG9ycz0ldSIsIGJwYi0+
YnBiU2VjdG9ycyk7CisgICAgcHJpbnRmKCIgTWVkaWE9JSN4IiwgYnBiLT5i
cGJNZWRpYSk7CisgICAgaWYgKGJwYi0+YnBiRkFUc2VjcykKKwlwcmludGYo
IiBGQVRzZWNzPSV1IiwgYnBiLT5icGJGQVRzZWNzKTsKKyAgICBwcmludGYo
IiBTZWNQZXJUcmFjaz0ldSBIZWFkcz0ldSBIaWRkZW5TZWNzPSV1IiwgYnBi
LT5icGJTZWNQZXJUcmFjaywgYnBiLT5icGJIZWFkcywgYnBiLT5icGJIaWRk
ZW5TZWNzKTsKKyAgICBpZiAoYnBiLT5icGJIdWdlU2VjdG9ycykKKwlwcmlu
dGYoIiBIdWdlU2VjdG9ycz0ldSIsIGJwYi0+YnBiSHVnZVNlY3RvcnMpOwor
ICAgIGlmICghYnBiLT5icGJGQVRzZWNzKSB7CisJcHJpbnRmKCIgRkFUc2Vj
cz0ldSBSb290Q2x1c3Rlcj0ldSIsIGJwYi0+YnBiQmlnRkFUc2VjcywgYnBi
LT5icGJSb290Q2x1c3QpOworCXByaW50ZigiIEZTSW5mbz0iKTsKKwlwcmlu
dGYoYnBiLT5icGJGU0luZm8gPT0gTUFYVTE2ID8gIiUjeCIgOiAiJXUiLCBi
cGItPmJwYkZTSW5mbyk7CisJcHJpbnRmKCIgQmFja3VwPSIpOworCXByaW50
ZihicGItPmJwYkJhY2t1cCA9PSBNQVhVMTYgPyAiJSN4IiA6ICIldSIsIGJw
Yi0+YnBiQmFja3VwKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIpOwogfQo=
--0-550664387-1263505954=:34069--
More information about the freebsd-bugs
mailing list