<?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>106027</bug_id>
          
          <creation_ts>2013-01-03 12:13:15 -0800</creation_ts>
          <short_desc>CallLinkStatus should be aware of closure calls, and the DFG bytecode parser should use that as its sole internal notion of how to optimize calls</short_desc>
          <delta_ts>2013-02-08 05:24:33 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>799550</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-03 12:13:15 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799553</commentid>
    <comment_count>1</comment_count>
      <attachid>181200</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-03 12:15:44 -0800</bug_when>
    <thetext>Created attachment 181200
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799559</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 12:19:36 -0800</bug_when>
    <thetext>Attachment 181200 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/bytecode/CallLinkStatus.cpp:83:  Declaration has space between type name and &amp; in CallLinkStatus &amp;CallLinkStatus  [whitespace/declaration] [3]
Source/JavaScriptCore/bytecode/CallLinkStatus.h:58:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799578</commentid>
    <comment_count>3</comment_count>
      <attachid>181200</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-03 12:44:01 -0800</bug_when>
    <thetext>Comment on attachment 181200
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799579</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-03 12:44:34 -0800</bug_when>
    <thetext>(modulo style, of course)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799666</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-03 14:06:15 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/138737</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799673</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-03 14:15:00 -0800</bug_when>
    <thetext>This patch appears to have broken Windows builds:
http://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/41862

&gt;   Creating library C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\lib\JavaScriptCore.lib and object C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\lib\JavaScriptCore.exp
5&gt;CallLinkStatus.obj : error LNK2019: unresolved external symbol &quot;public: enum JSC::Intrinsic __thiscall JSC::ExecutableBase::intrinsic(void)const &quot; (?intrinsic@ExecutableBase@JSC@@QBE?AW4Intrinsic@2@XZ) referenced in function &quot;public: enum JSC::Intrinsic __thiscall JSC::ExecutableBase::intrinsicFor(enum JSC::CodeSpecializationKind)const &quot; (?intrinsicFor@ExecutableBase@JSC@@QBE?AW4Intrinsic@2@W4CodeSpecializationKind@2@@Z)
5&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin\JavaScriptCore.dll : fatal error LNK1120: 1 unresolved externals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799676</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-03 14:17:27 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; This patch appears to have broken Windows builds:
&gt; http://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/41862
&gt; 
&gt; &gt;   Creating library C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\lib\JavaScriptCore.lib and object C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\lib\JavaScriptCore.exp
&gt; 5&gt;CallLinkStatus.obj : error LNK2019: unresolved external symbol &quot;public: enum JSC::Intrinsic __thiscall JSC::ExecutableBase::intrinsic(void)const &quot; (?intrinsic@ExecutableBase@JSC@@QBE?AW4Intrinsic@2@XZ) referenced in function &quot;public: enum JSC::Intrinsic __thiscall JSC::ExecutableBase::intrinsicFor(enum JSC::CodeSpecializationKind)const &quot; (?intrinsicFor@ExecutableBase@JSC@@QBE?AW4Intrinsic@2@W4CodeSpecializationKind@2@@Z)
&gt; 5&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin\JavaScriptCore.dll : fatal error LNK1120: 1 unresolved externals

Build fix on the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799682</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-03 14:25:10 -0800</bug_when>
    <thetext>Build fix landed in http://trac.webkit.org/changeset/138741</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828465</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-02-08 05:24:33 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Build fix landed in http://trac.webkit.org/changeset/138741

And one more buildfix (!ENABLE_JIT case) landed in https://trac.webkit.org/changeset/141185/trunk/Source/JavaScriptCore/runtime/Executable.h</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181200</attachid>
            <date>2013-01-03 12:15:44 -0800</date>
            <delta_ts>2013-01-03 12:44:00 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>calllink.patch</filename>
            <type>text/plain</type>
            <size>25284</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4NzI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEzLTAxLTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q2FsbExpbmtTdGF0dXMgc2hvdWxkIGJlIGF3YXJlIG9mIGNsb3N1cmUgY2FsbHMsIGFuZCB0aGUg
