<?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>199857</bug_id>
          
          <creation_ts>2019-07-17 05:32:35 -0700</creation_ts>
          <short_desc>[WTF] Thread::removeFromThreadGroup leaks weak pointers.</short_desc>
          <delta_ts>2019-08-12 20:02:23 -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>Web Template Framework</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="Takashi Komori">takashi.komori</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>basuke</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>chris.reid</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>fujii</cc>
    
    <cc>mark.lam</cc>
    
    <cc>rniwa</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1553490</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-07-17 05:32:35 -0700</bug_when>
    <thetext>ThreadGroup&apos;s destructor calls Thread::removeFromThreadGroup and tries to remove its weak pointer from Thread.m_threadGroups.
As the call is from destructor the instance of ThreadGroup is already released and the removing always fail.

As a result, the size of m_thraeadGroups won&apos;t decrease.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553492</commentid>
    <comment_count>1</comment_count>
      <attachid>374292</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-07-17 05:40:30 -0700</bug_when>
    <thetext>Created attachment 374292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553495</commentid>
    <comment_count>2</comment_count>
      <attachid>374293</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-07-17 05:56:47 -0700</bug_when>
    <thetext>Created attachment 374293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556315</commentid>
    <comment_count>3</comment_count>
      <attachid>374293</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-07-26 18:09:18 -0700</bug_when>
    <thetext>Comment on attachment 374293
Patch

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

&gt; Source/WTF/ChangeLog:8
&gt; +        This patch makes Thread::removeFromThreadGroup remove all released weak pointers.

Is it possible to make a unit test for this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556331</commentid>
    <comment_count>4</comment_count>
      <attachid>374293</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-26 19:37:40 -0700</bug_when>
    <thetext>Comment on attachment 374293
Patch

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

Nice catch! Discussed with Mark about whether this works with the current protocol of ThreadGroup and Thread, and we think that the key is that we should remove ThreadGroup unconditionally without using `weakPtr.lock()`. To achieve it simply with O(1), I commented about the HashMap based approach here. Does it seem good for you too?

&gt; Source/WTF/wtf/Threading.cpp:259
&gt;              return sharedPtr.get() == &amp;threadGroup;
&gt;          return false;
&gt;      });

Nice catch! I think the key is that, if we can just remove threadGroup unconditionally from this list, it should work.
So, ideally, the code should be like,

return &amp;threadGroup == weakPtr.get();

Then it works. But the problem is that std::weak_ptr does not have an original raw pointer. So, can you change the code like,

1. Instead of holding a Vector&lt;std::weak_ptr&lt;ThreadGroup&gt;&gt;, let&apos;s hold HashMap&lt;ThreadGroup*, std::weak_ptr&lt;ThreadGroup&gt;&gt;
2. Remove the entry from that hash map in this function
3. In L214, iterate the hash map and collect shared_ptr from the value&apos;s weak_ptr

Or, another simple way is that holding struct { ThreadGroup* threadGroup; std::weak_ptr&lt;ThreadGroup&gt; weakPtr } in a Vector, but I think HashMap one is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556332</commentid>
    <comment_count>5</comment_count>
      <attachid>374293</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-26 19:41:48 -0700</bug_when>
    <thetext>Comment on attachment 374293
Patch

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

&gt;&gt; Source/WTF/ChangeLog:8
&gt;&gt; +        This patch makes Thread::removeFromThreadGroup remove all released weak pointers.
&gt; 
&gt; Is it possible to make a unit test for this bug?

I think we can test it. Can you add a test to Tools/TestWebKitAPI/Tests/WTF/ThreadGroup.cpp?
We can test it like,

1. Create a ThreadGroup
2. Add many Threads
3. Keep Threads live by using condition variable
4. Destroy ThreadGroup
5. Check the count of ThreadGroups of each Thread

To get the value of (5), we need a method in Thread like,

