<?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>231171</bug_id>
          
          <creation_ts>2021-10-04 08:09:48 -0700</creation_ts>
          <short_desc>Bind the number of WebRTC sockets opened per process</short_desc>
          <delta_ts>2021-10-28 13:33:22 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ggaren</cc>
    
    <cc>niw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1800060</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-04 08:09:48 -0700</bug_when>
    <thetext>Bind the number of WebRTC sockets opened per process as a healthy measure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800063</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-04 08:15:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/83610575&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800064</commentid>
    <comment_count>2</comment_count>
      <attachid>440064</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-04 08:18:22 -0700</bug_when>
    <thetext>Created attachment 440064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800108</commentid>
    <comment_count>3</comment_count>
      <attachid>440064</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-04 10:19:42 -0700</bug_when>
    <thetext>Comment on attachment 440064
Patch

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

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.h:156
&gt; +    StdMap&lt;WebCore::LibWebRTCSocketIdentifier, std::unique_ptr&lt;Socket&gt;, SocketComparator&gt; m_sockets;

Can we use ListHashSet instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800439</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-05 00:57:07 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 440064 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440064&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.h:156
&gt; &gt; +    StdMap&lt;WebCore::LibWebRTCSocketIdentifier, std::unique_ptr&lt;Socket&gt;, SocketComparator&gt; m_sockets;
&gt; 
&gt; Can we use ListHashSet instead?

We could, I think StdMap is closer to what we want: a map (we very often query the map by ID) which happens to have a key order (useful to close the socket with a given order).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800500</commentid>
    <comment_count>5</comment_count>
      <attachid>440064</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-05 03:42:09 -0700</bug_when>
    <thetext>Comment on attachment 440064
Patch

Marking it as r? Alex, let me know if you still prefer to use ListHashSet (and why), I can migrate to it pretty easily in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801104</commentid>
    <comment_count>6</comment_count>
      <attachid>440064</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-06 08:47:01 -0700</bug_when>
    <thetext>Comment on attachment 440064
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.h:156
&gt;&gt;&gt; +    StdMap&lt;WebCore::LibWebRTCSocketIdentifier, std::unique_ptr&lt;Socket&gt;, SocketComparator&gt; m_sockets;
&gt;&gt; 
&gt;&gt; Can we use ListHashSet instead?
&gt; 
&gt; We could, I think StdMap is closer to what we want: a map (we very often query the map by ID) which happens to have a key order (useful to close the socket with a given order).

I think ListHashSet also does what you want and it uses fastMalloc.  StdMap seems to only be used when we need to allow all possible keys (including 0 and -1) but that isn&apos;t the case here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801960</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-08 00:53:41 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Comment on attachment 440064 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440064&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.h:156
&gt; &gt;&gt;&gt; +    StdMap&lt;WebCore::LibWebRTCSocketIdentifier, std::unique_ptr&lt;Socket&gt;, SocketComparator&gt; m_sockets;
&gt; &gt;&gt; 
&gt; &gt;&gt; Can we use ListHashSet instead?
&gt; &gt; 
&gt; &gt; We could, I think StdMap is closer to what we want: a map (we very often query the map by ID) which happens to have a key order (useful to close the socket with a given order).
&gt; 
&gt; I think ListHashSet also does what you want and it uses fastMalloc.  StdMap
&gt; seems to only be used when we need to allow all possible keys (including 0
&gt; and -1) but that isn&apos;t the case here.

ListHashSet in that case would require to use a std::pair, provide a specific Hash...
StdMap is using FastAllocator so we should be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801970</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-08 01:50:29 -0700</bug_when>
    <thetext>Patch 440064 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801980</commentid>
    <comment_count>9</comment_count>
      <attachid>440588</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-08 03:19:01 -0700</bug_when>
    <thetext>Created attachment 440588
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802004</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-08 05:30:09 -0700</bug_when>
    <thetext>Committed r283797 (242690@main): &lt;https://commits.webkit.org/242690@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440588.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806396</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-10-19 16:22:26 -0700</bug_when>
    <thetext>&gt; ListHashSet in that case would require to use a std::pair, provide a
&gt; specific Hash...
&gt; StdMap is using FastAllocator so we should be good.

But you wrote a custom comparator for StdMap! :P

An additional benefit of ListHashSet is that you don&apos;t have to allocate each bucket separately, which StdMap still will.

