Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Jun 2005 23:09:11 +0400 (MSD)
From:      "Polakov Alexander" <polachok@narod.ru>
To:        freebsd-current@freebsd.org
Subject:   Re: applying the vesa patch to stable for high console resolution
Message-ID:  <42B47157.000001.26107@camay.yandex.ru>
In-Reply-To: <0II8003FRENI4G60@store.etat.lu>
References:  <0II8003FRENI4G60@store.etat.lu>

next in thread | previous in thread | raw e-mail | index | archive | help

--------------Boundary-00=_BVNA40MWKGMMYJ0CCJD0
Content-Type: text/plain;
  charset="US-ASCII"
Content-Transfer-Encoding: 7bit

>Hi, 
>Sorry but I don't know.
>You should ask the freebsd-current list.
>Regards
>Didier
>
>-----Original Message-----
>From: Remington L [mailto:mrl0lz@gmail.com] 
>Sent: Thursday, June 16, 2005 21:06
>To: Didier Wiroth; freebsd-stable@freebsd.org;
>freebsd-questions@freebsd.org
>Subject: [SPAM-PAL] Re: applying the vesa patch to stable for high
>console resolution

I hacked vidcontrol patch a bit, so it worked for me fine just a few weeks ago. The kernel part doesn't need any modifications.

-- 
  Alexander Polakov


--------------Boundary-00=_BVNA40MWKGMMYJ0CCJD0
Content-Disposition: attachment;
  Filename="vcc.diff.txt"
Content-Type: text/plain;
  name="vcc.diff.txt"
Content-Transfer-Encoding: base64

