<?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>191650</bug_id>
          
          <creation_ts>2018-11-14 12:53:19 -0800</creation_ts>
          <short_desc>[Curl] Fix Curl Request Scheduler not to release wrong Curl handle when request is cancelled.</short_desc>
          <delta_ts>2019-04-26 02:54:38 -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>Platform</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>
          <dependson>197307</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>basuke</cc>
    
    <cc>chris.reid</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>galpeter</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>takashi.komori</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1478582</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-14 12:53:19 -0800</bug_when>
    <thetext>- finalizeTransfer  is called more than once for some situation.
- CurlRequest is not removed on some situation.

The detail will follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526678</commentid>
    <comment_count>1</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-12 01:04:28 -0700</bug_when>
    <thetext>CurlRequestScheduler uses CURL pointer as job identifier, but libcurl sometimes re-use released pointer.
Therefore depending on timing, finalizeTransfer might be called more than once.

1)One CurlRequest (request A) is canceled and releases CURL* (pointer P).
2)And another CurlRequest is created (request B) and gets re-used CURL* (pointer P) same to former .
3)CurlRequestScheduler does finalize task for request A using pointer P.
4)When request B is closed, CurlRequestScheduler does finalize task using same pointer P and issue occurs.

Scheduler has to control tasks by CurlRequest* instead of CURL*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526679</commentid>
    <comment_count>2</comment_count>
      <attachid>367302</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-12 01:05:45 -0700</bug_when>
    <thetext>Created attachment 367302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526707</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-12 04:28:43 -0700</bug_when>
    <thetext>(In reply to Takashi Komori from comment #1)
&gt; 3)CurlRequestScheduler does finalize task for request A using pointer P.
&gt; 4)When request B is closed, CurlRequestScheduler does finalize task using
&gt; same pointer P and issue occurs.

How can this happen? IUUC, the sequence looks:

3) CurlRequestScheduler::finalizeTransfer post a task with the handle P
4) worker thread finilizes the handle P
5) CurlRequest::finalizeTransfer release the handle P by curl_easy_cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526708</commentid>
    <comment_count>4</comment_count>
      <attachid>367302</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-12 04:45:34 -0700</bug_when>
    <thetext>Comment on attachment 367302
Patch

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

I like overall this change.

&gt; Source/WebCore/ChangeLog:3
&gt; +        [Curl] Bug fix on Curl Request Scheduler.

Please be more informative summary.
What is bug, or what is your change.

&gt; LayoutTests/ChangeLog:9
&gt; +        * http/tests/misc/repeat-open-cancel.html: Added.

You added a new test taking more than 40 seconds to finish in a common test directory. I don&apos;t know the policy to add a new such test. I&apos;d like to hear network folks&apos; opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526731</commentid>
    <comment_count>5</comment_count>
      <attachid>367302</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-12 07:12:55 -0700</bug_when>
    <thetext>Comment on attachment 367302
Patch

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

&gt; Source/WebCore/platform/network/curl/CurlRequestScheduler.h:71
&gt; +    HashSet&lt;CurlRequestSchedulerClient*&gt; m_activeJobs;

You can remove  m_activeJobs By using m_clientMaps with client-&gt;handle().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527646</commentid>
    <comment_count>6</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-16 01:08:08 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #3)
&gt; (In reply to Takashi Komori from comment #1)
&gt; &gt; 3)CurlRequestScheduler does finalize task for request A using pointer P.
&gt; &gt; 4)When request B is closed, CurlRequestScheduler does finalize task using
&gt; &gt; same pointer P and issue occurs.
&gt; 
&gt; How can this happen? IUUC, the sequence looks:
&gt; 
&gt; 3) CurlRequestScheduler::finalizeTransfer post a task with the handle P
&gt; 4) worker thread finilizes the handle P
&gt; 5) CurlRequest::finalizeTransfer release the handle P by curl_easy_cleanup

Correctly is as follows

1) First CurlRequest(request1) is canceled. request1 has handle CURL* P.
2) cancelTransfer task for request1 is added to task queue. (TASK1)
3) Second CurlRequest(request2) is created and startTransfer task is added. (TASK2)
4) didReceiveHeader or didReceiveData callback function is invoked for request1.
5) request1 was canceled (m_cancelled is true), CurlRequest::didReceiveData/CurlRequest::didReceiveHeader return 0.
6) libcurl treats returned 0 as an error.
7) Worker thread gets CURL_WRITE_ERROR from curl_multi_info_read, and add completeTransfer task for handle P (TASK3)
8) (TASK1) is executed, handle P is released.
9) (TASK2) is executed, new handle is created P&apos; for request2 but the address of P&apos; is same as P released just before. P&apos;==P
10) (TASK3) is executed, handle P is released.
11) Because P&apos;==P request2&apos;s CURL handle is released before use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527670</commentid>
    <comment_count>7</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-16 02:14:35 -0700</bug_when>
    <thetext>I got it. Thank you for the explanation.
m_cancelled is accessed from both threads without locking a mutex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528725</commentid>
    <comment_count>8</comment_count>
      <attachid>367791</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-19 01:15:45 -0700</bug_when>
    <thetext>Created attachment 367791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528726</commentid>
    <comment_count>9</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-19 01:17:41 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #4)
&gt; Comment on attachment 367302 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367302&amp;action=review
&gt; 
&gt; I like overall this change.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        [Curl] Bug fix on Curl Request Scheduler.
&gt; 
&gt; Please be more informative summary.
&gt; What is bug, or what is your change.

Basuke Suzuki changed. Thanks! Basuke!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528727</commentid>
    <comment_count>10</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-19 01:18:44 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #5)
&gt; Comment on attachment 367302 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367302&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlRequestScheduler.h:71
&gt; &gt; +    HashSet&lt;CurlRequestSchedulerClient*&gt; m_activeJobs;
&gt; 
&gt; You can remove  m_activeJobs By using m_clientMaps with client-&gt;handle().

To control thread stopping CurlRequestScheduler::stopThreadIfNoMoreJobRunning() is using m_activeJobs.
Because Client with null CURL handle can exist (when setupTransfer failed), using m_clientMap for this purpose seems to be difficult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528728</commentid>
    <comment_count>11</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-19 01:19:03 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #7)
&gt; I got it. Thank you for the explanation.
&gt; m_cancelled is accessed from both threads without locking a mutex.

