<?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>16681</bug_id>
          
          <creation_ts>2007-12-30 16:35:01 -0800</creation_ts>
          <short_desc>Apollo Differences against JavaScriptCore</short_desc>
          <delta_ts>2008-06-11 16:18:41 -0700</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>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>edwsmith</cc>
    
    <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>65783</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2007-12-30 16:35:01 -0800</bug_when>
    <thetext>The attached patch contains differences between Safari 55233.3 and Apollo/AIR 1.0.  Some of these differences are not relevant (various Context object manipulation).  Some of the comments they added may be helpful from a documentation standpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65784</commentid>
    <comment_count>1</comment_count>
      <attachid>18199</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2007-12-30 16:35:41 -0800</bug_when>
    <thetext>Created attachment 18199
Diff against Apollo 1.0 JavaScriptCore implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65785</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-12-30 18:11:10 -0800</bug_when>
    <thetext>Adam:  The Formatted Diff link for Attachment #18199 returns a blank web page:

http://bugs.webkit.org/attachment.cgi?id=18199&amp;action=prettypatch

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65867</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-12-31 17:59:03 -0800</bug_when>
    <thetext>It&apos;s hard to understand the purpose of many of these changes, and there don&apos;t appear to be any test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82893</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-10 23:15:27 -0700</bug_when>
    <thetext>Is this still relevant after SquirrelFish?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83043</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-06-11 16:18:41 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Is this still relevant after SquirrelFish?

Good point.  I&apos;ll close this out as WebKit has drifted far from the Apollo/AIR base with respect to JSC.

The AIR team will have to figure out how best to integrate their customized routines into JavaScriptCore under the new architecture, so this patch is probably no longer useful. 

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18199</attachid>
            <date>2007-12-30 16:35:41 -0800</date>
            <delta_ts>2007-12-30 16:35:41 -0800</delta_ts>
            <desc>Diff against Apollo 1.0 JavaScriptCore implementation</desc>
            <filename>javascriptcore.diff</filename>
            <type>text/plain</type>
            <size>49729</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">ZGlmZiAtcnUgV2ViS2l0XzU1MjMzLjMvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5j
