<?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>202391</bug_id>
          
          <creation_ts>2019-09-30 22:36:17 -0700</creation_ts>
          <short_desc>[JSC] Place VM* in TLS</short_desc>
          <delta_ts>2019-10-04 11:16:59 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tsavell</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1575436</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-30 22:36:17 -0700</bug_when>
    <thetext>[JSC] Place VM* in TLS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575438</commentid>
    <comment_count>1</comment_count>
      <attachid>379876</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-30 22:36:31 -0700</bug_when>
    <thetext>Created attachment 379876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575439</commentid>
    <comment_count>2</comment_count>
      <attachid>379877</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-30 22:39:31 -0700</bug_when>
    <thetext>Created attachment 379877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575440</commentid>
    <comment_count>3</comment_count>
      <attachid>379878</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-30 22:40:59 -0700</bug_when>
    <thetext>Created attachment 379878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575442</commentid>
    <comment_count>4</comment_count>
      <attachid>379879</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-30 22:43:56 -0700</bug_when>
    <thetext>Created attachment 379879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575446</commentid>
    <comment_count>5</comment_count>
      <attachid>379879</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-30 23:03:16 -0700</bug_when>
    <thetext>Comment on attachment 379879
Patch

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

LGTM

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:293
&gt; +    VM::exchange(nullptr);

Maybe assert that the returned VM* == m_vm?

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:311
&gt; +    VM::exchange(m_vm.get());

Assert that VM::exchange returns nullptr?

&gt; Source/JavaScriptCore/runtime/JSLock.h:91
&gt; +    friend class JSRunLoopTimer;

Does JSRunLoopTimer really need to be a friend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575447</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-30 23:05:51 -0700</bug_when>
    <thetext>Looks like IDBBindingUtilities.cpp is being naughty and not using the JSLockHolder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575527</commentid>
    <comment_count>7</comment_count>
      <attachid>379879</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-10-01 07:33:36 -0700</bug_when>
    <thetext>Comment on attachment 379879
Patch

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

&gt; Source/JavaScriptCore/runtime/VM.h:318
&gt; +    static constexpr pthread_key_t tlsKey = WTF_GC_TLC_KEY;

Can we change this name? WTF_GC_TLC_KEY doesn&apos;t seem super accurate...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575717</commentid>
    <comment_count>8</comment_count>
      <attachid>379946</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 13:53:16 -0700</bug_when>
    <thetext>Created attachment 379946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575719</commentid>
    <comment_count>9</comment_count>
      <attachid>379879</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 13:56:04 -0700</bug_when>
    <thetext>Comment on attachment 379879
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:293
&gt;&gt; +    VM::exchange(nullptr);
&gt; 
&gt; Maybe assert that the returned VM* == m_vm?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:311
&gt;&gt; +    VM::exchange(m_vm.get());
&gt; 
&gt; Assert that VM::exchange returns nullptr?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.h:91
&gt;&gt; +    friend class JSRunLoopTimer;
&gt; 
&gt; Does JSRunLoopTimer really need to be a friend?

Not necessary. Removed, nice.

&gt;&gt; Source/JavaScriptCore/runtime/VM.h:318
&gt;&gt; +    static constexpr pthread_key_t tlsKey = WTF_GC_TLC_KEY;
&gt; 
&gt; Can we change this name? WTF_GC_TLC_KEY doesn&apos;t seem super accurate...

Changed it to WTF_VM_KEY. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575720</commentid>
    <comment_count>10</comment_count>
      <attachid>379946</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-01 13:57:53 -0700</bug_when>
    <thetext>Comment on attachment 379946
Patch

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

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:90
&gt; +        VM::exchange(m_previousVMInTLS); // Change VM after unlocking. Otherwise, willReleaseLock will see previous VM.

I suggest rephrasing this as &quot;Change VM only after unlocking&quot;.  I think that&apos;s what you meant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575722</commentid>
    <comment_count>11</comment_count>
      <attachid>379946</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 13:59:14 -0700</bug_when>
    <thetext>Comment on attachment 379946
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:90
&gt;&gt; +        VM::exchange(m_previousVMInTLS); // Change VM after unlocking. Otherwise, willReleaseLock will see previous VM.
&gt; 
&gt; I suggest rephrasing this as &quot;Change VM only after unlocking&quot;.  I think that&apos;s what you meant.

Fixed, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575723</commentid>
    <comment_count>12</comment_count>
      <attachid>379947</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 13:59:45 -0700</bug_when>
    <thetext>Created attachment 379947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575732</commentid>
    <comment_count>13</comment_count>
      <attachid>379947</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-01 14:16:08 -0700</bug_when>
    <thetext>Comment on attachment 379947
Patch

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

r=me with the ChangeLog fixed.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        And JSLockHolder&apos;s destructor restores it. Since DropAllLocks want to put `nullptr` in TLS, we place previous VM*
&gt; +        in JSLockHolder itself. And now JSLock is only lockable by JSLockHolder.

This part &quot;Since DropAllLocks want to put `nullptr` in TLS, we place previous VM* in JSLockHolder itself.&quot; is not true.  DropAllLocks knows the VM that it is dropping the lock for, and it doesn&apos;t interact with JSLockHolder, right?  So, JSLockHolder::m_previousVMInTLS is not needed for this purpose.

That said, let&apos;s say that we have 2 VM instances A and B, and that we were executing in A when it called a C++ host function.  While still holding the JSLock for A, the thread now enters B.  In this case, the TLS VM should be set to B, but when we exit, it should be restored to A.  I think this is the reason for needing JSLockHolder::m_previousVMInTLS.  This is also the reason why we should not generally use VM::current() as the source of truth of VM* rather than threading everywhere: it is only correct for some uses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575742</commentid>
    <comment_count>14</comment_count>
      <attachid>379947</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 14:28:54 -0700</bug_when>
    <thetext>Comment on attachment 379947
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        in JSLockHolder itself. And now JSLock is only lockable by JSLockHolder.
&gt; 
&gt; This part &quot;Since DropAllLocks want to put `nullptr` in TLS, we place previous VM* in JSLockHolder itself.&quot; is not true.  DropAllLocks knows the VM that it is dropping the lock for, and it doesn&apos;t interact with JSLockHolder, right?  So, JSLockHolder::m_previousVMInTLS is not needed for this purpose.
&gt; 
&gt; That said, let&apos;s say that we have 2 VM instances A and B, and that we were executing in A when it called a C++ host function.  While still holding the JSLock for A, the thread now enters B.  In this case, the TLS VM should be set to B, but when we exit, it should be restored to A.  I think this is the reason for needing JSLockHolder::m_previousVMInTLS.  This is also the reason why we should not generally use VM::current() as the source of truth of VM* rather than threading everywhere: it is only correct for some uses.

OK, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575743</commentid>
    <comment_count>15</comment_count>
      <attachid>379951</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 14:29:32 -0700</bug_when>
    <thetext>Created attachment 379951
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575765</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 15:21:46 -0700</bug_when>
    <thetext>Committed r250583: &lt;https://trac.webkit.org/changeset/250583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575766</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-01 15:22:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/55892096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575847</commentid>
    <comment_count>18</comment_count>
      <attachid>379951</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-01 19:51:58 -0700</bug_when>
    <thetext>Comment on attachment 379951
Patch for landing

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

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:313
&gt; +    ASSERT_UNUSED(previousVMInTLS, previousVMInTLS);

This seems to assert in many debug tests
https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK2%20(Tests)/builds/5020/steps/layout-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575858</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 20:29:31 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #18)
&gt; Comment on attachment 379951 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379951&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSLock.cpp:313
&gt; &gt; +    ASSERT_UNUSED(previousVMInTLS, previousVMInTLS);
&gt; 
&gt; This seems to assert in many debug tests
&gt; https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK2%20(Tests)/
&gt; builds/5020/steps/layout-test/logs/stdio

Looking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575861</commentid>
    <comment_count>20</comment_count>
      <attachid>379951</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 20:30:01 -0700</bug_when>
    <thetext>Comment on attachment 379951
Patch for landing

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:313
&gt;&gt;&gt; +    ASSERT_UNUSED(previousVMInTLS, previousVMInTLS);
&gt;&gt; 
&gt;&gt; This seems to assert in many debug tests
&gt;&gt; https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK2%20(Tests)/builds/5020/steps/layout-test/logs/stdio
&gt; 
&gt; Looking.

This assertion should not be met. Removing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575868</commentid>
    <comment_count>21</comment_count>
      <attachid>379951</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 20:41:23 -0700</bug_when>
    <thetext>Comment on attachment 379951
Patch for landing

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

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:294
&gt; +    ASSERT_UNUSED(previousVMInTLS, previousVMInTLS == m_vm.get());

I don&apos;t think this is guaranteed. At anytime, we can use DropAllLocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575871</commentid>
    <comment_count>22</comment_count>
      <attachid>379951</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 20:42:38 -0700</bug_when>
    <thetext>Comment on attachment 379951
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:294
&gt;&gt; +    ASSERT_UNUSED(previousVMInTLS, previousVMInTLS == m_vm.get());
&gt; 
&gt; I don&apos;t think this is guaranteed. At anytime, we can use DropAllLocks.

We should put VM* in m_previousVMInTLS field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575873</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 20:44:44 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #22)
&gt; Comment on attachment 379951 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379951&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:294
&gt; &gt;&gt; +    ASSERT_UNUSED(previousVMInTLS, previousVMInTLS == m_vm.get());
&gt; &gt; 
&gt; &gt; I don&apos;t think this is guaranteed. At anytime, we can use DropAllLocks.
&gt; 
&gt; We should put VM* in m_previousVMInTLS field.

Ah, no. After looking into DropAllLocks, it strongly assumes that VM is now used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575877</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-01 20:48:24 -0700</bug_when>
    <thetext>Committed r250594: &lt;https://trac.webkit.org/changeset/250594&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576265</commentid>
    <comment_count>25</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-02 18:02:09 -0700</bug_when>
    <thetext>LGTM too with your assertion fix.

Out of curiosity, if we make exec-&gt;vm() use this, do we get a speedup?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576266</commentid>
    <comment_count>26</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-02 18:02:22 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #25)
&gt; LGTM too with your assertion fix.
&gt; 
&gt; Out of curiosity, if we make exec-&gt;vm() use this, do we get a speedup?

(When FAST_TLS is enabled)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576867</commentid>
    <comment_count>27</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-04 08:34:11 -0700</bug_when>
    <thetext>Reverted r250594 for reason:

Broke multiple internal API tests

Committed r250724: &lt;https://trac.webkit.org/changeset/250724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576869</commentid>
    <comment_count>28</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-04 08:35:07 -0700</bug_when>
    <thetext>Reverted r250583 for reason:

Broke multiple internal API tests

Committed r250725: &lt;https://trac.webkit.org/changeset/250725&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576928</commentid>
    <comment_count>29</comment_count>
      <attachid>379951</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-04 11:16:59 -0700</bug_when>
    <thetext>Comment on attachment 379951
Patch for landing

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:294
&gt;&gt;&gt;&gt; +    ASSERT_UNUSED(previousVMInTLS, previousVMInTLS == m_vm.get());
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t think this is guaranteed. At anytime, we can use DropAllLocks.
&gt;&gt; 
&gt;&gt; We should put VM* in m_previousVMInTLS field.
&gt; 
&gt; Ah, no. After looking into DropAllLocks, it strongly assumes that VM is now used.

WebThread clients uses DropAllLocks even if they do not have a lock for VM. We should check m_droppedLockCount.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379876</attachid>
            <date>2019-09-30 22:36:31 -0700</date>
            <delta_ts>2019-09-30 22:39:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202391-20190930223631.patch</filename>
            <type>text/plain</type>
            <size>9454</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NmZiMjQyNmE4ZmFlY2MxZTg3OGU4ZjUyMmIxNmU2MjMzMDY5ZTg1Li5lM2Q0NDg4MjJmODQxYjFl
