<?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>226992</bug_id>
          
          <creation_ts>2021-06-14 15:21:50 -0700</creation_ts>
          <short_desc>Break ref cycle between API::HTTPCookieStore and WebKit::WebsiteDataStore</short_desc>
          <delta_ts>2021-06-21 11:50:15 -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>WebKit Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769569</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-14 15:21:50 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769572</commentid>
    <comment_count>1</comment_count>
      <attachid>431371</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-14 15:26:58 -0700</bug_when>
    <thetext>Created attachment 431371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769581</commentid>
    <comment_count>2</comment_count>
      <attachid>431371</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-14 15:37:03 -0700</bug_when>
    <thetext>Comment on attachment 431371
Patch

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

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:161
&gt; +    return WebKit::toAPI(&amp;WebKit::toImpl(dataStoreRef)-&gt;cookieStore().leakRef());

It seems unexpected that a &quot;Get&quot; function would leak a ref, this seems wrong.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2060
&gt; +        return makeRef(*m_cookieStore);

Why the makeRef() ?

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:152
&gt; +    auto cookieStore = adoptWK(WKWebsiteDataStoreGetHTTPCookieStore(TestController::singleton().websiteDataStore()));

Clearly wrong to adopt the result of a &quot;Get&quot; function. There are clear patterns we need to follow and a &quot;Get&quot; function doesn&apos;t ref for you (unlike a &quot;Create&quot; or a &quot;Copy&quot; function).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769590</commentid>
    <comment_count>3</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-14 16:11:20 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Comment on attachment 431371 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431371&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:161
&gt; &gt; +    return WebKit::toAPI(&amp;WebKit::toImpl(dataStoreRef)-&gt;cookieStore().leakRef());
&gt; 
&gt; It seems unexpected that a &quot;Get&quot; function would leak a ref, this seems wrong.

We can rename it to create or getOrCreate. I am posting the patch as I am not sure if this is the right way to break the cycle.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2060
&gt; &gt; +        return makeRef(*m_cookieStore);
&gt; 
&gt; Why the makeRef() ?

Try to do a getOrCreate.

&gt; 
&gt; &gt; Tools/WebKitTestRunner/TestInvocation.cpp:152
&gt; &gt; +    auto cookieStore = adoptWK(WKWebsiteDataStoreGetHTTPCookieStore(TestController::singleton().websiteDataStore()));
&gt; 
&gt; Clearly wrong to adopt the result of a &quot;Get&quot; function. There are clear
&gt; patterns we need to follow and a &quot;Get&quot; function doesn&apos;t ref for you (unlike
&gt; a &quot;Create&quot; or a &quot;Copy&quot; function).

