<?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>105900</bug_id>
          
          <creation_ts>2013-01-01 14:20:22 -0800</creation_ts>
          <short_desc>Baseline JIT should have closure call caching</short_desc>
          <delta_ts>2013-03-07 09:20:16 -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>
          <dependson>105930</dependson>
    
    <dependson>111704</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>798465</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-01 14:20:22 -0800</bug_when>
    <thetext>This is not meant to be an optimization by itself, but rather, it will enable the DFG inliner to see when a call was a closure call due to the profiling that baseline closure call caching will implicitly give us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798467</commentid>
    <comment_count>1</comment_count>
      <attachid>180997</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-01 14:21:47 -0800</bug_when>
    <thetext>Created attachment 180997
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798468</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-01 14:24:46 -0800</bug_when>
    <thetext>Attachment 180997 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/jit/JIT.cpp:874:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1319:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 12 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>798479</commentid>
    <comment_count>3</comment_count>
      <attachid>180997</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-01 16:00:40 -0800</bug_when>
    <thetext>Comment on attachment 180997
the patch

Attachment 180997 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15638244

New failing tests:
inspector/debugger/script-formatter.html
jquery/css.html
fast/sub-pixel/sub-pixel-accumulates-to-layers.html
fast/sub-pixel/sub-pixel-iframe-copy-on-scroll.html
fast/sub-pixel/transformed-iframe-copy-on-scroll.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798502</commentid>
    <comment_count>4</comment_count>
      <attachid>180997</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-01 17:04:48 -0800</bug_when>
    <thetext>Comment on attachment 180997
the patch

Attachment 180997 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15625357

New failing tests:
inspector/debugger/script-formatter.html
jquery/css.html
fast/sub-pixel/sub-pixel-accumulates-to-layers.html
fast/sub-pixel/sub-pixel-iframe-copy-on-scroll.html
fast/sub-pixel/transformed-iframe-copy-on-scroll.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798509</commentid>
    <comment_count>5</comment_count>
      <attachid>180997</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-01-01 17:50:29 -0800</bug_when>
    <thetext>Comment on attachment 180997
the patch

Seems to be a fair bit of duplication between the 32_64 &amp; 64 privateCompileClosureCall implementations, might be worth considering merging.
r+ assuming that the test failures aren&apos;t due to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798529</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-01 20:31:32 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 180997 [details])
&gt; Seems to be a fair bit of duplication between the 32_64 &amp; 64 privateCompileClosureCall implementations, might be worth considering merging.
&gt; r+ assuming that the test failures aren&apos;t due to this.

Thanks!

It appears that this was a real regression, which I&apos;ve fixed by having cti_vm_lazyLinkClosureCall use generatedJITCodeWithArityCheck rather than generatedJITCode if there is an arity mismatch.  This is a one-line change from the patch you reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798553</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-02 00:50:10 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/138609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798580</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-01-02 01:58:07 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Landed in http://trac.webkit.org/changeset/138609

Buildfixes landed in https://trac.webkit.org/changeset/138610 and  https://trac.webkit.org/changeset/138612</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180997</attachid>
            <date>2013-01-01 14:21:47 -0800</date>
            <delta_ts>2013-01-01 17:50:29 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>closure.patch</filename>
            <type>text/plain</type>
            <size>22606</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4NjAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDEzLTAxLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QmFzZWxpbmUgSklUIHNob3VsZCBoYXZlIGNsb3N1cmUgY2FsbCBjYWNoaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU5MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgbm90