MjJlMTk1NTE5YzI2ZmRjNmZjYzYzZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOS0wOS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFBsYWNlIFZNKiBpbiBUTFMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2NrSG9sZGVy
OjpKU0xvY2tIb2xkZXIpOgorICAgICAgICAoSlNDOjpKU0xvY2tIb2xkZXI6On5KU0xvY2tIb2xk
ZXIpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKToK
KyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6On5Ecm9wQWxsTG9ja3MpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgIChKU0M6OkpTTG9ja0hvbGRlcjo6dm0p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpK
U1J1bkxvb3BUaW1lcjo6dGltZXJEaWRGaXJlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk06OmluaXRpYWxpemVUTFMpOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
aDoKKyAgICAgICAgKEpTQzo6Vk06OmV4Y2hhbmdlKToKKyAgICAgICAgKEpTQzo6Vk06OmN1cnJl
bnQpOgorCiAyMDE5LTA5LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSGVhcFNuYXBzaG90QnVpbGRlciBtX3Jvb3REYXRhIHNob3VsZCBiZSBw
cm90ZWN0ZWQgd2l0aCBhIGxvY2sgdG9vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01h
bmFnZWRWYWx1ZS5tbQppbmRleCA5ZjVkZDg4OTJhOGJmYWUzMjhjZTBjNTlhYjVlOWJjYjYzNDQy
N2ZkLi5kZWVhNmE1M2Q5ZWFjYTk1MDFjODk0MTEyYzRhYzAxODE4ZGJlOWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTE0NywxMiArMTQ3LDkg
QEAgLSAodm9pZClkaWRSZW1vdmVPd25lcjooaWQpb3duZXIKIAogLSAoSlNWYWx1ZSAqKXZhbHVl
CiB7Ci0gICAgV1RGOjpMb2NrZXI8SlNDOjpKU0xvY2s+IGxvY2tlcihtX2xvY2suZ2V0KCkpOwot
ICAgIEpTQzo6Vk0qIHZtID0gbV9sb2NrLT52bSgpOwotICAgIGlmICghdm0pCisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKEpTQzo6SlNMb2NrSG9sZGVyOjpMb2NrSWZWTUlzTGl2ZSwgKm1f
bG9jay5nZXQoKSk7CisgICAgaWYgKCFsb2NrZXIudm0oKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGFwaUxvY2tlcih2bSk7CiAgICAgaWYgKCFtX2dsb2Jh
bE9iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAobV93ZWFrVmFsdWUuaXNDbGVh
cigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmNwcAppbmRleCAxZmQ1OWY0NzYwMDBmN2FkNDE1ZWQyNzE5YzUyOWNlNDhjZmM5
YTFiLi40YWJlYTJhZWZlMzk2ZTExOGZkMjQ0NmUzOWZlZTZjYmI4MTI0MWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNw
cApAQCAtNzEsNiArNzEsOCBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogCiAgICAgICAg
IGluaXRpYWxpemVQdHJUYWdMb29rdXAoKTsKIAorICAgICAgICBWTTo6aW5pdGlhbGl6ZVRMUygp
OworCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgICAgICBXcml0ZUJh
cnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBkYWYwZjc3ZDU2ZWUxMzI3ZmZkZWFhYzBkODA4ZTQ1
N2NmZTg2MzEwLi5kYzFiOTcyNmJhN2EwZjA4NjQ4YzM0NWJlMWQ0NDRhN2E0Zjg0YTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgi
CiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVk
ZSAiV2FzbUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgog
I2luY2x1ZGUgPHRocmVhZD4KQEAgLTY3LDEzICs2OCwyNyBAQCBKU0xvY2tIb2xkZXI6OkpTTG9j
a0hvbGRlcihWTSYgdm0pCiAgICAgOiBtX3ZtKCZ2bSkKIHsKICAgICBtX3ZtLT5hcGlMb2NrKCku
bG9jaygpOworICAgIG1fcHJldmlvdXNWTUluVExTID0gVk06OmV4Y2hhbmdlKG1fdm0uZ2V0KCkp
OworfQorCitKU0xvY2tIb2xkZXI6OkpTTG9ja0hvbGRlcihMb2NrSWZWTUlzTGl2ZVRhZywgSlNM
b2NrJiBsb2NrKQoreworICAgIGxvY2subG9jaygpOworICAgIGlmIChsb2NrLm1fdm0pIHsKKyAg
ICAgICAgbV92bSA9IGxvY2subV92bTsKKyAgICAgICAgbV9wcmV2aW91c1ZNSW5UTFMgPSBWTTo6
ZXhjaGFuZ2UobV92bS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGxvY2sudW5sb2NrKCk7
CiB9CiAKIEpTTG9ja0hvbGRlcjo6fkpTTG9ja0hvbGRlcigpCiB7Ci0gICAgUmVmUHRyPEpTTG9j
az4gYXBpTG9jaygmbV92bS0+YXBpTG9jaygpKTsKLSAgICBtX3ZtID0gbnVsbHB0cjsKLSAgICBh
cGlMb2NrLT51bmxvY2soKTsKKyAgICBpZiAobV92bSkgeworICAgICAgICBSZWZQdHI8SlNMb2Nr
PiBhcGlMb2NrKCZtX3ZtLT5hcGlMb2NrKCkpOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKKyAg
ICAgICAgYXBpTG9jay0+dW5sb2NrKCk7CisgICAgICAgIFZNOjpleGNoYW5nZShtX3ByZXZpb3Vz
Vk1JblRMUyk7IC8vIENoYW5nZSBWTSBhZnRlciB1bmxvY2tpbmcuIE90aGVyd2lzZSwgd2lsbFJl
bGVhc2VMb2NrIHdpbGwgc2VlIHByZXZpb3VzIFZNLgorICAgIH0KIH0KIAogSlNMb2NrOjpKU0xv
Y2soVk0qIHZtKQpAQCAtMjIyLDE2ICsyMzcsNiBAQCB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VM
b2NrKCkKICAgICB9CiB9CiAKLXZvaWQgSlNMb2NrOjpsb2NrKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICBleGVjLT52bSgpLmFwaUxvY2soKS5sb2NrKCk7Ci19Ci0KLXZvaWQgSlNMb2NrOjp1bmxv
Y2soRXhlY1N0YXRlKiBleGVjKQotewotICAgIGV4ZWMtPnZtKCkuYXBpTG9jaygpLnVubG9jaygp
OwotfQotCiAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBsb2NrcyB0aGF0
IHdlcmUgZHJvcHBlZC4KIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BBbGxMb2Nr
cyogZHJvcHBlcikKIHsKQEAgLTI4NSw2ICsyOTAsNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6
RHJvcEFsbExvY2tzKFZNKiB2bSkKICAgICAgICAgcmV0dXJuOwogICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3ZtLT5hcGlMb2NrKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV92bS0+
aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAgIG1fZHJvcHBlZExvY2tDb3Vu
dCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxsTG9ja3ModGhpcyk7CisgICAgVk06OmV4Y2hhbmdl
KG51bGxwdHIpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKEV4ZWNT
dGF0ZSogZXhlYykKQEAgLTMwMiw2ICszMDgsNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6fkRy
b3BBbGxMb2NrcygpCiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47CiAgICAgbV92bS0+
YXBpTG9jaygpLmdyYWJBbGxMb2Nrcyh0aGlzLCBtX2Ryb3BwZWRMb2NrQ291bnQpOworICAgIFZN
OjpleGNoYW5nZShtX3ZtLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDBiMjdmZjYzZmU0ODE1YmYyNjNmYzY2
Zjc4OTcxMGMzMmIwYzI1MDYuLjcxN2IxYWI1OGYyN2ZkNjk0Yzc4NTFiYTc2M2JhY2Y5OTQ4NWM5
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC01MSw2ICs1MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBWTTsKK2NsYXNz
IEpTTG9jazsKIAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIGluaXRpYWxp
emF0aW9uIG9mIHRoZSBsZWdhY3kgc2luZ2xlIAogLy8gc2hhcmVkIFZNLgpAQCAtNjMsMzIgKzY0
LDM1IEBAIGNsYXNzIEdsb2JhbEpTTG9jayB7CiAgICAgc3RhdGljIExvY2sgc19zaGFyZWRJbnN0
YW5jZU11dGV4OwogfTsKIAorLy8gT25seSBKU0xvY2tIb2xkZXIgY2FuIHRha2UgYSBKU0xvY2su
CiBjbGFzcyBKU0xvY2tIb2xkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTTG9ja0hv
bGRlcik7CisgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04oSlNMb2NrSG9sZGVyKTsKIHB1
YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoVk0qKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBK
U0xvY2tIb2xkZXIoRXhlY1N0YXRlKik7CiAKKyAgICBlbnVtIExvY2tJZlZNSXNMaXZlVGFnIHsg
TG9ja0lmVk1Jc0xpdmUgfTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoTG9j
a0lmVk1Jc0xpdmVUYWcsIEpTTG9jayYpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkpTTG9j
a0hvbGRlcigpOwogCisgICAgVk0qIHZtKCkgeyByZXR1cm4gbV92bS5nZXQoKTsgfQorCiBwcml2
YXRlOgogICAgIFJlZlB0cjxWTT4gbV92bTsKKyAgICBWTSogbV9wcmV2aW91c1ZNSW5UTFMgeyBu
dWxscHRyIH07CiB9OwogCiBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SlNMb2NrPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNMb2NrKTsKKyAgICBmcmll
bmQgY2xhc3MgSlNMb2NrSG9sZGVyOworICAgIGZyaWVuZCBjbGFzcyBKU1J1bkxvb3BUaW1lcjsK
IHB1YmxpYzoKICAgICBKU0xvY2soVk0qKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNMb2Nr
KCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGxvY2soKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHVubG9jaygpOwotCi0gICAgc3RhdGljIHZvaWQgbG9jayhFeGVjU3RhdGUq
KTsKLSAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7Ci0gICAgc3RhdGljIHZvaWQg
bG9jayhWTSYpOwotICAgIHN0YXRpYyB2b2lkIHVubG9jayhWTSYpOwotCiAgICAgVk0qIHZtKCkg
eyByZXR1cm4gbV92bTsgfQogCiAgICAgT3B0aW9uYWw8UmVmUHRyPFRocmVhZD4+IG93bmVyVGhy
ZWFkKCkgY29uc3QKQEAgLTEyNiw2ICsxMzAsMTAgQEAgY2xhc3MgSlNMb2NrIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEpTTG9jaz4gewogICAgIGJvb2wgaXNXZWJUaHJlYWRBd2FyZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNXZWJUaHJlYWRBd2FyZTsgfQogCiBwcml2YXRlOgorICAgIC8v
IFRoaXMgaXMgY2FsbGVkIG9ubHkgZnJvbSBKU0xvY2tIb2xkZXIgb3IgRHJvcEFsbExvY2tzLgor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9jaygpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgdW5sb2NrKCk7CisKICAgICB2b2lkIGxvY2soaW50cHRyX3QgbG9ja0NvdW50KTsKICAg
ICB2b2lkIHVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCAyYTBjMDZjNWQyMzY1
OGZkZmNjYTUzMmE2NjQwZmZjMmRhZGNhYTNjLi5lNjBjMzQ5ZWUwM2NlMjM1ZDI4NjM5YTNhOWU0
MTIwZDZiZTllYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNS
dW5Mb29wVGltZXIuY3BwCkBAIC0yOTcsMTQgKzI5NywxMiBAQCB2b2lkIEpTUnVuTG9vcFRpbWVy
Ojp0aW1lckRpZEZpcmUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJk
PEpTTG9jaz4gbG9jayhtX2FwaUxvY2suZ2V0KCkpOwotICAgIFJlZlB0cjxWTT4gdm0gPSBtX2Fw
aUxvY2stPnZtKCk7Ci0gICAgaWYgKCF2bSkgeworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoSlNM
b2NrSG9sZGVyOjpMb2NrSWZWTUlzTGl2ZSwgbV9hcGlMb2NrLmdldCgpKTsKKyAgICBpZiAoIWxv
Y2tlci52bSgpKSB7CiAgICAgICAgIC8vIFRoZSBWTSBoYXMgYmVlbiBkZXN0cm95ZWQsIHNvIHdl
IHNob3VsZCBqdXN0IGdpdmUgdXAuCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBkb1dv
cmsoKnZtKTsKKyAgICBkb1dvcmsoKmxvY2tlci52bSgpKTsKIH0KIAogSlNSdW5Mb29wVGltZXI6
OkpTUnVuTG9vcFRpbWVyKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCBhZGI1YTkxMzRkOGZiYzQ2MzYwMjFlYjE5YWZhZjZlMjRmNTZhM2ZhLi43ZWZhMWZmMjE1
ZjM5Y2ZiZDFkY2Y2ZjgyMjMxNWYwZmM3NGE2Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC0xMzc5LDQgKzEzNzksMTYgQEAgdm9pZCBWTTo6c2V0Q3Jhc2hPblZNQ3Jl
YXRpb24oYm9vbCBzaG91bGRDcmFzaCkKICAgICB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBzaG91
bGRDcmFzaDsKIH0KIAorCisjaWYgIUhBVkUoRkFTVF9UTFMpCitUaHJlYWRTcGVjaWZpY0tleSBW
TTo6dGxzS2V5IHsgSW52YWxpZFRocmVhZFNwZWNpZmljS2V5IH07CisjZW5kaWYKKwordm9pZCBW
TTo6aW5pdGlhbGl6ZVRMUygpCit7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgdGhyZWFkU3Bl
Y2lmaWNLZXlDcmVhdGUoJnRsc0tleSwgbnVsbHB0cik7CisjZW5kaWYKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAzOWJlYTVkZWM3MDQ5
NDJmYzI1ZGI5YjdjOWU4N2ViZWI4MTZmZmVkLi5hMGU1MzcxNDEzYzdlZWU4ZTZlOGE3NDE0OGM5
OTgwZWE0NmRiZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxNCw2ICsz
MTQsMzkgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJs
aWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBXZWFrUmFuZG9tJiByYW5kb20oKSB7
IHJldHVybiBtX3JhbmRvbTsgfQogICAgIEludGVncml0eTo6UmFuZG9tJiBpbnRlZ3JpdHlSYW5k
b20oKSB7IHJldHVybiBtX2ludGVncml0eVJhbmRvbTsgfQogCisjaWYgSEFWRShGQVNUX1RMUykK
KyAgICBzdGF0aWMgY29uc3RleHByIHB0aHJlYWRfa2V5X3QgdGxzS2V5ID0gV1RGX0dDX1RMQ19L
RVk7CisKKyAgICBzdGF0aWMgVk0qIGV4Y2hhbmdlKFZNKiB2bSkKKyAgICB7CisgICAgICAgIFZN
KiBwcmV2aW91cyA9IGN1cnJlbnQoKTsKKyAgICAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGly
ZWN0KHRsc0tleSwgYml0d2lzZV9jYXN0PHZvaWQqPih2bSkpOworICAgICAgICByZXR1cm4gcHJl
dmlvdXM7CisgICAgfQorCisgICAgc3RhdGljIFZNKiBjdXJyZW50KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8Vk0qPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QodGxz
S2V5KSk7CisgICAgfQorI2Vsc2UKKyAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWNLZXkgdGxzS2V5
OworCisgICAgc3RhdGljIFZNKiBleGNoYW5nZShWTSogdm0pCisgICAgeworICAgICAgICBBU1NF
UlQodGxzS2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgICAgIFZNKiBwcmV2
aW91cyA9IGN1cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkU3BlY2lmaWNTZXQodGxzS2V5LCBwcmV2
aW91cyk7CisgICAgICAgIHJldHVybiBwcmV2aW91czsKKyAgICB9CisKKyAgICBzdGF0aWMgVk0q
IGN1cnJlbnQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRsc0tleSAhPSBJbnZhbGlkVGhyZWFk
U3BlY2lmaWNLZXkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFZNKj4odGhyZWFkU3Bl
Y2lmaWNHZXQodGxzS2V5KSk7CisgICAgfQorI2VuZGlmCisgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVRMUygpOworCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG5leHRJRCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379877</attachid>
            <date>2019-09-30 22:39:31 -0700</date>
            <delta_ts>2019-09-30 22:40:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202391-20190930223931.patch</filename>
            <type>text/plain</type>
            <size>9494</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NmZiMjQyNmE4ZmFlY2MxZTg3OGU4ZjUyMmIxNmU2MjMzMDY5ZTg1Li5lM2Q0NDg4MjJmODQxYjFl
MjJlMTk1NTE5YzI2ZmRjNmZjYzYzZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOS0wOS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFBsYWNlIFZNKiBpbiBUTFMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2NrSG9sZGVy
OjpKU0xvY2tIb2xkZXIpOgorICAgICAgICAoSlNDOjpKU0xvY2tIb2xkZXI6On5KU0xvY2tIb2xk
ZXIpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKToK
KyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6On5Ecm9wQWxsTG9ja3MpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgIChKU0M6OkpTTG9ja0hvbGRlcjo6dm0p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpK
U1J1bkxvb3BUaW1lcjo6dGltZXJEaWRGaXJlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk06OmluaXRpYWxpemVUTFMpOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
aDoKKyAgICAgICAgKEpTQzo6Vk06OmV4Y2hhbmdlKToKKyAgICAgICAgKEpTQzo6Vk06OmN1cnJl
bnQpOgorCiAyMDE5LTA5LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSGVhcFNuYXBzaG90QnVpbGRlciBtX3Jvb3REYXRhIHNob3VsZCBiZSBw
cm90ZWN0ZWQgd2l0aCBhIGxvY2sgdG9vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01h
bmFnZWRWYWx1ZS5tbQppbmRleCA5ZjVkZDg4OTJhOGJmYWUzMjhjZTBjNTlhYjVlOWJjYjYzNDQy
N2ZkLi5kZWVhNmE1M2Q5ZWFjYTk1MDFjODk0MTEyYzRhYzAxODE4ZGJlOWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTE0NywxMiArMTQ3LDkg
QEAgLSAodm9pZClkaWRSZW1vdmVPd25lcjooaWQpb3duZXIKIAogLSAoSlNWYWx1ZSAqKXZhbHVl
CiB7Ci0gICAgV1RGOjpMb2NrZXI8SlNDOjpKU0xvY2s+IGxvY2tlcihtX2xvY2suZ2V0KCkpOwot
ICAgIEpTQzo6Vk0qIHZtID0gbV9sb2NrLT52bSgpOwotICAgIGlmICghdm0pCisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKEpTQzo6SlNMb2NrSG9sZGVyOjpMb2NrSWZWTUlzTGl2ZSwgKm1f
bG9jay5nZXQoKSk7CisgICAgaWYgKCFsb2NrZXIudm0oKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGFwaUxvY2tlcih2bSk7CiAgICAgaWYgKCFtX2dsb2Jh
bE9iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAobV93ZWFrVmFsdWUuaXNDbGVh
cigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmNwcAppbmRleCAxZmQ1OWY0NzYwMDBmN2FkNDE1ZWQyNzE5YzUyOWNlNDhjZmM5
YTFiLi40YWJlYTJhZWZlMzk2ZTExOGZkMjQ0NmUzOWZlZTZjYmI4MTI0MWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNw
cApAQCAtNzEsNiArNzEsOCBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogCiAgICAgICAg
IGluaXRpYWxpemVQdHJUYWdMb29rdXAoKTsKIAorICAgICAgICBWTTo6aW5pdGlhbGl6ZVRMUygp
OworCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgICAgICBXcml0ZUJh
cnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBkYWYwZjc3ZDU2ZWUxMzI3ZmZkZWFhYzBkODA4ZTQ1
N2NmZTg2MzEwLi5kYzFiOTcyNmJhN2EwZjA4NjQ4YzM0NWJlMWQ0NDRhN2E0Zjg0YTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgi
CiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVk
ZSAiV2FzbUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgog
I2luY2x1ZGUgPHRocmVhZD4KQEAgLTY3LDEzICs2OCwyNyBAQCBKU0xvY2tIb2xkZXI6OkpTTG9j
a0hvbGRlcihWTSYgdm0pCiAgICAgOiBtX3ZtKCZ2bSkKIHsKICAgICBtX3ZtLT5hcGlMb2NrKCku
bG9jaygpOworICAgIG1fcHJldmlvdXNWTUluVExTID0gVk06OmV4Y2hhbmdlKG1fdm0uZ2V0KCkp
OworfQorCitKU0xvY2tIb2xkZXI6OkpTTG9ja0hvbGRlcihMb2NrSWZWTUlzTGl2ZVRhZywgSlNM
b2NrJiBsb2NrKQoreworICAgIGxvY2subG9jaygpOworICAgIGlmIChsb2NrLm1fdm0pIHsKKyAg
ICAgICAgbV92bSA9IGxvY2subV92bTsKKyAgICAgICAgbV9wcmV2aW91c1ZNSW5UTFMgPSBWTTo6
ZXhjaGFuZ2UobV92bS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGxvY2sudW5sb2NrKCk7
CiB9CiAKIEpTTG9ja0hvbGRlcjo6fkpTTG9ja0hvbGRlcigpCiB7Ci0gICAgUmVmUHRyPEpTTG9j
az4gYXBpTG9jaygmbV92bS0+YXBpTG9jaygpKTsKLSAgICBtX3ZtID0gbnVsbHB0cjsKLSAgICBh
cGlMb2NrLT51bmxvY2soKTsKKyAgICBpZiAobV92bSkgeworICAgICAgICBSZWZQdHI8SlNMb2Nr
PiBhcGlMb2NrKCZtX3ZtLT5hcGlMb2NrKCkpOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKKyAg
ICAgICAgYXBpTG9jay0+dW5sb2NrKCk7CisgICAgICAgIFZNOjpleGNoYW5nZShtX3ByZXZpb3Vz
Vk1JblRMUyk7IC8vIENoYW5nZSBWTSBhZnRlciB1bmxvY2tpbmcuIE90aGVyd2lzZSwgd2lsbFJl
bGVhc2VMb2NrIHdpbGwgc2VlIHByZXZpb3VzIFZNLgorICAgIH0KIH0KIAogSlNMb2NrOjpKU0xv
Y2soVk0qIHZtKQpAQCAtMjIyLDE2ICsyMzcsNiBAQCB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VM
b2NrKCkKICAgICB9CiB9CiAKLXZvaWQgSlNMb2NrOjpsb2NrKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICBleGVjLT52bSgpLmFwaUxvY2soKS5sb2NrKCk7Ci19Ci0KLXZvaWQgSlNMb2NrOjp1bmxv
Y2soRXhlY1N0YXRlKiBleGVjKQotewotICAgIGV4ZWMtPnZtKCkuYXBpTG9jaygpLnVubG9jaygp
OwotfQotCiAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBsb2NrcyB0aGF0
IHdlcmUgZHJvcHBlZC4KIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BBbGxMb2Nr
cyogZHJvcHBlcikKIHsKQEAgLTI4NSw2ICsyOTAsNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6
RHJvcEFsbExvY2tzKFZNKiB2bSkKICAgICAgICAgcmV0dXJuOwogICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3ZtLT5hcGlMb2NrKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV92bS0+
aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAgIG1fZHJvcHBlZExvY2tDb3Vu
dCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxsTG9ja3ModGhpcyk7CisgICAgVk06OmV4Y2hhbmdl
KG51bGxwdHIpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKEV4ZWNT
dGF0ZSogZXhlYykKQEAgLTMwMiw2ICszMDgsNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6fkRy
b3BBbGxMb2NrcygpCiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47CiAgICAgbV92bS0+
YXBpTG9jaygpLmdyYWJBbGxMb2Nrcyh0aGlzLCBtX2Ryb3BwZWRMb2NrQ291bnQpOworICAgIFZN
OjpleGNoYW5nZShtX3ZtLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDBiMjdmZjYzZmU0ODE1YmYyNjNmYzY2
Zjc4OTcxMGMzMmIwYzI1MDYuLjcxN2IxYWI1OGYyN2ZkNjk0Yzc4NTFiYTc2M2JhY2Y5OTQ4NWM5
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC01MSw2ICs1MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBWTTsKK2NsYXNz
IEpTTG9jazsKIAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIGluaXRpYWxp
emF0aW9uIG9mIHRoZSBsZWdhY3kgc2luZ2xlIAogLy8gc2hhcmVkIFZNLgpAQCAtNjMsMzIgKzY0
LDM1IEBAIGNsYXNzIEdsb2JhbEpTTG9jayB7CiAgICAgc3RhdGljIExvY2sgc19zaGFyZWRJbnN0
YW5jZU11dGV4OwogfTsKIAorLy8gT25seSBKU0xvY2tIb2xkZXIgY2FuIHRha2UgYSBKU0xvY2su
CiBjbGFzcyBKU0xvY2tIb2xkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTTG9ja0hv
bGRlcik7CisgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04oSlNMb2NrSG9sZGVyKTsKIHB1
YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoVk0qKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBK
U0xvY2tIb2xkZXIoRXhlY1N0YXRlKik7CiAKKyAgICBlbnVtIExvY2tJZlZNSXNMaXZlVGFnIHsg
TG9ja0lmVk1Jc0xpdmUgfTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoTG9j
a0lmVk1Jc0xpdmVUYWcsIEpTTG9jayYpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkpTTG9j
a0hvbGRlcigpOwogCisgICAgVk0qIHZtKCkgeyByZXR1cm4gbV92bS5nZXQoKTsgfQorCiBwcml2
YXRlOgogICAgIFJlZlB0cjxWTT4gbV92bTsKKyAgICBWTSogbV9wcmV2aW91c1ZNSW5UTFMgeyBu
dWxscHRyIH07CiB9OwogCiBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SlNMb2NrPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNMb2NrKTsKKyAgICBmcmll
bmQgY2xhc3MgSlNMb2NrSG9sZGVyOworICAgIGZyaWVuZCBjbGFzcyBKU1J1bkxvb3BUaW1lcjsK
IHB1YmxpYzoKICAgICBKU0xvY2soVk0qKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNMb2Nr
KCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGxvY2soKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHVubG9jaygpOwotCi0gICAgc3RhdGljIHZvaWQgbG9jayhFeGVjU3RhdGUq
KTsKLSAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7Ci0gICAgc3RhdGljIHZvaWQg
bG9jayhWTSYpOwotICAgIHN0YXRpYyB2b2lkIHVubG9jayhWTSYpOwotCiAgICAgVk0qIHZtKCkg
eyByZXR1cm4gbV92bTsgfQogCiAgICAgT3B0aW9uYWw8UmVmUHRyPFRocmVhZD4+IG93bmVyVGhy
ZWFkKCkgY29uc3QKQEAgLTEyNiw2ICsxMzAsMTAgQEAgY2xhc3MgSlNMb2NrIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEpTTG9jaz4gewogICAgIGJvb2wgaXNXZWJUaHJlYWRBd2FyZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNXZWJUaHJlYWRBd2FyZTsgfQogCiBwcml2YXRlOgorICAgIC8v
IFRoaXMgaXMgY2FsbGVkIG9ubHkgZnJvbSBKU0xvY2tIb2xkZXIgb3IgRHJvcEFsbExvY2tzLgor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9jaygpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgdW5sb2NrKCk7CisKICAgICB2b2lkIGxvY2soaW50cHRyX3QgbG9ja0NvdW50KTsKICAg
ICB2b2lkIHVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCAyYTBjMDZjNWQyMzY1
OGZkZmNjYTUzMmE2NjQwZmZjMmRhZGNhYTNjLi5lNjBjMzQ5ZWUwM2NlMjM1ZDI4NjM5YTNhOWU0
MTIwZDZiZTllYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNS
dW5Mb29wVGltZXIuY3BwCkBAIC0yOTcsMTQgKzI5NywxMiBAQCB2b2lkIEpTUnVuTG9vcFRpbWVy
Ojp0aW1lckRpZEZpcmUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJk
PEpTTG9jaz4gbG9jayhtX2FwaUxvY2suZ2V0KCkpOwotICAgIFJlZlB0cjxWTT4gdm0gPSBtX2Fw
aUxvY2stPnZtKCk7Ci0gICAgaWYgKCF2bSkgeworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoSlNM
b2NrSG9sZGVyOjpMb2NrSWZWTUlzTGl2ZSwgbV9hcGlMb2NrLmdldCgpKTsKKyAgICBpZiAoIWxv
Y2tlci52bSgpKSB7CiAgICAgICAgIC8vIFRoZSBWTSBoYXMgYmVlbiBkZXN0cm95ZWQsIHNvIHdl
IHNob3VsZCBqdXN0IGdpdmUgdXAuCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBkb1dv
cmsoKnZtKTsKKyAgICBkb1dvcmsoKmxvY2tlci52bSgpKTsKIH0KIAogSlNSdW5Mb29wVGltZXI6
OkpTUnVuTG9vcFRpbWVyKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCBhZGI1YTkxMzRkOGZiYzQ2MzYwMjFlYjE5YWZhZjZlMjRmNTZhM2ZhLi4wOTFjZmE5ODM1
ZDQxMzA3ZjNmYWZjMmM2MWRiZDdlMGY2NjFiNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC0xMzc5LDQgKzEzNzksMTYgQEAgdm9pZCBWTTo6c2V0Q3Jhc2hPblZNQ3Jl
YXRpb24oYm9vbCBzaG91bGRDcmFzaCkKICAgICB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBzaG91
bGRDcmFzaDsKIH0KIAorCisjaWYgIUhBVkUoRkFTVF9UTFMpCitXVEY6OlRocmVhZFNwZWNpZmlj
S2V5IFZNOjp0bHNLZXkgeyBXVEY6OkludmFsaWRUaHJlYWRTcGVjaWZpY0tleSB9OworI2VuZGlm
CisKK3ZvaWQgVk06OmluaXRpYWxpemVUTFMoKQoreworI2lmICFIQVZFKEZBU1RfVExTKQorICAg
IFdURjo6dGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJnRsc0tleSwgbnVsbHB0cik7CisjZW5kaWYK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRl
eCAzOWJlYTVkZWM3MDQ5NDJmYzI1ZGI5YjdjOWU4N2ViZWI4MTZmZmVkLi41Njg5YjUwODhhNDYx
ZGQ4ZmEzMzVlYzhiZDg5ZDZjYmQ4ZmZhMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTMxNCw2ICszMTQsMzkgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBXZWFrUmFu
ZG9tJiByYW5kb20oKSB7IHJldHVybiBtX3JhbmRvbTsgfQogICAgIEludGVncml0eTo6UmFuZG9t
JiBpbnRlZ3JpdHlSYW5kb20oKSB7IHJldHVybiBtX2ludGVncml0eVJhbmRvbTsgfQogCisjaWYg
SEFWRShGQVNUX1RMUykKKyAgICBzdGF0aWMgY29uc3RleHByIHB0aHJlYWRfa2V5X3QgdGxzS2V5
ID0gV1RGX0dDX1RMQ19LRVk7CisKKyAgICBzdGF0aWMgVk0qIGV4Y2hhbmdlKFZNKiB2bSkKKyAg
ICB7CisgICAgICAgIFZNKiBwcmV2aW91cyA9IGN1cnJlbnQoKTsKKyAgICAgICAgX3B0aHJlYWRf
c2V0c3BlY2lmaWNfZGlyZWN0KHRsc0tleSwgYml0d2lzZV9jYXN0PHZvaWQqPih2bSkpOworICAg
ICAgICByZXR1cm4gcHJldmlvdXM7CisgICAgfQorCisgICAgc3RhdGljIFZNKiBjdXJyZW50KCkK
KyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Vk0qPihfcHRocmVhZF9nZXRzcGVj
aWZpY19kaXJlY3QodGxzS2V5KSk7CisgICAgfQorI2Vsc2UKKyAgICBzdGF0aWMgV1RGOjpUaHJl
YWRTcGVjaWZpY0tleSB0bHNLZXk7CisKKyAgICBzdGF0aWMgVk0qIGV4Y2hhbmdlKFZNKiB2bSkK
KyAgICB7CisgICAgICAgIEFTU0VSVCh0bHNLZXkgIT0gV1RGOjpJbnZhbGlkVGhyZWFkU3BlY2lm
aWNLZXkpOworICAgICAgICBWTSogcHJldmlvdXMgPSBjdXJyZW50KCk7CisgICAgICAgIFdURjo6
dGhyZWFkU3BlY2lmaWNTZXQodGxzS2V5LCBwcmV2aW91cyk7CisgICAgICAgIHJldHVybiBwcmV2
aW91czsKKyAgICB9CisKKyAgICBzdGF0aWMgVk0qIGN1cnJlbnQoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHRsc0tleSAhPSBXVEY6OkludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8Vk0qPihXVEY6OnRocmVhZFNwZWNpZmljR2V0KHRsc0tleSkp
OworICAgIH0KKyNlbmRpZgorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUTFMoKTsKKwogcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBuZXh0SUQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379878</attachid>
            <date>2019-09-30 22:40:59 -0700</date>
            <delta_ts>2019-09-30 22:43:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202391-20190930224058.patch</filename>
            <type>text/plain</type>
            <size>9488</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NmZiMjQyNmE4ZmFlY2MxZTg3OGU4ZjUyMmIxNmU2MjMzMDY5ZTg1Li5lM2Q0NDg4MjJmODQxYjFl
