<?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>210583</bug_id>
          
          <creation_ts>2020-04-15 17:57:19 -0700</creation_ts>
          <short_desc>[JSC] Use ensureStillAliveHere in FTL when content of storage should be kept alive</short_desc>
          <delta_ts>2020-04-16 05:06:55 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1642074</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-15 17:57:19 -0700</bug_when>
    <thetext>[JSC] Use ensureStillAliveHere in FTL when content of storage should be kept alive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642075</commentid>
    <comment_count>1</comment_count>
      <attachid>396598</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-15 17:59:31 -0700</bug_when>
    <thetext>Created attachment 396598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642076</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-15 17:59:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/61831515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642077</commentid>
    <comment_count>3</comment_count>
      <attachid>396599</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-15 18:02:56 -0700</bug_when>
    <thetext>Created attachment 396599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642078</commentid>
    <comment_count>4</comment_count>
      <attachid>396600</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-15 18:18:21 -0700</bug_when>
    <thetext>Created attachment 396600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642097</commentid>
    <comment_count>5</comment_count>
      <attachid>396600</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-15 19:02:45 -0700</bug_when>
    <thetext>Comment on attachment 396600
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4668
&gt;                  break;

Let&apos;s change this break to a return so that it is clear that we&apos;re terminating here.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5770
&gt;              break;

Can we change this to a return?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5778
&gt;              break;

Ditto, change to return?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5784
&gt;                  break;

Change to return to be consistent?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5791
&gt;                  break;

Change to return?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5835
&gt; +                // We have to keep base alive to keep content in storage alive.
&gt; +                if (m_node-&gt;arrayMode().type() == Array::Contiguous)
&gt; +                    ensureStillAliveHere(base);

Shouldn&apos;t this be after the load and store below since they use pointer, which points into storage?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5884
&gt; +            // We have to keep base alive to keep content in storage alive.
&gt; +            ensureStillAliveHere(base);
&gt;              LValue result = m_out.load64(pointer);
&gt;              m_out.branch(m_out.notZero64(result), usually(fastCase), rarely(slowCase));

We&apos;re branching to fastCase or slowCase after this.  fastCase stores and loads from storage.  Shouldn&apos;t we defer this ensureStillAliveHere() till after the last use of storage in the fastCase?  The slowCase is already using base in a call: so, I think that&apos;s got it covered.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8007
&gt; +        // We have to keep base alive since that keeps content of storage alive.
&gt; +        ensureStillAliveHere(lowCell(m_node-&gt;child2()));
&gt;          setJSValue(loadProperty(
&gt;              lowStorage(m_node-&gt;child1()), data.identifierNumber, data.offset));

Shouldn&apos;t the ensureStillAliveHere() come between the loadProperty() and the setJSValue()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642102</commentid>
    <comment_count>6</comment_count>
      <attachid>396600</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-15 19:20:08 -0700</bug_when>
    <thetext>Comment on attachment 396600
Patch

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4668
&gt;&gt;                  break;
&gt; 
&gt; Let&apos;s change this break to a return so that it is clear that we&apos;re terminating here.

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5770
&gt;&gt;              break;
&gt; 
&gt; Can we change this to a return?

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5778
&gt;&gt;              break;
&gt; 
&gt; Ditto, change to return?

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5784
&gt;&gt;                  break;
&gt; 
&gt; Change to return to be consistent?

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5791
&gt;&gt;                  break;
&gt; 
&gt; Change to return?

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5835
&gt;&gt; +                    ensureStillAliveHere(base);
&gt; 
&gt; Shouldn&apos;t this be after the load and store below since they use pointer, which points into storage?

It is OK to move this after loading for consistency, but practically, this does not matter.
The problem happens only when we get the following sequence.

ensure-still-alive-here-cell
GC
load-from-storage

But it is not possible to insert GC between ensure-still-alive-here-cell &amp; load-from-storage since both are reading something the Heap &amp; GC is invoked from CCall (which clobbers the Heap).
So, if you have

ensure-still-alive-here-cell
load-from-storage

sequence, any code motion cannot insert GC between them.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5884
&gt;&gt;              m_out.branch(m_out.notZero64(result), usually(fastCase), rarely(slowCase));
&gt; 
&gt; We&apos;re branching to fastCase or slowCase after this.  fastCase stores and loads from storage.  Shouldn&apos;t we defer this ensureStillAliveHere() till after the last use of storage in the fastCase?  The slowCase is already using base in a call: so, I think that&apos;s got it covered.

fastCase is loading m_heaps.ArrayStorage_numValuesInVector. And m_heaps.ArrayStorage_numValuesInVector is Int32. So this is not JSCell.
So, even if GC happens and GC does not mark the content of this ArrayStorage, loading m_heaps.ArrayStorage_numValuesInVector is OK.
And since ArrayStorage is AuxiliaryBuffer memory, ArrayStorage itself is kept alive if it is in stack/register (while the content of ArrayStorage is not marked by the owner cell if the owner cell is dead).

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8007
&gt;&gt;              lowStorage(m_node-&gt;child1()), data.identifierNumber, data.offset));
&gt; 
&gt; Shouldn&apos;t the ensureStillAliveHere() come between the loadProperty() and the setJSValue()?

It does not matter practically. But for consistency, I&apos;ve just moved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642104</commentid>
    <comment_count>7</comment_count>
      <attachid>396604</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-15 19:23:38 -0700</bug_when>
    <thetext>Created attachment 396604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642109</commentid>
    <comment_count>8</comment_count>
      <attachid>396600</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-15 19:41:03 -0700</bug_when>
    <thetext>Comment on attachment 396600
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5835
&gt;&gt;&gt; +                    ensureStillAliveHere(base);
&gt;&gt; 
&gt;&gt; Shouldn&apos;t this be after the load and store below since they use pointer, which points into storage?
&gt; 
&gt; It is OK to move this after loading for consistency, but practically, this does not matter.
&gt; The problem happens only when we get the following sequence.
&gt; 
&gt; ensure-still-alive-here-cell
&gt; GC
&gt; load-from-storage
&gt; 
&gt; But it is not possible to insert GC between ensure-still-alive-here-cell &amp; load-from-storage since both are reading something the Heap &amp; GC is invoked from CCall (which clobbers the Heap).
&gt; So, if you have
&gt; 
&gt; ensure-still-alive-here-cell
&gt; load-from-storage
&gt; 
&gt; sequence, any code motion cannot insert GC between them.

Good point.  I forgot about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642111</commentid>
    <comment_count>9</comment_count>
      <attachid>396600</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-15 19:55:13 -0700</bug_when>
    <thetext>Comment on attachment 396600
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5884
&gt;&gt;&gt;              m_out.branch(m_out.notZero64(result), usually(fastCase), rarely(slowCase));
&gt;&gt; 
&gt;&gt; We&apos;re branching to fastCase or slowCase after this.  fastCase stores and loads from storage.  Shouldn&apos;t we defer this ensureStillAliveHere() till after the last use of storage in the fastCase?  The slowCase is already using base in a call: so, I think that&apos;s got it covered.
&gt; 
&gt; fastCase is loading m_heaps.ArrayStorage_numValuesInVector. And m_heaps.ArrayStorage_numValuesInVector is Int32. So this is not JSCell.
&gt; So, even if GC happens and GC does not mark the content of this ArrayStorage, loading m_heaps.ArrayStorage_numValuesInVector is OK.
&gt; And since ArrayStorage is AuxiliaryBuffer memory, ArrayStorage itself is kept alive if it is in stack/register (while the content of ArrayStorage is not marked by the owner cell if the owner cell is dead).