IGEgc3BlZWQtdXAgYnkgaXRzZWxmLCBidXQgaXMgbWVhbnQgdG8gYWxsb3cgdGhlIERGRyBpbmxp
bmVyIHRvCisgICAgICAgIGFjY3VyYXRlbHkgZGlzY2VybiBiZXR3ZWVuIGNsb3N1cmUgY2FsbHMg
YW5kIG5vbi1jbG9zdXJlIGNhbGxzLCBzbyB0aGF0IGl0IGNhbgorICAgICAgICBkbyBjbG9zdXJl
IGNhbGwgaW5saW5pbmcgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9t
TExJbnQpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtT
dGF0dXM6OkNhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
Q2xvc3VyZUNhbGwpOgorICAgICAgICAoQ2FsbExpbmtTdGF0dXMpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNhbGwpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmtTbG93Q2FsbCk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZUNsb3N1cmVDYWxsKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5oOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGxHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmg6Cisg
ICAgICAgIChKU0MpOgorCiAyMDEyLTEyLTI3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgT25lIG1vcmUgdW5yZXZpd2VkIGhvbGlkYXkgTUlQUyBhbmQg
U0g0IGJ1aWxkZml4ZXMgYWZ0ZXIgcjEzODUxNi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTM4NjAxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksOSArMzksOSBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZyCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CiAgICAgTExJbnRDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGluc3RydWN0aW9uWzRdLnUuY2FsbExpbmtJbmZvOwog
ICAgIAotICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2Fs
bGVlLmdldCgpLCBmYWxzZSk7CisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5m
by0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlLCBmYWxzZSk7CiAjZWxzZQotICAgIHJldHVy
biBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSk7CisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAs
IGZhbHNlLCBmYWxzZSk7CiAjZW5kaWYKIH0KIApAQCAtNTYsMTMgKzU2LDE0IEBAIENhbGxMaW5r
U3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICBpZiAocHJvZmlsZWRCbG9jay0+
Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cygwLCB0cnVlKTsKICAgICAKLSAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxl
ZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0
KCk7CisgICAgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRD
YWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CisgICAgSlNGdW5jdGlvbiogdGFyZ2V0ID0gY2Fs
bExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmdldCgpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAg
ICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsK
ICAgICAKLSAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LCBmYWxzZSk7CisgICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UsICEhY2FsbExpbmtJbmZvLnN0dWIpOwog
I2Vsc2UKLSAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOworICAgIHJldHVybiBD
YWxsTGlua1N0YXR1cygwLCBmYWxzZSwgZmFsc2UpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lv
biAxMzg2MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDE0IEBAIHB1YmxpYzoKICAgICBDYWxs
TGlua1N0YXR1cygpCiAgICAgICAgIDogbV9jYWxsVGFyZ2V0KDApCiAgICAgICAgICwgbV9jb3Vs
ZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICAgICAgLCBtX2lzQ2xvc3VyZUNhbGwoZmFsc2UpCiAg
ICAgewogICAgIH0KICAgICAKLSAgICBDYWxsTGlua1N0YXR1cyhKU0Z1bmN0aW9uKiBjYWxsVGFy
Z2V0LCBib29sIGNvdWxkVGFrZVNsb3dQYXRoKQorICAgIENhbGxMaW5rU3RhdHVzKEpTRnVuY3Rp
b24qIGNhbGxUYXJnZXQsIGJvb2wgY291bGRUYWtlU2xvd1BhdGgsIGJvb2wgaXNDbG9zdXJlQ2Fs
bCA9IGZhbHNlKQogICAgICAgICA6IG1fY2FsbFRhcmdldChjYWxsVGFyZ2V0KQogICAgICAgICAs
IG1fY291bGRUYWtlU2xvd1BhdGgoY291bGRUYWtlU2xvd1BhdGgpCisgICAgICAgICwgbV9pc0Ns
b3N1cmVDYWxsKGlzQ2xvc3VyZUNhbGwpCiAgICAgewogICAgIH0KICAgICAKQEAgLTUyLDYgKzU0
LDcgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0
KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNDbG9zdXJlQ2FsbDsgfQogICAgIAogICAgIEpTRnVuY3Rpb24qIGNhbGxUYXJn
ZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KICAgICAKQEAgLTYwLDYgKzYzLDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9v
bCBtX2NvdWxkVGFrZVNsb3dQYXRoOworICAgIGJvb2wgbV9pc0Nsb3N1cmVDYWxsOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTM4NjAxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEzMTYsNiArMTMxNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwo
SW50ZXJwcmUKICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhbHVlT2ZJbnRlcm5hbEZ1bmN0aW9u
Q29uc3RhbnQoY2FsbFRhcmdldCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChjYWxsTGlua1N0
YXR1cy5pc1NldCgpICYmICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpCisgICAg
ICAgICAgICAgICAmJiAhY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpIC8vIFdlIHdpbGwg
ZXZlbnR1YWxseSBvcHRpbWl6ZSB0aGlzLCBJIHByb21pc2UuCiAgICAgICAgICAgICAgICAmJiAh
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgQmFkQ2FjaGUpKSB7CiAgICAgICAgIGNhbGxUeXBlID0gTGlua2VkRnVuY3Rpb247CiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAkocmV2aXNpb24gMTM4NjAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NzAsNiArODcwLDEzIEBA
IHZvaWQgSklUOjpsaW5rRm9yKEpTRnVuY3Rpb24qIGNhbGxlZSwgQ28KIAogICAgIC8vIFBhdGNo
IHRoZSBzbG93IHBhdGNoIHNvIHdlIGRvIG5vdCBjb250aW51ZSB0byB0cnkgdG8gbGluay4KICAg
ICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZv
LT5jYWxsVHlwZSA9PSBDYWxsTGlua0luZm86OkNhbGwKKyAgICAgICAgICAgICAgIHx8IGNhbGxM
aW5rSW5mby0+Y2FsbFR5cGUgPT0gQ2FsbExpbmtJbmZvOjpDYWxsVmFyYXJncyk7CisgICAgICAg
IGlmIChjYWxsTGlua0luZm8tPmNhbGxUeXBlID09IENhbGxMaW5rSW5mbzo6Q2FsbCkgeworICAg
ICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24sIGdsb2JhbERhdGEtPmdldENUSVN0dWIobGlua0Nsb3N1cmVDYWxsR2VuZXJhdG9yKS5j
b2RlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGdsb2JhbERh
dGEtPmdldENUSVN0dWIodmlydHVhbENhbGxHZW5lcmF0b3IpLmNvZGUoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC04NzgsNiArODg1LDEzIEBAIHZvaWQgSklUOjpsaW5rRm9yKEpTRnVu
Y3Rpb24qIGNhbGxlZSwgQ28KICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8t
PmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ29uc3Ry
dWN0R2VuZXJhdG9yKS5jb2RlKCkpOwogfQogCit2b2lkIEpJVDo6bGlua1Nsb3dDYWxsKENvZGVC
bG9jayogY2FsbGVyQ29kZUJsb2NrLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykKK3sKKyAg
ICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2NrKTsKKworICAgIHJl
cGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjYWxs
ZXJDb2RlQmxvY2stPmdsb2JhbERhdGEoKS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ2FsbEdlbmVyYXRv
cikuY29kZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMzg2MDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMDQsNiArMzA0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gSklUKGdsb2JhbERhdGEsIGNvZGVCbG9jaykucHJpdmF0ZUNvbXBpbGUoZnVuY3Rp
b25FbnRyeUFyaXR5Q2hlY2ssIGVmZm9ydCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHN0YXRpYyB2b2lkIGNvbXBpbGVDbG9zdXJlQ2FsbChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywg
Q29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIFN0cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUs
IEV4ZWN1dGFibGVCYXNlKiBleHBlY3RlZEV4ZWN1dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjb2RlUHRyKQorICAgICAgICB7CisgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNh
bGxlckNvZGVCbG9jayk7CisgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IGNhbGxM
aW5rSW5mby0+Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgaml0LnByaXZh
dGVDb21waWxlQ2xvc3VyZUNhbGwoY2FsbExpbmtJbmZvLCBjYWxsZWVDb2RlQmxvY2ssIGV4cGVj
dGVkU3RydWN0dXJlLCBleHBlY3RlZEV4ZWN1dGFibGUsIGNvZGVQdHIpOworICAgICAgICB9CiAK
ICAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQcm90byhKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CkBAIC0zODgsNiArMzk1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdm9pZCBsaW5rRm9yKEpTRnVu
Y3Rpb24qIGNhbGxlZSwgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2ssIENvZGVCbG9jayogY2Fs
bGVlQ29kZUJsb2NrLCBDb2RlUHRyLCBDYWxsTGlua0luZm8qLCBKU0dsb2JhbERhdGEqLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgc3RhdGljIHZvaWQgbGlua1Nsb3dDYWxsKENv
ZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrLCBDYWxsTGlua0luZm8qKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIEpJVChKU0dsb2JhbERhdGEqLCBDb2RlQmxvY2sqID0gMCk7CkBAIC0zOTcsNiAr
NDA1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKTsKICAgICAgICAgSklUQ29kZSBwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlv
bkVudHJ5QXJpdHlDaGVjaywgSklUQ29tcGlsYXRpb25FZmZvcnQpOwogICAgICAgICAKKyAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGxMaW5rSW5mbyosIENvZGVCbG9j
ayogY2FsbGVlQ29kZUJsb2NrLCBTdHJ1Y3R1cmUqLCBFeGVjdXRhYmxlQmFzZSosIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cik7CisgICAgICAgIAogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIsIENhbGxGcmFtZSop
OwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUq
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0KTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xp
c3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBp
bnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBDYWxsRnJhbWUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwz
Ml82NC5jcHAJKHJldmlzaW9uIDEzODYwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IkpJVFN0dWJDYWxsLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5o
IgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogCkBAIC0zMDIsNiArMzAzLDUyIEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQKICAgICBzYW1wbGVDb2RlQmxvY2so
bV9jb2RlQmxvY2spOwogfQogCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbChD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIFN0
cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUsIEV4ZWN1dGFibGVCYXNlKiBleHBlY3RlZEV4ZWN1
dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyKQoreworICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKKworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRTdHJ1Y3R1cmUpKSk7CisgICAgc2xvd0Nhc2Vz
LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3RlZEV4ZWN1dGFibGUpKSk7
CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNj
b3BlQ2hhaW4oKSksIHJlZ1QxKTsKKyAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJl
Z1QxLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKKyAgICAKKyAgICBDYWxsIGNhbGwgPSBuZWFyQ2Fs
bCgpOworICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAKKyAgICBzbG93Q2FzZXMubGluayh0
aGlzKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSksIHJlZ1QyKTsKKyAgICByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihyZWdUMik7CisgICAgSnVtcCBzbG93ID0ganVtcCgpOworICAgIAor
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fZ2xvYmFsRGF0YSwgdGhpcywgbV9jb2RlQmxv
Y2spOworICAgIAorICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHIoY29kZVB0
ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxs
TGlua0luZm8tPmhvdFBhdGhPdGhlci5sYWJlbEF0T2Zmc2V0KDApKTsKKyAgICBwYXRjaEJ1ZmZl
ci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKG1fZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1Yih2
aXJ0dWFsQ2FsbEdlbmVyYXRvcikuY29kZSgpKSk7CisgICAgCisgICAgUmVmUHRyPENsb3N1cmVD
YWxsU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lID0gYWRvcHRSZWYobmV3IENsb3N1cmVDYWxsU3R1
YlJvdXRpbmUoCisgICAgICAgIEZJTkFMSVpFX0NPREUoCisgICAgICAgICAgICBwYXRjaEJ1ZmZl
ciwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgY2xvc3VyZSBjYWxsIHN0dWIgZm9yICVzLCByZXR1
cm4gcG9pbnQgJXAsIHRhcmdldCAlcCAoJXMpIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmco
Km1fY29kZUJsb2NrKS5kYXRhKCksCisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5ob3RQ
YXRoT3RoZXIubGFiZWxBdE9mZnNldCgwKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICAg
ICAgICAgIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAgICAgICAgICAgICAgICB0b0NT
dHJpbmcoKmNhbGxlZUNvZGVCbG9jaykuZGF0YSgpKSksCisgICAgICAgICptX2dsb2JhbERhdGEs
IG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUsIGV4cGVj
dGVkRXhlY3V0YWJsZSwKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKSk7CisgICAg
CisgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKG1fY29kZUJsb2NrKTsKKyAgICAKKyAg
ICByZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKKyAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6
c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoY2FsbExpbmtJbmZvLT5ob3RQYXRo
QmVnaW4pLAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS0+Y29kZSgpLmNv
ZGUoKSkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+Y2FsbFJldHVy
bkxvY2F0aW9uLCBtX2dsb2JhbERhdGEtPmdldENUSVN0dWIodmlydHVhbENhbGxHZW5lcmF0b3Ip
LmNvZGUoKSk7CisgICAgCisgICAgY2FsbExpbmtJbmZvLT5zdHViID0gc3R1YlJvdXRpbmUucmVs
ZWFzZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVF
MzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9u
IDEzODYwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM2LDggKzM2LDEwIEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlJlcGF0
Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdU
b29sLmgiCisjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAKICNpZm5kZWYgTkRFQlVHCiAj
aW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIyMSw2ICsyMjMsNTIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGxTbG93Q2FzZShPcGNvZGVJRAogICAgIHNhbXBsZUNvZGVCbG9jayhtX2NvZGVCbG9jayk7
CiB9CiAKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9jaywgU3RydWN0dXJlKiBleHBl
Y3RlZFN0cnVjdHVyZSwgRXhlY3V0YWJsZUJhc2UqIGV4cGVjdGVkRXhlY3V0YWJsZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIpCit7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOworICAg
IAorICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCwgdGFn
TWFza1JlZ2lzdGVyKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KGV4cGVjdGVkU3RydWN0dXJlKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSks
IFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRFeGVjdXRhYmxlKSkpOworICAgIAorICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMSk7
CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBKU1N0YWNrOjpTY29wZUNoYWlu
KTsKKyAgICAKKyAgICBDYWxsIGNhbGwgPSBuZWFyQ2FsbCgpOworICAgIEp1bXAgZG9uZSA9IGp1
bXAoKTsKKyAgICAKKyAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKKyAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3Mo
KSksIHJlZ1QyKTsKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMik7
CisgICAgSnVtcCBzbG93ID0ganVtcCgpOworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKm1fZ2xvYmFsRGF0YSwgdGhpcywgbV9jb2RlQmxvY2spOworICAgIAorICAgIHBhdGNoQnVm
ZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHIoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7
CisgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8tPmhvdFBhdGhPdGhlci5s
YWJlbEF0T2Zmc2V0KDApKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlv
bkxhYmVsKG1fZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ2FsbEdlbmVyYXRvcikuY29k
ZSgpKSk7CisgICAgCisgICAgUmVmUHRyPENsb3N1cmVDYWxsU3R1YlJvdXRpbmU+IHN0dWJSb3V0
aW5lID0gYWRvcHRSZWYobmV3IENsb3N1cmVDYWxsU3R1YlJvdXRpbmUoCisgICAgICAgIEZJTkFM
SVpFX0NPREUoCisgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAgICAgICgiQmFzZWxp
bmUgY2xvc3VyZSBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAsIHRhcmdldCAlcCAo
JXMpIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksCisg
ICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5ob3RQYXRoT3RoZXIubGFiZWxBdE9mZnNldCgw
KS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICAgICAgICAgIGNvZGVQdHIuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKmNhbGxlZUNvZGVCbG9jayku
ZGF0YSgpKSksCisgICAgICAgICptX2dsb2JhbERhdGEsIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUsIGV4cGVjdGVkRXhlY3V0YWJsZSwKKyAgICAgICAg
Y2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKSk7CisgICAgCisgICAgUmVwYXRjaEJ1ZmZlciByZXBh
dGNoQnVmZmVyKG1fY29kZUJsb2NrKTsKKyAgICAKKyAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VX
aXRoSnVtcCgKKyAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRj
aE9uUmVnaXN0ZXIoY2FsbExpbmtJbmZvLT5ob3RQYXRoQmVnaW4pLAorICAgICAgICBDb2RlTG9j
YXRpb25MYWJlbChzdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIHJlcGF0Y2hCdWZm
ZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBtX2dsb2JhbERhdGEt
PmdldENUSVN0dWIodmlydHVhbENhbGxHZW5lcmF0b3IpLmNvZGUoKSk7CisgICAgCisgICAgY2Fs
bExpbmtJbmZvLT5zdHViID0gc3R1YlJvdXRpbmUucmVsZWFzZSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTM4NjAxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNo
IDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZCAyMDEwLCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTIx
MDksNiArMjEwOSw2NiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgdm1fbGF6eUxpbmtD
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZt
X2xhenlMaW5rQ2xvc3VyZUNhbGwpCit7CisgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNr
RnJhbWUpOworCisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZTsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y2Fs
bGVyRnJhbWUoKS0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0g
Y2FsbGVyQ29kZUJsb2NrLT5nbG9iYWxEYXRhKCk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gPSAmY2FsbGVyQ29kZUJsb2NrLT5nZXRDYWxsTGlua0luZm8oY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNh
bGxGcmFtZS0+Y2FsbGVlKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2Fs
bGVlLT5leGVjdXRhYmxlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPnN0
cnVjdHVyZSgpOworICAgIAorICAgIEFTU0VSVChjYWxsTGlua0luZm8tPmNhbGxUeXBlID09IENh
bGxMaW5rSW5mbzo6Q2FsbCk7CisgICAgQVNTRVJUKGNhbGxMaW5rSW5mby0+aXNMaW5rZWQoKSk7
CisgICAgQVNTRVJUKGNhbGxMaW5rSW5mby0+Y2FsbGVlKTsKKyAgICBBU1NFUlQoY2FsbGVlICE9
IGNhbGxMaW5rSW5mby0+Y2FsbGVlLmdldCgpKTsKKyAgICAKKyAgICBib29sIHNob3VsZExpbmsg
PSBmYWxzZTsKKyAgICBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9jayA9IDA7CisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgCisgICAgaWYgKGV4ZWN1dGFibGUgPT0gY2Fs
bExpbmtJbmZvLT5jYWxsZWUuZ2V0KCktPmV4ZWN1dGFibGUoKQorICAgICAgICAmJiBzdHJ1Y3R1
cmUgPT0gY2FsbExpbmtJbmZvLT5jYWxsZWUuZ2V0KCktPnN0cnVjdHVyZSgpKSB7CisgICAgICAg
IAorICAgICAgICBzaG91bGRMaW5rID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVChl
eGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKTsKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1
dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICAg
ICAgaWYgKCFjYWxsZWUtPmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAg
ICAgICAgY2FsbGVlQ29kZUJsb2NrID0gJmpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVj
dXRhYmxlKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDYWxsKCk7CisgICAgICAgICAgICBpZiAoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihjYWxsZWVDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICAgICAgc2hv
dWxkTGluayA9IGZhbHNlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChjYWxsZWUtPmlzSG9z
dEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yQ2FsbCgpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIE5l
ZWQgdG8gY2xlYXIgdGhlIGNvZGUgYmxvY2sgYmVmb3JlIGNvbXBpbGF0aW9uLCBiZWNhdXNlIGNv
bXBpbGF0aW9uIGNhbiBHQy4KKyAgICAgICAgY2FsbEZyYW1lLT5zZXRDb2RlQmxvY2soMCk7Cisg
ICAgICAgIAorICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNTY29w
ZSogc2NvcGVDaGFpbiA9IGNhbGxlZS0+c2NvcGUoKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9y
ID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGNhbGxGcmFtZSwgc2NvcGVDaGFpbiwg
Q29kZUZvckNhbGwpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGVycm9yOworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlRm9yQ2FsbCk7CisgICAg
fQorICAgIAorICAgIGlmIChzaG91bGRMaW5rKSB7CisgICAgICAgIEFTU0VSVChjb2RlUHRyKTsK
KyAgICAgICAgSklUOjpjb21waWxlQ2xvc3VyZUNhbGwoZ2xvYmFsRGF0YSwgY2FsbExpbmtJbmZv
LCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlZUNvZGVCbG9jaywgc3RydWN0dXJlLCBleGVjdXRhYmxl
LCBjb2RlUHRyKTsKKyAgICB9IGVsc2UKKyAgICAgICAgSklUOjpsaW5rU2xvd0NhbGwoY2FsbGVy
Q29kZUJsb2NrLCBjYWxsTGlua0luZm8pOworCisgICAgcmV0dXJuIGNvZGVQdHIuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKK30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX2xhenlMaW5r
Q29uc3RydWN0KQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDEzODYwMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQx
MSw2ICs0MTEsNyBAQCB2b2lkKiBKSVRfU1RVQiBjdGlfb3Bfc3dpdGNoX3N0cmluZyhTVFVCCiB2
b2lkKiBKSVRfU1RVQiBjdGlfb3BfdGhyb3coU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfc3RhY2tfY2hlY2soU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fbGF6eUxpbmtDYWxsKFNU
VUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwordm9pZCogSklUX1NUVUIgY3RpX3Zt
X2xhenlMaW5rQ2xvc3VyZUNhbGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7
CiB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fbGF6eUxpbmtDb25zdHJ1Y3QoU1RVQl9BUkdTX0RFQ0xB
UkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fdGhyb3coU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKIH0gLy8g
ZXh0ZXJuICJDIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAkocmV2aXNpb24gMTM4NjAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDYsNiAr
MTA2LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ29uc3RydWN0R2VuZXIKICAgICBy
ZXR1cm4gbGlua0ZvckdlbmVyYXRvcihnbG9iYWxEYXRhLCBGdW5jdGlvblB0cihjdGlfdm1fbGF6
eUxpbmtDb25zdHJ1Y3QpLCBGdW5jdGlvblB0cihjdGlfb3BfY29uc3RydWN0X05vdEpTQ29uc3Ry
dWN0KSwgImNvbnN0cnVjdCIpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0Nsb3N1
cmVDYWxsR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4g
bGlua0ZvckdlbmVyYXRvcihnbG9iYWxEYXRhLCBGdW5jdGlvblB0cihjdGlfdm1fbGF6eUxpbmtD
bG9zdXJlQ2FsbCksIEZ1bmN0aW9uUHRyKGN0aV9vcF9jYWxsX05vdEpTRnVuY3Rpb24pLCAiY2xv
c3VyZSBjYWxsIik7Cit9CisKIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbEZv
ckdlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUHRyIGNvbXBpbGUs
IEZ1bmN0aW9uUHRyIG5vdEpTRnVuY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgJKHJldmlzaW9uIDEzODYw
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbEdlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ29uc3RydWN0R2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDbG9zdXJlQ2FsbEdlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsQ2FsbEdlbmVyYXRvcihKU0ds
b2JhbERhdGEqKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsQ29uc3RydWN0R2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHN0cmluZ0xlbmd0aFRy
YW1wb2xpbmVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7Cg==
</data>
<flag name="review"
          id="198453"
          type_id="1"
          status="+"
          setter="barraclough"
    />
    <flag name="commit-queue"
          id="198456"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>