MjJlMTk1NTE5YzI2ZmRjNmZjYzYzZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOS0wOS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFBsYWNlIFZNKiBpbiBUTFMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2NrSG9sZGVy
OjpKU0xvY2tIb2xkZXIpOgorICAgICAgICAoSlNDOjpKU0xvY2tIb2xkZXI6On5KU0xvY2tIb2xk
ZXIpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKToK
KyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6On5Ecm9wQWxsTG9ja3MpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgIChKU0M6OkpTTG9ja0hvbGRlcjo6dm0p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpK
U1J1bkxvb3BUaW1lcjo6dGltZXJEaWRGaXJlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk06OmluaXRpYWxpemVUTFMpOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
aDoKKyAgICAgICAgKEpTQzo6Vk06OmV4Y2hhbmdlKToKKyAgICAgICAgKEpTQzo6Vk06OmN1cnJl
bnQpOgorCiAyMDE5LTA5LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSGVhcFNuYXBzaG90QnVpbGRlciBtX3Jvb3REYXRhIHNob3VsZCBiZSBw
cm90ZWN0ZWQgd2l0aCBhIGxvY2sgdG9vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01h
bmFnZWRWYWx1ZS5tbQppbmRleCA5ZjVkZDg4OTJhOGJmYWUzMjhjZTBjNTlhYjVlOWJjYjYzNDQy
N2ZkLi5kZWVhNmE1M2Q5ZWFjYTk1MDFjODk0MTEyYzRhYzAxODE4ZGJlOWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTE0NywxMiArMTQ3LDkg
QEAgLSAodm9pZClkaWRSZW1vdmVPd25lcjooaWQpb3duZXIKIAogLSAoSlNWYWx1ZSAqKXZhbHVl
CiB7Ci0gICAgV1RGOjpMb2NrZXI8SlNDOjpKU0xvY2s+IGxvY2tlcihtX2xvY2suZ2V0KCkpOwot
ICAgIEpTQzo6Vk0qIHZtID0gbV9sb2NrLT52bSgpOwotICAgIGlmICghdm0pCisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKEpTQzo6SlNMb2NrSG9sZGVyOjpMb2NrSWZWTUlzTGl2ZSwgKm1f
bG9jay5nZXQoKSk7CisgICAgaWYgKCFsb2NrZXIudm0oKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGFwaUxvY2tlcih2bSk7CiAgICAgaWYgKCFtX2dsb2Jh
bE9iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAobV93ZWFrVmFsdWUuaXNDbGVh
cigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmNwcAppbmRleCAxZmQ1OWY0NzYwMDBmN2FkNDE1ZWQyNzE5YzUyOWNlNDhjZmM5
YTFiLi40YWJlYTJhZWZlMzk2ZTExOGZkMjQ0NmUzOWZlZTZjYmI4MTI0MWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNw
cApAQCAtNzEsNiArNzEsOCBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogCiAgICAgICAg
IGluaXRpYWxpemVQdHJUYWdMb29rdXAoKTsKIAorICAgICAgICBWTTo6aW5pdGlhbGl6ZVRMUygp
OworCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgICAgICBXcml0ZUJh
cnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBkYWYwZjc3ZDU2ZWUxMzI3ZmZkZWFhYzBkODA4ZTQ1
N2NmZTg2MzEwLi5kYzFiOTcyNmJhN2EwZjA4NjQ4YzM0NWJlMWQ0NDRhN2E0Zjg0YTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgi
CiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVk
ZSAiV2FzbUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgog
I2luY2x1ZGUgPHRocmVhZD4KQEAgLTY3LDEzICs2OCwyNyBAQCBKU0xvY2tIb2xkZXI6OkpTTG9j
a0hvbGRlcihWTSYgdm0pCiAgICAgOiBtX3ZtKCZ2bSkKIHsKICAgICBtX3ZtLT5hcGlMb2NrKCku
bG9jaygpOworICAgIG1fcHJldmlvdXNWTUluVExTID0gVk06OmV4Y2hhbmdlKG1fdm0uZ2V0KCkp
OworfQorCitKU0xvY2tIb2xkZXI6OkpTTG9ja0hvbGRlcihMb2NrSWZWTUlzTGl2ZVRhZywgSlNM
b2NrJiBsb2NrKQoreworICAgIGxvY2subG9jaygpOworICAgIGlmIChsb2NrLm1fdm0pIHsKKyAg
ICAgICAgbV92bSA9IGxvY2subV92bTsKKyAgICAgICAgbV9wcmV2aW91c1ZNSW5UTFMgPSBWTTo6
ZXhjaGFuZ2UobV92bS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGxvY2sudW5sb2NrKCk7
CiB9CiAKIEpTTG9ja0hvbGRlcjo6fkpTTG9ja0hvbGRlcigpCiB7Ci0gICAgUmVmUHRyPEpTTG9j
az4gYXBpTG9jaygmbV92bS0+YXBpTG9jaygpKTsKLSAgICBtX3ZtID0gbnVsbHB0cjsKLSAgICBh
cGlMb2NrLT51bmxvY2soKTsKKyAgICBpZiAobV92bSkgeworICAgICAgICBSZWZQdHI8SlNMb2Nr
PiBhcGlMb2NrKCZtX3ZtLT5hcGlMb2NrKCkpOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKKyAg
ICAgICAgYXBpTG9jay0+dW5sb2NrKCk7CisgICAgICAgIFZNOjpleGNoYW5nZShtX3ByZXZpb3Vz
Vk1JblRMUyk7IC8vIENoYW5nZSBWTSBhZnRlciB1bmxvY2tpbmcuIE90aGVyd2lzZSwgd2lsbFJl
bGVhc2VMb2NrIHdpbGwgc2VlIHByZXZpb3VzIFZNLgorICAgIH0KIH0KIAogSlNMb2NrOjpKU0xv
Y2soVk0qIHZtKQpAQCAtMjIyLDE2ICsyMzcsNiBAQCB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VM
b2NrKCkKICAgICB9CiB9CiAKLXZvaWQgSlNMb2NrOjpsb2NrKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICBleGVjLT52bSgpLmFwaUxvY2soKS5sb2NrKCk7Ci19Ci0KLXZvaWQgSlNMb2NrOjp1bmxv
Y2soRXhlY1N0YXRlKiBleGVjKQotewotICAgIGV4ZWMtPnZtKCkuYXBpTG9jaygpLnVubG9jaygp
OwotfQotCiAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBsb2NrcyB0aGF0
IHdlcmUgZHJvcHBlZC4KIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BBbGxMb2Nr
cyogZHJvcHBlcikKIHsKQEAgLTI4NSw2ICsyOTAsNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6
RHJvcEFsbExvY2tzKFZNKiB2bSkKICAgICAgICAgcmV0dXJuOwogICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3ZtLT5hcGlMb2NrKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV92bS0+
aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAgIG1fZHJvcHBlZExvY2tDb3Vu
dCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxsTG9ja3ModGhpcyk7CisgICAgVk06OmV4Y2hhbmdl
KG51bGxwdHIpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKEV4ZWNT
dGF0ZSogZXhlYykKQEAgLTMwMiw2ICszMDgsNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6fkRy
b3BBbGxMb2NrcygpCiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47CiAgICAgbV92bS0+
YXBpTG9jaygpLmdyYWJBbGxMb2Nrcyh0aGlzLCBtX2Ryb3BwZWRMb2NrQ291bnQpOworICAgIFZN
OjpleGNoYW5nZShtX3ZtLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDBiMjdmZjYzZmU0ODE1YmYyNjNmYzY2
Zjc4OTcxMGMzMmIwYzI1MDYuLjcxN2IxYWI1OGYyN2ZkNjk0Yzc4NTFiYTc2M2JhY2Y5OTQ4NWM5
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC01MSw2ICs1MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBWTTsKK2NsYXNz
IEpTTG9jazsKIAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIGluaXRpYWxp
emF0aW9uIG9mIHRoZSBsZWdhY3kgc2luZ2xlIAogLy8gc2hhcmVkIFZNLgpAQCAtNjMsMzIgKzY0
LDM1IEBAIGNsYXNzIEdsb2JhbEpTTG9jayB7CiAgICAgc3RhdGljIExvY2sgc19zaGFyZWRJbnN0
YW5jZU11dGV4OwogfTsKIAorLy8gT25seSBKU0xvY2tIb2xkZXIgY2FuIHRha2UgYSBKU0xvY2su
CiBjbGFzcyBKU0xvY2tIb2xkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTTG9ja0hv
bGRlcik7CisgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04oSlNMb2NrSG9sZGVyKTsKIHB1
YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoVk0qKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBK
U0xvY2tIb2xkZXIoRXhlY1N0YXRlKik7CiAKKyAgICBlbnVtIExvY2tJZlZNSXNMaXZlVGFnIHsg
TG9ja0lmVk1Jc0xpdmUgfTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoTG9j
a0lmVk1Jc0xpdmVUYWcsIEpTTG9jayYpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkpTTG9j
a0hvbGRlcigpOwogCisgICAgVk0qIHZtKCkgeyByZXR1cm4gbV92bS5nZXQoKTsgfQorCiBwcml2
YXRlOgogICAgIFJlZlB0cjxWTT4gbV92bTsKKyAgICBWTSogbV9wcmV2aW91c1ZNSW5UTFMgeyBu
dWxscHRyIH07CiB9OwogCiBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SlNMb2NrPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNMb2NrKTsKKyAgICBmcmll
bmQgY2xhc3MgSlNMb2NrSG9sZGVyOworICAgIGZyaWVuZCBjbGFzcyBKU1J1bkxvb3BUaW1lcjsK
IHB1YmxpYzoKICAgICBKU0xvY2soVk0qKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNMb2Nr
KCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGxvY2soKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHVubG9jaygpOwotCi0gICAgc3RhdGljIHZvaWQgbG9jayhFeGVjU3RhdGUq
KTsKLSAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7Ci0gICAgc3RhdGljIHZvaWQg
bG9jayhWTSYpOwotICAgIHN0YXRpYyB2b2lkIHVubG9jayhWTSYpOwotCiAgICAgVk0qIHZtKCkg
eyByZXR1cm4gbV92bTsgfQogCiAgICAgT3B0aW9uYWw8UmVmUHRyPFRocmVhZD4+IG93bmVyVGhy
ZWFkKCkgY29uc3QKQEAgLTEyNiw2ICsxMzAsMTAgQEAgY2xhc3MgSlNMb2NrIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEpTTG9jaz4gewogICAgIGJvb2wgaXNXZWJUaHJlYWRBd2FyZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNXZWJUaHJlYWRBd2FyZTsgfQogCiBwcml2YXRlOgorICAgIC8v
IFRoaXMgaXMgY2FsbGVkIG9ubHkgZnJvbSBKU0xvY2tIb2xkZXIgb3IgRHJvcEFsbExvY2tzLgor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9jaygpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgdW5sb2NrKCk7CisKICAgICB2b2lkIGxvY2soaW50cHRyX3QgbG9ja0NvdW50KTsKICAg
ICB2b2lkIHVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCAyYTBjMDZjNWQyMzY1
OGZkZmNjYTUzMmE2NjQwZmZjMmRhZGNhYTNjLi5lNjBjMzQ5ZWUwM2NlMjM1ZDI4NjM5YTNhOWU0
MTIwZDZiZTllYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNS
dW5Mb29wVGltZXIuY3BwCkBAIC0yOTcsMTQgKzI5NywxMiBAQCB2b2lkIEpTUnVuTG9vcFRpbWVy
Ojp0aW1lckRpZEZpcmUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJk
PEpTTG9jaz4gbG9jayhtX2FwaUxvY2suZ2V0KCkpOwotICAgIFJlZlB0cjxWTT4gdm0gPSBtX2Fw
aUxvY2stPnZtKCk7Ci0gICAgaWYgKCF2bSkgeworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoSlNM
b2NrSG9sZGVyOjpMb2NrSWZWTUlzTGl2ZSwgbV9hcGlMb2NrLmdldCgpKTsKKyAgICBpZiAoIWxv
Y2tlci52bSgpKSB7CiAgICAgICAgIC8vIFRoZSBWTSBoYXMgYmVlbiBkZXN0cm95ZWQsIHNvIHdl
IHNob3VsZCBqdXN0IGdpdmUgdXAuCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBkb1dv
cmsoKnZtKTsKKyAgICBkb1dvcmsoKmxvY2tlci52bSgpKTsKIH0KIAogSlNSdW5Mb29wVGltZXI6
OkpTUnVuTG9vcFRpbWVyKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCBhZGI1YTkxMzRkOGZiYzQ2MzYwMjFlYjE5YWZhZjZlMjRmNTZhM2ZhLi4wOTFjZmE5ODM1
ZDQxMzA3ZjNmYWZjMmM2MWRiZDdlMGY2NjFiNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC0xMzc5LDQgKzEzNzksMTYgQEAgdm9pZCBWTTo6c2V0Q3Jhc2hPblZNQ3Jl
YXRpb24oYm9vbCBzaG91bGRDcmFzaCkKICAgICB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBzaG91
bGRDcmFzaDsKIH0KIAorCisjaWYgIUhBVkUoRkFTVF9UTFMpCitXVEY6OlRocmVhZFNwZWNpZmlj
S2V5IFZNOjp0bHNLZXkgeyBXVEY6OkludmFsaWRUaHJlYWRTcGVjaWZpY0tleSB9OworI2VuZGlm
CisKK3ZvaWQgVk06OmluaXRpYWxpemVUTFMoKQoreworI2lmICFIQVZFKEZBU1RfVExTKQorICAg
IFdURjo6dGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJnRsc0tleSwgbnVsbHB0cik7CisjZW5kaWYK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRl
eCAzOWJlYTVkZWM3MDQ5NDJmYzI1ZGI5YjdjOWU4N2ViZWI4MTZmZmVkLi5kZDU4ZjM1ZmU5MTYx
ZmI3ZDZjNjBiZjg5NjdiMjRmYzNiY2I0MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTMxNCw2ICszMTQsMzkgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBXZWFrUmFu
ZG9tJiByYW5kb20oKSB7IHJldHVybiBtX3JhbmRvbTsgfQogICAgIEludGVncml0eTo6UmFuZG9t
JiBpbnRlZ3JpdHlSYW5kb20oKSB7IHJldHVybiBtX2ludGVncml0eVJhbmRvbTsgfQogCisjaWYg
SEFWRShGQVNUX1RMUykKKyAgICBzdGF0aWMgY29uc3RleHByIHB0aHJlYWRfa2V5X3QgdGxzS2V5
ID0gV1RGX0dDX1RMQ19LRVk7CisKKyAgICBzdGF0aWMgVk0qIGV4Y2hhbmdlKFZNKiB2bSkKKyAg
ICB7CisgICAgICAgIFZNKiBwcmV2aW91cyA9IGN1cnJlbnQoKTsKKyAgICAgICAgX3B0aHJlYWRf
c2V0c3BlY2lmaWNfZGlyZWN0KHRsc0tleSwgYml0d2lzZV9jYXN0PHZvaWQqPih2bSkpOworICAg
ICAgICByZXR1cm4gcHJldmlvdXM7CisgICAgfQorCisgICAgc3RhdGljIFZNKiBjdXJyZW50KCkK
KyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Vk0qPihfcHRocmVhZF9nZXRzcGVj
aWZpY19kaXJlY3QodGxzS2V5KSk7CisgICAgfQorI2Vsc2UKKyAgICBzdGF0aWMgV1RGOjpUaHJl
YWRTcGVjaWZpY0tleSB0bHNLZXk7CisKKyAgICBzdGF0aWMgVk0qIGV4Y2hhbmdlKFZNKiB2bSkK
KyAgICB7CisgICAgICAgIEFTU0VSVCh0bHNLZXkgIT0gV1RGOjpJbnZhbGlkVGhyZWFkU3BlY2lm
aWNLZXkpOworICAgICAgICBWTSogcHJldmlvdXMgPSBjdXJyZW50KCk7CisgICAgICAgIFdURjo6
dGhyZWFkU3BlY2lmaWNTZXQodGxzS2V5LCB2bSk7CisgICAgICAgIHJldHVybiBwcmV2aW91czsK
KyAgICB9CisKKyAgICBzdGF0aWMgVk0qIGN1cnJlbnQoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHRsc0tleSAhPSBXVEY6OkludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8Vk0qPihXVEY6OnRocmVhZFNwZWNpZmljR2V0KHRsc0tleSkpOworICAg
IH0KKyNlbmRpZgorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUTFMoKTsKKwogcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBuZXh0SUQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379879</attachid>
            <date>2019-09-30 22:43:56 -0700</date>
            <delta_ts>2019-10-01 13:53:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202391-20190930224355.patch</filename>
            <type>text/plain</type>
            <size>10447</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NmZiMjQyNmE4ZmFlY2MxZTg3OGU4ZjUyMmIxNmU2MjMzMDY5ZTg1Li5lNmYwMWJjMzhhMDMzYTNk
