<?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>136860</bug_id>
          
          <creation_ts>2014-09-16 10:56:40 -0700</creation_ts>
          <short_desc>Local OSR availability calculation should be reusable</short_desc>
          <delta_ts>2014-09-16 15:26:03 -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>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>
          
          <blocked>136330</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035503</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-09-16 10:56:40 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035522</commentid>
    <comment_count>1</comment_count>
      <attachid>238190</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-09-16 11:47:06 -0700</bug_when>
    <thetext>Created attachment 238190
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035526</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-16 11:49:19 -0700</bug_when>
    <thetext>Attachment 238190 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:139:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:146:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:152:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:158:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 4 in 4 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>1035528</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-09-16 11:50:11 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 238190 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:139:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:146:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:152:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:158:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; Total errors found: 4 in 4 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

I fixed all of these locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035532</commentid>
    <comment_count>4</comment_count>
      <attachid>238190</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-09-16 11:52:39 -0700</bug_when>
    <thetext>Comment on attachment 238190
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=238190&amp;action=review

r=me with the reference change

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        This reduces the amount of style points one could conceivably get in the future when
&gt; +        hacking JSC, but creating a single reusable thingy for computing local OSR availability.

The last half of this sentence doesn&apos;t seem to make sense - early finish?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:6747
&gt; +    Operands&lt;Availability&gt; availability() { return m_availabilityCalculator.m_availability; }
&gt; +    

const Operands&lt;Availability&gt;&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035534</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-09-16 12:01:41 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 238190 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238190&amp;action=review
&gt; 
&gt; r=me with the reference change
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:19
&gt; &gt; +        This reduces the amount of style points one could conceivably get in the future when
&gt; &gt; +        hacking JSC, but creating a single reusable thingy for computing local OSR availability.
&gt; 
&gt; The last half of this sentence doesn&apos;t seem to make sense - early finish?

s/but/by

I will fix.

&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:6747
&gt; &gt; +    Operands&lt;Availability&gt; availability() { return m_availabilityCalculator.m_availability; }
&gt; &gt; +    
&gt; 
&gt; const Operands&lt;Availability&gt;&amp;

Why?  What does it buy us?

I don&apos;t like adding const unless I have a story for what it will accomplish, since pointless uses of const run the risk of just requiring more code to be written (const/non-const variants of things...).  In this case, you can already edit the availability by doing m_availabilityCalculator.m_availability.

A humorous example of when you last asked me to make something const was Node::child1()/child2()/child3().  The result was that everyone would wanted to edit children had to be more verbose - Node-&gt;children.setChild1(...).  This wasn&apos;t a good thing.

I take it as a given that the purpose of a compiler&apos;s internal data structures is that they may be edited.  There is usually no point in dragging const around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035535</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-09-16 12:05:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 238190 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238190&amp;action=review
&gt; &gt; 
&gt; &gt; r=me with the reference change
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:19
&gt; &gt; &gt; +        This reduces the amount of style points one could conceivably get in the future when
&gt; &gt; &gt; +        hacking JSC, but creating a single reusable thingy for computing local OSR availability.
&gt; &gt; 
&gt; &gt; The last half of this sentence doesn&apos;t seem to make sense - early finish?
&gt; 
&gt; s/but/by
&gt; 
&gt; I will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:6747
&gt; &gt; &gt; +    Operands&lt;Availability&gt; availability() { return m_availabilityCalculator.m_availability; }
&gt; &gt; &gt; +    
&gt; &gt; 
&gt; &gt; const Operands&lt;Availability&gt;&amp;
&gt; 
&gt; Why?  What does it buy us?
&gt; 
&gt; I don&apos;t like adding const unless I have a story for what it will accomplish, since pointless uses of const run the risk of just requiring more code to be written (const/non-const variants of things...).  In this case, you can already edit the availability by doing m_availabilityCalculator.m_availability.
&gt; 
&gt; A humorous example of when you last asked me to make something const was Node::child1()/child2()/child3().  The result was that everyone would wanted to edit children had to be more verbose - Node-&gt;children.setChild1(...).  This wasn&apos;t a good thing.
&gt; 
&gt; I take it as a given that the purpose of a compiler&apos;s internal data structures is that they may be edited.  There is usually no point in dragging const around.