After talking with Yusuke offline, I realized that I completely misunderstood the bug.  Just to clarify for others who may also read this patch: it&apos;s not the base object and it&apos;s butterfly that we&apos;re concerned about keeping alive.  It&apos;s the property object pointed to by the butterfly that we&apos;re loading.  We need to keep the base object alive so that its butterfly gets scanned, thereby keeping the property object alive until we load it into a register or stack location.  The register or stack location will keep it alive from that point on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642120</commentid>
    <comment_count>10</comment_count>
      <attachid>396604</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-15 20:07:27 -0700</bug_when>
    <thetext>Comment on attachment 396604
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642202</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-16 05:06:55 -0700</bug_when>
    <thetext>Committed r260180: &lt;https://trac.webkit.org/changeset/260180&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396598</attachid>
            <date>2020-04-15 17:59:31 -0700</date>
            <delta_ts>2020-04-15 18:02:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210583-20200415175930.patch</filename>
            <type>text/plain</type>
            <size>9007</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YzM4MmQ3Y2UxZjE1ZGJiNDlkYmMxNGZmYjVjNzQ5MzcxZjkyMmRiLi40MDE4YjMyNTZiMDFjOWJl
MTJiZjNiNDhlMTEwZmJiYjcxZjY0ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMC0wNC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBlbnN1cmVTdGlsbEFsaXZlSGVyZSBpbiBGVEwgd2hlbiBj
b250ZW50IG9mIHN0b3JhZ2Ugc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDU4MworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjE4MzE1MTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIGNvbnRlbnQgb2YgQnV0dGVyZmx5IC8gQXJyYXlTdG9yYWdlIGlzIGtlcHQg
YWxpdmUgb25seSB3aGVuIHRoZSBvd25lciBKU0NlbGwgaXMgYWxpdmUuCisgICAgICAgIFRoaXMg
bWVhbnMgdGhhdCB3ZSBzaG91bGQga2VlcCB0aGUgb3duZXIgSlNDZWxsIGFsaXZlIGlmIHdlIGFy
ZSBsb2FkaW5nIGNvbnRlbnQgb2Ygc3RvcmFnZQorICAgICAgICB3aGljaCBpbmNsdWRlcyBKU0Nl
bGxzLiBUaGlzIHBhdGNoIGluc2VydHMgZW5zdXJlU3RpbGxBbGl2ZUhlcmUgaW4gRlRMIHRvIGVu
c3VyZSB0aGlzIGludmFyaWFudC4KKworICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjp+SklUQ29kZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVBcnJheUluZGV4T2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQXJyYXlQb3ApOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ29kZVBvaW50QXQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTXVsdGlHZXRCeU9mZnNldCk6CisKIDIw
MjAtMDQtMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtF
U05leHRdIEltcGxlbWVudCBsb2dpY2FsIGFzc2lnbm1lbnQgb3BlcmF0b3JzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAppbmRleCBmOGI2ZjU1MmM4ODczNTg1M2VlMjY4
OWE5OTVmZjZmNDQyMjg3NGIzLi5lZGJiMzlkZjVlNWY0MmRiZWM5NDEwMTdmMjE5ZTI0YjMxY2E3
MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKQEAgLTQzLDEx
ICs0MywxNSBAQCBKSVRDb2RlOjpKSVRDb2RlKCkKIEpJVENvZGU6On5KSVRDb2RlKCkKIHsKICAg
ICBpZiAoRlRMOjpzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkgewotICAgICAgICBkYXRhTG9nKCJE
ZXN0cm95aW5nIEZUTCBKSVQgY29kZSBhdCAiKTsKLSAgICAgICAgQ29tbWFQcmludGVyIGNvbW1h
OwotICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX2IzQ29kZSk7Ci0gICAgICAgIGRhdGFMb2coY29t
bWEsIG1fYXJpdHlDaGVja0VudHJ5cG9pbnQpOwotICAgICAgICBkYXRhTG9nKCJcbiIpOworICAg
ICAgICBpZiAobV9iM0NvZGUgfHwgbV9hcml0eUNoZWNrRW50cnlwb2ludCkgeworICAgICAgICAg
ICAgZGF0YUxvZygiRGVzdHJveWluZyBGVEwgSklUIGNvZGUgYXQgIik7CisgICAgICAgICAgICBD
b21tYVByaW50ZXIgY29tbWE7CisgICAgICAgICAgICBpZiAobV9iM0NvZGUpCisgICAgICAgICAg
ICAgICAgZGF0YUxvZyhjb21tYSwgbV9iM0NvZGUpOworICAgICAgICAgICAgaWYgKG1fYXJpdHlD
aGVja0VudHJ5cG9pbnQpCisgICAgICAgICAgICAgICAgZGF0YUxvZyhjb21tYSwgbV9hcml0eUNo
ZWNrRW50cnlwb2ludCk7CisgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOworICAgICAgICB9CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYjlmZGVjMDM3MTdhODY1N2E2MzcwNjQyYjhjYTJhNzU1ZjhkNTg5ZC4uYjk2YzM3
MDc2NjUxYjMxZWIwZmYyNjk4M2FiM2FkZWNlMmQ3ZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNDM1Myw2ICs0MzUzLDExIEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpc0hvbGUsIG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgcmVzdWx0KTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKExvYWRG
cm9tSG9sZSwgbm9WYWx1ZSgpLCAwLCBpc0hvbGUpOworCisgICAgICAgICAgICAgICAgLy8gV2Ug
aGF2ZSB0byBrZWVwIGJhc2UgYWxpdmUgdG8ga2VlcCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUu
CisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5
OjpDb250aWd1b3VzKQorICAgICAgICAgICAgICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShi
YXNlKTsKKwogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC00Mzc4LDYgKzQzODMsOSBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHRvIGtlZXAg
Y29udGVudCBpbiBzdG9yYWdlIGFsaXZlLgorICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlN
b2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1b3VzKQorICAgICAgICAgICAgICAgIGVuc3Vy
ZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGko
SW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtNDY1Niw2ICs0NjY0LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0b3Jh
Z2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKTsKICAgICAgICAgICAg
ICAgICBzcGVjdWxhdGUoTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzY0
KHJlc3VsdCkpOworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZl
IHRvIGtlZXAgY29udGVudCBpbiBzdG9yYWdlIGFsaXZlLgorICAgICAgICAgICAgICAgIGVuc3Vy
ZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ2ODEsNiArNDY5
MSw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJhc2UgYWxpdmUgdG8ga2Vl
cCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUuCisgICAgICAgICAgICBlbnN1cmVTdGlsbEFsaXZl
SGVyZShiYXNlKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0
UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTU2NTEsNiArNTY2Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgdm9pZCBjb21waWxl
QXJyYXlJbmRleE9mKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MCkpOwogICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ub2RlLT5udW1DaGls
ZHJlbigpID09IDMgPyBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikgOiBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMykpOwogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9h
ZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAKQEAgLTU3NTMs
MTYgKzU3NjYsMjIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2
ZSBzaW5jZSB0aGF0IGtlZXBzIGNvbnRlbnQgb2Ygc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgICAg
IGVuc3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgc2V0SW50MzIobV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5vdEZvdW5kUmVzdWx0LCBmb3Vu
ZFJlc3VsdCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBTdHJpbmdVc2U6CiAgICAgICAgICAgICBBU1NFUlQobV9ub2RlLT5hcnJheU1vZGUoKS50eXBl
KCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVw
IGJhc2UgYWxpdmUgc2luY2UgdGhhdCBrZWVwcyBzdG9yYWdlIGFsaXZlLgorICAgICAgICAgICAg
ZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5j
YXN0VG9JbnQzMih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkFycmF5SW5kZXhPZlN0cmluZywgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgc3RvcmFnZSwgbG93U3RyaW5nKHNlYXJjaEVsZW1lbnRF
ZGdlKSwgc3RhcnRJbmRleCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
VW50eXBlZFVzZToKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHNp
bmNlIHRoYXQga2VlcHMgY29udGVudCBvZiBzdG9yYWdlIGFsaXZlLgorICAgICAgICAgICAgZW5z
dXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+YXJy
YXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAg
ICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIodm1DYWxsKEludDY0LCBvcGVy
YXRpb25BcnJheUluZGV4T2ZWYWx1ZURvdWJsZSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
c3RvcmFnZSwgbG93SlNWYWx1ZShzZWFyY2hFbGVtZW50RWRnZSksIHN0YXJ0SW5kZXgpKSk7CkBA
IC01ODEyLDYgKzU4MzEsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgbV9v
dXQuc3RvcmUzMihuZXdMZW5ndGgsIHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xl
bmd0aCk7CiAgICAgICAgICAgICBUeXBlZFBvaW50ZXIgcG9pbnRlciA9IG1fb3V0LmJhc2VJbmRl
eChoZWFwLCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRyKG5ld0xlbmd0aCkpOwogICAgICAgICAg
ICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpICE9IEFycmF5OjpEb3VibGUpIHsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSB0byBrZWVwIGNvbnRl
bnQgaW4gc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1v
ZGUoKS50eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpCisgICAgICAgICAgICAgICAgICAgIGVu
c3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSBtX291dC5sb2FkNjQocG9pbnRlcik7CiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCht
X291dC5pbnQ2NFplcm8sIHBvaW50ZXIpOwogICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KG1fb3V0LmFuY2hvcihyZXN1bHQpKTsKQEAgLTU4NTcsNiArNTg3OSw4IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHBvcENoZWNrQ2FzZSwgZmFz
dENhc2UpOwogICAgICAgICAgICAgVHlwZWRQb2ludGVyIHBvaW50ZXIgPSBtX291dC5iYXNlSW5k
ZXgobV9oZWFwcy5BcnJheVN0b3JhZ2VfdmVjdG9yLCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRy
KG5ld0xlbmd0aCkpOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJhc2UgYWxpdmUg
dG8ga2VlcCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUuCisgICAgICAgICAgICBlbnN1cmVTdGls
bEFsaXZlSGVyZShiYXNlKTsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2Fk
NjQocG9pbnRlcik7CiAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90WmVybzY0KHJl
c3VsdCksIHVzdWFsbHkoZmFzdENhc2UpLCByYXJlbHkoc2xvd0Nhc2UpKTsKIApAQCAtNzgxNiw2
ICs3ODQwLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOworICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSBz
aW5jZSB0aGF0IGtlZXBzIHN0b3JhZ2UgYWxpdmUuCisgICAgICAgIGVuc3VyZVN0aWxsQWxpdmVI
ZXJlKGJhc2UpOwogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykp
OwogICAgIH0KICAgICAKQEAgLTc4NjIsNiArNzg4OCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKICAgICAgICAgCisgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHNpbmNl
IHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUo
YmFzZSk7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgY2hhcjhCaXQsIGNoYXIx
NkJpdCkpOwogICAgIH0KIApAQCAtNzkyMCw2ICs3OTQ4LDggQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAvLyBXZSBoYXZlIHRvIGtl
ZXAgYmFzZSBhbGl2ZSBzaW5jZSB0aGF0IGtlZXBzIHN0b3JhZ2UgYWxpdmUuCisgICAgICAgIGVu
c3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICBzZXRJbnQzMihtX291dC5waGkoSW50
MzIsIGNoYXI4Qml0LCBjaGFyMTZCaXQsIGNoYXJTdXJyb2dhdGVQYWlyKSk7CiAgICAgfQogCkBA
IC03OTcyLDYgKzgwMDIsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHsKICAgICAgICAg
U3RvcmFnZUFjY2Vzc0RhdGEmIGRhdGEgPSBtX25vZGUtPnN0b3JhZ2VBY2Nlc3NEYXRhKCk7CiAg
ICAgICAgIAorICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSBzaW5jZSB0aGF0
IGtlZXBzIGNvbnRlbnQgb2Ygc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgZW5zdXJlU3RpbGxBbGl2
ZUhlcmUobG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSk7CiAgICAgICAgIHNldEpTVmFsdWUobG9h
ZFByb3BlcnR5KAogICAgICAgICAgICAgbG93U3RvcmFnZShtX25vZGUtPmNoaWxkMSgpKSwgZGF0
YS5pZGVudGlmaWVyTnVtYmVyLCBkYXRhLm9mZnNldCkpOwogICAgIH0KQEAgLTgwNTUsNiArODA4
Nyw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7
CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJhc2UgYWxpdmUgc2luY2UgdGhhdCBrZWVw
cyBzdG9yYWdlIGFsaXZlLgorICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsKICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsKICAgICB9CiAgICAg
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396599</attachid>
            <date>2020-04-15 18:02:56 -0700</date>
            <delta_ts>2020-04-15 18:18:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210583-20200415180255.patch</filename>
            <type>text/plain</type>
            <size>9135</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YzM4MmQ3Y2UxZjE1ZGJiNDlkYmMxNGZmYjVjNzQ5MzcxZjkyMmRiLi5kNWUwYjliY2JkNjE2N2I0
