<?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>220964</bug_id>
          
          <creation_ts>2021-01-25 21:10:27 -0800</creation_ts>
          <short_desc>[GPUP][MSE] A video element does not fire “canplaythrough” event if SourceBuffer.abort() is called</short_desc>
          <delta_ts>2021-04-09 14:23:43 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219805</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221143</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221369</see_also>
          <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="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>aboya</cc>
    
    <cc>calvaris</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1722392</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-25 21:10:27 -0800</bug_when>
    <thetext>[GPUP][MSE] A video element does not fire “canplaythrough” event if SourceBuffer.abort() is called</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722394</commentid>
    <comment_count>1</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-25 21:14:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/72391066&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722398</commentid>
    <comment_count>2</comment_count>
      <attachid>418370</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-25 21:32:50 -0800</bug_when>
    <thetext>Created attachment 418370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722401</commentid>
    <comment_count>3</comment_count>
      <attachid>418372</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-25 22:09:50 -0800</bug_when>
    <thetext>Created attachment 418372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722646</commentid>
    <comment_count>4</comment_count>
      <attachid>418459</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-26 12:00:32 -0800</bug_when>
    <thetext>Created attachment 418459
Fix a test timeout on mac-wk1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722700</commentid>
    <comment_count>5</comment_count>
      <attachid>418459</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-26 13:28:28 -0800</bug_when>
    <thetext>Comment on attachment 418459