Anyway, this is not perf sensitive code, so it is fine -- just trying to align our thinking a bit more for future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809810</commentid>
    <comment_count>12</comment_count>
      <attachid>440064</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-28 13:33:22 -0700</bug_when>
    <thetext>Comment on attachment 440064
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.h:156
&gt;&gt;&gt;&gt;&gt; +    StdMap&lt;WebCore::LibWebRTCSocketIdentifier, std::unique_ptr&lt;Socket&gt;, SocketComparator&gt; m_sockets;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Can we use ListHashSet instead?
&gt;&gt;&gt; 
&gt;&gt;&gt; We could, I think StdMap is closer to what we want: a map (we very often query the map by ID) which happens to have a key order (useful to close the socket with a given order).
&gt;&gt; 
&gt;&gt; I think ListHashSet also does what you want and it uses fastMalloc.  StdMap seems to only be used when we need to allow all possible keys (including 0 and -1) but that isn&apos;t the case here.
&gt; 
&gt; ListHashSet in that case would require to use a std::pair, provide a specific Hash...
&gt; StdMap is using FastAllocator so we should be good.

Alex, I don’t think your concept expressed here for when we’d use std::map is quote right. You said we would use it when we need to allow all possible keys. If the issue is truly only that we need to use a scalar key but allow all possible keys, we can solve that easily with HashMap, using a key that is a structure that contains both the scalar and an empty/deleted indicator, and it should still be quite efficient. I think it’s a mistake to dump hash tables entirely just because our hash table implementation is optimized for cases where we can reserve an empty and deleted value.

I would suggest using std::map, a tree rather than a hash table, when we need an ordered collection, ordered by the keys. That’s something a tree does well but a hash table does not.

I am not so sure std::map here is great. Does indeed sound like the kind of thing we use ListHashSet for, but I guess we made the &quot;ergonomics&quot; of that too inelegant for a case like this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440064</attachid>
            <date>2021-10-04 08:18:22 -0700</date>
            <delta_ts>2021-10-08 03:18:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231171-20211004171821.patch</filename>
            <type>text/plain</type>
            <size>8487</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmYjFjZjFkMjY1NzAwZTQ4