OTRiMmVlMTRhOWIwNjhlNzMyZDA5M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMC0wNC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBlbnN1cmVTdGlsbEFsaXZlSGVyZSBpbiBGVEwgd2hlbiBj
b250ZW50IG9mIHN0b3JhZ2Ugc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDU4MworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjE4MzE1MTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIGNvbnRlbnQgb2YgQnV0dGVyZmx5IC8gQXJyYXlTdG9yYWdlIGlzIGtlcHQg
YWxpdmUgb25seSB3aGVuIHRoZSBvd25lciBKU0NlbGwgaXMgYWxpdmUuCisgICAgICAgIFRoaXMg
bWVhbnMgdGhhdCB3ZSBzaG91bGQga2VlcCB0aGUgb3duZXIgSlNDZWxsIGFsaXZlIGlmIHdlIGFy
ZSBsb2FkaW5nIGNvbnRlbnQgb2Ygc3RvcmFnZQorICAgICAgICB3aGljaCBpbmNsdWRlcyBKU0Nl
bGxzLiBUaGlzIHBhdGNoIGluc2VydHMgZW5zdXJlU3RpbGxBbGl2ZUhlcmUgaW4gRlRMIHRvIGVu
c3VyZSB0aGlzIGludmFyaWFudC4KKworICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjp+SklUQ29kZSk6IEZvdW5kIHRoYXQgd2UgZ2V0IGNy
YXNoIHdpdGggYGR1bXBEaXNhc3NlbWJseWAgaWYgRlRMOjpKSVRDb2RlIGlzIGRlc3Ryb3llZCB3
aGlsZSBpdCBmYWlscyB0byBnZW5lcmF0ZSBjb2RlIHdoaWxlIHRlc3RpbmcgdGhpcy4KKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUFycmF5SW5kZXhPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcnJheVBvcCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckNvZGVBdCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeU9mZnNldCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aUdldEJ5
T2Zmc2V0KToKKwogMjAyMC0wNC0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IGxvZ2ljYWwgYXNzaWdubWVudCBvcGVyYXRv
cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCmluZGV4IGY4YjZmNTUy
Yzg4NzM1ODUzZWUyNjg5YTk5NWZmNmY0NDIyODc0YjMuLmVkYmIzOWRmNWU1ZjQyZGJlYzk0MTAx
N2YyMTllMjRiMzFjYTcxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2Rl
LmNwcApAQCAtNDMsMTEgKzQzLDE1IEBAIEpJVENvZGU6OkpJVENvZGUoKQogSklUQ29kZTo6fkpJ
VENvZGUoKQogewogICAgIGlmIChGVEw6OnNob3VsZER1bXBEaXNhc3NlbWJseSgpKSB7Ci0gICAg
ICAgIGRhdGFMb2coIkRlc3Ryb3lpbmcgRlRMIEpJVCBjb2RlIGF0ICIpOwotICAgICAgICBDb21t
YVByaW50ZXIgY29tbWE7Ci0gICAgICAgIGRhdGFMb2coY29tbWEsIG1fYjNDb2RlKTsKLSAgICAg
ICAgZGF0YUxvZyhjb21tYSwgbV9hcml0eUNoZWNrRW50cnlwb2ludCk7Ci0gICAgICAgIGRhdGFM
b2coIlxuIik7CisgICAgICAgIGlmIChtX2IzQ29kZSB8fCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50
KSB7CisgICAgICAgICAgICBkYXRhTG9nKCJEZXN0cm95aW5nIEZUTCBKSVQgY29kZSBhdCAiKTsK
KyAgICAgICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICAgICAgICAgIGlmIChtX2IzQ29k
ZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX2IzQ29kZSk7CisgICAgICAgICAg
ICBpZiAobV9hcml0eUNoZWNrRW50cnlwb2ludCkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKGNv
bW1hLCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlxuIik7
CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCBiOWZkZWMwMzcxN2E4NjU3YTYzNzA2NDJiOGNhMmE3NTVm
OGQ1ODlkLi5iOTZjMzcwNzY2NTFiMzFlYjBmZjI2OTgzYWIzYWRlY2UyZDdlNjVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00MzUzLDYg
KzQzNTMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlzSG9sZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkp
LCByZXN1bHQpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBz
cGVjdWxhdGUoTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAsIGlzSG9sZSk7CisKKyAgICAgICAg
ICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSB0byBrZWVwIGNvbnRlbnQgaW4g
c3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpCisgICAgICAgICAgICAgICAgICAgIGVuc3VyZVN0
aWxsQWxpdmVIZXJlKGJhc2UpOworCiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQzNzgsNiArNDM4
Myw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJhc2Ug
YWxpdmUgdG8ga2VlcCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUuCisgICAgICAgICAgICBpZiAo
bV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpCisgICAgICAg
ICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00NjU2LDYgKzQ2NjQsOCBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygp
KSB7CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWQ2NChiYXNlSW5k
ZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSkp
OwogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgMCwg
bV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBr
ZWVwIGJhc2UgYWxpdmUgdG8ga2VlcCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUuCisgICAgICAg
ICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpA
QCAtNDY4MSw2ICs0NjkxLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFz
ZSBhbGl2ZSB0byBrZWVwIGNvbnRlbnQgaW4gc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgICAgIGVu
c3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtNTY1MSw2ICs1NjYzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICB2b2lkIGNvbXBpbGVBcnJheUluZGV4T2YoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAwKSk7CiAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gbG93U3RvcmFnZSht
X25vZGUtPm51bUNoaWxkcmVuKCkgPT0gMyA/IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAy
KSA6IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CiAgICAgICAgIExWYWx1ZSBsZW5n
dGggPSBtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3Ro
KTsKIApAQCAtNTc1MywxNiArNTc2NiwyMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8g
a2VlcCBiYXNlIGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgY29udGVudCBvZiBzdG9yYWdlIGFsaXZl
LgorICAgICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAgICBz
ZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm90Rm91
bmRSZXN1bHQsIGZvdW5kUmVzdWx0KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgICAgIEFTU0VSVChtX25vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29udGlndW91cyk7CisgICAgICAgICAgICAvLyBX
ZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSBzaW5jZSB0aGF0IGtlZXBzIHN0b3JhZ2UgYWxpdmUu
CisgICAgICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsKICAgICAgICAgICAgIHNl
dEludDMyKG1fb3V0LmNhc3RUb0ludDMyKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQXJyYXlJbmRl
eE9mU3RyaW5nLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBzdG9yYWdlLCBsb3dTdHJpbmco
c2VhcmNoRWxlbWVudEVkZ2UpLCBzdGFydEluZGV4KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgorICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVw
IGJhc2UgYWxpdmUgc2luY2UgdGhhdCBrZWVwcyBjb250ZW50IG9mIHN0b3JhZ2UgYWxpdmUuCisg
ICAgICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsKICAgICAgICAgICAgIHN3aXRj
aCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkRvdWJsZToKICAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMih2bUNh
bGwoSW50NjQsIG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlRG91YmxlLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBzdG9yYWdlLCBsb3dKU1ZhbHVlKHNlYXJjaEVsZW1lbnRFZGdlKSwgc3Rh
cnRJbmRleCkpKTsKQEAgLTU4MTIsNiArNTgzMSw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICBtX291dC5zdG9yZTMyKG5ld0xlbmd0aCwgc3RvcmFnZSwgbV9oZWFwcy5CdXR0
ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgICAgIFR5cGVkUG9pbnRlciBwb2ludGVyID0g
bV9vdXQuYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIobmV3TGVuZ3Ro
KSk7CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgIT0gQXJyYXk6
OkRvdWJsZSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZl
IHRvIGtlZXAgY29udGVudCBpbiBzdG9yYWdlIGFsaXZlLgorICAgICAgICAgICAgICAgIGlmICht
X25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29udGlndW91cykKKyAgICAgICAg
ICAgICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWQ2NChwb2ludGVyKTsKICAgICAgICAgICAgICAgICBt
X291dC5zdG9yZTY0KG1fb3V0LmludDY0WmVybywgcG9pbnRlcik7CiAgICAgICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHJlc3VsdCkpOwpAQCAtNTg1Nyw2ICs1ODc5LDgg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocG9w
Q2hlY2tDYXNlLCBmYXN0Q2FzZSk7CiAgICAgICAgICAgICBUeXBlZFBvaW50ZXIgcG9pbnRlciA9
IG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLkFycmF5U3RvcmFnZV92ZWN0b3IsIHN0b3JhZ2UsIG1f
b3V0Lnplcm9FeHRQdHIobmV3TGVuZ3RoKSk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtl
ZXAgYmFzZSBhbGl2ZSB0byBrZWVwIGNvbnRlbnQgaW4gc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAg
ICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IG1fb3V0LmxvYWQ2NChwb2ludGVyKTsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291
dC5ub3RaZXJvNjQocmVzdWx0KSwgdXN1YWxseShmYXN0Q2FzZSksIHJhcmVseShzbG93Q2FzZSkp
OwogCkBAIC03ODE2LDYgKzc4NDAsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIC8vIFdlIGhhdmUgdG8ga2Vl
cCBiYXNlIGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgZW5z
dXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKElu
dDY0LCByZXN1bHRzKSk7CiAgICAgfQogICAgIApAQCAtNzg2Miw2ICs3ODg4LDggQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOwogICAgICAgICAKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJh
c2UgYWxpdmUgc2luY2UgdGhhdCBrZWVwcyBzdG9yYWdlIGFsaXZlLgorICAgICAgICBlbnN1cmVT
dGlsbEFsaXZlSGVyZShiYXNlKTsKICAgICAgICAgc2V0SW50MzIobV9vdXQucGhpKEludDMyLCBj
aGFyOEJpdCwgY2hhcjE2Qml0KSk7CiAgICAgfQogCkBAIC03OTIwLDYgKzc5NDgsOCBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIC8v
IFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2
ZS4KKyAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgIHNldEludDMy
KG1fb3V0LnBoaShJbnQzMiwgY2hhcjhCaXQsIGNoYXIxNkJpdCwgY2hhclN1cnJvZ2F0ZVBhaXIp
KTsKICAgICB9CiAKQEAgLTc5NzIsNiArODAwMiw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgewogICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSYgZGF0YSA9IG1fbm9kZS0+c3RvcmFnZUFj
Y2Vzc0RhdGEoKTsKICAgICAgICAgCisgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFs
aXZlIHNpbmNlIHRoYXQga2VlcHMgY29udGVudCBvZiBzdG9yYWdlIGFsaXZlLgorICAgICAgICBl
bnN1cmVTdGlsbEFsaXZlSGVyZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpKTsKICAgICAgICAg
c2V0SlNWYWx1ZShsb2FkUHJvcGVydHkoCiAgICAgICAgICAgICBsb3dTdG9yYWdlKG1fbm9kZS0+
Y2hpbGQxKCkpLCBkYXRhLmlkZW50aWZpZXJOdW1iZXIsIGRhdGEub2Zmc2V0KSk7CiAgICAgfQpA
QCAtODA1NSw2ICs4MDg3LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9vdXQu
dW5yZWFjaGFibGUoKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOworICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSBz
aW5jZSB0aGF0IGtlZXBzIHN0b3JhZ2UgYWxpdmUuCisgICAgICAgIGVuc3VyZVN0aWxsQWxpdmVI
ZXJlKGJhc2UpOwogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykp
OwogICAgIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396600</attachid>
            <date>2020-04-15 18:18:21 -0700</date>
            <delta_ts>2020-04-15 19:23:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210583-20200415181820.patch</filename>
            <type>text/plain</type>
            <size>9491</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YzM4MmQ3Y2UxZjE1ZGJiNDlkYmMxNGZmYjVjNzQ5MzcxZjkyMmRiLi5kNWUwYjliY2JkNjE2N2I0