Fix a test timeout on mac-wk1

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:309
&gt; +    while (!m_initializationSegmentIsHandledSemaphore-&gt;waitFor(100_ms)) {

Where does the 100ms duty cycle come from? Normally with a magic number like this we like a comment explaining how we chose the number. Often we use a named constant to give us a place to write that comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722736</commentid>
    <comment_count>6</comment_count>
      <attachid>418459</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-26 14:56:01 -0800</bug_when>
    <thetext>Comment on attachment 418459
Fix a test timeout on mac-wk1

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:309
&gt;&gt; +    while (!m_initializationSegmentIsHandledSemaphore-&gt;waitFor(100_ms)) {
&gt; 
&gt; Where does the 100ms duty cycle come from? Normally with a magic number like this we like a comment explaining how we chose the number. Often we use a named constant to give us a place to write that comment.

To be honest, 100ms is an arbitrary value. I chose it because it is not too short, so it is good for efficiency. And it is not too long so that SourceBufferPrivateAVFObjC::abort() won&apos;t take a long time to complete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722741</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-26 14:59:53 -0800</bug_when>
    <thetext>(In reply to Peng Liu from comment #6)
&gt; I chose it because it is not too
&gt; short, so it is good for efficiency. And it is not too long so that
&gt; SourceBufferPrivateAVFObjC::abort() won&apos;t take a long time to complete.

This is the comment. Maybe tweak the wording.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722743</commentid>
    <comment_count>8</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-26 15:03:22 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; (In reply to Peng Liu from comment #6)
&gt; &gt; I chose it because it is not too
&gt; &gt; short, so it is good for efficiency. And it is not too long so that
&gt; &gt; SourceBufferPrivateAVFObjC::abort() won&apos;t take a long time to complete.
&gt; 
&gt; This is the comment. Maybe tweak the wording.

Got it, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722806</commentid>
    <comment_count>9</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-26 19:50:51 -0800</bug_when>
    <thetext>After a discussion with Jer, we decide to refactor the current implementation of SourceBufferPrivateAVFObjC, SourceBufferParserAVFObjC and SourceBufferParserWebM to get rid of the semaphore (initializationSegmentIsHandledSemaphore).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722809</commentid>
    <comment_count>10</comment_count>
      <attachid>418498</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-26 20:03:15 -0800</bug_when>
    <thetext>Created attachment 418498
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723287</commentid>
    <comment_count>11</comment_count>
      <attachid>418615</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-27 21:24:56 -0800</bug_when>
    <thetext>Created attachment 418615
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723299</commentid>
    <comment_count>12</comment_count>
      <attachid>418622</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-27 22:42:12 -0800</bug_when>
    <thetext>Created attachment 418622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723300</commentid>
    <comment_count>13</comment_count>
      <attachid>418623</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-27 22:44:02 -0800</bug_when>
    <thetext>Created attachment 418623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723424</commentid>
    <comment_count>14</comment_count>
      <attachid>418623</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-01-28 10:53:43 -0800</bug_when>
    <thetext>Comment on attachment 418623
Patch

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

r=me, with nit:

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:406
&gt; +            for (auto trackIdMediaSamplePair : m_mediaSamples) {

This...

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:415
&gt; +            m_mediaSamples.clear();

...and this could probably be merged together into something more like:

auto samples = WTFMove(m_mediaSamples);
for (auto trackIdMediaSamplePair : samples) {

And I know this isn&apos;t an issue for this particular code, but insulates m_mediaSamples from being modified while iterating in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723426</commentid>
    <comment_count>15</comment_count>
      <attachid>418623</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-28 11:01:12 -0800</bug_when>
    <thetext>Comment on attachment 418623
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:406
&gt;&gt; +            for (auto trackIdMediaSamplePair : m_mediaSamples) {
&gt; 
&gt; This...

Writing auto&amp; instead of auto should make the code slight more efficient with no other repercussions..

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:408
&gt; +                auto trackId = trackIdMediaSamplePair.first;
&gt; +                auto mediaSample = trackIdMediaSamplePair.second;

Same here for the same reasons. Unless there is some risk of m_mediaSamples being mutated while iterating. And if so, then a great mitigation is what Jer offered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723451</commentid>
    <comment_count>16</comment_count>
      <attachid>418661</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-28 12:22:47 -0800</bug_when>
    <thetext>Created attachment 418661
Revise the patch based on Jer and Darin&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723464</commentid>
    <comment_count>17</comment_count>
      <attachid>418661</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-28 12:57:35 -0800</bug_when>
    <thetext>Comment on attachment 418661
Revise the patch based on Jer and Darin&apos;s comments

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:406
&gt; +            auto mediaSamples = WTFMove(m_mediaSamples);

I know that Jer offered this sample code, and I didn’t comment then. But I since realized that this is not the correct idiom. The correct idiom is:

    auto mediaSamples = std::exchange(m_mediaSamples, { });

Using WTFMove allows the code to be optimized by moving, but it can also be copying as long as the source object, m_mediaSamples, is still safely destructible. Using std::exchange explicitly sets m_mediaSamples to an empty value, and that is the semantic we want here. Any time we are relying on actually looking at the value of something after moving from it (as opposed to just overwriting it or destroying it) we should use the std::exchange idiom. It should be roughly the same efficiency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723469</commentid>
    <comment_count>18</comment_count>
      <attachid>418661</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-28 13:06:43 -0800</bug_when>
    <thetext>Comment on attachment 418661
Revise the patch based on Jer and Darin&apos;s comments

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:406
&gt;&gt; +            auto mediaSamples = WTFMove(m_mediaSamples);
&gt; 
&gt; I know that Jer offered this sample code, and I didn’t comment then. But I since realized that this is not the correct idiom. The correct idiom is:
&gt; 
&gt;     auto mediaSamples = std::exchange(m_mediaSamples, { });
&gt; 
&gt; Using WTFMove allows the code to be optimized by moving, but it can also be copying as long as the source object, m_mediaSamples, is still safely destructible. Using std::exchange explicitly sets m_mediaSamples to an empty value, and that is the semantic we want here. Any time we are relying on actually looking at the value of something after moving from it (as opposed to just overwriting it or destroying it) we should use the std::exchange idiom. It should be roughly the same efficiency.

Thanks for the detailed explanation!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723475</commentid>
    <comment_count>19</comment_count>
      <attachid>418664</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-28 13:13:28 -0800</bug_when>
    <thetext>Created attachment 418664
Revise the patch based Darin&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723538</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-28 16:19:38 -0800</bug_when>
    <thetext>Committed r272039: &lt;https://trac.webkit.org/changeset/272039&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418664.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418370</attachid>
            <date>2021-01-25 21:32:50 -0800</date>
            <delta_ts>2021-01-25 22:09:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220964-20210125213250.patch</filename>
            <type>text/plain</type>
            <size>8689</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ZDg0YTJjNWM3Njkz
YjZkYWU2ZmQ1MTdiN2M0NjRmZGY2ODY5Zi4uZjViOTkyYzgwZDExYzkzOGFjZDE4ZDRjZWRjYjU3
ZWVlNmM1OGUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAxLTI1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHdlIHNpZ25hbCB0aGUgYGluaXRpYWxpemF0
aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZWAgd2hlbiB3ZSByZXNldCBhCisgICAgICAgIHNv
dXJjZSBidWZmZXIgcGFyc2VyLiBUaGlzIGxlYWRzIHRvIHRoZSBwcm9ibGVtIHRoYXQgc29tZSBt
ZWRpYSBzYW1wbGVzIGFyZSBmZWQgaW50bworICAgICAgICBgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakNgIGJlZm9yZSB0aGUgdmlkZW8gdHJhY2sgaXMgZW5hYmxlZCBhbmQgc29tZSBzYW1wbGVz
IHdpbGwKKyAgICAgICAgYmUgZHJvcHBlZCBiZWNhdXNlIG9mIHRoYXQuIEFzIGEgcmVzdWx0LCBN
ZWRpYVNvdXJjZTo6bW9uaXRvclNvdXJjZUJ1ZmZlcnMoKSB3b24ndAorICAgICAgICB0cmlnZ2Vy
IHRoZSBtZWRpYSBlbGVtZW50IHRvIGNoYW5nZSBpdHMgcmVhZHkgc3RhdGUgdG8gYmUgYSB2YWx1
ZSBncmVhdGVyIHRoYW4KKyAgICAgICAgYEhhdmVNZXRhRGF0YWAsIGFuZCB0aGUgbWVkaWEgZWxl
bWVudCB3b24ndCBmaXJlIGBjYW5wbGF5dGhyb3VnaGAgZXZlbnQuCisKKyAgICAgICAgVGVzdDog
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXIt
YWJvcnQuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisKIDIw
MjEtMDEtMjUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UENNOiBVc2UgZGlmZmVyZW50IHdlbGwta25vd24gbG9jYXRpb25zIGZvciB0cmlnZ2VyaW5nIGFu
ZCByZXBvcnRpbmcgYXR0cmlidXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGJlYzRlOWQ2YzBhZTZlNmEzODNhMDIy
ZTFlYTFhNWQ5ZWEzMzUzMWQuLjY3ZTAyMjIyOTUyYjA0ZDFlMjMxN2U5YTc3ZmQzOWFjOWYzMjJk
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQpAQCAtMjQyLDggKzI0Miw2IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCiB7CiAgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0g
dHJ1ZTsKICAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50
ID0gdHJ1ZTsKLQotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3Jl
LT5zaWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppbnZhbGlk
YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggNmNlOTU4ZjdhNDZl
YzgxZTk0Y2ZiOTIxMGFmODk2ZjNkOTUzN2UwOS4uNGU4NTE3YTJjZGVjZDc2MTcyYzk2MzNjN2Rm
YjQzZWJjOTgzNmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTY4
Niw4ICs2ODYsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3Rh
dGUoKQogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsKICAgICBtX2luaXRp
YWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CiAgICAgbV9jdXJyZW50QmxvY2su
cmVzZXQoKTsKLQotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3Jl
LT5zaWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppbnZhbGlkYXRl
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA1ZjM4ZGIyN2E2OGI4YjM5MjBlYmM5YzhhZTY2YTI0NjFmZDZmZjgxLi42ZTFk
OWFkYWUxMWVlMDczYmE1ZjEyOGZmZGE2NzEzNzUzZWMxYWYyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjEtMDEtMjUgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAg
ICBbR1BVUF1bTVNFXSBBIHZpZGVvIGVsZW1lbnQgZG9lcyBub3QgZmlyZSDigJxjYW5wbGF5dGhy
b3VnaOKAnSBldmVudCBpZiBTb3VyY2VCdWZmZXIuYWJvcnQoKSBpcyBjYWxsZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNl
LXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVy
LWFmdGVyLWFib3J0Lmh0bWw6IEFkZGVkLgorCiAyMDIxLTAxLTI1ICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogVXNlIGRpZmZlcmVudCB3ZWxsLWtu
b3duIGxvY2F0aW9ucyBmb3IgdHJpZ2dlcmluZyBhbmQgcmVwb3J0aW5nIGF0dHJpYnV0aW9uCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3OWE4MTRiYjAyOWMy
NzMzYjljNmNhYjg0ZDI1NGJkODAyMDYzNzdlLi4zNjM3N2NjMjFiN2VjNTZiODA4MGY2N2Y0NGI3
YjliM2VkYTZkZTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTM0Niw3ICszNDYsNiBAQCBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXRpbWUtY29uc3RhbnQu
aHRtbCBbIFRpbWVvdXQgXQogbWVkaWEvbWVkaWEtY29udHJvbGxlci10aW1lLmh0bWwgWyBUaW1l
b3V0IF0KIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItdW5wYXVzZS5odG1sIFsgVGltZW91dCBdCiBt
ZWRpYS9tZWRpYS1oaWdoZXItcHJpby1hdWRpby1zdHJlYW0uaHRtbCBbIFNraXAgXQotbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwgWyBGYWlsdXJlIF0KIG1lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1pbml0LWluc2lkZS1zZWdtZW50Lmh0bWwgWyBG
YWlsdXJlIF0KIG1lZGlhL21lZGlhLXZvbHVtZS1zbGlkZXItcmVuZGVyZWQtYmVsb3cuaHRtbCBb
IFNraXAgXQogbWVkaWEvbWVkaWEtdm9sdW1lLXNsaWRlci1yZW5kZXJlZC1ub3JtYWwuaHRtbCBb
IFNraXAgXQpAQCAtNTE5LDcgKzUxOCw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWFjYXB0dXJlLXN0cmVhbXMgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWJ1ZmZlcmVkLmh0bWwgWyBGYWlsdXJl
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLWNoYW5nZXR5cGUuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtZHVyYXRpb24tYm91bmRhcnljb25kaXRp
b25zLmh0bWwgWyBGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLXBsYXkuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVtb3ZlLmh0bWwg
WyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbXN0LWNvbnRlbnQt
aGludC9pZGxoYXJuZXNzLndpbmRvdy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21zdC1jb250ZW50LWhpbnQvTWVkaWFTdHJlYW1UcmFjay1jb250ZW50SGlu
dC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBw
ZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQxMTM3M2M3
YzE1NzYwMzFkNjI4ZjcyYWEwZTE1Yjc4MjAwMmVkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVy
LWFmdGVyLWFib3J0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3RzIHRo
ZSBhYmlsaXR5IG9mIHRoZSBTb3VyY2VCdWZmZXIgdG8gcmVzZXQgdGhlIHBhcnNlciBhZnRlciBh
biBhYm9ydCgpLiBBIFNvdXJjZUJ1ZmZlciBpbiB0aGlzIHN0YXRlIHNob3VsZCBiZSBhYmxlIHRv
IGFjY2VwdCBhIG5ldyBpbml0aWFsaXphdGlvbiBzZWdtZW50IGFuZCBhIG5ldyBtZWRpYSBzZWdt
ZW50LCBhbmQgdGhlIHZpZGVvIGVsZW1lbnQgc2hvdWxkIGZpcmUgImNhbnBsYXl0aHJvdWdoIiBl
dmVudC4KKworUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VW
RU5UKHNvdXJjZW9wZW4pCitSVU4oc291cmNlLmR1cmF0aW9uID0gbG9hZGVyLmR1cmF0aW9uKCkp
CitSVU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlwZSgp
KSkKK1JVTihzb3VyY2VCdWZmZXIuYWJvcnQoKSkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVm
ZmVyKGxvYWRlci5pbml0U2VnbWVudCgpKSkKK0VWRU5UKHVwZGF0ZSkKK0FwcGVuZCBhIG1lZGlh
IHNlZ21lbnQuCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIubWVkaWFTZWdt
ZW50KDApKSkKK0VWRU5UKHVwZGF0ZSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRU5EIE9GIFRF
U1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFi
b3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU5YjY2YmYyYmEyN2QzYzlmMjljNzlhODQxYWVjZGE5MWIy
ZjhkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0Lmh0bWwKQEAgLTAsMCAr
MSw1OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5tZWRp
YS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0PC90aXRsZT4KKyAgICA8c2Ny
aXB0IHNyYz0ibWVkaWEtc291cmNlLWxvYWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIGxv
YWRlcjsKKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisKKyAgICBmdW5j
dGlvbiBsb2FkZXJQcm9taXNlKGxvYWRlcikgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbG9hZGVyLm9ubG9hZCA9IHJlc29s
dmU7CisgICAgICAgICAgICBsb2FkZXIub25lcnJvciA9IHJlamVjdDsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9
PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAg
ICAgICAgICBsb2FkZXIgPSBuZXcgTWVkaWFTb3VyY2VMb2FkZXIoJ2NvbnRlbnQvdGVzdC12cDkt
bWFuaWZlc3QuanNvbicpOworICAgICAgICAgICAgYXdhaXQgbG9hZGVyUHJvbWlzZShsb2FkZXIp
OworCisgICAgICAgICAgICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgICAg
IHJ1bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7CisgICAgICAg
ICAgICBhd2FpdCB3YWl0Rm9yKHNvdXJjZSwgJ3NvdXJjZW9wZW4nKTsKKyAgICAgICAgICAgIHdh
aXRGb3JFdmVudEFuZEZhaWwoJ2Vycm9yJyk7CisKKyAgICAgICAgICAgIHJ1bignc291cmNlLmR1
cmF0aW9uID0gbG9hZGVyLmR1cmF0aW9uKCknKTsKKyAgICAgICAgICAgIHJ1bignc291cmNlQnVm
ZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlwZSgpKScpOworCisgICAgICAg
ICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hYm9ydCgpJyk7CisKKyAgICAgICAgICAgIHJ1bignc291
cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIuaW5pdFNlZ21lbnQoKSknKTsKKyAgICAgICAg
ICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlQnVmZmVyLCAndXBkYXRlJyk7CisKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgnQXBwZW5kIGEgbWVkaWEgc2VnbWVudC4nKQorICAgICAgICAgICAgcnVu
KCdzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGxvYWRlci5tZWRpYVNlZ21lbnQoMCkpJyk7Cisg
ICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZScpOworCisgICAg
ICAgICAgICBmYWlsVGVzdEluKDIwMDApOworCisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKHZp
ZGVvLCAnY2FucGxheXRocm91Z2gnKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZmFpbFRlc3QoYENhdWdodCBleGNlcHRpb246ICIk
e2V9ImApOworICAgICAgICB9CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgICA8ZGl2PgorICAgICAgICBUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IG9mIHRoZSBTb3Vy
Y2VCdWZmZXIgdG8gcmVzZXQgdGhlIHBhcnNlciBhZnRlciBhbiBhYm9ydCgpLiBBIFNvdXJjZUJ1
ZmZlciBpbiB0aGlzIHN0YXRlIHNob3VsZCBiZSBhYmxlIHRvIGFjY2VwdAorICAgICAgICBhIG5l
dyBpbml0aWFsaXphdGlvbiBzZWdtZW50IGFuZCBhIG5ldyBtZWRpYSBzZWdtZW50LCBhbmQgdGhl
IHZpZGVvIGVsZW1lbnQgc2hvdWxkIGZpcmUgImNhbnBsYXl0aHJvdWdoIiBldmVudC4KKyAgICA8
L2Rpdj4KKyAgICA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418372</attachid>
            <date>2021-01-25 22:09:50 -0800</date>
            <delta_ts>2021-01-26 12:00:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220964-20210125220949.patch</filename>
            <type>text/plain</type>
            <size>9630</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ZDg0YTJjNWM3Njkz
YjZkYWU2ZmQ1MTdiN2M0NjRmZGY2ODY5Zi4uZjViOTkyYzgwZDExYzkzOGFjZDE4ZDRjZWRjYjU3
ZWVlNmM1OGUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAxLTI1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHdlIHNpZ25hbCB0aGUgYGluaXRpYWxpemF0
aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZWAgd2hlbiB3ZSByZXNldCBhCisgICAgICAgIHNv
dXJjZSBidWZmZXIgcGFyc2VyLiBUaGlzIGxlYWRzIHRvIHRoZSBwcm9ibGVtIHRoYXQgc29tZSBt
ZWRpYSBzYW1wbGVzIGFyZSBmZWQgaW50bworICAgICAgICBgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakNgIGJlZm9yZSB0aGUgdmlkZW8gdHJhY2sgaXMgZW5hYmxlZCBhbmQgc29tZSBzYW1wbGVz
IHdpbGwKKyAgICAgICAgYmUgZHJvcHBlZCBiZWNhdXNlIG9mIHRoYXQuIEFzIGEgcmVzdWx0LCBN
ZWRpYVNvdXJjZTo6bW9uaXRvclNvdXJjZUJ1ZmZlcnMoKSB3b24ndAorICAgICAgICB0cmlnZ2Vy
IHRoZSBtZWRpYSBlbGVtZW50IHRvIGNoYW5nZSBpdHMgcmVhZHkgc3RhdGUgdG8gYmUgYSB2YWx1
ZSBncmVhdGVyIHRoYW4KKyAgICAgICAgYEhhdmVNZXRhRGF0YWAsIGFuZCB0aGUgbWVkaWEgZWxl
bWVudCB3b24ndCBmaXJlIGBjYW5wbGF5dGhyb3VnaGAgZXZlbnQuCisKKyAgICAgICAgVGVzdDog
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXIt
YWJvcnQuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisKIDIw
MjEtMDEtMjUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UENNOiBVc2UgZGlmZmVyZW50IHdlbGwta25vd24gbG9jYXRpb25zIGZvciB0cmlnZ2VyaW5nIGFu
ZCByZXBvcnRpbmcgYXR0cmlidXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGJlYzRlOWQ2YzBhZTZlNmEzODNhMDIy
ZTFlYTFhNWQ5ZWEzMzUzMWQuLjY3ZTAyMjIyOTUyYjA0ZDFlMjMxN2U5YTc3ZmQzOWFjOWYzMjJk
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQpAQCAtMjQyLDggKzI0Miw2IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCiB7CiAgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0g
dHJ1ZTsKICAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50
ID0gdHJ1ZTsKLQotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3Jl
LT5zaWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppbnZhbGlk
YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggNmNlOTU4ZjdhNDZl
YzgxZTk0Y2ZiOTIxMGFmODk2ZjNkOTUzN2UwOS4uNGU4NTE3YTJjZGVjZDc2MTcyYzk2MzNjN2Rm
YjQzZWJjOTgzNmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTY4
Niw4ICs2ODYsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3Rh
dGUoKQogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsKICAgICBtX2luaXRp
YWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CiAgICAgbV9jdXJyZW50QmxvY2su
cmVzZXQoKTsKLQotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3Jl
LT5zaWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppbnZhbGlkYXRl
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA1ZjM4ZGIyN2E2OGI4YjM5MjBlYmM5YzhhZTY2YTI0NjFmZDZmZjgxLi4wODdi
NGQ1MDFjNWRkNDNiMTk3MmVhYzFkOWE5YjI3OGQ5ZjZlNjA0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjEtMDEtMjUgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAg
ICBbR1BVUF1bTVNFXSBBIHZpZGVvIGVsZW1lbnQgZG9lcyBub3QgZmlyZSDigJxjYW5wbGF5dGhy
b3VnaOKAnSBldmVudCBpZiBTb3VyY2VCdWZmZXIuYWJvcnQoKSBpcyBjYWxsZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNl
LXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVy
LWFmdGVyLWFib3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIxLTAxLTI1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFBDTTogVXNlIGRpZmZlcmVudCB3ZWxsLWtub3duIGxvY2F0aW9ucyBm
b3IgdHJpZ2dlcmluZyBhbmQgcmVwb3J0aW5nIGF0dHJpYnV0aW9uCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3OWE4MTRiYjAyOWMyNzMzYjljNmNhYjg0ZDI1
NGJkODAyMDYzNzdlLi4zNjM3N2NjMjFiN2VjNTZiODA4MGY2N2Y0NGI3YjliM2VkYTZkZTcwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM0Niw3ICszNDYs
NiBAQCBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXRpbWUtY29uc3RhbnQuaHRtbCBbIFRpbWVvdXQg
XQogbWVkaWEvbWVkaWEtY29udHJvbGxlci10aW1lLmh0bWwgWyBUaW1lb3V0IF0KIG1lZGlhL21l
ZGlhLWNvbnRyb2xsZXItdW5wYXVzZS5odG1sIFsgVGltZW91dCBdCiBtZWRpYS9tZWRpYS1oaWdo
ZXItcHJpby1hdWRpby1zdHJlYW0uaHRtbCBbIFNraXAgXQotbWVkaWEvbWVkaWEtc291cmNlL21l
ZGlhLXNvdXJjZS13ZWJtLmh0bWwgWyBGYWlsdXJlIF0KIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2Utd2VibS1pbml0LWluc2lkZS1zZWdtZW50Lmh0bWwgWyBGYWlsdXJlIF0KIG1lZGlh
L21lZGlhLXZvbHVtZS1zbGlkZXItcmVuZGVyZWQtYmVsb3cuaHRtbCBbIFNraXAgXQogbWVkaWEv
bWVkaWEtdm9sdW1lLXNsaWRlci1yZW5kZXJlZC1ub3JtYWwuaHRtbCBbIFNraXAgXQpAQCAtNTE5
LDcgKzUxOCw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJl
LXN0cmVhbXMgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLWJ1ZmZlcmVkLmh0bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNoYW5nZXR5cGUu
aHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtZHVyYXRpb24tYm91bmRhcnljb25kaXRpb25zLmh0bWwgWyBGYWls
dXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLXBsYXkuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVtb3ZlLmh0bWwgWyBGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbXN0LWNvbnRlbnQtaGludC9pZGxoYXJuZXNz
LndpbmRvdy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21z
dC1jb250ZW50LWhpbnQvTWVkaWFTdHJlYW1UcmFjay1jb250ZW50SGludC5odG1sIFsgU2tpcCBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNl
LXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRl
ci1hYm9ydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQxMTM3M2M3YzE1NzYwMzFkNjI4Zjcy
YWEwZTE1Yjc4MjAwMmVkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IG9mIHRo
ZSBTb3VyY2VCdWZmZXIgdG8gcmVzZXQgdGhlIHBhcnNlciBhZnRlciBhbiBhYm9ydCgpLiBBIFNv
dXJjZUJ1ZmZlciBpbiB0aGlzIHN0YXRlIHNob3VsZCBiZSBhYmxlIHRvIGFjY2VwdCBhIG5ldyBp
bml0aWFsaXphdGlvbiBzZWdtZW50IGFuZCBhIG5ldyBtZWRpYSBzZWdtZW50LCBhbmQgdGhlIHZp
ZGVvIGVsZW1lbnQgc2hvdWxkIGZpcmUgImNhbnBsYXl0aHJvdWdoIiBldmVudC4KKworUlVOKHZp
ZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNvdXJjZW9wZW4p
CitSVU4oc291cmNlLmR1cmF0aW9uID0gbG9hZGVyLmR1cmF0aW9uKCkpCitSVU4oc291cmNlQnVm
ZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlwZSgpKSkKK1JVTihzb3VyY2VC
dWZmZXIuYWJvcnQoKSkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGxvYWRlci5pbml0
U2VnbWVudCgpKSkKK0VWRU5UKHVwZGF0ZSkKK0FwcGVuZCBhIG1lZGlhIHNlZ21lbnQuCitSVU4o
c291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIubWVkaWFTZWdtZW50KDApKSkKK0VWRU5U
KHVwZGF0ZSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVu
ZC1idWZmZXItYWZ0ZXItYWJvcnQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWU5YjY2YmYyYmEyN2QzYzlmMjljNzlhODQxYWVjZGE5MWIyZjhkMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2Vi
bS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5tZWRpYS1zb3VyY2Utd2VibS1h
cHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0ibWVkaWEt
c291cmNlLWxvYWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIGxvYWRlcjsKKyAgICB2YXIg
c291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisKKyAgICBmdW5jdGlvbiBsb2FkZXJQcm9t
aXNlKGxvYWRlcikgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4geworICAgICAgICAgICAgbG9hZGVyLm9ubG9hZCA9IHJlc29sdmU7CisgICAgICAgICAg
ICBsb2FkZXIub25lcnJvciA9IHJlamVjdDsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgICAgICBsb2FkZXIg
PSBuZXcgTWVkaWFTb3VyY2VMb2FkZXIoJ2NvbnRlbnQvdGVzdC12cDktbWFuaWZlc3QuanNvbicp
OworICAgICAgICAgICAgYXdhaXQgbG9hZGVyUHJvbWlzZShsb2FkZXIpOworCisgICAgICAgICAg
ICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgICAgIHJ1bigndmlkZW8uc3Jj
ID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7CisgICAgICAgICAgICBhd2FpdCB3YWl0
Rm9yKHNvdXJjZSwgJ3NvdXJjZW9wZW4nKTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudEFuZEZh
aWwoJ2Vycm9yJyk7CisKKyAgICAgICAgICAgIHJ1bignc291cmNlLmR1cmF0aW9uID0gbG9hZGVy
LmR1cmF0aW9uKCknKTsKKyAgICAgICAgICAgIHJ1bignc291cmNlQnVmZmVyID0gc291cmNlLmFk
ZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlwZSgpKScpOworCisgICAgICAgICAgICBydW4oJ3NvdXJj
ZUJ1ZmZlci5hYm9ydCgpJyk7CisKKyAgICAgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVu
ZEJ1ZmZlcihsb2FkZXIuaW5pdFNlZ21lbnQoKSknKTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRG
b3Ioc291cmNlQnVmZmVyLCAndXBkYXRlJyk7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgn
QXBwZW5kIGEgbWVkaWEgc2VnbWVudC4nKQorICAgICAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIu
YXBwZW5kQnVmZmVyKGxvYWRlci5tZWRpYVNlZ21lbnQoMCkpJyk7CisgICAgICAgICAgICBhd2Fp
dCB3YWl0Rm9yKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZScpOworCisgICAgICAgICAgICBmYWlsVGVz
dEluKDIwMDApOworCisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAnY2FucGxheXRo
cm91Z2gnKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgZmFpbFRlc3QoYENhdWdodCBleGNlcHRpb246ICIke2V9ImApOworICAgICAg
ICB9CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2Pgor
ICAgICAgICBUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IG9mIHRoZSBTb3VyY2VCdWZmZXIgdG8gcmVz
ZXQgdGhlIHBhcnNlciBhZnRlciBhbiBhYm9ydCgpLiBBIFNvdXJjZUJ1ZmZlciBpbiB0aGlzIHN0
YXRlIHNob3VsZCBiZSBhYmxlIHRvIGFjY2VwdAorICAgICAgICBhIG5ldyBpbml0aWFsaXphdGlv
biBzZWdtZW50IGFuZCBhIG5ldyBtZWRpYSBzZWdtZW50LCBhbmQgdGhlIHZpZGVvIGVsZW1lbnQg
c2hvdWxkIGZpcmUgImNhbnBsYXl0aHJvdWdoIiBldmVudC4KKyAgICA8L2Rpdj4KKyAgICA8dmlk
ZW8gY29udHJvbHM+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDkyNjc2YjRkNmUxOTY1OWYyNzAwNmE4MDJlNmI2MjZmZDQ5NGNlOTIuLjNkYTBiMzFkZjIzYTNj
YWVhOGI4YWRhYTJmM2NlMTJjY2MzNzllZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xODc0LDYgKzE4NzQsNyBAQCB3ZWJraXQub3JnL2IvMjE0MTU1
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRk
ZXItcAogCiAjIFRoZXNlIHRlc3QgcmVxdWlyZXMgc3lzdGVtIHBsYXRmb3JtIHN1cHBvcnQuCiBb
IENhdGFsaW5hIE1vamF2ZSBdIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS5o
dG1sIFsgU2tpcCBdCitbIENhdGFsaW5hIE1vamF2ZSBdIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0Lmh0bWwgWyBTa2lwIF0KIFsg
Q2F0YWxpbmEgTW9qYXZlIF0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWlu
aXQtaW5zaWRlLXNlZ21lbnQuaHRtbCBbIFNraXAgXQogWyBDYXRhbGluYSBNb2phdmUgXSBwbGF0
Zm9ybS9tYWMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvdnA5LWRlY29kaW5nSW5mby1zdy5odG1s
IFsgU2tpcCBdCiBbIENhdGFsaW5hIE1vamF2ZSBdIHBsYXRmb3JtL21hYy9tZWRpYS9tZWRpYS1z
b3VyY2UvaXMtdHlwZS1zdXBwb3J0ZWQtdnA5LWNvZGVjLWNoZWNrLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418459</attachid>
            <date>2021-01-26 12:00:32 -0800</date>
            <delta_ts>2021-01-26 20:03:13 -0800</delta_ts>
            <desc>Fix a test timeout on mac-wk1</desc>
            <filename>bug-220964-20210126120032.patch</filename>
            <type>text/plain</type>
            <size>10285</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ZDg0YTJjNWM3Njkz
YjZkYWU2ZmQ1MTdiN2M0NjRmZGY2ODY5Zi4uMzBiODBlYjIyNTUyNWM0MDdmNmM3YzcwMTAyMmRk
YzdiZTliNTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAxLTI1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHdlIHNpZ25hbCB0aGUgYGluaXRpYWxpemF0
aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZWAgd2hlbiB3ZSByZXNldCBhCisgICAgICAgIHNv
dXJjZSBidWZmZXIgcGFyc2VyLiBUaGlzIGxlYWRzIHRvIHRoZSBwcm9ibGVtIHRoYXQgc29tZSBt
ZWRpYSBzYW1wbGVzIGFyZSBmZWQgaW50bworICAgICAgICBgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakNgIGJlZm9yZSB0aGUgdmlkZW8gdHJhY2sgaXMgZW5hYmxlZCBhbmQgc29tZSBzYW1wbGVz
IHdpbGwKKyAgICAgICAgYmUgZHJvcHBlZCBiZWNhdXNlIG9mIHRoYXQuIEFzIGEgcmVzdWx0LCBN
ZWRpYVNvdXJjZTo6bW9uaXRvclNvdXJjZUJ1ZmZlcnMoKSB3b24ndAorICAgICAgICB0cmlnZ2Vy
IHRoZSBtZWRpYSBlbGVtZW50IHRvIGNoYW5nZSBpdHMgcmVhZHkgc3RhdGUgdG8gYmUgYSB2YWx1
ZSBncmVhdGVyIHRoYW4KKyAgICAgICAgYEhhdmVNZXRhRGF0YWAsIGFuZCB0aGUgbWVkaWEgZWxl
bWVudCB3b24ndCBmaXJlIGBjYW5wbGF5dGhyb3VnaGAgZXZlbnQuCisKKyAgICAgICAgVGVzdDog
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXIt
YWJvcnQuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOiBUaGlzIGNo
YW5nZSBpcyBuZWVkZWQgdG8KKyAgICAgICAgZml4IGEgbGF5b3V0IHRlc3QgdGltZW91dCBvbiBt
YWMtd2sxIChwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Zwcy1lbmNyeXB0ZWQt
ZXZlbnQuaHRtbCkuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
OjpyZXNldFBhcnNlclN0YXRlKToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisKIDIwMjEtMDEtMjUgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBVc2UgZGlmZmVyZW50
IHdlbGwta25vd24gbG9jYXRpb25zIGZvciB0cmlnZ2VyaW5nIGFuZCByZXBvcnRpbmcgYXR0cmli
dXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCmluZGV4IGJlYzRlOWQ2YzBhZTZlNmEzODNhMDIyZTFlYTFhNWQ5ZWEzMzUzMWQu
LmU4MGM4OTY0MTNmZThiOWMxODgwMjIwMjc2MzUxNDUxZWM5MTljYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjQy
LDggKzI0Miw2IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJT
dGF0ZSgpCiB7CiAgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKICAgICBtX2Rpc2Nh
cmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKLQotICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAog
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppbnZhbGlkYXRlKCkKQEAgLTMwOCw3ICsz
MDYsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgIH0pOwogCiAgICAgLy8gV2FpdCB1bnRpbCB0
aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBpcyBoYW5kbGVkCi0gICAgbV9pbml0aWFsaXphdGlv
blNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPndhaXQoKTsKKyAgICB3aGlsZSAoIW1faW5pdGlh
bGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsKKyAg
ICAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0
cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciogZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCmluZGV4IDZjZTk1OGY3YTQ2ZWM4MWU5NGNmYjkyMTBhZjg5NmYzZDk1MzdlMDku
LjRlODUxN2EyY2RlY2Q3NjE3MmM5NjMzYzdkZmI0M2ViYzk4MzZkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC02ODYsOCArNjg2LDYgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpyZXNldFBhcnNlclN0YXRlKCkKICAgICBtX2luaXRpYWxpemF0aW9uU2Vn
bWVudCA9IG51bGxwdHI7CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9
IGZhbHNlOwogICAgIG1fY3VycmVudEJsb2NrLnJlc2V0KCk7Ci0KLSAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKIHZvaWQgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWYzOGRiMjdhNjhiOGIzOTIw
ZWJjOWM4YWU2NmEyNDYxZmQ2ZmY4MS4uMDg3YjRkNTAxYzVkZDQzYjE5NzJlYWMxZDlhOWIyNzhk
OWY2ZTYwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAxLTI1ICBQZW5nIExpdSAgPHBl
bmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRlbyBlbGVtZW50
IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291cmNlQnVmZmVy
LmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJv
cnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMS0yNSAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFVzZSBkaWZm
ZXJlbnQgd2VsbC1rbm93biBsb2NhdGlvbnMgZm9yIHRyaWdnZXJpbmcgYW5kIHJlcG9ydGluZyBh
dHRyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
NzlhODE0YmIwMjljMjczM2I5YzZjYWI4NGQyNTRiZDgwMjA2Mzc3ZS4uMzYzNzdjYzIxYjdlYzU2
YjgwODBmNjdmNDRiN2I5YjNlZGE2ZGU3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0zNDYsNyArMzQ2LDYgQEAgbWVkaWEvbWVkaWEtY29udHJvbGxlci10
aW1lLWNvbnN0YW50Lmh0bWwgWyBUaW1lb3V0IF0KIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItdGlt
ZS5odG1sIFsgVGltZW91dCBdCiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXVucGF1c2UuaHRtbCBb
IFRpbWVvdXQgXQogbWVkaWEvbWVkaWEtaGlnaGVyLXByaW8tYXVkaW8tc3RyZWFtLmh0bWwgWyBT
a2lwIF0KLW1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS5odG1sIFsgRmFpbHVy
ZSBdCiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0taW5pdC1pbnNpZGUtc2Vn
bWVudC5odG1sIFsgRmFpbHVyZSBdCiBtZWRpYS9tZWRpYS12b2x1bWUtc2xpZGVyLXJlbmRlcmVk
LWJlbG93Lmh0bWwgWyBTa2lwIF0KIG1lZGlhL21lZGlhLXZvbHVtZS1zbGlkZXItcmVuZGVyZWQt
bm9ybWFsLmh0bWwgWyBTa2lwIF0KQEAgLTUxOSw3ICs1MTgsNiBAQCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1zdHJlYW1zIFsgU2tpcCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1idWZmZXJlZC5o
dG1sIFsgRmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1jaGFuZ2V0eXBlLmh0bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWR1cmF0aW9uLWJv
dW5kYXJ5Y29uZGl0aW9ucy5odG1sIFsgRmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1wbGF5Lmh0bWwgWyBGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LXJlbW92ZS5odG1sIFsgRmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21zdC1jb250ZW50LWhpbnQvaWRsaGFybmVzcy53aW5kb3cuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tc3QtY29udGVudC1oaW50L01lZGlhU3RyZWFtVHJh
Y2stY29udGVudEhpbnQuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJv
cnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhkMTEzNzNjN2MxNTc2MDMxZDYyOGY3MmFhMGUxNWI3ODIwMDJlZGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0t
YXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAor
VGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSBvZiB0aGUgU291cmNlQnVmZmVyIHRvIHJlc2V0IHRoZSBw
YXJzZXIgYWZ0ZXIgYW4gYWJvcnQoKS4gQSBTb3VyY2VCdWZmZXIgaW4gdGhpcyBzdGF0ZSBzaG91
bGQgYmUgYWJsZSB0byBhY2NlcHQgYSBuZXcgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBhbmQgYSBu
ZXcgbWVkaWEgc2VnbWVudCwgYW5kIHRoZSB2aWRlbyBlbGVtZW50IHNob3VsZCBmaXJlICJjYW5w
bGF5dGhyb3VnaCIgZXZlbnQuCisKK1JVTih2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJM
KHNvdXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZS5kdXJhdGlvbiA9IGxvYWRl
ci5kdXJhdGlvbigpKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIo
bG9hZGVyLnR5cGUoKSkpCitSVU4oc291cmNlQnVmZmVyLmFib3J0KCkpCitSVU4oc291cmNlQnVm
ZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIuaW5pdFNlZ21lbnQoKSkpCitFVkVOVCh1cGRhdGUpCitB
cHBlbmQgYSBtZWRpYSBzZWdtZW50LgorUlVOKHNvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9h
ZGVyLm1lZGlhU2VnbWVudCgwKSkpCitFVkVOVCh1cGRhdGUpCitFVkVOVChjYW5wbGF5dGhyb3Vn
aCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1
ZmZlci1hZnRlci1hYm9ydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlOWI2NmJmMmJhMjdkM2M5ZjI5Yzc5
YTg0MWFlY2RhOTFiMmY4ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5o
dG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8dGl0bGU+bWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydDwvdGl0
bGU+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLXNvdXJjZS1sb2FkZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgIHZhciBsb2FkZXI7CisgICAgdmFyIHNvdXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVy
OworCisgICAgZnVuY3Rpb24gbG9hZGVyUHJvbWlzZShsb2FkZXIpIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGxvYWRlci5v
bmxvYWQgPSByZXNvbHZlOworICAgICAgICAgICAgbG9hZGVyLm9uZXJyb3IgPSByZWplY3Q7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
YXN5bmMgZXZlbnQgPT4geworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmluZE1lZGlhRWxl
bWVudCgpOworICAgICAgICAgICAgbG9hZGVyID0gbmV3IE1lZGlhU291cmNlTG9hZGVyKCdjb250
ZW50L3Rlc3QtdnA5LW1hbmlmZXN0Lmpzb24nKTsKKyAgICAgICAgICAgIGF3YWl0IGxvYWRlclBy
b21pc2UobG9hZGVyKTsKKworICAgICAgICAgICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7
CisgICAgICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNl
KScpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcihzb3VyY2UsICdzb3VyY2VvcGVuJyk7Cisg
ICAgICAgICAgICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCdlcnJvcicpOworCisgICAgICAgICAgICBy
dW4oJ3NvdXJjZS5kdXJhdGlvbiA9IGxvYWRlci5kdXJhdGlvbigpJyk7CisgICAgICAgICAgICBy
dW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIobG9hZGVyLnR5cGUoKSkn
KTsKKworICAgICAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIuYWJvcnQoKScpOworCisgICAgICAg
ICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVyLmluaXRTZWdtZW50KCkp
Jyk7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZScpOwor
CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ0FwcGVuZCBhIG1lZGlhIHNlZ21lbnQuJykKKyAg
ICAgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIubWVkaWFTZWdt
ZW50KDApKScpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcihzb3VyY2VCdWZmZXIsICd1cGRh
dGUnKTsKKworICAgICAgICAgICAgZmFpbFRlc3RJbigyMDAwKTsKKworICAgICAgICAgICAgYXdh
aXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisgICAgICAgICAgICBlbmRUZXN0
KCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGZhaWxUZXN0KGBDYXVnaHQg
ZXhjZXB0aW9uOiAiJHtlfSJgKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPGRpdj4KKyAgICAgICAgVGhpcyB0ZXN0cyB0aGUgYWJpbGl0
eSBvZiB0aGUgU291cmNlQnVmZmVyIHRvIHJlc2V0IHRoZSBwYXJzZXIgYWZ0ZXIgYW4gYWJvcnQo
KS4gQSBTb3VyY2VCdWZmZXIgaW4gdGhpcyBzdGF0ZSBzaG91bGQgYmUgYWJsZSB0byBhY2NlcHQK
KyAgICAgICAgYSBuZXcgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBhbmQgYSBuZXcgbWVkaWEgc2Vn
bWVudCwgYW5kIHRoZSB2aWRlbyBlbGVtZW50IHNob3VsZCBmaXJlICJjYW5wbGF5dGhyb3VnaCIg
ZXZlbnQuCisgICAgPC9kaXY+CisgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MjY3NmI0ZDZlMTk2NTlmMjcwMDZhODAyZTZi
NjI2ZmQ0OTRjZTkyLi4zZGEwYjMxZGYyM2EzY2FlYThiOGFkYWEyZjNjZTEyY2NjMzc5ZWYzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTg3NCw2ICsx
ODc0LDcgQEAgd2Via2l0Lm9yZy9iLzIxNDE1NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXAKIAogIyBUaGVzZSB0ZXN0IHJlcXVpcmVz
IHN5c3RlbSBwbGF0Zm9ybSBzdXBwb3J0LgogWyBDYXRhbGluYSBNb2phdmUgXSBtZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbCBbIFNraXAgXQorWyBDYXRhbGluYSBNb2ph
dmUgXSBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1h
ZnRlci1hYm9ydC5odG1sIFsgU2tpcCBdCiBbIENhdGFsaW5hIE1vamF2ZSBdIG1lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1pbml0LWluc2lkZS1zZWdtZW50Lmh0bWwgWyBTa2lw
IF0KIFsgQ2F0YWxpbmEgTW9qYXZlIF0gcGxhdGZvcm0vbWFjL21lZGlhL21lZGlhY2FwYWJpbGl0
aWVzL3ZwOS1kZWNvZGluZ0luZm8tc3cuaHRtbCBbIFNraXAgXQogWyBDYXRhbGluYSBNb2phdmUg
XSBwbGF0Zm9ybS9tYWMvbWVkaWEvbWVkaWEtc291cmNlL2lzLXR5cGUtc3VwcG9ydGVkLXZwOS1j
b2RlYy1jaGVjay5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418498</attachid>
            <date>2021-01-26 20:03:15 -0800</date>
            <delta_ts>2021-01-27 21:24:54 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-220964-20210126200314.patch</filename>
            <type>text/plain</type>
            <size>18126</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ZDg0YTJjNWM3Njkz
YjZkYWU2ZmQ1MTdiN2M0NjRmZGY2ODY5Zi4uY2I1MTkwOGVjOTEwOGJjOWIwYmUyN2YyYjQ2NmI3
YWExODFjNDMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAxLTI2ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppbnZhbGlkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0
YUFzQXNzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjphYm9ydCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06On5Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmZsdXNoUGVuZGluZ01lZGlhRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpyZXNldFBhcnNlclN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVn
aW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uaDoKKwogMjAyMS0wMS0yNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQQ006IFVzZSBkaWZmZXJlbnQgd2VsbC1rbm93biBsb2NhdGlvbnMgZm9y
IHRyaWdnZXJpbmcgYW5kIHJlcG9ydGluZyBhdHRyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTA5NGYy
YWQ4MzA4Y2E0Zjg0MTcyYjU5NjJhODM4NWY2Nzk1ZGJmLi5iMzdmYzc1NDFlMzU4NDljM2UzMjI3
M2RhMmFiNGU2ZjMwMWYzZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAxLTI2
ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0g
QSB2aWRlbyBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQg
aWYgU291cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFGb3JtYXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRl
cjo6cGFyc2VCeXRlU291cmNlKToKKwogMjAyMS0wMS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFdlYiBwcm9jZXNzIHNo
b3VsZCBiZSB0ZXJtaW5hdGVkIGlmIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlIGFkdmFuY2VzIHBh
c3QgMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5oCmluZGV4IGQ2OGMzOTNkNGY1ZTVmZjU4ODQ4MzVkNjlkMmM0YjE4NDg0NTFhOTIuLjg3
MWM0ZjVkN2JlZTlkNGRlNTZiOTdkYjYyZGFhOGEzMDQ4YTNlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5
U2VtYXBob3JlLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNfQ0xBU1MgQVZTdHJlYW1E
YXRhUGFyc2VyOwpAQCAtODEsOCArODAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaXNjYXJk
U2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OwogCi0gICAgQm94PEJpbmFyeVNlbWFw
aG9yZT4gbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmU7Ci0KICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9n
Z2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmlu
ZGV4IGJlYzRlOWQ2YzBhZTZlNmEzODNhMDIyZTFlYTFhNWQ5ZWEzMzUzMWQuLmM0YjgwYTVhNGFm
ZGI3NmU3ZWQ4OWQwZGVkNTkwYzg0MTIxNTE3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjAwLDEzICsyMDAsMTEg
QEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQKIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogICAgIDogbV9wYXJzZXIoYWRvcHROUyhbUEFMOjph
bGxvY0FWU3RyZWFtRGF0YVBhcnNlckluc3RhbmNlKCkgaW5pdF0pKQogICAgICwgbV9kZWxlZ2F0
ZShhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRo
UGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDp0aGlzXSkpCi0gICAgLCBtX2luaXRpYWxpemF0
aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZShCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRl
KCkpCiB7CiB9CiAKIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDKCkKIHsKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFw
aG9yZS0+c2lnbmFsKCk7CiAgICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBudWxscHRyOwog
ICAgIFttX2RlbGVnYXRlIGludmFsaWRhdGVdOwogfQpAQCAtMjI0LDcgKzIyMiw2IEBAIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwg
QXBwZW5kRmxhZ3MgZmxhZ3MpCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1
c2hQZW5kaW5nTWVkaWFEYXRhKCkKIHsKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFu
ZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgW21fcGFyc2VyIHByb3ZpZGVQZW5kaW5nTWVk
aWFEYXRhXTsKIH0KIApAQCAtMjQyLDE0ICsyMzksMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKIHsKICAgICBtX3BhcnNlclN0YXRlV2FzUmVz
ZXQgPSB0cnVlOwogICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNl
Z21lbnQgPSB0cnVlOwotCi0gICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1h
cGhvcmUtPnNpZ25hbCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6Omlu
dmFsaWRhdGUoKQogewotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBo
b3JlLT5zaWduYWwoKTsKLQogICAgIFttX2RlbGVnYXRlIGludmFsaWRhdGVdOwogICAgIG1fZGVs
ZWdhdGUgPSBudWxscHRyOwogICAgIG1fcGFyc2VyID0gbnVsbHB0cjsKQEAgLTMwMiwxMyArMjk1
LDggQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFB
c0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKSAgICA6
IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAogICAgICAgICB9CiAKLSAgICAgICAgbV9kaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoc2VnbWVudCksIFt0aGlzLCBzdHJvbmdU
aGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAgfSk7CisgICAgICAgIG1f
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21lbnQpKTsKICAg
ICB9KTsKLQotICAgIC8vIFdhaXQgdW50aWwgdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgaXMg
aGFuZGxlZAotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT53
YWl0KCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFy
c2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggZDdhN2I2MmY3
NzEyNjg2N2NhYjU5NzU4MjU3NTE1ZTZkOGQ3MTExNy4uMGQxMzdjZWE5Nzc0YTM3NDYyOWE2OGNj
OGFiZDVlM2RhZDQ5ZTUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCisjaW5jbHVkZSAiR2VuZXJpY1Rh
c2tRdWV1ZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9ncm91cC5oPgpAQCAtMTM4
LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+
JiYpOwogCiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIHZvaWQgZGlkUGFyc2VJbml0
aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFs
aXphdGlvblNlZ21lbnQmJik7CiAgICAgdm9pZCBkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNp
bmcoaW50MzJfdCk7CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChSZWY8
TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
KTsKIApAQCAtMTgyLDYgKzE4MywxMCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHJGYWN0b3J5PFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBtX2FwcGVuZFdlYWtGYWN0b3J5OwogCiAgICAgUmVm
PFNvdXJjZUJ1ZmZlclBhcnNlcj4gbV9wYXJzZXI7CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9u
U2VnbWVudElzSGFuZGxlZCB7IGZhbHNlIH07CisgICAgVmVjdG9yPFJlZjxNZWRpYVNhbXBsZT4+
IG1fbWVkaWFTYW1wbGVzOworICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fbWVkaWFTYW1w
bGVUYXNrUXVldWU7CisKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IG1fZGlzcGxheUxheWVyOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4K
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRl
cmVyPiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVpbnQ2NF90Pj4gbV9hdWRpb1JlbmRlcmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNWE0MjIyMjBi
ZTVmZWM2NjAwODQ4MTJkYjJjNzRiOGY2MDNiNGE1ZC4uNjk3OTA0M2EzN2IyNzZjZjQwYTc0ZjQ5
MDZjOGQyOTlhMWUyOTg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTMwOCwxNCArMzA4LDEzIEBAIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDCiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwgbWFr
ZVdlYWtQdHIoKnRoaXMpKTsKIAotICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0
aW9uRGF0YUNhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoSW5p
dGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0gKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKLSAgICAgICAgZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IGZhbHNlOworICAgICAg
ICBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsKICAgICB9KTsK
IAogICAgIG1fcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFj
ayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGludDMyX3QgZXJyb3JDb2RlKSBtdXRh
YmxlIHsKQEAgLTM0NiwxNCArMzQ1LDE1IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQogCiAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFw
aG9yZSkKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKworICAgIG1f
bWVkaWFTYW1wbGVUYXNrUXVldWUuY2xvc2UoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdt
ZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkKIHsKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgaWYgKCFtX21lZGlhU291cmNlKSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM2NCw3
ICszNjQsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgaWYgKCFjb2RlY3NNZWV0SGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVu
dHMoe3sgKmNvZGVjIH19LCBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+bWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSkpIHsKICAgICAgICAgICAgICAgICBtX3BhcnNp
bmdTdWNjZWVkZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MzkxLDcgKzM5MCwyNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogICAgIGlmIChtX21lZGlh
U291cmNlKQogICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2hhcmFjdGVyaXN0aWNz
Q2hhbmdlZCgpOwogCi0gICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3Zl
KHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgIChtX21lZGlhU2FtcGxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1faW5p
dGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIG1fbWVkaWFTYW1wbGVUYXNrUXVldWUuZW5xdWV1ZVRhc2so
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBmb3IgKGF1
dG8gbWVkaWFTYW1wbGUgOiBtX21lZGlhU2FtcGxlcykKKyAgICAgICAgICAgICAgICBkaWRSZWNl
aXZlU2FtcGxlKG1lZGlhU2FtcGxlKTsKKworICAgICAgICAgICAgbV9tZWRpYVNhbXBsZXMuY2xl
YXIoKTsKKyAgICAgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkID0gdHJ1
ZTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUpCkBAIC00
MDcsNiArNDI2LDEwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEVuY291
bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUpCiB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChSZWY8TWVkaWFTYW1w
bGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlKQogewogICAgIFVOVVNFRF9QQVJBTShtZWRpYVR5cGUpOworICAgIGlmICghbV9pbml0aWFs
aXphdGlvblNlZ21lbnRJc0hhbmRsZWQpIHsKKyAgICAgICAgbV9tZWRpYVNhbXBsZXMuYXBwZW5k
KFdURk1vdmUobWVkaWFTYW1wbGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlm
ICh0cmFja0lEICE9IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCAmJiAhbV9hdWRpb1JlbmRlcmVycy5j
b250YWlucyh0cmFja0lEKSkgewogICAgICAgICAvLyBGSVhNRSgxMjUxNjEpOiBXZSBkb24ndCBo
YW5kbGUgdGV4dCB0cmFja3MsIGFuZCBwYXNzaW5nIHRoaXMgc2FtcGxlIHVwIHRvIFNvdXJjZUJ1
ZmZlcgpAQCAtNjA3LDYgKzYzMCw5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmFib3J0KCkKICAgICB9CiAKICAgICBtX3BhcnNlci0+cmVzZXRQYXJzZXJTdGF0ZSgpOworICAg
IG1fbWVkaWFTYW1wbGVzLmNsZWFyKCk7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hh
bmRsZWQgPSBmYWxzZTsKKyAgICBtX21lZGlhU2FtcGxlVGFza1F1ZXVlLmNhbmNlbEFsbFRhc2tz
KCk7CiAKICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1faXNBcHBlbmRpbmdHcm91cC5nZXQoKSwg
RElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggMzQ4
MjkzNDkzMjQ0MjFjNTdlNzZkNmFjOTBmYWM5OWNiNTY2ZjczNi4uYmVjMjE1MjM5NjFkNGZjMTVk
ZGFlZmMyZWUzYWEzMDJmOWYwNzAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTk1LDcg
Kzk1LDcgQEAgcHVibGljOgogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICB1c2luZyBEaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9u
U2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKKyAgICB1c2luZyBEaWRQ
YXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRp
YWxpemF0aW9uU2VnbWVudCYmKT47CiAgICAgdm9pZCBzZXREaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YUNhbGxiYWNrKERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRl
eCA2Y2U5NThmN2E0NmVjODFlOTRjZmI5MjEwYWY4OTZmM2Q5NTM3ZTA5Li40OGIyMjYwNmY1YzZi
YjQ0Mzk2M2ExMjlkYzdmMzQ4YTFiNmE1NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcApAQCAtNTk4LDcgKzU5OCw2IEBAIHN0YXRpYyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayBjYWxsT25NYWluVGhyZWFkQ2FsbGJhCiAKIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQogICAgIDogbV9y
ZWFkZXIoV1RGOjptYWtlVW5pcXVlUmVmPFN0cmVhbWluZ1ZlY3RvclJlYWRlcj4oKSkKLSAgICAs
IG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlKEJveDxCaW5hcnlTZW1h
cGhvcmU+OjpjcmVhdGUoKSkKICAgICAsIG1fY2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2soY2Fs
bE9uTWFpblRocmVhZENhbGxiYWNrKCkpCiB7CiAgICAgaWYgKGlzV2VibVBhcnNlckF2YWlsYWJs
ZSgpKQpAQCAtNjA3LDcgKzYwNiw2IEBAIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1
ZmZlclBhcnNlcldlYk0oKQogCiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp+U291cmNlQnVmZmVy
UGFyc2VyV2ViTSgpCiB7Ci0gICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1h
cGhvcmUtPnNpZ25hbCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVu
ZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIEFwcGVuZEZsYWdzIGFwcGVuZEZsYWdzKQpAQCAtNjYx
LDcgKzY1OSw2IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YShTZWdt
ZW50JiYgc2VnbWVudCwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhCiAKIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKIHsKLSAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKIHZvaWQgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9v
bCwgdWludDY0X3QpCkBAIC02ODYsMTYgKzY4MywxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OnJlc2V0UGFyc2VyU3RhdGUoKQogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0g
bnVsbHB0cjsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7
CiAgICAgbV9jdXJyZW50QmxvY2sucmVzZXQoKTsKLQotICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjppbnZhbGlkYXRlKCkKIHsKICAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSKTsKIAotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBo
b3JlLT5zaWduYWwoKTsKLQogICAgIG1fcGFyc2VyID0gbnVsbHB0cjsKICAgICBtX3RyYWNrcy5j
bGVhcigpOwogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsKQEAgLTgzNywx
MyArODMwLDggQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2lu
KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGMKIAogICAgIGlmIChtX2luaXRpYWxp
emF0aW9uU2VnbWVudEVuY291bnRlcmVkICYmIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFD
YWxsYmFjaykgewogICAgICAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0aW9uU2VnbWVudCA9IFdU
Rk1vdmUoKm1faW5pdGlhbGl6YXRpb25TZWdtZW50KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAg
IG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKGluaXRpYWxpemF0
aW9uU2VnbWVudCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAg
ICAgICAgICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+
c2lnbmFsKCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2VnbWVudCkpOwogICAg
ICAgICB9KTsKLQotICAgICAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFsaXphdGlvbiBzZWdt
ZW50IGlzIGhhbmRsZWQKLSAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRT
ZW1hcGhvcmUtPndhaXQoKTsKICAgICB9CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNv
dW50ZXJlZCA9IGZhbHNlOwogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCA2YjYyZGMwNjU5ZTZjODYxMTJlM2Rh
ZjQ2NWJhNjQxZTM5OWZkNDBjLi43YmM3OTRmM2EzNDhjNGJlYTNlNjhlNTViODIxOTNmNjRhNjFm
MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC00Miw3ICs0Miw2IEBACiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXRE
ZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1
ZUNNQmxvY2tCdWZmZXIgKkNNQmxvY2tCdWZmZXJSZWY7CkBAIC0yNjUsNyArMjY0LDYgQEAgcHJp
dmF0ZToKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwogICAgIGZs
b2F0IG1fbWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24geyAyIH07CiAKLSAgICBCb3g8QmluYXJ5
U2VtYXBob3JlPiBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZTsKICAg
ICBDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNr
OwogCiAgICAgUmVmUHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IDI0ZmI3YWRlNDQ4YTlhZGNmMTNhOGFkMDMxOWEyNTBm
YTFmNDEzYjMuLmQwZjliMjAwOTBkZDA3MWZkMmVhOGU5ZjI3OTFlODI1ZTFhZDhmNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMTI0LDkgKzEyNCw4IEBAIHZvaWQgTWVk
aWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJjZShSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291
cmNlUmVmPiYmIGJ5dGVTCiAgICAgICAgIE1lZGlhVHJhY2tSZWFkZXI6OnN0b3JhZ2VRdWV1ZSgp
LmRpc3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICB9KTsKIAotICAgIHBhcnNlci0+c2V0
RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXShTb3VyY2VCdWZmZXJQYXJzZXI6OkluaXRpYWxpemF0aW9uU2VnbWVu
dCYmIGluaXRpYWxpemF0aW9uU2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7CisgICAgcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YUNhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFNvdXJj
ZUJ1ZmZlclBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgaW5pdGlhbGl6YXRpb25TZWdt
ZW50KSB7CiAgICAgICAgIGRpZFBhcnNlVHJhY2tzKFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdt
ZW50KSwgbm9FcnIpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogCiAg
ICAgcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSh1aW50NjRfdCBlcnJvckNvZGUpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418615</attachid>
            <date>2021-01-27 21:24:56 -0800</date>
            <delta_ts>2021-01-27 22:42:10 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-220964-20210127212455.patch</filename>
            <type>text/plain</type>
            <size>32505</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ZDg0YTJjNWM3Njkz
YjZkYWU2ZmQ1MTdiN2M0NjRmZGY2ODY5Zi4uMDRjNjczZTFkYTc5YjgwZjdhYTFkNmU5ZjlmODMx
OTk4YTcxYWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTAxLTI3ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlhRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmludmFsaWRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1E
YXRhQXNBc3NldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6flNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6YXBwZW5kQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6c2V0VmlkZW9MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjp+U291cmNlQnVmZmVyUGFyc2VyV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OmZsdXNoUGVuZGluZ01lZGlhRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmludmFsaWRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoKKwog
MjAyMS0wMS0yNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQQ006IFVzZSBkaWZmZXJlbnQgd2VsbC1rbm93biBsb2NhdGlvbnMgZm9yIHRyaWdnZXJpbmcg
YW5kIHJlcG9ydGluZyBhdHRyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTA5NGYyYWQ4MzA4Y2E0Zjg0
MTcyYjU5NjJhODM4NWY2Nzk1ZGJmLi5kNWVjOGFiZDAwZGYxNTBhZGU0NGRiYmI5ZWUwOWE3ZWFj
ZjhkNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAxLTI3ICBQZW5nIExpdSAg
PHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRlbyBlbGVt
ZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291cmNlQnVm
ZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRS
ZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6cGFyc2VCeXRl
U291cmNlKToKKwogMjAyMS0wMS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFdlYiBwcm9jZXNzIHNob3VsZCBiZSB0ZXJt
aW5hdGVkIGlmIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlIGFkdmFuY2VzIHBhc3QgMApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCmluZGV4
IGQ2OGMzOTNkNGY1ZTVmZjU4ODQ4MzVkNjlkMmM0YjE4NDg0NTFhOTIuLmIyNTNkZGZjODY4ZmVk
NTlmYzZkNmM1ZGFmY2JkNjc3YzgyNDE4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CiAKIE9CSkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNfQ0xBU1MgQVZTdHJlYW1EYXRhUGFyc2VyOwpA
QCAtNTQsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIo
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQogCiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gVHlwZTo6QVZGT2JqQzsgfQotICAgIHZvaWQgYXBwZW5kRGF0YShTZWdtZW50
JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOworICAgIHZvaWQgYXBw
ZW5kRGF0YShTZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiwgQXBwZW5kRmxh
Z3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgZmluYWw7CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRp
YURhdGEoKSBmaW5hbDsKICAgICB2b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKGJvb2wsIHVpbnQ2NF90KSBmaW5hbDsKICAgICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRh
dGFGb3JUcmFja0lEKHVpbnQ2NF90KSBmaW5hbDsKQEAgLTgxLDggKzgwLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKIAot
ICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVk
U2VtYXBob3JlOwotCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPGNvbnN0
IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIg
eyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbQppbmRleCBiZWM0ZTlkNmMwYWU2ZTZhMzgzYTAyMmUxZWExYTVkOWVh
MzM1MzFkLi4xYWQ0ZGE3ZTBjMjVkYjUyMDcyY2IyZTBiNzk0NjJjMWE0M2QyN2ZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
QEAgLTIwMCwxOCArMjAwLDE2IEBAIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkCiBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKICAgICA6IG1fcGFy
c2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRd
KSkKICAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyIGFsbG9jXSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6dGhpc10pKQot
ICAgICwgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUoQm94PEJpbmFy
eVNlbWFwaG9yZT46OmNyZWF0ZSgpKQogewogfQogCiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Ojp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB7Ci0gICAgbV9pbml0aWFsaXphdGlvblNl
Z21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgIG1fZGVsZWdhdGUuZ2V0KCku
cGFyZW50ID0gbnVsbHB0cjsKICAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKIH0KIAotdm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50
LCBBcHBlbmRGbGFncyBmbGFncykKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBw
ZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnRha2VWZWN0b3IoKSk7CiAgICAgYXV0
byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEoKTsKQEAgLTIyMCwxMSArMjE4LDEx
IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYg
c2VnbWVudCwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiAgICAgZWxzZQogICAgICAgICBbbV9wYXJzZXIg
YXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCldOwogICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNl
dCA9IGZhbHNlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKIHsKLSAgICBtX2luaXRp
YWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgW21fcGFy
c2VyIHByb3ZpZGVQZW5kaW5nTWVkaWFEYXRhXTsKIH0KIApAQCAtMjQyLDE0ICsyNDAsMTAgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKIHsKICAg
ICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSB0cnVlOwogICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRp
bE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOwotCi0gICAgbV9pbml0aWFsaXphdGlv
blNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OmludmFsaWRhdGUoKQogewotICAgIG1faW5pdGlhbGl6YXRpb25T
ZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKLQogICAgIFttX2RlbGVnYXRlIGlu
dmFsaWRhdGVdOwogICAgIG1fZGVsZWdhdGUgPSBudWxscHRyOwogICAgIG1fcGFyc2VyID0gbnVs
bHB0cjsKQEAgLTMwMiwxMyArMjk2LDggQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
OjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICAgICAg
Ly8gRklYTUUoMTI1MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAogICAgICAgICB9CiAK
LSAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoc2Vn
bWVudCksIFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgICAg
IG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKLSAg
ICAgICAgfSk7CisgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhX
VEZNb3ZlKHNlZ21lbnQpKTsKICAgICB9KTsKLQotICAgIC8vIFdhaXQgdW50aWwgdGhlIGluaXRp
YWxpemF0aW9uIHNlZ21lbnQgaXMgaGFuZGxlZAotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50
SXNIYW5kbGVkU2VtYXBob3JlLT53YWl0KCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqIGVycm9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKaW5kZXggZDdhN2I2MmY3NzEyNjg2N2NhYjU5NzU4MjU3NTE1ZTZkOGQ3MTExNy4uMTRl
NDZjZjdmNjc0M2NhMmJmZDYxNmM5ZmY5MjAxYWU0Y2Y0ZTljMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9OKQog
CisjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBh
cnNlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxkaXNw
YXRjaC9ncm91cC5oPgpAQCAtMTM4LDkgKzEzOSw5IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJl
ZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYpOwogCiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdt
ZW50ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50Owot
ICAgIHZvaWQgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJik7CiAgICAgdm9pZCBkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCk7Ci0gICAgdm9pZCBkaWRQcm92aWRlTWVk
aWFEYXRhRm9yVHJhY2tJRChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JU
cmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5n
JiBtZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKICAg
ICB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgZmluYWw7CkBAIC0xODIsNiAr
MTgzLDExIEBAIHByaXZhdGU6CiAgICAgV2Vha1B0ckZhY3Rvcnk8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IG1fYXBwZW5kV2Vha0ZhY3Rvcnk7CiAKICAgICBSZWY8U291cmNlQnVmZmVyUGFy
c2VyPiBtX3BhcnNlcjsKKyAgICBib29sIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNr
IHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVkaWFTYW1w
bGU+Pj4gbV9tZWRpYVNhbXBsZXM7CisgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV9tZWRp
YVNhbXBsZVRhc2tRdWV1ZTsKKwogICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcj4gbV9kaXNwbGF5TGF5ZXI7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19C
RUdJTgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlv
UmVuZGVyZXI+LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX2F1ZGlvUmVuZGVyZXJzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCA1YTQy
MjIyMGJlNWZlYzY2MDA4NDgxMmRiMmM3NGI4ZjYwM2I0YTVkLi5kOGJmOGZhMWE3YjRmMzdhYmMz
ZWNmNmQzZDFiZGM0ZmU4YTdjZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzA4LDE0ICszMDgsMTAgQEAgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMKIAogICAgIHNvdXJjZUJ1ZmZlck1hcCgpLmFkZChtX21hcElE
LCBtYWtlV2Vha1B0cigqdGhpcykpOwogCi0gICAgbV9wYXJzZXItPnNldERpZFBhcnNlSW5pdGlh
bGl6YXRpb25EYXRhQ2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
IChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgIG1fcGFyc2VyLT5zZXREaWRQ
YXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXSAoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNl
Z21lbnQpKTsKICAgICB9KTsKIAogICAgIG1fcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1
cmluZ1BhcnNpbmdDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGludDMy
X3QgZXJyb3JDb2RlKSBtdXRhYmxlIHsKQEAgLTMyNCwxMCArMzIwLDEwIEBAIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDCiAgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkRW5jb3VudGVyRXJyb3JEdXJp
bmdQYXJzaW5nKGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBtX3BhcnNlci0+c2V0RGlkUHJv
dmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoUmVm
PE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpIG11dGFibGUgeworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRh
Q2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChSZWY8TWVkaWFTYW1wbGU+
JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICh3ZWFr
VGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJ
RChXVEZNb3ZlKHNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgICAgICAgICB3ZWFr
VGhpcy0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoV1RGTW92ZShzYW1wbGUpLCB0cmFj
a0lkLCBtZWRpYVR5cGUpOwogICAgIH0pOwogfQogCkBAIC0zNDYsMTQgKzM0MiwxNSBAQCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCkKIAog
ICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpCiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFw
aG9yZS0+c2lnbmFsKCk7CisKKyAgICBtX21lZGlhU2FtcGxlVGFza1F1ZXVlLmNsb3NlKCk7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYm
IHNlZ21lbnQpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGlmICgh
bV9tZWRpYVNvdXJjZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zNjQsNyArMzYxLDYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdt
ZW4KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghY29kZWNzTWVl
dEhhcmR3YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHt7ICpjb2RlYyB9fSwgbV9tZWRpYVNvdXJjZS0+
cGxheWVyKCktPm1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7
CiAgICAgICAgICAgICAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM5MSw3ICszODcsNDEgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRp
b25TZWdtZW4KICAgICBpZiAobV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+
cGxheWVyKCktPmNoYXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKIAotICAgIGRpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkID0gZmFsc2U7Cisg
ICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgIChtX21lZGlhU2FtcGxlcy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImluaXRpYWxpemF0aW9uIHNlZ21lbnQg
aXMgaGFuZGxlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
bV9tZWRpYVNhbXBsZVRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKV0geworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGZvciAoYXV0byB0cmFja0lkTWVkaWFTYW1wbGVQ
YWlyIDogbV9tZWRpYVNhbXBsZXMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHRyYWNrSWQgPSB0
cmFja0lkTWVkaWFTYW1wbGVQYWlyLmZpcnN0OworICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFT
YW1wbGUgPSB0cmFja0lkTWVkaWFTYW1wbGVQYWlyLnNlY29uZDsKKyAgICAgICAgICAgICAgICBp
ZiAodHJhY2tJZCA9PSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgfHwgbV9hdWRpb1JlbmRlcmVycy5j
b250YWlucyh0cmFja0lkKSkgeworICAgICAgICAgICAgICAgICAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUiwgbWVkaWFTYW1wbGUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBkaWRSZWNl
aXZlU2FtcGxlKG1lZGlhU2FtcGxlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIG1fbWVkaWFTYW1wbGVzLmNsZWFyKCk7CisgICAgICAgICAgICBtX2lu
aXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJpbml0aWFsaXphdGlvbiBzZWdtZW50IGlzIGhhbmRsZWQiKTsK
KworICAgICAgICAgICAgaWYgKG1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNrKSB7
CisgICAgICAgICAgICAgICAgbV9oYXNQZW5kaW5nQXBwZW5kQ29tcGxldGVkQ2FsbGJhY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUpCkBAIC00MDQs
MTEgKzQzNCwxNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50
ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCBjb2RlKQogICAgIG1fcGFyc2luZ1N1Y2NlZWRl
ZCA9IGZhbHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92
aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVp
bnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlh
U2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSkKIHsKICAgICBVTlVTRURfUEFSQU0obWVkaWFUeXBlKTsKKyAgICBpZiAoIW1faW5p
dGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkKSB7CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSLCBtZWRpYVNhbXBsZS5nZXQoKSk7CisgICAgICAgIG1fbWVkaWFTYW1wbGVzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcih0cmFja0lkLCBXVEZNb3ZlKG1lZGlhU2FtcGxlKSkpOworICAgICAg
ICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKHRyYWNrSUQgIT0gbV9lbmFibGVkVmlkZW9UcmFj
a0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKSB7CisgICAgaWYgKHRy
YWNrSWQgIT0gbV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRh
aW5zKHRyYWNrSWQpKSB7CiAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IFdlIGRvbid0IGhhbmRs
ZSB0ZXh0IHRyYWNrcywgYW5kIHBhc3NpbmcgdGhpcyBzYW1wbGUgdXAgdG8gU291cmNlQnVmZmVy
CiAgICAgICAgIC8vIHdpbGwganVzdCBjb25mdXNlIGl0cyBzdGF0ZS4gRHJvcCB0aGlzIHNhbXBs
ZSB1bnRpbCB3ZSBjYW4gaGFuZGxlIHRleHQgdHJhY2tzIHByb3Blcmx5LgogICAgICAgICByZXR1
cm47CkBAIC01MTAsNyArNTQ1LDcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsRGF0
YVBhcnNlclF1ZXVlKCkKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5k
KFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiB7Ci0gICAgREVCVUdfTE9HKExPR0lERU5U
SUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEuc2l6ZSgpKTsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEuc2l6ZSgpKTsKIAogICAgIEFTU0VS
VCghbV9oYXNTZXNzaW9uU2VtYXBob3JlKTsKICAgICBBU1NFUlQoIW1fYWJvcnRTZW1hcGhvcmUp
OwpAQCAtNTYxLDEyICs1OTYsMTkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiAgICAgbV9wYXJzaW5nU3VjY2Vl
ZGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihtX2lzQXBwZW5kaW5nR3JvdXAu
Z2V0KCkpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCksIFtk
YXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0
ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwgaXNBcHBlbmRpbmdHcm91cCA9IG1f
aXNBcHBlbmRpbmdHcm91cF0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIHBhcnNlci0+YXBwZW5kRGF0
YShXVEZNb3ZlKGRhdGEpKTsKKyAgICBkaXNwYXRjaF9hc3luYyhnbG9iYWxEYXRhUGFyc2VyUXVl
dWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3Rv
cnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2VyLCBpc0FwcGVuZGluZ0dy
b3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwXSgpIG11dGFibGUgeworICAgICAgICBwYXJzZXItPmFw
cGVuZERhdGEoV1RGTW92ZShkYXRhKSwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcy0+bV9t
ZWRpYVNhbXBsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5t
X2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxsYmFjayA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbd2Vha1RoaXNdIHsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAg
ICAgICB3ZWFrVGhpcy0+YXBwZW5kQ29tcGxldGVkKCk7CisgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2xlYXZlKGlzQXBwZW5kaW5nR3JvdXAuZ2V0
KCkpOwogICAgIH0pOwpAQCAtNTc0LDYgKzYxNiw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogCiB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogeworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKG1fYWJvcnRTZW1hcGhvcmUpIHsKICAgICAg
ICAgbV9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUg
PSBuaWw7CkBAIC02MDcsNiArNjUwLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6YWJvcnQoKQogICAgIH0KIAogICAgIG1fcGFyc2VyLT5yZXNldFBhcnNlclN0YXRlKCk7Cisg
ICAgbV9tZWRpYVNhbXBsZXMuY2xlYXIoKTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElz
SGFuZGxlZCA9IGZhbHNlOworICAgIG1fbWVkaWFTYW1wbGVUYXNrUXVldWUuY2FuY2VsQWxsVGFz
a3MoKTsKIAogICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgp
LCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwogfQpAQCAtMTIyOCw2ICsxMjc0LDcgQEAgdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0VmlkZW9MYXllcihBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciogbGF5ZXIKICAgICBpZiAobGF5ZXIgPT0gbV9kaXNwbGF5TGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIiEhbGF5ZXIgPSAi
LCAhIWxheWVyKTsKICAgICBBU1NFUlQoIWxheWVyIHx8ICFtX2RlY29tcHJlc3Npb25TZXNzaW9u
IHx8IGhhc1NlbGVjdGVkVmlkZW8oKSk7CiAKICAgICBpZiAobV9kaXNwbGF5TGF5ZXIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggMzQ4MjkzNDkzMjQ0MjFjNTdlNzZkNmFjOTBmYWM5OWNi
NTY2ZjczNi4uNjE4YmY0MzRiOGJiYTIzNTRkNTAzYjNmM2E0NDQ5NzRiZjEwNTI2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgICAgICA+IG1f
c2VnbWVudDsKICAgICB9OwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYm
LCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGFwcGVuZERhdGEoU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7
IH0sIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91
bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1aW50NjRfdCkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCkgPSAw
OwpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0
aGUgbWFpbiB0aHJlYWQuCiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNl
QnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIHVzaW5nIERp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5p
dGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OworICAg
IHVzaW5nIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpPjsKICAgICB2b2lkIHNldERpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFj
ayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCmluZGV4IDZjZTk1OGY3YTQ2ZWM4MWU5NGNmYjkyMTBhZjg5NmYzZDk1MzdlMDkuLjY2
M2E4MjFlMTU1ZjFhYzJmY2JiMzllZjBmZDk4ZWViMmM3MmViOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01OTgsNyArNTk4LDYgQEAgc3RhdGljIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OkNhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrIGNhbGxPbk1haW5UaHJlYWRD
YWxsYmEKIAogU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgp
CiAgICAgOiBtX3JlYWRlcihXVEY6Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVy
PigpKQotICAgICwgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUoQm94
PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpKQogICAgICwgbV9jYWxsT25DbGllbnRUaHJlYWRD
YWxsYmFjayhjYWxsT25NYWluVGhyZWFkQ2FsbGJhY2soKSkKIHsKICAgICBpZiAoaXNXZWJtUGFy
c2VyQXZhaWxhYmxlKCkpCkBAIC02MDcsMTMgKzYwNiwxNCBAQCBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkKIAogU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
flNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQogewotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50
SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBBcHBlbmRGbGFncyBhcHBlbmRG
bGFncykKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YShTZWdtZW50JiYg
c2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBB
cHBlbmRGbGFncyBhcHBlbmRGbGFncykKIHsKLSAgICBpZiAoIW1fcGFyc2VyKQorICAgIGlmICgh
bV9wYXJzZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJu
OworICAgIH0KIAogICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJmbGFn
cygiLCBhcHBlbmRGbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSA/ICJEaXNjb250
aW51aXR5IiA6ICIiLCAiKSwgc2l6ZSgiLCBzZWdtZW50LnNpemUoKSwgIikiKTsKIApAQCAtNjI3
LDYgKzYyNyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YShTZWdt
ZW50JiYgc2VnbWVudCwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhCiAgICAgICAgIG1fc3RhdHVzID0g
bV9wYXJzZXItPkZlZWQodGhpcywgJm1fcmVhZGVyKTsKICAgICAgICAgaWYgKG1fc3RhdHVzLm9r
KCkgfHwgbV9zdGF0dXMuY29kZSA9PSBTdGF0dXM6OmtFbmRPZkZpbGUgfHwgbV9zdGF0dXMuY29k
ZSA9PSBTdGF0dXM6OmtXb3VsZEJsb2NrKSB7CiAgICAgICAgICAgICBtX3JlYWRlci0+cmVjbGFp
bVNlZ21lbnRzKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTY1NywxMSArNjU4LDEyIEBAIHZvaWQgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQXBwZW5kRmxh
Z3MgYXBwZW5kRmxhCiAgICAgICAgIGlmIChtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
Z0NhbGxiYWNrKQogICAgICAgICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdD
YWxsYmFjayhjb2RlKTsKICAgICB9KTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKIHsK
LSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7
CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSUQoYm9vbCwgdWludDY0X3QpCkBAIC02ODYsMTYgKzY4OCwxMiBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUoKQogICAgIG1faW5pdGlh
bGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVu
Y291bnRlcmVkID0gZmFsc2U7CiAgICAgbV9jdXJyZW50QmxvY2sucmVzZXQoKTsKLQotICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAog
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppbnZhbGlkYXRlKCkKIHsKICAgICBJTkZPX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKIAotICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKLQogICAgIG1fcGFyc2VyID0gbnVsbHB0
cjsKICAgICBtX3RyYWNrcy5jbGVhcigpOwogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0g
bnVsbHB0cjsKQEAgLTcxNyw3ICs3MTUsNiBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OnRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKHVpbnQ2NF90IHRyYWNrTnVtYmVyKSAtPiBUcgogICAg
IHJldHVybiBudWxscHRyOwogfQogCi0KIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpP
bkVsZW1lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rpb24qIGFj
dGlvbikKIHsKICAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwpAQCAtODM3LDEzICs4MzQsOCBA
QCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4oY29uc3QgRWxl
bWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgYwogCiAgICAgaWYgKG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50RW5jb3VudGVyZWQgJiYgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKSB7
CiAgICAgICAgIG1fY2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RGTW92ZSgqbV9p
bml0aWFsaXphdGlvblNlZ21lbnQpXSgpIG11dGFibGUgewotICAgICAgICAgICAgbV9kaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICAgICAg
ICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsK
LSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSk7CiAgICAgICAgIH0pOwot
Ci0gICAgICAgIC8vIFdhaXQgdW50aWwgdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgaXMgaGFu
ZGxlZAotICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+
d2FpdCgpOwogICAgIH0KICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0g
ZmFsc2U7CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDZiNjJkYzA2NTllNmM4NjExMmUzZGFmNDY1YmE2NDFl
Mzk5ZmQ0MGMuLmFmNjM0YmJjY2E5MjAyZTg0NjExZjIwOGJmNjVkYjc2ODIzMmQyMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oPgogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9u
KiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ01CbG9ja0J1
ZmZlciAqQ01CbG9ja0J1ZmZlclJlZjsKQEAgLTczLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGNv
bnN0IHdlYm06OlN0YXR1cyYgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KIAog
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6OldlYk07IH0KLSAgICB2b2lkIGFw
cGVuZERhdGEoU2VnbWVudCYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5h
bDsKKyAgICB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgPSBbXSB7IH0sIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOwog
ICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzZXRTaG91
bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1aW50NjRfdCkgZmluYWw7CiAgICAg
Ym9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCkgZmluYWw7CkBA
IC0yNjUsNyArMjY0LDYgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9yZXdp
bmRUb1Bvc2l0aW9uOwogICAgIGZsb2F0IG1fbWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24geyAy
IH07CiAKLSAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiBtX2luaXRpYWxpemF0aW9uU2VnbWVudElz
SGFuZGxlZFNlbWFwaG9yZTsKICAgICBDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayBtX2NhbGxP
bkNsaWVudFRocmVhZENhbGxiYWNrOwogCiAgICAgUmVmUHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBt
X2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IDI0ZmI3YWRlNDQ4
YTlhZGNmMTNhOGFkMDMxOWEyNTBmYTFmNDEzYjMuLmQwZjliMjAwOTBkZDA3MWZkMmVhOGU5ZjI3
OTFlODI1ZTFhZDhmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMTI0
LDkgKzEyNCw4IEBAIHZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJjZShSZXRh
aW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYmIGJ5dGVTCiAgICAgICAgIE1lZGlhVHJhY2tS
ZWFkZXI6OnN0b3JhZ2VRdWV1ZSgpLmRpc3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICB9
KTsKIAotICAgIHBhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShTb3VyY2VCdWZmZXJQYXJzZXI6
OkluaXRpYWxpemF0aW9uU2VnbWVudCYmIGluaXRpYWxpemF0aW9uU2VnbWVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgcGFyc2VyLT5zZXRE
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldKFNvdXJjZUJ1ZmZlclBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50
JiYgaW5pdGlhbGl6YXRpb25TZWdtZW50KSB7CiAgICAgICAgIGRpZFBhcnNlVHJhY2tzKFdURk1v
dmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSwgbm9FcnIpOwotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0pOwogCiAgICAgcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmlu
Z1BhcnNpbmdDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSh1
aW50NjRfdCBlcnJvckNvZGUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZjM4ZGIyN2E2OGI4YjM5MjBlYmM5YzhhZTY2
YTI0NjFmZDZmZjgxLi41ZTM4ZmM2YjI3NTI0ODNjYzJjN2YyNmI0MTZjMjk2YWE2MjBjMGE2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDEtMjcgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVUF1bTVNFXSBBIHZpZGVvIGVsZW1lbnQgZG9lcyBub3Qg
ZmlyZSDigJxjYW5wbGF5dGhyb3VnaOKAnSBldmVudCBpZiBTb3VyY2VCdWZmZXIuYWJvcnQoKSBp
cyBjYWxsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
d2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAxLTI1ICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogVXNlIGRpZmZlcmVudCB3ZWxs
LWtub3duIGxvY2F0aW9ucyBmb3IgdHJpZ2dlcmluZyBhbmQgcmVwb3J0aW5nIGF0dHJpYnV0aW9u
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3OWE4MTRiYjAy
OWMyNzMzYjljNmNhYjg0ZDI1NGJkODAyMDYzNzdlLi4zNjM3N2NjMjFiN2VjNTZiODA4MGY2N2Y0
NGI3YjliM2VkYTZkZTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTM0Niw3ICszNDYsNiBAQCBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXRpbWUtY29uc3Rh
bnQuaHRtbCBbIFRpbWVvdXQgXQogbWVkaWEvbWVkaWEtY29udHJvbGxlci10aW1lLmh0bWwgWyBU
aW1lb3V0IF0KIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItdW5wYXVzZS5odG1sIFsgVGltZW91dCBd
CiBtZWRpYS9tZWRpYS1oaWdoZXItcHJpby1hdWRpby1zdHJlYW0uaHRtbCBbIFNraXAgXQotbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwgWyBGYWlsdXJlIF0KIG1lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1pbml0LWluc2lkZS1zZWdtZW50Lmh0bWwg
WyBGYWlsdXJlIF0KIG1lZGlhL21lZGlhLXZvbHVtZS1zbGlkZXItcmVuZGVyZWQtYmVsb3cuaHRt
bCBbIFNraXAgXQogbWVkaWEvbWVkaWEtdm9sdW1lLXNsaWRlci1yZW5kZXJlZC1ub3JtYWwuaHRt
bCBbIFNraXAgXQpAQCAtNTE5LDcgKzUxOCw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWFjYXB0dXJlLXN0cmVhbXMgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWJ1ZmZlcmVkLmh0bWwgWyBGYWls
dXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWNoYW5nZXR5cGUuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtZHVyYXRpb24tYm91bmRhcnljb25k
aXRpb25zLmh0bWwgWyBGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLXBsYXkuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVtb3ZlLmh0
bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbXN0LWNvbnRl
bnQtaGludC9pZGxoYXJuZXNzLndpbmRvdy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21zdC1jb250ZW50LWhpbnQvTWVkaWFTdHJlYW1UcmFjay1jb250ZW50
SGludC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0t
YXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQxMTM3
M2M3YzE1NzYwMzFkNjI4ZjcyYWEwZTE1Yjc4MjAwMmVkYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVm
ZmVyLWFmdGVyLWFib3J0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3Rz
IHRoZSBhYmlsaXR5IG9mIHRoZSBTb3VyY2VCdWZmZXIgdG8gcmVzZXQgdGhlIHBhcnNlciBhZnRl
ciBhbiBhYm9ydCgpLiBBIFNvdXJjZUJ1ZmZlciBpbiB0aGlzIHN0YXRlIHNob3VsZCBiZSBhYmxl
IHRvIGFjY2VwdCBhIG5ldyBpbml0aWFsaXphdGlvbiBzZWdtZW50IGFuZCBhIG5ldyBtZWRpYSBz
ZWdtZW50LCBhbmQgdGhlIHZpZGVvIGVsZW1lbnQgc2hvdWxkIGZpcmUgImNhbnBsYXl0aHJvdWdo
IiBldmVudC4KKworUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkK
K0VWRU5UKHNvdXJjZW9wZW4pCitSVU4oc291cmNlLmR1cmF0aW9uID0gbG9hZGVyLmR1cmF0aW9u
KCkpCitSVU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlw
ZSgpKSkKK1JVTihzb3VyY2VCdWZmZXIuYWJvcnQoKSkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5k
QnVmZmVyKGxvYWRlci5pbml0U2VnbWVudCgpKSkKK0VWRU5UKHVwZGF0ZSkKK0FwcGVuZCBhIG1l
ZGlhIHNlZ21lbnQuCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIubWVkaWFT
ZWdtZW50KDApKSkKK0VWRU5UKHVwZGF0ZSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRU5EIE9G
IFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQuaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVy
LWFib3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU5YjY2YmYyYmEyN2QzYzlmMjljNzlhODQxYWVjZGE5
MWIyZjhkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0Lmh0bWwKQEAgLTAs
MCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5t
ZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0PC90aXRsZT4KKyAgICA8
c2NyaXB0IHNyYz0ibWVkaWEtc291cmNlLWxvYWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFy
IGxvYWRlcjsKKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisKKyAgICBm
dW5jdGlvbiBsb2FkZXJQcm9taXNlKGxvYWRlcikgeworICAgICAgICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbG9hZGVyLm9ubG9hZCA9IHJl
c29sdmU7CisgICAgICAgICAgICBsb2FkZXIub25lcnJvciA9IHJlamVjdDsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVu
dCA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Cisg
ICAgICAgICAgICBsb2FkZXIgPSBuZXcgTWVkaWFTb3VyY2VMb2FkZXIoJ2NvbnRlbnQvdGVzdC12
cDktbWFuaWZlc3QuanNvbicpOworICAgICAgICAgICAgYXdhaXQgbG9hZGVyUHJvbWlzZShsb2Fk
ZXIpOworCisgICAgICAgICAgICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAg
ICAgIHJ1bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7CisgICAg
ICAgICAgICBhd2FpdCB3YWl0Rm9yKHNvdXJjZSwgJ3NvdXJjZW9wZW4nKTsKKyAgICAgICAgICAg
IHdhaXRGb3JFdmVudEFuZEZhaWwoJ2Vycm9yJyk7CisKKyAgICAgICAgICAgIHJ1bignc291cmNl
LmR1cmF0aW9uID0gbG9hZGVyLmR1cmF0aW9uKCknKTsKKyAgICAgICAgICAgIHJ1bignc291cmNl
QnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlwZSgpKScpOworCisgICAg
ICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hYm9ydCgpJyk7CisKKyAgICAgICAgICAgIHJ1bign
c291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIuaW5pdFNlZ21lbnQoKSknKTsKKyAgICAg
ICAgICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlQnVmZmVyLCAndXBkYXRlJyk7CisKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnQXBwZW5kIGEgbWVkaWEgc2VnbWVudC4nKQorICAgICAgICAgICAg
cnVuKCdzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGxvYWRlci5tZWRpYVNlZ21lbnQoMCkpJyk7
CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZScpOworCisg
ICAgICAgICAgICBmYWlsVGVzdEluKDIwMDApOworCisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9y
KHZpZGVvLCAnY2FucGxheXRocm91Z2gnKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZmFpbFRlc3QoYENhdWdodCBleGNlcHRpb246
ICIke2V9ImApOworICAgICAgICB9CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8ZGl2PgorICAgICAgICBUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IG9mIHRoZSBT
b3VyY2VCdWZmZXIgdG8gcmVzZXQgdGhlIHBhcnNlciBhZnRlciBhbiBhYm9ydCgpLiBBIFNvdXJj
ZUJ1ZmZlciBpbiB0aGlzIHN0YXRlIHNob3VsZCBiZSBhYmxlIHRvIGFjY2VwdAorICAgICAgICBh
IG5ldyBpbml0aWFsaXphdGlvbiBzZWdtZW50IGFuZCBhIG5ldyBtZWRpYSBzZWdtZW50LCBhbmQg
dGhlIHZpZGVvIGVsZW1lbnQgc2hvdWxkIGZpcmUgImNhbnBsYXl0aHJvdWdoIiBldmVudC4KKyAg
ICA8L2Rpdj4KKyAgICA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDkyNjc2YjRkNmUxOTY1OWYyNzAwNmE4MDJlNmI2MjZmZDQ5NGNl
OTIuLjNkYTBiMzFkZjIzYTNjYWVhOGI4YWRhYTJmM2NlMTJjY2MzNzllZjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODc0LDYgKzE4NzQsNyBAQCB3
ZWJraXQub3JnL2IvMjE0MTU1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
cm9zcy1vcmlnaW4tZW1iZWRkZXItcAogCiAjIFRoZXNlIHRlc3QgcmVxdWlyZXMgc3lzdGVtIHBs
YXRmb3JtIHN1cHBvcnQuCiBbIENhdGFsaW5hIE1vamF2ZSBdIG1lZGlhL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2Utd2VibS5odG1sIFsgU2tpcCBdCitbIENhdGFsaW5hIE1vamF2ZSBdIG1lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0
Lmh0bWwgWyBTa2lwIF0KIFsgQ2F0YWxpbmEgTW9qYXZlIF0gbWVkaWEvbWVkaWEtc291cmNlL21l
ZGlhLXNvdXJjZS13ZWJtLWluaXQtaW5zaWRlLXNlZ21lbnQuaHRtbCBbIFNraXAgXQogWyBDYXRh
bGluYSBNb2phdmUgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvdnA5LWRl
Y29kaW5nSW5mby1zdy5odG1sIFsgU2tpcCBdCiBbIENhdGFsaW5hIE1vamF2ZSBdIHBsYXRmb3Jt
L21hYy9tZWRpYS9tZWRpYS1zb3VyY2UvaXMtdHlwZS1zdXBwb3J0ZWQtdnA5LWNvZGVjLWNoZWNr
Lmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418622</attachid>
            <date>2021-01-27 22:42:12 -0800</date>
            <delta_ts>2021-01-27 22:44:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220964-20210127224211.patch</filename>
            <type>text/plain</type>
            <size>34258</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ZDg0YTJjNWM3Njkz
YjZkYWU2ZmQ1MTdiN2M0NjRmZGY2ODY5Zi4uNzE5OWRiMDkwNmIyNzkzMzE2ZmMyY2RjYzczZDQ2
OTYyYTQzZjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTAxLTI3ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYGluaXRpYWxpemF0aW9uU2Vn
bWVudElzSGFuZGxlZFNlbWFwaG9yZWAgZnJvbSBib3RoIGBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDYAorICAgICAgICBhbmQgYFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1gLCBhbmQgaW1wbGVtZW50
cyBhIG1lZGlhIHNhbXBsZSBjYWNoZSBtZWNoYW5pc20gaW4gYFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDYAorICAgICAgICB0byBlbnN1cmUgdGhhdCAiQ29kZWQgRnJhbWUgUHJvY2Vzc2luZyIg
c3RlcHMgZXhlY3V0ZSBhZnRlciBgU291cmNlQnVmZmVyUHJpdmF0ZWAgaGFzIGhhbmRsZWQgdGhl
CisgICAgICAgIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgYW5kIGVuYWJsZWQgdmlkZW8vYXVkaW8g
dHJhY2tzLiBXaXRob3V0IHRoZSBjYWNoZSBtZWNoYW5pc20sIHNvbWUgbWVkaWEKKyAgICAgICAg
c2FtcGxlcyBmb2xsb3dpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgbWF5IGJlIGRyb3Bw
ZWQgd2hlbiB3ZSBydW4gYFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDYAorICAgICAgICBpbiB0
aGUgR1BVIHByb2Nlc3MsIGFuZCB0aGUgbWVkaWEgZWxlbWVudCB3b24ndCBmaXJlICJjYW5wbGF5
dGhyb3VnaCIgZXZlbnQgYmVjYXVzZSBpdCBjYW5ub3QgY2hhbmdlCisgICAgICAgIGl0cyByZWFk
eSBzdGF0ZSB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBIQVZFX01FVEFEQVRBLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWxzbyBpbXBsZW1lbnRzIHRoZSBtZWNoYW5pc20gdG8gbWFrZSBzdXJlIGBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kQ29tcGxldGVkKClgCisgICAgICAgIHJ1
bnMgYWZ0ZXIgYWxsIG1lZGlhIHNhbXBsZXMgaGF2ZSBnb25lIHRocm91Z2ggdGhlICJDb2RlZCBG
cmFtZSBQcm9jZXNzaW5nIiBzdGVwcywgc28gdGhhdCB0aGUgc291cmNlCisgICAgICAgIGJ1ZmZl
ciBvYmplY3Qgd2lsbCBmaXJlICJ1cGRhdGVlbmQiIGV2ZW50IGFmdGVyIHRoZSBwYXJzZXIgaGFz
IGNvbXBsZXRlZGx5IHBhcnNlZCB0aGUgYXBwZW5kZWQgYnVmZmVyLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICBBZGQgYSBwYXJhbWV0ZXIgIkNvbXBsZXRpb25IYW5kbGVyIiB0byBub3Rp
ZnkgdGhlIGNhbGxlciB0aGF0IHRoZSBwYXJzZXIgaGFzIHBhcnNlZCB0aGUgd2hvbGUgYnVmZmVy
LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICBBZnRlciBgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudGAgaGFzIGRvbmUgdGhlIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgaW5pdGlh
bGl6YXRpb24gc2VnbWVudCwgd2UgbmVlZCB0bworICAgICAgICBwdXNoIHRoZSBjYWNoZWQgbWVk
aWEgc2FtcGxlcyAoaWYgYW55KSB0byBgU291cmNlQnVmZmVyUHJpdmF0ZWAgdG8gcnVuIHRoZSAi
Q29kZWQgRnJhbWUgUHJvY2Vzc2luZyIgc3RlcHMuCisgICAgICAgIEFuZCB3ZSBuZWVkIHRvIGNh
bGwgImFwcGVuZENvbXBsZXRlZCgpIiBpZiB0aGVyZSBpcyBhIHBlbmRpbmcgY2FsbGJhY2suCisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSWQpOgorICAgICAgICBgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNg
IG5lZWRzIHRvIGNhY2hlIHRoZSBtZWRpYSBzYW1wbGUgaWYgdGhlIGluaXRpYWxpemF0aW9uIHNl
Z21lbnQgaGFzIG5vdCBiZWVuCisgICAgICAgIHByb2Nlc3NlZCBieSBgU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudGAgeWV0LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmFwcGVuZCk6CisgICAgICAgIFdlIG5lZWQgdG8gcG9zdHBvbmUgdGhlICJhcHBlbmRD
b21wbGV0ZWQoKSIgY2FsbGJhY2sgaWYgdGhlcmUgYXJlIGNhY2hlZCBtZWRpYSBzYW1wbGVzLgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBs
ZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFZp
ZGVvTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKTogRGVsZXRlZC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06On5Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisKIDIwMjEtMDEtMjUgIEpv
aG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBVc2UgZGlm
ZmVyZW50IHdlbGwta25vd24gbG9jYXRpb25zIGZvciB0cmlnZ2VyaW5nIGFuZCByZXBvcnRpbmcg
YXR0cmlidXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZmEwOTRmMmFkODMwOGNhNGY4NDE3MmI1OTYyYTgzODVm
Njc5NWRiZi4uZDVlYzhhYmQwMGRmMTUwYWRlNDRkYmJiOWVlMDlhN2VhY2Y4ZDZhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMS0yNyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFVQXVtNU0VdIEEgdmlkZW8gZWxlbWVudCBkb2VzIG5vdCBm
aXJlIOKAnGNhbnBsYXl0aHJvdWdo4oCdIGV2ZW50IGlmIFNvdXJjZUJ1ZmZlci5hYm9ydCgpIGlz
IGNhbGxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwOTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJjZSk6CisKIDIw
MjEtMDEtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0dQVSBQcm9jZXNzXSBXZWIgcHJvY2VzcyBzaG91bGQgYmUgdGVybWluYXRlZCBpZiBEaXNw
bGF5TGlzdFJlYWRlckhhbmRsZSBhZHZhbmNlcyBwYXN0IDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAppbmRleCBkNjhjMzkzZDRmNWU1
ZmY1ODg0ODM1ZDY5ZDJjNGIxODQ4NDUxYTkyLi5iMjUzZGRmYzg2OGZlZDU5ZmM2ZDZjNWRhZmNi
ZDY3N2M4MjQxOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8d3RmL1R5cGVD
YXN0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgotI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiBPQkpDX0NMQVNT
IEFWQXNzZXQ7CiBPQkpDX0NMQVNTIEFWU3RyZWFtRGF0YVBhcnNlcjsKQEAgLTU0LDcgKzUzLDcg
QEAgcHVibGljOgogICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZXIuZ2V0KCk7IH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5
cGU6OkFWRk9iakM7IH0KLSAgICB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYmLCBBcHBlbmRGbGFn
cyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZERhdGEoU2VnbWVu
dCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxh
Z3M6Ok5vbmUpIGZpbmFsOwogICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkgZmluYWw7
CiAgICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1aW50
NjRfdCkgZmluYWw7CiAgICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1
aW50NjRfdCkgZmluYWw7CkBAIC04MSw4ICs4MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rp
c2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKICAg
ICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07CiAKLSAgICBCb3g8QmluYXJ5
U2VtYXBob3JlPiBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZTsKLQog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4g
bV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0KaW5kZXggYmVjNGU5ZDZjMGFlNmU2YTM4M2EwMjJlMWVhMWE1ZDllYTMzNTMxZC4uMWFkNGRh
N2UwYzI1ZGI1MjA3MmNiMmUwYjc5NDYyYzFhNDNkMjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMDAsMTggKzIw
MCwxNiBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZAogU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiAgICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCiAgICAgLCBtX2Rl
bGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5p
dFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OnRoaXNdKSkKLSAgICAsIG1faW5pdGlh
bGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlKEJveDxCaW5hcnlTZW1hcGhvcmU+Ojpj
cmVhdGUoKSkKIHsKIH0KIAogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMoKQogewotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVk
U2VtYXBob3JlLT5zaWduYWwoKTsKICAgICBtX2RlbGVnYXRlLmdldCgpLnBhcmVudCA9IG51bGxw
dHI7CiAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07CiB9CiAKLXZvaWQgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQXBwZW5kRmxhZ3Mg
ZmxhZ3MpCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVu
dCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
ciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2VnbWVudC50YWtlVmVjdG9yKCkpOwogICAgIGF1dG8gbnNEYXRhID0gc2hh
cmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CkBAIC0yMjAsMTEgKzIxOCwxMSBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIEFwcGVu
ZEZsYWdzIGZsYWdzKQogICAgIGVsc2UKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURh
dGE6bnNEYXRhLmdldCgpXTsKICAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSBmYWxzZTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmZsdXNoUGVuZGluZ01lZGlhRGF0YSgpCiB7Ci0gICAgbV9pbml0aWFsaXphdGlvblNlZ21l
bnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgIFttX3BhcnNlciBwcm92aWRlUGVu
ZGluZ01lZGlhRGF0YV07CiB9CiAKQEAgLTI0MiwxNCArMjQwLDEwIEBAIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCiB7CiAgICAgbV9wYXJzZXJTdGF0
ZVdhc1Jlc2V0ID0gdHJ1ZTsKICAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6
YXRpb25TZWdtZW50ID0gdHJ1ZTsKLQotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5k
bGVkU2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjppbnZhbGlkYXRlKCkKIHsKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxl
ZFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0KICAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKICAg
ICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKICAgICBtX3BhcnNlciA9IG51bGxwdHI7CkBAIC0zMDIs
MTMgKzI5Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJl
YW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgICAgIC8vIEZJWE1FKDEyNTE2
MSkgICAgOiBBZGQgVGV4dFRyYWNrIHN1cHBvcnQKICAgICAgICAgfQogCi0gICAgICAgIG1fZGlk
UGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21lbnQpLCBbdGhpcywg
c3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgICAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgICAgIH0pOworICAg
ICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50
KSk7CiAgICAgfSk7Ci0KLSAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFsaXphdGlvbiBzZWdt
ZW50IGlzIGhhbmRsZWQKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFw
aG9yZS0+d2FpdCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZEZh
aWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKiBlcnJvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IGQ3
YTdiNjJmNzcxMjY4NjdjYWI1OTc1ODI1NzUxNWU2ZDhkNzExMTcuLjE0ZTQ2Y2Y3ZjY3NDNjYTJi
ZmQ2MTZjOWZmOTIwMWFlNGNmNGU5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2luY2x1ZGUgIkdl
bmVyaWNUYXNrUXVldWUuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKICNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZ3JvdXAuaD4K
QEAgLTEzOCw5ICsxMzksOSBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8U291cmNlQnVmZmVy
UGFyc2VyPiYmKTsKIAogICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICB2b2lkIGRpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEo
SW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOwogICAgIHZvaWQgZGlkRW5jb3VudGVyRXJyb3JEdXJp
bmdQYXJzaW5nKGludDMyX3QpOwotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNr
SUQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSk7CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVk
aWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsK
IAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBhcHBlbmQo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOwpAQCAtMTgyLDYgKzE4MywxMSBAQCBwcml2
YXRlOgogICAgIFdlYWtQdHJGYWN0b3J5PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBtX2Fw
cGVuZFdlYWtGYWN0b3J5OwogCiAgICAgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4gbV9wYXJzZXI7
CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxsYmFjayB7IGZhbHNlIH07Cisg
ICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlPj4+IG1fbWVkaWFT
YW1wbGVzOworICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fbWVkaWFTYW1wbGVUYXNrUXVl
dWU7CisKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fZGlzcGxh
eUxheWVyOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPiwgRGVm
YXVsdEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9hdWRpb1JlbmRlcmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNWE0MjIyMjBiZTVmZWM2NjAw
ODQ4MTJkYjJjNzRiOGY2MDNiNGE1ZC4uZDhiZjhmYTFhN2I0ZjM3YWJjM2VjZjZkM2QxYmRjNGZl
OGE3Y2VlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KQEAgLTMwOCwxNCArMzA4LDEwIEBAIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDCiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwgbWFrZVdlYWtQdHIo
KnRoaXMpKTsKIAotICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNh
bGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoSW5pdGlhbGl6YXRp
b25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEluaXRpYWxp
emF0aW9uU2VnbWVudCYmIHNlZ21lbnQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFr
VGhpcy0+ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSk7CiAgICAg
fSk7CiAKICAgICBtX3BhcnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2Fs
bGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChpbnQzMl90IGVycm9yQ29kZSkg
bXV0YWJsZSB7CkBAIC0zMjQsMTAgKzMyMCwxMCBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwog
ICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhlcnJv
ckNvZGUpOwogICAgIH0pOwogCi0gICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFD
YWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFJlZjxNZWRpYVNhbXBsZT4m
JiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSBtdXRh
YmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgdWlu
dDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAg
ICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoV1RGTW92ZShzYW1w
bGUpLCB0cmFja0lELCBtZWRpYVR5cGUpOworICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFByb3Zp
ZGVNZWRpYURhdGFGb3JUcmFja0lkKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJZCwgbWVkaWFUeXBl
KTsKICAgICB9KTsKIH0KIApAQCAtMzQ2LDE0ICszNDIsMTUgQEAgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAKICAgICBpZiAobV9oYXNT
ZXNzaW9uU2VtYXBob3JlKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgp
OworCisgICAgbV9tZWRpYVNhbXBsZVRhc2tRdWV1ZS5jbG9zZSgpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFs
aXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KQogewog
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBpZiAoIW1fbWVkaWFTb3VyY2Up
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzY0LDcgKzM2MSw2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVuCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIWNvZGVjc01lZXRIYXJkd2FyZURlY29k
ZVJlcXVpcmVtZW50cyh7eyAqY29kZWMgfX0sIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5tZWRp
YUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpKSkgewogICAgICAgICAgICAg
ICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0zOTEsNyArMzg3LDQxIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVuCiAgICAg
aWYgKG1fbWVkaWFTb3VyY2UpCiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5jaGFy
YWN0ZXJpc3RpY3NDaGFuZ2VkKCk7CiAKLSAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KFdURk1vdmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBt
X2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IGZhbHNlOworICAgIGRpZFJlY2VpdmVJ
bml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmICAobV9tZWRpYVNhbXBsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2lu
aXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJpbml0aWFsaXphdGlvbiBzZWdtZW50IGlzIGhhbmRsZWQiKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fbWVkaWFTYW1wbGVU
YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyld
IHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBmb3IgKGF1dG8gdHJhY2tJZE1lZGlhU2FtcGxlUGFpciA6IG1fbWVkaWFT
YW1wbGVzKSB7CisgICAgICAgICAgICAgICAgYXV0byB0cmFja0lkID0gdHJhY2tJZE1lZGlhU2Ft
cGxlUGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICBhdXRvIG1lZGlhU2FtcGxlID0gdHJhY2tJ
ZE1lZGlhU2FtcGxlUGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgaWYgKHRyYWNrSWQgPT0g
bV9lbmFibGVkVmlkZW9UcmFja0lEIHx8IG1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJ
ZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlh
U2FtcGxlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNhbXBsZShtZWRp
YVNhbXBsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBtX21lZGlhU2FtcGxlcy5jbGVhcigpOworICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNl
Z21lbnRJc0hhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCAiaW5pdGlhbGl6YXRpb24gc2VnbWVudCBpcyBoYW5kbGVkIik7CisKKyAgICAgICAgICAg
IGlmIChtX2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxsYmFjaykgeworICAgICAgICAgICAg
ICAgIG1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNrID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgYXBwZW5kQ29tcGxldGVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOwor
ICAgIH0pOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50
ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCBjb2RlKQpAQCAtNDA0LDExICs0MzQsMTYgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQ
YXJzaW5nKGludDMyX3QgY29kZSkKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lE
LCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRp
YVNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKG1lZGlhVHlwZSk7CisgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2Vn
bWVudElzSGFuZGxlZCkgeworICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgbWVkaWFT
YW1wbGUuZ2V0KCkpOworICAgICAgICBtX21lZGlhU2FtcGxlcy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIodHJhY2tJZCwgV1RGTW92ZShtZWRpYVNhbXBsZSkpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIGlmICh0cmFja0lEICE9IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCAmJiAhbV9hdWRp
b1JlbmRlcmVycy5jb250YWlucyh0cmFja0lEKSkgeworICAgIGlmICh0cmFja0lkICE9IG1fZW5h
YmxlZFZpZGVvVHJhY2tJRCAmJiAhbV9hdWRpb1JlbmRlcmVycy5jb250YWlucyh0cmFja0lkKSkg
ewogICAgICAgICAvLyBGSVhNRSgxMjUxNjEpOiBXZSBkb24ndCBoYW5kbGUgdGV4dCB0cmFja3Ms
IGFuZCBwYXNzaW5nIHRoaXMgc2FtcGxlIHVwIHRvIFNvdXJjZUJ1ZmZlcgogICAgICAgICAvLyB3
aWxsIGp1c3QgY29uZnVzZSBpdHMgc3RhdGUuIERyb3AgdGhpcyBzYW1wbGUgdW50aWwgd2UgY2Fu
IGhhbmRsZSB0ZXh0IHRyYWNrcyBwcm9wZXJseS4KICAgICAgICAgcmV0dXJuOwpAQCAtNTEwLDcg
KzU0NSw3IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbERhdGFQYXJzZXJRdWV1ZSgp
CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4mJiBkYXRhKQogewotICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBs
ZW5ndGggPSAiLCBkYXRhLnNpemUoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
ZGF0YSBsZW5ndGggPSAiLCBkYXRhLnNpemUoKSk7CiAKICAgICBBU1NFUlQoIW1faGFzU2Vzc2lv
blNlbWFwaG9yZSk7CiAgICAgQVNTRVJUKCFtX2Fib3J0U2VtYXBob3JlKTsKQEAgLTU2MSwxMiAr
NTk2LDE5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IHRydWU7CiAg
ICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgpKTsKIAotICAg
IGRpc3BhdGNoX2FzeW5jKGdsb2JhbERhdGFQYXJzZXJRdWV1ZSgpLCBbZGF0YSA9IFdURk1vdmUo
ZGF0YSksIHdlYWtUaGlzID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlz
KSwgcGFyc2VyID0gbV9wYXJzZXIsIGlzQXBwZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5kaW5nR3Jv
dXBdICgpIG11dGFibGUgewotICAgICAgICBwYXJzZXItPmFwcGVuZERhdGEoV1RGTW92ZShkYXRh
KSk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCksIFtkYXRhID0g
V1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQ
dHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwgaXNBcHBlbmRpbmdHcm91cCA9IG1faXNBcHBl
bmRpbmdHcm91cF0oKSBtdXRhYmxlIHsKKyAgICAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1v
dmUoZGF0YSksIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0g
eworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMtPm1fbWVkaWFTYW1wbGVzLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9oYXNQZW5kaW5nQXBw
ZW5kQ29tcGxldGVkQ2FsbGJhY2sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlz
XSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgd2Vha1RoaXMt
PmFwcGVuZENvbXBsZXRlZCgpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgICAg
ICBkaXNwYXRjaF9ncm91cF9sZWF2ZShpc0FwcGVuZGluZ0dyb3VwLmdldCgpKTsKICAgICB9KTsK
QEAgLTU3NCw2ICs2MTYsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBl
bmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kQ29tcGxldGVkKCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOwogICAgIGlmIChtX2Fib3J0U2VtYXBob3JlKSB7CiAgICAgICAgIG1fYWJvcnRTZW1h
cGhvcmUtPnNpZ25hbCgpOwogICAgICAgICBtX2Fib3J0U2VtYXBob3JlID0gbmlsOwpAQCAtNjA3
LDYgKzY1MCw5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KCkKICAg
ICB9CiAKICAgICBtX3BhcnNlci0+cmVzZXRQYXJzZXJTdGF0ZSgpOworICAgIG1fbWVkaWFTYW1w
bGVzLmNsZWFyKCk7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSBmYWxz
ZTsKKyAgICBtX21lZGlhU2FtcGxlVGFza1F1ZXVlLmNhbmNlbEFsbFRhc2tzKCk7CiAKICAgICBk
aXNwYXRjaF9ncm91cF93YWl0KG1faXNBcHBlbmRpbmdHcm91cC5nZXQoKSwgRElTUEFUQ0hfVElN
RV9GT1JFVkVSKTsKIH0KQEAgLTEyMjgsNiArMTI3NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5ZXIoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIGxh
eWVyCiAgICAgaWYgKGxheWVyID09IG1fZGlzcGxheUxheWVyKQogICAgICAgICByZXR1cm47CiAK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICIhIWxheWVyID0gIiwgISFsYXllcik7CiAg
ICAgQVNTRVJUKCFsYXllciB8fCAhbV9kZWNvbXByZXNzaW9uU2Vzc2lvbiB8fCBoYXNTZWxlY3Rl
ZFZpZGVvKCkpOwogCiAgICAgaWYgKG1fZGlzcGxheUxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5oCmluZGV4IDM0ODI5MzQ5MzI0NDIxYzU3ZTc2ZDZhYzkwZmFjOTljYjU2NmY3MzYuLjYxOGJm
NDM0YjhiYmEyMzU0ZDUwM2IzZjNhNDQ0OTc0YmYxMDUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgPiBtX3NlZ21lbnQ7CiAgICAg
fTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmREYXRhKFNlZ21lbnQmJiwgQXBwZW5kRmxhZ3Mg
PSBBcHBlbmRGbGFnczo6Tm9uZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmREYXRhKFNl
Z21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9LCBBcHBlbmRGbGFn
cyA9IEFwcGVuZEZsYWdzOjpOb25lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoUGVuZGlu
Z01lZGlhRGF0YSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSUQoYm9vbCwgdWludDY0X3QpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQodWludDY0X3QpID0gMDsKQEAgLTk1LDcgKzk1
LDcgQEAgcHVibGljOgogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
LgogICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2Vn
bWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKKyAgICB1c2luZyBEaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxp
emF0aW9uU2VnbWVudCYmKT47CiAgICAgdm9pZCBzZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YUNhbGxiYWNrKERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA2
Y2U5NThmN2E0NmVjODFlOTRjZmI5MjEwYWY4OTZmM2Q5NTM3ZTA5Li42NjNhODIxZTE1NWYxYWMy
ZmNiYjM5ZWYwZmQ5OGVlYjJjNzJlYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcApAQCAtNTk4LDcgKzU5OCw2IEBAIHN0YXRpYyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpD
YWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayBjYWxsT25NYWluVGhyZWFkQ2FsbGJhCiAKIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQogICAgIDogbV9yZWFk
ZXIoV1RGOjptYWtlVW5pcXVlUmVmPFN0cmVhbWluZ1ZlY3RvclJlYWRlcj4oKSkKLSAgICAsIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlKEJveDxCaW5hcnlTZW1hcGhv
cmU+OjpjcmVhdGUoKSkKICAgICAsIG1fY2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2soY2FsbE9u
TWFpblRocmVhZENhbGxiYWNrKCkpCiB7CiAgICAgaWYgKGlzV2VibVBhcnNlckF2YWlsYWJsZSgp
KQpAQCAtNjA3LDEzICs2MDYsMTQgQEAgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291cmNlQnVm
ZmVyUGFyc2VyV2ViTSgpCiAKIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06On5Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNKCkKIHsKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFw
aG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5k
RGF0YShTZWdtZW50JiYgc2VnbWVudCwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhZ3MpCit2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgYXBw
ZW5kRmxhZ3MpCiB7Ci0gICAgaWYgKCFtX3BhcnNlcikKKyAgICBpZiAoIW1fcGFyc2VyKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmxhZ3MoIiwgYXBwZW5kRmxh
Z3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkgPyAiRGlzY29udGludWl0eSIgOiAiIiwg
IiksIHNpemUoIiwgc2VnbWVudC5zaXplKCksICIpIik7CiAKQEAgLTYyNyw2ICs2MjcsNyBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQs
IEFwcGVuZEZsYWdzIGFwcGVuZEZsYQogICAgICAgICBtX3N0YXR1cyA9IG1fcGFyc2VyLT5GZWVk
KHRoaXMsICZtX3JlYWRlcik7CiAgICAgICAgIGlmIChtX3N0YXR1cy5vaygpIHx8IG1fc3RhdHVz
LmNvZGUgPT0gU3RhdHVzOjprRW5kT2ZGaWxlIHx8IG1fc3RhdHVzLmNvZGUgPT0gU3RhdHVzOjpr
V291bGRCbG9jaykgewogICAgICAgICAgICAgbV9yZWFkZXItPnJlY2xhaW1TZWdtZW50cygpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC02NTcsMTEgKzY1OCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIEFwcGVuZEZsYWdzIGFwcGVuZEZsYQog
ICAgICAgICBpZiAobV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjaykKICAg
ICAgICAgICAgIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soY29kZSk7
CiAgICAgfSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OmZsdXNoUGVuZGluZ01lZGlhRGF0YSgpCiB7Ci0gICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwogfQogCiB2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lE
KGJvb2wsIHVpbnQ2NF90KQpAQCAtNjg2LDE2ICs2ODgsMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpyZXNldFBhcnNlclN0YXRlKCkKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVu
dCA9IG51bGxwdHI7CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9IGZh
bHNlOwogICAgIG1fY3VycmVudEJsb2NrLnJlc2V0KCk7Ci0KLSAgICBtX2luaXRpYWxpemF0aW9u
U2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUik7CiAKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNl
bWFwaG9yZS0+c2lnbmFsKCk7Ci0KICAgICBtX3BhcnNlciA9IG51bGxwdHI7CiAgICAgbV90cmFj
a3MuY2xlYXIoKTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51bGxwdHI7CkBAIC03
MTcsNyArNzE1LDYgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp0cmFja0RhdGFGb3JU
cmFja051bWJlcih1aW50NjRfdCB0cmFja051bWJlcikgLT4gVHIKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotCiBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4o
Y29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCiB7CiAgICAg
VU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKQEAgLTgzNywxMyArODM0LDggQEAgU3RhdHVzIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYg
bWV0YWRhdGEsIGMKIAogICAgIGlmIChtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVk
ICYmIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykgewogICAgICAgICBtX2Nh
bGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGluaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURk1vdmUoKm1faW5pdGlhbGl6YXRpb25T
ZWdtZW50KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGFDYWxsYmFjayhXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2VnbWVudCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgICAgICAgICBtX2luaXRpYWxp
emF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZN
b3ZlKGluaXRpYWxpemF0aW9uU2VnbWVudCkpOwogICAgICAgICB9KTsKLQotICAgICAgICAvLyBX
YWl0IHVudGlsIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IGlzIGhhbmRsZWQKLSAgICAgICAg
bV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPndhaXQoKTsKICAgICB9
CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9IGZhbHNlOwogICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uaAppbmRleCA2YjYyZGMwNjU5ZTZjODYxMTJlM2RhZjQ2NWJhNjQxZTM5OWZkNDBjLi5hZjYz
NGJiY2NhOTIwMmU4NDYxMWYyMDhiZjY1ZGI3NjgyMzJkMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5oCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNj
cmlwdGlvblJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQmxvY2tCdWZmZXIgKkNNQmxvY2tC
dWZmZXJSZWY7CkBAIC03Myw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBjb25zdCB3ZWJtOjpTdGF0
dXMmIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAKICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBUeXBlOjpXZWJNOyB9Ci0gICAgdm9pZCBhcHBlbmREYXRhKFNlZ21l
bnQmJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgZmluYWw7CisgICAgdm9pZCBh
cHBlbmREYXRhKFNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9
LCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKICAgICB2b2lkIGZsdXNo
UGVuZGluZ01lZGlhRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSUQoYm9vbCwgdWludDY0X3QpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkUHJv
dmlkZU1lZGlhZGF0YUZvclRyYWNrSUQodWludDY0X3QpIGZpbmFsOwpAQCAtMjY1LDcgKzI2NCw2
IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fcmV3aW5kVG9Qb3NpdGlvbjsK
ICAgICBmbG9hdCBtX21pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9uIHsgMiB9OwogCi0gICAgQm94
PEJpbmFyeVNlbWFwaG9yZT4gbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhv
cmU7CiAgICAgQ2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2sgbV9jYWxsT25DbGllbnRUaHJlYWRD
YWxsYmFjazsKIAogICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFG
b3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCAyNGZiN2FkZTQ0OGE5YWRjZjEzYThhZDAz
MTlhMjUwZmExZjQxM2IzLi5kMGY5YjIwMDkwZGQwNzFmZDJlYThlOWYyNzkxZTgyNWUxYWQ4ZjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTEyNCw5ICsxMjQsOCBAQCB2
b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2UoUmV0YWluUHRyPE1UUGx1Z2lu
Qnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAgICAgICBNZWRpYVRyYWNrUmVhZGVyOjpzdG9yYWdl
UXVldWUoKS5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfSk7CiAKLSAgICBwYXJz
ZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oU291cmNlQnVmZmVyUGFyc2VyOjpJbml0aWFsaXphdGlv
blNlZ21lbnQmJiBpbml0aWFsaXphdGlvblNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgIHBhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XShTb3VyY2VCdWZmZXJQYXJzZXI6OkluaXRpYWxpemF0aW9uU2VnbWVudCYmIGluaXRpYWxpemF0
aW9uU2VnbWVudCkgewogICAgICAgICBkaWRQYXJzZVRyYWNrcyhXVEZNb3ZlKGluaXRpYWxpemF0
aW9uU2VnbWVudCksIG5vRXJyKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
KTsKIAogICAgIHBhcnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJh
Y2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0odWludDY0X3QgZXJyb3JD
b2RlKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNWYzOGRiMjdhNjhiOGIzOTIwZWJjOWM4YWU2NmEyNDYxZmQ2ZmY4MS4u
NWUzOGZjNmIyNzUyNDgzY2MyYzdmMjZiNDE2YzI5NmFhNjIwYzBhNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTAxLTI3ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVVBdW01TRV0gQSB2aWRlbyBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxh
eXRocm91Z2jigJ0gZXZlbnQgaWYgU291cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGdwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1
ZmZlci1hZnRlci1hYm9ydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMS0yNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBQQ006IFVzZSBkaWZmZXJlbnQgd2VsbC1rbm93biBsb2NhdGlv
bnMgZm9yIHRyaWdnZXJpbmcgYW5kIHJlcG9ydGluZyBhdHRyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dw
dS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzlhODE0YmIwMjljMjczM2I5YzZjYWI4
NGQyNTRiZDgwMjA2Mzc3ZS4uMzYzNzdjYzIxYjdlYzU2YjgwODBmNjdmNDRiN2I5YjNlZGE2ZGU3
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNDYsNyAr
MzQ2LDYgQEAgbWVkaWEvbWVkaWEtY29udHJvbGxlci10aW1lLWNvbnN0YW50Lmh0bWwgWyBUaW1l
b3V0IF0KIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItdGltZS5odG1sIFsgVGltZW91dCBdCiBtZWRp
YS9tZWRpYS1jb250cm9sbGVyLXVucGF1c2UuaHRtbCBbIFRpbWVvdXQgXQogbWVkaWEvbWVkaWEt
aGlnaGVyLXByaW8tYXVkaW8tc3RyZWFtLmh0bWwgWyBTa2lwIF0KLW1lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2Utd2VibS5odG1sIFsgRmFpbHVyZSBdCiBtZWRpYS9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLXdlYm0taW5pdC1pbnNpZGUtc2VnbWVudC5odG1sIFsgRmFpbHVyZSBdCiBt
ZWRpYS9tZWRpYS12b2x1bWUtc2xpZGVyLXJlbmRlcmVkLWJlbG93Lmh0bWwgWyBTa2lwIF0KIG1l
ZGlhL21lZGlhLXZvbHVtZS1zbGlkZXItcmVuZGVyZWQtbm9ybWFsLmh0bWwgWyBTa2lwIF0KQEAg
LTUxOSw3ICs1MTgsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2Fw
dHVyZS1zdHJlYW1zIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1idWZmZXJlZC5odG1sIFsgRmFpbHVyZSBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jaGFuZ2V0
eXBlLmh0bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLWR1cmF0aW9uLWJvdW5kYXJ5Y29uZGl0aW9ucy5odG1sIFsg
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1wbGF5Lmh0bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXJlbW92ZS5odG1sIFsgRmFpbHVyZSBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21zdC1jb250ZW50LWhpbnQvaWRsaGFy
bmVzcy53aW5kb3cuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tc3QtY29udGVudC1oaW50L01lZGlhU3RyZWFtVHJhY2stY29udGVudEhpbnQuaHRtbCBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXIt
YWZ0ZXItYWJvcnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMTEzNzNjN2MxNTc2MDMxZDYy
OGY3MmFhMGUxNWI3ODIwMDJlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9y
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSBv
ZiB0aGUgU291cmNlQnVmZmVyIHRvIHJlc2V0IHRoZSBwYXJzZXIgYWZ0ZXIgYW4gYWJvcnQoKS4g
QSBTb3VyY2VCdWZmZXIgaW4gdGhpcyBzdGF0ZSBzaG91bGQgYmUgYWJsZSB0byBhY2NlcHQgYSBu
ZXcgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBhbmQgYSBuZXcgbWVkaWEgc2VnbWVudCwgYW5kIHRo
ZSB2aWRlbyBlbGVtZW50IHNob3VsZCBmaXJlICJjYW5wbGF5dGhyb3VnaCIgZXZlbnQuCisKK1JV
Tih2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSkpCitFVkVOVChzb3VyY2Vv
cGVuKQorUlVOKHNvdXJjZS5kdXJhdGlvbiA9IGxvYWRlci5kdXJhdGlvbigpKQorUlVOKHNvdXJj
ZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIobG9hZGVyLnR5cGUoKSkpCitSVU4oc291
cmNlQnVmZmVyLmFib3J0KCkpCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIu
aW5pdFNlZ21lbnQoKSkpCitFVkVOVCh1cGRhdGUpCitBcHBlbmQgYSBtZWRpYSBzZWdtZW50Lgor
UlVOKHNvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVyLm1lZGlhU2VnbWVudCgwKSkpCitF
VkVOVCh1cGRhdGUpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VORCBPRiBURVNUCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1h
cHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFlOWI2NmJmMmJhMjdkM2M5ZjI5Yzc5YTg0MWFlY2RhOTFiMmY4ZDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNl
LXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bWVkaWEtc291cmNlLXdl
Ym0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1l
ZGlhLXNvdXJjZS1sb2FkZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRl
by10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBsb2FkZXI7CisgICAg
dmFyIHNvdXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworCisgICAgZnVuY3Rpb24gbG9hZGVy
UHJvbWlzZShsb2FkZXIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKKyAgICAgICAgICAgIGxvYWRlci5vbmxvYWQgPSByZXNvbHZlOworICAgICAg
ICAgICAgbG9hZGVyLm9uZXJyb3IgPSByZWplY3Q7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgbG9h
ZGVyID0gbmV3IE1lZGlhU291cmNlTG9hZGVyKCdjb250ZW50L3Rlc3QtdnA5LW1hbmlmZXN0Lmpz
b24nKTsKKyAgICAgICAgICAgIGF3YWl0IGxvYWRlclByb21pc2UobG9hZGVyKTsKKworICAgICAg
ICAgICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAgICAgICBydW4oJ3ZpZGVv
LnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKScpOworICAgICAgICAgICAgYXdhaXQg
d2FpdEZvcihzb3VyY2UsICdzb3VyY2VvcGVuJyk7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRB
bmRGYWlsKCdlcnJvcicpOworCisgICAgICAgICAgICBydW4oJ3NvdXJjZS5kdXJhdGlvbiA9IGxv
YWRlci5kdXJhdGlvbigpJyk7CisgICAgICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJj
ZS5hZGRTb3VyY2VCdWZmZXIobG9hZGVyLnR5cGUoKSknKTsKKworICAgICAgICAgICAgcnVuKCdz
b3VyY2VCdWZmZXIuYWJvcnQoKScpOworCisgICAgICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5h
cHBlbmRCdWZmZXIobG9hZGVyLmluaXRTZWdtZW50KCkpJyk7CisgICAgICAgICAgICBhd2FpdCB3
YWl0Rm9yKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZScpOworCisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoJ0FwcGVuZCBhIG1lZGlhIHNlZ21lbnQuJykKKyAgICAgICAgICAgIHJ1bignc291cmNlQnVm
ZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIubWVkaWFTZWdtZW50KDApKScpOworICAgICAgICAgICAg
YXdhaXQgd2FpdEZvcihzb3VyY2VCdWZmZXIsICd1cGRhdGUnKTsKKworICAgICAgICAgICAgZmFp
bFRlc3RJbigyMDAwKTsKKworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBs
YXl0aHJvdWdoJyk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIGZhaWxUZXN0KGBDYXVnaHQgZXhjZXB0aW9uOiAiJHtlfSJgKTsKKyAg
ICAgICAgfQorICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRp
dj4KKyAgICAgICAgVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSBvZiB0aGUgU291cmNlQnVmZmVyIHRv
IHJlc2V0IHRoZSBwYXJzZXIgYWZ0ZXIgYW4gYWJvcnQoKS4gQSBTb3VyY2VCdWZmZXIgaW4gdGhp
cyBzdGF0ZSBzaG91bGQgYmUgYWJsZSB0byBhY2NlcHQKKyAgICAgICAgYSBuZXcgaW5pdGlhbGl6
YXRpb24gc2VnbWVudCBhbmQgYSBuZXcgbWVkaWEgc2VnbWVudCwgYW5kIHRoZSB2aWRlbyBlbGVt
ZW50IHNob3VsZCBmaXJlICJjYW5wbGF5dGhyb3VnaCIgZXZlbnQuCisgICAgPC9kaXY+CisgICAg
PHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA5MjY3NmI0ZDZlMTk2NTlmMjcwMDZhODAyZTZiNjI2ZmQ0OTRjZTkyLi4zZGEwYjMxZGYy
M2EzY2FlYThiOGFkYWEyZjNjZTEyY2NjMzc5ZWYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTg3NCw2ICsxODc0LDcgQEAgd2Via2l0Lm9yZy9iLzIx
NDE1NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVt
YmVkZGVyLXAKIAogIyBUaGVzZSB0ZXN0IHJlcXVpcmVzIHN5c3RlbSBwbGF0Zm9ybSBzdXBwb3J0
LgogWyBDYXRhbGluYSBNb2phdmUgXSBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdl
Ym0uaHRtbCBbIFNraXAgXQorWyBDYXRhbGluYSBNb2phdmUgXSBtZWRpYS9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5odG1sIFsgU2tpcCBd
CiBbIENhdGFsaW5hIE1vamF2ZSBdIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2Vi
bS1pbml0LWluc2lkZS1zZWdtZW50Lmh0bWwgWyBTa2lwIF0KIFsgQ2F0YWxpbmEgTW9qYXZlIF0g
cGxhdGZvcm0vbWFjL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL3ZwOS1kZWNvZGluZ0luZm8tc3cu
aHRtbCBbIFNraXAgXQogWyBDYXRhbGluYSBNb2phdmUgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvbWVk
aWEtc291cmNlL2lzLXR5cGUtc3VwcG9ydGVkLXZwOS1jb2RlYy1jaGVjay5odG1sIFsgU2tpcCBd
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418623</attachid>
            <date>2021-01-27 22:44:02 -0800</date>
            <delta_ts>2021-04-09 14:23:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220964-20210127224401.patch</filename>
            <type>text/plain</type>
            <size>34280</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ZDg0YTJjNWM3Njkz
YjZkYWU2ZmQ1MTdiN2M0NjRmZGY2ODY5Zi4uMzNlODM2OWQ1YjM5YjM5YTIxMGUwMTM2NjE3OTYw
MmMxNmY4MTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTAxLTI3ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYGluaXRpYWxpemF0aW9uU2Vn
bWVudElzSGFuZGxlZFNlbWFwaG9yZWAgZnJvbSBib3RoIGBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDYAorICAgICAgICBhbmQgYFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1gLCBhbmQgaW1wbGVtZW50
cyBhIG1lZGlhIHNhbXBsZSBjYWNoZSBtZWNoYW5pc20gaW4gYFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDYAorICAgICAgICB0byBlbnN1cmUgdGhhdCAiQ29kZWQgRnJhbWUgUHJvY2Vzc2luZyIg
c3RlcHMgZXhlY3V0ZSBhZnRlciBgU291cmNlQnVmZmVyUHJpdmF0ZWAgaGFzIGhhbmRsZWQgdGhl
CisgICAgICAgIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgYW5kIGVuYWJsZWQgdmlkZW8vYXVkaW8g
dHJhY2tzLiBXaXRob3V0IHRoZSBjYWNoZSBtZWNoYW5pc20sIHNvbWUgbWVkaWEKKyAgICAgICAg
c2FtcGxlcyBmb2xsb3dpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgbWF5IGJlIGRyb3Bw
ZWQgd2hlbiB3ZSBydW4gYFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDYAorICAgICAgICBpbiB0
aGUgR1BVIHByb2Nlc3MsIGFuZCB0aGUgbWVkaWEgZWxlbWVudCB3b24ndCBmaXJlICJjYW5wbGF5
dGhyb3VnaCIgZXZlbnQgYmVjYXVzZSBpdCBjYW5ub3QgY2hhbmdlCisgICAgICAgIGl0cyByZWFk
eSBzdGF0ZSB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBIQVZFX01FVEFEQVRBLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWxzbyBpbXBsZW1lbnRzIHRoZSBtZWNoYW5pc20gdG8gbWFrZSBzdXJlIGBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kQ29tcGxldGVkKClgCisgICAgICAgIHJ1
bnMgYWZ0ZXIgYWxsIG1lZGlhIHNhbXBsZXMgaGF2ZSBnb25lIHRocm91Z2ggdGhlICJDb2RlZCBG
cmFtZSBQcm9jZXNzaW5nIiBzdGVwcywgc28gdGhhdCB0aGUgc291cmNlCisgICAgICAgIGJ1ZmZl
ciBvYmplY3Qgd2lsbCBmaXJlICJ1cGRhdGUiIGFuZCAidXBkYXRlZW5kIiBldmVudCBhZnRlciB0
aGUgcGFyc2VyIGhhcyBjb21wbGV0ZWRseSBwYXJzZWQgdGhlCisgICAgICAgIGFwcGVuZGVkIGJ1
ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgQWRkIGEgcGFyYW1ldGVyICJDb21w
bGV0aW9uSGFuZGxlciIgdG8gbm90aWZ5IHRoZSBjYWxsZXIgdGhhdCB0aGUgcGFyc2VyIGhhcyBw
YXJzZWQgdGhlIHdob2xlIGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmludmFsaWRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAg
ICAgQWZ0ZXIgYFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnRgIGhhcyBkb25lIHRoZSBjb25maWd1
cmF0aW9uIHdpdGggdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQsIHdlIG5lZWQgdG8KKyAgICAg
ICAgcHVzaCB0aGUgY2FjaGVkIG1lZGlhIHNhbXBsZXMgKGlmIGFueSkgdG8gYFNvdXJjZUJ1ZmZl
clByaXZhdGVgIHRvIHJ1biB0aGUgIkNvZGVkIEZyYW1lIFByb2Nlc3NpbmciIHN0ZXBzLgorICAg
ICAgICBBbmQgd2UgbmVlZCB0byBjYWxsICJhcHBlbmRDb21wbGV0ZWQoKSIgaWYgdGhlcmUgaXMg
YSBwZW5kaW5nIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKToKKyAgICAgICAgYFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDYCBuZWVkcyB0byBjYWNoZSB0aGUgbWVkaWEgc2FtcGxlIGlm
IHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IGhhcyBub3QgYmVlbgorICAgICAgICBwcm9jZXNz
ZWQgYnkgYFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnRgIHlldC4KKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQpOgorICAgICAgICBXZSBuZWVkIHRv
IHBvc3Rwb25lIHRoZSAiYXBwZW5kQ29tcGxldGVkKCkiIGNhbGxiYWNrIGlmIHRoZXJlIGFyZSBj
YWNoZWQgbWVkaWEgc2FtcGxlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpzZXRWaWRlb0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjp+U291cmNlQnVmZmVyUGFyc2VyV2ViTSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmZsdXNoUGVuZGluZ01lZGlhRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpyZXNldFBhcnNlclN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmludmFsaWRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4pOgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5oOgorCiAyMDIxLTAxLTI1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBDTTogVXNlIGRpZmZlcmVudCB3ZWxsLWtub3duIGxvY2F0aW9ucyBmb3IgdHJp
Z2dlcmluZyBhbmQgcmVwb3J0aW5nIGF0dHJpYnV0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZhMDk0ZjJhZDgz
MDhjYTRmODQxNzJiNTk2MmE4Mzg1ZjY3OTVkYmYuLmQ1ZWM4YWJkMDBkZjE1MGFkZTQ0ZGJiYjll
ZTA5YTdlYWNmOGQ2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDEtMjcgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF1bTVNFXSBBIHZp
ZGVvIGVsZW1lbnQgZG9lcyBub3QgZmlyZSDigJxjYW5wbGF5dGhyb3VnaOKAnSBldmVudCBpZiBT
b3VyY2VCdWZmZXIuYWJvcnQoKSBpcyBjYWxsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpw
YXJzZUJ5dGVTb3VyY2UpOgorCiAyMDIxLTAxLTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gV2ViIHByb2Nlc3Mgc2hvdWxk
IGJlIHRlcm1pbmF0ZWQgaWYgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUgYWR2YW5jZXMgcGFzdCAw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
LmgKaW5kZXggZDY4YzM5M2Q0ZjVlNWZmNTg4NDgzNWQ2OWQyYzRiMTg0ODQ1MWE5Mi4uYjI1M2Rk
ZmM4NjhmZWQ1OWZjNmQ2YzVkYWZjYmQ2NzdjODI0MThkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1h
cGhvcmUuaD4KIAogT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19DTEFTUyBBVlN0cmVhbURhdGFQ
YXJzZXI7CkBAIC01NCw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBBVlN0cmVhbURhdGFQYXJzZXIq
IHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CiAKICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBUeXBlOjpBVkZPYmpDOyB9Ci0gICAgdm9pZCBhcHBlbmREYXRh
KFNlZ21lbnQmJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgZmluYWw7CisgICAg
dm9pZCBhcHBlbmREYXRhKFNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmLCBB
cHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoUGVu
ZGluZ01lZGlhRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoYm9vbCwgdWludDY0X3QpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkUHJvdmlk
ZU1lZGlhZGF0YUZvclRyYWNrSUQodWludDY0X3QpIGZpbmFsOwpAQCAtODEsOCArODAsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9u
U2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxz
ZSB9OwogCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gbV9pbml0aWFsaXphdGlvblNlZ21lbnRJ
c0hhbmRsZWRTZW1hcGhvcmU7Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWZQ
dHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRl
bnRpZmllciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGJlYzRlOWQ2YzBhZTZlNmEzODNhMDIyZTFl
YTFhNWQ5ZWEzMzUzMWQuLjFhZDRkYTdlMGMyNWRiNTIwNzJjYjJlMGI3OTQ2MmMxYTQzZDI3ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbQpAQCAtMjAwLDE4ICsyMDAsMTYgQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQKIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogICAg
IDogbV9wYXJzZXIoYWRvcHROUyhbUEFMOjphbGxvY0FWU3RyZWFtRGF0YVBhcnNlckluc3RhbmNl
KCkgaW5pdF0pKQogICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFy
c2VyTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDp0
aGlzXSkpCi0gICAgLCBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZShC
b3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCkpCiB7CiB9CiAKIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHsKLSAgICBtX2luaXRpYWxp
emF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgbV9kZWxlZ2F0
ZS5nZXQoKS5wYXJlbnQgPSBudWxscHRyOwogICAgIFttX2RlbGVnYXRlIGludmFsaWRhdGVdOwog
fQogCi12b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYm
IHNlZ21lbnQsIEFwcGVuZEZsYWdzIGZsYWdzKQordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8g
c2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlZ21lbnQudGFrZVZlY3RvcigpKTsK
ICAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZERhdGEtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtMjIwLDEx
ICsyMTgsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNl
Z21lbnQmJiBzZWdtZW50LCBBcHBlbmRGbGFncyBmbGFncykKICAgICBlbHNlCiAgICAgICAgIFtt
X3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKV07CiAgICAgbV9wYXJzZXJTdGF0
ZVdhc1Jlc2V0ID0gZmFsc2U7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEoKQogewotICAg
IG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKICAg
ICBbbV9wYXJzZXIgcHJvdmlkZVBlbmRpbmdNZWRpYURhdGFdOwogfQogCkBAIC0yNDIsMTQgKzI0
MCwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUo
KQogewogICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNldCA9IHRydWU7CiAgICAgbV9kaXNjYXJkU2Ft
cGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCA9IHRydWU7Ci0KLSAgICBtX2luaXRp
YWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwotCiAgICAgW21fZGVs
ZWdhdGUgaW52YWxpZGF0ZV07CiAgICAgbV9kZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgbV9wYXJz
ZXIgPSBudWxscHRyOwpAQCAtMzAyLDEzICsyOTYsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAgICAg
ICAgICAgICAvLyBGSVhNRSgxMjUxNjEpICAgIDogQWRkIFRleHRUcmFjayBzdXBwb3J0CiAgICAg
ICAgIH0KIAotICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RG
TW92ZShzZWdtZW50KSwgW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAg
ICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25h
bCgpOwotICAgICAgICB9KTsKKyAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNh
bGxiYWNrKFdURk1vdmUoc2VnbWVudCkpOwogICAgIH0pOwotCi0gICAgLy8gV2FpdCB1bnRpbCB0
aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBpcyBoYW5kbGVkCi0gICAgbV9pbml0aWFsaXphdGlv
blNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPndhaXQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJv
ciogZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaAppbmRleCBkN2E3YjYyZjc3MTI2ODY3Y2FiNTk3NTgyNTc1MTVlNmQ4ZDcx
MTE3Li4xNGU0NmNmN2Y2NzQzY2EyYmZkNjE2YzlmZjkyMDFhZTRjZjRlOWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShBVkZPVU5E
QVRJT04pCiAKKyNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiU291cmNl
QnVmZmVyUGFyc2VyLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2luY2x1
ZGUgPGRpc3BhdGNoL2dyb3VwLmg+CkBAIC0xMzgsOSArMTM5LDkgQEAgcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDKiwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7CiAKICAgICB1c2luZyBJbml0aWFsaXph
dGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNl
Z21lbnQ7Ci0gICAgdm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlv
blNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsKICAgICB2b2lk
IGRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90KTsKLSAgICB2b2lkIGRpZFBy
b3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJh
Y2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJy
aWRlcwogICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSBmaW5hbDsKQEAg
LTE4Miw2ICsxODMsMTEgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyRmFjdG9yeTxTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQz4gbV9hcHBlbmRXZWFrRmFjdG9yeTsKIAogICAgIFJlZjxTb3VyY2VC
dWZmZXJQYXJzZXI+IG1fcGFyc2VyOworICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJ
c0hhbmRsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNQZW5kaW5nQXBwZW5kQ29tcGxldGVk
Q2FsbGJhY2sgeyBmYWxzZSB9OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxN
ZWRpYVNhbXBsZT4+PiBtX21lZGlhU2FtcGxlczsKKyAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVy
PiBtX21lZGlhU2FtcGxlVGFza1F1ZXVlOworCiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRf
R1VBUkRTX0JFR0lOCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPEFWU2FtcGxlQnVm
ZmVyQXVkaW9SZW5kZXJlcj4sIERlZmF1bHRIYXNoPHVpbnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fYXVkaW9SZW5kZXJlcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmlu
ZGV4IDVhNDIyMjIwYmU1ZmVjNjYwMDg0ODEyZGIyYzc0YjhmNjAzYjRhNWQuLmQ4YmY4ZmExYTdi
NGYzN2FiYzNlY2Y2ZDNkMWJkYzRmZThhN2NlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0zMDgsMTQgKzMwOCwx
MCBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwogCiAgICAgc291cmNlQnVmZmVyTWFwKCkuYWRk
KG1fbWFwSUQsIG1ha2VXZWFrUHRyKCp0aGlzKSk7CiAKLSAgICBtX3BhcnNlci0+c2V0RGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CisgICAgbV9wYXJzZXIt
PnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyldIChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykg
ewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKFdURk1vdmUo
c2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKFdU
Rk1vdmUoc2VnbWVudCkpOwogICAgIH0pOwogCiAgICAgbV9wYXJzZXItPnNldERpZEVuY291bnRl
ckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
XSAoaW50MzJfdCBlcnJvckNvZGUpIG11dGFibGUgewpAQCAtMzI0LDEwICszMjAsMTAgQEAgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMKICAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRFbmNvdW50ZXJF
cnJvckR1cmluZ1BhcnNpbmcoZXJyb3JDb2RlKTsKICAgICB9KTsKIAotICAgIG1fcGFyc2VyLT5z
ZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyldIChSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZSkgbXV0YWJsZSB7CisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVN
ZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFJlZjxNZWRp
YVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVNZWRpYURhdGFG
b3JUcmFja0lEKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChXVEZNb3ZlKHNhbXBs
ZSksIHRyYWNrSWQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiB9CiAKQEAgLTM0NiwxNCArMzQyLDE1
IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMoKQogCiAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkKICAgICAgICAgbV9oYXNTZXNz
aW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKworICAgIG1fbWVkaWFTYW1wbGVUYXNrUXVldWUuY2xv
c2UoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0
aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25T
ZWdtZW50JiYgc2VnbWVudCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCiAg
ICAgaWYgKCFtX21lZGlhU291cmNlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM2NCw3ICszNjEsNiBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXph
dGlvblNlZ21lbgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFj
b2RlY3NNZWV0SGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMoe3sgKmNvZGVjIH19LCBtX21lZGlh
U291cmNlLT5wbGF5ZXIoKS0+bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQoKSkpIHsKICAgICAgICAgICAgICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzkxLDcgKzM4Nyw0MSBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0
aWFsaXphdGlvblNlZ21lbgogICAgIGlmIChtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlh
U291cmNlLT5wbGF5ZXIoKS0+Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCi0gICAgZGlkUmVj
ZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSBm
YWxzZTsKKyAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdURk1vdmUoc2VnbWVu
dCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAgKG1fbWVkaWFTYW1wbGVzLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSB0cnVl
OworICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaW5pdGlhbGl6YXRpb24g
c2VnbWVudCBpcyBoYW5kbGVkIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBtX21lZGlhU2FtcGxlVGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzLCB3ZWFrVGhp
cyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgZm9yIChhdXRvIHRyYWNrSWRNZWRp
YVNhbXBsZVBhaXIgOiBtX21lZGlhU2FtcGxlcykgeworICAgICAgICAgICAgICAgIGF1dG8gdHJh
Y2tJZCA9IHRyYWNrSWRNZWRpYVNhbXBsZVBhaXIuZmlyc3Q7CisgICAgICAgICAgICAgICAgYXV0
byBtZWRpYVNhbXBsZSA9IHRyYWNrSWRNZWRpYVNhbXBsZVBhaXIuc2Vjb25kOworICAgICAgICAg
ICAgICAgIGlmICh0cmFja0lkID09IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCB8fCBtX2F1ZGlvUmVu
ZGVyZXJzLmNvbnRhaW5zKHRyYWNrSWQpKSB7CisgICAgICAgICAgICAgICAgICAgIERFQlVHX0xP
RyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IGRpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbV9tZWRpYVNhbXBsZXMuY2xlYXIoKTsKKyAgICAgICAg
ICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImluaXRpYWxpemF0aW9uIHNlZ21lbnQgaXMgaGFu
ZGxlZCIpOworCisgICAgICAgICAgICBpZiAobV9oYXNQZW5kaW5nQXBwZW5kQ29tcGxldGVkQ2Fs
bGJhY2spIHsKKyAgICAgICAgICAgICAgICBtX2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxs
YmFjayA9IGZhbHNlOworICAgICAgICAgICAgICAgIGFwcGVuZENvbXBsZXRlZCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QgY29kZSkK
QEAgLTQwNCwxMSArNDM0LDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUpCiAgICAgbV9wYXJzaW5n
U3VjY2VlZGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNh
bXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCit2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChS
ZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlKQogewogICAgIFVOVVNFRF9QQVJBTShtZWRpYVR5cGUpOworICAgIGlm
ICghbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQpIHsKKyAgICAgICAgREVCVUdfTE9H
KExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLmdldCgpKTsKKyAgICAgICAgbV9tZWRpYVNhbXBs
ZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHRyYWNrSWQsIFdURk1vdmUobWVkaWFTYW1wbGUpKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRW
aWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpIHsKKyAg
ICBpZiAodHJhY2tJZCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJl
cnMuY29udGFpbnModHJhY2tJZCkpIHsKICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogV2UgZG9u
J3QgaGFuZGxlIHRleHQgdHJhY2tzLCBhbmQgcGFzc2luZyB0aGlzIHNhbXBsZSB1cCB0byBTb3Vy
Y2VCdWZmZXIKICAgICAgICAgLy8gd2lsbCBqdXN0IGNvbmZ1c2UgaXRzIHN0YXRlLiBEcm9wIHRo
aXMgc2FtcGxlIHVudGlsIHdlIGNhbiBoYW5kbGUgdGV4dCB0cmFja3MgcHJvcGVybHkuCiAgICAg
ICAgIHJldHVybjsKQEAgLTUxMCw3ICs1NDUsNyBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBn
bG9iYWxEYXRhUGFyc2VyUXVldWUoKQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKIHsKLSAgICBERUJVR19MT0co
TE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS5zaXplKCkpOworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS5zaXplKCkpOwogCiAg
ICAgQVNTRVJUKCFtX2hhc1Nlc3Npb25TZW1hcGhvcmUpOwogICAgIEFTU0VSVCghbV9hYm9ydFNl
bWFwaG9yZSk7CkBAIC01NjEsMTIgKzU5NiwxOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICBtX3BhcnNp
bmdTdWNjZWVkZWQgPSB0cnVlOwogICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKG1faXNBcHBlbmRp
bmdHcm91cC5nZXQoKSk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhnbG9iYWxEYXRhUGFyc2VyUXVl
dWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3Rv
cnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2VyLCBpc0FwcGVuZGluZ0dy
b3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgcGFyc2VyLT5h
cHBlbmREYXRhKFdURk1vdmUoZGF0YSkpOworICAgIGRpc3BhdGNoX2FzeW5jKGdsb2JhbERhdGFQ
YXJzZXJRdWV1ZSgpLCBbZGF0YSA9IFdURk1vdmUoZGF0YSksIHdlYWtUaGlzID0gbV9hcHBlbmRX
ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcGFyc2VyID0gbV9wYXJzZXIsIGlzQXBw
ZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5kaW5nR3JvdXBdKCkgbXV0YWJsZSB7CisgICAgICAgIHBh
cnNlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGRhdGEpLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtU
aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzLT5tX21lZGlhU2FtcGxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgd2Vh
a1RoaXMtPm1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNrID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewotICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAg
ICAgICAgICAgICAgIHdlYWtUaGlzLT5hcHBlbmRDb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUoaXNBcHBlbmRpbmdH
cm91cC5nZXQoKSk7CiAgICAgfSk7CkBAIC01NzQsNiArNjE2LDcgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiAK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCgpCiB7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAobV9hYm9ydFNlbWFwaG9yZSkg
ewogICAgICAgICBtX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgbV9hYm9ydFNl
bWFwaG9yZSA9IG5pbDsKQEAgLTYwNyw2ICs2NTAsOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjphYm9ydCgpCiAgICAgfQogCiAgICAgbV9wYXJzZXItPnJlc2V0UGFyc2VyU3Rh
dGUoKTsKKyAgICBtX21lZGlhU2FtcGxlcy5jbGVhcigpOworICAgIG1faW5pdGlhbGl6YXRpb25T
ZWdtZW50SXNIYW5kbGVkID0gZmFsc2U7CisgICAgbV9tZWRpYVNhbXBsZVRhc2tRdWV1ZS5jYW5j
ZWxBbGxUYXNrcygpOwogCiAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2lzQXBwZW5kaW5nR3Jv
dXAuZ2V0KCksIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CiB9CkBAIC0xMjI4LDYgKzEyNzQsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRWaWRlb0xheWVyKEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKiBsYXllcgogICAgIGlmIChsYXllciA9PSBtX2Rpc3BsYXlMYXll
cikKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiISFs
YXllciA9ICIsICEhbGF5ZXIpOwogICAgIEFTU0VSVCghbGF5ZXIgfHwgIW1fZGVjb21wcmVzc2lv
blNlc3Npb24gfHwgaGFzU2VsZWN0ZWRWaWRlbygpKTsKIAogICAgIGlmIChtX2Rpc3BsYXlMYXll
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCAzNDgyOTM0OTMyNDQyMWM1N2U3NmQ2YWM5
MGZhYzk5Y2I1NjZmNzM2Li42MThiZjQzNGI4YmJhMjM1NGQ1MDNiM2YzYTQ0NDk3NGJmMTA1MjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgID4gbV9zZWdtZW50OwogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRGF0YShT
ZWdtZW50JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kRGF0YShTZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiA9IFtdIHsgfSwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90KSA9IDA7
CiAgICAgdmlydHVhbCBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2
NF90KSA9IDA7CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdpbGwgYmUgY2Fs
bGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQg
PSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7Ci0gICAg
dXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KT47CisgICAgdXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJik+OwogICAgIHZvaWQgc2V0RGlk
UGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKaW5kZXggNmNlOTU4ZjdhNDZlYzgxZTk0Y2ZiOTIxMGFmODk2ZjNkOTUz
N2UwOS4uNjYzYTgyMWUxNTVmMWFjMmZjYmIzOWVmMGZkOThlZWIyYzcyZWI4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTU5OCw3ICs1OTgsNiBAQCBzdGF0aWMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6Q2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2sgY2FsbE9uTWFp
blRocmVhZENhbGxiYQogCiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNKCkKICAgICA6IG1fcmVhZGVyKFdURjo6bWFrZVVuaXF1ZVJlZjxTdHJlYW1pbmdWZWN0
b3JSZWFkZXI+KCkpCi0gICAgLCBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFw
aG9yZShCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhbGxPbkNsaWVu
dFRocmVhZENhbGxiYWNrKGNhbGxPbk1haW5UaHJlYWRDYWxsYmFjaygpKQogewogICAgIGlmIChp
c1dlYm1QYXJzZXJBdmFpbGFibGUoKSkKQEAgLTYwNywxMyArNjA2LDE0IEBAIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQogCiBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjp+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCiB7Ci0gICAgbV9pbml0aWFsaXphdGlv
blNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIEFwcGVuZEZsYWdz
IGFwcGVuZEZsYWdzKQordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFNl
Z21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIsIEFwcGVuZEZsYWdzIGFwcGVuZEZsYWdzKQogewotICAgIGlmICghbV9wYXJzZXIpCisg
ICAgaWYgKCFtX3BhcnNlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAg
ICByZXR1cm47CisgICAgfQogCiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklF
UiwgImZsYWdzKCIsIGFwcGVuZEZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5ID8g
IkRpc2NvbnRpbnVpdHkiIDogIiIsICIpLCBzaXplKCIsIHNlZ21lbnQuc2l6ZSgpLCAiKSIpOwog
CkBAIC02MjcsNiArNjI3LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmRE
YXRhKFNlZ21lbnQmJiBzZWdtZW50LCBBcHBlbmRGbGFncyBhcHBlbmRGbGEKICAgICAgICAgbV9z
dGF0dXMgPSBtX3BhcnNlci0+RmVlZCh0aGlzLCAmbV9yZWFkZXIpOwogICAgICAgICBpZiAobV9z
dGF0dXMub2soKSB8fCBtX3N0YXR1cy5jb2RlID09IFN0YXR1czo6a0VuZE9mRmlsZSB8fCBtX3N0
YXR1cy5jb2RlID09IFN0YXR1czo6a1dvdWxkQmxvY2spIHsKICAgICAgICAgICAgIG1fcmVhZGVy
LT5yZWNsYWltU2VnbWVudHMoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNjU3LDExICs2NTgsMTIgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBB
cHBlbmRGbGFncyBhcHBlbmRGbGEKICAgICAgICAgaWYgKG1fZGlkRW5jb3VudGVyRXJyb3JEdXJp
bmdQYXJzaW5nQ2FsbGJhY2spCiAgICAgICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZ0NhbGxiYWNrKGNvZGUpOwogICAgIH0pOworCisgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRpYURh
dGEoKQogewotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5z
aWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzZXRTaG91bGRQcm92
aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1aW50NjRfdCkKQEAgLTY4NiwxNiArNjg4LDEy
IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSgpCiAgICAg
bV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBudWxscHRyOwogICAgIG1faW5pdGlhbGl6YXRpb25T
ZWdtZW50RW5jb3VudGVyZWQgPSBmYWxzZTsKICAgICBtX2N1cnJlbnRCbG9jay5yZXNldCgpOwot
Ci0gICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgp
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmludmFsaWRhdGUoKQogewogICAg
IElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCi0gICAgbV9pbml0aWFsaXph
dGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwotCiAgICAgbV9wYXJzZXIg
PSBudWxscHRyOwogICAgIG1fdHJhY2tzLmNsZWFyKCk7CiAgICAgbV9pbml0aWFsaXphdGlvblNl
Z21lbnQgPSBudWxscHRyOwpAQCAtNzE3LDcgKzcxNSw2IEBAIGF1dG8gU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6dHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIodWludDY0X3QgdHJhY2tOdW1iZXIpIC0+
IFRyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLQogU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uRWxlbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIEFj
dGlvbiogYWN0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CkBAIC04MzcsMTMg
KzgzNCw4IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbihj
b25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjCiAKICAgICBpZiAobV9pbml0aWFsaXph
dGlvblNlZ21lbnRFbmNvdW50ZXJlZCAmJiBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2Fs
bGJhY2spIHsKICAgICAgICAgbV9jYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZN
b3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBt
X2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlv
blNlZ21lbnQpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAg
ICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNp
Z25hbCgpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpKTsKICAgICAg
ICAgfSk7Ci0KLSAgICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVu
dCBpcyBoYW5kbGVkCi0gICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2Vt
YXBob3JlLT53YWl0KCk7CiAgICAgfQogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3Vu
dGVyZWQgPSBmYWxzZTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggNmI2MmRjMDY1OWU2Yzg2MTEyZTNkYWY0
NjViYTY0MWUzOTlmZDQwYy4uYWY2MzRiYmNjYTkyMDJlODQ2MTFmMjA4YmY2NWRiNzY4MjMyZDIx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtNDIsNyArNDIsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvQmlu
YXJ5U2VtYXBob3JlLmg+CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVz
Y3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVD
TUJsb2NrQnVmZmVyICpDTUJsb2NrQnVmZmVyUmVmOwpAQCAtNzMsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3Qgd2VibTo6U3RhdHVzJiBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1
czsgfQogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTo6V2ViTTsgfQotICAg
IHZvaWQgYXBwZW5kRGF0YShTZWdtZW50JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5v
bmUpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kRGF0YShTZWdtZW50JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiA9IFtdIHsgfSwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkg
ZmluYWw7CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKICAgICB2b2lk
IHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90KSBmaW5h
bDsKICAgICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2NF90KSBm
aW5hbDsKQEAgLTI2NSw3ICsyNjQsNiBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBtX3Jld2luZFRvUG9zaXRpb247CiAgICAgZmxvYXQgbV9taW5pbXVtQXVkaW9TYW1wbGVEdXJh
dGlvbiB7IDIgfTsKIAotICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IG1faW5pdGlhbGl6YXRpb25T
ZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlOwogICAgIENhbGxPbkNsaWVudFRocmVhZENhbGxiYWNr
IG1fY2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2s7CiAKICAgICBSZWZQdHI8Y29uc3QgV1RGOjpM
b2dnZXI+IG1fbG9nZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggMjRm
YjdhZGU0NDhhOWFkY2YxM2E4YWQwMzE5YTI1MGZhMWY0MTNiMy4uZDBmOWIyMDA5MGRkMDcxZmQy
ZWE4ZTlmMjc5MWU4MjVlMWFkOGY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3Bw
CkBAIC0xMjQsOSArMTI0LDggQEAgdm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6cGFyc2VCeXRlU291
cmNlKFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYgYnl0ZVMKICAgICAgICAgTWVk
aWFUcmFja1JlYWRlcjo6c3RvcmFnZVF1ZXVlKCkuZGlzcGF0Y2goV1RGTW92ZShmdW5jdGlvbikp
OwogICAgIH0pOwogCi0gICAgcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNh
bGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFNvdXJjZUJ1ZmZl
clBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgaW5pdGlhbGl6YXRpb25TZWdtZW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICBwYXJz
ZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oU291cmNlQnVmZmVyUGFyc2VyOjpJbml0aWFsaXphdGlv
blNlZ21lbnQmJiBpbml0aWFsaXphdGlvblNlZ21lbnQpIHsKICAgICAgICAgZGlkUGFyc2VUcmFj
a3MoV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpLCBub0Vycik7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAKICAgICBwYXJzZXItPnNldERpZEVuY291bnRlckVy
cm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldKHVpbnQ2NF90IGVycm9yQ29kZSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVmMzhkYjI3YTY4YjhiMzkyMGVi
YzljOGFlNjZhMjQ2MWZkNmZmODEuLjVlMzhmYzZiMjc1MjQ4M2NjMmM3ZjI2YjQxNmMyOTZhYTYy
MGMwYTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMS0yNyAgUGVuZyBMaXUgIDxwZW5n
LmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXVtNU0VdIEEgdmlkZW8gZWxlbWVudCBk
b2VzIG5vdCBmaXJlIOKAnGNhbnBsYXl0aHJvdWdo4oCdIGV2ZW50IGlmIFNvdXJjZUJ1ZmZlci5h
Ym9ydCgpIGlzIGNhbGxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIwOTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIG1lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDEtMjUgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBVc2UgZGlmZmVy
ZW50IHdlbGwta25vd24gbG9jYXRpb25zIGZvciB0cmlnZ2VyaW5nIGFuZCByZXBvcnRpbmcgYXR0
cmlidXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDc5
YTgxNGJiMDI5YzI3MzNiOWM2Y2FiODRkMjU0YmQ4MDIwNjM3N2UuLjM2Mzc3Y2MyMWI3ZWM1NmI4
MDgwZjY3ZjQ0YjdiOWIzZWRhNmRlNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9j
ZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMzQ2LDcgKzM0Niw2IEBAIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItdGlt
ZS1jb25zdGFudC5odG1sIFsgVGltZW91dCBdCiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXRpbWUu
aHRtbCBbIFRpbWVvdXQgXQogbWVkaWEvbWVkaWEtY29udHJvbGxlci11bnBhdXNlLmh0bWwgWyBU
aW1lb3V0IF0KIG1lZGlhL21lZGlhLWhpZ2hlci1wcmlvLWF1ZGlvLXN0cmVhbS5odG1sIFsgU2tp
cCBdCi1tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbCBbIEZhaWx1cmUg
XQogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWluaXQtaW5zaWRlLXNlZ21l
bnQuaHRtbCBbIEZhaWx1cmUgXQogbWVkaWEvbWVkaWEtdm9sdW1lLXNsaWRlci1yZW5kZXJlZC1i
ZWxvdy5odG1sIFsgU2tpcCBdCiBtZWRpYS9tZWRpYS12b2x1bWUtc2xpZGVyLXJlbmRlcmVkLW5v
cm1hbC5odG1sIFsgU2tpcCBdCkBAIC01MTksNyArNTE4LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtc3RyZWFtcyBbIFNraXAgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYnVmZmVyZWQuaHRt
bCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2UtY2hhbmdldHlwZS5odG1sIFsgRmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1kdXJhdGlvbi1ib3Vu
ZGFyeWNvbmRpdGlvbnMuaHRtbCBbIEZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcGxheS5odG1sIFsgRmFpbHVyZSBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1y
ZW1vdmUuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
c3QtY29udGVudC1oaW50L2lkbGhhcm5lc3Mud2luZG93Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbXN0LWNvbnRlbnQtaGludC9NZWRpYVN0cmVhbVRyYWNr
LWNvbnRlbnRIaW50Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZDExMzczYzdjMTU3NjAzMWQ2MjhmNzJhYTBlMTViNzgyMDAyZWRjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFw
cGVuZC1idWZmZXItYWZ0ZXItYWJvcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Ro
aXMgdGVzdHMgdGhlIGFiaWxpdHkgb2YgdGhlIFNvdXJjZUJ1ZmZlciB0byByZXNldCB0aGUgcGFy
c2VyIGFmdGVyIGFuIGFib3J0KCkuIEEgU291cmNlQnVmZmVyIGluIHRoaXMgc3RhdGUgc2hvdWxk
IGJlIGFibGUgdG8gYWNjZXB0IGEgbmV3IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgYW5kIGEgbmV3
IG1lZGlhIHNlZ21lbnQsIGFuZCB0aGUgdmlkZW8gZWxlbWVudCBzaG91bGQgZmlyZSAiY2FucGxh
eXRocm91Z2giIGV2ZW50LgorCitSVU4odmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChz
b3VyY2UpKQorRVZFTlQoc291cmNlb3BlbikKK1JVTihzb3VyY2UuZHVyYXRpb24gPSBsb2FkZXIu
ZHVyYXRpb24oKSkKK1JVTihzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKGxv
YWRlci50eXBlKCkpKQorUlVOKHNvdXJjZUJ1ZmZlci5hYm9ydCgpKQorUlVOKHNvdXJjZUJ1ZmZl
ci5hcHBlbmRCdWZmZXIobG9hZGVyLmluaXRTZWdtZW50KCkpKQorRVZFTlQodXBkYXRlKQorQXBw
ZW5kIGEgbWVkaWEgc2VnbWVudC4KK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGxvYWRl
ci5tZWRpYVNlZ21lbnQoMCkpKQorRVZFTlQodXBkYXRlKQorRVZFTlQoY2FucGxheXRocm91Z2gp
CitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5odG1sIGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZm
ZXItYWZ0ZXItYWJvcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTliNjZiZjJiYTI3ZDNjOWYyOWM3OWE4
NDFhZWNkYTkxYjJmOGQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQuaHRt
bApAQCAtMCwwICsxLDU5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHRpdGxlPm1lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQ8L3RpdGxl
PgorICAgIDxzY3JpcHQgc3JjPSJtZWRpYS1zb3VyY2UtbG9hZGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4K
KyAgICB2YXIgbG9hZGVyOworICAgIHZhciBzb3VyY2U7CisgICAgdmFyIHNvdXJjZUJ1ZmZlcjsK
KworICAgIGZ1bmN0aW9uIGxvYWRlclByb21pc2UobG9hZGVyKSB7CisgICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBsb2FkZXIub25s
b2FkID0gcmVzb2x2ZTsKKyAgICAgICAgICAgIGxvYWRlci5vbmVycm9yID0gcmVqZWN0OworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFz
eW5jIGV2ZW50ID0+IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1l
bnQoKTsKKyAgICAgICAgICAgIGxvYWRlciA9IG5ldyBNZWRpYVNvdXJjZUxvYWRlcignY29udGVu
dC90ZXN0LXZwOS1tYW5pZmVzdC5qc29uJyk7CisgICAgICAgICAgICBhd2FpdCBsb2FkZXJQcm9t
aXNlKGxvYWRlcik7CisKKyAgICAgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOwor
ICAgICAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSkn
KTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlLCAnc291cmNlb3BlbicpOworICAg
ICAgICAgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgnZXJyb3InKTsKKworICAgICAgICAgICAgcnVu
KCdzb3VyY2UuZHVyYXRpb24gPSBsb2FkZXIuZHVyYXRpb24oKScpOworICAgICAgICAgICAgcnVu
KCdzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKGxvYWRlci50eXBlKCkpJyk7
CisKKyAgICAgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFib3J0KCknKTsKKworICAgICAgICAg
ICAgcnVuKCdzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGxvYWRlci5pbml0U2VnbWVudCgpKScp
OworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcihzb3VyY2VCdWZmZXIsICd1cGRhdGUnKTsKKwor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCdBcHBlbmQgYSBtZWRpYSBzZWdtZW50LicpCisgICAg
ICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVyLm1lZGlhU2VnbWVu
dCgwKSknKTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlQnVmZmVyLCAndXBkYXRl
Jyk7CisKKyAgICAgICAgICAgIGZhaWxUZXN0SW4oMjAwMCk7CisKKyAgICAgICAgICAgIGF3YWl0
IHdhaXRGb3IodmlkZW8sICdjYW5wbGF5dGhyb3VnaCcpOworICAgICAgICAgICAgZW5kVGVzdCgp
OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBmYWlsVGVzdChgQ2F1Z2h0IGV4
Y2VwdGlvbjogIiR7ZX0iYCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICAgIDxkaXY+CisgICAgICAgIFRoaXMgdGVzdHMgdGhlIGFiaWxpdHkg
b2YgdGhlIFNvdXJjZUJ1ZmZlciB0byByZXNldCB0aGUgcGFyc2VyIGFmdGVyIGFuIGFib3J0KCku
IEEgU291cmNlQnVmZmVyIGluIHRoaXMgc3RhdGUgc2hvdWxkIGJlIGFibGUgdG8gYWNjZXB0Cisg
ICAgICAgIGEgbmV3IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgYW5kIGEgbmV3IG1lZGlhIHNlZ21l
bnQsIGFuZCB0aGUgdmlkZW8gZWxlbWVudCBzaG91bGQgZmlyZSAiY2FucGxheXRocm91Z2giIGV2
ZW50LgorICAgIDwvZGl2PgorICAgIDx2aWRlbyBjb250cm9scz48L3ZpZGVvPgorPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTI2NzZiNGQ2ZTE5NjU5ZjI3MDA2YTgwMmU2YjYy
NmZkNDk0Y2U5Mi4uM2RhMGIzMWRmMjNhM2NhZWE4YjhhZGFhMmYzY2UxMmNjYzM3OWVmMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4NzQsNiArMTg3
NCw3IEBAIHdlYmtpdC5vcmcvYi8yMTQxNTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wCiAKICMgVGhlc2UgdGVzdCByZXF1aXJlcyBz
eXN0ZW0gcGxhdGZvcm0gc3VwcG9ydC4KIFsgQ2F0YWxpbmEgTW9qYXZlIF0gbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwgWyBTa2lwIF0KK1sgQ2F0YWxpbmEgTW9qYXZl
IF0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0
ZXItYWJvcnQuaHRtbCBbIFNraXAgXQogWyBDYXRhbGluYSBNb2phdmUgXSBtZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLXdlYm0taW5pdC1pbnNpZGUtc2VnbWVudC5odG1sIFsgU2tpcCBd
CiBbIENhdGFsaW5hIE1vamF2ZSBdIHBsYXRmb3JtL21hYy9tZWRpYS9tZWRpYWNhcGFiaWxpdGll
cy92cDktZGVjb2RpbmdJbmZvLXN3Lmh0bWwgWyBTa2lwIF0KIFsgQ2F0YWxpbmEgTW9qYXZlIF0g
cGxhdGZvcm0vbWFjL21lZGlhL21lZGlhLXNvdXJjZS9pcy10eXBlLXN1cHBvcnRlZC12cDktY29k
ZWMtY2hlY2suaHRtbCBbIFNraXAgXQo=
</data>
<flag name="review"
          id="436639"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418661</attachid>
            <date>2021-01-28 12:22:47 -0800</date>
            <delta_ts>2021-04-09 14:22:42 -0700</delta_ts>
            <desc>Revise the patch based on Jer and Darin&apos;s comments</desc>
            <filename>bug-220964-20210128122247.patch</filename>
            <type>text/plain</type>
            <size>34286</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ZDg0YTJjNWM3Njkz
YjZkYWU2ZmQ1MTdiN2M0NjRmZGY2ODY5Zi4uOTE2MTVmZjFlZGI4MTY3MDcwNWQ5YzU1ZTIzMjQ0
NTYwOTEzZTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTAxLTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9i
bGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGBpbml0aWFsaXphdGlvblNlZ21lbnRJ
c0hhbmRsZWRTZW1hcGhvcmVgIGZyb20gYm90aCBgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQ2AK
KyAgICAgICAgYW5kIGBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNYCwgYW5kIGltcGxlbWVudHMgYSBt
ZWRpYSBzYW1wbGUgY2FjaGUgbWVjaGFuaXNtIGluIGBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Q2AKKyAgICAgICAgdG8gZW5zdXJlIHRoYXQgIkNvZGVkIEZyYW1lIFByb2Nlc3NpbmciIHN0ZXBz
IGV4ZWN1dGUgYWZ0ZXIgYFNvdXJjZUJ1ZmZlclByaXZhdGVgIGhhcyBoYW5kbGVkIHRoZQorICAg
ICAgICBpbml0aWFsaXphdGlvbiBzZWdtZW50IGFuZCBlbmFibGVkIHZpZGVvL2F1ZGlvIHRyYWNr
cy4gV2l0aG91dCB0aGUgY2FjaGUgbWVjaGFuaXNtLCBzb21lIG1lZGlhCisgICAgICAgIHNhbXBs
ZXMgZm9sbG93aW5nIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IG1heSBiZSBkcm9wcGVkIHdo
ZW4gd2UgcnVuIGBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ2AKKyAgICAgICAgaW4gdGhlIEdQ
VSBwcm9jZXNzLCBhbmQgdGhlIG1lZGlhIGVsZW1lbnQgd29uJ3QgZmlyZSAiY2FucGxheXRocm91
Z2giIGV2ZW50IGJlY2F1c2UgaXQgY2Fubm90IGNoYW5nZQorICAgICAgICBpdHMgcmVhZHkgc3Rh
dGUgdG8gYSB2YWx1ZSBncmVhdGVyIHRoYW4gSEFWRV9NRVRBREFUQS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gaW1wbGVtZW50cyB0aGUgbWVjaGFuaXNtIHRvIG1ha2Ugc3VyZSBgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCgpYAorICAgICAgICBydW5zIGFm
dGVyIGFsbCBtZWRpYSBzYW1wbGVzIGhhdmUgZ29uZSB0aHJvdWdoIHRoZSAiQ29kZWQgRnJhbWUg
UHJvY2Vzc2luZyIgc3RlcHMsIHNvIHRoYXQgdGhlIHNvdXJjZQorICAgICAgICBidWZmZXIgb2Jq
ZWN0IHdpbGwgZmlyZSAidXBkYXRlIiBhbmQgInVwZGF0ZWVuZCIgZXZlbnQgYWZ0ZXIgdGhlIHBh
cnNlciBoYXMgY29tcGxldGVkbHkgcGFyc2VkIHRoZQorICAgICAgICBhcHBlbmRlZCBidWZmZXIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgIEFkZCBhIHBhcmFtZXRlciAiQ29tcGxldGlv
bkhhbmRsZXIiIHRvIG5vdGlmeSB0aGUgY2FsbGVyIHRoYXQgdGhlIHBhcnNlciBoYXMgcGFyc2Vk
IHRoZSB3aG9sZSBidWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQp
OgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIEFm
dGVyIGBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50YCBoYXMgZG9uZSB0aGUgY29uZmlndXJhdGlv
biB3aXRoIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50LCB3ZSBuZWVkIHRvCisgICAgICAgIHB1
c2ggdGhlIGNhY2hlZCBtZWRpYSBzYW1wbGVzIChpZiBhbnkpIHRvIGBTb3VyY2VCdWZmZXJQcml2
YXRlYCB0byBydW4gdGhlICJDb2RlZCBGcmFtZSBQcm9jZXNzaW5nIiBzdGVwcy4KKyAgICAgICAg
QW5kIHdlIG5lZWQgdG8gY2FsbCAiYXBwZW5kQ29tcGxldGVkKCkiIGlmIHRoZXJlIGlzIGEgcGVu
ZGluZyBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZCk6CisgICAgICAgIGBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQ2AgbmVlZHMgdG8gY2FjaGUgdGhlIG1lZGlhIHNhbXBsZSBpZiB0aGUg
aW5pdGlhbGl6YXRpb24gc2VnbWVudCBoYXMgbm90IGJlZW4KKyAgICAgICAgcHJvY2Vzc2VkIGJ5
IGBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50YCB5ZXQuCisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgV2UgbmVlZCB0byBwb3N0
cG9uZSB0aGUgImFwcGVuZENvbXBsZXRlZCgpIiBjYWxsYmFjayBpZiB0aGVyZSBhcmUgY2FjaGVk
IG1lZGlhIHNhbXBsZXMuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6YXBwZW5kQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6c2V0VmlkZW9MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOiBEZWxldGVk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6flNvdXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKToKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoK
KwogMjAyMS0wMS0yNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBQQ006IFVzZSBkaWZmZXJlbnQgd2VsbC1rbm93biBsb2NhdGlvbnMgZm9yIHRyaWdnZXJp
bmcgYW5kIHJlcG9ydGluZyBhdHRyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTA5NGYyYWQ4MzA4Y2E0
Zjg0MTcyYjU5NjJhODM4NWY2Nzk1ZGJmLi4zZTBjNzhmZmY1YzVlNGEyMTEwYTdiZGFhMTlhOGJm
NGFmY2Q1MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAxLTI4ICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRlbyBl
bGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291cmNl
QnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUu
CisKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVh
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNv
dXJjZSk6CisKIDIwMjEtMDEtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBXZWIgcHJvY2VzcyBzaG91bGQgYmUgdGVybWlu
YXRlZCBpZiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSBhZHZhbmNlcyBwYXN0IDAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAppbmRleCBk
NjhjMzkzZDRmNWU1ZmY1ODg0ODM1ZDY5ZDJjNGIxODQ4NDUxYTkyLi5iMjUzZGRmYzg2OGZlZDU5
ZmM2ZDZjNWRhZmNiZDY3N2M4MjQxOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVk
ZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgotI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgog
CiBPQkpDX0NMQVNTIEFWQXNzZXQ7CiBPQkpDX0NMQVNTIEFWU3RyZWFtRGF0YVBhcnNlcjsKQEAg
LTU0LDcgKzUzLDcgQEAgcHVibGljOgogICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJzZXIuZ2V0KCk7IH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFR5cGU6OkFWRk9iakM7IH0KLSAgICB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYm
LCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVu
ZERhdGEoU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYsIEFwcGVuZEZsYWdz
ID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOwogICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFE
YXRhKCkgZmluYWw7CiAgICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJ
RChib29sLCB1aW50NjRfdCkgZmluYWw7CiAgICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRh
Rm9yVHJhY2tJRCh1aW50NjRfdCkgZmluYWw7CkBAIC04MSw4ICs4MCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50IHsg
ZmFsc2UgfTsKICAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07CiAKLSAg
ICBCb3g8QmluYXJ5U2VtYXBob3JlPiBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNl
bWFwaG9yZTsKLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZlB0cjxjb25zdCBX
VEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsg
bnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMubW0KaW5kZXggYmVjNGU5ZDZjMGFlNmU2YTM4M2EwMjJlMWVhMWE1ZDllYTMz
NTMxZC4uMWFkNGRhN2UwYzI1ZGI1MjA3MmNiMmUwYjc5NDYyYzFhNDNkMjdmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBA
IC0yMDAsMTggKzIwMCwxNiBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZAogU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiAgICAgOiBtX3BhcnNl
cihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkp
CiAgICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OnRoaXNdKSkKLSAg
ICAsIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlKEJveDxCaW5hcnlT
ZW1hcGhvcmU+OjpjcmVhdGUoKSkKIHsKIH0KIAogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogewotICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICBtX2RlbGVnYXRlLmdldCgpLnBh
cmVudCA9IG51bGxwdHI7CiAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07CiB9CiAKLXZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwg
QXBwZW5kRmxhZ3MgZmxhZ3MpCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVu
ZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VnbWVudC50YWtlVmVjdG9yKCkpOwogICAgIGF1dG8g
bnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CkBAIC0yMjAsMTEgKzIxOCwxMSBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNl
Z21lbnQsIEFwcGVuZEZsYWdzIGZsYWdzKQogICAgIGVsc2UKICAgICAgICAgW21fcGFyc2VyIGFw
cGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKICAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQg
PSBmYWxzZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlhRGF0YSgpCiB7Ci0gICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgIFttX3BhcnNl
ciBwcm92aWRlUGVuZGluZ01lZGlhRGF0YV07CiB9CiAKQEAgLTI0MiwxNCArMjQwLDEwIEBAIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCiB7CiAgICAg
bV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKICAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxO
ZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKLQotICAgIG1faW5pdGlhbGl6YXRpb25T
ZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjppbnZhbGlkYXRlKCkKIHsKLSAgICBtX2luaXRpYWxpemF0aW9uU2Vn
bWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0KICAgICBbbV9kZWxlZ2F0ZSBpbnZh
bGlkYXRlXTsKICAgICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKICAgICBtX3BhcnNlciA9IG51bGxw
dHI7CkBAIC0zMDIsMTMgKzI5Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgICAgIC8v
IEZJWE1FKDEyNTE2MSkgICAgOiBBZGQgVGV4dFRyYWNrIHN1cHBvcnQKICAgICAgICAgfQogCi0g
ICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21l
bnQpLCBbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgICAgICBt
X2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAg
ICAgIH0pOworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RG
TW92ZShzZWdtZW50KSk7CiAgICAgfSk7Ci0KLSAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFs
aXphdGlvbiBzZWdtZW50IGlzIGhhbmRsZWQKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElz
SGFuZGxlZFNlbWFwaG9yZS0+d2FpdCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oCmluZGV4IGQ3YTdiNjJmNzcxMjY4NjdjYWI1OTc1ODI1NzUxNWU2ZDhkNzExMTcuLjE0ZTQ2
Y2Y3ZjY3NDNjYTJiZmQ2MTZjOWZmOTIwMWFlNGNmNGU5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAor
I2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJz
ZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0
Y2gvZ3JvdXAuaD4KQEAgLTEzOCw5ICsxMzksOSBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8
U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVu
dCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAg
ICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOwogICAgIHZvaWQgZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QpOwotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJh
Y2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAg
dm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOwpAQCAtMTgyLDYgKzE4
MywxMSBAQCBwcml2YXRlOgogICAgIFdlYWtQdHJGYWN0b3J5PFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDPiBtX2FwcGVuZFdlYWtGYWN0b3J5OwogCiAgICAgUmVmPFNvdXJjZUJ1ZmZlclBhcnNl
cj4gbV9wYXJzZXI7CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxsYmFjayB7
IGZhbHNlIH07CisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxl
Pj4+IG1fbWVkaWFTYW1wbGVzOworICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fbWVkaWFT
YW1wbGVUYXNrUXVldWU7CisKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI+IG1fZGlzcGxheUxheWVyOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVH
SU4KICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1Jl
bmRlcmVyPiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVpbnQ2NF90Pj4gbV9hdWRpb1JlbmRlcmVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNWE0MjIy
MjBiZTVmZWM2NjAwODQ4MTJkYjJjNzRiOGY2MDNiNGE1ZC4uYjJiMzYxMWU3ZDUyYzk0NTQzNzY5
ZDQ0MDBmMGUwYmFlODVkYzQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTMwOCwxNCArMzA4LDEwIEBAIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDCiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwg
bWFrZVdlYWtQdHIoKnRoaXMpKTsKIAotICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YUNhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAo
SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0gKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAg
ICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdt
ZW50KSk7CiAgICAgfSk7CiAKICAgICBtX3BhcnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJp
bmdQYXJzaW5nQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChpbnQzMl90
IGVycm9yQ29kZSkgbXV0YWJsZSB7CkBAIC0zMjQsMTAgKzMyMCwxMCBAQCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQwogICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZyhlcnJvckNvZGUpOwogICAgIH0pOwogCi0gICAgbV9wYXJzZXItPnNldERpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFJlZjxN
ZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlKSBtdXRhYmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNh
bGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoUmVmPE1lZGlhU2FtcGxlPiYm
IHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIG11dGFi
bGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAod2Vha1Ro
aXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQo
V1RGTW92ZShzYW1wbGUpLCB0cmFja0lELCBtZWRpYVR5cGUpOworICAgICAgICAgICAgd2Vha1Ro
aXMtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJ
ZCwgbWVkaWFUeXBlKTsKICAgICB9KTsKIH0KIApAQCAtMzQ2LDE0ICszNDIsMTUgQEAgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAKICAg
ICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhv
cmUtPnNpZ25hbCgpOworCisgICAgbV9tZWRpYVNhbXBsZVRhc2tRdWV1ZS5jbG9zZSgpOwogfQog
Ci12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBz
ZWdtZW50KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBpZiAoIW1f
bWVkaWFTb3VyY2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMzY0LDcgKzM2MSw2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVu
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIWNvZGVjc01lZXRI
YXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyh7eyAqY29kZWMgfX0sIG1fbWVkaWFTb3VyY2UtPnBs
YXllcigpLT5tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpKSkgewog
ICAgICAgICAgICAgICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0zOTEsNyArMzg3LDQxIEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9u
U2VnbWVuCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBs
YXllcigpLT5jaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCk7CiAKLSAgICBkaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KFdURk1vdmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IGZhbHNlOworICAg
IGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmICAobV9tZWRpYVNhbXBsZXMuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IHRydWU7CisgICAgICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJpbml0aWFsaXphdGlvbiBzZWdtZW50IGlz
IGhhbmRsZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1f
bWVkaWFTYW1wbGVUYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIG1lZGlhU2FtcGxlcyA9IFdURk1vdmUobV9t
ZWRpYVNhbXBsZXMpOworICAgICAgICAgICAgZm9yIChhdXRvJiB0cmFja0lkTWVkaWFTYW1wbGVQ
YWlyIDogbWVkaWFTYW1wbGVzKSB7CisgICAgICAgICAgICAgICAgYXV0byB0cmFja0lkID0gdHJh
Y2tJZE1lZGlhU2FtcGxlUGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICBhdXRvJiBtZWRpYVNh
bXBsZSA9IHRyYWNrSWRNZWRpYVNhbXBsZVBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgIGlm
ICh0cmFja0lkID09IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCB8fCBtX2F1ZGlvUmVuZGVyZXJzLmNv
bnRhaW5zKHRyYWNrSWQpKSB7CisgICAgICAgICAgICAgICAgICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSLCBtZWRpYVNhbXBsZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGRpZFJlY2Vp
dmVTYW1wbGUobWVkaWFTYW1wbGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSB0cnVlOwor
ICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiaW5pdGlhbGl6YXRpb24gc2Vn
bWVudCBpcyBoYW5kbGVkIik7CisKKyAgICAgICAgICAgIGlmIChtX2hhc1BlbmRpbmdBcHBlbmRD
b21wbGV0ZWRDYWxsYmFjaykgeworICAgICAgICAgICAgICAgIG1faGFzUGVuZGluZ0FwcGVuZENv
bXBsZXRlZENhbGxiYWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYXBwZW5kQ29tcGxldGVk
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50
MzJfdCBjb2RlKQpAQCAtNDA0LDExICs0MzQsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QgY29kZSkKICAg
ICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxl
PiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlw
ZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFG
b3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJ
ZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1lZGlhVHlw
ZSk7CisgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCkgeworICAgICAg
ICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgbWVkaWFTYW1wbGUuZ2V0KCkpOworICAgICAgICBt
X21lZGlhU2FtcGxlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tJZCwgV1RGTW92ZShtZWRp
YVNhbXBsZSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGlmICh0cmFja0lEICE9
IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCAmJiAhbV9hdWRpb1JlbmRlcmVycy5jb250YWlucyh0cmFj
a0lEKSkgeworICAgIGlmICh0cmFja0lkICE9IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCAmJiAhbV9h
dWRpb1JlbmRlcmVycy5jb250YWlucyh0cmFja0lkKSkgewogICAgICAgICAvLyBGSVhNRSgxMjUx
NjEpOiBXZSBkb24ndCBoYW5kbGUgdGV4dCB0cmFja3MsIGFuZCBwYXNzaW5nIHRoaXMgc2FtcGxl
IHVwIHRvIFNvdXJjZUJ1ZmZlcgogICAgICAgICAvLyB3aWxsIGp1c3QgY29uZnVzZSBpdHMgc3Rh
dGUuIERyb3AgdGhpcyBzYW1wbGUgdW50aWwgd2UgY2FuIGhhbmRsZSB0ZXh0IHRyYWNrcyBwcm9w
ZXJseS4KICAgICAgICAgcmV0dXJuOwpAQCAtNTEwLDcgKzU0NSw3IEBAIHN0YXRpYyBkaXNwYXRj
aF9xdWV1ZV90IGdsb2JhbERhdGFQYXJzZXJRdWV1ZSgpCiAKIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogewotICAg
IERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLnNpemUoKSk7
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLnNp
emUoKSk7CiAKICAgICBBU1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9yZSk7CiAgICAgQVNTRVJU
KCFtX2Fib3J0U2VtYXBob3JlKTsKQEAgLTU2MSwxMiArNTk2LDE5IEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQog
ICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IHRydWU7CiAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIo
bV9pc0FwcGVuZGluZ0dyb3VwLmdldCgpKTsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGdsb2JhbERh
dGFQYXJzZXJRdWV1ZSgpLCBbZGF0YSA9IFdURk1vdmUoZGF0YSksIHdlYWtUaGlzID0gbV9hcHBl
bmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcGFyc2VyID0gbV9wYXJzZXIsIGlz
QXBwZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5kaW5nR3JvdXBdICgpIG11dGFibGUgewotICAgICAg
ICBwYXJzZXItPmFwcGVuZERhdGEoV1RGTW92ZShkYXRhKSk7CisgICAgZGlzcGF0Y2hfYXN5bmMo
Z2xvYmFsRGF0YVBhcnNlclF1ZXVlKCksIFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMg
PSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3Bh
cnNlciwgaXNBcHBlbmRpbmdHcm91cCA9IG1faXNBcHBlbmRpbmdHcm91cF0oKSBtdXRhYmxlIHsK
KyAgICAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1vdmUoZGF0YSksIFt3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0geworICAgICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMtPm1fbWVkaWFTYW1wbGVzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgICAgICB3ZWFrVGhpcy0+bV9oYXNQZW5kaW5nQXBwZW5kQ29tcGxldGVkQ2FsbGJhY2sgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7Ci0gICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCiAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmFwcGVuZENvbXBsZXRlZCgpOworICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgICAgICBkaXNwYXRjaF9ncm91cF9sZWF2ZShp
c0FwcGVuZGluZ0dyb3VwLmdldCgpKTsKICAgICB9KTsKQEAgLTU3NCw2ICs2MTYsNyBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+
JiYgZGF0YSkKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kQ29tcGxl
dGVkKCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChtX2Fib3J0
U2VtYXBob3JlKSB7CiAgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAg
ICBtX2Fib3J0U2VtYXBob3JlID0gbmlsOwpAQCAtNjA3LDYgKzY1MCw5IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KCkKICAgICB9CiAKICAgICBtX3BhcnNlci0+cmVz
ZXRQYXJzZXJTdGF0ZSgpOworICAgIG1fbWVkaWFTYW1wbGVzLmNsZWFyKCk7CisgICAgbV9pbml0
aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSBmYWxzZTsKKyAgICBtX21lZGlhU2FtcGxlVGFz
a1F1ZXVlLmNhbmNlbEFsbFRhc2tzKCk7CiAKICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1faXNB
cHBlbmRpbmdHcm91cC5nZXQoKSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKIH0KQEAgLTEyMjgs
NiArMTI3NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5
ZXIoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIGxheWVyCiAgICAgaWYgKGxheWVyID09IG1f
ZGlzcGxheUxheWVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICIhIWxheWVyID0gIiwgISFsYXllcik7CiAgICAgQVNTRVJUKCFsYXllciB8fCAhbV9k
ZWNvbXByZXNzaW9uU2Vzc2lvbiB8fCBoYXNTZWxlY3RlZFZpZGVvKCkpOwogCiAgICAgaWYgKG1f
ZGlzcGxheUxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDM0ODI5MzQ5MzI0NDIx
YzU3ZTc2ZDZhYzkwZmFjOTljYjU2NmY3MzYuLjYxOGJmNDM0YjhiYmEyMzU0ZDUwM2IzZjNhNDQ0
OTc0YmYxMDUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC04Miw3ICs4Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgPiBtX3NlZ21lbnQ7CiAgICAgfTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmREYXRhKFNlZ21lbnQmJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmREYXRhKFNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmID0gW10geyB9LCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgdWlu
dDY0X3QpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRy
YWNrSUQodWludDY0X3QpID0gMDsKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogCiAgICAgLy8g
V2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHVzaW5nIEluaXRpYWxpemF0
aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2Vn
bWVudDsKLSAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RG
OjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpPjsKKyAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKT47CiAgICAg
dm9pZCBzZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKERpZFBhcnNlSW5pdGlh
bGl6YXRpb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fZGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA2Y2U5NThmN2E0NmVjODFlOTRjZmI5MjEw
YWY4OTZmM2Q5NTM3ZTA5Li42NjNhODIxZTE1NWYxYWMyZmNiYjM5ZWYwZmQ5OGVlYjJjNzJlYjhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNTk4LDcgKzU5OCw2IEBA
IHN0YXRpYyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFj
ayBjYWxsT25NYWluVGhyZWFkQ2FsbGJhCiAKIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0oKQogICAgIDogbV9yZWFkZXIoV1RGOjptYWtlVW5pcXVlUmVmPFN0
cmVhbWluZ1ZlY3RvclJlYWRlcj4oKSkKLSAgICAsIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNI
YW5kbGVkU2VtYXBob3JlKEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKSkKICAgICAsIG1f
Y2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2soY2FsbE9uTWFpblRocmVhZENhbGxiYWNrKCkpCiB7
CiAgICAgaWYgKGlzV2VibVBhcnNlckF2YWlsYWJsZSgpKQpAQCAtNjA3LDEzICs2MDYsMTQgQEAg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCiAKIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06On5Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkKIHsKLSAgICBtX2lu
aXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZv
aWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwg
QXBwZW5kRmxhZ3MgYXBwZW5kRmxhZ3MpCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFw
cGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhZ3MpCiB7Ci0gICAgaWYgKCFt
X3BhcnNlcikKKyAgICBpZiAoIW1fcGFyc2VyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiZmxhZ3MoIiwgYXBwZW5kRmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2Nv
bnRpbnVpdHkgPyAiRGlzY29udGludWl0eSIgOiAiIiwgIiksIHNpemUoIiwgc2VnbWVudC5zaXpl
KCksICIpIik7CiAKQEAgLTYyNyw2ICs2MjcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIEFwcGVuZEZsYWdzIGFwcGVuZEZsYQog
ICAgICAgICBtX3N0YXR1cyA9IG1fcGFyc2VyLT5GZWVkKHRoaXMsICZtX3JlYWRlcik7CiAgICAg
ICAgIGlmIChtX3N0YXR1cy5vaygpIHx8IG1fc3RhdHVzLmNvZGUgPT0gU3RhdHVzOjprRW5kT2ZG
aWxlIHx8IG1fc3RhdHVzLmNvZGUgPT0gU3RhdHVzOjprV291bGRCbG9jaykgewogICAgICAgICAg
ICAgbV9yZWFkZXItPnJlY2xhaW1TZWdtZW50cygpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC02NTcsMTEgKzY1
OCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERhdGEoU2VnbWVudCYm
IHNlZ21lbnQsIEFwcGVuZEZsYWdzIGFwcGVuZEZsYQogICAgICAgICBpZiAobV9kaWRFbmNvdW50
ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjaykKICAgICAgICAgICAgIG1fZGlkRW5jb3VudGVy
RXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soY29kZSk7CiAgICAgfSk7CisKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmZsdXNoUGVu
ZGluZ01lZGlhRGF0YSgpCiB7Ci0gICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRT
ZW1hcGhvcmUtPnNpZ25hbCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNl
dFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90KQpAQCAtNjg2
LDE2ICs2ODgsMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpyZXNldFBhcnNlclN0
YXRlKCkKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51bGxwdHI7CiAgICAgbV9pbml0
aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9IGZhbHNlOwogICAgIG1fY3VycmVudEJsb2Nr
LnJlc2V0KCk7Ci0KLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9y
ZS0+c2lnbmFsKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0
ZSgpCiB7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKLSAgICBt
X2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0KICAg
ICBtX3BhcnNlciA9IG51bGxwdHI7CiAgICAgbV90cmFja3MuY2xlYXIoKTsKICAgICBtX2luaXRp
YWxpemF0aW9uU2VnbWVudCA9IG51bGxwdHI7CkBAIC03MTcsNyArNzE1LDYgQEAgYXV0byBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjp0cmFja0RhdGFGb3JUcmFja051bWJlcih1aW50NjRfdCB0cmFj
a051bWJlcikgLT4gVHIKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotCiBTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBt
ZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsK
QEAgLTgzNywxMyArODM0LDggQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1
c3RlckJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGMKIAogICAgIGlmICht
X2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkICYmIG1fZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGFDYWxsYmFjaykgewogICAgICAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNr
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0aW9uU2Vn
bWVudCA9IFdURk1vdmUoKm1faW5pdGlhbGl6YXRpb25TZWdtZW50KV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKGlu
aXRpYWxpemF0aW9uU2VnbWVudCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKLSAgICAgICAgICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNl
bWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1fZGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2VnbWVu
dCkpOwogICAgICAgICB9KTsKLQotICAgICAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFsaXph
dGlvbiBzZWdtZW50IGlzIGhhbmRsZWQKLSAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJ
c0hhbmRsZWRTZW1hcGhvcmUtPndhaXQoKTsKICAgICB9CiAgICAgbV9pbml0aWFsaXphdGlvblNl
Z21lbnRFbmNvdW50ZXJlZCA9IGZhbHNlOwogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCA2YjYyZGMwNjU5ZTZj
ODYxMTJlM2RhZjQ2NWJhNjQxZTM5OWZkNDBjLi5hZjYzNGJiY2NhOTIwMmU4NDYxMWYyMDhiZjY1
ZGI3NjgyMzJkMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC00Miw3ICs0
Miw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
dGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVl
Q01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKIHR5cGVkZWYgc3Ry
dWN0IE9wYXF1ZUNNQmxvY2tCdWZmZXIgKkNNQmxvY2tCdWZmZXJSZWY7CkBAIC03Myw3ICs3Miw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCB3ZWJtOjpTdGF0dXMmIHN0YXR1cygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdHVzOyB9CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlOjpX
ZWJNOyB9Ci0gICAgdm9pZCBhcHBlbmREYXRhKFNlZ21lbnQmJiwgQXBwZW5kRmxhZ3MgPSBBcHBl
bmRGbGFnczo6Tm9uZSkgZmluYWw7CisgICAgdm9pZCBhcHBlbmREYXRhKFNlZ21lbnQmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9LCBBcHBlbmRGbGFncyA9IEFwcGVuZEZs
YWdzOjpOb25lKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpIGZpbmFs
OwogICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgdWlu
dDY0X3QpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQo
dWludDY0X3QpIGZpbmFsOwpAQCAtMjY1LDcgKzI2NCw2IEBAIHByaXZhdGU6CiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IG1fcmV3aW5kVG9Qb3NpdGlvbjsKICAgICBmbG9hdCBtX21pbmltdW1BdWRp
b1NhbXBsZUR1cmF0aW9uIHsgMiB9OwogCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gbV9pbml0
aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmU7CiAgICAgQ2FsbE9uQ2xpZW50VGhy
ZWFkQ2FsbGJhY2sgbV9jYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjazsKIAogICAgIFJlZlB0cjxj
b25zdCBXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNw
cAppbmRleCAyNGZiN2FkZTQ0OGE5YWRjZjEzYThhZDAzMTlhMjUwZmExZjQxM2IzLi5kMGY5YjIw
MDkwZGQwNzFmZDJlYThlOWYyNzkxZTgyNWUxYWQ4ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHAKQEAgLTEyNCw5ICsxMjQsOCBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpw
YXJzZUJ5dGVTb3VyY2UoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwog
ICAgICAgICBNZWRpYVRyYWNrUmVhZGVyOjpzdG9yYWdlUXVldWUoKS5kaXNwYXRjaChXVEZNb3Zl
KGZ1bmN0aW9uKSk7CiAgICAgfSk7CiAKLSAgICBwYXJzZXItPnNldERpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0o
U291cmNlQnVmZmVyUGFyc2VyOjpJbml0aWFsaXphdGlvblNlZ21lbnQmJiBpbml0aWFsaXphdGlv
blNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eworICAgIHBhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShTb3VyY2VCdWZmZXJQYXJzZXI6Oklu
aXRpYWxpemF0aW9uU2VnbWVudCYmIGluaXRpYWxpemF0aW9uU2VnbWVudCkgewogICAgICAgICBk
aWRQYXJzZVRyYWNrcyhXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2VnbWVudCksIG5vRXJyKTsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIAogICAgIHBhcnNlci0+c2V0RGlk
RW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0odWludDY0X3QgZXJyb3JDb2RlKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWYzOGRiMjdh
NjhiOGIzOTIwZWJjOWM4YWU2NmEyNDYxZmQ2ZmY4MS4uNmU0ZGViMjFiNTQwMzJhMDFmMTA1YjNm
OTYwYjQ0OTI2YjFjYjQ5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAxLTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9i
bGUuCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAq
IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVy
LWFib3J0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDEtMjUg
IEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBVc2Ug
ZGlmZmVyZW50IHdlbGwta25vd24gbG9jYXRpb25zIGZvciB0cmlnZ2VyaW5nIGFuZCByZXBvcnRp
bmcgYXR0cmlidXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDc5YTgxNGJiMDI5YzI3MzNiOWM2Y2FiODRkMjU0YmQ4MDIwNjM3N2UuLjM2Mzc3Y2MyMWI3
ZWM1NmI4MDgwZjY3ZjQ0YjdiOWIzZWRhNmRlNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dw
dS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQ2LDcgKzM0Niw2IEBAIG1lZGlhL21lZGlhLWNvbnRyb2xs
ZXItdGltZS1jb25zdGFudC5odG1sIFsgVGltZW91dCBdCiBtZWRpYS9tZWRpYS1jb250cm9sbGVy
LXRpbWUuaHRtbCBbIFRpbWVvdXQgXQogbWVkaWEvbWVkaWEtY29udHJvbGxlci11bnBhdXNlLmh0
bWwgWyBUaW1lb3V0IF0KIG1lZGlhL21lZGlhLWhpZ2hlci1wcmlvLWF1ZGlvLXN0cmVhbS5odG1s
IFsgU2tpcCBdCi1tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbCBbIEZh
aWx1cmUgXQogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWluaXQtaW5zaWRl
LXNlZ21lbnQuaHRtbCBbIEZhaWx1cmUgXQogbWVkaWEvbWVkaWEtdm9sdW1lLXNsaWRlci1yZW5k
ZXJlZC1iZWxvdy5odG1sIFsgU2tpcCBdCiBtZWRpYS9tZWRpYS12b2x1bWUtc2xpZGVyLXJlbmRl
cmVkLW5vcm1hbC5odG1sIFsgU2tpcCBdCkBAIC01MTksNyArNTE4LDYgQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtc3RyZWFtcyBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYnVmZmVy
ZWQuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtY2hhbmdldHlwZS5odG1sIFsgRmFpbHVyZSBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1kdXJhdGlv
bi1ib3VuZGFyeWNvbmRpdGlvbnMuaHRtbCBbIEZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcGxheS5odG1sIFsgRmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1yZW1vdmUuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tc3QtY29udGVudC1oaW50L2lkbGhhcm5lc3Mud2luZG93Lmh0bWwgWyBTa2lwIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbXN0LWNvbnRlbnQtaGludC9NZWRpYVN0cmVh
bVRyYWNrLWNvbnRlbnRIaW50Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVy
LWFib3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVyLWFib3J0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ZDExMzczYzdjMTU3NjAzMWQ2MjhmNzJhYTBlMTViNzgyMDAyZWRjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13
ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgb2YgdGhlIFNvdXJjZUJ1ZmZlciB0byByZXNldCB0
aGUgcGFyc2VyIGFmdGVyIGFuIGFib3J0KCkuIEEgU291cmNlQnVmZmVyIGluIHRoaXMgc3RhdGUg
c2hvdWxkIGJlIGFibGUgdG8gYWNjZXB0IGEgbmV3IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgYW5k
IGEgbmV3IG1lZGlhIHNlZ21lbnQsIGFuZCB0aGUgdmlkZW8gZWxlbWVudCBzaG91bGQgZmlyZSAi
Y2FucGxheXRocm91Z2giIGV2ZW50LgorCitSVU4odmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVj
dFVSTChzb3VyY2UpKQorRVZFTlQoc291cmNlb3BlbikKK1JVTihzb3VyY2UuZHVyYXRpb24gPSBs
b2FkZXIuZHVyYXRpb24oKSkKK1JVTihzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVm
ZmVyKGxvYWRlci50eXBlKCkpKQorUlVOKHNvdXJjZUJ1ZmZlci5hYm9ydCgpKQorUlVOKHNvdXJj
ZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVyLmluaXRTZWdtZW50KCkpKQorRVZFTlQodXBkYXRl
KQorQXBwZW5kIGEgbWVkaWEgc2VnbWVudC4KK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVy
KGxvYWRlci5tZWRpYVNlZ21lbnQoMCkpKQorRVZFTlQodXBkYXRlKQorRVZFTlQoY2FucGxheXRo
cm91Z2gpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5odG1s
IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVu
ZC1idWZmZXItYWZ0ZXItYWJvcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTliNjZiZjJiYTI3ZDNjOWYy
OWM3OWE4NDFhZWNkYTkxYjJmOGQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJv
cnQuaHRtbApAQCAtMCwwICsxLDU5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHRpdGxlPm1lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQ8
L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJtZWRpYS1zb3VyY2UtbG9hZGVyLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdD4KKyAgICB2YXIgbG9hZGVyOworICAgIHZhciBzb3VyY2U7CisgICAgdmFyIHNvdXJjZUJ1
ZmZlcjsKKworICAgIGZ1bmN0aW9uIGxvYWRlclByb21pc2UobG9hZGVyKSB7CisgICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBsb2Fk
ZXIub25sb2FkID0gcmVzb2x2ZTsKKyAgICAgICAgICAgIGxvYWRlci5vbmVycm9yID0gcmVqZWN0
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpbmRNZWRp
YUVsZW1lbnQoKTsKKyAgICAgICAgICAgIGxvYWRlciA9IG5ldyBNZWRpYVNvdXJjZUxvYWRlcign
Y29udGVudC90ZXN0LXZwOS1tYW5pZmVzdC5qc29uJyk7CisgICAgICAgICAgICBhd2FpdCBsb2Fk
ZXJQcm9taXNlKGxvYWRlcik7CisKKyAgICAgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJj
ZSgpOworICAgICAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNv
dXJjZSknKTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlLCAnc291cmNlb3Blbicp
OworICAgICAgICAgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgnZXJyb3InKTsKKworICAgICAgICAg
ICAgcnVuKCdzb3VyY2UuZHVyYXRpb24gPSBsb2FkZXIuZHVyYXRpb24oKScpOworICAgICAgICAg
ICAgcnVuKCdzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKGxvYWRlci50eXBl
KCkpJyk7CisKKyAgICAgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFib3J0KCknKTsKKworICAg
ICAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGxvYWRlci5pbml0U2VnbWVu
dCgpKScpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcihzb3VyY2VCdWZmZXIsICd1cGRhdGUn
KTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdBcHBlbmQgYSBtZWRpYSBzZWdtZW50Licp
CisgICAgICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVyLm1lZGlh
U2VnbWVudCgwKSknKTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlQnVmZmVyLCAn
dXBkYXRlJyk7CisKKyAgICAgICAgICAgIGZhaWxUZXN0SW4oMjAwMCk7CisKKyAgICAgICAgICAg
IGF3YWl0IHdhaXRGb3IodmlkZW8sICdjYW5wbGF5dGhyb3VnaCcpOworICAgICAgICAgICAgZW5k
VGVzdCgpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBmYWlsVGVzdChgQ2F1
Z2h0IGV4Y2VwdGlvbjogIiR7ZX0iYCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXY+CisgICAgICAgIFRoaXMgdGVzdHMgdGhlIGFi
aWxpdHkgb2YgdGhlIFNvdXJjZUJ1ZmZlciB0byByZXNldCB0aGUgcGFyc2VyIGFmdGVyIGFuIGFi
b3J0KCkuIEEgU291cmNlQnVmZmVyIGluIHRoaXMgc3RhdGUgc2hvdWxkIGJlIGFibGUgdG8gYWNj
ZXB0CisgICAgICAgIGEgbmV3IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgYW5kIGEgbmV3IG1lZGlh
IHNlZ21lbnQsIGFuZCB0aGUgdmlkZW8gZWxlbWVudCBzaG91bGQgZmlyZSAiY2FucGxheXRocm91
Z2giIGV2ZW50LgorICAgIDwvZGl2PgorICAgIDx2aWRlbyBjb250cm9scz48L3ZpZGVvPgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTI2NzZiNGQ2ZTE5NjU5ZjI3MDA2YTgw
MmU2YjYyNmZkNDk0Y2U5Mi4uM2RhMGIzMWRmMjNhM2NhZWE4YjhhZGFhMmYzY2UxMmNjYzM3OWVm
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4NzQs
NiArMTg3NCw3IEBAIHdlYmtpdC5vcmcvYi8yMTQxNTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wCiAKICMgVGhlc2UgdGVzdCByZXF1
aXJlcyBzeXN0ZW0gcGxhdGZvcm0gc3VwcG9ydC4KIFsgQ2F0YWxpbmEgTW9qYXZlIF0gbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwgWyBTa2lwIF0KK1sgQ2F0YWxpbmEg
TW9qYXZlIF0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZm
ZXItYWZ0ZXItYWJvcnQuaHRtbCBbIFNraXAgXQogWyBDYXRhbGluYSBNb2phdmUgXSBtZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0taW5pdC1pbnNpZGUtc2VnbWVudC5odG1sIFsg
U2tpcCBdCiBbIENhdGFsaW5hIE1vamF2ZSBdIHBsYXRmb3JtL21hYy9tZWRpYS9tZWRpYWNhcGFi
aWxpdGllcy92cDktZGVjb2RpbmdJbmZvLXN3Lmh0bWwgWyBTa2lwIF0KIFsgQ2F0YWxpbmEgTW9q
YXZlIF0gcGxhdGZvcm0vbWFjL21lZGlhL21lZGlhLXNvdXJjZS9pcy10eXBlLXN1cHBvcnRlZC12
cDktY29kZWMtY2hlY2suaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418664</attachid>
            <date>2021-01-28 13:13:28 -0800</date>
            <delta_ts>2021-01-28 16:19:39 -0800</delta_ts>
            <desc>Revise the patch based Darin&apos;s comment</desc>
            <filename>bug-220964-20210128131327.patch</filename>
            <type>text/plain</type>
            <size>34297</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE1ZDg0YTJjNWM3Njkz
YjZkYWU2ZmQ1MTdiN2M0NjRmZGY2ODY5Zi4uOTE2MTVmZjFlZGI4MTY3MDcwNWQ5YzU1ZTIzMjQ0
NTYwOTEzZTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTAxLTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRl
byBlbGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9i
bGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGBpbml0aWFsaXphdGlvblNlZ21lbnRJ
c0hhbmRsZWRTZW1hcGhvcmVgIGZyb20gYm90aCBgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQ2AK
KyAgICAgICAgYW5kIGBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNYCwgYW5kIGltcGxlbWVudHMgYSBt
ZWRpYSBzYW1wbGUgY2FjaGUgbWVjaGFuaXNtIGluIGBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Q2AKKyAgICAgICAgdG8gZW5zdXJlIHRoYXQgIkNvZGVkIEZyYW1lIFByb2Nlc3NpbmciIHN0ZXBz
IGV4ZWN1dGUgYWZ0ZXIgYFNvdXJjZUJ1ZmZlclByaXZhdGVgIGhhcyBoYW5kbGVkIHRoZQorICAg
ICAgICBpbml0aWFsaXphdGlvbiBzZWdtZW50IGFuZCBlbmFibGVkIHZpZGVvL2F1ZGlvIHRyYWNr
cy4gV2l0aG91dCB0aGUgY2FjaGUgbWVjaGFuaXNtLCBzb21lIG1lZGlhCisgICAgICAgIHNhbXBs
ZXMgZm9sbG93aW5nIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IG1heSBiZSBkcm9wcGVkIHdo
ZW4gd2UgcnVuIGBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ2AKKyAgICAgICAgaW4gdGhlIEdQ
VSBwcm9jZXNzLCBhbmQgdGhlIG1lZGlhIGVsZW1lbnQgd29uJ3QgZmlyZSAiY2FucGxheXRocm91
Z2giIGV2ZW50IGJlY2F1c2UgaXQgY2Fubm90IGNoYW5nZQorICAgICAgICBpdHMgcmVhZHkgc3Rh
dGUgdG8gYSB2YWx1ZSBncmVhdGVyIHRoYW4gSEFWRV9NRVRBREFUQS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gaW1wbGVtZW50cyB0aGUgbWVjaGFuaXNtIHRvIG1ha2Ugc3VyZSBgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCgpYAorICAgICAgICBydW5zIGFm
dGVyIGFsbCBtZWRpYSBzYW1wbGVzIGhhdmUgZ29uZSB0aHJvdWdoIHRoZSAiQ29kZWQgRnJhbWUg
UHJvY2Vzc2luZyIgc3RlcHMsIHNvIHRoYXQgdGhlIHNvdXJjZQorICAgICAgICBidWZmZXIgb2Jq
ZWN0IHdpbGwgZmlyZSAidXBkYXRlIiBhbmQgInVwZGF0ZWVuZCIgZXZlbnQgYWZ0ZXIgdGhlIHBh
cnNlciBoYXMgY29tcGxldGVkbHkgcGFyc2VkIHRoZQorICAgICAgICBhcHBlbmRlZCBidWZmZXIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgIEFkZCBhIHBhcmFtZXRlciAiQ29tcGxldGlv
bkhhbmRsZXIiIHRvIG5vdGlmeSB0aGUgY2FsbGVyIHRoYXQgdGhlIHBhcnNlciBoYXMgcGFyc2Vk
IHRoZSB3aG9sZSBidWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQp
OgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIEFm
dGVyIGBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50YCBoYXMgZG9uZSB0aGUgY29uZmlndXJhdGlv
biB3aXRoIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50LCB3ZSBuZWVkIHRvCisgICAgICAgIHB1
c2ggdGhlIGNhY2hlZCBtZWRpYSBzYW1wbGVzIChpZiBhbnkpIHRvIGBTb3VyY2VCdWZmZXJQcml2
YXRlYCB0byBydW4gdGhlICJDb2RlZCBGcmFtZSBQcm9jZXNzaW5nIiBzdGVwcy4KKyAgICAgICAg
QW5kIHdlIG5lZWQgdG8gY2FsbCAiYXBwZW5kQ29tcGxldGVkKCkiIGlmIHRoZXJlIGlzIGEgcGVu
ZGluZyBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZCk6CisgICAgICAgIGBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQ2AgbmVlZHMgdG8gY2FjaGUgdGhlIG1lZGlhIHNhbXBsZSBpZiB0aGUg
aW5pdGlhbGl6YXRpb24gc2VnbWVudCBoYXMgbm90IGJlZW4KKyAgICAgICAgcHJvY2Vzc2VkIGJ5
IGBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50YCB5ZXQuCisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgV2UgbmVlZCB0byBwb3N0
cG9uZSB0aGUgImFwcGVuZENvbXBsZXRlZCgpIiBjYWxsYmFjayBpZiB0aGVyZSBhcmUgY2FjaGVk
IG1lZGlhIHNhbXBsZXMuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6YXBwZW5kQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6c2V0VmlkZW9MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOiBEZWxldGVk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6flNvdXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKToKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoK
KwogMjAyMS0wMS0yNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBQQ006IFVzZSBkaWZmZXJlbnQgd2VsbC1rbm93biBsb2NhdGlvbnMgZm9yIHRyaWdnZXJp
bmcgYW5kIHJlcG9ydGluZyBhdHRyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTA5NGYyYWQ4MzA4Y2E0
Zjg0MTcyYjU5NjJhODM4NWY2Nzk1ZGJmLi4zZTBjNzhmZmY1YzVlNGEyMTEwYTdiZGFhMTlhOGJm
NGFmY2Q1MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAxLTI4ICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdW01TRV0gQSB2aWRlbyBl
bGVtZW50IGRvZXMgbm90IGZpcmUg4oCcY2FucGxheXRocm91Z2jigJ0gZXZlbnQgaWYgU291cmNl
QnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUu
CisKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVh
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNv
dXJjZSk6CisKIDIwMjEtMDEtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBXZWIgcHJvY2VzcyBzaG91bGQgYmUgdGVybWlu
YXRlZCBpZiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSBhZHZhbmNlcyBwYXN0IDAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAppbmRleCBk
NjhjMzkzZDRmNWU1ZmY1ODg0ODM1ZDY5ZDJjNGIxODQ4NDUxYTkyLi5iMjUzZGRmYzg2OGZlZDU5
ZmM2ZDZjNWRhZmNiZDY3N2M4MjQxOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVk
ZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgotI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgog
CiBPQkpDX0NMQVNTIEFWQXNzZXQ7CiBPQkpDX0NMQVNTIEFWU3RyZWFtRGF0YVBhcnNlcjsKQEAg
LTU0LDcgKzUzLDcgQEAgcHVibGljOgogICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJzZXIuZ2V0KCk7IH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFR5cGU6OkFWRk9iakM7IH0KLSAgICB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYm
LCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVu
ZERhdGEoU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYsIEFwcGVuZEZsYWdz
ID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOwogICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFE
YXRhKCkgZmluYWw7CiAgICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJ
RChib29sLCB1aW50NjRfdCkgZmluYWw7CiAgICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRh
Rm9yVHJhY2tJRCh1aW50NjRfdCkgZmluYWw7CkBAIC04MSw4ICs4MCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50IHsg
ZmFsc2UgfTsKICAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07CiAKLSAg
ICBCb3g8QmluYXJ5U2VtYXBob3JlPiBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNl
bWFwaG9yZTsKLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZlB0cjxjb25zdCBX
VEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsg
bnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMubW0KaW5kZXggYmVjNGU5ZDZjMGFlNmU2YTM4M2EwMjJlMWVhMWE1ZDllYTMz
NTMxZC4uMWFkNGRhN2UwYzI1ZGI1MjA3MmNiMmUwYjc5NDYyYzFhNDNkMjdmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBA
IC0yMDAsMTggKzIwMCwxNiBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZAogU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiAgICAgOiBtX3BhcnNl
cihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkp
CiAgICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OnRoaXNdKSkKLSAg
ICAsIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlKEJveDxCaW5hcnlT
ZW1hcGhvcmU+OjpjcmVhdGUoKSkKIHsKIH0KIAogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogewotICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICBtX2RlbGVnYXRlLmdldCgpLnBh
cmVudCA9IG51bGxwdHI7CiAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07CiB9CiAKLXZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwg
QXBwZW5kRmxhZ3MgZmxhZ3MpCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVu
ZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VnbWVudC50YWtlVmVjdG9yKCkpOwogICAgIGF1dG8g
bnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CkBAIC0yMjAsMTEgKzIxOCwxMSBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNl
Z21lbnQsIEFwcGVuZEZsYWdzIGZsYWdzKQogICAgIGVsc2UKICAgICAgICAgW21fcGFyc2VyIGFw
cGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKICAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQg
PSBmYWxzZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlhRGF0YSgpCiB7Ci0gICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgIFttX3BhcnNl
ciBwcm92aWRlUGVuZGluZ01lZGlhRGF0YV07CiB9CiAKQEAgLTI0MiwxNCArMjQwLDEwIEBAIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCiB7CiAgICAg
bV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKICAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxO
ZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKLQotICAgIG1faW5pdGlhbGl6YXRpb25T
ZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjppbnZhbGlkYXRlKCkKIHsKLSAgICBtX2luaXRpYWxpemF0aW9uU2Vn
bWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0KICAgICBbbV9kZWxlZ2F0ZSBpbnZh
bGlkYXRlXTsKICAgICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKICAgICBtX3BhcnNlciA9IG51bGxw
dHI7CkBAIC0zMDIsMTMgKzI5Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgICAgIC8v
IEZJWE1FKDEyNTE2MSkgICAgOiBBZGQgVGV4dFRyYWNrIHN1cHBvcnQKICAgICAgICAgfQogCi0g
ICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21l
bnQpLCBbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgICAgICBt
X2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAg
ICAgIH0pOworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RG
TW92ZShzZWdtZW50KSk7CiAgICAgfSk7Ci0KLSAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFs
aXphdGlvbiBzZWdtZW50IGlzIGhhbmRsZWQKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElz
SGFuZGxlZFNlbWFwaG9yZS0+d2FpdCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oCmluZGV4IGQ3YTdiNjJmNzcxMjY4NjdjYWI1OTc1ODI1NzUxNWU2ZDhkNzExMTcuLjE0ZTQ2
Y2Y3ZjY3NDNjYTJiZmQ2MTZjOWZmOTIwMWFlNGNmNGU5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAor
I2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJz
ZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0
Y2gvZ3JvdXAuaD4KQEAgLTEzOCw5ICsxMzksOSBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8
U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVu
dCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAg
ICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOwogICAgIHZvaWQgZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QpOwotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJh
Y2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAg
dm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOwpAQCAtMTgyLDYgKzE4
MywxMSBAQCBwcml2YXRlOgogICAgIFdlYWtQdHJGYWN0b3J5PFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDPiBtX2FwcGVuZFdlYWtGYWN0b3J5OwogCiAgICAgUmVmPFNvdXJjZUJ1ZmZlclBhcnNl
cj4gbV9wYXJzZXI7CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxsYmFjayB7
IGZhbHNlIH07CisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxl
Pj4+IG1fbWVkaWFTYW1wbGVzOworICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fbWVkaWFT
YW1wbGVUYXNrUXVldWU7CisKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI+IG1fZGlzcGxheUxheWVyOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVH
SU4KICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1Jl
bmRlcmVyPiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVpbnQ2NF90Pj4gbV9hdWRpb1JlbmRlcmVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNWE0MjIy
MjBiZTVmZWM2NjAwODQ4MTJkYjJjNzRiOGY2MDNiNGE1ZC4uY2E5ODc2MjM0NWVhNzIzMTdhZTBm
NGI0ZTY0ZWU2YTZkNDUzM2JkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTMwOCwxNCArMzA4LDEwIEBAIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDCiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwg
bWFrZVdlYWtQdHIoKnRoaXMpKTsKIAotICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YUNhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAo
SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0gKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAg
ICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdt
ZW50KSk7CiAgICAgfSk7CiAKICAgICBtX3BhcnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJp
bmdQYXJzaW5nQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChpbnQzMl90
IGVycm9yQ29kZSkgbXV0YWJsZSB7CkBAIC0zMjQsMTAgKzMyMCwxMCBAQCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQwogICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZyhlcnJvckNvZGUpOwogICAgIH0pOwogCi0gICAgbV9wYXJzZXItPnNldERpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFJlZjxN
ZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlKSBtdXRhYmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNh
bGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoUmVmPE1lZGlhU2FtcGxlPiYm
IHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIG11dGFi
bGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAod2Vha1Ro
aXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQo
V1RGTW92ZShzYW1wbGUpLCB0cmFja0lELCBtZWRpYVR5cGUpOworICAgICAgICAgICAgd2Vha1Ro
aXMtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJ
ZCwgbWVkaWFUeXBlKTsKICAgICB9KTsKIH0KIApAQCAtMzQ2LDE0ICszNDIsMTUgQEAgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAKICAg
ICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhv
cmUtPnNpZ25hbCgpOworCisgICAgbV9tZWRpYVNhbXBsZVRhc2tRdWV1ZS5jbG9zZSgpOwogfQog
Ci12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBz
ZWdtZW50KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBpZiAoIW1f
bWVkaWFTb3VyY2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMzY0LDcgKzM2MSw2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVu
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIWNvZGVjc01lZXRI
YXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyh7eyAqY29kZWMgfX0sIG1fbWVkaWFTb3VyY2UtPnBs
YXllcigpLT5tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpKSkgewog
ICAgICAgICAgICAgICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0zOTEsNyArMzg3LDQxIEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9u
U2VnbWVuCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBs
YXllcigpLT5jaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCk7CiAKLSAgICBkaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KFdURk1vdmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IGZhbHNlOworICAg
IGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmICAobV9tZWRpYVNhbXBsZXMuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IHRydWU7CisgICAgICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJpbml0aWFsaXphdGlvbiBzZWdtZW50IGlz
IGhhbmRsZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1f
bWVkaWFTYW1wbGVUYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIG1lZGlhU2FtcGxlcyA9IHN0ZDo6ZXhjaGFu
Z2UobV9tZWRpYVNhbXBsZXMsIHsgfSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHRyYWNrSWRN
ZWRpYVNhbXBsZVBhaXIgOiBtZWRpYVNhbXBsZXMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHRy
YWNrSWQgPSB0cmFja0lkTWVkaWFTYW1wbGVQYWlyLmZpcnN0OworICAgICAgICAgICAgICAgIGF1
dG8mIG1lZGlhU2FtcGxlID0gdHJhY2tJZE1lZGlhU2FtcGxlUGFpci5zZWNvbmQ7CisgICAgICAg
ICAgICAgICAgaWYgKHRyYWNrSWQgPT0gbV9lbmFibGVkVmlkZW9UcmFja0lEIHx8IG1fYXVkaW9S
ZW5kZXJlcnMuY29udGFpbnModHJhY2tJZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgREVCVUdf
TE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGlkUmVjZWl2ZVNhbXBsZShtZWRpYVNhbXBsZSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxl
ZCA9IHRydWU7CisgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJpbml0aWFs
aXphdGlvbiBzZWdtZW50IGlzIGhhbmRsZWQiKTsKKworICAgICAgICAgICAgaWYgKG1faGFzUGVu
ZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgbV9oYXNQZW5k
aW5nQXBwZW5kQ29tcGxldGVkQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBhcHBl
bmRDb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZyhpbnQzMl90IGNvZGUpCkBAIC00MDQsMTEgKzQzNCwxNiBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJf
dCBjb2RlKQogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChSZWY8
TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlk
ZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50
NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKIHsKICAgICBVTlVTRURfUEFS
QU0obWVkaWFUeXBlKTsKKyAgICBpZiAoIW1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVk
KSB7CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS5nZXQoKSk7
CisgICAgICAgIG1fbWVkaWFTYW1wbGVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih0cmFja0lkLCBX
VEZNb3ZlKG1lZGlhU2FtcGxlKSkpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYg
KHRyYWNrSUQgIT0gbV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNv
bnRhaW5zKHRyYWNrSUQpKSB7CisgICAgaWYgKHRyYWNrSWQgIT0gbV9lbmFibGVkVmlkZW9UcmFj
a0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSWQpKSB7CiAgICAgICAgIC8v
IEZJWE1FKDEyNTE2MSk6IFdlIGRvbid0IGhhbmRsZSB0ZXh0IHRyYWNrcywgYW5kIHBhc3Npbmcg
dGhpcyBzYW1wbGUgdXAgdG8gU291cmNlQnVmZmVyCiAgICAgICAgIC8vIHdpbGwganVzdCBjb25m
dXNlIGl0cyBzdGF0ZS4gRHJvcCB0aGlzIHNhbXBsZSB1bnRpbCB3ZSBjYW4gaGFuZGxlIHRleHQg
dHJhY2tzIHByb3Blcmx5LgogICAgICAgICByZXR1cm47CkBAIC01MTAsNyArNTQ1LDcgQEAgc3Rh
dGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCkKIAogdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRh
dGEpCiB7Ci0gICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRh
dGEuc2l6ZSgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9
ICIsIGRhdGEuc2l6ZSgpKTsKIAogICAgIEFTU0VSVCghbV9oYXNTZXNzaW9uU2VtYXBob3JlKTsK
ICAgICBBU1NFUlQoIW1fYWJvcnRTZW1hcGhvcmUpOwpAQCAtNTYxLDEyICs1OTYsMTkgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiYmIGRhdGEpCiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9n
cm91cF9lbnRlcihtX2lzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogCi0gICAgZGlzcGF0Y2hfYXN5
bmMoZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCksIFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1Ro
aXMgPSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBt
X3BhcnNlciwgaXNBcHBlbmRpbmdHcm91cCA9IG1faXNBcHBlbmRpbmdHcm91cF0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIHBhcnNlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICBkaXNw
YXRjaF9hc3luYyhnbG9iYWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEp
LCB3ZWFrVGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBh
cnNlciA9IG1fcGFyc2VyLCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwXSgp
IG11dGFibGUgeworICAgICAgICBwYXJzZXItPmFwcGVuZERhdGEoV1RGTW92ZShkYXRhKSwgW3dl
YWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcy0+bV9tZWRpYVNhbXBsZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRD
YWxsYmFjayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKLSAgICAgICAg
ICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+YXBwZW5kQ29tcGxl
dGVkKCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIGRpc3BhdGNoX2dy
b3VwX2xlYXZlKGlzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogICAgIH0pOwpAQCAtNTc0LDYgKzYx
Niw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5z
aWduZWQgY2hhcj4mJiBkYXRhKQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjph
cHBlbmRDb21wbGV0ZWQoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAg
aWYgKG1fYWJvcnRTZW1hcGhvcmUpIHsKICAgICAgICAgbV9hYm9ydFNlbWFwaG9yZS0+c2lnbmFs
KCk7CiAgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBuaWw7CkBAIC02MDcsNiArNjUwLDkgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQogICAgIH0KIAogICAgIG1f
cGFyc2VyLT5yZXNldFBhcnNlclN0YXRlKCk7CisgICAgbV9tZWRpYVNhbXBsZXMuY2xlYXIoKTsK
KyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IGZhbHNlOworICAgIG1fbWVk
aWFTYW1wbGVUYXNrUXVldWUuY2FuY2VsQWxsVGFza3MoKTsKIAogICAgIGRpc3BhdGNoX2dyb3Vw
X3dhaXQobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgpLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwog
fQpAQCAtMTIyOCw2ICsxMjc0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
c2V0VmlkZW9MYXllcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogbGF5ZXIKICAgICBpZiAo
bGF5ZXIgPT0gbV9kaXNwbGF5TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgIiEhbGF5ZXIgPSAiLCAhIWxheWVyKTsKICAgICBBU1NFUlQoIWxh
eWVyIHx8ICFtX2RlY29tcHJlc3Npb25TZXNzaW9uIHx8IGhhc1NlbGVjdGVkVmlkZW8oKSk7CiAK
ICAgICBpZiAobV9kaXNwbGF5TGF5ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggMzQ4
MjkzNDkzMjQ0MjFjNTdlNzZkNmFjOTBmYWM5OWNiNTY2ZjczNi4uNjE4YmY0MzRiOGJiYTIzNTRk
NTAzYjNmM2E0NDQ5NzRiZjEwNTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHVibGljOgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCi0gICAgdmly
dHVhbCB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdz
OjpOb25lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0sIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxh
Z3M6Ok5vbmUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJ
RChib29sLCB1aW50NjRfdCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQcm92aWRlTWVk
aWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCkgPSAwOwpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdXNpbmcg
SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlh
bGl6YXRpb25TZWdtZW50OwotICAgIHVzaW5nIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OworICAgIHVzaW5nIERpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50
JiYpPjsKICAgICB2b2lkIHNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soRGlk
UGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAg
ICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDZjZTk1OGY3YTQ2ZWM4
MWU5NGNmYjkyMTBhZjg5NmYzZDk1MzdlMDkuLjY2M2E4MjFlMTU1ZjFhYzJmY2JiMzllZjBmZDk4
ZWViMmM3MmViOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01OTgs
NyArNTk4LDYgQEAgc3RhdGljIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkNhbGxPbkNsaWVudFRo
cmVhZENhbGxiYWNrIGNhbGxPbk1haW5UaHJlYWRDYWxsYmEKIAogU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCiAgICAgOiBtX3JlYWRlcihXVEY6Om1ha2VV
bmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigpKQotICAgICwgbV9pbml0aWFsaXphdGlv
blNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUoQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgp
KQogICAgICwgbV9jYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhjYWxsT25NYWluVGhyZWFkQ2Fs
bGJhY2soKSkKIHsKICAgICBpZiAoaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkpCkBAIC02MDcsMTMg
KzYwNiwxNCBAQCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
KCkKIAogU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6flNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQog
ewotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwo
KTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFNlZ21lbnQm
JiBzZWdtZW50LCBBcHBlbmRGbGFncyBhcHBlbmRGbGFncykKK3ZvaWQgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBhcHBlbmRGbGFncykKIHsK
LSAgICBpZiAoIW1fcGFyc2VyKQorICAgIGlmICghbV9wYXJzZXIpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIElORk9fTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJmbGFncygiLCBhcHBlbmRGbGFncyA9PSBBcHBlbmRG
bGFnczo6RGlzY29udGludWl0eSA/ICJEaXNjb250aW51aXR5IiA6ICIiLCAiKSwgc2l6ZSgiLCBz
ZWdtZW50LnNpemUoKSwgIikiKTsKIApAQCAtNjI3LDYgKzYyNyw3IEBAIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQXBwZW5kRmxhZ3Mg
YXBwZW5kRmxhCiAgICAgICAgIG1fc3RhdHVzID0gbV9wYXJzZXItPkZlZWQodGhpcywgJm1fcmVh
ZGVyKTsKICAgICAgICAgaWYgKG1fc3RhdHVzLm9rKCkgfHwgbV9zdGF0dXMuY29kZSA9PSBTdGF0
dXM6OmtFbmRPZkZpbGUgfHwgbV9zdGF0dXMuY29kZSA9PSBTdGF0dXM6OmtXb3VsZEJsb2NrKSB7
CiAgICAgICAgICAgICBtX3JlYWRlci0+cmVjbGFpbVNlZ21lbnRzKCk7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTY1NywxMSArNjU4LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0
YShTZWdtZW50JiYgc2VnbWVudCwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhCiAgICAgICAgIGlmICht
X2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKQogICAgICAgICAgICAgbV9k
aWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhjb2RlKTsKICAgICB9KTsKKwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKIHsKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVu
dElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgdWludDY0
X3QpCkBAIC02ODYsMTYgKzY4OCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJl
c2V0UGFyc2VyU3RhdGUoKQogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsK
ICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CiAgICAgbV9j
dXJyZW50QmxvY2sucmVzZXQoKTsKLQotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5k
bGVkU2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjppbnZhbGlkYXRlKCkKIHsKICAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
KTsKIAotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWdu
YWwoKTsKLQogICAgIG1fcGFyc2VyID0gbnVsbHB0cjsKICAgICBtX3RyYWNrcy5jbGVhcigpOwog
ICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsKQEAgLTcxNyw3ICs3MTUsNiBA
QCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKHVp
bnQ2NF90IHRyYWNrTnVtYmVyKSAtPiBUcgogICAgIHJldHVybiBudWxscHRyOwogfQogCi0KIFN0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRCZWdpbihjb25zdCBFbGVtZW50
TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rpb24qIGFjdGlvbikKIHsKICAgICBVTlVTRURfUEFSQU0o
bWV0YWRhdGEpOwpAQCAtODM3LDEzICs4MzQsOCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6T25DbHVzdGVyQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgYwog
CiAgICAgaWYgKG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgJiYgbV9kaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKSB7CiAgICAgICAgIG1fY2FsbE9uQ2xpZW50VGhy
ZWFkQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlh
bGl6YXRpb25TZWdtZW50ID0gV1RGTW92ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQpXSgpIG11
dGFibGUgewotICAgICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gewotICAgICAgICAgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50
SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6
YXRpb25TZWdtZW50KSk7CiAgICAgICAgIH0pOwotCi0gICAgICAgIC8vIFdhaXQgdW50aWwgdGhl
IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgaXMgaGFuZGxlZAotICAgICAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+d2FpdCgpOwogICAgIH0KICAgICBtX2luaXRp
YWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CiAgICAgbV9pbml0aWFsaXphdGlv
blNlZ21lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDZi
NjJkYzA2NTllNmM4NjExMmUzZGFmNDY1YmE2NDFlMzk5ZmQ0MGMuLmFmNjM0YmJjY2E5MjAyZTg0
NjExZjIwOGJmNjVkYjc2ODIzMmQyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgK
QEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwog
dHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ01CbG9ja0J1ZmZlciAqQ01CbG9ja0J1ZmZlclJlZjsKQEAg
LTczLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHdlYm06OlN0YXR1cyYgc3RhdHVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFR5cGU6OldlYk07IH0KLSAgICB2b2lkIGFwcGVuZERhdGEoU2VnbWVudCYmLCBBcHBlbmRG
bGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZERhdGEoU2Vn
bWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0sIEFwcGVuZEZsYWdz
ID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOwogICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFE
YXRhKCkgZmluYWw7CiAgICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJ
RChib29sLCB1aW50NjRfdCkgZmluYWw7CiAgICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRh
Rm9yVHJhY2tJRCh1aW50NjRfdCkgZmluYWw7CkBAIC0yNjUsNyArMjY0LDYgQEAgcHJpdmF0ZToK
ICAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwogICAgIGZsb2F0IG1f
bWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24geyAyIH07CiAKLSAgICBCb3g8QmluYXJ5U2VtYXBo
b3JlPiBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZTsKICAgICBDYWxs
T25DbGllbnRUaHJlYWRDYWxsYmFjayBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrOwogCiAg
ICAgUmVmUHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwCmluZGV4IDI0ZmI3YWRlNDQ4YTlhZGNmMTNhOGFkMDMxOWEyNTBmYTFmNDEz
YjMuLmQwZjliMjAwOTBkZDA3MWZkMmVhOGU5ZjI3OTFlODI1ZTFhZDhmNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMTI0LDkgKzEyNCw4IEBAIHZvaWQgTWVkaWFGb3Jt
YXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJjZShSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVm
PiYmIGJ5dGVTCiAgICAgICAgIE1lZGlhVHJhY2tSZWFkZXI6OnN0b3JhZ2VRdWV1ZSgpLmRpc3Bh
dGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICB9KTsKIAotICAgIHBhcnNlci0+c2V0RGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXShTb3VyY2VCdWZmZXJQYXJzZXI6OkluaXRpYWxpemF0aW9uU2VnbWVudCYmIGlu
aXRpYWxpemF0aW9uU2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7CisgICAgcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNh
bGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFNvdXJjZUJ1ZmZl
clBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgaW5pdGlhbGl6YXRpb25TZWdtZW50KSB7
CiAgICAgICAgIGRpZFBhcnNlVHJhY2tzKFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSwg
bm9FcnIpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogCiAgICAgcGFy
c2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSh1aW50NjRfdCBlcnJvckNvZGUpIHsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA1ZjM4ZGIyN2E2OGI4YjM5MjBlYmM5YzhhZTY2YTI0NjFmZDZmZjgxLi42ZTRkZWIyMWI1NDAz
MmEwMWYxMDViM2Y5NjBiNDQ5MjZiMWNiNDkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDEtMjggIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF1b
TVNFXSBBIHZpZGVvIGVsZW1lbnQgZG9lcyBub3QgZmlyZSDigJxjYW5wbGF5dGhyb3VnaOKAnSBl
dmVudCBpZiBTb3VyY2VCdWZmZXIuYWJvcnQoKSBpcyBjYWxsZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEplciBOb2JsZS4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1i
dWZmZXItYWZ0ZXItYWJvcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAyMS0wMS0yNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQQ006IFVzZSBkaWZmZXJlbnQgd2VsbC1rbm93biBsb2NhdGlvbnMgZm9yIHRyaWdnZXJpbmcg
YW5kIHJlcG9ydGluZyBhdHRyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggNzlhODE0YmIwMjljMjczM2I5YzZjYWI4NGQyNTRiZDgwMjA2Mzc3ZS4u
MzYzNzdjYzIxYjdlYzU2YjgwODBmNjdmNDRiN2I5YjNlZGE2ZGU3MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9n
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNDYsNyArMzQ2LDYgQEAgbWVkaWEvbWVk
aWEtY29udHJvbGxlci10aW1lLWNvbnN0YW50Lmh0bWwgWyBUaW1lb3V0IF0KIG1lZGlhL21lZGlh
LWNvbnRyb2xsZXItdGltZS5odG1sIFsgVGltZW91dCBdCiBtZWRpYS9tZWRpYS1jb250cm9sbGVy
LXVucGF1c2UuaHRtbCBbIFRpbWVvdXQgXQogbWVkaWEvbWVkaWEtaGlnaGVyLXByaW8tYXVkaW8t
c3RyZWFtLmh0bWwgWyBTa2lwIF0KLW1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2Vi
bS5odG1sIFsgRmFpbHVyZSBdCiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0t
aW5pdC1pbnNpZGUtc2VnbWVudC5odG1sIFsgRmFpbHVyZSBdCiBtZWRpYS9tZWRpYS12b2x1bWUt
c2xpZGVyLXJlbmRlcmVkLWJlbG93Lmh0bWwgWyBTa2lwIF0KIG1lZGlhL21lZGlhLXZvbHVtZS1z
bGlkZXItcmVuZGVyZWQtbm9ybWFsLmh0bWwgWyBTa2lwIF0KQEAgLTUxOSw3ICs1MTgsNiBAQCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1zdHJlYW1zIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1idWZmZXJlZC5odG1sIFsgRmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jaGFuZ2V0eXBlLmh0bWwgWyBGYWlsdXJl
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLWR1cmF0aW9uLWJvdW5kYXJ5Y29uZGl0aW9ucy5odG1sIFsgRmFpbHVyZSBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1wbGF5Lmh0
bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291
cmNlL21lZGlhc291cmNlLXJlbW92ZS5odG1sIFsgRmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21zdC1jb250ZW50LWhpbnQvaWRsaGFybmVzcy53aW5kb3cuaHRtbCBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tc3QtY29udGVudC1oaW50
L01lZGlhU3RyZWFtVHJhY2stY29udGVudEhpbnQuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1i
dWZmZXItYWZ0ZXItYWJvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWFwcGVuZC1idWZmZXItYWZ0ZXItYWJvcnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhkMTEzNzNjN2MxNTc2MDMxZDYyOGY3MmFhMGUxNWI3ODIwMDJl
ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSBvZiB0aGUgU291cmNlQnVmZmVy
IHRvIHJlc2V0IHRoZSBwYXJzZXIgYWZ0ZXIgYW4gYWJvcnQoKS4gQSBTb3VyY2VCdWZmZXIgaW4g
dGhpcyBzdGF0ZSBzaG91bGQgYmUgYWJsZSB0byBhY2NlcHQgYSBuZXcgaW5pdGlhbGl6YXRpb24g
c2VnbWVudCBhbmQgYSBuZXcgbWVkaWEgc2VnbWVudCwgYW5kIHRoZSB2aWRlbyBlbGVtZW50IHNo
b3VsZCBmaXJlICJjYW5wbGF5dGhyb3VnaCIgZXZlbnQuCisKK1JVTih2aWRlby5zcmMgPSBVUkwu
Y3JlYXRlT2JqZWN0VVJMKHNvdXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZS5k
dXJhdGlvbiA9IGxvYWRlci5kdXJhdGlvbigpKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNvdXJjZS5h
ZGRTb3VyY2VCdWZmZXIobG9hZGVyLnR5cGUoKSkpCitSVU4oc291cmNlQnVmZmVyLmFib3J0KCkp
CitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIuaW5pdFNlZ21lbnQoKSkpCitF
VkVOVCh1cGRhdGUpCitBcHBlbmQgYSBtZWRpYSBzZWdtZW50LgorUlVOKHNvdXJjZUJ1ZmZlci5h
cHBlbmRCdWZmZXIobG9hZGVyLm1lZGlhU2VnbWVudCgwKSkpCitFVkVOVCh1cGRhdGUpCitFVkVO
VChjYW5wbGF5dGhyb3VnaCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1hcHBlbmQtYnVmZmVyLWFmdGVy
LWFib3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNl
LXdlYm0tYXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlOWI2NmJm
MmJhMjdkM2M5ZjI5Yzc5YTg0MWFlY2RhOTFiMmY4ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZl
ci1hZnRlci1hYm9ydC5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bWVkaWEtc291cmNlLXdlYm0tYXBwZW5kLWJ1ZmZlci1h
ZnRlci1hYm9ydDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLXNvdXJjZS1sb2FkZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBsb2FkZXI7CisgICAgdmFyIHNvdXJjZTsKKyAgICB2
YXIgc291cmNlQnVmZmVyOworCisgICAgZnVuY3Rpb24gbG9hZGVyUHJvbWlzZShsb2FkZXIpIHsK
KyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAg
ICAgICAgIGxvYWRlci5vbmxvYWQgPSByZXNvbHZlOworICAgICAgICAgICAgbG9hZGVyLm9uZXJy
b3IgPSByZWplY3Q7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgbG9hZGVyID0gbmV3IE1lZGlhU291
cmNlTG9hZGVyKCdjb250ZW50L3Rlc3QtdnA5LW1hbmlmZXN0Lmpzb24nKTsKKyAgICAgICAgICAg
IGF3YWl0IGxvYWRlclByb21pc2UobG9hZGVyKTsKKworICAgICAgICAgICAgc291cmNlID0gbmV3
IE1lZGlhU291cmNlKCk7CisgICAgICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IFVSTC5jcmVhdGVP
YmplY3RVUkwoc291cmNlKScpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcihzb3VyY2UsICdz
b3VyY2VvcGVuJyk7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCdlcnJvcicpOwor
CisgICAgICAgICAgICBydW4oJ3NvdXJjZS5kdXJhdGlvbiA9IGxvYWRlci5kdXJhdGlvbigpJyk7
CisgICAgICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIo
bG9hZGVyLnR5cGUoKSknKTsKKworICAgICAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIuYWJvcnQo
KScpOworCisgICAgICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVy
LmluaXRTZWdtZW50KCkpJyk7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKHNvdXJjZUJ1ZmZl
ciwgJ3VwZGF0ZScpOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ0FwcGVuZCBhIG1lZGlh
IHNlZ21lbnQuJykKKyAgICAgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihs
b2FkZXIubWVkaWFTZWdtZW50KDApKScpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcihzb3Vy
Y2VCdWZmZXIsICd1cGRhdGUnKTsKKworICAgICAgICAgICAgZmFpbFRlc3RJbigyMDAwKTsKKwor
ICAgICAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGZh
aWxUZXN0KGBDYXVnaHQgZXhjZXB0aW9uOiAiJHtlfSJgKTsKKyAgICAgICAgfQorICAgIH0pOwor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdj4KKyAgICAgICAgVGhpcyB0
ZXN0cyB0aGUgYWJpbGl0eSBvZiB0aGUgU291cmNlQnVmZmVyIHRvIHJlc2V0IHRoZSBwYXJzZXIg
YWZ0ZXIgYW4gYWJvcnQoKS4gQSBTb3VyY2VCdWZmZXIgaW4gdGhpcyBzdGF0ZSBzaG91bGQgYmUg
YWJsZSB0byBhY2NlcHQKKyAgICAgICAgYSBuZXcgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBhbmQg
YSBuZXcgbWVkaWEgc2VnbWVudCwgYW5kIHRoZSB2aWRlbyBlbGVtZW50IHNob3VsZCBmaXJlICJj
YW5wbGF5dGhyb3VnaCIgZXZlbnQuCisgICAgPC9kaXY+CisgICAgPHZpZGVvIGNvbnRyb2xzPjwv
dmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MjY3NmI0ZDZlMTk2
NTlmMjcwMDZhODAyZTZiNjI2ZmQ0OTRjZTkyLi4zZGEwYjMxZGYyM2EzY2FlYThiOGFkYWEyZjNj
ZTEyY2NjMzc5ZWYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMTg3NCw2ICsxODc0LDcgQEAgd2Via2l0Lm9yZy9iLzIxNDE1NSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXAKIAogIyBUaGVz
ZSB0ZXN0IHJlcXVpcmVzIHN5c3RlbSBwbGF0Zm9ybSBzdXBwb3J0LgogWyBDYXRhbGluYSBNb2ph
dmUgXSBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbCBbIFNraXAgXQor
WyBDYXRhbGluYSBNb2phdmUgXSBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0t
YXBwZW5kLWJ1ZmZlci1hZnRlci1hYm9ydC5odG1sIFsgU2tpcCBdCiBbIENhdGFsaW5hIE1vamF2
ZSBdIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1pbml0LWluc2lkZS1zZWdt
ZW50Lmh0bWwgWyBTa2lwIF0KIFsgQ2F0YWxpbmEgTW9qYXZlIF0gcGxhdGZvcm0vbWFjL21lZGlh
L21lZGlhY2FwYWJpbGl0aWVzL3ZwOS1kZWNvZGluZ0luZm8tc3cuaHRtbCBbIFNraXAgXQogWyBD
YXRhbGluYSBNb2phdmUgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvbWVkaWEtc291cmNlL2lzLXR5cGUt
c3VwcG9ydGVkLXZwOS1jb2RlYy1jaGVjay5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>