YWM1N2VmNjYyNDZmNjM1YWJjODM1NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0wOS0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFBsYWNlIFZNKiBpbiBUTFMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dl
YWtWYWx1ZS5jcHA6CisgICAgICAgIChqc2Nfd2Vha192YWx1ZV9nZXRfdmFsdWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRp
YWxpemVUaHJlYWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNMb2NrSG9sZGVyOjpKU0xvY2tIb2xkZXIpOgorICAgICAgICAoSlNDOjpKU0xvY2tI
b2xkZXI6On5KU0xvY2tIb2xkZXIpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nr
czo6RHJvcEFsbExvY2tzKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6On5E
cm9wQWxsTG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgIChKU0M6
OkpTTG9ja0hvbGRlcjo6dm0pOgorICAgICAgICAqIHJ1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3Bw
OgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6dGltZXJEaWRGaXJlKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmluaXRpYWxpemVUTFMpOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmV4Y2hhbmdlKToKKyAgICAg
ICAgKEpTQzo6Vk06OmN1cnJlbnQpOgorCiAyMDE5LTA5LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSGVhcFNuYXBzaG90QnVpbGRlciBtX3Jv
b3REYXRhIHNob3VsZCBiZSBwcm90ZWN0ZWQgd2l0aCBhIGxvY2sgdG9vCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCA5ZjVkZDg4OTJhOGJmYWUzMjhj
ZTBjNTlhYjVlOWJjYjYzNDQyN2ZkLi5kZWVhNmE1M2Q5ZWFjYTk1MDFjODk0MTEyYzRhYzAxODE4
ZGJlOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZh
bHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0K
QEAgLTE0NywxMiArMTQ3LDkgQEAgLSAodm9pZClkaWRSZW1vdmVPd25lcjooaWQpb3duZXIKIAog
LSAoSlNWYWx1ZSAqKXZhbHVlCiB7Ci0gICAgV1RGOjpMb2NrZXI8SlNDOjpKU0xvY2s+IGxvY2tl
cihtX2xvY2suZ2V0KCkpOwotICAgIEpTQzo6Vk0qIHZtID0gbV9sb2NrLT52bSgpOwotICAgIGlm
ICghdm0pCisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKEpTQzo6SlNMb2NrSG9sZGVyOjpM
b2NrSWZWTUlzTGl2ZSwgKm1fbG9jay5nZXQoKSk7CisgICAgaWYgKCFsb2NrZXIudm0oKSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGFwaUxvY2tlcih2bSk7
CiAgICAgaWYgKCFtX2dsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAo
bV93ZWFrVmFsdWUuaXNDbGVhcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ1dlYWtWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDV2Vha1ZhbHVlLmNwcAppbmRleCA5ODk3ZWUzMjc0ZmQ2ZWRkNTZhZTlmNDU5MGUxODRj
YmRkZjdhNDRmLi5lMTQ3NjA4ZGQ4NTJiN2RhZTQzNzYxMjNlZmViZGNiM2RlMjk3MDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV2Vha1ZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV2Vha1ZhbHVlLmNwcApAQCAt
MTg5LDEyICsxODksMTAgQEAgSlNDVmFsdWUqIGpzY193ZWFrX3ZhbHVlX2dldF92YWx1ZShKU0NX
ZWFrVmFsdWUqIHdlYWtWYWx1ZSkKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChKU0NfSVNfV0VB
S19WQUxVRSh3ZWFrVmFsdWUpLCBudWxscHRyKTsKIAogICAgIEpTQ1dlYWtWYWx1ZVByaXZhdGUq
IHByaXYgPSB3ZWFrVmFsdWUtPnByaXY7Ci0gICAgV1RGOjpMb2NrZXI8SlNDOjpKU0xvY2s+IGxv
Y2tlcihwcml2LT5sb2NrLmdldCgpKTsKLSAgICBKU0M6OlZNKiB2bSA9IHByaXYtPmxvY2stPnZt
KCk7Ci0gICAgaWYgKCF2bSkKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoSlNDOjpKU0xv
Y2tIb2xkZXI6OkxvY2tJZlZNSXNMaXZlLCAqcHJpdi0+bG9jay5nZXQoKSk7CisgICAgaWYgKCFs
b2NrZXIudm0oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBKU0M6OkpTTG9ja0hv
bGRlciBhcGlMb2NrZXIodm0pOwogICAgIGlmICghcHJpdi0+Z2xvYmFsT2JqZWN0IHx8IHByaXYt
PndlYWtWYWx1ZVJlZi5pc0NsZWFyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwCmluZGV4IDFmZDU5ZjQ3NjAwMGY3YWQ0MTVlZDI3MTljNTI5Y2U0OGNmYzlhMWIuLjRhYmVh
MmFlZmUzOTZlMTE4ZmQyNDQ2ZTM5ZmVlNmNiYjgxMjQxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBAIC03MSw2
ICs3MSw4IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAKICAgICAgICAgaW5pdGlhbGl6
ZVB0clRhZ0xvb2t1cCgpOwogCisgICAgICAgIFZNOjppbml0aWFsaXplVExTKCk7CisKICNpZiBF
TkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgICAgIFdyaXRlQmFycmllckNvdW50
ZXJzOjppbml0aWFsaXplKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xvY2suY3BwCmluZGV4IGRhZjBmNzdkNTZlZTEzMjdmZmRlYWFjMGQ4MDhlNDU3Y2ZlODYzMTAu
LmRjMWI5NzI2YmE3YTBmMDg2NDhjMzQ1YmUxZDQ0NGE3YTRmODRhNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRl
ICJTYW1wbGluZ1Byb2ZpbGVyLmgiCisjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXNtQ2Fw
YWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2FzbU1hY2hpbmVUaHJlYWRzLmgiCiAjaW5jbHVkZSA8
dGhyZWFkPgpAQCAtNjcsMTMgKzY4LDI3IEBAIEpTTG9ja0hvbGRlcjo6SlNMb2NrSG9sZGVyKFZN
JiB2bSkKICAgICA6IG1fdm0oJnZtKQogewogICAgIG1fdm0tPmFwaUxvY2soKS5sb2NrKCk7Cisg
ICAgbV9wcmV2aW91c1ZNSW5UTFMgPSBWTTo6ZXhjaGFuZ2UobV92bS5nZXQoKSk7Cit9CisKK0pT
TG9ja0hvbGRlcjo6SlNMb2NrSG9sZGVyKExvY2tJZlZNSXNMaXZlVGFnLCBKU0xvY2smIGxvY2sp
Cit7CisgICAgbG9jay5sb2NrKCk7CisgICAgaWYgKGxvY2subV92bSkgeworICAgICAgICBtX3Zt
ID0gbG9jay5tX3ZtOworICAgICAgICBtX3ByZXZpb3VzVk1JblRMUyA9IFZNOjpleGNoYW5nZSht
X3ZtLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbG9jay51bmxvY2soKTsKIH0KIAogSlNM
b2NrSG9sZGVyOjp+SlNMb2NrSG9sZGVyKCkKIHsKLSAgICBSZWZQdHI8SlNMb2NrPiBhcGlMb2Nr
KCZtX3ZtLT5hcGlMb2NrKCkpOwotICAgIG1fdm0gPSBudWxscHRyOwotICAgIGFwaUxvY2stPnVu
bG9jaygpOworICAgIGlmIChtX3ZtKSB7CisgICAgICAgIFJlZlB0cjxKU0xvY2s+IGFwaUxvY2so
Jm1fdm0tPmFwaUxvY2soKSk7CisgICAgICAgIG1fdm0gPSBudWxscHRyOworICAgICAgICBhcGlM
b2NrLT51bmxvY2soKTsKKyAgICAgICAgVk06OmV4Y2hhbmdlKG1fcHJldmlvdXNWTUluVExTKTsg
Ly8gQ2hhbmdlIFZNIGFmdGVyIHVubG9ja2luZy4gT3RoZXJ3aXNlLCB3aWxsUmVsZWFzZUxvY2sg
d2lsbCBzZWUgcHJldmlvdXMgVk0uCisgICAgfQogfQogCiBKU0xvY2s6OkpTTG9jayhWTSogdm0p
CkBAIC0yMjIsMTYgKzIzNyw2IEBAIHZvaWQgSlNMb2NrOjp3aWxsUmVsZWFzZUxvY2soKQogICAg
IH0KIH0KIAotdm9pZCBKU0xvY2s6OmxvY2soRXhlY1N0YXRlKiBleGVjKQotewotICAgIGV4ZWMt
PnZtKCkuYXBpTG9jaygpLmxvY2soKTsKLX0KLQotdm9pZCBKU0xvY2s6OnVubG9jayhFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgZXhlYy0+dm0oKS5hcGlMb2NrKCkudW5sb2NrKCk7Ci19Ci0KIC8v
IFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGxvY2tzIHRoYXQgd2VyZSBkcm9w
cGVkLgogdW5zaWduZWQgSlNMb2NrOjpkcm9wQWxsTG9ja3MoRHJvcEFsbExvY2tzKiBkcm9wcGVy
KQogewpAQCAtMjg1LDYgKzI5MCw3IEBAIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9j
a3MoVk0qIHZtKQogICAgICAgICByZXR1cm47CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPmFw
aUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpIHx8ICFtX3ZtLT5pc0NvbGxlY3Rv
ckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgbV9kcm9wcGVkTG9ja0NvdW50ID0gbV92bS0+
YXBpTG9jaygpLmRyb3BBbGxMb2Nrcyh0aGlzKTsKKyAgICBWTTo6ZXhjaGFuZ2UobnVsbHB0cik7
CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKiBleGVj
KQpAQCAtMzAyLDYgKzMwOCw3IEBAIEpTTG9jazo6RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tz
KCkKICAgICBpZiAoIW1fdm0pCiAgICAgICAgIHJldHVybjsKICAgICBtX3ZtLT5hcGlMb2NrKCku
Z3JhYkFsbExvY2tzKHRoaXMsIG1fZHJvcHBlZExvY2tDb3VudCk7CisgICAgVk06OmV4Y2hhbmdl
KG1fdm0uZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmgKaW5kZXggMGIyN2ZmNjNmZTQ4MTViZjI2M2ZjNjZmNzg5NzEwYzMy
YjBjMjUwNi4uNzE3YjFhYjU4ZjI3ZmQ2OTRjNzg1MWJhNzYzYmFjZjk5NDg1Yzk0YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIFZNOworY2xhc3MgSlNMb2NrOwog
CiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gcHJvdGVjdCB0aGUgaW5pdGlhbGl6YXRpb24gb2Yg
dGhlIGxlZ2FjeSBzaW5nbGUgCiAvLyBzaGFyZWQgVk0uCkBAIC02MywzMiArNjQsMzUgQEAgY2xh
c3MgR2xvYmFsSlNMb2NrIHsKICAgICBzdGF0aWMgTG9jayBzX3NoYXJlZEluc3RhbmNlTXV0ZXg7
CiB9OwogCisvLyBPbmx5IEpTTG9ja0hvbGRlciBjYW4gdGFrZSBhIEpTTG9jay4KIGNsYXNzIEpT
TG9ja0hvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNMb2NrSG9sZGVyKTsKKyAg
ICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTihKU0xvY2tIb2xkZXIpOwogcHVibGljOgogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTTG9ja0hvbGRlcihWTSopOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTTG9ja0hvbGRlcihWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTG9ja0hvbGRl
cihFeGVjU3RhdGUqKTsKIAorICAgIGVudW0gTG9ja0lmVk1Jc0xpdmVUYWcgeyBMb2NrSWZWTUlz
TGl2ZSB9OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTG9ja0hvbGRlcihMb2NrSWZWTUlzTGl2
ZVRhZywgSlNMb2NrJik7CisKICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNMb2NrSG9sZGVyKCk7
CiAKKyAgICBWTSogdm0oKSB7IHJldHVybiBtX3ZtLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAg
UmVmUHRyPFZNPiBtX3ZtOworICAgIFZNKiBtX3ByZXZpb3VzVk1JblRMUyB7IG51bGxwdHIgfTsK
IH07CiAKIGNsYXNzIEpTTG9jayA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKU0xvY2s+
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0xvY2spOworICAgIGZyaWVuZCBjbGFzcyBK
U0xvY2tIb2xkZXI7CisgICAgZnJpZW5kIGNsYXNzIEpTUnVuTG9vcFRpbWVyOwogcHVibGljOgog
ICAgIEpTTG9jayhWTSopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0xvY2soKTsKIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9jaygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgdW5sb2NrKCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwotICAgIHN0
YXRpYyB2b2lkIHVubG9jayhFeGVjU3RhdGUqKTsKLSAgICBzdGF0aWMgdm9pZCBsb2NrKFZNJik7
Ci0gICAgc3RhdGljIHZvaWQgdW5sb2NrKFZNJik7Ci0KICAgICBWTSogdm0oKSB7IHJldHVybiBt
X3ZtOyB9CiAKICAgICBPcHRpb25hbDxSZWZQdHI8VGhyZWFkPj4gb3duZXJUaHJlYWQoKSBjb25z
dApAQCAtMTI2LDYgKzEzMCwxMCBAQCBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8SlNMb2NrPiB7CiAgICAgYm9vbCBpc1dlYlRocmVhZEF3YXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1dlYlRocmVhZEF3YXJlOyB9CiAKIHByaXZhdGU6CisgICAgLy8gVGhpcyBpcyBj
YWxsZWQgb25seSBmcm9tIEpTTG9ja0hvbGRlciBvciBEcm9wQWxsTG9ja3MuCisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBsb2NrKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxv
Y2soKTsKKwogICAgIHZvaWQgbG9jayhpbnRwdHJfdCBsb2NrQ291bnQpOwogICAgIHZvaWQgdW5s
b2NrKGludHB0cl90IHVubG9ja0NvdW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDJhMGMwNmM1ZDIzNjU4ZmRmY2NhNTMy
YTY2NDBmZmMyZGFkY2FhM2MuLmU2MGMzNDllZTAzY2UyMzVkMjg2MzlhM2E5ZTQxMjBkNmJlOWVh
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRp
bWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1l
ci5jcHAKQEAgLTI5NywxNCArMjk3LDEyIEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6OnRpbWVyRGlk
RmlyZSgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8SlNMb2NrPiBs
b2NrKG1fYXBpTG9jay5nZXQoKSk7Ci0gICAgUmVmUHRyPFZNPiB2bSA9IG1fYXBpTG9jay0+dm0o
KTsKLSAgICBpZiAoIXZtKSB7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihKU0xvY2tIb2xkZXI6
OkxvY2tJZlZNSXNMaXZlLCBtX2FwaUxvY2suZ2V0KCkpOworICAgIGlmICghbG9ja2VyLnZtKCkp
IHsKICAgICAgICAgLy8gVGhlIFZNIGhhcyBiZWVuIGRlc3Ryb3llZCwgc28gd2Ugc2hvdWxkIGp1
c3QgZ2l2ZSB1cC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIGRvV29yaygqdm0pOwor
ICAgIGRvV29yaygqbG9ja2VyLnZtKCkpOwogfQogCiBKU1J1bkxvb3BUaW1lcjo6SlNSdW5Mb29w
VGltZXIoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGFkYjVh
OTEzNGQ4ZmJjNDYzNjAyMWViMTlhZmFmNmUyNGY1NmEzZmEuLjA5MWNmYTk4MzVkNDEzMDdmM2Zh
ZmMyYzYxZGJkN2UwZjY2MWI3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
QEAgLTEzNzksNCArMTM3OSwxNiBAQCB2b2lkIFZNOjpzZXRDcmFzaE9uVk1DcmVhdGlvbihib29s
IHNob3VsZENyYXNoKQogICAgIHZtQ3JlYXRpb25TaG91bGRDcmFzaCA9IHNob3VsZENyYXNoOwog
fQogCisKKyNpZiAhSEFWRShGQVNUX1RMUykKK1dURjo6VGhyZWFkU3BlY2lmaWNLZXkgVk06OnRs
c0tleSB7IFdURjo6SW52YWxpZFRocmVhZFNwZWNpZmljS2V5IH07CisjZW5kaWYKKwordm9pZCBW
TTo6aW5pdGlhbGl6ZVRMUygpCit7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgV1RGOjp0aHJl
YWRTcGVjaWZpY0tleUNyZWF0ZSgmdGxzS2V5LCBudWxscHRyKTsKKyNlbmRpZgorfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDM5YmVhNWRl
YzcwNDk0MmZjMjVkYjliN2M5ZTg3ZWJlYjgxNmZmZWQuLmRkNThmMzVmZTkxNjFmYjdkNmM2MGJm
ODk2N2IyNGZjM2JjYjQzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzE0
LDYgKzMxNCwzOSBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4s
IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFdlYWtSYW5kb20mIHJhbmRv
bSgpIHsgcmV0dXJuIG1fcmFuZG9tOyB9CiAgICAgSW50ZWdyaXR5OjpSYW5kb20mIGludGVncml0
eVJhbmRvbSgpIHsgcmV0dXJuIG1faW50ZWdyaXR5UmFuZG9tOyB9CiAKKyNpZiBIQVZFKEZBU1Rf
VExTKQorICAgIHN0YXRpYyBjb25zdGV4cHIgcHRocmVhZF9rZXlfdCB0bHNLZXkgPSBXVEZfR0Nf
VExDX0tFWTsKKworICAgIHN0YXRpYyBWTSogZXhjaGFuZ2UoVk0qIHZtKQorICAgIHsKKyAgICAg
ICAgVk0qIHByZXZpb3VzID0gY3VycmVudCgpOworICAgICAgICBfcHRocmVhZF9zZXRzcGVjaWZp
Y19kaXJlY3QodGxzS2V5LCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHZtKSk7CisgICAgICAgIHJldHVy
biBwcmV2aW91czsKKyAgICB9CisKKyAgICBzdGF0aWMgVk0qIGN1cnJlbnQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxWTSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVj
dCh0bHNLZXkpKTsKKyAgICB9CisjZWxzZQorICAgIHN0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmlj
S2V5IHRsc0tleTsKKworICAgIHN0YXRpYyBWTSogZXhjaGFuZ2UoVk0qIHZtKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHRsc0tleSAhPSBXVEY6OkludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7Cisg
ICAgICAgIFZNKiBwcmV2aW91cyA9IGN1cnJlbnQoKTsKKyAgICAgICAgV1RGOjp0aHJlYWRTcGVj
aWZpY1NldCh0bHNLZXksIHZtKTsKKyAgICAgICAgcmV0dXJuIHByZXZpb3VzOworICAgIH0KKwor
ICAgIHN0YXRpYyBWTSogY3VycmVudCgpCisgICAgeworICAgICAgICBBU1NFUlQodGxzS2V5ICE9
IFdURjo6SW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxWTSo+KFdURjo6dGhyZWFkU3BlY2lmaWNHZXQodGxzS2V5KSk7CisgICAgfQorI2VuZGlm
CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRMUygpOworCiBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG5leHRJRCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379946</attachid>
            <date>2019-10-01 13:53:16 -0700</date>
            <delta_ts>2019-10-01 13:59:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202391-20191001135315.patch</filename>
            <type>text/plain</type>
            <size>13080</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OTlkMWI0NzcxOTU4NzU3OGE5ZGY4MDliOTUyOThmYjU1NDk3MTU4Li41ZTIzZWQxZGVmYWJiZDMw