MmE0OTM3MDgyNDczMTNjNjAyYmNmOTYuLjFiYmQzYzVkMTQ1YzkwNDhjMGRkODcyOGFiOTFkYjZm
NmQ4N2RlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTAtMDQgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEJpbmQgdGhlIG51bWJlciBvZiBX
ZWJSVEMgc29ja2V0cyBvcGVuZWQgcGVyIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pZ3JhdGUgZnJvbSBIYXNoTWFwIHRvIFN0ZE1hcCBz
byB0aGF0IHdlIGNhbiBrZWVwIHRoZSBvcmRlciBiYXNlZCBvbiBzb2NrZXQgaWRlbnRpZmllcnMu
CisgICAgICAgIFRha2UgYmVuZWZpdCBvZiB0aGUgb3JkZXJpbmcgc28gdGhhdCwgYWJvdmUgYSBj
ZXJ0YWluIHNpemUsIHdlIGdldCB0aGUgb2xkZXN0IHNvY2tldCwgY2xvc2UgaXQgYW5kIHJlbW92
ZSBpdCBmcm9tIHRoZSBtYXAuCisgICAgICAgIFdlIHNldCB0aGUgbWF4aW11bSBzaXplIHRvIDI1
NiBzb2NrZXRzIHBlciBwcm9jZXNzLgorICAgICAgICBGaXggYSBwb3RlbnRpYWwgYnVnIGluIE5l
dHdvcmtSVENUQ1BTb2NrZXRDb2NvYSB0byBlbnN1cmUgd2UgcmVtb3ZlIHRoZSBzb2NrZXQgZnJv
bSB0aGUgbWFwIGV2ZW4gaWYgdGhlIG53IGNvbm5lY3Rpb24gaXMgbm90IGxpdmUuCisgICAgICAg
IE1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1RDUFNvY2tldENvY29hLm1tOgorCiAyMDIxLTEwLTA0ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgVm9yYmlzIGRlY29kZXIgY2FuJ3QgYmUgaW5zdGFu
dGlhdGVkIC0gZm9sbG93IHVwIG9uIEJ1ZyAyMzA3NDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4
IGExYzQ1MmQ3N2M3YjA0M2Q1ODczY2MxNzIyZmU0MzNlOWNiZjkyNzMuLjY0YzJhOGE5MTQ5ZDQz
MGY1ZTg2YmMzODIzMjFmYTgwNDI2NjMwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtMTM3
LDcgKzEzNyw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQoTGliV2Vi
UlRDU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6CiB7CiAgICAgQVNTRVJUKG1fcnRj
TmV0d29ya1RocmVhZC5Jc0N1cnJlbnQoKSk7CiAgICAgaWYgKCFzb2NrZXQpIHsKLSAgICAgICAg
UlRDX1JFTEVBU0VfTE9HX0VSUk9SKCJjcmVhdGVTb2NrZXQgd2l0aCAldSBzb2NrZXRzIGlzIHVu
YWJsZSB0byBjcmVhdGUgYSBuZXcgc29ja2V0IiwgbV9zb2NrZXRzLnNpemUoKSk7CisgICAgICAg
IFJUQ19SRUxFQVNFX0xPR19FUlJPUigiY3JlYXRlU29ja2V0IHdpdGggJWx1IHNvY2tldHMgaXMg
dW5hYmxlIHRvIGNyZWF0ZSBhIG5ldyBzb2NrZXQiLCBtX3NvY2tldHMuc2l6ZSgpKTsKICAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDTmV0d29yazo6U2lnbmFsQ2xv
c2UoaWRlbnRpZmllciwgMSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ2LDQ5
ICsyNDYsNjIgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9u
KExpYldlYlJUQ1NvY2tldElkZW50aWZpZXIgaWRlbnRpZmkKIHZvaWQgTmV0d29ya1JUQ1Byb3Zp
ZGVyOjpzZW5kVG9Tb2NrZXQoTGliV2ViUlRDU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIFJUQ05ldHdvcms6OlNvY2tldEFkZHJlc3Mm
JiBhZGRyZXNzLCBSVENQYWNrZXRPcHRpb25zJiYgb3B0aW9ucykKIHsKICAgICBBU1NFUlQobV9y
dGNOZXR3b3JrVGhyZWFkLklzQ3VycmVudCgpKTsKLSAgICBhdXRvKiBzb2NrZXQgPSBtX3NvY2tl
dHMuZ2V0KGlkZW50aWZpZXIpOwotICAgIGlmICghc29ja2V0KQorICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX3NvY2tldHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9zb2Nr
ZXRzLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBzb2NrZXQtPnNlbmRUbyhkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCksIGFkZHJlc3MudmFsdWUsIG9wdGlvbnMub3B0aW9ucyk7CisgICAg
aXRlcmF0b3ItPnNlY29uZC0+c2VuZFRvKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgYWRkcmVz
cy52YWx1ZSwgb3B0aW9ucy5vcHRpb25zKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6
OmNsb3NlU29ja2V0KExpYldlYlJUQ1NvY2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQobV9ydGNOZXR3b3JrVGhyZWFkLklzQ3VycmVudCgpKTsKLSAgICBhdXRvKiBzb2Nr
ZXQgPSBtX3NvY2tldHMuZ2V0KGlkZW50aWZpZXIpOwotICAgIGlmICghc29ja2V0KQorICAgIGF1
dG8gaXRlcmF0b3IgPSBtX3NvY2tldHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0
b3IgPT0gbV9zb2NrZXRzLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgc29ja2V0LT5jbG9z
ZSgpOworICAgIGl0ZXJhdG9yLT5zZWNvbmQtPmNsb3NlKCk7CiB9CiAKIHZvaWQgTmV0d29ya1JU
Q1Byb3ZpZGVyOjpkb1NvY2tldFRhc2tPblJUQ05ldHdvcmtUaHJlYWQoTGliV2ViUlRDU29ja2V0
SWRlbnRpZmllciBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFNvY2tldCYpPiYmIGNhbGxiYWNr
KQogewogICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBz
b2NrZXQgPSBtX3NvY2tldHMuZ2V0KGlkZW50aWZpZXIpKQotICAgICAgICAgICAgY2FsbGJhY2so
KnNvY2tldCk7CisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3NvY2tldHMuZmluZChpZGVudGlm
aWVyKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fc29ja2V0cy5lbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2FsbGJhY2soKml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIH0p
OwogfQogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6c2V0U29ja2V0T3B0aW9uKExpYldlYlJU
Q1NvY2tldElkZW50aWZpZXIgaWRlbnRpZmllciwgaW50IG9wdGlvbiwgaW50IHZhbHVlKQogewog
ICAgIEFTU0VSVChtX3J0Y05ldHdvcmtUaHJlYWQuSXNDdXJyZW50KCkpOwotICAgIGF1dG8qIHNv
Y2tldCA9IG1fc29ja2V0cy5nZXQoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFzb2NrZXQpCisgICAg
YXV0byBpdGVyYXRvciA9IG1fc29ja2V0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVy
YXRvciA9PSBtX3NvY2tldHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzb2NrZXQtPnNl
dE9wdGlvbihvcHRpb24sIHZhbHVlKTsKKyAgICBpdGVyYXRvci0+c2Vjb25kLT5zZXRPcHRpb24o
b3B0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjphZGRTb2NrZXQo
TGliV2ViUlRDU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U29j
a2V0PiYmIHNvY2tldCkKIHsKICAgICBBU1NFUlQobV9ydGNOZXR3b3JrVGhyZWFkLklzQ3VycmVu
dCgpKTsKLSAgICBtX3NvY2tldHMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoc29ja2V0KSk7Cisg
ICAgQVNTRVJUKHNvY2tldCk7CisgICAgbV9zb2NrZXRzLmVtcGxhY2UoaWRlbnRpZmllciwgV1RG
TW92ZShzb2NrZXQpKTsKKyAgICBpZiAobV9zb2NrZXRzLnNpemUoKSA+IG1heFNvY2tldHMpIHsK
KyAgICAgICAgYXV0byBzb2NrZXRJZGVudGlmaWVyVG9DbG9zZSA9IG1fc29ja2V0cy5iZWdpbigp
LT5maXJzdDsKKyAgICAgICAgY2xvc2VTb2NrZXQoc29ja2V0SWRlbnRpZmllclRvQ2xvc2UpOwor
ICAgICAgICBBU1NFUlQobV9zb2NrZXRzLmZpbmQoc29ja2V0SWRlbnRpZmllclRvQ2xvc2UpID09
IG1fc29ja2V0cy5lbmQoKSk7CisgICAgfQogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JU
Q1Byb3ZpZGVyOjpTb2NrZXQ+IE5ldHdvcmtSVENQcm92aWRlcjo6dGFrZVNvY2tldChMaWJXZWJS
VENTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKG1fcnRjTmV0d29y
a1RocmVhZC5Jc0N1cnJlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc29ja2V0cy50YWtlKGlkZW50aWZp
ZXIpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3NvY2tldHMuZmluZChpZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9zb2NrZXRzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gc29ja2V0ID0gV1RGTW92ZShpdGVyYXRvci0+c2Vjb25kKTsKKyAgICBt
X3NvY2tldHMuZXJhc2UoaXRlcmF0b3IpOworICAgIHJldHVybiBzb2NrZXQ7CiB9CiAKIHZvaWQg
TmV0d29ya1JUQ1Byb3ZpZGVyOjpuZXdDb25uZWN0aW9uKFNvY2tldCYgc2VydmVyU29ja2V0LCBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4mJiBuZXdTb2NrZXQpCkBAIC0z
NzIsMTEgKzM4NSwxMSBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y2xvc2VMaXN0ZW5pbmdT
b2NrZXRzKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZAogICAgIGNhbGxPblJUQ05l
dHdvcmtUaHJlYWQoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIFZlY3RvcjxMaWJXZWJSVENTb2NrZXRJZGVu
dGlmaWVyPiBsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVyczsKICAgICAgICAgZm9yIChhdXRvJiBr
ZXlWYWx1ZSA6IG1fc29ja2V0cykgewotICAgICAgICAgICAgaWYgKGtleVZhbHVlLnZhbHVlLT50
eXBlKCkgPT0gU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1ApCi0gICAgICAgICAgICAgICAgbGlzdGVu
aW5nU29ja2V0SWRlbnRpZmllcnMuYXBwZW5kKGtleVZhbHVlLmtleSk7CisgICAgICAgICAgICBp
ZiAoa2V5VmFsdWUuc2Vjb25kLT50eXBlKCkgPT0gU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1ApCisg
ICAgICAgICAgICAgICAgbGlzdGVuaW5nU29ja2V0SWRlbnRpZmllcnMuYXBwZW5kKGtleVZhbHVl
LmZpcnN0KTsKICAgICAgICAgfQogICAgICAgICBmb3IgKGF1dG8gaWQgOiBsaXN0ZW5pbmdTb2Nr
ZXRJZGVudGlmaWVycykKLSAgICAgICAgICAgIG1fc29ja2V0cy5nZXQoaWQpLT5jbG9zZSgpOwor
ICAgICAgICAgICAgbV9zb2NrZXRzW2lkXS0+Y2xvc2UoKTsKIAogICAgICAgICBjYWxsT25NYWlu
UnVuTG9vcChbcHJvdmlkZXIgPSBSZWYgeyAqdGhpcyB9LCBsaXN0ZW5pbmdTb2NrZXRJZGVudGlm
aWVycyA9IFdURk1vdmUobGlzdGVuaW5nU29ja2V0SWRlbnRpZmllcnMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICBpZiAocHJv
dmlkZXItPm1fY29ubmVjdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCAwOWEyMDU2OTdkNzNk
YTg3NGM0YWM5MTEyNDYxZDJhZGYxNjRkYTI4Li5mNWRiNzA2YzQ0NTgwMjEwODdmOTU5OTY2OWRm
YTdkOWY4Mzc5NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgPHdlYnJ0Yy9wMnAvYmFzZS9iYXNpY19wYWNrZXRfc29ja2V0X2ZhY3RvcnkuaD4KICNpbmNs
dWRlIDx3ZWJydGMvcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90Lmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjMsNiArNjQsMTMgQEAgY2xhc3Mg
TmV0d29ya1JUQ1Jlc29sdmVyOwogY2xhc3MgTmV0d29ya1Nlc3Npb247CiBzdHJ1Y3QgUlRDUGFj
a2V0T3B0aW9uczsKIAorc3RydWN0IFNvY2tldENvbXBhcmF0b3IgeworICAgIGJvb2wgb3BlcmF0
b3IoKShjb25zdCBXZWJDb3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJiBhLCBjb25zdCBX
ZWJDb3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJiBiKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGEudG9VSW50NjQoKSA8IGIudG9VSW50NjQoKTsKKyAgICB9Cit9OworCiBjbGFz
cyBOZXR3b3JrUlRDUHJvdmlkZXIgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwgcHVibGlj
IElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrUlRDUHJvdmlkZXI+IGNyZWF0ZShOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKQEAgLTE0Miw4ICsxNTAsMTAgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyRnJvbVBh
Z2VJZGVudGlmaWVyKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBtYXhTb2NrZXRzIHsgMjU2IH07CisKICAgICBIYXNoTWFwPExp
YldlYlJUQ1Jlc29sdmVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNv
bHZlcj4+IG1fcmVzb2x2ZXJzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6TGliV2ViUlRDU29ja2V0
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNvY2tldD4+IG1fc29ja2V0czsKKyAgICBTdGRN
YXA8V2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNv
Y2tldD4sIFNvY2tldENvbXBhcmF0b3I+IG1fc29ja2V0czsKICAgICBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyogbV9jb25uZWN0aW9uOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1f
aXBjQ29ubmVjdGlvbjsKICAgICBib29sIG1faXNTdGFydGVkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1RDUFNvY2tl
dENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1RDUFNvY2tldENvY29hLm1tCmluZGV4IDczNDRlNWRhOTZmMjE2YmZkNDQ3ZTQzZjIxZDEwZmJk
M2E0NzA0YzIuLjVlMmRlOWM5ZjczMmMxYzAwNDZkYzliZDRlNWI3Y2I4ZGZhMTYwMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENUQ1BT
b2NrZXRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDVENQU29ja2V0Q29jb2EubW0KQEAgLTEzNiw5ICsxMzYsOCBAQCBOZXR3b3JrUlRD
VENQU29ja2V0Q29jb2E6Ok5ldHdvcmtSVENUQ1BTb2NrZXRDb2NvYShMaWJXZWJSVENTb2NrZXRJ
ZGVudGlmaWVyIGlkZQogCiB2b2lkIE5ldHdvcmtSVENUQ1BTb2NrZXRDb2NvYTo6Y2xvc2UoKQog
ewotICAgIGlmICghbV9ud0Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBud19jb25u
ZWN0aW9uX2NhbmNlbChtX253Q29ubmVjdGlvbi5nZXQoKSk7CisgICAgaWYgKG1fbndDb25uZWN0
aW9uKQorICAgICAgICBud19jb25uZWN0aW9uX2NhbmNlbChtX253Q29ubmVjdGlvbi5nZXQoKSk7
CiAgICAgbV9ydGNQcm92aWRlci50YWtlU29ja2V0KG1faWRlbnRpZmllcik7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440588</attachid>
            <date>2021-10-08 03:19:01 -0700</date>
            <delta_ts>2021-10-08 05:30:10 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-231171-20211008121859.patch</filename>
            <type>text/plain</type>
            <size>8936</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYxNjBhNmRjMjA0Mzk4ZjZi
