<?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>180923</bug_id>
          
          <creation_ts>2017-12-17 20:06:04 -0800</creation_ts>
          <short_desc>Add comments and improve code styles for RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren() and related functions</short_desc>
          <delta_ts>2018-01-04 01:55:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>MathML</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="Minsheng Liu">lambda</reporter>
          <assigned_to name="Minsheng Liu">lambda</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fred.wang</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1382694</commentid>
    <comment_count>0</comment_count>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-17 20:06:04 -0800</bug_when>
    <thetext>See more at the end of https://bugs.webkit.org/show_bug.cgi?id=179682</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382745</commentid>
    <comment_count>1</comment_count>
      <attachid>329648</attachid>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-18 04:00:31 -0800</bug_when>
    <thetext>Created attachment 329648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382787</commentid>
    <comment_count>2</comment_count>
      <attachid>329648</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-18 10:29:45 -0800</bug_when>
    <thetext>Comment on attachment 329648
Patch

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

&gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:53
&gt; +static RenderMathMLOperator* toHorizontalStretchyOperator(RenderBox&amp; box)

I don’t think this function needs &quot;to&quot; in its name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383051</commentid>
    <comment_count>3</comment_count>
      <attachid>329734</attachid>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-18 20:44:41 -0800</bug_when>
    <thetext>Created attachment 329734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383055</commentid>
    <comment_count>4</comment_count>
      <attachid>329737</attachid>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-18 20:51:47 -0800</bug_when>
    <thetext>Created attachment 329737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383056</commentid>
    <comment_count>5</comment_count>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-18 20:56:25 -0800</bug_when>
    <thetext>I have removed &quot;to&quot; in the function&apos;s name as suggested by Darin.

Also, @zalan pointed out in 179682 that unembellishedOperator() should be const. I forgot to deal with that in my last patch but handled it in the new one. The only tricky part is that I had to use a const_cast because for RenderMathMLOperator, unembellishedOperator() needs to return *this, which is a pointer to a const object. I think this usage aligns with how we deal with other getters such as firstChild(), but I am not an expert on C++ so I need some professional advice on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383057</commentid>
    <comment_count>6</comment_count>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-18 21:01:55 -0800</bug_when>
    <thetext>(In reply to Minsheng Liu from comment #5)
&gt; I have removed &quot;to&quot; in the function&apos;s name as suggested by Darin.
&gt; 
&gt; Also, @zalan pointed out in 179682 that unembellishedOperator() should be
&gt; const. I forgot to deal with that in my last patch but handled it in the new
&gt; one. The only tricky part is that I had to use a const_cast because for
&gt; RenderMathMLOperator, unembellishedOperator() needs to return *this, which
&gt; is a pointer to a const object. I think this usage aligns with how we deal
&gt; with other getters such as firstChild(), but I am not an expert on C++ so I
&gt; need some professional advice on this.

By aligning, I mean that instead of

RenderBox* firstChildBox();
const RenderBox* firstChildBox() const;

WebKit uses

RenderBox* firstChildBox() const;

I am unsure why the first version is not adopted. If a child box is returned, that box can be changed, so the getter itself can potentially mutates the object. Therefore, unless the returned object is marked as const, the getter is not really const.

In any case, since we are settled down with the second one, I think the use of a const_cast as I did in the patch should be acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383655</commentid>
    <comment_count>7</comment_count>
      <attachid>329737</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-12-20 08:42:47 -0800</bug_when>
    <thetext>Comment on attachment 329737
Patch

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

For some reason I did not receive the bug spam for this, sorry for the delay.

&gt; Source/WebCore/ChangeLog:3
&gt; +        [Followup to 179682] Add comment and code style improvement to MUnderOver&apos;s layout functions

I think you should use bug number 180923 and explain below that it is a follow-up.
It&apos;s either munderover (tag name) or RenderMathMLUnderOver (class name).

&gt; Source/WebCore/ChangeLog:14
&gt; +        It makes unembellishedOperator() a const function.

If this one is trickier, it should probably be a separate bug. Let&apos;s not delay the missing bits. Actually there is probably already a bug report for that...

&gt; Source/WebCore/ChangeLog:16
&gt; +        It also provide comments for stretchHorizontalOperatorsAndLayoutChildren() and elinminates

eliminate

&gt; Source/WebCore/ChangeLog:19
&gt; +        There is no behavior change so no new tests are necessary.

See my comment below about fixLayoutAfterStretch.

&gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:-87
&gt; -            fixLayoutAfterStretch(child, stretchyOperator);

If you remove this and don&apos;t do it again in the isAllStretchyOperators conditional below, then it&apos;s actually a behavior change.

&gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:113
&gt;          for (auto* embellishedOperator : embellishedOperators)

I think you&apos;ll need to do a for (size_t i = 0; i &lt; embellishedOperators.size(); i++) in order to call fixLayoutAfterStretch and ensure that embellishedOperator-&gt;logicalWidth() is correctly set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383658</commentid>
    <comment_count>8</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-12-20 08:44:10 -0800</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) [back 03/01/2018] from comment #7)
&gt; I think you should use bug number 180923 and explain below that it is a
&gt; follow-up.

Sorry, I was confused with Gecko&apos;s style. Anyway, I think it&apos;s better to explain this is a follow-up in the desc than in the title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383901</commentid>
    <comment_count>9</comment_count>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-20 17:01:18 -0800</bug_when>
    <thetext>You are correct. It strikes me that we do not have a test case for this. I will add one.

(In reply to Frédéric Wang (:fredw) [back 03/01/2018] from comment #7)
&gt; Comment on attachment 329737 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=329737&amp;action=review
&gt; 
&gt; For some reason I did not receive the bug spam for this, sorry for the delay.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        [Followup to 179682] Add comment and code style improvement to MUnderOver&apos;s layout functions
&gt; 
&gt; I think you should use bug number 180923 and explain below that it is a
&gt; follow-up.
&gt; It&apos;s either munderover (tag name) or RenderMathMLUnderOver (class name).
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        It makes unembellishedOperator() a const function.
&gt; 
&gt; If this one is trickier, it should probably be a separate bug. Let&apos;s not
&gt; delay the missing bits. Actually there is probably already a bug report for
&gt; that...
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        It also provide comments for stretchHorizontalOperatorsAndLayoutChildren() and elinminates
&gt; 
&gt; eliminate
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        There is no behavior change so no new tests are necessary.
&gt; 
&gt; See my comment below about fixLayoutAfterStretch.
&gt; 
&gt; &gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:-87
&gt; &gt; -            fixLayoutAfterStretch(child, stretchyOperator);
&gt; 
&gt; If you remove this and don&apos;t do it again in the isAllStretchyOperators
&gt; conditional below, then it&apos;s actually a behavior change.
&gt; 
&gt; &gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:113
&gt; &gt;          for (auto* embellishedOperator : embellishedOperators)
&gt; 
&gt; I think you&apos;ll need to do a for (size_t i = 0; i &lt;
&gt; embellishedOperators.size(); i++) in order to call fixLayoutAfterStretch and
&gt; ensure that embellishedOperator-&gt;logicalWidth() is correctly set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384031</commentid>
    <comment_count>10</comment_count>
      <attachid>329737</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-12-20 21:55:15 -0800</bug_when>
    <thetext>Comment on attachment 329737
Patch

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

&gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:93
&gt; +    // stretched to cover the base rather than the text comment, the latter of which could be very wide.

I don&apos;t think it&apos;s appropriate to insert a (vague) example in the general description of the algorithm. If you really want examples, they should be in separate paragraph describing some use cases in my opinion. But I believe it&apos;s better to have use cases as non-regression tests so that people don&apos;t change the behavior so easily in the future ;-) In any case, the &quot;even if&quot; part of the 4th point is rather to handle this situation of attachment 328081:

&lt;munder&gt;
  &lt;mtext&gt;SHORT TEXT&lt;/mtext&gt;
  &lt;msub&gt;
    &lt;mo&gt;...&lt;/mo&gt;
    &lt;mtext&gt;VERY LONG TEXT&lt;/mtext&gt;
  &lt;/msub&gt;
&lt;/munder&gt;

where the unstretched size of the &lt;msub&gt; is *already* large enough to cover the width of the base. Stretching the &lt;mo&gt; at the core to cover the base width makes the &lt;msub&gt; even wider. So one interpretation of the spec might be that we actually don&apos;t need to stretch the &lt;mo&gt; at all. The 4th item says we don&apos;t care and stretch it anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384596</commentid>
    <comment_count>11</comment_count>
      <attachid>330156</attachid>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-22 19:03:53 -0800</bug_when>
    <thetext>Created attachment 330156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384609</commentid>
    <comment_count>12</comment_count>
      <attachid>330156</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-12-23 01:25:03 -0800</bug_when>
    <thetext>Comment on attachment 330156
Patch

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

@Minsheng: Thanks for the test. I&apos;m repeating my previous feedback since it seems you missed them in this patch again.

&gt; Source/WebCore/ChangeLog:3
&gt; +        [Followup to 179682] Add comment and code style improvement to MUnderOver&apos;s layout functions

See my previous comment about &quot;MUnderOver&quot; and explaining in the desc that this integrates missing changes from bug 179682. You can edit the bug title on Bugzilla BTW.

&gt; Source/WebCore/ChangeLog:16
&gt; +        It also provide comments for stretchHorizontalOperatorsAndLayoutChildren() and elinminates

See my previous comment about the spelling of &quot;eliminates&quot;.

&gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:93
&gt; +    // stretched to cover the base rather than the text comment, the latter of which could be very wide.

See my previous comment about this example.

&gt; LayoutTests/mathml/opentype/munderover-stretch-width-expected.txt:26
&gt; +This test passes if you see both the red thing the blue thing has the same width as the black bar.

that the red and blue things have

&gt; LayoutTests/mathml/opentype/munderover-stretch-width.html:145
&gt; +    &lt;p&gt;This test passes if you see both the red thing the blue thing has the same width as the black bar.&lt;/p&gt;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384610</commentid>
    <comment_count>13</comment_count>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-23 04:21:22 -0800</bug_when>
    <thetext>Quite sorry that I missed lots of things lately. Just focused on the behavior-changing part and forgot everything else.