OTRiMmVlMTRhOWIwNjhlNzMyZDA5M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMC0wNC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBlbnN1cmVTdGlsbEFsaXZlSGVyZSBpbiBGVEwgd2hlbiBj
b250ZW50IG9mIHN0b3JhZ2Ugc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDU4MworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjE4MzE1MTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIGNvbnRlbnQgb2YgQnV0dGVyZmx5IC8gQXJyYXlTdG9yYWdlIGlzIGtlcHQg
YWxpdmUgb25seSB3aGVuIHRoZSBvd25lciBKU0NlbGwgaXMgYWxpdmUuCisgICAgICAgIFRoaXMg
bWVhbnMgdGhhdCB3ZSBzaG91bGQga2VlcCB0aGUgb3duZXIgSlNDZWxsIGFsaXZlIGlmIHdlIGFy
ZSBsb2FkaW5nIGNvbnRlbnQgb2Ygc3RvcmFnZQorICAgICAgICB3aGljaCBpbmNsdWRlcyBKU0Nl
bGxzLiBUaGlzIHBhdGNoIGluc2VydHMgZW5zdXJlU3RpbGxBbGl2ZUhlcmUgaW4gRlRMIHRvIGVu
c3VyZSB0aGlzIGludmFyaWFudC4KKworICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjp+SklUQ29kZSk6IEZvdW5kIHRoYXQgd2UgZ2V0IGNy
YXNoIHdpdGggYGR1bXBEaXNhc3NlbWJseWAgaWYgRlRMOjpKSVRDb2RlIGlzIGRlc3Ryb3llZCB3
aGlsZSBpdCBmYWlscyB0byBnZW5lcmF0ZSBjb2RlIHdoaWxlIHRlc3RpbmcgdGhpcy4KKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUFycmF5SW5kZXhPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcnJheVBvcCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckNvZGVBdCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeU9mZnNldCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aUdldEJ5
T2Zmc2V0KToKKwogMjAyMC0wNC0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IGxvZ2ljYWwgYXNzaWdubWVudCBvcGVyYXRv
cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCmluZGV4IGY4YjZmNTUy
Yzg4NzM1ODUzZWUyNjg5YTk5NWZmNmY0NDIyODc0YjMuLmVkYmIzOWRmNWU1ZjQyZGJlYzk0MTAx
N2YyMTllMjRiMzFjYTcxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2Rl
LmNwcApAQCAtNDMsMTEgKzQzLDE1IEBAIEpJVENvZGU6OkpJVENvZGUoKQogSklUQ29kZTo6fkpJ
VENvZGUoKQogewogICAgIGlmIChGVEw6OnNob3VsZER1bXBEaXNhc3NlbWJseSgpKSB7Ci0gICAg
ICAgIGRhdGFMb2coIkRlc3Ryb3lpbmcgRlRMIEpJVCBjb2RlIGF0ICIpOwotICAgICAgICBDb21t
YVByaW50ZXIgY29tbWE7Ci0gICAgICAgIGRhdGFMb2coY29tbWEsIG1fYjNDb2RlKTsKLSAgICAg
ICAgZGF0YUxvZyhjb21tYSwgbV9hcml0eUNoZWNrRW50cnlwb2ludCk7Ci0gICAgICAgIGRhdGFM
b2coIlxuIik7CisgICAgICAgIGlmIChtX2IzQ29kZSB8fCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50
KSB7CisgICAgICAgICAgICBkYXRhTG9nKCJEZXN0cm95aW5nIEZUTCBKSVQgY29kZSBhdCAiKTsK
KyAgICAgICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICAgICAgICAgIGlmIChtX2IzQ29k
ZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX2IzQ29kZSk7CisgICAgICAgICAg
ICBpZiAobV9hcml0eUNoZWNrRW50cnlwb2ludCkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKGNv
bW1hLCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlxuIik7
CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCBiOWZkZWMwMzcxN2E4NjU3YTYzNzA2NDJiOGNhMmE3NTVm
OGQ1ODlkLi41ZGM2NjQ5NjIwNDY1MzhhOGQwMGUwODk3ODljY2Y2NzIxZjBhYTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00MzUzLDYg
KzQzNTMsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAg
aXNIb2xlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSks
IHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZShMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgMCwgaXNIb2xlKTsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSB0byBrZWVwIGNvbnRlbnQgaW4gc3Rv
cmFnZSBhbGl2ZS4KKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBl
KCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpCisgICAgICAgICAgICAgICAgICAgIGVuc3VyZVN0aWxs
QWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC00Mzc4LDYgKzQzODEsOSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZl
IHRvIGtlZXAgY29udGVudCBpbiBzdG9yYWdlIGFsaXZlLgorICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1b3VzKQorICAgICAgICAgICAg
ICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNDY1Niw2ICs0NjYyLDggQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewog
ICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2FkNjQoYmFzZUluZGV4KGhl
YXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKTsKICAg
ICAgICAgICAgICAgICBzcGVjdWxhdGUoTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAsIG1fb3V0
LmlzWmVybzY0KHJlc3VsdCkpOworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBi
YXNlIGFsaXZlIHRvIGtlZXAgY29udGVudCBpbiBzdG9yYWdlIGFsaXZlLgorICAgICAgICAgICAg
ICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgICAgIHNldEpTVmFs
dWUocmVzdWx0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ2
ODEsNiArNDY4OSw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJhc2UgYWxp
dmUgdG8ga2VlcCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUuCisgICAgICAgICAgICBlbnN1cmVT
dGlsbEFsaXZlSGVyZShiYXNlKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKElu
dDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTU2NTEsNiArNTY2MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgdm9p
ZCBjb21waWxlQXJyYXlJbmRleE9mKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMCkpOwogICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ub2Rl
LT5udW1DaGlsZHJlbigpID09IDMgPyBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikgOiBt
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwogICAgICAgICBMVmFsdWUgbGVuZ3RoID0g
bV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAK
QEAgLTU3NTMsMTIgKzU3NjQsMTYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAg
YmFzZSBhbGl2ZSBzaW5jZSB0aGF0IGtlZXBzIGNvbnRlbnQgb2Ygc3RvcmFnZSBhbGl2ZS4KKyAg
ICAgICAgICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgc2V0SW50
MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5vdEZvdW5kUmVz
dWx0LCBmb3VuZFJlc3VsdCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgICAgICBBU1NFUlQobV9ub2RlLT5hcnJheU1v
ZGUoKS50eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpOworICAgICAgICAgICAgLy8gV2UgaGF2
ZSB0byBrZWVwIGJhc2UgYWxpdmUgc2luY2UgdGhhdCBrZWVwcyBzdG9yYWdlIGFsaXZlLgorICAg
ICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAgICBzZXRJbnQz
MihtX291dC5jYXN0VG9JbnQzMih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkFycmF5SW5kZXhPZlN0
cmluZywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgc3RvcmFnZSwgbG93U3RyaW5nKHNlYXJj
aEVsZW1lbnRFZGdlKSwgc3RhcnRJbmRleCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01
NzY3LDggKzU3ODIsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQz
Mih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlRG91YmxlLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBzdG9yYWdlLCBsb3dKU1ZhbHVlKHNlYXJjaEVsZW1lbnRFZGdl
KSwgc3RhcnRJbmRleCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkludDMyOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKKyAg
ICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSBzaW5jZSB0aGF0IGtl
ZXBzIGNvbnRlbnQgb2Ygc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgICAgICAgICBlbnN1cmVTdGls
bEFsaXZlSGVyZShiYXNlKTsKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmNh
c3RUb0ludDMyKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQXJyYXlJbmRleE9mVmFsdWVJbnQzMk9y
Q29udGlndW91cywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgc3RvcmFnZSwgbG93SlNWYWx1
ZShzZWFyY2hFbGVtZW50RWRnZSksIHN0YXJ0SW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtNTgxMiw2ICs1ODMwLDkgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIobmV3TGVuZ3RoLCBzdG9yYWdl
LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgVHlwZWRQb2lu
dGVyIHBvaW50ZXIgPSBtX291dC5iYXNlSW5kZXgoaGVhcCwgc3RvcmFnZSwgbV9vdXQuemVyb0V4
dFB0cihuZXdMZW5ndGgpKTsKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5
cGUoKSAhPSBBcnJheTo6RG91YmxlKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBr
ZWVwIGJhc2UgYWxpdmUgdG8ga2VlcCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUuCisgICAgICAg
ICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1
b3VzKQorICAgICAgICAgICAgICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsKICAg
ICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQubG9hZDY0KHBvaW50ZXIpOwogICAg
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuaW50NjRaZXJvLCBwb2ludGVyKTsKICAg
ICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IocmVzdWx0KSk7CkBAIC01
ODU3LDYgKzU4NzgsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhwb3BDaGVja0Nhc2UsIGZhc3RDYXNlKTsKICAgICAgICAgICAgIFR5cGVkUG9p
bnRlciBwb2ludGVyID0gbV9vdXQuYmFzZUluZGV4KG1faGVhcHMuQXJyYXlTdG9yYWdlX3ZlY3Rv
ciwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihuZXdMZW5ndGgpKTsKKyAgICAgICAgICAgIC8v
IFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHRvIGtlZXAgY29udGVudCBpbiBzdG9yYWdlIGFs
aXZlLgorICAgICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQubG9hZDY0KHBvaW50ZXIpOwogICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0Lm5vdFplcm82NChyZXN1bHQpLCB1c3VhbGx5KGZhc3RDYXNlKSwgcmFy
ZWx5KHNsb3dDYXNlKSk7CiAKQEAgLTc4MTYsNiArNzgzOSw4IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgLy8g
V2UgaGF2ZSB0byBrZWVwIGJhc2UgYWxpdmUgc2luY2UgdGhhdCBrZWVwcyBzdG9yYWdlIGFsaXZl
LgorICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsKICAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsKICAgICB9CiAgICAgCkBAIC03ODYyLDYgKzc4
ODcsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIAorICAgICAgICAvLyBXZSBo
YXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSBzaW5jZSB0aGF0IGtlZXBzIHN0b3JhZ2UgYWxpdmUuCisg
ICAgICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICBzZXRJbnQzMihtX291
dC5waGkoSW50MzIsIGNoYXI4Qml0LCBjaGFyMTZCaXQpKTsKICAgICB9CiAKQEAgLTc5MjAsNiAr
Nzk0Nyw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJhc2UgYWxpdmUgc2luY2UgdGhhdCBrZWVw
cyBzdG9yYWdlIGFsaXZlLgorICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsKICAg
ICAgICAgc2V0SW50MzIobV9vdXQucGhpKEludDMyLCBjaGFyOEJpdCwgY2hhcjE2Qml0LCBjaGFy
U3Vycm9nYXRlUGFpcikpOwogICAgIH0KIApAQCAtNzk3Miw2ICs4MDAxLDggQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICB7CiAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhID0gbV9u
b2RlLT5zdG9yYWdlQWNjZXNzRGF0YSgpOwogICAgICAgICAKKyAgICAgICAgLy8gV2UgaGF2ZSB0
byBrZWVwIGJhc2UgYWxpdmUgc2luY2UgdGhhdCBrZWVwcyBjb250ZW50IG9mIHN0b3JhZ2UgYWxp
dmUuCisgICAgICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDIo
KSkpOwogICAgICAgICBzZXRKU1ZhbHVlKGxvYWRQcm9wZXJ0eSgKICAgICAgICAgICAgIGxvd1N0
b3JhZ2UobV9ub2RlLT5jaGlsZDEoKSksIGRhdGEuaWRlbnRpZmllck51bWJlciwgZGF0YS5vZmZz
ZXQpKTsKICAgICB9CkBAIC04MDU1LDYgKzgwODYsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIC8vIFdlIGhhdmUgdG8ga2Vl
cCBiYXNlIGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgZW5z
dXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKElu
dDY0LCByZXN1bHRzKSk7CiAgICAgfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396604</attachid>
            <date>2020-04-15 19:23:38 -0700</date>
            <delta_ts>2020-04-15 20:07:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210583-20200415192337.patch</filename>
            <type>text/plain</type>
            <size>10169</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YzM4MmQ3Y2UxZjE1ZGJiNDlkYmMxNGZmYjVjNzQ5MzcxZjkyMmRiLi5kNWUwYjliY2JkNjE2N2I0