OWFjZTdkNDZjZmMyOTBkNWQ1ODIxOTkuLmUzNGM5OTJhYjNkODFhYmI1MTRiMjc1ZmJjZTE2NzFm
OTQ1OWFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTAtMDggIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEJpbmQgdGhlIG51bWJlciBvZiBX
ZWJSVEMgc29ja2V0cyBvcGVuZWQgcGVyIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTWlncmF0ZSBmcm9tIEhhc2hNYXAgdG8gU3RkTWFw
IHNvIHRoYXQgd2UgY2FuIGtlZXAgdGhlIG9yZGVyIGJhc2VkIG9uIHNvY2tldCBpZGVudGlmaWVy
cy4KKyAgICAgICAgVGFrZSBiZW5lZml0IG9mIHRoZSBvcmRlcmluZyBzbyB0aGF0LCBhYm92ZSBh
IGNlcnRhaW4gc2l6ZSwgd2UgZ2V0IHRoZSBvbGRlc3Qgc29ja2V0LCBjbG9zZSBpdCBhbmQgcmVt
b3ZlIGl0IGZyb20gdGhlIG1hcC4KKyAgICAgICAgV2Ugc2V0IHRoZSBtYXhpbXVtIHNpemUgdG8g
MjU2IHNvY2tldHMgcGVyIHByb2Nlc3MuCisgICAgICAgIEZpeCBhIHBvdGVudGlhbCBidWcgaW4g
TmV0d29ya1JUQ1RDUFNvY2tldENvY29hIHRvIGVuc3VyZSB3ZSByZW1vdmUgdGhlIHNvY2tldCBm
cm9tIHRoZSBtYXAgZXZlbiBpZiB0aGUgbncgY29ubmVjdGlvbiBpcyBub3QgbGl2ZS4KKyAgICAg
ICAgTWFudWFsbHkgdGVzdGVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDVENQU29ja2V0Q29jb2EubW06CisKIDIwMjEtMTAtMDcgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwcm9jZXNzaW5nIHB1
c2ggZXZlbnRzIHdpdGhvdXQgc2VydmljZSB3b3JrZXIgY2xpZW50cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5j
cHAKaW5kZXggMjM4NzExMGY3MDYyYzEzZmEwY2RiNTRkNGUzYzZjNWI1NjM2YzEyYi4uYjc4ODEx
ZDk5MzY3YjU4MGViMWY0MDAxZTk1M2YzNDJlZGIxY2Q3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
CkBAIC0xMjcsOSArMTI3LDkgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNsb3NlKCkKIAog
ICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdKCkgewogICAgICAgICBhdXRvIHNvY2tl
dHMgPSBXVEZNb3ZlKG1fc29ja2V0cyk7Ci0gICAgICAgIGZvciAoYXV0byYgc29ja2V0IDogbV9z
b2NrZXRzLnZhbHVlcygpKQotICAgICAgICAgICAgc29ja2V0LT5jbG9zZSgpOwotICAgICAgICBB
U1NFUlQoc29ja2V0cy5pc0VtcHR5KCkpOworICAgICAgICBmb3IgKGF1dG8mIHNvY2tldCA6IG1f
c29ja2V0cykKKyAgICAgICAgICAgIHNvY2tldC5zZWNvbmQtPmNsb3NlKCk7CisgICAgICAgIEFT
U0VSVChzb2NrZXRzLmVtcHR5KCkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBtX2F0
dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVycy5jbGVhcigpOwogI2VuZGlmCkBAIC0xNDAsNyArMTQw
LDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNvY2tldChMaWJXZWJSVENTb2Nr
ZXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDoKIHsKICAgICBBU1NFUlQobV9ydGNOZXR3b3Jr
VGhyZWFkLklzQ3VycmVudCgpKTsKICAgICBpZiAoIXNvY2tldCkgewotICAgICAgICBSVENfUkVM
RUFTRV9MT0dfRVJST1IoImNyZWF0ZVNvY2tldCB3aXRoICV1IHNvY2tldHMgaXMgdW5hYmxlIHRv
IGNyZWF0ZSBhIG5ldyBzb2NrZXQiLCBtX3NvY2tldHMuc2l6ZSgpKTsKKyAgICAgICAgUlRDX1JF
TEVBU0VfTE9HX0VSUk9SKCJjcmVhdGVTb2NrZXQgd2l0aCAlbHUgc29ja2V0cyBpcyB1bmFibGUg
dG8gY3JlYXRlIGEgbmV3IHNvY2tldCIsIG1fc29ja2V0cy5zaXplKCkpOwogICAgICAgICBjb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENOZXR3b3JrOjpTaWduYWxDbG9zZShpZGVu
dGlmaWVyLCAxKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDksNDkgKzI0OSw2
MiBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6d3JhcE5ld1RDUENvbm5lY3Rpb24oTGliV2Vi
UlRDU29ja2V0SWRlbnRpZmllciBpZGVudGlmaQogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OnNl
bmRUb1NvY2tldChMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgUlRDTmV0d29yazo6U29ja2V0QWRkcmVzcyYmIGFkZHJl
c3MsIFJUQ1BhY2tldE9wdGlvbnMmJiBvcHRpb25zKQogewogICAgIEFTU0VSVChtX3J0Y05ldHdv
cmtUaHJlYWQuSXNDdXJyZW50KCkpOwotICAgIGF1dG8qIHNvY2tldCA9IG1fc29ja2V0cy5nZXQo
aWRlbnRpZmllcik7Ci0gICAgaWYgKCFzb2NrZXQpCisgICAgYXV0byBpdGVyYXRvciA9IG1fc29j
a2V0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3NvY2tldHMuZW5k
KCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIHNvY2tldC0+c2VuZFRvKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSwgYWRkcmVzcy52YWx1ZSwgb3B0aW9ucy5vcHRpb25zKTsKKyAgICBpdGVyYXRv
ci0+c2Vjb25kLT5zZW5kVG8oZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBhZGRyZXNzLnZhbHVl
LCBvcHRpb25zLm9wdGlvbnMpOwogfQogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y2xvc2VT
b2NrZXQoTGliV2ViUlRDU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VS
VChtX3J0Y05ldHdvcmtUaHJlYWQuSXNDdXJyZW50KCkpOwotICAgIGF1dG8qIHNvY2tldCA9IG1f
c29ja2V0cy5nZXQoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFzb2NrZXQpCisgICAgYXV0byBpdGVy
YXRvciA9IG1fc29ja2V0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X3NvY2tldHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzb2NrZXQtPmNsb3NlKCk7Cisg
ICAgaXRlcmF0b3ItPnNlY29uZC0+Y2xvc2UoKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlk
ZXI6OmRvU29ja2V0VGFza09uUlRDTmV0d29ya1RocmVhZChMaWJXZWJSVENTb2NrZXRJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoU29ja2V0Jik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIHNvY2tldCA9
IG1fc29ja2V0cy5nZXQoaWRlbnRpZmllcikpCi0gICAgICAgICAgICBjYWxsYmFjaygqc29ja2V0
KTsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fc29ja2V0cy5maW5kKGlkZW50aWZpZXIpOwor
ICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9zb2NrZXRzLmVuZCgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjYWxsYmFjaygqaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpzZXRTb2NrZXRPcHRpb24oTGliV2ViUlRDU29ja2V0
SWRlbnRpZmllciBpZGVudGlmaWVyLCBpbnQgb3B0aW9uLCBpbnQgdmFsdWUpCiB7CiAgICAgQVNT
RVJUKG1fcnRjTmV0d29ya1RocmVhZC5Jc0N1cnJlbnQoKSk7Ci0gICAgYXV0byogc29ja2V0ID0g
bV9zb2NrZXRzLmdldChpZGVudGlmaWVyKTsKLSAgICBpZiAoIXNvY2tldCkKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9zb2NrZXRzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09
IG1fc29ja2V0cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNvY2tldC0+c2V0T3B0aW9u
KG9wdGlvbiwgdmFsdWUpOworICAgIGl0ZXJhdG9yLT5zZWNvbmQtPnNldE9wdGlvbihvcHRpb24s
IHZhbHVlKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmFkZFNvY2tldChMaWJXZWJS
VENTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxTb2NrZXQ+JiYg
c29ja2V0KQogewogICAgIEFTU0VSVChtX3J0Y05ldHdvcmtUaHJlYWQuSXNDdXJyZW50KCkpOwot
ICAgIG1fc29ja2V0cy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShzb2NrZXQpKTsKKyAgICBBU1NF
UlQoc29ja2V0KTsKKyAgICBtX3NvY2tldHMuZW1wbGFjZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNv
Y2tldCkpOworICAgIGlmIChtX3NvY2tldHMuc2l6ZSgpID4gbWF4U29ja2V0cykgeworICAgICAg
ICBhdXRvIHNvY2tldElkZW50aWZpZXJUb0Nsb3NlID0gbV9zb2NrZXRzLmJlZ2luKCktPmZpcnN0
OworICAgICAgICBjbG9zZVNvY2tldChzb2NrZXRJZGVudGlmaWVyVG9DbG9zZSk7CisgICAgICAg
IEFTU0VSVChtX3NvY2tldHMuZmluZChzb2NrZXRJZGVudGlmaWVyVG9DbG9zZSkgPT0gbV9zb2Nr
ZXRzLmVuZCgpKTsKKyAgICB9CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUHJvdmlk
ZXI6OlNvY2tldD4gTmV0d29ya1JUQ1Byb3ZpZGVyOjp0YWtlU29ja2V0KExpYldlYlJUQ1NvY2tl
dElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9ydGNOZXR3b3JrVGhyZWFk
LklzQ3VycmVudCgpKTsKLSAgICByZXR1cm4gbV9zb2NrZXRzLnRha2UoaWRlbnRpZmllcik7Cisg
ICAgYXV0byBpdGVyYXRvciA9IG1fc29ja2V0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChp
dGVyYXRvciA9PSBtX3NvY2tldHMuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgYXV0byBzb2NrZXQgPSBXVEZNb3ZlKGl0ZXJhdG9yLT5zZWNvbmQpOworICAgIG1fc29ja2V0
cy5lcmFzZShpdGVyYXRvcik7CisgICAgcmV0dXJuIHNvY2tldDsKIH0KIAogdm9pZCBOZXR3b3Jr
UlRDUHJvdmlkZXI6Om5ld0Nvbm5lY3Rpb24oU29ja2V0JiBzZXJ2ZXJTb2NrZXQsIHN0ZDo6dW5p
cXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiYmIG5ld1NvY2tldCkKQEAgLTM3NSwxMSAr
Mzg4LDExIEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjbG9zZUxpc3RlbmluZ1NvY2tldHMo
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kCiAgICAgY2FsbE9uUlRDTmV0d29ya1Ro
cmVhZChbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgVmVjdG9yPExpYldlYlJUQ1NvY2tldElkZW50aWZpZXI+
IGxpc3RlbmluZ1NvY2tldElkZW50aWZpZXJzOwogICAgICAgICBmb3IgKGF1dG8mIGtleVZhbHVl
IDogbV9zb2NrZXRzKSB7Ci0gICAgICAgICAgICBpZiAoa2V5VmFsdWUudmFsdWUtPnR5cGUoKSA9
PSBTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCkKLSAgICAgICAgICAgICAgICBsaXN0ZW5pbmdTb2Nr
ZXRJZGVudGlmaWVycy5hcHBlbmQoa2V5VmFsdWUua2V5KTsKKyAgICAgICAgICAgIGlmIChrZXlW
YWx1ZS5zZWNvbmQtPnR5cGUoKSA9PSBTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCkKKyAgICAgICAg
ICAgICAgICBsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVycy5hcHBlbmQoa2V5VmFsdWUuZmlyc3Qp
OwogICAgICAgICB9CiAgICAgICAgIGZvciAoYXV0byBpZCA6IGxpc3RlbmluZ1NvY2tldElkZW50
aWZpZXJzKQotICAgICAgICAgICAgbV9zb2NrZXRzLmdldChpZCktPmNsb3NlKCk7CisgICAgICAg
ICAgICBtX3NvY2tldHNbaWRdLT5jbG9zZSgpOwogCiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29w
KFtwcm92aWRlciA9IFJlZiB7ICp0aGlzIH0sIGxpc3RlbmluZ1NvY2tldElkZW50aWZpZXJzID0g
V1RGTW92ZShsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVycyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGlmIChwcm92aWRlci0+
bV9jb25uZWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IDA5YTIwNTY5N2Q3M2RhODc0YzRh
YzkxMTI0NjFkMmFkZjE2NGRhMjguLmY1ZGI3MDZjNDQ1ODAyMTA4N2Y5NTk5NjY5ZGZhN2Q5Zjgz
Nzk3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8d2Vi
cnRjL3AycC9iYXNlL2Jhc2ljX3BhY2tldF9zb2NrZXRfZmFjdG9yeS5oPgogI2luY2x1ZGUgPHdl
YnJ0Yy9ydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC02Myw2ICs2NCwxMyBAQCBjbGFzcyBOZXR3b3Jr
UlRDUmVzb2x2ZXI7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIHN0cnVjdCBSVENQYWNrZXRPcHRp
b25zOwogCitzdHJ1Y3QgU29ja2V0Q29tcGFyYXRvciB7CisgICAgYm9vbCBvcGVyYXRvcigpKGNv
bnN0IFdlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6
OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXImIGIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gYS50b1VJbnQ2NCgpIDwgYi50b1VJbnQ2NCgpOworICAgIH0KK307CisKIGNsYXNzIE5ldHdv
cmtSVENQcm92aWRlciA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLCBwdWJsaWMgSVBDOjpD
b25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPE5ldHdvcmtSVENQcm92aWRlcj4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQpAQCAtMTQyLDggKzE1MCwxMCBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXJGcm9tUGFnZUlkZW50
aWZpZXIoV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IG1heFNvY2tldHMgeyAyNTYgfTsKKwogICAgIEhhc2hNYXA8TGliV2ViUlRD
UmVzb2x2ZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPj4g
bV9yZXNvbHZlcnM7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U29ja2V0Pj4gbV9zb2NrZXRzOworICAgIFN0ZE1hcDxXZWJD
b3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U29ja2V0Piwg
U29ja2V0Q29tcGFyYXRvcj4gbV9zb2NrZXRzOwogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGNDb25u
ZWN0aW9uOwogICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDVENQU29ja2V0Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDVENQU29j
a2V0Q29jb2EubW0KaW5kZXggNzM0NGU1ZGE5NmYyMTZiZmQ0NDdlNDNmMjFkMTBmYmQzYTQ3MDRj
Mi4uNWUyZGU5YzlmNzMyYzFjMDA0NmRjOWJkNGU1YjdjYjhkZmExNjAyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1RDUFNvY2tldENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENUQ1BTb2NrZXRDb2NvYS5tbQpAQCAtMTM2LDkgKzEzNiw4IEBAIE5ldHdvcmtSVENUQ1BTb2Nr
ZXRDb2NvYTo6TmV0d29ya1JUQ1RDUFNvY2tldENvY29hKExpYldlYlJUQ1NvY2tldElkZW50aWZp
ZXIgaWRlCiAKIHZvaWQgTmV0d29ya1JUQ1RDUFNvY2tldENvY29hOjpjbG9zZSgpCiB7Ci0gICAg
aWYgKCFtX253Q29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIG53X2Nvbm5lY3Rpb25f
Y2FuY2VsKG1fbndDb25uZWN0aW9uLmdldCgpKTsKKyAgICBpZiAobV9ud0Nvbm5lY3Rpb24pCisg
ICAgICAgIG53X2Nvbm5lY3Rpb25fY2FuY2VsKG1fbndDb25uZWN0aW9uLmdldCgpKTsKICAgICBt
X3J0Y1Byb3ZpZGVyLnRha2VTb2NrZXQobV9pZGVudGlmaWVyKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>