NTYyNDYyMWVkZjA0ZTcwYWI5ZjhmMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxOS0xMC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFBsYWNlIFZNKiBpbiBUTFMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBWTSogaW4gVExTIG1h
aW5seSBmb3IgZGVidWdnaW5nIHB1cnBvc2UuIEluIEpTTG9ja0hvbGRlciwgd2UgcHV0IFZNKiBh
bmQgc2F2ZSB0aGUgb2xkIFZNKiBpbiBUTFMuCisgICAgICAgIEFuZCBKU0xvY2tIb2xkZXIncyBk
ZXN0cnVjdG9yIHJlc3RvcmVzIGl0LiBTaW5jZSBEcm9wQWxsTG9ja3Mgd2FudCB0byBwdXQgYG51
bGxwdHJgIGluIFRMUywgd2UgcGxhY2UgcHJldmlvdXMgVk0qCisgICAgICAgIGluIEpTTG9ja0hv
bGRlciBpdHNlbGYuIEFuZCBub3cgSlNMb2NrIGlzIG9ubHkgbG9ja2FibGUgYnkgSlNMb2NrSG9s
ZGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBjbGVhbnMgdXAgTG9jazxKU0xvY2s+IC8g
c3RkOjpsb2NrX2d1YXJkPEpTTG9jaz4gdXNhZ2UgaW4gSlNSdW5Mb29wVGltZXIgYW5kIEpTTWFu
YWdlZFZhbHVlIGJ5IGludHJvZHVjaW5nCisgICAgICAgIEpTTG9ja0hvbGRlciB3aXRoIExvY2tJ
ZlZNSXNMaXZlIHRhZy4gUHJldmlvdXNseSwgd2UgYXJlIGludGVudGlvbmFsbHkgdXNlIGBzdGQ6
OmxvY2tfZ3VhcmQ8SlNMb2NrPmAgc2luY2UgVk0qIGNhbiBiZSBkZWFkCisgICAgICAgIGF0IHRo
ZXNlIHBsYWNlcy4gSlNMb2NrSG9sZGVyIHdpdGggTG9ja0lmVk1Jc0xpdmUgaGFuZGxlcyB0aGlz
IGNhc2UgY2FyZWZ1bGx5OiBpdCBsb2NrcyBKU0xvY2sgd2hlbiBWTSogaXMgbGl2ZS4KKworICAg
ICAgICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5tbToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUg
dmFsdWVdKToKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NXZWFrVmFsdWUuY3BwOgorICAgICAgICAo
anNjX3dlYWtfdmFsdWVfZ2V0X3ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAg
ICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9ja0hvbGRlcjo6SlNM
b2NrSG9sZGVyKToKKyAgICAgICAgKEpTQzo6SlNMb2NrSG9sZGVyOjp+SlNMb2NrSG9sZGVyKToK
KyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2Nrcyk6CisgICAg
ICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tzKToKKyAgICAgICAg
KiBydW50aW1lL0pTTG9jay5oOgorICAgICAgICAoSlNDOjpKU0xvY2tIb2xkZXI6OnZtKToKKyAg
ICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNSdW5M
b29wVGltZXI6OnRpbWVyRGlkRmlyZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OlZNOjppbml0aWFsaXplVExTKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgIChKU0M6OlZNOjpleGNoYW5nZSk6CisgICAgICAgIChKU0M6OlZNOjpjdXJyZW50KToK
KwogMjAxOS0xMC0wMSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4gYW5kIFBh
dWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1lBUlJdIFByb3Blcmx5
IGhhbmRsZSBzdXJyb2dhdGVzIHdoZW4gbWF0Y2hpbmcgYmFjayByZWZlcmVuY2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMmUxOTA0NzgwMjVhNDQ5ZTYwNjhiM2JhNjEwYzVkNDRhODJlOWZiNy4uMzY5ZDcwOTA4
N2VjMDAxZWY1Yzc0NmQzN2NhMjM0MDcxOGMxMDEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE5LTEwLTAxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gUGxhY2UgVk0qIGluIFRMUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIEpTTG9ja0hvbGRlciBpbnN0ZWFkLiBJdCBhdXRvbWF0
aWNhbGx5IHB1dHMgVk0qIGluIFRMUy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJD
b3JlOjpkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKToKKwogMjAxOS0xMC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNz
IHRvd2FyZHMgc3VjY2Vzc2Z1bCBDTWFrZSBidWlsZCBvbiBNYWMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCmluZGV4IDlmNWRkODg5MmE4YmZhZTMyOGNlMGM1
OWFiNWU5YmNiNjM0NDI3ZmQuLmRlZWE2YTUzZDllYWNhOTUwMWM4OTQxMTJjNGFjMDE4MThkYmU5
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUu
bW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQpAQCAt
MTQ3LDEyICsxNDcsOSBAQCAtICh2b2lkKWRpZFJlbW92ZU93bmVyOihpZClvd25lcgogCiAtIChK
U1ZhbHVlICopdmFsdWUKIHsKLSAgICBXVEY6OkxvY2tlcjxKU0M6OkpTTG9jaz4gbG9ja2VyKG1f
bG9jay5nZXQoKSk7Ci0gICAgSlNDOjpWTSogdm0gPSBtX2xvY2stPnZtKCk7Ci0gICAgaWYgKCF2
bSkKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoSlNDOjpKU0xvY2tIb2xkZXI6OkxvY2tJ
ZlZNSXNMaXZlLCAqbV9sb2NrLmdldCgpKTsKKyAgICBpZiAoIWxvY2tlci52bSgpKQogICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgSlNDOjpKU0xvY2tIb2xkZXIgYXBpTG9ja2VyKHZtKTsKICAg
ICBpZiAoIW1fZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChtX3dl
YWtWYWx1ZS5pc0NsZWFyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDV2Vha1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NXZWFrVmFsdWUuY3BwCmluZGV4IDk4OTdlZTMyNzRmZDZlZGQ1NmFlOWY0NTkwZTE4NGNiZGRm
N2E0NGYuLmUxNDc2MDhkZDg1MmI3ZGFlNDM3NjEyM2VmZWJkY2IzZGUyOTcwNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXZWFrVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXZWFrVmFsdWUuY3BwCkBAIC0xODks
MTIgKzE4OSwxMCBAQCBKU0NWYWx1ZSoganNjX3dlYWtfdmFsdWVfZ2V0X3ZhbHVlKEpTQ1dlYWtW
YWx1ZSogd2Vha1ZhbHVlKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEpTQ19JU19XRUFLX1ZB
TFVFKHdlYWtWYWx1ZSksIG51bGxwdHIpOwogCiAgICAgSlNDV2Vha1ZhbHVlUHJpdmF0ZSogcHJp
diA9IHdlYWtWYWx1ZS0+cHJpdjsKLSAgICBXVEY6OkxvY2tlcjxKU0M6OkpTTG9jaz4gbG9ja2Vy
KHByaXYtPmxvY2suZ2V0KCkpOwotICAgIEpTQzo6Vk0qIHZtID0gcHJpdi0+bG9jay0+dm0oKTsK
LSAgICBpZiAoIXZtKQorICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihKU0M6OkpTTG9ja0hv
bGRlcjo6TG9ja0lmVk1Jc0xpdmUsICpwcml2LT5sb2NrLmdldCgpKTsKKyAgICBpZiAoIWxvY2tl
ci52bSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGFwaUxvY2tlcih2bSk7CiAgICAgaWYgKCFwcml2LT5nbG9iYWxPYmplY3QgfHwgcHJpdi0+d2Vh
a1ZhbHVlUmVmLmlzQ2xlYXIoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAK
aW5kZXggMWZkNTlmNDc2MDAwZjdhZDQxNWVkMjcxOWM1MjljZTQ4Y2ZjOWExYi4uNGFiZWEyYWVm
ZTM5NmUxMThmZDI0NDZlMzlmZWU2Y2JiODEyNDFkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKQEAgLTcxLDYgKzcx
LDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKIAogICAgICAgICBpbml0aWFsaXplUHRy
VGFnTG9va3VwKCk7CiAKKyAgICAgICAgVk06OmluaXRpYWxpemVUTFMoKTsKKwogI2lmIEVOQUJM
RShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6
OmluaXRpYWxpemUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5jcHAKaW5kZXggZGFmMGY3N2Q1NmVlMTMyN2ZmZGVhYWMwZDgwOGU0NTdjZmU4NjMxMC4uZGMx
Yjk3MjZiYTdhMGYwODY0OGMzNDViZTFkNDQ0YTdhNGY4NGE1MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xvY2suY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIlNh
bXBsaW5nUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhc21DYXBhYmls
aXRpZXMuaCIKICNpbmNsdWRlICJXYXNtTWFjaGluZVRocmVhZHMuaCIKICNpbmNsdWRlIDx0aHJl
YWQ+CkBAIC02NywxMyArNjgsMjcgQEAgSlNMb2NrSG9sZGVyOjpKU0xvY2tIb2xkZXIoVk0mIHZt
KQogICAgIDogbV92bSgmdm0pCiB7CiAgICAgbV92bS0+YXBpTG9jaygpLmxvY2soKTsKKyAgICBt
X3ByZXZpb3VzVk1JblRMUyA9IFZNOjpleGNoYW5nZShtX3ZtLmdldCgpKTsKK30KKworSlNMb2Nr
SG9sZGVyOjpKU0xvY2tIb2xkZXIoTG9ja0lmVk1Jc0xpdmVUYWcsIEpTTG9jayYgbG9jaykKK3sK
KyAgICBsb2NrLmxvY2soKTsKKyAgICBpZiAobG9jay5tX3ZtKSB7CisgICAgICAgIG1fdm0gPSBs
b2NrLm1fdm07CisgICAgICAgIG1fcHJldmlvdXNWTUluVExTID0gVk06OmV4Y2hhbmdlKG1fdm0u
Z2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBsb2NrLnVubG9jaygpOwogfQogCiBKU0xvY2tI
b2xkZXI6On5KU0xvY2tIb2xkZXIoKQogewotICAgIFJlZlB0cjxKU0xvY2s+IGFwaUxvY2soJm1f
dm0tPmFwaUxvY2soKSk7Ci0gICAgbV92bSA9IG51bGxwdHI7Ci0gICAgYXBpTG9jay0+dW5sb2Nr
KCk7CisgICAgaWYgKG1fdm0pIHsKKyAgICAgICAgUmVmUHRyPEpTTG9jaz4gYXBpTG9jaygmbV92
bS0+YXBpTG9jaygpKTsKKyAgICAgICAgbV92bSA9IG51bGxwdHI7CisgICAgICAgIGFwaUxvY2st
PnVubG9jaygpOworICAgICAgICBWTTo6ZXhjaGFuZ2UobV9wcmV2aW91c1ZNSW5UTFMpOyAvLyBD
aGFuZ2UgVk0gYWZ0ZXIgdW5sb2NraW5nLiBPdGhlcndpc2UsIHdpbGxSZWxlYXNlTG9jayB3aWxs
IHNlZSBwcmV2aW91cyBWTS4KKyAgICB9CiB9CiAKIEpTTG9jazo6SlNMb2NrKFZNKiB2bSkKQEAg
LTIyMiwxNiArMjM3LDYgQEAgdm9pZCBKU0xvY2s6OndpbGxSZWxlYXNlTG9jaygpCiAgICAgfQog
fQogCi12b2lkIEpTTG9jazo6bG9jayhFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgZXhlYy0+dm0o
KS5hcGlMb2NrKCkubG9jaygpOwotfQotCi12b2lkIEpTTG9jazo6dW5sb2NrKEV4ZWNTdGF0ZSog
ZXhlYykKLXsKLSAgICBleGVjLT52bSgpLmFwaUxvY2soKS51bmxvY2soKTsKLX0KLQogLy8gVGhp
cyBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YgbG9ja3MgdGhhdCB3ZXJlIGRyb3BwZWQu
CiB1bnNpZ25lZCBKU0xvY2s6OmRyb3BBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRyb3BwZXIpCiB7
CkBAIC0yODUsNiArMjkwLDcgQEAgSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhW
TSogdm0pCiAgICAgICAgIHJldHVybjsKICAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+YXBpTG9j
aygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkgfHwgIW1fdm0tPmlzQ29sbGVjdG9yQnVz
eU9uQ3VycmVudFRocmVhZCgpKTsKICAgICBtX2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlM
b2NrKCkuZHJvcEFsbExvY2tzKHRoaXMpOworICAgIFZNOjpleGNoYW5nZShudWxscHRyKTsKIH0K
IAogSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhFeGVjU3RhdGUqIGV4ZWMpCkBA
IC0zMDIsNiArMzA4LDcgQEAgSlNMb2NrOjpEcm9wQWxsTG9ja3M6On5Ecm9wQWxsTG9ja3MoKQog
ICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdm0tPmFwaUxvY2soKS5ncmFi
QWxsTG9ja3ModGhpcywgbV9kcm9wcGVkTG9ja0NvdW50KTsKKyAgICBWTTo6ZXhjaGFuZ2UobV92
bS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suaAppbmRleCAwYjI3ZmY2M2ZlNDgxNWJmMjYzZmM2NmY3ODk3MTBjMzJiMGMy
NTA2Li43MTdiMWFiNThmMjdmZDY5NGM3ODUxYmE3NjNiYWNmOTk0ODVjOTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgVk07CitjbGFzcyBKU0xvY2s7CiAKIC8v
IFRoaXMgY2xhc3MgaXMgdXNlZCB0byBwcm90ZWN0IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUg
bGVnYWN5IHNpbmdsZSAKIC8vIHNoYXJlZCBWTS4KQEAgLTYzLDMyICs2NCwzNSBAQCBjbGFzcyBH
bG9iYWxKU0xvY2sgewogICAgIHN0YXRpYyBMb2NrIHNfc2hhcmVkSW5zdGFuY2VNdXRleDsKIH07
CiAKKy8vIE9ubHkgSlNMb2NrSG9sZGVyIGNhbiB0YWtlIGEgSlNMb2NrLgogY2xhc3MgSlNMb2Nr
SG9sZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0xvY2tIb2xkZXIpOworICAgIFdU
Rl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OKEpTTG9ja0hvbGRlcik7CiBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNMb2NrSG9sZGVyKFZNKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNMb2NrSG9sZGVyKFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrSG9sZGVyKEV4
ZWNTdGF0ZSopOwogCisgICAgZW51bSBMb2NrSWZWTUlzTGl2ZVRhZyB7IExvY2tJZlZNSXNMaXZl
IH07CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrSG9sZGVyKExvY2tJZlZNSXNMaXZlVGFn
LCBKU0xvY2smKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0xvY2tIb2xkZXIoKTsKIAor
ICAgIFZNKiB2bSgpIHsgcmV0dXJuIG1fdm0uZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBSZWZQ
dHI8Vk0+IG1fdm07CisgICAgVk0qIG1fcHJldmlvdXNWTUluVExTIHsgbnVsbHB0ciB9OwogfTsK
IAogY2xhc3MgSlNMb2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpTTG9jaz4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTTG9jayk7CisgICAgZnJpZW5kIGNsYXNzIEpTTG9j
a0hvbGRlcjsKKyAgICBmcmllbmQgY2xhc3MgSlNSdW5Mb29wVGltZXI7CiBwdWJsaWM6CiAgICAg
SlNMb2NrKFZNKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkpTTG9jaygpOwogCi0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBsb2NrKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB1
bmxvY2soKTsKLQotICAgIHN0YXRpYyB2b2lkIGxvY2soRXhlY1N0YXRlKik7Ci0gICAgc3RhdGlj
IHZvaWQgdW5sb2NrKEV4ZWNTdGF0ZSopOwotICAgIHN0YXRpYyB2b2lkIGxvY2soVk0mKTsKLSAg
ICBzdGF0aWMgdm9pZCB1bmxvY2soVk0mKTsKLQogICAgIFZNKiB2bSgpIHsgcmV0dXJuIG1fdm07
IH0KIAogICAgIE9wdGlvbmFsPFJlZlB0cjxUaHJlYWQ+PiBvd25lclRocmVhZCgpIGNvbnN0CkBA
IC0xMjYsNiArMTMwLDEwIEBAIGNsYXNzIEpTTG9jayA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxKU0xvY2s+IHsKICAgICBib29sIGlzV2ViVGhyZWFkQXdhcmUoKSBjb25zdCB7IHJldHVy
biBtX2lzV2ViVGhyZWFkQXdhcmU7IH0KIAogcHJpdmF0ZToKKyAgICAvLyBUaGlzIGlzIGNhbGxl
ZCBvbmx5IGZyb20gSlNMb2NrSG9sZGVyIG9yIERyb3BBbGxMb2Nrcy4KKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGxvY2soKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHVubG9jaygp
OworCiAgICAgdm9pZCBsb2NrKGludHB0cl90IGxvY2tDb3VudCk7CiAgICAgdm9pZCB1bmxvY2so
aW50cHRyX3QgdW5sb2NrQ291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1J1bkxvb3BUaW1lci5jcHAKaW5kZXggMmEwYzA2YzVkMjM2NThmZGZjY2E1MzJhNjY0
MGZmYzJkYWRjYWEzYy4uZTYwYzM0OWVlMDNjZTIzNWQyODYzOWEzYTllNDEyMGQ2YmU5ZWE0MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNw
cApAQCAtMjk3LDE0ICsyOTcsMTIgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6dGltZXJEaWRGaXJl
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0ZDo6bG9ja19ndWFyZDxKU0xvY2s+IGxvY2so
bV9hcGlMb2NrLmdldCgpKTsKLSAgICBSZWZQdHI8Vk0+IHZtID0gbV9hcGlMb2NrLT52bSgpOwot
ICAgIGlmICghdm0pIHsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKEpTTG9ja0hvbGRlcjo6TG9j
a0lmVk1Jc0xpdmUsIG1fYXBpTG9jay5nZXQoKSk7CisgICAgaWYgKCFsb2NrZXIudm0oKSkgewog
ICAgICAgICAvLyBUaGUgVk0gaGFzIGJlZW4gZGVzdHJveWVkLCBzbyB3ZSBzaG91bGQganVzdCBn
aXZlIHVwLgogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgZG9Xb3JrKCp2bSk7CisgICAg
ZG9Xb3JrKCpsb2NrZXIudm0oKSk7CiB9CiAKIEpTUnVuTG9vcFRpbWVyOjpKU1J1bkxvb3BUaW1l
cihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYWRiNWE5MTM0
ZDhmYmM0NjM2MDIxZWIxOWFmYWY2ZTI0ZjU2YTNmYS4uMDkxY2ZhOTgzNWQ0MTMwN2YzZmFmYzJj
NjFkYmQ3ZTBmNjYxYjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
MTM3OSw0ICsxMzc5LDE2IEBAIHZvaWQgVk06OnNldENyYXNoT25WTUNyZWF0aW9uKGJvb2wgc2hv
dWxkQ3Jhc2gpCiAgICAgdm1DcmVhdGlvblNob3VsZENyYXNoID0gc2hvdWxkQ3Jhc2g7CiB9CiAK
KworI2lmICFIQVZFKEZBU1RfVExTKQorV1RGOjpUaHJlYWRTcGVjaWZpY0tleSBWTTo6dGxzS2V5
IHsgV1RGOjpJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkgfTsKKyNlbmRpZgorCit2b2lkIFZNOjpp
bml0aWFsaXplVExTKCkKK3sKKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICBXVEY6OnRocmVhZFNw
ZWNpZmljS2V5Q3JlYXRlKCZ0bHNLZXksIG51bGxwdHIpOworI2VuZGlmCit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMzliZWE1ZGVjNzA0
OTQyZmMyNWRiOWI3YzllODdlYmViODE2ZmZlZC4uZGQ1OGYzNWZlOTE2MWZiN2Q2YzYwYmY4OTY3
YjI0ZmMzYmNiNDMzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMTQsNiAr
MzE0LDM5IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVi
bGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgV2Vha1JhbmRvbSYgcmFuZG9tKCkg
eyByZXR1cm4gbV9yYW5kb207IH0KICAgICBJbnRlZ3JpdHk6OlJhbmRvbSYgaW50ZWdyaXR5UmFu
ZG9tKCkgeyByZXR1cm4gbV9pbnRlZ3JpdHlSYW5kb207IH0KIAorI2lmIEhBVkUoRkFTVF9UTFMp
CisgICAgc3RhdGljIGNvbnN0ZXhwciBwdGhyZWFkX2tleV90IHRsc0tleSA9IFdURl9HQ19UTENf
S0VZOworCisgICAgc3RhdGljIFZNKiBleGNoYW5nZShWTSogdm0pCisgICAgeworICAgICAgICBW
TSogcHJldmlvdXMgPSBjdXJyZW50KCk7CisgICAgICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2Rp
cmVjdCh0bHNLZXksIGJpdHdpc2VfY2FzdDx2b2lkKj4odm0pKTsKKyAgICAgICAgcmV0dXJuIHBy
ZXZpb3VzOworICAgIH0KKworICAgIHN0YXRpYyBWTSogY3VycmVudCgpCisgICAgeworICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PFZNKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KHRs
c0tleSkpOworICAgIH0KKyNlbHNlCisgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWNLZXkg
dGxzS2V5OworCisgICAgc3RhdGljIFZNKiBleGNoYW5nZShWTSogdm0pCisgICAgeworICAgICAg
ICBBU1NFUlQodGxzS2V5ICE9IFdURjo6SW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKKyAgICAg
ICAgVk0qIHByZXZpb3VzID0gY3VycmVudCgpOworICAgICAgICBXVEY6OnRocmVhZFNwZWNpZmlj
U2V0KHRsc0tleSwgdm0pOworICAgICAgICByZXR1cm4gcHJldmlvdXM7CisgICAgfQorCisgICAg
c3RhdGljIFZNKiBjdXJyZW50KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0bHNLZXkgIT0gV1RG
OjpJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PFZNKj4oV1RGOjp0aHJlYWRTcGVjaWZpY0dldCh0bHNLZXkpKTsKKyAgICB9CisjZW5kaWYKKyAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVExTKCk7CisKIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bmV4dElEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHAKaW5kZXggODVlNWU5ZjBkMGE3NzZiMTRhNDA0MzZjOGM4Y2EzODc2MmRh
ZjczZi4uNWE5Y2NmNDQzOTIwNmRjNzYwZDcxMWMzZWFmMDYxNzY2MmMyZDRlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAg
LTEzMyw3ICsxMzMsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNHbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgSURCS2V5KiBrZXkpCiAgICAgfQogCiAgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKLSAgICBMb2NrZXI8SlNMb2NrPiBsb2NrZXIodm0uYXBpTG9jaygpKTsKKyAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBzd2l0Y2ggKGtleS0+dHlwZSgpKSB7CkBAIC0zODYsMTAgKzM4
Niw5IEBAIHN0YXRpYyBKU1ZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU0dsb2JhbE9iamVjCiAKICAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhWZWN0b3I8dWlu
dDhfdD4oZGF0YSkpOwogCi0gICAgc3RhdGUudm0oKS5hcGlMb2NrKCkubG9jaygpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsT2JqZWN0LnZtKCkpOwogICAgIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiBtZXNzYWdlUG9ydHM7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBzZXJpYWxp
emVkVmFsdWUtPmRlc2VyaWFsaXplKHN0YXRlLCAmZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMs
IHZhbHVlLmJsb2JVUkxzKCksIHZhbHVlLmJsb2JGaWxlUGF0aHMoKSwgU2VyaWFsaXphdGlvbkVy
cm9yTW9kZTo6Tm9uVGhyb3dpbmcpOwotICAgIHN0YXRlLnZtKCkuYXBpTG9jaygpLnVubG9jaygp
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379947</attachid>
            <date>2019-10-01 13:59:45 -0700</date>
            <delta_ts>2019-10-01 14:16:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202391-20191001135944.patch</filename>
            <type>text/plain</type>
            <size>14475</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OTlkMWI0NzcxOTU4NzU3OGE5ZGY4MDliOTUyOThmYjU1NDk3MTU4Li41ZTIzZWQxZGVmYWJiZDMw
