<?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>211524</bug_id>
          
          <creation_ts>2020-05-06 12:35:31 -0700</creation_ts>
          <short_desc>Preserve character set information when writing to the pasteboard when copying rich text</short_desc>
          <delta_ts>2022-08-02 21:24:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1649747</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-06 12:35:31 -0700</bug_when>
    <thetext>See: the discussion in https://bugs.webkit.org/show_bug.cgi?id=211498.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650355</commentid>
    <comment_count>1</comment_count>
      <attachid>398798</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-07 14:39:56 -0700</bug_when>
    <thetext>Created attachment 398798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650376</commentid>
    <comment_count>2</comment_count>
      <attachid>398804</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-07 15:29:16 -0700</bug_when>
    <thetext>Created attachment 398804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650380</commentid>
    <comment_count>3</comment_count>
      <attachid>398804</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-07 15:35:15 -0700</bug_when>
    <thetext>Comment on attachment 398804
Patch

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

&gt; Source/WebCore/editing/markup.cpp:921
&gt; +#if PLATFORM(COCOA)

I think this kind of issue might exist on other platforms as well. Would be nice to call people’s attention to this in case they want it to take advantage of it.

&gt; Source/WebCore/editing/markup.cpp:926
&gt; +    if (!accumulatedMarkup.isAllASCII()) {
&gt; +        // On Cocoa platforms, this markup is eventually persisted to the pasteboard and read back as UTF-8 data,
&gt; +        // so this meta tag is needed for clients that read this data in the future from the pasteboard and load it.
&gt; +        return makeString(&quot;&lt;meta charset=\&quot;UTF-8\&quot;&gt;&quot;, WTFMove(accumulatedMarkup));
&gt; +    }

Could avoid making a second copy of the entire string by adding an isAllASCII function to StyledMarkupAccumulator and adding another function you can use to add this to m_reversedPrecedingMarkup before calling takeResults. Less economical in code complexity, but more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650401</commentid>
    <comment_count>4</comment_count>
      <attachid>398804</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-07 16:09:29 -0700</bug_when>
    <thetext>Comment on attachment 398804
Patch

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

&gt;&gt; Source/WebCore/editing/markup.cpp:926
&gt;&gt; +    }
&gt; 
&gt; Could avoid making a second copy of the entire string by adding an isAllASCII function to StyledMarkupAccumulator and adding another function you can use to add this to m_reversedPrecedingMarkup before calling takeResults. Less economical in code complexity, but more efficient.

Sounds good to me! I’ll update the patch to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650412</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-07 16:37:30 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Comment on attachment 398804 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398804&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/editing/markup.cpp:926
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; Could avoid making a second copy of the entire string by adding an isAllASCII function to StyledMarkupAccumulator and adding another function you can use to add this to m_reversedPrecedingMarkup before calling takeResults. Less economical in code complexity, but more efficient.
&gt; 
&gt; Sounds good to me! I’ll update the patch to do this.

So adding an `isAllASCII()` method to `StyledMarkupAccumulator` would require us to also add an `isAllASCII()` method to StringBuilder — which, I think, seems fine? I imagine it would just be like WTF::String’s. Something like:

bool isAllASCII() const { return !m_buffer || m_buffer-&gt;isAllASCII(); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650423</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-07 17:12:42 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #5)
&gt; (In reply to Wenson Hsieh from comment #4)
&gt; &gt; Comment on attachment 398804 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=398804&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/editing/markup.cpp:926
&gt; &gt; &gt;&gt; +    }
&gt; &gt; &gt; 
&gt; &gt; &gt; Could avoid making a second copy of the entire string by adding an isAllASCII function to StyledMarkupAccumulator and adding another function you can use to add this to m_reversedPrecedingMarkup before calling takeResults. Less economical in code complexity, but more efficient.
&gt; &gt; 
&gt; &gt; Sounds good to me! I’ll update the patch to do this.
&gt; 
&gt; So adding an `isAllASCII()` method to `StyledMarkupAccumulator` would
&gt; require us to also add an `isAllASCII()` method to StringBuilder — which, I
&gt; think, seems fine? I imagine it would just be like WTF::String’s. Something
&gt; like:
&gt; 
&gt; bool isAllASCII() const { return !m_buffer || m_buffer-&gt;isAllASCII(); }

…upon further testing, this isn’t correct, because a StringBuilder can be resized (but keep the same m_buffer) :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650433</commentid>
    <comment_count>7</comment_count>
      <attachid>398819</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-07 17:33:47 -0700</bug_when>
    <thetext>Created attachment 398819
Address feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650613</commentid>
    <comment_count>8</comment_count>
      <attachid>398819</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-08 09:04:27 -0700</bug_when>
    <thetext>Comment on attachment 398819
Address feedback

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

&gt; Source/WebCore/editing/MarkupAccumulator.h:72
&gt; +    bool isAllASCII() const { return m_markup.toStringPreserveCapacity().isAllASCII(); }

We can follow up and make a much more efficient version of this. Fine to land like this I suppose.

&gt; Source/WebCore/editing/markup.cpp:248
&gt; +        m_reversedPrecedingMarkup.append(&quot;&lt;meta charset=\&quot;UTF-8\&quot;&gt;&quot;);

Should add a _s here, I think. It’s more efficient to create a String from an ASCIILiteral, since it doesn’t copy the characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650636</commentid>
    <comment_count>9</comment_count>
      <attachid>398819</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-08 09:35:03 -0700</bug_when>
    <thetext>Comment on attachment 398819
Address feedback

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

&gt;&gt; Source/WebCore/editing/MarkupAccumulator.h:72
&gt;&gt; +    bool isAllASCII() const { return m_markup.toStringPreserveCapacity().isAllASCII(); }
&gt; 
&gt; We can follow up and make a much more efficient version of this. Fine to land like this I suppose.

I’m happy to do this optimization after this lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650661</commentid>
    <comment_count>10</comment_count>
      <attachid>398819</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-08 10:06:35 -0700</bug_when>
    <thetext>Comment on attachment 398819
Address feedback

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

&gt;&gt;&gt; Source/WebCore/editing/MarkupAccumulator.h:72
&gt;&gt;&gt; +    bool isAllASCII() const { return m_markup.toStringPreserveCapacity().isAllASCII(); }
&gt;&gt; 
&gt;&gt; We can follow up and make a much more efficient version of this. Fine to land like this I suppose.
&gt; 
&gt; I’m happy to do this optimization after this lands.

\o/

&gt;&gt; Source/WebCore/editing/markup.cpp:248
&gt;&gt; +        m_reversedPrecedingMarkup.append(&quot;&lt;meta charset=\&quot;UTF-8\&quot;&gt;&quot;);
&gt; 
&gt; Should add a _s here, I think. It’s more efficient to create a String from an ASCIILiteral, since it doesn’t copy the characters.

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650663</commentid>
    <comment_count>11</comment_count>
      <attachid>398871</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-08 10:13:16 -0700</bug_when>
    <thetext>Created attachment 398871
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650677</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-08 10:35:51 -0700</bug_when>
    <thetext>Committed r261395: &lt;https://trac.webkit.org/changeset/261395&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398871.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650680</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-08 10:41:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/63027006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1888571</commentid>
    <comment_count>14</comment_count>
      <attachid>398819</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-02 21:24:31 -0700</bug_when>
    <thetext>Comment on attachment 398819
Address feedback

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

&gt;&gt;&gt; Source/WebCore/editing/markup.cpp:248
&gt;&gt;&gt; +        m_reversedPrecedingMarkup.append(&quot;&lt;meta charset=\&quot;UTF-8\&quot;&gt;&quot;);
&gt;&gt; 
&gt;&gt; Should add a _s here, I think. It’s more efficient to create a String from an ASCIILiteral, since it doesn’t copy the characters.
&gt; 
&gt; Done!

This patch broke WebKit&apos;s ability to save XHTML documents.
This element will cause a parsing error in a XHTML document.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398798</attachid>
            <date>2020-05-07 14:39:56 -0700</date>
            <delta_ts>2020-05-07 15:29:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211524-20200507143956.patch</filename>
            <type>text/plain</type>
            <size>15111</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDRhMDQxZjgwNTU0OTA4
NTRhNDY3ZDA3ZmQzZmUxODQ4ZmVhYTg3ZS4uNGJiMTk3ZDA1NDY4NGNmM2VkNTE4NjdjZjcxYmM4
ZjA3MzAzN2VkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA1LTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFByZXNlcnZlIGNo
YXJhY3RlciBzZXQgaW5mb3JtYXRpb24gd2hlbiB3cml0aW5nIHRvIHRoZSBwYXN0ZWJvYXJkIHdo
ZW4gY29weWluZyByaWNoIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMTUyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBmb2xsb3d1cCB0byByMjYxMjQ3LCB3aGljaCBp
bnRyb2R1Y2VkIGEgd29ya2Fyb3VuZCBmb3IgQ29jb2EgcGxhdGZvcm1zIHRvIGF1dG9tYXRpY2Fs
bHkgYWRkIGEKKyAgICAgICAgYG1ldGEgY2hhcnNldGAgd2hlbiB3cml0aW5nIEhUTUwgZGF0YSB0
byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gV2hlbiBjb3B5aW5nIGEgcmljaCB0ZXh0IHNlbGVj
dGlvbiwgd2UgdXNlIGEKKyAgICAgICAgZGlmZmVyZW50IGNvZGVwYXRoIHdoZW4gc2FuaXRpemlu
ZyBET00gY29udGVudCAtIHRoYXQgaXMsIGBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFy
YW5jZWAuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIGNoYW5nZSBhbHNvIGludHJvZHVjZWQgYW4g
ZW51bSwgYEFkZE1ldGFDaGFyc2V0SWZOZWVkZWRgLCB0byBsaW1pdCBhcHBseWluZyB0aGlzIHdv
cmthcm91bmQgdG8gb25seQorICAgICAgICB3aGVuIHdlJ3JlIHdyaXRpbmcgSFRNTCB0byB0aGUg
Y2xpcGJvYXJkLiBIb3dldmVyLCBpdCBzaG91bGQgYmUgaGFybWxlc3MgdG8gaW5jbHVkZSB0aGlz
IHdoZW4gcmVhZGluZyBzYW5pdGl6ZWQKKyAgICAgICAgSFRNTCBhcyB3ZWxsLCBzbyB3ZSBjYW4g
YWxzbyBzaW1wbGlmeSB0aGlzIGNvZGUgYnkgcmVtb3ZpbmcgdGhlIGBBZGRNZXRhQ2hhcnNldElm
TmVlZGVkYCBlbnVtIChhbmQgYWxsIG9mIGl0cworICAgICAgICB1c2VzKS4KKworICAgICAgICBU
ZXN0OiBDb3B5SFRNTC5TYW5pdGl6YXRpb25QcmVzZXJ2ZXNDaGFyYWN0ZXJTZXRJblNlbGVjdGVk
VGV4dAorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZO
ZWVkZWQpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZEhUTUwpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNhbml0aXplTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZVByZXNlcnZp
bmdWaXN1YWxBcHBlYXJhbmNlSW50ZXJuYWwpOgorCisgICAgICAgIE1vdmUgdGhlIGBtZXRhIGNo
YXJzZXRgIHdvcmthcm91bmQgZnJvbSBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1l
bnQgdG8KKyAgICAgICAgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2VJbnRlcm5h
bCwgc3VjaCB0aGF0IEhUTUwgZGF0YSB3cml0dGVuIHRvIHRoZSBwYXN0ZWJvYXJkIHdoZW4gY29w
eWluZyByaWNoCisgICAgICAgIHRleHQgY2FuIGJlIHVzZWQgdG8gbG9hZCBhIHdlYiB2aWV3LCB3
aXRob3V0IGxvc2luZyB0aGUgZmFjdCB0aGF0IHRoZSBjb3BpZWQgY29udGVudCB3YXMgVVRGLTgg
ZW5jb2RlZC4KKworICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJ
bkRvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorCiAyMDIwLTA1LTA3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIGNh
cmV0IGFwcGVhcnMgaW4gdGhlIG1pZGRsZSBvZiBhIHNlYXJjaCBmaWVsZCB3aGVuIGZpZWxkIGlz
IGZvY3VzZWQgb24gYWdvZGEuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwCmluZGV4IDBmZDZmMjA5MmU0N2FhNmY5Zjk1ZWUyNGRlMWNmOGVlY2Uw
ZmViOWUuLjc0NjVkMGU2YTg2Njg3MzhmNGViZGM1NzRmOTI2Yzc0ODhlN2FhNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjksNyAr
MjY5LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgaWYgKG1hcmt1cFRvU2Fu
aXRpemUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fZGF0YSA9
IHsgc2FuaXRpemVNYXJrdXAobWFya3VwVG9TYW5pdGl6ZSwgQWRkTWV0YUNoYXJzZXRJZk5lZWRl
ZDo6WWVzKSB9OworICAgICAgICBtX2RhdGEgPSB7IHNhbml0aXplTWFya3VwKG1hcmt1cFRvU2Fu
aXRpemUpIH07CiAgICAgfQogCiAgICAgaWYgKG1fdHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDg0ZjJiMTEyZDBkZDkwNGVlMWNlM2Ex
ODQ5MDU2ZWVmZDU3YTExYzYuLjg0NjNhNDhlOTc0ZmJlM2Y3N2Y2NjllNTE3ODI0NzliOTRjYjEw
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAg
dm9pZCBEYXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGRhdGEpCiAKICAgICBTdHJpbmcgc2FuaXRpemVkRGF0YTsKICAgICBp
ZiAodHlwZSA9PSAidGV4dC9odG1sIikKLSAgICAgICAgc2FuaXRpemVkRGF0YSA9IHNhbml0aXpl
TWFya3VwKGRhdGEsIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQ6Olllcyk7CisgICAgICAgIHNhbml0
aXplZERhdGEgPSBzYW5pdGl6ZU1hcmt1cChkYXRhKTsKICAgICBlbHNlIGlmICh0eXBlID09ICJ0
ZXh0L3VyaS1saXN0IikgewogICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIGRhdGEpOwogICAg
ICAgICBpZiAodXJsLmlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYTQ4ZTU1YWI0OWE2ZmEzMTkx
Y2M2N2QzMWYzYWIyMjVjN2MzYmI3NC4uMjg5OWYzNWU4MDhhYzA0NGNlNWE3MWEwNDk1MTYyYjE1
MWUyZjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTQ0OSw3ICs0NDksNyBAQCBzdGF0aWMgU3RyaW5nIHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRp
b25Eb2N1bQogCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50
cygpKSB7CiAgICAgICAgIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhmcmFtZSwg
ZnJhZ21lbnQsIG1hcmt1cEFuZEFyY2hpdmUuYXJjaGl2ZS0+c3VicmVzb3VyY2VzKCkpOwotICAg
ICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUo
ZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywg
bXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOworICAgICAgICByZXR1cm4g
c2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAq
c3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7
CiAgICAgfQogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBibG9iVVJMTWFw
OwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJj
aGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAKICAgICByZXBs
YWNlU3VicmVzb3VyY2VVUkxzKGZyYWdtZW50LmdldCgpLCBXVEZNb3ZlKGJsb2JVUkxNYXApKTsK
IAotICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92
ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQ6Ok5v
LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CisgICAgcmV0dXJuIHNh
bml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0
YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwog
fQogCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQpAQCAtNTgwLDcgKzU4MCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEhU
TUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKICAgICBTdHJpbmcgbWFya3VwOwogICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9hcmRE
YXRhRW5hYmxlZCgpICYmIHNob3VsZFNhbml0aXplKCkpIHsKLSAgICAgICAgbWFya3VwID0gc2Fu
aXRpemVNYXJrdXAoc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXgsIEFkZE1ldGFDaGFyc2V0
SWZOZWVkZWQ6Ok5vLCBtc29MaXN0UXVpcmtzRm9yTWFya3VwKCksIFdURjo6RnVuY3Rpb248dm9p
ZCAoRG9jdW1lbnRGcmFnbWVudCYpPiB7IFtdIChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCkg
eworICAgICAgICBtYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChzdHJpbmdPbWl0dGluZ01pY3Jvc29m
dFByZWZpeCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERv
Y3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsKICAg
ICAgICAgICAgIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhmcmFnbWVudCwgW10gKGNv
bnN0IFVSTCYgdXJsKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFJlcGxhY2VTdWJy
ZXNvdXJjZVVSTCh1cmwpOwogICAgICAgICAgICAgfSk7CkBAIC01OTksNyArNTk5LDcgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykK
IAogICAgIFN0cmluZyByYXdIVE1MID0gc3RyaXBNaWNyb3NvZnRQcmVmaXgoc3RyaW5nKTsKICAg
ICBpZiAoc2hvdWxkU2FuaXRpemUoKSkgewotICAgICAgICBtYXJrdXAgPSBzYW5pdGl6ZU1hcmt1
cChyYXdIVE1MLCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywgbXNvTGlzdFF1aXJrc0Zvck1h
cmt1cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERvY3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9j
dW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsKKyAgICAgICAgbWFya3VwID0gc2FuaXRpemVNYXJr
dXAocmF3SFRNTCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KERvY3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsK
ICAgICAgICAgICAgIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhmcmFnbWVudCwgW10g
KGNvbnN0IFVSTCYgdXJsKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFJlcGxhY2VT
dWJyZXNvdXJjZVVSTCh1cmwpOwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggN2FmYjg1OGQ4MzkyM2UyZWMyMDgxNmY1M2EzNTZkNDllZGE5ZjcyYi4uMTE5
YzA3NTliYWUxNGUwOTVkMzJhZTU3N2FjOWI1MjIxZGEyNDE4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVh
dGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogICAgIHJldHVybiBwYWdlOwogfQogCi1T
dHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBBZGRNZXRhQ2hhcnNl
dElmTmVlZGVkIGFkZE1ldGFDaGFyc2V0SWZOZWVkZWQsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1
aXJrcywgT3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZy
YWdtZW50U2FuaXRpemVyKQorU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3
SFRNTCwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9u
PHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIpCiB7CiAgICAgYXV0
byBwYWdlID0gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgRG9jdW1l
bnQqIHN0YWdpbmdEb2N1bWVudCA9IHBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CkBAIC0y
MTIsNyArMjEyLDcgQEAgU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3SFRN
TCwgQWRkTWV0YUNoYXJzZXRJZk5lZWRlZCBhZGRNZXRhQ2hhcnMKICAgICBpZiAoZnJhZ21lbnRT
YW5pdGl6ZXIpCiAgICAgICAgICgqZnJhZ21lbnRTYW5pdGl6ZXIpKGZyYWdtZW50KTsKIAotICAg
IHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFn
bWVudCksICpzdGFnaW5nRG9jdW1lbnQsIGFkZE1ldGFDaGFyc2V0SWZOZWVkZWQsIG1zb0xpc3RR
dWlya3MsIHJhd0hUTUwpOworICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudElu
RG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xpc3RRdWly
a3MsIHJhd0hUTUwpOwogfQogCiBlbnVtIGNsYXNzIE1TT0xpc3RNb2RlIHsgUHJlc2VydmUsIERv
Tm90UHJlc2VydmUgfTsKQEAgLTkxNyw3ICs5MTcsMTUgQEAgc3RhdGljIFN0cmluZyBzZXJpYWxp
emVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZUludGVybmFsKGNvbnN0IFBvc2l0aW9uJiBzdGFy
dCwKICAgICBpZiAoYW5ub3RhdGUgPT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6WWVzICYmIG5l
ZWRJbnRlcmNoYW5nZU5ld2xpbmVBZnRlcih2aXNpYmxlRW5kLnByZXZpb3VzKCkpKQogICAgICAg
ICBhY2N1bXVsYXRvci5hcHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKIAot
ICAgIHJldHVybiBhY2N1bXVsYXRvci50YWtlUmVzdWx0cygpOworICAgIGF1dG8gYWNjdW11bGF0
ZWRNYXJrdXAgPSBhY2N1bXVsYXRvci50YWtlUmVzdWx0cygpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGlmICghYWNjdW11bGF0ZWRNYXJrdXAuaXNBbGxBU0NJSSgpKSB7CisgICAgICAgIC8v
IE9uIENvY29hIHBsYXRmb3JtcywgdGhpcyBtYXJrdXAgaXMgZXZlbnR1YWxseSBwZXJzaXN0ZWQg
dG8gdGhlIHBhc3RlYm9hcmQgYW5kIHJlYWQgYmFjayBhcyBVVEYtOCBkYXRhLAorICAgICAgICAv
LyBzbyB0aGlzIG1ldGEgdGFnIGlzIG5lZWRlZCBmb3IgY2xpZW50cyB0aGF0IHJlYWQgdGhpcyBk
YXRhIGluIHRoZSBmdXR1cmUgZnJvbSB0aGUgcGFzdGVib2FyZCBhbmQgbG9hZCBpdC4KKyAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoIjxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiPiIsIFdURk1vdmUo
YWNjdW11bGF0ZWRNYXJrdXApKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gYWNjdW11bGF0
ZWRNYXJrdXA7CiB9CiAKIFN0cmluZyBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5j
ZShjb25zdCBSYW5nZSYgcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlIGFubm90YXRlLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzIGNvbnZlcnRCbG9ja3NU
b0lubGluZXMsIFJlc29sdmVVUkxzIHVybHNUb1Jlc2x2ZSkKQEAgLTk0NSw3ICs5NTMsNyBAQCBz
dGF0aWMgYm9vbCBzaG91bGRQcmVzZXJ2ZU1TT0xpc3RzKGNvbnN0IFN0cmluZyYgbWFya3VwKQog
ICAgICAgICAmJiBodG1sVGFnLmNvbnRhaW5zKCJ4bWxuczp3PVwidXJuOnNjaGVtYXMtbWljcm9z
b2Z0LWNvbTpvZmZpY2U6d29yZFwiIik7CiB9CiAKLVN0cmluZyBzYW5pdGl6ZWRNYXJrdXBGb3JG
cmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIERvY3Vt
ZW50JiBkb2N1bWVudCwgQWRkTWV0YUNoYXJzZXRJZk5lZWRlZCBhZGRNZXRhQ2hhcnNldElmTmVl
ZGVkLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxN
YXJrdXApCitTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFJlZjxE
b2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBEb2N1bWVudCYgZG9jdW1lbnQsIE1TT0xpc3RR
dWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1hcmt1cCkKIHsKICAg
ICBNU09MaXN0TW9kZSBtc29MaXN0TW9kZSA9IG1zb0xpc3RRdWlya3MgPT0gTVNPTGlzdFF1aXJr
czo6Q2hlY2tJZk5lZWRlZCAmJiBzaG91bGRQcmVzZXJ2ZU1TT0xpc3RzKG9yaWdpbmFsTWFya3Vw
KQogICAgICAgICA/IE1TT0xpc3RNb2RlOjpQcmVzZXJ2ZSA6IE1TT0xpc3RNb2RlOjpEb05vdFBy
ZXNlcnZlOwpAQCAtOTY2LDE3ICs5NzQsNiBAQCBTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJh
Z21lbnRJbkRvY3VtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBEbwogICAg
ICAgICAgICAgInhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MFwiPiIpOwog
ICAgIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChhZGRNZXRhQ2hhcnNldElmTmVl
ZGVkID09IEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQ6OlllcyAmJiAhcmVzdWx0LmlzQWxsQVNDSUko
KSkgewotICAgICAgICAvLyBPbiBDb2NvYSBwbGF0Zm9ybXMsIHRoaXMgbWFya3VwIGlzIGV2ZW50
dWFsbHkgcGVyc2lzdGVkIHRvIHRoZSBwYXN0ZWJvYXJkIGFuZCByZWFkIGJhY2sgYXMgVVRGLTgg
ZGF0YSwKLSAgICAgICAgLy8gc28gdGhpcyBtZXRhIHRhZyBpcyBuZWVkZWQgZm9yIGNsaWVudHMg
dGhhdCByZWFkIHRoaXMgZGF0YSBpbiB0aGUgZnV0dXJlIGZyb20gdGhlIHBhc3RlYm9hcmQgYW5k
IGxvYWQgaXQuCi0gICAgICAgIC8vIFRoaXMgbG9naWMgaXMgdXNlZCBieSBib3RoIERhdGFUcmFu
c2ZlciBhbmQgQ2xpcGJvYXJkIEFQSXMgdG8gc2FuaXRpemUgInRleHQvaHRtbCIgZnJvbSB0aGUg
cGFnZS4KLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8bWV0YSBjaGFyc2V0PVwiVVRG
LThcIj4iKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShhZGRNZXRhQ2hhcnNldElm
TmVlZGVkKTsKLSNlbmRpZgotCiAgICAgYnVpbGRlci5hcHBlbmQocmVzdWx0KTsKIAogICAgIGlm
IChtc29MaXN0TW9kZSA9PSBNU09MaXN0TW9kZTo6UHJlc2VydmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuaAppbmRleCBkNDI3ZTkwZDgwYTAwMDJlNTVlMmQyOGI1YWQ2MWU5NWZlMWM1MGJjLi44NjU2
N2Y0NTc4MGFhYmE1MWIzZWQ4MmEwOWE1MWUyMjAyNmEwMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmgKQEAgLTU0LDkgKzU0LDggQEAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0
ZXMoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIFdURjo6RnVuY3Rpb248Ym9vbCgKIAogc3RkOjp1
bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogZW51
bSBjbGFzcyBNU09MaXN0UXVpcmtzIDogYm9vbCB7IENoZWNrSWZOZWVkZWQsIERpc2FibGVkIH07
Ci1lbnVtIGNsYXNzIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQgOiBib29sIHsgTm8sIFllcyB9Owot
U3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYsIEFkZE1ldGFDaGFyc2V0SWZOZWVk
ZWQgPSBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywgTVNPTGlzdFF1aXJrcyA9IE1TT0xpc3RR
dWlya3M6OkRpc2FibGVkLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFn
bWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIgPSBXVEY6Om51bGxvcHQpOwotU3RyaW5nIHNhbml0
aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwg
RG9jdW1lbnQmLCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkLCBNU09MaXN0UXVpcmtzLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmFsTWFya3VwKTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJp
bmcmLCBNU09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIE9wdGlvbmFsPFdU
Rjo6RnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXplciA9
IFdURjo6bnVsbG9wdCk7CitTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3Vt
ZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBEb2N1bWVudCYsIE1TT0xpc3RRdWlya3MsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxNYXJrdXApOwogCiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSYgY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB0ZXh0KTsKIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBQYXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdD
b250ZW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAyZjJiM2Q0ZGVlMjFlM2U3YjE3MWM3MDRiZGMzY2E3OTJhMzcwNzdmLi4xOGEwMzk4NDI2
Mzk4OGVjNDc5NjExOGFiOGIyYjljM2EzMDJkMTQ1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMDcgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUg
Y2hhcmFjdGVyIHNldCBpbmZvcm1hdGlvbiB3aGVuIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQg
d2hlbiBjb3B5aW5nIHJpY2ggdGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjExNTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRoZSBIVE1M
IGRhdGEgd3JpdHRlbiB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGNvcHlpbmcgYSByaWNoIHRleHQg
c2VsZWN0aW9uCisgICAgICAgIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhbiBgTlNBdHRyaWJ1dGVk
U3RyaW5nYCB0aGF0IGNvbnRhaW5zIGNvcnJlY3RseSBlbmNvZGVkIG5vbi1MYXRpbiBjaGFyYWN0
ZXJzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRN
TC5tbToKKwogMjAyMC0wNS0wNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGRhdGEgc3VtbWFyeSBjYWxs
IHNob3VsZCBjcmVhdGUgYSB3ZWIgcHJvY2VzcyBwb29sIGlmIG9uZSBkb2Vzbid0IGV4aXN0CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1M
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQpp
bmRleCA3NmVkYTIzMmVkM2EzZjAyNjVjNmQ1NTMxZTExNDk1NTE5ZTIyODE3Li5mN2M0MDhkODgz
YmQ5N2QxODcyODUwNDYzNzU5ZDdkNzM2M2JkMWIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0KQEAgLTEwMiw2ICsxMDIsMjcgQEAg
VEVTVChDb3B5SFRNTCwgU2FuaXRpemVzKQogICAgIEVYUEVDVF9GQUxTRShodG1sSW5OYXRpdmVQ
YXN0ZWJvYXJkLmNvbnRhaW5zKCJkYW5nZXJvdXNDb2RlIikpOwogfQogCitURVNUKENvcHlIVE1M
LCBTYW5pdGl6YXRpb25QcmVzZXJ2ZXNDaGFyYWN0ZXJTZXRJblNlbGVjdGVkVGV4dCkKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5h
YmxlZCgpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjwhRE9D
VFlQRSBodG1sPiIKKyAgICAgICAgIjxib2R5PiIKKyAgICAgICAgIjxtZXRhIGNoYXJzZXQ9J3V0
Zi04Jz4iCisgICAgICAgICI8c3BhbiBpZD0nY29weSc+5oiR5Y+r6Kyd5paH5piHPC9zcGFuPiIK
KyAgICAgICAgIjxzY3JpcHQ+Z2V0U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRyZW4oY29weSk7
PC9zY3JpcHQ+IgorICAgICAgICAiPC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IGNvcHk6bmlsXTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBOU1N0
cmluZyAqY29waWVkTWFya3VwID0gcmVhZEhUTUxTdHJpbmdGcm9tUGFzdGVib2FyZCgpOworICAg
IEVYUEVDVF9UUlVFKFtjb3BpZWRNYXJrdXAgY29udGFpbnNTdHJpbmc6QCI8c3BhbiAiXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW2NvcGllZE1hcmt1cCBjb250YWluc1N0cmluZzpAIuaIkeWPq+isneaW
h+aYhyJdKTsKKyAgICBFWFBFQ1RfVFJVRShbY29waWVkTWFya3VwIGNvbnRhaW5zU3RyaW5nOkAi
PC9zcGFuPiJdKTsKKworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpyZWFkSFRNTERhdGFGcm9tUGFzdGVi
b2FyZCgpIG9wdGlvbnM6QHsgTlNEb2N1bWVudFR5cGVEb2N1bWVudE9wdGlvbjogTlNIVE1MVGV4
dERvY3VtZW50VHlwZSB9IGRvY3VtZW50QXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCLmiJHlj6vorJ3mlofmmIciLCBbYXR0cmlidXRlZFN0cmluZyBzdHJp
bmddKTsKK30KKwogVEVTVChDb3B5SFRNTCwgU2FuaXRpemF0aW9uUHJlc2VydmVzQ2hhcmFjdGVy
U2V0KQogewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmV0YWluUHRyPE5TU3RyaW5nPiwgUmV0YWlu
UHRyPE5TRGF0YT4+LCAzPiBtYXJrdXBTdHJpbmdzQW5kRGF0YTsKQEAgLTEzNyw3ICsxNTgsNyBA
QCBURVNUKENvcHlIVE1MLCBTYW5pdGl6YXRpb25QcmVzZXJ2ZXNDaGFyYWN0ZXJTZXQpCiAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUSgi5oiR5Y+r6Kyd5paH5piHIiwgW2F0dHJpYnV0ZWRTdHJpbmcg
c3RyaW5nXSk7CiAKICAgICAgICAgX19ibG9jayBCT09MIGZvdW5kQ29sb3JBdHRyaWJ1dGUgPSBO
TzsKLSAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgZW51bWVyYXRlQXR0cmlidXRlOk5TRm9yZWdy
b3VuZENvbG9yQXR0cmlidXRlTmFtZSBpblJhbmdlOk5TTWFrZVJhbmdlKDAsIDUpIG9wdGlvbnM6
MCB1c2luZ0Jsb2NrOl4oQ29jb2FDb2xvciAqY29sb3IsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKikg
eworICAgICAgICBbYXR0cmlidXRlZFN0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGU6TlNGb3JlZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lIGluUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgNSkgb3B0aW9uczow
IHVzaW5nQmxvY2s6XihDb2NvYUNvbG9yICpjb2xvciwgTlNSYW5nZSByYW5nZSwgQk9PTCopIHsK
ICAgICAgICAgICAgIENHRmxvYXQgcmVkQ29tcG9uZW50ID0gMDsKICAgICAgICAgICAgIENHRmxv
YXQgZ3JlZW5Db21wb25lbnQgPSAwOwogICAgICAgICAgICAgQ0dGbG9hdCBibHVlQ29tcG9uZW50
ID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398804</attachid>
            <date>2020-05-07 15:29:16 -0700</date>
            <delta_ts>2020-05-07 17:33:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211524-20200507152915.patch</filename>
            <type>text/plain</type>
            <size>18058</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyYTIxNDI5MmYyZDA5
M2ZjNWU2YTNmNTFlMjY5NjNhZjgzZTkwMy4uY2U2Y2Q3YTI2M2Y2NjI5OGVhMjY2MDk4MTg4NTBh
OTc2Mzg1M2VlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA1LTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFByZXNlcnZlIGNo
YXJhY3RlciBzZXQgaW5mb3JtYXRpb24gd2hlbiB3cml0aW5nIHRvIHRoZSBwYXN0ZWJvYXJkIHdo
ZW4gY29weWluZyByaWNoIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMTUyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBmb2xsb3d1cCB0byByMjYxMjQ3LCB3aGljaCBp
bnRyb2R1Y2VkIGEgd29ya2Fyb3VuZCBmb3IgQ29jb2EgcGxhdGZvcm1zIHRvIGF1dG9tYXRpY2Fs
bHkgYWRkIGEKKyAgICAgICAgYG1ldGEgY2hhcnNldGAgd2hlbiB3cml0aW5nIEhUTUwgZGF0YSB0
byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gV2hlbiBjb3B5aW5nIGEgcmljaCB0ZXh0IHNlbGVj
dGlvbiwgd2UgdXNlIGEKKyAgICAgICAgZGlmZmVyZW50IGNvZGVwYXRoIHdoZW4gc2FuaXRpemlu
ZyBET00gY29udGVudCAtIHRoYXQgaXMsIGBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFy
YW5jZWAuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIGNoYW5nZSBhbHNvIGludHJvZHVjZWQgYW4g
ZW51bSwgYEFkZE1ldGFDaGFyc2V0SWZOZWVkZWRgLCB0byBsaW1pdCBhcHBseWluZyB0aGlzIHdv
cmthcm91bmQgdG8gb25seQorICAgICAgICB3aGVuIHdlJ3JlIHdyaXRpbmcgSFRNTCB0byB0aGUg
Y2xpcGJvYXJkLiBIb3dldmVyLCBpdCBzaG91bGQgYmUgaGFybWxlc3MgdG8gaW5jbHVkZSB0aGlz
IHdoZW4gcmVhZGluZyBzYW5pdGl6ZWQKKyAgICAgICAgSFRNTCBhcyB3ZWxsLCBzbyB3ZSBjYW4g
YWxzbyBzaW1wbGlmeSB0aGlzIGNvZGUgYnkgcmVtb3ZpbmcgdGhlIGBBZGRNZXRhQ2hhcnNldElm
TmVlZGVkYCBlbnVtIChhbmQgYWxsIG9mIGl0cworICAgICAgICB1c2VzKS4KKworICAgICAgICBU
ZXN0OiBDb3B5SFRNTC5TYW5pdGl6YXRpb25QcmVzZXJ2ZXNDaGFyYWN0ZXJTZXRJblNlbGVjdGVk
VGV4dAorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZO
ZWVkZWQpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZEhUTUwpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNhbml0aXplTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZVByZXNlcnZp
bmdWaXN1YWxBcHBlYXJhbmNlSW50ZXJuYWwpOgorCisgICAgICAgIE1vdmUgdGhlIGBtZXRhIGNo
YXJzZXRgIHdvcmthcm91bmQgZnJvbSBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1l
bnQgdG8KKyAgICAgICAgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2VJbnRlcm5h
bCwgc3VjaCB0aGF0IEhUTUwgZGF0YSB3cml0dGVuIHRvIHRoZSBwYXN0ZWJvYXJkIHdoZW4gY29w
eWluZyByaWNoCisgICAgICAgIHRleHQgY2FuIGJlIHVzZWQgdG8gbG9hZCBhIHdlYiB2aWV3LCB3
aXRob3V0IGxvc2luZyB0aGUgZmFjdCB0aGF0IHRoZSBjb3BpZWQgY29udGVudCB3YXMgVVRGLTgg
ZW5jb2RlZC4KKworICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJ
bkRvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorCiAyMDIwLTA1LTA3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIGNh
cmV0IGFwcGVhcnMgaW4gdGhlIG1pZGRsZSBvZiBhIHNlYXJjaCBmaWVsZCB3aGVuIGZpZWxkIGlz
IGZvY3VzZWQgb24gYWdvZGEuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwCmluZGV4IDBmZDZmMjA5MmU0N2FhNmY5Zjk1ZWUyNGRlMWNmOGVlY2Uw
ZmViOWUuLjc0NjVkMGU2YTg2Njg3MzhmNGViZGM1NzRmOTI2Yzc0ODhlN2FhNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjksNyAr
MjY5LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgaWYgKG1hcmt1cFRvU2Fu
aXRpemUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fZGF0YSA9
IHsgc2FuaXRpemVNYXJrdXAobWFya3VwVG9TYW5pdGl6ZSwgQWRkTWV0YUNoYXJzZXRJZk5lZWRl
ZDo6WWVzKSB9OworICAgICAgICBtX2RhdGEgPSB7IHNhbml0aXplTWFya3VwKG1hcmt1cFRvU2Fu
aXRpemUpIH07CiAgICAgfQogCiAgICAgaWYgKG1fdHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDg0ZjJiMTEyZDBkZDkwNGVlMWNlM2Ex
ODQ5MDU2ZWVmZDU3YTExYzYuLjg0NjNhNDhlOTc0ZmJlM2Y3N2Y2NjllNTE3ODI0NzliOTRjYjEw
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAg
dm9pZCBEYXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGRhdGEpCiAKICAgICBTdHJpbmcgc2FuaXRpemVkRGF0YTsKICAgICBp
ZiAodHlwZSA9PSAidGV4dC9odG1sIikKLSAgICAgICAgc2FuaXRpemVkRGF0YSA9IHNhbml0aXpl
TWFya3VwKGRhdGEsIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQ6Olllcyk7CisgICAgICAgIHNhbml0
aXplZERhdGEgPSBzYW5pdGl6ZU1hcmt1cChkYXRhKTsKICAgICBlbHNlIGlmICh0eXBlID09ICJ0
ZXh0L3VyaS1saXN0IikgewogICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIGRhdGEpOwogICAg
ICAgICBpZiAodXJsLmlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYTQ4ZTU1YWI0OWE2ZmEzMTkx
Y2M2N2QzMWYzYWIyMjVjN2MzYmI3NC4uMjg5OWYzNWU4MDhhYzA0NGNlNWE3MWEwNDk1MTYyYjE1
MWUyZjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTQ0OSw3ICs0NDksNyBAQCBzdGF0aWMgU3RyaW5nIHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRp
b25Eb2N1bQogCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50
cygpKSB7CiAgICAgICAgIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhmcmFtZSwg
ZnJhZ21lbnQsIG1hcmt1cEFuZEFyY2hpdmUuYXJjaGl2ZS0+c3VicmVzb3VyY2VzKCkpOwotICAg
ICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUo
ZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywg
bXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOworICAgICAgICByZXR1cm4g
c2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAq
c3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7
CiAgICAgfQogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBibG9iVVJMTWFw
OwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJj
aGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAKICAgICByZXBs
YWNlU3VicmVzb3VyY2VVUkxzKGZyYWdtZW50LmdldCgpLCBXVEZNb3ZlKGJsb2JVUkxNYXApKTsK
IAotICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92
ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQ6Ok5v
LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CisgICAgcmV0dXJuIHNh
bml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0
YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwog
fQogCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQpAQCAtNTgwLDcgKzU4MCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEhU
TUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKICAgICBTdHJpbmcgbWFya3VwOwogICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9hcmRE
YXRhRW5hYmxlZCgpICYmIHNob3VsZFNhbml0aXplKCkpIHsKLSAgICAgICAgbWFya3VwID0gc2Fu
aXRpemVNYXJrdXAoc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXgsIEFkZE1ldGFDaGFyc2V0
SWZOZWVkZWQ6Ok5vLCBtc29MaXN0UXVpcmtzRm9yTWFya3VwKCksIFdURjo6RnVuY3Rpb248dm9p
ZCAoRG9jdW1lbnRGcmFnbWVudCYpPiB7IFtdIChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCkg
eworICAgICAgICBtYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChzdHJpbmdPbWl0dGluZ01pY3Jvc29m
dFByZWZpeCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERv
Y3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsKICAg
ICAgICAgICAgIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhmcmFnbWVudCwgW10gKGNv
bnN0IFVSTCYgdXJsKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFJlcGxhY2VTdWJy
ZXNvdXJjZVVSTCh1cmwpOwogICAgICAgICAgICAgfSk7CkBAIC01OTksNyArNTk5LDcgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykK
IAogICAgIFN0cmluZyByYXdIVE1MID0gc3RyaXBNaWNyb3NvZnRQcmVmaXgoc3RyaW5nKTsKICAg
ICBpZiAoc2hvdWxkU2FuaXRpemUoKSkgewotICAgICAgICBtYXJrdXAgPSBzYW5pdGl6ZU1hcmt1
cChyYXdIVE1MLCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywgbXNvTGlzdFF1aXJrc0Zvck1h
cmt1cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERvY3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9j
dW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsKKyAgICAgICAgbWFya3VwID0gc2FuaXRpemVNYXJr
dXAocmF3SFRNTCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KERvY3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsK
ICAgICAgICAgICAgIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhmcmFnbWVudCwgW10g
KGNvbnN0IFVSTCYgdXJsKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFJlcGxhY2VT
dWJyZXNvdXJjZVVSTCh1cmwpOwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggN2FmYjg1OGQ4MzkyM2UyZWMyMDgxNmY1M2EzNTZkNDllZGE5ZjcyYi4uMTE5
YzA3NTliYWUxNGUwOTVkMzJhZTU3N2FjOWI1MjIxZGEyNDE4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVh
dGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogICAgIHJldHVybiBwYWdlOwogfQogCi1T
dHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBBZGRNZXRhQ2hhcnNl
dElmTmVlZGVkIGFkZE1ldGFDaGFyc2V0SWZOZWVkZWQsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1
aXJrcywgT3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZy
YWdtZW50U2FuaXRpemVyKQorU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3
SFRNTCwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9u
PHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIpCiB7CiAgICAgYXV0
byBwYWdlID0gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgRG9jdW1l
bnQqIHN0YWdpbmdEb2N1bWVudCA9IHBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CkBAIC0y
MTIsNyArMjEyLDcgQEAgU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3SFRN
TCwgQWRkTWV0YUNoYXJzZXRJZk5lZWRlZCBhZGRNZXRhQ2hhcnMKICAgICBpZiAoZnJhZ21lbnRT
YW5pdGl6ZXIpCiAgICAgICAgICgqZnJhZ21lbnRTYW5pdGl6ZXIpKGZyYWdtZW50KTsKIAotICAg
IHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFn
bWVudCksICpzdGFnaW5nRG9jdW1lbnQsIGFkZE1ldGFDaGFyc2V0SWZOZWVkZWQsIG1zb0xpc3RR
dWlya3MsIHJhd0hUTUwpOworICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudElu
RG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xpc3RRdWly
a3MsIHJhd0hUTUwpOwogfQogCiBlbnVtIGNsYXNzIE1TT0xpc3RNb2RlIHsgUHJlc2VydmUsIERv
Tm90UHJlc2VydmUgfTsKQEAgLTkxNyw3ICs5MTcsMTUgQEAgc3RhdGljIFN0cmluZyBzZXJpYWxp
emVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZUludGVybmFsKGNvbnN0IFBvc2l0aW9uJiBzdGFy
dCwKICAgICBpZiAoYW5ub3RhdGUgPT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6WWVzICYmIG5l
ZWRJbnRlcmNoYW5nZU5ld2xpbmVBZnRlcih2aXNpYmxlRW5kLnByZXZpb3VzKCkpKQogICAgICAg
ICBhY2N1bXVsYXRvci5hcHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKIAot
ICAgIHJldHVybiBhY2N1bXVsYXRvci50YWtlUmVzdWx0cygpOworICAgIGF1dG8gYWNjdW11bGF0
ZWRNYXJrdXAgPSBhY2N1bXVsYXRvci50YWtlUmVzdWx0cygpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGlmICghYWNjdW11bGF0ZWRNYXJrdXAuaXNBbGxBU0NJSSgpKSB7CisgICAgICAgIC8v
IE9uIENvY29hIHBsYXRmb3JtcywgdGhpcyBtYXJrdXAgaXMgZXZlbnR1YWxseSBwZXJzaXN0ZWQg
dG8gdGhlIHBhc3RlYm9hcmQgYW5kIHJlYWQgYmFjayBhcyBVVEYtOCBkYXRhLAorICAgICAgICAv
LyBzbyB0aGlzIG1ldGEgdGFnIGlzIG5lZWRlZCBmb3IgY2xpZW50cyB0aGF0IHJlYWQgdGhpcyBk
YXRhIGluIHRoZSBmdXR1cmUgZnJvbSB0aGUgcGFzdGVib2FyZCBhbmQgbG9hZCBpdC4KKyAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoIjxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiPiIsIFdURk1vdmUo
YWNjdW11bGF0ZWRNYXJrdXApKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gYWNjdW11bGF0
ZWRNYXJrdXA7CiB9CiAKIFN0cmluZyBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5j
ZShjb25zdCBSYW5nZSYgcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlIGFubm90YXRlLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzIGNvbnZlcnRCbG9ja3NU
b0lubGluZXMsIFJlc29sdmVVUkxzIHVybHNUb1Jlc2x2ZSkKQEAgLTk0NSw3ICs5NTMsNyBAQCBz
dGF0aWMgYm9vbCBzaG91bGRQcmVzZXJ2ZU1TT0xpc3RzKGNvbnN0IFN0cmluZyYgbWFya3VwKQog
ICAgICAgICAmJiBodG1sVGFnLmNvbnRhaW5zKCJ4bWxuczp3PVwidXJuOnNjaGVtYXMtbWljcm9z
b2Z0LWNvbTpvZmZpY2U6d29yZFwiIik7CiB9CiAKLVN0cmluZyBzYW5pdGl6ZWRNYXJrdXBGb3JG
cmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIERvY3Vt
ZW50JiBkb2N1bWVudCwgQWRkTWV0YUNoYXJzZXRJZk5lZWRlZCBhZGRNZXRhQ2hhcnNldElmTmVl
ZGVkLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxN
YXJrdXApCitTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFJlZjxE
b2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBEb2N1bWVudCYgZG9jdW1lbnQsIE1TT0xpc3RR
dWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1hcmt1cCkKIHsKICAg
ICBNU09MaXN0TW9kZSBtc29MaXN0TW9kZSA9IG1zb0xpc3RRdWlya3MgPT0gTVNPTGlzdFF1aXJr
czo6Q2hlY2tJZk5lZWRlZCAmJiBzaG91bGRQcmVzZXJ2ZU1TT0xpc3RzKG9yaWdpbmFsTWFya3Vw
KQogICAgICAgICA/IE1TT0xpc3RNb2RlOjpQcmVzZXJ2ZSA6IE1TT0xpc3RNb2RlOjpEb05vdFBy
ZXNlcnZlOwpAQCAtOTY2LDE3ICs5NzQsNiBAQCBTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJh
Z21lbnRJbkRvY3VtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBEbwogICAg
ICAgICAgICAgInhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MFwiPiIpOwog
ICAgIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChhZGRNZXRhQ2hhcnNldElmTmVl
ZGVkID09IEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQ6OlllcyAmJiAhcmVzdWx0LmlzQWxsQVNDSUko
KSkgewotICAgICAgICAvLyBPbiBDb2NvYSBwbGF0Zm9ybXMsIHRoaXMgbWFya3VwIGlzIGV2ZW50
dWFsbHkgcGVyc2lzdGVkIHRvIHRoZSBwYXN0ZWJvYXJkIGFuZCByZWFkIGJhY2sgYXMgVVRGLTgg
ZGF0YSwKLSAgICAgICAgLy8gc28gdGhpcyBtZXRhIHRhZyBpcyBuZWVkZWQgZm9yIGNsaWVudHMg
dGhhdCByZWFkIHRoaXMgZGF0YSBpbiB0aGUgZnV0dXJlIGZyb20gdGhlIHBhc3RlYm9hcmQgYW5k
IGxvYWQgaXQuCi0gICAgICAgIC8vIFRoaXMgbG9naWMgaXMgdXNlZCBieSBib3RoIERhdGFUcmFu
c2ZlciBhbmQgQ2xpcGJvYXJkIEFQSXMgdG8gc2FuaXRpemUgInRleHQvaHRtbCIgZnJvbSB0aGUg
cGFnZS4KLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8bWV0YSBjaGFyc2V0PVwiVVRG
LThcIj4iKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShhZGRNZXRhQ2hhcnNldElm
TmVlZGVkKTsKLSNlbmRpZgotCiAgICAgYnVpbGRlci5hcHBlbmQocmVzdWx0KTsKIAogICAgIGlm
IChtc29MaXN0TW9kZSA9PSBNU09MaXN0TW9kZTo6UHJlc2VydmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuaAppbmRleCBkNDI3ZTkwZDgwYTAwMDJlNTVlMmQyOGI1YWQ2MWU5NWZlMWM1MGJjLi44NjU2
N2Y0NTc4MGFhYmE1MWIzZWQ4MmEwOWE1MWUyMjAyNmEwMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmgKQEAgLTU0LDkgKzU0LDggQEAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0
ZXMoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIFdURjo6RnVuY3Rpb248Ym9vbCgKIAogc3RkOjp1
bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogZW51
bSBjbGFzcyBNU09MaXN0UXVpcmtzIDogYm9vbCB7IENoZWNrSWZOZWVkZWQsIERpc2FibGVkIH07
Ci1lbnVtIGNsYXNzIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQgOiBib29sIHsgTm8sIFllcyB9Owot
U3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYsIEFkZE1ldGFDaGFyc2V0SWZOZWVk
ZWQgPSBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywgTVNPTGlzdFF1aXJrcyA9IE1TT0xpc3RR
dWlya3M6OkRpc2FibGVkLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFn
bWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIgPSBXVEY6Om51bGxvcHQpOwotU3RyaW5nIHNhbml0
aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwg
RG9jdW1lbnQmLCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkLCBNU09MaXN0UXVpcmtzLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmFsTWFya3VwKTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJp
bmcmLCBNU09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIE9wdGlvbmFsPFdU
Rjo6RnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXplciA9
IFdURjo6bnVsbG9wdCk7CitTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3Vt
ZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBEb2N1bWVudCYsIE1TT0xpc3RRdWlya3MsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxNYXJrdXApOwogCiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSYgY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB0ZXh0KTsKIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBQYXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdD
b250ZW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBjMjljODkyMDE1MzYxNmViZDk2MzE3NDEwZDIzYmFhNGRhYThjYzk0Li4zN2E3ZGI4ZTcx
ZDExMmVjY2FhYTE4OTk4MzkyOWUwOGQ3N2ZmOTE1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMDcgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUg
Y2hhcmFjdGVyIHNldCBpbmZvcm1hdGlvbiB3aGVuIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQg
d2hlbiBjb3B5aW5nIHJpY2ggdGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjExNTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRoZSBIVE1M
IGRhdGEgd3JpdHRlbiB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGNvcHlpbmcgYSByaWNoIHRleHQg
c2VsZWN0aW9uCisgICAgICAgIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhbiBgTlNBdHRyaWJ1dGVk
U3RyaW5nYCB0aGF0IGNvbnRhaW5zIGNvcnJlY3RseSBlbmNvZGVkIG5vbi1MYXRpbiBjaGFyYWN0
ZXJzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRN
TC5tbToKKwogMjAyMC0wNS0wNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgd2Via2l0cHk6IFVzZSBhcHBsZV9hZGRpdGlvbnMgY2VydGlmaWNhdGUgcGF0
aCBpZiBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29weUhUTUwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvcHlIVE1MLm1tCmluZGV4IDc2ZWRhMjMyZWQzYTNmMDI2NWM2ZDU1MzFlMTE0OTU1MTll
MjI4MTcuLmY3YzQwOGQ4ODNiZDk3ZDE4NzI4NTA0NjM3NTlkN2Q3MzYzYmQxYjEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQpAQCAt
MTAyLDYgKzEwMiwyNyBAQCBURVNUKENvcHlIVE1MLCBTYW5pdGl6ZXMpCiAgICAgRVhQRUNUX0ZB
TFNFKGh0bWxJbk5hdGl2ZVBhc3RlYm9hcmQuY29udGFpbnMoImRhbmdlcm91c0NvZGUiKSk7CiB9
CiAKK1RFU1QoQ29weUhUTUwsIFNhbml0aXphdGlvblByZXNlcnZlc0NoYXJhY3RlclNldEluU2Vs
ZWN0ZWRUZXh0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9t
UGFzdGVib2FyZERhdGFFbmFibGVkKCk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOkAiPCFET0NUWVBFIGh0bWw+IgorICAgICAgICAiPGJvZHk+IgorICAgICAgICAi
PG1ldGEgY2hhcnNldD0ndXRmLTgnPiIKKyAgICAgICAgIjxzcGFuIGlkPSdjb3B5Jz7miJHlj6vo
rJ3mlofmmIc8L3NwYW4+IgorICAgICAgICAiPHNjcmlwdD5nZXRTZWxlY3Rpb24oKS5zZWxlY3RB
bGxDaGlsZHJlbihjb3B5KTs8L3NjcmlwdD4iCisgICAgICAgICI8L2JvZHk+Il07CisgICAgW3dl
YlZpZXcgY29weTpuaWxdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBk
YXRlXTsKKworICAgIE5TU3RyaW5nICpjb3BpZWRNYXJrdXAgPSByZWFkSFRNTFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKCk7CisgICAgRVhQRUNUX1RSVUUoW2NvcGllZE1hcmt1cCBjb250YWluc1N0cmlu
ZzpAIjxzcGFuICJdKTsKKyAgICBFWFBFQ1RfVFJVRShbY29waWVkTWFya3VwIGNvbnRhaW5zU3Ry
aW5nOkAi5oiR5Y+r6Kyd5paH5piHIl0pOworICAgIEVYUEVDVF9UUlVFKFtjb3BpZWRNYXJrdXAg
Y29udGFpbnNTdHJpbmc6QCI8L3NwYW4+Il0pOworCisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnJlYWRI
VE1MRGF0YUZyb21QYXN0ZWJvYXJkKCkgb3B0aW9uczpAeyBOU0RvY3VtZW50VHlwZURvY3VtZW50
T3B0aW9uOiBOU0hUTUxUZXh0RG9jdW1lbnRUeXBlIH0gZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbCBl
cnJvcjpuaWxdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIuaIkeWPq+isneaWh+aYhyIsIFthdHRy
aWJ1dGVkU3RyaW5nIHN0cmluZ10pOworfQorCiBURVNUKENvcHlIVE1MLCBTYW5pdGl6YXRpb25Q
cmVzZXJ2ZXNDaGFyYWN0ZXJTZXQpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZXRhaW5QdHI8
TlNTdHJpbmc+LCBSZXRhaW5QdHI8TlNEYXRhPj4sIDM+IG1hcmt1cFN0cmluZ3NBbmREYXRhOwpA
QCAtMTM3LDcgKzE1OCw3IEBAIFRFU1QoQ29weUhUTUwsIFNhbml0aXphdGlvblByZXNlcnZlc0No
YXJhY3RlclNldCkKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCLmiJHlj6vorJ3mlofmmIciLCBb
YXR0cmlidXRlZFN0cmluZyBzdHJpbmddKTsKIAogICAgICAgICBfX2Jsb2NrIEJPT0wgZm91bmRD
b2xvckF0dHJpYnV0ZSA9IE5POwotICAgICAgICBbYXR0cmlidXRlZFN0cmluZyBlbnVtZXJhdGVB
dHRyaWJ1dGU6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIGluUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgNSkgb3B0aW9uczowIHVzaW5nQmxvY2s6XihDb2NvYUNvbG9yICpjb2xvciwgTlNSYW5n
ZSByYW5nZSwgQk9PTCAqKSB7CisgICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGVudW1lcmF0ZUF0
dHJpYnV0ZTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgaW5SYW5nZTpOU01ha2VSYW5n
ZSgwLCA1KSBvcHRpb25zOjAgdXNpbmdCbG9jazpeKENvY29hQ29sb3IgKmNvbG9yLCBOU1Jhbmdl
IHJhbmdlLCBCT09MKikgewogICAgICAgICAgICAgQ0dGbG9hdCByZWRDb21wb25lbnQgPSAwOwog
ICAgICAgICAgICAgQ0dGbG9hdCBncmVlbkNvbXBvbmVudCA9IDA7CiAgICAgICAgICAgICBDR0Zs
b2F0IGJsdWVDb21wb25lbnQgPSAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNmODBjMzI5NmMzYWQzMGQ0ZDA0NGIzMzJj
NmMxN2UxNTdhYjkzNzIuLjlkNDMzYzRiNzBjYjY2ZWRiMTc5MjNiOWYxZWRmMjk5ODIxMDIyNjkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNS0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVzZXJ2ZSBjaGFyYWN0ZXIgc2V0IGluZm9y
bWF0aW9uIHdoZW4gd3JpdGluZyB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGNvcHlpbmcgcmljaCB0
ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE1
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJh
c2VsaW5lIGEgY291cGxlIG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2lv
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMC0wNS0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBjYXJldCBhcHBlYXJzIGluIHRoZSBt
aWRkbGUgb2YgYSBzZWFyY2ggZmllbGQgd2hlbiBmaWVsZCBpcyBmb2N1c2VkIG9uIGFnb2RhLmNv
bQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcvcGFzdGVib2Fy
ZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLWV4cGVjdGVkLnR4dAppbmRl
eCA4YzYzMjU4ZDY0ZmY2NzFmMTQwNmEyMDU2OTJiNTJiYTYyMTQ4ODFmLi40Y2Q2YzQ2MGVkMGIx
NTFmZTAxZmU3YjFmMzg4ZWNmYTUyNTY3NzRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFz
dGUtdGV4dC1odG1sLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIENPTlNPTEUgTUVTU0FH
RTogdGV4dC9wbGFpbjogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0
bWwgZnJvbSB0aGUgY2xpcGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50LiAKLUNPTlNPTEUg
TUVTU0FHRTogdGV4dC9odG1sOiA8c3BhbiBzdHlsZT0iLi4uIj5UaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9u
cGFzdGUgZXZlbnQuPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+
PC9zcGFuPgorQ09OU09MRSBNRVNTQUdFOiB0ZXh0L2h0bWw6IDxtZXRhIGNoYXJzZXQ9IlVURi04
Ij48c3BhbiBzdHlsZT0iLi4uIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRl
eHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuPHNwYW4g
Y2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+PC9zcGFuPgogVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJkIGR1
cmluZyBhbiBvbnBhc3RlIGV2ZW50LiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJULgogUGFzdGUgY29u
dGVudCBpbiB0aGlzIGRpdi7CoFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4
dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC7CoAogUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2Fy
ZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMDg0MjkyN2E0ZmZjZjI4YjJlZDQ0MmJmZmE2Njc1N2M0MTJlY2JjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9v
bnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitDT05TT0xFIE1F
U1NBR0U6IHRleHQvcGxhaW46IFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4
dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC4gCitDT05T
T0xFIE1FU1NBR0U6IHRleHQvaHRtbDogPG1ldGEgY2hhcnNldD0iVVRGLTgiPjxzcGFuIHN0eWxl
PSIuLi4iPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20g
dGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC48c3BhbiBjbGFzcz0iQXBwbGUt
Y29udmVydGVkLXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+CitUaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFz
dGUgZXZlbnQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCitQYXN0ZSBjb250ZW50IGluIHRoaXMg
ZGl2LlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhl
IGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC7CoAorUEFTUworCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398819</attachid>
            <date>2020-05-07 17:33:47 -0700</date>
            <delta_ts>2020-05-08 09:04:27 -0700</delta_ts>
            <desc>Address feedback</desc>
            <filename>bug-211524-20200507173346.patch</filename>
            <type>text/plain</type>
            <size>20149</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyYTIxNDI5MmYyZDA5
M2ZjNWU2YTNmNTFlMjY5NjNhZjgzZTkwMy4uMjRlZGYwMmIzZWUwNTZiMGQ0ZDFmNzRiZDY0N2Q5
OTBlZDY5OTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA1LTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFByZXNlcnZlIGNo
YXJhY3RlciBzZXQgaW5mb3JtYXRpb24gd2hlbiB3cml0aW5nIHRvIHRoZSBwYXN0ZWJvYXJkIHdo
ZW4gY29weWluZyByaWNoIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMTUyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBmb2xsb3d1cCB0byByMjYxMjQ3LCB3aGljaCBp
bnRyb2R1Y2VkIGEgd29ya2Fyb3VuZCBmb3IgQ29jb2EgcGxhdGZvcm1zIHRvIGF1dG9tYXRpY2Fs
bHkgYWRkIGEKKyAgICAgICAgYG1ldGEgY2hhcnNldGAgd2hlbiB3cml0aW5nIEhUTUwgZGF0YSB0
byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gV2hlbiBjb3B5aW5nIGEgcmljaCB0ZXh0IHNlbGVj
dGlvbiwgd2UgdXNlIGEKKyAgICAgICAgZGlmZmVyZW50IGNvZGVwYXRoIHdoZW4gc2FuaXRpemlu
ZyBET00gY29udGVudCAtIHRoYXQgaXMsIGBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFy
YW5jZWAuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIGNoYW5nZSBhbHNvIGludHJvZHVjZWQgYW4g
ZW51bSwgYEFkZE1ldGFDaGFyc2V0SWZOZWVkZWRgLCB0byBsaW1pdCBhcHBseWluZyB0aGlzIHdv
cmthcm91bmQgdG8gb25seQorICAgICAgICB3aGVuIHdlJ3JlIHdyaXRpbmcgSFRNTCB0byB0aGUg
Y2xpcGJvYXJkLiBIb3dldmVyLCBpdCBzaG91bGQgYmUgaGFybWxlc3MgdG8gaW5jbHVkZSB0aGlz
IHdoZW4gcmVhZGluZyBzYW5pdGl6ZWQKKyAgICAgICAgSFRNTCBhcyB3ZWxsLCBzbyB3ZSBjYW4g
YWxzbyBzaW1wbGlmeSB0aGlzIGNvZGUgYnkgcmVtb3ZpbmcgdGhlIGBBZGRNZXRhQ2hhcnNldElm
TmVlZGVkYCBlbnVtIChhbmQgYWxsIG9mIGl0cworICAgICAgICB1c2VzKS4KKworICAgICAgICBU
ZXN0OiBDb3B5SFRNTC5TYW5pdGl6YXRpb25QcmVzZXJ2ZXNDaGFyYWN0ZXJTZXRJblNlbGVjdGVk
VGV4dAorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZO
ZWVkZWQpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKiBlZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRv
cjo6aXNBbGxBU0NJSSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNo
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRIVE1MKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1
cCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5j
ZUludGVybmFsKToKKworICAgICAgICBNb3ZlIHRoZSBgbWV0YSBjaGFyc2V0YCB3b3JrYXJvdW5k
IGZyb20gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50IHRvCisgICAgICAgIHNl
cmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlSW50ZXJuYWwsIHN1Y2ggdGhhdCBIVE1M
IGRhdGEgd3JpdHRlbiB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGNvcHlpbmcgcmljaAorICAgICAg
ICB0ZXh0IGNhbiBiZSB1c2VkIHRvIGxvYWQgYSB3ZWIgdmlldywgd2l0aG91dCBsb3NpbmcgdGhl
IGZhY3QgdGhhdCB0aGUgY29waWVkIGNvbnRlbnQgd2FzIFVURi04IGVuY29kZWQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudCk6CisgICAg
ICAgICogZWRpdGluZy9tYXJrdXAuaDoKKwogMjAyMC0wNS0wNyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBjYXJldCBhcHBlYXJzIGluIHRo
ZSBtaWRkbGUgb2YgYSBzZWFyY2ggZmllbGQgd2hlbiBmaWVsZCBpcyBmb2N1c2VkIG9uIGFnb2Rh
LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApp
bmRleCAwZmQ2ZjIwOTJlNDdhYTZmOWY5NWVlMjRkZTFjZjhlZWNlMGZlYjllLi43NDY1ZDBlNmE4
NjY4NzM4ZjRlYmRjNTc0ZjkyNmM3NDg4ZTdhYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNh
bml0aXplRGF0YUlmTmVlCiAgICAgICAgIGlmIChtYXJrdXBUb1Nhbml0aXplLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2RhdGEgPSB7IHNhbml0aXplTWFya3Vw
KG1hcmt1cFRvU2FuaXRpemUsIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQ6OlllcykgfTsKKyAgICAg
ICAgbV9kYXRhID0geyBzYW5pdGl6ZU1hcmt1cChtYXJrdXBUb1Nhbml0aXplKSB9OwogICAgIH0K
IAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcAppbmRleCA4NGYyYjExMmQwZGQ5MDRlZTFjZTNhMTg0OTA1NmVlZmQ1N2ExMWM2
Li44NDYzYTQ4ZTk3NGZiZTNmNzdmNjY5ZTUxNzgyNDc5Yjk0Y2IxMDk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgRGF0YVRyYW5zZmVy
OjpzZXREYXRhRnJvbUl0ZW1MaXN0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKQogCiAgICAgU3RyaW5nIHNhbml0aXplZERhdGE7CiAgICAgaWYgKHR5cGUgPT0gInRleHQv
aHRtbCIpCi0gICAgICAgIHNhbml0aXplZERhdGEgPSBzYW5pdGl6ZU1hcmt1cChkYXRhLCBBZGRN
ZXRhQ2hhcnNldElmTmVlZGVkOjpZZXMpOworICAgICAgICBzYW5pdGl6ZWREYXRhID0gc2FuaXRp
emVNYXJrdXAoZGF0YSk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSAidGV4dC91cmktbGlzdCIpIHsK
ICAgICAgICAgYXV0byB1cmwgPSBVUkwoeyB9LCBkYXRhKTsKICAgICAgICAgaWYgKHVybC5pc1Zh
bGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmgKaW5kZXgg
NTQ4NzYwNjBlNDk4NDQ4ZGY2MTdlMDU1ZjkxYWNhODQwZjQwN2IzZS4uNjczMjU5ZGVhNjQ3OGZh
OTFhMjYyNTZlNjMzMzk4MmE3YjhhMjA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9NYXJrdXBBY2N1bXVsYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFy
a3VwQWNjdW11bGF0b3IuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIHNpemVfdCB0b3RhbExlbmd0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAg
IHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX21hcmt1cC5sZW5ndGgoKTsgfQorICAg
IGJvb2wgaXNBbGxBU0NJSSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFya3VwLnRvU3RyaW5nUHJlc2Vy
dmVDYXBhY2l0eSgpLmlzQWxsQVNDSUkoKTsgfQogCiAgICAgdm9pZCBjb25jYXRlbmF0ZU1hcmt1
cChTdHJpbmdCdWlsZGVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYTQ4ZTU1YWI0OWE2ZmEzMTkxY2M2
N2QzMWYzYWIyMjVjN2MzYmI3NC4uMjg5OWYzNWU4MDhhYzA0NGNlNWE3MWEwNDk1MTYyYjE1MWUy
ZjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTQ0OSw3ICs0NDksNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25E
b2N1bQogCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygp
KSB7CiAgICAgICAgIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhmcmFtZSwgZnJh
Z21lbnQsIG1hcmt1cEFuZEFyY2hpdmUuYXJjaGl2ZS0+c3VicmVzb3VyY2VzKCkpOwotICAgICAg
ICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJh
Z21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywgbXNv
TGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOworICAgICAgICByZXR1cm4gc2Fu
aXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3Rh
Z2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CiAg
ICAgfQogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBibG9iVVJMTWFwOwpA
QCAtNDkyLDcgKzQ5Miw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAKICAgICByZXBsYWNl
U3VicmVzb3VyY2VVUkxzKGZyYWdtZW50LmdldCgpLCBXVEZNb3ZlKGJsb2JVUkxNYXApKTsKIAot
ICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShm
cmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQ6Ok5vLCBt
c29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CisgICAgcmV0dXJuIHNhbml0
aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdp
bmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQog
CiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQpAQCAtNTgwLDcgKzU4MCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEhUTUwo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKICAgICBTdHJpbmcgbWFya3VwOwogICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9hcmREYXRh
RW5hYmxlZCgpICYmIHNob3VsZFNhbml0aXplKCkpIHsKLSAgICAgICAgbWFya3VwID0gc2FuaXRp
emVNYXJrdXAoc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXgsIEFkZE1ldGFDaGFyc2V0SWZO
ZWVkZWQ6Ok5vLCBtc29MaXN0UXVpcmtzRm9yTWFya3VwKCksIFdURjo6RnVuY3Rpb248dm9pZCAo
RG9jdW1lbnRGcmFnbWVudCYpPiB7IFtdIChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCkgewor
ICAgICAgICBtYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChzdHJpbmdPbWl0dGluZ01pY3Jvc29mdFBy
ZWZpeCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERvY3Vt
ZW50RnJhZ21lbnQmKT4geyBbXSAoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsKICAgICAg
ICAgICAgIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhmcmFnbWVudCwgW10gKGNvbnN0
IFVSTCYgdXJsKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFJlcGxhY2VTdWJyZXNv
dXJjZVVSTCh1cmwpOwogICAgICAgICAgICAgfSk7CkBAIC01OTksNyArNTk5LDcgQEAgYm9vbCBX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKIAog
ICAgIFN0cmluZyByYXdIVE1MID0gc3RyaXBNaWNyb3NvZnRQcmVmaXgoc3RyaW5nKTsKICAgICBp
ZiAoc2hvdWxkU2FuaXRpemUoKSkgewotICAgICAgICBtYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChy
YXdIVE1MLCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywgbXNvTGlzdFF1aXJrc0Zvck1hcmt1
cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERvY3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lbnQpIHsKKyAgICAgICAgbWFya3VwID0gc2FuaXRpemVNYXJrdXAo
cmF3SFRNTCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERv
Y3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsKICAg
ICAgICAgICAgIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhmcmFnbWVudCwgW10gKGNv
bnN0IFVSTCYgdXJsKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFJlcGxhY2VTdWJy
ZXNvdXJjZVVSTCh1cmwpOwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKaW5kZXggN2FmYjg1OGQ4MzkyM2UyZWMyMDgxNmY1M2EzNTZkNDllZGE5ZjcyYi4uYzNjNzIx
NTJkZmZmNThjZjUwYjVjMDRiOWMwOGViYTgyZGM3OTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQ
YWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogICAgIHJldHVybiBwYWdlOwogfQogCi1TdHJp
bmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBBZGRNZXRhQ2hhcnNldElm
TmVlZGVkIGFkZE1ldGFDaGFyc2V0SWZOZWVkZWQsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJr
cywgT3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdt
ZW50U2FuaXRpemVyKQorU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3SFRN
TCwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZv
aWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIpCiB7CiAgICAgYXV0byBw
YWdlID0gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgRG9jdW1lbnQq
IHN0YWdpbmdEb2N1bWVudCA9IHBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CkBAIC0yMTIs
NyArMjEyLDcgQEAgU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3SFRNTCwg
QWRkTWV0YUNoYXJzZXRJZk5lZWRlZCBhZGRNZXRhQ2hhcnMKICAgICBpZiAoZnJhZ21lbnRTYW5p
dGl6ZXIpCiAgICAgICAgICgqZnJhZ21lbnRTYW5pdGl6ZXIpKGZyYWdtZW50KTsKIAotICAgIHJl
dHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVu
dCksICpzdGFnaW5nRG9jdW1lbnQsIGFkZE1ldGFDaGFyc2V0SWZOZWVkZWQsIG1zb0xpc3RRdWly
a3MsIHJhd0hUTUwpOworICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9j
dW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3Ms
IHJhd0hUTUwpOwogfQogCiBlbnVtIGNsYXNzIE1TT0xpc3RNb2RlIHsgUHJlc2VydmUsIERvTm90
UHJlc2VydmUgfTsKQEAgLTI0MCw2ICsyNDAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bm9kZS5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgfQogCisgICAgdm9pZCBwcmVwZW5k
TWV0YUNoYXJzZXRVVEY4VGFnSWZOb25BU0NJSUNoYXJhY3RlcnNBcmVQcmVzZW50KCkKKyAgICB7
CisgICAgICAgIGlmIChpc0FsbEFTQ0lJKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cC5hcHBlbmQoIjxtZXRhIGNoYXJzZXQ9XCJVVEYt
OFwiPiIpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZFN0eWxlTm9kZU9wZW5U
YWcoU3RyaW5nQnVpbGRlciYsIFN0eWxlUHJvcGVydGllcyosIERvY3VtZW50JiwgYm9vbCBpc0Js
b2NrID0gZmFsc2UpOwogICAgIGNvbnN0IFN0cmluZyYgc3R5bGVOb2RlQ2xvc2VUYWcoYm9vbCBp
c0Jsb2NrID0gZmFsc2UpOwpAQCAtOTE3LDYgKzkyNSwxMSBAQCBzdGF0aWMgU3RyaW5nIHNlcmlh
bGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlSW50ZXJuYWwoY29uc3QgUG9zaXRpb24mIHN0
YXJ0LAogICAgIGlmIChhbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpZZXMgJiYg
bmVlZEludGVyY2hhbmdlTmV3bGluZUFmdGVyKHZpc2libGVFbmQucHJldmlvdXMoKSkpCiAgICAg
ICAgIGFjY3VtdWxhdG9yLmFwcGVuZFN0cmluZyhpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcpOwog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLy8gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGlzIG1h
cmt1cCBpcyBldmVudHVhbGx5IHBlcnNpc3RlZCB0byB0aGUgcGFzdGVib2FyZCBhbmQgcmVhZCBi
YWNrIGFzIFVURi04IGRhdGEsCisgICAgLy8gc28gdGhpcyBtZXRhIHRhZyBpcyBuZWVkZWQgZm9y
IGNsaWVudHMgdGhhdCByZWFkIHRoaXMgZGF0YSBpbiB0aGUgZnV0dXJlIGZyb20gdGhlIHBhc3Rl
Ym9hcmQgYW5kIGxvYWQgaXQuCisgICAgYWNjdW11bGF0b3IucHJlcGVuZE1ldGFDaGFyc2V0VVRG
OFRhZ0lmTm9uQVNDSUlDaGFyYWN0ZXJzQXJlUHJlc2VudCgpOworI2VuZGlmCiAgICAgcmV0dXJu
IGFjY3VtdWxhdG9yLnRha2VSZXN1bHRzKCk7CiB9CiAKQEAgLTk0NSw3ICs5NTgsNyBAQCBzdGF0
aWMgYm9vbCBzaG91bGRQcmVzZXJ2ZU1TT0xpc3RzKGNvbnN0IFN0cmluZyYgbWFya3VwKQogICAg
ICAgICAmJiBodG1sVGFnLmNvbnRhaW5zKCJ4bWxuczp3PVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0
LWNvbTpvZmZpY2U6d29yZFwiIik7CiB9CiAKLVN0cmluZyBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFn
bWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIERvY3VtZW50
JiBkb2N1bWVudCwgQWRkTWV0YUNoYXJzZXRJZk5lZWRlZCBhZGRNZXRhQ2hhcnNldElmTmVlZGVk
LCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNYXJr
dXApCitTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFJlZjxEb2N1
bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBEb2N1bWVudCYgZG9jdW1lbnQsIE1TT0xpc3RRdWly
a3MgbXNvTGlzdFF1aXJrcywgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1hcmt1cCkKIHsKICAgICBN
U09MaXN0TW9kZSBtc29MaXN0TW9kZSA9IG1zb0xpc3RRdWlya3MgPT0gTVNPTGlzdFF1aXJrczo6
Q2hlY2tJZk5lZWRlZCAmJiBzaG91bGRQcmVzZXJ2ZU1TT0xpc3RzKG9yaWdpbmFsTWFya3VwKQog
ICAgICAgICA/IE1TT0xpc3RNb2RlOjpQcmVzZXJ2ZSA6IE1TT0xpc3RNb2RlOjpEb05vdFByZXNl
cnZlOwpAQCAtOTY2LDE3ICs5NzksNiBAQCBTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21l
bnRJbkRvY3VtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBEbwogICAgICAg
ICAgICAgInhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MFwiPiIpOwogICAg
IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChhZGRNZXRhQ2hhcnNldElmTmVlZGVk
ID09IEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQ6OlllcyAmJiAhcmVzdWx0LmlzQWxsQVNDSUkoKSkg
ewotICAgICAgICAvLyBPbiBDb2NvYSBwbGF0Zm9ybXMsIHRoaXMgbWFya3VwIGlzIGV2ZW50dWFs
bHkgcGVyc2lzdGVkIHRvIHRoZSBwYXN0ZWJvYXJkIGFuZCByZWFkIGJhY2sgYXMgVVRGLTggZGF0
YSwKLSAgICAgICAgLy8gc28gdGhpcyBtZXRhIHRhZyBpcyBuZWVkZWQgZm9yIGNsaWVudHMgdGhh
dCByZWFkIHRoaXMgZGF0YSBpbiB0aGUgZnV0dXJlIGZyb20gdGhlIHBhc3RlYm9hcmQgYW5kIGxv
YWQgaXQuCi0gICAgICAgIC8vIFRoaXMgbG9naWMgaXMgdXNlZCBieSBib3RoIERhdGFUcmFuc2Zl
ciBhbmQgQ2xpcGJvYXJkIEFQSXMgdG8gc2FuaXRpemUgInRleHQvaHRtbCIgZnJvbSB0aGUgcGFn
ZS4KLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8bWV0YSBjaGFyc2V0PVwiVVRGLThc
Ij4iKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShhZGRNZXRhQ2hhcnNldElmTmVl
ZGVkKTsKLSNlbmRpZgotCiAgICAgYnVpbGRlci5hcHBlbmQocmVzdWx0KTsKIAogICAgIGlmICht
c29MaXN0TW9kZSA9PSBNU09MaXN0TW9kZTo6UHJlc2VydmUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
aAppbmRleCBkNDI3ZTkwZDgwYTAwMDJlNTVlMmQyOGI1YWQ2MWU5NWZlMWM1MGJjLi44NjU2N2Y0
NTc4MGFhYmE1MWIzZWQ4MmEwOWE1MWUyMjAyNmEwMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmgKQEAgLTU0LDkgKzU0LDggQEAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMo
UmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIFdURjo6RnVuY3Rpb248Ym9vbCgKIAogc3RkOjp1bmlx
dWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogZW51bSBj
bGFzcyBNU09MaXN0UXVpcmtzIDogYm9vbCB7IENoZWNrSWZOZWVkZWQsIERpc2FibGVkIH07Ci1l
bnVtIGNsYXNzIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQgOiBib29sIHsgTm8sIFllcyB9OwotU3Ry
aW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYsIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQg
PSBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywgTVNPTGlzdFF1aXJrcyA9IE1TT0xpc3RRdWly
a3M6OkRpc2FibGVkLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVu
dCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIgPSBXVEY6Om51bGxvcHQpOwotU3RyaW5nIHNhbml0aXpl
ZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgRG9j
dW1lbnQmLCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkLCBNU09MaXN0UXVpcmtzLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsTWFya3VwKTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcm
LCBNU09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIE9wdGlvbmFsPFdURjo6
RnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXplciA9IFdU
Rjo6bnVsbG9wdCk7CitTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50
KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBEb2N1bWVudCYsIE1TT0xpc3RRdWlya3MsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxNYXJrdXApOwogCiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiB0ZXh0KTsKIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBQYXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdDb250
ZW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjMjljODkyMDE1MzYxNmViZDk2MzE3NDEwZDIzYmFhNGRhYThjYzk0Li4zN2E3ZGI4ZTcxZDEx
MmVjY2FhYTE4OTk4MzkyOWUwOGQ3N2ZmOTE1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMDcgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY2hh
cmFjdGVyIHNldCBpbmZvcm1hdGlvbiB3aGVuIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQgd2hl
biBjb3B5aW5nIHJpY2ggdGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjExNTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRoZSBIVE1MIGRh
dGEgd3JpdHRlbiB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGNvcHlpbmcgYSByaWNoIHRleHQgc2Vs
ZWN0aW9uCisgICAgICAgIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhbiBgTlNBdHRyaWJ1dGVkU3Ry
aW5nYCB0aGF0IGNvbnRhaW5zIGNvcnJlY3RseSBlbmNvZGVkIG5vbi1MYXRpbiBjaGFyYWN0ZXJz
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5t
bToKKwogMjAyMC0wNS0wNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgd2Via2l0cHk6IFVzZSBhcHBsZV9hZGRpdGlvbnMgY2VydGlmaWNhdGUgcGF0aCBp
ZiBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29weUhUTUwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvcHlIVE1MLm1tCmluZGV4IDc2ZWRhMjMyZWQzYTNmMDI2NWM2ZDU1MzFlMTE0OTU1MTllMjI4
MTcuLmY3YzQwOGQ4ODNiZDk3ZDE4NzI4NTA0NjM3NTlkN2Q3MzYzYmQxYjEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQpAQCAtMTAy
LDYgKzEwMiwyNyBAQCBURVNUKENvcHlIVE1MLCBTYW5pdGl6ZXMpCiAgICAgRVhQRUNUX0ZBTFNF
KGh0bWxJbk5hdGl2ZVBhc3RlYm9hcmQuY29udGFpbnMoImRhbmdlcm91c0NvZGUiKSk7CiB9CiAK
K1RFU1QoQ29weUhUTUwsIFNhbml0aXphdGlvblByZXNlcnZlc0NoYXJhY3RlclNldEluU2VsZWN0
ZWRUZXh0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFz
dGVib2FyZERhdGFFbmFibGVkKCk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nOkAiPCFET0NUWVBFIGh0bWw+IgorICAgICAgICAiPGJvZHk+IgorICAgICAgICAiPG1l
dGEgY2hhcnNldD0ndXRmLTgnPiIKKyAgICAgICAgIjxzcGFuIGlkPSdjb3B5Jz7miJHlj6vorJ3m
lofmmIc8L3NwYW4+IgorICAgICAgICAiPHNjcmlwdD5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxD
aGlsZHJlbihjb3B5KTs8L3NjcmlwdD4iCisgICAgICAgICI8L2JvZHk+Il07CisgICAgW3dlYlZp
ZXcgY29weTpuaWxdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRl
XTsKKworICAgIE5TU3RyaW5nICpjb3BpZWRNYXJrdXAgPSByZWFkSFRNTFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKCk7CisgICAgRVhQRUNUX1RSVUUoW2NvcGllZE1hcmt1cCBjb250YWluc1N0cmluZzpA
IjxzcGFuICJdKTsKKyAgICBFWFBFQ1RfVFJVRShbY29waWVkTWFya3VwIGNvbnRhaW5zU3RyaW5n
OkAi5oiR5Y+r6Kyd5paH5piHIl0pOworICAgIEVYUEVDVF9UUlVFKFtjb3BpZWRNYXJrdXAgY29u
dGFpbnNTdHJpbmc6QCI8L3NwYW4+Il0pOworCisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnJlYWRIVE1M
RGF0YUZyb21QYXN0ZWJvYXJkKCkgb3B0aW9uczpAeyBOU0RvY3VtZW50VHlwZURvY3VtZW50T3B0
aW9uOiBOU0hUTUxUZXh0RG9jdW1lbnRUeXBlIH0gZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbCBlcnJv
cjpuaWxdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIuaIkeWPq+isneaWh+aYhyIsIFthdHRyaWJ1
dGVkU3RyaW5nIHN0cmluZ10pOworfQorCiBURVNUKENvcHlIVE1MLCBTYW5pdGl6YXRpb25QcmVz
ZXJ2ZXNDaGFyYWN0ZXJTZXQpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZXRhaW5QdHI8TlNT
dHJpbmc+LCBSZXRhaW5QdHI8TlNEYXRhPj4sIDM+IG1hcmt1cFN0cmluZ3NBbmREYXRhOwpAQCAt
MTM3LDcgKzE1OCw3IEBAIFRFU1QoQ29weUhUTUwsIFNhbml0aXphdGlvblByZXNlcnZlc0NoYXJh
Y3RlclNldCkKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCLmiJHlj6vorJ3mlofmmIciLCBbYXR0
cmlidXRlZFN0cmluZyBzdHJpbmddKTsKIAogICAgICAgICBfX2Jsb2NrIEJPT0wgZm91bmRDb2xv
ckF0dHJpYnV0ZSA9IE5POwotICAgICAgICBbYXR0cmlidXRlZFN0cmluZyBlbnVtZXJhdGVBdHRy
aWJ1dGU6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIGluUmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgNSkgb3B0aW9uczowIHVzaW5nQmxvY2s6XihDb2NvYUNvbG9yICpjb2xvciwgTlNSYW5nZSBy
YW5nZSwgQk9PTCAqKSB7CisgICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGVudW1lcmF0ZUF0dHJp
YnV0ZTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgaW5SYW5nZTpOU01ha2VSYW5nZSgw
LCA1KSBvcHRpb25zOjAgdXNpbmdCbG9jazpeKENvY29hQ29sb3IgKmNvbG9yLCBOU1JhbmdlIHJh
bmdlLCBCT09MKikgewogICAgICAgICAgICAgQ0dGbG9hdCByZWRDb21wb25lbnQgPSAwOwogICAg
ICAgICAgICAgQ0dGbG9hdCBncmVlbkNvbXBvbmVudCA9IDA7CiAgICAgICAgICAgICBDR0Zsb2F0
IGJsdWVDb21wb25lbnQgPSAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNmODBjMzI5NmMzYWQzMGQ0ZDA0NGIzMzJjNmMx
N2UxNTdhYjkzNzIuLmVjOWZkYTliNWUxYmQ3MDc0NDE4ZWQyZDEyOGNhZTI2N2VlOGFjYTQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNS0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVzZXJ2ZSBjaGFyYWN0ZXIgc2V0IGluZm9ybWF0
aW9uIHdoZW4gd3JpdGluZyB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGNvcHlpbmcgcmljaCB0ZXh0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE1MjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2Vs
aW5lIHNldmVyYWwgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL2VkaXRp
bmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vbmRyb3At
dGV4dC1odG1sLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjAtMDUtMDcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gY2FyZXQgYXBwZWFy
cyBpbiB0aGUgbWlkZGxlIG9mIGEgc2VhcmNoIGZpZWxkIHdoZW4gZmllbGQgaXMgZm9jdXNlZCBv
biBhZ29kYS5jb20KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0aW5n
L3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3Rl
ZC50eHQKaW5kZXggOGM2MzI1OGQ2NGZmNjcxZjE0MDZhMjA1NjkyYjUyYmE2MjE0ODgxZi4uNGNk
NmM0NjBlZDBiMTUxZmUwMWZlN2IxZjM4OGVjZmE1MjU2Nzc0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcvcGFzdGVi
b2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiBDT05T
T0xFIE1FU1NBR0U6IHRleHQvcGxhaW46IFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBn
ZXQgdGV4dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC4g
Ci1DT05TT0xFIE1FU1NBR0U6IHRleHQvaHRtbDogPHNwYW4gc3R5bGU9Ii4uLiI+VGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJkIGR1
cmluZyBhbiBvbnBhc3RlIGV2ZW50LjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2Ui
PsKgPC9zcGFuPjwvc3Bhbj4KK0NPTlNPTEUgTUVTU0FHRTogdGV4dC9odG1sOiA8bWV0YSBjaGFy
c2V0PSJVVEYtOCI+PHNwYW4gc3R5bGU9Ii4uLiI+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2Ug
Y2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2
ZW50LjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFuPjwvc3Bhbj4K
IFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGNs
aXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4K
IFBhc3RlIGNvbnRlbnQgaW4gdGhpcyBkaXYuwqBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBj
YW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZl
bnQuwqAKIFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDA4NDI5MjdhNGZmY2YyOGIyZWQ0NDJiZmZhNjY3NTdjNDEyZWNi
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAor
Q09OU09MRSBNRVNTQUdFOiB0ZXh0L3BsYWluOiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBj
YW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZl
bnQuIAorQ09OU09MRSBNRVNTQUdFOiB0ZXh0L2h0bWw6IDxtZXRhIGNoYXJzZXQ9IlVURi04Ij48
c3BhbiBzdHlsZT0iLi4uIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQv
aHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuPHNwYW4gY2xh
c3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+PC9zcGFuPgorVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJkIGR1cmlu
ZyBhbiBvbnBhc3RlIGV2ZW50LiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJULgorUGFzdGUgY29udGVu
dCBpbiB0aGlzIGRpdi5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRt
bCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuwqAKK1BBU1MKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZXZlbnRzL29uZHJvcC10
ZXh0LWh0bWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZXZl
bnRzL29uZHJvcC10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1MjgxZmNkNDMy
OGExMjdiMDcyNWMwOTBkZGRiZTdlMDNmZWVjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ldmVudHMvb25kcm9wLXRleHQtaHRtbC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IHRleHQvcGxhaW46IFRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGRyYWcgb2JqZWN0
IGR1cmluZyBhbiBvbmRyb3AgZXZlbnQuIAorQ09OU09MRSBNRVNTQUdFOiB0ZXh0L2h0bWw6IDxt
ZXRhIGNoYXJzZXQ9IlVURi04Ij48c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAw
KTsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zaXplOiBtZWRpdW07IGZvbnQtc3R5bGU6IG5v
cm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0
dGVyLXNwYWNpbmc6IG5vcm1hbDsgb3JwaGFuczogYXV0bzsgdGV4dC1hbGlnbjogc3RhcnQ7IHRl
eHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFs
OyB3aWRvd3M6IGF1dG87IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1
c3Q6IGF1dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9u
OiBub25lOyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgZmxvYXQ6IG5vbmU7Ij5UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBkcmFnIG9iamVj
dCBkdXJpbmcgYW4gb25kcm9wIGV2ZW50LjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3Bh
Y2UiPsKgPC9zcGFuPjwvc3Bhbj4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQg
dGV4dC9odG1sIGZyb20gdGhlIGRyYWcgb2JqZWN0IGR1cmluZyBhbiBvbmRyb3AgZXZlbnQuIFRo
aXMgdGVzdCByZXF1aXJlcyBEUlQuCitQQVNTCg==
</data>
<flag name="review"
          id="414215"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398871</attachid>
            <date>2020-05-08 10:13:16 -0700</date>
            <delta_ts>2020-05-08 10:35:51 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211524-20200508101315.patch</filename>
            <type>text/plain</type>
            <size>20126</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNjZGUwNWJjYWJmYmFh
ODY1NDUxMDY0Yzk5YWQxMmU0YzMxYjJhNi4uOWQ1YTljODlkYzMxZDEwODExYzQyNDczN2JkYzMx
N2NjZDM1ODJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA1LTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFByZXNlcnZlIGNo
YXJhY3RlciBzZXQgaW5mb3JtYXRpb24gd2hlbiB3cml0aW5nIHRvIHRoZSBwYXN0ZWJvYXJkIHdo
ZW4gY29weWluZyByaWNoIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMTUyNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBmb2xsb3d1cCB0byByMjYxMjQ3LCB3aGljaCBpbnRy
b2R1Y2VkIGEgd29ya2Fyb3VuZCBmb3IgQ29jb2EgcGxhdGZvcm1zIHRvIGF1dG9tYXRpY2FsbHkg
YWRkIGEKKyAgICAgICAgYG1ldGEgY2hhcnNldGAgd2hlbiB3cml0aW5nIEhUTUwgZGF0YSB0byB0
aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gV2hlbiBjb3B5aW5nIGEgcmljaCB0ZXh0IHNlbGVjdGlv
biwgd2UgdXNlIGEKKyAgICAgICAgZGlmZmVyZW50IGNvZGVwYXRoIHdoZW4gc2FuaXRpemluZyBE
T00gY29udGVudCAtIHRoYXQgaXMsIGBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5j
ZWAuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIGNoYW5nZSBhbHNvIGludHJvZHVjZWQgYW4gZW51
bSwgYEFkZE1ldGFDaGFyc2V0SWZOZWVkZWRgLCB0byBsaW1pdCBhcHBseWluZyB0aGlzIHdvcmth
cm91bmQgdG8gb25seQorICAgICAgICB3aGVuIHdlJ3JlIHdyaXRpbmcgSFRNTCB0byB0aGUgY2xp
cGJvYXJkLiBIb3dldmVyLCBpdCBzaG91bGQgYmUgaGFybWxlc3MgdG8gaW5jbHVkZSB0aGlzIHdo
ZW4gcmVhZGluZyBzYW5pdGl6ZWQKKyAgICAgICAgSFRNTCBhcyB3ZWxsLCBzbyB3ZSBjYW4gYWxz
byBzaW1wbGlmeSB0aGlzIGNvZGUgYnkgcmVtb3ZpbmcgdGhlIGBBZGRNZXRhQ2hhcnNldElmTmVl
ZGVkYCBlbnVtIChhbmQgYWxsIG9mIGl0cworICAgICAgICB1c2VzKS4KKworICAgICAgICBUZXN0
OiBDb3B5SFRNTC5TYW5pdGl6YXRpb25QcmVzZXJ2ZXNDaGFyYWN0ZXJTZXRJblNlbGVjdGVkVGV4
dAorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVk
ZWQpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKiBlZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6
aXNBbGxBU0NJSSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRIVE1MKToKKyAgICAgICAg
KiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cCk6
CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZUlu
dGVybmFsKToKKworICAgICAgICBNb3ZlIHRoZSBgbWV0YSBjaGFyc2V0YCB3b3JrYXJvdW5kIGZy
b20gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50IHRvCisgICAgICAgIHNlcmlh
bGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlSW50ZXJuYWwsIHN1Y2ggdGhhdCBIVE1MIGRh
dGEgd3JpdHRlbiB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGNvcHlpbmcgcmljaAorICAgICAgICB0
ZXh0IGNhbiBiZSB1c2VkIHRvIGxvYWQgYSB3ZWIgdmlldywgd2l0aG91dCBsb3NpbmcgdGhlIGZh
Y3QgdGhhdCB0aGUgY29waWVkIGNvbnRlbnQgd2FzIFVURi04IGVuY29kZWQuCisKKyAgICAgICAg
KFdlYkNvcmU6OnNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudCk6CisgICAgICAg
ICogZWRpdGluZy9tYXJrdXAuaDoKKwogMjAyMC0wNS0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjUyMTYxKTogQW5pbWF0
aW9uIG9mIGJveC1zaGFkb3cgd2l0aCBib3JkZXItcmFkaXVzIHNldCBpcyBmbGFzaHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggMGZkNmYy
MDkyZTQ3YWE2ZjlmOTVlZTI0ZGUxY2Y4ZWVjZTBmZWI5ZS4uNzQ2NWQwZTZhODY2ODczOGY0ZWJk
YzU3NGY5MjZjNzQ4OGU3YWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJ
Zk5lZQogICAgICAgICBpZiAobWFya3VwVG9TYW5pdGl6ZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbV9kYXRhID0geyBzYW5pdGl6ZU1hcmt1cChtYXJrdXBUb1Nh
bml0aXplLCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpZZXMpIH07CisgICAgICAgIG1fZGF0YSA9
IHsgc2FuaXRpemVNYXJrdXAobWFya3VwVG9TYW5pdGl6ZSkgfTsKICAgICB9CiAKICAgICBpZiAo
bV90eXBlID09ICJpbWFnZS9wbmciX3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAK
aW5kZXggODRmMmIxMTJkMGRkOTA0ZWUxY2UzYTE4NDkwNTZlZWZkNTdhMTFjNi4uODQ2M2E0OGU5
NzRmYmUzZjc3ZjY2OWU1MTc4MjQ3OWI5NGNiMTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RGF0YUZy
b21JdGVtTGlzdChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIAogICAg
IFN0cmluZyBzYW5pdGl6ZWREYXRhOwogICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiKQotICAg
ICAgICBzYW5pdGl6ZWREYXRhID0gc2FuaXRpemVNYXJrdXAoZGF0YSwgQWRkTWV0YUNoYXJzZXRJ
Zk5lZWRlZDo6WWVzKTsKKyAgICAgICAgc2FuaXRpemVkRGF0YSA9IHNhbml0aXplTWFya3VwKGRh
dGEpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gInRleHQvdXJpLWxpc3QiKSB7CiAgICAgICAgIGF1
dG8gdXJsID0gVVJMKHsgfSwgZGF0YSk7CiAgICAgICAgIGlmICh1cmwuaXNWYWxpZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oCmluZGV4IDU0ODc2MDYwZTQ5
ODQ0OGRmNjE3ZTA1NWY5MWFjYTg0MGY0MDdiM2UuLjY3MzI1OWRlYTY0NzhmYTkxYTI2MjU2ZTYz
MzM5ODJhN2I4YTIwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3Vw
QWNjdW11bGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBz
aXplX3QgdG90YWxMZW5ndGgoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICBzaXplX3QgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9tYXJrdXAubGVuZ3RoKCk7IH0KKyAgICBib29sIGlzQWxs
QVNDSUkoKSBjb25zdCB7IHJldHVybiBtX21hcmt1cC50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHko
KS5pc0FsbEFTQ0lJKCk7IH0KIAogICAgIHZvaWQgY29uY2F0ZW5hdGVNYXJrdXAoU3RyaW5nQnVp
bGRlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCmluZGV4IGE0OGU1NWFiNDlhNmZhMzE5MWNjNjdkMzFmM2FiMjI1
YzdjM2JiNzQuLjI4OTlmMzVlODA4YWMwNDRjZTVhNzFhMDQ5NTE2MmIxNTFlMmY2Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCkBAIC00NDksNyArNDQ5LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdp
dGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KIAogICAg
IGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkgewogICAgICAg
ICByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoZnJhbWUsIGZyYWdtZW50LCBtYXJr
dXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNlcygpKTsKLSAgICAgICAgcmV0dXJuIHNh
bml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0
YWdpbmdEb2N1bWVudCwgQWRkTWV0YUNoYXJzZXRJZk5lZWRlZDo6Tm8sIG1zb0xpc3RRdWlya3Ms
IG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKKyAgICAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1
cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVu
dCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogICAgIH0KIAogICAg
IEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4gYmxvYlVSTE1hcDsKQEAgLTQ5Miw3ICs0
OTIsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZy
YW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogCiAgICAgcmVwbGFjZVN1YnJlc291cmNl
VVJMcyhmcmFnbWVudC5nZXQoKSwgV1RGTW92ZShibG9iVVJMTWFwKSk7CiAKLSAgICByZXR1cm4g
c2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAq
c3RhZ2luZ0RvY3VtZW50LCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywgbXNvTGlzdFF1aXJr
cywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOworICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBG
b3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQs
IG1zb0xpc3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0KIAogYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKQEAgLTU4
MCw3ICs1ODAsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogCiAgICAgU3RyaW5nIG1hcmt1cDsKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSAm
JiBzaG91bGRTYW5pdGl6ZSgpKSB7Ci0gICAgICAgIG1hcmt1cCA9IHNhbml0aXplTWFya3VwKHN0
cmluZ09taXR0aW5nTWljcm9zb2Z0UHJlZml4LCBBZGRNZXRhQ2hhcnNldElmTmVlZGVkOjpObywg
bXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERvY3VtZW50RnJh
Z21lbnQmKT4geyBbXSAoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsKKyAgICAgICAgbWFy
a3VwID0gc2FuaXRpemVNYXJrdXAoc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXgsIG1zb0xp
c3RRdWlya3NGb3JNYXJrdXAoKSwgV1RGOjpGdW5jdGlvbjx2b2lkIChEb2N1bWVudEZyYWdtZW50
Jik+IHsgW10gKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KSB7CiAgICAgICAgICAgICByZW1v
dmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoZnJhZ21lbnQsIFtdIChjb25zdCBVUkwmIHVybCkg
ewogICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwodXJs
KTsKICAgICAgICAgICAgIH0pOwpAQCAtNTk5LDcgKzU5OSw3IEBAIGJvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKICAgICBTdHJpbmcg
cmF3SFRNTCA9IHN0cmlwTWljcm9zb2Z0UHJlZml4KHN0cmluZyk7CiAgICAgaWYgKHNob3VsZFNh
bml0aXplKCkpIHsKLSAgICAgICAgbWFya3VwID0gc2FuaXRpemVNYXJrdXAocmF3SFRNTCwgQWRk
TWV0YUNoYXJzZXRJZk5lZWRlZDo6Tm8sIG1zb0xpc3RRdWlya3NGb3JNYXJrdXAoKSwgV1RGOjpG
dW5jdGlvbjx2b2lkIChEb2N1bWVudEZyYWdtZW50Jik+IHsgW10gKERvY3VtZW50RnJhZ21lbnQm
IGZyYWdtZW50KSB7CisgICAgICAgIG1hcmt1cCA9IHNhbml0aXplTWFya3VwKHJhd0hUTUwsIG1z
b0xpc3RRdWlya3NGb3JNYXJrdXAoKSwgV1RGOjpGdW5jdGlvbjx2b2lkIChEb2N1bWVudEZyYWdt
ZW50Jik+IHsgW10gKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KSB7CiAgICAgICAgICAgICBy
ZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoZnJhZ21lbnQsIFtdIChjb25zdCBVUkwmIHVy
bCkgewogICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwo
dXJsKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDdh
ZmI4NThkODM5MjNlMmVjMjA4MTZmNTNhMzU2ZDQ5ZWRhOWY3MmIuLmFkYzg4ZjZkMTk3NTUzMmZh
YTE1NDYxNzMxYTBiZTk4YmVhMDE0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTIwMSw3ICsyMDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0
aXppbmdXZWJDb250ZW50KCkKICAgICByZXR1cm4gcGFnZTsKIH0KIAotU3RyaW5nIHNhbml0aXpl
TWFya3VwKGNvbnN0IFN0cmluZyYgcmF3SFRNTCwgQWRkTWV0YUNoYXJzZXRJZk5lZWRlZCBhZGRN
ZXRhQ2hhcnNldElmTmVlZGVkLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIE9wdGlvbmFs
PFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXpl
cikKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmIHJhd0hUTUwsIE1TT0xpc3RR
dWlya3MgbXNvTGlzdFF1aXJrcywgT3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50
RnJhZ21lbnQmKT4+IGZyYWdtZW50U2FuaXRpemVyKQogewogICAgIGF1dG8gcGFnZSA9IGNyZWF0
ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogICAgIERvY3VtZW50KiBzdGFnaW5nRG9j
dW1lbnQgPSBwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwpAQCAtMjEyLDcgKzIxMiw3IEBA
IFN0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmIHJhd0hUTUwsIEFkZE1ldGFDaGFy
c2V0SWZOZWVkZWQgYWRkTWV0YUNoYXJzCiAgICAgaWYgKGZyYWdtZW50U2FuaXRpemVyKQogICAg
ICAgICAoKmZyYWdtZW50U2FuaXRpemVyKShmcmFnbWVudCk7CiAKLSAgICByZXR1cm4gc2FuaXRp
emVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2lu
Z0RvY3VtZW50LCBhZGRNZXRhQ2hhcnNldElmTmVlZGVkLCBtc29MaXN0UXVpcmtzLCByYXdIVE1M
KTsKKyAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1v
dmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCByYXdIVE1MKTsK
IH0KIAogZW51bSBjbGFzcyBNU09MaXN0TW9kZSB7IFByZXNlcnZlLCBEb05vdFByZXNlcnZlIH07
CkBAIC0yNDAsNiArMjQwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGUucGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIH0KIAorICAgIHZvaWQgcHJlcGVuZE1ldGFDaGFyc2V0
VVRGOFRhZ0lmTm9uQVNDSUlDaGFyYWN0ZXJzQXJlUHJlc2VudCgpCisgICAgeworICAgICAgICBp
ZiAoaXNBbGxBU0NJSSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fcmV2ZXJz
ZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKCI8bWV0YSBjaGFyc2V0PVwiVVRGLThcIj4iX3MpOwor
ICAgIH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcoU3RyaW5n
QnVpbGRlciYsIFN0eWxlUHJvcGVydGllcyosIERvY3VtZW50JiwgYm9vbCBpc0Jsb2NrID0gZmFs
c2UpOwogICAgIGNvbnN0IFN0cmluZyYgc3R5bGVOb2RlQ2xvc2VUYWcoYm9vbCBpc0Jsb2NrID0g
ZmFsc2UpOwpAQCAtOTE3LDYgKzkyNSwxMSBAQCBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZVByZXNl
cnZpbmdWaXN1YWxBcHBlYXJhbmNlSW50ZXJuYWwoY29uc3QgUG9zaXRpb24mIHN0YXJ0LAogICAg
IGlmIChhbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpZZXMgJiYgbmVlZEludGVy
Y2hhbmdlTmV3bGluZUFmdGVyKHZpc2libGVFbmQucHJldmlvdXMoKSkpCiAgICAgICAgIGFjY3Vt
dWxhdG9yLmFwcGVuZFN0cmluZyhpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcpOwogCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgLy8gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGlzIG1hcmt1cCBpcyBl
dmVudHVhbGx5IHBlcnNpc3RlZCB0byB0aGUgcGFzdGVib2FyZCBhbmQgcmVhZCBiYWNrIGFzIFVU
Ri04IGRhdGEsCisgICAgLy8gc28gdGhpcyBtZXRhIHRhZyBpcyBuZWVkZWQgZm9yIGNsaWVudHMg
dGhhdCByZWFkIHRoaXMgZGF0YSBpbiB0aGUgZnV0dXJlIGZyb20gdGhlIHBhc3RlYm9hcmQgYW5k
IGxvYWQgaXQuCisgICAgYWNjdW11bGF0b3IucHJlcGVuZE1ldGFDaGFyc2V0VVRGOFRhZ0lmTm9u
QVNDSUlDaGFyYWN0ZXJzQXJlUHJlc2VudCgpOworI2VuZGlmCiAgICAgcmV0dXJuIGFjY3VtdWxh
dG9yLnRha2VSZXN1bHRzKCk7CiB9CiAKQEAgLTk0NSw3ICs5NTgsNyBAQCBzdGF0aWMgYm9vbCBz
aG91bGRQcmVzZXJ2ZU1TT0xpc3RzKGNvbnN0IFN0cmluZyYgbWFya3VwKQogICAgICAgICAmJiBo
dG1sVGFnLmNvbnRhaW5zKCJ4bWxuczp3PVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZp
Y2U6d29yZFwiIik7CiB9CiAKLVN0cmluZyBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9j
dW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIERvY3VtZW50JiBkb2N1bWVu
dCwgQWRkTWV0YUNoYXJzZXRJZk5lZWRlZCBhZGRNZXRhQ2hhcnNldElmTmVlZGVkLCBNU09MaXN0
UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNYXJrdXApCitTdHJp
bmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFJlZjxEb2N1bWVudEZyYWdt
ZW50PiYmIGZyYWdtZW50LCBEb2N1bWVudCYgZG9jdW1lbnQsIE1TT0xpc3RRdWlya3MgbXNvTGlz
dFF1aXJrcywgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1hcmt1cCkKIHsKICAgICBNU09MaXN0TW9k
ZSBtc29MaXN0TW9kZSA9IG1zb0xpc3RRdWlya3MgPT0gTVNPTGlzdFF1aXJrczo6Q2hlY2tJZk5l
ZWRlZCAmJiBzaG91bGRQcmVzZXJ2ZU1TT0xpc3RzKG9yaWdpbmFsTWFya3VwKQogICAgICAgICA/
IE1TT0xpc3RNb2RlOjpQcmVzZXJ2ZSA6IE1TT0xpc3RNb2RlOjpEb05vdFByZXNlcnZlOwpAQCAt
OTY2LDE3ICs5NzksNiBAQCBTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3Vt
ZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBEbwogICAgICAgICAgICAgInht
bG5zPVwiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MFwiPiIpOwogICAgIH0KIAotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChhZGRNZXRhQ2hhcnNldElmTmVlZGVkID09IEFkZE1l
dGFDaGFyc2V0SWZOZWVkZWQ6OlllcyAmJiAhcmVzdWx0LmlzQWxsQVNDSUkoKSkgewotICAgICAg
ICAvLyBPbiBDb2NvYSBwbGF0Zm9ybXMsIHRoaXMgbWFya3VwIGlzIGV2ZW50dWFsbHkgcGVyc2lz
dGVkIHRvIHRoZSBwYXN0ZWJvYXJkIGFuZCByZWFkIGJhY2sgYXMgVVRGLTggZGF0YSwKLSAgICAg
ICAgLy8gc28gdGhpcyBtZXRhIHRhZyBpcyBuZWVkZWQgZm9yIGNsaWVudHMgdGhhdCByZWFkIHRo
aXMgZGF0YSBpbiB0aGUgZnV0dXJlIGZyb20gdGhlIHBhc3RlYm9hcmQgYW5kIGxvYWQgaXQuCi0g
ICAgICAgIC8vIFRoaXMgbG9naWMgaXMgdXNlZCBieSBib3RoIERhdGFUcmFuc2ZlciBhbmQgQ2xp
cGJvYXJkIEFQSXMgdG8gc2FuaXRpemUgInRleHQvaHRtbCIgZnJvbSB0aGUgcGFnZS4KLSAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8bWV0YSBjaGFyc2V0PVwiVVRGLThcIj4iKTsKLSAg
ICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShhZGRNZXRhQ2hhcnNldElmTmVlZGVkKTsKLSNl
bmRpZgotCiAgICAgYnVpbGRlci5hcHBlbmQocmVzdWx0KTsKIAogICAgIGlmIChtc29MaXN0TW9k
ZSA9PSBNU09MaXN0TW9kZTo6UHJlc2VydmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCBk
NDI3ZTkwZDgwYTAwMDJlNTVlMmQyOGI1YWQ2MWU5NWZlMWM1MGJjLi44NjU2N2Y0NTc4MGFhYmE1
MWIzZWQ4MmEwOWE1MWUyMjAyNmEwMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTU0
LDkgKzU0LDggQEAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+JiYsIFdURjo6RnVuY3Rpb248Ym9vbCgKIAogc3RkOjp1bmlxdWVfcHRyPFBh
Z2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogZW51bSBjbGFzcyBNU09M
aXN0UXVpcmtzIDogYm9vbCB7IENoZWNrSWZOZWVkZWQsIERpc2FibGVkIH07Ci1lbnVtIGNsYXNz
IEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQgOiBib29sIHsgTm8sIFllcyB9OwotU3RyaW5nIHNhbml0
aXplTWFya3VwKGNvbnN0IFN0cmluZyYsIEFkZE1ldGFDaGFyc2V0SWZOZWVkZWQgPSBBZGRNZXRh
Q2hhcnNldElmTmVlZGVkOjpObywgTVNPTGlzdFF1aXJrcyA9IE1TT0xpc3RRdWlya3M6OkRpc2Fi
bGVkLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJh
Z21lbnRTYW5pdGl6ZXIgPSBXVEY6Om51bGxvcHQpOwotU3RyaW5nIHNhbml0aXplZE1hcmt1cEZv
ckZyYWdtZW50SW5Eb2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgRG9jdW1lbnQmLCBB
ZGRNZXRhQ2hhcnNldElmTmVlZGVkLCBNU09MaXN0UXVpcmtzLCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsTWFya3VwKTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmLCBNU09MaXN0
UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIE9wdGlvbmFsPFdURjo6RnVuY3Rpb248
dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXplciA9IFdURjo6bnVsbG9w
dCk7CitTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFJlZjxEb2N1
bWVudEZyYWdtZW50PiYmLCBEb2N1bWVudCYsIE1TT0xpc3RRdWlya3MsIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxNYXJrdXApOwogCiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1lbnRGcmFnbWVudD4g
Y3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0
KTsKIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21NYXJrdXAoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBQYXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMjljODky
MDE1MzYxNmViZDk2MzE3NDEwZDIzYmFhNGRhYThjYzk0Li4yZTMwNjY3YWIwZmNjNDRkZTgyNGJm
YTc3MmZlZmE4MzhkZDAxYzAyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMDcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY2hhcmFjdGVyIHNl
dCBpbmZvcm1hdGlvbiB3aGVuIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQgd2hlbiBjb3B5aW5n
IHJpY2ggdGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjExNTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
QWRkIGEgbmV3IEFQSSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRoZSBIVE1MIGRhdGEgd3JpdHRlbiB0
byB0aGUgcGFzdGVib2FyZCB3aGVuIGNvcHlpbmcgYSByaWNoIHRleHQgc2VsZWN0aW9uCisgICAg
ICAgIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhbiBgTlNBdHRyaWJ1dGVkU3RyaW5nYCB0aGF0IGNv
bnRhaW5zIGNvcnJlY3RseSBlbmNvZGVkIG5vbi1MYXRpbiBjaGFyYWN0ZXJzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbToKKwogMjAyMC0w
NS0wNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Vi
a2l0cHk6IFVzZSBhcHBsZV9hZGRpdGlvbnMgY2VydGlmaWNhdGUgcGF0aCBpZiBhdmFpbGFibGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhU
TUwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1t
CmluZGV4IDc2ZWRhMjMyZWQzYTNmMDI2NWM2ZDU1MzFlMTE0OTU1MTllMjI4MTcuLmY3YzQwOGQ4
ODNiZDk3ZDE4NzI4NTA0NjM3NTlkN2Q3MzYzYmQxYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQpAQCAtMTAyLDYgKzEwMiwyNyBA
QCBURVNUKENvcHlIVE1MLCBTYW5pdGl6ZXMpCiAgICAgRVhQRUNUX0ZBTFNFKGh0bWxJbk5hdGl2
ZVBhc3RlYm9hcmQuY29udGFpbnMoImRhbmdlcm91c0NvZGUiKSk7CiB9CiAKK1RFU1QoQ29weUhU
TUwsIFNhbml0aXphdGlvblByZXNlcnZlc0NoYXJhY3RlclNldEluU2VsZWN0ZWRUZXh0KQorewor
ICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFF
bmFibGVkKCk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPCFE
T0NUWVBFIGh0bWw+IgorICAgICAgICAiPGJvZHk+IgorICAgICAgICAiPG1ldGEgY2hhcnNldD0n
dXRmLTgnPiIKKyAgICAgICAgIjxzcGFuIGlkPSdjb3B5Jz7miJHlj6vorJ3mlofmmIc8L3NwYW4+
IgorICAgICAgICAiPHNjcmlwdD5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihjb3B5
KTs8L3NjcmlwdD4iCisgICAgICAgICI8L2JvZHk+Il07CisgICAgW3dlYlZpZXcgY29weTpuaWxd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIE5T
U3RyaW5nICpjb3BpZWRNYXJrdXAgPSByZWFkSFRNTFN0cmluZ0Zyb21QYXN0ZWJvYXJkKCk7Cisg
ICAgRVhQRUNUX1RSVUUoW2NvcGllZE1hcmt1cCBjb250YWluc1N0cmluZzpAIjxzcGFuICJdKTsK
KyAgICBFWFBFQ1RfVFJVRShbY29waWVkTWFya3VwIGNvbnRhaW5zU3RyaW5nOkAi5oiR5Y+r6Kyd
5paH5piHIl0pOworICAgIEVYUEVDVF9UUlVFKFtjb3BpZWRNYXJrdXAgY29udGFpbnNTdHJpbmc6
QCI8L3NwYW4+Il0pOworCisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnJlYWRIVE1MRGF0YUZyb21QYXN0
ZWJvYXJkKCkgb3B0aW9uczpAeyBOU0RvY3VtZW50VHlwZURvY3VtZW50T3B0aW9uOiBOU0hUTUxU
ZXh0RG9jdW1lbnRUeXBlIH0gZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIuaIkeWPq+isneaWh+aYhyIsIFthdHRyaWJ1dGVkU3RyaW5nIHN0
cmluZ10pOworfQorCiBURVNUKENvcHlIVE1MLCBTYW5pdGl6YXRpb25QcmVzZXJ2ZXNDaGFyYWN0
ZXJTZXQpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZXRhaW5QdHI8TlNTdHJpbmc+LCBSZXRh
aW5QdHI8TlNEYXRhPj4sIDM+IG1hcmt1cFN0cmluZ3NBbmREYXRhOwpAQCAtMTM3LDcgKzE1OCw3
IEBAIFRFU1QoQ29weUhUTUwsIFNhbml0aXphdGlvblByZXNlcnZlc0NoYXJhY3RlclNldCkKICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKCLmiJHlj6vorJ3mlofmmIciLCBbYXR0cmlidXRlZFN0cmlu
ZyBzdHJpbmddKTsKIAogICAgICAgICBfX2Jsb2NrIEJPT0wgZm91bmRDb2xvckF0dHJpYnV0ZSA9
IE5POwotICAgICAgICBbYXR0cmlidXRlZFN0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGU6TlNGb3Jl
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIGluUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgNSkgb3B0aW9u
czowIHVzaW5nQmxvY2s6XihDb2NvYUNvbG9yICpjb2xvciwgTlNSYW5nZSByYW5nZSwgQk9PTCAq
KSB7CisgICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGVudW1lcmF0ZUF0dHJpYnV0ZTpOU0ZvcmVn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgaW5SYW5nZTpOU01ha2VSYW5nZSgwLCA1KSBvcHRpb25z
OjAgdXNpbmdCbG9jazpeKENvY29hQ29sb3IgKmNvbG9yLCBOU1JhbmdlIHJhbmdlLCBCT09MKikg
ewogICAgICAgICAgICAgQ0dGbG9hdCByZWRDb21wb25lbnQgPSAwOwogICAgICAgICAgICAgQ0dG
bG9hdCBncmVlbkNvbXBvbmVudCA9IDA7CiAgICAgICAgICAgICBDR0Zsb2F0IGJsdWVDb21wb25l
bnQgPSAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDQ4NzIwNzM4Y2VhMTRmYzU4MzJjOTI5MWU4Y2E4N2Q3N2VmOGQ0NDgu
LjU3NzA5MTY1MmI2ZmI5OWFmZDg4NDllMDIxN2I0ODI3OWE3MmRjYjkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMC0wNS0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KKworICAgICAgICBQcmVzZXJ2ZSBjaGFyYWN0ZXIgc2V0IGluZm9ybWF0aW9uIHdoZW4gd3Jp
dGluZyB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGNvcHlpbmcgcmljaCB0ZXh0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE1MjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZWJhc2VsaW5lIHNldmVyYWwgbGF5
b3V0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL2VkaXRpbmcvcGFzdGVib2FyZC9v
bnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1odG1sLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMjAtMDUtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1MjE2MSk6IEFuaW1hdGlvbiBv
ZiBib3gtc2hhZG93IHdpdGggYm9yZGVyLXJhZGl1cyBzZXQgaXMgZmxhc2h5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4
dC1odG1sLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0aW5nL3Bh
c3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CmluZGV4IDhjNjMyNThkNjRm
ZjY3MWYxNDA2YTIwNTY5MmI1MmJhNjIxNDg4MWYuLjRjZDZjNDYwZWQwYjE1MWZlMDFmZTdiMWYz
ODhlY2ZhNTI1Njc3NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0
aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwt
ZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogQ09OU09MRSBNRVNTQUdFOiB0ZXh0L3BsYWlu
OiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBj
bGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuIAotQ09OU09MRSBNRVNTQUdFOiB0ZXh0
L2h0bWw6IDxzcGFuIHN0eWxlPSIuLi4iPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBn
ZXQgdGV4dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC48
c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+CitDT05T
T0xFIE1FU1NBR0U6IHRleHQvaHRtbDogPG1ldGEgY2hhcnNldD0iVVRGLTgiPjxzcGFuIHN0eWxl
PSIuLi4iPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20g
dGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC48c3BhbiBjbGFzcz0iQXBwbGUt
Y29udmVydGVkLXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+CiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFz
dGUgZXZlbnQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCiBQYXN0ZSBjb250ZW50IGluIHRoaXMg
ZGl2LsKgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0
aGUgY2xpcGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50LsKgCiBQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4
dC1odG1sLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwODQy
OTI3YTRmZmNmMjhiMmVkNDQyYmZmYTY2NzU3YzQxMmVjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1o
dG1sLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogdGV4dC9w
bGFpbjogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0
aGUgY2xpcGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50LiAKK0NPTlNPTEUgTUVTU0FHRTog
dGV4dC9odG1sOiA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+PHNwYW4gc3R5bGU9Ii4uLiI+VGhpcyB0
ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJk
IGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50LjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3Bh
Y2UiPsKgPC9zcGFuPjwvc3Bhbj4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQg
dGV4dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC4gVGhp
cyB0ZXN0IHJlcXVpcmVzIERSVC4KK1Bhc3RlIGNvbnRlbnQgaW4gdGhpcyBkaXYuVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJkIGR1
cmluZyBhbiBvbnBhc3RlIGV2ZW50LsKgCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1odG1sLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1odG1sLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTI4MWZjZDQzMjhhMTI3YjA3MjVjMDkwZGRkYmU3ZTAz
ZmVlYzJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
ZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorQ09O
U09MRSBNRVNTQUdFOiB0ZXh0L3BsYWluOiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4g
Z2V0IHRleHQvaHRtbCBmcm9tIHRoZSBkcmFnIG9iamVjdCBkdXJpbmcgYW4gb25kcm9wIGV2ZW50
LiAKK0NPTlNPTEUgTUVTU0FHRTogdGV4dC9odG1sOiA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+PHNw
YW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGNvbG9yOiByZ2IoMCwgMCwgMCk7
IGZvbnQtc2l6ZTogbWVkaXVtOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBz
OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9y
cGhhbnM6IGF1dG87IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRy
YW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiBhdXRvOyB3b3JkLXNw
YWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRvOyAtd2Via2l0LXRleHQt
c3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZGlzcGxheTogaW5saW5l
ICFpbXBvcnRhbnQ7IGZsb2F0OiBub25lOyI+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2Fu
IGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgZHJhZyBvYmplY3QgZHVyaW5nIGFuIG9uZHJvcCBldmVu
dC48c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+CitU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBkcmFn
IG9iamVjdCBkdXJpbmcgYW4gb25kcm9wIGV2ZW50LiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJULgor
UEFTUwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>