REZHIGJ5dGVjb2RlIHBhcnNlciBzaG91bGQgdXNlIHRoYXQgaXMgaXRzIHNvbGUgaW50ZXJuYWwg
bm90aW9uIG9mIGhvdyB0byBvcHRpbWl6ZSBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBQcmV2aW91c2x5LCB0aGUgREZHIGJ5dGVj
b2RlIHBhcnNlciBoYWQgaXRzIG93biBpbnRlcm5hbCBub3Rpb24gb2YgZXhhY3RseSB3aGF0IENh
bGxMaW5rU3RhdHVzIHdhcworICAgICAgICBtZWFudCB0byBkbywgaW4gdGhlIGZvcm0gb2YgYSBD
YWxsVHlwZSwgZXhwZWN0ZWRGdW5jdGlvbiwgaW50cmluc2ljLCBldGMuIFRoaXMgY2hhbmdlIG1h
a2VzIENhbGxMaW5rU3RhdHVzCisgICAgICAgIHNtYXJ0IGVub3VnaCB0byBkbyBhbGwgb2YgdGhh
dCwgYW5kIGFsc28gZ2l2ZXMgaXQgdGhlIGFiaWxpdHkgdG8gdW5kZXJzdGFuZCBjbG9zdXJlIGNh
bGxzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0
YXR1czo6aW50cmluc2ljRm9yKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OnNldElz
UHJvdmVkKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OkNh
bGxMaW5rU3RhdHVzKToKKyAgICAgICAgKENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtTdGF0dXM6OnRha2VzU2xvd1BhdGgpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0
YXR1czo6aXNTZXQpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNDbG9zdXJlQ2Fs
bCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjYWxsVGFyZ2V0KToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtTdGF0dXM6OmV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6c3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzUHJv
dmVkKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNhbk9wdGltaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dmFsdWVPZkZ1bmN0aW9uQ29uc3RhbnQpOgorCiAyMDEzLTAx
LTAyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KIAogICAgICAg
ICBbTWluR1ctdzY0XSBDZW50cmFsaXplIHdvcmthcm91bmQgZm9yIHBvdygpIGltcGxlbWVudGF0
aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAJKHJldmlzaW9uIDEzODcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4LDY0IEBA
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5o
IgorI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK0Nh
bGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQorICAgIDogbV9jYWxs
VGFyZ2V0KHZhbHVlKQorICAgICwgbV9leGVjdXRhYmxlKDApCisgICAgLCBtX3N0cnVjdHVyZSgw
KQorICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICAsIG1faXNQcm92ZWQoZmFs
c2UpCit7CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBtX3N0cnVjdHVyZSA9IHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKTsK
KyAgICAKKyAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19p
bmZvKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4odmFsdWUuYXNDZWxsKCkpLT5leGVjdXRhYmxlKCk7Cit9CisKK0pTRnVuY3Rp
b24qIENhbGxMaW5rU3RhdHVzOjpmdW5jdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NhbGxU
YXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
CisgICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpz
X2luZm8pKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4ganNDYXN0PEpTRnVu
Y3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOworfQorCitJbnRlcm5hbEZ1bmN0aW9uKiBD
YWxsTGlua1N0YXR1czo6aW50ZXJuYWxGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Nh
bGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdldC5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgCisgICAgaWYgKCFtX2NhbGxUYXJnZXQuYXNDZWxsKCktPmluaGVyaXRzKCZJbnRlcm5hbEZ1
bmN0aW9uOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4ganND
YXN0PEludGVybmFsRnVuY3Rpb24qPihtX2NhbGxUYXJnZXQuYXNDZWxsKCkpOworfQorCitJbnRy
aW5zaWMgQ2FsbExpbmtTdGF0dXM6OmludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2V4ZWN1dGFibGUpCisgICAgICAgIHJldHVybiBO
b0ludHJpbnNpYzsKKyAgICAKKyAgICByZXR1cm4gbV9leGVjdXRhYmxlLT5pbnRyaW5zaWNGb3Io
a2luZCk7Cit9CisKK0NhbGxMaW5rU3RhdHVzICZDYWxsTGlua1N0YXR1czo6c2V0SXNQcm92ZWQo
Ym9vbCBpc1Byb3ZlZCkKK3sKKyAgICBtX2lzUHJvdmVkID0gaXNQcm92ZWQ7CisgICAgcmV0dXJu
ICp0aGlzOworfQorCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21M
TEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwpAQCAtMzksOSArOTQsOSBAQCBDYWxs
TGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyCiAgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVj
b2RlSW5kZXg7CiAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGluc3RydWN0
aW9uWzRdLnUuY2FsbExpbmtJbmZvOwogICAgIAotICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhj
YWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLmdldCgpLCBmYWxzZSwgZmFsc2UpOworICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLmdldCgpKTsK
ICNlbHNlCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlLCBmYWxzZSk7CisgICAg
cmV0dXJuIENhbGxMaW5rU3RhdHVzKCk7CiAjZW5kaWYKIH0KIApAQCAtNTQsMTggKzEwOSw0NCBA
QCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgICAgIHJldHVy
biBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogICAgIAog
ICAgIGlmIChwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkK
LSAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAgICAgICByZXR1cm4g
Q2FsbExpbmtTdGF0dXM6OnRha2VzU2xvd1BhdGgoKTsKICAgICAKICAgICBDYWxsTGlua0luZm8m
IGNhbGxMaW5rSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUlu
ZGV4KTsKKyAgICBpZiAoY2FsbExpbmtJbmZvLnN0dWIpCisgICAgICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cyhjYWxsTGlua0luZm8uc3R1Yi0+ZXhlY3V0YWJsZSgpLCBjYWxsTGlua0luZm8uc3R1
Yi0+c3RydWN0dXJlKCkpOworICAgIAogICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGNhbGxMaW5r
SW5mby5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0
dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7Ci0gICAg
Ci0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UsICEhY2FsbExpbmtJbmZv
LnN0dWIpOworCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCk7CiAjZWxzZQotICAg
IHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSwgZmFsc2UpOworICAgIHJldHVybiBDYWxs
TGlua1N0YXR1cygpOwogI2VuZGlmCiB9CiAKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkKK3sKKyAgICBpZiAoIWlzU2V0KCkpIHsKKyAgICAgICAgb3V0LnByaW50
KCJOb3QgU2V0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgQ29tbWFQcmlu
dGVyIGNvbW1hOworICAgIAorICAgIGlmIChtX2lzUHJvdmVkKQorICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJTdGF0aWNhbGx5IFByb3ZlZCIpOworICAgIAorICAgIGlmIChtX2NvdWxkVGFrZVNs
b3dQYXRoKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJDb3VsZCBUYWtlIFNsb3cgUGF0aCIp
OworICAgIAorICAgIGlmIChtX2NhbGxUYXJnZXQpCisgICAgICAgIG91dC5wcmludChjb21tYSwg
Iktub3duIHRhcmdldDogIiwgbV9jYWxsVGFyZ2V0KTsKKyAgICAKKyAgICBBU1NFUlQoISFtX2V4
ZWN1dGFibGUgPT0gISFtX3N0cnVjdHVyZSk7CisgICAgaWYgKG1fZXhlY3V0YWJsZSkKKyAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiRXhlY3V0YWJsZS9DYWxsSGFzaC9TdHJ1Y3R1cmU6ICIsIFJh
d1BvaW50ZXIobV9leGVjdXRhYmxlKSwgIi8iLCBtX2V4ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZv
ckNhbGwpLCAiLyIsIFJhd1BvaW50ZXIobV9zdHJ1Y3R1cmUpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5oCShyZXZpc2lvbiAxMzg3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNDQgKzI2LDc1IEBA
CiAjaWZuZGVmIENhbGxMaW5rU3RhdHVzX2gKICNkZWZpbmUgQ2FsbExpbmtTdGF0dXNfaAogCisj
aW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5o
IgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKwogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTRnVu
Y3Rpb247CiBjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBFeGVjdXRhYmxlQmFzZTsKK2NsYXNzIElu
dGVybmFsRnVuY3Rpb247CitjbGFzcyBKU0Z1bmN0aW9uOworY2xhc3MgU3RydWN0dXJlOwogCiBj
bGFzcyBDYWxsTGlua1N0YXR1cyB7CiBwdWJsaWM6CiAgICAgQ2FsbExpbmtTdGF0dXMoKQotICAg
ICAgICA6IG1fY2FsbFRhcmdldCgwKQorICAgICAgICA6IG1fZXhlY3V0YWJsZSgwKQorICAgICAg
ICAsIG1fc3RydWN0dXJlKDApCiAgICAgICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkK
LSAgICAgICAgLCBtX2lzQ2xvc3VyZUNhbGwoZmFsc2UpCisgICAgICAgICwgbV9pc1Byb3ZlZChm
YWxzZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyB0YWtl
c1Nsb3dQYXRoKCkKICAgICB7CisgICAgICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOworICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKLSAgICBDYWxsTGlua1N0YXR1cyhKU0Z1bmN0aW9uKiBjYWxsVGFy
Z2V0LCBib29sIGNvdWxkVGFrZVNsb3dQYXRoLCBib29sIGlzQ2xvc3VyZUNhbGwgPSBmYWxzZSkK
LSAgICAgICAgOiBtX2NhbGxUYXJnZXQoY2FsbFRhcmdldCkKLSAgICAgICAgLCBtX2NvdWxkVGFr
ZVNsb3dQYXRoKGNvdWxkVGFrZVNsb3dQYXRoKQotICAgICAgICAsIG1faXNDbG9zdXJlQ2FsbChp
c0Nsb3N1cmVDYWxsKQorICAgIGV4cGxpY2l0IENhbGxMaW5rU3RhdHVzKEpTVmFsdWUgdmFsdWUp
OworICAgIAorICAgIENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBtX2V4ZWN1dGFibGUoZXhlY3V0YWJsZSkK
KyAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCisgICAgICAgICwgbV9jb3VsZFRha2VT
bG93UGF0aChmYWxzZSkKKyAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQogICAgIHsKICAgICB9
CiAgICAgCisgICAgQ2FsbExpbmtTdGF0dXMmIHNldElzUHJvdmVkKGJvb2wpOworICAgIAogICAg
IHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1f
Y2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAgYm9vbCBpc1NldCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUgfHwgbV9jb3VsZFRha2VT
bG93UGF0aDsgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlz
U2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1
cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQotICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDbG9zdXJlQ2FsbDsgfQorICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNv
bnN0IHsgcmV0dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxUYXJn
ZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KKyAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbigpIGNvbnN0OworICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBj
b25zdDsKKyAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQp
IGNvbnN0OworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9leGVjdXRhYmxlOyB9CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3N0cnVjdHVyZTsgfQorICAgIGJvb2wgaXNQcm92ZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
UHJvdmVkOyB9CisgICAgYm9vbCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2NhbGxU
YXJnZXQgfHwgbV9leGVjdXRhYmxlKSAmJiAhbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAot
ICAgIEpTRnVuY3Rpb24qIGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7
IH0KKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKTsKICAgICAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgSlNGdW5jdGlvbiogbV9jYWxsVGFyZ2V0OworICAg
IEpTVmFsdWUgbV9jYWxsVGFyZ2V0OworICAgIEV4ZWN1dGFibGVCYXNlKiBtX2V4ZWN1dGFibGU7
CisgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1Bh
dGg7Ci0gICAgYm9vbCBtX2lzQ2xvc3VyZUNhbGw7CisgICAgYm9vbCBtX2lzUHJvdmVkOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTM4NzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyODMsMTE1ICsxMjgzLDc4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW50
ZXJwcmUKICAgICBBU1NFUlQoT1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9PSBPUENPREVfTEVOR1RI
KG9wX2NvbnN0cnVjdCkpOwogICAgIAogICAgIE5vZGVJbmRleCBjYWxsVGFyZ2V0ID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgIGVudW0gewotICAgICAgICBDb25z
dGFudEZ1bmN0aW9uLAotICAgICAgICBDb25zdGFudEludGVybmFsRnVuY3Rpb24sCi0gICAgICAg
IExpbmtlZEZ1bmN0aW9uLAotICAgICAgICBVbmtub3duRnVuY3Rpb24KLSAgICB9IGNhbGxUeXBl
OwotICAgICAgICAgICAgCi0gICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRleCk7CiAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19W
RVJCT1NFKQotICAgIGRhdGFMb2dGKCJGb3IgY2FsbCBhdCBAJWx1IGJjIyV1OiAiLCBtX2dyYXBo
LnNpemUoKSwgbV9jdXJyZW50SW5kZXgpOwotICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc1NldCgp
KSB7Ci0gICAgICAgIGlmIChjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpKQotICAg
ICAgICAgICAgZGF0YUxvZ0YoImNvdWxkIHRha2Ugc2xvdyBwYXRoLCAiKTsKLSAgICAgICAgZGF0
YUxvZ0YoInRhcmdldCA9ICVwXG4iLCBjYWxsTGlua1N0YXR1cy5jYWxsVGFyZ2V0KCkpOwotICAg
IH0gZWxzZQotICAgICAgICBkYXRhTG9nRigibm90IHNldC5cbiIpOwotI2VuZGlmCisgICAgQ2Fs
bExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXM7CisKKyAgICBpZiAobV9ncmFwaC5pc0NvbnN0YW50
KGNhbGxUYXJnZXQpKQorICAgICAgICBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzKG1f
Z3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoY2FsbFRhcmdldCkpLnNldElzUHJvdmVkKHRydWUpOwor
ICAgIGVsc2UKKyAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZvcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsK
ICAgICAKLSAgICBpZiAobV9ncmFwaC5pc0Z1bmN0aW9uQ29uc3RhbnQoY2FsbFRhcmdldCkpIHsK
LSAgICAgICAgY2FsbFR5cGUgPSBDb25zdGFudEZ1bmN0aW9uOwotI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIkNhbGwgYXQgW0AlbHUsIGJjIyV1XSBoYXMg
YSBmdW5jdGlvbiBjb25zdGFudDogJXAsIGV4ZWMgJXAuXG4iLAotICAgICAgICAgICAgICAgIG1f
Z3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwKLSAgICAgICAgICAgICAgICBtX2dyYXBoLnZh
bHVlT2ZGdW5jdGlvbkNvbnN0YW50KGNhbGxUYXJnZXQpLAotICAgICAgICAgICAgICAgIG1fZ3Jh
cGgudmFsdWVPZkZ1bmN0aW9uQ29uc3RhbnQoY2FsbFRhcmdldCktPmV4ZWN1dGFibGUoKSk7Ci0j
ZW5kaWYKLSAgICB9IGVsc2UgaWYgKG1fZ3JhcGguaXNJbnRlcm5hbEZ1bmN0aW9uQ29uc3RhbnQo
Y2FsbFRhcmdldCkpIHsKLSAgICAgICAgY2FsbFR5cGUgPSBDb25zdGFudEludGVybmFsRnVuY3Rp
b247Ci0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiQ2Fs
bCBhdCBbQCVsdSwgYmMjJXVdIGhhcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBjb25zdGFudDogJXAu
XG4iLAotICAgICAgICAgICAgICAgIG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwKLSAg
ICAgICAgICAgICAgICBtX2dyYXBoLnZhbHVlT2ZJbnRlcm5hbEZ1bmN0aW9uQ29uc3RhbnQoY2Fs
bFRhcmdldCkpOwotI2VuZGlmCi0gICAgfSBlbHNlIGlmIChjYWxsTGlua1N0YXR1cy5pc1NldCgp
ICYmICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpCi0gICAgICAgICAgICAgICAm
JiAhY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpIC8vIFdlIHdpbGwgZXZlbnR1YWxseSBv
cHRpbWl6ZSB0aGlzLCBJIHByb21pc2UuCi0gICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFj
a1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUp
KSB7Ci0gICAgICAgIGNhbGxUeXBlID0gTGlua2VkRnVuY3Rpb247Ci0jaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiQ2FsbCBhdCBbQCVsdSwgYmMjJXVdIGlz
IGxpbmtlZCB0bzogJXAsIGV4ZWMgJXAuXG4iLAotICAgICAgICAgICAgICAgIG1fZ3JhcGguc2l6
ZSgpLCBtX2N1cnJlbnRJbmRleCwgY2FsbExpbmtTdGF0dXMuY2FsbFRhcmdldCgpLAotICAgICAg
ICAgICAgICAgIGNhbGxMaW5rU3RhdHVzLmNhbGxUYXJnZXQoKS0+ZXhlY3V0YWJsZSgpKTsKLSNl
bmRpZgotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNhbGxUeXBlID0gVW5rbm93bkZ1bmN0aW9uOwog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIkNhbGwgYXQg
W0AlbHUsIGJjIyV1XSBpcyBoYXMgYW4gdW5rbm93biBvciBhbWJpZ3VvdXMgdGFyZ2V0LlxuIiwK
LSAgICAgICAgICAgICAgICBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgpOworICAgIGRh
dGFMb2coIkZvciBjYWxsIGF0IEAiLCBtX2dyYXBoLnNpemUoKSwgIiBiYyMiLCBtX2N1cnJlbnRJ
bmRleCwgIjogIiwgY2FsbExpbmtTdGF0dXMsICJcbiIpOwogI2VuZGlmCisgICAgCisgICAgaWYg
KCFjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CisgICAgICAgIC8vIE9kZGx5LCB0aGlz
IGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxscyB0aGF0IGJl
aGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQorICAgICAgICAvLyB0aGF0IHdlIGNh
bm5vdCBvcHRpbWl6ZSB0aGVtLgorICAgICAgICAKKyAgICAgICAgYWRkQ2FsbChpbnRlcnByZXRl
ciwgY3VycmVudEluc3RydWN0aW9uLCBvcCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
aWYgKGNhbGxUeXBlICE9IFVua25vd25GdW5jdGlvbikgewotICAgICAgICBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAg
ICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
OwotCi0gICAgICAgIC8vIERvIHdlIGhhdmUgYSByZXN1bHQ/Ci0gICAgICAgIGJvb2wgdXNlc1Jl
c3VsdCA9IGZhbHNlOwotICAgICAgICBpbnQgcmVzdWx0T3BlcmFuZCA9IDA7IC8vIG1ha2UgY29t
cGlsZXIgaGFwcHkKLSAgICAgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IG1fY3VycmVudEluZGV4
ICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIHB1dEluc3Ry
dWN0aW9uID0gY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsKLSAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IFNwZWNOb25lOwotICAgICAgICBpZiAo
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHB1dEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3Bf
Y2FsbF9wdXRfcmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHRPcGVyYW5kID0gcHV0SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgICAgICAgICAgdXNlc1Jlc3VsdCA9IHRydWU7Ci0gICAg
ICAgICAgICBtX2N1cnJlbnRQcm9maWxpbmdJbmRleCA9IG5leHRPZmZzZXQ7Ci0gICAgICAgICAg
ICBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwotICAgICAgICAgICAgbmV4dE9mZnNldCAr
PSBPUENPREVfTEVOR1RIKG9wX2NhbGxfcHV0X3Jlc3VsdCk7Ci0gICAgICAgIH0KKyAgICAKKyAg
ICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOworICAgIGludCByZWdpc3Rlck9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CiAKLSAgICAgICAgaWYgKGNhbGxUeXBlID09IENvbnN0YW50SW50ZXJuYWxG
dW5jdGlvbikgewotICAgICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlv
bih1c2VzUmVzdWx0LCByZXN1bHRPcGVyYW5kLCBtX2dyYXBoLnZhbHVlT2ZJbnRlcm5hbEZ1bmN0
aW9uQ29uc3RhbnQoY2FsbFRhcmdldCksIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcHJlZGljdGlvbiwga2luZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBDYW4gb25seSBoYW5kbGUgdGhpcyB1c2luZyB0
aGUgZ2VuZXJpYyBjYWxsIGhhbmRsZXIuCi0gICAgICAgICAgICBhZGRDYWxsKGludGVycHJldGVy
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wKTsKKyAgICAvLyBEbyB3ZSBoYXZlIGEgcmVzdWx0Pwor
ICAgIGJvb2wgdXNlc1Jlc3VsdCA9IGZhbHNlOworICAgIGludCByZXN1bHRPcGVyYW5kID0gMDsg
Ly8gbWFrZSBjb21waWxlciBoYXBweQorICAgIHVuc2lnbmVkIG5leHRPZmZzZXQgPSBtX2N1cnJl
bnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3BfY2FsbCk7CisgICAgSW5zdHJ1Y3Rpb24qIHB1dElu
c3RydWN0aW9uID0gY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsK
KyAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gU3BlY05vbmU7CisgICAgaWYgKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChwdXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2NhbGxf
cHV0X3Jlc3VsdCkgeworICAgICAgICByZXN1bHRPcGVyYW5kID0gcHV0SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgICAgICB1c2VzUmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgbV9jdXJyZW50
UHJvZmlsaW5nSW5kZXggPSBuZXh0T2Zmc2V0OworICAgICAgICBwcmVkaWN0aW9uID0gZ2V0UHJl
ZGljdGlvbigpOworICAgICAgICBuZXh0T2Zmc2V0ICs9IE9QQ09ERV9MRU5HVEgob3BfY2FsbF9w
dXRfcmVzdWx0KTsKKyAgICB9CisKKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24g
PSBjYWxsTGlua1N0YXR1cy5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgaWYgKGhhbmRs
ZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbih1c2VzUmVzdWx0LCByZXN1bHRPcGVyYW5kLCBmdW5j
dGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0
aW9uLCBraW5kKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIC8vIENhbiBvbmx5IGhhbmRsZSB0aGlzIHVzaW5nIHRoZSBnZW5lcmljIGNhbGwg
aGFuZGxlci4KKyAgICAgICAgYWRkQ2FsbChpbnRlcnByZXRlciwgY3VycmVudEluc3RydWN0aW9u
LCBvcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAotICAgICAgICBKU0Z1bmN0
aW9uKiBleHBlY3RlZEZ1bmN0aW9uOwotICAgICAgICBJbnRyaW5zaWMgaW50cmluc2ljOwotICAg
ICAgICBib29sIGNlcnRhaW5BYm91dEV4cGVjdGVkRnVuY3Rpb247Ci0gICAgICAgIGlmIChjYWxs
VHlwZSA9PSBDb25zdGFudEZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBleHBlY3RlZEZ1bmN0aW9u
ID0gbV9ncmFwaC52YWx1ZU9mRnVuY3Rpb25Db25zdGFudChjYWxsVGFyZ2V0KTsKLSAgICAgICAg
ICAgIGludHJpbnNpYyA9IGV4cGVjdGVkRnVuY3Rpb24tPmV4ZWN1dGFibGUoKS0+aW50cmluc2lj
Rm9yKGtpbmQpOwotICAgICAgICAgICAgY2VydGFpbkFib3V0RXhwZWN0ZWRGdW5jdGlvbiA9IHRy
dWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gTGlu
a2VkRnVuY3Rpb24pOwotICAgICAgICAgICAgZXhwZWN0ZWRGdW5jdGlvbiA9IGNhbGxMaW5rU3Rh
dHVzLmNhbGxUYXJnZXQoKTsKLSAgICAgICAgICAgIGludHJpbnNpYyA9IGV4cGVjdGVkRnVuY3Rp
b24tPmV4ZWN1dGFibGUoKS0+aW50cmluc2ljRm9yKGtpbmQpOwotICAgICAgICAgICAgY2VydGFp
bkFib3V0RXhwZWN0ZWRGdW5jdGlvbiA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAgICAgICAgICAg
IGlmICghY2VydGFpbkFib3V0RXhwZWN0ZWRGdW5jdGlvbikKLSAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25DaGVjayhleHBlY3RlZEZ1bmN0aW9uLCBjYWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNl
dCwga2luZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWMo
dXNlc1Jlc3VsdCwgcmVzdWx0T3BlcmFuZCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjZXJ0YWluQWJvdXRFeHBlY3RlZEZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIE5lZWQgdG8ga2VlcCB0aGUgY2FsbCB0YXJnZXQgYWxpdmUgZm9yIE9TUi4gV2UgY291bGQg
ZWFzaWx5IG9wdGltaXplIHRoaXMgb3V0IGlmIHdlIHdhbnRlZAotICAgICAgICAgICAgICAgICAg
ICAvLyB0bywgc2luY2UgYXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgdGhlIGNhbGwgdGFyZ2V0
IGlzIGEgY29uc3RhbnQuIEl0J3MganVzdCB0aGF0IE9TUiBpc24ndAotICAgICAgICAgICAgICAg
ICAgICAvLyBzbWFydCBlbm91Z2ggdG8gZmlndXJlIHRoYXQgb3V0LCBzaW5jZSBpdCBkb2Vzbid0
IHVuZGVyc3RhbmQgQ2hlY2tGdW5jdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIEpTRnVuY3Rpb24qIGV4cGVjdGVkRnVu
Y3Rpb24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpOworICAgIGlmICghZXhwZWN0ZWRGdW5j
dGlvbikgeworICAgICAgICAvLyBGb3Igbm93IHdlIGhhdmUgbm8gd2F5IG9mIHJlYXNvbmluZyBh
Ym91dCB3aGF0IGl0IG1lYW5zIHRvIG5vdCBoYXZlIGEgc3BlY2lmaWMgZnVuY3Rpb24uIFRoaXMg
d2lsbAorICAgICAgICAvLyBjaGFuZ2Ugc29vbiwgdGhvdWdoLgorICAgICAgICAKKyAgICAgICAg
YWRkQ2FsbChpbnRlcnByZXRlciwgY3VycmVudEluc3RydWN0aW9uLCBvcCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgICAgIAorICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsTGlu
a1N0YXR1cy5pbnRyaW5zaWNGb3Ioa2luZCk7CisgICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJp
bnNpYykgeworICAgICAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpCisgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25DaGVjayhleHBlY3RlZEZ1bmN0aW9uLCBjYWxsVGFyZ2V0LCByZWdp
c3Rlck9mZnNldCwga2luZCk7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKGhhbmRsZUludHJp
bnNpYyh1c2VzUmVzdWx0LCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbikpIHsKKyAgICAgICAgICAg
IGlmICghY2FsbExpbmtTdGF0dXMuaXNQcm92ZWQoKSkgeworICAgICAgICAgICAgICAgIC8vIE5l
ZWQgdG8ga2VlcCB0aGUgY2FsbCB0YXJnZXQgYWxpdmUgZm9yIE9TUi4gV2UgY291bGQgZWFzaWx5
IG9wdGltaXplIHRoaXMgb3V0IGlmIHdlIHdhbnRlZAorICAgICAgICAgICAgICAgIC8vIHRvLCBz
aW5jZSBhdCB0aGlzIHBvaW50IHdlIGtub3cgdGhhdCB0aGUgY2FsbCB0YXJnZXQgaXMgYSBjb25z
dGFudC4gSXQncyBqdXN0IHRoYXQgT1NSIGlzbid0CisgICAgICAgICAgICAgICAgLy8gc21hcnQg
ZW5vdWdoIHRvIGZpZ3VyZSB0aGF0IG91dCwgc2luY2UgaXQgZG9lc24ndCB1bmRlcnN0YW5kIENo
ZWNrRnVuY3Rpb24uCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFy
Z2V0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVJbmxpbmluZyh1
c2VzUmVzdWx0LCBjYWxsVGFyZ2V0LCByZXN1bHRPcGVyYW5kLCBjZXJ0YWluQWJvdXRFeHBlY3Rl
ZEZ1bmN0aW9uLCBleHBlY3RlZEZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQpKQorICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoaGFuZGxl
SW5saW5pbmcodXNlc1Jlc3VsdCwgY2FsbFRhcmdldCwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtT
dGF0dXMuaXNQcm92ZWQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kKSkKKyAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIGFkZENhbGwoaW50ZXJwcmV0ZXIsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3Ap
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTM4
NzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzEsMTAgKzMzMSw2IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGZ1bmN0aW9u
KTsKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pOwogICAgIH0K
LSAgICBJbnRlcm5hbEZ1bmN0aW9uKiB2YWx1ZU9mSW50ZXJuYWxGdW5jdGlvbkNvbnN0YW50KE5v
ZGVJbmRleCBub2RlSW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4ganNDYXN0PEludGVybmFs
RnVuY3Rpb24qPih2YWx1ZU9mSlNDb25zdGFudChub2RlSW5kZXgpLmFzQ2VsbCgpKTsKLSAgICB9
CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciAqb3BOYW1lKE5vZGVUeXBlKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzg3MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQ2FsbExpbmtTdGF0dXMgc2hvdWxkIGJlIGF3YXJlIG9mIGNsb3N1
cmUgY2FsbHMsIGFuZCB0aGUgREZHIGJ5dGVjb2RlIHBhcnNlciBzaG91bGQgdXNlIHRoYXQgaXMg
aXRzIHNvbGUgaW50ZXJuYWwgbm90aW9uIG9mIGhvdyB0byBvcHRpbWl6ZSBjYWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MDI3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBJIGdvdCB0
aXJlZCBvZiB0aGUgdmFyaW91cyBpZGlvbXMgZm9yIHByaW50aW5nIGEgbGlzdCBvZiB0aGluZ3Mg
d2l0aCBjb21tYSBpbiBiZXR3ZWVuLCBzbyBJIHdyb3RlIGEgaGVscGVyLgorCisgICAgICAgICog
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NvbW1hUHJpbnRl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChDb21tYVByaW50ZXIpOgorICAg
ICAgICAoV1RGOjpDb21tYVByaW50ZXI6OkNvbW1hUHJpbnRlcik6CisgICAgICAgIChXVEY6OkNv
bW1hUHJpbnRlcjo6ZHVtcCk6CisKIDIwMTMtMDEtMDIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5AZGlnaWEuY29tPgogCiAgICAgICAgIFtNaW5HVy13NjRdIENlbnRyYWxpemUgd29y
a2Fyb3VuZCBmb3IgcG93KCkgaW1wbGVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NzIzKQorKysgU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogCQkwRjlEMzM2MTE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1QzE2NURC
QTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi87IH07CiAJCTBGOUQzMzYyMTY1REJB
NzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJl
YW0uY3BwICovOyB9OwogCQkwRjlEMzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVF
MTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovOyB9OworCQkwRkM0RURFNjE2OTYx
NDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmlu
dGVyLmggKi87IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFD
NDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CiAJCTBGRERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQ
cmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkREQkZBNTE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwICov
OyB9OwogCQkwRkREQkZBODE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERCRkE2MTY2
NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5oICovOyB9OwpAQCAtMzI2LDYgKzMy
Nyw3IEBACiAJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVByaW50U3RyZWFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmlu
dFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmludFN0
cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzVFMTY1REJBNzMw
MDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcmludFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkM0RURFNTE2
OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbW1hUHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRERCRkE1MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdQcmludFN0cmVh
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRERCRkE2MTY2NkRGQTMwMEM1
NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJpbmdQcmludFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Njk5LDYgKzcwMSw3IEBACiAJCQkJRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRl
ci5oICovLAogCQkJCUE4QTQ3MjZBMTUxQTgyNUEwMDQxMjNGRiAvKiBDaGVja2VkQXJpdGhtZXRp
Yy5oICovLAogCQkJCUE4QTQ3MjZCMTUxQTgyNUEwMDQxMjNGRiAvKiBDaGVja2VkQm9vbGVhbi5o
ICovLAorCQkJCTBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCAqLywK
IAkJCQlBOEE0NzI3MDE1MUE4MjVBMDA0MTIzRkYgLyogQ29tcGlsZXIuaCAqLywKIAkJCQlBOEE0
NzI3MTE1MUE4MjVBMDA0MTIzRkYgLyogQ29tcGxleC5oICovLAogCQkJCUE4QTQ3MjczMTUxQTgy
NUEwMDQxMjNGRiAvKiBDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAgKi8sCkBAIC0x
MjQ4LDYgKzEyNTEsNyBAQAogCQkJCTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJh
d1BvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRERCRkE4MTY2NkRGQTMwMEM1NUZFRiAv
KiBTdHJpbmdQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDNEVERTYxNjk2MTQ5
NjAwRjY1MDQxIC8qIENvbW1hUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9Db21tYVByaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Db21t
YVByaW50ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0NvbW1hUHJpbnRlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29tbWFQcmludGVyX2gKKyNkZWZpbmUgQ29t
bWFQcmludGVyX2gKKworI2luY2x1ZGUgIlByaW50U3RyZWFtLmgiCisKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBDb21tYVByaW50ZXIgeworcHVibGljOgorICAgIENvbW1hUHJpbnRlcihjb25z
dCBjaGFyKiBjb21tYSA9ICIsICIpCisgICAgICAgIDogbV9jb21tYShjb21tYSkKKyAgICAgICAg
LCBtX2lzRmlyc3QodHJ1ZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNGaXJzdCkgeworICAg
ICAgICAgICAgbV9pc0ZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIG91dC5wcmludChtX2NvbW1hKTsKKyAgICB9CisgICAgCitw
cml2YXRlOgorICAgIGNvbnN0IGNoYXIqIG1fY29tbWE7CisgICAgbXV0YWJsZSBib29sIG1faXNG
aXJzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkNvbW1hUHJpbnRl
cjsKKworI2VuZGlmIC8vIENvbW1hUHJpbnRlcl9oCisK
</data>
<flag name="review"
          id="198735"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>