NTYyNDYyMWVkZjA0ZTcwYWI5ZjhmMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxOS0xMC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFBsYWNlIFZNKiBpbiBUTFMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBWTSogaW4gVExTIG1h
aW5seSBmb3IgZGVidWdnaW5nIHB1cnBvc2UuIEluIEpTTG9ja0hvbGRlciwgd2UgcHV0IFZNKiBh
bmQgc2F2ZSB0aGUgb2xkIFZNKiBpbiBUTFMuCisgICAgICAgIEFuZCBKU0xvY2tIb2xkZXIncyBk
ZXN0cnVjdG9yIHJlc3RvcmVzIGl0LiBTaW5jZSBEcm9wQWxsTG9ja3Mgd2FudCB0byBwdXQgYG51
bGxwdHJgIGluIFRMUywgd2UgcGxhY2UgcHJldmlvdXMgVk0qCisgICAgICAgIGluIEpTTG9ja0hv
bGRlciBpdHNlbGYuIEFuZCBub3cgSlNMb2NrIGlzIG9ubHkgbG9ja2FibGUgYnkgSlNMb2NrSG9s
ZGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBjbGVhbnMgdXAgTG9jazxKU0xvY2s+IC8g
c3RkOjpsb2NrX2d1YXJkPEpTTG9jaz4gdXNhZ2UgaW4gSlNSdW5Mb29wVGltZXIgYW5kIEpTTWFu
YWdlZFZhbHVlIGJ5IGludHJvZHVjaW5nCisgICAgICAgIEpTTG9ja0hvbGRlciB3aXRoIExvY2tJ
ZlZNSXNMaXZlIHRhZy4gUHJldmlvdXNseSwgd2UgYXJlIGludGVudGlvbmFsbHkgdXNlIGBzdGQ6
OmxvY2tfZ3VhcmQ8SlNMb2NrPmAgc2luY2UgVk0qIGNhbiBiZSBkZWFkCisgICAgICAgIGF0IHRo
ZXNlIHBsYWNlcy4gSlNMb2NrSG9sZGVyIHdpdGggTG9ja0lmVk1Jc0xpdmUgaGFuZGxlcyB0aGlz
IGNhc2UgY2FyZWZ1bGx5OiBpdCBsb2NrcyBKU0xvY2sgd2hlbiBWTSogaXMgbGl2ZS4KKworICAg
ICAgICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5tbToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUg
dmFsdWVdKToKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NXZWFrVmFsdWUuY3BwOgorICAgICAgICAo
anNjX3dlYWtfdmFsdWVfZ2V0X3ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAg
ICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9ja0hvbGRlcjo6SlNM
b2NrSG9sZGVyKToKKyAgICAgICAgKEpTQzo6SlNMb2NrSG9sZGVyOjp+SlNMb2NrSG9sZGVyKToK
KyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2Nrcyk6CisgICAg
ICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tzKToKKyAgICAgICAg
KiBydW50aW1lL0pTTG9jay5oOgorICAgICAgICAoSlNDOjpKU0xvY2tIb2xkZXI6OnZtKToKKyAg
ICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNSdW5M
b29wVGltZXI6OnRpbWVyRGlkRmlyZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OlZNOjppbml0aWFsaXplVExTKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgIChKU0M6OlZNOjpleGNoYW5nZSk6CisgICAgICAgIChKU0M6OlZNOjpjdXJyZW50KToK
KwogMjAxOS0xMC0wMSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4gYW5kIFBh
dWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1lBUlJdIFByb3Blcmx5
IGhhbmRsZSBzdXJyb2dhdGVzIHdoZW4gbWF0Y2hpbmcgYmFjayByZWZlcmVuY2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlh
ZGZmODhlMzFlZWZkOGJmOWRiNmJkNWUxYzc3MjNlN2E2NjhlMmEuLjRiZjdmNzkyYjY5ODBlYTBm
MDdiZTJkNDQ0YmQ1NGRkMGU1MTEyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTAtMDEg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBQbGFj
ZSBWTSogaW4gVExTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDIzOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDaGFuZ2VkIEZhc3RUTFMncyBrZXkgbmFtZSBmcm9tIFdURl9HQ19UTENfS0VZIHRvIFdU
Rl9WTV9LRVkuCisKKyAgICAgICAgKiB3dGYvRmFzdFRMUy5oOgorCiAyMDE5LTEwLTAxICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSBzdXBw
b3J0IGZvciA8IGlPUyAxMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJlMTkwNDc4MDI1YTQ0OWU2MDY4YjNiYTYx
MGM1ZDQ0YTgyZTlmYjcuLjM2OWQ3MDkwODdlYzAwMWVmNWM3NDZkMzdjYTIzNDA3MThjMTAxM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0xMC0wMSAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFBsYWNlIFZNKiBpbiBUTFMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM5MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKU0xvY2tI
b2xkZXIgaW5zdGVhZC4gSXQgYXV0b21hdGljYWxseSBwdXRzIFZNKiBpbiBUTFMuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1
ZSk6CisKIDIwMTktMTAtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBQcm9ncmVzcyB0b3dhcmRzIHN1Y2Nlc3NmdWwgQ01ha2UgYnVpbGQg
b24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZh
bHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRl
eCA5ZjVkZDg4OTJhOGJmYWUzMjhjZTBjNTlhYjVlOWJjYjYzNDQyN2ZkLi5kZWVhNmE1M2Q5ZWFj
YTk1MDFjODk0MTEyYzRhYzAxODE4ZGJlOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTE0NywxMiArMTQ3LDkgQEAgLSAodm9pZClkaWRSZW1v
dmVPd25lcjooaWQpb3duZXIKIAogLSAoSlNWYWx1ZSAqKXZhbHVlCiB7Ci0gICAgV1RGOjpMb2Nr
ZXI8SlNDOjpKU0xvY2s+IGxvY2tlcihtX2xvY2suZ2V0KCkpOwotICAgIEpTQzo6Vk0qIHZtID0g
bV9sb2NrLT52bSgpOwotICAgIGlmICghdm0pCisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KEpTQzo6SlNMb2NrSG9sZGVyOjpMb2NrSWZWTUlzTGl2ZSwgKm1fbG9jay5nZXQoKSk7CisgICAg
aWYgKCFsb2NrZXIudm0oKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGFwaUxvY2tlcih2bSk7CiAgICAgaWYgKCFtX2dsb2JhbE9iamVjdCkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICBpZiAobV93ZWFrVmFsdWUuaXNDbGVhcigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dlYWtWYWx1ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV2Vha1ZhbHVlLmNwcAppbmRleCA5ODk3ZWUzMjc0
ZmQ2ZWRkNTZhZTlmNDU5MGUxODRjYmRkZjdhNDRmLi5lMTQ3NjA4ZGQ4NTJiN2RhZTQzNzYxMjNl
ZmViZGNiM2RlMjk3MDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDV2Vha1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIv
SlNDV2Vha1ZhbHVlLmNwcApAQCAtMTg5LDEyICsxODksMTAgQEAgSlNDVmFsdWUqIGpzY193ZWFr
X3ZhbHVlX2dldF92YWx1ZShKU0NXZWFrVmFsdWUqIHdlYWtWYWx1ZSkKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChKU0NfSVNfV0VBS19WQUxVRSh3ZWFrVmFsdWUpLCBudWxscHRyKTsKIAogICAg
IEpTQ1dlYWtWYWx1ZVByaXZhdGUqIHByaXYgPSB3ZWFrVmFsdWUtPnByaXY7Ci0gICAgV1RGOjpM
b2NrZXI8SlNDOjpKU0xvY2s+IGxvY2tlcihwcml2LT5sb2NrLmdldCgpKTsKLSAgICBKU0M6OlZN
KiB2bSA9IHByaXYtPmxvY2stPnZtKCk7Ci0gICAgaWYgKCF2bSkKKyAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrZXIoSlNDOjpKU0xvY2tIb2xkZXI6OkxvY2tJZlZNSXNMaXZlLCAqcHJpdi0+bG9j
ay5nZXQoKSk7CisgICAgaWYgKCFsb2NrZXIudm0oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBhcGlMb2NrZXIodm0pOwogICAgIGlmICghcHJpdi0+
Z2xvYmFsT2JqZWN0IHx8IHByaXYtPndlYWtWYWx1ZVJlZi5pc0NsZWFyKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmluZGV4IDFmZDU5ZjQ3NjAwMGY3YWQ0MTVlZDI3MTlj
NTI5Y2U0OGNmYzlhMWIuLjRhYmVhMmFlZmUzOTZlMTE4ZmQyNDQ2ZTM5ZmVlNmNiYjgxMjQxZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCkBAIC03MSw2ICs3MSw4IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygp
CiAKICAgICAgICAgaW5pdGlhbGl6ZVB0clRhZ0xvb2t1cCgpOwogCisgICAgICAgIFZNOjppbml0
aWFsaXplVExTKCk7CisKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAg
ICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCmluZGV4IGRhZjBmNzdkNTZlZTEzMjdmZmRl
YWFjMGQ4MDhlNDU3Y2ZlODYzMTAuLmNjZWY2YmYwN2M5MzRmZWE2ZWVhYzVlNzhhYTU0MTFmMDM5
OWNiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYWNoaW5lU3Rh
Y2tNYXJrZXIuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCisjaW5jbHVkZSAiVk0u
aCIKICNpbmNsdWRlICJXYXNtQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2FzbU1hY2hpbmVU
aHJlYWRzLmgiCiAjaW5jbHVkZSA8dGhyZWFkPgpAQCAtNjcsMTMgKzY4LDI3IEBAIEpTTG9ja0hv
bGRlcjo6SlNMb2NrSG9sZGVyKFZNJiB2bSkKICAgICA6IG1fdm0oJnZtKQogewogICAgIG1fdm0t
PmFwaUxvY2soKS5sb2NrKCk7CisgICAgbV9wcmV2aW91c1ZNSW5UTFMgPSBWTTo6ZXhjaGFuZ2Uo
bV92bS5nZXQoKSk7Cit9CisKK0pTTG9ja0hvbGRlcjo6SlNMb2NrSG9sZGVyKExvY2tJZlZNSXNM
aXZlVGFnLCBKU0xvY2smIGxvY2spCit7CisgICAgbG9jay5sb2NrKCk7CisgICAgaWYgKGxvY2su
bV92bSkgeworICAgICAgICBtX3ZtID0gbG9jay5tX3ZtOworICAgICAgICBtX3ByZXZpb3VzVk1J
blRMUyA9IFZNOjpleGNoYW5nZShtX3ZtLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbG9j
ay51bmxvY2soKTsKIH0KIAogSlNMb2NrSG9sZGVyOjp+SlNMb2NrSG9sZGVyKCkKIHsKLSAgICBS
ZWZQdHI8SlNMb2NrPiBhcGlMb2NrKCZtX3ZtLT5hcGlMb2NrKCkpOwotICAgIG1fdm0gPSBudWxs
cHRyOwotICAgIGFwaUxvY2stPnVubG9jaygpOworICAgIGlmIChtX3ZtKSB7CisgICAgICAgIFJl
ZlB0cjxKU0xvY2s+IGFwaUxvY2soJm1fdm0tPmFwaUxvY2soKSk7CisgICAgICAgIG1fdm0gPSBu
dWxscHRyOworICAgICAgICBhcGlMb2NrLT51bmxvY2soKTsKKyAgICAgICAgVk06OmV4Y2hhbmdl
KG1fcHJldmlvdXNWTUluVExTKTsgLy8gQ2hhbmdlIFZNIG9ubHkgYWZ0ZXIgdW5sb2NraW5nLiBP
dGhlcndpc2UsIHdpbGxSZWxlYXNlTG9jayB3aWxsIHNlZSBwcmV2aW91cyBWTS4KKyAgICB9CiB9
CiAKIEpTTG9jazo6SlNMb2NrKFZNKiB2bSkKQEAgLTIyMiwxNiArMjM3LDYgQEAgdm9pZCBKU0xv
Y2s6OndpbGxSZWxlYXNlTG9jaygpCiAgICAgfQogfQogCi12b2lkIEpTTG9jazo6bG9jayhFeGVj
U3RhdGUqIGV4ZWMpCi17Ci0gICAgZXhlYy0+dm0oKS5hcGlMb2NrKCkubG9jaygpOwotfQotCi12
b2lkIEpTTG9jazo6dW5sb2NrKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBleGVjLT52bSgpLmFw
aUxvY2soKS51bmxvY2soKTsKLX0KLQogLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1i
ZXIgb2YgbG9ja3MgdGhhdCB3ZXJlIGRyb3BwZWQuCiB1bnNpZ25lZCBKU0xvY2s6OmRyb3BBbGxM
b2NrcyhEcm9wQWxsTG9ja3MqIGRyb3BwZXIpCiB7CkBAIC0yODUsNiArMjkwLDggQEAgSlNMb2Nr
OjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdm0pCiAgICAgICAgIHJldHVybjsKICAg
ICBSRUxFQVNFX0FTU0VSVCghbV92bS0+YXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdM
b2NrKCkgfHwgIW1fdm0tPmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKICAgICBt
X2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCkuZHJvcEFsbExvY2tzKHRoaXMpOwor
ICAgIFZNKiBwcmV2aW91c1ZNSW5UTFMgPSBWTTo6ZXhjaGFuZ2UobnVsbHB0cik7CisgICAgQVNT
RVJUX1VOVVNFRChwcmV2aW91cywgcHJldmlvdXNWTUluVExTID09IG1fdm0uZ2V0KCkpOwogfQog
CiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYykKQEAg
LTMwMiw2ICszMDksOCBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6fkRyb3BBbGxMb2NrcygpCiAg
ICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47CiAgICAgbV92bS0+YXBpTG9jaygpLmdyYWJB
bGxMb2Nrcyh0aGlzLCBtX2Ryb3BwZWRMb2NrQ291bnQpOworICAgIFZNKiBwcmV2aW91c1ZNSW5U
TFMgPSBWTTo6ZXhjaGFuZ2UobV92bS5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChwcmV2aW91
c1ZNSW5UTFMsIHByZXZpb3VzVk1JblRMUyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCAwYjI3ZmY2M2ZlNDgxNWJmMjYz
ZmM2NmY3ODk3MTBjMzJiMGMyNTA2Li4zOTkzNGE2YjEwOWE1M2Y0ZTc2MGQ2NDlkZjM4MTg1OWY5
ZTYyOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApAQCAtNTEsNiAr
NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgVk07Citj
bGFzcyBKU0xvY2s7CiAKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBwcm90ZWN0IHRoZSBpbml0
aWFsaXphdGlvbiBvZiB0aGUgbGVnYWN5IHNpbmdsZSAKIC8vIHNoYXJlZCBWTS4KQEAgLTYzLDMy
ICs2NCwzNCBAQCBjbGFzcyBHbG9iYWxKU0xvY2sgewogICAgIHN0YXRpYyBMb2NrIHNfc2hhcmVk
SW5zdGFuY2VNdXRleDsKIH07CiAKKy8vIE9ubHkgSlNMb2NrSG9sZGVyIGNhbiB0YWtlIGEgSlNM
b2NrLgogY2xhc3MgSlNMb2NrSG9sZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0xv
Y2tIb2xkZXIpOworICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OKEpTTG9ja0hvbGRlcik7
CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrSG9sZGVyKFZNKik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrSG9sZGVyKFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNMb2NrSG9sZGVyKEV4ZWNTdGF0ZSopOwogCisgICAgZW51bSBMb2NrSWZWTUlzTGl2ZVRh
ZyB7IExvY2tJZlZNSXNMaXZlIH07CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrSG9sZGVy
KExvY2tJZlZNSXNMaXZlVGFnLCBKU0xvY2smKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5K
U0xvY2tIb2xkZXIoKTsKIAorICAgIFZNKiB2bSgpIHsgcmV0dXJuIG1fdm0uZ2V0KCk7IH0KKwog
cHJpdmF0ZToKICAgICBSZWZQdHI8Vk0+IG1fdm07CisgICAgVk0qIG1fcHJldmlvdXNWTUluVExT
IHsgbnVsbHB0ciB9OwogfTsKIAogY2xhc3MgSlNMb2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEpTTG9jaz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTTG9jayk7CisgICAg
ZnJpZW5kIGNsYXNzIEpTTG9ja0hvbGRlcjsKIHB1YmxpYzoKICAgICBKU0xvY2soVk0qKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB+SlNMb2NrKCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGxvY2soKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHVubG9jaygpOwotCi0gICAg
c3RhdGljIHZvaWQgbG9jayhFeGVjU3RhdGUqKTsKLSAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhl
Y1N0YXRlKik7Ci0gICAgc3RhdGljIHZvaWQgbG9jayhWTSYpOwotICAgIHN0YXRpYyB2b2lkIHVu
bG9jayhWTSYpOwotCiAgICAgVk0qIHZtKCkgeyByZXR1cm4gbV92bTsgfQogCiAgICAgT3B0aW9u
YWw8UmVmUHRyPFRocmVhZD4+IG93bmVyVGhyZWFkKCkgY29uc3QKQEAgLTEyNiw2ICsxMjksMTAg
QEAgY2xhc3MgSlNMb2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpTTG9jaz4gewog
ICAgIGJvb2wgaXNXZWJUaHJlYWRBd2FyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJUaHJlYWRB
d2FyZTsgfQogCiBwcml2YXRlOgorICAgIC8vIFRoaXMgaXMgY2FsbGVkIG9ubHkgZnJvbSBKU0xv
Y2tIb2xkZXIgb3IgRHJvcEFsbExvY2tzLgorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9j
aygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrKCk7CisKICAgICB2b2lkIGxv
Y2soaW50cHRyX3QgbG9ja0NvdW50KTsKICAgICB2b2lkIHVubG9jayhpbnRwdHJfdCB1bmxvY2tD
b3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVu
TG9vcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRp
bWVyLmNwcAppbmRleCAyYTBjMDZjNWQyMzY1OGZkZmNjYTUzMmE2NjQwZmZjMmRhZGNhYTNjLi5l
NjBjMzQ5ZWUwM2NlMjM1ZDI4NjM5YTNhOWU0MTIwZDZiZTllYTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCkBAIC0yOTcsMTQgKzI5
NywxMiBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjp0aW1lckRpZEZpcmUoKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJkPEpTTG9jaz4gbG9jayhtX2FwaUxvY2suZ2V0KCkp
OwotICAgIFJlZlB0cjxWTT4gdm0gPSBtX2FwaUxvY2stPnZtKCk7Ci0gICAgaWYgKCF2bSkgewor
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoSlNMb2NrSG9sZGVyOjpMb2NrSWZWTUlzTGl2ZSwgbV9h
cGlMb2NrLmdldCgpKTsKKyAgICBpZiAoIWxvY2tlci52bSgpKSB7CiAgICAgICAgIC8vIFRoZSBW
TSBoYXMgYmVlbiBkZXN0cm95ZWQsIHNvIHdlIHNob3VsZCBqdXN0IGdpdmUgdXAuCiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0KLSAgICBkb1dvcmsoKnZtKTsKKyAgICBkb1dvcmsoKmxvY2tlci52
bSgpKTsKIH0KIAogSlNSdW5Mb29wVGltZXI6OkpTUnVuTG9vcFRpbWVyKFZNJiB2bSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBhZGI1YTkxMzRkOGZiYzQ2MzYwMjFlYjE5
YWZhZjZlMjRmNTZhM2ZhLi4wOTFjZmE5ODM1ZDQxMzA3ZjNmYWZjMmM2MWRiZDdlMGY2NjFiNzdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMzc5LDQgKzEzNzksMTYg
QEAgdm9pZCBWTTo6c2V0Q3Jhc2hPblZNQ3JlYXRpb24oYm9vbCBzaG91bGRDcmFzaCkKICAgICB2
bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBzaG91bGRDcmFzaDsKIH0KIAorCisjaWYgIUhBVkUoRkFT
VF9UTFMpCitXVEY6OlRocmVhZFNwZWNpZmljS2V5IFZNOjp0bHNLZXkgeyBXVEY6OkludmFsaWRU
aHJlYWRTcGVjaWZpY0tleSB9OworI2VuZGlmCisKK3ZvaWQgVk06OmluaXRpYWxpemVUTFMoKQor
eworI2lmICFIQVZFKEZBU1RfVExTKQorICAgIFdURjo6dGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUo
JnRsc0tleSwgbnVsbHB0cik7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAzOWJlYTVkZWM3MDQ5NDJmYzI1ZGI5YjdjOWU4
N2ViZWI4MTZmZmVkLi42NzZkOWMyYzE2MjY5Nzk2YjU4MjY4MmVmZjQxYjg5ZWI1N2Y1OTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxNCw2ICszMTQsMzkgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2Vk
TGlzdE5vZGU8Vk0+IHsKICAgICBXZWFrUmFuZG9tJiByYW5kb20oKSB7IHJldHVybiBtX3JhbmRv
bTsgfQogICAgIEludGVncml0eTo6UmFuZG9tJiBpbnRlZ3JpdHlSYW5kb20oKSB7IHJldHVybiBt
X2ludGVncml0eVJhbmRvbTsgfQogCisjaWYgSEFWRShGQVNUX1RMUykKKyAgICBzdGF0aWMgY29u
c3RleHByIHB0aHJlYWRfa2V5X3QgdGxzS2V5ID0gV1RGX1ZNX0tFWTsKKworICAgIHN0YXRpYyBW
TSogZXhjaGFuZ2UoVk0qIHZtKQorICAgIHsKKyAgICAgICAgVk0qIHByZXZpb3VzID0gY3VycmVu
dCgpOworICAgICAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QodGxzS2V5LCBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHZtKSk7CisgICAgICAgIHJldHVybiBwcmV2aW91czsKKyAgICB9CisKKyAg
ICBzdGF0aWMgVk0qIGN1cnJlbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxWTSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdCh0bHNLZXkpKTsKKyAgICB9CisjZWxz
ZQorICAgIHN0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmljS2V5IHRsc0tleTsKKworICAgIHN0YXRp
YyBWTSogZXhjaGFuZ2UoVk0qIHZtKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRsc0tleSAhPSBX
VEY6OkludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgICAgIFZNKiBwcmV2aW91cyA9IGN1
cnJlbnQoKTsKKyAgICAgICAgV1RGOjp0aHJlYWRTcGVjaWZpY1NldCh0bHNLZXksIHZtKTsKKyAg
ICAgICAgcmV0dXJuIHByZXZpb3VzOworICAgIH0KKworICAgIHN0YXRpYyBWTSogY3VycmVudCgp
CisgICAgeworICAgICAgICBBU1NFUlQodGxzS2V5ICE9IFdURjo6SW52YWxpZFRocmVhZFNwZWNp
ZmljS2V5KTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxWTSo+KFdURjo6dGhyZWFkU3Bl
Y2lmaWNHZXQodGxzS2V5KSk7CisgICAgfQorI2VuZGlmCisgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVRMUygpOworCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG5leHRJRCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgK
aW5kZXggZmUxY2RkOTY5ODdkNDkwNjIzNDE0NDU0NGMwYjViMWI3MWUyN2I4ZC4uN2FjMGE4MDIy
YWFhYTI2M2M2MzliYzNkZTFkOTE2NWZmMmUyMWM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmFzdFRMUy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaApAQCAtNDYsNyArNDYs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKICNkZWZpbmUgV1RGX1RIUkVBRF9EQVRBX0tFWSBXVEZfRkFT
VF9UTFNfS0VZMAogI2RlZmluZSBXVEZfV0FTTV9DT05URVhUX0tFWSBXVEZfRkFTVF9UTFNfS0VZ
MQogI2RlZmluZSBXVEZfVEVTVElOR19LRVkgV1RGX1dBU01fQ09OVEVYVF9LRVkgLy8gU28gZmFy
LCB0aGlzIGtleSBpcyBvbmx5IHVzZWQgaW4gcGxhY2VzIHRoYXQgZG9uJ3QgZG8gV2ViQXNzZW1i
bHksIHNvIGl0J3MgT0sgdGhhdCB0aGV5IHNoYXJlIHRoZSBzYW1lIGtleS4KLSNkZWZpbmUgV1RG
X0dDX1RMQ19LRVkgV1RGX0ZBU1RfVExTX0tFWTIKKyNkZWZpbmUgV1RGX1ZNX0tFWSBXVEZfRkFT
VF9UTFNfS0VZMgogCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKIGlubGluZSB1bnNpZ25lZCBm
YXN0VExTT2Zmc2V0Rm9yS2V5KHVuc2lnbmVkIGxvbmcgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggODVlNWU5ZjBk
MGE3NzZiMTRhNDA0MzZjOGM4Y2EzODc2MmRhZjczZi4uNWE5Y2NmNDQzOTIwNmRjNzYwZDcxMWMz
ZWFmMDYxNzY2MmMyZDRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSURCS2V5KiBr
ZXkpCiAgICAgfQogCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBMb2NrZXI8SlNMb2Nr
PiBsb2NrZXIodm0uYXBpTG9jaygpKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBzd2l0Y2ggKGtl
eS0+dHlwZSgpKSB7CkBAIC0zODYsMTAgKzM4Niw5IEBAIHN0YXRpYyBKU1ZhbHVlIGRlc2VyaWFs
aXplSURCVmFsdWVUb0pTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU0dsb2JhbE9iamVj
CiAKICAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlRnJvbVdpcmVCeXRlcyhWZWN0b3I8dWludDhfdD4oZGF0YSkpOwogCi0gICAgc3RhdGUudm0o
KS5hcGlMb2NrKCkubG9jaygpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsT2JqZWN0
LnZtKCkpOwogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBtZXNzYWdlUG9ydHM7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBzZXJpYWxpemVkVmFsdWUtPmRlc2VyaWFsaXplKHN0YXRlLCAm
Z2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIHZhbHVlLmJsb2JVUkxzKCksIHZhbHVlLmJsb2JG
aWxlUGF0aHMoKSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6Tm9uVGhyb3dpbmcpOwotICAgIHN0
YXRlLnZtKCkuYXBpTG9jaygpLnVubG9jaygpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
</data>
<flag name="review"
          id="395667"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379951</attachid>
            <date>2019-10-01 14:29:32 -0700</date>
            <delta_ts>2019-10-01 14:29:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-202391-20191001142932.patch</filename>
            <type>text/plain</type>
            <size>14600</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OTlkMWI0NzcxOTU4NzU3OGE5ZGY4MDliOTUyOThmYjU1NDk3MTU4Li4yZmZiYmUxODcxMWNiZjUz