OTRiMmVlMTRhOWIwNjhlNzMyZDA5M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMC0wNC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBlbnN1cmVTdGlsbEFsaXZlSGVyZSBpbiBGVEwgd2hlbiBj
b250ZW50IG9mIHN0b3JhZ2Ugc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDU4MworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjE4MzE1MTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIGNvbnRlbnQgb2YgQnV0dGVyZmx5IC8gQXJyYXlTdG9yYWdlIGlzIGtlcHQg
YWxpdmUgb25seSB3aGVuIHRoZSBvd25lciBKU0NlbGwgaXMgYWxpdmUuCisgICAgICAgIFRoaXMg
bWVhbnMgdGhhdCB3ZSBzaG91bGQga2VlcCB0aGUgb3duZXIgSlNDZWxsIGFsaXZlIGlmIHdlIGFy
ZSBsb2FkaW5nIGNvbnRlbnQgb2Ygc3RvcmFnZQorICAgICAgICB3aGljaCBpbmNsdWRlcyBKU0Nl
bGxzLiBUaGlzIHBhdGNoIGluc2VydHMgZW5zdXJlU3RpbGxBbGl2ZUhlcmUgaW4gRlRMIHRvIGVu
c3VyZSB0aGlzIGludmFyaWFudC4KKworICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjp+SklUQ29kZSk6IEZvdW5kIHRoYXQgd2UgZ2V0IGNy
YXNoIHdpdGggYGR1bXBEaXNhc3NlbWJseWAgaWYgRlRMOjpKSVRDb2RlIGlzIGRlc3Ryb3llZCB3
aGlsZSBpdCBmYWlscyB0byBnZW5lcmF0ZSBjb2RlIHdoaWxlIHRlc3RpbmcgdGhpcy4KKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUFycmF5SW5kZXhPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcnJheVBvcCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckNvZGVBdCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeU9mZnNldCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aUdldEJ5
T2Zmc2V0KToKKwogMjAyMC0wNC0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IGxvZ2ljYWwgYXNzaWdubWVudCBvcGVyYXRv
cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCmluZGV4IGY4YjZmNTUy
Yzg4NzM1ODUzZWUyNjg5YTk5NWZmNmY0NDIyODc0YjMuLmVkYmIzOWRmNWU1ZjQyZGJlYzk0MTAx
N2YyMTllMjRiMzFjYTcxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2Rl
LmNwcApAQCAtNDMsMTEgKzQzLDE1IEBAIEpJVENvZGU6OkpJVENvZGUoKQogSklUQ29kZTo6fkpJ
VENvZGUoKQogewogICAgIGlmIChGVEw6OnNob3VsZER1bXBEaXNhc3NlbWJseSgpKSB7Ci0gICAg
ICAgIGRhdGFMb2coIkRlc3Ryb3lpbmcgRlRMIEpJVCBjb2RlIGF0ICIpOwotICAgICAgICBDb21t
YVByaW50ZXIgY29tbWE7Ci0gICAgICAgIGRhdGFMb2coY29tbWEsIG1fYjNDb2RlKTsKLSAgICAg
ICAgZGF0YUxvZyhjb21tYSwgbV9hcml0eUNoZWNrRW50cnlwb2ludCk7Ci0gICAgICAgIGRhdGFM
b2coIlxuIik7CisgICAgICAgIGlmIChtX2IzQ29kZSB8fCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50
KSB7CisgICAgICAgICAgICBkYXRhTG9nKCJEZXN0cm95aW5nIEZUTCBKSVQgY29kZSBhdCAiKTsK
KyAgICAgICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICAgICAgICAgIGlmIChtX2IzQ29k
ZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX2IzQ29kZSk7CisgICAgICAgICAg
ICBpZiAobV9hcml0eUNoZWNrRW50cnlwb2ludCkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKGNv
bW1hLCBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlxuIik7
CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCBiOWZkZWMwMzcxN2E4NjU3YTYzNzA2NDJiOGNhMmE3NTVm
OGQ1ODlkLi40YWI1NzFkZGFmNTk3ZGJlMGJjNmExMTdiZTgwOTU3OGIyZDQ3NTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00MzUzLDYg
KzQzNTMsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAg
aXNIb2xlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSks
IHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZShMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgMCwgaXNIb2xlKTsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSB0byBrZWVwIGNvbnRlbnQgaW4gc3Rv
cmFnZSBhbGl2ZS4KKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBl
KCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpCisgICAgICAgICAgICAgICAgICAgIGVuc3VyZVN0aWxs
QWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC00Mzc4LDYgKzQzODEsOSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZl
IHRvIGtlZXAgY29udGVudCBpbiBzdG9yYWdlIGFsaXZlLgorICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1b3VzKQorICAgICAgICAgICAg
ICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNDY1Niw4ICs0NjYyLDEwIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpIHsK
ICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQubG9hZDY0KGJhc2VJbmRleCho
ZWFwLCBzdG9yYWdlLCBpbmRleCwgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKSk7CiAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRlKExvYWRGcm9tSG9sZSwgbm9WYWx1ZSgpLCAwLCBtX291
dC5pc1plcm82NChyZXN1bHQpKTsKKyAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAg
YmFzZSBhbGl2ZSB0byBrZWVwIGNvbnRlbnQgaW4gc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgICAg
ICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsKICAgICAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbkJvdW5kcyA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00NjgxLDYgKzQ2ODksOCBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIC8v
IFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHRvIGtlZXAgY29udGVudCBpbiBzdG9yYWdlIGFs
aXZlLgorICAgICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01NjUxLDYgKzU2NjEsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZUFycmF5SW5kZXhPZigpCiAgICAgewog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxv
d0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKICAgICAgICAgTFZhbHVlIHN0
b3JhZ2UgPSBsb3dTdG9yYWdlKG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSA9PSAzID8gbV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDIpIDogbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsK
ICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQzMihzdG9yYWdlLCBtX2hlYXBzLkJ1
dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogCkBAIC01NzUzLDMzICs1NzY0LDQwIEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAg
ICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJhc2UgYWxpdmUgc2luY2UgdGhhdCBrZWVwcyBjb250
ZW50IG9mIHN0b3JhZ2UgYWxpdmUuCisgICAgICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShi
YXNlKTsKICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LnBoaShw
b2ludGVyVHlwZSgpLCBub3RGb3VuZFJlc3VsdCwgZm91bmRSZXN1bHQpKSk7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ug
U3RyaW5nVXNlOgogICAgICAgICAgICAgQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgp
ID09IEFycmF5OjpDb250aWd1b3VzKTsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBi
YXNlIGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgICAgIGVu
c3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2Fz
dFRvSW50MzIodm1DYWxsKEludDY0LCBvcGVyYXRpb25BcnJheUluZGV4T2ZTdHJpbmcsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIHN0b3JhZ2UsIGxvd1N0cmluZyhzZWFyY2hFbGVtZW50RWRn
ZSksIHN0YXJ0SW5kZXgpKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6
CiAgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIodm1DYWxsKEludDY0
LCBvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZURvdWJsZSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgc3RvcmFnZSwgbG93SlNWYWx1ZShzZWFyY2hFbGVtZW50RWRnZSksIHN0YXJ0SW5kZXgp
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQz
MjoKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250
aWd1b3VzOgorICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHNp
bmNlIHRoYXQga2VlcHMgY29udGVudCBvZiBzdG9yYWdlIGFsaXZlLgorICAgICAgICAgICAgICAg
IGVuc3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOworICAgICAgICAgICAgICAgIEZBTExUSFJPVUdI
OworICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICAgICAgc2V0SW50
MzIobV9vdXQuY2FzdFRvSW50MzIodm1DYWxsKEludDY0LCBvcGVyYXRpb25BcnJheUluZGV4T2ZW
YWx1ZUludDMyT3JDb250aWd1b3VzLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBzdG9yYWdl
LCBsb3dKU1ZhbHVlKHNlYXJjaEVsZW1lbnRFZGdlKSwgc3RhcnRJbmRleCkpKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIApAQCAt
NTgxMyw2ICs1ODMxLDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIFR5cGVk
UG9pbnRlciBwb2ludGVyID0gbV9vdXQuYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIG1fb3V0Lnpl
cm9FeHRQdHIobmV3TGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUo
KS50eXBlKCkgIT0gQXJyYXk6OkRvdWJsZSkgewogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSBtX291dC5sb2FkNjQocG9pbnRlcik7CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0
byBrZWVwIGJhc2UgYWxpdmUgdG8ga2VlcCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUuCisgICAg
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250
aWd1b3VzKQorICAgICAgICAgICAgICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsK
ICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmludDY0WmVybywgcG9pbnRlcik7
CiAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHJlc3VsdCkpOwog
ICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKQEAgLTU4NTgsNiArNTg3OSw4IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhwb3BDaGVja0Nhc2Us
IGZhc3RDYXNlKTsKICAgICAgICAgICAgIFR5cGVkUG9pbnRlciBwb2ludGVyID0gbV9vdXQuYmFz
ZUluZGV4KG1faGVhcHMuQXJyYXlTdG9yYWdlX3ZlY3Rvciwgc3RvcmFnZSwgbV9vdXQuemVyb0V4
dFB0cihuZXdMZW5ndGgpKTsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2Fk
NjQocG9pbnRlcik7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSB0
byBrZWVwIGNvbnRlbnQgaW4gc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgICAgIGVuc3VyZVN0aWxs
QWxpdmVIZXJlKGJhc2UpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdFplcm82
NChyZXN1bHQpLCB1c3VhbGx5KGZhc3RDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAKICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGZhc3RDYXNlLCBzbG93Q2FzZSk7CkBAIC03ODE2LDYgKzc4
MzksOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CisgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHNpbmNl
IHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUo
YmFzZSk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCByZXN1bHRzKSk7CiAg
ICAgfQogICAgIApAQCAtNzg2Miw2ICs3ODg3LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwog
ICAgICAgICAKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJhc2UgYWxpdmUgc2luY2UgdGhh
dCBrZWVwcyBzdG9yYWdlIGFsaXZlLgorICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNl
KTsKICAgICAgICAgc2V0SW50MzIobV9vdXQucGhpKEludDMyLCBjaGFyOEJpdCwgY2hhcjE2Qml0
KSk7CiAgICAgfQogCkBAIC03OTIwLDYgKzc5NDcsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBi
YXNlIGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgZW5zdXJl
U3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwg
Y2hhcjhCaXQsIGNoYXIxNkJpdCwgY2hhclN1cnJvZ2F0ZVBhaXIpKTsKICAgICB9CiAKQEAgLTc5
NzIsOCArODAwMSwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHsKICAgICAgICAgU3Rv
cmFnZUFjY2Vzc0RhdGEmIGRhdGEgPSBtX25vZGUtPnN0b3JhZ2VBY2Nlc3NEYXRhKCk7CiAgICAg
ICAgIAotICAgICAgICBzZXRKU1ZhbHVlKGxvYWRQcm9wZXJ0eSgKLSAgICAgICAgICAgIGxvd1N0
b3JhZ2UobV9ub2RlLT5jaGlsZDEoKSksIGRhdGEuaWRlbnRpZmllck51bWJlciwgZGF0YS5vZmZz
ZXQpKTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb2FkUHJvcGVydHkobG93U3RvcmFnZShtX25vZGUtPmNo
aWxkMSgpKSwgZGF0YS5pZGVudGlmaWVyTnVtYmVyLCBkYXRhLm9mZnNldCk7CisgICAgICAgIC8v
IFdlIGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgY29udGVudCBvZiBz
dG9yYWdlIGFsaXZlLgorICAgICAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsKKyAgICAg
ICAgc2V0SlNWYWx1ZSh2YWx1ZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEdl
dHRlcigpCkBAIC04MDU1LDYgKzgwODcsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBtX291dC51bnJlYWNoYWJsZSgpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBiYXNl
IGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2ZS4KKyAgICAgICAgZW5zdXJlU3Rp
bGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBy
ZXN1bHRzKSk7CiAgICAgfQogICAgIAo=
</data>
<flag name="review"
          id="412013"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>