LS0tIC4vdmlkY29udHJvbC5jLm9yaWcJTW9uIE1heSAgOSAwMDowMjo0MiAyMDA1CisrKyAuL3Zp
ZGNvbnRyb2wuYwlNb24gTWF5ICA5IDAwOjA5OjMxIDIwMDUKQEAgLTI2LDYgKzI2LDcgQEAKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAorCiAjaWZuZGVmIGxpbnQKIHN0YXRpYyBjb25zdCBjaGFyIHJjc2lk
W10gPQogICAiJEZyZWVCU0Q6IHNyYy91c3Iuc2Jpbi92aWRjb250cm9sL3ZpZGNvbnRyb2wuYyx2
IDEuNDcgMjAwMy8wOS8xOCAxNjoyMDozMiBlaXZpbmQgRXhwICQiOwpAQCAtNDksNyArNTAsNyBA
QAogI2RlZmluZSBfVkVTQV84MDB4NjAwX0RGTF9DT0xTIDgwCiAjZGVmaW5lIF9WRVNBXzgwMHg2
MDBfREZMX1JPV1MgMjUKICNkZWZpbmUgX1ZFU0FfODAweDYwMF9ERkxfRk5TWiAxNgotCisjZGVm
aW5lCURBVEFTSVpFKHgpCSgoeCkudyAqICh4KS5oICogMjU2IC8gOCkKIC8qIFNjcmVlbiBkdW1w
IG1vZGVzICovCiAjZGVmaW5lIERVTVBfRk1UX1JBVwkxCiAjZGVmaW5lIERVTVBfRk1UX1RYVAky
CkBAIC02NSwxMyArNjYsMTE5IEBACiAJImdyZXkiLCAibGlnaHRibHVlIiwgImxpZ2h0Z3JlZW4i
LCAibGlnaHRjeWFuIiwKIAkibGlnaHRyZWQiLCAibGlnaHRtYWdlbnRhIiwgInllbGxvdyIsICJs
aWdodHdoaXRlIgogfTsKLWludCAJaGV4ID0gMDsKLWludCAJbnVtYmVyOwotaW50CXZlc2FfY29s
cyA9IF9WRVNBXzgwMHg2MDBfREZMX0NPTFM7Ci1pbnQJdmVzYV9yb3dzID0gX1ZFU0FfODAweDYw
MF9ERkxfUk9XUzsKLWNoYXIgCWxldHRlcjsKLXN0cnVjdCAJdmlkX2luZm8gaW5mbzsKKy8vaW50
IAloZXggPSAwOworLy9pbnQgCW51bWJlcjsKKy8vaW50CXZlc2FfY29scyA9IF9WRVNBXzgwMHg2
MDBfREZMX0NPTFM7CisvL2ludAl2ZXNhX3Jvd3MgPSBfVkVTQV84MDB4NjAwX0RGTF9ST1dTOwor
Ly9jaGFyIAlsZXR0ZXI7CisvL3N0cnVjdCAJdmlkX2luZm8gaW5mbzsKK3N0cnVjdCB7CisJaW50
CQkJYWN0aXZlX3Z0eTsKKwl2aWRfaW5mb190CQljb25zb2xlX2luZm87CisJdW5zaWduZWQgY2hh
cgkJc2NyZWVuX21hcFsyNTZdOworCWludAkJCXZpZGVvX21vZGVfbnVtYmVyOworCXN0cnVjdCB2
aWRlb19pbmZvCXZpZGVvX21vZGVfaW5mbzsKK30gY3VyX2luZm87CisKK2ludAloZXggPSAwOwor
aW50CW51bWJlcjsKK2ludAl2ZXNhX2NvbHM7CitpbnQJdmVzYV9yb3dzOworaW50CWZvbnRfaGVp
Z2h0OworaW50CWNvbG9yc19jaGFuZ2VkOworaW50CXZpZGVvX21vZGVfY2hhbmdlZDsKK2ludAlu
b3JtYWxfZm9yZV9jb2xvciwgbm9ybWFsX2JhY2tfY29sb3I7CitpbnQJcmV2ZXJzX2ZvcmVfY29s
b3IsIHJldmVyc19iYWNrX2NvbG9yOworY2hhcglsZXR0ZXI7CitzdHJ1Y3QJdmlkX2luZm8gaW5m
bzsKK3N0cnVjdAl2aWRlb19pbmZvIG5ld19tb2RlX2luZm87CisKKworLyoKKyAqIEluaXRpYWxp
emUgcmV2ZXJ0IGRhdGEuCisgKgorICogTk9URTogdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFy
ZSBub3QgeWV0IHNhdmVkL3Jlc3RvcmVkOgorICoKKyAqICAgc2NyZWVuIHNhdmVyIHRpbWVvdXQK
KyAqICAgY3Vyc29yIHR5cGUKKyAqICAgbW91c2UgY2hhcmFjdGVyIGFuZCBtb3VzZSBzaG93L2hp
ZGUgc3RhdGUKKyAqICAgdnR5IHN3aXRjaGluZyBvbi9vZmYgc3RhdGUKKyAqICAgaGlzdG9yeSBi
dWZmZXIgc2l6ZQorICogICBoaXN0b3J5IGNvbnRlbnRzCisgKiAgIGZvbnQgbWFwcworICovCisK
K3N0YXRpYyB2b2lkCitpbml0KHZvaWQpCit7CisJaWYgKGlvY3RsKDAsIFZUX0dFVEFDVElWRSwg
JmN1cl9pbmZvLmFjdGl2ZV92dHkpID09IC0xKQorCQllcnJjKDEsIGVycm5vLCAiZ2V0dGluZyBh
Y3RpdmUgdnR5Iik7CisKKwljdXJfaW5mby5jb25zb2xlX2luZm8uc2l6ZSA9IHNpemVvZihjdXJf
aW5mby5jb25zb2xlX2luZm8pOworCisJaWYgKGlvY3RsKDAsIENPTlNfR0VUSU5GTywgJmN1cl9p
bmZvLmNvbnNvbGVfaW5mbykgPT0gLTEpCisJCWVycmMoMSwgZXJybm8sICJnZXR0aW5nIGNvbnNv
bGUgaW5mb3JtYXRpb24iKTsKKworCWlmIChpb2N0bCgwLCBHSU9fU0NSTk1BUCwgJmN1cl9pbmZv
LnNjcmVlbl9tYXApID09IC0xKQorCQllcnJjKDEsIGVycm5vLCAiZ2V0dGluZyBzY3JlZW4gbWFw
Iik7CisKKwlpZiAoaW9jdGwoMCwgQ09OU19HRVQsICZjdXJfaW5mby52aWRlb19tb2RlX251bWJl
cikgPT0gLTEpCisJCWVycmMoMSwgZXJybm8sICJnZXR0aW5nIHZpZGVvIG1vZGUgbnVtYmVyIik7
CisKKwljdXJfaW5mby52aWRlb19tb2RlX2luZm8udmlfbW9kZSA9IGN1cl9pbmZvLnZpZGVvX21v
ZGVfbnVtYmVyOworCisJaWYgKGlvY3RsKDAsIENPTlNfTU9ERUlORk8sICZjdXJfaW5mby52aWRl
b19tb2RlX2luZm8pID09IC0xKQorCQllcnJjKDEsIGVycm5vLCAiZ2V0dGluZyB2aWRlbyBtb2Rl
IHBhcmFtZXRlcnMiKTsKKworCW5vcm1hbF9mb3JlX2NvbG9yID0gY3VyX2luZm8uY29uc29sZV9p
bmZvLm12X25vcm0uZm9yZTsKKwlub3JtYWxfYmFja19jb2xvciA9IGN1cl9pbmZvLmNvbnNvbGVf
aW5mby5tdl9ub3JtLmJhY2s7CisJcmV2ZXJzX2ZvcmVfY29sb3IgPSBjdXJfaW5mby5jb25zb2xl
X2luZm8ubXZfcmV2LmZvcmU7CisJcmV2ZXJzX2JhY2tfY29sb3IgPSBjdXJfaW5mby5jb25zb2xl
X2luZm8ubXZfcmV2LmJhY2s7Cit9CisKKworLyoKKyAqIElmIHNvbWV0aGluZyBnb2VzIHdyb25n
IGFsb25nIHRoZSB3YXkgd2UgY2FsbCByZXZlcnQoKSB0byBnbyBiYWNrIHRvIHRoZQorICogY29u
c29sZSBzdGF0ZSB3ZSBjYW1lIGZyb20gKHdoaWNoIGlzIGFzc3VtZWQgdG8gYmUgd29ya2luZyku
CisgKgorICogTk9URTogcGxlYXNlIGFsc28gcmVhZCB0aGUgY29tbWVudHMgb2YgaW5pdCgpLgor
ICovCisKK3N0YXRpYyB2b2lkCityZXZlcnQodm9pZCkKK3sKKwlpbnQgc2l6ZVszXTsKIAorCWlv
Y3RsKDAsIFZUX0FDVElWQVRFLCAoY2FkZHJfdCkgKGxvbmcpIGN1cl9pbmZvLmFjdGl2ZV92dHkp
OworCisJZnByaW50ZihzdGRlcnIsICIbWz0lZEEiLCBjdXJfaW5mby5jb25zb2xlX2luZm8ubXZf
b3ZzY2FuKTsKKwlmcHJpbnRmKHN0ZGVyciwgIhtbPSVkRiIsIGN1cl9pbmZvLmNvbnNvbGVfaW5m
by5tdl9ub3JtLmZvcmUpOworZnByaW50ZihzdGRlcnIsICIbWz0lZEciLCBjdXJfaW5mby5jb25z
b2xlX2luZm8ubXZfbm9ybS5iYWNrKTsKKwlmcHJpbnRmKHN0ZGVyciwgIhtbPSVkSCIsIGN1cl9p
bmZvLmNvbnNvbGVfaW5mby5tdl9yZXYuZm9yZSk7CisJZnByaW50ZihzdGRlcnIsICIbWz0lZEki
LCBjdXJfaW5mby5jb25zb2xlX2luZm8ubXZfcmV2LmJhY2spOworCisJaW9jdGwoMCwgUElPX1ND
Uk5NQVAsICZjdXJfaW5mby5zY3JlZW5fbWFwKTsKKworCWlmIChjdXJfaW5mby52aWRlb19tb2Rl
X251bWJlciA+PSBNX1ZFU0FfQkFTRSkKKwkJaW9jdGwoMCwgX0lPKCdWJywgY3VyX2luZm8udmlk
ZW9fbW9kZV9udW1iZXIgLSBNX1ZFU0FfQkFTRSksCisJCSAgICAgIE5VTEwpOworCWVsc2UKKwkJ
aW9jdGwoMCwgX0lPKCdTJywgY3VyX2luZm8udmlkZW9fbW9kZV9udW1iZXIpLCBOVUxMKTsKKwor
CWlmIChjdXJfaW5mby52aWRlb19tb2RlX2luZm8udmlfZmxhZ3MgJiBWX0lORk9fR1JBUEhJQ1Mp
IHsKKwkJc2l6ZVswXSA9IGN1cl9pbmZvLnZpZGVvX21vZGVfaW5mby52aV93aWR0aCAvIDg7CisJ
CXNpemVbMV0gPSBjdXJfaW5mby52aWRlb19tb2RlX2luZm8udmlfaGVpZ2h0IC8KKwkJCSAgY3Vy
X2luZm8uY29uc29sZV9pbmZvLmZvbnRfc2l6ZTsKKwkJc2l6ZVsyXSA9IGN1cl9pbmZvLmNvbnNv
bGVfaW5mby5mb250X3NpemU7CisKKwkJaW9jdGwoMCwgS0RSQVNURVIsIHNpemUpOworCX0KK30K
KworCisvKgorICogUHJpbnQgYSBzaG9ydCB1c2FnZSBzdHJpbmcgZGVzY3JpYmluZyBhbGwgb3B0
aW9ucywgdGhlbiBleGl0LgorICovCiAKIHN0YXRpYyB2b2lkCiB1c2FnZSgpCkBAIC04NSwxNiAr
MTkyLDMxIEBACiAJZXhpdCgxKTsKIH0KIAorLyoKKyAqIFJldHJpZXZlIHRoZSBuZXh0IGFyZ3Vt
ZW50IGZyb20gdGhlIGNvbW1hbmQgbGluZSAoZm9yIG9wdGlvbnMgdGhhdCByZXF1aXJlCisgKiBt
b3JlIHRoYW4gb25lIGFyZ3VtZW50KS4KKyAqLworCiBjaGFyICoKIG5leHRhcmcoaW50IGFjLCBj
aGFyICoqYXYsIGludCAqaW5kcCwgaW50IG9jLCBpbnQgc3RyaWN0KQogewogCWlmICgqaW5kcCA8
IGFjKQogCQlyZXR1cm4oYXZbKCppbmRwKSsrXSk7Ci0JaWYgKHN0cmljdCAhPSAwKQorLy8JaWYg
KHN0cmljdCAhPSAwKQorCWlmIChzdHJpY3QgIT0gMCkgeworCQlyZXZlcnQoKTsKIAkJZXJyeCgx
LCAib3B0aW9uIHJlcXVpcmVzIHR3byBhcmd1bWVudHMgLS0gJWMiLCBvYyk7Cit9CisKIAlyZXR1
cm4oTlVMTCk7CiB9CiAKKworLyoKKyAqIEd1ZXNzIHdoaWNoIGZpbGUgdG8gb3Blbi4gVHJ5IHRv
IG9wZW4gZWFjaCBjb21iaW5hdGlvbiBvZiBhIHNwZWNpZmllZCBzZXQKKyAqIG9mIGZpbGUgbmFt
ZSBjb21wb25lbnRzLgorICovCisKIEZJTEUgKgogb3Blbmd1ZXNzKGNoYXIgKmFbXSwgY2hhciAq
YltdLCBjaGFyICpjW10sIGNoYXIgKmRbXSwgY2hhciAqKm5hbWUpCiB7CkBAIC0xMDUsMTEgKzIy
NywxNSBAQAogCQlmb3IgKGogPSAwOyBiW2pdICE9IE5VTEw7IGorKykgewogCQkJZm9yIChrID0g
MDsgY1trXSAhPSBOVUxMOyBrKyspIHsKIAkJCQlmb3IgKGwgPSAwOyBkW2xdICE9IE5VTEw7IGwr
KykgewotCQkJCQlhc3ByaW50ZihuYW1lLCAiJXMlcyVzJXMiLCBhW2ldLCBiW2pdLAotCQkJCQkg
ICAgY1trXSwgZFtsXSk7CisJLy8JCQkJYXNwcmludGYobmFtZSwgIiVzJXMlcyVzIiwgYVtpXSwg
YltqXSwKKwkvLwkJCQkgICAgY1trXSwgZFtsXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFzcHJpbnRmKG5hbWUsICIlcyVzJXMlcyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2ldLCBiW2pdLCBjW2tdLCBk
W2xdKTsKIAkJCQkJZiA9IGZvcGVuKCpuYW1lLCAiciIpOworCiAJCQkJCWlmIChmICE9IE5VTEwp
CiAJCQkJCQlyZXR1cm4gKGYpOworCiAJCQkJCWZyZWUoKm5hbWUpOwogCQkJCX0KIAkJCX0KQEAg
LTExOCw2ICsyNDQsMTAgQEAKIAlyZXR1cm4gKE5VTEwpOwogfQogCisvKgorICogTG9hZCBhIHNj
cmVlbm1hcCBmcm9tIGEgZmlsZSBhbmQgc2V0IGl0LgorICovCisKIHZvaWQKIGxvYWRfc2Nybm1h
cChjaGFyICpmaWxlbmFtZSkKIHsKQEAgLTEzMSwyNCArMjYxLDM4IEBACiAJY2hhciAqZFtdID0g
eyIiLCBOVUxMfTsKIAogCWZkID0gb3Blbmd1ZXNzKGEsIGIsIGMsIGQsICZuYW1lKTsKKwogCWlm
IChmZCA9PSBOVUxMKSB7Ci0JCXdhcm4oInNjcmVlbm1hcCBmaWxlIG5vdCBmb3VuZCIpOwotCQly
ZXR1cm47CisvLwkJd2Fybigic2NyZWVubWFwIGZpbGUgbm90IGZvdW5kIik7CisvLwkJcmV0dXJu
OworCQlyZXZlcnQoKTsKKwkJZXJyeCgxLCAic2NyZWVubWFwIGZpbGUgbm90IGZvdW5kIik7CiAJ
fQorCiAJc2l6ZSA9IHNpemVvZihzY3JubWFwKTsKIAlpZiAoZGVjb2RlKGZkLCAoY2hhciAqKSZz
Y3JubWFwLCBzaXplKSAhPSBzaXplKSB7CiAJCXJld2luZChmZCk7Ci0JCWlmIChmcmVhZCgmc2Ny
bm1hcCwgMSwgc2l6ZSwgZmQpICE9IHNpemUpIHsKKy8vCQlpZiAoZnJlYWQoJnNjcm5tYXAsIDEs
IHNpemUsIGZkKSAhPSBzaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmcmVhZCgmc2Ny
bm1hcCwgMSwgc2l6ZSwgZmQpICE9IChzaXplX3Qpc2l6ZSkgewogCQkJd2FybngoImJhZCBzY3Jl
ZW5tYXAgZmlsZSIpOwogCQkJZmNsb3NlKGZkKTsKLQkJCXJldHVybjsKKy8vCQkJcmV0dXJuOwor
CQkJcmV2ZXJ0KCk7CisJCQllcnJ4KDEsICJiYWQgc2NyZWVubWFwIGZpbGUiKTsKIAkJfQogCX0K
LQlpZiAoaW9jdGwoMCwgUElPX1NDUk5NQVAsICZzY3JubWFwKSA8IDApCi0JCXdhcm4oImNhbid0
IGxvYWQgc2NyZWVubWFwIik7CisJaWYgKGlvY3RsKDAsIFBJT19TQ1JOTUFQLCAmc2Nybm1hcCkg
PT0gLTEpCit7CisgICAgICAgICAgICAgcmV2ZXJ0KCk7CisJCWVycmMoMSwgZXJybm8sICJjYW4n
dCBsb2FkIHNjcmVlbm1hcCIpOworfQogCWZjbG9zZShmZCk7CiB9CiAKKy8qCisgKiBTZXQgdGhl
IGRlZmF1bHQgc2NyZWVubWFwLgorICovCisKIHZvaWQKIGxvYWRfZGVmYXVsdF9zY3JubWFwKCkK
IHsKQEAgLTE1NywyNCArMzAxLDM2IEBACiAKIAlmb3IgKGk9MDsgaTwyNTY7IGkrKykKIAkJKigo
Y2hhciopJnNjcm5tYXAgKyBpKSA9IGk7Ci0JaWYgKGlvY3RsKDAsIFBJT19TQ1JOTUFQLCAmc2Ny
bm1hcCkgPCAwKQotCQl3YXJuKCJjYW4ndCBsb2FkIGRlZmF1bHQgc2NyZWVubWFwIik7CisvLwlp
ZiAoaW9jdGwoMCwgUElPX1NDUk5NQVAsICZzY3JubWFwKSA8IDApCisvLwkJd2FybigiY2FuJ3Qg
bG9hZCBkZWZhdWx0IHNjcmVlbm1hcCIpOworCisJaWYgKGlvY3RsKDAsIFBJT19TQ1JOTUFQLCAm
c2Nybm1hcCkgPT0gLTEpIHsKKwkJcmV2ZXJ0KCk7CisJCWVycmMoMSwgZXJybm8sICJsb2FkaW5n
IGRlZmF1bHQgc2NyZWVubWFwIik7CisJfQogfQogCisvKgorICogUHJpbnQgdGhlIGN1cnJlbnQg
c2NyZWVubWFwIHRvIHN0ZG91dC4KKyAqLworCiB2b2lkCiBwcmludF9zY3JubWFwKCkKIHsKIAl1
bnNpZ25lZCBjaGFyIG1hcFsyNTZdOwogCWludCBpOwogCi0JaWYgKGlvY3RsKDAsIEdJT19TQ1JO
TUFQLCAmbWFwKSA8IDApIHsKLQkJd2FybigiZ2V0dGluZyBzY3JlZW5tYXAiKTsKLQkJcmV0dXJu
OworLy8JaWYgKGlvY3RsKDAsIEdJT19TQ1JOTUFQLCAmbWFwKSA8IDApIHsKKy8vCQl3YXJuKCJn
ZXR0aW5nIHNjcmVlbm1hcCIpOworLy8JCXJldHVybjsKKwlpZiAoaW9jdGwoMCwgR0lPX1NDUk5N
QVAsICZtYXApID09IC0xKSB7CisJCXJldmVydCgpOworCQllcnJjKDEsIGVycm5vLCAiZ2V0dGlu
ZyBzY3JlZW5tYXAiKTsKIAl9CiAJZm9yIChpPTA7IGk8c2l6ZW9mKG1hcCk7IGkrKykgewogCQlp
ZiAoaSA+IDAgJiYgaSAlIDE2ID09IDApCiAJCQlmcHJpbnRmKHN0ZG91dCwgIlxuIik7Ci0JCWlm
IChoZXgpCisJCWlmIChoZXggIT0gMCkKIAkJCWZwcmludGYoc3Rkb3V0LCAiICUwMngiLCBtYXBb
aV0pOwogCQllbHNlCiAJCQlmcHJpbnRmKHN0ZG91dCwgIiAlMDNkIiwgbWFwW2ldKTsKQEAgLTE4
Myw2ICszMzksMTAgQEAKIAogfQogCisvKgorICogRGV0ZXJtaW5lIGEgZmlsZSdzIHNpemUuCisg
Ki8KKwogaW50CiBmc2l6ZShGSUxFICpmaWxlKQogewpAQCAtMTk0LDcgKzM1NCwxMCBAQAogCQly
ZXR1cm4gLTE7CiB9CiAKLSNkZWZpbmUgREFUQVNJWkUoeCkgKCh4KS53ICogKHgpLmggKiAyNTYg
LyA4KQorLy8jZGVmaW5lIERBVEFTSVpFKHgpICgoeCkudyAqICh4KS5oICogMjU2IC8gOCkKKy8q
CisgKiBMb2FkIGEgZm9udCBmcm9tIGZpbGUgYW5kIHNldCBpdC4KKyAqLwogCiB2b2lkCiBsb2Fk
X2ZvbnQoY2hhciAqdHlwZSwgY2hhciAqZmlsZW5hbWUpCkBAIC0yMjAsMjggKzM4MywzOSBAQAog
CiAJaW5mby5zaXplID0gc2l6ZW9mKGluZm8pOwogCWlmIChpb2N0bCgwLCBDT05TX0dFVElORk8s
ICZpbmZvKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICByZXZlcnQoKTsKIAkJd2Fybigi
ZmFpbGVkIHRvIG9idGFpbiBjdXJyZW50IHZpZGVvIG1vZGUgcGFyYW1ldGVycyIpOwogCQlyZXR1
cm47CiAJfQorCiAJc25wcmludGYoc2l6ZV9zdWZ4LCBzaXplb2Yoc2l6ZV9zdWZ4KSwgIi04eCVk
IiwgaW5mby5mb250X3NpemUpOwogCWZkID0gb3Blbmd1ZXNzKGEsIGIsIGMsIGQsICZuYW1lKTsK
IAlpZiAoZmQgPT0gTlVMTCkgewotCQl3YXJuKCIlczogY2FuJ3QgbG9hZCBmb250IGZpbGUiLCBm
aWxlbmFtZSk7Ci0JCXJldHVybjsKKy8vCQl3YXJuKCIlczogY2FuJ3QgbG9hZCBmb250IGZpbGUi
LCBmaWxlbmFtZSk7CisvLwkJcmV0dXJuOworCQlyZXZlcnQoKTsKKwkJZXJyeCgxLCAiJXM6IGNh
bid0IGxvYWQgZm9udCBmaWxlIiwgZmlsZW5hbWUpOwogCX0KKwogCWlmICh0eXBlICE9IE5VTEwp
IHsKIAkJc2l6ZSA9IDA7Ci0JCWlmIChzc2NhbmYodHlwZSwgIiVkeCVkIiwgJncsICZoKSA9PSAy
KQotCQkJZm9yIChpID0gMDsgc2l6ZXNbaV0udyAhPSAwOyBpKyspCisvLwkJaWYgKHNzY2FuZih0
eXBlLCAiJWR4JWQiLCAmdywgJmgpID09IDIpCisvLwkJCWZvciAoaSA9IDA7IHNpemVzW2ldLncg
IT0gMDsgaSsrKQorCQlpZiAoc3NjYW5mKHR5cGUsICIlZHglZCIsICZ3LCAmaCkgPT0gMikgewor
CQkJZm9yIChpID0gMDsgc2l6ZXNbaV0udyAhPSAwOyBpKyspIHsKIAkJCQlpZiAoc2l6ZXNbaV0u
dyA9PSB3ICYmIHNpemVzW2ldLmggPT0gaCkgewogCQkJCQlzaXplID0gREFUQVNJWkUoc2l6ZXNb
aV0pOwogCQkJCQlpbyA9IHNpemVzW2ldLmlvOworCQkJCQlmb250X2hlaWdodCA9IHNpemVzW2ld
Lmg7CiAJCQkJfQotCit9Cit9CiAJCWlmIChzaXplID09IDApIHsKLQkJCXdhcm54KCIlczogYmFk
IGZvbnQgc2l6ZSBzcGVjaWZpY2F0aW9uIiwgdHlwZSk7CisvLwkJCXdhcm54KCIlczogYmFkIGZv
bnQgc2l6ZSBzcGVjaWZpY2F0aW9uIiwgdHlwZSk7CiAJCQlmY2xvc2UoZmQpOwotCQkJcmV0dXJu
OworLy8JCQlyZXR1cm47CisJCQlyZXZlcnQoKTsKKwkJZXJyeCgxLCAiJXM6IGJhZCBmb250IHNp
emUgc3BlY2lmaWNhdGlvbiIsIHR5cGUpOwogCQl9CiAJfSBlbHNlIHsKIAkJLyogQXBwbHkgaGV1
cmlzdGljcyAqLwpAQCAtMjU1LDE5ICs0MjksMjUgQEAKIAkJZnJlZShmb250bWFwKTsKIAogCQlz
aXplID0gMDsKLQkJZm9yIChqID0gMDsgaiA8IDI7IGorKykKLQkJCWZvciAoaSA9IDA7IHNpemVz
W2ldLncgIT0gMDsgaSsrKQorLy8JCWZvciAoaiA9IDA7IGogPCAyOyBqKyspCisvLwkJCWZvciAo
aSA9IDA7IHNpemVzW2ldLncgIT0gMDsgaSsrKQorCQlmb3IgKGogPSAwOyBqIDwgMjsgaisrKSB7
CisJCQlmb3IgKGkgPSAwOyBzaXplc1tpXS53ICE9IDA7IGkrKykgewogCQkJCWlmIChEQVRBU0la
RShzaXplc1tpXSkgPT0gZHNpemVbal0pIHsKIAkJCQkJc2l6ZSA9IGRzaXplW2pdOwogCQkJCQlp
byA9IHNpemVzW2ldLmlvOworCQkJCQlmb250X2hlaWdodCA9IHNpemVzW2ldLmg7CiAJCQkJCWog
PSAyOwkvKiBYWFggKi8KIAkJCQkJYnJlYWs7CiAJCQkJfQotCit9Cit9CiAJCWlmIChzaXplID09
IDApIHsKLQkJCXdhcm54KCIlczogY2FuJ3QgZ3Vlc3MgZm9udCBzaXplIiwgZmlsZW5hbWUpOwor
CS8vCQl3YXJueCgiJXM6IGNhbid0IGd1ZXNzIGZvbnQgc2l6ZSIsIGZpbGVuYW1lKTsKIAkJCWZj
bG9zZShmZCk7Ci0JCQlyZXR1cm47CisJLy8JCXJldHVybjsKKwkJCXJldmVydCgpOworCQkJZXJy
eCgxLCAiJXM6IGNhbid0IGd1ZXNzIGZvbnQgc2l6ZSIsIGZpbGVuYW1lKTsKIAkJfQogCQlyZXdp
bmQoZmQpOwogCX0KQEAgLTI3NSwzNyArNDU1LDYwIEBACiAJZm9udG1hcCA9IChjaGFyKikgbWFs
bG9jKHNpemUpOwogCWlmIChkZWNvZGUoZmQsIGZvbnRtYXAsIHNpemUpICE9IHNpemUpIHsKIAkJ
cmV3aW5kKGZkKTsKLQkJaWYgKGZzaXplKGZkKSAhPSBzaXplIHx8IGZyZWFkKGZvbnRtYXAsIDEs
IHNpemUsIGZkKSAhPSBzaXplKSB7CisvLwkJaWYgKGZzaXplKGZkKSAhPSBzaXplIHx8IGZyZWFk
KGZvbnRtYXAsIDEsIHNpemUsIGZkKSAhPSBzaXplKSB7CisJCWlmIChmc2l6ZShmZCkgIT0gc2l6
ZSB8fAorCQkgICAgZnJlYWQoZm9udG1hcCwgMSwgc2l6ZSwgZmQpICE9IChzaXplX3Qpc2l6ZSkg
ewogCQkJd2FybngoIiVzOiBiYWQgZm9udCBmaWxlIiwgZmlsZW5hbWUpOwogCQkJZmNsb3NlKGZk
KTsKIAkJCWZyZWUoZm9udG1hcCk7Ci0JCQlyZXR1cm47CisvLwkJCXJldHVybjsKKwkJCXJldmVy
dCgpOworCQkJZXJyeCgxLCAiJXM6IGJhZCBmb250IGZpbGUiLCBmaWxlbmFtZSk7CiAJCX0KIAl9
Ci0JaWYgKGlvY3RsKDAsIGlvLCBmb250bWFwKSA8IDApCi0JCXdhcm4oImNhbid0IGxvYWQgZm9u
dCIpOworLy8JaWYgKGlvY3RsKDAsIGlvLCBmb250bWFwKSA8IDApCisvLwkJd2FybigiY2FuJ3Qg
bG9hZCBmb250Iik7CisKKwlpZiAoaW9jdGwoMCwgaW8sIGZvbnRtYXApID09IC0xKSB7CisJCXJl
dmVydCgpOworCQllcnJjKDEsIGVycm5vLCAibG9hZGluZyBmb250Iik7CisJfQogCWZjbG9zZShm
ZCk7CiAJZnJlZShmb250bWFwKTsKIH0KIAorLyoKKyAqIFNldCB0aGUgdGltZW91dCBmb3IgdGhl
IHNjcmVlbnNhdmVyLgorICovCisKIHZvaWQKIHNldF9zY3JlZW5zYXZlcl90aW1lb3V0KGNoYXIg
KmFyZykKIHsKIAlpbnQgbnNlYzsKIAotCWlmICghc3RyY21wKGFyZywgIm9mZiIpKQorCWlmICgh
c3RyY21wKGFyZywgIm9mZiIpKSB7CiAJCW5zZWMgPSAwOwotCWVsc2UgeworCX0gZWxzZSB7CiAJ
CW5zZWMgPSBhdG9pKGFyZyk7CiAJCWlmICgoKmFyZyA9PSAnXDAnKSB8fCAobnNlYyA8IDEpKSB7
Ci0JCQl3YXJueCgiYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpOwotCQkJcmV0
dXJuOworLy8JCQl3YXJueCgiYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpOwor
Ly8JCQlyZXR1cm47CisJCQlyZXZlcnQoKTsKKwkJCWVycngoMSwgImFyZ3VtZW50IG11c3QgYmUg
YSBwb3NpdGl2ZSBudW1iZXIiKTsKIAkJfQogCX0KLQlpZiAoaW9jdGwoMCwgQ09OU19CTEFOS1RJ
TUUsICZuc2VjKSA9PSAtMSkKLQkJd2Fybigic2V0dGluZyBzY3JlZW5zYXZlciBwZXJpb2QiKTsK
Ky8vCWlmIChpb2N0bCgwLCBDT05TX0JMQU5LVElNRSwgJm5zZWMpID09IC0xKQorLy8JCXdhcm4o
InNldHRpbmcgc2NyZWVuc2F2ZXIgcGVyaW9kIik7CisJaWYgKGlvY3RsKDAsIENPTlNfQkxBTktU
SU1FLCAmbnNlYykgPT0gLTEpIHsKKwkJcmV2ZXJ0KCk7CisJCWVycmMoMSwgZXJybm8sICJzZXR0
aW5nIHNjcmVlbnNhdmVyIHBlcmlvZCIpOworCX0KIH0KIAorLyoKKyAqIFNldCB0aGUgY3Vyc29y
J3Mgc2hhcGUvdHlwZS4KKyAqLworCiB2b2lkCiBzZXRfY3Vyc29yX3R5cGUoY2hhciAqYXBwZWFy
ZW5jZSkKIHsKQEAgLTMxOCw1MSArNTIxLDY0IEBACiAJZWxzZSBpZiAoIXN0cmNtcChhcHBlYXJl
bmNlLCAiZGVzdHJ1Y3RpdmUiKSkKIAkJdHlwZSA9IDM7CiAJZWxzZSB7Ci0JCXdhcm54KCJhcmd1
bWVudCB0byAtYyBtdXN0IGJlIG5vcm1hbCwgYmxpbmsgb3IgZGVzdHJ1Y3RpdmUiKTsKLQkJcmV0
dXJuOwotCX0KLQlpb2N0bCgwLCBDT05TX0NVUlNPUlRZUEUsICZ0eXBlKTsKKy8vCQl3YXJueCgi
YXJndW1lbnQgdG8gLWMgbXVzdCBiZSBub3JtYWwsIGJsaW5rIG9yIGRlc3RydWN0aXZlIik7Cisv
LwkJcmV0dXJuOworCQlyZXZlcnQoKTsKKwkJZXJyeCgxLCAiYXJndW1lbnQgdG8gLWMgbXVzdCBi
ZSBub3JtYWwsIGJsaW5rIG9yIGRlc3RydWN0aXZlIik7CisJfQorCQlpZiAoaW9jdGwoMCwgQ09O
U19DVVJTT1JUWVBFLCAmdHlwZSkgPT0gLTEpIHsKKwlyZXZlcnQoKTsKKwllcnJjKDEsIGVycm5v
LCAic2V0dGluZyBjdXJzb3IgdHlwZSIpOwogfQorLy8JaW9jdGwoMCwgQ09OU19DVVJTT1JUWVBF
LCAmdHlwZSk7Cit9CisKKy8qCisgKiBTZXQgdGhlIHZpZGVvIG1vZGUuCisgKi8KIAogaW50Ci12
aWRlb19tb2RlKGludCBhcmdjLCBjaGFyICoqYXJndiwgaW50ICppbmRleCkKK3ZpZGVvX21vZGUo
aW50IGFyZ2MsIGNoYXIgKiphcmd2LCBpbnQgKm1vZGVfaW5kZXgpCiB7CiAJc3RhdGljIHN0cnVj
dCB7CiAJCWNoYXIgKm5hbWU7CiAJCXVuc2lnbmVkIGxvbmcgbW9kZTsKKwkJdW5zaWduZWQgbG9u
ZyBtb2RlX251bTsKIAl9IG1vZGVzW10gPSB7Ci0JCXsgIjgweDI1IiwJCVNXX1RFWFRfODB4MjUg
fSwKLQkJeyAiODB4MzAiLAkJU1dfVEVYVF84MHgzMCB9LAotCQl7ICI4MHg0MyIsCQlTV19URVhU
XzgweDQzIH0sCi0JCXsgIjgweDUwIiwJCVNXX1RFWFRfODB4NTAgfSwKLQkJeyAiODB4NjAiLAkJ
U1dfVEVYVF84MHg2MCB9LAotCQl7ICIxMzJ4MjUiLAkJU1dfVEVYVF8xMzJ4MjUgfSwKLQkJeyAi
MTMyeDMwIiwJCVNXX1RFWFRfMTMyeDMwIH0sCi0JCXsgIjEzMng0MyIsCQlTV19URVhUXzEzMng0
MyB9LAotCQl7ICIxMzJ4NTAiLAkJU1dfVEVYVF8xMzJ4NTAgfSwKLQkJeyAiMTMyeDYwIiwJCVNX
X1RFWFRfMTMyeDYwIH0sCi0JCXsgIlZHQV80MHgyNSIsCQlTV19WR0FfQzQweDI1IH0sCi0JCXsg
IlZHQV84MHgyNSIsCQlTV19WR0FfQzgweDI1IH0sCi0JCXsgIlZHQV84MHgzMCIsCQlTV19WR0Ff
QzgweDMwIH0sCi0JCXsgIlZHQV84MHg1MCIsCQlTV19WR0FfQzgweDUwIH0sCi0JCXsgIlZHQV84
MHg2MCIsCQlTV19WR0FfQzgweDYwIH0sCisJCXsgIjgweDI1IiwgICAgICAgIFNXX1RFWFRfODB4
MjUsICAgTV9URVhUXzgweDI1IH0sCisJCXsgIjgweDMwIiwgICAgICAgIFNXX1RFWFRfODB4MzAs
ICAgTV9URVhUXzgweDMwIH0sCisJCXsgIjgweDQzIiwgICAgICAgIFNXX1RFWFRfODB4NDMsICAg
TV9URVhUXzgweDQzIH0sCisJCXsgIjgweDUwIiwgICAgICAgIFNXX1RFWFRfODB4NTAsICAgTV9U
RVhUXzgweDUwIH0sCisJCXsgIjgweDYwIiwgICAgICAgIFNXX1RFWFRfODB4NjAsICAgTV9URVhU
XzgweDYwIH0sCisJCXsgIjEzMngyNSIsICAgICAgIFNXX1RFWFRfMTMyeDI1LCAgTV9URVhUXzEz
MngyNSB9LAorCQl7ICIxMzJ4MzAiLCAgICAgICBTV19URVhUXzEzMngzMCwgIE1fVEVYVF8xMzJ4
MzAgfSwKKwkJeyAiMTMyeDQzIiwgICAgICAgU1dfVEVYVF8xMzJ4NDMsICBNX1RFWFRfMTMyeDQz
IH0sCisJCXsgIjEzMng1MCIsICAgICAgIFNXX1RFWFRfMTMyeDUwLCAgTV9URVhUXzEzMng1MCB9
LAorCQl7ICIxMzJ4NjAiLCAgICAgICBTV19URVhUXzEzMng2MCwgIE1fVEVYVF8xMzJ4NjAgfSwK
KwkJeyAiVkdBXzQweDI1IiwgICAgU1dfVkdBX0M0MHgyNSwgICBNX1ZHQV9DNDB4MjUgfSwKKwkJ
eyAiVkdBXzgweDI1IiwgICAgU1dfVkdBX0M4MHgyNSwgICBNX1ZHQV9DODB4MjUgfSwKKwkJeyAi
VkdBXzgweDMwIiwgICAgU1dfVkdBX0M4MHgzMCwgICBNX1ZHQV9DODB4MzAgfSwKKwkJeyAiVkdB
XzgweDUwIiwgICAgU1dfVkdBX0M4MHg1MCwgICBNX1ZHQV9DODB4NTAgfSwKKwkJeyAiVkdBXzgw
eDYwIiwgICAgU1dfVkdBX0M4MHg2MCwgICBNX1ZHQV9DODB4NjAgfSwKICNpZmRlZiBTV19WR0Ff
QzkweDI1Ci0JCXsgIlZHQV85MHgyNSIsCQlTV19WR0FfQzkweDI1IH0sCi0JCXsgIlZHQV85MHgz
MCIsCQlTV19WR0FfQzkweDMwIH0sCi0JCXsgIlZHQV85MHg0MyIsCQlTV19WR0FfQzkweDQzIH0s
Ci0JCXsgIlZHQV85MHg1MCIsCQlTV19WR0FfQzkweDUwIH0sCi0JCXsgIlZHQV85MHg2MCIsCQlT
V19WR0FfQzkweDYwIH0sCisJCXsgIlZHQV85MHgyNSIsICAgIFNXX1ZHQV9DOTB4MjUsICAgTV9W
R0FfQzkweDI1IH0sCisJCXsgIlZHQV85MHgzMCIsICAgIFNXX1ZHQV9DOTB4MzAsICAgTV9WR0Ff
QzkweDMwIH0sCisJCXsgIlZHQV85MHg0MyIsICAgIFNXX1ZHQV9DOTB4NDMsICAgTV9WR0FfQzkw
eDQzIH0sCisJCXsgIlZHQV85MHg1MCIsICAgIFNXX1ZHQV9DOTB4NTAsICAgTV9WR0FfQzkweDUw
IH0sCisJCXsgIlZHQV85MHg2MCIsICAgIFNXX1ZHQV9DOTB4NjAsICAgTV9WR0FfQzkweDYwIH0s
CiAjZW5kaWYKLQkJeyAiVkdBXzMyMHgyMDAiLAlTV19WR0FfQ0czMjAgfSwKLQkJeyAiRUdBXzgw
eDI1IiwJCVNXX0VOSF9DODB4MjUgfSwKLQkJeyAiRUdBXzgweDQzIiwJCVNXX0VOSF9DODB4NDMg
fSwKLQkJeyAiVkVTQV8xMzJ4MjUiLAlTV19WRVNBX0MxMzJ4MjUgfSwKLQkJeyAiVkVTQV8xMzJ4
NDMiLAlTV19WRVNBX0MxMzJ4NDMgfSwKLQkJeyAiVkVTQV8xMzJ4NTAiLAlTV19WRVNBX0MxMzJ4
NTAgfSwKLQkJeyAiVkVTQV8xMzJ4NjAiLAlTV19WRVNBX0MxMzJ4NjAgfSwKLQkJeyAiVkVTQV84
MDB4NjAwIiwJU1dfVkVTQV84MDB4NjAwIH0sCi0JCXsgTlVMTCB9LAorCQl7ICJWR0FfMzIweDIw
MCIsCVNXX1ZHQV9DRzMyMCwJTV9DRzMyMCB9LAorCQl7ICJFR0FfODB4MjUiLAkJU1dfRU5IX0M4
MHgyNSwJTV9FTkhfQzgweDI1IH0sCisJCXsgIkVHQV84MHg0MyIsCQlTV19FTkhfQzgweDQzLAlN
X0VOSF9DODB4NDMgfSwKKwkJeyAiVkVTQV8xMzJ4MjUiLAlTV19WRVNBX0MxMzJ4MjUsTV9WRVNB
X0MxMzJ4MjUgfSwKKwkJeyAiVkVTQV8xMzJ4NDMiLAlTV19WRVNBX0MxMzJ4NDMsTV9WRVNBX0Mx
MzJ4NDMgfSwKKwkJeyAiVkVTQV8xMzJ4NTAiLAlTV19WRVNBX0MxMzJ4NTAsTV9WRVNBX0MxMzJ4
NTAgfSwKKwkJeyAiVkVTQV8xMzJ4NjAiLAlTV19WRVNBX0MxMzJ4NjAsTV9WRVNBX0MxMzJ4NjAg
fSwKKyAgICAgICAgICAJeyAiVkVTQV84MDB4NjAwIiwJU1dfVkVTQV84MDB4NjAwLE1fVkVTQV84
MDB4NjAwIH0sCisJCXsgTlVMTCwgMCwgMCB9LAogCX07CisKKyAgICAgICAgICBpbnQgbmV3X21v
ZGVfbnVtID0gMDsKIAl1bnNpZ25lZCBsb25nIG1vZGUgPSAwOwogCWludCBjdXJfbW9kZTsgCiAJ
aW50IGlvZXJyOwpAQCAtMzcxLDM5ICs1ODcsOTQgQEAKIAogCWlmIChpb2N0bCgwLCBDT05TX0dF
VCwgJmN1cl9tb2RlKSA8IDApCiAJCWVycigxLCAiY2Fubm90IGdldCB0aGUgY3VycmVudCB2aWRl
byBtb2RlIik7Ci0JaWYgKCppbmRleCA8IGFyZ2MpIHsKLQkJZm9yIChpID0gMDsgbW9kZXNbaV0u
bmFtZSAhPSBOVUxMOyArK2kpIHsKLQkJCWlmICghc3RyY21wKGFyZ3ZbKmluZGV4XSwgbW9kZXNb
aV0ubmFtZSkpIHsKLQkJCQltb2RlID0gbW9kZXNbaV0ubW9kZTsKLQkJCQlicmVhazsKKworCS8q
CisJICogUGFyc2UgdGhlIHZpZGVvIG1vZGUgYXJndW1lbnQuLi4KKwkgKi8KKworCWlmICgqbW9k
ZV9pbmRleCA8IGFyZ2MpIHsKKwkJaWYgKCFzdHJuY21wKGFyZ3ZbKm1vZGVfaW5kZXhdLCAiTU9E
RV8iLCA1KSkgeworCQkJaWYgKCFpc251bWJlcihhcmd2Wyptb2RlX2luZGV4XVs1XSkpCisJCQkJ
ZXJyeCgxLCAiaW52YWxpZCB2aWRlbyBtb2RlIG51bWJlciIpOworCisJCQluZXdfbW9kZV9udW0g
PSBhdG9pKCZhcmd2Wyptb2RlX2luZGV4XVs1XSk7CisJfSBlbHNlIHsKKwkJCWZvciAoaSA9IDA7
IG1vZGVzW2ldLm5hbWUgIT0gTlVMTDsgKytpKSB7CisJCQkJaWYgKCFzdHJjbXAoYXJndlsqbW9k
ZV9pbmRleF0sIG1vZGVzW2ldLm5hbWUpKSB7CisJCQkJCW1vZGUgPSBtb2Rlc1tpXS5tb2RlOwor
CQkJCQluZXdfbW9kZV9udW0gPSBtb2Rlc1tpXS5tb2RlX251bTsKKwkJCQkJYnJlYWs7CisJCQkJ
fQogCQkJfQorCisJCQlpZiAobW9kZXNbaV0ubmFtZSA9PSBOVUxMKQorCQkJCXJldHVybiBFWElU
X0ZBSUxVUkU7CisJCQlpZiAoaW9jdGwoMCwgbW9kZSwgTlVMTCkgPCAwKSB7CisJCQkJd2Fybigi
Y2Fubm90IHNldCB2aWRlb21vZGUiKTsKKwkJCQlyZXR1cm4gRVhJVF9GQUlMVVJFOworCQkJfQor
CQl9CisKKwkJLyoKKwkJICogQ29sbGVjdCBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5l
dyB2aWRlbyBtb2RlLi4uCisJCSAqLworCisJCW5ld19tb2RlX2luZm8udmlfbW9kZSA9IG5ld19t
b2RlX251bTsKKworCQlpZiAoaW9jdGwoMCwgQ09OU19NT0RFSU5GTywgJm5ld19tb2RlX2luZm8p
ID09IC0xKSB7CisJCQlyZXZlcnQoKTsKKwkJCWVycmMoMSwgZXJybm8sICJvYnRhaW5pbmcgbmV3
IHZpZGVvIG1vZGUgcGFyYW1ldGVycyIpOwogCQl9Ci0JCWlmIChtb2Rlc1tpXS5uYW1lID09IE5V
TEwpCi0JCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwotCQlpZiAoaW9jdGwoMCwgbW9kZSwgTlVMTCkg
PCAwKSB7Ci0JCQl3YXJuKCJjYW5ub3Qgc2V0IHZpZGVvbW9kZSIpOwotCQkJcmV0dXJuIEVYSVRf
RkFJTFVSRTsKLQkJfQotCQlpZiAobW9kZSA9PSBTV19WRVNBXzgwMHg2MDApIHsKLQkJCS8qIGNv
bHVtbnMgKi8KLQkJCWlmICgodmVzYV9jb2xzICogOCA+IDgwMCkgfHwgKHZlc2FfY29scyA8PSAw
KSkgewotCQkJCXdhcm54KCJpbmNvcnJlY3QgbnVtYmVyIG9mIGNvbHVtbnM6ICVkIiwKLQkJCQkg
ICAgICB2ZXNhX2NvbHMpOwotCQkJCXNpemVbMF0gPSBfVkVTQV84MDB4NjAwX0RGTF9DT0xTOwor
CisJCWlmIChtb2RlID09IDApIHsKKwkJCWlmIChuZXdfbW9kZV9udW0gPj0gTV9WRVNBX0JBU0Up
CisJCQkJbW9kZSA9IF9JTygnVicsIG5ld19tb2RlX251bSAtIE1fVkVTQV9CQVNFKTsKKwkJCWVs
c2UKKwkJCQltb2RlID0gX0lPKCdTJywgbmV3X21vZGVfbnVtKTsKKwl9CisKKwkJLyoKKwkJICog
VHJ5IHNldHRpbmcgdGhlIG5ldyBtb2RlLgorCQkgKi8KKworCQlpZiAoaW9jdGwoMCwgbW9kZSwg
TlVMTCkgPT0gLTEpIHsKKwkJCXJldmVydCgpOworCQkJZXJyYygxLCBlcnJubywgInNldHRpbmcg
dmlkZW8gbW9kZSIpOworCQl9CisKKwkJLyoKKwkJICogRm9yIHJhc3RlciBtb2RlcyBpdCdzIG5v
dCBlbm91Z2ggdG8ganVzdCBzZXQgdGhlIG1vZGUuCisJCSAqIFdlIGFsc28gbmVlZCB0byBleHBs
aWNpdGx5IHNldCB0aGUgcmFzdGVyIG1vZGUuCisJCSAqLworCisJCWlmIChuZXdfbW9kZV9pbmZv
LnZpX2ZsYWdzICYgVl9JTkZPX0dSQVBISUNTKSB7CisJCQkvKiBmb250IHNpemUgKi8KKworCQkJ
aWYgKGZvbnRfaGVpZ2h0ID09IDApCisJCQkJZm9udF9oZWlnaHQgPSBjdXJfaW5mby5jb25zb2xl
X2luZm8uZm9udF9zaXplOworCisJCQlzaXplWzJdID0gZm9udF9oZWlnaHQ7CisKKwkJCS8qIGFk
anVzdCBjb2x1bW5zICovCisKKwkJCWlmICgodmVzYV9jb2xzICogOCA+IG5ld19tb2RlX2luZm8u
dmlfd2lkdGgpIHx8CisJCQkgICAgKHZlc2FfY29scyA8PSAwKSkgeworCQkJCXNpemVbMF0gPSBu
ZXdfbW9kZV9pbmZvLnZpX3dpZHRoIC8gODsKIAkJCX0gZWxzZSB7CiAJCQkJc2l6ZVswXSA9IHZl
c2FfY29sczsKIAkJCX0KLQkJCS8qIHJvd3MgKi8KLQkJCWlmICgodmVzYV9yb3dzICogX1ZFU0Ff
ODAweDYwMF9ERkxfRk5TWiA+IDYwMCkgfHwKLQkJCSAgICAodmVzYV9yb3dzIDw9MCkpIHsKLQkJ
CQl3YXJueCgiaW5jb3JyZWN0IG51bWJlciBvZiByb3dzOiAlZCIsCi0JCQkJICAgICAgdmVzYV9y
b3dzKTsKLQkJCQlzaXplWzFdID0gX1ZFU0FfODAweDYwMF9ERkxfUk9XUzsKKwkJCS8qIGFkanVz
dCByb3dzICovCisKKwkJCWlmICgodmVzYV9yb3dzICogZm9udF9oZWlnaHQgPiBuZXdfbW9kZV9p
bmZvLnZpX2hlaWdodCkgfHwKKwkJCSAgICAodmVzYV9yb3dzIDw9IDApKSB7CisJCQkJc2l6ZVsx
XSA9IG5ld19tb2RlX2luZm8udmlfaGVpZ2h0IC8KKwkJCQkJICBmb250X2hlaWdodDsKIAkJCX0g
ZWxzZSB7CiAJCQkJc2l6ZVsxXSA9IHZlc2Ffcm93czsKIAkJCX0KLQkJCS8qIGZvbnQgc2l6ZSAq
LwotCQkJc2l6ZVsyXSA9IF9WRVNBXzgwMHg2MDBfREZMX0ZOU1o7CisvLwkJCS8qIGZvbnQgc2l6
ZSAqLworLy8JCQlzaXplWzJdID0gX1ZFU0FfODAweDYwMF9ERkxfRk5TWjsKKy8qIHNldCByYXN0
ZXIgbW9kZSAqLwogCQkJaWYgKGlvY3RsKDAsIEtEUkFTVEVSLCBzaXplKSkgewogCQkJCWlvZXJy
ID0gZXJybm87CiAJCQkJaWYgKGN1cl9tb2RlID49IE1fVkVTQV9CQVNFKQpAQCAtNDEyLDQ1ICs2
ODMsNjQgQEAKIAkJCQkJICAgIE5VTEwpOwogCQkJCWVsc2UKIAkJCQkJaW9jdGwoMCwgX0lPKCdT
JywgY3VyX21vZGUpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXZlcnQoKTsKIAkJCQl3YXJuYyhpb2VyciwgImNhbm5vdCBhY3RpdmF0ZSByYXN0ZXIg
ZGlzcGxheSIpOwogCQkJCXJldHVybiBFWElUX0ZBSUxVUkU7CiAJCQl9CiAJCX0KLQkJKCppbmRl
eCkrKzsKKy8vCQkoKmluZGV4KSsrOworCisJCXZpZGVvX21vZGVfY2hhbmdlZCA9IDE7CisKKwkJ
KCptb2RlX2luZGV4KSsrOwogCX0KIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogfQogCisvKgorICog
UmV0dXJuIHRoZSBudW1iZXIgZm9yIGEgc3BlY2lmaWVkIGNvbG9yIG5hbWUuCisgKi8KKwogaW50
CiBnZXRfY29sb3JfbnVtYmVyKGNoYXIgKmNvbG9yKQogewogCWludCBpOwogCiAJZm9yIChpPTA7
IGk8MTY7IGkrKykKK3sKIAkJaWYgKCFzdHJjbXAoY29sb3IsIGxlZ2FsX2NvbG9yc1tpXSkpCiAJ
CQlyZXR1cm4gaTsKK30KIAlyZXR1cm4gLTE7CiB9CiAKKy8qCisgKiBHZXQgbm9ybWFsIHRleHQg
YW5kIGJhY2tncm91bmQgY29sb3JzLgorICovCisKIHZvaWQKLXNldF9ub3JtYWxfY29sb3JzKGlu
dCBhcmdjLCBjaGFyICoqYXJndiwgaW50ICppbmRleCkKK2dldF9ub3JtYWxfY29sb3JzKGludCBh
cmdjLCBjaGFyICoqYXJndiwgaW50ICpfaW5kZXgpCiB7CiAJaW50IGNvbG9yOwogCi0JaWYgKCpp
bmRleCA8IGFyZ2MgJiYgKGNvbG9yID0gZ2V0X2NvbG9yX251bWJlcihhcmd2WyppbmRleF0pKSAh
PSAtMSkgewotCQkoKmluZGV4KSsrOworCWlmICgqX2luZGV4IDwgYXJnYyAmJiAoY29sb3IgPSBn
ZXRfY29sb3JfbnVtYmVyKGFyZ3ZbKl9pbmRleF0pKSAhPSAtMSkgeworCQkoKl9pbmRleCkrKzsK
IAkJZnByaW50ZihzdGRlcnIsICIbWz0lZEYiLCBjb2xvcik7Ci0JCWlmICgqaW5kZXggPCBhcmdj
Ci0JCSAgICAmJiAoY29sb3IgPSBnZXRfY29sb3JfbnVtYmVyKGFyZ3ZbKmluZGV4XSkpICE9IC0x
CisJCWlmICgqX2luZGV4IDwgYXJnYworCQkgICAgJiYgKGNvbG9yID0gZ2V0X2NvbG9yX251bWJl
cihhcmd2WypfaW5kZXhdKSkgIT0gLTEKIAkJICAgICYmIGNvbG9yIDwgOCkgewotCQkJKCppbmRl
eCkrKzsKKwkJCSgqX2luZGV4KSsrOwogCQkJZnByaW50ZihzdGRlcnIsICIbWz0lZEciLCBjb2xv
cik7CiAJCX0KIAl9CiB9CiAKKy8qCisgKiBHZXQgcmV2ZXJzZSB0ZXh0IGFuZCBiYWNrZ3JvdW5k
IGNvbG9ycy4KKyAqLworCiB2b2lkCi1zZXRfcmV2ZXJzZV9jb2xvcnMoaW50IGFyZ2MsIGNoYXIg
Kiphcmd2LCBpbnQgKmluZGV4KQorZ2V0X3JldmVyc2VfY29sb3JzKGludCBhcmdjLCBjaGFyICoq
YXJndiwgaW50ICppbmRleCkKIHsKIAlpbnQgY29sb3I7CiAKQEAgLTQ2NSwyMyArNzU1LDUyIEBA
CiAJfQogfQogCisvKgorICogU2V0IG5vcm1hbCBhbmQgcmV2ZXJzZSBmb3JlZ3JvdW5kIGFuZCBi
YWNrZ3JvdW5kIGNvbG9ycy4KKyAqLworCitzdGF0aWMgdm9pZAorc2V0X2NvbG9ycyh2b2lkKQor
eworCWZwcmludGYoc3RkZXJyLCAiG1s9JWRGIiwgbm9ybWFsX2ZvcmVfY29sb3IpOworCWZwcmlu
dGYoc3RkZXJyLCAiG1s9JWRHIiwgbm9ybWFsX2JhY2tfY29sb3IpOworCWZwcmludGYoc3RkZXJy
LCAiG1s9JWRIIiwgcmV2ZXJzX2ZvcmVfY29sb3IpOworCWZwcmludGYoc3RkZXJyLCAiG1s9JWRJ
IiwgcmV2ZXJzX2JhY2tfY29sb3IpOworfQorCisKKy8qCisgKiBTd2l0Y2ggdG8gdmlydHVhbCB0
ZXJtaW5hbCAjYXJnLgorICovCisKIHZvaWQKIHNldF9jb25zb2xlKGNoYXIgKmFyZykKIHsKIAlp
bnQgbjsKIAotCWlmKCAhYXJnIHx8IHN0cnNwbihhcmcsIjAxMjM0NTY3ODkiKSAhPSBzdHJsZW4o
YXJnKSkgewotCQl3YXJueCgiYmFkIGNvbnNvbGUgbnVtYmVyIik7Ci0JCXJldHVybjsKKy8vCWlm
KCAhYXJnIHx8IHN0cnNwbihhcmcsIjAxMjM0NTY3ODkiKSAhPSBzdHJsZW4oYXJnKSkgeworLy8J
CXdhcm54KCJiYWQgY29uc29sZSBudW1iZXIiKTsKKy8vCQlyZXR1cm47CisJaWYoIWFyZyB8fCBz
dHJzcG4oYXJnLCIwMTIzNDU2Nzg5IikgIT0gc3RybGVuKGFyZykpIHsKKwkJcmV2ZXJ0KCk7CisJ
CWVycngoMSwgImJhZCBjb25zb2xlIG51bWJlciIpOwogCX0KIAogCW4gPSBhdG9pKGFyZyk7CiAJ
aWYgKG4gPCAxIHx8IG4gPiAxNikgewotCQl3YXJueCgiY29uc29sZSBudW1iZXIgb3V0IG9mIHJh
bmdlIik7Ci0JfSBlbHNlIGlmIChpb2N0bCgwLCBWVF9BQ1RJVkFURSwgKGNhZGRyX3QpIChsb25n
KSBuKSA9PSAtMSkKLQkJd2FybigiaW9jdGwoVlRfQUNUSVZBVEUpIik7CisvLwkJd2FybngoImNv
bnNvbGUgbnVtYmVyIG91dCBvZiByYW5nZSIpOworLy8JfSBlbHNlIGlmIChpb2N0bCgwLCBWVF9B
Q1RJVkFURSwgKGNhZGRyX3QpIChsb25nKSBuKSA9PSAtMSkKKy8vCQl3YXJuKCJpb2N0bChWVF9B
Q1RJVkFURSkiKTsKKwkJcmV2ZXJ0KCk7CisJCWVycngoMSwgImNvbnNvbGUgbnVtYmVyIG91dCBv
ZiByYW5nZSIpOworCX0gZWxzZSBpZiAoaW9jdGwoMCwgVlRfQUNUSVZBVEUsIChjYWRkcl90KSAo
bG9uZykgbikgPT0gLTEpIHsKKwkJcmV2ZXJ0KCk7CisJCWVycmMoMSwgZXJybm8sICJzd2l0Y2hp
bmcgdnR5Iik7CisJfQogfQotCisvKgorICogU2V0cyB0aGUgYm9yZGVyIGNvbG9yLgorICovCiB2
b2lkCiBzZXRfYm9yZGVyX2NvbG9yKGNoYXIgKmFyZykKIHsKQEAgLTUwMiwxMiArODIxLDE3IEBA
CiAKIAlsID0gc3RydG9sKGFyZywgTlVMTCwgMCk7CiAJaWYgKChsIDwgMCkgfHwgKGwgPiBVQ0hB
Ul9NQVggLSAzKSkgeworICAgICAgICAgICAgICAgICAgICByZXZlcnQoKTsKIAkJd2FybngoImFy
Z3VtZW50IHRvIC1NIG11c3QgYmUgMCB0aHJvdWdoICVkIiwgVUNIQVJfTUFYIC0gMyk7CiAJCXJl
dHVybjsKIAl9CiAJbW91c2Uub3BlcmF0aW9uID0gTU9VU0VfTU9VU0VDSEFSOwogCW1vdXNlLnUu
bW91c2VfY2hhciA9IChpbnQpbDsKLQlpb2N0bCgwLCBDT05TX01PVVNFQ1RMLCAmbW91c2UpOwor
Ly8JaW9jdGwoMCwgQ09OU19NT1VTRUNUTCwgJm1vdXNlKTsKKwlpZiAoaW9jdGwoMCwgQ09OU19N
T1VTRUNUTCwgJm1vdXNlKSA9PSAtMSkgeworCQlyZXZlcnQoKTsKKwkJZXJyYygxLCBlcnJubywg
InNldHRpbmcgbW91c2UgY2hhcmFjdGVyIik7CisJfQogfQogCiB2b2lkCkBAIC01MTUsMTUgKzgz
OSwyNSBAQAogewogCXN0cnVjdCBtb3VzZV9pbmZvIG1vdXNlOwogCi0JaWYgKCFzdHJjbXAoYXJn
LCAib24iKSkKKwlpZiAoIXN0cmNtcChhcmcsICJvbiIpKSB7CiAJCW1vdXNlLm9wZXJhdGlvbiA9
IE1PVVNFX1NIT1c7Ci0JZWxzZSBpZiAoIXN0cmNtcChhcmcsICJvZmYiKSkKKwl9IGVsc2UgaWYg
KCFzdHJjbXAoYXJnLCAib2ZmIikpIHsKIAkJbW91c2Uub3BlcmF0aW9uID0gTU9VU0VfSElERTsK
LQllbHNlIHsKLQkJd2FybngoImFyZ3VtZW50IHRvIC1tIG11c3QgYmUgZWl0aGVyIG9uIG9yIG9m
ZiIpOwotCQlyZXR1cm47CisvLwllbHNlIHsKKy8vCQl3YXJueCgiYXJndW1lbnQgdG8gLW0gbXVz
dCBiZSBlaXRoZXIgb24gb3Igb2ZmIik7CisvLwkJcmV0dXJuOworCX0KKyAgICAgICAgICBlbHNl
IHsKKwkJcmV2ZXJ0KCk7CisJCWVycngoMSwgImFyZ3VtZW50IHRvIC1tIG11c3QgYmUgZWl0aGVy
IG9uIG9yIG9mZiIpOwogCX0KLQlpb2N0bCgwLCBDT05TX01PVVNFQ1RMLCAmbW91c2UpOworCisJ
aWYgKGlvY3RsKDAsIENPTlNfTU9VU0VDVEwsICZtb3VzZSkgPT0gLTEpIHsKKwkJcmV2ZXJ0KCk7
CisJCWVycmMoMSwgZXJybm8sICIlc2luZyB0aGUgbW91c2UiLAorCQkgICAgIG1vdXNlLm9wZXJh
dGlvbiA9PSBNT1VTRV9TSE9XID8gInNob3ciIDogImhpZCIpOworCX0KKy8vCWlvY3RsKDAsIENP
TlNfTU9VU0VDVEwsICZtb3VzZSk7CiB9CiAKIHZvaWQKQEAgLTUzMSwxNiArODY1LDI1IEBACiB7
CiAJaW50IGRhdGE7CiAKLQlpZiAoIXN0cmNtcChhcmcsICJvZmYiKSkKKwlpZiAoIXN0cmNtcChh
cmcsICJvZmYiKSkgewogCQlkYXRhID0gMHgwMTsKLQllbHNlIGlmICghc3RyY21wKGFyZywgIm9u
IikpCisJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIm9uIikpIHsKIAkJZGF0YSA9IDB4MDI7Ci0J
ZWxzZSB7Ci0JCXdhcm54KCJhcmd1bWVudCB0byAtUyBtdXN0IGJlIGVpdGhlciBvbiBvciBvZmYi
KTsKLQkJcmV0dXJuOworLy8JfSBlbHNlIHsKKy8vCQl3YXJueCgiYXJndW1lbnQgdG8gLVMgbXVz
dCBiZSBlaXRoZXIgb24gb3Igb2ZmIik7CisvLwkJcmV0dXJuOworCX0gZWxzZSB7CisJCXJldmVy
dCgpOworCQllcnJ4KDEsICJhcmd1bWVudCB0byAtUyBtdXN0IGJlIGVpdGhlciBvbiBvciBvZmYi
KTsKIAl9Ci0JaWYgKGlvY3RsKDAsIFZUX0xPQ0tTV0lUQ0gsICZkYXRhKSA9PSAtMSkKLQkJd2Fy
bigiaW9jdGwoVlRfTE9DS1NXSVRDSCkiKTsKKworaWYgKGlvY3RsKDAsIFZUX0xPQ0tTV0lUQ0gs
ICZkYXRhKSA9PSAtMSkgeworCQlyZXZlcnQoKTsKKwkJZXJyYygxLCBlcnJubywgInR1cm5pbmcg
JXMgdnR5IHN3aXRjaGluZyIsCisJCSAgICAgZGF0YSA9PSAweDAxID8gIm9mZiIgOiAib24iKTsK
Kwl9CisvLwlpZiAoaW9jdGwoMCwgVlRfTE9DS1NXSVRDSCwgJmRhdGEpID09IC0xKQorLy8JCXdh
cm4oImlvY3RsKFZUX0xPQ0tTV0lUQ0gpIik7CiB9CiAKIHN0YXRpYyBjaGFyCkBAIC01NjcsMTUg
KzkxMCwyMiBAQAogICAgIHJldHVybiBuYW1lc1tpXS5uYW1lOwogfQogCisvKgorICogU2hvdyBn
cmFwaGljcyBhZGFwdGVyIGluZm9ybWF0aW9uLgorICovCisKIHZvaWQKIHNob3dfYWRhcHRlcl9p
bmZvKHZvaWQpCiB7CiAJc3RydWN0IHZpZGVvX2FkYXB0ZXJfaW5mbyBhZDsKIAogCWFkLnZhX2lu
ZGV4ID0gMDsKLQlpZiAoaW9jdGwoMCwgQ09OU19BRFBJTkZPLCAmYWQpKSB7Ci0JCXdhcm4oImZh
aWxlZCB0byBvYnRhaW4gYWRhcHRlciBpbmZvcm1hdGlvbiIpOwotCQlyZXR1cm47CisvLwlpZiAo
aW9jdGwoMCwgQ09OU19BRFBJTkZPLCAmYWQpKSB7CisvLwkJd2FybigiZmFpbGVkIHRvIG9idGFp
biBhZGFwdGVyIGluZm9ybWF0aW9uIik7CisvLwkJcmV0dXJuOworCWlmIChpb2N0bCgwLCBDT05T
X0FEUElORk8sICZhZCkgPT0gLTEpIHsKKwkJcmV2ZXJ0KCk7CisJCWVycmMoMSwgZXJybm8sICJv
YnRhaW5pbmcgYWRhcHRlciBpbmZvcm1hdGlvbiIpOwogCX0KIAogCXByaW50ZigiZmIlZDpcbiIs
IGFkLnZhX2luZGV4KTsKQEAgLTU5Myw3ICs5NDMsOSBAQAogCSAgICAgICBhZC52YV9kaXNwX3N0
YXJ0LngsIGFkLnZhX2Rpc3Bfc3RhcnQueSwgYWQudmFfbGluZV93aWR0aCk7CiAJcHJpbnRmKCIg
ICAgcmVzZXJ2ZWQ6MHgleFxuIiwgYWQudmFfdW51c2VkMCk7CiB9Ci0KKy8qCisgKiBTaG93IHZp
ZGVvIG1vZGUgaW5mb3JtYXRpb24uCisgKi8KIHZvaWQKIHNob3dfbW9kZV9pbmZvKHZvaWQpCiB7
CkBAIC02NDUsOCArOTk3LDEwIEBACiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICJtb2RlIikpCiAJ
CXNob3dfbW9kZV9pbmZvKCk7CiAJZWxzZSB7Ci0JCXdhcm54KCJhcmd1bWVudCB0byAtaSBtdXN0
IGJlIGVpdGhlciBhZGFwdGVyIG9yIG1vZGUiKTsKLQkJcmV0dXJuOworLy8JCXdhcm54KCJhcmd1
bWVudCB0byAtaSBtdXN0IGJlIGVpdGhlciBhZGFwdGVyIG9yIG1vZGUiKTsKKy8vCQlyZXR1cm47
CisJCXJldmVydCgpOworCQllcnJ4KDEsICJhcmd1bWVudCB0byAtaSBtdXN0IGJlIGVpdGhlciBh
ZGFwdGVyIG9yIG1vZGUiKTsKIAl9CiB9CiAKQEAgLTY4Miw3ICsxMDM2LDkgQEAKIAogCWluZm8u
c2l6ZSA9IHNpemVvZihpbmZvKTsKIAlpZiAoaW9jdGwoMCwgQ09OU19HRVRJTkZPLCAmaW5mbykg
PT0gLTEpIHsKLQkJd2FybigiZmFpbGVkIHRvIG9idGFpbiBjdXJyZW50IHZpZGVvIG1vZGUgcGFy
YW1ldGVycyIpOworLy8JCXdhcm4oImZhaWxlZCB0byBvYnRhaW4gY3VycmVudCB2aWRlbyBtb2Rl
IHBhcmFtZXRlcnMiKTsKKwkJcmV2ZXJ0KCk7CisJCWVycmMoMSwgZXJybm8sICJvYnRhaW5pbmcg
Y3VycmVudCB2aWRlbyBtb2RlIHBhcmFtZXRlcnMiKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNjk0
LDEzICsxMDUwLDE3IEBACiAKIAlzaG90LmJ1ZiA9IGFsbG9jYShzaG90LnhzaXplICogc2hvdC55
c2l6ZSAqIHNpemVvZih1X2ludDE2X3QpKTsKIAlpZiAoc2hvdC5idWYgPT0gTlVMTCkgewotCQl3
YXJuKCJmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBkdW1wIik7Ci0JCXJldHVybjsKKy8v
CQl3YXJuKCJmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBkdW1wIik7CisJCXJldmVydCgp
OworCQllcnJ4KDEsICJmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBkdW1wIik7CisvLwkJ
cmV0dXJuOwogCX0KIAogCWlmIChpb2N0bCgwLCBDT05TX1NDUlNIT1QsICZzaG90KSA9PSAtMSkg
ewotCQl3YXJuKCJmYWlsZWQgdG8gZ2V0IGR1bXAgb2YgdGhlIHNjcmVlbiIpOwotCQlyZXR1cm47
CisvLwkJd2FybigiZmFpbGVkIHRvIGdldCBkdW1wIG9mIHRoZSBzY3JlZW4iKTsKKy8vCQlyZXR1
cm47CisJCXJldmVydCgpOworCQllcnJjKDEsIGVycm5vLCAiZHVtcGluZyBzY3JlZW4iKTsKIAl9
CiAKIAlpZiAobW9kZSA9PSBEVU1QX0ZNVF9SQVcpIHsKQEAgLTcwOCw4ICsxMDY4LDEwIEBACiAJ
CSAgICAgICBzaG90LnhzaXplLCBzaG90LnlzaXplKTsKIAkJZmZsdXNoKHN0ZG91dCk7CiAKLQkJ
KHZvaWQpd3JpdGUoU1RET1VUX0ZJTEVOTywgc2hvdC5idWYsCi0JCQkgICAgc2hvdC54c2l6ZSAq
IHNob3QueXNpemUgKiBzaXplb2YodV9pbnQxNl90KSk7CisvLwkJKHZvaWQpd3JpdGUoU1RET1VU
X0ZJTEVOTywgc2hvdC5idWYsCisvLwkJCSAgICBzaG90LnhzaXplICogc2hvdC55c2l6ZSAqIHNp
emVvZih1X2ludDE2X3QpKTsKKwkJd3JpdGUoU1RET1VUX0ZJTEVOTywgc2hvdC5idWYsCisJCSAg
ICAgIHNob3QueHNpemUgKiBzaG90LnlzaXplICogc2l6ZW9mKHVfaW50MTZfdCkpOwogCX0gZWxz
ZSB7CiAJCWNoYXIgKmxpbmU7CiAJCWludCB4LCB5OwpAQCAtNzE3LDggKzEwNzksMTAgQEAKIAog
CQlsaW5lID0gYWxsb2NhKHNob3QueHNpemUgKyAxKTsKIAkJaWYgKGxpbmUgPT0gTlVMTCkgewot
CQkJd2FybigiZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgbGluZSBidWZmZXIiKTsKLQkJ
CXJldHVybjsKKy8vCQkJd2FybigiZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgbGluZSBi
dWZmZXIiKTsKKy8vCQkJcmV0dXJuOworCQkJcmV2ZXJ0KCk7CisJCQllcnJ4KDEsICJmYWlsZWQg
dG8gYWxsb2NhdGUgbWVtb3J5IGZvciBsaW5lIGJ1ZmZlciIpOwogCQl9CiAKIAkJZm9yICh5ID0g
MDsgeSA8IHNob3QueXNpemU7IHkrKykgewpAQCAtNzQyLDcgKzExMDYsOSBAQAogCiAJcmV0dXJu
OwogfQotCisvKgorICogU2V0IHRoZSBjb25zb2xlIGhpc3RvcnkgYnVmZmVyIHNpemUuCisgKi8K
IHZvaWQKIHNldF9oaXN0b3J5KGNoYXIgKm9wdCkKIHsKQEAgLTc1MCwxOSArMTExNiwzMiBAQAog
CiAJc2l6ZSA9IGF0b2kob3B0KTsKIAlpZiAoKCpvcHQgPT0gJ1wwJykgfHwgc2l6ZSA8IDApIHsK
LQkJd2FybngoImFyZ3VtZW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTsKLQkJcmV0dXJu
OworLy8JCXdhcm54KCJhcmd1bWVudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIik7CisvLwkJ
cmV0dXJuOworCQlyZXZlcnQoKTsKKwkJZXJyeCgxLCAiYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0
aXZlIG51bWJlciIpOworCX0KKworCWlmIChpb2N0bCgwLCBDT05TX0hJU1RPUlksICZzaXplKSA9
PSAtMSkgeworCQlyZXZlcnQoKTsKKwkJZXJyYygxLCBlcnJubywgInNldHRpbmcgaGlzdG9yeSBi
dWZmZXIgc2l6ZSIpOwogCX0KLQlpZiAoaW9jdGwoMCwgQ09OU19ISVNUT1JZLCAmc2l6ZSkgPT0g
LTEpCi0JCXdhcm4oInNldHRpbmcgaGlzdG9yeSBidWZmZXIgc2l6ZSIpOwogfQogCisvKgorICog
Q2xlYXIgdGhlIGNvbnNvbGUgaGlzdG9yeSBidWZmZXIuCisgKi8KKwogdm9pZAogY2xlYXJfaGlz
dG9yeSgpCiB7CiAKLQlpZiAoaW9jdGwoMCwgQ09OU19DTFJISVNUKSA9PSAtMSkKLQkJd2Fybigi
Y2xlYXIgaGlzdG9yeSBidWZmZXIiKTsKKy8vCWlmIChpb2N0bCgwLCBDT05TX0NMUkhJU1QpID09
IC0xKQorLy8JCXdhcm4oImNsZWFyIGhpc3RvcnkgYnVmZmVyIik7CisJaWYgKGlvY3RsKDAsIENP
TlNfQ0xSSElTVCkgPT0gLTEpIHsKKwkJcmV2ZXJ0KCk7CisJCWVycmMoMSwgZXJybm8sICJjbGVh
cmluZyBoaXN0b3J5IGJ1ZmZlciIpOworCX0KIH0KIAogaW50CkBAIC03NzEsMTIgKzExNTAsMTAg
QEAKIAljaGFyCSpmb250LCAqdHlwZTsKIAlpbnQJZHVtcG1vZCwgZHVtcG9wdCwgb3B0OwogCWlu
dAlyZXRlcnI7Ci0KKwlpbml0KCk7CiAJaW5mby5zaXplID0gc2l6ZW9mKGluZm8pOwotCWlmIChh
cmdjID09IDEpCi0JCXVzYWdlKCk7Ci0JCS8qIE5vdCByZWFjaGVkICovCi0JaWYgKGlvY3RsKDAs
IENPTlNfR0VUSU5GTywgJmluZm8pIDwgMCkKKworCWlmIChpb2N0bCgwLCBDT05TX0dFVElORk8s
ICZpbmZvKSA9PSAtMSkKIAkJZXJyKDEsICJtdXN0IGJlIG9uIGEgdmlydHVhbCBjb25zb2xlIik7
CiAJZHVtcG1vZCA9IDA7CiAJZHVtcG9wdCA9IERVTVBfRkJGOwpAQCAtODA0LDkgKzExODEsMTIg
QEAKIAkJCWxvYWRfZm9udCh0eXBlLCBmb250KTsKIAkJCWJyZWFrOwogCQljYXNlICdnJzoKLQkJ
CWlmIChzc2NhbmYob3B0YXJnLCAiJWR4JWQiLCAmdmVzYV9jb2xzLAotCQkJICAgICZ2ZXNhX3Jv
d3MpICE9IDIpIHsKLQkJCQl3YXJueCgiaW5jb3JyZWN0IGdlb21ldHJ5OiAlcyIsIG9wdGFyZyk7
CisvLwkJCWlmIChzc2NhbmYob3B0YXJnLCAiJWR4JWQiLCAmdmVzYV9jb2xzLAorLy8JCQkgICAg
JnZlc2Ffcm93cykgIT0gMikgeworCisJCQkJaWYgKHNzY2FuZihvcHRhcmcsICIlZHglZCIsCisJ
CQkgICAgJnZlc2FfY29scywgJnZlc2Ffcm93cykgIT0gMikgeworCQkJCXJldmVydCgpOwkJd2Fy
bngoImluY29ycmVjdCBnZW9tZXRyeTogJXMiLCBvcHRhcmcpOwogCQkJCXVzYWdlKCk7CiAJCQl9
CiAJCQlicmVhazsKQEAgLTgzOCw3ICsxMjE4LDcgQEAKIAkJCWR1bXBtb2QgPSBEVU1QX0ZNVF9U
WFQ7CiAJCQlicmVhazsKIAkJY2FzZSAncic6Ci0JCQlzZXRfcmV2ZXJzZV9jb2xvcnMoYXJnYywg
YXJndiwgJm9wdGluZCk7CisJCQlnZXRfcmV2ZXJzZV9jb2xvcnMoYXJnYywgYXJndiwgJm9wdGlu
ZCk7CiAJCQlicmVhazsKIAkJY2FzZSAnUyc6CiAJCQlzZXRfbG9ja3N3aXRjaChvcHRhcmcpOwpA
QCAtODU4LDEzICsxMjM4LDMyIEBACiAJaWYgKGR1bXBtb2QgIT0gMCkKIAkJZHVtcF9zY3JlZW4o
ZHVtcG1vZCwgZHVtcG9wdCk7CiAJcmV0ZXJyID0gdmlkZW9fbW9kZShhcmdjLCBhcmd2LCAmb3B0
aW5kKTsKLQlzZXRfbm9ybWFsX2NvbG9ycyhhcmdjLCBhcmd2LCAmb3B0aW5kKTsKKwlnZXRfbm9y
bWFsX2NvbG9ycyhhcmdjLCBhcmd2LCAmb3B0aW5kKTsKIAlpZiAob3B0aW5kIDwgYXJnYyAmJiAh
c3RyY21wKGFyZ3Zbb3B0aW5kXSwgInNob3ciKSkgewogCQl0ZXN0X2ZyYW1lKCk7CiAJCW9wdGlu
ZCsrOwogCX0KKworCXZpZGVvX21vZGUoYXJnYywgYXJndiwgJm9wdGluZCk7CisKKwlnZXRfbm9y
bWFsX2NvbG9ycyhhcmdjLCBhcmd2LCAmb3B0aW5kKTsKKworCWlmIChjb2xvcnNfY2hhbmdlZCB8
fCB2aWRlb19tb2RlX2NoYW5nZWQpIHsKKwkJaWYgKCEobmV3X21vZGVfaW5mby52aV9mbGFncyAm
IFZfSU5GT19HUkFQSElDUykpIHsKKwkJCWlmICgobm9ybWFsX2JhY2tfY29sb3IgPCA4KSAmJiAo
cmV2ZXJzX2JhY2tfY29sb3IgPCA4KSkgeworCQkJCXNldF9jb2xvcnMoKTsKKwkJCX0gZWxzZSB7
CisJCQkJcmV2ZXJ0KCk7CisJCQkJZXJyeCgxLCAiYmcgY29sb3IgZm9yIHRleHQgbW9kZXMgbXVz
dCBiZSA8IDgiKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXNldF9jb2xvcnMoKTsKKwkJfQorCX0K
KwogCWlmICgob3B0aW5kICE9IGFyZ2MpIHx8IChhcmdjID09IDEpKQogCQl1c2FnZSgpOwogCXJl
dHVybiByZXRlcnI7CiB9CisKIAo=

--------------Boundary-00=_BVNA40MWKGMMYJ0CCJD0--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42B47157.000001.26107>