<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>15826</bug_id>
          
          <creation_ts>2007-11-04 01:11:09 -0800</creation_ts>
          <short_desc>optimize opcode loop and case insensitive ASCII compares for a 30% speedup</short_desc>
          <delta_ts>2007-11-04 08:19:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>60220</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-04 01:11:09 -0800</bug_when>
    <thetext>SunSpider says it&apos;s 2.6% faster overall, 32.5% in the regular expression tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60221</commentid>
    <comment_count>1</comment_count>
      <attachid>17029</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-04 01:20:12 -0800</bug_when>
    <thetext>Created attachment 17029
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60222</commentid>
    <comment_count>2</comment_count>
      <attachid>17029</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-11-04 01:36:29 -0800</bug_when>
    <thetext>Comment on attachment 17029
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60236</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-11-04 08:19:37 -0800</bug_when>
    <thetext>This was landed in r27422.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17029</attachid>
            <date>2007-11-04 01:20:12 -0800</date>
            <delta_ts>2007-11-04 01:36:29 -0800</delta_ts>
            <desc>patch</desc>
            <filename>FastPCREPatch.txt</filename>
            <type>text/plain</type>
            <size>55577</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDIxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDctMTEtMDQgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU4MjYKKyAgICAgICAgICBvcHRpbWl6ZSBvcGNvZGUgbG9vcCBhbmQgY2FzZSBpbnNlbnNpdGl2