unsigned Thread::numberOfThreadGroups()
{
    auto locker = holdLock(m_mutex);
    return m_threadGroups.size();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557550</commentid>
    <comment_count>6</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-08-01 01:30:34 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #5)
&gt; Comment on attachment 374293 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=374293&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/ChangeLog:8
&gt; &gt;&gt; +        This patch makes Thread::removeFromThreadGroup remove all released weak pointers.
&gt; &gt; 
&gt; &gt; Is it possible to make a unit test for this bug?
&gt; 
&gt; I think we can test it. Can you add a test to
&gt; Tools/TestWebKitAPI/Tests/WTF/ThreadGroup.cpp?
&gt; We can test it like,
&gt; 
&gt; 1. Create a ThreadGroup
&gt; 2. Add many Threads
&gt; 3. Keep Threads live by using condition variable
&gt; 4. Destroy ThreadGroup
&gt; 5. Check the count of ThreadGroups of each Thread
&gt; 
&gt; To get the value of (5), we need a method in Thread like,
&gt; 
&gt; unsigned Thread::numberOfThreadGroups()
&gt; {
&gt;     auto locker = holdLock(m_mutex);
&gt;     return m_threadGroups.size();
&gt; }

Thank you for your detailed advice!
I&apos;ll try to make a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558742</commentid>
    <comment_count>7</comment_count>
      <attachid>375610</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-08-06 00:02:47 -0700</bug_when>
    <thetext>Created attachment 375610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558744</commentid>
    <comment_count>8</comment_count>
      <attachid>375612</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-08-06 00:29:34 -0700</bug_when>
    <thetext>Created attachment 375612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559440</commentid>
    <comment_count>9</comment_count>
      <attachid>375612</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-07 22:50:47 -0700</bug_when>
    <thetext>Comment on attachment 375612
Patch

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

Some early comments. The code looks good to me.

&gt; Tools/TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:156
&gt; +    const int NumberOfThreads = 64;

Use `unsigned` to avoid gtest build failure.

&gt; Tools/TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:162
&gt; +    Vector&lt;RefPtr&lt;Thread&gt;&gt; threads;

Use `Ref`.

&gt; Tools/TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:165
&gt; +    for (int i = 0; i &lt; NumberOfThreads; i++) {

Use `unsigned`.

&gt; Tools/TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:166
&gt; +        auto thread = Thread::create(&quot;ThreadGroupWorker&quot;, [&amp;](void) {

`(void)` is not necessary.

&gt; Tools/TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:167
&gt; +            LockHolder locker(lock);

Use `auto locker = holdLock(lock)`.

&gt; Tools/TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:168
&gt; +            threadRunningCondition.wait(lock, [&amp;](void) {

`(void)` is not necessary.

&gt; Tools/TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:184
&gt; +    for (int i = 0; i &lt; NumberOfThreads; i++)

Use `unsigned`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559827</commentid>
    <comment_count>10</comment_count>
      <attachid>375898</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-08-09 00:53:58 -0700</bug_when>
    <thetext>Created attachment 375898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559830</commentid>
    <comment_count>11</comment_count>
      <attachid>375899</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-08-09 01:52:48 -0700</bug_when>
    <thetext>Created attachment 375899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559836</commentid>
    <comment_count>12</comment_count>
      <attachid>375899</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-09 02:53:01 -0700</bug_when>
    <thetext>Comment on attachment 375899
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559917</commentid>
    <comment_count>13</comment_count>
      <attachid>375899</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-09 09:38:53 -0700</bug_when>
    <thetext>Comment on attachment 375899
Patch

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

&gt; Source/WTF/wtf/Threading.h:296
&gt; +    HashMap&lt;ThreadGroup*, std::weak_ptr&lt;ThreadGroup&gt;&gt; m_threadGroupMap;

Future cleanup thought: Can we make HashSet&lt;std::weak_ptr&lt;ThreadGroup&gt;&gt; work for a case like this, rather than requiring use of a map?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559945</commentid>
    <comment_count>14</comment_count>
      <attachid>375899</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-09 10:41:03 -0700</bug_when>
    <thetext>Comment on attachment 375899
Patch

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

&gt;&gt; Source/WTF/wtf/Threading.h:296
&gt;&gt; +    HashMap&lt;ThreadGroup*, std::weak_ptr&lt;ThreadGroup&gt;&gt; m_threadGroupMap;
&gt; 
&gt; Future cleanup thought: Can we make HashSet&lt;std::weak_ptr&lt;ThreadGroup&gt;&gt; work for a case like this, rather than requiring use of a map?

Yeah, I would like to make this too :D
Unfortunately, currently, `std::weak_ptr` does not have a way to get a raw pointer if the held object is dead (I would like to have `std::weak_ptr::get()`...).
So we need our own WeakPtr implementation which is thread-safe and having a method (like WeakPtr::getRaw()) returning an original pointer regardless of liveness (thread-safe weak pointer is why we are using std::weak_ptr and std::shared_ptr instead of RefPtr and WeakPtr here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560662</commentid>
    <comment_count>15</comment_count>
      <attachid>375899</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-12 20:01:17 -0700</bug_when>
    <thetext>Comment on attachment 375899
Patch

Clearing flags on attachment: 375899

Committed r248586: &lt;https://trac.webkit.org/changeset/248586&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560663</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-12 20:01:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560665</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-12 20:02:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/54239165&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374292</attachid>
            <date>2019-07-17 05:40:30 -0700</date>
            <delta_ts>2019-07-17 05:56:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199857-20190717213639.patch</filename>
            <type>text/plain</type>
            <size>1293</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyOTYzNWY3MzkwZDhkOWExYzgzN2Iy
NTMyOTg4ZjYyNjU1OThjZWUuLjk3YmIzOGZjYzliNDZiNmE2YzEwYzY2NTYwNmVlNTNiN2ZlYWQ3
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDctMTcgIFRha2FzaGkgS29tb3JpICA8VGFr
YXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW1dURl0gVGhyZWFkOjpyZW1vdmVGcm9t
VGhyZWFkR3JvdXAgbGVha3Mgd2VhayBwb2ludGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChX
VEY6OlRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwKToKKwogMjAxOS0wNy0xNiAgQ2hyaXN0
b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CiAKICAgICAgICAgQnl0ZWNvZGUgY2Fj
aGUgc2hvdWxkIHVzZSBGaWxlU3lzdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCAwN2U3ZDBmMjMx
Njk0OTA4OGU0OTgyMDRlZWU5OTcwMDc1ZTRhMTMxLi40NmJkMDFkYTJkNzI5NmRjMTYwODAwMGYy
ZWE0MWEzNmM0MTU2ZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTI1Nyw2ICsyNTcsMTIgQEAg
dm9pZCBUaHJlYWQ6OnJlbW92ZUZyb21UaHJlYWRHcm91cChjb25zdCBBYnN0cmFjdExvY2tlciYg
dGhyZWFkR3JvdXBMb2NrZXIsIFRocmUKICAgICAgICAgICAgIHJldHVybiBzaGFyZWRQdHIuZ2V0
KCkgPT0gJnRocmVhZEdyb3VwOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSk7CisKKyAg
ICBtX3RocmVhZEdyb3Vwcy5yZW1vdmVBbGxNYXRjaGluZyhbJl0gKGF1dG8gd2Vha1B0cikgewor
ICAgICAgICBpZiAod2Vha1B0ci51c2VfY291bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CiB9CiAKIGJvb2wgVGhyZWFkOjpleGNo
YW5nZUlzQ29tcGlsYXRpb25UaHJlYWQoYm9vbCBuZXdWYWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374293</attachid>
            <date>2019-07-17 05:56:47 -0700</date>
            <delta_ts>2019-08-06 00:02:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199857-20190717215257.patch</filename>
            <type>text/plain</type>
            <size>1386</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyOTYzNWY3MzkwZDhkOWExYzgzN2Iy
NTMyOTg4ZjYyNjU1OThjZWUuLjY2MGZjZTg1NjZiZDhkZjE3MTJiMWU1NDI4ODNlYTQzZDAyZTcx
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDctMTcgIFRha2FzaGkgS29tb3JpICA8VGFr
YXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW1dURl0gVGhyZWFkOjpyZW1vdmVGcm9t
VGhyZWFkR3JvdXAgbGVha3Mgd2VhayBwb2ludGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgVGhyZWFkOjpyZW1vdmVG
cm9tVGhyZWFkR3JvdXAgcmVtb3ZlIGFsbCByZWxlYXNlZCB3ZWFrIHBvaW50ZXJzLgorCisgICAg
ICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6cmVtb3ZlRnJv
bVRocmVhZEdyb3VwKToKKwogMjAxOS0wNy0xNiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJl
aWRAc29ueS5jb20+CiAKICAgICAgICAgQnl0ZWNvZGUgY2FjaGUgc2hvdWxkIHVzZSBGaWxlU3lz
dGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmNwcAppbmRleCAwN2U3ZDBmMjMxNjk0OTA4OGU0OTgyMDRlZWU5OTcw
MDc1ZTRhMTMxLi40NmJkMDFkYTJkNzI5NmRjMTYwODAwMGYyZWE0MWEzNmM0MTU2ZGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZy5jcHAKQEAgLTI1Nyw2ICsyNTcsMTIgQEAgdm9pZCBUaHJlYWQ6OnJlbW92ZUZy
b21UaHJlYWRHcm91cChjb25zdCBBYnN0cmFjdExvY2tlciYgdGhyZWFkR3JvdXBMb2NrZXIsIFRo
cmUKICAgICAgICAgICAgIHJldHVybiBzaGFyZWRQdHIuZ2V0KCkgPT0gJnRocmVhZEdyb3VwOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSk7CisKKyAgICBtX3RocmVhZEdyb3Vwcy5yZW1v
dmVBbGxNYXRjaGluZyhbJl0gKGF1dG8gd2Vha1B0cikgeworICAgICAgICBpZiAod2Vha1B0ci51
c2VfY291bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfSk7CiB9CiAKIGJvb2wgVGhyZWFkOjpleGNoYW5nZUlzQ29tcGlsYXRpb25UaHJl
YWQoYm9vbCBuZXdWYWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375610</attachid>
            <date>2019-08-06 00:02:47 -0700</date>
            <delta_ts>2019-08-06 00:29:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199857-20190806155908.patch</filename>
            <type>text/plain</type>
            <size>6477</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFhYzdmOWI5MWQxNDY3YWNjZjM2ZTVk
NGE5NzFkY2UyZDM1ZDcyNzEuLmU5NjZjODAwOGYzNDFlZmY4ZTdmODIwMGY0ZjQ1MTc5MmU4ZmZi
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAKIDIwMTktMDgtMDUgIFRha2FzaGkgS29tb3JpICA8VGFr
YXNoaS5Lb21vcmlAc29ueS5jb20+CiAKKyAgICAgICAgW1dURl0gVGhyZWFkOjpyZW1vdmVGcm9t
VGhyZWFkR3JvdXAgbGVha3Mgd2VhayBwb2ludGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBsZWFraW5nIG9mIHRocmVhZEdyb3VwJ3Mgd2Vh
ayBwb2ludGVycy4KKworICAgICAgICBUZXN0czogV1RGLlRocmVhZEdyb3VwUmVtb3ZlCisKKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpkaWRFeGl0
KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjphZGRUb1RocmVhZEdyb3VwKToKKyAgICAgICAgKFdU
Rjo6VGhyZWFkOjpyZW1vdmVGcm9tVGhyZWFkR3JvdXApOgorICAgICAgICAoV1RGOjpUaHJlYWQ6
Om51bWJlck9mVGhyZWFkR3JvdXBzKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisKKzIw
MTktMDgtMDUgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisKICAg
ICAgICAgW0N1cmxdIGltcGxlbWVudCBDZXJ0aWZpY2F0ZUluZm86OnN1bW1hcnlJbmZvCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0OTgKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZy5jcHAKaW5kZXggMDdlN2QwZjIzMTY5NDkwODhlNDk4MjA0ZWVlOTk3MDA3NWU0YTEz
MS4uNzkzYzRlYzUwOTU4NGE3ZjkxOWE1YWE0YTdjM2VhMjE0OGJkODc5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuY3BwCkBAIC0yMTEsMTAgKzIxMSwxMCBAQCB2b2lkIFRocmVhZDo6ZGlkRXhpdCgpCiAgICAg
ICAgICAgICBWZWN0b3I8c3RkOjpzaGFyZWRfcHRyPFRocmVhZEdyb3VwPj4gdGhyZWFkR3JvdXBz
OwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9tdXRleCk7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiB0aHJlYWRHcm91cCA6IG1fdGhy
ZWFkR3JvdXBzKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB0aHJlYWRHcm91cFBvaW50
ZXJQYWlyIDogbV90aHJlYWRHcm91cE1hcCkgewogICAgICAgICAgICAgICAgICAgICAvLyBJZiBU
aHJlYWRHcm91cCBpcyBqdXN0IGJlaW5nIGRlc3Ryb3llZCwKICAgICAgICAgICAgICAgICAgICAg
Ly8gd2UgZG8gbm90IG5lZWQgdG8gcGVyZm9ybSB1bnJlZ2lzdGVyaW5nLgotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0byByZXRhaW5lZCA9IHRocmVhZEdyb3VwLmxvY2soKSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gcmV0YWluZWQgPSB0aHJlYWRHcm91cFBvaW50ZXJQYWlyLnZh
bHVlLmxvY2soKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZEdyb3Vwcy5hcHBlbmQo
V1RGTW92ZShyZXRhaW5lZCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBt
X2lzU2h1dHRpbmdEb3duID0gdHJ1ZTsKQEAgLTI0MCw3ICsyNDAsNyBAQCBUaHJlYWRHcm91cEFk
ZFJlc3VsdCBUaHJlYWQ6OmFkZFRvVGhyZWFkR3JvdXAoY29uc3QgQWJzdHJhY3RMb2NrZXImIHRo
cmVhZEdyb3VwTAogICAgIGlmIChtX2lzU2h1dHRpbmdEb3duKQogICAgICAgICByZXR1cm4gVGhy
ZWFkR3JvdXBBZGRSZXN1bHQ6Ok5vdEFkZGVkOwogICAgIGlmICh0aHJlYWRHcm91cC5tX3RocmVh
ZHMuYWRkKCp0aGlzKS5pc05ld0VudHJ5KSB7Ci0gICAgICAgIG1fdGhyZWFkR3JvdXBzLmFwcGVu
ZCh0aHJlYWRHcm91cC53ZWFrRnJvbVRoaXMoKSk7CisgICAgICAgIG1fdGhyZWFkR3JvdXBNYXAu
YWRkKCZ0aHJlYWRHcm91cCwgdGhyZWFkR3JvdXAud2Vha0Zyb21UaGlzKCkpOwogICAgICAgICBy
ZXR1cm4gVGhyZWFkR3JvdXBBZGRSZXN1bHQ6Ok5ld2x5QWRkZWQ7CiAgICAgfQogICAgIHJldHVy
biBUaHJlYWRHcm91cEFkZFJlc3VsdDo6QWxyZWFkeUFkZGVkOwpAQCAtMjUyLDExICsyNTIsMTMg
QEAgdm9pZCBUaHJlYWQ6OnJlbW92ZUZyb21UaHJlYWRHcm91cChjb25zdCBBYnN0cmFjdExvY2tl
ciYgdGhyZWFkR3JvdXBMb2NrZXIsIFRocmUKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bXV0ZXgpOwogICAgIGlmIChtX2lzU2h1dHRpbmdEb3duKQogICAgICAgICByZXR1cm47Ci0gICAg
bV90aHJlYWRHcm91cHMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJl0gKGF1dG8gd2Vha1B0cikgewot
ICAgICAgICBpZiAoYXV0byBzaGFyZWRQdHIgPSB3ZWFrUHRyLmxvY2soKSkKLSAgICAgICAgICAg
IHJldHVybiBzaGFyZWRQdHIuZ2V0KCkgPT0gJnRocmVhZEdyb3VwOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfSk7CisgICAgbV90aHJlYWRHcm91cE1hcC5yZW1vdmUoJnRocmVhZEdyb3Vw
KTsKK30KKwordW5zaWduZWQgVGhyZWFkOjpudW1iZXJPZlRocmVhZEdyb3VwcygpCit7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICByZXR1cm4gbV90aHJlYWRHcm91
cE1hcC5zaXplKCk7CiB9CiAKIGJvb2wgVGhyZWFkOjpleGNoYW5nZUlzQ29tcGlsYXRpb25UaHJl
YWQoYm9vbCBuZXdWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5o
IGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggNjk1M2Y2ZWVlZmQ0Y2MxNzljMzI2
NmMzNGU2OTQ1ZGYzMjM3Y2Y0Yi4uYzRkMDBiMjc3YmRiYmE4YTk2ZGJjMTRiM2YzMDdmMmEwMjRl
ZjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+
CkBAIC05NSw2ICs5Niw4IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IEhhc2hTZXQ8VGhyZWFkKj4mIGFsbFRocmVhZHMoY29uc3QgTG9ja0hvbGRlciYpOwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTG9jayYgYWxsVGhyZWFkc011dGV4KCk7CiAKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRHcm91cHMoKTsKKwogI2lm
IE9TKFdJTkRPV1MpCiAgICAgLy8gUmV0dXJucyBUaHJlYWRJZGVudGlmaWVyIGRpcmVjdGx5LiBJ
dCBpcyB1c2VmdWwgaWYgdGhlIHVzZXIgb25seSBjYXJlcyBhYm91dCBpZGVudGl0eQogICAgIC8v
IG9mIHRocmVhZHMuIEF0IHRoYXQgdGltZSwgdXNlcnMgc2hvdWxkIGtub3cgdGhhdCBob2xkaW5n
IHRoaXMgVGhyZWFkSWRlbnRpZmllciBkb2VzIG5vdCBlbnN1cmUKQEAgLTI5MCw3ICsyOTMsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgLy8gVXNlIFdvcmRMb2NrIHNpbmNlIFdvcmRMb2NrIGRvZXMgbm90
IGRlcGVuZCBvbiBUaHJlYWRTcGVjaWZpYyBhbmQgdGhpcyAiVGhyZWFkIi4KICAgICBXb3JkTG9j
ayBtX211dGV4OwogICAgIFN0YWNrQm91bmRzIG1fc3RhY2sgeyBTdGFja0JvdW5kczo6ZW1wdHlC
b3VuZHMoKSB9OwotICAgIFZlY3RvcjxzdGQ6OndlYWtfcHRyPFRocmVhZEdyb3VwPj4gbV90aHJl
YWRHcm91cHM7CisgICAgSGFzaE1hcDxUaHJlYWRHcm91cCosIHN0ZDo6d2Vha19wdHI8VGhyZWFk
R3JvdXA+PiBtX3RocmVhZEdyb3VwTWFwOwogICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFu
ZGxlOwogI2lmIE9TKFdJTkRPV1MpCiAgICAgVGhyZWFkSWRlbnRpZmllciBtX2lkIHsgMCB9Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgyZWNi
MjlmNGIwMjlkZDkwMDM1OTZjY2E1ZjhhOTMxZDBjZTZjNjcuLjhkY2Q3NDMyZWM4NzA5ZWRmMTlh
YTA1NDc3NzAyM2YwZDdiZDhjZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0wNSAgVGFrYXNoaSBLb21v
cmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBbV1RGXSBUaHJlYWQ6OnJl
bW92ZUZyb21UaHJlYWRHcm91cCBsZWFrcyB3ZWFrIHBvaW50ZXJzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9UaHJlYWRHcm91cC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb3VudFRocmVhZEdy
b3Vwcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wOC0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBpbmcgbG9hZHMgc2hvdWxk
IG5vdCBwcmV2ZW50IHBhZ2UgY2FjaGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVGhyZWFkR3JvdXAuY3BwCmluZGV4IDI5MWEzZjAxOTQ5NTA3MDdjZTZiZGEzNmI3MDhmZDBh
ZGNkODEwNzcuLmYyZmU5ZjEzNTUzY2VlYTVkOTQxYmFkMjgzOTQ2OWM5MDQxOTJlYmYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHAKQEAgLTE0Miw0
ICsxNDIsNDcgQEAgVEVTVChXVEYsIFRocmVhZEdyb3VwQWRkRHVwbGljYXRlVGhyZWFkcykKICAg
ICB9CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBjb3VudFRocmVhZEdyb3VwcyhWZWN0b3I8UmVmUHRy
PFRocmVhZD4+JiB0aHJlYWRzKQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICBmb3Ig
KGF1dG8mIHRocmVhZCA6IHRocmVhZHMpCisgICAgICAgIGNvdW50ICs9IHRocmVhZC0+bnVtYmVy
T2ZUaHJlYWRHcm91cHMoKTsKKworICAgIHJldHVybiBjb3VudDsKK30KKworVEVTVChXVEYsIFRo
cmVhZEdyb3VwUmVtb3ZlKQoreworICAgIGNvbnN0IGludCBOdW1iZXJPZlRocmVhZHMgPSA2NDsK
KworICAgIExvY2sgbG9jazsKKyAgICBDb25kaXRpb24gdGhyZWFkUnVubmluZ0NvbmRpdGlvbjsK
KyAgICBib29sIHRocmVhZFJ1bm5pbmcgPSB0cnVlOworCisgICAgVmVjdG9yPFJlZlB0cjxUaHJl
YWQ+PiB0aHJlYWRzOworCisgICAgYXV0byB0aHJlYWRHcm91cCA9IFRocmVhZEdyb3VwOjpjcmVh
dGUoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE51bWJlck9mVGhyZWFkczsgaSsrKSB7Cisg
ICAgICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3VwV29ya2VyIiwg
WyZdKHZvaWQpIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgICAg
ICAgICAgdGhyZWFkUnVubmluZ0NvbmRpdGlvbi53YWl0KGxvY2ssIFsmXSh2b2lkKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuICF0aHJlYWRSdW5uaW5nOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworICAgICAgICB0aHJlYWRHcm91cC0+YWRkKHRocmVhZC5nZXQoKSk7CisgICAgICAg
IHRocmVhZHMuYXBwZW5kKFdURk1vdmUodGhyZWFkKSk7CisgICAgfQorCisgICAgRVhQRUNUX0VR
KE51bWJlck9mVGhyZWFkcywgY291bnRUaHJlYWRHcm91cHModGhyZWFkcykpOworCisgICAgdGhy
ZWFkR3JvdXAgPSBudWxscHRyOworCisgICAgRVhQRUNUX0VRKDAsIGNvdW50VGhyZWFkR3JvdXBz
KHRocmVhZHMpKTsKKworICAgIHRocmVhZFJ1bm5pbmcgPSBmYWxzZTsKKyAgICB0aHJlYWRSdW5u
aW5nQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTnVtYmVy
T2ZUaHJlYWRzOyBpKyspCisgICAgICAgIHRocmVhZHNbaV0tPndhaXRGb3JDb21wbGV0aW9uKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375612</attachid>
            <date>2019-08-06 00:29:34 -0700</date>
            <delta_ts>2019-08-06 15:04:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199857-20190806162556.patch</filename>
            <type>text/plain</type>
            <size>6445</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFhYzdmOWI5MWQxNDY3YWNjZjM2ZTVk
NGE5NzFkY2UyZDM1ZDcyNzEuLjg4ZmJjM2I4NTg4YWE5NWI4MGVjMzYyYzVjN2E4M2ViOGFhNWU4
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDgtMDYgIFRha2FzaGkgS29tb3JpICA8VGFr
YXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW1dURl0gVGhyZWFkOjpyZW1vdmVGcm9t
VGhyZWFkR3JvdXAgbGVha3Mgd2VhayBwb2ludGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBsZWFraW5nIG9mIFRocmVhZEdyb3VwJ3Mgd2Vh
ayBwb2ludGVycy4KKworICAgICAgICBUZXN0czogV1RGLlRocmVhZEdyb3VwUmVtb3ZlIEFQSSB0
ZXN0cworCisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6ZGlkRXhpdCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6YWRkVG9UaHJlYWRHcm91cCk6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwKToKKyAgICAgICAgKFdU
Rjo6VGhyZWFkOjpudW1iZXJPZlRocmVhZEdyb3Vwcyk6CisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorCiAyMDE5LTA4LTA1ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnku
Y29tPgogCiAgICAgICAgIFtDdXJsXSBpbXBsZW1lbnQgQ2VydGlmaWNhdGVJbmZvOjpzdW1tYXJ5
SW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMDdlN2QwZjIzMTY5NDkwODhlNDk4MjA0ZWVlOTk3
MDA3NWU0YTEzMS4uNzkzYzRlYzUwOTU4NGE3ZjkxOWE1YWE0YTdjM2VhMjE0OGJkODc5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuY3BwCkBAIC0yMTEsMTAgKzIxMSwxMCBAQCB2b2lkIFRocmVhZDo6ZGlkRXhp
dCgpCiAgICAgICAgICAgICBWZWN0b3I8c3RkOjpzaGFyZWRfcHRyPFRocmVhZEdyb3VwPj4gdGhy
ZWFkR3JvdXBzOwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9tdXRleCk7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiB0aHJlYWRHcm91
cCA6IG1fdGhyZWFkR3JvdXBzKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB0aHJlYWRH
cm91cFBvaW50ZXJQYWlyIDogbV90aHJlYWRHcm91cE1hcCkgewogICAgICAgICAgICAgICAgICAg
ICAvLyBJZiBUaHJlYWRHcm91cCBpcyBqdXN0IGJlaW5nIGRlc3Ryb3llZCwKICAgICAgICAgICAg
ICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcGVyZm9ybSB1bnJlZ2lzdGVyaW5nLgotICAg
ICAgICAgICAgICAgICAgICBpZiAoYXV0byByZXRhaW5lZCA9IHRocmVhZEdyb3VwLmxvY2soKSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gcmV0YWluZWQgPSB0aHJlYWRHcm91cFBvaW50
ZXJQYWlyLnZhbHVlLmxvY2soKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZEdyb3Vw
cy5hcHBlbmQoV1RGTW92ZShyZXRhaW5lZCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBtX2lzU2h1dHRpbmdEb3duID0gdHJ1ZTsKQEAgLTI0MCw3ICsyNDAsNyBAQCBUaHJl
YWRHcm91cEFkZFJlc3VsdCBUaHJlYWQ6OmFkZFRvVGhyZWFkR3JvdXAoY29uc3QgQWJzdHJhY3RM
b2NrZXImIHRocmVhZEdyb3VwTAogICAgIGlmIChtX2lzU2h1dHRpbmdEb3duKQogICAgICAgICBy
ZXR1cm4gVGhyZWFkR3JvdXBBZGRSZXN1bHQ6Ok5vdEFkZGVkOwogICAgIGlmICh0aHJlYWRHcm91
cC5tX3RocmVhZHMuYWRkKCp0aGlzKS5pc05ld0VudHJ5KSB7Ci0gICAgICAgIG1fdGhyZWFkR3Jv
dXBzLmFwcGVuZCh0aHJlYWRHcm91cC53ZWFrRnJvbVRoaXMoKSk7CisgICAgICAgIG1fdGhyZWFk
R3JvdXBNYXAuYWRkKCZ0aHJlYWRHcm91cCwgdGhyZWFkR3JvdXAud2Vha0Zyb21UaGlzKCkpOwog
ICAgICAgICByZXR1cm4gVGhyZWFkR3JvdXBBZGRSZXN1bHQ6Ok5ld2x5QWRkZWQ7CiAgICAgfQog
ICAgIHJldHVybiBUaHJlYWRHcm91cEFkZFJlc3VsdDo6QWxyZWFkeUFkZGVkOwpAQCAtMjUyLDEx
ICsyNTIsMTMgQEAgdm9pZCBUaHJlYWQ6OnJlbW92ZUZyb21UaHJlYWRHcm91cChjb25zdCBBYnN0
cmFjdExvY2tlciYgdGhyZWFkR3JvdXBMb2NrZXIsIFRocmUKICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fbXV0ZXgpOwogICAgIGlmIChtX2lzU2h1dHRpbmdEb3duKQogICAgICAgICByZXR1
cm47Ci0gICAgbV90aHJlYWRHcm91cHMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJl0gKGF1dG8gd2Vh
a1B0cikgewotICAgICAgICBpZiAoYXV0byBzaGFyZWRQdHIgPSB3ZWFrUHRyLmxvY2soKSkKLSAg
ICAgICAgICAgIHJldHVybiBzaGFyZWRQdHIuZ2V0KCkgPT0gJnRocmVhZEdyb3VwOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfSk7CisgICAgbV90aHJlYWRHcm91cE1hcC5yZW1vdmUoJnRo
cmVhZEdyb3VwKTsKK30KKwordW5zaWduZWQgVGhyZWFkOjpudW1iZXJPZlRocmVhZEdyb3Vwcygp
Cit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICByZXR1cm4gbV90
aHJlYWRHcm91cE1hcC5zaXplKCk7CiB9CiAKIGJvb2wgVGhyZWFkOjpleGNoYW5nZUlzQ29tcGls
YXRpb25UaHJlYWQoYm9vbCBuZXdWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggNjk1M2Y2ZWVlZmQ0
Y2MxNzljMzI2NmMzNGU2OTQ1ZGYzMjM3Y2Y0Yi4uYzRkMDBiMjc3YmRiYmE4YTk2ZGJjMTRiM2Yz
MDdmMmEwMjRlZjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CkBAIC05NSw2ICs5Niw4IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIEhhc2hTZXQ8VGhyZWFkKj4mIGFsbFRocmVhZHMoY29uc3QgTG9ja0hvbGRlciYp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTG9jayYgYWxsVGhyZWFkc011dGV4KCk7
CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRHcm91cHMo
KTsKKwogI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gUmV0dXJucyBUaHJlYWRJZGVudGlmaWVyIGRp
cmVjdGx5LiBJdCBpcyB1c2VmdWwgaWYgdGhlIHVzZXIgb25seSBjYXJlcyBhYm91dCBpZGVudGl0
eQogICAgIC8vIG9mIHRocmVhZHMuIEF0IHRoYXQgdGltZSwgdXNlcnMgc2hvdWxkIGtub3cgdGhh
dCBob2xkaW5nIHRoaXMgVGhyZWFkSWRlbnRpZmllciBkb2VzIG5vdCBlbnN1cmUKQEAgLTI5MCw3
ICsyOTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVXNlIFdvcmRMb2NrIHNpbmNlIFdvcmRMb2Nr
IGRvZXMgbm90IGRlcGVuZCBvbiBUaHJlYWRTcGVjaWZpYyBhbmQgdGhpcyAiVGhyZWFkIi4KICAg
ICBXb3JkTG9jayBtX211dGV4OwogICAgIFN0YWNrQm91bmRzIG1fc3RhY2sgeyBTdGFja0JvdW5k
czo6ZW1wdHlCb3VuZHMoKSB9OwotICAgIFZlY3RvcjxzdGQ6OndlYWtfcHRyPFRocmVhZEdyb3Vw
Pj4gbV90aHJlYWRHcm91cHM7CisgICAgSGFzaE1hcDxUaHJlYWRHcm91cCosIHN0ZDo6d2Vha19w
dHI8VGhyZWFkR3JvdXA+PiBtX3RocmVhZEdyb3VwTWFwOwogICAgIFBsYXRmb3JtVGhyZWFkSGFu
ZGxlIG1faGFuZGxlOwogI2lmIE9TKFdJTkRPV1MpCiAgICAgVGhyZWFkSWRlbnRpZmllciBtX2lk
IHsgMCB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDA3MDdlMTYzYzA2Y2Q1MGRmZDQwZTJhNjY5MzQ3Nzc5OTU5N2FkYjAuLjU2MDU0YWViNGY2
YWYzMjkxZGM0N2FiMjliYTVlZDlhOWFkZDdkODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0wNiAgVGFr
YXNoaSBLb21vcmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBbV1RGXSBU
aHJlYWQ6OnJlbW92ZUZyb21UaHJlYWRHcm91cCBsZWFrcyB3ZWFrIHBvaW50ZXJzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODU3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb3Vu
dFRocmVhZEdyb3Vwcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0w
OC0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBp
T1MgMTM6IE92ZXJmbG93OmhpZGRlbiBvbiBib2R5IHByZXZlbnRzIFBERiBzY3JvbGwKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcAppbmRleCAyOTFhM2Yw
MTk0OTUwNzA3Y2U2YmRhMzZiNzA4ZmQwYWRjZDgxMDc3Li5mMmZlOWYxMzU1M2NlZWE1ZDk0MWJh
ZDI4Mzk0NjljOTA0MTkyZWJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9UaHJlYWRHcm91cC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VGhyZWFkR3JvdXAuY3BwCkBAIC0xNDIsNCArMTQyLDQ3IEBAIFRFU1QoV1RGLCBUaHJlYWRHcm91
cEFkZER1cGxpY2F0ZVRocmVhZHMpCiAgICAgfQogfQogCitzdGF0aWMgdW5zaWduZWQgY291bnRU
aHJlYWRHcm91cHMoVmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiYgdGhyZWFkcykKK3sKKyAgICB1bnNp
Z25lZCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRvJiB0aHJlYWQgOiB0aHJlYWRzKQorICAgICAg
ICBjb3VudCArPSB0aHJlYWQtPm51bWJlck9mVGhyZWFkR3JvdXBzKCk7CisKKyAgICByZXR1cm4g
Y291bnQ7Cit9CisKK1RFU1QoV1RGLCBUaHJlYWRHcm91cFJlbW92ZSkKK3sKKyAgICBjb25zdCBp
bnQgTnVtYmVyT2ZUaHJlYWRzID0gNjQ7CisKKyAgICBMb2NrIGxvY2s7CisgICAgQ29uZGl0aW9u
IHRocmVhZFJ1bm5pbmdDb25kaXRpb247CisgICAgYm9vbCB0aHJlYWRSdW5uaW5nID0gdHJ1ZTsK
KworICAgIFZlY3RvcjxSZWZQdHI8VGhyZWFkPj4gdGhyZWFkczsKKworICAgIGF1dG8gdGhyZWFk
R3JvdXAgPSBUaHJlYWRHcm91cDo6Y3JlYXRlKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBO
dW1iZXJPZlRocmVhZHM7IGkrKykgeworICAgICAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3Jl
YXRlKCJUaHJlYWRHcm91cFdvcmtlciIsIFsmXSh2b2lkKSB7CisgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihsb2NrKTsKKyAgICAgICAgICAgIHRocmVhZFJ1bm5pbmdDb25kaXRpb24ud2Fp
dChsb2NrLCBbJl0odm9pZCkgeworICAgICAgICAgICAgICAgIHJldHVybiAhdGhyZWFkUnVubmlu
ZzsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgICAgdGhyZWFkR3JvdXAtPmFk
ZCh0aHJlYWQuZ2V0KCkpOworICAgICAgICB0aHJlYWRzLmFwcGVuZChXVEZNb3ZlKHRocmVhZCkp
OworICAgIH0KKworICAgIEVYUEVDVF9FUShOdW1iZXJPZlRocmVhZHMsIGNvdW50VGhyZWFkR3Jv
dXBzKHRocmVhZHMpKTsKKworICAgIHRocmVhZEdyb3VwID0gbnVsbHB0cjsKKworICAgIEVYUEVD
VF9FUSgwLCBjb3VudFRocmVhZEdyb3Vwcyh0aHJlYWRzKSk7CisKKyAgICB0aHJlYWRSdW5uaW5n
ID0gZmFsc2U7CisgICAgdGhyZWFkUnVubmluZ0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IE51bWJlck9mVGhyZWFkczsgaSsrKQorICAgICAgICB0aHJlYWRz
W2ldLT53YWl0Rm9yQ29tcGxldGlvbigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375898</attachid>
            <date>2019-08-09 00:53:58 -0700</date>
            <delta_ts>2019-08-09 01:52:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199857-20190809165021.patch</filename>
            <type>text/plain</type>
            <size>6479</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUwODMyZWZkMzJiNjBkMGU5NWMzZThl
MmU3YWY0OTE3YzA5YTU1MDcuLmFlMjQ5OWY0MmUwZDNkZmI1NTk2ZWU0YTlhNzJhODFlMzI2ZDY0
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDgtMDkgIFRha2FzaGkgS29tb3JpICA8VGFr
YXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW1dURl0gVGhyZWFkOjpyZW1vdmVGcm9t
VGhyZWFkR3JvdXAgbGVha3Mgd2VhayBwb2ludGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBsZWFraW5nIG9mIFRocmVhZEdyb3VwJ3Mgd2Vh
ayBwb2ludGVycy4KKworICAgICAgICBUZXN0czogV1RGLlRocmVhZEdyb3VwUmVtb3ZlIEFQSSB0
ZXN0cworCisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6ZGlkRXhpdCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6YWRkVG9UaHJlYWRHcm91cCk6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwKToKKyAgICAgICAgKFdU
Rjo6VGhyZWFkOjpudW1iZXJPZlRocmVhZEdyb3Vwcyk6CisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorCiAyMDE5LTA4LTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIE9wZW5Tb3VyY2UgTWVtb3J5Rm9vdHByaW50IEFQSSBmb3IgSlNDIGNvbW1hbmQg
bGluZSB0b29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwIGIvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCAwN2U3ZDBmMjMxNjk0OTA4OGU0OTgyMDRl
ZWU5OTcwMDc1ZTRhMTMxLi43OTNjNGVjNTA5NTg0YTdmOTE5YTVhYTRhN2MzZWEyMTQ4YmQ4Nzll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTIxMSwxMCArMjExLDEwIEBAIHZvaWQgVGhyZWFkOjpk
aWRFeGl0KCkKICAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8VGhyZWFkR3JvdXA+
PiB0aHJlYWRHcm91cHM7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX211dGV4KTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRocmVh
ZEdyb3VwIDogbV90aHJlYWRHcm91cHMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRo
cmVhZEdyb3VwUG9pbnRlclBhaXIgOiBtX3RocmVhZEdyb3VwTWFwKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIElmIFRocmVhZEdyb3VwIGlzIGp1c3QgYmVpbmcgZGVzdHJveWVkLAogICAgICAg
ICAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIHVucmVnaXN0ZXJpbmcu
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHJldGFpbmVkID0gdGhyZWFkR3JvdXAubG9j
aygpKQorICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byByZXRhaW5lZCA9IHRocmVhZEdyb3Vw
UG9pbnRlclBhaXIudmFsdWUubG9jaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFk
R3JvdXBzLmFwcGVuZChXVEZNb3ZlKHJldGFpbmVkKSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIG1faXNTaHV0dGluZ0Rvd24gPSB0cnVlOwpAQCAtMjQwLDcgKzI0MCw3IEBA
IFRocmVhZEdyb3VwQWRkUmVzdWx0IFRocmVhZDo6YWRkVG9UaHJlYWRHcm91cChjb25zdCBBYnN0
cmFjdExvY2tlciYgdGhyZWFkR3JvdXBMCiAgICAgaWYgKG1faXNTaHV0dGluZ0Rvd24pCiAgICAg
ICAgIHJldHVybiBUaHJlYWRHcm91cEFkZFJlc3VsdDo6Tm90QWRkZWQ7CiAgICAgaWYgKHRocmVh
ZEdyb3VwLm1fdGhyZWFkcy5hZGQoKnRoaXMpLmlzTmV3RW50cnkpIHsKLSAgICAgICAgbV90aHJl
YWRHcm91cHMuYXBwZW5kKHRocmVhZEdyb3VwLndlYWtGcm9tVGhpcygpKTsKKyAgICAgICAgbV90
aHJlYWRHcm91cE1hcC5hZGQoJnRocmVhZEdyb3VwLCB0aHJlYWRHcm91cC53ZWFrRnJvbVRoaXMo
KSk7CiAgICAgICAgIHJldHVybiBUaHJlYWRHcm91cEFkZFJlc3VsdDo6TmV3bHlBZGRlZDsKICAg
ICB9CiAgICAgcmV0dXJuIFRocmVhZEdyb3VwQWRkUmVzdWx0OjpBbHJlYWR5QWRkZWQ7CkBAIC0y
NTIsMTEgKzI1MiwxMyBAQCB2b2lkIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiB0aHJlYWRHcm91cExvY2tlciwgVGhyZQogICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9tdXRleCk7CiAgICAgaWYgKG1faXNTaHV0dGluZ0Rvd24pCiAgICAgICAg
IHJldHVybjsKLSAgICBtX3RocmVhZEdyb3Vwcy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoYXV0
byB3ZWFrUHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIHNoYXJlZFB0ciA9IHdlYWtQdHIubG9jaygp
KQotICAgICAgICAgICAgcmV0dXJuIHNoYXJlZFB0ci5nZXQoKSA9PSAmdGhyZWFkR3JvdXA7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9KTsKKyAgICBtX3RocmVhZEdyb3VwTWFwLnJlbW92
ZSgmdGhyZWFkR3JvdXApOworfQorCit1bnNpZ25lZCBUaHJlYWQ6Om51bWJlck9mVGhyZWFkR3Jv
dXBzKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgIHJldHVy
biBtX3RocmVhZEdyb3VwTWFwLnNpemUoKTsKIH0KIAogYm9vbCBUaHJlYWQ6OmV4Y2hhbmdlSXND
b21waWxhdGlvblRocmVhZChib29sIG5ld1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCA2OTUzZjZl
ZWVmZDRjYzE3OWMzMjY2YzM0ZTY5NDVkZjMyMzdjZjRiLi5jNGQwMGIyNzdiZGJiYThhOTZkYmMx
NGIzZjMwN2YyYTAyNGVmNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KQEAgLTk1LDYgKzk2LDggQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSGFzaFNldDxUaHJlYWQqPiYgYWxsVGhyZWFkcyhjb25zdCBMb2NrSG9s
ZGVyJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMb2NrJiBhbGxUaHJlYWRzTXV0
ZXgoKTsKIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1iZXJPZlRocmVhZEdy
b3VwcygpOworCiAjaWYgT1MoV0lORE9XUykKICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZp
ZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBpZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlk
ZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4gQXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25v
dyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQpAQCAt
MjkwLDcgKzI5Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBVc2UgV29yZExvY2sgc2luY2UgV29y
ZExvY2sgZG9lcyBub3QgZGVwZW5kIG9uIFRocmVhZFNwZWNpZmljIGFuZCB0aGlzICJUaHJlYWQi
LgogICAgIFdvcmRMb2NrIG1fbXV0ZXg7CiAgICAgU3RhY2tCb3VuZHMgbV9zdGFjayB7IFN0YWNr
Qm91bmRzOjplbXB0eUJvdW5kcygpIH07Ci0gICAgVmVjdG9yPHN0ZDo6d2Vha19wdHI8VGhyZWFk
R3JvdXA+PiBtX3RocmVhZEdyb3VwczsKKyAgICBIYXNoTWFwPFRocmVhZEdyb3VwKiwgc3RkOjp3
ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1fdGhyZWFkR3JvdXBNYXA7CiAgICAgUGxhdGZvcm1UaHJl
YWRIYW5kbGUgbV9oYW5kbGU7CiAjaWYgT1MoV0lORE9XUykKICAgICBUaHJlYWRJZGVudGlmaWVy
IG1faWQgeyAwIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMDBkYjMzN2RiMTM2MjYzMGVhOGIyNjA3NDZkNWU2NTI4NDQ0ZjFiYy4uYmRmYzRj
NzFjNjIxY2EzMGY0ZGQ2OGM2N2QwMGU4ZDA0NzkwNDg3MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTA5
ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtX
VEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdlYWsgcG9pbnRlcnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4NTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmNvdW50VGhyZWFkR3JvdXBzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAy
MDE5LTA4LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gUG9zaXRpb24gaW1hZ2UgaW5mb3JtYXRpb24gc2hvdWxkIHJlc3BlY3Qg
dGhlIGltYWdlIG9yaWVudGF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9UaHJlYWRHcm91cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9U
aHJlYWRHcm91cC5jcHAKaW5kZXggMjkxYTNmMDE5NDk1MDcwN2NlNmJkYTM2YjcwOGZkMGFkY2Q4
MTA3Ny4uOGMxM2EzMjc2ODYxZDA4NDUwNTE5Yjk2N2FmYTM4ZDk3Y2I5ZGUwMyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcApAQCAtMTQyLDQgKzE0
Miw0NyBAQCBURVNUKFdURiwgVGhyZWFkR3JvdXBBZGREdXBsaWNhdGVUaHJlYWRzKQogICAgIH0K
IH0KIAorc3RhdGljIHVuc2lnbmVkIGNvdW50VGhyZWFkR3JvdXBzKFZlY3RvcjxSZWY8VGhyZWFk
Pj4mIHRocmVhZHMpCit7CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIGZvciAoYXV0byYg
dGhyZWFkIDogdGhyZWFkcykKKyAgICAgICAgY291bnQgKz0gdGhyZWFkLT5udW1iZXJPZlRocmVh
ZEdyb3VwcygpOworCisgICAgcmV0dXJuIGNvdW50OworfQorCitURVNUKFdURiwgVGhyZWFkR3Jv
dXBSZW1vdmUpCit7CisgICAgY29uc3QgdW5zaWduZWQgTnVtYmVyT2ZUaHJlYWRzID0gNjQ7CisK
KyAgICBMb2NrIGxvY2s7CisgICAgQ29uZGl0aW9uIHRocmVhZFJ1bm5pbmdDb25kaXRpb247Cisg
ICAgYm9vbCB0aHJlYWRSdW5uaW5nID0gdHJ1ZTsKKworICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4g
dGhyZWFkczsKKworICAgIGF1dG8gdGhyZWFkR3JvdXAgPSBUaHJlYWRHcm91cDo6Y3JlYXRlKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mVGhyZWFkczsgaSsrKSB7Cisg
ICAgICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3VwV29ya2VyIiwg
WyZdKCkgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKKyAgICAg
ICAgICAgIHRocmVhZFJ1bm5pbmdDb25kaXRpb24ud2FpdChsb2NrLCBbJl0oKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuICF0aHJlYWRSdW5uaW5nOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgICAgICB0aHJlYWRHcm91cC0+YWRkKHRocmVhZC5nZXQoKSk7CisgICAgICAgIHRo
cmVhZHMuYXBwZW5kKFdURk1vdmUodGhyZWFkKSk7CisgICAgfQorCisgICAgRVhQRUNUX0VRKE51
bWJlck9mVGhyZWFkcywgY291bnRUaHJlYWRHcm91cHModGhyZWFkcykpOworCisgICAgdGhyZWFk
R3JvdXAgPSBudWxscHRyOworCisgICAgRVhQRUNUX0VRKDAsIGNvdW50VGhyZWFkR3JvdXBzKHRo
cmVhZHMpKTsKKworICAgIHRocmVhZFJ1bm5pbmcgPSBmYWxzZTsKKyAgICB0aHJlYWRSdW5uaW5n
Q29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1i
ZXJPZlRocmVhZHM7IGkrKykKKyAgICAgICAgdGhyZWFkc1tpXS0+d2FpdEZvckNvbXBsZXRpb24o
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375899</attachid>
            <date>2019-08-09 01:52:48 -0700</date>
            <delta_ts>2019-08-12 20:01:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199857-20190809174911.patch</filename>
            <type>text/plain</type>
            <size>6480</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUwODMyZWZkMzJiNjBkMGU5NWMzZThl
MmU3YWY0OTE3YzA5YTU1MDcuLmFlMjQ5OWY0MmUwZDNkZmI1NTk2ZWU0YTlhNzJhODFlMzI2ZDY0
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDgtMDkgIFRha2FzaGkgS29tb3JpICA8VGFr
YXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW1dURl0gVGhyZWFkOjpyZW1vdmVGcm9t
VGhyZWFkR3JvdXAgbGVha3Mgd2VhayBwb2ludGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBsZWFraW5nIG9mIFRocmVhZEdyb3VwJ3Mgd2Vh
ayBwb2ludGVycy4KKworICAgICAgICBUZXN0czogV1RGLlRocmVhZEdyb3VwUmVtb3ZlIEFQSSB0
ZXN0cworCisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6ZGlkRXhpdCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6YWRkVG9UaHJlYWRHcm91cCk6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwKToKKyAgICAgICAgKFdU
Rjo6VGhyZWFkOjpudW1iZXJPZlRocmVhZEdyb3Vwcyk6CisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorCiAyMDE5LTA4LTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIE9wZW5Tb3VyY2UgTWVtb3J5Rm9vdHByaW50IEFQSSBmb3IgSlNDIGNvbW1hbmQg
bGluZSB0b29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwIGIvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCAwN2U3ZDBmMjMxNjk0OTA4OGU0OTgyMDRl
ZWU5OTcwMDc1ZTRhMTMxLi43OTNjNGVjNTA5NTg0YTdmOTE5YTVhYTRhN2MzZWEyMTQ4YmQ4Nzll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTIxMSwxMCArMjExLDEwIEBAIHZvaWQgVGhyZWFkOjpk
aWRFeGl0KCkKICAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8VGhyZWFkR3JvdXA+
PiB0aHJlYWRHcm91cHM7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX211dGV4KTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRocmVh
ZEdyb3VwIDogbV90aHJlYWRHcm91cHMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRo
cmVhZEdyb3VwUG9pbnRlclBhaXIgOiBtX3RocmVhZEdyb3VwTWFwKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIElmIFRocmVhZEdyb3VwIGlzIGp1c3QgYmVpbmcgZGVzdHJveWVkLAogICAgICAg
ICAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIHVucmVnaXN0ZXJpbmcu
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHJldGFpbmVkID0gdGhyZWFkR3JvdXAubG9j
aygpKQorICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byByZXRhaW5lZCA9IHRocmVhZEdyb3Vw
UG9pbnRlclBhaXIudmFsdWUubG9jaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFk
R3JvdXBzLmFwcGVuZChXVEZNb3ZlKHJldGFpbmVkKSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIG1faXNTaHV0dGluZ0Rvd24gPSB0cnVlOwpAQCAtMjQwLDcgKzI0MCw3IEBA
IFRocmVhZEdyb3VwQWRkUmVzdWx0IFRocmVhZDo6YWRkVG9UaHJlYWRHcm91cChjb25zdCBBYnN0
cmFjdExvY2tlciYgdGhyZWFkR3JvdXBMCiAgICAgaWYgKG1faXNTaHV0dGluZ0Rvd24pCiAgICAg
ICAgIHJldHVybiBUaHJlYWRHcm91cEFkZFJlc3VsdDo6Tm90QWRkZWQ7CiAgICAgaWYgKHRocmVh
ZEdyb3VwLm1fdGhyZWFkcy5hZGQoKnRoaXMpLmlzTmV3RW50cnkpIHsKLSAgICAgICAgbV90aHJl
YWRHcm91cHMuYXBwZW5kKHRocmVhZEdyb3VwLndlYWtGcm9tVGhpcygpKTsKKyAgICAgICAgbV90
aHJlYWRHcm91cE1hcC5hZGQoJnRocmVhZEdyb3VwLCB0aHJlYWRHcm91cC53ZWFrRnJvbVRoaXMo
KSk7CiAgICAgICAgIHJldHVybiBUaHJlYWRHcm91cEFkZFJlc3VsdDo6TmV3bHlBZGRlZDsKICAg
ICB9CiAgICAgcmV0dXJuIFRocmVhZEdyb3VwQWRkUmVzdWx0OjpBbHJlYWR5QWRkZWQ7CkBAIC0y
NTIsMTEgKzI1MiwxMyBAQCB2b2lkIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiB0aHJlYWRHcm91cExvY2tlciwgVGhyZQogICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9tdXRleCk7CiAgICAgaWYgKG1faXNTaHV0dGluZ0Rvd24pCiAgICAgICAg
IHJldHVybjsKLSAgICBtX3RocmVhZEdyb3Vwcy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoYXV0
byB3ZWFrUHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIHNoYXJlZFB0ciA9IHdlYWtQdHIubG9jaygp
KQotICAgICAgICAgICAgcmV0dXJuIHNoYXJlZFB0ci5nZXQoKSA9PSAmdGhyZWFkR3JvdXA7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9KTsKKyAgICBtX3RocmVhZEdyb3VwTWFwLnJlbW92
ZSgmdGhyZWFkR3JvdXApOworfQorCit1bnNpZ25lZCBUaHJlYWQ6Om51bWJlck9mVGhyZWFkR3Jv
dXBzKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgIHJldHVy
biBtX3RocmVhZEdyb3VwTWFwLnNpemUoKTsKIH0KIAogYm9vbCBUaHJlYWQ6OmV4Y2hhbmdlSXND
b21waWxhdGlvblRocmVhZChib29sIG5ld1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCA2OTUzZjZl
ZWVmZDRjYzE3OWMzMjY2YzM0ZTY5NDVkZjMyMzdjZjRiLi5jNGQwMGIyNzdiZGJiYThhOTZkYmMx
NGIzZjMwN2YyYTAyNGVmNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KQEAgLTk1LDYgKzk2LDggQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSGFzaFNldDxUaHJlYWQqPiYgYWxsVGhyZWFkcyhjb25zdCBMb2NrSG9s
ZGVyJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMb2NrJiBhbGxUaHJlYWRzTXV0
ZXgoKTsKIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1iZXJPZlRocmVhZEdy
b3VwcygpOworCiAjaWYgT1MoV0lORE9XUykKICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZp
ZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBpZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlk
ZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4gQXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25v
dyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQpAQCAt
MjkwLDcgKzI5Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBVc2UgV29yZExvY2sgc2luY2UgV29y
ZExvY2sgZG9lcyBub3QgZGVwZW5kIG9uIFRocmVhZFNwZWNpZmljIGFuZCB0aGlzICJUaHJlYWQi
LgogICAgIFdvcmRMb2NrIG1fbXV0ZXg7CiAgICAgU3RhY2tCb3VuZHMgbV9zdGFjayB7IFN0YWNr
Qm91bmRzOjplbXB0eUJvdW5kcygpIH07Ci0gICAgVmVjdG9yPHN0ZDo6d2Vha19wdHI8VGhyZWFk
R3JvdXA+PiBtX3RocmVhZEdyb3VwczsKKyAgICBIYXNoTWFwPFRocmVhZEdyb3VwKiwgc3RkOjp3
ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1fdGhyZWFkR3JvdXBNYXA7CiAgICAgUGxhdGZvcm1UaHJl
YWRIYW5kbGUgbV9oYW5kbGU7CiAjaWYgT1MoV0lORE9XUykKICAgICBUaHJlYWRJZGVudGlmaWVy
IG1faWQgeyAwIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMDBkYjMzN2RiMTM2MjYzMGVhOGIyNjA3NDZkNWU2NTI4NDQ0ZjFiYy4uYmRmYzRj
NzFjNjIxY2EzMGY0ZGQ2OGM2N2QwMGU4ZDA0NzkwNDg3MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTA5
ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtX
VEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdlYWsgcG9pbnRlcnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4NTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmNvdW50VGhyZWFkR3JvdXBzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAy
MDE5LTA4LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gUG9zaXRpb24gaW1hZ2UgaW5mb3JtYXRpb24gc2hvdWxkIHJlc3BlY3Qg
dGhlIGltYWdlIG9yaWVudGF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9UaHJlYWRHcm91cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9U
aHJlYWRHcm91cC5jcHAKaW5kZXggMjkxYTNmMDE5NDk1MDcwN2NlNmJkYTM2YjcwOGZkMGFkY2Q4
MTA3Ny4uZjQwZWRhOGI0YzNkN2U2Y2MzZmU0MTE5MzM3NzVlMDA0MzAxNzJhYiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcApAQCAtMTQyLDQgKzE0
Miw0NyBAQCBURVNUKFdURiwgVGhyZWFkR3JvdXBBZGREdXBsaWNhdGVUaHJlYWRzKQogICAgIH0K
IH0KIAorc3RhdGljIHVuc2lnbmVkIGNvdW50VGhyZWFkR3JvdXBzKFZlY3RvcjxSZWY8VGhyZWFk
Pj4mIHRocmVhZHMpCit7CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIGZvciAoYXV0byYg
dGhyZWFkIDogdGhyZWFkcykKKyAgICAgICAgY291bnQgKz0gdGhyZWFkLT5udW1iZXJPZlRocmVh
ZEdyb3VwcygpOworCisgICAgcmV0dXJuIGNvdW50OworfQorCitURVNUKFdURiwgVGhyZWFkR3Jv
dXBSZW1vdmUpCit7CisgICAgY29uc3QgdW5zaWduZWQgTnVtYmVyT2ZUaHJlYWRzID0gNjQ7CisK
KyAgICBMb2NrIGxvY2s7CisgICAgQ29uZGl0aW9uIHRocmVhZFJ1bm5pbmdDb25kaXRpb247Cisg
ICAgYm9vbCB0aHJlYWRSdW5uaW5nID0gdHJ1ZTsKKworICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4g
dGhyZWFkczsKKworICAgIGF1dG8gdGhyZWFkR3JvdXAgPSBUaHJlYWRHcm91cDo6Y3JlYXRlKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mVGhyZWFkczsgaSsrKSB7Cisg
ICAgICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3VwV29ya2VyIiwg
WyZdKCkgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKKyAgICAg
ICAgICAgIHRocmVhZFJ1bm5pbmdDb25kaXRpb24ud2FpdChsb2NrLCBbJl0oKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuICF0aHJlYWRSdW5uaW5nOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgICAgICB0aHJlYWRHcm91cC0+YWRkKHRocmVhZC5nZXQoKSk7CisgICAgICAgIHRo
cmVhZHMuYXBwZW5kKFdURk1vdmUodGhyZWFkKSk7CisgICAgfQorCisgICAgRVhQRUNUX0VRKE51
bWJlck9mVGhyZWFkcywgY291bnRUaHJlYWRHcm91cHModGhyZWFkcykpOworCisgICAgdGhyZWFk
R3JvdXAgPSBudWxscHRyOworCisgICAgRVhQRUNUX0VRKDBVLCBjb3VudFRocmVhZEdyb3Vwcyh0
aHJlYWRzKSk7CisKKyAgICB0aHJlYWRSdW5uaW5nID0gZmFsc2U7CisgICAgdGhyZWFkUnVubmlu
Z0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTnVt
YmVyT2ZUaHJlYWRzOyBpKyspCisgICAgICAgIHRocmVhZHNbaV0tPndhaXRGb3JDb21wbGV0aW9u
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>