cHAgQXBvbGxvL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuY3BwCi0tLSBXZWJLaXRf
NTUyMzMuMy9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcAkyMDA3LTEyLTIzIDEz
OjQwOjQyLjAwMDAwMDAwMCAtMDgwMAorKysgQXBvbGxvL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L3J1bnRpbWUuY3BwCTIwMDctMDktMTEgMTM6MDU6NTIuMDAwMDAwMDAwIC0wNzAwCkBAIC0zNSw3
ICszNSw3IEBACiAjaWYgSEFWRShKTkkpCiAjaW5jbHVkZSAiam5pX2luc3RhbmNlLmgiCiAjZW5k
aWYKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQVBP
TExPKSAmJiBQTEFURk9STShEQVJXSU4pKQogI2luY2x1ZGUgIm9iamNfaW5zdGFuY2UuaCIKICNl
bmRpZgogI2lmIFBMQVRGT1JNKFFUKQpAQCAtOTEsNyArOTEsNyBAQAogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICNlbmRpZgotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShN
QUMpIHx8IChQTEFURk9STShBUE9MTE8pICYmIFBMQVRGT1JNKERBUldJTikpCiAgICAgICAgIGNh
c2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogewogICAgICAgICAgICAgbmV3SW5zdGFu
Y2UgPSBuZXcgQmluZGluZ3M6Ok9iamNJbnN0YW5jZSgoT2JqZWN0U3RydWN0UHRyKW5hdGl2ZUlu
c3RhbmNlLCByb290T2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC1ydSBXZWJLaXRf
NTUyMzMuMy9KYXZhU2NyaXB0Q29yZS9ranMvQ29udGV4dC5jcHAgQXBvbGxvL0phdmFTY3JpcHRD
b3JlL2tqcy9Db250ZXh0LmNwcAotLS0gV2ViS2l0XzU1MjMzLjMvSmF2YVNjcmlwdENvcmUva2pz
L0NvbnRleHQuY3BwCTIwMDctMTItMjMgMTM6NDA6MzIuMDAwMDAwMDAwIC0wODAwCisrKyBBcG9s
bG8vSmF2YVNjcmlwdENvcmUva2pzL0NvbnRleHQuY3BwCTIwMDctMTItMDUgMTA6MDM6MzEuMDAw
MDAwMDAwIC0wODAwCkBAIC0zMSw2ICszMSw3IEBACiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9u
Qm9keU5vZGUqIGN1cnJlbnRCb2R5LCBDb2RlVHlwZSB0eXBlLCBDb250ZXh0KiBjYWxsaW5nQ29u
LCAKICAgICAgICAgICAgICAgICAgRnVuY3Rpb25JbXAqIGZ1bmMsIGNvbnN0IExpc3QqIGFyZ3Mp
CiAgICAgOiBtX2ludGVycHJldGVyKGludGVycHJldGVyKQorICAgICwgbV9zYXZlZENvbnRleHQo
aW50ZXJwcmV0ZXItPmNvbnRleHQoKSkKICAgICAsIG1fY3VycmVudEJvZHkoY3VycmVudEJvZHkp
CiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmMpCiAgICAgLCBtX2FyZ3VtZW50cyhhcmdzKQpAQCAtODMs
NyArODQsNyBAQAogCiBDb250ZXh0Ojp+Q29udGV4dCgpCiB7Ci0gICAgbV9pbnRlcnByZXRlci0+
c2V0Q29udGV4dChtX2NhbGxpbmdDb250ZXh0KTsKKyAgICBtX2ludGVycHJldGVyLT5zZXRDb250
ZXh0KG1fc2F2ZWRDb250ZXh0KTsKIAogICAgIC8vIFRoZSBhcmd1bWVudHMgbGlzdCBpcyBvbmx5
IG5lZWRlZCB0byBwb3RlbnRpYWxseSBjcmVhdGUgdGhlICBhcmd1bWVudHMgb2JqZWN0LCAKICAg
ICAvLyB3aGljaCBpc24ndCBhY2Nlc3NpYmxlIGZyb20gbmVzdGVkIHNjb3BlcyBzbyB3ZSBjYW4g
ZGlzY2FyZCB0aGUgbGlzdCBhcyBzb29uIApkaWZmIC1ydSBXZWJLaXRfNTUyMzMuMy9KYXZhU2Ny
aXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcCBBcG9sbG8vSmF2YVNjcmlwdENvcmUva2pzL2NvbGxl
Y3Rvci5jcHAKLS0tIFdlYktpdF81NTIzMy4zL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3Iu
Y3BwCTIwMDctMTItMjMgMTM6NDA6MzIuMDAwMDAwMDAwIC0wODAwCisrKyBBcG9sbG8vSmF2YVNj
cmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAJMjAwNy0xMi0wNSAxMDowMzozMS4wMDAwMDAwMDAg
LTA4MDAKQEAgLTc2Myw2ICs3NjMsNyBAQAogICBoZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3MgPSBD
b2xsZWN0aW9uOwogCiAgIGJvb2wgY3VycmVudFRocmVhZElzTWFpblRocmVhZCA9IG9uTWFpblRo
cmVhZCgpOworICAodm9pZCljdXJyZW50VGhyZWFkSXNNYWluVGhyZWFkOyAvLyB1bnJlZmVyZW5j
ZWQgaW4gcmVsZWFzZSBidWlsZCwgd2hlbiBub3QgdXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4KIAog
ICAvLyBNQVJLOiBmaXJzdCBtYXJrIGFsbCByZWZlcmVuY2VkIG9iamVjdHMgcmVjdXJzaXZlbHkg
c3RhcnRpbmcgb3V0IGZyb20gdGhlIHNldCBvZiByb290IG9iamVjdHMKIApAQCAtODM4LDcgKzgz
OSw3IEBACiAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgKGkgPCBtaW5pbXVtQ2VsbHNUb1Byb2Nl
c3MpICYgKGkgPCBDRUxMU19QRVJfQkxPQ0spOyBpKyspIHsKICAgICAgICAgQ29sbGVjdG9yQ2Vs
bCAqY2VsbCA9IGN1ckJsb2NrLT5jZWxscyArIGk7CiAgICAgICAgIGlmIChjZWxsLT51LmZyZWVD
ZWxsLnplcm9JZkZyZWUgPT0gMCkgewotICAgICAgICAgICsrbWluaW11bUNlbGxzVG9Qcm9jZXNz
OworICAgICAgICAgIG1pbmltdW1DZWxsc1RvUHJvY2VzcyA9IHN0ZDo6bWluKCBtaW5pbXVtQ2Vs
bHNUb1Byb2Nlc3MgKyAxLCBDRUxMU19QRVJfQkxPQ0sgKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICBpZiAoIWN1ckJsb2NrLT5tYXJrZWQuZ2V0KGkpKSB7CiAgICAgICAgICAgICBKU0Nl
bGwgKmltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsICo+KGNlbGwpOwpkaWZmIC1ydSBXZWJL
aXRfNTUyMzMuMy9KYXZhU2NyaXB0Q29yZS9ranMvY29udGV4dC5oIEFwb2xsby9KYXZhU2NyaXB0
Q29yZS9ranMvY29udGV4dC5oCi0tLSBXZWJLaXRfNTUyMzMuMy9KYXZhU2NyaXB0Q29yZS9ranMv
Y29udGV4dC5oCTIwMDctMTItMjMgMTM6NDA6MzIuMDAwMDAwMDAwIC0wODAwCisrKyBBcG9sbG8v
SmF2YVNjcmlwdENvcmUva2pzL2NvbnRleHQuaAkyMDA3LTEyLTA1IDEwOjAzOjMxLjAwMDAwMDAw
MCAtMDgwMApAQCAtMTI5LDYgKzEyOSw3IEBACiAKICAgICBJbnRlcnByZXRlciogbV9pbnRlcnBy
ZXRlcjsKICAgICBDb250ZXh0KiBtX2NhbGxpbmdDb250ZXh0OworICAgIENvbnRleHQqIG1fc2F2
ZWRDb250ZXh0OwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIG1fY3VycmVudEJvZHk7CiAgICAgRXhl
Y1N0YXRlKiBtX2V4ZWNTdGF0ZTsKIApkaWZmIC1ydSBXZWJLaXRfNTUyMzMuMy9KYXZhU2NyaXB0
Q29yZS9ranMvZnVuY3Rpb24uY3BwIEFwb2xsby9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24u
Y3BwCi0tLSBXZWJLaXRfNTUyMzMuMy9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCTIw
MDctMTItMjMgMTM6NDA6MzIuMDAwMDAwMDAwIC0wODAwCisrKyBBcG9sbG8vSmF2YVNjcmlwdENv
cmUva2pzL2Z1bmN0aW9uLmNwcAkyMDA3LTEyLTA1IDEwOjAzOjMyLjAwMDAwMDAwMCAtMDgwMApA
QCAtODE3LDIzICs4MTcsNDIgQEAKICAgICAgICAgaWYgKCFwcm9nTm9kZSkKICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgZXJyTXNnLCBlcnJMaW5lLCBzaWQs
IE5VTEwpOwogCisgICAgICAgIGJvb2wgc3dpdGNoR2xvYmFsID0gdGhpc09iaiAmJiBleGVjLT5k
eW5hbWljSW50ZXJwcmV0ZXIoKS0+aXNHbG9iYWxPYmplY3QodGhpc09iaikgJiYgdGhpc09iaiAh
PSBleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIC8v
IGVudGVyIGEgbmV3IGV4ZWN1dGlvbiBjb250ZXh0CisgICAgICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IHN3aXRjaEdsb2JhbCA/IGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpLT5pbnRl
cnByZXRlckZvckdsb2JhbE9iamVjdCh0aGlzT2JqKSA6IGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRl
cigpOworI2lmICFQTEFURk9STShBUE9MTE8pICAKICAgICAgICAgSlNPYmplY3QqIHRoaXNWYWwg
PSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGV4ZWMtPmNvbnRleHQoKS0+dGhpc1ZhbHVlKCkpOwot
ICAgICAgICBDb250ZXh0IGN0eChleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+Z2xvYmFsT2Jq
ZWN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigp
LAorI2Vsc2UKKyAgICAgICAgQVNTRVJUKGludGVycHJldGVyKTsKKwkJaWYgKCFwcm9nTm9kZS0+
aXNTYWZlRm9yRXZhbChpbnRlcnByZXRlci0+Y3VycmVudEV2YWxMZXZlbCgpKSkKKyAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3IsICJVbnNhZmUgSmF2YVNjcmlw
dCIsIC0xLCAtMSwgTlVMTCk7CisJCUNvbnRleHQqIGNvbnN0IGNvbnRleHQgPSBleGVjLT5jb250
ZXh0KCk7CisJCUpTT2JqZWN0KiBjb25zdCB0aGlzVmFsID0gY29udGV4dCA/IGNvbnRleHQtPnRo
aXNWYWx1ZSgpIDogaW50ZXJwcmV0ZXItPmdsb2JhbE9iamVjdCgpOworCisjZW5kaWYKKyAgICAg
ICAgQ29udGV4dCBjdHgoaW50ZXJwcmV0ZXItPmdsb2JhbE9iamVjdCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBpbnRlcnByZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1ZhbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ05vZGUuZ2V0KCksCiAgICAgICAgICAgICAgICAg
ICAgICAgIEV2YWxDb2RlLAogICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5jb250ZXh0KCkp
OwotICAgICAgICBFeGVjU3RhdGUgbmV3RXhlYyhleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKSwg
JmN0eCk7CisgICAgICAgIEV4ZWNTdGF0ZSBuZXdFeGVjKGludGVycHJldGVyLCAmY3R4KTsKICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgbmV3RXhlYy5zZXRF
eGNlcHRpb24oZXhlYy0+ZXhjZXB0aW9uKCkpOwogICAgICAgICBjdHguc2V0RXhlY1N0YXRlKCZu
ZXdFeGVjKTsKICAgICAgICAgCisgICAgICAgIGlmIChzd2l0Y2hHbG9iYWwpIHsKKyAgICAgICAg
ICAgIGN0eC5wdXNoU2NvcGUodGhpc09iaik7CisgICAgICAgICAgICBjdHguc2V0VmFyaWFibGVP
YmplY3QodGhpc09iaik7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIGV4ZWN1dGUg
dGhlIGNvZGUKICAgICAgICAgcHJvZ05vZGUtPnByb2Nlc3NWYXJEZWNscygmbmV3RXhlYyk7CiAg
ICAgICAgIENvbXBsZXRpb24gYyA9IHByb2dOb2RlLT5leGVjdXRlKCZuZXdFeGVjKTsKIAorICAg
ICAgICBpZiAoc3dpdGNoR2xvYmFsKQorICAgICAgICAgICAgY3R4LnBvcFNjb3BlKCk7CisKICAg
ICAgICAgLy8gaWYgYW4gZXhjZXB0aW9uIG9jY3VyZWQsIHByb3BvZ2F0ZSBpdCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBleGVjdXRpb24gb2JqZWN0CiAgICAgICAgIGlmIChuZXdFeGVjLmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihuZXdFeGVjLmV4Y2VwdGlvbigp
KTsKZGlmZiAtcnUgV2ViS2l0XzU1MjMzLjMvSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29i
amVjdC5jcHAgQXBvbGxvL0phdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwCi0t
LSBXZWJLaXRfNTUyMzMuMy9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAky
MDA3LTEyLTIzIDEzOjQwOjMyLjAwMDAwMDAwMCAtMDgwMAorKysgQXBvbGxvL0phdmFTY3JpcHRD
b3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwCTIwMDctMTAtMjEgMTg6MDg6NDEuMDAwMDAwMDAw
IC0wNzAwCkBAIC0xMTcsNiArMTE3LDM0IEBACiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspCiAgICAgICAgICAgYXBwbHlBcmdzLmFwcGVuZChhcmdBcnJh
eU9iai0+Z2V0KGV4ZWMsaSkpOwogICAgICAgfQorICAgICAgZWxzZSBpZiAoYXJnQXJyYXktPmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgICBKU09iamVjdCogY29uc3QgcEFyZ0FycmF5T2JqZWN0ID0g
YXJnQXJyYXktPnRvT2JqZWN0KGV4ZWMpOworICAgICAgICAgIEFTU0VSVCghZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpOworICAgICAgICAgIAorICAgICAgICAgIGJvb2wgY29uc3QgaGFzTGVuZ3RoID0g
cEFyZ0FycmF5T2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKTsKKyAgICAgICAgICBib29sIGZhaWxlZCA9IGV4ZWMtPmhhZEV4Y2VwdGlvbigpIHx8
ICghaGFzTGVuZ3RoKTsKKyAgICAgICAgICBpZiAoIWZhaWxlZCkgeworICAgICAgICAgICAgICBK
U1ZhbHVlKiBjb25zdCBsZW5ndGhWYWx1ZSA9IHBBcmdBcnJheU9iamVjdC0+Z2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOworICAgICAgICAgICAgICBmYWlsZWQgPSBleGVj
LT5oYWRFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgaWYgKCFmYWlsZWQpIHsKKyAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBjb25zdCBsZW5ndGggPSBsZW5ndGhWYWx1ZS0+dG9VSW50
MzIoZXhlYyk7CisgICAgICAgICAgICAgICAgICBmYWlsZWQgPSBleGVjLT5oYWRFeGNlcHRpb24o
KTsKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjdXJySW5kZXggPSAwOworICAgICAg
ICAgICAgICAgICAgd2hpbGUgKCghZmFpbGVkKSAmJiAoY3VyckluZGV4IDwgbGVuZ3RoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUqIGNvbnN0IGN1cnJBcmdWYWx1ZSA9IHBBcmdB
cnJheU9iamVjdC0+Z2V0KGV4ZWMsIGN1cnJJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAg
ZmFpbGVkID0gZXhlYy0+aGFkRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFmYWlsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlBcmdzLmFwcGVuZChj
dXJyQXJnVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICArK2N1cnJJbmRleDsKKyAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGZhaWxlZCkgeworICAgICAgICAgICAgICBl
eGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBUeXBlRXJyb3IpOworICAgICAgICAgIH0KKyAgICAgIH0KICAgICAgIGVsc2UKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKICAgICB9CkBAIC0xNjcsNiAr
MTk1LDExIEBACiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKIEpTT2Jq
ZWN0KiBGdW5jdGlvbk9iamVjdEltcDo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
TGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5n
JiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKQogeworI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAg
aWYgKCFleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+Y2FuQ29uc3RydWN0RnVuY3Rpb25zKCkp
CisgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgR2VuZXJhbEVycm9yLCAiVW5zYWZlIEphdmFT
Y3JpcHQiLCAtMSwgLTEsIE5VTEwpOworI2VuZGlmCisKICAgVVN0cmluZyBwKCIiKTsKICAgVVN0
cmluZyBib2R5OwogICBpbnQgYXJnc1NpemUgPSBhcmdzLnNpemUoKTsKZGlmZiAtcnUgV2ViS2l0
XzU1MjMzLjMvSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcCBBcG9sbG8vSmF2YVNj
cmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAotLS0gV2ViS2l0XzU1MjMzLjMvSmF2YVNjcmlw
dENvcmUva2pzL2ludGVycHJldGVyLmNwcAkyMDA3LTEyLTIzIDEzOjQwOjMyLjAwMDAwMDAwMCAt
MDgwMAorKysgQXBvbGxvL0phdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJMjAwNy0x
MC0yMSAxODowODo0MS4wMDAwMDAwMDAgLTA3MDAKQEAgLTY1LDYgKzY1LDEwIEBACiAjaW5jbHVk
ZSA8UURhdGVUaW1lPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShBUE9MTE8pCisjaW5jbHVkZSA8
YXBvbGxvVmFyaWFudC9wcm94eV9vYmouaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgS0pTIHsKIAog
Ly8gRGVmYXVsdCBudW1iZXIgb2YgdGlja3MgYmVmb3JlIGEgdGltZW91dCBjaGVjayBzaG91bGQg
YmUgZG9uZS4KQEAgLTE0MCw2ICsxNDQsOSBAQAogICAgICAgICBzX2hvb2sgPSAwOwogICAgIH0K
ICAgICBpbnRlcnByZXRlck1hcCgpLnJlbW92ZShtX2dsb2JhbE9iamVjdCk7CisjaWYgUExBVEZP
Uk0oQVBPTExPKQorICAgIEFwb2xsb1NjcmlwdEJyaWRnaW5nOjpub3RpZnlJbnRlcnByZXRlckRl
c3Ryb3llZCh0aGlzKTsKKyNlbmRpZgogfQogCiBKU09iamVjdCogSW50ZXJwcmV0ZXI6Omdsb2Jh
bE9iamVjdCgpIGNvbnN0CmRpZmYgLXJ1IFdlYktpdF81NTIzMy4zL0phdmFTY3JpcHRDb3JlL2tq
cy9pbnRlcnByZXRlci5oIEFwb2xsby9KYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuaAot
LS0gV2ViS2l0XzU1MjMzLjMvSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmgJMjAwNy0x
Mi0yMyAxMzo0MDozMi4wMDAwMDAwMDAgLTA4MDAKKysrIEFwb2xsby9KYXZhU2NyaXB0Q29yZS9r
anMvaW50ZXJwcmV0ZXIuaAkyMDA3LTEwLTIxIDE4OjA4OjQxLjAwMDAwMDAwMCAtMDcwMApAQCAt
NjgsNyArNjgsMTkgQEAKICAgY2xhc3MgVHlwZUVycm9yUHJvdG90eXBlOwogICBjbGFzcyBVcmlF
cnJvcjsKICAgY2xhc3MgVXJpRXJyb3JQcm90b3R5cGU7Ci0gIAorCisjaWYgUExBVEZPUk0oQVBP
TExPKQorICBlbnVtIEV2YWxMZXZlbCB7CisgICAgICAvLyBzYWZlc3QgdG8gbGVhc3Qgc2FmZS4u
LgorICAgICAgRXZhbE5vbmUsCisgICAgICBFdmFsTGl0ZXJhbCwKKyAgICAgIEV2YWxDb25zdGFu
dEV4cHIsCisgICAgICBFdmFsUmVhZE9ubHksCisgICAgICBFdmFsUmVhZE9ubHlBbmRGdW5jdGlv
bnMsCisgICAgICBFdmFsQW55CisgIH07CisjZW5kaWYKKwogICAvKioKICAgICogSW50ZXJwcmV0
ZXIgb2JqZWN0cyBjYW4gYmUgdXNlZCB0byBldmFsdWF0ZSBFQ01BU2NyaXB0IGNvZGUuIEVhY2gK
ICAgICogaW50ZXJwcmV0ZXIgaGFzIGEgZ2xvYmFsIG9iamVjdCB3aGljaCBpcyB1c2VkIGZvciB0
aGUgcHVycG9zZXMgb2YgY29kZQpAQCAtMzM3LDYgKzM0OSw4IEBACiAgICAgCiAgICAgdm9pZCBz
ZXRDb250ZXh0KENvbnRleHQqIGMpIHsgbV9jb250ZXh0ID0gYzsgfQogICAgIENvbnRleHQqIGNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworCXZpcnR1YWwgdm9pZCAqcGxh
dGZvcm1JbnRlcnByZXRlckNvbnRleHQoKSB7IHJldHVybiAwOyB9CiAgICAgCiAgICAgc3RhdGlj
IEludGVycHJldGVyKiBpbnRlcnByZXRlcldpdGhHbG9iYWxPYmplY3QoSlNPYmplY3QqKTsKICAg
ICAKQEAgLTM1MSw2ICszNjUsMTIgQEAKICAgICB2b2lkIGRlcmVmKCkgeyBpZiAoLS1tX3JlZkNv
dW50IDw9IDApIGRlbGV0ZSB0aGlzOyB9CiAgICAgaW50IHJlZkNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9yZWZDb3VudDsgfQogICAgIAorI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAgICAvLyBTZXBh
cmF0ZSBjYWxsb3V0cyBmb3IgZXZhbCBhbmQgbmV3IEZ1bmN0aW9uLCBiZWNhdXNlIHRoZSBwb2xp
Y2llcyBtYXkgZGlmZmVyCisgICAgdmlydHVhbCBFdmFsTGV2ZWwgY3VycmVudEV2YWxMZXZlbCgp
IGNvbnN0IHsgcmV0dXJuIEV2YWxBbnk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29uc3RydWN0
RnVuY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIH5JbnRlcnByZXRlcigpOyAvLyBvbmx5IGRlcmVmIHNob3VsZCBkZWxldGUg
dXMKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC1ydSBXZWJLaXRfNTUyMzMuMy9KYXZhU2NyaXB0Q29yZS9ranMvbm9k
ZXMuY3BwIEFwb2xsby9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCi0tLSBXZWJLaXRfNTUy
MzMuMy9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCTIwMDctMTItMjMgMTM6NDA6MzIuMDAw
MDAwMDAwIC0wODAwCisrKyBBcG9sbG8vSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAkyMDA3
LTEwLTIxIDE4OjA4OjQxLjAwMDAwMDAwMCAtMDcwMApAQCAtMjgxLDE0ICsyODMsMTEwIEBACiAg
ICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKIH0KIAorCituYW1l
c3BhY2UgIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBsaW5lUHJvcGVydHlOYW1lW10gPSAibGlu
ZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgc291cmNlVVJMUHJvcGVydHlOYW1lW10gPSAic291
cmNlVVJMIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBzdGFja1RyYWNlUHJvcGVydHlOYW1lW10g
PSAic3RhY2tUcmFjZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZnVuY3Rpb25OYW1lUHJvcGVy
dHlOYW1lW10gPSAiZnVuY3Rpb25OYW1lIjsKK30KKwordm9pZCBOb2RlOjp1cGRhdGVFeGNlcHRp
b25TdGFja1RyYWNlSWZQb3NzaWJsZSggRXhlY1N0YXRlKiBjb25zdCBleGVjLCBKU1ZhbHVlKiBj
b25zdCBwRXhjZXB0aW9uVmFsdWUgKQoreworICAgIEpTVmFsdWUqIGNvbnN0IG9yaWdpbmFsRXhj
ZXB0aW9uVmFsdWUgPSBleGVjLT5oYWRFeGNlcHRpb24oKSA/IGV4ZWMtPmV4Y2VwdGlvbigpIDog
MDsKKyAgICBpZiAocEV4Y2VwdGlvblZhbHVlLT5pc09iamVjdCgpKSB7CisgICAgICAgIEpTT2Jq
ZWN0ICpleGNlcHRpb24gPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHBFeGNlcHRpb25WYWx1ZSk7
CisgICAgICAgIAorICAgICAgICBKU09iamVjdCogcFN0YWNrVHJhY2VBcnJheSA9IE5VTEw7Cisg
ICAgICAgIGlmICghZXhjZXB0aW9uLT5oYXNQcm9wZXJ0eShleGVjLCBzdGFja1RyYWNlUHJvcGVy
dHlOYW1lKSkgeworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbi0+Y2FuUHV0KGV4ZWMsIHN0YWNr
VHJhY2VQcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgICAgICAgICAgLy9Eb24ndCBoYXZlIHN0YWNr
IHRyYWNlIHlldCwgYW5kIHdlIGNhbiBzZXQgb25lIG9uIHRoZSBvYmplY3QKKyAgICAgICAgICAg
ICAgICAvL3NvIGNyZWF0ZSB0aGUgc3RhY2sgdHJhY2UgYXJyYXkuCisgICAgICAgICAgICAgICAg
QVNTRVJUKGV4ZWMpOworICAgICAgICAgICAgICAgIEFTU0VSVChleGVjLT5keW5hbWljSW50ZXJw
cmV0ZXIoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgSlNPYmplY3QqIGNv
bnN0IHBBcnJheUNvbnN0cnVjdG9yID0KKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+ZHluYW1p
Y0ludGVycHJldGVyKCktPmJ1aWx0aW5BcnJheSgpOworICAgICAgICAgICAgICAgIEFTU0VSVChw
QXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICAgICAgQVNTRVJUKHBBcnJheUNvbnN0cnVj
dG9yLT5pbXBsZW1lbnRzQ29uc3RydWN0KCkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIExpc3QgY29uc3QgY29uc3RydWN0b3JBcmdzOworICAgICAgICAgICAgICAgIHBTdGFj
a1RyYWNlQXJyYXkgPSBwQXJyYXlDb25zdHJ1Y3Rvci0+Y29uc3RydWN0KGV4ZWMsIGNvbnN0cnVj
dG9yQXJncyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZXhjZXB0aW9uLT5w
dXQoZXhlYywgc3RhY2tUcmFjZVByb3BlcnR5TmFtZSwgcFN0YWNrVHJhY2VBcnJheSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvL2FscmVh
ZHkgaGF2ZSBhIHN0YWNrIHRyYWNlIHByb3BlcnR5LgorICAgICAgICAgICAgSlNWYWx1ZSogY29u
c3QgcFN0YWNrVHJhY2VQcm9wZXJ0eVZhbHVlID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgc3RhY2tU
cmFjZVByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBpZiAocFN0YWNrVHJhY2VQcm9wZXJ0eVZh
bHVlLT5pc09iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgcFN0YWNrVHJhY2VBcnJheSA9IHN0
YXRpY19jYXN0PEpTT2JqZWN0ICo+KHBTdGFja1RyYWNlUHJvcGVydHlWYWx1ZSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocFN0YWNrVHJhY2VBcnJheSkgeworICAg
ICAgICAgICAgQVNTRVJUKGV4ZWMpOworICAgICAgICAgICAgQVNTRVJUKGV4ZWMtPmR5bmFtaWNJ
bnRlcnByZXRlcigpKTsKKyAgICAgICAgICAgIEFTU0VSVChleGVjLT5jb250ZXh0KCkpOworICAg
ICAgICAgICAgSlNPYmplY3QqIGNvbnN0IHBPYmplY3RDb25zdHJ1Y3RvciA9IGV4ZWMtPmR5bmFt
aWNJbnRlcnByZXRlcigpLT5idWlsdGluT2JqZWN0KCk7CisgICAgICAgICAgICBBU1NFUlQocE9i
amVjdENvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIEFTU0VSVChwT2JqZWN0Q29uc3RydWN0b3It
PmltcGxlbWVudHNDb25zdHJ1Y3QoKSk7CisKKyAgICAgICAgICAgIEpTVmFsdWUqIGNvbnN0IHBQ
dXNoUHJvcGVydHlWYWx1ZSA9IHBTdGFja1RyYWNlQXJyYXktPmdldChleGVjLCAicHVzaCIpOwor
ICAgICAgICAgICAgaWYgKHBQdXNoUHJvcGVydHlWYWx1ZS0+aXNPYmplY3QoKSkgeworICAgICAg
ICAgICAgICAgIEpTT2JqZWN0KiBjb25zdCBwUHVzaEZ1bmN0aW9uT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNPYmplY3QqPihwUHVzaFByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChw
UHVzaEZ1bmN0aW9uT2JqZWN0LT5pbXBsZW1lbnRzQ2FsbCgpKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgTGlzdCBjb25zdCBjb25zdHJ1Y3RvckFyZ3M7CisgICAgICAgICAgICAgICAgICAgIEpT
T2JqZWN0KiBjb25zdCBwQ3VyclN0YWNrRnJhbWVPYmogPQorICAgICAgICAgICAgICAgICAgICAg
ICAgcE9iamVjdENvbnN0cnVjdG9yLT5jb25zdHJ1Y3QoZXhlYywgY29uc3RydWN0b3JBcmdzKTsK
KyAgICAgICAgICAgICAgICAgICAgcEN1cnJTdGFja0ZyYW1lT2JqLT5wdXQoZXhlYywgbGluZVBy
b3BlcnR5TmFtZSwganNOdW1iZXIoIG1fbGluZSApKTsKKyAgICAgICAgICAgICAgICAgICAgcEN1
cnJTdGFja0ZyYW1lT2JqLT5wdXQoZXhlYywgc291cmNlVVJMUHJvcGVydHlOYW1lLCBqc1N0cmlu
ZyggY3VycmVudFNvdXJjZVVSTChleGVjKSkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
ZXhlYyk7CisKKyAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25JbXAqIGNvbnN0IGN1cnJGdW5j
dGlvbkltcCA9IGV4ZWMtPmNvbnRleHQoKS0+ZnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGN1cnJGdW5jdGlvbkltcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZSogY29uc3QgcEZ1bmN0aW9uTmFtZVZhbHVlID0ganNTdHJpbmcoY3VyckZ1bmN0aW9uSW1wLT5m
dW5jdGlvbk5hbWUoKS51c3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcEN1cnJT
dGFja0ZyYW1lT2JqLT5wdXQoZXhlYywgZnVuY3Rpb25OYW1lUHJvcGVydHlOYW1lLCBwRnVuY3Rp
b25OYW1lVmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IExpc3QgcHVzaEFyZ3M7CisgICAgICAgICAgICAgICAgICAgIHB1c2hBcmdzLmFwcGVuZChwQ3Vy
clN0YWNrRnJhbWVPYmopOworICAgICAgICAgICAgICAgICAgICBwUHVzaEZ1bmN0aW9uT2JqZWN0
LT5jYWxsKGV4ZWMsIHBTdGFja1RyYWNlQXJyYXksIHB1c2hBcmdzKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvL1RoZSBjb2RlIGlu
IHRoaXMgZnVuY3Rpb24gbWF5IGhhdmUgcmVzdWx0ZWQgaW4gYSBuZXcgZXhjZXB0aW9uIGJlaW5n
IHRocm93bi4KKyAgICAvL1dlIGRvbid0IHdhbnQgdGhhdCBleGNlcHRpb24gdG8gb3ZlcndyaXRl
IHRoZSBleGNlcHRpb24gdGhhdCBoYXMgYWxyZWFkeSBiZWVuCisgICAgLy9zZXQgYmVmb3JlIHdl
IGVudGVyZWQgdGhpcyBmdW5jdGlvbi4gIFNvIHdlIHN0b3JlZCB0aGUgZXhjZXB0aW9uIGZyb20g
dGhlIGV4ZWMgc3RhdGUKKyAgICAvL2JlZm9yZSBkb2luZyBhbnl0aGluZyBhbmQgd2UgYXJlIG5v
dyByZXN0b3JpbmcgaXQuCisgICAgaWYgKG9yaWdpbmFsRXhjZXB0aW9uVmFsdWUpIHsKKyAgICAg
ICAgZXhlYy0+c2V0RXhjZXB0aW9uKG9yaWdpbmFsRXhjZXB0aW9uVmFsdWUpOworICAgIH0KK30K
KworCiB2b2lkIE5vZGU6OmhhbmRsZUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUq
IGV4Y2VwdGlvblZhbHVlKQogewogICAgIGlmIChleGNlcHRpb25WYWx1ZS0+aXNPYmplY3QoKSkg
eworCQlKU1ZhbHVlKiBjb25zdCBvcmlnaW5hbEV4Y2VwdGlvblZhbHVlID0gZXhlYy0+aGFkRXhj
ZXB0aW9uKCkgPyBleGVjLT5leGNlcHRpb24oKSA6IDA7CisJCXVwZGF0ZUV4Y2VwdGlvblN0YWNr
VHJhY2VJZlBvc3NpYmxlKGV4ZWMsIGV4Y2VwdGlvblZhbHVlKTsKICAgICAgICAgSlNPYmplY3Qq
IGV4Y2VwdGlvbiA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oZXhjZXB0aW9uVmFsdWUpOwotICAg
ICAgICBpZiAoIWV4Y2VwdGlvbi0+aGFzUHJvcGVydHkoZXhlYywgImxpbmUiKSAmJiAhZXhjZXB0
aW9uLT5oYXNQcm9wZXJ0eShleGVjLCAic291cmNlVVJMIikpIHsKLSAgICAgICAgICAgIGV4Y2Vw
dGlvbi0+cHV0KGV4ZWMsICJsaW5lIiwganNOdW1iZXIobV9saW5lKSk7Ci0gICAgICAgICAgICBl
eGNlcHRpb24tPnB1dChleGVjLCAic291cmNlVVJMIiwganNTdHJpbmcoY3VycmVudFNvdXJjZVVS
TChleGVjKSkpOworCisJCWlmICgoIWV4Y2VwdGlvbi0+aGFzUHJvcGVydHkoZXhlYywgbGluZVBy
b3BlcnR5TmFtZSkpICYmCisgICAgICAgICAgICAoIWV4Y2VwdGlvbi0+aGFzUHJvcGVydHkoZXhl
Yywgc291cmNlVVJMUHJvcGVydHlOYW1lKSkgJiYKKyAgICAgICAgICAgIChleGNlcHRpb24tPmNh
blB1dChleGVjLCBsaW5lUHJvcGVydHlOYW1lKSkgJiYKKyAgICAgICAgICAgIChleGNlcHRpb24t
PmNhblB1dChleGVjLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpKSkgeworICAgICAgICAgICAgZXhj
ZXB0aW9uLT5wdXQoZXhlYywgbGluZVByb3BlcnR5TmFtZSwganNOdW1iZXIobV9saW5lKSk7Cisg
ICAgICAgICAgICBleGNlcHRpb24tPnB1dChleGVjLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUsIGpz
U3RyaW5nKGN1cnJlbnRTb3VyY2VVUkwoZXhlYykpKTsKICAgICAgICAgfQorCQkvL1RoZSBwdXQg
b3BlcmF0aW9ucyBhYm92ZSBtYXkgcmVzdWx0IGluIGFub3RoZXIgZXhjZXB0aW9uIGJlaW5nIHRo
cm93bgorICAgICAgICAvL2lmIHRoZSBleGNlcHRpb24gb2JqZWN0IGlzIGZyb20gYSBzY3JpcHQg
ZW5naW5lIHRoYXQgd2lsbCBub3QgYWxsb3cKKyAgICAgICAgLy90aGUgbGluZSBhbmQgc291cmNl
VVJMIHByb3BlcnRpZXMgdG8gYmUgc2V0IG9yIGlmIHRob3NlIHByb3BlcnRpZXMKKyAgICAgICAg
Ly9hcmUgcmVhZC1vbmx5IGZvciBzb21lIHJlYXNvbi4gIFNvIHdlIGp1c3QgdW5jb25kaXRpb25h
bGx5IHN0dWZmCisgICAgICAgIC8vdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiB2YWx1ZSBiYWNrIGlu
IHRoZSBleGVjIHN0YXRlLgorICAgICAgICBleGVjLT5zZXRFeGNlcHRpb24ob3JpZ2luYWxFeGNl
cHRpb25WYWx1ZSk7CiAgICAgfQogICAgIERlYnVnZ2VyKiBkYmcgPSBleGVjLT5keW5hbWljSW50
ZXJwcmV0ZXIoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoZGJnICYmICFkYmctPmhhc0hhbmRsZWRF
eGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFsdWUpKSB7CkBAIC0yOTcsNiArMzk1LDQzIEBACiAg
ICAgICAgICAgICBkYmctPmltcCgpLT5hYm9ydCgpOwogICAgIH0KIH0KKy8qCisKK3ZvaWQgTm9k
ZTo6c2V0RXhjZXB0aW9uRGV0YWlsc0lmTmVlZGVkKEV4ZWNTdGF0ZSAqZXhlYykKK3sKKyAgICBK
U1ZhbHVlICpleGNlcHRpb25WYWx1ZSA9IGV4ZWMtPmV4Y2VwdGlvbigpOworICAgIGlmIChleGNl
cHRpb25WYWx1ZS0+aXNPYmplY3QoKSkgeworICAgICAgICB1cGRhdGVFeGNlcHRpb25TdGFja1Ry
YWNlSWZQb3NzaWJsZShleGVjLCBleGNlcHRpb25WYWx1ZSk7CisgICAgICAgIEpTT2JqZWN0KiBl
eGNlcHRpb24gPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGV4Y2VwdGlvblZhbHVlKTsKKyAgICAg
ICAgaWYgKCghZXhjZXB0aW9uLT5oYXNQcm9wZXJ0eShleGVjLCBsaW5lUHJvcGVydHlOYW1lKSkg
JiYKKyAgICAgICAgICAgICghZXhjZXB0aW9uLT5oYXNQcm9wZXJ0eShleGVjLCBzb3VyY2VVUkxQ
cm9wZXJ0eU5hbWUpKSAmJgorICAgICAgICAgICAgKGV4Y2VwdGlvbi0+Y2FuUHV0KGV4ZWMsIGxp
bmVQcm9wZXJ0eU5hbWUpKSAmJgorICAgICAgICAgICAgKGV4Y2VwdGlvbi0+Y2FuUHV0KGV4ZWMs
IHNvdXJjZVVSTFByb3BlcnR5TmFtZSkpKSB7CisgICAgICAgICAgICBKU1ZhbHVlKiBjb25zdCBp
bml0aWFsTGluZSA9IGpzTnVtYmVyKG1fbGluZSk7CisgICAgICAgICAgICBKU1ZhbHVlKiBjb25z
dCBpbml0aWFsU291cmNlVVJMID0ganNTdHJpbmcoY3VycmVudFNvdXJjZVVSTChleGVjKSk7Cisg
ICAgICAgICAgICBleGNlcHRpb24tPnB1dChleGVjLCBsaW5lUHJvcGVydHlOYW1lLCBpbml0aWFs
TGluZSk7CisgICAgICAgICAgICBleGNlcHRpb24tPnB1dChleGVjLCBzb3VyY2VVUkxQcm9wZXJ0
eU5hbWUsIGluaXRpYWxTb3VyY2VVUkwpOworCisgICAgICAgICAgICAvL1RoZSBwdXQgb3BlcmF0
aW9ucyBhYm92ZSBtYXkgcmVzdWx0IGluIGFub3RoZXIgZXhjZXB0aW9uIGJlaW5nIHRocm93bgor
ICAgICAgICAgICAgLy9pZiB0aGUgZXhjZXB0aW9uIG9iamVjdCBpcyBmcm9tIGEgc2NyaXB0IGVu
Z2luZSB0aGF0IHdpbGwgbm90IGFsbG93CisgICAgICAgICAgICAvL3RoZSBsaW5lIGFuZCBzb3Vy
Y2VVUkwgcHJvcGVydGllcyB0byBiZSBzZXQgb3IgaWYgdGhvc2UgcHJvcGVydGllcworICAgICAg
ICAgICAgLy9hcmUgcmVhZC1vbmx5IGZvciBzb21lIHJlYXNvbi4gIFNvIHdlIGp1c3QgdW5jb25k
aXRpb25hbGx5IHN0dWZmCisgICAgICAgICAgICAvL3RoZSBvcmlnaW5hbCBleGNlcHRpb24gdmFs
dWUgYmFjayBpbiB0aGUgZXhlYyBzdGF0ZS4KKyAgICAgICAgICAgIGV4ZWMtPnNldEV4Y2VwdGlv
bihleGNlcHRpb25WYWx1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTm9kZTo6ZGVi
dWdFeGNlcHRpb25JZk5lZWRlZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIGV4Y2VwdGlvblZh
bHVlKQoreworICAgIERlYnVnZ2VyKiBkYmcgPSBleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+
ZGVidWdnZXIoKTsKKyAgICBpZiAoZGJnICYmICFkYmctPmhhc0hhbmRsZWRFeGNlcHRpb24oZXhl
YywgZXhjZXB0aW9uVmFsdWUpKSB7CisgICAgICAgIGJvb2wgY29udCA9IGRiZy0+ZXhjZXB0aW9u
KGV4ZWMsIGN1cnJlbnRTb3VyY2VJZChleGVjKSwgbV9saW5lLCBleGNlcHRpb25WYWx1ZSk7Cisg
ICAgICAgIGlmICghY29udCkKKyAgICAgICAgICAgIGRiZy0+aW1wKCktPmFib3J0KCk7CisgICAg
fQorfQorKi8KIAogTm9kZSAqTm9kZTo6bm9kZUluc2lkZUFsbFBhcmVucygpCiB7CkBAIC03NjQs
NyArODk5LDcgQEAKIC8vIEVDTUEgMTEuMi4zCiBKU1ZhbHVlICpGdW5jdGlvbkNhbGxEb3ROb2Rl
OjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCiB7Ci0gIEpTVmFsdWUgKmJhc2VWYWwgPSBiYXNl
LT5ldmFsdWF0ZShleGVjKTsKKyAgSlNWYWx1ZSogdm9sYXRpbGUgYmFzZVZhbCA9IGJhc2UtPmV2
YWx1YXRlKGV4ZWMpOwogICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQogCiAgIEpTT2JqZWN0ICpi
YXNlT2JqID0gYmFzZVZhbC0+dG9PYmplY3QoZXhlYyk7CkBAIC0xNjE2LDcgKzE3NTEsNyBAQAog
fQogCiAvLyBFQ01BIDEyLjIKLUpTVmFsdWUqIFZhckRlY2xOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dGUqIGV4ZWMpCitKU1ZhbHVlICpWYXJEZWNsTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVj
KQogewogICAgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5zY29w
ZUNoYWluKCk7CiAgICAgSlNPYmplY3QqIHZhcmlhYmxlT2JqZWN0ID0gZXhlYy0+Y29udGV4dCgp
LT52YXJpYWJsZU9iamVjdCgpOwpAQCAtMTYyNywxMSArMTc2MiwxMSBAQAogCiAgICAgaWYgKGlu
R2xvYmFsU2NvcGUgJiYgKGluaXQgfHwgIXZhcmlhYmxlT2JqZWN0LT5nZXREaXJlY3QoaWRlbnQp
KSkgewogICAgICAgICBKU1ZhbHVlKiB2YWwgPSBpbml0ID8gaW5pdC0+ZXZhbHVhdGUoZXhlYykg
OiBqc1VuZGVmaW5lZCgpOwotICAgICAgICBpbnQgZmxhZ3MgPSBJbnRlcm5hbDsKLSAgICAgICAg
aWYgKGV4ZWMtPmNvbnRleHQoKS0+Y29kZVR5cGUoKSAhPSBFdmFsQ29kZSkKLSAgICAgICAgICAg
IGZsYWdzIHw9IERvbnREZWxldGU7Ci0gICAgICAgIGlmICh2YXJUeXBlID09IFZhckRlY2xOb2Rl
OjpDb25zdGFudCkKLSAgICAgICAgICAgIGZsYWdzIHw9IFJlYWRPbmx5OworICBpbnQgZmxhZ3Mg
PSBJbnRlcm5hbDsKKyAgaWYgKGV4ZWMtPmNvbnRleHQoKS0+Y29kZVR5cGUoKSAhPSBFdmFsQ29k
ZSkKKyAgICBmbGFncyB8PSBEb250RGVsZXRlOworICBpZiAodmFyVHlwZSA9PSBWYXJEZWNsTm9k
ZTo6Q29uc3RhbnQpCisgICAgZmxhZ3MgfD0gUmVhZE9ubHk7CiAgICAgICAgIHZhcmlhYmxlT2Jq
ZWN0LT5wdXREaXJlY3QoaWRlbnQsIHZhbCwgZmxhZ3MpOwogICAgIH0gZWxzZSBpZiAoaW5pdCkg
ewogICAgICAgICBKU1ZhbHVlKiB2YWwgPSBpbml0LT5ldmFsdWF0ZShleGVjKTsKQEAgLTI1OTks
MyArMjczNCwxMTkgQEAKIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShTb3VyY2VFbGVtZW50c05v
ZGUgKnMpIDogRnVuY3Rpb25Cb2R5Tm9kZShzKQogewogfQorCisjaWYgUExBVEZPUk0oQVBPTExP
KQorCitib29sIEVsZW1lbnROb2RlOjppc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkKK3sK
KyAgaWYgKGxldmVsIDwgRXZhbExpdGVyYWwpCisgICAgcmV0dXJuIGZhbHNlOworICBmb3IgKGNv
bnN0IEVsZW1lbnROb2RlICpuID0gdGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCisgICAgaWYg
KCFuLT5ub2RlLT5pc1NhZmVGb3JFdmFsKGxldmVsKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUHJvcGVydHlOb2RlOjppc1NhZmVGb3JFdmFsKEV2YWxM
ZXZlbCBsZXZlbCkKK3sKKyAgaWYgKGxldmVsIDwgRXZhbExpdGVyYWwpCisgICAgcmV0dXJuIGZh
bHNlOworICAvLyByZWplY3QgZ2V0dGVycyBhbmQgc2V0dGVycy4KKyAgaWYgKGxldmVsIDwgRXZh
bEFueSAmJiB0eXBlICE9IENvbnN0YW50KQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIGFz
c2lnbi0+aXNTYWZlRm9yRXZhbChsZXZlbCk7Cit9CisKK2Jvb2wgUHJvcGVydHlMaXN0Tm9kZTo6
aXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpCit7CisgIGlmIChsZXZlbCA8IEV2YWxMaXRl
cmFsKQorICAgIHJldHVybiBmYWxzZTsKKyAgZm9yIChjb25zdCBQcm9wZXJ0eUxpc3ROb2RlICpu
ID0gdGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCisgIHsKKyAgICBpZiAoIW4tPm5vZGUtPmlz
U2FmZUZvckV2YWwobGV2ZWwpKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0
cnVlOworfQorCitib29sIEJsb2NrTm9kZTo6aXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwp
Cit7CisgIC8vIEltcG9ydGFudCBvcHRpbWl6YXRpb24gc28gdGhhdCB0aGUgdHlwaWNhbCBjYXNl
IGRvZXNuJ3QgaGF2ZSB0byB0cmF2ZXJzZSB0aGUgcGFyc2UgdHJlZS4KKyAgaWYgKGxldmVsID09
IEV2YWxBbnkpCisgICAgcmV0dXJuIHRydWU7CisgIGlmIChsZXZlbCA9PSBFdmFsTm9uZSkKKyAg
ICByZXR1cm4gZmFsc2U7CisKKyAgaWYgKHNvdXJjZSkKKyAgICByZXR1cm4gc291cmNlLT5pc1Nh
ZmVGb3JFdmFsKGxldmVsKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSWZOb2RlOjppc1Nh
ZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkKK3sKKyAgaWYgKGxldmVsIDwgRXZhbFJlYWRPbmx5
KQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFleHByLT5pc1NhZmVGb3JFdmFsKGxldmVsKSkK
KyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChzdGF0ZW1lbnQxICYmICFzdGF0ZW1lbnQxLT5pc1Nh
ZmVGb3JFdmFsKGxldmVsKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChzdGF0ZW1lbnQyICYm
ICFzdGF0ZW1lbnQyLT5pc1NhZmVGb3JFdmFsKGxldmVsKSkKKyAgICByZXR1cm4gZmFsc2U7Cisg
IHJldHVybiB0cnVlOworfQorCitib29sIFRyeU5vZGU6OmlzU2FmZUZvckV2YWwoRXZhbExldmVs
IGxldmVsKQoreworICBpZiAobGV2ZWwgPCBFdmFsUmVhZE9ubHkpCisgICAgcmV0dXJuIGZhbHNl
OworICBpZiAoIXRyeUJsb2NrLT5pc1NhZmVGb3JFdmFsKGxldmVsKSkKKyAgICByZXR1cm4gZmFs
c2U7CisgIGlmIChjYXRjaEJsb2NrICYmICFjYXRjaEJsb2NrLT5pc1NhZmVGb3JFdmFsKGxldmVs
KSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChmaW5hbGx5QmxvY2sgJiYgIWZpbmFsbHlCbG9j
ay0+aXNTYWZlRm9yRXZhbChsZXZlbCkpCisgICAgcmV0dXJuIGZhbHNlOworICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBTb3VyY2VFbGVtZW50c05vZGU6OmlzU2FmZUZvckV2YWwoRXZhbExldmVs
IGxldmVsKQoreworICAvLyBIYXBwZW5zIGZvciBib2R5IG9mICdldmFsJworICBmb3IgKGNvbnN0
IFNvdXJjZUVsZW1lbnRzTm9kZSAqbiA9IHRoaXM7IG47IG4gPSBuLT5uZXh0LmdldCgpKQorICAg
IGlmICghbi0+bm9kZS0+aXNTYWZlRm9yRXZhbChsZXZlbCkpCisgICAgICByZXR1cm4gZmFsc2U7
CisgIHJldHVybiB0cnVlOworfQorCitib29sIENhc2VDbGF1c2VOb2RlOjppc1NhZmVGb3JFdmFs
KEV2YWxMZXZlbCBsZXZlbCkKK3sKKyAgaWYgKGxldmVsIDwgRXZhbFJlYWRPbmx5KQorICAgIHJl
dHVybiBmYWxzZTsKKyAgaWYgKGV4cHIgJiYgIWV4cHItPmlzU2FmZUZvckV2YWwobGV2ZWwpKQor
ICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKHNvdXJjZSAmJiAhc291cmNlLT5pc1NhZmVGb3JFdmFs
KGxldmVsKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCitib29sIENs
YXVzZUxpc3ROb2RlOjppc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkKK3sKKyAgaWYgKGxl
dmVsIDwgRXZhbFJlYWRPbmx5KQorICAgIHJldHVybiBmYWxzZTsKKyAgZm9yIChjb25zdCBDbGF1
c2VMaXN0Tm9kZSAqbiA9IHRoaXM7IG47IG4gPSBuLT5uZXh0LmdldCgpKQorICAgIGlmICghbi0+
Y2xhdXNlLT5pc1NhZmVGb3JFdmFsKGxldmVsKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgQ2FzZUJsb2NrTm9kZTo6aXNTYWZlRm9yRXZhbChFdmFsTGV2
ZWwgbGV2ZWwpCit7CisgIGlmIChsZXZlbCA8IEV2YWxSZWFkT25seSkKKyAgICByZXR1cm4gZmFs
c2U7CisgIGlmICghbGlzdDEtPmlzU2FmZUZvckV2YWwobGV2ZWwpKQorICAgIHJldHVybiBmYWxz
ZTsKKyAgaWYgKGRlZiAmJiAhZGVmLT5pc1NhZmVGb3JFdmFsKGxldmVsKSkKKyAgICByZXR1cm4g
ZmFsc2U7CisgIHJldHVybiBsaXN0Mi0+aXNTYWZlRm9yRXZhbChsZXZlbCk7Cit9CisKKyNlbmRp
ZgpkaWZmIC1ydSBXZWJLaXRfNTUyMzMuMy9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaCBBcG9s
bG8vSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgKLS0tIFdlYktpdF81NTIzMy4zL0phdmFTY3Jp
cHRDb3JlL2tqcy9ub2Rlcy5oCTIwMDctMTItMjMgMTM6NDA6MzIuMDAwMDAwMDAwIC0wODAwCisr
KyBBcG9sbG8vSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJMjAwNy0xMC0yMSAxODowODo0MS4w
MDAwMDAwMDAgLTA3MDAKQEAgLTEwOCw2ICsxMDgsMTAgQEAKIAogICAgIHZpcnR1YWwgdm9pZCBi
cmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTCB7IH0KIAorI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0dXJuIGxl
dmVsID09IEV2YWxBbnk7IH0KKyNlbmRpZgorCiAgIHByb3RlY3RlZDoKICAgICBDb21wbGV0aW9u
IGNyZWF0ZUVycm9yQ29tcGxldGlvbihFeGVjU3RhdGUgKiwgRXJyb3JUeXBlLCBjb25zdCBjaGFy
ICptc2cpIEtKU19GQVNUX0NBTEw7CiAgICAgQ29tcGxldGlvbiBjcmVhdGVFcnJvckNvbXBsZXRp
b24oRXhlY1N0YXRlICosIEVycm9yVHlwZSwgY29uc3QgY2hhciAqbXNnLCBjb25zdCBJZGVudGlm
aWVyICYpIEtKU19GQVNUX0NBTEw7CkBAIC0xMjcsNiArMTMxLDggQEAKIAogICAgIGludCBtX2xp
bmU7CiAgIHByaXZhdGU6CisJdm9pZCB1cGRhdGVFeGNlcHRpb25TdGFja1RyYWNlSWZQb3NzaWJs
ZSggRXhlY1N0YXRlKiBjb25zdCwgSlNWYWx1ZSogKTsKKwogICAgIC8vIGRpc2FsbG93IGFzc2ln
bm1lbnQKICAgICBOb2RlJiBvcGVyYXRvcj0oY29uc3QgTm9kZSYpIEtKU19GQVNUX0NBTEw7CiAg
ICAgTm9kZShjb25zdCBOb2RlICZvdGhlcikgS0pTX0ZBU1RfQ0FMTDsKQEAgLTE1NCw2ICsxNjAs
OSBAQAogICAgIE51bGxOb2RlKCkgS0pTX0ZBU1RfQ0FMTCB7fQogICAgIEpTVmFsdWUqIGV2YWx1
YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExP
KQorICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1
cm4gbGV2ZWwgPj0gRXZhbExpdGVyYWw7IH0KKyNlbmRpZgogICB9OwogCiAgIGNsYXNzIEJvb2xl
YW5Ob2RlIDogcHVibGljIE5vZGUgewpAQCAtMTYxLDYgKzE3MCw5IEBACiAgICAgQm9vbGVhbk5v
ZGUoYm9vbCB2KSBLSlNfRkFTVF9DQUxMIDogdmFsdWUodikge30KICAgICBKU1ZhbHVlKiBldmFs
dWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xM
TykKKyAgICB2aXJ0dWFsIGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0
dXJuIGxldmVsID49IEV2YWxMaXRlcmFsOyB9CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICBib29s
IHZhbHVlOwogICB9OwpAQCAtMTcwLDYgKzE4Miw5IEBACiAgICAgTnVtYmVyTm9kZShkb3VibGUg
dikgS0pTX0ZBU1RfQ0FMTCA6IHZhbHVlKHYpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhl
Y1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNl
U3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAg
dmlydHVhbCBib29sIGlzU2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZl
bCA+PSBFdmFsTGl0ZXJhbDsgfQorI2VuZGlmCiAgIHByaXZhdGU6CiAgICAgZG91YmxlIHZhbHVl
OwogICB9OwpAQCAtMTc5LDYgKzE5NCw5IEBACiAgICAgU3RyaW5nTm9kZShjb25zdCBVU3RyaW5n
ICp2KSBLSlNfRkFTVF9DQUxMIHsgdmFsdWUgPSAqdjsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRl
KEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQor
ICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4g
bGV2ZWwgPj0gRXZhbExpdGVyYWw7IH0KKyNlbmRpZgogICBwcml2YXRlOgogICAgIFVTdHJpbmcg
dmFsdWU7CiAgIH07CkBAIC0xODksNiArMjA3LDkgQEAKICAgICAgIDogcGF0dGVybihwKSwgZmxh
Z3MoZikgeyB9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlzU2FmZUZv
ckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsTGl0ZXJhbDsgfQor
I2VuZGlmCiAgIHByaXZhdGU6CiAgICAgVVN0cmluZyBwYXR0ZXJuLCBmbGFnczsKICAgfTsKQEAg
LTE5Nyw2ICsyMTgsOSBAQAogICBwdWJsaWM6CiAgICAgVGhpc05vZGUoKSBLSlNfRkFTVF9DQUxM
IHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyNp
ZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlzU2FmZUZvckV2YWwoRXZhbExl
dmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsUmVhZE9ubHk7IH0KKyNlbmRpZgogICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OwogICB9OwogCkBAIC0yMDksNiArMjMzLDkgQEAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlv
bigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyBy
ZXR1cm4gaWRlbnQ7IH0KKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlz
U2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsUmVhZE9u
bHk7IH0KKyNlbmRpZgogCiAgIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBpZGVudDsKQEAgLTIy
MSw2ICsyNDgsOSBAQAogICAgIHZpcnR1YWwgTm9kZSAqbm9kZUluc2lkZUFsbFBhcmVucygpIEtK
U19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCBib29sIGlzR3JvdXBOb2RlKCkgY29uc3Qg
S0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAg
IHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4gZ3Jv
dXAtPmlzU2FmZUZvckV2YWwobGV2ZWwpOyB9CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8Tm9kZT4gZ3JvdXA7CiAgIH07CkBAIC0yMzUsNiArMjY1LDkgQEAKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBQYXNz
UmVmUHRyPEVsZW1lbnROb2RlPiByZWxlYXNlTmV4dCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
bmV4dC5yZWxlYXNlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtDeWNsZSgpIEtKU19GQVNU
X0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JF
dmFsKEV2YWxMZXZlbCBsZXZlbCk7CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgQXJyYXlOb2RlOwogICAgIExpc3RSZWZQdHI8RWxlbWVudE5vZGU+IG5leHQ7CkBAIC0yNTEs
NiArMjg0LDkgQEAKICAgICAgIDogZWxlbWVudChlbGUtPm5leHQucmVsZWFzZSgpKSwgZWxpc2lv
bihlbGkpLCBvcHQodHJ1ZSkgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShlbGVtZW50LmdldCgp
KTsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JFdmFs
KEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4gbGV2ZWwgPj0gRXZhbExpdGVyYWwgJiYgKCFlbGVt
ZW50IHx8IGVsZW1lbnQtPmlzU2FmZUZvckV2YWwobGV2ZWwpKTsgfQorI2VuZGlmCiAgIHByaXZh
dGU6CiAgICAgUmVmUHRyPEVsZW1lbnROb2RlPiBlbGVtZW50OwogICAgIGludCBlbGlzaW9uOwpA
QCAtMjYzLDYgKzI5OSw5IEBACiAgICAgUHJvcGVydHlOYW1lTm9kZShjb25zdCBJZGVudGlmaWVy
ICZzKSBLSlNfRkFTVF9DQUxMIDogc3RyKHMpIHsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAg
IHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4gbGV2
ZWwgPj0gRXZhbExpdGVyYWw7IH0KKyNlbmRpZgogICBwcml2YXRlOgogICAgIGRvdWJsZSBudW1l
cmljOwogICAgIElkZW50aWZpZXIgc3RyOwpAQCAtMjc2LDYgKzMxNSw5IEBACiAgICAgSlNWYWx1
ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBmcmllbmQg
Y2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVh
bCBib29sIGlzU2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKTsKKyNlbmRpZgogICBwcml2YXRl
OgogICAgIFJlZlB0cjxQcm9wZXJ0eU5hbWVOb2RlPiBuYW1lOwogICAgIFJlZlB0cjxOb2RlPiBh
c3NpZ247CkBAIC0yOTMsNiArMzM1LDkgQEAKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBQYXNzUmVmUHRyPFByb3BlcnR5
TGlzdE5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVh
c2UoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKKyNp
ZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlzU2FmZUZvckV2YWwoRXZhbExl
dmVsIGxldmVsKTsKKyNlbmRpZgogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBPYmplY3RM
aXRlcmFsTm9kZTsKICAgICBSZWZQdHI8UHJvcGVydHlOb2RlPiBub2RlOwpAQCAtMzA1LDYgKzM1
MCw5IEBACiAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoUHJvcGVydHlMaXN0Tm9kZSAqbCkgS0pTX0ZB
U1RfQ0FMTCA6IGxpc3QobC0+bmV4dC5yZWxlYXNlKCkpIHsgUGFyc2VyOjpyZW1vdmVOb2RlQ3lj
bGUobGlzdC5nZXQoKSk7IH0KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNf
RkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25z
dCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAgICB2aXJ0dWFsIGJvb2wg
aXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0dXJuIGxldmVsID49IEV2YWxMaXRl
cmFsICYmICghbGlzdCB8fCBsaXN0LT5pc1NhZmVGb3JFdmFsKGxldmVsKSk7IH0KKyNlbmRpZgog
ICBwcml2YXRlOgogICAgIFJlZlB0cjxQcm9wZXJ0eUxpc3ROb2RlPiBsaXN0OwogICB9OwpAQCAt
MzIwLDYgKzM2OCwxMCBAQAogICAgIE5vZGUgKmJhc2UoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IGV4cHIxLmdldCgpOyB9CiAgICAgTm9kZSAqc3Vic2NyaXB0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJl
dHVybiBleHByMi5nZXQoKTsgfQogCisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwg
Ym9vbCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4gbGV2ZWwgPj0gRXZh
bFJlYWRPbmx5ICYmIGV4cHIxLT5pc1NhZmVGb3JFdmFsKGxldmVsKSAmJiBleHByMi0+aXNTYWZl
Rm9yRXZhbChsZXZlbCk7IH0KKyNlbmRpZgorCiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+
IGV4cHIxOwogICAgIFJlZlB0cjxOb2RlPiBleHByMjsKQEAgLTMzNSw2ICszODcsOSBAQAogICAg
IHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIE5vZGUgKmJhc2UoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0
dXJuIGV4cHIuZ2V0KCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29u
c3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBpZGVudDsgfQorI2lmIFBMQVRGT1JNKEFQT0xMTykK
KyAgICB2aXJ0dWFsIGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0dXJu
IGxldmVsID49IEV2YWxSZWFkT25seSAmJiBleHByLT5pc1NhZmVGb3JFdmFsKGxldmVsKTsgfQor
I2VuZGlmCiAKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKQEAgLTUyMCw2ICs1
NzUsOSBAQAogICAgIFZvaWROb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBleHByKGUpIHt9
CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
KyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlzU2FmZUZvckV2YWwoRXZh
bExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsTGl0ZXJhbDsgfQorI2VuZGlmCiAg
IHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CkBAIC01MjksNiArNTg3LDkg
QEAKICAgICBUeXBlT2ZSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBpKSBLSlNfRkFTVF9D
QUxMIDogbV9pZGVudChpKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwgYm9v
bCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4gbGV2ZWwgPj0gRXZhbFJl
YWRPbmx5OyB9CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CiAg
IH07CkBAIC01MzgsNiArNTk5LDkgQEAKICAgICBUeXBlT2ZWYWx1ZU5vZGUoTm9kZSAqZSkgS0pT
X0ZBU1RfQ0FMTCA6IG1fZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1
YWwgYm9vbCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4gbGV2ZWwgPj0g
RXZhbENvbnN0YW50RXhwciAmJiBtX2V4cHItPmlzU2FmZUZvckV2YWwobGV2ZWwpOyB9CisjZW5k
aWYKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9leHByOwogICB9OwpAQCAtNTg5LDYg
KzY1Myw5IEBACiAgICAgVW5hcnlQbHVzTm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDogZXhw
cihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JF
dmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4gbGV2ZWwgPj0gRXZhbENvbnN0YW50RXhwciAm
JiBleHByLT5pc1NhZmVGb3JFdmFsKGxldmVsKTsgfQorI2VuZGlmCiAgIHByaXZhdGU6CiAgICAg
UmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CkBAIC01OTgsNiArNjY1LDEwIEBACiAgICAgTmVnYXRl
Tm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBP
TExPKQorICAgIC8vIGFsbG93IGZvciBsaXRlcmFscyBzaW5jZSBsZXhlciBkb2Vzbid0IGRlYWwg
d2l0aCBuZWdhdGl2ZXMKKyAgICB2aXJ0dWFsIGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwg
bGV2ZWwpIHsgcmV0dXJuIGxldmVsID49IEV2YWxMaXRlcmFsICYmIGV4cHItPmlzU2FmZUZvckV2
YWwobGV2ZWwpOyB9CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsK
ICAgfTsKQEAgLTYwNyw2ICs2NzgsOSBAQAogICAgIEJpdHdpc2VOb3ROb2RlKE5vZGUgKmUpIEtK
U19GQVNUX0NBTEwgOiBleHByKGUpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFt
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVh
bCBib29sIGlzU2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBF
dmFsQ29uc3RhbnRFeHByICYmIGV4cHItPmlzU2FmZUZvckV2YWwobGV2ZWwpOyB9CisjZW5kaWYK
ICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgfTsKQEAgLTYxNiw3ICs2OTAs
OSBAQAogICAgIExvZ2ljYWxOb3ROb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBleHByKGUp
IHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKLSAgcHJpdmF0ZToKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlz
U2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsQ29uc3Rh
bnRFeHByICYmIGV4cHItPmlzU2FmZUZvckV2YWwobGV2ZWwpOyB9CisjZW5kaWYKICAgICBSZWZQ
dHI8Tm9kZT4gZXhwcjsKICAgfTsKIApAQCAtNjI1LDYgKzcwMSw5IEBACiAgICAgTXVsdE5vZGUo
Tm9kZSAqdDEsIE5vZGUgKnQyLCBjaGFyIG9wKSBLSlNfRkFTVF9DQUxMIDogdGVybTEodDEpLCB0
ZXJtMih0MiksIG9wZXIob3ApIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBi
b29sIGlzU2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFs
Q29uc3RhbnRFeHByICYmIHRlcm0xLT5pc1NhZmVGb3JFdmFsKGxldmVsKSAmJiB0ZXJtMi0+aXNT
YWZlRm9yRXZhbChsZXZlbCk7IH0KKyNlbmRpZgogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2Rl
PiB0ZXJtMTsKICAgICBSZWZQdHI8Tm9kZT4gdGVybTI7CkBAIC02MzYsNiArNzE1LDkgQEAKICAg
ICBBZGROb2RlKE5vZGUgKnQxLCBOb2RlICp0MiwgY2hhciBvcCkgS0pTX0ZBU1RfQ0FMTCA6IHRl
cm0xKHQxKSwgdGVybTIodDIpLCBvcGVyKG9wKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAg
IHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4gbGV2
ZWwgPj0gRXZhbENvbnN0YW50RXhwciAmJiB0ZXJtMS0+aXNTYWZlRm9yRXZhbChsZXZlbCkgJiYg
dGVybTItPmlzU2FmZUZvckV2YWwobGV2ZWwpOyB9CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tm9kZT4gdGVybTE7CiAgICAgUmVmUHRyPE5vZGU+IHRlcm0yOwpAQCAtNjQ4LDYgKzcz
MCw5IEBACiAgICAgICA6IHRlcm0xKHQxKSwgdGVybTIodDIpLCBvcGVyKG8pIHt9CiAgICAgSlNW
YWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyNpZiBQTEFU
Rk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlzU2FmZUZvckV2YWwoRXZhbExldmVsIGxl
dmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsQ29uc3RhbnRFeHByICYmIHRlcm0xLT5pc1NhZmVG
b3JFdmFsKGxldmVsKSAmJiB0ZXJtMi0+aXNTYWZlRm9yRXZhbChsZXZlbCk7IH0KKyNlbmRpZgog
ICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiB0ZXJtMTsKICAgICBSZWZQdHI8Tm9kZT4gdGVy
bTI7CkBAIC02NjAsNiArNzQ1LDkgQEAKICAgICAgIGV4cHIxKGUxKSwgZXhwcjIoZTIpLCBvcGVy
KG8pIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlzU2FmZUZvckV2
YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsQ29uc3RhbnRFeHByICYm
IGV4cHIxLT5pc1NhZmVGb3JFdmFsKGxldmVsKSAmJiBleHByMS0+aXNTYWZlRm9yRXZhbChsZXZl
bCk7IH0KKyNlbmRpZgogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBS
ZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC02NzIsNiArNzYwLDkgQEAKICAgICAgIDogZXhwcjEoZTEp
LCBleHByMihlMiksIG9wZXIobykge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUq
KSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAgICB2aXJ0dWFs
IGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0dXJuIGxldmVsID49IEV2
YWxDb25zdGFudEV4cHIgJiYgZXhwcjEtPmlzU2FmZUZvckV2YWwobGV2ZWwpICYmIGV4cHIxLT5p
c1NhZmVGb3JFdmFsKGxldmVsKTsgfQorI2VuZGlmCiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5v
ZGU+IGV4cHIxOwogICAgIFJlZlB0cjxOb2RlPiBleHByMjsKQEAgLTY4NCw2ICs3NzUsOSBAQAog
ICAgICAgZXhwcjEoZTEpLCBleHByMihlMiksIG9wZXIobykge30KICAgICBKU1ZhbHVlKiBldmFs
dWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xM
TykKKyAgICB2aXJ0dWFsIGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0
dXJuIGxldmVsID49IEV2YWxDb25zdGFudEV4cHIgJiYgZXhwcjEtPmlzU2FmZUZvckV2YWwobGV2
ZWwpICYmIGV4cHIxLT5pc1NhZmVGb3JFdmFsKGxldmVsKTsgfQorI2VuZGlmCiAgIHByaXZhdGU6
CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIxOwogICAgIFJlZlB0cjxOb2RlPiBleHByMjsKQEAgLTY5
OSw2ICs3OTMsOSBAQAogICAgICAgZXhwcjEoZTEpLCBleHByMihlMiksIG9wZXIobykge30KICAg
ICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworI2lm
IFBMQVRGT1JNKEFQT0xMTykKKyAgICB2aXJ0dWFsIGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2
ZWwgbGV2ZWwpIHsgcmV0dXJuIGxldmVsID49IEV2YWxDb25zdGFudEV4cHIgJiYgZXhwcjEtPmlz
U2FmZUZvckV2YWwobGV2ZWwpICYmIGV4cHIxLT5pc1NhZmVGb3JFdmFsKGxldmVsKTsgfQorI2Vu
ZGlmCiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIxOwogICAgIFJlZlB0cjxOb2Rl
PiBleHByMjsKQEAgLTcxNCw2ICs4MTEsOSBAQAogICAgICAgbG9naWNhbChsKSwgZXhwcjEoZTEp
LCBleHByMihlMikge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
YWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0dXJuIGxldmVsID49IEV2YWxDb25zdGFu
dEV4cHIgJiYgZXhwcjEtPmlzU2FmZUZvckV2YWwobGV2ZWwpICYmIGV4cHIxLT5pc1NhZmVGb3JF
dmFsKGxldmVsKTsgfQorI2VuZGlmCiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGxvZ2lj
YWw7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIxOwpAQCAtNzc1LDYgKzg3NSw5IEBACiAgICAgQ29t
bWFOb2RlKE5vZGUgKmUxLCBOb2RlICplMikgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIxKGUxKSwgZXhw
cjIoZTIpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlzU2FmZUZv
ckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsUmVhZE9ubHkgJiYg
ZXhwcjEtPmlzU2FmZUZvckV2YWwobGV2ZWwpICYmIGV4cHIxLT5pc1NhZmVGb3JFdmFsKGxldmVs
KTsgfQorI2VuZGlmCiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIxOwogICAgIFJl
ZlB0cjxOb2RlPiBleHByMjsKQEAgLTc4OSw3ICs4OTIsNyBAQAogICAgIFJlZlB0cjxOb2RlPiBl
eHByOwogICB9OwogCi0gIGNsYXNzIFZhckRlY2xOb2RlOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNz
IFZhckRlY2xOb2RlIDogcHVibGljIE5vZGUgewogICBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsg
VmFyaWFibGUsIENvbnN0YW50IH07CiAgICAgVmFyRGVjbE5vZGUoY29uc3QgSWRlbnRpZmllciAm
aWQsIEFzc2lnbkV4cHJOb2RlICppbiwgVHlwZSB0KSBLSlNfRkFTVF9DQUxMOwpAQCAtODM3LDYg
Kzk0MCw5IEBACiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSop
IEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEtKU19GQVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwg
Ym9vbCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCk7CisjZW5kaWYKICAgcHJvdGVjdGVk
OgogICAgIFJlZlB0cjxTb3VyY2VFbGVtZW50c05vZGU+IHNvdXJjZTsKICAgfTsKQEAgLTg0Niw2
ICs5NTIsOSBAQAogICAgIEVtcHR5U3RhdGVtZW50Tm9kZSgpIEtKU19GQVNUX0NBTEwgeyB9IC8v
IGRlYnVnCiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29sIGlz
U2FmZUZvckV2YWwoRXZhbExldmVsIC8qbGV2ZWwqLykgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlm
CiAgIH07CiAKICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSB7CkBAIC04NTMsNiArOTYyLDkgQEAKICAgICBFeHByU3RhdGVtZW50Tm9kZShOb2RlICplKSBL
SlNfRkFTVF9DQUxMIDogZXhwcihlKSB7IH0KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0
ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xMTykK
KyAgICB2aXJ0dWFsIGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0dXJu
IGxldmVsID49IEV2YWxMaXRlcmFsICYmIGV4cHItPmlzU2FmZUZvckV2YWwobGV2ZWwpOyB9Cisj
ZW5kaWYKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgfTsKQEAgLTg2NCw2
ICs5NzYsOSBAQAogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUq
KSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAgICB2aXJ0dWFs
IGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpOworI2VuZGlmCiAgIHByaXZhdGU6
CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRl
bWVudDE7CkBAIC05MzAsNiArMTA0NSw5IEBACiAgICAgQ29udGludWVOb2RlKGNvbnN0IElkZW50
aWZpZXIgJmkpIEtKU19GQVNUX0NBTEwgOiBpZGVudChpKSB7IH0KICAgICB2aXJ0dWFsIENvbXBs
ZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRG
T1JNKEFQT0xMTykKKyAgICB2aXJ0dWFsIGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2
ZWwpIHsgcmV0dXJuIGxldmVsID49IEV2YWxSZWFkT25seTsgfQorI2VuZGlmCiAgIHByaXZhdGU6
CiAgICAgSWRlbnRpZmllciBpZGVudDsKICAgfTsKQEAgLTk0MCw2ICsxMDU4LDkgQEAKICAgICBC
cmVha05vZGUoY29uc3QgSWRlbnRpZmllciAmaSkgS0pTX0ZBU1RfQ0FMTCA6IGlkZW50KGkpIHsg
fQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19G
QVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVG
b3JFdmFsKEV2YWxMZXZlbCBsZXZlbCkgeyByZXR1cm4gbGV2ZWwgPj0gRXZhbFJlYWRPbmx5OyB9
CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyIGlkZW50OwogICB9OwpAQCAtOTQ5
LDYgKzEwNzAsOSBAQAogICAgIFJldHVybk5vZGUoTm9kZSAqdikgS0pTX0ZBU1RfQ0FMTCA6IHZh
bHVlKHYpIHt9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8pCisgICAgdmlydHVhbCBib29s
IGlzU2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsUmVh
ZE9ubHk7IH0KKyNlbmRpZgogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiB2YWx1ZTsKICAg
fTsKQEAgLTk1OSw2ICsxMDgzLDkgQEAKICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVj
bHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8p
CisgICAgdmlydHVhbCBib29sIGlzU2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVy
biBsZXZlbCA+PSBFdmFsUmVhZE9ubHkgJiYgZXhwci0+aXNTYWZlRm9yRXZhbChsZXZlbCkgJiYg
c3RhdGVtZW50LT5pc1NhZmVGb3JFdmFsKGxldmVsKTsgfQorI2VuZGlmCiAgIHByaXZhdGU6CiAg
ICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVu
dDsKQEAgLTk3MCw2ICsxMDk3LDkgQEAKICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVj
bHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyNpZiBQTEFURk9STShBUE9MTE8p
CisgICAgdmlydHVhbCBib29sIGlzU2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVy
biBsZXZlbCA+PSBFdmFsUmVhZE9ubHkgJiYgc3RhdGVtZW50LT5pc1NhZmVGb3JFdmFsKGxldmVs
KTsgfQorI2VuZGlmCiAgIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBsYWJlbDsKICAgICBSZWZQ
dHI8U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50OwpAQCAtOTgwLDYgKzExMTAsOSBAQAogICAgIFRo
cm93Tm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSB7fQogICAgIHZpcnR1YWwg
Q29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisjaWYg
UExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZl
bCBsZXZlbCkgeyByZXR1cm4gbGV2ZWwgPj0gRXZhbFJlYWRPbmx5ICYmIGV4cHItPmlzU2FmZUZv
ckV2YWwobGV2ZWwpOyB9CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhw
cjsKICAgfTsKQEAgLTk5MSw2ICsxMTI0LDkgQEAKICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhl
Y3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
VmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyNpZiBQTEFURk9STShB
UE9MTE8pCisgICAgdmlydHVhbCBib29sIGlzU2FmZUZvckV2YWwoRXZhbExldmVsIGxldmVsKTsK
KyNlbmRpZgogICBwcml2YXRlOgogICAgIFJlZlB0cjxTdGF0ZW1lbnROb2RlPiB0cnlCbG9jazsK
ICAgICBJZGVudGlmaWVyIGV4Y2VwdGlvbklkZW50OwpAQCAtMTA0OSw2ICsxMTg1LDkgQEAKICAg
ICAgIDogaWRlbnQoaSksIHBhcmFtKHAgPyBwLT5uZXh0LnJlbGVhc2UoKSA6IDApLCBib2R5KGIp
IHsgaWYgKHApIHsgUGFyc2VyOjpyZW1vdmVOb2RlQ3ljbGUocGFyYW0uZ2V0KCkpOyB9IGFkZFBh
cmFtcygpOyB9CiAgICAgdmlydHVhbCBKU1ZhbHVlICpldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNf
RkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25z
dCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAgICB2aXJ0dWFsIGJvb2wg
aXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0dXJuIGxldmVsID49IEV2YWxSZWFk
T25seUFuZEZ1bmN0aW9uczsgfQorI2VuZGlmCiAgIHByaXZhdGU6CiAgICAgdm9pZCBhZGRQYXJh
bXMoKSBLSlNfRkFTVF9DQUxMOwogICAgIC8vIFVzZWQgZm9yIHN0cmVhbVRvCkBAIC0xMDY3LDYg
KzEyMDYsOSBAQAogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUq
KSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAgICB2aXJ0dWFs
IGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpIHsgcmV0dXJuIGxldmVsID49IEV2
YWxBbnk7IH0gLy8gYmVjYXVzZSBpdCBkZWZpbmVzIGEgYmluZGluZworI2VuZGlmCiAgIHByaXZh
dGU6CiAgICAgdm9pZCBhZGRQYXJhbXMoKSBLSlNfRkFTVF9DQUxMOwogICAgIElkZW50aWZpZXIg
aWRlbnQ7CkBAIC0xMDg4LDYgKzEyMzAsOSBAQAogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIFBhc3NSZWZQdHI8U291cmNl
RWxlbWVudHNOb2RlPiByZWxlYXNlTmV4dCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbmV4dC5y
ZWxlYXNlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtDeWNsZSgpIEtKU19GQVNUX0NBTEw7
CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JFdmFsKEV2
YWxMZXZlbCBsZXZlbCk7CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxv
Y2tOb2RlOwogICAgIGZyaWVuZCBjbGFzcyBDYXNlQ2xhdXNlTm9kZTsKQEAgLTExMDUsNiArMTI1
MCw5IEBACiAgICAgICB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9D
QUxMOwogICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNf
RkFTVF9DQUxMOwogICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwgYm9v
bCBpc1NhZmVGb3JFdmFsKEV2YWxMZXZlbCBsZXZlbCk7CisjZW5kaWYKICAgcHJpdmF0ZToKICAg
ICAgIFJlZlB0cjxOb2RlPiBleHByOwogICAgICAgUmVmUHRyPFNvdXJjZUVsZW1lbnRzTm9kZT4g
c291cmNlOwpAQCAtMTEyNCw2ICsxMjcyLDkgQEAKICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgICAgUGFzc1JlZlB0cjxD
bGF1c2VMaXN0Tm9kZT4gcmVsZWFzZU5leHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQu
cmVsZWFzZSgpOyB9CiAgICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtDeWNsZSgpIEtKU19GQVNUX0NB
TEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVGb3JFdmFs
KEV2YWxMZXZlbCBsZXZlbCk7CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICAgIGZyaWVuZCBjbGFz
cyBDYXNlQmxvY2tOb2RlOwogICAgICAgUmVmUHRyPENhc2VDbGF1c2VOb2RlPiBjbGF1c2U7CkBA
IC0xMTM4LDYgKzEyODksOSBAQAogICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgdm9pZCBwcm9jZXNzRnVuY0RlY2woRXhl
Y1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTYWZlRm9yRXZhbChFdmFsTGV2ZWwgbGV2ZWwpOworI2VuZGlmCiAg
IHByaXZhdGU6CiAgICAgICBSZWZQdHI8Q2xhdXNlTGlzdE5vZGU+IGxpc3QxOwogICAgICAgUmVm
UHRyPENhc2VDbGF1c2VOb2RlPiBkZWY7CkBAIC0xMTUxLDYgKzEzMDUsOSBAQAogICAgICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxM
OwogICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19G
QVNUX0NBTEw7CisjaWYgUExBVEZPUk0oQVBPTExPKQorICAgICAgdmlydHVhbCBib29sIGlzU2Fm
ZUZvckV2YWwoRXZhbExldmVsIGxldmVsKSB7IHJldHVybiBsZXZlbCA+PSBFdmFsUmVhZE9ubHkg
JiYgZXhwci0+aXNTYWZlRm9yRXZhbChsZXZlbCkgJiYgYmxvY2stPmlzU2FmZUZvckV2YWwobGV2
ZWwpOyB9CisjZW5kaWYKICAgcHJpdmF0ZToKICAgICAgIFJlZlB0cjxOb2RlPiBleHByOwogICAg
ICAgUmVmUHRyPENhc2VCbG9ja05vZGU+IGJsb2NrOwpkaWZmIC1ydSBXZWJLaXRfNTUyMzMuMy9K
YXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmNwcCBBcG9sbG8vSmF2YVNjcmlwdENvcmUva2pzL29i
amVjdC5jcHAKLS0tIFdlYktpdF81NTIzMy4zL0phdmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuY3Bw
CTIwMDctMTItMjMgMTM6NDA6MzIuMDAwMDAwMDAwIC0wODAwCisrKyBBcG9sbG8vSmF2YVNjcmlw
dENvcmUva2pzL29iamVjdC5jcHAJMjAwNy0xMi0wNSAxMDowMzozMi4wMDAwMDAwMDAgLTA4MDAK
QEAgLTUzMiw2ICs1MzIsNyBAQAogICBKU1ZhbHVlICpwcmltID0gdG9QcmltaXRpdmUoZXhlYyxO
dW1iZXJUeXBlKTsKICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAvLyBzaG91bGQgYmUgcGlj
a2VkIHVwIHNvb24gaW4gbm9kZXMuY3BwCiAgICAgcmV0dXJuIDAuMDsKKyAgQVNTRVJUKCFwcmlt
LT5pc09iamVjdCgpKTsJLy8gaWxsZWdhbCBwZXIgRWNtYSAyNjIsIGFuZCBjb3VsZCBsZWFkIHRv
IGluZmluaXRlIHJlY3Vyc2lvbgogICByZXR1cm4gcHJpbS0+dG9OdW1iZXIoZXhlYyk7CiB9CiAK
QEAgLTU0MCw2ICs1NDEsNyBAQAogICBKU1ZhbHVlICpwcmltID0gdG9QcmltaXRpdmUoZXhlYyxT
dHJpbmdUeXBlKTsKICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAvLyBzaG91bGQgYmUgcGlj
a2VkIHVwIHNvb24gaW4gbm9kZXMuY3BwCiAgICAgcmV0dXJuICIiOworICBBU1NFUlQoIXByaW0t
PmlzT2JqZWN0KCkpOwkvLyBpbGxlZ2FsIHBlciBFY21hIDI2MiwgYW5kIGNvdWxkIGxlYWQgdG8g
aW5maW5pdGUgcmVjdXJzaW9uCiAgIHJldHVybiBwcmltLT50b1N0cmluZyhleGVjKTsKIH0KIApA
QCAtNTU4LDYgKzU2MCwxMSBAQAogICAgIF9wcm9wLnB1dChwcm9wZXJ0eU5hbWUsIGpzTnVtYmVy
KHZhbHVlKSwgYXR0cik7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChjb25zdCBJ
ZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpCit7CisgICAgX3Byb3AucmVtb3ZlKHByb3BlcnR5TmFt
ZSk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKEludGVybmFsRnVuY3Rp
b25JbXAqIGZ1bmMsIGludCBhdHRyKQogewogICAgIHB1dERpcmVjdChmdW5jLT5mdW5jdGlvbk5h
bWUoKSwgZnVuYywgYXR0cik7IApkaWZmIC1ydSBXZWJLaXRfNTUyMzMuMy9KYXZhU2NyaXB0Q29y
ZS9ranMvb2JqZWN0LmggQXBvbGxvL0phdmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuaAotLS0gV2Vi
S2l0XzU1MjMzLjMvSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCTIwMDctMTItMjMgMTM6NDA6
MzIuMDAwMDAwMDAwIC0wODAwCisrKyBBcG9sbG8vSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5o
CTIwMDctMTItMDUgMTA6MDM6MzIuMDAwMDAwMDAwIC0wODAwCkBAIC0xMTYsNiArMTE4LDkgQEAK
ICAgICBKU09iamVjdCgpOwogCiAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKKworICAgIC8vIFF1
ZXJ5aW5nIHRoZSB0eXBlLiBOb3RlIHRoYXQgZm9yIGEgZ2l2ZW4gSlNWYWx1ZSBpbnN0YW5jZSwg
dGhlIHJlc3VsdCBvZiAKKyAgICAvLyB0aGlzIG1ldGhvZCBtYXkgYmUgZGlmZmVyZW50IGF0IGRp
ZmZlcmVudCB0aW1lcy4gRG8gbm90IGNhY2hlIHRoZSByZXN1bHQuCiAgICAgdmlydHVhbCBKU1R5
cGUgdHlwZSgpIGNvbnN0OwogCiAgICAgLyoqCkBAIC0yMjYsNyArMjMxLDcgQEAKICAgICAgKiBA
cGFyYW0gZXhlYyBUaGUgY3VycmVudCBleGVjdXRpb24gc3RhdGUKICAgICAgKiBAcGFyYW0gcHJv
cGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byByZXRyaWV2ZQogICAgICAqCi0g
ICAgICogQHJldHVybiBUaGUgc3BlY2lmaWVkIHByb3BlcnR5LCBvciBVbmRlZmluZWQKKyAgICAg
KiBAcmV0dXJuIFRoZSBzcGVjaWZpZWQgcHJvcGVydHksIG9yIFVuZGVmaW5lZC4gTmV2ZXIgcmV0
dXJucyBOVUxMLgogICAgICAqLwogICAgIEpTVmFsdWUgKmdldChFeGVjU3RhdGUgKmV4ZWMsIGNv
bnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgSlNWYWx1ZSAqZ2V0KEV4
ZWNTdGF0ZSAqZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKQEAgLTI1NSw2ICsy
NjAsOCBAQAogICAgICAqCiAgICAgICogU2VlIEVDTUEgOC42LjIuMwogICAgICAqCisgICAgICog
V2lsbCBuZXZlciBzZXQgYW4gZXhjZXB0aW9uIGluIHRoZSBwYXNzZWQgRXhlY1N0YXRlCisgICAg
ICoKICAgICAgKiBAcGFyYW0gZXhlYyBUaGUgY3VycmVudCBleGVjdXRpb24gc3RhdGUKICAgICAg
KiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eQogICAgICAqIEBy
ZXR1cm4gdHJ1ZSBpZiB0aGUgcHJvcGVydHkgY2FuIGJlIHNldCwgb3RoZXJ3aXNlIGZhbHNlCkBA
IC0yODIsNiArMjg5LDggQEAKICAgICAgKgogICAgICAqIFNlZSBFQ01BIDguNi4yLjQKICAgICAg
KgorICAgICAqIFdpbGwgbmV2ZXIgc2V0IGFuIGV4Y2VwdGlvbiBpbiB0aGUgcGFzc2VkIEV4ZWNT
dGF0ZQorICAgICAqCiAgICAgICogQHBhcmFtIGV4ZWMgVGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0
YXRlCiAgICAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkg
dG8gY2hlY2sgZm9yCiAgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIHRoZSBw
cm9wZXJ0eSwgb3RoZXJ3aXNlIGZhbHNlCkBAIC0zMTEsOSArMzIwLDkgQEAKICAgICAgKgogICAg
ICAqIEBwYXJhbSBleGVjIFRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZQogICAgICAqIEBwYXJh
bSBoaW50IFRoZSBkZXNpcmVkIHByaW1pdGl2ZSB0eXBlIHRvIGNvbnZlcnQgdG8KLSAgICAgKiBA
cmV0dXJuIEEgcHJpbWl0aXZlIHZhbHVlIGNvbnZlcnRlZCBmcm9tIHRoZSBvYmpldGMuIE5vdGUg
dGhhdCB0aGUKKyAgICAgKiBAcmV0dXJuIEEgcHJpbWl0aXZlIHZhbHVlIGNvbnZlcnRlZCBmcm9t
IHRoZSBvYmplY3QuIE5vdGUgdGhhdCB0aGUKICAgICAgKiB0eXBlIG9mIHByaW1pdGl2ZSB2YWx1
ZSByZXR1cm5lZCBtYXkgbm90IGJlIHRoZSBzYW1lIGFzIHRoZSByZXF1ZXN0ZWQKLSAgICAgKiBo
aW50LgorICAgICAqIGhpbnQuIEl0IGlzIGlsbGVnYWwgZm9yIERlZmF1bHRWYWx1ZSB0byByZXR1
cm4gYSBub24tcHJpbWl0aXZlIChlLmcuIGFuIG9iamVjdCkuIAogICAgICAqLwogICAgIC8qKgog
ICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBbW0RlZmF1bHRWYWx1ZV1dIGludGVybmFsIHBy
b3BlcnR5IChpbXBsZW1lbnRlZCBieQpAQCAtMzI0LDcgKzMzMyw5IEBACiAgICAgLyoqCiAgICAg
ICogV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpbXBsZW1lbnRzIHRoZSBjb25zdHJ1Y3QoKSBt
ZXRob2QuIElmIHRoaXMKICAgICAgKiByZXR1cm5zIGZhbHNlIHlvdSBzaG91bGQgbm90IGNhbGwg
dGhlIGNvbnN0cnVjdCgpIG1ldGhvZCBvbiB0aGlzCi0gICAgICogb2JqZWN0ICh0eXBpY2FsbHks
IGFuIGFzc2VydGlvbiB3aWxsIGZhaWwgdG8gaW5kaWNhdGUgdGhpcykuCisgICAgICogb2JqZWN0
ICh0eXBpY2FsbHksIGFuIGFzc2VydGlvbiB3aWxsIGZhaWwgdG8gaW5kaWNhdGUgdGhpcykuIE5v
dGUgdGhhdCAKKyAgICAgKiBmb3IgYSBnaXZlbiBKU09iamVjdCBpbnN0YW5jZSwgdGhlIHJlc3Vs
dCBvZiB0aGlzIG1ldGhvZCBtYXkgYmUgZGlmZmVyZW50CisgICAgICogYXQgZGlmZmVyZW50IHRp
bWVzLiBEbyBub3QgY2FjaGUgdGhlIHJlc3VsdC4KICAgICAgKgogICAgICAqIEByZXR1cm4gdHJ1
ZSBpZiB0aGlzIG9iamVjdCBpbXBsZW1lbnRzIHRoZSBjb25zdHJ1Y3QoKSBtZXRob2QsIG90aGVy
d2lzZQogICAgICAqIGZhbHNlCkBAIC0zNjUsNyArMzc2LDkgQEAKICAgICAvKioKICAgICAgKiBX
aGV0aGVyIG9yIG5vdCB0aGUgb2JqZWN0IGltcGxlbWVudHMgdGhlIGNhbGwoKSBtZXRob2QuIElm
IHRoaXMgcmV0dXJucwogICAgICAqIGZhbHNlIHlvdSBzaG91bGQgbm90IGNhbGwgdGhlIGNhbGwo
KSBtZXRob2Qgb24gdGhpcyBvYmplY3QgKHR5cGljYWxseSwKLSAgICAgKiBhbiBhc3NlcnRpb24g
d2lsbCBmYWlsIHRvIGluZGljYXRlIHRoaXMpLgorICAgICAqIGFuIGFzc2VydGlvbiB3aWxsIGZh
aWwgdG8gaW5kaWNhdGUgdGhpcykuIE5vdGUgdGhhdCBmb3IgYSBnaXZlbiBKU09iamVjdCAKKyAg
ICAgKiBpbnN0YW5jZSwgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBtYXkgYmUgZGlmZmVyZW50
IGF0IGRpZmZlcmVudCB0aW1lcy4gCisgICAgICogRG8gbm90IGNhY2hlIHRoZSByZXN1bHQuCiAg
ICAgICoKICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBvYmplY3QgaW1wbGVtZW50cyB0aGUg
Y2FsbCgpIG1ldGhvZCwgb3RoZXJ3aXNlCiAgICAgICogZmFsc2UKQEAgLTM4Nyw3ICs0MDAsNyBA
QAogICAgICAqIGlzIGV4ZWN1dGVkLCBjYWxsKCkgd2lsbCBiZSBpbnZva2VkIG9uIHRoZSBDKysg
b2JqZWN0IHdoaWNoIGltcGxlbWVudHMKICAgICAgKiB0aGUgdG9TdHJpbmcgbWV0aG9kLCB3aXRo
IHRoZSB0aGlzT2JqIGJlaW5nIHdpbmRvdy5sb2NhdGlvbgogICAgICAqIEBwYXJhbSBhcmdzIExp
c3Qgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24KLSAgICAgKiBAcmV0
dXJuIFRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24KKyAgICAgKiBAcmV0dXJuIFRo
ZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24uIE5ldmVyIHJldHVybnMgTlVMTC4KICAg
ICAgKi8KICAgICBKU1ZhbHVlICpjYWxsKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKnRoaXNP
YmosIGNvbnN0IExpc3QgJmFyZ3MpOwogICAgIHZpcnR1YWwgSlNWYWx1ZSAqY2FsbEFzRnVuY3Rp
b24oRXhlY1N0YXRlICpleGVjLCBKU09iamVjdCAqdGhpc09iaiwgY29uc3QgTGlzdCAmYXJncyk7
CkBAIC0zOTUsNyArNDA4LDkgQEAKICAgICAvKioKICAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUg
b2JqZWN0IGltcGxlbWVudHMgdGhlIGhhc0luc3RhbmNlKCkgbWV0aG9kLiBJZiB0aGlzCiAgICAg
ICogcmV0dXJucyBmYWxzZSB5b3Ugc2hvdWxkIG5vdCBjYWxsIHRoZSBoYXNJbnN0YW5jZSgpIG1l
dGhvZCBvbiB0aGlzCi0gICAgICogb2JqZWN0ICh0eXBpY2FsbHksIGFuIGFzc2VydGlvbiB3aWxs
IGZhaWwgdG8gaW5kaWNhdGUgdGhpcykuCisgICAgICogb2JqZWN0ICh0eXBpY2FsbHksIGFuIGFz
c2VydGlvbiB3aWxsIGZhaWwgdG8gaW5kaWNhdGUgdGhpcykuIE5vdGUgdGhhdCAKKyAgICAgKiBm
b3IgYSBnaXZlbiBKU09iamVjdCBpbnN0YW5jZSwgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBt
YXkgYmUgZGlmZmVyZW50CisgICAgICogYXQgZGlmZmVyZW50IHRpbWVzLiBEbyBub3QgY2FjaGUg
dGhlIHJlc3VsdC4gICAgIAogICAgICAqCiAgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgb2Jq
ZWN0IGltcGxlbWVudHMgdGhlIGhhc0luc3RhbmNlKCkgbWV0aG9kLAogICAgICAqIG90aGVyd2lz
ZSBmYWxzZQpAQCAtNDM1LDYgKzQ1MCw3IEBACiAgICAgICAgIHsgcmV0dXJuIF9wcm9wLmdldExv
Y2F0aW9uKHByb3BlcnR5TmFtZSk7IH0KICAgICB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlm
aWVyICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0ciA9IDApOwogICAgIHZv
aWQgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSwgaW50IHZhbHVlLCBp
bnQgYXR0ciA9IDApOworICAgIHZvaWQgcmVtb3ZlRGlyZWN0KGNvbnN0IElkZW50aWZpZXIgJnBy
b3BlcnR5TmFtZSk7CiAKICAgICAvLyBjb252ZW5pZW5jZSB0byBhZGQgYSBmdW5jdGlvbiBwcm9w
ZXJ0eSB1bmRlciB0aGUgZnVuY3Rpb24ncyBvd24gYnVpbHQtaW4gbmFtZQogICAgIHZvaWQgcHV0
RGlyZWN0RnVuY3Rpb24oSW50ZXJuYWxGdW5jdGlvbkltcCosIGludCBhdHRyID0gMCk7CmRpZmYg
LXJ1IFdlYktpdF81NTIzMy4zL0phdmFTY3JpcHRDb3JlL2tqcy92YWx1ZS5oIEFwb2xsby9KYXZh
U2NyaXB0Q29yZS9ranMvdmFsdWUuaAotLS0gV2ViS2l0XzU1MjMzLjMvSmF2YVNjcmlwdENvcmUv
a2pzL3ZhbHVlLmgJMjAwNy0xMi0yMyAxMzo0MDozMi4wMDAwMDAwMDAgLTA4MDAKKysrIEFwb2xs
by9KYXZhU2NyaXB0Q29yZS9ranMvdmFsdWUuaAkyMDA3LTEwLTIxIDE5OjA5OjM4LjAwMDAwMDAw
MCAtMDcwMApAQCAtNjMsNyArNjYsOCBAQAogICAgIHZpcnR1YWwgfkpTVmFsdWUoKTsKIAogcHVi
bGljOgotICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgorICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBl
LiBOb3RlIHRoYXQgZm9yIGEgZ2l2ZW4gSlNWYWx1ZSBpbnN0YW5jZSwgdGhlIHJlc3VsdCBvZiAK
KyAgICAvLyB0aGlzIG1ldGhvZCBtYXkgYmUgZGlmZmVyZW50IGF0IGRpZmZlcmVudCB0aW1lcy4g
RG8gbm90IGNhY2hlIHRoZSByZXN1bHQuCiAgICAgSlNUeXBlIHR5cGUoKSBjb25zdDsKICAgICBi
b29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKQEAgLTEy
OSw3ICsxMzMsOCBAQAogICAgIEpTQ2VsbCgpOwogICAgIHZpcnR1YWwgfkpTQ2VsbCgpOwogcHVi
bGljOgotICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgorICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBl
LiBOb3RlIHRoYXQgZm9yIGEgZ2l2ZW4gSlNWYWx1ZSBpbnN0YW5jZSwgdGhlIHJlc3VsdCBvZiAK
KyAgICAvLyB0aGlzIG1ldGhvZCBtYXkgYmUgZGlmZmVyZW50IGF0IGRpZmZlcmVudCB0aW1lcy4g
RG8gbm90IGNhY2hlIHRoZSByZXN1bHQuCiAgICAgdmlydHVhbCBKU1R5cGUgdHlwZSgpIGNvbnN0
ID0gMDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNv
bnN0OwpkaWZmIC1ydSBXZWJLaXRfNTUyMzMuMy9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9u
cy5oIEFwb2xsby9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCi0tLSBXZWJLaXRfNTUy
MzMuMy9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCTIwMDctMTItMjMgMTM6NDA6NDku
MDAwMDAwMDAwIC0wODAwCisrKyBBcG9sbG8vSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMu
aAkyMDA3LTA4LTIwIDE1OjE5OjI1LjAwMDAwMDAwMCAtMDcwMApAQCAtMTI0LDEyICsxMjQsMTkg
QEAKIAogI2Vsc2UKIAorI2lmIFBMQVRGT1JNKEFQT0xMTykgJiYgUExBVEZPUk0oV0lOX09TKQor
I2RlZmluZSBBU1NFUlQoYXNzZXJ0aW9uKSBkbyBcCisJaWYgKCEoYXNzZXJ0aW9uKSkgeyBcCisJ
X19hc20gaW50IDMgfSB3aGlsZSgwKQorI2Vsc2UKICNkZWZpbmUgQVNTRVJUKGFzc2VydGlvbikg
ZG8gXAogICAgIGlmICghKGFzc2VydGlvbikpIHsgXAogICAgICAgICBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgI2Fzc2Vy
dGlvbik7IFwKICAgICAgICAgQ1JBU0goKTsgXAogICAgIH0gXAogd2hpbGUgKDApCisjZW5kaWYK
KwogI2RlZmluZSBBU1NFUlRfV0lUSF9NRVNTQUdFKGFzc2VydGlvbiwgLi4uKSBkbyBcCiAgICAg
aWYgKCEoYXNzZXJ0aW9uKSkgeyBcCiAgICAgICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmVX
aXRoTWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3Nl
cnRpb24sIF9fVkFfQVJHU19fKTsgXAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>