FIXED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529180</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-21 19:50:18 -0700</bug_when>
    <thetext>(In reply to Takashi Komori from comment #11)
&gt; (In reply to Fujii Hironori from comment #7)
&gt; &gt; I got it. Thank you for the explanation.
&gt; &gt; m_cancelled is accessed from both threads without locking a mutex.
&gt; 
&gt; FIXED.

Hmm, it looks badly designed to me.
What about m_curlHandle? 
m_curlHandle is written in CurlRequest::setupTransfer in curl thread,
but accessed in main thread in CurlRequest::cancel via isCompletedOrCancelled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529181</commentid>
    <comment_count>13</comment_count>
      <attachid>367791</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-21 19:53:00 -0700</bug_when>
    <thetext>Comment on attachment 367791
Patch

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

&gt; Source/WebCore/platform/network/curl/CurlRequestScheduler.cpp:99
&gt; +        LockHolder locker(m_mutex);

I think you should use holdLock.
auto locker = holdLock(lock);
https://trac.webkit.org/browser/webkit/trunk/Source/WTF/wtf/Locker.h?rev=244495#L121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529231</commentid>
    <comment_count>14</comment_count>
      <attachid>367937</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-22 06:45:34 -0700</bug_when>
    <thetext>Created attachment 367937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529232</commentid>
    <comment_count>15</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-22 06:47:47 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #12)
&gt; (In reply to Takashi Komori from comment #11)
&gt; &gt; (In reply to Fujii Hironori from comment #7)
&gt; &gt; &gt; I got it. Thank you for the explanation.
&gt; &gt; &gt; m_cancelled is accessed from both threads without locking a mutex.
&gt; &gt; 
&gt; &gt; FIXED.
&gt; 
&gt; Hmm, it looks badly designed to me.
&gt; What about m_curlHandle? 
&gt; m_curlHandle is written in CurlRequest::setupTransfer in curl thread,
&gt; but accessed in main thread in CurlRequest::cancel via
&gt; isCompletedOrCancelled.

Before patch CurlRequest::cancel was using isCompletedOrCancelled but with new patch it isn&apos;t using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529233</commentid>
    <comment_count>16</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-22 06:50:04 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #13)
&gt; Comment on attachment 367791 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367791&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlRequestScheduler.cpp:99
&gt; &gt; +        LockHolder locker(m_mutex);
&gt; 
&gt; I think you should use holdLock.
&gt; auto locker = holdLock(lock);
&gt; https://trac.webkit.org/browser/webkit/trunk/Source/WTF/wtf/Locker.
&gt; h?rev=244495#L121

Applied holdLock to new added m_cancelMutex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529234</commentid>
    <comment_count>17</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-22 07:05:03 -0700</bug_when>
    <thetext>(In reply to Takashi Komori from comment #15)
&gt; Before patch CurlRequest::cancel was using isCompletedOrCancelled but with
&gt; new patch it isn&apos;t using.

Oh, you are right?

How about other call sites of isCompletedOrCancelled?
For example, CurlRequest::pausedStatusChanged?

How about other member variables?
For example, m_formDataStream?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529539</commentid>
    <comment_count>18</comment_count>
      <attachid>368019</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-23 01:32:04 -0700</bug_when>
    <thetext>Created attachment 368019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529540</commentid>
    <comment_count>19</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-23 01:33:11 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #17)
&gt; (In reply to Takashi Komori from comment #15)
&gt; &gt; Before patch CurlRequest::cancel was using isCompletedOrCancelled but with
&gt; &gt; new patch it isn&apos;t using.
&gt; 
&gt; Oh, you are right?
&gt; 
&gt; How about other call sites of isCompletedOrCancelled?
&gt; For example, CurlRequest::pausedStatusChanged?

Introduced m_statusMutex. Now m_curlHandle is not accessed from main thread directly.

&gt; How about other member variables?
&gt; For example, m_formDataStream?

About other variables and functions, we have a plan to re-design scheduler to split tasks for main thread and worker thread completely.
In this ticket, we should focus on fixing curl scheduler&apos;s incorrect behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530307</commentid>
    <comment_count>20</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-24 22:18:10 -0700</bug_when>
    <thetext>(In reply to Takashi Komori from comment #19)
&gt; About other variables and functions, we have a plan to re-design scheduler
&gt; to split tasks for main thread and worker thread completely.
&gt; In this ticket, we should focus on fixing curl scheduler&apos;s incorrect
&gt; behavior.

Sounds a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530308</commentid>
    <comment_count>21</comment_count>
      <attachid>368019</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-24 22:23:09 -0700</bug_when>
    <thetext>Comment on attachment 368019
Patch

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

&gt; Source/WebCore/platform/network/curl/CurlRequestScheduler.cpp:104
&gt;      m_runThread = false;

In the original code, m_runThread was guarded by m_mutex.
However, m_runThread is not guarded by m_mutex consistently. It makes no sence to fix only this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530611</commentid>
    <comment_count>22</comment_count>
      <attachid>368298</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-25 20:00:53 -0700</bug_when>
    <thetext>Created attachment 368298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530612</commentid>
    <comment_count>23</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-25 20:01:29 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #21)
&gt; Comment on attachment 368019 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=368019&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CurlRequestScheduler.cpp:104
&gt; &gt;      m_runThread = false;
&gt; 
&gt; In the original code, m_runThread was guarded by m_mutex.
&gt; However, m_runThread is not guarded by m_mutex consistently. It makes no
&gt; sence to fix only this one.

Fixed mutex guard for m_runThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530613</commentid>
    <comment_count>24</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-04-25 20:03:20 -0700</bug_when>
    <thetext>Attachment 368298 did not pass style-queue:


ERROR: Source/WebCore/platform/network/curl/CurlRequestScheduler.cpp:152:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530628</commentid>
    <comment_count>25</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2019-04-25 22:54:10 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #24)
&gt; Attachment 368298 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebCore/platform/network/curl/CurlRequestScheduler.cpp:152: 
&gt; This { should be at the end of the previous line  [whitespace/braces] [4]
&gt; Total errors found: 1 in 8 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

Style checker&apos;s behavior seems to be wrong.
Block in while loop must be valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530655</commentid>
    <comment_count>26</comment_count>
      <attachid>368298</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-26 02:52:55 -0700</bug_when>
    <thetext>Comment on attachment 368298
Patch

Clearing flags on attachment: 368298

Committed r244684: &lt;https://trac.webkit.org/changeset/244684&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530656</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-26 02:52:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530657</commentid>
    <comment_count>28</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-26 02:54:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/50237955&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367302</attachid>
            <date>2019-04-12 01:05:45 -0700</date>
            <delta_ts>2019-04-19 01:15:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191650-20190412170248.patch</filename>
            <type>text/plain</type>
            <size>10171</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4MDZhYTc0ZmU0Y2Fm
M2I1NWI3M2ZhZjE2ZjUwNWUyNDc5ZjM5ZS4uNTMxMmM5YjU3MzJlNTA3MDQ1Yjc2OTIyNGY0YjA1
Y2MwNDI1M2JjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA0LTEyICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBC
dWcgZml4IG9uIEN1cmwgUmVxdWVzdCBTY2hlZHVsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9w
ZW4tY2FuY2VsLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZGlkQ29tcGxldGVUcmFu
c2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYW5jZWwp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5v
TW9yZUpvYlJ1bm5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6
OndvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6
c3RhcnRUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6
Y29tcGxldGVUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxl
cjo6Y2FuY2VsVHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVs
ZXI6OmZpbmFsaXplVHJhbnNmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdFNjaGVkdWxlci5oOgorCiAyMDE5LTA0LTA5ICBLZWl0aCBSb2xsaW4gIDxrcm9s
bGluQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIG1haW50ZW5hbmNlIC0t
IHVwZGF0ZSAueGNmaWxlbGlzdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAzYWFmODkxMTgwYmFmMzBiMDg2NjJj
YTcwMTIxZDFiNWU5MTcyMDYzLi40MjhjN2YyMzg4MWE2YmViOGRhZTU5ODcyYmM5ZmEwYjJlZmRj
Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB2b2lk
IEN1cmxSZXF1ZXN0OjpkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlIHJlc3VsdCkKIHsKICAg
ICBpZiAobV9jYW5jZWxsZWQpIHsKLSAgICAgICAgbV9jdXJsSGFuZGxlID0gbnVsbHB0cjsKKyAg
ICAgICAgZGlkQ2FuY2VsVHJhbnNmZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5jcHAKaW5kZXggMTFmMjEwMDI3MDVkMjRjZTE1ZTNlOGIxZjQ2YThi
NGVlZTRiODg2NC4uNDdmZDU3Y2U4ODlkOGJjMGE2YzMzNjE0Mzg5ODMyYTRjMTM1MTI5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCkBAIC01OCwxMCArNTgsMTAgQEAgdm9pZCBDdXJsUmVx
dWVzdFNjaGVkdWxlcjo6Y2FuY2VsKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmICghY2xpZW50IHx8ICFj
bGllbnQtPmhhbmRsZSgpKQorICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjYW5jZWxUcmFuc2ZlcihjbGllbnQtPmhhbmRsZSgpKTsKKyAgICBjYW5jZWxUcmFuc2Zlcihj
bGllbnQpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJl
YWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTk1LDEyICs5NSwxMSBAQCB2b2lk
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChtX2FjdGl2ZUpvYnMuc2l6
ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsK
LSAgICBpZiAobV90YXNrUXVldWUuc2l6ZSgpKQotICAgICAgICByZXR1cm47CisgICAgeworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgaWYgKG1fYWN0aXZlSm9i
cy5zaXplKCkgfHwgbV90YXNrUXVldWUuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIG1fcnVuVGhyZWFkID0gZmFsc2U7CiB9CkBAIC0xNzcsNyArMTc2LDggQEAgdm9p
ZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKCkKICAgICAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICAgICAgQVNTRVJUKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSk7Ci0g
ICAgICAgICAgICBjb21wbGV0ZVRyYW5zZmVyKG1zZy0+ZWFzeV9oYW5kbGUsIG1zZy0+ZGF0YS5y
ZXN1bHQpOworICAgICAgICAgICAgaWYgKGF1dG8gY2xpZW50ID0gbV9jbGllbnRNYXBzLmlubGlu
ZUdldChtc2ctPmVhc3lfaGFuZGxlKSkKKyAgICAgICAgICAgICAgICBjb21wbGV0ZVRyYW5zZmVy
KGNsaWVudCwgbXNnLT5kYXRhLnJlc3VsdCk7CiAgICAgICAgIH0KIAogICAgICAgICBzdG9wVGhy
ZWFkSWZOb01vcmVKb2JSdW5uaW5nKCk7CkBAIC0xOTIsNDkgKzE5Miw1OSBAQCB2b2lkIEN1cmxS
ZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50
KiBjbGllbnQpCiAKICAgICBhdXRvIHRhc2sgPSBbdGhpcywgY2xpZW50XSgpIHsKICAgICAgICAg
Q1VSTCogaGFuZGxlID0gY2xpZW50LT5zZXR1cFRyYW5zZmVyKCk7Ci0gICAgICAgIGlmICghaGFu
ZGxlKQorICAgICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAgICAgY29tcGxldGVUcmFuc2Zl
cihjbGllbnQsIENVUkxFX0ZBSUxFRF9JTklUKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogCi0gICAgICAgIG1fYWN0aXZlSm9icy5hZGQoaGFuZGxlLCBjbGllbnQpOwogICAgICAg
ICBtX2N1cmxNdWx0aUhhbmRsZS0+YWRkSGFuZGxlKGhhbmRsZSk7CisKKyAgICAgICAgQVNTRVJU
KCFtX2NsaWVudE1hcHMuY29udGFpbnMoaGFuZGxlKSk7CisgICAgICAgIG1fY2xpZW50TWFwcy5z
ZXQoaGFuZGxlLCBjbGllbnQpOwogICAgIH07CiAKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211
dGV4KTsKKyAgICBtX2FjdGl2ZUpvYnMuYWRkKGNsaWVudCk7CiAgICAgbV90YXNrUXVldWUuYXBw
ZW5kKFdURk1vdmUodGFzaykpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjb21w
bGV0ZVRyYW5zZmVyKENVUkwqIGhhbmRsZSwgQ1VSTGNvZGUgcmVzdWx0KQordm9pZCBDdXJsUmVx
dWVzdFNjaGVkdWxlcjo6Y29tcGxldGVUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVu
dCogY2xpZW50LCBDVVJMY29kZSByZXN1bHQpCiB7Ci0gICAgZmluYWxpemVUcmFuc2ZlcihoYW5k
bGUsIFtyZXN1bHRdKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpIHsKKyAgICBm
aW5hbGl6ZVRyYW5zZmVyKGNsaWVudCwgW2NsaWVudCwgcmVzdWx0XSgpIHsKICAgICAgICAgY2xp
ZW50LT5kaWRDb21wbGV0ZVRyYW5zZmVyKHJlc3VsdCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbFRyYW5zZmVyKENVUkwqIGhhbmRsZSkKK3ZvaWQgQ3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xp
ZW50KiBjbGllbnQpCiB7Ci0gICAgZmluYWxpemVUcmFuc2ZlcihoYW5kbGUsIFtdKEN1cmxSZXF1
ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpIHsKKyAgICBmaW5hbGl6ZVRyYW5zZmVyKGNsaWVu
dCwgW2NsaWVudF0oKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkQ2FuY2VsVHJhbnNmZXIoKTsKICAg
ICB9KTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZmluYWxpemVUcmFuc2ZlcihD
VVJMKiBoYW5kbGUsIEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqKT4g
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpmaW5hbGl6ZVRy
YW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQsIEZ1bmN0aW9uPHZvaWQo
KT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byB0YXNrID0gW3RoaXMsIGhhbmRsZSwg
Y29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKLSAgICAgICAgaWYg
KCFtX2FjdGl2ZUpvYnMuY29udGFpbnMoaGFuZGxlKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKIAotICAgICAgICBDdXJsUmVxdWVzdFNjaGVk
dWxlckNsaWVudCogY2xpZW50ID0gbV9hY3RpdmVKb2JzLmlubGluZUdldChoYW5kbGUpOworICAg
IGlmICghbV9hY3RpdmVKb2JzLmNvbnRhaW5zKGNsaWVudCkpCisgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+cmVtb3ZlSGFuZGxlKGhhbmRsZSk7Ci0gICAgICAg
IG1fYWN0aXZlSm9icy5yZW1vdmUoaGFuZGxlKTsKLSAgICAgICAgY29tcGxldGlvbihjbGllbnQp
OworICAgIG1fYWN0aXZlSm9icy5yZW1vdmUoY2xpZW50KTsKKworICAgIGF1dG8gdGFzayA9IFt0
aGlzLCBjbGllbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgeworICAgICAgICBpZiAoY2xpZW50LT5oYW5kbGUoKSkgeworICAgICAgICAgICAgQVNT
RVJUKG1fY2xpZW50TWFwcy5jb250YWlucyhjbGllbnQtPmhhbmRsZSgpKSk7CisgICAgICAgICAg
ICBtX2NsaWVudE1hcHMucmVtb3ZlKGNsaWVudC0+aGFuZGxlKCkpOworICAgICAgICAgICAgbV9j
dXJsTXVsdGlIYW5kbGUtPnJlbW92ZUhhbmRsZShjbGllbnQtPmhhbmRsZSgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbY2xpZW50XSgpIHsKICAgICAgICAgICAgIGNsaWVudC0+cmVsZWFzZSgpOwogICAgICAg
ICB9KTsKICAgICB9OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleCk7CiAgICAgbV90
YXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5o
CmluZGV4IDI2NGI5MGUxMDZiOTMwYmQzYjQwYzJhNjkwNTBmMDViZGY5OWZhMGUuLjJkOGVjYmQ2
OTFmZjZjODI4NDI4OWRhZWQwZDU5ZGM4MWJmM2ZmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5o
CkBAIC01OSwxNiArNTksMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdvcmtlclRocmVhZCgpOwog
CiAgICAgdm9pZCBzdGFydFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kik7Ci0g
ICAgdm9pZCBjb21wbGV0ZVRyYW5zZmVyKENVUkwqLCBDVVJMY29kZSk7Ci0gICAgdm9pZCBjYW5j
ZWxUcmFuc2ZlcihDVVJMKik7Ci0gICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKENVUkwqLCBGdW5j
dGlvbjx2b2lkKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kik+KTsKKyAgICB2b2lkIGNvbXBs
ZXRlVHJhbnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqLCBDVVJMY29kZSk7CisgICAg
dm9pZCBjYW5jZWxUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCopOworICAgIHZv
aWQgZmluYWxpemVUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCosIEZ1bmN0aW9u
PHZvaWQoKT4pOwogCiAgICAgbXV0YWJsZSBMb2NrIG1fbXV0ZXg7CiAgICAgUmVmUHRyPFRocmVh
ZD4gbV90aHJlYWQ7CiAgICAgYm9vbCBtX3J1blRocmVhZCB7IGZhbHNlIH07CiAKICAgICBWZWN0
b3I8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrUXVldWU7Ci0gICAgSGFzaE1hcDxDVVJMKiwgQ3Vy
bFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqPiBtX2FjdGl2ZUpvYnM7CisgICAgSGFzaFNldDxDdXJs
UmVxdWVzdFNjaGVkdWxlckNsaWVudCo+IG1fYWN0aXZlSm9iczsKKyAgICBIYXNoTWFwPENVUkwq
LCBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCo+IG1fY2xpZW50TWFwczsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDdXJsTXVsdGlIYW5kbGU+IG1fY3VybE11bHRpSGFuZGxlOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MmQ1YzhhZTI5ZjlkYzRjN2UwZWYzNjNkZGQxYmQyOTc1ZjhlY2M1OC4uYWIzZDY4ZGRlODA0NDc2
NWQ4M2I4ZWMyYTQ5YmUwMjNjMDM0ODQ0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA0
LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAg
IFtDdXJsXSBCdWcgZml4IG9uIEN1cmwgUmVxdWVzdCBTY2hlZHVsZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE2NTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9yZXBl
YXQtb3Blbi1jYW5jZWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L21pc2MvcmVwZWF0LW9wZW4tY2FuY2VsLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA0LTA5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBSZXNvdXJjZSBM
b2FkIFN0YXRpc3RpY3MgdGVzdCBjYXNlIGZvciBQaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2FuY2VsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXBlYXQtb3Blbi1jYW5jZWwtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgzYzA4MWVmM2E2ODEzMjhmYzZmMzlkNjEyMDE0NmU1YzZkMzE3NGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2Fu
Y2VsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjUwLgorCitJbiBjYXNlIHRo
YXQgc2V2ZXJhbCByZXF1ZXN0cyBhcmUgY2xvc2VkIGFuZCBjcmVhdGVkIHByZXR0eSBmYXN0LCBh
IHJlc3VsdCBvZiBvbGQgcmVxdWVzdCBzb21ldGltZXMgZ29lcyB0byBhIHdyb25nIHJlcXVlc3Qu
CisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXBlYXQt
b3Blbi1jYW5jZWwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXBlYXQtb3Bl
bi1jYW5jZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWMxNjFhMWIwMzQwZTZkZjhmNmNiZDliMTI5YzBl
Zjk2ZTMyZmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L3JlcGVhdC1vcGVuLWNhbmNlbC5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgordmFyIHJlcGVhdENvdW50ID0gMDsKKworZnVuY3Rpb24gc2VuZFJlcXVlc3Qo
KSB7CisgICAgdmFyIGZpcnN0UmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgZmlyc3RS
ZXEub3BlbigiR0VUIiwgIi9yZXNvdXJjZXMvZG93bmxvYWQtanNvbi13aXRoLWRlbGF5LnBocD9p
dGVyYXRpb249MTAwJmRlbGF5PTEiKTsKKworICAgIGZpcnN0UmVxLm9ucmVhZHlzdGF0ZWNoYW5n
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoZmlyc3RSZXEucmVhZHlTdGF0ZSA9PSBmaXJz
dFJlcS5IRUFERVJTX1JFQ0VJVkVEKSB7CisgICAgICAgICAgICB2YXIgc2Vjb25kUmVxID0gbmV3
IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgICAgICBzZWNvbmRSZXEub3BlbigiR0VUIiwgIi9y
ZXNvdXJjZXMvZG93bmxvYWQtanNvbi13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249MTAmZGVsYXk9
MCIpOworCisgICAgICAgICAgICBzZWNvbmRSZXEub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHJlcGVhdENvdW50KysgPCA0MCkKKyAgICAgICAgICAgICAgICAgICAg
c2VuZFJlcXVlc3QoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9ICJQQVNTIjsK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWNvbmRSZXEub25lcnJvciA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5pbm5lclRleHQgPSAiRkFJTCI7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpcnN0UmVxLmFib3J0
KCk7CisgICAgICAgICAgICBzZWNvbmRSZXEuc2VuZCgpOworICAgICAgICB9CisgICAgfQorCisg
ICAgZmlyc3RSZXEuc2VuZCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorCisgICAgc2VuZFJlcXVl
c3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
PHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTE2NTAuPC9wPgorPHA+SW4gY2FzZSB0aGF0IHNldmVyYWwgcmVxdWVzdHMgYXJlIGNs
b3NlZCBhbmQgY3JlYXRlZCBwcmV0dHkgZmFzdCwgYSByZXN1bHQgb2Ygb2xkIHJlcXVlc3Qgc29t
ZXRpbWVzIGdvZXMgdG8gYSB3cm9uZyByZXF1ZXN0LjwvcD4KKzxwIGlkPSJyZXN1bHQiPlJVTk5J
Tkc8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367791</attachid>
            <date>2019-04-19 01:15:45 -0700</date>
            <delta_ts>2019-04-22 06:45:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191650-20190419171252.patch</filename>
            <type>text/plain</type>
            <size>12233</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4MDZhYTc0ZmU0Y2Fm
M2I1NWI3M2ZhZjE2ZjUwNWUyNDc5ZjM5ZS4uOGU3ZTE5YTM0NTFjZDVkMmFjZjAyZWNmZDBmODg3
NTNiMTA5MTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTA0LTE5ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBG
aXggQ3VybCBSZXF1ZXN0IFNjaGVkdWxlciBub3QgdG8gcmVsZWFzZSB3cm9uZyBDdXJsIGhhbmRs
ZSB3aGVuIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNh
bmNlbC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNhbmNlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVxdWVzdDo6aXNDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3Q6OmRpZENvbXBsZXRlVHJhbnNmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6Omlz
Q29tcGxldGVkT3JDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6Omlz
Q2FuY2VsbGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0
Ojppc0NvbXBsZXRlZE9yQ2FuY2VsbGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RvcFRocmVhZElmTm9Nb3JlSm9iUnVubmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjb21wbGV0ZVRyYW5zZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYW5jZWxUcmFuc2Zlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZmluYWxpemVUcmFuc2Zlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmg6
CisKIDIwMTktMDQtMDkgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgbWFpbnRlbmFuY2UgLS0gdXBkYXRlIC54Y2ZpbGVsaXN0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCmluZGV4IDNhYWY4OTExODBiYWYzMGIwODY2MmNhNzAxMjFkMWI1ZTkxNzIwNjMuLmI5
Zjk4NGNiYWFlN2ExYjgzNDgwMTZkYjVkNDFlZTg1YjQ4Yjg1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMTI2
LDEwICsxMjYsMTMgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FuY2VsKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fY2FuY2VsTXV0
ZXgpOworICAgICAgICBpZiAobV9jYW5jZWxsZWQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2NhbmNlbGxlZCA9IHRydWU7CisgICAgICAgIG1fY2FuY2VsbGVkID0gdHJ1ZTsKKyAgICB9
CiAKICAgICBhdXRvJiBzY2hlZHVsZXIgPSBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2NoZWR1
bGVyKCk7CiAKQEAgLTE0Myw2ICsxNDYsMTIgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FuY2VsKCkK
ICAgICBpbnZhbGlkYXRlQ2xpZW50KCk7CiB9CiAKK2Jvb2wgQ3VybFJlcXVlc3Q6OmlzQ2FuY2Vs
bGVkKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9jYW5jZWxNdXRleCk7CisgICAgcmV0dXJu
IG1fY2FuY2VsbGVkOworfQorCiB2b2lkIEN1cmxSZXF1ZXN0OjpzdXNwZW5kKCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNDE1LDggKzQyNCw4IEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIAogdm9pZCBDdXJsUmVxdWVzdDo6ZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSByZXN1
bHQpCiB7Ci0gICAgaWYgKG1fY2FuY2VsbGVkKSB7Ci0gICAgICAgIG1fY3VybEhhbmRsZSA9IG51
bGxwdHI7CisgICAgaWYgKGlzQ2FuY2VsbGVkKCkpIHsKKyAgICAgICAgZGlkQ2FuY2VsVHJhbnNm
ZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA4YWM0OGU5NGQ4NDFmNjc0
MzlkZjNjOTkzNGU4YTRmNzQ0M2IzZDQxLi5kZjc0ZDdlYzIxYmQ0OTU1OGY1NTQ4MWRjZmY3NGY0
MDQ5OWVlMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuaApAQCAtODQsOCArODQsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVz
dDsgfQogICAgIGJvb2wgaXNDb21wbGV0ZWQoKSBjb25zdCB7IHJldHVybiAhbV9jdXJsSGFuZGxl
OyB9Ci0gICAgYm9vbCBpc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGVkOyB9
Ci0gICAgYm9vbCBpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gaXNDb21w
bGV0ZWQoKSB8fCBpc0NhbmNlbGxlZCgpOyB9CisgICAgYm9vbCBpc0NhbmNlbGxlZCgpOworICAg
IGJvb2wgaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpIHsgcmV0dXJuIGlzQ29tcGxldGVkKCkgfHwg
aXNDYW5jZWxsZWQoKTsgfQogICAgIFNlY29uZHMgdGltZW91dEludGVydmFsKCkgY29uc3Q7CiAK
ICAgICBjb25zdCBTdHJpbmcmIHVzZXIoKSBjb25zdCB7IHJldHVybiBtX3VzZXI7IH0KQEAgLTE2
Niw2ICsxNjYsNyBAQCBwcml2YXRlOgogCiAKICAgICBDdXJsUmVxdWVzdENsaWVudCogbV9jbGll
bnQgeyB9OworICAgIExvY2sgbV9jYW5jZWxNdXRleDsKICAgICBib29sIG1fY2FuY2VsbGVkIHsg
ZmFsc2UgfTsKICAgICBNZXNzYWdlUXVldWU8RnVuY3Rpb248dm9pZCgpPj4qIG1fbWVzc2FnZVF1
ZXVlIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKaW5kZXggMTFmMjEwMDI3MDVkMjRj
ZTE1ZTNlOGIxZjQ2YThiNGVlZTRiODg2NC4uNDdmZDU3Y2U4ODlkOGJjMGE2YzMzNjE0Mzg5ODMy
YTRjMTM1MTI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCkBAIC01OCwxMCArNTgsMTAg
QEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FuY2VsKEN1cmxSZXF1ZXN0U2NoZWR1bGVy
Q2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlm
ICghY2xpZW50IHx8ICFjbGllbnQtPmhhbmRsZSgpKQorICAgIGlmICghY2xpZW50KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjYW5jZWxUcmFuc2ZlcihjbGllbnQtPmhhbmRsZSgpKTsKKyAgICBj
YW5jZWxUcmFuc2ZlcihjbGllbnQpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpj
YWxsT25Xb3JrZXJUaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTk1LDEy
ICs5NSwxMSBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdG9wVGhyZWFkSWZOb01vcmVK
b2JSdW5uaW5nKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmICht
X2FjdGl2ZUpvYnMuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX211dGV4KTsKLSAgICBpZiAobV90YXNrUXVldWUuc2l6ZSgpKQotICAgICAgICByZXR1
cm47CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAg
aWYgKG1fYWN0aXZlSm9icy5zaXplKCkgfHwgbV90YXNrUXVldWUuc2l6ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fcnVuVGhyZWFkID0gZmFsc2U7CiB9CkBAIC0xNzcs
NyArMTc2LDggQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKCkKICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgQVNTRVJUKG1zZy0+bXNnID09IENV
UkxNU0dfRE9ORSk7Ci0gICAgICAgICAgICBjb21wbGV0ZVRyYW5zZmVyKG1zZy0+ZWFzeV9oYW5k
bGUsIG1zZy0+ZGF0YS5yZXN1bHQpOworICAgICAgICAgICAgaWYgKGF1dG8gY2xpZW50ID0gbV9j
bGllbnRNYXBzLmlubGluZUdldChtc2ctPmVhc3lfaGFuZGxlKSkKKyAgICAgICAgICAgICAgICBj
b21wbGV0ZVRyYW5zZmVyKGNsaWVudCwgbXNnLT5kYXRhLnJlc3VsdCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCk7CkBAIC0xOTIsNDkgKzE5Miw1
OSBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKEN1cmxSZXF1ZXN0
U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpCiAKICAgICBhdXRvIHRhc2sgPSBbdGhpcywgY2xpZW50
XSgpIHsKICAgICAgICAgQ1VSTCogaGFuZGxlID0gY2xpZW50LT5zZXR1cFRyYW5zZmVyKCk7Ci0g
ICAgICAgIGlmICghaGFuZGxlKQorICAgICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAgICAg
Y29tcGxldGVUcmFuc2ZlcihjbGllbnQsIENVUkxFX0ZBSUxFRF9JTklUKTsKICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgIG1fYWN0aXZlSm9icy5hZGQoaGFuZGxlLCBj
bGllbnQpOwogICAgICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+YWRkSGFuZGxlKGhhbmRsZSk7CisK
KyAgICAgICAgQVNTRVJUKCFtX2NsaWVudE1hcHMuY29udGFpbnMoaGFuZGxlKSk7CisgICAgICAg
IG1fY2xpZW50TWFwcy5zZXQoaGFuZGxlLCBjbGllbnQpOwogICAgIH07CiAKICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICBtX2FjdGl2ZUpvYnMuYWRkKGNsaWVudCk7CiAgICAg
bV90YXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0
U2NoZWR1bGVyOjpjb21wbGV0ZVRyYW5zZmVyKENVUkwqIGhhbmRsZSwgQ1VSTGNvZGUgcmVzdWx0
KQordm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y29tcGxldGVUcmFuc2ZlcihDdXJsUmVxdWVz
dFNjaGVkdWxlckNsaWVudCogY2xpZW50LCBDVVJMY29kZSByZXN1bHQpCiB7Ci0gICAgZmluYWxp
emVUcmFuc2ZlcihoYW5kbGUsIFtyZXN1bHRdKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBj
bGllbnQpIHsKKyAgICBmaW5hbGl6ZVRyYW5zZmVyKGNsaWVudCwgW2NsaWVudCwgcmVzdWx0XSgp
IHsKICAgICAgICAgY2xpZW50LT5kaWRDb21wbGV0ZVRyYW5zZmVyKHJlc3VsdCk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbFRyYW5zZmVyKENVUkwqIGhh
bmRsZSkKK3ZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbFRyYW5zZmVyKEN1cmxSZXF1
ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgZmluYWxpemVUcmFuc2ZlcihoYW5k
bGUsIFtdKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpIHsKKyAgICBmaW5hbGl6
ZVRyYW5zZmVyKGNsaWVudCwgW2NsaWVudF0oKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkQ2FuY2Vs
VHJhbnNmZXIoKTsKICAgICB9KTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Zmlu
YWxpemVUcmFuc2ZlcihDVVJMKiBoYW5kbGUsIEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3RTY2hl
ZHVsZXJDbGllbnQqKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1
bGVyOjpmaW5hbGl6ZVRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQs
IEZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byB0YXNrID0g
W3RoaXMsIGhhbmRsZSwgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IHsKLSAgICAgICAgaWYgKCFtX2FjdGl2ZUpvYnMuY29udGFpbnMoaGFuZGxlKSkKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKIAotICAgICAgICBD
dXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCogY2xpZW50ID0gbV9hY3RpdmVKb2JzLmlubGluZUdl
dChoYW5kbGUpOworICAgIGlmICghbV9hY3RpdmVKb2JzLmNvbnRhaW5zKGNsaWVudCkpCisgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+cmVtb3ZlSGFuZGxlKGhh
bmRsZSk7Ci0gICAgICAgIG1fYWN0aXZlSm9icy5yZW1vdmUoaGFuZGxlKTsKLSAgICAgICAgY29t
cGxldGlvbihjbGllbnQpOworICAgIG1fYWN0aXZlSm9icy5yZW1vdmUoY2xpZW50KTsKKworICAg
IGF1dG8gdGFzayA9IFt0aGlzLCBjbGllbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgeworICAgICAgICBpZiAoY2xpZW50LT5oYW5kbGUoKSkgewor
ICAgICAgICAgICAgQVNTRVJUKG1fY2xpZW50TWFwcy5jb250YWlucyhjbGllbnQtPmhhbmRsZSgp
KSk7CisgICAgICAgICAgICBtX2NsaWVudE1hcHMucmVtb3ZlKGNsaWVudC0+aGFuZGxlKCkpOwor
ICAgICAgICAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnJlbW92ZUhhbmRsZShjbGllbnQtPmhhbmRs
ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbY2xpZW50XSgpIHsKICAgICAgICAgICAgIGNsaWVudC0+cmVs
ZWFzZSgpOwogICAgICAgICB9KTsKICAgICB9OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9t
dXRleCk7CiAgICAgbV90YXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5oCmluZGV4IDI2NGI5MGUxMDZiOTMwYmQzYjQwYzJhNjkwNTBmMDViZGY5
OWZhMGUuLjJkOGVjYmQ2OTFmZjZjODI4NDI4OWRhZWQwZDU5ZGM4MWJmM2ZmZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVk
dWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5oCkBAIC01OSwxNiArNTksMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdv
cmtlclRocmVhZCgpOwogCiAgICAgdm9pZCBzdGFydFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1
bGVyQ2xpZW50Kik7Ci0gICAgdm9pZCBjb21wbGV0ZVRyYW5zZmVyKENVUkwqLCBDVVJMY29kZSk7
Ci0gICAgdm9pZCBjYW5jZWxUcmFuc2ZlcihDVVJMKik7Ci0gICAgdm9pZCBmaW5hbGl6ZVRyYW5z
ZmVyKENVUkwqLCBGdW5jdGlvbjx2b2lkKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kik+KTsK
KyAgICB2b2lkIGNvbXBsZXRlVHJhbnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqLCBD
VVJMY29kZSk7CisgICAgdm9pZCBjYW5jZWxUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNs
aWVudCopOworICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNs
aWVudCosIEZ1bmN0aW9uPHZvaWQoKT4pOwogCiAgICAgbXV0YWJsZSBMb2NrIG1fbXV0ZXg7CiAg
ICAgUmVmUHRyPFRocmVhZD4gbV90aHJlYWQ7CiAgICAgYm9vbCBtX3J1blRocmVhZCB7IGZhbHNl
IH07CiAKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrUXVldWU7Ci0gICAgSGFz
aE1hcDxDVVJMKiwgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqPiBtX2FjdGl2ZUpvYnM7Cisg
ICAgSGFzaFNldDxDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCo+IG1fYWN0aXZlSm9iczsKKyAg
ICBIYXNoTWFwPENVUkwqLCBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCo+IG1fY2xpZW50TWFw
czsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVsdGlIYW5kbGU+IG1fY3VybE11bHRpSGFu
ZGxlOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMmQ1YzhhZTI5ZjlkYzRjN2UwZWYzNjNkZGQxYmQyOTc1ZjhlY2M1OC4u
M2MwNGJhZWI0OWM5NzM2OTM5NmQwYjc5ZTI0NmJkOTJkMDQzNGUxZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE5LTA0LTE5ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnku
Y29tPgorCisgICAgICAgIFtDdXJsXSBGaXggQ3VybCBSZXF1ZXN0IFNjaGVkdWxlciBub3QgdG8g
cmVsZWFzZSB3cm9uZyBDdXJsIGhhbmRsZSB3aGVuIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjUwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L21pc2MvcmVwZWF0LW9wZW4tY2FuY2VsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNhbmNlbC5odG1sOiBBZGRlZC4KKwogMjAxOS0w
NC0wOSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIHRlc3QgY2FzZSBmb3IgUGluZwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNhbmNlbC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2FuY2VsLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44M2MwODFlZjNhNjgxMzI4ZmM2ZjM5ZDYxMjAxNDZlNWM2ZDMx
NzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3JlcGVh
dC1vcGVuLWNhbmNlbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIGlzIGEgdGVz
dCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTY1MC4KKwor
SW4gY2FzZSB0aGF0IHNldmVyYWwgcmVxdWVzdHMgYXJlIGNsb3NlZCBhbmQgY3JlYXRlZCBwcmV0
dHkgZmFzdCwgYSByZXN1bHQgb2Ygb2xkIHJlcXVlc3Qgc29tZXRpbWVzIGdvZXMgdG8gYSB3cm9u
ZyByZXF1ZXN0LgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvcmVwZWF0LW9wZW4tY2FuY2VsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
cmVwZWF0LW9wZW4tY2FuY2VsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFjMTYxYTFiMDM0MGU2ZGY4ZjZj
YmQ5YjEyOWMwZWY5NmUzMmZjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9yZXBlYXQtb3Blbi1jYW5jZWwuaHRtbApAQCAtMCwwICsxLDUyIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KK3ZhciByZXBlYXRDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHNl
bmRSZXF1ZXN0KCkgeworICAgIHZhciBmaXJzdFJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
ICAgIGZpcnN0UmVxLm9wZW4oIkdFVCIsICIvcmVzb3VyY2VzL2Rvd25sb2FkLWpzb24td2l0aC1k
ZWxheS5waHA/aXRlcmF0aW9uPTEwMCZkZWxheT0xIik7CisKKyAgICBmaXJzdFJlcS5vbnJlYWR5
c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGZpcnN0UmVxLnJlYWR5U3Rh
dGUgPT0gZmlyc3RSZXEuSEVBREVSU19SRUNFSVZFRCkgeworICAgICAgICAgICAgdmFyIHNlY29u
ZFJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICAgICAgc2Vjb25kUmVxLm9wZW4o
IkdFVCIsICIvcmVzb3VyY2VzL2Rvd25sb2FkLWpzb24td2l0aC1kZWxheS5waHA/aXRlcmF0aW9u
PTEwJmRlbGF5PTAiKTsKKworICAgICAgICAgICAgc2Vjb25kUmVxLm9ubG9hZCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGlmIChyZXBlYXRDb3VudCsrIDwgNDApCisgICAgICAgICAg
ICAgICAgICAgIHNlbmRSZXF1ZXN0KCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lclRleHQg
PSAiUEFTUyI7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2Vjb25kUmVx
Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJUZXh0ID0gIkZBSUwiOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaXJz
dFJlcS5hYm9ydCgpOworICAgICAgICAgICAgc2Vjb25kUmVxLnNlbmQoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGZpcnN0UmVxLnNlbmQoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAg
IHNlbmRSZXF1ZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxNjUwLjwvcD4KKzxwPkluIGNhc2UgdGhhdCBzZXZlcmFsIHJlcXVl
c3RzIGFyZSBjbG9zZWQgYW5kIGNyZWF0ZWQgcHJldHR5IGZhc3QsIGEgcmVzdWx0IG9mIG9sZCBy
ZXF1ZXN0IHNvbWV0aW1lcyBnb2VzIHRvIGEgd3JvbmcgcmVxdWVzdC48L3A+Cis8cCBpZD0icmVz
dWx0Ij5SVU5OSU5HPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367937</attachid>
            <date>2019-04-22 06:45:34 -0700</date>
            <delta_ts>2019-04-23 01:32:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191650-20190422224243.patch</filename>
            <type>text/plain</type>
            <size>12247</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4MDZhYTc0ZmU0Y2Fm
M2I1NWI3M2ZhZjE2ZjUwNWUyNDc5ZjM5ZS4uOGI4NDlhOWM3MTNhNDMzNmQzMWQ5MzFmODcxMjE4
NWNiODgyYzVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTA0LTIyICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBG
aXggQ3VybCBSZXF1ZXN0IFNjaGVkdWxlciBub3QgdG8gcmVsZWFzZSB3cm9uZyBDdXJsIGhhbmRs
ZSB3aGVuIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNh
bmNlbC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNhbmNlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVxdWVzdDo6aXNDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3Q6OmRpZENvbXBsZXRlVHJhbnNmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6Omlz
Q29tcGxldGVkT3JDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6Omlz
Q2FuY2VsbGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0
Ojppc0NvbXBsZXRlZE9yQ2FuY2VsbGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RvcFRocmVhZElmTm9Nb3JlSm9iUnVubmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjb21wbGV0ZVRyYW5zZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYW5jZWxUcmFuc2Zlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZmluYWxpemVUcmFuc2Zlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmg6
CisKIDIwMTktMDQtMDkgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgbWFpbnRlbmFuY2UgLS0gdXBkYXRlIC54Y2ZpbGVsaXN0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCmluZGV4IDNhYWY4OTExODBiYWYzMGIwODY2MmNhNzAxMjFkMWI1ZTkxNzIwNjMuLjUy
NTNjN2RiYWQ1N2U1NWVlYTA1YjIwNTM3ZTg3NDg0Zjg3OGY0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMTI2
LDEwICsxMjYsMTMgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FuY2VsKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nh
bmNlbE11dGV4KTsKKyAgICAgICAgaWYgKG1fY2FuY2VsbGVkKQorICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jYW5jZWxsZWQgPSB0cnVlOworICAgICAgICBtX2NhbmNlbGxlZCA9IHRydWU7
CisgICAgfQogCiAgICAgYXV0byYgc2NoZWR1bGVyID0gQ3VybENvbnRleHQ6OnNpbmdsZXRvbigp
LnNjaGVkdWxlcigpOwogCkBAIC0xNDMsNiArMTQ2LDEyIEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNh
bmNlbCgpCiAgICAgaW52YWxpZGF0ZUNsaWVudCgpOwogfQogCitib29sIEN1cmxSZXF1ZXN0Ojpp
c0NhbmNlbGxlZCgpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NhbmNlbE11dGV4
KTsKKyAgICByZXR1cm4gbV9jYW5jZWxsZWQ7Cit9CisKIHZvaWQgQ3VybFJlcXVlc3Q6OnN1c3Bl
bmQoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC00MTUsOCArNDI0LDggQEAg
dm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRDb21wbGV0ZVRyYW5zZmVy
KENVUkxjb2RlIHJlc3VsdCkKIHsKLSAgICBpZiAobV9jYW5jZWxsZWQpIHsKLSAgICAgICAgbV9j
dXJsSGFuZGxlID0gbnVsbHB0cjsKKyAgICBpZiAoaXNDYW5jZWxsZWQoKSkgeworICAgICAgICBk
aWRDYW5jZWxUcmFuc2ZlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IDhh
YzQ4ZTk0ZDg0MWY2NzQzOWRmM2M5OTM0ZThhNGY3NDQzYjNkNDEuLmRmNzRkN2VjMjFiZDQ5NTU4
ZjU1NDgxZGNmZjc0ZjQwNDk5ZWUxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0OyB9CiAgICAgYm9vbCBpc0NvbXBsZXRlZCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2N1cmxIYW5kbGU7IH0KLSAgICBib29sIGlzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4g
bV9jYW5jZWxsZWQ7IH0KLSAgICBib29sIGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSBjb25zdCB7
IHJldHVybiBpc0NvbXBsZXRlZCgpIHx8IGlzQ2FuY2VsbGVkKCk7IH0KKyAgICBib29sIGlzQ2Fu
Y2VsbGVkKCk7CisgICAgYm9vbCBpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkgeyByZXR1cm4gaXND
b21wbGV0ZWQoKSB8fCBpc0NhbmNlbGxlZCgpOyB9CiAgICAgU2Vjb25kcyB0aW1lb3V0SW50ZXJ2
YWwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgdXNlcigpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlcjsgfQpAQCAtMTY2LDYgKzE2Niw3IEBAIHByaXZhdGU6CiAKIAogICAgIEN1cmxSZXF1ZXN0
Q2xpZW50KiBtX2NsaWVudCB7IH07CisgICAgTG9jayBtX2NhbmNlbE11dGV4OwogICAgIGJvb2wg
bV9jYW5jZWxsZWQgeyBmYWxzZSB9OwogICAgIE1lc3NhZ2VRdWV1ZTxGdW5jdGlvbjx2b2lkKCk+
PiogbV9tZXNzYWdlUXVldWUgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAppbmRleCAx
MWYyMTAwMjcwNWQyNGNlMTVlM2U4YjFmNDZhOGI0ZWVlNGI4ODY0Li40N2ZkNTdjZTg4OWQ4YmMw
YTZjMzM2MTQzODk4MzJhNGMxMzUxMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKQEAg
LTU4LDEwICs1OCwxMCBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYW5jZWwoQ3VybFJl
cXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgaWYgKCFjbGllbnQgfHwgIWNsaWVudC0+aGFuZGxlKCkpCisgICAgaWYgKCFj
bGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhbmNlbFRyYW5zZmVyKGNsaWVudC0+aGFu
ZGxlKCkpOworICAgIGNhbmNlbFRyYW5zZmVyKGNsaWVudCk7CiB9CiAKIHZvaWQgQ3VybFJlcXVl
c3RTY2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0
YXNrKQpAQCAtOTUsMTIgKzk1LDExIEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BU
aHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgaWYgKG1fYWN0aXZlSm9icy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgpOwotICAgIGlmIChtX3Rhc2tRdWV1ZS5zaXplKCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0
ZXgpOworICAgICAgICBpZiAobV9hY3RpdmVKb2JzLnNpemUoKSB8fCBtX3Rhc2tRdWV1ZS5zaXpl
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9ydW5UaHJlYWQgPSBmYWxz
ZTsKIH0KQEAgLTE3Nyw3ICsxNzYsOCBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3Jr
ZXJUaHJlYWQoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBBU1NFUlQo
bXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKTsKLSAgICAgICAgICAgIGNvbXBsZXRlVHJhbnNmZXIo
bXNnLT5lYXN5X2hhbmRsZSwgbXNnLT5kYXRhLnJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXV0
byBjbGllbnQgPSBtX2NsaWVudE1hcHMuaW5saW5lR2V0KG1zZy0+ZWFzeV9oYW5kbGUpKQorICAg
ICAgICAgICAgICAgIGNvbXBsZXRlVHJhbnNmZXIoY2xpZW50LCBtc2ctPmRhdGEucmVzdWx0KTsK
ICAgICAgICAgfQogCiAgICAgICAgIHN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcoKTsKQEAg
LTE5Miw0OSArMTkyLDU5IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VHJhbnNm
ZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKIAogICAgIGF1dG8gdGFzayA9
IFt0aGlzLCBjbGllbnRdKCkgewogICAgICAgICBDVVJMKiBoYW5kbGUgPSBjbGllbnQtPnNldHVw
VHJhbnNmZXIoKTsKLSAgICAgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIGlmICghaGFuZGxlKSB7
CisgICAgICAgICAgICBjb21wbGV0ZVRyYW5zZmVyKGNsaWVudCwgQ1VSTEVfRkFJTEVEX0lOSVQp
OwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgbV9hY3RpdmVKb2Jz
LmFkZChoYW5kbGUsIGNsaWVudCk7CiAgICAgICAgIG1fY3VybE11bHRpSGFuZGxlLT5hZGRIYW5k
bGUoaGFuZGxlKTsKKworICAgICAgICBBU1NFUlQoIW1fY2xpZW50TWFwcy5jb250YWlucyhoYW5k
bGUpKTsKKyAgICAgICAgbV9jbGllbnRNYXBzLnNldChoYW5kbGUsIGNsaWVudCk7CiAgICAgfTsK
IAogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIG1fYWN0aXZlSm9icy5hZGQo
Y2xpZW50KTsKICAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKLXZv
aWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmNvbXBsZXRlVHJhbnNmZXIoQ1VSTCogaGFuZGxlLCBD
VVJMY29kZSByZXN1bHQpCit2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjb21wbGV0ZVRyYW5z
ZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQsIENVUkxjb2RlIHJlc3VsdCkK
IHsKLSAgICBmaW5hbGl6ZVRyYW5zZmVyKGhhbmRsZSwgW3Jlc3VsdF0oQ3VybFJlcXVlc3RTY2hl
ZHVsZXJDbGllbnQqIGNsaWVudCkgeworICAgIGZpbmFsaXplVHJhbnNmZXIoY2xpZW50LCBbY2xp
ZW50LCByZXN1bHRdKCkgewogICAgICAgICBjbGllbnQtPmRpZENvbXBsZXRlVHJhbnNmZXIocmVz
dWx0KTsKICAgICB9KTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FuY2VsVHJh
bnNmZXIoQ1VSTCogaGFuZGxlKQordm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FuY2VsVHJh
bnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICBmaW5hbGl6
ZVRyYW5zZmVyKGhhbmRsZSwgW10oQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkg
eworICAgIGZpbmFsaXplVHJhbnNmZXIoY2xpZW50LCBbY2xpZW50XSgpIHsKICAgICAgICAgY2xp
ZW50LT5kaWRDYW5jZWxUcmFuc2ZlcigpOwogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0
U2NoZWR1bGVyOjpmaW5hbGl6ZVRyYW5zZmVyKENVUkwqIGhhbmRsZSwgRnVuY3Rpb248dm9pZChD
dXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCopPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OmZpbmFsaXplVHJhbnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJD
bGllbnQqIGNsaWVudCwgRnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIHRhc2sgPSBbdGhpcywgaGFuZGxlLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgewotICAgICAgICBpZiAoIW1fYWN0aXZlSm9icy5jb250YWlucyhoYW5k
bGUpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgp
OwogCi0gICAgICAgIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQgPSBtX2FjdGl2
ZUpvYnMuaW5saW5lR2V0KGhhbmRsZSk7CisgICAgaWYgKCFtX2FjdGl2ZUpvYnMuY29udGFpbnMo
Y2xpZW50KSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fY3VybE11bHRpSGFuZGxlLT5y
ZW1vdmVIYW5kbGUoaGFuZGxlKTsKLSAgICAgICAgbV9hY3RpdmVKb2JzLnJlbW92ZShoYW5kbGUp
OwotICAgICAgICBjb21wbGV0aW9uKGNsaWVudCk7CisgICAgbV9hY3RpdmVKb2JzLnJlbW92ZShj
bGllbnQpOworCisgICAgYXV0byB0YXNrID0gW3RoaXMsIGNsaWVudCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgIGlmIChjbGllbnQt
PmhhbmRsZSgpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9jbGllbnRNYXBzLmNvbnRhaW5zKGNs
aWVudC0+aGFuZGxlKCkpKTsKKyAgICAgICAgICAgIG1fY2xpZW50TWFwcy5yZW1vdmUoY2xpZW50
LT5oYW5kbGUoKSk7CisgICAgICAgICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+cmVtb3ZlSGFuZGxl
KGNsaWVudC0+aGFuZGxlKCkpOworICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjbGllbnRdKCkgewogICAgICAgICAg
ICAgY2xpZW50LT5yZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH07CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX211dGV4KTsKICAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNr
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKaW5kZXggMjY0YjkwZTEwNmI5MzBiZDNiNDBj
MmE2OTA1MGYwNWJkZjk5ZmEwZS4uMmQ4ZWNiZDY5MWZmNmM4Mjg0Mjg5ZGFlZDBkNTlkYzgxYmYz
ZmZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0U2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKQEAgLTU5LDE2ICs1OSwxNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd29ya2VyVGhyZWFkKCk7CiAKICAgICB2b2lkIHN0YXJ0VHJhbnNmZXIoQ3Vy
bFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqKTsKLSAgICB2b2lkIGNvbXBsZXRlVHJhbnNmZXIoQ1VS
TCosIENVUkxjb2RlKTsKLSAgICB2b2lkIGNhbmNlbFRyYW5zZmVyKENVUkwqKTsKLSAgICB2b2lk
IGZpbmFsaXplVHJhbnNmZXIoQ1VSTCosIEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3RTY2hlZHVs
ZXJDbGllbnQqKT4pOworICAgIHZvaWQgY29tcGxldGVUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVk
dWxlckNsaWVudCosIENVUkxjb2RlKTsKKyAgICB2b2lkIGNhbmNlbFRyYW5zZmVyKEN1cmxSZXF1
ZXN0U2NoZWR1bGVyQ2xpZW50Kik7CisgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKEN1cmxSZXF1
ZXN0U2NoZWR1bGVyQ2xpZW50KiwgRnVuY3Rpb248dm9pZCgpPik7CiAKICAgICBtdXRhYmxlIExv
Y2sgbV9tdXRleDsKICAgICBSZWZQdHI8VGhyZWFkPiBtX3RocmVhZDsKICAgICBib29sIG1fcnVu
VGhyZWFkIHsgZmFsc2UgfTsKIAogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tR
dWV1ZTsKLSAgICBIYXNoTWFwPENVUkwqLCBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCo+IG1f
YWN0aXZlSm9iczsKKyAgICBIYXNoU2V0PEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kj4gbV9h
Y3RpdmVKb2JzOworICAgIEhhc2hNYXA8Q1VSTCosIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50
Kj4gbV9jbGllbnRNYXBzOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aUhhbmRsZT4g
bV9jdXJsTXVsdGlIYW5kbGU7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZDVjOGFlMjlmOWRjNGM3ZTBlZjM2M2RkZDFi
ZDI5NzVmOGVjYzU4Li43ZWMwMWQxZTlmYzdkMTMwNTZiNDg5MTYyNzg1NDhmMTA3NDE0YmE1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDQtMjIgIFRha2FzaGkgS29tb3JpICA8VGFrYXNo
aS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW0N1cmxdIEZpeCBDdXJsIFJlcXVlc3QgU2No
ZWR1bGVyIG5vdCB0byByZWxlYXNlIHdyb25nIEN1cmwgaGFuZGxlIHdoZW4gcmVxdWVzdCBpcyBj
YW5jZWxsZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTE2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvbWlzYy9yZXBlYXQtb3Blbi1jYW5jZWwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2FuY2VsLmh0bWw6IEFk
ZGVkLgorCiAyMDE5LTA0LTA5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MgdGVzdCBjYXNlIGZvciBQaW5n
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2Fu
Y2VsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXBlYXQtb3Bl
bi1jYW5jZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYzA4MWVmM2E2ODEzMjhmYzZmMzlk
NjEyMDE0NmU1YzZkMzE3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvcmVwZWF0LW9wZW4tY2FuY2VsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAK
K1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkxNjUwLgorCitJbiBjYXNlIHRoYXQgc2V2ZXJhbCByZXF1ZXN0cyBhcmUgY2xvc2VkIGFu
ZCBjcmVhdGVkIHByZXR0eSBmYXN0LCBhIHJlc3VsdCBvZiBvbGQgcmVxdWVzdCBzb21ldGltZXMg
Z29lcyB0byBhIHdyb25nIHJlcXVlc3QuCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9yZXBlYXQtb3Blbi1jYW5jZWwuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9yZXBlYXQtb3Blbi1jYW5jZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWMxNjFh
MWIwMzQwZTZkZjhmNmNiZDliMTI5YzBlZjk2ZTMyZmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNhbmNlbC5odG1sCkBAIC0wLDAg
KzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordmFyIHJlcGVhdENvdW50ID0gMDsK
KworZnVuY3Rpb24gc2VuZFJlcXVlc3QoKSB7CisgICAgdmFyIGZpcnN0UmVxID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7CisgICAgZmlyc3RSZXEub3BlbigiR0VUIiwgIi9yZXNvdXJjZXMvZG93bmxv
YWQtanNvbi13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249MTAwJmRlbGF5PTEiKTsKKworICAgIGZp
cnN0UmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoZmly
c3RSZXEucmVhZHlTdGF0ZSA9PSBmaXJzdFJlcS5IRUFERVJTX1JFQ0VJVkVEKSB7CisgICAgICAg
ICAgICB2YXIgc2Vjb25kUmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgICAgICBz
ZWNvbmRSZXEub3BlbigiR0VUIiwgIi9yZXNvdXJjZXMvZG93bmxvYWQtanNvbi13aXRoLWRlbGF5
LnBocD9pdGVyYXRpb249MTAmZGVsYXk9MCIpOworCisgICAgICAgICAgICBzZWNvbmRSZXEub25s
b2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlcGVhdENvdW50KysgPCA0
MCkKKyAgICAgICAgICAgICAgICAgICAgc2VuZFJlcXVlc3QoKTsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBzZWNvbmRSZXEub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lclRleHQgPSAiRkFJTCI7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZpcnN0UmVxLmFib3J0KCk7CisgICAgICAgICAgICBzZWNvbmRSZXEuc2VuZCgp
OworICAgICAgICB9CisgICAgfQorCisgICAgZmlyc3RSZXEuc2VuZCgpOworfQorCitmdW5jdGlv
biBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgfQorCisgICAgc2VuZFJlcXVlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE2NTAuPC9wPgorPHA+SW4gY2FzZSB0aGF0
IHNldmVyYWwgcmVxdWVzdHMgYXJlIGNsb3NlZCBhbmQgY3JlYXRlZCBwcmV0dHkgZmFzdCwgYSBy
ZXN1bHQgb2Ygb2xkIHJlcXVlc3Qgc29tZXRpbWVzIGdvZXMgdG8gYSB3cm9uZyByZXF1ZXN0Ljwv
cD4KKzxwIGlkPSJyZXN1bHQiPlJVTk5JTkc8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368019</attachid>
            <date>2019-04-23 01:32:04 -0700</date>
            <delta_ts>2019-04-25 20:00:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191650-20190423172914.patch</filename>
            <type>text/plain</type>
            <size>13583</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4MDZhYTc0ZmU0Y2Fm
M2I1NWI3M2ZhZjE2ZjUwNWUyNDc5ZjM5ZS4uM2JlNjI5YjNkODAxNGVjMzk3ZDc1Nzk0MWQwNTY4
ZGY0NTI4NzI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA0LTIzICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBG
aXggQ3VybCBSZXF1ZXN0IFNjaGVkdWxlciBub3QgdG8gcmVsZWFzZSB3cm9uZyBDdXJsIGhhbmRs
ZSB3aGVuIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNh
bmNlbC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNhbmNlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVxdWVzdDo6aXNDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3Q6OmlzQ29tcGxldGVkT3JDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3Q6OmRpZENvbXBsZXRlVHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJl
cXVlc3Q6OmNvbXBsZXRlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxSZXF1ZXN0OjpwYXVzZWRTdGF0dXNDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojpp
c0NvbXBsZXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6aXNDYW5jZWxsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJl
cXVlc3Q6OmlzQ29tcGxldGVkT3JDYW5jZWxsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VHJhbnNmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmNvbXBsZXRlVHJhbnNmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbFRyYW5zZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpmaW5hbGl6ZVRyYW5z
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVs
ZXIuaDoKKwogMjAxOS0wNC0wOSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBtYWludGVuYW5jZSAtLSB1cGRhdGUgLnhjZmlsZWxp
c3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAKaW5kZXggM2FhZjg5MTE4MGJhZjMwYjA4NjYyY2E3MDEyMWQxYjVlOTE3MjA2
My4uMTdkY2ZkN2JiY2ZmNWVhNTc4MGNkMTVjYmRmN2NhNjRiZDQwYzAwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBA
IC0xMjYsMTAgKzEyNiwxMyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjYW5jZWwoKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgp
KQotICAgICAgICByZXR1cm47CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fc3RhdHVzTXV0ZXgpOworICAgICAgICBpZiAobV9jYW5jZWxsZWQpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2NhbmNlbGxlZCA9IHRydWU7CisgICAgICAgIG1fY2FuY2VsbGVkID0g
dHJ1ZTsKKyAgICB9CiAKICAgICBhdXRvJiBzY2hlZHVsZXIgPSBDdXJsQ29udGV4dDo6c2luZ2xl
dG9uKCkuc2NoZWR1bGVyKCk7CiAKQEAgLTE0Myw2ICsxNDYsMTggQEAgdm9pZCBDdXJsUmVxdWVz
dDo6Y2FuY2VsKCkKICAgICBpbnZhbGlkYXRlQ2xpZW50KCk7CiB9CiAKK2Jvb2wgQ3VybFJlcXVl
c3Q6OmlzQ2FuY2VsbGVkKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RhdHVz
TXV0ZXgpOworICAgIHJldHVybiBtX2NhbmNlbGxlZDsKK30KKworYm9vbCBDdXJsUmVxdWVzdDo6
aXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3N0YXR1c011dGV4KTsKKyAgICByZXR1cm4gbV9jb21wbGV0ZWQgfHwgbV9jYW5jZWxsZWQ7Cit9
CisKIHZvaWQgQ3VybFJlcXVlc3Q6OnN1c3BlbmQoKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CkBAIC00MTUsOCArNDMwLDggQEAgdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogCiB2b2lkIEN1cmxS
ZXF1ZXN0OjpkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlIHJlc3VsdCkKIHsKLSAgICBpZiAo
bV9jYW5jZWxsZWQpIHsKLSAgICAgICAgbV9jdXJsSGFuZGxlID0gbnVsbHB0cjsKKyAgICBpZiAo
aXNDYW5jZWxsZWQoKSkgeworICAgICAgICBkaWRDYW5jZWxUcmFuc2ZlcigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00NTUsNiArNDcwLDExIEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRp
ZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUgcmVzdWx0KQogICAgICAgICAgICAgY2xpZW50LmN1
cmxEaWRGYWlsV2l0aEVycm9yKHJlcXVlc3QsIGVycm9yKTsKICAgICAgICAgfSk7CiAgICAgfQor
CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RhdHVzTXV0ZXgpOwor
ICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CisgICAgfQogfQogCiB2b2lkIEN1cmxSZXF1ZXN0
OjpkaWRDYW5jZWxUcmFuc2ZlcigpCkBAIC01NjcsMTAgKzU4Nyw3IEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OmNvbXBsZXRlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBBU1NFUlQobV9kaWROb3RpZnlS
ZXNwb25zZSk7CiAgICAgQVNTRVJUKCFtX2RpZFJldHVybkZyb21Ob3RpZnkgfHwgbV9tdWx0aXBh
cnRIYW5kbGUpOwogCi0gICAgaWYgKGlzQ2FuY2VsbGVkKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX2FjdGlvbkFmdGVySW52b2tlICE9IEFjdGlvbjo6U3RhcnRUcmFuc2ZlciAmJiBp
c0NvbXBsZXRlZCgpKQorICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fZGlkUmV0dXJuRnJvbU5vdGlmeSA9IHRydWU7CkBAIC02MzUsNyAr
NjUyLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6cGF1c2VkU3RhdHVzQ2hhbmdlZCgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHJ1bk9uV29ya2VyVGhyZWFkSWZSZXF1aXJlZChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKLSAgICAgICAgaWYgKGlzQ29tcGxldGVkT3JD
YW5jZWxsZWQoKSkKKyAgICAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSB8fCAhbV9j
dXJsSGFuZGxlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGJvb2wgbmVlZENhbmNl
bCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5oCmluZGV4IDhhYzQ4ZTk0ZDg0MWY2NzQzOWRmM2M5OTM0ZThhNGY3NDQz
YjNkNDEuLmQxMzc2NmUzYmY0ZTNiMDI1YjhlODc4NGYyMTA5ZmIxMzU1YjhjMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBA
IC04Myw5ICs4Myw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZSgp
OwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3Q7IH0KLSAgICBib29sIGlzQ29tcGxldGVkKCkgY29uc3QgeyByZXR1
cm4gIW1fY3VybEhhbmRsZTsgfQotICAgIGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVy
biBtX2NhbmNlbGxlZDsgfQotICAgIGJvb2wgaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpIGNvbnN0
IHsgcmV0dXJuIGlzQ29tcGxldGVkKCkgfHwgaXNDYW5jZWxsZWQoKTsgfQorICAgIGJvb2wgaXND
YW5jZWxsZWQoKTsKKyAgICBib29sIGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKTsKICAgICBTZWNv
bmRzIHRpbWVvdXRJbnRlcnZhbCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiB1c2VyKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VyOyB9CkBAIC0xNjYsNyArMTY1LDkgQEAgcHJpdmF0ZToKIAog
CiAgICAgQ3VybFJlcXVlc3RDbGllbnQqIG1fY2xpZW50IHsgfTsKKyAgICBMb2NrIG1fc3RhdHVz
TXV0ZXg7CiAgICAgYm9vbCBtX2NhbmNlbGxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2NvbXBs
ZXRlZCB7IGZhbHNlIH07CiAgICAgTWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQoKT4+KiBtX21l
c3NhZ2VRdWV1ZSB7IH07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2No
ZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5jcHAKaW5kZXggMTFmMjEwMDI3MDVkMjRjZTE1ZTNlOGIxZjQ2YThiNGVl
ZTRiODg2NC4uNDdmZDU3Y2U4ODlkOGJjMGE2YzMzNjE0Mzg5ODMyYTRjMTM1MTI5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2No
ZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RTY2hlZHVsZXIuY3BwCkBAIC01OCwxMCArNTgsMTAgQEAgdm9pZCBDdXJsUmVxdWVz
dFNjaGVkdWxlcjo6Y2FuY2VsKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmICghY2xpZW50IHx8ICFjbGll
bnQtPmhhbmRsZSgpKQorICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBj
YW5jZWxUcmFuc2ZlcihjbGllbnQtPmhhbmRsZSgpKTsKKyAgICBjYW5jZWxUcmFuc2ZlcihjbGll
bnQpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTk1LDEyICs5NSwxMSBAQCB2b2lkIEN1
cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChtX2FjdGl2ZUpvYnMuc2l6ZSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKLSAg
ICBpZiAobV90YXNrUXVldWUuc2l6ZSgpKQotICAgICAgICByZXR1cm47CisgICAgeworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgaWYgKG1fYWN0aXZlSm9icy5z
aXplKCkgfHwgbV90YXNrUXVldWUuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIG1fcnVuVGhyZWFkID0gZmFsc2U7CiB9CkBAIC0xNzcsNyArMTc2LDggQEAgdm9pZCBD
dXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKCkKICAgICAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICAgICAgQVNTRVJUKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSk7Ci0gICAg
ICAgICAgICBjb21wbGV0ZVRyYW5zZmVyKG1zZy0+ZWFzeV9oYW5kbGUsIG1zZy0+ZGF0YS5yZXN1
bHQpOworICAgICAgICAgICAgaWYgKGF1dG8gY2xpZW50ID0gbV9jbGllbnRNYXBzLmlubGluZUdl
dChtc2ctPmVhc3lfaGFuZGxlKSkKKyAgICAgICAgICAgICAgICBjb21wbGV0ZVRyYW5zZmVyKGNs
aWVudCwgbXNnLT5kYXRhLnJlc3VsdCk7CiAgICAgICAgIH0KIAogICAgICAgICBzdG9wVGhyZWFk
SWZOb01vcmVKb2JSdW5uaW5nKCk7CkBAIC0xOTIsNDkgKzE5Miw1OSBAQCB2b2lkIEN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBj
bGllbnQpCiAKICAgICBhdXRvIHRhc2sgPSBbdGhpcywgY2xpZW50XSgpIHsKICAgICAgICAgQ1VS
TCogaGFuZGxlID0gY2xpZW50LT5zZXR1cFRyYW5zZmVyKCk7Ci0gICAgICAgIGlmICghaGFuZGxl
KQorICAgICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAgICAgY29tcGxldGVUcmFuc2Zlcihj
bGllbnQsIENVUkxFX0ZBSUxFRF9JTklUKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCi0gICAgICAgIG1fYWN0aXZlSm9icy5hZGQoaGFuZGxlLCBjbGllbnQpOwogICAgICAgICBt
X2N1cmxNdWx0aUhhbmRsZS0+YWRkSGFuZGxlKGhhbmRsZSk7CisKKyAgICAgICAgQVNTRVJUKCFt
X2NsaWVudE1hcHMuY29udGFpbnMoaGFuZGxlKSk7CisgICAgICAgIG1fY2xpZW50TWFwcy5zZXQo
aGFuZGxlLCBjbGllbnQpOwogICAgIH07CiAKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4
KTsKKyAgICBtX2FjdGl2ZUpvYnMuYWRkKGNsaWVudCk7CiAgICAgbV90YXNrUXVldWUuYXBwZW5k
KFdURk1vdmUodGFzaykpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjb21wbGV0
ZVRyYW5zZmVyKENVUkwqIGhhbmRsZSwgQ1VSTGNvZGUgcmVzdWx0KQordm9pZCBDdXJsUmVxdWVz
dFNjaGVkdWxlcjo6Y29tcGxldGVUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCog
Y2xpZW50LCBDVVJMY29kZSByZXN1bHQpCiB7Ci0gICAgZmluYWxpemVUcmFuc2ZlcihoYW5kbGUs
IFtyZXN1bHRdKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpIHsKKyAgICBmaW5h
bGl6ZVRyYW5zZmVyKGNsaWVudCwgW2NsaWVudCwgcmVzdWx0XSgpIHsKICAgICAgICAgY2xpZW50
LT5kaWRDb21wbGV0ZVRyYW5zZmVyKHJlc3VsdCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3VybFJl
cXVlc3RTY2hlZHVsZXI6OmNhbmNlbFRyYW5zZmVyKENVUkwqIGhhbmRsZSkKK3ZvaWQgQ3VybFJl
cXVlc3RTY2hlZHVsZXI6OmNhbmNlbFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50
KiBjbGllbnQpCiB7Ci0gICAgZmluYWxpemVUcmFuc2ZlcihoYW5kbGUsIFtdKEN1cmxSZXF1ZXN0
U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpIHsKKyAgICBmaW5hbGl6ZVRyYW5zZmVyKGNsaWVudCwg
W2NsaWVudF0oKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkQ2FuY2VsVHJhbnNmZXIoKTsKICAgICB9
KTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZmluYWxpemVUcmFuc2ZlcihDVVJM
KiBoYW5kbGUsIEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqKT4gY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpmaW5hbGl6ZVRyYW5z
ZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQsIEZ1bmN0aW9uPHZvaWQoKT4g
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byB0YXNrID0gW3RoaXMsIGhhbmRsZSwgY29t
cGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKLSAgICAgICAgaWYgKCFt
X2FjdGl2ZUpvYnMuY29udGFpbnMoaGFuZGxlKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKIAotICAgICAgICBDdXJsUmVxdWVzdFNjaGVkdWxl
ckNsaWVudCogY2xpZW50ID0gbV9hY3RpdmVKb2JzLmlubGluZUdldChoYW5kbGUpOworICAgIGlm
ICghbV9hY3RpdmVKb2JzLmNvbnRhaW5zKGNsaWVudCkpCisgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+cmVtb3ZlSGFuZGxlKGhhbmRsZSk7Ci0gICAgICAgIG1f
YWN0aXZlSm9icy5yZW1vdmUoaGFuZGxlKTsKLSAgICAgICAgY29tcGxldGlvbihjbGllbnQpOwor
ICAgIG1fYWN0aXZlSm9icy5yZW1vdmUoY2xpZW50KTsKKworICAgIGF1dG8gdGFzayA9IFt0aGlz
LCBjbGllbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgeworICAgICAgICBpZiAoY2xpZW50LT5oYW5kbGUoKSkgeworICAgICAgICAgICAgQVNTRVJU
KG1fY2xpZW50TWFwcy5jb250YWlucyhjbGllbnQtPmhhbmRsZSgpKSk7CisgICAgICAgICAgICBt
X2NsaWVudE1hcHMucmVtb3ZlKGNsaWVudC0+aGFuZGxlKCkpOworICAgICAgICAgICAgbV9jdXJs
TXVsdGlIYW5kbGUtPnJlbW92ZUhhbmRsZShjbGllbnQtPmhhbmRsZSgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbY2xpZW50XSgpIHsKICAgICAgICAgICAgIGNsaWVudC0+cmVsZWFzZSgpOwogICAgICAgICB9
KTsKICAgICB9OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleCk7CiAgICAgbV90YXNr
UXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCmlu
ZGV4IDI2NGI5MGUxMDZiOTMwYmQzYjQwYzJhNjkwNTBmMDViZGY5OWZhMGUuLjJkOGVjYmQ2OTFm
ZjZjODI4NDI4OWRhZWQwZDU5ZGM4MWJmM2ZmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCkBA
IC01OSwxNiArNTksMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdvcmtlclRocmVhZCgpOwogCiAg
ICAgdm9pZCBzdGFydFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kik7Ci0gICAg
dm9pZCBjb21wbGV0ZVRyYW5zZmVyKENVUkwqLCBDVVJMY29kZSk7Ci0gICAgdm9pZCBjYW5jZWxU
cmFuc2ZlcihDVVJMKik7Ci0gICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKENVUkwqLCBGdW5jdGlv
bjx2b2lkKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kik+KTsKKyAgICB2b2lkIGNvbXBsZXRl
VHJhbnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqLCBDVVJMY29kZSk7CisgICAgdm9p
ZCBjYW5jZWxUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCopOworICAgIHZvaWQg
ZmluYWxpemVUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCosIEZ1bmN0aW9uPHZv
aWQoKT4pOwogCiAgICAgbXV0YWJsZSBMb2NrIG1fbXV0ZXg7CiAgICAgUmVmUHRyPFRocmVhZD4g
bV90aHJlYWQ7CiAgICAgYm9vbCBtX3J1blRocmVhZCB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8
RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrUXVldWU7Ci0gICAgSGFzaE1hcDxDVVJMKiwgQ3VybFJl
cXVlc3RTY2hlZHVsZXJDbGllbnQqPiBtX2FjdGl2ZUpvYnM7CisgICAgSGFzaFNldDxDdXJsUmVx
dWVzdFNjaGVkdWxlckNsaWVudCo+IG1fYWN0aXZlSm9iczsKKyAgICBIYXNoTWFwPENVUkwqLCBD
dXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCo+IG1fY2xpZW50TWFwczsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxDdXJsTXVsdGlIYW5kbGU+IG1fY3VybE11bHRpSGFuZGxlOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmQ1
YzhhZTI5ZjlkYzRjN2UwZWYzNjNkZGQxYmQyOTc1ZjhlY2M1OC4uNDcwNmEzN2NkYjBmMzA4NGM1
YTAyMzQzN2U3OTg2YjZlZmQ3NGVmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA0LTIz
ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtD
dXJsXSBGaXggQ3VybCBSZXF1ZXN0IFNjaGVkdWxlciBub3QgdG8gcmVsZWFzZSB3cm9uZyBDdXJs
IGhhbmRsZSB3aGVuIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4t
Y2FuY2VsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL3Jl
cGVhdC1vcGVuLWNhbmNlbC5odG1sOiBBZGRlZC4KKwogMjAxOS0wNC0wOSAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzIHRlc3QgY2FzZSBmb3IgUGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2FuY2VsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44M2MwODFlZjNhNjgxMzI4ZmM2ZjM5ZDYxMjAxNDZlNWM2ZDMxNzRlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNhbmNlbC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTY1MC4KKworSW4gY2FzZSB0aGF0IHNldmVy
YWwgcmVxdWVzdHMgYXJlIGNsb3NlZCBhbmQgY3JlYXRlZCBwcmV0dHkgZmFzdCwgYSByZXN1bHQg
b2Ygb2xkIHJlcXVlc3Qgc29tZXRpbWVzIGdvZXMgdG8gYSB3cm9uZyByZXF1ZXN0LgorCitQQVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2Fu
Y2VsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2FuY2Vs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGFjMTYxYTFiMDM0MGU2ZGY4ZjZjYmQ5YjEyOWMwZWY5NmUzMmZj
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXBlYXQt
b3Blbi1jYW5jZWwuaHRtbApAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK3ZhciByZXBlYXRDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHNlbmRSZXF1ZXN0KCkgeworICAg
IHZhciBmaXJzdFJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIGZpcnN0UmVxLm9wZW4o
IkdFVCIsICIvcmVzb3VyY2VzL2Rvd25sb2FkLWpzb24td2l0aC1kZWxheS5waHA/aXRlcmF0aW9u
PTEwMCZkZWxheT0xIik7CisKKyAgICBmaXJzdFJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgaWYgKGZpcnN0UmVxLnJlYWR5U3RhdGUgPT0gZmlyc3RSZXEuSEVB
REVSU19SRUNFSVZFRCkgeworICAgICAgICAgICAgdmFyIHNlY29uZFJlcSA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOworICAgICAgICAgICAgc2Vjb25kUmVxLm9wZW4oIkdFVCIsICIvcmVzb3VyY2Vz
L2Rvd25sb2FkLWpzb24td2l0aC1kZWxheS5waHA/aXRlcmF0aW9uPTEwJmRlbGF5PTAiKTsKKwor
ICAgICAgICAgICAgc2Vjb25kUmVxLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGlmIChyZXBlYXRDb3VudCsrIDwgNDApCisgICAgICAgICAgICAgICAgICAgIHNlbmRSZXF1
ZXN0KCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2Vjb25kUmVxLm9uZXJyb3IgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyku
aW5uZXJUZXh0ID0gIkZBSUwiOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaXJzdFJlcS5hYm9ydCgpOworICAg
ICAgICAgICAgc2Vjb25kUmVxLnNlbmQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZpcnN0
UmVxLnNlbmQoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIHNlbmRSZXF1ZXN0KCk7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRoaXMg
aXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkx
NjUwLjwvcD4KKzxwPkluIGNhc2UgdGhhdCBzZXZlcmFsIHJlcXVlc3RzIGFyZSBjbG9zZWQgYW5k
IGNyZWF0ZWQgcHJldHR5IGZhc3QsIGEgcmVzdWx0IG9mIG9sZCByZXF1ZXN0IHNvbWV0aW1lcyBn
b2VzIHRvIGEgd3JvbmcgcmVxdWVzdC48L3A+Cis8cCBpZD0icmVzdWx0Ij5SVU5OSU5HPC9wPgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368298</attachid>
            <date>2019-04-25 20:00:53 -0700</date>
            <delta_ts>2019-04-26 02:52:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191650-20190426115803.patch</filename>
            <type>text/plain</type>
            <size>15766</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4MDZhYTc0ZmU0Y2Fm
M2I1NWI3M2ZhZjE2ZjUwNWUyNDc5ZjM5ZS4uYjNmNzhiODQ1NjA2MWJiMmE4ZWMwYWI3NmE2MjAw
YjZjNTBjYzI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA0LTI1ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBG
aXggQ3VybCBSZXF1ZXN0IFNjaGVkdWxlciBub3QgdG8gcmVsZWFzZSB3cm9uZyBDdXJsIGhhbmRs
ZSB3aGVuIHJlcXVlc3QgaXMgY2FuY2VsbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNh
bmNlbC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNhbmNlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVxdWVzdDo6aXNDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3Q6OmlzQ29tcGxldGVkT3JDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3Q6OmRpZENvbXBsZXRlVHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJl
cXVlc3Q6OmNvbXBsZXRlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxSZXF1ZXN0OjpwYXVzZWRTdGF0dXNDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojpp
c0NvbXBsZXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6aXNDYW5jZWxsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJl
cXVlc3Q6OmlzQ29tcGxldGVkT3JDYW5jZWxsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VGhyZWFkSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5vTW9yZUpv
YlJ1bm5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmV4ZWN1dGVU
YXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5z
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjb21wbGV0ZVRy
YW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYW5jZWxU
cmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZmluYWxp
emVUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmg6CisKIDIwMTktMDQtMDkgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgbWFpbnRlbmFuY2UgLS0gdXBkYXRlIC54
Y2ZpbGVsaXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDNhYWY4OTExODBiYWYzMGIwODY2MmNhNzAxMjFkMWI1
ZTkxNzIwNjMuLjE3ZGNmZDdiYmNmZjVlYTU3ODBjZDE1Y2JkZjdjYTY0YmQ0MGMwMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcApAQCAtMTI2LDEwICsxMjYsMTMgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FuY2VsKCkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGlzQ29tcGxldGVkT3JDYW5j
ZWxsZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3N0YXR1c011dGV4KTsKKyAgICAgICAgaWYgKG1fY2FuY2VsbGVkKQorICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jYW5jZWxsZWQgPSB0cnVlOworICAgICAgICBtX2NhbmNl
bGxlZCA9IHRydWU7CisgICAgfQogCiAgICAgYXV0byYgc2NoZWR1bGVyID0gQ3VybENvbnRleHQ6
OnNpbmdsZXRvbigpLnNjaGVkdWxlcigpOwogCkBAIC0xNDMsNiArMTQ2LDE4IEBAIHZvaWQgQ3Vy
bFJlcXVlc3Q6OmNhbmNlbCgpCiAgICAgaW52YWxpZGF0ZUNsaWVudCgpOwogfQogCitib29sIEN1
cmxSZXF1ZXN0Ojppc0NhbmNlbGxlZCgpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3N0YXR1c011dGV4KTsKKyAgICByZXR1cm4gbV9jYW5jZWxsZWQ7Cit9CisKK2Jvb2wgQ3VybFJl
cXVlc3Q6OmlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9zdGF0dXNNdXRleCk7CisgICAgcmV0dXJuIG1fY29tcGxldGVkIHx8IG1fY2FuY2Vs
bGVkOworfQorCiB2b2lkIEN1cmxSZXF1ZXN0OjpzdXNwZW5kKCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpAQCAtNDE1LDggKzQzMCw4IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIAogdm9p
ZCBDdXJsUmVxdWVzdDo6ZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSByZXN1bHQpCiB7Ci0g
ICAgaWYgKG1fY2FuY2VsbGVkKSB7Ci0gICAgICAgIG1fY3VybEhhbmRsZSA9IG51bGxwdHI7Cisg
ICAgaWYgKGlzQ2FuY2VsbGVkKCkpIHsKKyAgICAgICAgZGlkQ2FuY2VsVHJhbnNmZXIoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDU1LDYgKzQ3MCwxMSBAQCB2b2lkIEN1cmxSZXF1
ZXN0OjpkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlIHJlc3VsdCkKICAgICAgICAgICAgIGNs
aWVudC5jdXJsRGlkRmFpbFdpdGhFcnJvcihyZXF1ZXN0LCBlcnJvcik7CiAgICAgICAgIH0pOwog
ICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXR1c011
dGV4KTsKKyAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOworICAgIH0KIH0KIAogdm9pZCBDdXJs
UmVxdWVzdDo6ZGlkQ2FuY2VsVHJhbnNmZXIoKQpAQCAtNTY3LDEwICs1ODcsNyBAQCB2b2lkIEN1
cmxSZXF1ZXN0Ojpjb21wbGV0ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgQVNTRVJUKG1fZGlk
Tm90aWZ5UmVzcG9uc2UpOwogICAgIEFTU0VSVCghbV9kaWRSZXR1cm5Gcm9tTm90aWZ5IHx8IG1f
bXVsdGlwYXJ0SGFuZGxlKTsKIAotICAgIGlmIChpc0NhbmNlbGxlZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAobV9hY3Rpb25BZnRlckludm9rZSAhPSBBY3Rpb246OlN0YXJ0VHJhbnNm
ZXIgJiYgaXNDb21wbGV0ZWQoKSkKKyAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2RpZFJldHVybkZyb21Ob3RpZnkgPSB0cnVlOwpAQCAt
NjM1LDcgKzY1Miw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnBhdXNlZFN0YXR1c0NoYW5nZWQoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBydW5PbldvcmtlclRocmVhZElmUmVxdWlyZWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIGlmIChpc0NvbXBs
ZXRlZE9yQ2FuY2VsbGVkKCkpCisgICAgICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkg
fHwgIW1fY3VybEhhbmRsZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBib29sIG5l
ZWRDYW5jZWwgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA4YWM0OGU5NGQ4NDFmNjc0MzlkZjNjOTkzNGU4
YTRmNzQ0M2IzZDQxLi5kMTM3NjZlM2JmNGUzYjAyNWI4ZTg3ODRmMjEwOWZiMTM1NWI4YzI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaApAQCAtODMsOSArODMsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXN1bWUoKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9Ci0gICAgYm9vbCBpc0NvbXBsZXRlZCgpIGNvbnN0
IHsgcmV0dXJuICFtX2N1cmxIYW5kbGU7IH0KLSAgICBib29sIGlzQ2FuY2VsbGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jYW5jZWxsZWQ7IH0KLSAgICBib29sIGlzQ29tcGxldGVkT3JDYW5jZWxsZWQo
KSBjb25zdCB7IHJldHVybiBpc0NvbXBsZXRlZCgpIHx8IGlzQ2FuY2VsbGVkKCk7IH0KKyAgICBi
b29sIGlzQ2FuY2VsbGVkKCk7CisgICAgYm9vbCBpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCk7CiAg
ICAgU2Vjb25kcyB0aW1lb3V0SW50ZXJ2YWwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYg
dXNlcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlcjsgfQpAQCAtMTY2LDcgKzE2NSw5IEBAIHByaXZh
dGU6CiAKIAogICAgIEN1cmxSZXF1ZXN0Q2xpZW50KiBtX2NsaWVudCB7IH07CisgICAgTG9jayBt
X3N0YXR1c011dGV4OwogICAgIGJvb2wgbV9jYW5jZWxsZWQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9jb21wbGV0ZWQgeyBmYWxzZSB9OwogICAgIE1lc3NhZ2VRdWV1ZTxGdW5jdGlvbjx2b2lkKCk+
PiogbV9tZXNzYWdlUXVldWUgeyB9OwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDExZjIxMDAyNzA1ZDI0Y2UxNWUzZThiMWY0
NmE4YjRlZWU0Yjg4NjQuLjkxODM3YWY5ZjNlNDc3M2I1YzcxYzFjMjYwZGI5NmY1ODZiMjExYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtNTgsMTYgKzU4LDE2IEBAIHZvaWQgQ3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbChDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCogY2xp
ZW50KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoIWNsaWVudCB8
fCAhY2xpZW50LT5oYW5kbGUoKSkKKyAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgY2FuY2VsVHJhbnNmZXIoY2xpZW50LT5oYW5kbGUoKSk7CisgICAgY2FuY2VsVHJhbnNm
ZXIoY2xpZW50KTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FsbE9uV29ya2Vy
VGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX211dGV4KTsKICAgICAgICAgbV90YXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwog
ICAgIH0KIApAQCAtNzgsMjggKzc4LDM0IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0
YXJ0VGhyZWFkSWZOZWVkZWQoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKLSAgICBpZiAoIW1fcnVuVGhyZWFkKSB7Ci0g
ICAgICAgIGlmIChtX3RocmVhZCkKLSAgICAgICAgICAgIG1fdGhyZWFkLT53YWl0Rm9yQ29tcGxl
dGlvbigpOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsK
KyAgICAgICAgaWYgKG1fcnVuVGhyZWFkKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KIAor
ICAgIGlmIChtX3RocmVhZCkKKyAgICAgICAgbV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7
CisKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CiAgICAg
ICAgIG1fcnVuVGhyZWFkID0gdHJ1ZTsKLSAgICAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0
ZSgiY3VybFRocmVhZCIsIFt0aGlzXSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQoKTsKLSAg
ICAgICAgICAgIG1fcnVuVGhyZWFkID0gZmFsc2U7Ci0gICAgICAgIH0pOwogICAgIH0KKworICAg
IG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoImN1cmxUaHJlYWQiLCBbdGhpc10geworICAgICAg
ICB3b3JrZXJUaHJlYWQoKTsKKworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0
ZXgpOworICAgICAgICBtX3J1blRocmVhZCA9IGZhbHNlOworICAgIH0pOwogfQogCiB2b2lkIEN1
cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChtX2FjdGl2ZUpvYnMuc2l6ZSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKLSAg
ICBpZiAobV90YXNrUXVldWUuc2l6ZSgpKQorICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9t
dXRleCk7CisgICAgaWYgKG1fYWN0aXZlSm9icy5zaXplKCkgfHwgbV90YXNrUXVldWUuc2l6ZSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3J1blRocmVhZCA9IGZhbHNlOwpAQCAtMTA3LDcg
KzExMywxMCBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdG9wVGhyZWFkSWZOb01vcmVK
b2JSdW5uaW5nKCkKIAogdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RvcFRocmVhZCgpCiB7
Ci0gICAgbV9ydW5UaHJlYWQgPSBmYWxzZTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIG1fcnVuVGhyZWFkID0gZmFsc2U7CisgICAgfQog
CiAgICAgaWYgKG1fdGhyZWFkKSB7CiAgICAgICAgIG1fdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlv
bigpOwpAQCAtMTIyLDcgKzEzMSw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmV4ZWN1
dGVUYXNrcygpCiAgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gdGFza1F1ZXVlOwog
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKICAgICAgICAgdGFza1F1ZXVlID0gV1RGTW92
ZShtX3Rhc2tRdWV1ZSk7CiAgICAgfQogCkBAIC0xMzksNyArMTQ4LDEzIEBAIHZvaWQgQ3VybFJl
cXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNl
dE1heFRvdGFsQ29ubmVjdGlvbnMobV9tYXhUb3RhbENvbm5lY3Rpb25zKTsKICAgICBtX2N1cmxN
dWx0aUhhbmRsZS0+c2V0TWF4SG9zdENvbm5lY3Rpb25zKG1fbWF4SG9zdENvbm5lY3Rpb25zKTsK
IAotICAgIHdoaWxlIChtX3J1blRocmVhZCkgeworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
IHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAg
ICAgICBpZiAoIW1fcnVuVGhyZWFkKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICAgICAgICAgZXhlY3V0ZVRhc2tzKCk7CiAKICAgICAgICAgLy8gUmV0cnkgJ3NlbGVjdCcg
aWYgaXQgd2FzIGludGVycnVwdGVkIGJ5IGEgcHJvY2VzcyBzaWduYWwuCkBAIC0xNzcsNyArMTky
LDggQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKCkKICAgICAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgQVNTRVJUKG1zZy0+bXNnID09IENVUkxNU0df
RE9ORSk7Ci0gICAgICAgICAgICBjb21wbGV0ZVRyYW5zZmVyKG1zZy0+ZWFzeV9oYW5kbGUsIG1z
Zy0+ZGF0YS5yZXN1bHQpOworICAgICAgICAgICAgaWYgKGF1dG8gY2xpZW50ID0gbV9jbGllbnRN
YXBzLmlubGluZUdldChtc2ctPmVhc3lfaGFuZGxlKSkKKyAgICAgICAgICAgICAgICBjb21wbGV0
ZVRyYW5zZmVyKGNsaWVudCwgbXNnLT5kYXRhLnJlc3VsdCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCk7CkBAIC0xOTIsNDkgKzIwOCw1OSBAQCB2
b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1
bGVyQ2xpZW50KiBjbGllbnQpCiAKICAgICBhdXRvIHRhc2sgPSBbdGhpcywgY2xpZW50XSgpIHsK
ICAgICAgICAgQ1VSTCogaGFuZGxlID0gY2xpZW50LT5zZXR1cFRyYW5zZmVyKCk7Ci0gICAgICAg
IGlmICghaGFuZGxlKQorICAgICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAgICAgY29tcGxl
dGVUcmFuc2ZlcihjbGllbnQsIENVUkxFX0ZBSUxFRF9JTklUKTsKICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogCi0gICAgICAgIG1fYWN0aXZlSm9icy5hZGQoaGFuZGxlLCBjbGllbnQp
OwogICAgICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+YWRkSGFuZGxlKGhhbmRsZSk7CisKKyAgICAg
ICAgQVNTRVJUKCFtX2NsaWVudE1hcHMuY29udGFpbnMoaGFuZGxlKSk7CisgICAgICAgIG1fY2xp
ZW50TWFwcy5zZXQoaGFuZGxlLCBjbGllbnQpOwogICAgIH07CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAg
IG1fYWN0aXZlSm9icy5hZGQoY2xpZW50KTsKICAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92
ZSh0YXNrKSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmNvbXBsZXRlVHJhbnNm
ZXIoQ1VSTCogaGFuZGxlLCBDVVJMY29kZSByZXN1bHQpCit2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1
bGVyOjpjb21wbGV0ZVRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQs
IENVUkxjb2RlIHJlc3VsdCkKIHsKLSAgICBmaW5hbGl6ZVRyYW5zZmVyKGhhbmRsZSwgW3Jlc3Vs
dF0oQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkgeworICAgIGZpbmFsaXplVHJh
bnNmZXIoY2xpZW50LCBbY2xpZW50LCByZXN1bHRdKCkgewogICAgICAgICBjbGllbnQtPmRpZENv
bXBsZXRlVHJhbnNmZXIocmVzdWx0KTsKICAgICB9KTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdFNj
aGVkdWxlcjo6Y2FuY2VsVHJhbnNmZXIoQ1VSTCogaGFuZGxlKQordm9pZCBDdXJsUmVxdWVzdFNj
aGVkdWxlcjo6Y2FuY2VsVHJhbnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVu
dCkKIHsKLSAgICBmaW5hbGl6ZVRyYW5zZmVyKGhhbmRsZSwgW10oQ3VybFJlcXVlc3RTY2hlZHVs
ZXJDbGllbnQqIGNsaWVudCkgeworICAgIGZpbmFsaXplVHJhbnNmZXIoY2xpZW50LCBbY2xpZW50
XSgpIHsKICAgICAgICAgY2xpZW50LT5kaWRDYW5jZWxUcmFuc2ZlcigpOwogICAgIH0pOwogfQog
Ci12b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpmaW5hbGl6ZVRyYW5zZmVyKENVUkwqIGhhbmRs
ZSwgRnVuY3Rpb248dm9pZChDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCopPiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmZpbmFsaXplVHJhbnNmZXIoQ3Vy
bFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCwgRnVuY3Rpb248dm9pZCgpPiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIHRhc2sgPSBbdGhpcywgaGFuZGxlLCBjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgewotICAgICAgICBpZiAoIW1fYWN0aXZl
Sm9icy5jb250YWlucyhoYW5kbGUpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9tdXRleCk7CisKKyAgICBpZiAoIW1fYWN0aXZlSm9icy5jb250YWlu
cyhjbGllbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2FjdGl2ZUpvYnMucmVtb3ZlKGNs
aWVudCk7CiAKLSAgICAgICAgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCA9IG1f
YWN0aXZlSm9icy5pbmxpbmVHZXQoaGFuZGxlKTsKKyAgICBhdXRvIHRhc2sgPSBbdGhpcywgY2xp
ZW50LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsK
KyAgICAgICAgaWYgKGNsaWVudC0+aGFuZGxlKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2Ns
aWVudE1hcHMuY29udGFpbnMoY2xpZW50LT5oYW5kbGUoKSkpOworICAgICAgICAgICAgbV9jbGll
bnRNYXBzLnJlbW92ZShjbGllbnQtPmhhbmRsZSgpKTsKKyAgICAgICAgICAgIG1fY3VybE11bHRp
SGFuZGxlLT5yZW1vdmVIYW5kbGUoY2xpZW50LT5oYW5kbGUoKSk7CisgICAgICAgIH0KIAotICAg
ICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+cmVtb3ZlSGFuZGxlKGhhbmRsZSk7Ci0gICAgICAgIG1f
YWN0aXZlSm9icy5yZW1vdmUoaGFuZGxlKTsKLSAgICAgICAgY29tcGxldGlvbihjbGllbnQpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2NsaWVudF0oKSB7CiAgICAgICAgICAgICBjbGllbnQtPnJlbGVhc2UoKTsKICAgICAgICAgfSk7
CiAgICAgfTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgIG1fdGFza1F1
ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAppbmRl
eCAyNjRiOTBlMTA2YjkzMGJkM2I0MGMyYTY5MDUwZjA1YmRmOTlmYTBlLi5jYTNiYmE4MTM0NDBi
ZmY2ZTgwMzEyNjQwOTc2Y2MzODhhNzQ4NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaApAQCAt
NTksMTYgKzU5LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3b3JrZXJUaHJlYWQoKTsKIAogICAg
IHZvaWQgc3RhcnRUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCopOwotICAgIHZv
aWQgY29tcGxldGVUcmFuc2ZlcihDVVJMKiwgQ1VSTGNvZGUpOwotICAgIHZvaWQgY2FuY2VsVHJh
bnNmZXIoQ1VSTCopOwotICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcihDVVJMKiwgRnVuY3Rpb248
dm9pZChDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCopPik7CisgICAgdm9pZCBjb21wbGV0ZVRy
YW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiwgQ1VSTGNvZGUpOworICAgIHZvaWQg
Y2FuY2VsVHJhbnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqKTsKKyAgICB2b2lkIGZp
bmFsaXplVHJhbnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqLCBGdW5jdGlvbjx2b2lk
KCk+KTsKIAotICAgIG11dGFibGUgTG9jayBtX211dGV4OworICAgIExvY2sgbV9tdXRleDsKICAg
ICBSZWZQdHI8VGhyZWFkPiBtX3RocmVhZDsKICAgICBib29sIG1fcnVuVGhyZWFkIHsgZmFsc2Ug
fTsKIAogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tRdWV1ZTsKLSAgICBIYXNo
TWFwPENVUkwqLCBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCo+IG1fYWN0aXZlSm9iczsKKyAg
ICBIYXNoU2V0PEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kj4gbV9hY3RpdmVKb2JzOworICAg
IEhhc2hNYXA8Q1VSTCosIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kj4gbV9jbGllbnRNYXBz
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aUhhbmRsZT4gbV9jdXJsTXVsdGlIYW5k
bGU7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAyZDVjOGFlMjlmOWRjNGM3ZTBlZjM2M2RkZDFiZDI5NzVmOGVjYzU4Li45
MDUxM2QyYjIxYmRlNTg4ZWE4Y2NkZjYzMDA5YmJhZTJjODRjMzlhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTktMDQtMjUgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5j
b20+CisKKyAgICAgICAgW0N1cmxdIEZpeCBDdXJsIFJlcXVlc3QgU2NoZWR1bGVyIG5vdCB0byBy
ZWxlYXNlIHdyb25nIEN1cmwgaGFuZGxlIHdoZW4gcmVxdWVzdCBpcyBjYW5jZWxsZWQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE2NTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
bWlzYy9yZXBlYXQtb3Blbi1jYW5jZWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2FuY2VsLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA0
LTA5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBS
ZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MgdGVzdCBjYXNlIGZvciBQaW5nCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVwZWF0LW9wZW4tY2FuY2VsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXBlYXQtb3Blbi1jYW5jZWwtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgzYzA4MWVmM2E2ODEzMjhmYzZmMzlkNjEyMDE0NmU1YzZkMzE3
NGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVwZWF0
LW9wZW4tY2FuY2VsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgaXMgYSB0ZXN0
IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjUwLgorCitJ
biBjYXNlIHRoYXQgc2V2ZXJhbCByZXF1ZXN0cyBhcmUgY2xvc2VkIGFuZCBjcmVhdGVkIHByZXR0
eSBmYXN0LCBhIHJlc3VsdCBvZiBvbGQgcmVxdWVzdCBzb21ldGltZXMgZ29lcyB0byBhIHdyb25n
IHJlcXVlc3QuCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9yZXBlYXQtb3Blbi1jYW5jZWwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9y
ZXBlYXQtb3Blbi1jYW5jZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWMxNjFhMWIwMzQwZTZkZjhmNmNi
ZDliMTI5YzBlZjk2ZTMyZmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL3JlcGVhdC1vcGVuLWNhbmNlbC5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgordmFyIHJlcGVhdENvdW50ID0gMDsKKworZnVuY3Rpb24gc2Vu
ZFJlcXVlc3QoKSB7CisgICAgdmFyIGZpcnN0UmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cisg
ICAgZmlyc3RSZXEub3BlbigiR0VUIiwgIi9yZXNvdXJjZXMvZG93bmxvYWQtanNvbi13aXRoLWRl
bGF5LnBocD9pdGVyYXRpb249MTAwJmRlbGF5PTEiKTsKKworICAgIGZpcnN0UmVxLm9ucmVhZHlz
dGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoZmlyc3RSZXEucmVhZHlTdGF0
ZSA9PSBmaXJzdFJlcS5IRUFERVJTX1JFQ0VJVkVEKSB7CisgICAgICAgICAgICB2YXIgc2Vjb25k
UmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgICAgICBzZWNvbmRSZXEub3Blbigi
R0VUIiwgIi9yZXNvdXJjZXMvZG93bmxvYWQtanNvbi13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249
MTAmZGVsYXk9MCIpOworCisgICAgICAgICAgICBzZWNvbmRSZXEub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgaWYgKHJlcGVhdENvdW50KysgPCA0MCkKKyAgICAgICAgICAg
ICAgICAgICAgc2VuZFJlcXVlc3QoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9
ICJQQVNTIjsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWNvbmRSZXEu
b25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS5pbm5lclRleHQgPSAiRkFJTCI7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpcnN0
UmVxLmFib3J0KCk7CisgICAgICAgICAgICBzZWNvbmRSZXEuc2VuZCgpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZmlyc3RSZXEuc2VuZCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorCisgICAg
c2VuZFJlcXVlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTE2NTAuPC9wPgorPHA+SW4gY2FzZSB0aGF0IHNldmVyYWwgcmVxdWVz
dHMgYXJlIGNsb3NlZCBhbmQgY3JlYXRlZCBwcmV0dHkgZmFzdCwgYSByZXN1bHQgb2Ygb2xkIHJl
cXVlc3Qgc29tZXRpbWVzIGdvZXMgdG8gYSB3cm9uZyByZXF1ZXN0LjwvcD4KKzxwIGlkPSJyZXN1
bHQiPlJVTk5JTkc8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>