We can call it WKWebsiteDataStoreCreateHTTPCookieStore I guess. WTR seems to be the only place we use the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769591</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-14 16:14:02 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #3)
&gt; (In reply to Chris Dumez from comment #2)
&gt; &gt; Comment on attachment 431371 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=431371&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:161
&gt; &gt; &gt; +    return WebKit::toAPI(&amp;WebKit::toImpl(dataStoreRef)-&gt;cookieStore().leakRef());
&gt; &gt; 
&gt; &gt; It seems unexpected that a &quot;Get&quot; function would leak a ref, this seems wrong.
&gt; 
&gt; We can rename it to create or getOrCreate. I am posting the patch as I am
&gt; not sure if this is the right way to break the cycle.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2060
&gt; &gt; &gt; +        return makeRef(*m_cookieStore);
&gt; &gt; 
&gt; &gt; Why the makeRef() ?
&gt; 
&gt; Try to do a getOrCreate.

I don&apos;t see why the makeRef() is needed. AFAICT, you can just `return * m_cookieStore;` and it will ref for you.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Tools/WebKitTestRunner/TestInvocation.cpp:152
&gt; &gt; &gt; +    auto cookieStore = adoptWK(WKWebsiteDataStoreGetHTTPCookieStore(TestController::singleton().websiteDataStore()));
&gt; &gt; 
&gt; &gt; Clearly wrong to adopt the result of a &quot;Get&quot; function. There are clear
&gt; &gt; patterns we need to follow and a &quot;Get&quot; function doesn&apos;t ref for you (unlike
&gt; &gt; a &quot;Create&quot; or a &quot;Copy&quot; function).
&gt; 
&gt; We can call it WKWebsiteDataStoreCreateHTTPCookieStore I guess. WTR seems to
&gt; be the only place we use the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769595</commentid>
    <comment_count>5</comment_count>
      <attachid>431380</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-14 16:24:11 -0700</bug_when>
    <thetext>Created attachment 431380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769598</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-14 16:25:55 -0700</bug_when>
    <thetext>For some reason I recall the solution to this being that the WebsiteDataStore should own a std::unique_ptr&lt;API::HTTPCookieStore&gt; and then API::HTTPCookieStore::ref should call its owning WebsiteDataStore::ref.  I don&apos;t remember why I thought that, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769615</commentid>
    <comment_count>7</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-14 16:42:45 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; For some reason I recall the solution to this being that the
&gt; WebsiteDataStore should own a std::unique_ptr&lt;API::HTTPCookieStore&gt; and then
&gt; API::HTTPCookieStore::ref should call its owning WebsiteDataStore::ref.  I
&gt; don&apos;t remember why I thought that, though.

I thought about that, but API::HTTPCookieStore already has ref() from ObjectImpl&lt;Object::Type::HTTPCookieStore&gt;. (In reply to Alex Christensen from comment #6)
&gt; For some reason I recall the solution to this being that the
&gt; WebsiteDataStore should own a std::unique_ptr&lt;API::HTTPCookieStore&gt; and then
&gt; API::HTTPCookieStore::ref should call its owning WebsiteDataStore::ref.  I
&gt; don&apos;t remember why I thought that, though.

https://bugs.webkit.org/show_bug.cgi?id=194868!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769616</commentid>
    <comment_count>8</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-14 16:42:45 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; For some reason I recall the solution to this being that the
&gt; WebsiteDataStore should own a std::unique_ptr&lt;API::HTTPCookieStore&gt; and then
&gt; API::HTTPCookieStore::ref should call its owning WebsiteDataStore::ref.  I
&gt; don&apos;t remember why I thought that, though.

I thought about that, but API::HTTPCookieStore already has ref() from ObjectImpl&lt;Object::Type::HTTPCookieStore&gt;. (In reply to Alex Christensen from comment #6)
&gt; For some reason I recall the solution to this being that the
&gt; WebsiteDataStore should own a std::unique_ptr&lt;API::HTTPCookieStore&gt; and then
&gt; API::HTTPCookieStore::ref should call its owning WebsiteDataStore::ref.  I
&gt; don&apos;t remember why I thought that, though.

https://bugs.webkit.org/show_bug.cgi?id=194868!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769637</commentid>
    <comment_count>9</comment_count>
      <attachid>431380</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-14 17:20:26 -0700</bug_when>
    <thetext>Comment on attachment 431380
Patch

I&apos;m not sure if we can with the current API contracts in place, but could we just make them the same object? It looks like the only place that creates a HTTPCookieStore is WebsiteDataStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769639</commentid>
    <comment_count>10</comment_count>
      <attachid>431380</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-14 17:20:33 -0700</bug_when>
    <thetext>Comment on attachment 431380
Patch

I&apos;m not sure if we can with the current API contracts in place, but could we just make them the same object? It looks like the only place that creates a HTTPCookieStore is WebsiteDataStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769640</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-14 17:22:00 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #10)
&gt; Comment on attachment 431380 [details]
&gt; Patch
&gt; 
&gt; I&apos;m not sure if we can with the current API contracts in place, but could we
&gt; just make them the same object? It looks like the only place that creates a
&gt; HTTPCookieStore is WebsiteDataStore.

Actually, the unique_ptr version with delegating ref()/deref() Alex mentioned is probably better than this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770015</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-15 16:42:34 -0700</bug_when>
    <thetext>It is a little tricky with DELEGATE_REF_COUNTING_TO_COCOA, because ObjC needs to know how to ref and deref it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770231</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-16 09:52:09 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #12)
&gt; It is a little tricky with DELEGATE_REF_COUNTING_TO_COCOA, because ObjC
&gt; needs to know how to ref and deref it.

Ah. I think you could make it work by reffing once on creation and once on destruction (thought don&apos;t quote me on that) rather than on each ref/deref(), but he just make them the same underlying object also works still I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770250</commentid>
    <comment_count>14</comment_count>
      <attachid>431380</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-16 10:28:38 -0700</bug_when>
    <thetext>Comment on attachment 431380
Patch

I think we need to make HTTPCookieStore::m_owningDataStore weak and keep WebsiteDataStore::m_cookieStore strong. We will need to add a bunch of checks in HTTPCookieStore, but that makes sense because if the WebsiteDataStore is destroyed, then there are no more cookies and nothing we can do with them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770291</commentid>
    <comment_count>15</comment_count>
      <attachid>431571</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-16 11:18:45 -0700</bug_when>
    <thetext>Created attachment 431571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770297</commentid>
    <comment_count>16</comment_count>
      <attachid>431571</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-16 11:30:45 -0700</bug_when>
    <thetext>Comment on attachment 431571
Patch

I don&apos;t think this actually breaks the cycle, and it doesn&apos;t take into account that apps can call CFRetain/CFRelease directly on the WKHTTPCookieStore, which wouldn&apos;t do the right thing.  I&apos;m going to try uploading another way to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770303</commentid>
    <comment_count>17</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-16 11:41:07 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #16)
&gt; Comment on attachment 431571 [details]
&gt; Patch
&gt; 
&gt; I don&apos;t think this actually breaks the cycle, and it doesn&apos;t take into
&gt; account that apps can call CFRetain/CFRelease directly on the
&gt; WKHTTPCookieStore, which wouldn&apos;t do the right thing.  I&apos;m going to try
&gt; uploading another way to fix this.

Can you explain more about why it doesn&apos;t break the cycle and how CFRetain/CFRelease would affect it? (I am cool with new approach and just curious)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770312</commentid>
    <comment_count>18</comment_count>
      <attachid>431578</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-16 11:48:04 -0700</bug_when>
    <thetext>Created attachment 431578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770314</commentid>
    <comment_count>19</comment_count>
      <attachid>431579</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-16 11:53:12 -0700</bug_when>
    <thetext>Created attachment 431579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770385</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-16 14:09:58 -0700</bug_when>
    <thetext>Object::ref calls CFRetain, which increments the ObjC object&apos;s ref count.  You made HTTPCookieStore::ref call WebsiteDataStore::ref, which affects the behavior of Ref/RefPtr but an app can call CFRetain on a WKHTTPCookieStore, but if API::HTTPCookieStore is owned by a std::unique_ptr that retain would not be counted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771382</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-21 11:50:15 -0700</bug_when>
    <thetext>r279074</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431371</attachid>
            <date>2021-06-14 15:26:58 -0700</date>
            <delta_ts>2021-06-14 16:24:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226992-20210614152657.patch</filename>
            <type>text/plain</type>
            <size>10534</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkMmEyMjI1OTYxZTk5YWZh
MmQyMjQzZmE2NWE2MjUzMGVlNDc5ODAuLmFjMmQ1MmE2MTFlYWYwZTAwMzg4NmFlMmQzMDA2YzQz
YWM0ODU1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDYtMTQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJlYWsgcmVmIGN5Y2xlIGJldHdl
ZW4gQVBJOjpIVFRQQ29va2llU3RvcmUgYW5kIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTkyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJzaXRl
RGF0YVN0b3JlIHdlYWtseSByZWZlciB0byBIVFRQQ29va2llU3RvcmUuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlR2V0SFRUUENvb2tpZVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRo
b3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChXZWJLaXQ6OlNP
QXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmNvb2tpZVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDIxLTA2LTE0ICBQZXIgQXJuZSAgPHB2b2xsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIFN5bmMgQWNjZXNzaWJpbGl0eSBwcmVmZXJlbmNlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCmlu
ZGV4IGEwNWY0MTQzMGRiMmIyM2Q0MTc4NDA3OWE0ZmI4NmM3NDYwYTc1NDUuLjkwZDc0MzBhMWY3
NDk2MTg5YmZjZGQyZmJjNDdmNGJiMGQyNmU4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENvb2tpZTsKQEAgLTQ4LDcgKzQ5LDcgQEAgbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwogCi1j
bGFzcyBIVFRQQ29va2llU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5
cGU6OkhUVFBDb29raWVTdG9yZT4geworY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+LCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8SFRUUENvb2tpZVN0b3JlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxI
VFRQQ29va2llU3RvcmU+IGNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVE
YXRhU3RvcmUpCiAgICAgewpAQCAtOTEsOCArOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rv
cE9ic2VydmluZ0NoYW5nZXNUb0RlZmF1bHRVSVByb2Nlc3NDb29raWVTdG9yZSgpOwogICAgIHZv
aWQgZGVsZXRlQ29va2llc0luRGVmYXVsdFVJUHJvY2Vzc0Nvb2tpZVN0b3JlKCk7CiAgICAgdm9p
ZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5SW5EZWZhdWx0VUlQcm9jZXNzQ29va2llU3RvcmUo
V2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk7Ci0gICAgCi0gICAgLy8gRklYTUU6IFRo
aXMgaXMgYSByZWZlcmVuY2UgY3ljbGUuCisKICAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlPiBtX293bmluZ0RhdGFTdG9yZTsKICAgICBIYXNoU2V0PE9ic2VydmVyKj4gbV9vYnNlcnZl
cnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGQ5MjI4N2QzM2QwNTIxY2JlNTJlNzVhZjkyY2MzNTQx
NjU1NmUwYTUuLjMxZDJhZGYxNzg4ODBmMGNlYzZjN2MyZmU2OTc3OTMzODg0NGI2NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3lu
Y0xvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCB2b2lkKiBjCiAK
IFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9y
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewotICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5jb29raWVTdG9yZSgpKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
Y29va2llU3RvcmUoKS5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlLCBib29sIGFsbG93cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0
aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggYzkwYzI5OTA0YTRhNTUxNWVjMDlmNzNiMmZhNDYw
MzQ2ZDI4NGMwZi4uM2VmZmUzMjJjYmZjOGFkYmZhMjQxYTM3ODk4MDI4MjYzNjBjNWQxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NP
QXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTIzNSw3ICsy
MzUsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlKE5TSFRUUFVSTFJl
c3BvbnNlICpodHRwUmVzcG9uc2UsIE5TRGF0YSAqZAogCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3BhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5jb29raWVTdG9yZSgp
LnNldENvb2tpZXMoY29va2llcywgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhEYXRhOmRhdGFdKV0gKCkgbXV0YWJsZSB7CisgICAgbV9wYWdlLT53ZWJz
aXRlRGF0YVN0b3JlKCkuY29va2llU3RvcmUoKS0+c2V0Q29va2llcyhjb29raWVzLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25z
ZSksIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAppbmRleCBkNDA5MGE5YmI3N2VjZTQ0ZjkzYTE4MmM3NGM3MDBhYTAx
NmFlMjY2Li4xZDJjZjhlZjAzMGEwNDIzNWM5M2JmMTg1NTQyMDgzNzQwYmM5N2QwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcApAQCAtMjA1NCwxMiArMjA1NCwxNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV2ViQ29yZTo6TW9ja1dlYkF1
dAogfQogI2VuZGlmCiAKLUFQSTo6SFRUUENvb2tpZVN0b3JlJiBXZWJzaXRlRGF0YVN0b3JlOjpj
b29raWVTdG9yZSgpCitSZWY8QVBJOjpIVFRQQ29va2llU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6
OmNvb2tpZVN0b3JlKCkKIHsKLSAgICBpZiAoIW1fY29va2llU3RvcmUpCi0gICAgICAgIG1fY29v
a2llU3RvcmUgPSBBUEk6OkhUVFBDb29raWVTdG9yZTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBpZiAo
bV9jb29raWVTdG9yZSkKKyAgICAgICAgcmV0dXJuIG1ha2VSZWYoKm1fY29va2llU3RvcmUpOwog
Ci0gICAgcmV0dXJuICptX2Nvb2tpZVN0b3JlOworICAgIGF1dG8gY29va2llU3RvcmUgPSBBUEk6
OkhUVFBDb29raWVTdG9yZTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX2Nvb2tpZVN0b3JlID0gbWFr
ZVdlYWtQdHIoY29va2llU3RvcmUuZ2V0KCkpOworICAgIHJldHVybiBjb29raWVTdG9yZTsKIH0K
IAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKEZ1bmN0aW9u
PHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOTk1N2U1MWFjNTg3YjM2
NjYwYmQ2YjJlMjA5MjU4MTExMzZlN2E1MC4uOWMwZWE1NTQ5YzljNWU4NzE1MGI2YzU3NTExM2Q5
ZmIwM2I3ZjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHB1YmxpYzoKICAg
ICBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQo
KTsgfQogICAgIHZvaWQgc2V0Q2xpZW50KFVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50
PiYmIGNsaWVudCkgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogCi0gICAgQVBJOjpI
VFRQQ29va2llU3RvcmUmIGNvb2tpZVN0b3JlKCk7CisgICAgUmVmPEFQSTo6SFRUUENvb2tpZVN0
b3JlPiBjb29raWVTdG9yZSgpOwogCiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRh
KFVSTCYmLCBVUkwmJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBwcml2YXRlOgogCiAgICAgVW5p
cXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+IG1fY2xpZW50OwogCi0gICAgUmVmUHRyPEFQ
STo6SFRUUENvb2tpZVN0b3JlPiBtX2Nvb2tpZVN0b3JlOworICAgIFdlYWtQdHI8QVBJOjpIVFRQ
Q29va2llU3RvcmU+IG1fY29va2llU3RvcmU7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJv
eHk+IG1fbmV0d29ya1Byb2Nlc3M7CiAKICNpZiBIQVZFKEFQUF9TU08pCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2IwNDdjMzUzYmIwMWYxYzc4
Mjc4MGNkZjk3ZmFiYTg1NzY2NjY3OS4uZTdmOTVkYTAxNDhlNDNjMzNjMzgwNjI0MzRlYzZiYTI0
YWU5YWIxOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA2LTE0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIEJyZWFrIHJlZiBjeWNsZSBiZXR3ZWVuIEFQSTo6SFRUUENvb2tp
ZVN0b3JlIGFuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSBXS0hUVFBDb29raWVTdG9yZSBh
bmQgV2Vic3RpZURhdGFTdG9yZSBhcmUgZGVhbGxvY2F0ZWQgYWZ0ZXIgdGVzdC4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZva2UpOgorCiAyMDIxLTA2LTEx
ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtX
aW5dW0R1bXBSZW5kZXJUcmVlXSAtLW5vLXRpbWVvdXQgc3dpdGNoIGRvZXNuJ3Qgd29yawpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBjZmM5YzQ0ODNjODI1
ZDkxM2VkMjdhNGQ1NTg4NGYyNDJkNzZmMDAyLi40OTI3YjljZDExMWEwYzA4OGRhN2Q0YWU3MzE4
YzhlNDRiOWZkNWZjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cApAQCAtNzA5LDcgKzcwOSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdX
aXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAvLyBGSVhNRTogTWln
cmF0ZSB0aGVzZSBwcmVmZXJlbmNlcyB0byBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLgogICAg
IHJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMob3B0aW9ucyk7CiAKLSAgICBXS0hU
VFBDb29raWVTdG9yZURlbGV0ZUFsbENvb2tpZXMoV0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENv
b2tpZVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUoKSksIG51bGxwdHIsIG51bGxwdHIpOworICAgIGF1
dG8gY29va2llU3RvcmUgPSBhZG9wdFdLKFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVT
dG9yZSh3ZWJzaXRlRGF0YVN0b3JlKCkpKTsKKyAgICBXS0hUVFBDb29raWVTdG9yZURlbGV0ZUFs
bENvb2tpZXMoY29va2llU3RvcmUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgcGxh
dGZvcm1DcmVhdGVXZWJWaWV3KGNvbmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwogICAgIFdL
UGFnZVVJQ2xpZW50VjE2IHBhZ2VVSUNsaWVudCA9IHsKQEAgLTk0Niw3ICs5NDcsOCBAQCBib29s
IFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RP
cHRpb25zJiBvcHRpb25zLCBSZQogICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKHdlYnNpdGVEYXRhU3RvcmUoKSwgdHJ1ZSk7CiAgICAgV0tXZWJz
aXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25zKHdlYnNpdGVE
YXRhU3RvcmUoKSk7CiAKLSAgICBXS0hUVFBDb29raWVTdG9yZURlbGV0ZUFsbENvb2tpZXMoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tpZVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUoKSksIG51
bGxwdHIsIG51bGxwdHIpOworICAgIGF1dG8gY29va2llU3RvcmUgPSBhZG9wdFdLKFdLV2Vic2l0
ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKCkpKTsKKyAgICBX
S0hUVFBDb29raWVTdG9yZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmUuZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIpOwogCiAgICAgY2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CiAgICAgY2xlYXJM
b2NhbFN0b3JhZ2UoKTsKQEAgLTE4MDMsNyArMTgwNSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdS
ZWYKIAogICAgIGF1dG8gc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSA9IFsmXSAoV0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXS1R5cGVSZWYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IG5ldyBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdLVHlwZVJlZik+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLSAgICAgICAgV0tIVFRQQ29va2llU3RvcmVTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdL
V2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKCkpLCBw
b2xpY3ksIGNvbnRleHQsIFtdICh2b2lkKiBjb250ZXh0KSB7CisgICAgICAgIGF1dG8gY29va2ll
U3RvcmUgPSBhZG9wdFdLKFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZSh3ZWJz
aXRlRGF0YVN0b3JlKCkpKTsKKyAgICAgICAgV0tIVFRQQ29va2llU3RvcmVTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KGNvb2tpZVN0b3JlLmdldCgpLCBwb2xpY3ksIGNvbnRleHQsIFtdICh2b2lk
KiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyUG9pbnRlciA9
IHN0YXRpY19jYXN0PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0tUeXBlUmVmKT4qPihjb250ZXh0
KTsKICAgICAgICAgICAgICgqY29tcGxldGlvbkhhbmRsZXJQb2ludGVyKShudWxscHRyKTsKICAg
ICAgICAgICAgIGRlbGV0ZSBjb21wbGV0aW9uSGFuZGxlclBvaW50ZXI7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDVkMzI3MjM5MmJlZTEwYzdiY2VlYWQ0
YzNmOTIxNDZlMWViOTNlYTAuLmNmMmJmMjUxMmI0Njg3NWY2MTkzNmY0Y2I3YmQ4OTg3NTZmNmJh
MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNDks
NyArMTQ5LDggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKIAogICAgIFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTaG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKHNo
b3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3MoKSk7CiAKLSAgICBXS0hUVFBDb29raWVTdG9y
ZVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tp
ZVN0b3JlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS53ZWJzaXRlRGF0YVN0b3JlKCkpLCBr
V0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4sIG51bGxw
dHIsIG51bGxwdHIpOworICAgIGF1dG8gY29va2llU3RvcmUgPSBhZG9wdFdLKFdLV2Vic2l0ZURh
dGFTdG9yZUdldEhUVFBDb29raWVTdG9yZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkud2Vi
c2l0ZURhdGFTdG9yZSgpKSk7CisgICAgV0tIVFRQQ29va2llU3RvcmVTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KGNvb2tpZVN0b3JlLmdldCgpLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25s
eUZyb21NYWluRG9jdW1lbnREb21haW4sIG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBjbGVhciBvdXQgdmlzaXRlZCBsaW5rcyBoZXJlLgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431380</attachid>
            <date>2021-06-14 16:24:11 -0700</date>
            <delta_ts>2021-06-16 11:18:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226992-20210614162410.patch</filename>
            <type>text/plain</type>
            <size>11885</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkMmEyMjI1OTYxZTk5YWZh
MmQyMjQzZmE2NWE2MjUzMGVlNDc5ODAuLjljMDExMTJmYjliMjE3MGM1YWZhZjA1NjdiMTA4MTgz
YmJkMWNiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDYtMTQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJlYWsgcmVmIGN5Y2xlIGJldHdl
ZW4gQVBJOjpIVFRQQ29va2llU3RvcmUgYW5kIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTkyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJzaXRl
RGF0YVN0b3JlIHdlYWtseSByZWZlciB0byBIVFRQQ29va2llU3RvcmUuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlR2V0T3JDcmVhdGVIVFRQQ29va2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlR2V0SFRUUENvb2tpZVN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NP
QXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpjb29raWVTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAyMS0wNi0xNCAgUGVyIEFybmUgIDxwdm9sbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTeW5jIEFjY2Vzc2liaWxpdHkgcHJlZmVyZW5j
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUu
aAppbmRleCBhMDVmNDE0MzBkYjJiMjNkNDE3ODQwNzlhNGZiODZjNzQ2MGE3NTQ1Li45MGQ3NDMw
YTFmNzQ5NjE4OWJmY2RkMmZiYzQ3ZjRiYjBkMjZlOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBDb29raWU7CkBAIC00OCw3ICs0OSw3IEBAIG5h
bWVzcGFjZSBBUEkgewogCiBjbGFzcyBBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcjsK
IAotY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0
OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKK2NsYXNzIEhUVFBDb29raWVTdG9yZSBmaW5hbCA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SFRUUENvb2tpZVN0b3JlPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEhUVFBDb29raWVTdG9yZT4gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8SFRUUENvb2tpZVN0b3JlPiBjcmVhdGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJz
aXRlRGF0YVN0b3JlKQogICAgIHsKQEAgLTkxLDggKzkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN0b3BPYnNlcnZpbmdDaGFuZ2VzVG9EZWZhdWx0VUlQcm9jZXNzQ29va2llU3RvcmUoKTsKICAg
ICB2b2lkIGRlbGV0ZUNvb2tpZXNJbkRlZmF1bHRVSVByb2Nlc3NDb29raWVTdG9yZSgpOwogICAg
IHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUluRGVmYXVsdFVJUHJvY2Vzc0Nvb2tpZVN0
b3JlKFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIAotICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGEgcmVmZXJlbmNlIGN5Y2xlLgorCiAgICAgUmVmPFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZT4gbV9vd25pbmdEYXRhU3RvcmU7CiAgICAgSGFzaFNldDxPYnNlcnZlcio+IG1fb2Jz
ZXJ2ZXJzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCBkOTIyODdkMzNkMDUyMWNiZTUyZTc1YWY5MmNj
MzU0MTY1NTZlMGE1Li41MGFlZmViMDhhNWE1MDM1ZDkxYjNmOTg4MGYyNzFiMWEwMjQ3MjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKQEAgLTE1Niw5ICsxNTYsOSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN5bmNMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZSwgdm9pZCog
YwogICAgIH0pOwogfQogCi1XS0hUVFBDb29raWVTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVH
ZXRIVFRQQ29va2llU3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKK1dL
SFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldE9yQ3JlYXRlSFRUUENvb2tp
ZVN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmNvb2tpZVN0b3Jl
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5jb29raWVTdG9yZSgpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0aW5nKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUsIGJvb2wgYWxsb3dzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBkNWM5
ZWVlMmE0MDRmZDNjYjQ3YzlmODc3MzVjMzk3NjgxZDI5M2E3Li4wNDJiZmViMDU5NjI5YmQ4NGRi
MTVkMjAwNjdjMDY1ZTY5MzhjN2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtNDgsNyArNDgsNyBAQCBXS19F
WFBPUlQgV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHRE
YXRhU3RvcmUoKTsKIFdLX0VYUE9SVCBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0
YVN0b3JlQ3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpOwogV0tfRVhQT1JUIFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihX
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogCi1XS19F
WFBPUlQgV0tIVFRQQ29va2llU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tp
ZVN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpOworV0tfRVhQT1JUIFdL
SFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldE9yQ3JlYXRlSFRUUENvb2tp
ZVN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpOwogCiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVz
dGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlLCBkb3VibGUgc2Vjb25kcyk7CiBX
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRp
bWVvdXRGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0
aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCBjOTBjMjk5MDRhNGE1
NTE1ZWMwOWY3M2IyZmE0NjAzNDZkMjg0YzBmLi4zZWZmZTMyMmNiZmM4YWRiZmEyNDFhMzc4OTgw
MjgyNjM2MGM1ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5tbQpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29t
cGxldGUoTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSwgTlNEYXRhICpkCiAKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcGFnZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmNvb2tpZVN0b3JlKCkuc2V0Q29va2llcyhjb29raWVzLCBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pXSAoKSBtdXRhYmxlIHsK
KyAgICBtX3BhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5jb29raWVTdG9yZSgpLT5zZXRDb29raWVz
KGNvb2tpZXMsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRX
aXRoRGF0YTpkYXRhXSldICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGQ0MDkwYTliYjc3ZWNlNDRm
OTNhMTgyYzc0YzcwMGFhMDE2YWUyNjYuLjM4OTMwNDFmZjYzMDkyNjViYjYzNzMyMTIyZjFjZWIy
ZmIyZGQwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMDU0LDEyICsyMDU0LDE0IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihX
ZWJDb3JlOjpNb2NrV2ViQXV0CiB9CiAjZW5kaWYKIAotQVBJOjpIVFRQQ29va2llU3RvcmUmIFdl
YnNpdGVEYXRhU3RvcmU6OmNvb2tpZVN0b3JlKCkKK1JlZjxBUEk6OkhUVFBDb29raWVTdG9yZT4g
V2Vic2l0ZURhdGFTdG9yZTo6Y29va2llU3RvcmUoKQogewotICAgIGlmICghbV9jb29raWVTdG9y
ZSkKLSAgICAgICAgbV9jb29raWVTdG9yZSA9IEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjcmVhdGUo
KnRoaXMpOworICAgIGlmIChtX2Nvb2tpZVN0b3JlKQorICAgICAgICByZXR1cm4gKm1fY29va2ll
U3RvcmU7CiAKLSAgICByZXR1cm4gKm1fY29va2llU3RvcmU7CisgICAgYXV0byBjb29raWVTdG9y
ZSA9IEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjcmVhdGUoKnRoaXMpOworICAgIG1fY29va2llU3Rv
cmUgPSBtYWtlV2Vha1B0cihjb29raWVTdG9yZS5nZXQoKSk7CisgICAgcmV0dXJuIGNvb2tpZVN0
b3JlOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldExvY2FsU3RvcmFnZURldGFpbHMo
RnVuY3Rpb248dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5E
ZXRhaWxzPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA5OTU3ZTUx
YWM1ODdiMzY2NjBiZDZiMmUyMDkyNTgxMTEzNmU3YTUwLi45YzBlYTU1NDljOWM1ZTg3MTUwYjZj
NTc1MTEzZDlmYjAzYjdmNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMDUsNyArMzA1LDcgQEAgcHVi
bGljOgogICAgIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xp
ZW50LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3Rv
cmVDbGllbnQ+JiYgY2xpZW50KSB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAKLSAg
ICBBUEk6OkhUVFBDb29raWVTdG9yZSYgY29va2llU3RvcmUoKTsKKyAgICBSZWY8QVBJOjpIVFRQ
Q29va2llU3RvcmU+IGNvb2tpZVN0b3JlKCk7CiAKICAgICB2b2lkIHJlbmFtZU9yaWdpbkluV2Vi
c2l0ZURhdGEoVVJMJiYsIFVSTCYmLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHByaXZhdGU6CiAK
ICAgICBVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4gbV9jbGllbnQ7CiAKLSAgICBS
ZWZQdHI8QVBJOjpIVFRQQ29va2llU3RvcmU+IG1fY29va2llU3RvcmU7CisgICAgV2Vha1B0cjxB
UEk6OkhUVFBDb29raWVTdG9yZT4gbV9jb29raWVTdG9yZTsKICAgICBSZWZQdHI8TmV0d29ya1By
b2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsKIAogI2lmIEhBVkUoQVBQX1NTTykKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzYjA0N2MzNTNi
YjAxZjFjNzgyNzgwY2RmOTdmYWJhODU3NjY2Njc5Li5lN2Y5NWRhMDE0OGU0M2MzM2MzODA2MjQz
NGVjNmJhMjRhZTlhYjE5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDYtMTQgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJlYWsgcmVmIGN5Y2xlIGJldHdlZW4gQVBJOjpI
VFRQQ29va2llU3RvcmUgYW5kIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJlIFdLSFRUUENvb2tp
ZVN0b3JlIGFuZCBXZWJzdGllRGF0YVN0b3JlIGFyZSBkZWFsbG9jYXRlZCBhZnRlciB0ZXN0Lgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisKIDIw
MjEtMDYtMTEgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAg
ICAgICAgW1dpbl1bRHVtcFJlbmRlclRyZWVdIC0tbm8tdGltZW91dCBzd2l0Y2ggZG9lc24ndCB3
b3JrCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGNmYzlj
NDQ4M2M4MjVkOTEzZWQyN2E0ZDU1ODg0ZjI0MmQ3NmYwMDIuLmY1NGExNzY3MzQ2YTEwNmNjZjdj
NmU2OWM1NGYyOGQ3Y2EwOWE1MTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC03MDksNyArNzA5LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRl
V2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgIC8vIEZJ
WE1FOiBNaWdyYXRlIHRoZXNlIHByZWZlcmVuY2VzIHRvIFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYuCiAgICAgcmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhvcHRpb25zKTsKIAot
ICAgIFdLSFRUUENvb2tpZVN0b3JlRGVsZXRlQWxsQ29va2llcyhXS1dlYnNpdGVEYXRhU3RvcmVH
ZXRIVFRQQ29va2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSgpKSwgbnVsbHB0ciwgbnVsbHB0cik7
CisgICAgYXV0byBjb29raWVTdG9yZSA9IGFkb3B0V0soV0tXZWJzaXRlRGF0YVN0b3JlR2V0T3JD
cmVhdGVIVFRQQ29va2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSgpKSk7CisgICAgV0tIVFRQQ29v
a2llU3RvcmVEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JlLmdldCgpLCBudWxscHRyLCBudWxs
cHRyKTsKIAogICAgIHBsYXRmb3JtQ3JlYXRlV2ViVmlldyhjb25maWd1cmF0aW9uLmdldCgpLCBv
cHRpb25zKTsKICAgICBXS1BhZ2VVSUNsaWVudFYxNiBwYWdlVUlDbGllbnQgPSB7CkBAIC05NDYs
NyArOTQ3LDggQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZh
bHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRy
dWUpOwogICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3JpZW50YXRpb25QZXJt
aXNzaW9ucyh3ZWJzaXRlRGF0YVN0b3JlKCkpOwogCi0gICAgV0tIVFRQQ29va2llU3RvcmVEZWxl
dGVBbGxDb29raWVzKFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZSh3ZWJzaXRl
RGF0YVN0b3JlKCkpLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBhdXRvIGNvb2tpZVN0b3JlID0g
YWRvcHRXSyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRPckNyZWF0ZUhUVFBDb29raWVTdG9yZSh3ZWJz
aXRlRGF0YVN0b3JlKCkpKTsKKyAgICBXS0hUVFBDb29raWVTdG9yZURlbGV0ZUFsbENvb2tpZXMo
Y29va2llU3RvcmUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgY2xlYXJJbmRleGVk
RGF0YWJhc2VzKCk7CiAgICAgY2xlYXJMb2NhbFN0b3JhZ2UoKTsKQEAgLTE4MDMsNyArMTgwNSw4
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYKIAogICAgIGF1dG8gc2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSA9IFsmXSAoV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXS1R5cGVSZWYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IGF1dG8gY29udGV4dCA9IG5ldyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdLVHlwZVJlZik+KFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgV0tIVFRQQ29va2llU3RvcmVTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9y
ZSh3ZWJzaXRlRGF0YVN0b3JlKCkpLCBwb2xpY3ksIGNvbnRleHQsIFtdICh2b2lkKiBjb250ZXh0
KSB7CisgICAgICAgIGF1dG8gY29va2llU3RvcmUgPSBhZG9wdFdLKFdLV2Vic2l0ZURhdGFTdG9y
ZUdldE9yQ3JlYXRlSFRUUENvb2tpZVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUoKSkpOworICAgICAg
ICBXS0hUVFBDb29raWVTdG9yZVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmUu
Z2V0KCksIHBvbGljeSwgY29udGV4dCwgW10gKHZvaWQqIGNvbnRleHQpIHsKICAgICAgICAgICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXJQb2ludGVyID0gc3RhdGljX2Nhc3Q8Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChXS1R5cGVSZWYpPio+KGNvbnRleHQpOwogICAgICAgICAgICAgKCpjb21wbGV0
aW9uSGFuZGxlclBvaW50ZXIpKG51bGxwdHIpOwogICAgICAgICAgICAgZGVsZXRlIGNvbXBsZXRp
b25IYW5kbGVyUG9pbnRlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKaW5kZXggNWQzMjcyMzkyYmVlMTBjN2JjZWVhZDRjM2Y5MjE0NmUxZWI5M2VhMC4uNjdhNmRm
ZGFiNGJmNzU5NzZkNzM1MTNiODlmZjVkNDQyYzBkNjg1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE0OSw3ICsxNDksOCBAQCB2b2lkIFRlc3RJbnZv
Y2F0aW9uOjppbnZva2UoKQogCiAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFNo
b3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3Moc2hvdWxkTG9nSGlzdG9yeUNsaWVudENhbGxi
YWNrcygpKTsKIAotICAgIFdLSFRUUENvb2tpZVN0b3JlU2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUoVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLndlYnNpdGVEYXRhU3RvcmUoKSksIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lP
bmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgYXV0byBj
b29raWVTdG9yZSA9IGFkb3B0V0soV0tXZWJzaXRlRGF0YVN0b3JlR2V0T3JDcmVhdGVIVFRQQ29v
a2llU3RvcmUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLndlYnNpdGVEYXRhU3RvcmUoKSkp
OworICAgIFdLSFRUUENvb2tpZVN0b3JlU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yZS5nZXQoKSwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50
RG9tYWluLCBudWxscHRyLCBudWxscHRyKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2xl
YXIgb3V0IHZpc2l0ZWQgbGlua3MgaGVyZS4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431571</attachid>
            <date>2021-06-16 11:18:45 -0700</date>
            <delta_ts>2021-06-16 11:48:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226992-20210616111844.patch</filename>
            <type>text/plain</type>
            <size>12247</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5YWRkMGYwMjJjOTVmNTdi
YmQ0YmQ0ZjAxNWVlMTg5ZTYwYTExMTAuLjI5NjUxYmIyMGU5OWZlZTM0ODNhNWEyZGM4ZjcwZmFl
MDVmZTA4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDYtMTYgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJlYWsgcmVmIGN5Y2xlIGJldHdl
ZW4gQVBJOjpIVFRQQ29va2llU3RvcmUgYW5kIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTkyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
ZTo6ZmlsdGVyQXBwQm91bmRDb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3Jl
Ojpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjb29raWVzRm9yVVJM
KToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpzZXRDb29raWVzKToKKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JlOjpkZWxldGVDb29raWUpOgorICAgICAgICAoQVBJOjpIVFRQ
Q29va2llU3RvcmU6OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2ll
U3RvcmU6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoQVBJOjpIVFRQQ29v
a2llU3RvcmU6OmZsdXNoQ29va2llcyk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6
cmVnaXN0ZXJPYnNlcnZlcik6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6dW5yZWdp
c3Rlck9ic2VydmVyKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpyZWYgY29uc3Qp
OgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmRlcmVmIGNvbnN0KToKKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JlOjpyZWZPYmplY3QgY29uc3QpOgorICAgICAgICAoQVBJOjpI
VFRQQ29va2llU3RvcmU6OmRlcmVmT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDIxLTA2LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgQVBJOjpIVFRQQ29va2ll
U3RvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29v
a2llU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5jcHAKaW5kZXggNjRiMGRlMDlmYzk4ZDg1MDY0NWRhNjFlMWZkYjcxMjY1ODE4OGJjNC4u
OWZlZTdjYmIxMzc4M2ZlOTk1YzY4YWRkYWJjODFmNmE5ZGEyZGY2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTU5LDcg
KzU5LDcgQEAgdm9pZCBIVFRQQ29va2llU3RvcmU6OmZpbHRlckFwcEJvdW5kQ29va2llcyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2kKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBhcHBCb3VuZENvb2tpZXM7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQot
ICAgIG1fb3duaW5nRGF0YVN0b3JlLT5nZXRBcHBCb3VuZERvbWFpbnMoW2Nvb2tpZXMsIGFwcEJv
dW5kQ29va2llcyA9IFdURk1vdmUoYXBwQm91bmRDb29raWVzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgewor
ICAgIG1fb3duaW5nRGF0YVN0b3JlLmdldEFwcEJvdW5kRG9tYWlucyhbY29va2llcywgYXBwQm91
bmRDb29raWVzID0gV1RGTW92ZShhcHBCb3VuZENvb2tpZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZG9tYWlucykgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghZG9tYWlucy5pc0VtcHR5KCkgJiYgIWlzRnVsbFdlYkJyb3dzZXIoKSkgewog
ICAgICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGRvbWFpbnMuY29udGFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KGNvb2tpZS5kb21haW4pKSkKQEAgLTc3LDE2ICs3NywxNiBAQCB2
b2lkIEhUVFBDb29raWVTdG9yZTo6ZmlsdGVyQXBwQm91bmRDb29raWVzKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb29raQogCiB2b2lkIEhUVFBDb29raWVTdG9yZTo6Y29va2llcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byYgY29va2llTWFuYWdlciA9IG1fb3duaW5n
RGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLmNvb2tpZU1hbmFnZXIoKTsKLSAgICBjb29raWVN
YW5hZ2VyLmdldEFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IGNvb2tpZXMpIG11dGFibGUgeworICAgIGF1dG8mIGNvb2tpZU1hbmFnZXIgPSBtX293bmluZ0Rh
dGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLmNvb2tpZU1hbmFnZXIoKTsKKyAgICBjb29raWVNYW5h
Z2VyLmdldEFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUuc2Vzc2lvbklEKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29v
a2llcykgbXV0YWJsZSB7CiAgICAgICAgIGZpbHRlckFwcEJvdW5kQ29va2llcyhjb29raWVzLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSFRUUENvb2tp
ZVN0b3JlOjpjb29raWVzRm9yVVJMKFdURjo6VVJMJiYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGF1dG8mIGNvb2tpZU1hbmFnZXIgPSBtX293bmluZ0RhdGFTdG9yZS0+bmV0d29ya1Byb2Nl
c3MoKS5jb29raWVNYW5hZ2VyKCk7Ci0gICAgY29va2llTWFuYWdlci5nZXRDb29raWVzKG1fb3du
aW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgdXJsLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKKyAgICBh
dXRvJiBjb29raWVNYW5hZ2VyID0gbV9vd25pbmdEYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKS5j
b29raWVNYW5hZ2VyKCk7CisgICAgY29va2llTWFuYWdlci5nZXRDb29raWVzKG1fb3duaW5nRGF0
YVN0b3JlLnNlc3Npb25JRCgpLCB1cmwsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmIGNvb2tpZXMpIG11dGFibGUgewogICAgICAgICBmaWx0
ZXJBcHBCb3VuZENvb2tpZXMoY29va2llcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIH0pOwogfQpAQCAtOTQsMzQgKzk0LDM0IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpjb29r
aWVzRm9yVVJMKFdURjo6VVJMJiYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvCiB2
b2lkIEhUVFBDb29raWVTdG9yZTo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYgY29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGZpbHRlckFwcEJvdW5kQ29va2llcyhjb29raWVzLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kQ29va2llcykgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8mIGNvb2tpZU1hbmFnZXIgPSBtX293bmluZ0RhdGFTdG9yZS0+bmV0d29ya1Byb2Nl
c3MoKS5jb29raWVNYW5hZ2VyKCk7Ci0gICAgICAgIGNvb2tpZU1hbmFnZXIuc2V0Q29va2llcyht
X293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksIGFwcEJvdW5kQ29va2llcywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBhdXRvJiBjb29raWVNYW5hZ2VyID0gbV9vd25p
bmdEYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKS5jb29raWVNYW5hZ2VyKCk7CisgICAgICAgIGNv
b2tpZU1hbmFnZXIuc2V0Q29va2llcyhtX293bmluZ0RhdGFTdG9yZS5zZXNzaW9uSUQoKSwgYXBw
Qm91bmRDb29raWVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgSFRUUENvb2tpZVN0b3JlOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2ll
JiBjb29raWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBhdXRvJiBjb29raWVNYW5hZ2VyID0gbV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQ
cm9jZXNzKCkuY29va2llTWFuYWdlcigpOwotICAgIGNvb2tpZU1hbmFnZXIuZGVsZXRlQ29va2ll
KG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgY29va2llLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgYXV0byYgY29va2llTWFuYWdlciA9IG1fb3duaW5nRGF0YVN0b3Jl
Lm5ldHdvcmtQcm9jZXNzKCkuY29va2llTWFuYWdlcigpOworICAgIGNvb2tpZU1hbmFnZXIuZGVs
ZXRlQ29va2llKG1fb3duaW5nRGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBIVFRQQ29va2llU3RvcmU6OmRlbGV0ZUFs
bENvb2tpZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIGF1dG8mIGNvb2tpZU1hbmFnZXIgPSBtX293bmluZ0RhdGFTdG9yZS0+bmV0d29ya1By
b2Nlc3MoKS5jb29raWVNYW5hZ2VyKCk7Ci0gICAgY29va2llTWFuYWdlci5kZWxldGVBbGxDb29r
aWVzKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSk7CisgICAgYXV0byYgY29va2llTWFu
YWdlciA9IG1fb3duaW5nRGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuY29va2llTWFuYWdlcigp
OworICAgIGNvb2tpZU1hbmFnZXIuZGVsZXRlQWxsQ29va2llcyhtX293bmluZ0RhdGFTdG9yZS5z
ZXNzaW9uSUQoKSk7CiAgICAgLy8gRklYTUU6IFRoZSBDb21wbGV0aW9uSGFuZGxlciBzaG91bGQg
YmUgcGFzc2VkIHRvIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llcy4KICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIEhUVFBDb29raWVTdG9yZTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJD
b3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8mIGNvb2tpZU1hbmFnZXIgPSBt
X293bmluZ0RhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5jb29raWVNYW5hZ2VyKCk7Ci0gICAg
Y29va2llTWFuYWdlci5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KG1fb3duaW5nRGF0YVN0b3Jl
LT5zZXNzaW9uSUQoKSwgcG9saWN5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
YXV0byYgY29va2llTWFuYWdlciA9IG1fb3duaW5nRGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCku
Y29va2llTWFuYWdlcigpOworICAgIGNvb2tpZU1hbmFnZXIuc2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShtX293bmluZ0RhdGFTdG9yZS5zZXNzaW9uSUQoKSwgcG9saWN5LCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpmbHVzaENvb2tpZXMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1f
b3duaW5nRGF0YVN0b3JlLT5mbHVzaENvb2tpZXMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIG1fb3duaW5nRGF0YVN0b3JlLmZsdXNoQ29va2llcyhXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyIDog
cHVibGljIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6T2JzZXJ2ZXIgewpAQCAtMTUyLDggKzE1Miw4
IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyJiBvYnNl
cnZlcikKIAogICAgIG1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEFQ
SVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyPigqdGhpcyk7CiAKLSAgICBtX29ic2VydmVk
Q29va2llTWFuYWdlclByb3h5ID0gbWFrZVdlYWtQdHIobV9vd25pbmdEYXRhU3RvcmUtPm5ldHdv
cmtQcm9jZXNzKCkuY29va2llTWFuYWdlcigpKTsKLSAgICBtX29ic2VydmVkQ29va2llTWFuYWdl
clByb3h5LT5yZWdpc3Rlck9ic2VydmVyKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwg
Km1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXIpOworICAgIG1fb2JzZXJ2ZWRDb29raWVNYW5h
Z2VyUHJveHkgPSBtYWtlV2Vha1B0cihtX293bmluZ0RhdGFTdG9yZS5uZXR3b3JrUHJvY2Vzcygp
LmNvb2tpZU1hbmFnZXIoKSk7CisgICAgbV9vYnNlcnZlZENvb2tpZU1hbmFnZXJQcm94eS0+cmVn
aXN0ZXJPYnNlcnZlcihtX293bmluZ0RhdGFTdG9yZS5zZXNzaW9uSUQoKSwgKm1fY29va2llTWFu
YWdlclByb3h5T2JzZXJ2ZXIpOwogfQogCiB2b2lkIEhUVFBDb29raWVTdG9yZTo6dW5yZWdpc3Rl
ck9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEhU
VFBDb29raWVTdG9yZTo6dW5yZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHkpCi0g
ICAgICAgIG1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHktPnVucmVnaXN0ZXJPYnNlcnZlciht
X293bmluZ0RhdGFTdG9yZS0+c2Vzc2lvbklEKCksICptX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2Vy
dmVyKTsKKyAgICAgICAgbV9vYnNlcnZlZENvb2tpZU1hbmFnZXJQcm94eS0+dW5yZWdpc3Rlck9i
c2VydmVyKG1fb3duaW5nRGF0YVN0b3JlLnNlc3Npb25JRCgpLCAqbV9jb29raWVNYW5hZ2VyUHJv
eHlPYnNlcnZlcik7CiAKICAgICBtX29ic2VydmVkQ29va2llTWFuYWdlclByb3h5ID0gbnVsbHB0
cjsKICAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0gbnVsbHB0cjsKQEAgLTE3NSw1
ICsxNzUsMjUgQEAgdm9pZCBIVFRQQ29va2llU3RvcmU6OmNvb2tpZXNEaWRDaGFuZ2UoKQogICAg
IGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKICAgICAgICAgb2JzZXJ2ZXIuY29v
a2llc0RpZENoYW5nZSgqdGhpcyk7CiB9Ci0gICAgCisKK3ZvaWQgSFRUUENvb2tpZVN0b3JlOjpy
ZWYoKSBjb25zdAoreworICAgIG1fb3duaW5nRGF0YVN0b3JlLnJlZigpOworfQorCit2b2lkIEhU
VFBDb29raWVTdG9yZTo6ZGVyZWYoKSBjb25zdAoreworICAgIG1fb3duaW5nRGF0YVN0b3JlLmRl
cmVmKCk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JlOjpyZWZPYmplY3QoKSBjb25zdAorewor
ICAgIE9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkhUVFBDb29raWVTdG9yZT46OnJlZigp
OworfQorCit2b2lkIEhUVFBDb29raWVTdG9yZTo6ZGVyZWZPYmplY3QoKSBjb25zdAoreworICAg
IE9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkhUVFBDb29raWVTdG9yZT46OmRlcmVmKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCmluZGV4IGJhZTkwYmFkZTc3Yjc1YWQ0NDkyMGY5MTBl
MGI0OWRhYzRjYmU2NDEuLjVmM2IxOWRmNWEyZjMyYzJjNGJlY2Y0MTg2YjM0ZTBhNWE5ZTU1MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3Jl
LmgKQEAgLTUxLDEzICs1MSwyMSBAQCBjbGFzcyBBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNl
cnZlcjsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8
T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEhUVFBDb29raWVTdG9yZT4gY3JlYXRlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0
ZURhdGFTdG9yZSkKKyAgICB2aXJ0dWFsIH5IVFRQQ29va2llU3RvcmUoKTsKKyAgICAKKyAgICBz
dHJ1Y3QgRGVsZXRlciB7CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKShIVFRQQ29va2llU3RvcmUq
IGNvb2tpZVN0b3JlKQorICAgICAgICB7CisgICAgICAgICAgICBjb29raWVTdG9yZS0+ZGVyZWZP
YmplY3QoKTsKKyAgICAgICAgfQorICAgIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxI
VFRQQ29va2llU3RvcmUsIERlbGV0ZXI+IGNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUm
IHdlYnNpdGVEYXRhU3RvcmUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBI
VFRQQ29va2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9
IHN0ZDo6dW5pcXVlX3B0cjxIVFRQQ29va2llU3RvcmUsIERlbGV0ZXI+KG5ldyBIVFRQQ29va2ll
U3RvcmUod2Vic2l0ZURhdGFTdG9yZSkpOworICAgICAgICByZXN1bHQtPnJlZk9iamVjdCgpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHZpcnR1YWwgfkhUVFBDb29raWVT
dG9yZSgpOwotCiAgICAgdm9pZCBjb29raWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJik7CiAgICAgdm9pZCBjb29raWVzRm9yVVJMKFdU
Rjo6VVJMJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
Jik+JiYpOwogICAgIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC04MCwxNSArODgsMjAgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiYpPiYmKTsKIAorICAgIHZvaWQgcmVmKCkgY29uc3Q7CisgICAgdm9pZCBkZXJlZigpIGNv
bnN0OworCiBwcml2YXRlOgogICAgIEhUVFBDb29raWVTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmUmKTsKLSAgICAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHJlZmVyZW5jZSBjeWNsZS4K
LSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX293bmluZ0RhdGFTdG9yZTsKKyAg
ICB2b2lkIHJlZk9iamVjdCgpIGNvbnN0OworICAgIHZvaWQgZGVyZWZPYmplY3QoKSBjb25zdDsK
IAorICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgbV9vd25pbmdEYXRhU3RvcmU7CiAgICAg
V2Vha0hhc2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogICAgIFdlYWtQdHI8V2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk+IG1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyPiBtX2Nvb2tp
ZU1hbmFnZXJQcm94eU9ic2VydmVyOwogfTsKIAordXNpbmcgVW5pcXVlSFRUUENvb2tpZVN0b3Jl
UHRyID0gc3RkOjp1bmlxdWVfcHRyPEhUVFBDb29raWVTdG9yZSwgSFRUUENvb2tpZVN0b3JlOjpE
ZWxldGVyPjsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBkNDA5MGE5YmI3N2VjZTQ0ZjkzYTE4
MmM3NGM3MDBhYTAxNmFlMjY2Li43M2VkZTQxODY4MjY2NTBhZWRhMjI1YmNiYzI0ZmJkODcyYmY3
NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAotI2luY2x1ZGUgIkFQSUhUVFBD
b29raWVTdG9yZS5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRv
ck1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA5OTU3ZTUxYWM1ODdiMzY2NjBiZDZiMmUyMDky
NTgxMTEzNmU3YTUwLi4zMWEzZGM2YmUyZTYwODRmMjQwOGMzOTBhYTY3ZDliYWM2ZGNmZWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIu
aCIKQEAgLTY1LDEwICs2Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Byb3h5
U2V0dGluZ3MuaD4KICNlbmRpZgogCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIEhUVFBDb29raWVT
dG9yZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTQ0Nyw3ICs0NDQsNyBAQCBwcml2YXRlOgogCiAg
ICAgVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+IG1fY2xpZW50OwogCi0gICAgUmVm
UHRyPEFQSTo6SFRUUENvb2tpZVN0b3JlPiBtX2Nvb2tpZVN0b3JlOworICAgIEFQSTo6VW5pcXVl
SFRUUENvb2tpZVN0b3JlUHRyIG1fY29va2llU3RvcmU7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9j
ZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7CiAKICNpZiBIQVZFKEFQUF9TU08pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431578</attachid>
            <date>2021-06-16 11:48:04 -0700</date>
            <delta_ts>2021-06-16 11:53:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226992-20210616114804.patch</filename>
            <type>text/plain</type>
            <size>12480</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5YWRkMGYwMjJjOTVmNTdi
YmQ0YmQ0ZjAxNWVlMTg5ZTYwYTExMTAuLmZiODhkODYyNmY1MWFjMmQ1NmE0Mzc2ZDJmMTMxMmU1
MTk5NTMwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDYtMTYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBCcmVhayByZWYg
Y3ljbGUgYmV0d2VlbiBBUEk6OkhUVFBDb29raWVTdG9yZSBhbmQgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjY5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGFuIEFQSSB0ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OkhUVFBDb29r
aWVTdG9yZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6ZmlsdGVyQXBwQm91bmRD
b29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjb29raWVzKToKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjb29raWVzRm9yVVJMKToKKyAgICAgICAgKEFQSTo6
SFRUUENvb2tpZVN0b3JlOjpzZXRDb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JlOjpkZWxldGVDb29raWUpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmRlbGV0
ZUFsbENvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OnNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmZsdXNoQ29v
a2llcyk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZlcik6
CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6dW5yZWdpc3Rlck9ic2VydmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGUpOgorCiAy
MDIxLTA2LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQ2xlYW4gdXAgQVBJOjpIVFRQQ29va2llU3RvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggNjRiMGRlMDlm
Yzk4ZDg1MDY0NWRhNjFlMWZkYjcxMjY1ODE4OGJjNC4uYmEzZWE5YWI4NzhlOTEwYmY5ODhkOWI1
NzMwZDU2ODQ5ZDA0ODJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIG5hbWVzcGFjZSBBUEkgewogCiBIVFRQQ29va2llU3RvcmU6OkhUVFBDb29raWVT
dG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCi0gICAgOiBt
X293bmluZ0RhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQorICAgIDogbV9vd25pbmdEYXRhU3Rv
cmUobWFrZVdlYWtQdHIod2Vic2l0ZURhdGFTdG9yZSkpCiB7CiB9CiAKQEAgLTU1LDQ1ICs1NSw1
MiBAQCBIVFRQQ29va2llU3RvcmU6On5IVFRQQ29va2llU3RvcmUoKQogICAgIEFTU0VSVCghbV9j
b29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcik7CiB9CiAKLXZvaWQgSFRUUENvb2tpZVN0b3JlOjpm
aWx0ZXJBcHBCb3VuZENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEhUVFBDb29raWVTdG9yZTo6ZmlsdGVyQXBwQm91bmRD
b29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYgY29va2llcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBhcHBCb3VuZENvb2tpZXM7CiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQotICAgIG1fb3duaW5nRGF0YVN0b3JlLT5nZXRBcHBCb3Vu
ZERvbWFpbnMoW2Nvb2tpZXMsIGFwcEJvdW5kQ29va2llcyA9IFdURk1vdmUoYXBwQm91bmRDb29r
aWVzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgIGlmICghbV9vd25pbmdEYXRhU3RvcmUpCisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgIG1fb3duaW5nRGF0YVN0b3Jl
LT5nZXRBcHBCb3VuZERvbWFpbnMoW2Nvb2tpZXMgPSBXVEZNb3ZlKGNvb2tpZXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZG9tYWlucykg
bXV0YWJsZSB7CisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGFwcEJvdW5kQ29va2ll
czsKICAgICAgICAgaWYgKCFkb21haW5zLmlzRW1wdHkoKSAmJiAhaXNGdWxsV2ViQnJvd3Nlcigp
KSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgY29va2llIDogV1RGTW92ZShjb29raWVzKSkgewogICAgICAgICAgICAg
ICAgIGlmIChkb21haW5zLmNvbnRhaW5zKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChjb29raWUuZG9tYWluKSkpCi0gICAgICAgICAgICAgICAgICAg
IGFwcEJvdW5kQ29va2llcy5hcHBlbmQoY29va2llKTsKKyAgICAgICAgICAgICAgICAgICAgYXBw
Qm91bmRDb29raWVzLmFwcGVuZChXVEZNb3ZlKGNvb2tpZSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFwcEJvdW5kQ29va2llcyA9IGNvb2tpZXM7CisgICAg
ICAgICAgICBhcHBCb3VuZENvb2tpZXMgPSBXVEZNb3ZlKGNvb2tpZXMpOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFwcEJvdW5kQ29va2llcykpOwogICAgIH0pOwogI2Vsc2UK
LSAgICBhcHBCb3VuZENvb2tpZXMgPSBjb29raWVzOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoYXBwQm91bmRDb29raWVzKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShj
b29raWVzKSk7CiAjZW5kaWYKIH0KIAogdm9pZCBIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogeworICAgIGlmICghbV9vd25pbmdEYXRhU3RvcmUpCisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8mIGNvb2tpZU1hbmFnZXIg
PSBtX293bmluZ0RhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5jb29raWVNYW5hZ2VyKCk7Ci0g
ICAgY29va2llTWFuYWdlci5nZXRBbGxDb29raWVzKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9u
SUQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiBjb29raWVzKSBtdXRhYmxlIHsKLSAgICAgICAgZmlsdGVyQXBwQm91bmRDb29r
aWVzKGNvb2tpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBjb29raWVNYW5h
Z2VyLmdldEFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJiBjb29raWVz
KSBtdXRhYmxlIHsKKyAgICAgICAgZmlsdGVyQXBwQm91bmRDb29raWVzKFdURk1vdmUoY29va2ll
cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KIAogdm9pZCBIVFRQ
Q29va2llU3RvcmU6OmNvb2tpZXNGb3JVUkwoV1RGOjpVUkwmJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CisgICAgaWYgKCFtX293bmluZ0RhdGFTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byYgY29va2llTWFuYWdlciA9IG1fb3duaW5nRGF0YVN0
b3JlLT5uZXR3b3JrUHJvY2VzcygpLmNvb2tpZU1hbmFnZXIoKTsKICAgICBjb29raWVNYW5hZ2Vy
LmdldENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCB1cmwsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmIGNvb2tpZXMp
IG11dGFibGUgewotICAgICAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoY29va2llcywgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoV1RG
TW92ZShjb29raWVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQog
Ci12b2lkIEhUVFBDb29raWVTdG9yZTo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYgY29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBIVFRQQ29va2llU3RvcmU6OnNldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mJiBjb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgZmlsdGVyQXBwQm91bmRDb29raWVzKGNvb2tpZXMsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmRDb29raWVzKSBtdXRhYmxlIHsK
KyAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoV1RGTW92ZShjb29raWVzKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZENvb2tpZXMpIG11dGFibGUgeworICAg
ICAgICBpZiAoIW1fb3duaW5nRGF0YVN0b3JlKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBhdXRvJiBjb29raWVNYW5hZ2VyID0gbV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNz
KCkuY29va2llTWFuYWdlcigpOwogICAgICAgICBjb29raWVNYW5hZ2VyLnNldENvb2tpZXMobV9v
d25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBhcHBCb3VuZENvb2tpZXMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTEwMSwxMiArMTA4LDE2IEBAIHZvaWQgSFRU
UENvb2tpZVN0b3JlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBj
b29raWVzLCBDb21wbGV0CiAKIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBpZiAoIW1fb3duaW5nRGF0YVN0b3JlKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICBhdXRvJiBjb29raWVNYW5hZ2VyID0g
bV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkuY29va2llTWFuYWdlcigpOwogICAg
IGNvb2tpZU1hbmFnZXIuZGVsZXRlQ29va2llKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQo
KSwgY29va2llLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgSFRUUENv
b2tpZVN0b3JlOjpkZWxldGVBbGxDb29raWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBpZiAoIW1fb3duaW5nRGF0YVN0b3JlKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICBhdXRvJiBjb29raWVNYW5hZ2VyID0g
bV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkuY29va2llTWFuYWdlcigpOwogICAg
IGNvb2tpZU1hbmFnZXIuZGVsZXRlQWxsQ29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lv
bklEKCkpOwogICAgIC8vIEZJWE1FOiBUaGUgQ29tcGxldGlvbkhhbmRsZXIgc2hvdWxkIGJlIHBh
c3NlZCB0byBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMuCkBAIC0xMTUs
MTIgKzEyNiwxNiBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6ZGVsZXRlQWxsQ29va2llcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbgogCiB2b2lkIEhUVFBDb29raWVT
dG9yZTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0
UG9saWN5IHBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogeworICAgIGlmICghbV9vd25pbmdEYXRhU3RvcmUpCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgIGF1dG8mIGNvb2tpZU1hbmFnZXIgPSBtX293bmluZ0RhdGFT
dG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5jb29raWVNYW5hZ2VyKCk7CiAgICAgY29va2llTWFuYWdl
ci5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQo
KSwgcG9saWN5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgSFRUUENv
b2tpZVN0b3JlOjpmbHVzaENvb2tpZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogeworICAgIGlmICghbV9vd25pbmdEYXRhU3RvcmUpCisgICAgICAgIHJl
dHVybjsKICAgICBtX293bmluZ0RhdGFTdG9yZS0+Zmx1c2hDb29raWVzKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIApAQCAtMTQ1LDcgKzE2MCw3IEBAIHZvaWQgSFRUUENvb2tpZVN0
b3JlOjpyZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBtX29ic2Vy
dmVycy5hZGQoJm9ic2VydmVyKTsKIAotICAgIGlmIChtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2Vy
dmVyKQorICAgIGlmIChtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyIHx8ICFtX293bmluZ0Rh
dGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX29ic2VydmVkQ29va2ll
TWFuYWdlclByb3h5KTsKQEAgLTE2MCw3ICsxNzUsNyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6
dW5yZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBtX29ic2VydmVy
cy5yZW1vdmUob2JzZXJ2ZXIpOwogCi0gICAgaWYgKCFtX29ic2VydmVycy5jb21wdXRlc0VtcHR5
KCkpCisgICAgaWYgKCFtX29ic2VydmVycy5jb21wdXRlc0VtcHR5KCkgfHwgIW1fb3duaW5nRGF0
YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9vYnNlcnZlZENvb2tpZU1hbmFn
ZXJQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmUuaAppbmRleCBiYWU5MGJhZGU3N2I3NWFkNDQ5MjBmOTEwZTBiNDlkYWM0Y2JlNjQxLi42
NmYzNzA2YTc4NjBkN2RlYWE3NDA3MDJkNGRiYzIzY2JhZmNhYzAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCkBAIC02MCw3ICs2MCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29va2llcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYpOwogICAgIHZvaWQgY29va2llc0ZvclVS
TChXVEY6OlVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiYpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0Q29va2ll
cyhWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC03OCwxNCArNzgsMTIgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKCk7CiAKLSAgICB2b2lkIGZpbHRlckFwcEJvdW5k
Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgZmlsdGVyQXBw
Qm91bmRDb29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwogCiBwcml2YXRlOgogICAgIEhU
VFBDb29raWVTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmKTsKICAgICAKLSAgICAvLyBG
SVhNRTogVGhpcyBpcyBhIHJlZmVyZW5jZSBjeWNsZS4KLSAgICBSZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlPiBtX293bmluZ0RhdGFTdG9yZTsKLQorICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlPiBtX293bmluZ0RhdGFTdG9yZTsKICAgICBXZWFrSGFzaFNldDxPYnNlcnZl
cj4gbV9vYnNlcnZlcnM7CiAgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eT4gbV9vYnNlcnZlZENvb2tpZU1hbmFnZXJQcm94eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJ
V2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXI+IG1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6
YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4IGM5
MGMyOTkwNGE0YTU1MTVlYzA5ZjczYjJmYTQ2MDM0NmQyODRjMGYuLjc3NDEzNDVhMWJkOGIxMDU4
YTBmOWYyZDEzZDk3M2E2ZDM5NzgyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6
YXRpb25TZXNzaW9uLm1tCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpjb21wbGV0ZShOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlLCBOU0RhdGEg
KmQKIAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wYWdlLT53ZWJz
aXRlRGF0YVN0b3JlKCkuY29va2llU3RvcmUoKS5zZXRDb29raWVzKGNvb2tpZXMsIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNl
KSwgZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXSldICgp
IG11dGFibGUgeworICAgIG1fcGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNvb2tpZVN0b3JlKCku
c2V0Q29va2llcyhXVEZNb3ZlKGNvb2tpZXMpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIxY2Y3YzdhOWFhNWFlZDJjZDQxNzMx
ODFhZTFhNDJjZjAwNWMxMGEuLmE0NDgyZDliNmI4MWYzYWQ3MWUwMDdhZWZmNDMzMWJiYmZlNjEy
NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMS0wNi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIEJyZWFrIHJlZiBjeWNsZSBiZXR3ZWVuIEFQSTo6SFRU
UENvb2tpZVN0b3JlIGFuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAyMS0wNi0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEFsbG93IGxlZ2FjeSBTZWN1cml0eU9yaWdpbiBiZWhhdmlv
ciBmb3IgeC1hcHBsZS1xbC1pZDIgc2NoZW1lCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCmluZGV4IGQw
YjJlMjBhY2YwMzFmZjk0NWFiNGNmZjcyZmVjOGM4ZjU1ZWY5MjQuLmM5ZTZjZWFmMjM3NzgxMTVi
MmIyNDFlNTM5ZDI3NGUyZTUzNWI1OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCkBAIC0zNiw2
ICszNiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWFkeVRvQ29udGludWU7
CkBAIC0zNDMsNiArMzQ0LDE4IEBAIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBTZXNzaW9uU2V0
Q291bnQpCiAgICAgd2hpbGUgKGNvdW50U2Vzc2lvblNldHMoKSkgeyB9CiB9CiAKK1RFU1QoV0tX
ZWJzaXRlRGF0YVN0b3JlLCBSZWZlcmVuY2VDeWNsZSkKK3sKKyAgICBXZWFrT2JqQ1B0cjxXS1dl
YnNpdGVEYXRhU3RvcmU+IGRhdGFTdG9yZTsKKyAgICBXZWFrT2JqQ1B0cjxXS0hUVFBDb29raWVT
dG9yZT4gY29va2llU3RvcmU7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGRhdGFT
dG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CisgICAg
ICAgIGNvb2tpZVN0b3JlID0gW2RhdGFTdG9yZSBodHRwQ29va2llU3RvcmVdOworICAgIH0KKyAg
ICB3aGlsZSAoZGF0YVN0b3JlLmdldCgpIHx8IGNvb2tpZVN0b3JlLmdldCgpKQorICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworfQorCiBURVNUKFdlYktpdCwgQ2xl
YXJDdXN0b21EYXRhU3RvcmVOb1dlYlZpZXdzKQogewogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtj
b25uZWN0aW9uQ291bnQgPSAwXSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431579</attachid>
            <date>2021-06-16 11:53:12 -0700</date>
            <delta_ts>2021-06-21 11:45:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226992-20210616115311.patch</filename>
            <type>text/plain</type>
            <size>12628</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5YWRkMGYwMjJjOTVmNTdi
YmQ0YmQ0ZjAxNWVlMTg5ZTYwYTExMTAuLmZiODhkODYyNmY1MWFjMmQ1NmE0Mzc2ZDJmMTMxMmU1
MTk5NTMwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDYtMTYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBCcmVhayByZWYg
Y3ljbGUgYmV0d2VlbiBBUEk6OkhUVFBDb29raWVTdG9yZSBhbmQgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjY5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGFuIEFQSSB0ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OkhUVFBDb29r
aWVTdG9yZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6ZmlsdGVyQXBwQm91bmRD
b29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjb29raWVzKToKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpjb29raWVzRm9yVVJMKToKKyAgICAgICAgKEFQSTo6
SFRUUENvb2tpZVN0b3JlOjpzZXRDb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JlOjpkZWxldGVDb29raWUpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmRlbGV0
ZUFsbENvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OnNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmZsdXNoQ29v
a2llcyk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZlcik6
CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6dW5yZWdpc3Rlck9ic2VydmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGUpOgorCiAy
MDIxLTA2LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQ2xlYW4gdXAgQVBJOjpIVFRQQ29va2llU3RvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggNjRiMGRlMDlm
Yzk4ZDg1MDY0NWRhNjFlMWZkYjcxMjY1ODE4OGJjNC4uMGYxODJlY2U1MThlNzc3ZTQwYWZhNjU3
MjFkMDU2M2FhNThlNWMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIG5hbWVzcGFjZSBBUEkgewogCiBIVFRQQ29va2llU3RvcmU6OkhUVFBDb29raWVT
dG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCi0gICAgOiBt
X293bmluZ0RhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQorICAgIDogbV9vd25pbmdEYXRhU3Rv
cmUobWFrZVdlYWtQdHIod2Vic2l0ZURhdGFTdG9yZSkpCiB7CiB9CiAKQEAgLTU1LDQ1ICs1NSw1
MiBAQCBIVFRQQ29va2llU3RvcmU6On5IVFRQQ29va2llU3RvcmUoKQogICAgIEFTU0VSVCghbV9j
b29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcik7CiB9CiAKLXZvaWQgSFRUUENvb2tpZVN0b3JlOjpm
aWx0ZXJBcHBCb3VuZENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEhUVFBDb29raWVTdG9yZTo6ZmlsdGVyQXBwQm91bmRD
b29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYgY29va2llcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBhcHBCb3VuZENvb2tpZXM7CiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQotICAgIG1fb3duaW5nRGF0YVN0b3JlLT5nZXRBcHBCb3Vu
ZERvbWFpbnMoW2Nvb2tpZXMsIGFwcEJvdW5kQ29va2llcyA9IFdURk1vdmUoYXBwQm91bmRDb29r
aWVzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgIGlmICghbV9vd25pbmdEYXRhU3RvcmUpCisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgIG1fb3duaW5nRGF0YVN0b3Jl
LT5nZXRBcHBCb3VuZERvbWFpbnMoW2Nvb2tpZXMgPSBXVEZNb3ZlKGNvb2tpZXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZG9tYWlucykg
bXV0YWJsZSB7CisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGFwcEJvdW5kQ29va2ll
czsKICAgICAgICAgaWYgKCFkb21haW5zLmlzRW1wdHkoKSAmJiAhaXNGdWxsV2ViQnJvd3Nlcigp
KSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgY29va2llIDogV1RGTW92ZShjb29raWVzKSkgewogICAgICAgICAgICAg
ICAgIGlmIChkb21haW5zLmNvbnRhaW5zKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChjb29raWUuZG9tYWluKSkpCi0gICAgICAgICAgICAgICAgICAg
IGFwcEJvdW5kQ29va2llcy5hcHBlbmQoY29va2llKTsKKyAgICAgICAgICAgICAgICAgICAgYXBw
Qm91bmRDb29raWVzLmFwcGVuZChXVEZNb3ZlKGNvb2tpZSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFwcEJvdW5kQ29va2llcyA9IGNvb2tpZXM7CisgICAg
ICAgICAgICBhcHBCb3VuZENvb2tpZXMgPSBXVEZNb3ZlKGNvb2tpZXMpOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFwcEJvdW5kQ29va2llcykpOwogICAgIH0pOwogI2Vsc2UK
LSAgICBhcHBCb3VuZENvb2tpZXMgPSBjb29raWVzOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoYXBwQm91bmRDb29raWVzKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShj
b29raWVzKSk7CiAjZW5kaWYKIH0KIAogdm9pZCBIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogeworICAgIGlmICghbV9vd25pbmdEYXRhU3RvcmUpCisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8mIGNvb2tpZU1hbmFnZXIg
PSBtX293bmluZ0RhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5jb29raWVNYW5hZ2VyKCk7Ci0g
ICAgY29va2llTWFuYWdlci5nZXRBbGxDb29raWVzKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9u
SUQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiBjb29raWVzKSBtdXRhYmxlIHsKLSAgICAgICAgZmlsdGVyQXBwQm91bmRDb29r
aWVzKGNvb2tpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBjb29raWVNYW5h
Z2VyLmdldEFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJiBjb29raWVz
KSBtdXRhYmxlIHsKKyAgICAgICAgZmlsdGVyQXBwQm91bmRDb29raWVzKFdURk1vdmUoY29va2ll
cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KIAogdm9pZCBIVFRQ
Q29va2llU3RvcmU6OmNvb2tpZXNGb3JVUkwoV1RGOjpVUkwmJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CisgICAgaWYgKCFtX293bmluZ0RhdGFTdG9yZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byYgY29va2llTWFuYWdlciA9IG1fb3duaW5nRGF0YVN0
b3JlLT5uZXR3b3JrUHJvY2VzcygpLmNvb2tpZU1hbmFnZXIoKTsKICAgICBjb29raWVNYW5hZ2Vy
LmdldENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCB1cmwsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmIGNvb2tpZXMp
IG11dGFibGUgewotICAgICAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoY29va2llcywgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoV1RG
TW92ZShjb29raWVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQog
Ci12b2lkIEhUVFBDb29raWVTdG9yZTo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYgY29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBIVFRQQ29va2llU3RvcmU6OnNldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mJiBjb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgZmlsdGVyQXBwQm91bmRDb29raWVzKGNvb2tpZXMsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmRDb29raWVzKSBtdXRhYmxlIHsK
KyAgICBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoV1RGTW92ZShjb29raWVzKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZENvb2tpZXMpIG11dGFibGUgeworICAg
ICAgICBpZiAoIW1fb3duaW5nRGF0YVN0b3JlKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBhdXRvJiBjb29raWVNYW5hZ2VyID0gbV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNz
KCkuY29va2llTWFuYWdlcigpOwogICAgICAgICBjb29raWVNYW5hZ2VyLnNldENvb2tpZXMobV9v
d25pbmdEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBhcHBCb3VuZENvb2tpZXMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTEwMSwxMiArMTA4LDE2IEBAIHZvaWQgSFRU
UENvb2tpZVN0b3JlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBj
b29raWVzLCBDb21wbGV0CiAKIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBpZiAoIW1fb3duaW5nRGF0YVN0b3JlKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICBhdXRvJiBjb29raWVNYW5hZ2VyID0g
bV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkuY29va2llTWFuYWdlcigpOwogICAg
IGNvb2tpZU1hbmFnZXIuZGVsZXRlQ29va2llKG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQo
KSwgY29va2llLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgSFRUUENv
b2tpZVN0b3JlOjpkZWxldGVBbGxDb29raWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBpZiAoIW1fb3duaW5nRGF0YVN0b3JlKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICBhdXRvJiBjb29raWVNYW5hZ2VyID0g
bV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkuY29va2llTWFuYWdlcigpOwogICAg
IGNvb2tpZU1hbmFnZXIuZGVsZXRlQWxsQ29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lv
bklEKCkpOwogICAgIC8vIEZJWE1FOiBUaGUgQ29tcGxldGlvbkhhbmRsZXIgc2hvdWxkIGJlIHBh
c3NlZCB0byBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMuCkBAIC0xMTUs
MTIgKzEyNiwxNiBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6ZGVsZXRlQWxsQ29va2llcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbgogCiB2b2lkIEhUVFBDb29raWVT
dG9yZTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0
UG9saWN5IHBvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogeworICAgIGlmICghbV9vd25pbmdEYXRhU3RvcmUpCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgIGF1dG8mIGNvb2tpZU1hbmFnZXIgPSBtX293bmluZ0RhdGFT
dG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5jb29raWVNYW5hZ2VyKCk7CiAgICAgY29va2llTWFuYWdl
ci5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KG1fb3duaW5nRGF0YVN0b3JlLT5zZXNzaW9uSUQo
KSwgcG9saWN5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgSFRUUENv
b2tpZVN0b3JlOjpmbHVzaENvb2tpZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogeworICAgIGlmICghbV9vd25pbmdEYXRhU3RvcmUpCisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIG1fb3duaW5nRGF0YVN0b3JlLT5mbHVzaENv
b2tpZXMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCkBAIC0xNDUsNyArMTYwLDcg
QEAgdm9pZCBIVFRQQ29va2llU3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2Vy
dmVyKQogewogICAgIG1fb2JzZXJ2ZXJzLmFkZCgmb2JzZXJ2ZXIpOwogCi0gICAgaWYgKG1fY29v
a2llTWFuYWdlclByb3h5T2JzZXJ2ZXIpCisgICAgaWYgKG1fY29va2llTWFuYWdlclByb3h5T2Jz
ZXJ2ZXIgfHwgIW1fb3duaW5nRGF0YVN0b3JlKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NF
UlQoIW1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHkpOwpAQCAtMTYzLDcgKzE3OCw3IEBAIHZv
aWQgSFRUUENvb2tpZVN0b3JlOjp1bnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVy
KQogICAgIGlmICghbV9vYnNlcnZlcnMuY29tcHV0ZXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9vYnNlcnZlZENvb2tpZU1hbmFnZXJQcm94eSkKKyAgICBpZiAobV9vYnNl
cnZlZENvb2tpZU1hbmFnZXJQcm94eSAmJiBtX293bmluZ0RhdGFTdG9yZSkKICAgICAgICAgbV9v
YnNlcnZlZENvb2tpZU1hbmFnZXJQcm94eS0+dW5yZWdpc3Rlck9ic2VydmVyKG1fb3duaW5nRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSwgKm1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXIpOwogCiAg
ICAgbV9vYnNlcnZlZENvb2tpZU1hbmFnZXJQcm94eSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKaW5kZXggYmFlOTBiYWRl
NzdiNzVhZDQ0OTIwZjkxMGUwYjQ5ZGFjNGNiZTY0MS4uNjZmMzcwNmE3ODYwZDdkZWFhNzQwNzAy
ZDRkYmMyM2NiYWZjYWMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNvb2tpZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpPiYmKTsKICAgICB2b2lkIGNvb2tpZXNGb3JVUkwoV1RGOjpVUkwmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7Ci0gICAgdm9pZCBz
ZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBXZWJDb3JlOjpDb29raWUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIAogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtNzgsMTQgKzc4LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29va2llc0RpZENo
YW5nZSgpOwogCi0gICAgdm9pZCBmaWx0ZXJBcHBCb3VuZENvb2tpZXMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiYpPiYmKTsKKyAgICB2b2lkIGZpbHRlckFwcEJvdW5kQ29va2llcyhWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiYpPiYmKTsKIAogcHJpdmF0ZToKICAgICBIVFRQQ29va2llU3RvcmUoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgYSByZWZlcmVu
Y2UgY3ljbGUuCi0gICAgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gbV9vd25pbmdEYXRh
U3RvcmU7Ci0KKyAgICBXZWFrUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gbV9vd25pbmdE
YXRhU3RvcmU7CiAgICAgV2Vha0hhc2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogICAgIFdl
YWtQdHI8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+IG1fb2JzZXJ2ZWRDb29raWVNYW5h
Z2VyUHJveHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9i
c2VydmVyPiBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCBjOTBjMjk5MDRhNGE1NTE1ZWMwOWY3M2Iy
ZmE0NjAzNDZkMjg0YzBmLi43NzQxMzQ1YTFiZDhiMTA1OGEwZjlmMmQxM2Q5NzNhNmQzOTc4MjU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRp
b24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQpAQCAtMjM1
LDcgKzIzNSw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGUoTlNIVFRQ
VVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSwgTlNEYXRhICpkCiAKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fcGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNvb2tpZVN0
b3JlKCkuc2V0Q29va2llcyhjb29raWVzLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBhZG9wdE5TKFtbTlNE
YXRhIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pXSAoKSBtdXRhYmxlIHsKKyAgICBtX3BhZ2Ut
PndlYnNpdGVEYXRhU3RvcmUoKS5jb29raWVTdG9yZSgpLnNldENvb2tpZXMoV1RGTW92ZShjb29r
aWVzKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXNwb25zZSA9IFdU
Rk1vdmUocmVzcG9uc2UpLCBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhE
YXRhOmRhdGFdKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBiMWNmN2M3YTlhYTVhZWQyY2Q0MTczMTgxYWUxYTQyY2YwMDVjMTBhLi5hNDQ4
MmQ5YjZiODFmM2FkNzFlMDA3YWVmZjQzMzFiYmJmZTYxMjc5IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDYt
MTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBCcmVhayByZWYgY3ljbGUgYmV0d2VlbiBBUEk6OkhUVFBDb29raWVTdG9yZSBhbmQgV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjY5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0
YXN0b3JlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDYtMTUg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBB
bGxvdyBsZWdhY3kgU2VjdXJpdHlPcmlnaW4gYmVoYXZpb3IgZm9yIHgtYXBwbGUtcWwtaWQyIHNj
aGVtZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYnNpdGVEYXRhc3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQppbmRleCBkMGIyZTIwYWNmMDMxZmY5NDVhYjRjZmY3
MmZlYzhjOGY1NWVmOTI0Li5jOWU2Y2VhZjIzNzc4MTE1YjJiMjQxZTUzOWQyNzRlMmU1MzViNTk3
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
c2l0ZURhdGFzdG9yZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8V2Vi
S2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQu
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgor
I2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogc3RhdGljIGJvb2wgcmVhZHlUb0NvbnRpbnVlOwpAQCAtMzQzLDYgKzM0NCwxOCBAQCBU
RVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgU2Vzc2lvblNldENvdW50KQogICAgIHdoaWxlIChjb3Vu
dFNlc3Npb25TZXRzKCkpIHsgfQogfQogCitURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVmZXJl
bmNlQ3ljbGUpCit7CisgICAgV2Vha09iakNQdHI8V0tXZWJzaXRlRGF0YVN0b3JlPiBkYXRhU3Rv
cmU7CisgICAgV2Vha09iakNQdHI8V0tIVFRQQ29va2llU3RvcmU+IGNvb2tpZVN0b3JlOworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOworICAgICAgICBjb29raWVTdG9yZSA9IFtkYXRh
U3RvcmUgaHR0cENvb2tpZVN0b3JlXTsKKyAgICB9CisgICAgd2hpbGUgKGRhdGFTdG9yZS5nZXQo
KSB8fCBjb29raWVTdG9yZS5nZXQoKSkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3Bp
blJ1bkxvb3AoKTsKK30KKwogVEVTVChXZWJLaXQsIENsZWFyQ3VzdG9tRGF0YVN0b3JlTm9XZWJW
aWV3cykKIHsKICAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0gKENv
bm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7Cg==
</data>
<flag name="review"
          id="453380"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>