(In reply to Frédéric Wang (:fredw) [back 03/01/2018] from comment #12)
&gt; Comment on attachment 330156 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=330156&amp;action=review
&gt; 
&gt; @Minsheng: Thanks for the test. I&apos;m repeating my previous feedback since it
&gt; seems you missed them in this patch again.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        [Followup to 179682] Add comment and code style improvement to MUnderOver&apos;s layout functions
&gt; 
&gt; See my previous comment about &quot;MUnderOver&quot; and explaining in the desc that
&gt; this integrates missing changes from bug 179682. You can edit the bug title
&gt; on Bugzilla BTW.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        It also provide comments for stretchHorizontalOperatorsAndLayoutChildren() and elinminates
&gt; 
&gt; See my previous comment about the spelling of &quot;eliminates&quot;.
&gt; 
&gt; &gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:93
&gt; &gt; +    // stretched to cover the base rather than the text comment, the latter of which could be very wide.
&gt; 
&gt; See my previous comment about this example.
&gt; 
&gt; &gt; LayoutTests/mathml/opentype/munderover-stretch-width-expected.txt:26
&gt; &gt; +This test passes if you see both the red thing the blue thing has the same width as the black bar.
&gt; 
&gt; that the red and blue things have
&gt; 
&gt; &gt; LayoutTests/mathml/opentype/munderover-stretch-width.html:145
&gt; &gt; +    &lt;p&gt;This test passes if you see both the red thing the blue thing has the same width as the black bar.&lt;/p&gt;
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384611</commentid>
    <comment_count>14</comment_count>
      <attachid>330161</attachid>
    <who name="Minsheng Liu">lambda</who>
    <bug_when>2017-12-23 06:08:19 -0800</bug_when>
    <thetext>Created attachment 330161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384612</commentid>
    <comment_count>15</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-12-23 07:45:59 -0800</bug_when>
    <thetext>Thanks, I&apos;m still unsure about the unembellishedOperator change, but let&apos;s see that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384614</commentid>
    <comment_count>16</comment_count>
      <attachid>330161</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-23 08:05:44 -0800</bug_when>
    <thetext>Comment on attachment 330161
Patch

Clearing flags on attachment: 330161

Committed r226287: &lt;https://trac.webkit.org/changeset/226287&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384615</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-23 08:05:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384616</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-23 08:06:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/36202139&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329648</attachid>
            <date>2017-12-18 04:00:31 -0800</date>
            <delta_ts>2017-12-18 20:44:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180923-20171218200025.patch</filename>
            <type>text/plain</type>
            <size>7352</size>
            <attacher name="Minsheng Liu">lambda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4YWE3YWE0MTI3N2Vj
OWM0MDMxZDdiMzk3YzhhOTRhOGYyNjQ4Mi4uZmJlN2Q4ZWVlNDc0MGQwZTQzYWI2OWI2OTUwYjNi
NjgzZDI4YjQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTEyLTE4ICBNaW5z
aGVuZyBMaXUgIDxsYW1iZGFAbGl1Lm1zPgorCisgICAgICAgIFtGb2xsb3d1cCB0byAxNzk2ODJd
IEFkZCBjb21tZW50IGFuZCBjb2RlIHN0eWxlIGltcHJvdmVtZW50IHRvIE1VbmRlck92ZXIncyBs
YXlvdXQgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODA5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgcGF0Y2ggaW1wcm92ZXMgdGhlIGNvZGUgaW4gUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmNwcC4KKworICAgICAgICBJdCByZW1vdmVzIHNldmVyYWwgbGluZXMgb2YgdHJhaWxpbmcg
c3BhY2VzLCBjaGFuZ2VzIHNldmVyYWwgcG9pbnRlcnMgdG8gcmVmZXJlbmNlcywgYW5kCisgICAg
ICAgIHJld3JpdGVzIHRvSG9yaXpvbnRhbFN0cmV0Y2h5T3BlcmF0b3IoKSB0byBtYWtlIGl0IG1v
cmUgY29uZm9ybWluZyB0byBXZWJLaXQncyBjb2Rpbmcgc3R5bGUuCisKKyAgICAgICAgSXQgYWxz
byBwcm92aWRlIGNvbW1lbnRzIGZvciBzdHJldGNoSG9yaXpvbnRhbE9wZXJhdG9yc0FuZExheW91
dENoaWxkcmVuKCkgYW5kIGVsaW5taW5hdGVzCisgICAgICAgIGFuIHVubmVjZXNzYXJ5IGNhbGwg
dG8gZml4TGF5b3V0QWZ0ZXJTdHJldGNoKCkgdGhlcmUuCisKKyAgICAgICAgVGhlcmUgaXMgbm8g
YmVoYXZpb3IgY2hhbmdlIHNvIG5vIG5ldyB0ZXN0cyBhcmUgbmVjZXNzYXJ5LgorCisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cmVzZXRTdHJldGNoU2l6ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9Ib3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpmaXhMYXlvdXRBZnRlclN0cmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
VW5kZXJPdmVyOjpzdHJldGNoSG9yaXpvbnRhbE9wZXJhdG9yc0FuZExheW91dENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6bGF5b3V0QmxvY2spOgor
CiAyMDE3LTEyLTE3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogTWFrZSBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzKCkg
cmV0cmlldmUgY3VycmVudCBzdGF0dXMgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuY3BwCmluZGV4IDdiMDZiMDdlYjRjZWE4MzNjNTE3ZGJiMDJhZDFhOTcxNmY5YTlkOTAuLjE3
ZmE5OTQ4ODY5MDVhNzZhYzA5NGM2MTYzYjBhOGU4NjhlYWVlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3Bw
CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c3RyZXRjaFRv
KExheW91dFVuaXQgd2lkdGgpCiB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpyZXNldFN0cmV0
Y2hTaXplKCkKIHsKICAgICBBU1NFUlQoIWlzU3RyZXRjaFdpZHRoTG9ja2VkKCkpOwotICAgIAor
CiAgICAgaWYgKGlzVmVydGljYWwoKSkgewogICAgICAgICBtX3N0cmV0Y2hIZWlnaHRBYm92ZUJh
c2VsaW5lID0gMDsKICAgICAgICAgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VW5kZXJPdmVyLmNwcAppbmRleCA4NTNjNGNkMmRmN2FkYzU3YjcxZDhjNTEwNGQ3NzVhZmIwODFl
MjE2Li5kMzkxNzVkOWNlZWNmNGZiZTU1YjUzMGVkMDNlZDg3ODVmZTMzN2MwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRl
ck92ZXIuY3BwCkBAIC01MCw1NiArNTAsNzMgQEAgTWF0aE1MVW5kZXJPdmVyRWxlbWVudCYgUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyOjplbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TWF0aE1MVW5kZXJPdmVyRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAK
LXN0YXRpYyBSZW5kZXJNYXRoTUxPcGVyYXRvciogdG9Ib3Jpem9udGFsU3RyZXRjaHlPcGVyYXRv
cihSZW5kZXJCb3gqIGJveCkKK3N0YXRpYyBSZW5kZXJNYXRoTUxPcGVyYXRvciogdG9Ib3Jpem9u
dGFsU3RyZXRjaHlPcGVyYXRvcihSZW5kZXJCb3gmIGJveCkKIHsKLSAgICBpZiAoaXM8UmVuZGVy
TWF0aE1MQmxvY2s+KGJveCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyT3BlcmF0b3IgPSBk
b3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oKmJveCkudW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkp
IHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJPcGVyYXRvci0+aXNTdHJldGNoeSgpICYmICFyZW5k
ZXJPcGVyYXRvci0+aXNWZXJ0aWNhbCgpICYmICFyZW5kZXJPcGVyYXRvci0+aXNTdHJldGNoV2lk
dGhMb2NrZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyT3BlcmF0b3I7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpczxSZW5kZXJNYXRo
TUxCbG9jaz4oYm94KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiByZW5k
ZXJPcGVyYXRvciA9IGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPihib3gpLnVuZW1iZWxsaXNo
ZWRPcGVyYXRvcigpOworICAgIGlmICghcmVuZGVyT3BlcmF0b3IpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgaWYgKCFyZW5kZXJPcGVyYXRvci0+aXNTdHJldGNoeSgpIHx8IHJlbmRl
ck9wZXJhdG9yLT5pc1ZlcnRpY2FsKCkgfHwgcmVuZGVyT3BlcmF0b3ItPmlzU3RyZXRjaFdpZHRo
TG9ja2VkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHJlbmRlck9w
ZXJhdG9yOwogfQotICAgIAotc3RhdGljIHZvaWQgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKFJlbmRl
ckJveCogYW5jZXN0b3IsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBzdHJldGNoeU9wZXJhdG9yKQor
CitzdGF0aWMgdm9pZCBmaXhMYXlvdXRBZnRlclN0cmV0Y2goUmVuZGVyQm94JiBhbmNlc3Rvciwg
UmVuZGVyTWF0aE1MT3BlcmF0b3ImIHN0cmV0Y2h5T3BlcmF0b3IpCiB7Ci0gICAgc3RyZXRjaHlP
cGVyYXRvci0+c2V0U3RyZXRjaFdpZHRoTG9ja2VkKHRydWUpOwotICAgIHN0cmV0Y2h5T3BlcmF0
b3ItPnNldE5lZWRzTGF5b3V0KCk7Ci0gICAgYW5jZXN0b3ItPmxheW91dElmTmVlZGVkKCk7Ci0g
ICAgc3RyZXRjaHlPcGVyYXRvci0+c2V0U3RyZXRjaFdpZHRoTG9ja2VkKGZhbHNlKTsKKyAgICBz
dHJldGNoeU9wZXJhdG9yLnNldFN0cmV0Y2hXaWR0aExvY2tlZCh0cnVlKTsKKyAgICBzdHJldGNo
eU9wZXJhdG9yLnNldE5lZWRzTGF5b3V0KCk7CisgICAgYW5jZXN0b3IubGF5b3V0SWZOZWVkZWQo
KTsKKyAgICBzdHJldGNoeU9wZXJhdG9yLnNldFN0cmV0Y2hXaWR0aExvY2tlZChmYWxzZSk7CiB9
CiAKIHZvaWQgUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpzdHJldGNoSG9yaXpvbnRhbE9wZXJhdG9y
c0FuZExheW91dENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKICAgICBBU1NF
UlQobmVlZHNMYXlvdXQoKSk7CisKKyAgICAvLyBXZSBhcHBseSBob3Jpem9udGFsIHN0cmV0Y2h5
IHJ1bGVzIGZyb20gdGhlIE1hdGhNTCBzcGVjIChzZWN0aW9ucyAzLjIuNS44LjMgYW5kIDMuMi41
LjguNCksIHdoaWNoCisgICAgLy8gY2FuIGJlIHJvdWdobHkgc3VtbWFyaXplZCBhcyAic3RyZXRj
aGluZyBvcGVyYXRvcnMgdG8gdGhlIG1heGltdW0gd2lkdGhzIG9mIGFsbCBjaGlsZHJlbiIgYW5k
CisgICAgLy8gbWlub3IgdmFyaWF0aW9ucyBvZiB0aGF0IGFsZ29yaXRobSBkbyBub3QgYWZmZWN0
IHRoZSByZXN1bHQuIEhvd2V2ZXIsIHRoZSBzcGVjIGlzIGEgYml0IGFtYmlndW91cworICAgIC8v
IGZvciBlbWJlbGxpc2hlZCBvcGVyYXRvcnMgKHNlY3Rpb24gMy4yLjUuNy4zKSBhbmQgZGlmZmVy
ZW50IGFwcHJvYWNoZXMgY2FuIGxlYWQgdG8gc2lnbmlmaWNhbnQKKyAgICAvLyBzdHJldGNoIHNp
emUgZGlmZmVyZW5jZXMuIFdlIG1hZGUgdGhlIGZvbGxvd2luZyBkZWNpc2lvbnM6CisgICAgLy8g
LSBUaGUgdW5zdHJldGNoZWQgc2l6ZSBpcyB0aGUgZW1iZWxsaXNoZWQgb3BlcmF0b3Igd2lkdGgg
d2l0aCB0aGUgPG1vPiBhdCB0aGUgY29yZSB1bnN0cmV0Y2hlZC4KKyAgICAvLyAtIEluIGdlbmVy
YWwsIHRoZSB0YXJnZXQgc2l6ZSBpcyBqdXN0IHRoZSBtYXhpbXVtIHdpZHRocyBvZiBub24tc3Ry
ZXRjaHkgY2hpbGRyZW4gYmVjYXVzZSB0aGUKKyAgICAvLyBlbWJlbGxpc2htZW50cyBjb3VsZCBt
YWtlIHdpZHRocyBzaWduaWZpY2FudGx5IGxhcmdlci4KKyAgICAvLyAtIEluIHRoZSBlZGdlIGNh
c2Ugd2hlbiBhbGwgb3BlcmF0b3JzIG9mIHN0cmV0Y2h5LCB3ZSBmb2xsb3cgdGhlIHNwZWNpZmlj
YXRpb24gYW5kIHRha2UgdGhlCisgICAgLy8gbWF4aW11bSBvZiBhbGwgdW5zdHJldGNoZWQgc2l6
ZXMuCisgICAgLy8gLSBUaGUgPG1vPiBhdCB0aGUgY29yZSBpcyBzdHJldGNoZWQgdG8gY292ZXIg
dGhlIHRhcmdldCBzaXplLCBldmVuIGlmIHRoZSBlbWJlbGxpc2hlZCBvcGVyYXRvcgorICAgIC8v
IG1pZ2h0IGJlY29tZSBtdWNoIHdpZGVyLiBGb3IgaW5zdGFuY2UsIGZvciBhIGhvcml6b250YWwg
YnJhY2Ugd2l0aCB0ZXh0IGNvbW1lbnQsIHRoZSBicmFjZSBpcworICAgIC8vIHN0cmV0Y2hlZCB0
byBjb3ZlciB0aGUgYmFzZSByYXRoZXIgdGhhbiB0aGUgdGV4dCBjb21tZW50LCB0aGUgbGF0dGVy
IG9mIHdoaWNoIGNvdWxkIGJlIHZlcnkgd2lkZS4KICAgICAKICAgICBWZWN0b3I8UmVuZGVyQm94
KiwgMz4gZW1iZWxsaXNoZWRPcGVyYXRvcnM7CiAgICAgVmVjdG9yPFJlbmRlck1hdGhNTE9wZXJh
dG9yKiwgMz4gc3RyZXRjaHlPcGVyYXRvcnM7CiAgICAgYm9vbCBpc0FsbFN0cmV0Y2h5T3BlcmF0
b3JzID0gdHJ1ZTsKICAgICBMYXlvdXRVbml0IHN0cmV0Y2hXaWR0aCA9IDA7Ci0gICAgCisKICAg
ICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICBpZiAoYXV0byogc3RyZXRjaHlPcGVyYXRv
ciA9IHRvSG9yaXpvbnRhbFN0cmV0Y2h5T3BlcmF0b3IoY2hpbGQpKSB7CisgICAgICAgIGlmIChh
dXRvKiBzdHJldGNoeU9wZXJhdG9yID0gdG9Ib3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcigqY2hp
bGQpKSB7CiAgICAgICAgICAgICBlbWJlbGxpc2hlZE9wZXJhdG9ycy5hcHBlbmQoY2hpbGQpOwog
ICAgICAgICAgICAgc3RyZXRjaHlPcGVyYXRvcnMuYXBwZW5kKHN0cmV0Y2h5T3BlcmF0b3IpOwog
ICAgICAgICAgICAgc3RyZXRjaHlPcGVyYXRvci0+cmVzZXRTdHJldGNoU2l6ZSgpOwotICAgICAg
ICAgICAgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKGNoaWxkLCBzdHJldGNoeU9wZXJhdG9yKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlzQWxsU3RyZXRjaHlPcGVyYXRvcnMgPSBmYWxz
ZTsKICAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICAgICAgc3Ry
ZXRjaFdpZHRoID0gc3RkOjptYXgoc3RyZXRjaFdpZHRoLCBjaGlsZC0+bG9naWNhbFdpZHRoKCkp
OwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKGlzQWxsU3RyZXRjaHlPcGVyYXRv
cnMpIHsKICAgICAgICAgZm9yIChhdXRvKiBlbWJlbGxpc2hlZE9wZXJhdG9yIDogZW1iZWxsaXNo
ZWRPcGVyYXRvcnMpCiAgICAgICAgICAgICBzdHJldGNoV2lkdGggPSBzdGQ6Om1heChzdHJldGNo
V2lkdGgsIGVtYmVsbGlzaGVkT3BlcmF0b3ItPmxvZ2ljYWxXaWR0aCgpKTsKICAgICB9Ci0gICAg
CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVtYmVsbGlzaGVkT3BlcmF0b3JzLnNpemUo
KTsgaSsrKSB7CiAgICAgICAgIHN0cmV0Y2h5T3BlcmF0b3JzW2ldLT5zdHJldGNoVG8oc3RyZXRj
aFdpZHRoKTsKLSAgICAgICAgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKGVtYmVsbGlzaGVkT3BlcmF0
b3JzW2ldLCBzdHJldGNoeU9wZXJhdG9yc1tpXSk7CisgICAgICAgIGZpeExheW91dEFmdGVyU3Ry
ZXRjaCgqZW1iZWxsaXNoZWRPcGVyYXRvcnNbaV0sICpzdHJldGNoeU9wZXJhdG9yc1tpXSk7CiAg
ICAgfQogfQogCkBAIC0yOTAsNyArMzA3LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6
OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG8KICAg
ICBBU1NFUlQoIWJhc2UoKS5uZWVkc0xheW91dCgpKTsKICAgICBBU1NFUlQoc2NyaXB0VHlwZSgp
ID09IFNjcmlwdFR5cGU6Ok92ZXIgfHwgIXVuZGVyKCkubmVlZHNMYXlvdXQoKSk7CiAgICAgQVNT
RVJUKHNjcmlwdFR5cGUoKSA9PSBTY3JpcHRUeXBlOjpVbmRlciB8fCAhb3ZlcigpLm5lZWRzTGF5
b3V0KCkpOwotICAgIAorCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBiYXNlKCkubG9n
aWNhbFdpZHRoKCk7CiAgICAgaWYgKHNjcmlwdFR5cGUoKSA9PSBTY3JpcHRUeXBlOjpVbmRlciB8
fCBzY3JpcHRUeXBlKCkgPT0gU2NyaXB0VHlwZTo6VW5kZXJPdmVyKQogICAgICAgICBsb2dpY2Fs
V2lkdGggPSBzdGQ6Om1heChsb2dpY2FsV2lkdGgsIHVuZGVyKCkubG9naWNhbFdpZHRoKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329734</attachid>
            <date>2017-12-18 20:44:41 -0800</date>
            <delta_ts>2017-12-18 20:51:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180923-20171219124438.patch</filename>
            <type>text/plain</type>
            <size>11867</size>
            <attacher name="Minsheng Liu">lambda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNjlkOGVhYjE3ZTgx
YWNiOTg4NDUyNWUwZjIwMjJiMzM1YzRmOS4uZDQ5MTc0OGVkNTgyNzY3YWE4NGNkZTQ3ZDI0OWI3
NTFmYTRlYWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTEyLTE4ICBNaW5z
aGVuZyBMaXUgIDxsYW1iZGFAbGl1Lm1zPgorCisgICAgICAgIFtGb2xsb3d1cCB0byAxNzk2ODJd
IEFkZCBjb21tZW50IGFuZCBjb2RlIHN0eWxlIGltcHJvdmVtZW50IHRvIE1VbmRlck92ZXIncyBs
YXlvdXQgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODA5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgcGF0Y2ggaW1wcm92ZXMgdGhlIGNvZGUgaW4gUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmNwcC4KKworICAgICAgICBJdCByZW1vdmVzIHNldmVyYWwgbGluZXMgb2YgdHJhaWxpbmcg
c3BhY2VzLCBjaGFuZ2VzIHNldmVyYWwgcG9pbnRlcnMgdG8gcmVmZXJlbmNlcywgYW5kCisgICAg
ICAgIHJld3JpdGVzIHRvSG9yaXpvbnRhbFN0cmV0Y2h5T3BlcmF0b3IoKSB0byBtYWtlIGl0IG1v
cmUgY29uZm9ybWluZyB0byBXZWJLaXQncyBjb2Rpbmcgc3R5bGUuCisKKyAgICAgICAgSXQgbWFr
ZXMgdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgYSBjb25zdCBmdW5jdGlvbi4KKworICAgICAgICBJ
dCBhbHNvIHByb3ZpZGUgY29tbWVudHMgZm9yIHN0cmV0Y2hIb3Jpem9udGFsT3BlcmF0b3JzQW5k
TGF5b3V0Q2hpbGRyZW4oKSBhbmQgZWxpbm1pbmF0ZXMKKyAgICAgICAgYW4gdW5uZWNlc3Nhcnkg
Y2FsbCB0byBmaXhMYXlvdXRBZnRlclN0cmV0Y2goKSB0aGVyZS4KKworICAgICAgICBUaGVyZSBp
cyBubyBiZWhhdmlvciBjaGFuZ2Ugc28gbm8gbmV3IHRlc3RzIGFyZSBuZWNlc3NhcnkuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpyZXNldFN0cmV0Y2hTaXplKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0hvcml6b250YWxTdHJldGNoeU9wZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpeExheW91dEFmdGVyU3RyZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxVbmRlck92ZXI6OnN0cmV0Y2hIb3Jpem9udGFsT3BlcmF0b3JzQW5kTGF5b3V0Q2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpsYXlvdXRCbG9j
ayk6CisKIDIwMTctMTItMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQXNzZXJ0aW9uIGhpdCBpbiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldCB3aGlsZSByZW1v
dmluZyBhIGZvcm0gZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IGU5YzE4YTQwYmNhYjdiZjY4MWNkNzUxZDIz
NDA1NWU1NTAxYWM5YzMuLjkzOTI2ZjZkNTZjOGI5MmFiODI3ODU4OGVlYWZjNzNjZTM4NDY3OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIC8vIGVtYmVsbGlzaGVkIG9w
ZXJhdG9yLCBhbmQgb21pdHMgYW55IGVtYmVsbGlzaG1lbnRzLgogICAgIC8vIEZJWE1FOiBXZSBk
b24ndCB5ZXQgaGFuZGxlIGFsbCB0aGUgY2FzZXMgaW4gdGhlIE1hdGhNTCBzcGVjLiBTZWUKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg2MTcuCi0gICAg
dmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNo
ZWRPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIGludCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZyYWN0aW9uLmNwcAppbmRleCBhNTE3ZmRlYmY3MGQ2M2ZhOWM2MzFjY2Y5NWY4ODNhZjAx
YWRmODdjLi45YzE4YjUzMDU3Zjc3NGI3MGU4YzBiZDBjNDVhYjBiOGU0ZDZkNWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpTdGFj
a1BhcmFtZXRlcnMgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycygpCiAgICAg
cmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRo
TUxGcmFjdGlvbjo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkKK1JlbmRlck1hdGhNTE9wZXJhdG9y
KiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgY29uc3QKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXM8UmVuZGVyTWF0aE1MQmxvY2s+KG51bWVyYXRvcigp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggMmVkNjkyNDlhOTg2
ZmJmZGNlYjQ2Mjg3MDlhMDNlZWRhYzc0ZTJkZC4uNzc2N2QzYmUwNzk1MzQxYThiM2M4M2YxNjYz
MWI0YjkzMjk4NWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2h0ID0gMCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwotICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVt
YmVsbGlzaGVkT3BlcmF0b3IoKSBmaW5hbDsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5l
bWJlbGxpc2hlZE9wZXJhdG9yKCkgY29uc3QgZmluYWw7CiAKICAgICBNYXRoTUxGcmFjdGlvbkVs
ZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxGcmFjdGlv
bkVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5k
ZXggN2IwNmIwN2ViNGNlYTgzM2M1MTdkYmIwMmFkMWE5NzE2ZjlhOWQ5MC4uMTdmYTk5NDg4Njkw
NWE3NmFjMDk0YzYxNjNiMGE4ZTg2OGVhZWVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTE3OCw3
ICsxNzgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpzdHJldGNoVG8oTGF5b3V0VW5p
dCB3aWR0aCkKIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnJlc2V0U3RyZXRjaFNpemUoKQog
ewogICAgIEFTU0VSVCghaXNTdHJldGNoV2lkdGhMb2NrZWQoKSk7Ci0gICAgCisKICAgICBpZiAo
aXNWZXJ0aWNhbCgpKSB7CiAgICAgICAgIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgPSAw
OwogICAgICAgICBtX3N0cmV0Y2hEZXB0aEJlbG93QmFzZWxpbmUgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmlu
ZGV4IGIyNDc4YzljYzdkMjhhNTc5YjE0MmRhNWNlYTMzNmI5ZGVmOTE5OTUuLjIzODBkZDVlZWI4
ODRmMzRhNTkzNzA3NDRhMThjOTNlMDFjMmY5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTgwLDcgKzgw
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzSW52aXNpYmxlT3BlcmF0b3IoKSBjb25zdDsKIAog
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwot
ICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBmaW5hbCB7
IHJldHVybiB0aGlzOyB9CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRP
cGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyTWF0aE1MT3Bl
cmF0b3IqPih0aGlzKTsgfQogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJh
dG9yU2hpZnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5kZXggM2UyYTU1OWQwMDU0ODg2MjBk
MTlhNDMxZGJiMDM1ODNlNThjMGVhNy4uMDI1MTQyMzcyMWRiNzA5MzZlOGMwOGZjMTZiYTNiOGU1
OWE1OGRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFNjcmlwdFR5cGUgUmVu
ZGVyTWF0aE1MU2NyaXB0czo6c2NyaXB0VHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVsZW1lbnQo
KS5zY3JpcHRUeXBlKCk7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRoTUxT
Y3JpcHRzOjp1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKQorUmVuZGVyTWF0aE1MT3BlcmF0b3IqIFJl
bmRlck1hdGhNTFNjcmlwdHM6OnVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0CiB7CiAgICAg
YXV0byBiYXNlID0gZmlyc3RDaGlsZEJveCgpOwogICAgIGlmICghaXM8UmVuZGVyTWF0aE1MQmxv
Y2s+KGJhc2UpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNjcmlwdHMuaAppbmRleCA0MDRkN2Y0OTA4OTgxM2YyY2JhMTcxNzMzMTY1OTlh
MjdmNDA5NjA3Li43ZWIzZjA4ZjBiNDQ2ODRlODBiZWE4MzBlMWYyY2MyY2VjYThlNGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNj
cmlwdHMuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxTY3JpcHRzIDogcHVi
bGljIFJlbmRlck1hdGhNTEJsb2NrIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJlbmRl
ck1hdGhNTFNjcmlwdHMpOwogcHVibGljOgogICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoTWF0aE1M
U2NyaXB0c0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKLSAgICBSZW5kZXJNYXRoTUxPcGVyYXRv
ciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgZmluYWw7CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0
b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFVuZGVyT3Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKaW5kZXggODUzYzRjZDJkZjdhZGM1N2I3MWQ4YzUxMDRk
Nzc1YWZiMDgxZTIxNi4uZGVhOTdjNDVkNDgxMmQwZGE2NDlkMDg1MWM2ZmY4MzlhYmFhZDczNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxV
bmRlck92ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmNwcApAQCAtNTAsNTYgKzUwLDczIEBAIE1hdGhNTFVuZGVyT3ZlckVs
ZW1lbnQmIFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3Vz
KCkpOwogfQogCi1zdGF0aWMgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHRvSG9yaXpvbnRhbFN0cmV0
Y2h5T3BlcmF0b3IoUmVuZGVyQm94KiBib3gpCitzdGF0aWMgUmVuZGVyTWF0aE1MT3BlcmF0b3Iq
IGhvcml6b250YWxTdHJldGNoeU9wZXJhdG9yKGNvbnN0IFJlbmRlckJveCYgYm94KQogewotICAg
IGlmIChpczxSZW5kZXJNYXRoTUxCbG9jaz4oYm94KSkgewotICAgICAgICBpZiAoYXV0byByZW5k
ZXJPcGVyYXRvciA9IGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPigqYm94KS51bmVtYmVsbGlz
aGVkT3BlcmF0b3IoKSkgewotICAgICAgICAgICAgaWYgKHJlbmRlck9wZXJhdG9yLT5pc1N0cmV0
Y2h5KCkgJiYgIXJlbmRlck9wZXJhdG9yLT5pc1ZlcnRpY2FsKCkgJiYgIXJlbmRlck9wZXJhdG9y
LT5pc1N0cmV0Y2hXaWR0aExvY2tlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJP
cGVyYXRvcjsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAo
IWlzPFJlbmRlck1hdGhNTEJsb2NrPihib3gpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGF1dG8qIHJlbmRlck9wZXJhdG9yID0gZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KGJv
eCkudW5lbWJlbGxpc2hlZE9wZXJhdG9yKCk7CisgICAgaWYgKCFyZW5kZXJPcGVyYXRvcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXJlbmRlck9wZXJhdG9yLT5pc1N0cmV0
Y2h5KCkgfHwgcmVuZGVyT3BlcmF0b3ItPmlzVmVydGljYWwoKSB8fCByZW5kZXJPcGVyYXRvci0+
aXNTdHJldGNoV2lkdGhMb2NrZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gcmVuZGVyT3BlcmF0b3I7CiB9Ci0gICAgCi1zdGF0aWMgdm9pZCBmaXhMYXlvdXRBZnRl
clN0cmV0Y2goUmVuZGVyQm94KiBhbmNlc3RvciwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHN0cmV0
Y2h5T3BlcmF0b3IpCisKK3N0YXRpYyB2b2lkIGZpeExheW91dEFmdGVyU3RyZXRjaChSZW5kZXJC
b3gmIGFuY2VzdG9yLCBSZW5kZXJNYXRoTUxPcGVyYXRvciYgc3RyZXRjaHlPcGVyYXRvcikKIHsK
LSAgICBzdHJldGNoeU9wZXJhdG9yLT5zZXRTdHJldGNoV2lkdGhMb2NrZWQodHJ1ZSk7Ci0gICAg
c3RyZXRjaHlPcGVyYXRvci0+c2V0TmVlZHNMYXlvdXQoKTsKLSAgICBhbmNlc3Rvci0+bGF5b3V0
SWZOZWVkZWQoKTsKLSAgICBzdHJldGNoeU9wZXJhdG9yLT5zZXRTdHJldGNoV2lkdGhMb2NrZWQo
ZmFsc2UpOworICAgIHN0cmV0Y2h5T3BlcmF0b3Iuc2V0U3RyZXRjaFdpZHRoTG9ja2VkKHRydWUp
OworICAgIHN0cmV0Y2h5T3BlcmF0b3Iuc2V0TmVlZHNMYXlvdXQoKTsKKyAgICBhbmNlc3Rvci5s
YXlvdXRJZk5lZWRlZCgpOworICAgIHN0cmV0Y2h5T3BlcmF0b3Iuc2V0U3RyZXRjaFdpZHRoTG9j
a2VkKGZhbHNlKTsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OnN0cmV0Y2hIb3Jp
em9udGFsT3BlcmF0b3JzQW5kTGF5b3V0Q2hpbGRyZW4oKQogewogICAgIEFTU0VSVChpc1ZhbGlk
KCkpOwogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKKworICAgIC8vIFdlIGFwcGx5IGhvcml6
b250YWwgc3RyZXRjaHkgcnVsZXMgZnJvbSB0aGUgTWF0aE1MIHNwZWMgKHNlY3Rpb25zIDMuMi41
LjguMyBhbmQgMy4yLjUuOC40KSwgd2hpY2gKKyAgICAvLyBjYW4gYmUgcm91Z2hseSBzdW1tYXJp
emVkIGFzICJzdHJldGNoaW5nIG9wZXJhdG9ycyB0byB0aGUgbWF4aW11bSB3aWR0aHMgb2YgYWxs
IGNoaWxkcmVuIiBhbmQKKyAgICAvLyBtaW5vciB2YXJpYXRpb25zIG9mIHRoYXQgYWxnb3JpdGht
IGRvIG5vdCBhZmZlY3QgdGhlIHJlc3VsdC4gSG93ZXZlciwgdGhlIHNwZWMgaXMgYSBiaXQgYW1i
aWd1b3VzCisgICAgLy8gZm9yIGVtYmVsbGlzaGVkIG9wZXJhdG9ycyAoc2VjdGlvbiAzLjIuNS43
LjMpIGFuZCBkaWZmZXJlbnQgYXBwcm9hY2hlcyBjYW4gbGVhZCB0byBzaWduaWZpY2FudAorICAg
IC8vIHN0cmV0Y2ggc2l6ZSBkaWZmZXJlbmNlcy4gV2UgbWFkZSB0aGUgZm9sbG93aW5nIGRlY2lz
aW9uczoKKyAgICAvLyAtIFRoZSB1bnN0cmV0Y2hlZCBzaXplIGlzIHRoZSBlbWJlbGxpc2hlZCBv
cGVyYXRvciB3aWR0aCB3aXRoIHRoZSA8bW8+IGF0IHRoZSBjb3JlIHVuc3RyZXRjaGVkLgorICAg
IC8vIC0gSW4gZ2VuZXJhbCwgdGhlIHRhcmdldCBzaXplIGlzIGp1c3QgdGhlIG1heGltdW0gd2lk
dGhzIG9mIG5vbi1zdHJldGNoeSBjaGlsZHJlbiBiZWNhdXNlIHRoZQorICAgIC8vIGVtYmVsbGlz
aG1lbnRzIGNvdWxkIG1ha2Ugd2lkdGhzIHNpZ25pZmljYW50bHkgbGFyZ2VyLgorICAgIC8vIC0g
SW4gdGhlIGVkZ2UgY2FzZSB3aGVuIGFsbCBvcGVyYXRvcnMgb2Ygc3RyZXRjaHksIHdlIGZvbGxv
dyB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgdGFrZSB0aGUKKyAgICAvLyBtYXhpbXVtIG9mIGFsbCB1
bnN0cmV0Y2hlZCBzaXplcy4KKyAgICAvLyAtIFRoZSA8bW8+IGF0IHRoZSBjb3JlIGlzIHN0cmV0
Y2hlZCB0byBjb3ZlciB0aGUgdGFyZ2V0IHNpemUsIGV2ZW4gaWYgdGhlIGVtYmVsbGlzaGVkIG9w
ZXJhdG9yCisgICAgLy8gbWlnaHQgYmVjb21lIG11Y2ggd2lkZXIuIEZvciBpbnN0YW5jZSwgZm9y
IGEgaG9yaXpvbnRhbCBicmFjZSB3aXRoIHRleHQgY29tbWVudCwgdGhlIGJyYWNlIGlzCisgICAg
Ly8gc3RyZXRjaGVkIHRvIGNvdmVyIHRoZSBiYXNlIHJhdGhlciB0aGFuIHRoZSB0ZXh0IGNvbW1l
bnQsIHRoZSBsYXR0ZXIgb2Ygd2hpY2ggY291bGQgYmUgdmVyeSB3aWRlLgogICAgIAogICAgIFZl
Y3RvcjxSZW5kZXJCb3gqLCAzPiBlbWJlbGxpc2hlZE9wZXJhdG9yczsKICAgICBWZWN0b3I8UmVu
ZGVyTWF0aE1MT3BlcmF0b3IqLCAzPiBzdHJldGNoeU9wZXJhdG9yczsKICAgICBib29sIGlzQWxs
U3RyZXRjaHlPcGVyYXRvcnMgPSB0cnVlOwogICAgIExheW91dFVuaXQgc3RyZXRjaFdpZHRoID0g
MDsKLSAgICAKKwogICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
dHJldGNoeU9wZXJhdG9yID0gdG9Ib3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcihjaGlsZCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHN0cmV0Y2h5T3BlcmF0b3IgPSBob3Jpem9udGFsU3RyZXRjaHlP
cGVyYXRvcigqY2hpbGQpKSB7CiAgICAgICAgICAgICBlbWJlbGxpc2hlZE9wZXJhdG9ycy5hcHBl
bmQoY2hpbGQpOwogICAgICAgICAgICAgc3RyZXRjaHlPcGVyYXRvcnMuYXBwZW5kKHN0cmV0Y2h5
T3BlcmF0b3IpOwogICAgICAgICAgICAgc3RyZXRjaHlPcGVyYXRvci0+cmVzZXRTdHJldGNoU2l6
ZSgpOwotICAgICAgICAgICAgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKGNoaWxkLCBzdHJldGNoeU9w
ZXJhdG9yKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlzQWxsU3RyZXRjaHlPcGVy
YXRvcnMgPSBmYWxzZTsKICAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogICAg
ICAgICAgICAgc3RyZXRjaFdpZHRoID0gc3RkOjptYXgoc3RyZXRjaFdpZHRoLCBjaGlsZC0+bG9n
aWNhbFdpZHRoKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKGlzQWxsU3Ry
ZXRjaHlPcGVyYXRvcnMpIHsKICAgICAgICAgZm9yIChhdXRvKiBlbWJlbGxpc2hlZE9wZXJhdG9y
IDogZW1iZWxsaXNoZWRPcGVyYXRvcnMpCiAgICAgICAgICAgICBzdHJldGNoV2lkdGggPSBzdGQ6
Om1heChzdHJldGNoV2lkdGgsIGVtYmVsbGlzaGVkT3BlcmF0b3ItPmxvZ2ljYWxXaWR0aCgpKTsK
ICAgICB9Ci0gICAgCisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVtYmVsbGlzaGVkT3Bl
cmF0b3JzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIHN0cmV0Y2h5T3BlcmF0b3JzW2ldLT5zdHJl
dGNoVG8oc3RyZXRjaFdpZHRoKTsKLSAgICAgICAgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKGVtYmVs
bGlzaGVkT3BlcmF0b3JzW2ldLCBzdHJldGNoeU9wZXJhdG9yc1tpXSk7CisgICAgICAgIGZpeExh
eW91dEFmdGVyU3RyZXRjaCgqZW1iZWxsaXNoZWRPcGVyYXRvcnNbaV0sICpzdHJldGNoeU9wZXJh
dG9yc1tpXSk7CiAgICAgfQogfQogCkBAIC0yOTAsNyArMzA3LDcgQEAgdm9pZCBSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlTG8KICAgICBBU1NFUlQoIWJhc2UoKS5uZWVkc0xheW91dCgpKTsKICAgICBBU1NFUlQo
c2NyaXB0VHlwZSgpID09IFNjcmlwdFR5cGU6Ok92ZXIgfHwgIXVuZGVyKCkubmVlZHNMYXlvdXQo
KSk7CiAgICAgQVNTRVJUKHNjcmlwdFR5cGUoKSA9PSBTY3JpcHRUeXBlOjpVbmRlciB8fCAhb3Zl
cigpLm5lZWRzTGF5b3V0KCkpOwotICAgIAorCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgg
PSBiYXNlKCkubG9naWNhbFdpZHRoKCk7CiAgICAgaWYgKHNjcmlwdFR5cGUoKSA9PSBTY3JpcHRU
eXBlOjpVbmRlciB8fCBzY3JpcHRUeXBlKCkgPT0gU2NyaXB0VHlwZTo6VW5kZXJPdmVyKQogICAg
ICAgICBsb2dpY2FsV2lkdGggPSBzdGQ6Om1heChsb2dpY2FsV2lkdGgsIHVuZGVyKCkubG9naWNh
bFdpZHRoKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329737</attachid>
            <date>2017-12-18 20:51:47 -0800</date>
            <delta_ts>2017-12-22 19:03:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180923-20171219125145.patch</filename>
            <type>text/plain</type>
            <size>11918</size>
            <attacher name="Minsheng Liu">lambda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNjlkOGVhYjE3ZTgx
YWNiOTg4NDUyNWUwZjIwMjJiMzM1YzRmOS4uNjIyNGUyMjMwOTY5Njg2NDIwNmRjZDIyNTZhMTNm
OGFhZmIzM2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEyLTE4ICBNaW5z
aGVuZyBMaXUgIDxsYW1iZGFAbGl1Lm1zPgorCisgICAgICAgIFtGb2xsb3d1cCB0byAxNzk2ODJd
IEFkZCBjb21tZW50IGFuZCBjb2RlIHN0eWxlIGltcHJvdmVtZW50IHRvIE1VbmRlck92ZXIncyBs
YXlvdXQgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODA5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgcGF0Y2ggaW1wcm92ZXMgdGhlIGNvZGUgaW4gUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmNwcC4KKworICAgICAgICBJdCByZW1vdmVzIHNldmVyYWwgbGluZXMgb2YgdHJhaWxpbmcg
c3BhY2VzLCBjaGFuZ2VzIHNldmVyYWwgcG9pbnRlcnMgdG8gcmVmZXJlbmNlcywgYW5kCisgICAg
ICAgIHJld3JpdGVzIHRvSG9yaXpvbnRhbFN0cmV0Y2h5T3BlcmF0b3IoKSAocmVuYW1lZCB0byBo
b3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcigpKQorICAgICAgICB0byBtYWtlIGl0IG1vcmUgY29u
Zm9ybWluZyB0byBXZWJLaXQncyBjb2Rpbmcgc3R5bGUuCisKKyAgICAgICAgSXQgbWFrZXMgdW5l
bWJlbGxpc2hlZE9wZXJhdG9yKCkgYSBjb25zdCBmdW5jdGlvbi4KKworICAgICAgICBJdCBhbHNv
IHByb3ZpZGUgY29tbWVudHMgZm9yIHN0cmV0Y2hIb3Jpem9udGFsT3BlcmF0b3JzQW5kTGF5b3V0
Q2hpbGRyZW4oKSBhbmQgZWxpbm1pbmF0ZXMKKyAgICAgICAgYW4gdW5uZWNlc3NhcnkgY2FsbCB0
byBmaXhMYXlvdXRBZnRlclN0cmV0Y2goKSB0aGVyZS4KKworICAgICAgICBUaGVyZSBpcyBubyBi
ZWhhdmlvciBjaGFuZ2Ugc28gbm8gbmV3IHRlc3RzIGFyZSBuZWNlc3NhcnkuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpyZXNldFN0cmV0Y2hTaXplKToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0hvcml6b250YWxTdHJldGNoeU9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpeExheW91dEFmdGVyU3RyZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxV
bmRlck92ZXI6OnN0cmV0Y2hIb3Jpem9udGFsT3BlcmF0b3JzQW5kTGF5b3V0Q2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpsYXlvdXRCbG9jayk6CisK
IDIwMTctMTItMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QXNzZXJ0aW9uIGhpdCBpbiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldCB3aGlsZSByZW1vdmluZyBh
IGZvcm0gZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IGU5YzE4YTQwYmNhYjdiZjY4MWNkNzUxZDIzNDA1NWU1
NTAxYWM5YzMuLjkzOTI2ZjZkNTZjOGI5MmFiODI3ODU4OGVlYWZjNzNjZTM4NDY3OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIC8vIGVtYmVsbGlzaGVkIG9wZXJhdG9y
LCBhbmQgb21pdHMgYW55IGVtYmVsbGlzaG1lbnRzLgogICAgIC8vIEZJWE1FOiBXZSBkb24ndCB5
ZXQgaGFuZGxlIGFsbCB0aGUgY2FzZXMgaW4gdGhlIE1hdGhNTCBzcGVjLiBTZWUKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg2MTcuCi0gICAgdmlydHVh
bCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmNwcAppbmRleCBhNTE3ZmRlYmY3MGQ2M2ZhOWM2MzFjY2Y5NWY4ODNhZjAxYWRmODdj
Li45YzE4YjUzMDU3Zjc3NGI3MGU4YzBiZDBjNDVhYjBiOGU0ZDZkNWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpTdGFja1BhcmFt
ZXRlcnMgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycygpCiAgICAgcmV0dXJu
IHBhcmFtZXRlcnM7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRoTUxGcmFj
dGlvbjo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkKK1JlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgY29uc3QKIHsKICAgICBp
ZiAoIWlzVmFsaWQoKSB8fCAhaXM8UmVuZGVyTWF0aE1MQmxvY2s+KG51bWVyYXRvcigpKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggMmVkNjkyNDlhOTg2ZmJmZGNl
YjQ2Mjg3MDlhMDNlZWRhYzc0ZTJkZC4uNzc2N2QzYmUwNzk1MzQxYThiM2M4M2YxNjYzMWI0Yjkz
Mjk4NWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsSGVpZ2h0ID0gMCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIGZpbmFsOwotICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlz
aGVkT3BlcmF0b3IoKSBmaW5hbDsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxp
c2hlZE9wZXJhdG9yKCkgY29uc3QgZmluYWw7CiAKICAgICBNYXRoTUxGcmFjdGlvbkVsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxGcmFjdGlvbkVsZW1l
bnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggN2Iw
NmIwN2ViNGNlYTgzM2M1MTdkYmIwMmFkMWE5NzE2ZjlhOWQ5MC4uMTdmYTk5NDg4NjkwNWE3NmFj
MDk0YzYxNjNiMGE4ZTg2OGVhZWVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTE3OCw3ICsxNzgs
NyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpzdHJldGNoVG8oTGF5b3V0VW5pdCB3aWR0
aCkKIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnJlc2V0U3RyZXRjaFNpemUoKQogewogICAg
IEFTU0VSVCghaXNTdHJldGNoV2lkdGhMb2NrZWQoKSk7Ci0gICAgCisKICAgICBpZiAoaXNWZXJ0
aWNhbCgpKSB7CiAgICAgICAgIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgPSAwOwogICAg
ICAgICBtX3N0cmV0Y2hEZXB0aEJlbG93QmFzZWxpbmUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IGIy
NDc4YzljYzdkMjhhNTc5YjE0MmRhNWNlYTMzNmI5ZGVmOTE5OTUuLjIzODBkZDVlZWI4ODRmMzRh
NTkzNzA3NDRhMThjOTNlMDFjMmY5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTgwLDcgKzgwLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzSW52aXNpYmxlT3BlcmF0b3IoKSBjb25zdDsKIAogICAgIHN0
ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwotICAgIFJl
bmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBmaW5hbCB7IHJldHVy
biB0aGlzOyB9CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRv
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyTWF0aE1MT3BlcmF0b3Iq
Pih0aGlzKTsgfQogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJhdG9yU2hp
ZnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5kZXggM2UyYTU1OWQwMDU0ODg2MjBkMTlhNDMx
ZGJiMDM1ODNlNThjMGVhNy4uMDI1MTQyMzcyMWRiNzA5MzZlOGMwOGZjMTZiYTNiOGU1OWE1OGRj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFNjcmlwdFR5cGUgUmVuZGVyTWF0
aE1MU2NyaXB0czo6c2NyaXB0VHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5zY3Jp
cHRUeXBlKCk7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRoTUxTY3JpcHRz
Ojp1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKQorUmVuZGVyTWF0aE1MT3BlcmF0b3IqIFJlbmRlck1h
dGhNTFNjcmlwdHM6OnVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0CiB7CiAgICAgYXV0byBi
YXNlID0gZmlyc3RDaGlsZEJveCgpOwogICAgIGlmICghaXM8UmVuZGVyTWF0aE1MQmxvY2s+KGJh
c2UpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTY3JpcHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaAppbmRleCA0MDRkN2Y0OTA4OTgxM2YyY2JhMTcxNzMzMTY1OTlhMjdmNDA5
NjA3Li43ZWIzZjA4ZjBiNDQ2ODRlODBiZWE4MzBlMWYyY2MyY2VjYThlNGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
aApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxTY3JpcHRzIDogcHVibGljIFJl
bmRlck1hdGhNTEJsb2NrIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJlbmRlck1hdGhN
TFNjcmlwdHMpOwogcHVibGljOgogICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoTWF0aE1MU2NyaXB0
c0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKLSAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5l
bWJlbGxpc2hlZE9wZXJhdG9yKCkgZmluYWw7CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVu
ZW1iZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFVuZGVyT3Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFVuZGVyT3Zlci5jcHAKaW5kZXggODUzYzRjZDJkZjdhZGM1N2I3MWQ4YzUxMDRkNzc1YWZi
MDgxZTIxNi4uZGVhOTdjNDVkNDgxMmQwZGE2NDlkMDg1MWM2ZmY4MzlhYmFhZDczNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VW5kZXJPdmVyLmNwcApAQCAtNTAsNTYgKzUwLDczIEBAIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQm
IFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOwog
fQogCi1zdGF0aWMgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHRvSG9yaXpvbnRhbFN0cmV0Y2h5T3Bl
cmF0b3IoUmVuZGVyQm94KiBib3gpCitzdGF0aWMgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIGhvcml6
b250YWxTdHJldGNoeU9wZXJhdG9yKGNvbnN0IFJlbmRlckJveCYgYm94KQogewotICAgIGlmIChp
czxSZW5kZXJNYXRoTUxCbG9jaz4oYm94KSkgewotICAgICAgICBpZiAoYXV0byByZW5kZXJPcGVy
YXRvciA9IGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPigqYm94KS51bmVtYmVsbGlzaGVkT3Bl
cmF0b3IoKSkgewotICAgICAgICAgICAgaWYgKHJlbmRlck9wZXJhdG9yLT5pc1N0cmV0Y2h5KCkg
JiYgIXJlbmRlck9wZXJhdG9yLT5pc1ZlcnRpY2FsKCkgJiYgIXJlbmRlck9wZXJhdG9yLT5pc1N0
cmV0Y2hXaWR0aExvY2tlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJPcGVyYXRv
cjsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzPFJl
bmRlck1hdGhNTEJsb2NrPihib3gpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8qIHJlbmRlck9wZXJhdG9yID0gZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KGJveCkudW5l
bWJlbGxpc2hlZE9wZXJhdG9yKCk7CisgICAgaWYgKCFyZW5kZXJPcGVyYXRvcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXJlbmRlck9wZXJhdG9yLT5pc1N0cmV0Y2h5KCkg
fHwgcmVuZGVyT3BlcmF0b3ItPmlzVmVydGljYWwoKSB8fCByZW5kZXJPcGVyYXRvci0+aXNTdHJl
dGNoV2lkdGhMb2NrZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
cmVuZGVyT3BlcmF0b3I7CiB9Ci0gICAgCi1zdGF0aWMgdm9pZCBmaXhMYXlvdXRBZnRlclN0cmV0
Y2goUmVuZGVyQm94KiBhbmNlc3RvciwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHN0cmV0Y2h5T3Bl
cmF0b3IpCisKK3N0YXRpYyB2b2lkIGZpeExheW91dEFmdGVyU3RyZXRjaChSZW5kZXJCb3gmIGFu
Y2VzdG9yLCBSZW5kZXJNYXRoTUxPcGVyYXRvciYgc3RyZXRjaHlPcGVyYXRvcikKIHsKLSAgICBz
dHJldGNoeU9wZXJhdG9yLT5zZXRTdHJldGNoV2lkdGhMb2NrZWQodHJ1ZSk7Ci0gICAgc3RyZXRj
aHlPcGVyYXRvci0+c2V0TmVlZHNMYXlvdXQoKTsKLSAgICBhbmNlc3Rvci0+bGF5b3V0SWZOZWVk
ZWQoKTsKLSAgICBzdHJldGNoeU9wZXJhdG9yLT5zZXRTdHJldGNoV2lkdGhMb2NrZWQoZmFsc2Up
OworICAgIHN0cmV0Y2h5T3BlcmF0b3Iuc2V0U3RyZXRjaFdpZHRoTG9ja2VkKHRydWUpOworICAg
IHN0cmV0Y2h5T3BlcmF0b3Iuc2V0TmVlZHNMYXlvdXQoKTsKKyAgICBhbmNlc3Rvci5sYXlvdXRJ
Zk5lZWRlZCgpOworICAgIHN0cmV0Y2h5T3BlcmF0b3Iuc2V0U3RyZXRjaFdpZHRoTG9ja2VkKGZh
bHNlKTsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OnN0cmV0Y2hIb3Jpem9udGFs
T3BlcmF0b3JzQW5kTGF5b3V0Q2hpbGRyZW4oKQogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwog
ICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKKworICAgIC8vIFdlIGFwcGx5IGhvcml6b250YWwg
c3RyZXRjaHkgcnVsZXMgZnJvbSB0aGUgTWF0aE1MIHNwZWMgKHNlY3Rpb25zIDMuMi41LjguMyBh
bmQgMy4yLjUuOC40KSwgd2hpY2gKKyAgICAvLyBjYW4gYmUgcm91Z2hseSBzdW1tYXJpemVkIGFz
ICJzdHJldGNoaW5nIG9wZXJhdG9ycyB0byB0aGUgbWF4aW11bSB3aWR0aHMgb2YgYWxsIGNoaWxk
cmVuIiBhbmQKKyAgICAvLyBtaW5vciB2YXJpYXRpb25zIG9mIHRoYXQgYWxnb3JpdGhtIGRvIG5v
dCBhZmZlY3QgdGhlIHJlc3VsdC4gSG93ZXZlciwgdGhlIHNwZWMgaXMgYSBiaXQgYW1iaWd1b3Vz
CisgICAgLy8gZm9yIGVtYmVsbGlzaGVkIG9wZXJhdG9ycyAoc2VjdGlvbiAzLjIuNS43LjMpIGFu
ZCBkaWZmZXJlbnQgYXBwcm9hY2hlcyBjYW4gbGVhZCB0byBzaWduaWZpY2FudAorICAgIC8vIHN0
cmV0Y2ggc2l6ZSBkaWZmZXJlbmNlcy4gV2UgbWFkZSB0aGUgZm9sbG93aW5nIGRlY2lzaW9uczoK
KyAgICAvLyAtIFRoZSB1bnN0cmV0Y2hlZCBzaXplIGlzIHRoZSBlbWJlbGxpc2hlZCBvcGVyYXRv
ciB3aWR0aCB3aXRoIHRoZSA8bW8+IGF0IHRoZSBjb3JlIHVuc3RyZXRjaGVkLgorICAgIC8vIC0g
SW4gZ2VuZXJhbCwgdGhlIHRhcmdldCBzaXplIGlzIGp1c3QgdGhlIG1heGltdW0gd2lkdGhzIG9m
IG5vbi1zdHJldGNoeSBjaGlsZHJlbiBiZWNhdXNlIHRoZQorICAgIC8vIGVtYmVsbGlzaG1lbnRz
IGNvdWxkIG1ha2Ugd2lkdGhzIHNpZ25pZmljYW50bHkgbGFyZ2VyLgorICAgIC8vIC0gSW4gdGhl
IGVkZ2UgY2FzZSB3aGVuIGFsbCBvcGVyYXRvcnMgb2Ygc3RyZXRjaHksIHdlIGZvbGxvdyB0aGUg
c3BlY2lmaWNhdGlvbiBhbmQgdGFrZSB0aGUKKyAgICAvLyBtYXhpbXVtIG9mIGFsbCB1bnN0cmV0
Y2hlZCBzaXplcy4KKyAgICAvLyAtIFRoZSA8bW8+IGF0IHRoZSBjb3JlIGlzIHN0cmV0Y2hlZCB0
byBjb3ZlciB0aGUgdGFyZ2V0IHNpemUsIGV2ZW4gaWYgdGhlIGVtYmVsbGlzaGVkIG9wZXJhdG9y
CisgICAgLy8gbWlnaHQgYmVjb21lIG11Y2ggd2lkZXIuIEZvciBpbnN0YW5jZSwgZm9yIGEgaG9y
aXpvbnRhbCBicmFjZSB3aXRoIHRleHQgY29tbWVudCwgdGhlIGJyYWNlIGlzCisgICAgLy8gc3Ry
ZXRjaGVkIHRvIGNvdmVyIHRoZSBiYXNlIHJhdGhlciB0aGFuIHRoZSB0ZXh0IGNvbW1lbnQsIHRo
ZSBsYXR0ZXIgb2Ygd2hpY2ggY291bGQgYmUgdmVyeSB3aWRlLgogICAgIAogICAgIFZlY3RvcjxS
ZW5kZXJCb3gqLCAzPiBlbWJlbGxpc2hlZE9wZXJhdG9yczsKICAgICBWZWN0b3I8UmVuZGVyTWF0
aE1MT3BlcmF0b3IqLCAzPiBzdHJldGNoeU9wZXJhdG9yczsKICAgICBib29sIGlzQWxsU3RyZXRj
aHlPcGVyYXRvcnMgPSB0cnVlOwogICAgIExheW91dFVuaXQgc3RyZXRjaFdpZHRoID0gMDsKLSAg
ICAKKwogICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdHJldGNo
eU9wZXJhdG9yID0gdG9Ib3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcihjaGlsZCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHN0cmV0Y2h5T3BlcmF0b3IgPSBob3Jpem9udGFsU3RyZXRjaHlPcGVyYXRv
cigqY2hpbGQpKSB7CiAgICAgICAgICAgICBlbWJlbGxpc2hlZE9wZXJhdG9ycy5hcHBlbmQoY2hp
bGQpOwogICAgICAgICAgICAgc3RyZXRjaHlPcGVyYXRvcnMuYXBwZW5kKHN0cmV0Y2h5T3BlcmF0
b3IpOwogICAgICAgICAgICAgc3RyZXRjaHlPcGVyYXRvci0+cmVzZXRTdHJldGNoU2l6ZSgpOwot
ICAgICAgICAgICAgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKGNoaWxkLCBzdHJldGNoeU9wZXJhdG9y
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlzQWxsU3RyZXRjaHlPcGVyYXRvcnMg
PSBmYWxzZTsKICAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICAg
ICAgc3RyZXRjaFdpZHRoID0gc3RkOjptYXgoc3RyZXRjaFdpZHRoLCBjaGlsZC0+bG9naWNhbFdp
ZHRoKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKGlzQWxsU3RyZXRjaHlP
cGVyYXRvcnMpIHsKICAgICAgICAgZm9yIChhdXRvKiBlbWJlbGxpc2hlZE9wZXJhdG9yIDogZW1i
ZWxsaXNoZWRPcGVyYXRvcnMpCiAgICAgICAgICAgICBzdHJldGNoV2lkdGggPSBzdGQ6Om1heChz
dHJldGNoV2lkdGgsIGVtYmVsbGlzaGVkT3BlcmF0b3ItPmxvZ2ljYWxXaWR0aCgpKTsKICAgICB9
Ci0gICAgCisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVtYmVsbGlzaGVkT3BlcmF0b3Jz
LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIHN0cmV0Y2h5T3BlcmF0b3JzW2ldLT5zdHJldGNoVG8o
c3RyZXRjaFdpZHRoKTsKLSAgICAgICAgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKGVtYmVsbGlzaGVk
T3BlcmF0b3JzW2ldLCBzdHJldGNoeU9wZXJhdG9yc1tpXSk7CisgICAgICAgIGZpeExheW91dEFm
dGVyU3RyZXRjaCgqZW1iZWxsaXNoZWRPcGVyYXRvcnNbaV0sICpzdHJldGNoeU9wZXJhdG9yc1tp
XSk7CiAgICAgfQogfQogCkBAIC0yOTAsNyArMzA3LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxVbmRl
ck92ZXI6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG8KICAgICBBU1NFUlQoIWJhc2UoKS5uZWVkc0xheW91dCgpKTsKICAgICBBU1NFUlQoc2NyaXB0
VHlwZSgpID09IFNjcmlwdFR5cGU6Ok92ZXIgfHwgIXVuZGVyKCkubmVlZHNMYXlvdXQoKSk7CiAg
ICAgQVNTRVJUKHNjcmlwdFR5cGUoKSA9PSBTY3JpcHRUeXBlOjpVbmRlciB8fCAhb3ZlcigpLm5l
ZWRzTGF5b3V0KCkpOwotICAgIAorCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBiYXNl
KCkubG9naWNhbFdpZHRoKCk7CiAgICAgaWYgKHNjcmlwdFR5cGUoKSA9PSBTY3JpcHRUeXBlOjpV
bmRlciB8fCBzY3JpcHRUeXBlKCkgPT0gU2NyaXB0VHlwZTo6VW5kZXJPdmVyKQogICAgICAgICBs
b2dpY2FsV2lkdGggPSBzdGQ6Om1heChsb2dpY2FsV2lkdGgsIHVuZGVyKCkubG9naWNhbFdpZHRo
KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330156</attachid>
            <date>2017-12-22 19:03:53 -0800</date>
            <delta_ts>2017-12-23 06:08:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180923-20171223110350.patch</filename>
            <type>text/plain</type>
            <size>16446</size>
            <attacher name="Minsheng Liu">lambda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZmYjhkNDQ3ODI0MDI4
MGM5ZTkxNTcyNjI3M2ZhNjYwNWJiN2QyNS4uNzdjZTYzZmYxMDRkYjcyNTU0NmE3YjYwMDc0N2Yw
MTdlNDg4OWQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTEyLTIyICBNaW5z
aGVuZyBMaXUgIDxsYW1iZGFAbGl1Lm1zPgorCisgICAgICAgIFtGb2xsb3d1cCB0byAxNzk2ODJd
IEFkZCBjb21tZW50IGFuZCBjb2RlIHN0eWxlIGltcHJvdmVtZW50IHRvIE1VbmRlck92ZXIncyBs
YXlvdXQgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODA5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgcGF0Y2ggaW1wcm92ZXMgdGhlIGNvZGUgaW4gUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmNwcC4KKworICAgICAgICBJdCByZW1vdmVzIHNldmVyYWwgbGluZXMgb2YgdHJhaWxpbmcg
c3BhY2VzLCBjaGFuZ2VzIHNldmVyYWwgcG9pbnRlcnMgdG8gcmVmZXJlbmNlcywgYW5kCisgICAg
ICAgIHJld3JpdGVzIHRvSG9yaXpvbnRhbFN0cmV0Y2h5T3BlcmF0b3IoKSAocmVuYW1lZCB0byBo
b3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcigpKQorICAgICAgICB0byBtYWtlIGl0IG1vcmUgY29u
Zm9ybWluZyB0byBXZWJLaXQncyBjb2Rpbmcgc3R5bGUuCisKKyAgICAgICAgSXQgbWFrZXMgdW5l
bWJlbGxpc2hlZE9wZXJhdG9yKCkgYSBjb25zdCBmdW5jdGlvbi4KKworICAgICAgICBJdCBhbHNv
IHByb3ZpZGUgY29tbWVudHMgZm9yIHN0cmV0Y2hIb3Jpem9udGFsT3BlcmF0b3JzQW5kTGF5b3V0
Q2hpbGRyZW4oKSBhbmQgZWxpbm1pbmF0ZXMKKyAgICAgICAgYW4gdW5uZWNlc3NhcnkgY2FsbCB0
byBmaXhMYXlvdXRBZnRlclN0cmV0Y2goKSB0aGVyZS4KKworICAgICAgICBPbmUgdGVzdCBpcyB1
cGRhdGVkIHRvIGNvdmVyIHRoZSBjb3JuZXIgY2FzZSBvZiBhbGwgY29tcG9uZW50cyBvZiA8bXVu
ZGVyb3Zlcj4gYmVpbmcgc3RyZXRjaHk6CisgICAgICAgIG1hdGhtbC9vcGVudHlwZS9tdW5kZXJv
dmVyLXN0cmV0Y2gtd2lkdGguaHRtbAorCisgICAgICAgIE5vdGUgdGhlcmUgaXMgbm8gYmVoYXZp
b3IgY2hhbmdlIHNvIG5ldyB0ZXN0cyBhcmUgbm90IHJlcXVpcmVkLgorCisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OnVuZW1iZWxsaXNoZWRPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1bmVtYmVsbGlzaGVkT3Bl
cmF0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnVu
ZW1iZWxsaXNoZWRPcGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnJlc2V0U3RyZXRjaFNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6
dW5lbWJlbGxpc2hlZE9wZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTFNjcmlwdHM6OnVuZW1iZWxsaXNoZWRPcGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmg6CisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aG9yaXpvbnRhbFN0cmV0Y2h5T3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Zml4TGF5b3V0
QWZ0ZXJTdHJldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6
c3RyZXRjaEhvcml6b250YWxPcGVyYXRvcnNBbmRMYXlvdXRDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvSG9yaXpvbnRhbFN0cmV0Y2h5T3BlcmF0b3IpOiBEZWxldGVkLgorCiAyMDE3LTEy
LTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHRyeSB0byBmaXggdGhlIGJ1aWxkIG9uIHJlY2VudCBTREtzIGFmdGVyIHIyMjYy
NzQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmgKaW5kZXggZTljMThhNDBiY2FiN2JmNjgxY2Q3NTFkMjM0MDU1ZTU1MDFhYzljMy4u
OTM5MjZmNmQ1NmM4YjkyYWI4Mjc4NTg4ZWVhZmM3M2NlMzg0Njc5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gZW1iZWxsaXNoZWQgb3BlcmF0b3IsIGFuZCBvbWl0
cyBhbnkgZW1iZWxsaXNobWVudHMuCiAgICAgLy8gRklYTUU6IFdlIGRvbid0IHlldCBoYW5kbGUg
YWxsIHRoZSBjYXNlcyBpbiB0aGUgTWF0aE1MIHNwZWMuIFNlZQogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODYxNy4KLSAgICB2aXJ0dWFsIFJlbmRlck1h
dGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgY29u
c3QgeyByZXR1cm4gMDsgfQogCiAgICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
LCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQ
b3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3Bw
CmluZGV4IDdhMTQ3ZTRlYWIyYjRiOTc4YWY4ZjA1ZjA5ODYxOTBmMjk1YTk5OWMuLjQ0N2MxNjA0
NjAxODI3OGNiMTU2N2E3YjI1YWZjY2I1ZGJiZWNjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC0x
NTIsNyArMTUyLDcgQEAgUmVuZGVyTWF0aE1MRnJhY3Rpb246OlN0YWNrUGFyYW1ldGVycyBSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6c3RhY2tQYXJhbWV0ZXJzKCkgY28KICAgICByZXR1cm4gcGFyYW1l
dGVyczsKIH0KIAotUmVuZGVyTWF0aE1MT3BlcmF0b3IqIFJlbmRlck1hdGhNTEZyYWN0aW9uOjp1
bmVtYmVsbGlzaGVkT3BlcmF0b3IoKQorUmVuZGVyTWF0aE1MT3BlcmF0b3IqIFJlbmRlck1hdGhN
TEZyYWN0aW9uOjp1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBjb25zdAogewogICAgIGlmICghaXNW
YWxpZCgpIHx8ICFpczxSZW5kZXJNYXRoTUxCbG9jaz4obnVtZXJhdG9yKCkpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCAxNDc0NzBiNDE3NjVjYTZkMGRhMTgwZmY5
M2VlM2Q1ZTkyZGY1YWZiLi4zMTQ1Y2QzM2VkMDViMDZjMDEwYmM5MmM4NzAxZTJiZTM0YzQ0NjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsYXlv
dXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQgPSAwKSBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50JikgZmluYWw7Ci0gICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVy
YXRvcigpIGZpbmFsOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3Bl
cmF0b3IoKSBjb25zdCBmaW5hbDsKIAogICAgIE1hdGhNTEZyYWN0aW9uRWxlbWVudCYgZWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTEZyYWN0aW9uRWxlbWVudCY+KG5v
ZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAppbmRleCA3YjA2YjA3ZWI0
Y2VhODMzYzUxN2RiYjAyYWQxYTk3MTZmOWE5ZDkwLi4xN2ZhOTk0ODg2OTA1YTc2YWMwOTRjNjE2
M2IwYThlODY4ZWFlZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnN0cmV0Y2hUbyhMYXlvdXRVbml0IHdpZHRoKQogdm9p
ZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cmVzZXRTdHJldGNoU2l6ZSgpCiB7CiAgICAgQVNTRVJU
KCFpc1N0cmV0Y2hXaWR0aExvY2tlZCgpKTsKLSAgICAKKwogICAgIGlmIChpc1ZlcnRpY2FsKCkp
IHsKICAgICAgICAgbV9zdHJldGNoSGVpZ2h0QWJvdmVCYXNlbGluZSA9IDA7CiAgICAgICAgIG1f
c3RyZXRjaERlcHRoQmVsb3dCYXNlbGluZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggYjI0NzhjOWNj
N2QyOGE1NzliMTQyZGE1Y2VhMzM2YjlkZWY5MTk5NS4uMjM4MGRkNWVlYjg4NGYzNGE1OTM3MDc0
NGExOGM5M2UwMWMyZjkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNJbnZpc2libGVPcGVyYXRvcigpIGNvbnN0OwogCiAgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7Ci0gICAgUmVuZGVyTWF0
aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGZpbmFsIHsgcmV0dXJuIHRoaXM7
IH0KKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJNYXRoTUxPcGVyYXRvcio+KHRoaXMp
OyB9CiAKICAgICBMYXlvdXRVbml0IHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlmdCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCAzZTJhNTU5ZDAwNTQ4ODYyMGQxOWE0MzFkYmIwMzU4
M2U1OGMwZWE3Li4wMjUxNDIzNzIxZGI3MDkzNmU4YzA4ZmMxNmJhM2I4ZTU5YTU4ZGMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU2NyaXB0VHlwZSBSZW5kZXJNYXRoTUxTY3Jp
cHRzOjpzY3JpcHRUeXBlKCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudCgpLnNjcmlwdFR5cGUo
KTsKIH0KIAotUmVuZGVyTWF0aE1MT3BlcmF0b3IqIFJlbmRlck1hdGhNTFNjcmlwdHM6OnVuZW1i
ZWxsaXNoZWRPcGVyYXRvcigpCitSZW5kZXJNYXRoTUxPcGVyYXRvciogUmVuZGVyTWF0aE1MU2Ny
aXB0czo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgY29uc3QKIHsKICAgICBhdXRvIGJhc2UgPSBm
aXJzdENoaWxkQm94KCk7CiAgICAgaWYgKCFpczxSZW5kZXJNYXRoTUxCbG9jaz4oYmFzZSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNj
cmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5oCmluZGV4IDQwNGQ3ZjQ5MDg5ODEzZjJjYmExNzE3MzMxNjU5OWEyN2Y0MDk2MDcuLjdl
YjNmMDhmMGI0NDY4NGU4MGJlYTgzMGUxZjJjYzJjZWNhOGU0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCkBAIC00
Miw3ICs0Miw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHMgOiBwdWJsaWMgUmVuZGVyTWF0
aE1MQmxvY2sgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVuZGVyTWF0aE1MU2NyaXB0
cyk7CiBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MU2NyaXB0cyhNYXRoTUxTY3JpcHRzRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYpOwotICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlz
aGVkT3BlcmF0b3IoKSBmaW5hbDsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxp
c2hlZE9wZXJhdG9yKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBib29sIGlzUmVu
ZGVyTWF0aE1MU2NyaXB0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyLmNwcAppbmRleCA4NTNjNGNkMmRmN2FkYzU3YjcxZDhjNTEwNGQ3NzVhZmIwODFlMjE2
Li44ZWVkZjg2NzRhMWE2YjJlMjQ3Nzg3ZmQyYzI2ODQ2OTgyZmI3NmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92
ZXIuY3BwCkBAIC01MCw1NiArNTAsNzUgQEAgTWF0aE1MVW5kZXJPdmVyRWxlbWVudCYgUmVuZGVy
TWF0aE1MVW5kZXJPdmVyOjplbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
TWF0aE1MVW5kZXJPdmVyRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAKLXN0
YXRpYyBSZW5kZXJNYXRoTUxPcGVyYXRvciogdG9Ib3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcihS
ZW5kZXJCb3gqIGJveCkKK3N0YXRpYyBSZW5kZXJNYXRoTUxPcGVyYXRvciogaG9yaXpvbnRhbFN0
cmV0Y2h5T3BlcmF0b3IoY29uc3QgUmVuZGVyQm94JiBib3gpCiB7Ci0gICAgaWYgKGlzPFJlbmRl
ck1hdGhNTEJsb2NrPihib3gpKSB7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlck9wZXJhdG9yID0g
ZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KCpib3gpLnVuZW1iZWxsaXNoZWRPcGVyYXRvcigp
KSB7Ci0gICAgICAgICAgICBpZiAocmVuZGVyT3BlcmF0b3ItPmlzU3RyZXRjaHkoKSAmJiAhcmVu
ZGVyT3BlcmF0b3ItPmlzVmVydGljYWwoKSAmJiAhcmVuZGVyT3BlcmF0b3ItPmlzU3RyZXRjaFdp
ZHRoTG9ja2VkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck9wZXJhdG9yOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXM8UmVuZGVyTWF0
aE1MQmxvY2s+KGJveCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byogcmVu
ZGVyT3BlcmF0b3IgPSBkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oYm94KS51bmVtYmVsbGlz
aGVkT3BlcmF0b3IoKTsKKyAgICBpZiAoIXJlbmRlck9wZXJhdG9yKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIGlmICghcmVuZGVyT3BlcmF0b3ItPmlzU3RyZXRjaHkoKSB8fCByZW5k
ZXJPcGVyYXRvci0+aXNWZXJ0aWNhbCgpIHx8IHJlbmRlck9wZXJhdG9yLT5pc1N0cmV0Y2hXaWR0
aExvY2tlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiByZW5kZXJP
cGVyYXRvcjsKIH0KLSAgICAKLXN0YXRpYyB2b2lkIGZpeExheW91dEFmdGVyU3RyZXRjaChSZW5k
ZXJCb3gqIGFuY2VzdG9yLCBSZW5kZXJNYXRoTUxPcGVyYXRvciogc3RyZXRjaHlPcGVyYXRvcikK
Kworc3RhdGljIHZvaWQgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKFJlbmRlckJveCYgYW5jZXN0b3Is
IFJlbmRlck1hdGhNTE9wZXJhdG9yJiBzdHJldGNoeU9wZXJhdG9yKQogewotICAgIHN0cmV0Y2h5
T3BlcmF0b3ItPnNldFN0cmV0Y2hXaWR0aExvY2tlZCh0cnVlKTsKLSAgICBzdHJldGNoeU9wZXJh
dG9yLT5zZXROZWVkc0xheW91dCgpOwotICAgIGFuY2VzdG9yLT5sYXlvdXRJZk5lZWRlZCgpOwot
ICAgIHN0cmV0Y2h5T3BlcmF0b3ItPnNldFN0cmV0Y2hXaWR0aExvY2tlZChmYWxzZSk7CisgICAg
c3RyZXRjaHlPcGVyYXRvci5zZXRTdHJldGNoV2lkdGhMb2NrZWQodHJ1ZSk7CisgICAgc3RyZXRj
aHlPcGVyYXRvci5zZXROZWVkc0xheW91dCgpOworICAgIGFuY2VzdG9yLmxheW91dElmTmVlZGVk
KCk7CisgICAgc3RyZXRjaHlPcGVyYXRvci5zZXRTdHJldGNoV2lkdGhMb2NrZWQoZmFsc2UpOwog
fQogCiB2b2lkIFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6c3RyZXRjaEhvcml6b250YWxPcGVyYXRv
cnNBbmRMYXlvdXRDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CiAgICAgQVNT
RVJUKG5lZWRzTGF5b3V0KCkpOworCisgICAgLy8gV2UgYXBwbHkgaG9yaXpvbnRhbCBzdHJldGNo
eSBydWxlcyBmcm9tIHRoZSBNYXRoTUwgc3BlYyAoc2VjdGlvbnMgMy4yLjUuOC4zIGFuZCAzLjIu
NS44LjQpLCB3aGljaAorICAgIC8vIGNhbiBiZSByb3VnaGx5IHN1bW1hcml6ZWQgYXMgInN0cmV0
Y2hpbmcgb3BlcmF0b3JzIHRvIHRoZSBtYXhpbXVtIHdpZHRocyBvZiBhbGwgY2hpbGRyZW4iIGFu
ZAorICAgIC8vIG1pbm9yIHZhcmlhdGlvbnMgb2YgdGhhdCBhbGdvcml0aG0gZG8gbm90IGFmZmVj
dCB0aGUgcmVzdWx0LiBIb3dldmVyLCB0aGUgc3BlYyBpcyBhIGJpdCBhbWJpZ3VvdXMKKyAgICAv
LyBmb3IgZW1iZWxsaXNoZWQgb3BlcmF0b3JzIChzZWN0aW9uIDMuMi41LjcuMykgYW5kIGRpZmZl
cmVudCBhcHByb2FjaGVzIGNhbiBsZWFkIHRvIHNpZ25pZmljYW50CisgICAgLy8gc3RyZXRjaCBz
aXplIGRpZmZlcmVuY2VzLiBXZSBtYWRlIHRoZSBmb2xsb3dpbmcgZGVjaXNpb25zOgorICAgIC8v
IC0gVGhlIHVuc3RyZXRjaGVkIHNpemUgaXMgdGhlIGVtYmVsbGlzaGVkIG9wZXJhdG9yIHdpZHRo
IHdpdGggdGhlIDxtbz4gYXQgdGhlIGNvcmUgdW5zdHJldGNoZWQuCisgICAgLy8gLSBJbiBnZW5l
cmFsLCB0aGUgdGFyZ2V0IHNpemUgaXMganVzdCB0aGUgbWF4aW11bSB3aWR0aHMgb2Ygbm9uLXN0
cmV0Y2h5IGNoaWxkcmVuIGJlY2F1c2UgdGhlCisgICAgLy8gZW1iZWxsaXNobWVudHMgY291bGQg
bWFrZSB3aWR0aHMgc2lnbmlmaWNhbnRseSBsYXJnZXIuCisgICAgLy8gLSBJbiB0aGUgZWRnZSBj
YXNlIHdoZW4gYWxsIG9wZXJhdG9ycyBvZiBzdHJldGNoeSwgd2UgZm9sbG93IHRoZSBzcGVjaWZp
Y2F0aW9uIGFuZCB0YWtlIHRoZQorICAgIC8vIG1heGltdW0gb2YgYWxsIHVuc3RyZXRjaGVkIHNp
emVzLgorICAgIC8vIC0gVGhlIDxtbz4gYXQgdGhlIGNvcmUgaXMgc3RyZXRjaGVkIHRvIGNvdmVy
IHRoZSB0YXJnZXQgc2l6ZSwgZXZlbiBpZiB0aGUgZW1iZWxsaXNoZWQgb3BlcmF0b3IKKyAgICAv
LyBtaWdodCBiZWNvbWUgbXVjaCB3aWRlci4gRm9yIGluc3RhbmNlLCBmb3IgYSBob3Jpem9udGFs
IGJyYWNlIHdpdGggdGV4dCBjb21tZW50LCB0aGUgYnJhY2UgaXMKKyAgICAvLyBzdHJldGNoZWQg
dG8gY292ZXIgdGhlIGJhc2UgcmF0aGVyIHRoYW4gdGhlIHRleHQgY29tbWVudCwgdGhlIGxhdHRl
ciBvZiB3aGljaCBjb3VsZCBiZSB2ZXJ5IHdpZGUuCiAgICAgCiAgICAgVmVjdG9yPFJlbmRlckJv
eCosIDM+IGVtYmVsbGlzaGVkT3BlcmF0b3JzOwogICAgIFZlY3RvcjxSZW5kZXJNYXRoTUxPcGVy
YXRvciosIDM+IHN0cmV0Y2h5T3BlcmF0b3JzOwogICAgIGJvb2wgaXNBbGxTdHJldGNoeU9wZXJh
dG9ycyA9IHRydWU7CiAgICAgTGF5b3V0VW5pdCBzdHJldGNoV2lkdGggPSAwOwotICAgIAorCiAg
ICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHN0cmV0Y2h5T3BlcmF0
b3IgPSB0b0hvcml6b250YWxTdHJldGNoeU9wZXJhdG9yKGNoaWxkKSkgeworICAgICAgICBpZiAo
YXV0byogc3RyZXRjaHlPcGVyYXRvciA9IGhvcml6b250YWxTdHJldGNoeU9wZXJhdG9yKCpjaGls
ZCkpIHsKICAgICAgICAgICAgIGVtYmVsbGlzaGVkT3BlcmF0b3JzLmFwcGVuZChjaGlsZCk7CiAg
ICAgICAgICAgICBzdHJldGNoeU9wZXJhdG9ycy5hcHBlbmQoc3RyZXRjaHlPcGVyYXRvcik7Ci0g
ICAgICAgICAgICBzdHJldGNoeU9wZXJhdG9yLT5yZXNldFN0cmV0Y2hTaXplKCk7Ci0gICAgICAg
ICAgICBmaXhMYXlvdXRBZnRlclN0cmV0Y2goY2hpbGQsIHN0cmV0Y2h5T3BlcmF0b3IpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgaXNBbGxTdHJldGNoeU9wZXJhdG9ycyA9IGZhbHNl
OwogICAgICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgICAgICBzdHJl
dGNoV2lkdGggPSBzdGQ6Om1heChzdHJldGNoV2lkdGgsIGNoaWxkLT5sb2dpY2FsV2lkdGgoKSk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBpZiAoaXNBbGxTdHJldGNoeU9wZXJhdG9y
cykgewotICAgICAgICBmb3IgKGF1dG8qIGVtYmVsbGlzaGVkT3BlcmF0b3IgOiBlbWJlbGxpc2hl
ZE9wZXJhdG9ycykKLSAgICAgICAgICAgIHN0cmV0Y2hXaWR0aCA9IHN0ZDo6bWF4KHN0cmV0Y2hX
aWR0aCwgZW1iZWxsaXNoZWRPcGVyYXRvci0+bG9naWNhbFdpZHRoKCkpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGVtYmVsbGlzaGVkT3BlcmF0b3JzLnNpemUoKTsgaSsrKSB7Cisg
ICAgICAgICAgICBzdHJldGNoeU9wZXJhdG9yc1tpXS0+cmVzZXRTdHJldGNoU2l6ZSgpOworICAg
ICAgICAgICAgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKCplbWJlbGxpc2hlZE9wZXJhdG9yc1tpXSwg
KnN0cmV0Y2h5T3BlcmF0b3JzW2ldKTsKKyAgICAgICAgICAgIHN0cmV0Y2hXaWR0aCA9IHN0ZDo6
bWF4KHN0cmV0Y2hXaWR0aCwgZW1iZWxsaXNoZWRPcGVyYXRvcnNbaV0tPmxvZ2ljYWxXaWR0aCgp
KTsKKyAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZW1iZWxsaXNoZWRPcGVyYXRvcnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgc3RyZXRjaHlPcGVy
YXRvcnNbaV0tPnN0cmV0Y2hUbyhzdHJldGNoV2lkdGgpOwotICAgICAgICBmaXhMYXlvdXRBZnRl
clN0cmV0Y2goZW1iZWxsaXNoZWRPcGVyYXRvcnNbaV0sIHN0cmV0Y2h5T3BlcmF0b3JzW2ldKTsK
KyAgICAgICAgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKCplbWJlbGxpc2hlZE9wZXJhdG9yc1tpXSwg
KnN0cmV0Y2h5T3BlcmF0b3JzW2ldKTsKICAgICB9CiB9CiAKQEAgLTI5MCw3ICszMDksNyBAQCB2
b2lkIFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0IHBhZ2VMbwogICAgIEFTU0VSVCghYmFzZSgpLm5lZWRzTGF5b3V0KCkp
OwogICAgIEFTU0VSVChzY3JpcHRUeXBlKCkgPT0gU2NyaXB0VHlwZTo6T3ZlciB8fCAhdW5kZXIo
KS5uZWVkc0xheW91dCgpKTsKICAgICBBU1NFUlQoc2NyaXB0VHlwZSgpID09IFNjcmlwdFR5cGU6
OlVuZGVyIHx8ICFvdmVyKCkubmVlZHNMYXlvdXQoKSk7Ci0gICAgCisKICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxXaWR0aCA9IGJhc2UoKS5sb2dpY2FsV2lkdGgoKTsKICAgICBpZiAoc2NyaXB0VHlw
ZSgpID09IFNjcmlwdFR5cGU6OlVuZGVyIHx8IHNjcmlwdFR5cGUoKSA9PSBTY3JpcHRUeXBlOjpV
bmRlck92ZXIpCiAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KGxvZ2ljYWxXaWR0aCwg
dW5kZXIoKS5sb2dpY2FsV2lkdGgoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmFhZjBjNWYzYTM3ZmQyMTI2OGMzODA1
OWZhYWUwZmJmYjhkYzAzNC4uZDYxMmYyZmJhNWI5MGNjNDUwMjI3OTE5OWRjMWVjNTk5ZDllZGJm
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEyLTIyICBNaW5zaGVuZyBMaXUgIDxsYW1i
ZGFAbGl1Lm1zPgorCisgICAgICAgIFtGb2xsb3d1cCB0byAxNzk2ODJdIEFkZCBjb21tZW50IGFu
ZCBjb2RlIHN0eWxlIGltcHJvdmVtZW50IHRvIE1VbmRlck92ZXIncyBsYXlvdXQgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA5MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmUgdGVz
dCBpcyB1cGRhdGVkIHRvIGNvdmVyIHRoZSBjb3JuZXIgY2FzZSBvZiBhbGwgY29tcG9uZW50cyBv
ZiA8bXVuZGVyb3Zlcj4gYmVpbmcgc3RyZXRjaHk6CisgICAgICAgIG1hdGhtbC9vcGVudHlwZS9t
dW5kZXJvdmVyLXN0cmV0Y2gtd2lkdGguaHRtbAorCisgICAgICAgIE5vdGUgdGhlcmUgaXMgbm8g
YmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogbWF0aG1sL29wZW50eXBlL211bmRlcm92ZXIt
c3RyZXRjaC13aWR0aC1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWF0aG1sL29wZW50eXBlL211
bmRlcm92ZXItc3RyZXRjaC13aWR0aC5odG1sOgorCiAyMDE3LTEyLTIyICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBs
YXlvdXQgdGVzdCBnYXJkZW5pbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21hdGhtbC9vcGVu
dHlwZS9tdW5kZXJvdmVyLXN0cmV0Y2gtd2lkdGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
bWF0aG1sL29wZW50eXBlL211bmRlcm92ZXItc3RyZXRjaC13aWR0aC1leHBlY3RlZC50eHQKaW5k
ZXggMWZhNTFkYTFkNjM0OWY1MWQ0YTg0ODNjMWNlYzBiOTJlNzBiNzdmMS4uNzg5OGUwNTlkNDZk
MTlhM2ZkNTliZTkwM2Q5ODY4YThjNjIwYTJlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWF0
aG1sL29wZW50eXBlL211bmRlcm92ZXItc3RyZXRjaC13aWR0aC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvbWF0aG1sL29wZW50eXBlL211bmRlcm92ZXItc3RyZXRjaC13aWR0aC1leHBl
Y3RlZC50eHQKQEAgLTIyLDYgKzIyLDEwIEBAIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSB0
aGUgYmxhY2sgdGhpbmcgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSByZWQgYmFyLgog4oacCiBU
aGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgdGhlIGJsYWNrIHRoaW5nIGhhcyB0aGUgc2FtZSB3
aWR0aCBhcyB0aGUgcmVkIGJhci4KIAor4oacCitUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUg
Ym90aCB0aGUgcmVkIHRoaW5nIHRoZSBibHVlIHRoaW5nIGhhcyB0aGUgc2FtZSB3aWR0aCBhcyB0
aGUgYmxhY2sgYmFyLgorCivihpwKIOKGnAogCiBQQVNTIHNpbXBsZSBzdHJldGNoeSBvdmVyIApA
QCAtMzIsNCArMzYsNSBAQCBQQVNTIHVuZW1iZWxsaXNoZWQgb3AgdW5kZXIgd2l0aCBwbGFpbiBv
cCBvdmVyCiBQQVNTIG5lc3RlZCBlbWJlbGxpc2hlZCBvcCAKIFBBU1MgbmVzdGVkIG5vbi1tdW5k
ZXJvdmVyIGVtYmVsbGlzaGVkIG9wIAogUEFTUyBzaW1wbGUgc3RyZXRjaHkgdW5kZXIgc2hvdWxk
IGVxdWFsIG92ZXIgCitQQVNTIGFsbCBzdHJldGNoeSBlbWJlbGxpc2hlZCBvcCAKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWF0aG1sL29wZW50eXBlL211bmRlcm92ZXItc3RyZXRjaC13aWR0
aC5odG1sIGIvTGF5b3V0VGVzdHMvbWF0aG1sL29wZW50eXBlL211bmRlcm92ZXItc3RyZXRjaC13
aWR0aC5odG1sCmluZGV4IGVhZWUxMWUzZmUyNWY1MWUxZTc4MWRkMDQ2NDZhMTM2YWIyOTEyN2Qu
LmU2YjhkYTA2NTBjMDYwMzM3MGY4ZTU5MmNjNzA1OWIxMGZmMDk4MGIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL21hdGhtbC9vcGVudHlwZS9tdW5kZXJvdmVyLXN0cmV0Y2gtd2lkdGguaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9tYXRobWwvb3BlbnR5cGUvbXVuZGVyb3Zlci1zdHJldGNoLXdpZHRo
Lmh0bWwKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAgICAgcnVuQ2FzZSg2LCAnbmVzdGVkIGVtYmVs
bGlzaGVkIG9wJywgJ3JlZCcsICdvcCcpOwogICAgICAgICBydW5DYXNlKDcsICduZXN0ZWQgbm9u
LW11bmRlcm92ZXIgZW1iZWxsaXNoZWQgb3AnLCAncmVkJywgJ29wJyk7CiAgICAgICAgIHJ1bkNh
c2UoOCwgJ3NpbXBsZSBzdHJldGNoeSB1bmRlciBzaG91bGQgZXF1YWwgb3ZlcicsICdyZWQnLCAn
b3AnKTsKKyAgICAgICAgcnVuQ2FzZSg5LCAnYWxsIHN0cmV0Y2h5IGVtYmVsbGlzaGVkIG9wJywg
J3JlZCcsICdibHVlJywgJ2JhcicpOwogICAgICAgICBkb25lKCk7CiAgICAgICB9CiAgICAgPC9z
Y3JpcHQ+CkBAIC0xNDAsNSArMTQxLDE2IEBACiAgICAgICAgIDxtc3BhY2UgaWQ9IjgtcmVkIiB3
aWR0aD0iMjAwcHgiIGhlaWdodD0iMTBweCIgZGVwdGg9IjEwcHgiIG1hdGhiYWNrZ3JvdW5kPSJy
ZWQiPjwvbXNwYWNlPgogICAgICAgPC9tdW5kZXJvdmVyPgogICAgIDwvbWF0aD4KKworICAgIDxw
PlRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBib3RoIHRoZSByZWQgdGhpbmcgdGhlIGJsdWUg
dGhpbmcgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSBibGFjayBiYXIuPC9wPgorICAgIDxtYXRo
IGRpc3BsYXk9ImJsb2NrIj4KKyAgICAgIDxtb3Zlcj4KKyAgICAgICAgPG1vIGlkPSI5LWJsdWUi
IGxzcGFjZT0iMHB4IiByc3BhY2U9IjBweCIgc3RyZXRjaHk9InRydWUiIG1hdGhiYWNrZ3JvdW5k
PSJibHVlIj4mI3gyMTlDOzwvbW8+CisgICAgICAgIDxtdW5kZXI+CisgICAgICAgICAgPG1vIGlk
PSI5LXJlZCIgbHNwYWNlPSIwcHgiIHJzcGFjZT0iMHB4IiBzdHJldGNoeT0idHJ1ZSIgbWF0aGJh
Y2tncm91bmQ9InJlZCI+JiN4MjE5Qzs8L21vPgorICAgICAgICAgIDxtc3BhY2UgaWQ9IjktYmFy
IiB3aWR0aD0iMjAwcHgiIGhlaWdodD0iMTBweCIgZGVwdGg9IjEwcHgiIG1hdGhiYWNrZ3JvdW5k
PSJibGFjayI+PC9tc3BhY2U+CisgICAgICAgIDwvbXVuZGVyPgorICAgICAgPC9tb3Zlcj4KKyAg
ICA8L21hdGg+CiAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330161</attachid>
            <date>2017-12-23 06:08:19 -0800</date>
            <delta_ts>2017-12-23 08:05:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180923-20171223220815.patch</filename>
            <type>text/plain</type>
            <size>16589</size>
            <attacher name="Minsheng Liu">lambda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZmYjhkNDQ3ODI0MDI4
MGM5ZTkxNTcyNjI3M2ZhNjYwNWJiN2QyNS4uYmI1ZWVlMTFlNDRkZWIyNmUzYTY2N2MxODI0YjY2
MzU4ZTIzZTUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTEyLTIzICBNaW5z
aGVuZyBMaXUgIDxsYW1iZGFAbGl1Lm1zPgorCisgICAgICAgIEFkZCBjb21tZW50cyBhbmQgaW1w
cm92ZSBjb2RlIHN0eWxlcyBmb3IgUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpzdHJldGNoSG9yaXpv
bnRhbE9wZXJhdG9yc0FuZExheW91dENoaWxkcmVuKCkgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA5MjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcGF0Y2gg
aW1wcm92ZXMgdGhlIGNvZGUgZm9yIFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6c3RyZXRjaEhvcml6
b250YWxPcGVyYXRvcnNBbmRMYXlvdXRDaGlsZHJlbigpCisgICAgICAgIGFuZCByZWxhdGVkIGZ1
bmN0aW9uLCBpbmNvcnBvcmF0aW5nIHRoZSBmb2xsb3dpbmcgc3VnZ2VzdGlvbnMgZnJvbSBidWcg
MTc5NjgyOgorCisgICAgICAgIC0gUmVtb3ZlIHNldmVyYWwgbGluZXMgb2YgdHJhaWxpbmcgc3Bh
Y2VzLgorICAgICAgICAtIENoYW5nZSBzZXZlcmFsIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMuCisg
ICAgICAgIC0gUmV3cml0ZSBob3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcigpIChmb3JtZXJseSB0
b0hvcml6b250YWxTdHJldGNoeU9wZXJhdG9yKCkpIAorICAgICAgICAgIHRvIG1ha2UgaXQgbW9y
ZSBjb25mb3JtaW5nIHRvIFdlYktpdCdzIGNvZGluZyBzdHlsZS4KKyAgICAgICAgLSBNYWtlIHVu
ZW1iZWxsaXNoZWRPcGVyYXRvcigpIGEgY29uc3QgbWV0aG9kLgorICAgICAgICAtIEFkZCBjb21t
ZW50cyBmb3Igc3RyZXRjaEhvcml6b250YWxPcGVyYXRvcnNBbmRMYXlvdXRDaGlsZHJlbigpLgor
ICAgICAgICAtIEVsaW1pbmF0ZSBhbiB1bm5lY2Vzc2FyeSBjYWxsIHRvIGZpeExheW91dEFmdGVy
U3RyZXRjaCgpIGluIHN0cmV0Y2hIb3Jpem9udGFsT3BlcmF0b3JzQW5kTGF5b3V0Q2hpbGRyZW4o
KS4KKworICAgICAgICBBZGQgb25lIG1vcmUgY2FzZSBmb3IgdGhlIHRlc3QgIm1hdGhtbC9vcGVu
dHlwZS9tdW5kZXJvdmVyLXN0cmV0Y2gtd2lkdGguaHRtbCIgCisgICAgICAgIHRvIGhhbmRsZSB0
aGUgY29ybmVyIGNhc2Ugd2hlcmUgYWxsIGNvbXBvbmVudHMgb2YgPG11bmRlcm92ZXI+LzxtdW5k
ZXI+Lzxtb3Zlcj4gYXJlIHN0cmV0Y2h5LgorCisgICAgICAgIFNpbmNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZSwgbm8gbmV3IHRlc3QgaXMgcmVxdWlyZWQuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxCbG9jazo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjp1bmVtYmVsbGlzaGVkT3BlcmF0b3IpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnVuZW1iZWxsaXNoZWRPcGVy
YXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6dW5l
bWJlbGxpc2hlZE9wZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVy
YXRvcjo6cmVzZXRTdHJldGNoU2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjp1
bmVtYmVsbGlzaGVkT3BlcmF0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MU2NyaXB0czo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpo
b3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpmaXhMYXlvdXRB
ZnRlclN0cmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpz
dHJldGNoSG9yaXpvbnRhbE9wZXJhdG9yc0FuZExheW91dENoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6dG9Ib3Jpem9udGFsU3RyZXRjaHlPcGVyYXRvcik6IERlbGV0ZWQuCisKIDIwMTctMTIt
MjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgdHJ5IHRvIGZpeCB0aGUgYnVpbGQgb24gcmVjZW50IFNES3MgYWZ0ZXIgcjIyNjI3
NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suaAppbmRleCBlOWMxOGE0MGJjYWI3YmY2ODFjZDc1MWQyMzQwNTVlNTUwMWFjOWMzLi45
MzkyNmY2ZDU2YzhiOTJhYjgyNzg1ODhlZWFmYzczY2UzODQ2NzlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBlbWJlbGxpc2hlZCBvcGVyYXRvciwgYW5kIG9taXRz
IGFueSBlbWJlbGxpc2htZW50cy4KICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgeWV0IGhhbmRsZSBh
bGwgdGhlIGNhc2VzIGluIHRoZSBNYXRoTUwgc3BlYy4gU2VlCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NjE3LgotICAgIHZpcnR1YWwgUmVuZGVyTWF0
aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIHsgcmV0dXJuIDA7IH0KKyAgICB2
aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAKICAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUs
IGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBv
c2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAK
aW5kZXggN2ExNDdlNGVhYjJiNGI5NzhhZjhmMDVmMDk4NjE5MGYyOTVhOTk5Yy4uNDQ3YzE2MDQ2
MDE4Mjc4Y2IxNTY3YTdiMjVhZmNjYjVkYmJlY2M1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTE1
Miw3ICsxNTIsNyBAQCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6U3RhY2tQYXJhbWV0ZXJzIFJlbmRl
ck1hdGhNTEZyYWN0aW9uOjpzdGFja1BhcmFtZXRlcnMoKSBjbwogICAgIHJldHVybiBwYXJhbWV0
ZXJzOwogfQogCi1SZW5kZXJNYXRoTUxPcGVyYXRvciogUmVuZGVyTWF0aE1MRnJhY3Rpb246OnVu
ZW1iZWxsaXNoZWRPcGVyYXRvcigpCitSZW5kZXJNYXRoTUxPcGVyYXRvciogUmVuZGVyTWF0aE1M
RnJhY3Rpb246OnVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkgfHwgIWlzPFJlbmRlck1hdGhNTEJsb2NrPihudW1lcmF0b3IoKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCmluZGV4IDE0NzQ3MGI0MTc2NWNhNmQwZGExODBmZjkz
ZWUzZDVlOTJkZjVhZmIuLjMxNDVjZDMzZWQwNWIwNmMwMTBiYzkyYzg3MDFlMmJlMzRjNDQ2MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZyYWN0aW9uLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheW91
dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdo
dCA9IDApIGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBmaW5hbDsKLSAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJh
dG9yKCkgZmluYWw7CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVy
YXRvcigpIGNvbnN0IGZpbmFsOwogCiAgICAgTWF0aE1MRnJhY3Rpb25FbGVtZW50JiBlbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MRnJhY3Rpb25FbGVtZW50Jj4obm9k
ZUZvck5vbkFub255bW91cygpKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCmluZGV4IDdiMDZiMDdlYjRj
ZWE4MzNjNTE3ZGJiMDJhZDFhOTcxNmY5YTlkOTAuLjE3ZmE5OTQ4ODY5MDVhNzZhYzA5NGM2MTYz
YjBhOGU4NjhlYWVlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c3RyZXRjaFRvKExheW91dFVuaXQgd2lkdGgpCiB2b2lk
IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpyZXNldFN0cmV0Y2hTaXplKCkKIHsKICAgICBBU1NFUlQo
IWlzU3RyZXRjaFdpZHRoTG9ja2VkKCkpOwotICAgIAorCiAgICAgaWYgKGlzVmVydGljYWwoKSkg
ewogICAgICAgICBtX3N0cmV0Y2hIZWlnaHRBYm92ZUJhc2VsaW5lID0gMDsKICAgICAgICAgbV9z
dHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCBiMjQ3OGM5Y2M3
ZDI4YTU3OWIxNDJkYTVjZWEzMzZiOWRlZjkxOTk1Li4yMzgwZGQ1ZWViODg0ZjM0YTU5MzcwNzQ0
YTE4YzkzZTAxYzJmOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc0ludmlzaWJsZU9wZXJhdG9yKCkgY29uc3Q7CiAKICAgICBzdGQ6Om9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKLSAgICBSZW5kZXJNYXRo
TUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgZmluYWwgeyByZXR1cm4gdGhpczsg
fQorICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0PFJlbmRlck1hdGhNTE9wZXJhdG9yKj4odGhpcyk7
IH0KIAogICAgIExheW91dFVuaXQgdmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuY3BwCmluZGV4IDNlMmE1NTlkMDA1NDg4NjIwZDE5YTQzMWRiYjAzNTgz
ZTU4YzBlYTcuLjAyNTE0MjM3MjFkYjcwOTM2ZThjMDhmYzE2YmEzYjhlNTlhNThkYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmNwcApAQCAtNTksNyArNTksNyBAQCBTY3JpcHRUeXBlIFJlbmRlck1hdGhNTFNjcmlw
dHM6OnNjcmlwdFR5cGUoKSBjb25zdAogICAgIHJldHVybiBlbGVtZW50KCkuc2NyaXB0VHlwZSgp
OwogfQogCi1SZW5kZXJNYXRoTUxPcGVyYXRvciogUmVuZGVyTWF0aE1MU2NyaXB0czo6dW5lbWJl
bGxpc2hlZE9wZXJhdG9yKCkKK1JlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRoTUxTY3Jp
cHRzOjp1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBjb25zdAogewogICAgIGF1dG8gYmFzZSA9IGZp
cnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWlzPFJlbmRlck1hdGhNTEJsb2NrPihiYXNlKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3Jp
cHRzLmgKaW5kZXggNDA0ZDdmNDkwODk4MTNmMmNiYTE3MTczMzE2NTk5YTI3ZjQwOTYwNy4uN2Vi
M2YwOGYwYjQ0Njg0ZTgwYmVhODMwZTFmMmNjMmNlY2E4ZTRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0cyA6IHB1YmxpYyBSZW5kZXJNYXRo
TUxCbG9jayB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZW5kZXJNYXRoTUxTY3JpcHRz
KTsKIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKE1hdGhNTFNjcmlwdHNFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7Ci0gICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNo
ZWRPcGVyYXRvcigpIGZpbmFsOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlz
aGVkT3BlcmF0b3IoKSBjb25zdCBmaW5hbDsKIAogcHJvdGVjdGVkOgogICAgIGJvb2wgaXNSZW5k
ZXJNYXRoTUxTY3JpcHRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRl
ck92ZXIuY3BwCmluZGV4IDg1M2M0Y2QyZGY3YWRjNTdiNzFkOGM1MTA0ZDc3NWFmYjA4MWUyMTYu
LjRhNzk2OWEyYzk4NTA3M2VmZTNhM2E3NjJiYjcxYjBlYmU4MDZmNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zl
ci5jcHAKQEAgLTUwLDU2ICs1MCw3NCBAQCBNYXRoTUxVbmRlck92ZXJFbGVtZW50JiBSZW5kZXJN
YXRoTUxVbmRlck92ZXI6OmVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxN
YXRoTUxVbmRlck92ZXJFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsKIH0KIAotc3Rh
dGljIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB0b0hvcml6b250YWxTdHJldGNoeU9wZXJhdG9yKFJl
bmRlckJveCogYm94KQorc3RhdGljIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBob3Jpem9udGFsU3Ry
ZXRjaHlPcGVyYXRvcihjb25zdCBSZW5kZXJCb3gmIGJveCkKIHsKLSAgICBpZiAoaXM8UmVuZGVy
TWF0aE1MQmxvY2s+KGJveCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyT3BlcmF0b3IgPSBk
b3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oKmJveCkudW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkp
IHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJPcGVyYXRvci0+aXNTdHJldGNoeSgpICYmICFyZW5k
ZXJPcGVyYXRvci0+aXNWZXJ0aWNhbCgpICYmICFyZW5kZXJPcGVyYXRvci0+aXNTdHJldGNoV2lk
dGhMb2NrZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyT3BlcmF0b3I7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpczxSZW5kZXJNYXRo
TUxCbG9jaz4oYm94KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiByZW5k
ZXJPcGVyYXRvciA9IGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPihib3gpLnVuZW1iZWxsaXNo
ZWRPcGVyYXRvcigpOworICAgIGlmICghcmVuZGVyT3BlcmF0b3IpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgaWYgKCFyZW5kZXJPcGVyYXRvci0+aXNTdHJldGNoeSgpIHx8IHJlbmRl
ck9wZXJhdG9yLT5pc1ZlcnRpY2FsKCkgfHwgcmVuZGVyT3BlcmF0b3ItPmlzU3RyZXRjaFdpZHRo
TG9ja2VkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHJlbmRlck9w
ZXJhdG9yOwogfQotICAgIAotc3RhdGljIHZvaWQgZml4TGF5b3V0QWZ0ZXJTdHJldGNoKFJlbmRl
ckJveCogYW5jZXN0b3IsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBzdHJldGNoeU9wZXJhdG9yKQor
CitzdGF0aWMgdm9pZCBmaXhMYXlvdXRBZnRlclN0cmV0Y2goUmVuZGVyQm94JiBhbmNlc3Rvciwg
UmVuZGVyTWF0aE1MT3BlcmF0b3ImIHN0cmV0Y2h5T3BlcmF0b3IpCiB7Ci0gICAgc3RyZXRjaHlP
cGVyYXRvci0+c2V0U3RyZXRjaFdpZHRoTG9ja2VkKHRydWUpOwotICAgIHN0cmV0Y2h5T3BlcmF0
b3ItPnNldE5lZWRzTGF5b3V0KCk7Ci0gICAgYW5jZXN0b3ItPmxheW91dElmTmVlZGVkKCk7Ci0g
ICAgc3RyZXRjaHlPcGVyYXRvci0+c2V0U3RyZXRjaFdpZHRoTG9ja2VkKGZhbHNlKTsKKyAgICBz
dHJldGNoeU9wZXJhdG9yLnNldFN0cmV0Y2hXaWR0aExvY2tlZCh0cnVlKTsKKyAgICBzdHJldGNo
eU9wZXJhdG9yLnNldE5lZWRzTGF5b3V0KCk7CisgICAgYW5jZXN0b3IubGF5b3V0SWZOZWVkZWQo
KTsKKyAgICBzdHJldGNoeU9wZXJhdG9yLnNldFN0cmV0Y2hXaWR0aExvY2tlZChmYWxzZSk7CiB9
CiAKIHZvaWQgUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpzdHJldGNoSG9yaXpvbnRhbE9wZXJhdG9y
c0FuZExheW91dENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKICAgICBBU1NF
UlQobmVlZHNMYXlvdXQoKSk7CisKKyAgICAvLyBXZSBhcHBseSBob3Jpem9udGFsIHN0cmV0Y2h5
IHJ1bGVzIGZyb20gdGhlIE1hdGhNTCBzcGVjIChzZWN0aW9ucyAzLjIuNS44LjMgYW5kIDMuMi41
LjguNCksIHdoaWNoCisgICAgLy8gY2FuIGJlIHJvdWdobHkgc3VtbWFyaXplZCBhcyAic3RyZXRj
aGluZyBvcGVyc2F0b3JzIHRvIHRoZSBtYXhpbXVtIHdpZHRocyBvZiBhbGwgY2hpbGRyZW4iIGFu
ZAorICAgIC8vIG1pbm9yIHZhcmlhdGlvbnMgb2YgdGhhdCBhbGdvcml0aG0gZG8gbm90IGFmZmVj
dCB0aGUgcmVzdWx0LiBIb3dldmVyLCB0aGUgc3BlYyBpcyBhIGJpdCBhbWJpZ3VvdXMKKyAgICAv
LyBmb3IgZW1iZWxsaXNoZWQgb3BlcmF0b3JzIChzZWN0aW9uIDMuMi41LjcuMykgYW5kIGRpZmZl
cmVudCBhcHByb2FjaGVzIGNhbiBsZWFkIHRvIHNpZ25pZmljYW50CisgICAgLy8gc3RyZXRjaCBz
aXplIGRpZmZlcmVuY2VzLiBXZSBtYWRlIHRoZSBmb2xsb3dpbmcgZGVjaXNpb25zOgorICAgIC8v
IC0gVGhlIHVuc3RyZXRjaGVkIHNpemUgaXMgdGhlIGVtYmVsbGlzaGVkIG9wZXJhdG9yIHdpZHRo
IHdpdGggdGhlIDxtbz4gYXQgdGhlIGNvcmUgdW5zdHJldGNoZWQuCisgICAgLy8gLSBJbiBnZW5l
cmFsLCB0aGUgdGFyZ2V0IHNpemUgaXMganVzdCB0aGUgbWF4aW11bSB3aWR0aHMgb2Ygbm9uLXN0
cmV0Y2h5IGNoaWxkcmVuIGJlY2F1c2UgdGhlCisgICAgLy8gZW1iZWxsaXNobWVudHMgY291bGQg
bWFrZSB3aWR0aHMgc2lnbmlmaWNhbnRseSBsYXJnZXIuCisgICAgLy8gLSBJbiB0aGUgZWRnZSBj
YXNlIHdoZW4gYWxsIG9wZXJhdG9ycyBvZiBzdHJldGNoeSwgd2UgZm9sbG93IHRoZSBzcGVjaWZp
Y2F0aW9uIGFuZCB0YWtlIHRoZQorICAgIC8vIG1heGltdW0gb2YgYWxsIHVuc3RyZXRjaGVkIHNp
emVzLgorICAgIC8vIC0gVGhlIDxtbz4gYXQgdGhlIGNvcmUgaXMgc3RyZXRjaGVkIHRvIGNvdmVy
IHRoZSB0YXJnZXQgc2l6ZSwgZXZlbiBpZiB0aGUgZW1iZWxsaXNoZWQgb3BlcmF0b3IKKyAgICAv
LyBtaWdodCBiZWNvbWUgbXVjaCB3aWRlci4KICAgICAKICAgICBWZWN0b3I8UmVuZGVyQm94Kiwg
Mz4gZW1iZWxsaXNoZWRPcGVyYXRvcnM7CiAgICAgVmVjdG9yPFJlbmRlck1hdGhNTE9wZXJhdG9y
KiwgMz4gc3RyZXRjaHlPcGVyYXRvcnM7CiAgICAgYm9vbCBpc0FsbFN0cmV0Y2h5T3BlcmF0b3Jz
ID0gdHJ1ZTsKICAgICBMYXlvdXRVbml0IHN0cmV0Y2hXaWR0aCA9IDA7Ci0gICAgCisKICAgICBm
b3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICBpZiAoYXV0byogc3RyZXRjaHlPcGVyYXRvciA9
IHRvSG9yaXpvbnRhbFN0cmV0Y2h5T3BlcmF0b3IoY2hpbGQpKSB7CisgICAgICAgIGlmIChhdXRv
KiBzdHJldGNoeU9wZXJhdG9yID0gaG9yaXpvbnRhbFN0cmV0Y2h5T3BlcmF0b3IoKmNoaWxkKSkg
ewogICAgICAgICAgICAgZW1iZWxsaXNoZWRPcGVyYXRvcnMuYXBwZW5kKGNoaWxkKTsKICAgICAg
ICAgICAgIHN0cmV0Y2h5T3BlcmF0b3JzLmFwcGVuZChzdHJldGNoeU9wZXJhdG9yKTsKLSAgICAg
ICAgICAgIHN0cmV0Y2h5T3BlcmF0b3ItPnJlc2V0U3RyZXRjaFNpemUoKTsKLSAgICAgICAgICAg
IGZpeExheW91dEFmdGVyU3RyZXRjaChjaGlsZCwgc3RyZXRjaHlPcGVyYXRvcik7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBpc0FsbFN0cmV0Y2h5T3BlcmF0b3JzID0gZmFsc2U7CiAg
ICAgICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgICAgIHN0cmV0Y2hX
aWR0aCA9IHN0ZDo6bWF4KHN0cmV0Y2hXaWR0aCwgY2hpbGQtPmxvZ2ljYWxXaWR0aCgpKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGlmIChpc0FsbFN0cmV0Y2h5T3BlcmF0b3JzKSB7
Ci0gICAgICAgIGZvciAoYXV0byogZW1iZWxsaXNoZWRPcGVyYXRvciA6IGVtYmVsbGlzaGVkT3Bl
cmF0b3JzKQotICAgICAgICAgICAgc3RyZXRjaFdpZHRoID0gc3RkOjptYXgoc3RyZXRjaFdpZHRo
LCBlbWJlbGxpc2hlZE9wZXJhdG9yLT5sb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZW1iZWxsaXNoZWRPcGVyYXRvcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgICAgIHN0cmV0Y2h5T3BlcmF0b3JzW2ldLT5yZXNldFN0cmV0Y2hTaXplKCk7CisgICAgICAg
ICAgICBmaXhMYXlvdXRBZnRlclN0cmV0Y2goKmVtYmVsbGlzaGVkT3BlcmF0b3JzW2ldLCAqc3Ry
ZXRjaHlPcGVyYXRvcnNbaV0pOworICAgICAgICAgICAgc3RyZXRjaFdpZHRoID0gc3RkOjptYXgo
c3RyZXRjaFdpZHRoLCBlbWJlbGxpc2hlZE9wZXJhdG9yc1tpXS0+bG9naWNhbFdpZHRoKCkpOwor
ICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbWJl
bGxpc2hlZE9wZXJhdG9ycy5zaXplKCk7IGkrKykgewogICAgICAgICBzdHJldGNoeU9wZXJhdG9y
c1tpXS0+c3RyZXRjaFRvKHN0cmV0Y2hXaWR0aCk7Ci0gICAgICAgIGZpeExheW91dEFmdGVyU3Ry
ZXRjaChlbWJlbGxpc2hlZE9wZXJhdG9yc1tpXSwgc3RyZXRjaHlPcGVyYXRvcnNbaV0pOworICAg
ICAgICBmaXhMYXlvdXRBZnRlclN0cmV0Y2goKmVtYmVsbGlzaGVkT3BlcmF0b3JzW2ldLCAqc3Ry
ZXRjaHlPcGVyYXRvcnNbaV0pOwogICAgIH0KIH0KIApAQCAtMjkwLDcgKzMwOCw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4s
IExheW91dFVuaXQgcGFnZUxvCiAgICAgQVNTRVJUKCFiYXNlKCkubmVlZHNMYXlvdXQoKSk7CiAg
ICAgQVNTRVJUKHNjcmlwdFR5cGUoKSA9PSBTY3JpcHRUeXBlOjpPdmVyIHx8ICF1bmRlcigpLm5l
ZWRzTGF5b3V0KCkpOwogICAgIEFTU0VSVChzY3JpcHRUeXBlKCkgPT0gU2NyaXB0VHlwZTo6VW5k
ZXIgfHwgIW92ZXIoKS5uZWVkc0xheW91dCgpKTsKLSAgICAKKwogICAgIExheW91dFVuaXQgbG9n
aWNhbFdpZHRoID0gYmFzZSgpLmxvZ2ljYWxXaWR0aCgpOwogICAgIGlmIChzY3JpcHRUeXBlKCkg
PT0gU2NyaXB0VHlwZTo6VW5kZXIgfHwgc2NyaXB0VHlwZSgpID09IFNjcmlwdFR5cGU6OlVuZGVy
T3ZlcikKICAgICAgICAgbG9naWNhbFdpZHRoID0gc3RkOjptYXgobG9naWNhbFdpZHRoLCB1bmRl
cigpLmxvZ2ljYWxXaWR0aCgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YWFmMGM1ZjNhMzdmZDIxMjY4YzM4MDU5ZmFh
ZTBmYmZiOGRjMDM0Li4yNjEwMTBiOWYyODhjOTQ2NzllNmEwMDE0NzU1YTA5OGY2MzUxMDZiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMTItMjMgIE1pbnNoZW5nIExpdSAgPGxhbWJkYUBs
aXUubXM+CisKKyAgICAgICAgQWRkIGNvbW1lbnRzIGFuZCBpbXByb3ZlIGNvZGUgc3R5bGVzIGZv
ciBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OnN0cmV0Y2hIb3Jpem9udGFsT3BlcmF0b3JzQW5kTGF5
b3V0Q2hpbGRyZW4oKSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDkyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvbmUgbW9yZSBjYXNlIGZvciB0aGUgdGVz
dCAibWF0aG1sL29wZW50eXBlL211bmRlcm92ZXItc3RyZXRjaC13aWR0aC5odG1sIiAKKyAgICAg
ICAgdG8gaGFuZGxlIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSBhbGwgY29tcG9uZW50cyBvZiA8bXVu
ZGVyb3Zlcj4vPG11bmRlcj4vPG1vdmVyPiBhcmUgc3RyZXRjaHkuCisKKyAgICAgICAgU2luY2Ug
dGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLCBubyBuZXcgdGVzdCBpcyByZXF1aXJlZC4KKwor
ICAgICAgICAqIG1hdGhtbC9vcGVudHlwZS9tdW5kZXJvdmVyLXN0cmV0Y2gtd2lkdGgtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIG1hdGhtbC9vcGVudHlwZS9tdW5kZXJvdmVyLXN0cmV0Y2gtd2lk
dGguaHRtbDoKKwogMjAxNy0xMi0yMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgbGF5b3V0IHRlc3QgZ2FyZGVuaW5n
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tYXRobWwvb3BlbnR5cGUvbXVuZGVyb3Zlci1zdHJl
dGNoLXdpZHRoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21hdGhtbC9vcGVudHlwZS9tdW5k
ZXJvdmVyLXN0cmV0Y2gtd2lkdGgtZXhwZWN0ZWQudHh0CmluZGV4IDFmYTUxZGExZDYzNDlmNTFk
NGE4NDgzYzFjZWMwYjkyZTcwYjc3ZjEuLjcxNjkyNTM2YzJjMGU4NDA5NGQyN2YxZDdjMWY4ODQ5
NmUzYWNlNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21hdGhtbC9vcGVudHlwZS9tdW5kZXJv
dmVyLXN0cmV0Y2gtd2lkdGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21hdGhtbC9v
cGVudHlwZS9tdW5kZXJvdmVyLXN0cmV0Y2gtd2lkdGgtZXhwZWN0ZWQudHh0CkBAIC0yMiw2ICsy
MiwxMCBAQCBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgdGhlIGJsYWNrIHRoaW5nIGhhcyB0
aGUgc2FtZSB3aWR0aCBhcyB0aGUgcmVkIGJhci4KIOKGnAogVGhpcyB0ZXN0IHBhc3NlcyBpZiB5
b3Ugc2VlIHRoZSBibGFjayB0aGluZyBoYXMgdGhlIHNhbWUgd2lkdGggYXMgdGhlIHJlZCBiYXIu
CiAKK+KGnAorVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGJvdGggdGhlIHJlZCBhbmQgYmx1
ZSB0aGluZ3MgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgYmxhY2sgYmFyLgorCivihpwKIOKG
nAogCiBQQVNTIHNpbXBsZSBzdHJldGNoeSBvdmVyIApAQCAtMzIsNCArMzYsNSBAQCBQQVNTIHVu
ZW1iZWxsaXNoZWQgb3AgdW5kZXIgd2l0aCBwbGFpbiBvcCBvdmVyCiBQQVNTIG5lc3RlZCBlbWJl
bGxpc2hlZCBvcCAKIFBBU1MgbmVzdGVkIG5vbi1tdW5kZXJvdmVyIGVtYmVsbGlzaGVkIG9wIAog
UEFTUyBzaW1wbGUgc3RyZXRjaHkgdW5kZXIgc2hvdWxkIGVxdWFsIG92ZXIgCitQQVNTIGFsbCBz
dHJldGNoeSBlbWJlbGxpc2hlZCBvcCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWF0aG1s
L29wZW50eXBlL211bmRlcm92ZXItc3RyZXRjaC13aWR0aC5odG1sIGIvTGF5b3V0VGVzdHMvbWF0
aG1sL29wZW50eXBlL211bmRlcm92ZXItc3RyZXRjaC13aWR0aC5odG1sCmluZGV4IGVhZWUxMWUz
ZmUyNWY1MWUxZTc4MWRkMDQ2NDZhMTM2YWIyOTEyN2QuLmNkYjhmMDE4MmJjNTRiODNkZWZmYWJl
NzM3MTMzNDY0MGU5ZWM4YjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21hdGhtbC9vcGVudHlw
ZS9tdW5kZXJvdmVyLXN0cmV0Y2gtd2lkdGguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tYXRobWwv
b3BlbnR5cGUvbXVuZGVyb3Zlci1zdHJldGNoLXdpZHRoLmh0bWwKQEAgLTUwLDYgKzUwLDcgQEAK
ICAgICAgICAgcnVuQ2FzZSg2LCAnbmVzdGVkIGVtYmVsbGlzaGVkIG9wJywgJ3JlZCcsICdvcCcp
OwogICAgICAgICBydW5DYXNlKDcsICduZXN0ZWQgbm9uLW11bmRlcm92ZXIgZW1iZWxsaXNoZWQg
b3AnLCAncmVkJywgJ29wJyk7CiAgICAgICAgIHJ1bkNhc2UoOCwgJ3NpbXBsZSBzdHJldGNoeSB1
bmRlciBzaG91bGQgZXF1YWwgb3ZlcicsICdyZWQnLCAnb3AnKTsKKyAgICAgICAgcnVuQ2FzZSg5
LCAnYWxsIHN0cmV0Y2h5IGVtYmVsbGlzaGVkIG9wJywgJ3JlZCcsICdibHVlJywgJ2JhcicpOwog
ICAgICAgICBkb25lKCk7CiAgICAgICB9CiAgICAgPC9zY3JpcHQ+CkBAIC0xNDAsNSArMTQxLDE2
IEBACiAgICAgICAgIDxtc3BhY2UgaWQ9IjgtcmVkIiB3aWR0aD0iMjAwcHgiIGhlaWdodD0iMTBw
eCIgZGVwdGg9IjEwcHgiIG1hdGhiYWNrZ3JvdW5kPSJyZWQiPjwvbXNwYWNlPgogICAgICAgPC9t
dW5kZXJvdmVyPgogICAgIDwvbWF0aD4KKworICAgIDxwPlRoaXMgdGVzdCBwYXNzZXMgaWYgeW91
IHNlZSBib3RoIHRoZSByZWQgYW5kIGJsdWUgdGhpbmdzIGhhdmUgdGhlIHNhbWUgd2lkdGggYXMg
dGhlIGJsYWNrIGJhci48L3A+CisgICAgPG1hdGggZGlzcGxheT0iYmxvY2siPgorICAgICAgPG1v
dmVyPgorICAgICAgICA8bW8gaWQ9IjktYmx1ZSIgbHNwYWNlPSIwcHgiIHJzcGFjZT0iMHB4IiBz
dHJldGNoeT0idHJ1ZSIgbWF0aGJhY2tncm91bmQ9ImJsdWUiPiYjeDIxOUM7PC9tbz4KKyAgICAg
ICAgPG11bmRlcj4KKyAgICAgICAgICA8bW8gaWQ9IjktcmVkIiBsc3BhY2U9IjBweCIgcnNwYWNl
PSIwcHgiIHN0cmV0Y2h5PSJ0cnVlIiBtYXRoYmFja2dyb3VuZD0icmVkIj4mI3gyMTlDOzwvbW8+
CisgICAgICAgICAgPG1zcGFjZSBpZD0iOS1iYXIiIHdpZHRoPSIyMDBweCIgaGVpZ2h0PSIxMHB4
IiBkZXB0aD0iMTBweCIgbWF0aGJhY2tncm91bmQ9ImJsYWNrIj48L21zcGFjZT4KKyAgICAgICAg
PC9tdW5kZXI+CisgICAgICA8L21vdmVyPgorICAgIDwvbWF0aD4KICAgPC9ib2R5PgogPC9odG1s
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>