ZjVmOTc4MzVmNmE5MWNiOThkZjJhODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxOS0xMC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFBsYWNlIFZNKiBpbiBUTFMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBWTSogaW4gVExTIG1h
aW5seSBmb3IgZGVidWdnaW5nIHB1cnBvc2UuIEluIEpTTG9ja0hvbGRlciwgd2UgcHV0IFZNKiBh
bmQgc2F2ZSB0aGUgb2xkIFZNKiBpbiBUTFMuCisgICAgICAgIEFuZCBKU0xvY2tIb2xkZXIncyBk
ZXN0cnVjdG9yIHJlc3RvcmVzIGl0LiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdlIGhhdmUgdHdvIFZN
cyBBIGFuZCBCLiBBZnRlciBsb2NraW5nIEEsIHdlIGVudGVyCisgICAgICAgIEIuIEluIHRoaXMg
Y2FzZSwgd2hlbiBCJ3MgbG9jayBpcyByZWxlYXNlZCwgd2Ugc2hvdWxkIHJlc3RvcmUgVExTIHRv
IEEuIFdlIHB1dCB0aGUgb2xkIFZNKiBpbiBKU0xvY2tIb2xkZXI6Om1fcHJldmlvdXNWTUluVExT
CisgICAgICAgIHNvIHRoYXQgd2UgY2FuIHJlc3RvcmUgaXQgaW4gSlNMb2NrSG9sZGVyJ3MgZGVz
dHJ1Y3Rvci4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gY2xlYW5zIHVwIExvY2s8SlNMb2Nr
PiAvIHN0ZDo6bG9ja19ndWFyZDxKU0xvY2s+IHVzYWdlIGluIEpTUnVuTG9vcFRpbWVyIGFuZCBK
U01hbmFnZWRWYWx1ZSBieSBpbnRyb2R1Y2luZworICAgICAgICBKU0xvY2tIb2xkZXIgd2l0aCBM
b2NrSWZWTUlzTGl2ZSB0YWcuIFByZXZpb3VzbHksIHdlIGFyZSBpbnRlbnRpb25hbGx5IHVzZSBg
c3RkOjpsb2NrX2d1YXJkPEpTTG9jaz5gIHNpbmNlIFZNKiBjYW4gYmUgZGVhZAorICAgICAgICBh
dCB0aGVzZSBwbGFjZXMuIEpTTG9ja0hvbGRlciB3aXRoIExvY2tJZlZNSXNMaXZlIGhhbmRsZXMg
dGhpcyBjYXNlIGNhcmVmdWxseTogaXQgbG9ja3MgSlNMb2NrIHdoZW4gVk0qIGlzIGxpdmUuCisK
KyAgICAgICAgKiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06CisgICAgICAgICgtW0pTTWFuYWdlZFZh
bHVlIHZhbHVlXSk6CisgICAgICAgICogQVBJL2dsaWIvSlNDV2Vha1ZhbHVlLmNwcDoKKyAgICAg
ICAgKGpzY193ZWFrX3ZhbHVlX2dldF92YWx1ZSk6CisgICAgICAgICogcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZyk6Cisg
ICAgICAgICogcnVudGltZS9KU0xvY2suY3BwOgorICAgICAgICAoSlNDOjpKU0xvY2tIb2xkZXI6
OkpTTG9ja0hvbGRlcik6CisgICAgICAgIChKU0M6OkpTTG9ja0hvbGRlcjo6fkpTTG9ja0hvbGRl
cik6CisgICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MpOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6fkRyb3BBbGxMb2Nrcyk6CisgICAg
ICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKEpTQzo6SlNMb2NrSG9sZGVyOjp2bSk6
CisgICAgICAgICogcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpT
UnVuTG9vcFRpbWVyOjp0aW1lckRpZEZpcmUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6aW5pdGlhbGl6ZVRMUyk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAoSlNDOjpWTTo6ZXhjaGFuZ2UpOgorICAgICAgICAoSlNDOjpWTTo6Y3VycmVu
dCk6CisKIDIwMTktMTAtMDEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+IGFu
ZCBQYXVsbyBNYXRvcyAgPHBtYXRvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtZQVJSXSBQcm9w
ZXJseSBoYW5kbGUgc3Vycm9nYXRlcyB3aGVuIG1hdGNoaW5nIGJhY2sgcmVmZXJlbmNlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA5YWRmZjg4ZTMxZWVmZDhiZjlkYjZiZDVlMWM3NzIzZTdhNjY4ZTJhLi40YmY3Zjc5MmI2OTgw
ZWEwZjA3YmUyZDQ0NGJkNTRkZDBlNTExMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEw
LTAxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
UGxhY2UgVk0qIGluIFRMUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAyMzkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ2hhbmdlZCBGYXN0VExTJ3Mga2V5IG5hbWUgZnJvbSBXVEZfR0NfVExDX0tFWSB0
byBXVEZfVk1fS0VZLgorCisgICAgICAgICogd3RmL0Zhc3RUTFMuaDoKKwogMjAxOS0xMC0wMSAg
S2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUg
c3VwcG9ydCBmb3IgPCBpT1MgMTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZTE5MDQ3ODAyNWE0NDllNjA2OGIz
YmE2MTBjNWQ0NGE4MmU5ZmI3Li4zNjlkNzA5MDg3ZWMwMDFlZjVjNzQ2ZDM3Y2EyMzQwNzE4YzEw
MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMTAtMDEgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBQbGFjZSBWTSogaW4gVExT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIzOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSlNM
b2NrSG9sZGVyIGluc3RlYWQuIEl0IGF1dG9tYXRpY2FsbHkgcHV0cyBWTSogaW4gVExTLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWVUb0pT
VmFsdWUpOgorCiAyMDE5LTEwLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBzdWNjZXNzZnVsIENNYWtlIGJ1
aWxkIG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0K
aW5kZXggOWY1ZGQ4ODkyYThiZmFlMzI4Y2UwYzU5YWI1ZTliY2I2MzQ0MjdmZC4uZGVlYTZhNTNk
OWVhY2E5NTAxYzg5NDExMmM0YWMwMTgxOGRiZTllNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCkBAIC0xNDcsMTIgKzE0Nyw5IEBAIC0gKHZvaWQpZGlk
UmVtb3ZlT3duZXI6KGlkKW93bmVyCiAKIC0gKEpTVmFsdWUgKil2YWx1ZQogewotICAgIFdURjo6
TG9ja2VyPEpTQzo6SlNMb2NrPiBsb2NrZXIobV9sb2NrLmdldCgpKTsKLSAgICBKU0M6OlZNKiB2
bSA9IG1fbG9jay0+dm0oKTsKLSAgICBpZiAoIXZtKQorICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2tlcihKU0M6OkpTTG9ja0hvbGRlcjo6TG9ja0lmVk1Jc0xpdmUsICptX2xvY2suZ2V0KCkpOwor
ICAgIGlmICghbG9ja2VyLnZtKCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBKU0M6OkpT
TG9ja0hvbGRlciBhcGlMb2NrZXIodm0pOwogICAgIGlmICghbV9nbG9iYWxPYmplY3QpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgaWYgKG1fd2Vha1ZhbHVlLmlzQ2xlYXIoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXZWFrVmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dlYWtWYWx1ZS5jcHAKaW5kZXggOTg5N2Vl
MzI3NGZkNmVkZDU2YWU5ZjQ1OTBlMTg0Y2JkZGY3YTQ0Zi4uZTE0NzYwOGRkODUyYjdkYWU0Mzc2
MTIzZWZlYmRjYjNkZTI5NzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9nbGliL0pTQ1dlYWtWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9n
bGliL0pTQ1dlYWtWYWx1ZS5jcHAKQEAgLTE4OSwxMiArMTg5LDEwIEBAIEpTQ1ZhbHVlKiBqc2Nf
d2Vha192YWx1ZV9nZXRfdmFsdWUoSlNDV2Vha1ZhbHVlKiB3ZWFrVmFsdWUpCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoSlNDX0lTX1dFQUtfVkFMVUUod2Vha1ZhbHVlKSwgbnVsbHB0cik7CiAK
ICAgICBKU0NXZWFrVmFsdWVQcml2YXRlKiBwcml2ID0gd2Vha1ZhbHVlLT5wcml2OwotICAgIFdU
Rjo6TG9ja2VyPEpTQzo6SlNMb2NrPiBsb2NrZXIocHJpdi0+bG9jay5nZXQoKSk7Ci0gICAgSlND
OjpWTSogdm0gPSBwcml2LT5sb2NrLT52bSgpOwotICAgIGlmICghdm0pCisgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9ja2VyKEpTQzo6SlNMb2NrSG9sZGVyOjpMb2NrSWZWTUlzTGl2ZSwgKnByaXYt
PmxvY2suZ2V0KCkpOworICAgIGlmICghbG9ja2VyLnZtKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgSlNDOjpKU0xvY2tIb2xkZXIgYXBpTG9ja2VyKHZtKTsKICAgICBpZiAoIXBy
aXYtPmdsb2JhbE9iamVjdCB8fCBwcml2LT53ZWFrVmFsdWVSZWYuaXNDbGVhcigpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAppbmRleCAxZmQ1OWY0NzYwMDBmN2FkNDE1ZWQy
NzE5YzUyOWNlNDhjZmM5YTFiLi40YWJlYTJhZWZlMzk2ZTExOGZkMjQ0NmUzOWZlZTZjYmI4MTI0
MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcApAQCAtNzEsNiArNzEsOCBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmcoKQogCiAgICAgICAgIGluaXRpYWxpemVQdHJUYWdMb29rdXAoKTsKIAorICAgICAgICBWTTo6
aW5pdGlhbGl6ZVRMUygpOworCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQog
ICAgICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBkYWYwZjc3ZDU2ZWUxMzI3
ZmZkZWFhYzBkODA4ZTQ1N2NmZTg2MzEwLi5hZDRkMGQxOTg3NDI1ODg3MWNhNDFmMGVlMDVmNzQ5
Y2NkY2U3Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjaGlu
ZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUg
IlZNLmgiCiAjaW5jbHVkZSAiV2FzbUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIldhc21NYWNo
aW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVhZD4KQEAgLTY3LDEzICs2OCwyNyBAQCBKU0xv
Y2tIb2xkZXI6OkpTTG9ja0hvbGRlcihWTSYgdm0pCiAgICAgOiBtX3ZtKCZ2bSkKIHsKICAgICBt
X3ZtLT5hcGlMb2NrKCkubG9jaygpOworICAgIG1fcHJldmlvdXNWTUluVExTID0gVk06OmV4Y2hh
bmdlKG1fdm0uZ2V0KCkpOworfQorCitKU0xvY2tIb2xkZXI6OkpTTG9ja0hvbGRlcihMb2NrSWZW
TUlzTGl2ZVRhZywgSlNMb2NrJiBsb2NrKQoreworICAgIGxvY2subG9jaygpOworICAgIGlmIChs
b2NrLm1fdm0pIHsKKyAgICAgICAgbV92bSA9IGxvY2subV92bTsKKyAgICAgICAgbV9wcmV2aW91
c1ZNSW5UTFMgPSBWTTo6ZXhjaGFuZ2UobV92bS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IGxvY2sudW5sb2NrKCk7CiB9CiAKIEpTTG9ja0hvbGRlcjo6fkpTTG9ja0hvbGRlcigpCiB7Ci0g
ICAgUmVmUHRyPEpTTG9jaz4gYXBpTG9jaygmbV92bS0+YXBpTG9jaygpKTsKLSAgICBtX3ZtID0g
bnVsbHB0cjsKLSAgICBhcGlMb2NrLT51bmxvY2soKTsKKyAgICBpZiAobV92bSkgeworICAgICAg
ICBSZWZQdHI8SlNMb2NrPiBhcGlMb2NrKCZtX3ZtLT5hcGlMb2NrKCkpOworICAgICAgICBtX3Zt
ID0gbnVsbHB0cjsKKyAgICAgICAgYXBpTG9jay0+dW5sb2NrKCk7CisgICAgICAgIFZNOjpleGNo
YW5nZShtX3ByZXZpb3VzVk1JblRMUyk7IC8vIENoYW5nZSBWTSBvbmx5IGFmdGVyIHVubG9ja2lu
Zy4gT3RoZXJ3aXNlLCB3aWxsUmVsZWFzZUxvY2sgd2lsbCBzZWUgcHJldmlvdXMgVk0uCisgICAg
fQogfQogCiBKU0xvY2s6OkpTTG9jayhWTSogdm0pCkBAIC0yMjIsMTYgKzIzNyw2IEBAIHZvaWQg
SlNMb2NrOjp3aWxsUmVsZWFzZUxvY2soKQogICAgIH0KIH0KIAotdm9pZCBKU0xvY2s6OmxvY2so
RXhlY1N0YXRlKiBleGVjKQotewotICAgIGV4ZWMtPnZtKCkuYXBpTG9jaygpLmxvY2soKTsKLX0K
LQotdm9pZCBKU0xvY2s6OnVubG9jayhFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgZXhlYy0+dm0o
KS5hcGlMb2NrKCkudW5sb2NrKCk7Ci19Ci0KIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUg
bnVtYmVyIG9mIGxvY2tzIHRoYXQgd2VyZSBkcm9wcGVkLgogdW5zaWduZWQgSlNMb2NrOjpkcm9w
QWxsTG9ja3MoRHJvcEFsbExvY2tzKiBkcm9wcGVyKQogewpAQCAtMjg1LDYgKzI5MCw4IEBAIEpT
TG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoVk0qIHZtKQogICAgICAgICByZXR1cm47
CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nTG9jaygpIHx8ICFtX3ZtLT5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAg
ICAgbV9kcm9wcGVkTG9ja0NvdW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrcyh0aGlz
KTsKKyAgICBWTSogcHJldmlvdXNWTUluVExTID0gVk06OmV4Y2hhbmdlKG51bGxwdHIpOworICAg
IEFTU0VSVF9VTlVTRUQocHJldmlvdXNWTUluVExTLCBwcmV2aW91c1ZNSW5UTFMgPT0gbV92bS5n
ZXQoKSk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1N0YXRl
KiBleGVjKQpAQCAtMzAyLDYgKzMwOSw4IEBAIEpTTG9jazo6RHJvcEFsbExvY2tzOjp+RHJvcEFs
bExvY2tzKCkKICAgICBpZiAoIW1fdm0pCiAgICAgICAgIHJldHVybjsKICAgICBtX3ZtLT5hcGlM
b2NrKCkuZ3JhYkFsbExvY2tzKHRoaXMsIG1fZHJvcHBlZExvY2tDb3VudCk7CisgICAgVk0qIHBy
ZXZpb3VzVk1JblRMUyA9IFZNOjpleGNoYW5nZShtX3ZtLmdldCgpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHByZXZpb3VzVk1JblRMUywgcHJldmlvdXNWTUluVExTKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDBiMjdmZjYz
ZmU0ODE1YmYyNjNmYzY2Zjc4OTcxMGMzMmIwYzI1MDYuLjM5OTM0YTZiMTA5YTUzZjRlNzYwZDY0
OWRmMzgxODU5ZjllNjI4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5o
CkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBFeGVjU3RhdGU7CiBj
bGFzcyBWTTsKK2NsYXNzIEpTTG9jazsKIAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHByb3Rl
Y3QgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBsZWdhY3kgc2luZ2xlIAogLy8gc2hhcmVkIFZN
LgpAQCAtNjMsMzIgKzY0LDM0IEBAIGNsYXNzIEdsb2JhbEpTTG9jayB7CiAgICAgc3RhdGljIExv
Y2sgc19zaGFyZWRJbnN0YW5jZU11dGV4OwogfTsKIAorLy8gT25seSBKU0xvY2tIb2xkZXIgY2Fu
IHRha2UgYSBKU0xvY2suCiBjbGFzcyBKU0xvY2tIb2xkZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEpTTG9ja0hvbGRlcik7CisgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04oSlNM
b2NrSG9sZGVyKTsKIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIo
Vk0qKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoVk0mKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0xvY2tIb2xkZXIoRXhlY1N0YXRlKik7CiAKKyAgICBlbnVtIExvY2tJ
ZlZNSXNMaXZlVGFnIHsgTG9ja0lmVk1Jc0xpdmUgfTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U0xvY2tIb2xkZXIoTG9ja0lmVk1Jc0xpdmVUYWcsIEpTTG9jayYpOworCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgfkpTTG9ja0hvbGRlcigpOwogCisgICAgVk0qIHZtKCkgeyByZXR1cm4gbV92bS5n
ZXQoKTsgfQorCiBwcml2YXRlOgogICAgIFJlZlB0cjxWTT4gbV92bTsKKyAgICBWTSogbV9wcmV2
aW91c1ZNSW5UTFMgeyBudWxscHRyIH07CiB9OwogCiBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8SlNMb2NrPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNM
b2NrKTsKKyAgICBmcmllbmQgY2xhc3MgSlNMb2NrSG9sZGVyOwogcHVibGljOgogICAgIEpTTG9j
ayhWTSopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0xvY2soKTsKIAotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgbG9jaygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2Nr
KCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwotICAgIHN0YXRpYyB2b2lk
IHVubG9jayhFeGVjU3RhdGUqKTsKLSAgICBzdGF0aWMgdm9pZCBsb2NrKFZNJik7Ci0gICAgc3Rh
dGljIHZvaWQgdW5sb2NrKFZNJik7Ci0KICAgICBWTSogdm0oKSB7IHJldHVybiBtX3ZtOyB9CiAK
ICAgICBPcHRpb25hbDxSZWZQdHI8VGhyZWFkPj4gb3duZXJUaHJlYWQoKSBjb25zdApAQCAtMTI2
LDYgKzEyOSwxMCBAQCBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SlNMb2NrPiB7CiAgICAgYm9vbCBpc1dlYlRocmVhZEF3YXJlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1dlYlRocmVhZEF3YXJlOyB9CiAKIHByaXZhdGU6CisgICAgLy8gVGhpcyBpcyBjYWxsZWQgb25s
eSBmcm9tIEpTTG9ja0hvbGRlciBvciBEcm9wQWxsTG9ja3MuCisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBsb2NrKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2soKTsKKwog
ICAgIHZvaWQgbG9jayhpbnRwdHJfdCBsb2NrQ291bnQpOwogICAgIHZvaWQgdW5sb2NrKGludHB0
cl90IHVubG9ja0NvdW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDJhMGMwNmM1ZDIzNjU4ZmRmY2NhNTMyYTY2NDBmZmMy
ZGFkY2FhM2MuLmU2MGMzNDllZTAzY2UyMzVkMjg2MzlhM2E5ZTQxMjBkNmJlOWVhNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKQEAg
LTI5NywxNCArMjk3LDEyIEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6OnRpbWVyRGlkRmlyZSgpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8SlNMb2NrPiBsb2NrKG1fYXBp
TG9jay5nZXQoKSk7Ci0gICAgUmVmUHRyPFZNPiB2bSA9IG1fYXBpTG9jay0+dm0oKTsKLSAgICBp
ZiAoIXZtKSB7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihKU0xvY2tIb2xkZXI6OkxvY2tJZlZN
SXNMaXZlLCBtX2FwaUxvY2suZ2V0KCkpOworICAgIGlmICghbG9ja2VyLnZtKCkpIHsKICAgICAg
ICAgLy8gVGhlIFZNIGhhcyBiZWVuIGRlc3Ryb3llZCwgc28gd2Ugc2hvdWxkIGp1c3QgZ2l2ZSB1
cC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIGRvV29yaygqdm0pOworICAgIGRvV29y
aygqbG9ja2VyLnZtKCkpOwogfQogCiBKU1J1bkxvb3BUaW1lcjo6SlNSdW5Mb29wVGltZXIoVk0m
IHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGFkYjVhOTEzNGQ4ZmJj
NDYzNjAyMWViMTlhZmFmNmUyNGY1NmEzZmEuLjA5MWNmYTk4MzVkNDEzMDdmM2ZhZmMyYzYxZGJk
N2UwZjY2MWI3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTEzNzks
NCArMTM3OSwxNiBAQCB2b2lkIFZNOjpzZXRDcmFzaE9uVk1DcmVhdGlvbihib29sIHNob3VsZENy
YXNoKQogICAgIHZtQ3JlYXRpb25TaG91bGRDcmFzaCA9IHNob3VsZENyYXNoOwogfQogCisKKyNp
ZiAhSEFWRShGQVNUX1RMUykKK1dURjo6VGhyZWFkU3BlY2lmaWNLZXkgVk06OnRsc0tleSB7IFdU
Rjo6SW52YWxpZFRocmVhZFNwZWNpZmljS2V5IH07CisjZW5kaWYKKwordm9pZCBWTTo6aW5pdGlh
bGl6ZVRMUygpCit7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgV1RGOjp0aHJlYWRTcGVjaWZp
Y0tleUNyZWF0ZSgmdGxzS2V5LCBudWxscHRyKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDM5YmVhNWRlYzcwNDk0MmZj
MjVkYjliN2M5ZTg3ZWJlYjgxNmZmZWQuLjY3NmQ5YzJjMTYyNjk3OTZiNTgyNjgyZWZmNDFiODll
YjU3ZjU5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzE0LDYgKzMxNCwz
OSBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBE
b3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFdlYWtSYW5kb20mIHJhbmRvbSgpIHsgcmV0
dXJuIG1fcmFuZG9tOyB9CiAgICAgSW50ZWdyaXR5OjpSYW5kb20mIGludGVncml0eVJhbmRvbSgp
IHsgcmV0dXJuIG1faW50ZWdyaXR5UmFuZG9tOyB9CiAKKyNpZiBIQVZFKEZBU1RfVExTKQorICAg
IHN0YXRpYyBjb25zdGV4cHIgcHRocmVhZF9rZXlfdCB0bHNLZXkgPSBXVEZfVk1fS0VZOworCisg
ICAgc3RhdGljIFZNKiBleGNoYW5nZShWTSogdm0pCisgICAgeworICAgICAgICBWTSogcHJldmlv
dXMgPSBjdXJyZW50KCk7CisgICAgICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdCh0bHNL
ZXksIGJpdHdpc2VfY2FzdDx2b2lkKj4odm0pKTsKKyAgICAgICAgcmV0dXJuIHByZXZpb3VzOwor
ICAgIH0KKworICAgIHN0YXRpYyBWTSogY3VycmVudCgpCisgICAgeworICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFZNKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KHRsc0tleSkpOwor
ICAgIH0KKyNlbHNlCisgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWNLZXkgdGxzS2V5Owor
CisgICAgc3RhdGljIFZNKiBleGNoYW5nZShWTSogdm0pCisgICAgeworICAgICAgICBBU1NFUlQo
dGxzS2V5ICE9IFdURjo6SW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKKyAgICAgICAgVk0qIHBy
ZXZpb3VzID0gY3VycmVudCgpOworICAgICAgICBXVEY6OnRocmVhZFNwZWNpZmljU2V0KHRsc0tl
eSwgdm0pOworICAgICAgICByZXR1cm4gcHJldmlvdXM7CisgICAgfQorCisgICAgc3RhdGljIFZN
KiBjdXJyZW50KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0bHNLZXkgIT0gV1RGOjpJbnZhbGlk
VGhyZWFkU3BlY2lmaWNLZXkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFZNKj4oV1RG
Ojp0aHJlYWRTcGVjaWZpY0dldCh0bHNLZXkpKTsKKyAgICB9CisjZW5kaWYKKyAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplVExTKCk7CisKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbmV4dElEKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaCBiL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RUTFMuaAppbmRleCBmZTFjZGQ5Njk4N2Q0OTA2MjM0MTQ0NTQ0YzBiNWIxYjcxZTI3Yjhk
Li43YWMwYTgwMjJhYWFhMjYzYzYzOWJjM2RlMWQ5MTY1ZmYyZTIxYzQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdFRMUy5oCkBA
IC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXVEYgewogI2RlZmluZSBXVEZfVEhSRUFEX0RBVEFf
S0VZIFdURl9GQVNUX1RMU19LRVkwCiAjZGVmaW5lIFdURl9XQVNNX0NPTlRFWFRfS0VZIFdURl9G
QVNUX1RMU19LRVkxCiAjZGVmaW5lIFdURl9URVNUSU5HX0tFWSBXVEZfV0FTTV9DT05URVhUX0tF
WSAvLyBTbyBmYXIsIHRoaXMga2V5IGlzIG9ubHkgdXNlZCBpbiBwbGFjZXMgdGhhdCBkb24ndCBk
byBXZWJBc3NlbWJseSwgc28gaXQncyBPSyB0aGF0IHRoZXkgc2hhcmUgdGhlIHNhbWUga2V5Lgot
I2RlZmluZSBXVEZfR0NfVExDX0tFWSBXVEZfRkFTVF9UTFNfS0VZMgorI2RlZmluZSBXVEZfVk1f
S0VZIFdURl9GQVNUX1RMU19LRVkyCiAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogaW5saW5l
IHVuc2lnbmVkIGZhc3RUTFNPZmZzZXRGb3JLZXkodW5zaWduZWQgbG9uZyBzbG90KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRl
eCA4NWU1ZTlmMGQwYTc3NmIxNGE0MDQzNmM4YzhjYTM4NzYyZGFmNzNmLi41YTljY2Y0NDM5MjA2
ZGM3NjBkNzExYzNlYWYwNjE3NjYyYzJkNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIEpT
VmFsdWUgdG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBJREJLZXkqIGtleSkKICAgICB9CiAKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIExv
Y2tlcjxKU0xvY2s+IGxvY2tlcih2bS5hcGlMb2NrKCkpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IHN3aXRjaCAoa2V5LT50eXBlKCkpIHsKQEAgLTM4NiwxMCArMzg2LDkgQEAgc3RhdGljIEpTVmFs
dWUgZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpT
R2xvYmFsT2JqZWMKIAogICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKFZlY3Rvcjx1aW50OF90PihkYXRhKSk7CiAKLSAg
ICBzdGF0ZS52bSgpLmFwaUxvY2soKS5sb2NrKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihn
bG9iYWxPYmplY3Qudm0oKSk7CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IG1lc3Nh
Z2VQb3J0czsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxp
emUoc3RhdGUsICZnbG9iYWxPYmplY3QsIG1lc3NhZ2VQb3J0cywgdmFsdWUuYmxvYlVSTHMoKSwg
dmFsdWUuYmxvYkZpbGVQYXRocygpLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpOb25UaHJvd2lu
Zyk7Ci0gICAgc3RhdGUudm0oKS5hcGlMb2NrKCkudW5sb2NrKCk7CiAKICAgICByZXR1cm4gcmVz
dWx0OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>