*facepalm*

Discussion on irc revealed that I was using Operands&lt;Availability&gt; without a &amp;.  Ollie recommends Operands&lt;Availability&gt;&amp; (i.e. non-const ref).  I will do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035606</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-09-16 15:26:03 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/173672</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238190</attachid>
            <date>2014-09-16 11:47:06 -0700</date>
            <delta_ts>2014-09-16 11:52:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>15466</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTczNjY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDE0LTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TG9jYWwgT1NSIGF2YWlsYWJpbGl0eSBjYWxjdWxhdGlvbiBzaG91bGQgYmUgcmV1c2FibGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUHJl
dmlvdXNseSwgdGhlIEZUTCBsb3dlcmluZyByZXBlYXRlZCBzb21lIG9mIHRoZSBsb2dpYyBvZiB0
aGUgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcworICAgICAgICBwaGFzZS4gSHVtb3JvdXNseSwg
aXQgYWN0dWFsbHkgZGlkIHRoaXMgbG9naWMgYSBiaXQgZGlmZmVyZW50bHk7IGZvciBleGFtcGxl
IHRoZSBwaGFzZQorICAgICAgICB3b3VsZCBjbGFpbSB0aGF0IGEgU2V0TG9jYWwgbWFrZXMgYm90
aCB0aGUgZmx1c2ggYW5kIHRoZSBub2RlIGF2YWlsYWJsZSB3aGlsZSB0aGUgRlRMCisgICAgICAg
IG9ubHkgY2xhaW1lZCB0aGF0IHRoZSBmbHVzaCB3YXMgYXZhaWxhYmxlLiBUaGlzIGRpZmZlcmVu
dCB3YXMgYmVuaWduLCBidXQgc3RpbGw6IHl1Y2shCisgICAgICAgIAorICAgICAgICBBbHNvLCBw
cmV2aW91c2x5IGlmIHlvdSB3YW50ZWQgdG8gdXNlIGF2YWlsYWJpbGl0eSBpbmZvcm1hdGlvbiB0
aGVuIHlvdSdkIGhhdmUgdG8gcmVwZWF0CisgICAgICAgIHNvbWUgb2YgdGhlIGxvZ2ljIHRoYXQg
Ym90aCB0aGUgcGhhc2UgaXRzZWxmIGFuZCB0aGUgRlRMIGxvd2VyaW5nIGFscmVhZHkgaGFkLgor
ICAgICAgICBQcmVzdW1hYmx5LCB5b3UgY291bGQgZ2V0IGVwaWMgc3R5bGUgcG9pbnRzIGZvciBm
aW5kaW5nIG90aGVyIGJlbmlnbiB3YXlzIGluIHdoaWNoIHRvCisgICAgICAgIG1ha2UgeW91ciBj
b3B5IG9mIHRoZSBsb2dpYyBkaWZmZXJlbnQgZnJvbSB0aGUgb3RoZXIgdHdvIQorICAgICAgICAK
KyAgICAgICAgVGhpcyByZWR1Y2VzIHRoZSBhbW91bnQgb2Ygc3R5bGUgcG9pbnRzIG9uZSBjb3Vs
ZCBjb25jZWl2YWJseSBnZXQgaW4gdGhlIGZ1dHVyZSB3aGVuCisgICAgICAgIGhhY2tpbmcgSlND
LCBidXQgY3JlYXRpbmcgYSBzaW5nbGUgcmV1c2FibGUgdGhpbmd5IGZvciBjb21wdXRpbmcgbG9j
YWwgT1NSIGF2YWlsYWJpbGl0eS4KKworICAgICAgICAqIGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5
Q2FsY3VsYXRvcjo6TG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yKToKKyAgICAgICAgKEpT
Qzo6REZHOjpMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6On5Mb2NhbE9TUkF2YWlsYWJp
bGl0eUNhbGN1bGF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5
Q2FsY3VsYXRvcjo6YmVnaW5CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFp
bGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkF2
YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpMb3dlckRGR1RvTExW
TSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVNldExvY2FsKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludmFsaWRhdGlvblBvaW50KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YXBwZW5kT1NSRXhpdCk6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmJ1aWxkRXhpdEFyZ3VtZW50cyk6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmF2YWlsYWJpbGl0eSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVNb3ZIaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVpvbWJpZUhpbnQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppbml0aWFsaXplT1NSRXhpdFN0YXRlRm9y
QmxvY2spOiBEZWxldGVkLgorCiAyMDE0LTA5LTE2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgSlNDIHRlc3QgZ2FyZGVuaW5nCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5jcHAJKHJldmlzaW9uIDE3MzY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTcxLDcgKzcxLDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAv
LyBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgcHJvY2Vzc2luZyBibG9ja3Mg
aW4gcmV2ZXJzZSBwb3N0b3JkZXIuCi0gICAgICAgIE9wZXJhbmRzPEF2YWlsYWJpbGl0eT4gYXZh
aWxhYmlsaXR5OworICAgICAgICAKKyAgICAgICAgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxh
dG9yIGNhbGN1bGF0b3I7CiAgICAgICAgIGJvb2wgY2hhbmdlZDsKICAgICAgICAgZG8gewogICAg
ICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwpAQCAtODEsNTQgKzgyLDIzIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHkgPSBibG9jay0+
c3NhLT5hdmFpbGFiaWxpdHlBdEhlYWQ7CisgICAgICAgICAgICAgICAgY2FsY3VsYXRvci5iZWdp
bkJsb2NrKGJsb2NrKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUlu
ZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUlu
ZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxp
dHkub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEF2YWlsYWJpbGl0eShub2RlLT5jaGlsZDEoKS5ub2RlKCksIHZhcmlhYmxlLT5mbHVzaGVk
QXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
R2V0QXJndW1lbnQ6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGF2YWlsYWJpbGl0eS5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5KG5vZGUsIHZhcmlhYmxlLT5mbHVz
aGVkQXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNh
c2UgTW92SGludDogewotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Lm9wZXJh
bmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
QXZhaWxhYmlsaXR5KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgWm9tYmllSGludDogewotICAgICAgICAgICAg
ICAgICAgICAgICAgYXZhaWxhYmlsaXR5Lm9wZXJhbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKSA9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Ojp1bmF2YWlsYWJsZSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXgg
PSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkKKyAgICAgICAgICAg
ICAgICAgICAgY2FsY3VsYXRvci5leGVjdXRlTm9kZShibG9jay0+YXQobm9kZUluZGV4KSk7CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJpbGl0eSA9PSBibG9j
ay0+c3NhLT5hdmFpbGFiaWxpdHlBdFRhaWwpCisgICAgICAgICAgICAgICAgaWYgKGNhbGN1bGF0
b3IubV9hdmFpbGFiaWxpdHkgPT0gYmxvY2stPnNzYS0+YXZhaWxhYmlsaXR5QXRUYWlsKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBibG9jay0+c3NhLT5hdmFpbGFiaWxpdHlBdFRhaWwgPSBhdmFpbGFiaWxpdHk7CisgICAg
ICAgICAgICAgICAgYmxvY2stPnNzYS0+YXZhaWxhYmlsaXR5QXRUYWlsID0gY2FsY3VsYXRvci5t
X2F2YWlsYWJpbGl0eTsKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHN1Y2Nlc3NvckluZGV4ID0g
YmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgc3VjY2Vzc29ySW5kZXgtLTspIHsKICAgICAgICAgICAg
ICAgICAgICAgQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvcihzdWNjZXNz
b3JJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGF2YWlsYWJp
bGl0eS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3Nvci0+
c3NhLT5hdmFpbGFiaWxpdHlBdEhlYWRbaV0gPSBhdmFpbGFiaWxpdHlbaV0ubWVyZ2UoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc29yLT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVh
ZFtpXSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNhbGN1bGF0b3Iu
bV9hdmFpbGFiaWxpdHkuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
dWNjZXNzb3ItPnNzYS0+YXZhaWxhYmlsaXR5QXRIZWFkW2ldID0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5W2ldLm1lcmdlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzb3ItPnNzYS0+YXZhaWxhYmlsaXR5QXRIZWFk
W2ldKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KQEAgLTE0NCw2ICsxMTQsNTMgQEAgYm9vbCBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5h
bHlzaXMoR3JhcAogICAgIHJldHVybiBydW5QaGFzZTxPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1Bo
YXNlPihncmFwaCk7CiB9CiAKK0xvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvcjo6TG9jYWxP
U1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yKCkKK3sKK30KKworTG9jYWxPU1JBdmFpbGFiaWxpdHlD
YWxjdWxhdG9yOjp+TG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yKCkKK3sKK30KKwordm9p
ZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmJlZ2luQmxvY2soQmFzaWNCbG9jayog
YmxvY2spCit7CisgICAgbV9hdmFpbGFiaWxpdHkgPSBibG9jay0+c3NhLT5hdmFpbGFiaWxpdHlB
dEhlYWQ7Cit9CisKK3ZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRl
Tm9kZShOb2RlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgIGNhc2Ug
U2V0TG9jYWw6IHsKKyAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICBtX2F2YWlsYWJpbGl0eS5vcGVyYW5kKHZh
cmlhYmxlLT5sb2NhbCgpKSA9CisgICAgICAgICAgICBBdmFpbGFiaWxpdHkobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCB2YXJpYWJsZS0+Zmx1c2hlZEF0KCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBjYXNlIEdldEFyZ3VtZW50OiB7CisgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKTsKKyAgICAgICAgbV9hdmFpbGFiaWxpdHkub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkg
PQorICAgICAgICAgICAgQXZhaWxhYmlsaXR5KG5vZGUsIHZhcmlhYmxlLT5mbHVzaGVkQXQoKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGNh
c2UgTW92SGludDogeworICAgICAgICBtX2F2YWlsYWJpbGl0eS5vcGVyYW5kKG5vZGUtPnVubGlu
a2VkTG9jYWwoKSkgPQorICAgICAgICAgICAgQXZhaWxhYmlsaXR5KG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgIGNhc2UgWm9tYmllSGludDogeworICAgICAgICBtX2F2YWlsYWJpbGl0eS5vcGVyYW5kKG5v
ZGUtPnVubGlua2VkTG9jYWwoKSkgPQorICAgICAgICAgICAgQXZhaWxhYmlsaXR5Ojp1bmF2YWls
YWJsZSgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlLmgJKHJldmlzaW9uIDE3MzY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR0Jhc2ljQmxv
Y2suaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewpAQCAtMzUsMTAgKzM2LDI0IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIGNsYXNzIEdyYXBoOwogCiAvLyBDb21wdXRlcyBCYXNpY0Jsb2NrOjpzc2EtPmF2YWlsYWJp
bHRpeUF0SGVhZC9UYWlsLiBUaGlzIGlzIGEgZm9yd2FyZCBmbG93IHR5cGUgaW5mZXJlbmNlCi0v
LyBvdmVyIE1vdkhpbnRzIGFuZCBTZXRMb2NhbHMuCisvLyBvdmVyIE1vdkhpbnRzIGFuZCBTZXRM
b2NhbHMuIFRoaXMgYW5hbHlzaXMgaXMgcnVuIGRpcmVjdGx5IGJ5IHRoZSBQbGFuIGZvciBwcmVw
YXJpbmcgZm9yCisvLyBsb3dlcmluZyB0byBMTFZNIElSLCBidXQgaXQgY2FuIGFsc28gYmUgdXNl
ZCBhcyBhIHV0aWxpdHkuCiAKIGJvb2wgcGVyZm9ybU9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzKEdy
YXBoJik7CiAKKy8vIExvY2FsIGNhbGN1bGF0b3IgZm9yIGZpZ3VyaW5nIG91dCB0aGUgYXZhaWxh
YmlsaXR5IGF0IGFueSBub2RlIGluIGEgYmFzaWMgYmxvY2suIFJlcXVpcmVzCisvLyBoYXZpbmcg
cnVuIHRoZSBhdmFpbGFiaWxpdHkgYW5hbHlzaXMuCitjbGFzcyBMb2NhbE9TUkF2YWlsYWJpbGl0
eUNhbGN1bGF0b3IgeworcHVibGljOgorICAgIExvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRv
cigpOworICAgIH5Mb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3IoKTsKKyAgICAKKyAgICB2
b2lkIGJlZ2luQmxvY2soQmFzaWNCbG9jayopOworICAgIHZvaWQgZXhlY3V0ZU5vZGUoTm9kZSop
OworICAgIAorICAgIE9wZXJhbmRzPEF2YWlsYWJpbGl0eT4gbV9hdmFpbGFiaWxpdHk7Cit9Owor
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCShyZXZpc2lvbiAxNzM2NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIgorI2lu
Y2x1ZGUgIkRGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJGVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAiRlRMQXZhaWxhYmxlUmVjb3Zlcnku
aCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKQEAgLTkzLDcgKzk0LDYgQEAg
cHVibGljOgogICAgICAgICAsIG1fZnRsU3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9oZWFwcyhz
dGF0ZS5jb250ZXh0KQogICAgICAgICAsIG1fb3V0KHN0YXRlLmNvbnRleHQpCi0gICAgICAgICwg
bV9hdmFpbGFiaWxpdHkoT3BlcmFuZHNMaWtlLCBzdGF0ZS5ncmFwaC5ibG9jaygwKS0+dmFyaWFi
bGVzQXRIZWFkKQogICAgICAgICAsIG1fc3RhdGUoc3RhdGUuZ3JhcGgpCiAgICAgICAgICwgbV9p
bnRlcnByZXRlcihzdGF0ZS5ncmFwaCwgbV9zdGF0ZSkKICAgICAgICAgLCBtX3N0YWNrbWFwSURz
KDApCkBAIC0yOTUsNyArMjk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaW5pdGlhbGl6ZU9TUkV4aXRTdGF0ZUZvckJsb2Nr
KCk7CisgICAgICAgIG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5iZWdpbkJsb2NrKG1faGlnaEJs
b2NrKTsKICAgICAgICAgCiAgICAgICAgIG1fc3RhdGUucmVzZXQoKTsKICAgICAgICAgbV9zdGF0
ZS5iZWdpbkJhc2ljQmxvY2sobV9oaWdoQmxvY2spOwpAQCAtMzg4LDE4ICszODgsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBTZXRMb2NhbDoKICAgICAgICAgICAgIGNvbXBpbGVTZXRMb2Nh
bCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTW92SGludDoKLSAgICAgICAg
ICAgIGNvbXBpbGVNb3ZIaW50KCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRNeUFyZ3VtZW50c0xl
bmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5
VmFsOgogICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgWm9tYmllSGludDoKLSAgICAgICAgICAgIGNvbXBpbGVa
b21iaWVIaW50KCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQaGFudG9tOgog
ICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgogICAgICAgICBjYXNlIENoZWNrOgpAQCAtNzM5LDEy
ICs3MzMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGdW5jdGlvblJlZW50cnlXYXRjaHBv
aW50OgogICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAgICBjYXNlIEFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBNb3ZIaW50OgorICAgICAg
ICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJVbnJlY29nbml6ZWQgbm9k
ZSBpbiBGVEwgYmFja2VuZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgCisgICAgICAgIG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5leGVjdXRlTm9kZShtX25vZGUp
OworICAgICAgICAKICAgICAgICAgaWYgKHNob3VsZEV4ZWN1dGVFZmZlY3RzKQogICAgICAgICAg
ICAgbV9pbnRlcnByZXRlci5leGVjdXRlRWZmZWN0cyhub2RlSW5kZXgpOwogICAgICAgICAKQEAg
LTEwNjQsMjIgKzEwNjIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3Jh
cGgsIG1fbm9kZSwgIkJhZCBmbHVzaCBmb3JtYXQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2F2YWlsYWJpbGl0eS5vcGVyYW5kKHZhcmlhYmxl
LT5sb2NhbCgpKSA9IEF2YWlsYWJpbGl0eSh2YXJpYWJsZS0+Zmx1c2hlZEF0KCkpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIGNvbXBpbGVNb3ZIaW50KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X25vZGUtPmNvbnRhaW5zTW92SGludCgpKTsKLSAgICAgICAgQVNTRVJUKG1fbm9kZS0+b3AoKSAh
PSBab21iaWVIaW50KTsKLSAgICAgICAgCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5k
ID0gbV9ub2RlLT51bmxpbmtlZExvY2FsKCk7Ci0gICAgICAgIG1fYXZhaWxhYmlsaXR5Lm9wZXJh
bmQob3BlcmFuZCkgPSBBdmFpbGFiaWxpdHkobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAg
IH0KLSAgICAKLSAgICB2b2lkIGNvbXBpbGVab21iaWVIaW50KCkKLSAgICB7Ci0gICAgICAgIG1f
YXZhaWxhYmlsaXR5Lm9wZXJhbmQobV9ub2RlLT51bmxpbmtlZExvY2FsKCkpID0gQXZhaWxhYmls
aXR5Ojp1bmF2YWlsYWJsZSgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVQaGFudG9t
KCkKQEAgLTM5NzMsMTIgKzM5NTUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVJbnZh
bGlkYXRpb25Qb2ludCgpCiAgICAgewogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5h
YmxlZCgpKQotICAgICAgICAgICAgZGF0YUxvZygiICAgIEludmFsaWRhdGlvbiBwb2ludCB3aXRo
IGF2YWlsYWJpbGl0eTogIiwgbV9hdmFpbGFiaWxpdHksICJcbiIpOworICAgICAgICAgICAgZGF0
YUxvZygiICAgIEludmFsaWRhdGlvbiBwb2ludCB3aXRoIGF2YWlsYWJpbGl0eTogIiwgYXZhaWxh
YmlsaXR5KCksICJcbiIpOwogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5qaXRDb2RlLT5v
c3JFeGl0LmFwcGVuZChPU1JFeGl0KAogICAgICAgICAgICAgVW5jb3VudGFibGVJbnZhbGlkYXRp
b24sIEludmFsaWRWYWx1ZUZvcm1hdCwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSgpLAog
ICAgICAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFRhcmdldCwgbV9jb2RlT3JpZ2luRm9yRXhp
dFByb2ZpbGUsCi0gICAgICAgICAgICBtX2F2YWlsYWJpbGl0eS5udW1iZXJPZkFyZ3VtZW50cygp
LCBtX2F2YWlsYWJpbGl0eS5udW1iZXJPZkxvY2FscygpKSk7CisgICAgICAgICAgICBhdmFpbGFi
aWxpdHkoKS5udW1iZXJPZkFyZ3VtZW50cygpLCBhdmFpbGFiaWxpdHkoKS5udW1iZXJPZkxvY2Fs
cygpKSk7CiAgICAgICAgIG1fZnRsU3RhdGUuZmluYWxpemVyLT5vc3JFeGl0LmFwcGVuZChPU1JF
eGl0Q29tcGlsYXRpb25JbmZvKCkpOwogICAgICAgICAKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9
IG1fZnRsU3RhdGUuaml0Q29kZS0+b3NyRXhpdC5sYXN0KCk7CkBAIC02MzYwLDE2ICs2MzQyLDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2Jsb2Nrcy5nZXQoYmxvY2spOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIGluaXRpYWxpemVPU1JFeGl0U3RhdGVGb3JCbG9jaygpCi0gICAgewot
ICAgICAgICBtX2F2YWlsYWJpbGl0eSA9IG1faGlnaEJsb2NrLT5zc2EtPmF2YWlsYWJpbGl0eUF0
SGVhZDsKLSAgICB9Ci0gICAgCiAgICAgdm9pZCBhcHBlbmRPU1JFeGl0KAogICAgICAgICBFeGl0
S2luZCBraW5kLCBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwgTm9kZSogaGlnaFZhbHVlLCBMVmFs
dWUgZmFpbENvbmRpdGlvbikKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25F
bmFibGVkKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBPU1IgZXhpdCAjIiwgbV9mdGxT
dGF0ZS5qaXRDb2RlLT5vc3JFeGl0LnNpemUoKSwgIiB3aXRoIGF2YWlsYWJpbGl0eTogIiwgbV9h
dmFpbGFiaWxpdHksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgIE9TUiBleGl0ICMi
LCBtX2Z0bFN0YXRlLmppdENvZGUtPm9zckV4aXQuc2l6ZSgpLCAiIHdpdGggYXZhaWxhYmlsaXR5
OiAiLCBhdmFpbGFiaWxpdHkoKSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoIW1fYXZhaWxhYmxl
UmVjb3Zlcmllcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBB
dmFpbGFibGUgcmVjb3ZlcmllczogIiwgbGlzdER1bXAobV9hdmFpbGFibGVSZWNvdmVyaWVzKSwg
IlxuIik7CiAgICAgICAgIH0KQEAgLTYzNzksNyArNjM1Niw3IEBAIHByaXZhdGU6CiAgICAgICAg
IG1fZnRsU3RhdGUuaml0Q29kZS0+b3NyRXhpdC5hcHBlbmQoT1NSRXhpdCgKICAgICAgICAgICAg
IGtpbmQsIGxvd1ZhbHVlLmZvcm1hdCgpLCBtX2dyYXBoLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGVGb3IoaGlnaFZhbHVlKSwKICAgICAgICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRUYXJn
ZXQsIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLAotICAgICAgICAgICAgbV9hdmFpbGFiaWxp
dHkubnVtYmVyT2ZBcmd1bWVudHMoKSwgbV9hdmFpbGFiaWxpdHkubnVtYmVyT2ZMb2NhbHMoKSkp
OworICAgICAgICAgICAgYXZhaWxhYmlsaXR5KCkubnVtYmVyT2ZBcmd1bWVudHMoKSwgYXZhaWxh
YmlsaXR5KCkubnVtYmVyT2ZMb2NhbHMoKSkpOwogICAgICAgICBtX2Z0bFN0YXRlLmZpbmFsaXpl
ci0+b3NyRXhpdC5hcHBlbmQoT1NSRXhpdENvbXBpbGF0aW9uSW5mbygpKTsKICAgICAgICAgCiAg
ICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2Z0bFN0YXRlLmppdENvZGUtPm9zckV4aXQubGFzdCgp
OwpAQCAtNjQyNyw3ICs2NDA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgQXZhaWxhYmlsaXR5
IGF2YWlsYWJpbGl0eSA9IG1fYXZhaWxhYmlsaXR5W2ldOworICAgICAgICAgICAgQXZhaWxhYmls
aXR5IGF2YWlsYWJpbGl0eSA9IHRoaXMtPmF2YWlsYWJpbGl0eSgpW2ldOwogICAgICAgICAgICAg
Rmx1c2hlZEF0IGZsdXNoID0gYXZhaWxhYmlsaXR5LmZsdXNoZWRBdCgpOwogICAgICAgICAgICAg
c3dpdGNoIChmbHVzaC5mb3JtYXQoKSkgewogICAgICAgICAgICAgY2FzZSBEZWFkRmx1c2g6CkBA
IC02NzY2LDYgKzY3NDMsOCBAQCBwcml2YXRlOgogICAgICAgICBtX291dC51bnJlYWNoYWJsZSgp
OwogICAgIH0KICAgICAKKyAgICBPcGVyYW5kczxBdmFpbGFiaWxpdHk+IGF2YWlsYWJpbGl0eSgp
IHsgcmV0dXJuIG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5tX2F2YWlsYWJpbGl0eTsgfQorICAg
IAogICAgIFZNJiB2bSgpIHsgcmV0dXJuIG1fZ3JhcGgubV92bTsgfQogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrKCkgeyByZXR1cm4gbV9ncmFwaC5tX2NvZGVCbG9jazsgfQogICAgIApAQCAtNjc5
NSw3ICs2Nzc0LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+
IG1fcGhpczsKICAgICAKLSAgICBPcGVyYW5kczxBdmFpbGFiaWxpdHk+IG1fYXZhaWxhYmlsaXR5
OworICAgIExvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvciBtX2F2YWlsYWJpbGl0eUNhbGN1
bGF0b3I7CiAgICAgCiAgICAgVmVjdG9yPEF2YWlsYWJsZVJlY292ZXJ5LCAzPiBtX2F2YWlsYWJs
ZVJlY292ZXJpZXM7CiAgICAgCg==
</data>
<flag name="review"
          id="262956"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>