ZSBBU0NJSSBjb21wYXJlcyBmb3IgYSAzMCUgc3BlZWR1cAorCisgICAgICAgIFN1blNwaWRlciBz
YXlzIGl0J3MgMi42JSBmYXN0ZXIgb3ZlcmFsbCwgMzIuNSUgaW4gdGhlIHJlZ3VsYXIgZXhwcmVz
c2lvbiB0ZXN0cy4KKworICAgICAgICAqIHBjcmUvcGNyZV9pbnRlcm5hbC5oOiBBZGRlZCBPUF9B
U0NJSV9DSEFSIGFuZCBPUF9BU0NJSV9MRVRURVJfTkMuCisKKyAgICAgICAgKiBwY3JlL3BjcmVf
Y29tcGlsZS5jOgorICAgICAgICAoZmluZF9maXhlZGxlbmd0aCk6IEFkZGVkIGNhc2VzIGZvciBP
UF9BU0NJSV9DSEFSIGFuZCBPUF9BU0NJSV9MRVRURVJfTkMuCisgICAgICAgIChjb3VsZF9iZV9l
bXB0eV9icmFuY2gpOiBEaXR0by4KKyAgICAgICAgKGNvbXBpbGVfYnJhbmNoKTogU3RyZWFtbGlu
ZWQgYWxsIHRoZSBzaW5nbGUtY2hhcmFjdGVyIGNhc2VzOyB0aGVyZSB3YXMgYSBiaXQgb2YKKyAg
ICAgICAgZHVwbGljYXRlIGNvZGUuIEFkZGVkIGNhc2VzIGZvciBPUF9BU0NJSV9DSEFSIGFuZCBP
UF9BU0NJSV9MRVRURVJfTkMgYXMgbmVlZGVkLgorICAgICAgICBCdXQgaW4gcGFydGljdWxhciwg
Y29tcGlsZSB0byB0aG9zZSBvcGNvZGVzIHdoZW4gdGhlIHNpbmdsZSBjaGFyYWN0ZXIgbWF0Y2gg
aXMKKyAgICAgICAgQVNDSUkuCisgICAgICAgIChmaW5kX2ZpcnN0YXNzZXJ0ZWRjaGFyKTogQWRk
ZWQgY2FzZXMgZm9yIE9QX0FTQ0lJX0NIQVIgYW5kIE9QX0FTQ0lJX0xFVFRFUl9OQy4KKworICAg
ICAgICAqIHBjcmUvcGNyZV9leGVjLmM6IChtYXRjaCk6IFJlbW92ZWQgdGhlICJtaW4iLCAibWlu
aW1pemUiLCBhbmQgIm9wIiBmaWVsZHMgZnJvbQorICAgICAgICB0aGUgbWF0Y2hmcmFtZSwgYWZ0
ZXIgSSBkaXNjb3ZlcmVkIHRoYXQgbm9uZSBvZiB0aGVtIG5lZWRlZCB0byBiZSBzYXZlZCBhbmQg
cmVzdG9yZWQKKyAgICAgICAgYWNyb3NzIHJlY3Vyc2l2ZSBtYXRjaCBjYWxscy4gQWxzbyBlbGlt
aW5hdGVkIHRoZSBpZ25vcmVkIHJlc3VsdCBmaWVsZCBmcm9tIHRoZQorICAgICAgICBtYXRjaGZy
YW1lLCBzaW5jZSBJIGRpc2NvdmVyZWQgdGhhdCBycmMgKCJyZWN1cnNpdmUgcmVzdWx0IGNvZGUi
KSB3YXMgYWxyZWFkeSB0aGUKKyAgICAgICAgZXhhY3Qgc2FtZSB0aGluZy4gTW92ZWQgdGhlIGhh
bmRsaW5nIG9mIG9wY29kZXMgaGlnaGVyIHRoYW4gT1BfQlJBIGludG8gdGhlIGRlZmF1bHQKKyAg
ICAgICAgc3RhdGVtZW50IG9mIHRoZSBzd2l0Y2ggaW5zdGVhZCBvZiBkb2luZyB0aGVtIGJlZm9y
ZSB0aGUgc3dpdGNoLiBUaGlzIHJlbW92ZXMgYQorICAgICAgICBicmFuY2ggZnJvbSBlYWNoIGl0
ZXJhdGlvbiBvZiB0aGUgb3Bjb2RlIGludGVycHJldGVyLCBqdXN0IGFzIHJlbW92YWwgb2YgIm9w
IgorICAgICAgICByZW1vdmVkIGF0IGxlYXN0IG9uZSBzdG9yZSBmcm9tIGVhY2ggaXRlcmF0aW9u
LiBMYXN0LCBidXQgbm90IGxlYXN0LCBhZGQgdGhlCisgICAgICAgIE9QX0FTQ0lJX0NIQVIgYW5k
IE9QX0FTQ0lJX0xFVFRFUl9OQyBmdW5jdGlvbnMuIE5laXRoZXIgY2FuIGV2ZXIgbWF0Y2ggYQor
ICAgICAgICBzdXJyb2dhdGUgcGFpciBhbmQgdGhlIGxldHRlciBjYXNlIGNhbiBiZSBoYW5kbGVk
IGVmZmljaWVudGx5CisKIDIwMDctMTEtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgICogcGNyZS9wY3JlX2V4ZWMuYzogKG1hdGNoKTogVHJ5IHRvIGZpeCB0aGUg
V2luZG93cyBidWlsZCBieSByZW1vdmluZyB1bnJlYWNoYWJsZSBjb2RlLgpJbmRleDogSmF2YVNj
cmlwdENvcmUvcGNyZS9wY3JlX2NvbXBpbGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9wY3JlL3BjcmVfY29tcGlsZS5jCShyZXZpc2lvbiAyNzQyMCkKKysrIEphdmFTY3JpcHRDb3Jl
L3BjcmUvcGNyZV9jb21waWxlLmMJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw3ICs1NTMsNyBAQCBm
aXJzdF9zaWduaWZpY2FudF9jb2RlKGNvbnN0IHVzY2hhciAqY29kCiB7CiBmb3IgKDs7KQogICB7
Ci0gIHN3aXRjaCAoKGludCkqY29kZSkKKyAgc3dpdGNoICgqY29kZSkKICAgICB7CiAgICAgY2Fz
ZSBPUF9BU1NFUlRfTk9UOgogICAgIGlmICghc2tpcGFzc2VydCkgcmV0dXJuIGNvZGU7CkBAIC02
NjEsOSArNjYxLDE2IEBAIGZvciAoOzspCiAKICAgICBjYXNlIE9QX0NIQVI6CiAgICAgY2FzZSBP
UF9DSEFSTkM6CisgICAgY2FzZSBPUF9OT1Q6CisgICAgYnJhbmNobGVuZ3RoKys7CisgICAgY2Mg
Kz0gMjsKKyAgICB3aGlsZSAoKCpjYyAmIDB4YzApID09IDB4ODApIGNjKys7CisgICAgYnJlYWs7
CisKKyAgICBjYXNlIE9QX0FTQ0lJX0NIQVI6CisgICAgY2FzZSBPUF9BU0NJSV9MRVRURVJfTkM6
CiAgICAgYnJhbmNobGVuZ3RoKys7CiAgICAgY2MgKz0gMjsKLSAgICAgIHdoaWxlICgoKmNjICYg
MHhjMCkgPT0gMHg4MCkgY2MrKzsKICAgICBicmVhazsKIAogICAgIC8qIEhhbmRsZSBleGFjdCBy
ZXBldGl0aW9ucy4gVGhlIGNvdW50IGlzIGFscmVhZHkgaW4gY2hhcmFjdGVycywgYnV0IHdlCkBA
IC02NzIsNyArNjc5LDcgQEAgZm9yICg7OykKICAgICBjYXNlIE9QX0VYQUNUOgogICAgIGJyYW5j
aGxlbmd0aCArPSBHRVQyKGNjLDEpOwogICAgIGNjICs9IDQ7Ci0gICAgICB3aGlsZSgoKmNjICYg
MHg4MCkgPT0gMHg4MCkgY2MrKzsKKyAgICB3aGlsZSgoKmNjICYgMHg4MCkgPT0gMHg4MCkgY2Mr
KzsKICAgICBicmVhazsKIAogICAgIGNhc2UgT1BfVFlQRUVYQUNUOgpAQCAtODI5LDYgKzgzNiw4
IEBAIGZvciAoY29kZSA9IGZpcnN0X3NpZ25pZmljYW50X2NvZGUoY29kZSAKICAgICBjYXNlIE9Q
X0FOWToKICAgICBjYXNlIE9QX0NIQVI6CiAgICAgY2FzZSBPUF9DSEFSTkM6CisgICAgY2FzZSBP
UF9BU0NJSV9DSEFSOgorICAgIGNhc2UgT1BfQVNDSUlfTEVUVEVSX05DOgogICAgIGNhc2UgT1Bf
Tk9UOgogICAgIGNhc2UgT1BfUExVUzoKICAgICBjYXNlIE9QX01JTlBMVVM6CkBAIC0xNDAyLDE0
ICsxNDExLDggQEAgZm9yICg7OyBwdHIrKykKICAgICAgIC8qIEZvciBhIHNpbmdsZSwgcG9zaXRp
dmUgY2hhcmFjdGVyLCBnZXQgdGhlIHZhbHVlIGludG8gbWNidWZmZXIsIGFuZAogICAgICAgdGhl
biB3ZSBjYW4gaGFuZGxlIHRoaXMgd2l0aCB0aGUgbm9ybWFsIG9uZS1jaGFyYWN0ZXIgY29kZS4g
Ki8KIAotICAgICAgaWYgKGNsYXNzX2xhc3RjaGFyID4gMTI3KQotICAgICAgICBtY2xlbmd0aCA9
IF9wY3JlX29yZDJ1dGY4KGNsYXNzX2xhc3RjaGFyLCBtY2J1ZmZlcik7Ci0gICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgbWNidWZmZXJbMF0gPSBjbGFzc19sYXN0Y2hhcjsKLSAgICAgICAg
bWNsZW5ndGggPSAxOwotICAgICAgICB9Ci0gICAgICBnb3RvIE9ORV9DSEFSOworICAgICAgYyA9
IGNsYXNzX2xhc3RjaGFyOworICAgICAgZ290byBOT1JNQUxfQ0hBUjsKICAgICAgIH0gICAgICAg
LyogRW5kIG9mIDEtY2hhciBvcHRpbWl6YXRpb24gKi8KIAogICAgIC8qIFRoZSBnZW5lcmFsIGNh
c2UgLSBub3QgdGhlIG9uZS1jaGFyIG9wdGltaXphdGlvbi4gSWYgdGhpcyBpcyB0aGUgZmlyc3QK
QEAgLTE1NjMsMTAgKzE1NjYsNiBAQCBmb3IgKDs7IHB0cisrKQogICAgICAgICBjIHw9IDB4ODA7
ICAgICAgICAgICAgICAgICAgICAgIC8qIEZsYWcgYyBhcyBhIGxlbmd0aCAqLwogICAgICAgICB9
CiAgICAgICBlbHNlCi0KLSAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSBvZiBhIHNpbmdsZSBieXRl
IC0gZWl0aGVyIHdpdGggbm8gVVRGOCBzdXBwb3J0LCBvcgotICAgICAgd2l0aCBVVEYtOCBkaXNh
YmxlZCwgb3IgZm9yIGEgVVRGLTggY2hhcmFjdGVyIDwgMTI4LiAqLwotCiAgICAgICAgIHsKICAg
ICAgICAgYyA9IGNvZGVbLTFdOwogICAgICAgICBpZiAocmVwZWF0X21pbiA+IDEpIHJlcWJ5dGUg
PSBjIHwgcmVxX2Nhc2VvcHQgfCBjZC0+cmVxX3ZhcnlvcHQ7CkBAIC0xNTc1LDYgKzE1NzQsMTMg
QEAgZm9yICg7OyBwdHIrKykKICAgICAgIGdvdG8gT1VUUFVUX1NJTkdMRV9SRVBFQVQ7ICAgLyog
Q29kZSBzaGFyZWQgd2l0aCBzaW5nbGUgY2hhcmFjdGVyIHR5cGVzICovCiAgICAgICB9CiAKKyAg
ICBlbHNlIGlmICgqcHJldmlvdXMgPT0gT1BfQVNDSUlfQ0hBUiB8fCAqcHJldmlvdXMgPT0gT1Bf
QVNDSUlfTEVUVEVSX05DKQorICAgICAgeworICAgICAgYyA9IHByZXZpb3VzWzFdOworICAgICAg
aWYgKHJlcGVhdF9taW4gPiAxKSByZXFieXRlID0gYyB8IHJlcV9jYXNlb3B0IHwgY2QtPnJlcV92
YXJ5b3B0OworICAgICAgZ290byBPVVRQVVRfU0lOR0xFX1JFUEVBVDsKKyAgICAgIH0KKwogICAg
IC8qIElmIHByZXZpb3VzIHdhcyBhIHNpbmdsZSBuZWdhdGVkIGNoYXJhY3RlciAoW15hXSBvciBz
aW1pbGFyKSwgd2UgdXNlCiAgICAgb25lIG9mIHRoZSBzcGVjaWFsIG9wY29kZXMsIHJlcGxhY2lu
ZyBpdC4gVGhlIGNvZGUgaXMgc2hhcmVkIHdpdGggc2luZ2xlLQogICAgIGNoYXJhY3RlciByZXBl
YXRzIGJ5IHNldHRpbmcgb3B0X3R5cGUgdG8gYWRkIGEgc3VpdGFibGUgb2Zmc2V0IGludG8KQEAg
LTIwMTEsNyArMjAxNyw3IEBAIGZvciAoOzsgcHRyKyspCiAgICAgICAgICAmcHRyLCAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBJbnB1dCBwb2ludGVyICh1cGRhdGVkKSAqLwogICAgICAgICAg
cGF0dGVybkVuZCwKICAgICAgICAgIGVycm9yY29kZXB0ciwgICAgICAgICAgICAgICAgIC8qIFdo
ZXJlIHRvIHB1dCBhbiBlcnJvciBtZXNzYWdlICovCi0gICAgICAgICBza2lwYnl0ZXMsICAgICAg
ICAgICAgICAgICAgICAvKiBTa2lwIG92ZXIgT1BfQ09ORC9PUF9CUkFOVU1CRVIgKi8KKyAgICAg
ICAgIHNraXBieXRlcywgICAgICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBPUF9CUkFOVU1C
RVIgKi8KICAgICAgICAgICZzdWJmaXJzdGJ5dGUsICAgICAgICAgICAgICAgIC8qIEZvciBwb3Nz
aWJsZSBmaXJzdCBjaGFyICovCiAgICAgICAgICAmc3VicmVxYnl0ZSwgICAgICAgICAgICAgICAg
ICAvKiBGb3IgcG9zc2libGUgbGFzdCBjaGFyICovCiAgICAgICAgICBjZCkpICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBUYWJsZXMgYmxvY2sgKi8KQEAgLTIxMzYsMTkgKzIxNDIsNyBAQCBm
b3IgKDs7IHB0cisrKQogICAgICAgY29udGludWU7CiAgICAgICB9CiAKLSAgICAvKiBXZSBoYXZl
IGEgZGF0YSBjaGFyYWN0ZXIgd2hvc2UgdmFsdWUgaXMgaW4gYy4gSW4gVVRGLTggbW9kZSBpdCBt
YXkgaGF2ZQotICAgIGEgdmFsdWUgPiAxMjcuIFdlIHNldCBpdHMgcmVwcmVzZW50YXRpb24gaW4g
dGhlIGxlbmd0aC9idWZmZXIsIGFuZCB0aGVuCi0gICAgaGFuZGxlIGl0IGFzIGEgZGF0YSBjaGFy
YWN0ZXIuICovCi0KLSAgICBpZiAoYyA+IDEyNykKLSAgICAgIG1jbGVuZ3RoID0gX3BjcmVfb3Jk
MnV0ZjgoYywgbWNidWZmZXIpOwotICAgIGVsc2UKLSAgICAgewotICAgICBtY2J1ZmZlclswXSA9
IGM7Ci0gICAgIG1jbGVuZ3RoID0gMTsKLSAgICAgfQotCi0gICAgZ290byBPTkVfQ0hBUjsKKyAg
ICAvKiBGYWxsIHRocm91Z2guICovCiAKICAgICAvKiBIYW5kbGUgYSBsaXRlcmFsIGNoYXJhY3Rl
ci4gSXQgaXMgZ3VhcmFudGVlZCBub3QgdG8gYmUgd2hpdGVzcGFjZSBvciAjCiAgICAgd2hlbiB0
aGUgZXh0ZW5kZWQgZmxhZyBpcyBzZXQuIElmIHdlIGFyZSBpbiBVVEYtOCBtb2RlLCBpdCBtYXkg
YmUgYQpAQCAtMjE1NiwyMSArMjE1MCwzMiBAQCBmb3IgKDs7IHB0cisrKQogCiAgICAgZGVmYXVs
dDoKICAgICBOT1JNQUxfQ0hBUjoKKworICAgIHByZXZpb3VzID0gY29kZTsKKwogICAgIGlmIChj
IDwgMTI4KQogICAgICAgewotICAgICAgIG1jbGVuZ3RoID0gMTsKLSAgICAgICBtY2J1ZmZlclsw
XSA9IGM7Ci0gICAgIH0KKyAgICAgIG1jbGVuZ3RoID0gMTsKKyAgICAgIG1jYnVmZmVyWzBdID0g
YzsKKworICAgICAgaWYgKG9wdGlvbnMgJiBQQ1JFX0NBU0VMRVNTICYmIChjIHwgMHgyMCkgPj0g
J2EnICYmIChjIHwgMHgyMCkgPD0gJ3onKQorICAgICAgICB7CisgICAgICAgICpjb2RlKysgPSBP
UF9BU0NJSV9MRVRURVJfTkM7CisgICAgICAgICpjb2RlKysgPSBjIHwgMHgyMDsKKyAgICAgICAg
fQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICpjb2RlKysgPSBPUF9BU0NJSV9DSEFS
OworICAgICAgICAqY29kZSsrID0gYzsKKyAgICAgICAgfQorICAgICAgfQogICAgIGVsc2UKKyAg
ICAgIHsKICAgICAgIG1jbGVuZ3RoID0gX3BjcmVfb3JkMnV0ZjgoYywgbWNidWZmZXIpOwogCi0g
ICAgLyogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIHRoZSBjaGFyYWN0ZXIncyBieXRlcyBpbiBtY2J1
ZmZlciwgYW5kIHRoZSBsZW5ndGgKLSAgICBpbiBtY2xlbmd0aC4gV2hlbiBub3QgaW4gVVRGLTgg
bW9kZSwgdGhlIGxlbmd0aCBpcyBhbHdheXMgMS4gKi8KLQotICAgIE9ORV9DSEFSOgotICAgIHBy
ZXZpb3VzID0gY29kZTsKLSAgICAqY29kZSsrID0gKChvcHRpb25zICYgUENSRV9DQVNFTEVTUykg
IT0gMCk/IE9QX0NIQVJOQyA6IE9QX0NIQVI7Ci0gICAgZm9yIChjID0gMDsgYyA8IG1jbGVuZ3Ro
OyBjKyspICpjb2RlKysgPSBtY2J1ZmZlcltjXTsKKyAgICAgICpjb2RlKysgPSAoKG9wdGlvbnMg
JiBQQ1JFX0NBU0VMRVNTKSAhPSAwKT8gT1BfQ0hBUk5DIDogT1BfQ0hBUjsKKyAgICAgIGZvciAo
YyA9IDA7IGMgPCBtY2xlbmd0aDsgYysrKSAqY29kZSsrID0gbWNidWZmZXJbY107CisgICAgICB9
CiAKICAgICAvKiBTZXQgdGhlIGZpcnN0IGFuZCByZXF1aXJlZCBieXRlcyBhcHByb3ByaWF0ZWx5
LiBJZiBubyBwcmV2aW91cyBmaXJzdAogICAgIGJ5dGUsIHNldCBpdCBmcm9tIHRoaXMgY2hhcmFj
dGVyLCBidXQgcmV2ZXJ0IHRvIG5vbmUgb24gYSB6ZXJvIHJlcGVhdC4KQEAgLTIyMzgsNyArMjI0
Myw3IEBAIEFyZ3VtZW50OgogICBjb2RlcHRyICAgICAgICAtPiB0aGUgYWRkcmVzcyBvZiB0aGUg
Y3VycmVudCBjb2RlIHBvaW50ZXIKICAgcHRycHRyICAgICAgICAgLT4gdGhlIGFkZHJlc3Mgb2Yg
dGhlIGN1cnJlbnQgcGF0dGVybiBwb2ludGVyCiAgIGVycm9yY29kZXB0ciAgIC0+IHBvaW50ZXIg
dG8gZXJyb3IgY29kZSB2YXJpYWJsZQotICBza2lwYnl0ZXMgICAgICBza2lwIHRoaXMgbWFueSBi
eXRlcyBhdCBzdGFydCAoZm9yIE9QX0NPTkQsIE9QX0JSQU5VTUJFUikKKyAgc2tpcGJ5dGVzICAg
ICAgc2tpcCB0aGlzIG1hbnkgYnl0ZXMgYXQgc3RhcnQgKGZvciBPUF9CUkFOVU1CRVIpCiAgIGZp
cnN0Ynl0ZXB0ciAgIHBsYWNlIHRvIHB1dCB0aGUgZmlyc3QgcmVxdWlyZWQgY2hhcmFjdGVyLCBv
ciBhIG5lZ2F0aXZlIG51bWJlcgogICByZXFieXRlcHRyICAgICBwbGFjZSB0byBwdXQgdGhlIGxh
c3QgcmVxdWlyZWQgY2hhcmFjdGVyLCBvciBhIG5lZ2F0aXZlIG51bWJlcgogICBjZCAgICAgICAg
ICAgICBwb2ludHMgdG8gdGhlIGRhdGEgYmxvY2sgd2l0aCB0YWJsZXMgcG9pbnRlcnMgZXRjLgpA
QCAtMjU2NCw2ICsyNTY5LDggQEAgZG8gewogCiAgICAgIGNhc2UgT1BfQ0hBUjoKICAgICAgY2Fz
ZSBPUF9DSEFSTkM6CisgICAgIGNhc2UgT1BfQVNDSUlfQ0hBUjoKKyAgICAgY2FzZSBPUF9BU0NJ
SV9MRVRURVJfTkM6CiAgICAgIGNhc2UgT1BfUExVUzoKICAgICAgY2FzZSBPUF9NSU5QTFVTOgog
ICAgICBpZiAoIWluYXNzZXJ0KSByZXR1cm4gLTE7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3Jl
L3BjcmVfZXhlYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9leGVj
LmMJKHJldmlzaW9uIDI3NDIxKQorKysgSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuYwko
d29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3IEBAIGEgYml0IG1vcmUgY29kZSBhbmQgbm90
aWNlIGlmIHdlIHVzZSBjb24KICNlbmRpZgogCiAKLSNkZWZpbmUgUk1BVENIKG51bSxyeCxyYixy
ZixyZylcCisjZGVmaW5lIFJNQVRDSChudW0sIHJhLCByYiwgcmMpXAogICB7XAogICBpZiAoZnJh
bWUgPj0gc3RhY2tmcmFtZXMgJiYgZnJhbWUgKyAxIDwgc3RhY2tmcmFtZXNlbmQpXAogICAgIG5l
d2ZyYW1lID0gZnJhbWUgKyAxO1wKQEAgLTIyNCwxOSArMjI0LDE4IEBAIGEgYml0IG1vcmUgY29k
ZSBhbmQgbm90aWNlIGlmIHdlIHVzZSBjb24KICAgICBuZXdmcmFtZSA9IChwY3JlX21hbGxvYyko
c2l6ZW9mKG1hdGNoZnJhbWUpKTtcCiAgIGZyYW1lLT53aGVyZSA9IFJNQVRDSF9XSEVSRShudW0p
O1wKICAgbmV3ZnJhbWUtPmVwdHIgPSBmcmFtZS0+ZXB0cjtcCi0gIG5ld2ZyYW1lLT5lY29kZSA9
IHJiO1wKKyAgbmV3ZnJhbWUtPmVjb2RlID0gKHJhKTtcCiAgIG5ld2ZyYW1lLT5vZmZzZXRfdG9w
ID0gZnJhbWUtPm9mZnNldF90b3A7XAotICBuZXdmcmFtZS0+ZXB0cmIgPSByZjtcCi0gIGlzX2dy
b3VwX3N0YXJ0ID0gcmc7XAorICBuZXdmcmFtZS0+ZXB0cmIgPSAocmIpO1wKKyAgaXNfZ3JvdXBf
c3RhcnQgPSAocmMpO1wKICAgKytyZGVwdGg7XAogICBuZXdmcmFtZS0+cHJldmZyYW1lID0gZnJh
bWU7XAogICBmcmFtZSA9IG5ld2ZyYW1lO1wKICAgRFBSSU5URigoInJlc3RhcnRpbmcgZnJvbSBs
aW5lICVkXG4iLCBfX0xJTkVfXykpO1wKICAgZ290byBIRUFQX1JFQ1VSU0U7XAogUlJFVFVSTl8j
I251bTpcCi0gIERQUklOVEYoKCJkaWQgYSBnb3RvIGJhY2sgdG8gbGluZSAlZFxuIiwgX19MSU5F
X18pKTtcCi0gIHJ4ID0gcmVzdWx0O1wKICAgLS1yZGVwdGg7XAorICBEUFJJTlRGKCgiZGlkIGEg
Z290byBiYWNrIHRvIGxpbmUgJWRcbiIsIF9fTElORV9fKSk7XAogICB9CiAKICNkZWZpbmUgUlJF
VFVSTihyYSlcCkBAIC0yNDcsNyArMjQ2LDcgQEAgUlJFVFVSTl8jI251bTpcCiAgICAgKHBjcmVf
ZnJlZSkobmV3ZnJhbWUpO1wKICAgaWYgKGZyYW1lICE9IE5VTEwpXAogICAgIHtcCi0gICAgcmVz
dWx0ID0gcmE7XAorICAgIHJyYyA9IChyYSk7XAogICAgIGdvdG8gUlJFVFVSTl9MQUJFTDtcCiAg
ICAgfVwKICAgcmV0dXJuIHJhO1wKQEAgLTI3NCw4ICsyNzMsNiBAQCB0eXBlZGVmIHN0cnVjdCBt
YXRjaGZyYW1lIHsKICAgY29uc3QgdXNjaGFyICpwcmV2OwogICBjb25zdCBwY3JlX3VjaGFyICpz
YXZlZF9lcHRyOwogCi0gIEJPT0wgbWluaW1pemU7Ci0KICAgaW50IHJlcGVhdF9vdGhlcmNhc2U7
CiAKICAgaW50IGN0eXBlOwpAQCAtMjgzLDEwICsyODAsOCBAQCB0eXBlZGVmIHN0cnVjdCBtYXRj
aGZyYW1lIHsKICAgaW50IGZpOwogICBpbnQgbGVuZ3RoOwogICBpbnQgbWF4OwotICBpbnQgbWlu
OwogICBpbnQgbnVtYmVyOwogICBpbnQgb2Zmc2V0OwotICBpbnQgb3A7CiAgIGludCBzYXZlX29m
ZnNldDEsIHNhdmVfb2Zmc2V0Miwgc2F2ZV9vZmZzZXQzOwogCiAgIGVwdHJibG9jayBuZXdwdHJi
OwpAQCAtMzUwLDYgKzM0NSw4IEBAIHVuc2lnbmVkIHJkZXB0aCA9IDA7CiBCT09MIGN1cl9pc193
b3JkOwogQk9PTCBwcmV2X2lzX3dvcmQ7CiBCT09MIGlzX2dyb3VwX3N0YXJ0ID0gVFJVRTsKK2lu
dCBtaW47CitCT09MIG1pbmltaXplID0gRkFMU0U7IC8qIEluaXRpYWxpemF0aW9uIG5vdCByZWFs
bHkgbmVlZGVkLCBidXQgc29tZSBjb21waWxlcnMgdGhpbmsgc28uICovCiAKIC8qIFdoZW4gcmVj
dXJzaW9uIGlzIG5vdCBiZWluZyB1c2VkLCBhbGwgImxvY2FsIiB2YXJpYWJsZXMgdGhhdCBoYXZl
IHRvIGJlCiBwcmVzZXJ2ZWQgb3ZlciBjYWxscyB0byBSTUFUQ0goKSBhcmUgcGFydCBvZiBhICJm
cmFtZSIgd2hpY2ggaXMgb2J0YWluZWQgZnJvbQpAQCAtMzY0LDcgKzM2MSw2IEBAIG1hdGNoZnJh
bWUgKnN0YWNrZnJhbWVzZW5kID0gc3RhY2tmcmFtZXMKIAogbWF0Y2hmcmFtZSAqZnJhbWUgPSBz
dGFja2ZyYW1lczsKIG1hdGNoZnJhbWUgKm5ld2ZyYW1lOwotaW50IHJlc3VsdDsKIGZyYW1lLT5w
cmV2ZnJhbWUgPSBOVUxMOyAgICAgICAgICAgIC8qIE1hcmtzIHRoZSB0b3AgbGV2ZWwgKi8KIAog
LyogQ29weSBpbiB0aGUgb3JpZ2luYWwgYXJndW1lbnQgdmFyaWFibGVzICovCkBAIC00MDgsODAg
KzQwNCwxNiBAQCBpZiAoaXNfZ3JvdXBfc3RhcnQpCiAKIGZvciAoOzspCiAgIHsKLSAgZnJhbWUt
Pm9wID0gKmZyYW1lLT5lY29kZTsKLSAgZnJhbWUtPm1pbmltaXplID0gRkFMU0U7Ci0KLSAgLyog
T3BlbmluZyBjYXB0dXJpbmcgYnJhY2tldC4gSWYgdGhlcmUgaXMgc3BhY2UgaW4gdGhlIG9mZnNl
dCB2ZWN0b3IsIHNhdmUKLSAgdGhlIGN1cnJlbnQgc3ViamVjdCBwb3NpdGlvbiBpbiB0aGUgd29y
a2luZyBzbG90IGF0IHRoZSB0b3Agb2YgdGhlIHZlY3Rvci4gV2UKLSAgbXVzdG4ndCBjaGFuZ2Ug
dGhlIGN1cnJlbnQgdmFsdWVzIG9mIHRoZSBkYXRhIHNsb3QsIGJlY2F1c2UgdGhleSBtYXkgYmUg
c2V0Ci0gIGZyb20gYSBwcmV2aW91cyBpdGVyYXRpb24gb2YgdGhpcyBncm91cCwgYW5kIGJlIHJl
ZmVycmVkIHRvIGJ5IGEgcmVmZXJlbmNlCi0gIGluc2lkZSB0aGUgZ3JvdXAuCi0KLSAgSWYgdGhl
IGJyYWNrZXQgZmFpbHMgdG8gbWF0Y2gsIHdlIG5lZWQgdG8gcmVzdG9yZSB0aGlzIHZhbHVlIGFu
ZCBhbHNvIHRoZQotICB2YWx1ZXMgb2YgdGhlIGZpbmFsIG9mZnNldHMsIGluIGNhc2UgdGhleSB3
ZXJlIHNldCBieSBhIHByZXZpb3VzIGl0ZXJhdGlvbiBvZgotICB0aGUgc2FtZSBicmFja2V0Lgot
Ci0gIElmIHRoZXJlIGlzbid0IGVub3VnaCBzcGFjZSBpbiB0aGUgb2Zmc2V0IHZlY3RvciwgdHJl
YXQgdGhpcyBhcyBpZiBpdCB3ZXJlIGEKLSAgbm9uLWNhcHR1cmluZyBicmFja2V0LiBEb24ndCB3
b3JyeSBhYm91dCBzZXR0aW5nIHRoZSBmbGFnIGZvciB0aGUgZXJyb3IgY2FzZQotICBoZXJlOyB0
aGF0IGlzIGhhbmRsZWQgaW4gdGhlIGNvZGUgZm9yIEtFVC4gKi8KLQotICBpZiAoZnJhbWUtPm9w
ID4gT1BfQlJBKQotICAgIHsKLSAgICBmcmFtZS0+bnVtYmVyID0gZnJhbWUtPm9wIC0gT1BfQlJB
OwotCi0gICAgLyogRm9yIGV4dGVuZGVkIGV4dHJhY3Rpb24gYnJhY2tldHMgKGxhcmdlIG51bWJl
ciksIHdlIGhhdmUgdG8gZmlzaCBvdXQgdGhlCi0gICAgbnVtYmVyIGZyb20gYSBkdW1teSBvcGNv
ZGUgYXQgdGhlIHN0YXJ0LiAqLwotCi0gICAgaWYgKGZyYW1lLT5udW1iZXIgPiBFWFRSQUNUX0JB
U0lDX01BWCkKLSAgICAgIGZyYW1lLT5udW1iZXIgPSBHRVQyKGZyYW1lLT5lY29kZSwgMitMSU5L
X1NJWkUpOwotICAgIGZyYW1lLT5vZmZzZXQgPSBmcmFtZS0+bnVtYmVyIDw8IDE7Ci0KLSNpZmRl
ZiBERUJVRwotICAgIHByaW50Zigic3RhcnQgYnJhY2tldCAlZCBzdWJqZWN0PSIsIGZyYW1lLT5u
dW1iZXIpOwotICAgIHBjaGFycyhmcmFtZS0+ZXB0ciwgMTYsIFRSVUUsIG1kKTsKLSAgICBwcmlu
dGYoIlxuIik7Ci0jZW5kaWYKLQotICAgIGlmIChmcmFtZS0+b2Zmc2V0IDwgbWQtPm9mZnNldF9t
YXgpCi0gICAgICB7Ci0gICAgICBmcmFtZS0+c2F2ZV9vZmZzZXQxID0gbWQtPm9mZnNldF92ZWN0
b3JbZnJhbWUtPm9mZnNldF07Ci0gICAgICBmcmFtZS0+c2F2ZV9vZmZzZXQyID0gbWQtPm9mZnNl
dF92ZWN0b3JbZnJhbWUtPm9mZnNldCsxXTsKLSAgICAgIGZyYW1lLT5zYXZlX29mZnNldDMgPSBt
ZC0+b2Zmc2V0X3ZlY3RvclttZC0+b2Zmc2V0X2VuZCAtIGZyYW1lLT5udW1iZXJdOwotCi0gICAg
ICBEUFJJTlRGKCgic2F2aW5nICVkICVkICVkXG4iLCBmcmFtZS0+c2F2ZV9vZmZzZXQxLCBmcmFt
ZS0+c2F2ZV9vZmZzZXQyLCBmcmFtZS0+c2F2ZV9vZmZzZXQzKSk7Ci0gICAgICBtZC0+b2Zmc2V0
X3ZlY3RvclttZC0+b2Zmc2V0X2VuZCAtIGZyYW1lLT5udW1iZXJdID0gZnJhbWUtPmVwdHIgLSBt
ZC0+c3RhcnRfc3ViamVjdDsKLQotICAgICAgZG8KLSAgICAgICAgewotICAgICAgICBSTUFUQ0go
MSwgcnJjLCBmcmFtZS0+ZWNvZGUgKyAxICsgTElOS19TSVpFLCBmcmFtZS0+ZXB0cmIsIG1hdGNo
X2lzZ3JvdXApOwotICAgICAgICBpZiAocnJjICE9IE1BVENIX05PTUFUQ0gpIFJSRVRVUk4ocnJj
KTsKLSAgICAgICAgZnJhbWUtPmVjb2RlICs9IEdFVChmcmFtZS0+ZWNvZGUsIDEpOwotICAgICAg
ICB9Ci0gICAgICB3aGlsZSAoKmZyYW1lLT5lY29kZSA9PSBPUF9BTFQpOwotCi0gICAgICBEUFJJ
TlRGKCgiYnJhY2tldCAlZCBmYWlsZWRcbiIsIGZyYW1lLT5udW1iZXIpKTsKLQotICAgICAgbWQt
Pm9mZnNldF92ZWN0b3JbZnJhbWUtPm9mZnNldF0gPSBmcmFtZS0+c2F2ZV9vZmZzZXQxOwotICAg
ICAgbWQtPm9mZnNldF92ZWN0b3JbZnJhbWUtPm9mZnNldCsxXSA9IGZyYW1lLT5zYXZlX29mZnNl
dDI7Ci0gICAgICBtZC0+b2Zmc2V0X3ZlY3RvclttZC0+b2Zmc2V0X2VuZCAtIGZyYW1lLT5udW1i
ZXJdID0gZnJhbWUtPnNhdmVfb2Zmc2V0MzsKLQotICAgICAgUlJFVFVSTihNQVRDSF9OT01BVENI
KTsKLSAgICAgIH0KLQotICAgIC8qIEluc3VmZmljaWVudCByb29tIGZvciBzYXZpbmcgY2FwdHVy
ZWQgY29udGVudHMgKi8KLQotICAgIGVsc2UgZnJhbWUtPm9wID0gT1BfQlJBOwotICAgIH0KLQog
ICAvKiBPdGhlciB0eXBlcyBvZiBub2RlIGNhbiBiZSBoYW5kbGVkIGJ5IGEgc3dpdGNoICovCiAK
LSAgc3dpdGNoKGZyYW1lLT5vcCkKKyAgc3dpdGNoKCpmcmFtZS0+ZWNvZGUpCiAgICAgewogICAg
IGNhc2UgT1BfQlJBOiAgICAgLyogTm9uLWNhcHR1cmluZyBicmFja2V0OiBvcHRpbWl6ZWQgKi8K
KyAgICBOT05fQ0FQVFVSSU5HX0JSQUNLRVQ6CiAgICAgRFBSSU5URigoInN0YXJ0IGJyYWNrZXQg
MFxuIikpOwogICAgIGRvCiAgICAgICB7Ci0gICAgICBSTUFUQ0goMiwgcnJjLCBmcmFtZS0+ZWNv
ZGUgKyAxICsgTElOS19TSVpFLCBmcmFtZS0+ZXB0cmIsIG1hdGNoX2lzZ3JvdXApOworICAgICAg
Uk1BVENIKDIsIGZyYW1lLT5lY29kZSArIDEgKyBMSU5LX1NJWkUsIGZyYW1lLT5lcHRyYiwgbWF0
Y2hfaXNncm91cCk7CiAgICAgICBpZiAocnJjICE9IE1BVENIX05PTUFUQ0gpIFJSRVRVUk4ocnJj
KTsKICAgICAgIGZyYW1lLT5lY29kZSArPSBHRVQoZnJhbWUtPmVjb2RlLCAxKTsKICAgICAgIH0K
QEAgLTUwNSw3ICs0MzcsNyBAQCBmb3IgKDs7KQogICAgIGNhc2UgT1BfQVNTRVJUOgogICAgIGRv
CiAgICAgICB7Ci0gICAgICBSTUFUQ0goNiwgcnJjLCBmcmFtZS0+ZWNvZGUgKyAxICsgTElOS19T
SVpFLCBOVUxMLCBtYXRjaF9pc2dyb3VwKTsKKyAgICAgIFJNQVRDSCg2LCBmcmFtZS0+ZWNvZGUg
KyAxICsgTElOS19TSVpFLCBOVUxMLCBtYXRjaF9pc2dyb3VwKTsKICAgICAgIGlmIChycmMgPT0g
TUFUQ0hfTUFUQ0gpIGJyZWFrOwogICAgICAgaWYgKHJyYyAhPSBNQVRDSF9OT01BVENIKSBSUkVU
VVJOKHJyYyk7CiAgICAgICBmcmFtZS0+ZWNvZGUgKz0gR0VUKGZyYW1lLT5lY29kZSwgMSk7CkBA
IC01MjYsNyArNDU4LDcgQEAgZm9yICg7OykKICAgICBjYXNlIE9QX0FTU0VSVF9OT1Q6CiAgICAg
ZG8KICAgICAgIHsKLSAgICAgIFJNQVRDSCg3LCBycmMsIGZyYW1lLT5lY29kZSArIDEgKyBMSU5L
X1NJWkUsIE5VTEwsIG1hdGNoX2lzZ3JvdXApOworICAgICAgUk1BVENIKDcsIGZyYW1lLT5lY29k
ZSArIDEgKyBMSU5LX1NJWkUsIE5VTEwsIG1hdGNoX2lzZ3JvdXApOwogICAgICAgaWYgKHJyYyA9
PSBNQVRDSF9NQVRDSCkgUlJFVFVSTihNQVRDSF9OT01BVENIKTsKICAgICAgIGlmIChycmMgIT0g
TUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMpOwogICAgICAgZnJhbWUtPmVjb2RlICs9IEdFVChm
cmFtZS0+ZWNvZGUsMSk7CkBAIC01NTAsNyArNDgyLDcgQEAgZm9yICg7OykKIAogICAgICAgZG8K
ICAgICAgICAgewotICAgICAgICBSTUFUQ0goOSwgcnJjLCBmcmFtZS0+ZWNvZGUgKyAxICsgTElO
S19TSVpFLCBmcmFtZS0+ZXB0cmIsIG1hdGNoX2lzZ3JvdXApOworICAgICAgICBSTUFUQ0goOSwg
ZnJhbWUtPmVjb2RlICsgMSArIExJTktfU0laRSwgZnJhbWUtPmVwdHJiLCBtYXRjaF9pc2dyb3Vw
KTsKICAgICAgICAgaWYgKHJyYyA9PSBNQVRDSF9NQVRDSCkgYnJlYWs7CiAgICAgICAgIGlmIChy
cmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMpOwogICAgICAgICBmcmFtZS0+ZWNvZGUg
Kz0gR0VUKGZyYW1lLT5lY29kZSwxKTsKQEAgLTU4OCwxNiArNTIwLDE2IEBAIGZvciAoOzspCiAK
ICAgICAgIGlmICgqZnJhbWUtPmVjb2RlID09IE9QX0tFVFJNSU4pCiAgICAgICAgIHsKLSAgICAg
ICAgUk1BVENIKDEwLCBycmMsIGZyYW1lLT5lY29kZSArIDEgKyBMSU5LX1NJWkUsIGZyYW1lLT5l
cHRyYiwgMCk7CisgICAgICAgIFJNQVRDSCgxMCwgZnJhbWUtPmVjb2RlICsgMSArIExJTktfU0la
RSwgZnJhbWUtPmVwdHJiLCAwKTsKICAgICAgICAgaWYgKHJyYyAhPSBNQVRDSF9OT01BVENIKSBS
UkVUVVJOKHJyYyk7Ci0gICAgICAgIFJNQVRDSCgxMSwgcnJjLCBmcmFtZS0+cHJldiwgZnJhbWUt
PmVwdHJiLCBtYXRjaF9pc2dyb3VwKTsKKyAgICAgICAgUk1BVENIKDExLCBmcmFtZS0+cHJldiwg
ZnJhbWUtPmVwdHJiLCBtYXRjaF9pc2dyb3VwKTsKICAgICAgICAgaWYgKHJyYyAhPSBNQVRDSF9O
T01BVENIKSBSUkVUVVJOKHJyYyk7CiAgICAgICAgIH0KICAgICAgIGVsc2UgIC8qIE9QX0tFVFJN
QVggKi8KICAgICAgICAgewotICAgICAgICBSTUFUQ0goMTIsIHJyYywgZnJhbWUtPnByZXYsIGZy
YW1lLT5lcHRyYiwgbWF0Y2hfaXNncm91cCk7CisgICAgICAgIFJNQVRDSCgxMiwgZnJhbWUtPnBy
ZXYsIGZyYW1lLT5lcHRyYiwgbWF0Y2hfaXNncm91cCk7CiAgICAgICAgIGlmIChycmMgIT0gTUFU
Q0hfTk9NQVRDSCkgUlJFVFVSTihycmMpOwotICAgICAgICBSTUFUQ0goMTMsIHJyYywgZnJhbWUt
PmVjb2RlICsgMStMSU5LX1NJWkUsIGZyYW1lLT5lcHRyYiwgMCk7CisgICAgICAgIFJNQVRDSCgx
MywgZnJhbWUtPmVjb2RlICsgMStMSU5LX1NJWkUsIGZyYW1lLT5lcHRyYiwgMCk7CiAgICAgICAg
IGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMpOwogICAgICAgICB9CiAgICAg
ICB9CkBAIC02MTksNyArNTUxLDcgQEAgZm9yICg7OykKICAgICBjYXNlIE9QX0JSQVpFUk86CiAg
ICAgICB7CiAgICAgICBmcmFtZS0+bmV4dCA9IGZyYW1lLT5lY29kZSsxOwotICAgICAgUk1BVENI
KDE0LCBycmMsIGZyYW1lLT5uZXh0LCBmcmFtZS0+ZXB0cmIsIG1hdGNoX2lzZ3JvdXApOworICAg
ICAgUk1BVENIKDE0LCBmcmFtZS0+bmV4dCwgZnJhbWUtPmVwdHJiLCBtYXRjaF9pc2dyb3VwKTsK
ICAgICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMpOwogICAgICAgZG8g
ZnJhbWUtPm5leHQgKz0gR0VUKGZyYW1lLT5uZXh0LDEpOyB3aGlsZSAoKmZyYW1lLT5uZXh0ID09
IE9QX0FMVCk7CiAgICAgICBmcmFtZS0+ZWNvZGUgPSBmcmFtZS0+bmV4dCArIDErTElOS19TSVpF
OwpAQCAtNjMwLDcgKzU2Miw3IEBAIGZvciAoOzspCiAgICAgICB7CiAgICAgICBmcmFtZS0+bmV4
dCA9IGZyYW1lLT5lY29kZSsxOwogICAgICAgZG8gZnJhbWUtPm5leHQgKz0gR0VUKGZyYW1lLT5u
ZXh0LDEpOyB3aGlsZSAoKmZyYW1lLT5uZXh0ID09IE9QX0FMVCk7Ci0gICAgICBSTUFUQ0goMTUs
IHJyYywgZnJhbWUtPm5leHQgKyAxK0xJTktfU0laRSwgZnJhbWUtPmVwdHJiLCBtYXRjaF9pc2dy
b3VwKTsKKyAgICAgIFJNQVRDSCgxNSwgZnJhbWUtPm5leHQgKyAxK0xJTktfU0laRSwgZnJhbWUt
PmVwdHJiLCBtYXRjaF9pc2dyb3VwKTsKICAgICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkg
UlJFVFVSTihycmMpOwogICAgICAgZnJhbWUtPmVjb2RlKys7CiAgICAgICB9CkBAIC03MTEsMTYg
KzY0MywxNiBAQCBmb3IgKDs7KQogCiAgICAgICBpZiAoKmZyYW1lLT5lY29kZSA9PSBPUF9LRVRS
TUlOKQogICAgICAgICB7Ci0gICAgICAgIFJNQVRDSCgxNiwgcnJjLCBmcmFtZS0+ZWNvZGUgKyAx
K0xJTktfU0laRSwgZnJhbWUtPmVwdHJiLCAwKTsKKyAgICAgICAgUk1BVENIKDE2LCBmcmFtZS0+
ZWNvZGUgKyAxK0xJTktfU0laRSwgZnJhbWUtPmVwdHJiLCAwKTsKICAgICAgICAgaWYgKHJyYyAh
PSBNQVRDSF9OT01BVENIKSBSUkVUVVJOKHJyYyk7Ci0gICAgICAgIFJNQVRDSCgxNywgcnJjLCBm
cmFtZS0+cHJldiwgZnJhbWUtPmVwdHJiLCBtYXRjaF9pc2dyb3VwKTsKKyAgICAgICAgUk1BVENI
KDE3LCBmcmFtZS0+cHJldiwgZnJhbWUtPmVwdHJiLCBtYXRjaF9pc2dyb3VwKTsKICAgICAgICAg
aWYgKHJyYyAhPSBNQVRDSF9OT01BVENIKSBSUkVUVVJOKHJyYyk7CiAgICAgICAgIH0KICAgICAg
IGVsc2UgIC8qIE9QX0tFVFJNQVggKi8KICAgICAgICAgewotICAgICAgICBSTUFUQ0goMTgsIHJy
YywgZnJhbWUtPnByZXYsIGZyYW1lLT5lcHRyYiwgbWF0Y2hfaXNncm91cCk7CisgICAgICAgIFJN
QVRDSCgxOCwgZnJhbWUtPnByZXYsIGZyYW1lLT5lcHRyYiwgbWF0Y2hfaXNncm91cCk7CiAgICAg
ICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMpOwotICAgICAgICBSTUFU
Q0goMTksIHJyYywgZnJhbWUtPmVjb2RlICsgMStMSU5LX1NJWkUsIGZyYW1lLT5lcHRyYiwgMCk7
CisgICAgICAgIFJNQVRDSCgxOSwgZnJhbWUtPmVjb2RlICsgMStMSU5LX1NJWkUsIGZyYW1lLT5l
cHRyYiwgMCk7CiAgICAgICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMp
OwogICAgICAgICB9CiAgICAgICB9CkBAIC05MDMsMTYgKzgzNSwxNiBAQCBmb3IgKDs7KQogICAg
ICAgICBjYXNlIE9QX0NSUVVFUlk6CiAgICAgICAgIGNhc2UgT1BfQ1JNSU5RVUVSWToKICAgICAg
ICAgYyA9ICpmcmFtZS0+ZWNvZGUrKyAtIE9QX0NSU1RBUjsKLSAgICAgICAgZnJhbWUtPm1pbmlt
aXplID0gKGMgJiAxKSAhPSAwOwotICAgICAgICBmcmFtZS0+bWluID0gcmVwX21pbltjXTsgICAg
ICAgICAgICAgICAgIC8qIFBpY2sgdXAgdmFsdWVzIGZyb20gdGFibGVzOyAqLworICAgICAgICBt
aW5pbWl6ZSA9IChjICYgMSkgIT0gMDsKKyAgICAgICAgbWluID0gcmVwX21pbltjXTsgICAgICAg
ICAgICAgICAgIC8qIFBpY2sgdXAgdmFsdWVzIGZyb20gdGFibGVzOyAqLwogICAgICAgICBmcmFt
ZS0+bWF4ID0gcmVwX21heFtjXTsgICAgICAgICAgICAgICAgIC8qIHplcm8gZm9yIG1heCA9PiBp
bmZpbml0eSAqLwogICAgICAgICBpZiAoZnJhbWUtPm1heCA9PSAwKSBmcmFtZS0+bWF4ID0gSU5U
X01BWDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBPUF9DUlJBTkdFOgogICAgICAg
ICBjYXNlIE9QX0NSTUlOUkFOR0U6Ci0gICAgICAgIGZyYW1lLT5taW5pbWl6ZSA9ICgqZnJhbWUt
PmVjb2RlID09IE9QX0NSTUlOUkFOR0UpOwotICAgICAgICBmcmFtZS0+bWluID0gR0VUMihmcmFt
ZS0+ZWNvZGUsIDEpOworICAgICAgICBtaW5pbWl6ZSA9ICgqZnJhbWUtPmVjb2RlID09IE9QX0NS
TUlOUkFOR0UpOworICAgICAgICBtaW4gPSBHRVQyKGZyYW1lLT5lY29kZSwgMSk7CiAgICAgICAg
IGZyYW1lLT5tYXggPSBHRVQyKGZyYW1lLT5lY29kZSwgMyk7CiAgICAgICAgIGlmIChmcmFtZS0+
bWF4ID09IDApIGZyYW1lLT5tYXggPSBJTlRfTUFYOwogICAgICAgICBmcmFtZS0+ZWNvZGUgKz0g
NTsKQEAgLTkzMSw3ICs4NjMsNyBAQCBmb3IgKDs7KQogCiAgICAgICAvKiBGaXJzdCwgZW5zdXJl
IHRoZSBtaW5pbXVtIG51bWJlciBvZiBtYXRjaGVzIGFyZSBwcmVzZW50LiAqLwogCi0gICAgICBm
b3IgKGkgPSAxOyBpIDw9IGZyYW1lLT5taW47IGkrKykKKyAgICAgIGZvciAoaSA9IDE7IGkgPD0g
bWluOyBpKyspCiAgICAgICAgIHsKICAgICAgICAgaWYgKCFtYXRjaF9yZWYoZnJhbWUtPm9mZnNl
dCwgZnJhbWUtPmVwdHIsIGZyYW1lLT5sZW5ndGgsIG1kKSkgUlJFVFVSTihNQVRDSF9OT01BVENI
KTsKICAgICAgICAgZnJhbWUtPmVwdHIgKz0gZnJhbWUtPmxlbmd0aDsKQEAgLTk0MCwxNSArODcy
LDE1IEBAIGZvciAoOzspCiAgICAgICAvKiBJZiBtaW4gPSBtYXgsIGNvbnRpbnVlIGF0IHRoZSBz
YW1lIGxldmVsIHdpdGhvdXQgcmVjdXJzaW9uLgogICAgICAgVGhleSBhcmUgbm90IGJvdGggYWxs
b3dlZCB0byBiZSB6ZXJvLiAqLwogCi0gICAgICBpZiAoZnJhbWUtPm1pbiA9PSBmcmFtZS0+bWF4
KSBjb250aW51ZTsKKyAgICAgIGlmIChtaW4gPT0gZnJhbWUtPm1heCkgY29udGludWU7CiAKICAg
ICAgIC8qIElmIG1pbmltaXppbmcsIGtlZXAgdHJ5aW5nIGFuZCBhZHZhbmNpbmcgdGhlIHBvaW50
ZXIgKi8KIAotICAgICAgaWYgKGZyYW1lLT5taW5pbWl6ZSkKKyAgICAgIGlmIChtaW5pbWl6ZSkK
ICAgICAgICAgewotICAgICAgICBmb3IgKGZyYW1lLT5maSA9IGZyYW1lLT5taW47OyBmcmFtZS0+
ZmkrKykKKyAgICAgICAgZm9yIChmcmFtZS0+ZmkgPSBtaW47OyBmcmFtZS0+ZmkrKykKICAgICAg
ICAgICB7Ci0gICAgICAgICAgUk1BVENIKDIwLCBycmMsIGZyYW1lLT5lY29kZSwgZnJhbWUtPmVw
dHJiLCAwKTsKKyAgICAgICAgICBSTUFUQ0goMjAsIGZyYW1lLT5lY29kZSwgZnJhbWUtPmVwdHJi
LCAwKTsKICAgICAgICAgICBpZiAocnJjICE9IE1BVENIX05PTUFUQ0gpIFJSRVRVUk4ocnJjKTsK
ICAgICAgICAgICBpZiAoZnJhbWUtPmZpID49IGZyYW1lLT5tYXggfHwgIW1hdGNoX3JlZihmcmFt
ZS0+b2Zmc2V0LCBmcmFtZS0+ZXB0ciwgZnJhbWUtPmxlbmd0aCwgbWQpKQogICAgICAgICAgICAg
UlJFVFVSTihNQVRDSF9OT01BVENIKTsKQEAgLTk2MiwxNCArODk0LDE0IEBAIGZvciAoOzspCiAg
ICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgZnJhbWUtPnBwID0gZnJhbWUtPmVwdHI7Ci0g
ICAgICAgIGZvciAoaSA9IGZyYW1lLT5taW47IGkgPCBmcmFtZS0+bWF4OyBpKyspCisgICAgICAg
IGZvciAoaSA9IG1pbjsgaSA8IGZyYW1lLT5tYXg7IGkrKykKICAgICAgICAgICB7CiAgICAgICAg
ICAgaWYgKCFtYXRjaF9yZWYoZnJhbWUtPm9mZnNldCwgZnJhbWUtPmVwdHIsIGZyYW1lLT5sZW5n
dGgsIG1kKSkgYnJlYWs7CiAgICAgICAgICAgZnJhbWUtPmVwdHIgKz0gZnJhbWUtPmxlbmd0aDsK
ICAgICAgICAgICB9CiAgICAgICAgIHdoaWxlIChmcmFtZS0+ZXB0ciA+PSBmcmFtZS0+cHApCiAg
ICAgICAgICAgewotICAgICAgICAgIFJNQVRDSCgyMSwgcnJjLCBmcmFtZS0+ZWNvZGUsIGZyYW1l
LT5lcHRyYiwgMCk7CisgICAgICAgICAgUk1BVENIKDIxLCBmcmFtZS0+ZWNvZGUsIGZyYW1lLT5l
cHRyYiwgMCk7CiAgICAgICAgICAgaWYgKHJyYyAhPSBNQVRDSF9OT01BVENIKSBSUkVUVVJOKHJy
Yyk7CiAgICAgICAgICAgZnJhbWUtPmVwdHIgLT0gZnJhbWUtPmxlbmd0aDsKICAgICAgICAgICB9
CkBAIC0xMDA2LDM2ICs5MzgsMzYgQEAgZm9yICg7OykKICAgICAgICAgY2FzZSBPUF9DUlFVRVJZ
OgogICAgICAgICBjYXNlIE9QX0NSTUlOUVVFUlk6CiAgICAgICAgIGMgPSAqZnJhbWUtPmVjb2Rl
KysgLSBPUF9DUlNUQVI7Ci0gICAgICAgIGZyYW1lLT5taW5pbWl6ZSA9IChjICYgMSkgIT0gMDsK
LSAgICAgICAgZnJhbWUtPm1pbiA9IHJlcF9taW5bY107ICAgICAgICAgICAgICAgICAvKiBQaWNr
IHVwIHZhbHVlcyBmcm9tIHRhYmxlczsgKi8KKyAgICAgICAgbWluaW1pemUgPSAoYyAmIDEpICE9
IDA7CisgICAgICAgIG1pbiA9IHJlcF9taW5bY107ICAgICAgICAgICAgICAgICAvKiBQaWNrIHVw
IHZhbHVlcyBmcm9tIHRhYmxlczsgKi8KICAgICAgICAgZnJhbWUtPm1heCA9IHJlcF9tYXhbY107
ICAgICAgICAgICAgICAgICAvKiB6ZXJvIGZvciBtYXggPT4gaW5maW5pdHkgKi8KICAgICAgICAg
aWYgKGZyYW1lLT5tYXggPT0gMCkgZnJhbWUtPm1heCA9IElOVF9NQVg7CiAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGNhc2UgT1BfQ1JSQU5HRToKICAgICAgICAgY2FzZSBPUF9DUk1JTlJBTkdF
OgotICAgICAgICBmcmFtZS0+bWluaW1pemUgPSAoKmZyYW1lLT5lY29kZSA9PSBPUF9DUk1JTlJB
TkdFKTsKLSAgICAgICAgZnJhbWUtPm1pbiA9IEdFVDIoZnJhbWUtPmVjb2RlLCAxKTsKKyAgICAg
ICAgbWluaW1pemUgPSAoKmZyYW1lLT5lY29kZSA9PSBPUF9DUk1JTlJBTkdFKTsKKyAgICAgICAg
bWluID0gR0VUMihmcmFtZS0+ZWNvZGUsIDEpOwogICAgICAgICBmcmFtZS0+bWF4ID0gR0VUMihm
cmFtZS0+ZWNvZGUsIDMpOwogICAgICAgICBpZiAoZnJhbWUtPm1heCA9PSAwKSBmcmFtZS0+bWF4
ID0gSU5UX01BWDsKICAgICAgICAgZnJhbWUtPmVjb2RlICs9IDU7CiAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgLyogTm8gcmVwZWF0IGZvbGxvd3MgKi8K
LSAgICAgICAgZnJhbWUtPm1pbiA9IGZyYW1lLT5tYXggPSAxOworICAgICAgICBtaW4gPSBmcmFt
ZS0+bWF4ID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgLyogRmlyc3Qs
IGVuc3VyZSB0aGUgbWluaW11bSBudW1iZXIgb2YgbWF0Y2hlcyBhcmUgcHJlc2VudC4gKi8KIAog
ICAgICAgICB7Ci0gICAgICAgIGZvciAoaSA9IDE7IGkgPD0gZnJhbWUtPm1pbjsgaSsrKQorICAg
ICAgICBmb3IgKGkgPSAxOyBpIDw9IG1pbjsgaSsrKQogICAgICAgICAgIHsKICAgICAgICAgICBp
ZiAoZnJhbWUtPmVwdHIgPj0gbWQtPmVuZF9zdWJqZWN0KSBSUkVUVVJOKE1BVENIX05PTUFUQ0gp
OwogICAgICAgICAgIEdFVENIQVJJTkMoYywgZnJhbWUtPmVwdHIpOwogICAgICAgICAgIGlmIChj
ID4gMjU1KQogICAgICAgICAgICAgewotICAgICAgICAgICAgaWYgKGZyYW1lLT5vcCA9PSBPUF9D
TEFTUykgUlJFVFVSTihNQVRDSF9OT01BVENIKTsKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZGF0
YVstMV0gPT0gT1BfQ0xBU1MpIFJSRVRVUk4oTUFUQ0hfTk9NQVRDSCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewpAQCAtMTA0NywyMyArOTc5LDIzIEBAIGZv
ciAoOzspCiAgICAgICAvKiBJZiBtYXggPT0gbWluIHdlIGNhbiBjb250aW51ZSB3aXRoIHRoZSBt
YWluIGxvb3Agd2l0aG91dCB0aGUKICAgICAgIG5lZWQgdG8gcmVjdXJzZS4gKi8KIAotICAgICAg
aWYgKGZyYW1lLT5taW4gPT0gZnJhbWUtPm1heCkgY29udGludWU7CisgICAgICBpZiAobWluID09
IGZyYW1lLT5tYXgpIGNvbnRpbnVlOwogCiAgICAgICAvKiBJZiBtaW5pbWl6aW5nLCBrZWVwIHRl
c3RpbmcgdGhlIHJlc3Qgb2YgdGhlIGV4cHJlc3Npb24gYW5kIGFkdmFuY2luZwogICAgICAgdGhl
IHBvaW50ZXIgd2hpbGUgaXQgbWF0Y2hlcyB0aGUgY2xhc3MuICovCiAKLSAgICAgIGlmIChmcmFt
ZS0+bWluaW1pemUpCisgICAgICBpZiAobWluaW1pemUpCiAgICAgICAgIHsKICAgICAgICAgICB7
Ci0gICAgICAgICAgZm9yIChmcmFtZS0+ZmkgPSBmcmFtZS0+bWluOzsgZnJhbWUtPmZpKyspCisg
ICAgICAgICAgZm9yIChmcmFtZS0+ZmkgPSBtaW47OyBmcmFtZS0+ZmkrKykKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgIFJNQVRDSCgyMiwgcnJjLCBmcmFtZS0+ZWNvZGUsIGZyYW1lLT5lcHRy
YiwgMCk7CisgICAgICAgICAgICBSTUFUQ0goMjIsIGZyYW1lLT5lY29kZSwgZnJhbWUtPmVwdHJi
LCAwKTsKICAgICAgICAgICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMp
OwogICAgICAgICAgICAgaWYgKGZyYW1lLT5maSA+PSBmcmFtZS0+bWF4IHx8IGZyYW1lLT5lcHRy
ID49IG1kLT5lbmRfc3ViamVjdCkgUlJFVFVSTihNQVRDSF9OT01BVENIKTsKICAgICAgICAgICAg
IEdFVENIQVJJTkMoYywgZnJhbWUtPmVwdHIpOwogICAgICAgICAgICAgaWYgKGMgPiAyNTUpCiAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKGZyYW1lLT5vcCA9PSBPUF9DTEFTUykg
UlJFVFVSTihNQVRDSF9OT01BVENIKTsKKyAgICAgICAgICAgICAgaWYgKGZyYW1lLT5kYXRhWy0x
XSA9PSBPUF9DTEFTUykgUlJFVFVSTihNQVRDSF9OT01BVENIKTsKICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICB7CkBAIC0xMDgxLDE0ICsxMDEzLDE0IEBA
IGZvciAoOzspCiAgICAgICAgIGZyYW1lLT5wcCA9IGZyYW1lLT5lcHRyOwogCiAgICAgICAgICAg
ewotICAgICAgICAgIGZvciAoaSA9IGZyYW1lLT5taW47IGkgPCBmcmFtZS0+bWF4OyBpKyspCisg
ICAgICAgICAgZm9yIChpID0gbWluOyBpIDwgZnJhbWUtPm1heDsgaSsrKQogICAgICAgICAgICAg
ewogICAgICAgICAgICAgaW50IGxlbiA9IDE7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmVwdHIg
Pj0gbWQtPmVuZF9zdWJqZWN0KSBicmVhazsKICAgICAgICAgICAgIEdFVENIQVJMRU4oYywgZnJh
bWUtPmVwdHIsIGxlbik7CiAgICAgICAgICAgICBpZiAoYyA+IDI1NSkKICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICBpZiAoZnJhbWUtPm9wID09IE9QX0NMQVNTKSBicmVhazsKKyAgICAg
ICAgICAgICAgaWYgKGZyYW1lLT5kYXRhWy0xXSA9PSBPUF9DTEFTUykgYnJlYWs7CiAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgewpAQCAtMTA5OCw3ICsx
MDMwLDcgQEAgZm9yICg7OykKICAgICAgICAgICAgIH0KICAgICAgICAgICBmb3IgKDs7KQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgUk1BVENIKDI0LCBycmMsIGZyYW1lLT5lY29kZSwgZnJh
bWUtPmVwdHJiLCAwKTsKKyAgICAgICAgICAgIFJNQVRDSCgyNCwgZnJhbWUtPmVjb2RlLCBmcmFt
ZS0+ZXB0cmIsIDApOwogICAgICAgICAgICAgaWYgKHJyYyAhPSBNQVRDSF9OT01BVENIKSBSUkVU
VVJOKHJyYyk7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmVwdHItLSA9PSBmcmFtZS0+cHApIGJy
ZWFrOyAgICAgICAgLyogU3RvcCBpZiB0cmllZCBhdCBvcmlnaW5hbCBwb3MgKi8KICAgICAgICAg
ICAgIEJBQ0tDSEFSKGZyYW1lLT5lcHRyKTsKQEAgLTExMjcsMjkgKzEwNTksMjkgQEAgZm9yICg7
OykKICAgICAgICAgY2FzZSBPUF9DUlFVRVJZOgogICAgICAgICBjYXNlIE9QX0NSTUlOUVVFUlk6
CiAgICAgICAgIGMgPSAqZnJhbWUtPmVjb2RlKysgLSBPUF9DUlNUQVI7Ci0gICAgICAgIGZyYW1l
LT5taW5pbWl6ZSA9IChjICYgMSkgIT0gMDsKLSAgICAgICAgZnJhbWUtPm1pbiA9IHJlcF9taW5b
Y107ICAgICAgICAgICAgICAgICAvKiBQaWNrIHVwIHZhbHVlcyBmcm9tIHRhYmxlczsgKi8KKyAg
ICAgICAgbWluaW1pemUgPSAoYyAmIDEpICE9IDA7CisgICAgICAgIG1pbiA9IHJlcF9taW5bY107
ICAgICAgICAgICAgICAgICAvKiBQaWNrIHVwIHZhbHVlcyBmcm9tIHRhYmxlczsgKi8KICAgICAg
ICAgZnJhbWUtPm1heCA9IHJlcF9tYXhbY107ICAgICAgICAgICAgICAgICAvKiB6ZXJvIGZvciBt
YXggPT4gaW5maW5pdHkgKi8KICAgICAgICAgaWYgKGZyYW1lLT5tYXggPT0gMCkgZnJhbWUtPm1h
eCA9IElOVF9NQVg7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgT1BfQ1JSQU5HRToK
ICAgICAgICAgY2FzZSBPUF9DUk1JTlJBTkdFOgotICAgICAgICBmcmFtZS0+bWluaW1pemUgPSAo
KmZyYW1lLT5lY29kZSA9PSBPUF9DUk1JTlJBTkdFKTsKLSAgICAgICAgZnJhbWUtPm1pbiA9IEdF
VDIoZnJhbWUtPmVjb2RlLCAxKTsKKyAgICAgICAgbWluaW1pemUgPSAoKmZyYW1lLT5lY29kZSA9
PSBPUF9DUk1JTlJBTkdFKTsKKyAgICAgICAgbWluID0gR0VUMihmcmFtZS0+ZWNvZGUsIDEpOwog
ICAgICAgICBmcmFtZS0+bWF4ID0gR0VUMihmcmFtZS0+ZWNvZGUsIDMpOwogICAgICAgICBpZiAo
ZnJhbWUtPm1heCA9PSAwKSBmcmFtZS0+bWF4ID0gSU5UX01BWDsKICAgICAgICAgZnJhbWUtPmVj
b2RlICs9IDU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAg
ICAgLyogTm8gcmVwZWF0IGZvbGxvd3MgKi8KLSAgICAgICAgZnJhbWUtPm1pbiA9IGZyYW1lLT5t
YXggPSAxOworICAgICAgICBtaW4gPSBmcmFtZS0+bWF4ID0gMTsKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAogICAgICAgLyogRmlyc3QsIGVuc3VyZSB0aGUgbWluaW11bSBudW1iZXIgb2Yg
bWF0Y2hlcyBhcmUgcHJlc2VudC4gKi8KIAotICAgICAgZm9yIChpID0gMTsgaSA8PSBmcmFtZS0+
bWluOyBpKyspCisgICAgICBmb3IgKGkgPSAxOyBpIDw9IG1pbjsgaSsrKQogICAgICAgICB7CiAg
ICAgICAgIGlmIChmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1YmplY3QpIFJSRVRVUk4oTUFUQ0hf
Tk9NQVRDSCk7CiAgICAgICAgIEdFVENIQVJJTkMoYywgZnJhbWUtPmVwdHIpOwpAQCAtMTE1OSwx
NiArMTA5MSwxNiBAQCBmb3IgKDs7KQogICAgICAgLyogSWYgbWF4ID09IG1pbiB3ZSBjYW4gY29u
dGludWUgd2l0aCB0aGUgbWFpbiBsb29wIHdpdGhvdXQgdGhlCiAgICAgICBuZWVkIHRvIHJlY3Vy
c2UuICovCiAKLSAgICAgIGlmIChmcmFtZS0+bWluID09IGZyYW1lLT5tYXgpIGNvbnRpbnVlOwor
ICAgICAgaWYgKG1pbiA9PSBmcmFtZS0+bWF4KSBjb250aW51ZTsKIAogICAgICAgLyogSWYgbWlu
aW1pemluZywga2VlcCB0ZXN0aW5nIHRoZSByZXN0IG9mIHRoZSBleHByZXNzaW9uIGFuZCBhZHZh
bmNpbmcKICAgICAgIHRoZSBwb2ludGVyIHdoaWxlIGl0IG1hdGNoZXMgdGhlIGNsYXNzLiAqLwog
Ci0gICAgICBpZiAoZnJhbWUtPm1pbmltaXplKQorICAgICAgaWYgKG1pbmltaXplKQogICAgICAg
ICB7Ci0gICAgICAgIGZvciAoZnJhbWUtPmZpID0gZnJhbWUtPm1pbjs7IGZyYW1lLT5maSsrKQor
ICAgICAgICBmb3IgKGZyYW1lLT5maSA9IG1pbjs7IGZyYW1lLT5maSsrKQogICAgICAgICAgIHsK
LSAgICAgICAgICBSTUFUQ0goMjYsIHJyYywgZnJhbWUtPmVjb2RlLCBmcmFtZS0+ZXB0cmIsIDAp
OworICAgICAgICAgIFJNQVRDSCgyNiwgZnJhbWUtPmVjb2RlLCBmcmFtZS0+ZXB0cmIsIDApOwog
ICAgICAgICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMpOwogICAgICAg
ICAgIGlmIChmcmFtZS0+ZmkgPj0gZnJhbWUtPm1heCB8fCBmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5k
X3N1YmplY3QpIFJSRVRVUk4oTUFUQ0hfTk9NQVRDSCk7CiAgICAgICAgICAgR0VUQ0hBUklOQyhj
LCBmcmFtZS0+ZXB0cik7CkBAIC0xMTgyLDcgKzExMTQsNyBAQCBmb3IgKDs7KQogICAgICAgZWxz
ZQogICAgICAgICB7CiAgICAgICAgIGZyYW1lLT5wcCA9IGZyYW1lLT5lcHRyOwotICAgICAgICBm
b3IgKGkgPSBmcmFtZS0+bWluOyBpIDwgZnJhbWUtPm1heDsgaSsrKQorICAgICAgICBmb3IgKGkg
PSBtaW47IGkgPCBmcmFtZS0+bWF4OyBpKyspCiAgICAgICAgICAgewogICAgICAgICAgIGludCBs
ZW4gPSAxOwogICAgICAgICAgIGlmIChmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1YmplY3QpIGJy
ZWFrOwpAQCAtMTE5Miw3ICsxMTI0LDcgQEAgZm9yICg7OykKICAgICAgICAgICB9CiAgICAgICAg
IGZvcig7OykKICAgICAgICAgICB7Ci0gICAgICAgICAgUk1BVENIKDI3LCBycmMsIGZyYW1lLT5l
Y29kZSwgZnJhbWUtPmVwdHJiLCAwKTsKKyAgICAgICAgICBSTUFUQ0goMjcsIGZyYW1lLT5lY29k
ZSwgZnJhbWUtPmVwdHJiLCAwKTsKICAgICAgICAgICBpZiAocnJjICE9IE1BVENIX05PTUFUQ0gp
IFJSRVRVUk4ocnJjKTsKICAgICAgICAgICBpZiAoZnJhbWUtPmVwdHItLSA9PSBmcmFtZS0+cHAp
IGJyZWFrOyAgICAgICAgLyogU3RvcCBpZiB0cmllZCBhdCBvcmlnaW5hbCBwb3MgKi8KICAgICAg
ICAgICBCQUNLQ0hBUihmcmFtZS0+ZXB0cikKQEAgLTEyNzYsMTggKzEyMDgsNDEgQEAgZm9yICg7
OykKICAgICAgIH0KICAgICBicmVhazsKIAorICAgIC8qIE1hdGNoIGEgc2luZ2xlIEFTQ0lJIGNo
YXJhY3Rlci4gKi8KKworICAgIGNhc2UgT1BfQVNDSUlfQ0hBUjoKKyAgICBpZiAobWQtPmVuZF9z
dWJqZWN0ID09IGZyYW1lLT5lcHRyKQorICAgICAgUlJFVFVSTihNQVRDSF9OT01BVENIKTsKKyAg
ICBpZiAoKmZyYW1lLT5lcHRyICE9IGZyYW1lLT5lY29kZVsxXSkKKyAgICAgIFJSRVRVUk4oTUFU
Q0hfTk9NQVRDSCk7CisgICAgKytmcmFtZS0+ZXB0cjsKKyAgICBmcmFtZS0+ZWNvZGUgKz0gMjsK
KyAgICBicmVhazsKKworICAgIC8qIE1hdGNoIG9uZSBvZiB0d28gY2FzZXMgb2YgYW4gQVNDSUkg
Y2hhcmFjdGVyLiAqLworCisgICAgY2FzZSBPUF9BU0NJSV9MRVRURVJfTkM6CisgICAgaWYgKG1k
LT5lbmRfc3ViamVjdCA9PSBmcmFtZS0+ZXB0cikKKyAgICAgIFJSRVRVUk4oTUFUQ0hfTk9NQVRD
SCk7CisgICAgaWYgKCgqZnJhbWUtPmVwdHIgfCAweDIwKSAhPSBmcmFtZS0+ZWNvZGVbMV0pCisg
ICAgICBSUkVUVVJOKE1BVENIX05PTUFUQ0gpOworICAgICsrZnJhbWUtPmVwdHI7CisgICAgZnJh
bWUtPmVjb2RlICs9IDI7CisgICAgYnJlYWs7CisKICAgICAvKiBNYXRjaCBhIHNpbmdsZSBjaGFy
YWN0ZXIgcmVwZWF0ZWRseTsgZGlmZmVyZW50IG9wY29kZXMgc2hhcmUgY29kZS4gKi8KIAogICAg
IGNhc2UgT1BfRVhBQ1Q6Ci0gICAgZnJhbWUtPm1pbiA9IGZyYW1lLT5tYXggPSBHRVQyKGZyYW1l
LT5lY29kZSwgMSk7CisgICAgbWluID0gZnJhbWUtPm1heCA9IEdFVDIoZnJhbWUtPmVjb2RlLCAx
KTsKKyAgICBtaW5pbWl6ZSA9IEZBTFNFOwogICAgIGZyYW1lLT5lY29kZSArPSAzOwogICAgIGdv
dG8gUkVQRUFUQ0hBUjsKIAogICAgIGNhc2UgT1BfVVBUTzoKICAgICBjYXNlIE9QX01JTlVQVE86
Ci0gICAgZnJhbWUtPm1pbiA9IDA7CisgICAgbWluID0gMDsKICAgICBmcmFtZS0+bWF4ID0gR0VU
MihmcmFtZS0+ZWNvZGUsIDEpOwotICAgIGZyYW1lLT5taW5pbWl6ZSA9ICpmcmFtZS0+ZWNvZGUg
PT0gT1BfTUlOVVBUTzsKKyAgICBtaW5pbWl6ZSA9ICpmcmFtZS0+ZWNvZGUgPT0gT1BfTUlOVVBU
TzsKICAgICBmcmFtZS0+ZWNvZGUgKz0gMzsKICAgICBnb3RvIFJFUEVBVENIQVI7CiAKQEAgLTEy
OTgsOCArMTI1Myw4IEBAIGZvciAoOzspCiAgICAgY2FzZSBPUF9RVUVSWToKICAgICBjYXNlIE9Q
X01JTlFVRVJZOgogICAgIGMgPSAqZnJhbWUtPmVjb2RlKysgLSBPUF9TVEFSOwotICAgIGZyYW1l
LT5taW5pbWl6ZSA9IChjICYgMSkgIT0gMDsKLSAgICBmcmFtZS0+bWluID0gcmVwX21pbltjXTsg
ICAgICAgICAgICAgICAgIC8qIFBpY2sgdXAgdmFsdWVzIGZyb20gdGFibGVzOyAqLworICAgIG1p
bmltaXplID0gKGMgJiAxKSAhPSAwOworICAgIG1pbiA9IHJlcF9taW5bY107ICAgICAgICAgICAg
ICAgICAvKiBQaWNrIHVwIHZhbHVlcyBmcm9tIHRhYmxlczsgKi8KICAgICBmcmFtZS0+bWF4ID0g
cmVwX21heFtjXTsgICAgICAgICAgICAgICAgIC8qIHplcm8gZm9yIG1heCA9PiBpbmZpbml0eSAq
LwogICAgIGlmIChmcmFtZS0+bWF4ID09IDApIGZyYW1lLT5tYXggPSBJTlRfTUFYOwogCkBAIC0x
MzEyLDI3ICsxMjY3LDI3IEBAIGZvciAoOzspCiAgICAgICBmcmFtZS0+bGVuZ3RoID0gMTsKICAg
ICAgIEdFVFVURjhDSEFSTEVOKGZyYW1lLT5mYywgZnJhbWUtPmVjb2RlLCBmcmFtZS0+bGVuZ3Ro
KTsKICAgICAgIHsKLSAgICAgIGlmIChmcmFtZS0+bWluICogKGZyYW1lLT5mYyA+IDB4RkZGRiA/
IDIgOiAxKSA+IG1kLT5lbmRfc3ViamVjdCAtIGZyYW1lLT5lcHRyKSBSUkVUVVJOKE1BVENIX05P
TUFUQ0gpOworICAgICAgaWYgKG1pbiAqIChmcmFtZS0+ZmMgPiAweEZGRkYgPyAyIDogMSkgPiBt
ZC0+ZW5kX3N1YmplY3QgLSBmcmFtZS0+ZXB0cikgUlJFVFVSTihNQVRDSF9OT01BVENIKTsKICAg
ICAgIGZyYW1lLT5lY29kZSArPSBmcmFtZS0+bGVuZ3RoOwogCiAgICAgICBpZiAoZnJhbWUtPmZj
IDw9IDB4RkZGRikKICAgICAgICAgewogICAgICAgICBpbnQgb3RoZXJjYXNlID0gbWQtPmNhc2Vs
ZXNzID8gX3BjcmVfdWNwX290aGVyY2FzZShmcmFtZS0+ZmMpIDogLTE7CiAKLSAgICAgICAgZm9y
IChpID0gMTsgaSA8PSBmcmFtZS0+bWluOyBpKyspCisgICAgICAgIGZvciAoaSA9IDE7IGkgPD0g
bWluOyBpKyspCiAgICAgICAgICAgewogICAgICAgICAgIGlmICgqZnJhbWUtPmVwdHIgIT0gZnJh
bWUtPmZjICYmICpmcmFtZS0+ZXB0ciAhPSBvdGhlcmNhc2UpIFJSRVRVUk4oTUFUQ0hfTk9NQVRD
SCk7CiAgICAgICAgICAgKytmcmFtZS0+ZXB0cjsKICAgICAgICAgICB9CiAKLSAgICAgICAgaWYg
KGZyYW1lLT5taW4gPT0gZnJhbWUtPm1heCkgY29udGludWU7CisgICAgICAgIGlmIChtaW4gPT0g
ZnJhbWUtPm1heCkgY29udGludWU7CiAKLSAgICAgICAgaWYgKGZyYW1lLT5taW5pbWl6ZSkKKyAg
ICAgICAgaWYgKG1pbmltaXplKQogICAgICAgICAgIHsKICAgICAgICAgICBmcmFtZS0+cmVwZWF0
X290aGVyY2FzZSA9IG90aGVyY2FzZTsKLSAgICAgICAgICBmb3IgKGZyYW1lLT5maSA9IGZyYW1l
LT5taW47OyBmcmFtZS0+ZmkrKykKKyAgICAgICAgICBmb3IgKGZyYW1lLT5maSA9IG1pbjs7IGZy
YW1lLT5maSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgUk1BVENIKDI4LCBycmMsIGZy
YW1lLT5lY29kZSwgZnJhbWUtPmVwdHJiLCAwKTsKKyAgICAgICAgICAgIFJNQVRDSCgyOCwgZnJh
bWUtPmVjb2RlLCBmcmFtZS0+ZXB0cmIsIDApOwogICAgICAgICAgICAgaWYgKHJyYyAhPSBNQVRD
SF9OT01BVENIKSBSUkVUVVJOKHJyYyk7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmZpID49IGZy
YW1lLT5tYXggfHwgZnJhbWUtPmVwdHIgPj0gbWQtPmVuZF9zdWJqZWN0KSBSUkVUVVJOKE1BVENI
X05PTUFUQ0gpOwogICAgICAgICAgICAgaWYgKCpmcmFtZS0+ZXB0ciAhPSBmcmFtZS0+ZmMgJiYg
KmZyYW1lLT5lcHRyICE9IGZyYW1lLT5yZXBlYXRfb3RoZXJjYXNlKSBSUkVUVVJOKE1BVENIX05P
TUFUQ0gpOwpAQCAtMTM0Myw3ICsxMjk4LDcgQEAgZm9yICg7OykKICAgICAgICAgZWxzZQogICAg
ICAgICAgIHsKICAgICAgICAgICBmcmFtZS0+cHAgPSBmcmFtZS0+ZXB0cjsKLSAgICAgICAgICBm
b3IgKGkgPSBmcmFtZS0+bWluOyBpIDwgZnJhbWUtPm1heDsgaSsrKQorICAgICAgICAgIGZvciAo
aSA9IG1pbjsgaSA8IGZyYW1lLT5tYXg7IGkrKykKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1YmplY3QpIGJyZWFrOwogICAgICAgICAgICAg
aWYgKCpmcmFtZS0+ZXB0ciAhPSBmcmFtZS0+ZmMgJiYgKmZyYW1lLT5lcHRyICE9IG90aGVyY2Fz
ZSkgYnJlYWs7CkBAIC0xMzUxLDcgKzEzMDYsNyBAQCBmb3IgKDs7KQogICAgICAgICAgICAgfQog
ICAgICAgICAgIHdoaWxlIChmcmFtZS0+ZXB0ciA+PSBmcmFtZS0+cHApCiAgICAgICAgICAgIHsK
LSAgICAgICAgICAgUk1BVENIKDI5LCBycmMsIGZyYW1lLT5lY29kZSwgZnJhbWUtPmVwdHJiLCAw
KTsKKyAgICAgICAgICAgUk1BVENIKDI5LCBmcmFtZS0+ZWNvZGUsIGZyYW1lLT5lcHRyYiwgMCk7
CiAgICAgICAgICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMpOwogICAg
ICAgICAgICAtLWZyYW1lLT5lcHRyOwogICAgICAgICAgICB9CkBAIC0xMzYzLDcgKzEzMTgsNyBA
QCBmb3IgKDs7KQogICAgICAgICB7CiAgICAgICAgIC8qIE5vIGNhc2Ugb24gc3Vycm9nYXRlIHBh
aXJzLCBzbyBubyBuZWVkIHRvIGJvdGhlciB3aXRoICJvdGhlcmNhc2UiLiAqLwogCi0gICAgICAg
IGZvciAoaSA9IDE7IGkgPD0gZnJhbWUtPm1pbjsgaSsrKQorICAgICAgICBmb3IgKGkgPSAxOyBp
IDw9IG1pbjsgaSsrKQogICAgICAgICAgIHsKICAgICAgICAgICBpbnQgbmM7CiAgICAgICAgICAg
R0VUQ0hBUihuYywgZnJhbWUtPmVwdHIpOwpAQCAtMTM3MSwxNCArMTMyNiwxNCBAQCBmb3IgKDs7
KQogICAgICAgICAgIGZyYW1lLT5lcHRyICs9IDI7CiAgICAgICAgICAgfQogCi0gICAgICAgIGlm
IChmcmFtZS0+bWluID09IGZyYW1lLT5tYXgpIGNvbnRpbnVlOworICAgICAgICBpZiAobWluID09
IGZyYW1lLT5tYXgpIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChmcmFtZS0+bWluaW1pemUpCisg
ICAgICAgIGlmIChtaW5pbWl6ZSkKICAgICAgICAgICB7Ci0gICAgICAgICAgZm9yIChmcmFtZS0+
ZmkgPSBmcmFtZS0+bWluOzsgZnJhbWUtPmZpKyspCisgICAgICAgICAgZm9yIChmcmFtZS0+Zmkg
PSBtaW47OyBmcmFtZS0+ZmkrKykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIGludCBuYzsK
LSAgICAgICAgICAgIFJNQVRDSCgzMCwgcnJjLCBmcmFtZS0+ZWNvZGUsIGZyYW1lLT5lcHRyYiwg
MCk7CisgICAgICAgICAgICBSTUFUQ0goMzAsIGZyYW1lLT5lY29kZSwgZnJhbWUtPmVwdHJiLCAw
KTsKICAgICAgICAgICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJFVFVSTihycmMpOwog
ICAgICAgICAgICAgaWYgKGZyYW1lLT5maSA+PSBmcmFtZS0+bWF4IHx8IGZyYW1lLT5lcHRyID49
IG1kLT5lbmRfc3ViamVjdCkgUlJFVFVSTihNQVRDSF9OT01BVENIKTsKICAgICAgICAgICAgIEdF
VENIQVIobmMsIGZyYW1lLT5lcHRyKTsKQEAgLTEzOTAsNyArMTM0NSw3IEBAIGZvciAoOzspCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICB7CiAgICAgICAgICAgZnJhbWUtPnBwID0gZnJhbWUtPmVw
dHI7Ci0gICAgICAgICAgZm9yIChpID0gZnJhbWUtPm1pbjsgaSA8IGZyYW1lLT5tYXg7IGkrKykK
KyAgICAgICAgICBmb3IgKGkgPSBtaW47IGkgPCBmcmFtZS0+bWF4OyBpKyspCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICBpbnQgbmM7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmVwdHIgPiBt
ZC0+ZW5kX3N1YmplY3QgLSAyKSBicmVhazsKQEAgLTE0MDAsNyArMTM1NSw3IEBAIGZvciAoOzsp
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgd2hpbGUgKGZyYW1lLT5lcHRyID49IGZyYW1lLT5w
cCkKICAgICAgICAgICAgewotICAgICAgICAgICBSTUFUQ0goMzEsIHJyYywgZnJhbWUtPmVjb2Rl
LCBmcmFtZS0+ZXB0cmIsIDApOworICAgICAgICAgICBSTUFUQ0goMzEsIGZyYW1lLT5lY29kZSwg
ZnJhbWUtPmVwdHJiLCAwKTsKICAgICAgICAgICAgaWYgKHJyYyAhPSBNQVRDSF9OT01BVENIKSBS
UkVUVVJOKHJyYyk7CiAgICAgICAgICAgIGZyYW1lLT5lcHRyIC09IDI7CiAgICAgICAgICAgIH0K
QEAgLTE0MzgsMTUgKzEzOTMsMTYgQEAgZm9yICg7OykKICAgICBhYm91dC4uLiAqLwogCiAgICAg
Y2FzZSBPUF9OT1RFWEFDVDoKLSAgICBmcmFtZS0+bWluID0gZnJhbWUtPm1heCA9IEdFVDIoZnJh
bWUtPmVjb2RlLCAxKTsKKyAgICBtaW4gPSBmcmFtZS0+bWF4ID0gR0VUMihmcmFtZS0+ZWNvZGUs
IDEpOworICAgIG1pbmltaXplID0gRkFMU0U7CiAgICAgZnJhbWUtPmVjb2RlICs9IDM7CiAgICAg
Z290byBSRVBFQVROT1RDSEFSOwogCiAgICAgY2FzZSBPUF9OT1RVUFRPOgogICAgIGNhc2UgT1Bf
Tk9UTUlOVVBUTzoKLSAgICBmcmFtZS0+bWluID0gMDsKKyAgICBtaW4gPSAwOwogICAgIGZyYW1l
LT5tYXggPSBHRVQyKGZyYW1lLT5lY29kZSwgMSk7Ci0gICAgZnJhbWUtPm1pbmltaXplID0gKmZy
YW1lLT5lY29kZSA9PSBPUF9OT1RNSU5VUFRPOworICAgIG1pbmltaXplID0gKmZyYW1lLT5lY29k
ZSA9PSBPUF9OT1RNSU5VUFRPOwogICAgIGZyYW1lLT5lY29kZSArPSAzOwogICAgIGdvdG8gUkVQ
RUFUTk9UQ0hBUjsKIApAQCAtMTQ1Nyw4ICsxNDEzLDggQEAgZm9yICg7OykKICAgICBjYXNlIE9Q
X05PVFFVRVJZOgogICAgIGNhc2UgT1BfTk9UTUlOUVVFUlk6CiAgICAgYyA9ICpmcmFtZS0+ZWNv
ZGUrKyAtIE9QX05PVFNUQVI7Ci0gICAgZnJhbWUtPm1pbmltaXplID0gKGMgJiAxKSAhPSAwOwot
ICAgIGZyYW1lLT5taW4gPSByZXBfbWluW2NdOyAgICAgICAgICAgICAgICAgLyogUGljayB1cCB2
YWx1ZXMgZnJvbSB0YWJsZXM7ICovCisgICAgbWluaW1pemUgPSAoYyAmIDEpICE9IDA7CisgICAg
bWluID0gcmVwX21pbltjXTsgICAgICAgICAgICAgICAgIC8qIFBpY2sgdXAgdmFsdWVzIGZyb20g
dGFibGVzOyAqLwogICAgIGZyYW1lLT5tYXggPSByZXBfbWF4W2NdOyAgICAgICAgICAgICAgICAg
LyogemVybyBmb3IgbWF4ID0+IGluZmluaXR5ICovCiAgICAgaWYgKGZyYW1lLT5tYXggPT0gMCkg
ZnJhbWUtPm1heCA9IElOVF9NQVg7CiAKQEAgLTE0NjcsNyArMTQyMyw3IEBAIGZvciAoOzspCiAg
ICAgc3ViamVjdC4gKi8KIAogICAgIFJFUEVBVE5PVENIQVI6Ci0gICAgaWYgKGZyYW1lLT5taW4g
PiBtZC0+ZW5kX3N1YmplY3QgLSBmcmFtZS0+ZXB0cikgUlJFVFVSTihNQVRDSF9OT01BVENIKTsK
KyAgICBpZiAobWluID4gbWQtPmVuZF9zdWJqZWN0IC0gZnJhbWUtPmVwdHIpIFJSRVRVUk4oTUFU
Q0hfTk9NQVRDSCk7CiAgICAgZnJhbWUtPmZjID0gKmZyYW1lLT5lY29kZSsrOwogCiAgICAgLyog
VGhlIGNvZGUgaXMgZHVwbGljYXRlZCBmb3IgdGhlIGNhc2VsZXNzIGFuZCBjYXNlZnVsIGNhc2Vz
LCBmb3Igc3BlZWQsCkBAIC0xNDc4LDcgKzE0MzQsNyBAQCBmb3IgKDs7KQogICAgIG1heGltdW0u
IEFsdGVybmF0aXZlbHksIGlmIG1heGltaXppbmcsIGZpbmQgdGhlIG1heGltdW0gbnVtYmVyIG9m
CiAgICAgY2hhcmFjdGVycyBhbmQgd29yayBiYWNrd2FyZHMuICovCiAKLSAgICBEUFJJTlRGKCgi
bmVnYXRpdmUgbWF0Y2hpbmcgJWN7JWQsJWR9XG4iLCBmcmFtZS0+ZmMsIGZyYW1lLT5taW4sIGZy
YW1lLT5tYXgpKTsKKyAgICBEUFJJTlRGKCgibmVnYXRpdmUgbWF0Y2hpbmcgJWN7JWQsJWR9XG4i
LCBmcmFtZS0+ZmMsIG1pbiwgZnJhbWUtPm1heCkpOwogCiAgICAgaWYgKG1kLT5jYXNlbGVzcykK
ICAgICAgIHsKQEAgLTE0ODYsNyArMTQ0Miw3IEBAIGZvciAoOzspCiAKICAgICAgICAgewogICAg
ICAgICByZWdpc3RlciBpbnQgZDsKLSAgICAgICAgZm9yIChpID0gMTsgaSA8PSBmcmFtZS0+bWlu
OyBpKyspCisgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gbWluOyBpKyspCiAgICAgICAgICAgewog
ICAgICAgICAgIEdFVENIQVJJTkMoZCwgZnJhbWUtPmVwdHIpOwogICAgICAgICAgIGlmIChkIDwg
MTI4KSBkID0gbWQtPmxjY1tkXTsKQEAgLTE0OTQsMTUgKzE0NTAsMTUgQEAgZm9yICg7OykKICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgaWYgKGZyYW1lLT5taW4gPT0gZnJhbWUtPm1h
eCkgY29udGludWU7CisgICAgICBpZiAobWluID09IGZyYW1lLT5tYXgpIGNvbnRpbnVlOwogCi0g
ICAgICBpZiAoZnJhbWUtPm1pbmltaXplKQorICAgICAgaWYgKG1pbmltaXplKQogICAgICAgICB7
CiAgICAgICAgICAgewogICAgICAgICAgIHJlZ2lzdGVyIGludCBkOwotICAgICAgICAgIGZvciAo
ZnJhbWUtPmZpID0gZnJhbWUtPm1pbjs7IGZyYW1lLT5maSsrKQorICAgICAgICAgIGZvciAoZnJh
bWUtPmZpID0gbWluOzsgZnJhbWUtPmZpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICBS
TUFUQ0goMzgsIHJyYywgZnJhbWUtPmVjb2RlLCBmcmFtZS0+ZXB0cmIsIDApOworICAgICAgICAg
ICAgUk1BVENIKDM4LCBmcmFtZS0+ZWNvZGUsIGZyYW1lLT5lcHRyYiwgMCk7CiAgICAgICAgICAg
ICBpZiAocnJjICE9IE1BVENIX05PTUFUQ0gpIFJSRVRVUk4ocnJjKTsKICAgICAgICAgICAgIEdF
VENIQVJJTkMoZCwgZnJhbWUtPmVwdHIpOwogICAgICAgICAgICAgaWYgKGQgPCAxMjgpIGQgPSBt
ZC0+bGNjW2RdOwpAQCAtMTUyMSw3ICsxNDc3LDcgQEAgZm9yICg7OykKIAogICAgICAgICAgIHsK
ICAgICAgICAgICByZWdpc3RlciBpbnQgZDsKLSAgICAgICAgICBmb3IgKGkgPSBmcmFtZS0+bWlu
OyBpIDwgZnJhbWUtPm1heDsgaSsrKQorICAgICAgICAgIGZvciAoaSA9IG1pbjsgaSA8IGZyYW1l
LT5tYXg7IGkrKykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIGludCBsZW4gPSAxOwogICAg
ICAgICAgICAgaWYgKGZyYW1lLT5lcHRyID49IG1kLT5lbmRfc3ViamVjdCkgYnJlYWs7CkBAIC0x
NTMyLDcgKzE0ODgsNyBAQCBmb3IgKDs7KQogICAgICAgICAgICAgfQogICAgICAgICAgIGZvcig7
OykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgIFJNQVRDSCg0MCwgcnJjLCBmcmFtZS0+ZWNv
ZGUsIGZyYW1lLT5lcHRyYiwgMCk7CisgICAgICAgICAgICBSTUFUQ0goNDAsIGZyYW1lLT5lY29k
ZSwgZnJhbWUtPmVwdHJiLCAwKTsKICAgICAgICAgICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRD
SCkgUlJFVFVSTihycmMpOwogICAgICAgICAgICAgaWYgKGZyYW1lLT5lcHRyLS0gPT0gZnJhbWUt
PnBwKSBicmVhazsgICAgICAgIC8qIFN0b3AgaWYgdHJpZWQgYXQgb3JpZ2luYWwgcG9zICovCiAg
ICAgICAgICAgICBCQUNLQ0hBUihmcmFtZS0+ZXB0cik7CkBAIC0xNTUwLDIyICsxNTA2LDIyIEBA
IGZvciAoOzspCiAgICAgICB7CiAgICAgICAgIHsKICAgICAgICAgcmVnaXN0ZXIgaW50IGQ7Ci0g
ICAgICAgIGZvciAoaSA9IDE7IGkgPD0gZnJhbWUtPm1pbjsgaSsrKQorICAgICAgICBmb3IgKGkg
PSAxOyBpIDw9IG1pbjsgaSsrKQogICAgICAgICAgIHsKICAgICAgICAgICBHRVRDSEFSSU5DKGQs
IGZyYW1lLT5lcHRyKTsKICAgICAgICAgICBpZiAoZnJhbWUtPmZjID09IGQpIFJSRVRVUk4oTUFU
Q0hfTk9NQVRDSCk7CiAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgIGlmIChmcmFtZS0+
bWluID09IGZyYW1lLT5tYXgpIGNvbnRpbnVlOworICAgICAgaWYgKG1pbiA9PSBmcmFtZS0+bWF4
KSBjb250aW51ZTsKIAotICAgICAgaWYgKGZyYW1lLT5taW5pbWl6ZSkKKyAgICAgIGlmIChtaW5p
bWl6ZSkKICAgICAgICAgewogICAgICAgICAgIHsKICAgICAgICAgICByZWdpc3RlciBpbnQgZDsK
LSAgICAgICAgICBmb3IgKGZyYW1lLT5maSA9IGZyYW1lLT5taW47OyBmcmFtZS0+ZmkrKykKKyAg
ICAgICAgICBmb3IgKGZyYW1lLT5maSA9IG1pbjs7IGZyYW1lLT5maSsrKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgUk1BVENIKDQyLCBycmMsIGZyYW1lLT5lY29kZSwgZnJhbWUtPmVwdHJi
LCAwKTsKKyAgICAgICAgICAgIFJNQVRDSCg0MiwgZnJhbWUtPmVjb2RlLCBmcmFtZS0+ZXB0cmIs
IDApOwogICAgICAgICAgICAgaWYgKHJyYyAhPSBNQVRDSF9OT01BVENIKSBSUkVUVVJOKHJyYyk7
CiAgICAgICAgICAgICBHRVRDSEFSSU5DKGQsIGZyYW1lLT5lcHRyKTsKICAgICAgICAgICAgIGlm
IChmcmFtZS0+ZmkgPj0gZnJhbWUtPm1heCB8fCBmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1Ympl
Y3QgfHwgZnJhbWUtPmZjID09IGQpCkBAIC0xNTgzLDcgKzE1MzksNyBAQCBmb3IgKDs7KQogCiAg
ICAgICAgICAgewogICAgICAgICAgIHJlZ2lzdGVyIGludCBkOwotICAgICAgICAgIGZvciAoaSA9
IGZyYW1lLT5taW47IGkgPCBmcmFtZS0+bWF4OyBpKyspCisgICAgICAgICAgZm9yIChpID0gbWlu
OyBpIDwgZnJhbWUtPm1heDsgaSsrKQogICAgICAgICAgICAgewogICAgICAgICAgICAgaW50IGxl
biA9IDE7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmVwdHIgPj0gbWQtPmVuZF9zdWJqZWN0KSBi
cmVhazsKQEAgLTE1OTMsNyArMTU0OSw3IEBAIGZvciAoOzspCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgZm9yKDs7KQogICAgICAgICAgICAgewotICAgICAgICAgICAgUk1BVENIKDQ0LCBycmMs
IGZyYW1lLT5lY29kZSwgZnJhbWUtPmVwdHJiLCAwKTsKKyAgICAgICAgICAgIFJNQVRDSCg0NCwg
ZnJhbWUtPmVjb2RlLCBmcmFtZS0+ZXB0cmIsIDApOwogICAgICAgICAgICAgaWYgKHJyYyAhPSBN
QVRDSF9OT01BVENIKSBSUkVUVVJOKHJyYyk7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmVwdHIt
LSA9PSBmcmFtZS0+cHApIGJyZWFrOyAgICAgICAgLyogU3RvcCBpZiB0cmllZCBhdCBvcmlnaW5h
bCBwb3MgKi8KICAgICAgICAgICAgIEJBQ0tDSEFSKGZyYW1lLT5lcHRyKTsKQEAgLTE2MTAsMTYg
KzE1NjYsMTYgQEAgZm9yICg7OykKICAgICByZXBlYXQgaXQgaW4gdGhlIGludGVyZXN0cyBvZiBl
ZmZpY2llbmN5LiAqLwogCiAgICAgY2FzZSBPUF9UWVBFRVhBQ1Q6Ci0gICAgZnJhbWUtPm1pbiA9
IGZyYW1lLT5tYXggPSBHRVQyKGZyYW1lLT5lY29kZSwgMSk7Ci0gICAgZnJhbWUtPm1pbmltaXpl
ID0gVFJVRTsKKyAgICBtaW4gPSBmcmFtZS0+bWF4ID0gR0VUMihmcmFtZS0+ZWNvZGUsIDEpOwor
ICAgIG1pbmltaXplID0gVFJVRTsKICAgICBmcmFtZS0+ZWNvZGUgKz0gMzsKICAgICBnb3RvIFJF
UEVBVFRZUEU7CiAKICAgICBjYXNlIE9QX1RZUEVVUFRPOgogICAgIGNhc2UgT1BfVFlQRU1JTlVQ
VE86Ci0gICAgZnJhbWUtPm1pbiA9IDA7CisgICAgbWluID0gMDsKICAgICBmcmFtZS0+bWF4ID0g
R0VUMihmcmFtZS0+ZWNvZGUsIDEpOwotICAgIGZyYW1lLT5taW5pbWl6ZSA9ICpmcmFtZS0+ZWNv
ZGUgPT0gT1BfVFlQRU1JTlVQVE87CisgICAgbWluaW1pemUgPSAqZnJhbWUtPmVjb2RlID09IE9Q
X1RZUEVNSU5VUFRPOwogICAgIGZyYW1lLT5lY29kZSArPSAzOwogICAgIGdvdG8gUkVQRUFUVFlQ
RTsKIApAQCAtMTYzMCw4ICsxNTg2LDggQEAgZm9yICg7OykKICAgICBjYXNlIE9QX1RZUEVRVUVS
WToKICAgICBjYXNlIE9QX1RZUEVNSU5RVUVSWToKICAgICBjID0gKmZyYW1lLT5lY29kZSsrIC0g
T1BfVFlQRVNUQVI7Ci0gICAgZnJhbWUtPm1pbmltaXplID0gKGMgJiAxKSAhPSAwOwotICAgIGZy
YW1lLT5taW4gPSByZXBfbWluW2NdOyAgICAgICAgICAgICAgICAgLyogUGljayB1cCB2YWx1ZXMg
ZnJvbSB0YWJsZXM7ICovCisgICAgbWluaW1pemUgPSAoYyAmIDEpICE9IDA7CisgICAgbWluID0g
cmVwX21pbltjXTsgICAgICAgICAgICAgICAgIC8qIFBpY2sgdXAgdmFsdWVzIGZyb20gdGFibGVz
OyAqLwogICAgIGZyYW1lLT5tYXggPSByZXBfbWF4W2NdOyAgICAgICAgICAgICAgICAgLyogemVy
byBmb3IgbWF4ID0+IGluZmluaXR5ICovCiAgICAgaWYgKGZyYW1lLT5tYXggPT0gMCkgZnJhbWUt
Pm1heCA9IElOVF9NQVg7CiAKQEAgLTE2NTAsMTMgKzE2MDYsMTMgQEAgZm9yICg7OykKICAgICBp
cyB0aWRpZXIuIEFsc28gc2VwYXJhdGUgdGhlIFVDUCBjb2RlLCB3aGljaCBjYW4gYmUgdGhlIHNh
bWUgZm9yIGJvdGggVVRGLTgKICAgICBhbmQgc2luZ2xlLWJ5dGVzLiAqLwogCi0gICAgaWYgKGZy
YW1lLT5taW4gPiBtZC0+ZW5kX3N1YmplY3QgLSBmcmFtZS0+ZXB0cikgUlJFVFVSTihNQVRDSF9O
T01BVENIKTsKLSAgICBpZiAoZnJhbWUtPm1pbiA+IDApCisgICAgaWYgKG1pbiA+IG1kLT5lbmRf
c3ViamVjdCAtIGZyYW1lLT5lcHRyKSBSUkVUVVJOKE1BVENIX05PTUFUQ0gpOworICAgIGlmICht
aW4gPiAwKQogICAgICAgewogICAgICAgc3dpdGNoKGZyYW1lLT5jdHlwZSkKICAgICAgICAgewog
ICAgICAgICBjYXNlIE9QX0FOWToKLSAgICAgICAgZm9yIChpID0gMTsgaSA8PSBmcmFtZS0+bWlu
OyBpKyspCisgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gbWluOyBpKyspCiAgICAgICAgICAgewog
ICAgICAgICAgIGlmIChmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1YmplY3QgfHwgSVNfTkVXTElO
RSgqZnJhbWUtPmVwdHIpKQogICAgICAgICAgICAgUlJFVFVSTihNQVRDSF9OT01BVENIKTsKQEAg
LTE2NjYsNyArMTYyMiw3IEBAIGZvciAoOzspCiAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgT1BfTk9UX0RJR0lUOgotICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IGZyYW1lLT5taW47IGkr
KykKKyAgICAgICAgZm9yIChpID0gMTsgaSA8PSBtaW47IGkrKykKICAgICAgICAgICB7CiAgICAg
ICAgICAgaWYgKGZyYW1lLT5lcHRyID49IG1kLT5lbmRfc3ViamVjdCkgUlJFVFVSTihNQVRDSF9O
T01BVENIKTsKICAgICAgICAgICBHRVRDSEFSSU5DKGMsIGZyYW1lLT5lcHRyKTsKQEAgLTE2NzYs
NyArMTYzMiw3IEBAIGZvciAoOzspCiAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgT1Bf
RElHSVQ6Ci0gICAgICAgIGZvciAoaSA9IDE7IGkgPD0gZnJhbWUtPm1pbjsgaSsrKQorICAgICAg
ICBmb3IgKGkgPSAxOyBpIDw9IG1pbjsgaSsrKQogICAgICAgICAgIHsKICAgICAgICAgICBpZiAo
ZnJhbWUtPmVwdHIgPj0gbWQtPmVuZF9zdWJqZWN0IHx8CiAgICAgICAgICAgICAgKmZyYW1lLT5l
cHRyID49IDEyOCB8fCAobWQtPmN0eXBlc1sqZnJhbWUtPmVwdHIrK10gJiBjdHlwZV9kaWdpdCkg
PT0gMCkKQEAgLTE2ODYsNyArMTY0Miw3IEBAIGZvciAoOzspCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgT1BfTk9UX1dISVRFU1BBQ0U6Ci0gICAgICAgIGZvciAoaSA9IDE7IGkgPD0g
ZnJhbWUtPm1pbjsgaSsrKQorICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IG1pbjsgaSsrKQogICAg
ICAgICAgIHsKICAgICAgICAgICBpZiAoZnJhbWUtPmVwdHIgPj0gbWQtPmVuZF9zdWJqZWN0IHx8
CiAgICAgICAgICAgICAgKCpmcmFtZS0+ZXB0ciA8IDEyOCAmJiAobWQtPmN0eXBlc1sqZnJhbWUt
PmVwdHJdICYgY3R5cGVfc3BhY2UpICE9IDApKQpAQCAtMTY5Niw3ICsxNjUyLDcgQEAgZm9yICg7
OykKICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBPUF9XSElURVNQQUNFOgotICAgICAg
ICBmb3IgKGkgPSAxOyBpIDw9IGZyYW1lLT5taW47IGkrKykKKyAgICAgICAgZm9yIChpID0gMTsg
aSA8PSBtaW47IGkrKykKICAgICAgICAgICB7CiAgICAgICAgICAgaWYgKGZyYW1lLT5lcHRyID49
IG1kLT5lbmRfc3ViamVjdCB8fAogICAgICAgICAgICAgICpmcmFtZS0+ZXB0ciA+PSAxMjggfHwg
KG1kLT5jdHlwZXNbKmZyYW1lLT5lcHRyKytdICYgY3R5cGVfc3BhY2UpID09IDApCkBAIC0xNzA2
LDcgKzE2NjIsNyBAQCBmb3IgKDs7KQogICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIE9Q
X05PVF9XT1JEQ0hBUjoKLSAgICAgICAgZm9yIChpID0gMTsgaSA8PSBmcmFtZS0+bWluOyBpKysp
CisgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gbWluOyBpKyspCiAgICAgICAgICAgewogICAgICAg
ICAgIGlmIChmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1YmplY3QgfHwKICAgICAgICAgICAgICAo
KmZyYW1lLT5lcHRyIDwgMTI4ICYmIChtZC0+Y3R5cGVzWypmcmFtZS0+ZXB0cl0gJiBjdHlwZV93
b3JkKSAhPSAwKSkKQEAgLTE3MTYsNyArMTY3Miw3IEBAIGZvciAoOzspCiAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGNhc2UgT1BfV09SRENIQVI6Ci0gICAgICAgIGZvciAoaSA9IDE7IGkgPD0g
ZnJhbWUtPm1pbjsgaSsrKQorICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IG1pbjsgaSsrKQogICAg
ICAgICAgIHsKICAgICAgICAgICBpZiAoZnJhbWUtPmVwdHIgPj0gbWQtPmVuZF9zdWJqZWN0IHx8
CiAgICAgICAgICAgICAgKmZyYW1lLT5lcHRyID49IDEyOCB8fCAobWQtPmN0eXBlc1sqZnJhbWUt
PmVwdHIrK10gJiBjdHlwZV93b3JkKSA9PSAwKQpAQCAtMTczMiwxOCArMTY4OCwxNyBAQCBmb3Ig
KDs7KQogCiAgICAgLyogSWYgbWluID0gbWF4LCBjb250aW51ZSBhdCB0aGUgc2FtZSBsZXZlbCB3
aXRob3V0IHJlY3Vyc2luZyAqLwogCi0gICAgaWYgKGZyYW1lLT5taW4gPT0gZnJhbWUtPm1heCkg
Y29udGludWU7CisgICAgaWYgKG1pbiA9PSBmcmFtZS0+bWF4KSBjb250aW51ZTsKIAogICAgIC8q
IElmIG1pbmltaXppbmcsIHdlIGhhdmUgdG8gdGVzdCB0aGUgcmVzdCBvZiB0aGUgcGF0dGVybiBi
ZWZvcmUgZWFjaAotICAgIHN1YnNlcXVlbnQgbWF0Y2guIEFnYWluLCBzZXBhcmF0ZSB0aGUgVVRG
LTggY2FzZSBmb3Igc3BlZWQsIGFuZCBhbHNvCi0gICAgc2VwYXJhdGUgdGhlIFVDUCBjYXNlcy4g
Ki8KKyAgICBzdWJzZXF1ZW50IG1hdGNoLiAqLwogCi0gICAgaWYgKGZyYW1lLT5taW5pbWl6ZSkK
KyAgICBpZiAobWluaW1pemUpCiAgICAgICB7CiAgICAgICAgIHsKLSAgICAgICAgZm9yIChmcmFt
ZS0+ZmkgPSBmcmFtZS0+bWluOzsgZnJhbWUtPmZpKyspCisgICAgICAgIGZvciAoZnJhbWUtPmZp
ID0gbWluOzsgZnJhbWUtPmZpKyspCiAgICAgICAgICAgewotICAgICAgICAgIFJNQVRDSCg0OCwg
cnJjLCBmcmFtZS0+ZWNvZGUsIGZyYW1lLT5lcHRyYiwgMCk7CisgICAgICAgICAgUk1BVENIKDQ4
LCBmcmFtZS0+ZWNvZGUsIGZyYW1lLT5lcHRyYiwgMCk7CiAgICAgICAgICAgaWYgKHJyYyAhPSBN
QVRDSF9OT01BVENIKSBSUkVUVVJOKHJyYyk7CiAgICAgICAgICAgaWYgKGZyYW1lLT5maSA+PSBm
cmFtZS0+bWF4IHx8IGZyYW1lLT5lcHRyID49IG1kLT5lbmRfc3ViamVjdCkgUlJFVFVSTihNQVRD
SF9OT01BVENIKTsKIApAQCAtMTc5Myw4ICsxNzQ4LDcgQEAgZm9yICg7OykKICAgICAgIH0KIAog
ICAgIC8qIElmIG1heGltaXppbmcgaXQgaXMgd29ydGggdXNpbmcgaW5saW5lIGNvZGUgZm9yIHNw
ZWVkLCBkb2luZyB0aGUgdHlwZQotICAgIHRlc3Qgb25jZSBhdCB0aGUgc3RhcnQgKGkuZS4ga2Vl
cCBpdCBvdXQgb2YgdGhlIGxvb3ApLiBBZ2Fpbiwga2VlcCB0aGUKLSAgICBVVEYtOCBhbmQgVUNQ
IHN0dWZmIHNlcGFyYXRlLiAqLworICAgIHRlc3Qgb25jZSBhdCB0aGUgc3RhcnQgKGkuZS4ga2Vl
cCBpdCBvdXQgb2YgdGhlIGxvb3ApLiAqLwogCiAgICAgZWxzZQogICAgICAgewpAQCAtMTgxMiw3
ICsxNzY2LDcgQEAgZm9yICg7OykKICAgICAgICAgICBpZiAoZnJhbWUtPm1heCA8IElOVF9NQVgp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgZm9yIChpID0g
ZnJhbWUtPm1pbjsgaSA8IGZyYW1lLT5tYXg7IGkrKykKKyAgICAgICAgICAgICAgZm9yIChpID0g
bWluOyBpIDwgZnJhbWUtPm1heDsgaSsrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBpZiAoZnJhbWUtPmVwdHIgPj0gbWQtPmVuZF9zdWJqZWN0IHx8IElTX05FV0xJTkUoKmZy
YW1lLT5lcHRyKSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgZnJhbWUtPmVwdHIrKzsKQEAgLTE4
MjYsNyArMTc4MCw3IEBAIGZvciAoOzspCiAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGZvciAoaSA9IGZyYW1lLT5taW47IGkgPCBm
cmFtZS0+bWF4OyBpKyspCisgICAgICAgICAgICAgIGZvciAoaSA9IG1pbjsgaSA8IGZyYW1lLT5t
YXg7IGkrKykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5l
cHRyID49IG1kLT5lbmRfc3ViamVjdCB8fCBJU19ORVdMSU5FKCpmcmFtZS0+ZXB0cikpIGJyZWFr
OwogICAgICAgICAgICAgICAgIGZyYW1lLT5lcHRyKys7CkBAIC0xODM3LDcgKzE3OTEsNyBAQCBm
b3IgKDs7KQogICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgY2FzZSBPUF9OT1RfRElHSVQ6
Ci0gICAgICAgICAgZm9yIChpID0gZnJhbWUtPm1pbjsgaSA8IGZyYW1lLT5tYXg7IGkrKykKKyAg
ICAgICAgICBmb3IgKGkgPSBtaW47IGkgPCBmcmFtZS0+bWF4OyBpKyspCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICBpbnQgbGVuID0gMTsKICAgICAgICAgICAgIGlmIChmcmFtZS0+ZXB0ciA+
PSBtZC0+ZW5kX3N1YmplY3QpIGJyZWFrOwpAQCAtMTg0OCw3ICsxODAyLDcgQEAgZm9yICg7OykK
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGNhc2UgT1BfRElHSVQ6Ci0gICAgICAgICAg
Zm9yIChpID0gZnJhbWUtPm1pbjsgaSA8IGZyYW1lLT5tYXg7IGkrKykKKyAgICAgICAgICBmb3Ig
KGkgPSBtaW47IGkgPCBmcmFtZS0+bWF4OyBpKyspCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICBpbnQgbGVuID0gMTsKICAgICAgICAgICAgIGlmIChmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1
YmplY3QpIGJyZWFrOwpAQCAtMTg1OSw3ICsxODEzLDcgQEAgZm9yICg7OykKICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICAgIGNhc2UgT1BfTk9UX1dISVRFU1BBQ0U6Ci0gICAgICAgICAgZm9y
IChpID0gZnJhbWUtPm1pbjsgaSA8IGZyYW1lLT5tYXg7IGkrKykKKyAgICAgICAgICBmb3IgKGkg
PSBtaW47IGkgPCBmcmFtZS0+bWF4OyBpKyspCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICBp
bnQgbGVuID0gMTsKICAgICAgICAgICAgIGlmIChmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1Ympl
Y3QpIGJyZWFrOwpAQCAtMTg3MCw3ICsxODI0LDcgQEAgZm9yICg7OykKICAgICAgICAgICBicmVh
azsKIAogICAgICAgICAgIGNhc2UgT1BfV0hJVEVTUEFDRToKLSAgICAgICAgICBmb3IgKGkgPSBm
cmFtZS0+bWluOyBpIDwgZnJhbWUtPm1heDsgaSsrKQorICAgICAgICAgIGZvciAoaSA9IG1pbjsg
aSA8IGZyYW1lLT5tYXg7IGkrKykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIGludCBsZW4g
PSAxOwogICAgICAgICAgICAgaWYgKGZyYW1lLT5lcHRyID49IG1kLT5lbmRfc3ViamVjdCkgYnJl
YWs7CkBAIC0xODgxLDcgKzE4MzUsNyBAQCBmb3IgKDs7KQogICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgICAgY2FzZSBPUF9OT1RfV09SRENIQVI6Ci0gICAgICAgICAgZm9yIChpID0gZnJhbWUt
Pm1pbjsgaSA8IGZyYW1lLT5tYXg7IGkrKykKKyAgICAgICAgICBmb3IgKGkgPSBtaW47IGkgPCBm
cmFtZS0+bWF4OyBpKyspCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICBpbnQgbGVuID0gMTsK
ICAgICAgICAgICAgIGlmIChmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1YmplY3QpIGJyZWFrOwpA
QCAtMTg5Miw3ICsxODQ2LDcgQEAgZm9yICg7OykKICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICAgIGNhc2UgT1BfV09SRENIQVI6Ci0gICAgICAgICAgZm9yIChpID0gZnJhbWUtPm1pbjsgaSA8
IGZyYW1lLT5tYXg7IGkrKykKKyAgICAgICAgICBmb3IgKGkgPSBtaW47IGkgPCBmcmFtZS0+bWF4
OyBpKyspCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICBpbnQgbGVuID0gMTsKICAgICAgICAg
ICAgIGlmIChmcmFtZS0+ZXB0ciA+PSBtZC0+ZW5kX3N1YmplY3QpIGJyZWFrOwpAQCAtMTkxMCw3
ICsxODY0LDcgQEAgZm9yICg7OykKIAogICAgICAgICBmb3IoOzspCiAgICAgICAgICAgewotICAg
ICAgICAgIFJNQVRDSCg1MiwgcnJjLCBmcmFtZS0+ZWNvZGUsIGZyYW1lLT5lcHRyYiwgMCk7Cisg
ICAgICAgICAgUk1BVENIKDUyLCBmcmFtZS0+ZWNvZGUsIGZyYW1lLT5lcHRyYiwgMCk7CiAgICAg
ICAgICAgaWYgKHJyYyAhPSBNQVRDSF9OT01BVENIKSBSUkVUVVJOKHJyYyk7CiAgICAgICAgICAg
aWYgKGZyYW1lLT5lcHRyLS0gPT0gZnJhbWUtPnBwKSBicmVhazsgICAgICAgIC8qIFN0b3AgaWYg
dHJpZWQgYXQgb3JpZ2luYWwgcG9zICovCiAgICAgICAgICAgQkFDS0NIQVIoZnJhbWUtPmVwdHIp
OwpAQCAtMTkyMywxMiArMTg3Nyw3NCBAQCBmb3IgKDs7KQogICAgICAgfQogICAgIC8qIENvbnRy
b2wgbmV2ZXIgZ2V0cyBoZXJlICovCiAKKyAgICBkZWZhdWx0OgorICAgICAgLyogT3BlbmluZyBj
YXB0dXJpbmcgYnJhY2tldC4gSWYgdGhlcmUgaXMgc3BhY2UgaW4gdGhlIG9mZnNldCB2ZWN0b3Is
IHNhdmUKKyAgICAgIHRoZSBjdXJyZW50IHN1YmplY3QgcG9zaXRpb24gaW4gdGhlIHdvcmtpbmcg
c2xvdCBhdCB0aGUgdG9wIG9mIHRoZSB2ZWN0b3IuIFdlCisgICAgICBtdXN0bid0IGNoYW5nZSB0
aGUgY3VycmVudCB2YWx1ZXMgb2YgdGhlIGRhdGEgc2xvdCwgYmVjYXVzZSB0aGV5IG1heSBiZSBz
ZXQKKyAgICAgIGZyb20gYSBwcmV2aW91cyBpdGVyYXRpb24gb2YgdGhpcyBncm91cCwgYW5kIGJl
IHJlZmVycmVkIHRvIGJ5IGEgcmVmZXJlbmNlCisgICAgICBpbnNpZGUgdGhlIGdyb3VwLgorCisg
ICAgICBJZiB0aGUgYnJhY2tldCBmYWlscyB0byBtYXRjaCwgd2UgbmVlZCB0byByZXN0b3JlIHRo
aXMgdmFsdWUgYW5kIGFsc28gdGhlCisgICAgICB2YWx1ZXMgb2YgdGhlIGZpbmFsIG9mZnNldHMs
IGluIGNhc2UgdGhleSB3ZXJlIHNldCBieSBhIHByZXZpb3VzIGl0ZXJhdGlvbiBvZgorICAgICAg
dGhlIHNhbWUgYnJhY2tldC4KKworICAgICAgSWYgdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlIGlu
IHRoZSBvZmZzZXQgdmVjdG9yLCB0cmVhdCB0aGlzIGFzIGlmIGl0IHdlcmUgYQorICAgICAgbm9u
LWNhcHR1cmluZyBicmFja2V0LiBEb24ndCB3b3JyeSBhYm91dCBzZXR0aW5nIHRoZSBmbGFnIGZv
ciB0aGUgZXJyb3IgY2FzZQorICAgICAgaGVyZTsgdGhhdCBpcyBoYW5kbGVkIGluIHRoZSBjb2Rl
IGZvciBLRVQuICovCisKKyAgICAgIGlmICgqZnJhbWUtPmVjb2RlID4gT1BfQlJBKQorICAgICAg
ICB7CisgICAgICAgIGZyYW1lLT5udW1iZXIgPSAqZnJhbWUtPmVjb2RlIC0gT1BfQlJBOworCisg
ICAgICAgIC8qIEZvciBleHRlbmRlZCBleHRyYWN0aW9uIGJyYWNrZXRzIChsYXJnZSBudW1iZXIp
LCB3ZSBoYXZlIHRvIGZpc2ggb3V0IHRoZQorICAgICAgICBudW1iZXIgZnJvbSBhIGR1bW15IG9w
Y29kZSBhdCB0aGUgc3RhcnQuICovCisKKyAgICAgICAgaWYgKGZyYW1lLT5udW1iZXIgPiBFWFRS
QUNUX0JBU0lDX01BWCkKKyAgICAgICAgICBmcmFtZS0+bnVtYmVyID0gR0VUMihmcmFtZS0+ZWNv
ZGUsIDIrTElOS19TSVpFKTsKKyAgICAgICAgZnJhbWUtPm9mZnNldCA9IGZyYW1lLT5udW1iZXIg
PDwgMTsKKworI2lmZGVmIERFQlVHCisgICAgICAgIHByaW50Zigic3RhcnQgYnJhY2tldCAlZCBz
dWJqZWN0PSIsIGZyYW1lLT5udW1iZXIpOworICAgICAgICBwY2hhcnMoZnJhbWUtPmVwdHIsIDE2
LCBUUlVFLCBtZCk7CisgICAgICAgIHByaW50ZigiXG4iKTsKKyNlbmRpZgorCisgICAgICAgIGlm
IChmcmFtZS0+b2Zmc2V0IDwgbWQtPm9mZnNldF9tYXgpCisgICAgICAgICAgeworICAgICAgICAg
IGZyYW1lLT5zYXZlX29mZnNldDEgPSBtZC0+b2Zmc2V0X3ZlY3RvcltmcmFtZS0+b2Zmc2V0XTsK
KyAgICAgICAgICBmcmFtZS0+c2F2ZV9vZmZzZXQyID0gbWQtPm9mZnNldF92ZWN0b3JbZnJhbWUt
Pm9mZnNldCsxXTsKKyAgICAgICAgICBmcmFtZS0+c2F2ZV9vZmZzZXQzID0gbWQtPm9mZnNldF92
ZWN0b3JbbWQtPm9mZnNldF9lbmQgLSBmcmFtZS0+bnVtYmVyXTsKKworICAgICAgICAgIERQUklO
VEYoKCJzYXZpbmcgJWQgJWQgJWRcbiIsIGZyYW1lLT5zYXZlX29mZnNldDEsIGZyYW1lLT5zYXZl
X29mZnNldDIsIGZyYW1lLT5zYXZlX29mZnNldDMpKTsKKyAgICAgICAgICBtZC0+b2Zmc2V0X3Zl
Y3RvclttZC0+b2Zmc2V0X2VuZCAtIGZyYW1lLT5udW1iZXJdID0gZnJhbWUtPmVwdHIgLSBtZC0+
c3RhcnRfc3ViamVjdDsKKworICAgICAgICAgIGRvCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICBSTUFUQ0goMSwgZnJhbWUtPmVjb2RlICsgMSArIExJTktfU0laRSwgZnJhbWUtPmVwdHJiLCBt
YXRjaF9pc2dyb3VwKTsKKyAgICAgICAgICAgIGlmIChycmMgIT0gTUFUQ0hfTk9NQVRDSCkgUlJF
VFVSTihycmMpOworICAgICAgICAgICAgZnJhbWUtPmVjb2RlICs9IEdFVChmcmFtZS0+ZWNvZGUs
IDEpOworICAgICAgICAgICAgfQorICAgICAgICAgIHdoaWxlICgqZnJhbWUtPmVjb2RlID09IE9Q
X0FMVCk7CisKKyAgICAgICAgICBEUFJJTlRGKCgiYnJhY2tldCAlZCBmYWlsZWRcbiIsIGZyYW1l
LT5udW1iZXIpKTsKKworICAgICAgICAgIG1kLT5vZmZzZXRfdmVjdG9yW2ZyYW1lLT5vZmZzZXRd
ID0gZnJhbWUtPnNhdmVfb2Zmc2V0MTsKKyAgICAgICAgICBtZC0+b2Zmc2V0X3ZlY3RvcltmcmFt
ZS0+b2Zmc2V0KzFdID0gZnJhbWUtPnNhdmVfb2Zmc2V0MjsKKyAgICAgICAgICBtZC0+b2Zmc2V0
X3ZlY3RvclttZC0+b2Zmc2V0X2VuZCAtIGZyYW1lLT5udW1iZXJdID0gZnJhbWUtPnNhdmVfb2Zm
c2V0MzsKKworICAgICAgICAgIFJSRVRVUk4oTUFUQ0hfTk9NQVRDSCk7CisgICAgICAgICAgfQor
CisgICAgICAgIC8qIEluc3VmZmljaWVudCByb29tIGZvciBzYXZpbmcgY2FwdHVyZWQgY29udGVu
dHMgKi8KKworICAgICAgICBnb3RvIE5PTl9DQVBUVVJJTkdfQlJBQ0tFVDsKKyAgICAgICAgfQor
CiAgICAgLyogVGhlcmUncyBiZWVuIHNvbWUgaG9ycmlibGUgZGlzYXN0ZXIuIFNpbmNlIGFsbCBj
b2RlcyA+IE9QX0JSQSBhcmUKICAgICBmb3IgY2FwdHVyaW5nIGJyYWNrZXRzLCBhbmQgdGhlcmUg
c2hvdWxkbid0IGJlIGFueSBnYXBzIGJldHdlZW4gMCBhbmQKICAgICBPUF9CUkEsIGFycml2YWwg
aGVyZSBjYW4gb25seSBtZWFuIHRoZXJlIGlzIHNvbWV0aGluZyBzZXJpb3VzbHkgd3JvbmcKICAg
ICBpbiB0aGUgY29kZSBhYm92ZSBvciB0aGUgT1BfeHh4IGRlZmluaXRpb25zLiAqLwogCi0gICAg
ZGVmYXVsdDoKICAgICBEUFJJTlRGKCgiVW5rbm93biBvcGNvZGUgJWRcbiIsICpmcmFtZS0+ZWNv
ZGUpKTsKICAgICBSUkVUVVJOKEpTX1JFR0VYUF9FUlJPUl9JTlRFUk5BTCk7CiAgICAgfQpJbmRl
eDogSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcGNyZS9wY3JlX2ludGVybmFsLmgJKHJldmlzaW9uIDI3NDIwKQorKysgSmF2
YVNjcmlwdENvcmUvcGNyZS9wY3JlX2ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2NSwx
MDAgKzM2NSwxMDIgQEAgTm90ZSB0aGF0IHdoZW5ldmVyIHRoaXMgbGlzdCBpcyB1cGRhdGVkLAog
bXVzdCBhbHNvIGJlIHVwZGF0ZWQgdG8gbWF0Y2guICovCiAKIGVudW0gewotICBPUF9FTkQsICAg
ICAgICAgICAgLyogMCBFbmQgb2YgcGF0dGVybiAqLworICBPUF9FTkQsICAgICAgICAgICAgICAg
ICAgIC8qIEVuZCBvZiBwYXR0ZXJuICovCiAKICAgLyogVmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8g
YmFja3NsYXNoZWQgbWV0YWNoYXJhY3RlcnMgKi8KIAotICBPUF9OT1RfV09SRF9CT1VOREFSWSwg
IC8qICAzIFxCICovCi0gIE9QX1dPUkRfQk9VTkRBUlksICAgICAgLyogIDQgXGIgKi8KLSAgT1Bf
Tk9UX0RJR0lULCAgICAgICAgICAvKiAgNSBcRCAqLwotICBPUF9ESUdJVCwgICAgICAgICAgICAg
IC8qICA2IFxkICovCi0gIE9QX05PVF9XSElURVNQQUNFLCAgICAgLyogIDcgXFMgKi8KLSAgT1Bf
V0hJVEVTUEFDRSwgICAgICAgICAvKiAgOCBccyAqLwotICBPUF9OT1RfV09SRENIQVIsICAgICAg
IC8qICA5IFxXICovCi0gIE9QX1dPUkRDSEFSLCAgICAgICAgICAgLyogMTAgXHcgKi8KLQotICBP
UF9BTlksICAgICAgICAgICAgLyogMTEgTWF0Y2ggYW55IGNoYXJhY3RlciAqLwotCi0gIE9QX0NJ
UkMsICAgICAgICAgICAvKiAxOSBTdGFydCBvZiBsaW5lIC0gdmFyaWVzIHdpdGggbXVsdGlsaW5l
IHN3aXRjaCAqLwotICBPUF9ET0xMLCAgICAgICAgICAgLyogMjAgRW5kIG9mIGxpbmUgLSB2YXJp
ZXMgd2l0aCBtdWx0aWxpbmUgc3dpdGNoICovCi0gIE9QX0NIQVIsICAgICAgICAgICAvKiAyMSBN
YXRjaCBvbmUgY2hhcmFjdGVyLCBjYXNlZnVsbHkgKi8KLSAgT1BfQ0hBUk5DLCAgICAgICAgIC8q
IDIyIE1hdGNoIG9uZSBjaGFyYWN0ZXIsIGNhc2VsZXNzbHkgKi8KLSAgT1BfTk9ULCAgICAgICAg
ICAgIC8qIDIzIE1hdGNoIGFueXRoaW5nIGJ1dCB0aGUgZm9sbG93aW5nIGNoYXIgKi8KLQotICBP
UF9TVEFSLCAgICAgICAgICAgLyogMjQgVGhlIG1heGltaXppbmcgYW5kIG1pbmltaXppbmcgdmVy
c2lvbnMgb2YgKi8KLSAgT1BfTUlOU1RBUiwgICAgICAgIC8qIDI1IGFsbCB0aGVzZSBvcGNvZGVz
IG11c3QgY29tZSBpbiBwYWlycywgd2l0aCAqLwotICBPUF9QTFVTLCAgICAgICAgICAgLyogMjYg
dGhlIG1pbmltaXppbmcgb25lIHNlY29uZC4gKi8KLSAgT1BfTUlOUExVUywgICAgICAgIC8qIDI3
IFRoaXMgZmlyc3Qgc2V0IGFwcGxpZXMgdG8gc2luZ2xlIGNoYXJhY3RlcnMgKi8KLSAgT1BfUVVF
UlksICAgICAgICAgIC8qIDI4ICovCi0gIE9QX01JTlFVRVJZLCAgICAgICAvKiAyOSAqLwotICBP
UF9VUFRPLCAgICAgICAgICAgLyogMzAgRnJvbSAwIHRvIG4gbWF0Y2hlcyAqLwotICBPUF9NSU5V
UFRPLCAgICAgICAgLyogMzEgKi8KLSAgT1BfRVhBQ1QsICAgICAgICAgIC8qIDMyIEV4YWN0bHkg
biBtYXRjaGVzICovCi0KLSAgT1BfTk9UU1RBUiwgICAgICAgIC8qIDMzIFRoZSBtYXhpbWl6aW5n
IGFuZCBtaW5pbWl6aW5nIHZlcnNpb25zIG9mICovCi0gIE9QX05PVE1JTlNUQVIsICAgICAvKiAz
NCBhbGwgdGhlc2Ugb3Bjb2RlcyBtdXN0IGNvbWUgaW4gcGFpcnMsIHdpdGggKi8KLSAgT1BfTk9U
UExVUywgICAgICAgIC8qIDM1IHRoZSBtaW5pbWl6aW5nIG9uZSBzZWNvbmQuICovCi0gIE9QX05P
VE1JTlBMVVMsICAgICAvKiAzNiBUaGlzIHNldCBhcHBsaWVzIHRvICJub3QiIHNpbmdsZSBjaGFy
YWN0ZXJzICovCi0gIE9QX05PVFFVRVJZLCAgICAgICAvKiAzNyAqLwotICBPUF9OT1RNSU5RVUVS
WSwgICAgLyogMzggKi8KLSAgT1BfTk9UVVBUTywgICAgICAgIC8qIDM5IEZyb20gMCB0byBuIG1h
dGNoZXMgKi8KLSAgT1BfTk9UTUlOVVBUTywgICAgIC8qIDQwICovCi0gIE9QX05PVEVYQUNULCAg
ICAgICAvKiA0MSBFeGFjdGx5IG4gbWF0Y2hlcyAqLwotCi0gIE9QX1RZUEVTVEFSLCAgICAgICAv
KiA0MiBUaGUgbWF4aW1pemluZyBhbmQgbWluaW1pemluZyB2ZXJzaW9ucyBvZiAqLwotICBPUF9U
WVBFTUlOU1RBUiwgICAgLyogNDMgYWxsIHRoZXNlIG9wY29kZXMgbXVzdCBjb21lIGluIHBhaXJz
LCB3aXRoICovCi0gIE9QX1RZUEVQTFVTLCAgICAgICAvKiA0NCB0aGUgbWluaW1pemluZyBvbmUg
c2Vjb25kLiBUaGVzZSBjb2RlcyBtdXN0ICovCi0gIE9QX1RZUEVNSU5QTFVTLCAgICAvKiA0NSBi
ZSBpbiBleGFjdGx5IHRoZSBzYW1lIG9yZGVyIGFzIHRob3NlIGFib3ZlLiAqLwotICBPUF9UWVBF
UVVFUlksICAgICAgLyogNDYgVGhpcyBzZXQgYXBwbGllcyB0byBjaGFyYWN0ZXIgdHlwZXMgc3Vj
aCBhcyBcZCAqLwotICBPUF9UWVBFTUlOUVVFUlksICAgLyogNDcgKi8KLSAgT1BfVFlQRVVQVE8s
ICAgICAgIC8qIDQ4IEZyb20gMCB0byBuIG1hdGNoZXMgKi8KLSAgT1BfVFlQRU1JTlVQVE8sICAg
IC8qIDQ5ICovCi0gIE9QX1RZUEVFWEFDVCwgICAgICAvKiA1MCBFeGFjdGx5IG4gbWF0Y2hlcyAq
LwotCi0gIE9QX0NSU1RBUiwgICAgICAgICAvKiA1MSBUaGUgbWF4aW1pemluZyBhbmQgbWluaW1p
emluZyB2ZXJzaW9ucyBvZiAqLwotICBPUF9DUk1JTlNUQVIsICAgICAgLyogNTIgYWxsIHRoZXNl
IG9wY29kZXMgbXVzdCBjb21lIGluIHBhaXJzLCB3aXRoICovCi0gIE9QX0NSUExVUywgICAgICAg
ICAvKiA1MyB0aGUgbWluaW1pemluZyBvbmUgc2Vjb25kLiBUaGVzZSBjb2RlcyBtdXN0ICovCi0g
IE9QX0NSTUlOUExVUywgICAgICAvKiA1NCBiZSBpbiBleGFjdGx5IHRoZSBzYW1lIG9yZGVyIGFz
IHRob3NlIGFib3ZlLiAqLwotICBPUF9DUlFVRVJZLCAgICAgICAgLyogNTUgVGhlc2UgYXJlIGZv
ciBjaGFyYWN0ZXIgY2xhc3NlcyBhbmQgYmFjayByZWZzICovCi0gIE9QX0NSTUlOUVVFUlksICAg
ICAvKiA1NiAqLwotICBPUF9DUlJBTkdFLCAgICAgICAgLyogNTcgVGhlc2UgYXJlIGRpZmZlcmVu
dCB0byB0aGUgdGhyZWUgc2V0cyBhYm92ZS4gKi8KLSAgT1BfQ1JNSU5SQU5HRSwgICAgIC8qIDU4
ICovCi0KLSAgT1BfQ0xBU1MsICAgICAgICAgIC8qIDU5IE1hdGNoIGEgY2hhcmFjdGVyIGNsYXNz
LCBjaGFycyA8IDI1NiBvbmx5ICovCi0gIE9QX05DTEFTUywgICAgICAgICAvKiA2MCBTYW1lLCBi
dXQgdGhlIGJpdG1hcCB3YXMgY3JlYXRlZCBmcm9tIGEgbmVnYXRpdmUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsYXNzIC0gdGhlIGRpZmZlcmVuY2UgaXMgcmVsZXZhbnQgb25seSB3aGVu
IGEgVVRGLTgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciA+IDI1NSBpcyBl
bmNvdW50ZXJlZC4gKi8KLQotICBPUF9YQ0xBU1MsICAgICAgICAgLyogNjEgRXh0ZW5kZWQgY2xh
c3MgZm9yIGhhbmRsaW5nIFVURi04IGNoYXJzIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsYXNzLiBUaGlzIGRvZXMgYm90aCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUuICov
Ci0KLSAgT1BfUkVGLCAgICAgICAgICAgIC8qIDYyIE1hdGNoIGEgYmFjayByZWZlcmVuY2UgKi8K
LQotICBPUF9BTFQsICAgICAgICAgICAgLyogNjUgU3RhcnQgb2YgYWx0ZXJuYXRpb24gKi8KLSAg
T1BfS0VULCAgICAgICAgICAgIC8qIDY2IEVuZCBvZiBncm91cCB0aGF0IGRvZXNuJ3QgaGF2ZSBh
biB1bmJvdW5kZWQgcmVwZWF0ICovCi0gIE9QX0tFVFJNQVgsICAgICAgICAvKiA2NyBUaGVzZSB0
d28gbXVzdCByZW1haW4gdG9nZXRoZXIgYW5kIGluIHRoaXMgKi8KLSAgT1BfS0VUUk1JTiwgICAg
ICAgIC8qIDY4IG9yZGVyLiBUaGV5IGFyZSBmb3IgZ3JvdXBzIHRoZSByZXBlYXQgZm9yIGV2ZXIu
ICovCisgIE9QX05PVF9XT1JEX0JPVU5EQVJZLCAgICAgLyogXEIgKi8KKyAgT1BfV09SRF9CT1VO
REFSWSwgICAgICAgICAvKiBcYiAqLworICBPUF9OT1RfRElHSVQsICAgICAgICAgICAgIC8qIFxE
ICovCisgIE9QX0RJR0lULCAgICAgICAgICAgICAgICAgLyogXGQgKi8KKyAgT1BfTk9UX1dISVRF
U1BBQ0UsICAgICAgICAvKiBcUyAqLworICBPUF9XSElURVNQQUNFLCAgICAgICAgICAgIC8qIFxz
ICovCisgIE9QX05PVF9XT1JEQ0hBUiwgICAgICAgICAgLyogXFcgKi8KKyAgT1BfV09SRENIQVIs
ICAgICAgICAgICAgICAvKiBcdyAqLworCisgIE9QX0FOWSwgICAgICAgICAgICAgICAgICAgLyog
LiAtLSBNYXRjaCBhbnkgY2hhcmFjdGVyICovCisKKyAgT1BfQ0lSQywgICAgICAgICAgICAgICAg
ICAvKiBeICovCisgIE9QX0RPTEwsICAgICAgICAgICAgICAgICAgLyogJCAqLworICBPUF9DSEFS
LCAgICAgICAgICAgICAgICAgIC8qIE1hdGNoIG9uZSBjaGFyYWN0ZXIsIGNhc2VmdWxseSAqLwor
ICBPUF9DSEFSTkMsICAgICAgICAgICAgICAgIC8qIE1hdGNoIG9uZSBjaGFyYWN0ZXIsIGNhc2Vs
ZXNzbHkgKi8KKyAgT1BfQVNDSUlfQ0hBUiwgICAgICAgICAgICAvKiBNYXRjaCBvbmUgQVNDSUkg
KDAtMTI3KSBjaGFyYWN0ZXIuICovCisgIE9QX0FTQ0lJX0xFVFRFUl9OQywgICAgICAgLyogTWF0
Y2ggb25lIEFTQ0lJIGxldHRlciwgY2FzZWxlc3NseS4gKi8KKyAgT1BfTk9ULCAgICAgICAgICAg
ICAgICAgICAvKiBNYXRjaCBhbnl0aGluZyBidXQgdGhlIGZvbGxvd2luZyBjaGFyICovCisKKyAg
T1BfU1RBUiwgICAgICAgICAgICAgICAgICAvKiBUaGUgbWF4aW1pemluZyBhbmQgbWluaW1pemlu
ZyB2ZXJzaW9ucyBvZiAqLworICBPUF9NSU5TVEFSLCAgICAgICAgICAgICAgIC8qIGFsbCB0aGVz
ZSBvcGNvZGVzIG11c3QgY29tZSBpbiBwYWlycywgd2l0aCAqLworICBPUF9QTFVTLCAgICAgICAg
ICAgICAgICAgIC8qIHRoZSBtaW5pbWl6aW5nIG9uZSBzZWNvbmQuICovCisgIE9QX01JTlBMVVMs
ICAgICAgICAgICAgICAgLyogVGhpcyBmaXJzdCBzZXQgYXBwbGllcyB0byBzaW5nbGUgY2hhcmFj
dGVycyAqLworICBPUF9RVUVSWSwKKyAgT1BfTUlOUVVFUlksCisgIE9QX1VQVE8sICAgICAgICAg
ICAgICAgICAgLyogRnJvbSAwIHRvIG4gbWF0Y2hlcyAqLworICBPUF9NSU5VUFRPLAorICBPUF9F
WEFDVCwgICAgICAgICAgICAgICAgIC8qIEV4YWN0bHkgbiBtYXRjaGVzICovCisKKyAgT1BfTk9U
U1RBUiwgICAgICAgICAgICAgICAvKiBUaGlzIHNldCBhcHBsaWVzIHRvICJub3QiIHNpbmdsZSBj
aGFyYWN0ZXJzICovCisgIE9QX05PVE1JTlNUQVIsCisgIE9QX05PVFBMVVMsCisgIE9QX05PVE1J
TlBMVVMsCisgIE9QX05PVFFVRVJZLAorICBPUF9OT1RNSU5RVUVSWSwKKyAgT1BfTk9UVVBUTywK
KyAgT1BfTk9UTUlOVVBUTywKKyAgT1BfTk9URVhBQ1QsCisKKyAgT1BfVFlQRVNUQVIsICAgICAg
ICAgICAgICAvKiBUaGlzIHNldCBhcHBsaWVzIHRvIGNoYXJhY3RlciB0eXBlcyBzdWNoIGFzIFxk
ICovCisgIE9QX1RZUEVNSU5TVEFSLAorICBPUF9UWVBFUExVUywKKyAgT1BfVFlQRU1JTlBMVVMs
CisgIE9QX1RZUEVRVUVSWSwKKyAgT1BfVFlQRU1JTlFVRVJZLAorICBPUF9UWVBFVVBUTywKKyAg
T1BfVFlQRU1JTlVQVE8sCisgIE9QX1RZUEVFWEFDVCwKKworICBPUF9DUlNUQVIsICAgICAgICAg
ICAgICAgIC8qIFRoZXNlIGFyZSBmb3IgY2hhcmFjdGVyIGNsYXNzZXMgYW5kIGJhY2sgcmVmcyAq
LworICBPUF9DUk1JTlNUQVIsCisgIE9QX0NSUExVUywKKyAgT1BfQ1JNSU5QTFVTLAorICBPUF9D
UlFVRVJZLAorICBPUF9DUk1JTlFVRVJZLAorICBPUF9DUlJBTkdFLCAgICAgICAgICAgICAgIC8q
IFRoZXNlIGFyZSBkaWZmZXJlbnQgdG8gdGhlIHRocmVlIHNldHMgYWJvdmUuICovCisgIE9QX0NS
TUlOUkFOR0UsCisKKyAgT1BfQ0xBU1MsICAgICAgICAgICAgICAgICAvKiBNYXRjaCBhIGNoYXJh
Y3RlciBjbGFzcywgY2hhcnMgPCAyNTYgb25seSAqLworICBPUF9OQ0xBU1MsICAgICAgICAgICAg
ICAgIC8qIFNhbWUsIGJ1dCB0aGUgYml0bWFwIHdhcyBjcmVhdGVkIGZyb20gYSBuZWdhdGl2ZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIC0gdGhlIGRpZmZlcmVuY2UgaXMg
cmVsZXZhbnQgd2hlbiBhIFVURi04CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
cmFjdGVyID4gMjU1IGlzIGVuY291bnRlcmVkLiAqLworCisgIE9QX1hDTEFTUywgICAgICAgICAg
ICAgICAgLyogRXh0ZW5kZWQgY2xhc3MgZm9yIGhhbmRsaW5nIFVURi04IGNoYXJzIHdpdGhpbiB0
aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcy4gVGhpcyBkb2VzIGJvdGgg
cG9zaXRpdmUgYW5kIG5lZ2F0aXZlLiAqLworCisgIE9QX1JFRiwgICAgICAgICAgICAgICAgICAg
LyogTWF0Y2ggYSBiYWNrIHJlZmVyZW5jZSAqLworCisgIE9QX0FMVCwgICAgICAgICAgICAgICAg
ICAgLyogU3RhcnQgb2YgYWx0ZXJuYXRpb24gKi8KKyAgT1BfS0VULCAgICAgICAgICAgICAgICAg
ICAvKiBFbmQgb2YgZ3JvdXAgdGhhdCBkb2Vzbid0IGhhdmUgYW4gdW5ib3VuZGVkIHJlcGVhdCAq
LworICBPUF9LRVRSTUFYLCAgICAgICAgICAgICAgIC8qIFRoZXNlIHR3byBtdXN0IHJlbWFpbiB0
b2dldGhlciBhbmQgaW4gdGhpcyAqLworICBPUF9LRVRSTUlOLCAgICAgICAgICAgICAgIC8qIG9y
ZGVyLiBUaGV5IGFyZSBmb3IgZ3JvdXBzIHRoZSByZXBlYXQgZm9yIGV2ZXIuICovCiAKICAgLyog
VGhlIGFzc2VydGlvbnMgbXVzdCBjb21lIGJlZm9yZSBPTkNFIGFuZCBDT05EICovCiAKLSAgT1Bf
QVNTRVJULCAgICAgICAgIC8qIDY5IFBvc2l0aXZlIGxvb2thaGVhZCAqLwotICBPUF9BU1NFUlRf
Tk9ULCAgICAgLyogNzAgTmVnYXRpdmUgbG9va2FoZWFkICovCisgIE9QX0FTU0VSVCwgICAgICAg
ICAgICAgICAgLyogUG9zaXRpdmUgbG9va2FoZWFkICovCisgIE9QX0FTU0VSVF9OT1QsICAgICAg
ICAgICAgLyogTmVnYXRpdmUgbG9va2FoZWFkICovCiAKICAgLyogT05DRSBhbmQgQ09ORCBtdXN0
IGNvbWUgYWZ0ZXIgdGhlIGFzc2VydGlvbnMsIHdpdGggT05DRSBmaXJzdCwgYXMgdGhlcmUncwog
ICBhIHRlc3QgZm9yID49IE9OQ0UgZm9yIGEgc3VicGF0dGVybiB0aGF0IGlzbid0IGFuIGFzc2Vy
dGlvbi4gKi8KIAotICBPUF9PTkNFLCAgICAgICAgICAgLyogNzQgT25jZSBtYXRjaGVkLCBkb24n
dCBiYWNrIHVwIGludG8gdGhlIHN1YnBhdHRlcm4gKi8KKyAgT1BfT05DRSwgICAgICAgICAgICAg
ICAgICAvKiBPbmNlIG1hdGNoZWQsIGRvbid0IGJhY2sgdXAgaW50byB0aGUgc3VicGF0dGVybiAq
LwogCi0gIE9QX0JSQVpFUk8sICAgICAgICAvKiA3NyBUaGVzZSB0d28gbXVzdCByZW1haW4gdG9n
ZXRoZXIgYW5kIGluIHRoaXMgKi8KLSAgT1BfQlJBTUlOWkVSTywgICAgIC8qIDc4IG9yZGVyLiAq
LworICBPUF9CUkFaRVJPLCAgICAgICAgICAgICAgIC8qIFRoZXNlIHR3byBtdXN0IHJlbWFpbiB0
b2dldGhlciBhbmQgaW4gdGhpcyAqLworICBPUF9CUkFNSU5aRVJPLCAgICAgICAgICAgIC8qIG9y
ZGVyLiAqLwogCi0gIE9QX0JSQU5VTUJFUiwgICAgICAvKiA3OSBVc2VkIGZvciBleHRyYWN0aW5n
IGJyYWNrZXRzIHdob3NlIG51bWJlciBpcyBncmVhdGVyCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGFuIGNhbiBmaXQgaW50byBhbiBvcGNvZGUuICovCisgIE9QX0JSQU5VTUJFUiwgICAg
ICAgICAgICAgLyogVXNlZCBmb3IgZXh0cmFjdGluZyBicmFja2V0cyB3aG9zZSBudW1iZXIgaXMg
Z3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gY2FuIGZpdCBpbnRv
IGFuIG9wY29kZS4gKi8KIAotICBPUF9CUkEgICAgICAgICAgICAgLyogODAgVGhpcyBhbmQgZ3Jl
YXRlciB2YWx1ZXMgYXJlIHVzZWQgZm9yIGJyYWNrZXRzIHRoYXQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4dHJhY3Qgc3Vic3RyaW5ncyB1cCB0byBFWFRSQUNUX0JBU0lDX01BWC4gQWZ0
ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQsIHVzZSBpcyBtYWRlIG9mIE9QX0JS
QU5VTUJFUi4gKi8KKyAgT1BfQlJBICAgICAgICAgICAgICAgICAgICAvKiBUaGlzIGFuZCBncmVh
dGVyIHZhbHVlcyBhcmUgdXNlZCBmb3IgYnJhY2tldHMgdGhhdAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhY3Qgc3Vic3RyaW5ncyB1cCB0byBFWFRSQUNUX0JBU0lDX01BWC4g
QWZ0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LCB1c2UgaXMgbWFkZSBv
ZiBPUF9CUkFOVU1CRVIuICovCiB9OwogCiAvKiBXQVJOSU5HIFdBUk5JTkcgV0FSTklORzogVGhl
cmUgaXMgYW4gaW1wbGljaXQgYXNzdW1wdGlvbiBpbiBwY3JlLmMgYW5kCkBAIC00ODgsOCArNDkw
LDggQEAgaW4gVVRGLTggbW9kZS4gVGhlIGNvZGUgdGhhdCB1c2VzIHRoaXMgdAogICAxLCAxLCAx
LCAxLCAxLCAxLCAxLCAxLCAgICAgICAgLyogXEIsIFxiLCBcRCwgXGQsIFxTLCBccywgXFcsIFx3
ICAgICAgICAgKi8gXAogICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQW55ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gXAogICAxLCAxLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogXiwgJCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8gXAotICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hhciAgLSB0aGUgbWlu
aW11bSBsZW5ndGggICAgICAgICAgICAgKi8gXAotICAyLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogQ2hhcm5jICAtIHRoZSBtaW5pbXVtIGxlbmd0aCAgICAgICAgICAgKi8gXAorICAy
LCAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hhciwgQ2hhcm5jIC0gbWluaW11bSBs
ZW5ndGhzICAgICAgICAgKi8gXAorICAyLCAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
QVNDSUkgY2hhciBvciBub24tY2FzZWQgICAgICAgICAgICAgICAgKi8gXAogICAyLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogbm90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8gXAogICAvKiBQb3NpdGl2ZSBzaW5nbGUtY2hhciByZXBlYXRzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICoqIFRoZXNlIGFyZSAgKi8gXAogICAyLCAyLCAyLCAyLCAyLCAyLCAg
ICAgICAgICAgICAgLyogKiwgKj8sICssICs/LCA/LCA/PyAgICAgICoqIG1pbmltYSBpbiAgKi8g
XAo=
</data>
<flag name="review"
          id="7239"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>