<?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>236109</bug_id>
          
          <creation_ts>2022-02-03 16:38:31 -0800</creation_ts>
          <short_desc>[Cocoa] Adopt -streamDataParser:didProvideContentKeySpecifier:forTrackID: delegate callback</short_desc>
          <delta_ts>2022-02-28 17:00:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1837165</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-03 16:38:31 -0800</bug_when>
    <thetext>[Cocoa] Adopt -streamDataParser:didProvideContentKeySpecifier:forTrackID: delegate callback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837176</commentid>
    <comment_count>1</comment_count>
      <attachid>450839</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-03 17:03:51 -0800</bug_when>
    <thetext>Created attachment 450839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838340</commentid>
    <comment_count>2</comment_count>
      <attachid>451147</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-07 13:46:34 -0800</bug_when>
    <thetext>Created attachment 451147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838433</commentid>
    <comment_count>3</comment_count>
      <attachid>451174</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-07 16:44:14 -0800</bug_when>
    <thetext>Created attachment 451174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838480</commentid>
    <comment_count>4</comment_count>
      <attachid>451191</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-07 18:51:46 -0800</bug_when>
    <thetext>Created attachment 451191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838756</commentid>
    <comment_count>5</comment_count>
      <attachid>451270</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-08 10:37:37 -0800</bug_when>
    <thetext>Created attachment 451270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838909</commentid>
    <comment_count>6</comment_count>
      <attachid>451270</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-08 15:09:49 -0800</bug_when>
    <thetext>Comment on attachment 451270
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:66
&gt; +    PlatformSample::Type platformSampleType() const override { return PlatformSample::CMSampleBufferType; }

final

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:1251
&gt; +        return;

Worth ASSERTing in a debug build?

&gt; Tools/ChangeLog:15
&gt; +2022-02-07  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        [Cocoa] Adopt -streamDataParser:didProvideContentKeySpecifier:forTrackID: delegate callback
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=236109
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Cocoa] Adopt -streamDataParser:didProvideContentKeySpecifier:forTrackID: delegate callback
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=236109
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Source/WebCore:
&gt; +
&gt; +        The current set of delegate callback methods have a significant shortcoming: clients must

This is in the wrong file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840040</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-10 16:39:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/88785844&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840463</commentid>
    <comment_count>8</comment_count>
      <attachid>451730</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-11 11:20:11 -0800</bug_when>
    <thetext>Created attachment 451730
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840487</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-11 11:58:11 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 451270 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840648</commentid>
    <comment_count>10</comment_count>
      <attachid>451768</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-11 18:21:23 -0800</bug_when>
    <thetext>Created attachment 451768
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840656</commentid>
    <comment_count>11</comment_count>
      <attachid>451770</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-11 19:48:34 -0800</bug_when>
    <thetext>Created attachment 451770
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840661</commentid>
    <comment_count>12</comment_count>
      <attachid>451773</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-11 21:44:07 -0800</bug_when>
    <thetext>Created attachment 451773
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840663</commentid>
    <comment_count>13</comment_count>
      <attachid>451774</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-11 23:55:05 -0800</bug_when>
    <thetext>Created attachment 451774
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840703</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-12 08:58:20 -0800</bug_when>
    <thetext>ChangeLog entry in Source/WebCore/ChangeLog is not at the top of the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841732</commentid>
    <comment_count>15</comment_count>
      <attachid>452027</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-15 08:43:52 -0800</bug_when>
    <thetext>Created attachment 452027
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841835</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-15 11:29:18 -0800</bug_when>
    <thetext>ChangeLog entry in Source/WTF/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842311</commentid>
    <comment_count>17</comment_count>
      <attachid>452201</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-16 09:14:46 -0800</bug_when>
    <thetext>Created attachment 452201
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842463</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-16 12:51:14 -0800</bug_when>
    <thetext>Committed r289946 (247348@main): &lt;https://commits.webkit.org/247348@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452201.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846191</commentid>
    <comment_count>19</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-25 14:35:08 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846192</commentid>
    <comment_count>20</comment_count>
      <attachid>453264</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-25 14:35:12 -0800</bug_when>
    <thetext>Created attachment 453264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846200</commentid>
    <comment_count>21</comment_count>
      <attachid>453267</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-25 15:02:35 -0800</bug_when>
    <thetext>Created attachment 453267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846207</commentid>
    <comment_count>22</comment_count>
      <attachid>453271</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-25 15:16:05 -0800</bug_when>
    <thetext>Created attachment 453271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846357</commentid>
    <comment_count>23</comment_count>
      <attachid>453313</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-26 15:45:32 -0800</bug_when>
    <thetext>Created attachment 453313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846658</commentid>
    <comment_count>24</comment_count>
      <attachid>453313</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-28 09:20:59 -0800</bug_when>
    <thetext>Comment on attachment 453313
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:229
&gt; +#if HAVE(AVCONTENTKEYSPECIFIER)
&gt; +    if (MediaSessionManagerCocoa::sampleBufferContentKeySessionSupportEnabled())
&gt; +        m_delegate = adoptNS([[WebAVStreamDataParserWithKeySpecifierListener alloc] initWithParser:m_parser.get() parent:this]);
&gt; +    else
&gt; +#endif

You already do runtime checks to make sure AVSampleBufferAudioRenderer and AVSampleBufferDisplayLayer conform to the new protocols, so can you get rid of the HAVE(AVCONTENTKEYSPECIFIER) here and above so you can always create a WebAVStreamDataParserWithKeySpecifierListener to make this easier to read and follow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846660</commentid>
    <comment_count>25</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-28 09:24:06 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #24)
&gt; Comment on attachment 453313 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=453313&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:229
&gt; &gt; +#if HAVE(AVCONTENTKEYSPECIFIER)
&gt; &gt; +    if (MediaSessionManagerCocoa::sampleBufferContentKeySessionSupportEnabled())
&gt; &gt; +        m_delegate = adoptNS([[WebAVStreamDataParserWithKeySpecifierListener alloc] initWithParser:m_parser.get() parent:this]);
&gt; &gt; +    else
&gt; &gt; +#endif
&gt; 
&gt; You already do runtime checks to make sure AVSampleBufferAudioRenderer and
&gt; AVSampleBufferDisplayLayer conform to the new protocols, so can you get rid
&gt; of the HAVE(AVCONTENTKEYSPECIFIER) here and above so you can always create a
&gt; WebAVStreamDataParserWithKeySpecifierListener to make this easier to read
&gt; and follow?

Probably not, because we&apos;d have to get rid of the HAVE() checks around the WebAVStreamDataParserWithKeySpecifierListener declaration as well, and that object references AVContentKeySpecifier, which won&apos;t be defined when HAVE(AVCONTENTKEYSPECIFIER) is false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846842</commentid>
    <comment_count>26</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-28 17:00:42 -0800</bug_when>
    <thetext>Committed r290621 (247894@main): &lt;https://commits.webkit.org/247894@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453313.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450839</attachid>
            <date>2022-02-03 17:03:51 -0800</date>
            <delta_ts>2022-02-07 13:46:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236109-20220203170350.patch</filename>
            <type>text/plain</type>
            <size>69455</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUwYTU0NzdkMDdhYTA0
ZWEzNWFjMmZmNTRlMzYxYzM5NGMxMWIxYy4uMzI3ZDYyYjBlMDM3ODZjMjhmNDE4ODQzMWRjNzc3
NTdkOGVjZmJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMi0wMi0wMyAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkb3B0IC1z
dHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6
IGRlbGVnYXRlIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzYxMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgY3VycmVudCBzZXQgb2YgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9kcyBo
YXZlIGEgc2lnbmlmaWNhbnQgc2hvcnRjb21pbmc6IGNsaWVudHMgbXVzdAorICAgICAgICBhdHRh
Y2ggYW4gQVZDb250ZW50S2V5U2Vzc2lvbiB0byB0aGUgQVZTdHJlYW1EYXRhUGFyc2VyIGJlZm9y
ZSByZXR1cm5pbmcgZnJvbSB0aGUKKyAgICAgICAgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6IGNhbGxiYWNr
LiBUaGlzCisgICAgICAgIGlzIGJlY2F1c2UgdGhlIHBhcnNlciBpdHNlbGYgYXR0YWNoZXMgdGhl
IG9iamVjdCByZXF1aXJlZCB0byBkZWNyeXB0IGVhY2ggZW5jcnlwdGVkIHNhbXBsZQorICAgICAg
ICB0byB0aGUgc2FtcGxlIGl0c2VsZiBhdCB0aGUgcGFyc2luZyBzdGFnZS4gSWYgYSBjbGllbnQg
ZG9lcyBub3QgYXR0YWNoIGFuCisgICAgICAgIEFWQ29udGVudEtleVNlc3Npb24gYnkgdGhlIHRp
bWUgdGhhdCBtZXRob2QgcmV0dXJucywgQVZTdHJlYW1EYXRhUGFyc2VyIHdpbGwgYXR0YWNoIG9u
ZSBvZgorICAgICAgICBpdHMgb3duLgorCisgICAgICAgIFRoZSB3ZWItZmFjaW5nIGJlaGF2aW9y
IHRoaXMgY2F1c2VzIGlzIHRoYXQgTVNFIGFwcGVuZHMgd2lsbCBub3QgY29tcGxldGUgKGJ5IGZp
cmluZworICAgICAgICBhbiAidXBkYXRlZW5kIiBldmVudCkgaWYgYW4gZW5jcnlwdGVkIHNlZ21l
bnQgaXMgcGFyc2VkIHVudGlsIHRoZSBjbGllbnQgY3JlYXRlcyBhbmQKKyAgICAgICAgYXR0YWNo
ZXMgYSBNZWRpYUtleXMgb2JqZWN0IHdpdGggYSB2YWxpZCBzZXNzaW9uLgorCisgICAgICAgIEEg
bmV3IGRlbGVnYXRlIGNhbGxiYWNrIG1ldGhvZCwgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDoKKyAgICAgICAgYWxsb3dzIHVzIHRvIHdv
cmsgYXJvdW5kIHRoaXMgcHJvYmxlbS4gV2hlbiB0aGlzIGRlbGVnYXRlIGlzIHByZXNlbnQsIEFW
U3RyZWFtRGF0YVBhcnNlcgorICAgICAgICB3aWxsIHNraXAgYXR0YWNoaW5nIGEgZGVjcnlwdGlv
biBvYmplY3QgZW50aXJlbHksIG1vdmluZyB0aGF0IHJlc3BvbnNpYmlsaXR5IHRvIHRoZQorICAg
ICAgICBjbGllbnQuIEhvd2V2ZXIsIHRoaXMgY29tZXMgd2l0aCB0aGUgcmVxdWlyZW1lbnQgdGhh
dCB0aGUgY2xpZW50IChXZWJLaXQpIHdvbid0IGVucXVldWUKKyAgICAgICAgYW4gZW5jcnlwdGVk
IHNhbXBsZSBiZWZvcmUgYSBkZWNyeXB0aW9uIG9iamVjdCBpcyBhdmFpbGFibGUgdmlhIEFWQ29u
dGVudEtleVNlc3Npb24uCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWVldCB0aGlzIG5ldyByZXF1
aXJlbWVudCwgV2ViS2l0IHdpbGwgYXNzb2NpYXRlIHRoZSBrZXkgSURzIG5lY2Vzc2FyeSB0bwor
ICAgICAgICBkZWNyeXB0IGVhY2ggc2FtcGxlIGluIHRoZSBNZWRpYVNhbXBsZSBvYmplY3QgdGhh
dCB3cmFwcyB0aGUgZW5jcnlwdGVkIHNhbXBsZS4gQmVjYXVzZSBub3QKKyAgICAgICAgZXZlcnkg
dHlwZSBvZiBNZWRpYVNhbXBsZSB3aWxsIGNhcnJ5IGtleSBJRHMsIHRoaXMgcHJvcGVydHkgd2Fz
IGFkZGVkIHRvIHRoZQorICAgICAgICBNZWRpYVNhbXBsZUFWRk9iakMgc3ViY2xhc3MsIGFuZCB0
aGVyZWZvcmUgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHNhZmVseSBkb3duY2FzdCBmcm9tCisgICAg
ICAgIE1lZGlhU2FtcGxlIHRvIE1lZGlhU2FtcGxlQVZGT2JqQy4gTWVkaWFTYW1wbGUgc3ViY2xh
c3NlcyBjYW4gYmUgZGlzdGluZ3Vpc2hlZCBieSB0aGUKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNh
bXBsZSB0eXBlIGF2YWlsYWJsZSB0aHJvdWdoIHRoZWlyIHBsYXRmb3JtU2FtcGxlKCkgcHJvcGVy
dHksIGhvd2V2ZXIgdGhpcworICAgICAgICBjYWxsIGlzIG5vdCBjb25zdCwgYW5kIG1heSBub3Qg
YmUgZnJlZSwgYXMgaXQgcmV0dXJucyBhIG5vbi1QT0QgdHlwZS4gU28KKyAgICAgICAgUGxhdGZv
cm1NZWRpYTo6VHlwZSB3YXMgbWFkZSBhbiBleHBsaWNpdCBlbnVtIHR5cGUsIGFuZCBhIG5ldyB2
aXJ0dWFsIG1ldGhvZAorICAgICAgICBwbGF0Zm9ybVNhbXBsZVR5cGUoKSB3YXMgYWRkZWQgdG8g
TWVkaWFTYW1wbGUgKGFuZCBpbXBsZW1lbnRlZCBieSBhbGwgc3ViY2xhc3NlcyksIGFuZCBhCisg
ICAgICAgIHR5cGUgc3BlY2lhbGl6YXRpb24gbWFjcm8gd2FzIGFkZGVkIHRvIE1lZGlhU2FtcGxl
QVZGT2JqQy4KKworICAgICAgICBJbiBvcmRlciB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gc2Ft
cGxlIGlzIGNhcGFibGUgb2YgYmVpbmcgZW5xdWV1ZWQsIHRoZSBDRE1JbnN0YW5jZQorICAgICAg
ICBtdXN0IGJlIHF1ZXJpZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzYW1wbGUncyByZXF1aXJlZCBr
ZXlzIGFyZSB1c2FibGUuIEZvcgorICAgICAgICBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQywgaXQgaGFzIGFuIGV4aXN0aW5nIGtleVN0YXR1cygpLCBtZXRob2QsIGJ1dCB0aGF0
CisgICAgICAgIG1ldGhvZCBpcyBhbHNvIG5vbi1jb25zdCwgYW5kIG1heSBiZSBleHBlbnNpdmUu
IFNvIGEgS2V5U3RhdHVzTWFwIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIGFk
ZGVkIHRvIGNhY2hlIHRoZSBrZXkgc3RhdHVzIGZvciBlYXNlIG9mIHF1ZXJ5aW5nLiBUbyBub3Rp
ZnkgYW4gYXJiaXRyYXJ5IG51bWJlcgorICAgICAgICBvZiBjbGllbnRzIHdoZW4gdGhlIGtleSBz
dGF0dXNlcyBjaGFuZ2UsIGFuIE9ic2VydmVyIGhhcyBiZWVuIGFkZGVkLgorCisgICAgICAgIFdo
ZW4gYW4gZW5jcnlwdGVkIHNhbXBsZSBpcyBlbnF1ZXVlZCwgaWYgdGhpcyBuZXcgZGVsZWdhdGUg
bWV0aG9kIGlzIGF2YWlsYWJsZSwgdGhlCisgICAgICAgIHNvdXJjZSBidWZmZXIgd2lsbCBjaGVj
ayBpZiBhIENETSBpbnN0YW5jZSBpcyBhdmFpbGFibGUsIGFuZCBpZiBzbywgd2hldGhlciB0aGUg
c2FtcGxlJ3MKKyAgICAgICAga2V5cyBhcmUgdXNhYmxlLiBJZiBhbnkgb2YgdGhlc2UgY2hlY2tz
IGZhaWwsIHRoZSBzYW1wbGUgd2lsbCBiZSBzdG9yZWQgaW4gYSBsb2NhbCBxdWV1ZQorICAgICAg
ICBhbmQgbmV3IGVucXVldWVzIHdpbGwgYmUgYmxvY2tlZC4gV2hlbiB0aGUgQ0RNJ3Mga2V5U3Rh
dHVzIG9ic2VydmVyIGlzIHRyaWdnZXJlZCwgdGhlCisgICAgICAgIGxvY2FsIHF1ZXVlIHdpbGwg
YmUgcHJvY2Vzc2VkLCBhbmQgYWxsIHNhbXBsZXMgd2l0aCB1c2FibGUga2V5IElEcyB3aWxsIGJl
IGVucXVldWVkLgorCisgICAgICAgIERyaXZlLWJ5IGZpeDogVXNlIFNoYXJlZEJ1ZmZlciByYXRo
ZXIgdGhhbiBVaW50OEFycmF5LCBhcyB0aGUgZm9ybWVyIGlzIGxpZ2h0ZXIgd2VpZ2h0CisgICAg
ICAgIGFuZCBjYW4gYmUgbW9yZSBlYXNpbHkgY29udmVydGVkIHRvIGFuZCBmcm9tIGEgTlNEYXRh
LgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmtleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xp
ZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppc0FueUtleVVzYWJsZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6YWRkS2V5
U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpyZXF1ZXN0RGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29w
eUtleVN0YXR1c2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVu
dEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVQcm90ZWN0aW9uU3RhdHVz
Rm9yRGlzcGxheUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5U3RhdHVzZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3Jl
OjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlQVZGT2JqQzo6c2V0S2V5SURzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZG
T2JqQzo6a2V5SURzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qzo6a2V5SURzKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTYW1w
bGVBVkZPYmpDPjo6dG9TdHJpbmcpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlcktleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJh
Y2tJRDpdKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0U3BlY2lmaWVyRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUJ1ZmZlclJlbmRl
cmVyc1N1cHBvcnRLZXlTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlLZXlJRHMpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycyk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRD
aGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpzZXRDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tJc0Jsb2NrZWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmtleVN0YXR1c2VzQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuRW5xdWV1ZVNh
bXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5x
dWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0VmlkZW9MYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmNwcDoKKwogMjAyMi0wMS0yNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29jb2FdIHJWRkMoKSBjYWxsYmFja3MgaGF2ZSB1cCB0byA2MG1zIGV4dHJh
IGxhdGVuY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZDRlOTVmNWMzMGMzYjQ3ZDMyMjYzMDI1MmU2ZmJmMzAwMmNh
ZGM4MS4uOWRkY2JjMmUxNDgzMGIwZWU5OWNkNjk3ODk3ZWMwYjgyMTZiYzZlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNCBAQAorMjAyMi0wMi0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkb3B0IC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3Zp
ZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6IGRlbGVnYXRlIGNhbGxiYWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ld2x5
IHJlcXVyaWVkIHZpcnR1YWwgbWV0aG9kIGNoYW5nZXMgdG8gTWVkaWFTYW1wbGUgc3ViY2xhc3Nl
cywgYW5kIHVzZQorICAgICAgICBTaGFyZWRCdWZmZXIgcmF0aGVyIHRoYW4gVWludDhBcnJheS4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5
TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0
ZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQcm92aWRl
TWVkaWFEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
Rm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorCiAyMDIxLTEyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRvcHQg
TG9nZ2VySGVscGVyIGluIExlZ2FjeSBFTUUgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDQ5MjA0ZmQ2MzNmMGQyYzg3YjNiZjhjZWFkMDQ0NTdh
YWYwMzBhMy4uYzc2ZWRkMGVkNmY2NmZlNjNlZjA0MGI3NzA0YzhlZmY5MzhkOGFiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjM4LDcgKzI2MzgsNyBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2FjaGVk
S2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtX3dlYktpdE1lZGlhS2V5cyA/
IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBudWxscHRyOwog
fQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJy
YXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRl
ZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGlmICghZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC0yNjU1LDcgKzI2NTUsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEpOworICAgIFdlYktpdE1l
ZGlhS2V5TmVlZGVkRXZlbnQ6OkluaXQgaW5pdDsKKworICAgIGlmIChhdXRvIGluaXREYXRhQnVm
ZmVyID0gaW5pdERhdGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkgeworICAgICAgICBhdXRvIGJ5
dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBpbml0Lmlu
aXREYXRhID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRhQnVmZmVyLnJlbGVhc2VOb25O
dWxsKCksIDAsIGJ5dGVMZW5ndGgpOworICAgIH0KKworICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRN
ZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVu
dCwgaW5pdCk7CiAgICAgc2NoZWR1bGVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYjVmZTEzODUzYzY5NDI3ODM3ZWYz
ZjkxZDJiZDI2MWMxOTNkYzRiYi4uMzI5ZTYzZWE1NjJiNzkwNmQxNzNhOTYxNzljY2U3ODQ0MThj
Y2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcwNiw3ICs3
MDYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0
IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoY29u
c3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE4Mzk5NzIyNjBmNzBlMDA3MzY3OTc5MTcyMjYyNWY1
NmIyNTNmMDguLjJjMTE1YThjMjlkMjg0ZjZmY2JmOGIwMTY4ZTdmNGQ1NGE4NjYzYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBNb2NrU2FtcGxlQm94OwogCiBzdHJ1Y3QgUGxhdGZvcm1TYW1w
bGUgewotICAgIGVudW0geworICAgIGVudW0gVHlwZSB7CiAgICAgICAgIE5vbmUsCiAgICAgICAg
IE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUsCkBAIC05MCw2
ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzU3luY0luZm8gPSAxIDw8IDMsCiAgICAgfTsK
ICAgICB2aXJ0dWFsIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSA9IDA7CiAKICAgICBzdHJ1
Y3QgQnl0ZVJhbmdlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCA1MDYwMzIzODAzYjFh
M2IxN2Y0NzM4NjZlYTk3YjNhODI5MGUyMDJjLi5iNzAzY2ZlY2QzMTZjNjI3YzY5NGU2NGI4ZTY5
NzYyMDY4NjdmN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0yMDIsMTAgKzIwMiwx
MCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJl
YWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfSk7Ci0gICAgcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soWyZdKFJl
ZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYp
IHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbJl0oUmVmPE1l
ZGlhU2FtcGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmlu
ZyYpIHsKICAgICAgICAgaWYgKCFhdWRpb1RyYWNrSWQgfHwgdHJhY2tJRCAhPSAqYXVkaW9UcmFj
a0lkKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzYW1wbGVzLmFwcGVuZChzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNhbXBsZSkpKTsKKyAg
ICAgICAgc2FtcGxlcy5hcHBlbmQoV1RGTW92ZShzYW1wbGUpKTsKICAgICB9KTsKICAgICBwYXJz
ZXItPnNldENhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFtdKGF1dG8mJiBmdW5jdGlvbikgewog
ICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDUxYTliM2EzNTRmMTE5YmUyOWY3NDExYTkzNDU3ODQ5
OWE2ZGE3NmQuLmFjMzVlNzAwOTRiMjI1YzZjNDI3NTEyOTE5MDE3Njg2MWVjOWUyNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTE0MDEsNyArMTQwMSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gTWVkaWFQbGF5ZXI6OmNhY2hl
ZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0CiAgICAgcmV0dXJuIGNsaWVu
dCgpLm1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpOwogfQogCi12b2lkIE1lZGlh
UGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlhUGxheWVy
OjprZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBjbGllbnQo
KS5tZWRpYVBsYXllcktleU5lZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBlYmJhZDE2YTY1YWI1M2VhZmZj
ZmEyNjI3NmI4MmM5ZjZhN2Q2NWViLi4yZmNkNDJhZjBhYmJlNDIzYzFmZWY3OWFiZTgzOWNiOTVm
ZjljODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKQEAgLTg1LDYgKzg1LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogY2xhc3Mg
TmF0aXZlSW1hZ2U7CiBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBQ
bGF0Zm9ybVRpbWVSYW5nZXM7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbjsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCkBAIC0yMDUsNyArMjA2
LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAg
dmlydHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQo
Y29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktl
eU5lZWRlZChVaW50OEFycmF5KikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlh
UGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7IH0KICNlbmRpZgogCkBAIC01NTcsNyArNTU4LDcgQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNo
ZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdDsKLSAgICB2b2lkIGtleU5l
ZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSk7CisgICAgdm9pZCBrZXlOZWVkZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCA1NmI1OGMy
NWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyLi5kNTlmZTQ4MDRkNThkZmU3OGNiNWJl
YTcwNzRiMmU2ODcwNWMxZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTMwLDcgKzMw
LDkgQEAKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2luY2x1ZGUgIkNETUluc3RhbmNlU2Vz
c2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hT
ZXQuaD4KIAogT0JKQ19DTEFTUyBBVkNvbnRlbnRLZXlSZXBvcnRHcm91cDsKIE9CSkNfQ0xBU1Mg
QVZDb250ZW50S2V5UmVxdWVzdDsKQEAgLTExNyw2ICsxMTksMTMgQEAgcHVibGljOgogICAgIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3Vw
KEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlS
ZXF1ZXN0KikgY29uc3Q7CiAKKyAgICBib29sIGlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMmKSBj
b25zdDsKKworICAgIHVzaW5nIEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8
dm9pZCgpPjsKKyAgICB2b2lkIGFkZEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEtl
eVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB2b2lkIHNlc3Npb25LZXlTdGF0dXNl
c0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Jik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVVbmV4cGVjdGVkUmVxdWVzdHMoVmVjdG9y
PFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7CiAKQEAgLTEzNCw2ICsxNDMsNyBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3Rv
cjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1f
c2Vzc2lvbnM7CiAgICAgSGFzaFNldDxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+IG1f
dW5leHBlY3RlZEtleVJlcXVlc3RzOworICAgIFdlYWtIYXNoU2V0PEtleVN0YXR1c2VzQ2hhbmdl
ZE9ic2VydmVyPiBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZlcnM7CiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCog
bV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpAQCAtMTg2LDExICsxOTYsMTQgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBoYXNSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsKIAor
ICAgIGNvbnN0IEtleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBt
X2tleVN0YXR1c2VzOyB9CisgICAgS2V5U3RhdHVzVmVjdG9yIGNvcHlLZXlTdGF0dXNlcygpIGNv
bnN0OworCiBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKTsKICAgICBi
b29sIGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUpIGNvbnN0OwogCi0gICAgS2V5
U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+
ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKHN0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIG5l
eHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVlc3QoKSBj
b25zdDsKIApAQCAtMjE2LDYgKzIyOSw3IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBVcGRhdGVS
ZXNwb25zZUNvbGxlY3RvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlUmVzcG9uc2VDb2xs
ZWN0b3I+IG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I7CisgICAgS2V5U3RhdHVzVmVjdG9yIG1f
a2V5U3RhdHVzZXM7CiAKICAgICBWZWN0b3I8UmVxdWVzdD4gbV9wZW5kaW5nUmVxdWVzdHM7CiAg
ICAgVmVjdG9yPFJlcXVlc3Q+IG1fcmVxdWVzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmlu
ZGV4IGNmZTA0OGE5MzhjMDVkZjc0NWM3MTYzNTZhZDFiM2I5MGE1OWViNzguLmZkNjE1MmUxODY3
ZDRlNmE2NzJiZWYxNzA3MGNhNzYyOTEyNmY0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CkBAIC02MTcsNiArNjE3LDM3IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK2Jvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMmIGtleXMpIGNvbnN0Cit7CisgICAgZm9yIChhdXRv
JiBzZXNzaW9uSW50ZXJmYWNlIDogbV9zZXNzaW9ucykgeworICAgICAgICBpZiAoIXNlc3Npb25J
bnRlcmZhY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGF1dG8mIGtl
eVN0YXR1c1BhaXIgOiBzZXNzaW9uSW50ZXJmYWNlLT5rZXlTdGF0dXNlcygpKSB7CisgICAgICAg
ICAgICBpZiAoa2V5U3RhdHVzUGFpci5zZWNvbmQgIT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXM6OlVzYWJsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
aWYgKGtleXMuZmluZElmKFsmXSAoYXV0byYga2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGtleS5nZXQoKSA9PSBrZXlTdGF0dXNQYWlyLmZpcnN0LmdldCgpOworICAgICAgICAgICAgfSkg
IT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcihjb25zdCBLZXlTdGF0
dXNlc0NoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9rZXlTdGF0dXNDaGFuZ2Vk
T2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJikKK3sKKyAgICBtX2tleVN0YXR1c0No
YW5nZWRPYnNlcnZlcnMuZm9yRWFjaChbXSAoYXV0byYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgb2Jz
ZXJ2ZXIoKTsKKyAgICB9KTsKK30KKwogQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMoUmVm
PENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmIGluc3RhbmNlKQogICAgIDog
bV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKICAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhb
W1dlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCkBAIC0xMzA2LDEzICsxMzM3LDE1IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRl
CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogeworICAgIHVwZGF0
ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV91cGRhdGVSZXNwb25zZUNvbGxlY3Rvcikgewog
ICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yLT5hZGRTdWNjZXNzZnVsUmVzcG9uc2Uo
cmVxdWVzdCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV91
cGRhdGVMaWNlbnNlQ2FsbGJhY2spIHsKLSAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChrZXlTdGF0dXNlcygpKSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNr
KGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9uYWwoY29weUtleVN0YXR1c2VzKCkpLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxp
Y2Vuc2VDYWxsYmFjayk7CiAgICAgfQogCkBAIC0xNDA1LDcgKzE0MzgsNyBAQCBzdGF0aWMgYXV0
byByZXF1ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZDb250ZW50S2V5UmVxdWVzdFN0YXR1cyBzdGF0
dXMpCiAgICAgfQogfQogCi1DRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzKHN0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRpc3BsYXlJRCkgY29uc3QKK3ZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVLZXlTdGF0dXNlcyhz
dGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5SUQpCiB7CiAgICAgS2V5U3Rh
dHVzVmVjdG9yIGtleVN0YXR1c2VzOwogCkBAIC0xNDI3LDcgKzE0NjAsMTkgQEAgQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjoKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBrZXlTdGF0dXNl
czsKKyAgICBtX2tleVN0YXR1c2VzLnN3YXAoa2V5U3RhdHVzZXMpOworCisgICAgbV9pbnN0YW5j
ZS0+c2Vzc2lvbktleVN0YXR1c2VzQ2hhbmdlZCgqdGhpcyk7Cit9CisKK2F1dG8gQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMoKSBjb25z
dCAtPiBLZXlTdGF0dXNWZWN0b3IKK3sKKyAgICBLZXlTdGF0dXNWZWN0b3IgY29waWVkS2V5U3Rh
dHVzZXM7CisgICAgY29waWVkS2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2tl
eVN0YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBzdGF0dXMgOiBtX2tleVN0YXR1c2Vz
KQorICAgICAgICBjb3BpZWRLZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBzdGF0dXMuZmly
c3QuY29weVJlZigpLCBzdGF0dXMuc2Vjb25kIH0pOworICAgIHJldHVybiBjb3BpZWRLZXlTdGF0
dXNlczsKKwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNo
YW5nZWQoYm9vbCBvYnNjdXJlZCkKQEAgLTE0MzgsOCArMTQ4MywxMCBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0lu
c3VmZmljaWVudAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgb2Jz
Y3VyZWQpOwogICAgIG1fb3V0cHV0T2JzY3VyZWQgPSBvYnNjdXJlZDsKIAorICAgIHVwZGF0ZUtl
eVN0YXR1c2VzKCk7CisKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT51cGRh
dGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcygpKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUtl
eVN0YXR1c2VzKGNvcHlLZXlTdGF0dXNlcygpKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENo
YW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKQpAQCAtMTQ5Miw5
ICsxNTM5LDEzIEBAIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3RhdHVzPiBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnByb3RlY3RpCiAKIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVQcm90ZWN0aW9uU3RhdHVzRm9y
RGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKLSAgICBpZiAobV9yZXF1
ZXN0cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgIGlmIChtX3JlcXVlc3RzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhrZXlT
dGF0dXNlcyhkaXNwbGF5SUQpKTsKKworICAgIHVwZGF0ZUtleVN0YXR1c2VzKGRpc3BsYXlJRCk7
CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNl
cyhjb3B5S2V5U3RhdHVzZXMoKSk7CiB9CiAKIGJvb2wgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uT3JHcm91cCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaAppbmRl
eCA3MTlhMTFmZTIyOWJlZjBkNDNjOWMzZWZkNWQ5MDIwODBlNzZjN2YwLi45MGQyNzNkMDc5NjFm
Yzk4NmZiN2M0NTZmZjczMzYyYzE0ZWM1ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKQEAgLTc0LDcgKzc0LDcg
QEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxXZWJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlPiBtX2NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU7CiAgICAgUmV0YWluUHRy
PEFWQ29udGVudEtleVJlcXVlc3Q+IG1fa2V5UmVxdWVzdDsKICAgICBSZWZQdHI8VWludDhBcnJh
eT4gbV9pZGVudGlmaWVyOwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2luaXREYXRhOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1faW5pdERhdGE7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
bV9leHBpcmVkU2Vzc2lvbjsKICAgICBWZWN0b3I8aW50PiBtX3Byb3RvY29sVmVyc2lvbnM7CiAg
ICAgaW50IG1fY2RtVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggN2VjNTc3NDI2MTBjMzg0YmU2
ZGRkYzU4NzRmZjM5NWU1YjVmMmVkYy4uNzJhMDk1MzA5Yzg0NWJkY2NmZGU3MDdiZTRiNzA3MGM1
ZDUxZWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkxlZ2Fj
eUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKKyNp
bXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZFcnJvci5oPgpAQCAtMTUxLDcgKzE1Miw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluCiAgICAgaWYgKG1fY2RtVmVyc2lvbiA9PSAyKQogICAgICAgICBtX2lkZW50aWZpZXIgPSBp
bml0RGF0YTsKICAgICBlbHNlCi0gICAgICAgIG1faW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICAg
ICAgbV9pbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLT5kYXRhKCksIGlu
aXREYXRhLT5sZW5ndGgoKSk7CiAKICAgICBBU1NFUlQoIW1fY2VydGlmaWNhdGUpOwogICAgIFN0
cmluZyBjZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlmaWNhdGUiX3MpOwpAQCAtMjczLDEyICsyNzQs
MTIgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKFVpbnQ4QXJy
YXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgIH0KIAogICAgIGlmICghbV9rZXlSZXF1
ZXN0KSB7Ci0gICAgICAgIE5TRGF0YSogbnNJbml0RGF0YSA9IG1faW5pdERhdGEgPyBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6bV9pbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDptX2luaXREYXRhLT5sZW5n
dGgoKV0gOiBuaWw7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IG5zSW5pdERhdGEgPSBtX2lu
aXREYXRhID8gbV9pbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkgOiBuaWw7CiAgICAgICAgIE5TRGF0
YSogbnNJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyID8gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOm1f
aWRlbnRpZmllci0+ZGF0YSgpIGxlbmd0aDptX2lkZW50aWZpZXItPmxlbmd0aCgpXSA6IG5pbDsK
ICAgICAgICAgaWYgKFtjb250ZW50S2V5U2Vzc2lvbigpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6aW5pdGlhbGl6YXRp
b25EYXRhOm9wdGlvbnM6KV0pCi0gICAgICAgICAgICBbY29udGVudEtleVNlc3Npb24oKSBwcm9j
ZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjpuc0lkZW50aWZpZXIgaW5pdGlhbGl6
YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxdOworICAgICAgICAgICAgW2NvbnRlbnRL
ZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6bnNJZGVu
dGlmaWVyIGluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0Nv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxd
OworICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEuZ2V0KCkgb3B0aW9uczpuaWxdOwogICAg
IH0KIAogICAgIGlmIChzaG91bGRHZW5lcmF0ZUtleVJlcXVlc3QpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCmluZGV4IDdhYjg5MTFmMDRlOGY3ZWYyNDUxMDhiNzU3MDc5NDU2N2U0ZWMzZWYuLjc5
MGNmMTcxOTk5ZTQ0MWEwNGU2YjZmNjdhMDdhYWRjODM4NmE0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQpAQCAtMjAxNiw4ICsyMDE2LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAg
ICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZm
ZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJheS0+
c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oU3RyaW5nVmlldyhrZXlV
UkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6
ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhB
cnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAg
ICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisgICAgICAgIGF1dG8g
aW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4geyBzdGF0aWNf
Y2FzdDx1aW50OCo+KGluaXREYXRhQnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoIH0pOworICAg
ICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhKTsKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwNDUsOSArMjA0NSw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgaWYgKHNjaGVtZSA9PSAiY2xlYXJrZXkiKSB7CiAg
ICAgICAgIFN0cmluZyBrZXlJRCA9IFtbW2F2UmVxdWVzdCByZXF1ZXN0XSBVUkxdIHJlc291cmNl
U3BlY2lmaWVyXTsKICAgICAgICAgYXV0byBlbmNvZGVkS2V5SWQgPSBQQUw6OlVURjhFbmNvZGlu
ZygpLmVuY29kZShrZXlJRCwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxFbmNvZGVkRW50
aXRpZXMpOwotCi0gICAgICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoZW5j
b2RlZEtleUlkLnNpemUoKSk7Ci0gICAgICAgIGluaXREYXRhLT5zZXRSYW5nZShlbmNvZGVkS2V5
SWQuZGF0YSgpLCBlbmNvZGVkS2V5SWQuc2l6ZSgpLCAwKTsKKyAgICAgICAgYXV0byBpbml0RGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZW5jb2RlZEtleUlkKSk7CiAKICAgICAg
ICAgYXV0byBrZXlEYXRhID0gcGxheWVyKCktPmNhY2hlZEtleUZvcktleUlkKGtleUlEKTsKICAg
ICAgICAgaWYgKGtleURhdGEpIHsKQEAgLTIwNTUsNyArMjA1Myw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNl
KEFWQXNzZXRSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAg
ICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKTsKKyAgICAgICAgcGxheWVyKCkt
PmtleU5lZWRlZChpbml0RGF0YSk7CiAKICAgICAgICAgaWYgKCFwbGF5ZXIoKS0+c2hvdWxkQ29u
dGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaAppbmRleCBiY2FkMTI1NDM2M2ExODdjNjhhMzM2OGZhN2E3YTE0ODUx
NWI4MmU1Li4yOTgzY2VjYWRlYTIyZTNmMjU1YjA3OWM5NmEyZjc4OTFjZDNhMzMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpIG92ZXJyaWRlIHsgb3V0cHV0T2JzY3VyZWREdWVUb0lu
c3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoZmFsc2UpOyB9CiAKICNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAg
ICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5Kik7CisgICAgdm9pZCBrZXlOZWVkZWQoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZTk1ZjhjM2NhY2YwYWRlMTgxMWYxMWJhZTY4
M2JlNGI1ZmIxNTUzMy4uMWMzMzI3MjU0NmI0ZWY4Yjc5Nzg4ZDkwNTI3YTUwZTU0ZDZkNDlkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldENETVNlc3Npb24oTGVnYWN5
Q0RNU2Vzc2lvbiogc2Vzc2kKICNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Omtl
eU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjprZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkK
IHsKICAgICBtX3BsYXllci0+a2V5TmVlZGVkKGluaXREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggOTAwN2RjY2E5ZGVlMTBlZWJjM2Iz
MWQ2MzM4MDYwZDdlOTIzNzA1Ni4uN2VjMTBjMTQwNDc0YjZiMTAwMDk3YzlhZjVhZTkzYjRhODgy
MGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAg
LTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiB1c2luZyBD
VlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBQaXhlbEJ1ZmZlcjsK
IAogY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDIDogcHVibGljIE1lZGlhU2FtcGxlIHsKQEAgLTYx
LDYgKzYzLDcgQEAgcHVibGljOgogCiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAg
IFBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGU7IH0KICAgICBzdGQ6
Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CkBAIC04
MCw2ICs4MywxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEJ5dGVSYW5nZU9mZnNldChzaXpl
X3QpOwogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlT
RVNTSU9OKQorICAgIHVzaW5nIEtleUlEcyA9IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+OworICAgIHZvaWQgc2V0S2V5SURzKEtleUlEcyYmIGtleUlEcykgeyBtX2tleUlEcyA9
IFdURk1vdmUoa2V5SURzKTsgfQorICAgIGNvbnN0IEtleUlEcyYga2V5SURzKCkgY29uc3QgeyBy
ZXR1cm4gbV9rZXlJRHM7IH0KKyAgICBLZXlJRHMmIGtleUlEcygpIHsgcmV0dXJuIG1fa2V5SURz
OyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2FtcGxl
QVZGT2JqQyhSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZik7CkBAIC05NCw2ICsxMDQs
MjggQEAgcHJvdGVjdGVkOgogICAgIEF0b21TdHJpbmcgbV9pZDsKICAgICBWaWRlb1JvdGF0aW9u
IG1fcm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAgICAgYm9vbCBtX21pcnJvcmVk
IHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05U
RU5US0VZU0VTU0lPTikKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBt
X2tleUlEczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gc3RydWN0IExvZ0FyZ3VtZW50Owor
dGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akM+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlQVZGT2JqQyYgc2FtcGxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNhbXBsZS50b0pTT05T
dHJpbmcoKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakMpCitzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIHNhbXBsZSkgeyByZXR1cm4gc2Ft
cGxlLnBsYXRmb3JtU2FtcGxlVHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNh
bXBsZUJ1ZmZlclR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4
IDcyMjQ5N2UwYmM0MjBjZDRlNjJiMDYyNDkyM2JmZDhmOWQ1NDA2MjIuLjg5NTFiMjQ3ZGQwMDE1
MGVkMTZjZTA0MWFjY2VjYmJmY2JlZDVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0YXRlKFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiwgYm9vbCBhY3RpdmUpOwogICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMqKTsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAg
ICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyos
IFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAgdm9p
ZCByZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCA5
MjdkMTMwMzExZThlZWM4YjAyMTU2YWM2MzI4MGE5YmY5ZDA4MDhjLi4xMjAxYjcyNmJkMDQ3YzVm
MTEwZjcxNGFiMTAyMzE5YTYxNjIyY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTE5NSw5ICsxOTUsMTAgQEAgdm9p
ZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdl
QWN0aXZlU3RhdGUoU291cmNlQnUKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJLZXlOZWVk
ZWQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIGJ1ZmZlciwgVWludDhBcnJheSogaW5pdERh
dGEpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlcktleU5lZWRl
ZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogYnVmZmVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXREYXRhKQogewogICAgIG1fc291cmNlQnVmZmVyc05lZWRpbmdTZXNzaW9ucy5hcHBlbmQo
YnVmZmVyKTsKKwogICAgIGlmIChtX3BsYXllcikKICAgICAgICAgbV9wbGF5ZXItPmtleU5lZWRl
ZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLmgKaW5kZXggYzIyZTcyNWY4NTQ2ZjI3OGZmNjU3YTVmNGM1NzJiOTI5
NTE1ZWQ0OC4uNzgxMTIwNGNjZmQxZDgxYjE1MDkyYjU3NWE4Mjk4MGQ2MmMyZjEwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApA
QCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9y
VHJhY2tJRCh1aW50NjRfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5n
JiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKICAgICB2b2lkIHdpbGxQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQp
OwogICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRChOU0RhdGEqLCB1aW50NjRfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoTlNEYXRhKiwgdWludDY0X3Qg
dHJhY2tJRCk7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRl
eCBhYmQ4MWU1ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyLi43MDM3OGRmZDAyMGQw
NmIxMjQ1NTlkZDE0N2NhMzYxZTczN2ExZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTU3LDYgKzU3LDEwIEBACiAj
cHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
CiAKK0BpbnRlcmZhY2UgQVZDb250ZW50S2V5U3BlY2lmaWVyIChXZWJDb3JlUHJpdmF0ZSkKK0Bw
cm9wZXJ0eSAocmVhZG9ubHkpIE5TRGF0YSAqaW5pdGlhbGl6YXRpb25EYXRhOworQGVuZAorCiBA
aW50ZXJmYWNlIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIDogTlNPYmplY3Q8QVZTdHJl
YW1EYXRhUGFyc2VyT3V0cHV0SGFuZGxpbmc+IHsKICAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKiBfcGFyZW50OwogICAgIEFWU3RyZWFtRGF0YVBhcnNlciogX3BhcnNlcjsK
QEAgLTEzMyw2ICsxMzcsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09
IF9wYXJzZXIpOwogICAgIF9wYXJlbnQtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW5pdERhdGEsIHRyYWNrSUQpOwogfQorCistICh2b2lk
KXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIg
ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6KEFWQ29udGVudEtleVNwZWNpZmllciAqKWtl
eVNwZWNpZmllciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3Bh
cnNlcik7CisgICAgaWYgKFtrZXlTcGVjaWZpZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihpbml0aWFsaXphdGlvbkRhdGEpXSkKKyAgICAgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0U3BlY2lmaWVyRm9yVHJhY2tJRChrZXlTcGVjaWZpZXIuaW5pdGlhbGl6YXRp
b25EYXRhLCB0cmFja0lEKTsKK30KKwogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
MzQsMTAgKzM0NiwxNCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OndpbGxQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogCiB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBuc0luaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKQog
ewotICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUobnNJbml0RGF0YS5sZW5n
dGgpOwotICAgIFtuc0luaXREYXRhIGdldEJ5dGVzOmluaXREYXRhLT5kYXRhKCkgbGVuZ3RoOmlu
aXREYXRhLT5sZW5ndGgoKV07CisgICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNJ
bml0RGF0YSksIHRyYWNrSUQpOworfQogCi0gICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soV1RGTW92ZShpbml0RGF0YSks
IHRyYWNrSUQpOwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JUcmFja0lEKE5TRGF0YSogbnNJbml0RGF0YSwgdWlu
dDY0X3QgdHJhY2tJRCkKK3sKKyAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlz
LCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgbnNJbml0RGF0YSA9IHJldGFpblB0cihuc0lu
aXREYXRhKSwgdHJhY2tJRF0geworICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNJbml0
RGF0YS5nZXQoKSksIHRyYWNrSUQpOworICAgIH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA3NTRiMWUy
ZWVjMDJkZjMzOTVlNWNkYjVjMDdmOGU4OGE5MzVjZDA4Li4zNzZhNmZjMTQzODExZWViODU2N2Jj
YjA4ZTdkZGQzYjFmZjEzY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3
dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtOTUsNyArOTYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck1lZGlh
U291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsgfQogCiAgICAgdm9pZCB3aWxsUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRf
dCB0cmFja0lEKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQs
IEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWlu
dDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4pOworCisgICAgdm9pZCBkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRChSZWY8U2hhcmVkQnVmZmVy
PiYmLCB1aW50NjRfdCB0cmFja0lEKTsKIAogICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNv
bnN0OwogCkBAIC0xMzIsNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgYnVmZmVyV2FzQ29u
c3VtZWQoKTsKICAgICAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBV
aW50OEFycmF5KiBpbml0RGF0YSgpIHsgcmV0dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KKyAgICBT
aGFyZWRCdWZmZXIqIGluaXREYXRhKCkgeyByZXR1cm4gbV9pbml0RGF0YS5nZXQoKTsgfQogI2Vu
ZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE1MCw3ICsxNTMsNyBAQCBwcml2
YXRlOgogICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKICAgICB2b2lkIGRpZFBhcnNlSW5pdGlh
bGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsKICAgICB2b2lkIGRpZEVuY291
bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90KTsKLSAgICB2b2lkIGRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRy
YWNrSWQoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlk
ZXMKICAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKQEAgLTE3NCw2
ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29u
c3QgZmluYWw7CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICB2
b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QgdHJh
Y2tJRCk7CiAgICAgdm9pZCBkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKHVpbnQ2NF90IHRy
YWNrSUQpOwogICAgIHZvaWQgYXBwZW5kQ29tcGxldGVkKCk7CiAgICAgdm9pZCBkZXN0cm95U3Ry
ZWFtRGF0YVBhcnNlcigpOwpAQCAtMTg2LDYgKzE5MCwxMiBAQCBwcml2YXRlOgogICAgIEFMTE9X
X05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAKICAgICBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNvbnN0OworICAgIGJvb2wgY2FuRW5xdWV1ZVNhbXBs
ZSh1aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVNhbXBsZUFWRk9iakMmKTsKKyAgICBib29s
IHRyYWNrSXNCbG9ja2VkKHVpbnQ2NF90IHRyYWNrKSBjb25zdDsKKworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICB2b2lkIGtleVN0
YXR1c2VzQ2hhbmdlZCgpOworI2VuZGlmCiAKICAgICBWZWN0b3I8UmVmUHRyPFZpZGVvVHJhY2tQ
cml2YXRlPj4gbV92aWRlb1RyYWNrczsKICAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2tQcml2
YXRlPj4gbV9hdWRpb1RyYWNrczsKQEAgLTE5Nyw3ICsyMDcsOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9wcm9jZXNzaW5nSW5pdGlhbGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29s
IG1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNrIHsgZmFsc2UgfTsKICAgICBWZWN0
b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5kaW5nVHJhY2tDaGFuZ2VDYWxsYmFja3M7Ci0gICAg
VmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlPj4+IG1fbWVkaWFTYW1w
bGVzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxNZWRpYVNhbXBsZUFWRk9i
akM+Pj4gbV9tZWRpYVNhbXBsZXM7CisgICAgRGVxdWU8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8
TWVkaWFTYW1wbGVBVkZPYmpDPj4+IG1fYmxvY2tlZFNhbXBsZXM7CiAKICAgICBSZXRhaW5QdHI8
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fZGlzcGxheUxheWVyOwogICAgIEFMTE9XX05F
V19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KQEAgLTIxNSwxMyArMjI2LDI3IEBAIHByaXZhdGU6
CiAKICAgICBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBtX21lZGlhU291cmNlOwogICAgIGJv
b2wgbV9pc0FjdGl2ZSB7IGZhbHNlIH07CisKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKLSAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2luaXREYXRhOwogICAgIFdlYWtQdHI8Q0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQz4gbV9zZXNzaW9uIHsgbnVsbHB0ciB9OwogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIHVzaW5nIEtleUlE
cyA9IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OworICAgIHN0cnVjdCBUcmFj
a0luaXREYXRhIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGE7CisgICAg
ICAgIEtleUlEcyBrZXlJRHM7CisgICAgfTsKKyAgICB1c2luZyBUcmFja0luaXREYXRhTWFwID0g
SGFzaE1hcDx1aW50NjRfdCwgVHJhY2tJbml0RGF0YT47CisgICAgVHJhY2tJbml0RGF0YU1hcCBt
X3BlbmRpbmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwOworICAgIFRyYWNrSW5pdERhdGFNYXAg
bV9wcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwOworCisgICAgdXNpbmcgVHJhY2tLZXlJRHNNYXAg
PSBIYXNoTWFwPHVpbnQ2NF90LCBLZXlJRHM+OworICAgIFRyYWNrS2V5SURzTWFwIG1fY3VycmVu
dFRyYWNrSURzOworCiAgICAgUmVmUHRyPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IG1fa2V5SURzOworICAgIFVuaXF1ZVJlZjxPYnNlcnZlcjx2b2lkKCk+PiBtX2tleVN0YXR1
c2VzQ2hhbmdlZE9ic2VydmVyOworICAgIEtleUlEcyBtX2tleUlEczsKICNlbmRpZgogCiAgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTYxYTNh
N2ZjYzk2Mzc5OGY2ODk4YzAxMjdiZDc0YmIzMzBiZjdhMS4uYzk2NzZkMmY0YjY5MTg3ZjYwZWIw
YzgxZGRkYWZjMzU5OGFjMDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTc2LDYgKzc2LDEyIEBAIC0gKHZvaWQp
ZXhwZWN0TWluaW11bVVwY29taW5nU2FtcGxlQnVmZmVyUHJlc2VudGF0aW9uVGltZTogKENNVGlt
ZSltaW5pbXVtVXBjb21pCiAtICh2b2lkKXJlc2V0VXBjb21pbmdTYW1wbGVCdWZmZXJQcmVzZW50
YXRpb25UaW1lRXhwZWN0YXRpb25zOwogQGVuZAogCitAaW50ZXJmYWNlIEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIChXZWJDb3JlU2FtcGxlQnVmZmVyS2V5U2Vzc2lvbikgPEFWQ29udGVudEtl
eVJlY2lwaWVudD4KK0BlbmQKKworQGludGVyZmFjZSBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXIgKFdlYkNvcmVTYW1wbGVCdWZmZXJLZXlTZXNzaW9uKSA8QVZDb250ZW50S2V5UmVjaXBpZW50
PgorQGVuZAorCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIEFWU3RyZWFtU2Vzc2lvbgog
CkBAIC0yNzUsNiArMjgxLDI0IEBAIHN0YXRpYyB1aW50NjRfdCBuZXh0TWFwSUQoKQogICAgIHJl
dHVybiArK21hcElEOwogfQogCitzdGF0aWMgYm9vbCBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBw
b3J0S2V5U2Vzc2lvbigpCit7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHMgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIFsmXSB7CisgICAgICAgIHN1cHBvcnRzID0gW1BBTDo6Z2V0QVZTYW1wbGVCdWZm
ZXJBdWRpb1JlbmRlcmVyQ2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKEFWQ29u
dGVudEtleVJlY2lwaWVudCldCisgICAgICAgICAgICAmJiBbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllckNsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRl
bnRLZXlSZWNpcGllbnQpXTsKKyAgICB9KTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK3N0
YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBjb3B5S2V5SURzKGNvbnN0
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEcykKK3sKKyAgICByZXR1
cm4ga2V5SURzLm1hcChbXSAoYXV0byYga2V5SUQpIHsKKyAgICAgICAgcmV0dXJuIGtleUlELmNv
cHlSZWYoKTsKKyAgICB9KTsKK30KKwogc3RhdGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxs
YmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9pZCogbGlzdGVuZXIsIENGU3Ry
aW5nUmVmIG5vdGlmaWNhdGlvbk5hbWUsIGNvbnN0IHZvaWQqLCBDRlR5cGVSZWYpCiB7CiAgICAg
aWYgKCFDRkVxdWFsKFBBTDo6a0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVm
ZmVyQ29uc3VtZWQsIG5vdGlmaWNhdGlvbk5hbWUpKQpAQCAtMzA3LDYgKzMzMSw5IEBAIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDCiAgICAgLCBtX2Vycm9yTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFW
U2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6KnRoaXNdKSkK
ICAgICAsIG1fYXBwZW5kUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDIGRhdGEgcGFyc2VyIHF1ZXVlIikpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVu
dCkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCisgICAgLCBtX2tleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyKG1ha2VVbmlxdWVSZWY8T2Jz
ZXJ2ZXI8dm9pZCgpPj4oW3RoaXNdIHsga2V5U3RhdHVzZXNDaGFuZ2VkKCk7IH0pKQorI2VuZGlm
CiAgICAgLCBtX21hcElEKG5leHRNYXBJRCgpKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgICwgbV9sb2dnZXIocGFyZW50LT5sb2dnZXIoKSkKQEAgLTM2NCw2ICszOTEsOSBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJ
bml0aWFsaXphdGlvblNlZ21lbgogCiAgICAgY2xlYXJUcmFja3MoKTsKIAorICAgIG1fcHJvdGVj
dGVkVHJhY2tJbml0RGF0YU1hcC5zd2FwKG1fcGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFN
YXApOworICAgIG1fcGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuY2xlYXIoKTsKKwog
ICAgIGZvciAoYXV0byB2aWRlb1RyYWNrSW5mbyA6IHNlZ21lbnQudmlkZW9UcmFja3MpIHsKICAg
ICAgICAgdmlkZW9UcmFja0luZm8udHJhY2stPnNldFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzXSAoVmlkZW9UcmFja1ByaXZhdGUmIHRy
YWNrLCBib29sIHNlbGVjdGVkKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNDU4
LDEwICs0ODgsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QgY29kZSkKICAgICBtX3BhcnNpbmdTdWNjZWVk
ZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1
aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKK3ZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRp
YVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlKQogewogICAgIFVOVVNFRF9QQVJBTShtZWRpYVR5cGUpOwogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAg
IGF1dG8gZmluZFJlc3VsdCA9IG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5maW5kKHRyYWNr
SWQpOworICAgIGlmIChmaW5kUmVzdWx0ICE9IG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5l
bmQoKSkKKyAgICAgICAgbWVkaWFTYW1wbGUtPnNldEtleUlEcyhjb3B5S2V5SURzKGZpbmRSZXN1
bHQtPnZhbHVlLmtleUlEcykpOworI2VuZGlmCisKICAgICBpZiAobV9wcm9jZXNzaW5nSW5pdGlh
bGl6YXRpb25TZWdtZW50KSB7CiAgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRp
YVNhbXBsZS5nZXQoKSk7CiAgICAgICAgIG1fbWVkaWFTYW1wbGVzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcih0cmFja0lkLCBXVEZNb3ZlKG1lZGlhU2FtcGxlKSkpOwpAQCAtNTA4LDcgKzU0NCw3IEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGCiAjZW5kaWYKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJ
RCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSkKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgdWludDY0
X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSkKIHsK
ICAgICBhdXRvIHBsYXllciA9IHRoaXMtPnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpAQCAt
NTE5LDExICs1NTUsMTUgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KIAogICAgIG1fcHJvdGVj
dGVkVHJhY2tJRCA9IHRyYWNrSUQ7CiAgICAgbV9pbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEp
OwotICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJjZUJ1ZmZlcktleU5lZWRlZCh0aGlzLCBtX2luaXRE
YXRhLmdldCgpKTsKKyAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhp
cywgKm1faW5pdERhdGEpOworCiAgICAgaWYgKGF1dG8gc2Vzc2lvbiA9IHBsYXllci0+Y2RtU2Vz
c2lvbigpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJz
ZXIoKSkKKyAgICAgICAgaWYgKHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9u
KCkpIHsKKyAgICAgICAgICAgIC8vIG5vLW9wLgorICAgICAgICB9IGVsc2UgaWYgKGF1dG8gcGFy
c2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQogICAgICAgICAgICAgc2Vzc2lvbi0+YWRk
UGFyc2VyKHBhcnNlcik7Ci0gICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwor
ICAgICAgICBpZiAoaGFzU2Vzc2lvblNlbWFwaG9yZSkKKyAgICAgICAgICAgIGhhc1Nlc3Npb25T
ZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC01
MzMsMTQgKzU3MywxNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIG1faGFzU2Vzc2lv
blNlbWFwaG9yZSA9IGhhc1Nlc3Npb25TZW1hcGhvcmU7CiAgICAgCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQotICAgIGF1dG8gaW5pdERh
dGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2luaXREYXRhLT5kYXRhKCksIG1faW5p
dERhdGEtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgYXV0byBrZXlJRHMgPSBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGluaXREYXRhQnVmZmVyKTsKKyAgICBhdXRv
IGtleUlEcyA9IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYo
Km1faW5pdERhdGEpOwogICAgIGlmICgha2V5SURzKQogICAgICAgICByZXR1cm47CiAKKyAgICBt
X3BlbmRpbmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwLnNldCh0cmFja0lELCBUcmFja0luaXRE
YXRhIHsgbV9pbml0RGF0YS5jb3B5UmVmKCksICprZXlJRHMgfSk7CisKICAgICBpZiAobV9jZG1J
bnN0YW5jZSkgewogICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3Rh
bmNlLT5zZXNzaW9uRm9yS2V5SURzKGtleUlEcy52YWx1ZSgpKSkgewotICAgICAgICAgICAgaWYg
KGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQorICAgICAgICAgICAgaWYg
KHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBuby1vcC4KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byBwYXJzZXIgPSB0aGlz
LT5zdHJlYW1EYXRhUGFyc2VyKCkpCiAgICAgICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+
Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAg
ICAgICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgICAgICAgICAgbV9o
YXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKQEAgLTU1Miw3ICs1OTUsNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGbwogICAgIH0KIAogICAgIG1fa2V5SURzID0gV1RGTW92ZShrZXlJRHMu
dmFsdWUoKSk7Ci0gICAgcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCgic2lu
ZiIsIGluaXREYXRhQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKKyAgICBwbGF5ZXIt
PmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKCJzaW5mIiwgbV9pbml0RGF0YS0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7CiAKICAgICBtX3dhaXRpbmdGb3JLZXkgPSB0cnVlOwogICAgIHBs
YXllci0+d2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKQEAgLTU4Nyw3ICs2MzAsNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQogICAgICAgICB3ZWFrVGhpcy0+ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGVycm9y
Q29kZSk7CiAgICAgfSk7CiAKLSAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNh
bGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJv
cnRDYWxsZWRdIChSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBj
b25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgeworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVk
aWFEYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0Q2FsbGVk
ID0gbV9hYm9ydENhbGxlZF0gKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50
NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgewogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8IGFib3J0Q2FsbGVkICE9
IHdlYWtUaGlzLT5tX2Fib3J0Q2FsbGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjE2LDcg
KzY1OSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIG1fcGFyc2VyLT5z
ZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
Q2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0U2VtYXBob3JlID0g
bV9hYm9ydFNlbWFwaG9yZSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXShSZWY8VWludDhB
cnJheT4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkgbXV0YWJsZSB7CisgICAgbV9wYXJz
ZXItPnNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRTZW1hcGhv
cmUgPSBtX2Fib3J0U2VtYXBob3JlLCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdKFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpIG11dGFibGUgewogICAg
ICAgICAvLyBDYWxsZWQgb24gdGhlIGRhdGEgcGFyc2VyIHF1ZXVlLgogICAgICAgICBCb3g8Qmlu
YXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46
OmNyZWF0ZSgpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBhYm9ydENhbGxlZCwgaW5pdERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKSwgdHJh
Y2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gKCkgbXV0YWJsZSB7CkBAIC02MzYsNiArNjc5LDEz
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCiAgICAgICAgIH0KICAgICB9KTsKIAorICAgIG1fcGFyc2VyLT5zZXREaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdIChS
ZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKSB7CisgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgYWJvcnRD
YWxsZWQgIT0gd2Vha1RoaXMtPm1fYWJvcnRDYWxsZWQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEKFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lELCBudWxscHRyKTsKKyAg
ICB9KTsKKwogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IHRydWU7CiAKICAgICBtX2FwcGVuZFF1
ZXVlLT5kaXNwYXRjaChbZGF0YSA9IFdURk1vdmUoZGF0YSksIHdlYWtUaGlzID0gbV9hcHBlbmRX
ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcGFyc2VyID0gbV9wYXJzZXIsIGFib3J0
Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0oKSBtdXRhYmxlIHsKQEAgLTczNiw2ICs3ODYsMTEgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycygpCiAgICAg
ICAgIFtyZW5kZXJlciBmbHVzaF07CiAgICAgICAgIFtyZW5kZXJlciBzdG9wUmVxdWVzdGluZ01l
ZGlhRGF0YV07CiAgICAgICAgIFttX2Vycm9yTGlzdGVuZXIgc3RvcE9ic2VydmluZ1JlbmRlcmVy
OnJlbmRlcmVyLmdldCgpXTsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUo
QVZDT05URU5US0VZU0VTU0lPTikKKyAgICAgICAgaWYgKG1fY2RtSW5zdGFuY2UgJiYgc2FtcGxl
QnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSkKKyAgICAgICAgICAgIFttX2NkbUlu
c3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6cmVu
ZGVyZXIuZ2V0KCldOworI2VuZGlmCiAgICAgfQogCiAgICAgW21fZXJyb3JMaXN0ZW5lciBpbnZh
bGlkYXRlXTsKQEAgLTg0Myw2ICs4OTgsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaywKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2Nk
bUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisg
ICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50
S2V5UmVjaXBpZW50OnJlbmRlcmVyLmdldCgpXTsKKyNlbmRpZgorCiAgICAgICAgICAgICBXZWFr
UHRyIHdlYWtUaGlzIHsgKnRoaXMgfTsKICAgICAgICAgICAgIFtyZW5kZXJlciByZXF1ZXN0TWVk
aWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxv
Y2s6XnsKICAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC05MDksNyArOTY5LDI0IEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldENETUluc3RhbmNlKENETUluc3Rh
bmNlKiBpbnN0YW5jZSkKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKKyAgICBp
ZiAoc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSAmJiBtX2NkbUluc3Rh
bmNlKSB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlMYXllcikKKyAgICAgICAgICAgIFttX2NkbUlu
c3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9k
aXNwbGF5TGF5ZXIuZ2V0KCldOworCisgICAgICAgIGZvciAoYXV0byYgYXVkaW9SZW5kZXJlciA6
IG1fYXVkaW9SZW5kZXJlcnMudmFsdWVzKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+
Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50OmF1ZGlvUmVuZGVy
ZXIuZ2V0KCldOworICAgIH0KKwogICAgIG1fY2RtSW5zdGFuY2UgPSBmcHNJbnN0YW5jZTsKKwor
ICAgIGlmIChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpICYmIG1fY2Rt
SW5zdGFuY2UpIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUxheWVyKQorICAgICAgICAgICAgW21f
Y2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpt
X2Rpc3BsYXlMYXllci5nZXQoKV07CisKKyAgICAgICAgZm9yIChhdXRvJiBhdWRpb1JlbmRlcmVy
IDogbV9hdWRpb1JlbmRlcmVycy52YWx1ZXMoKSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNl
LT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6YXVkaW9SZW5kZXJl
ci5nZXQoKV07CisgICAgfQorCiAgICAgYXR0ZW1wdFRvRGVjcnlwdCgpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oaW5zdGFuY2UpOwpAQCAtOTI2LDggKzEwMDMsMTAgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdCgpCiAgICAgaWYgKCFpbnN0YW5j
ZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMt
PnN0cmVhbURhdGFQYXJzZXIoKSkKLSAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtl
eVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CisgICAgaWYgKCFzYW1w
bGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKSB7CisgICAgICAgIGlmIChhdXRv
IHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKKyAgICAgICAgICAgIFtpbnN0YW5j
ZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJz
ZXJdOworICAgIH0KICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgIG1f
aGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFw
aG9yZSA9IG51bGxwdHI7CkBAIC0xMTA1LDE5ICsxMTg0LDg4IEBAIEFMTE9XX05FV19BUElfV0lU
SE9VVF9HVUFSRFNfRU5ECiAgICAgICAgIHBsYXllci0+c2V0SGFzQXZhaWxhYmxlQXVkaW9TYW1w
bGUocmVuZGVyZXIsIGZhbHNlKTsKIH0KIAorYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tJc0Jsb2NrZWQodWludDY0X3QgdHJhY2tJRCkgY29uc3QKK3sKKyAgICBmb3IgKGF1
dG8mIHNhbXBsZVBhaXIgOiBtX2Jsb2NrZWRTYW1wbGVzKSB7CisgICAgICAgIGlmIChzYW1wbGVQ
YWlyLmZpcnN0ID09IHRyYWNrSUQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFW
RShBVkNPTlRFTlRLRVlTRVNTSU9OKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
a2V5U3RhdHVzZXNDaGFuZ2VkKCkKK3sKKyAgICB3aGlsZSAoIW1fYmxvY2tlZFNhbXBsZXMuaXNF
bXB0eSgpKSB7CisgICAgICAgIGF1dG8mIGZpcnN0UGFpciA9IG1fYmxvY2tlZFNhbXBsZXMuZmly
c3QoKTsKKworICAgICAgICAvLyBJZiB3ZSBzdGlsbCBjYW4ndCBlbnF1ZXVlIHRoZSBzYW1wbGUs
IGJhaWwuCisgICAgICAgIGlmICghY2FuRW5xdWV1ZVNhbXBsZShmaXJzdFBhaXIuZmlyc3QsIGZp
cnN0UGFpci5zZWNvbmQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gZmly
c3RQYWlyVGFrZW4gPSBtX2Jsb2NrZWRTYW1wbGVzLnRha2VGaXJzdCgpOworICAgICAgICBlbnF1
ZXVlU2FtcGxlKFdURk1vdmUoZmlyc3RQYWlyVGFrZW4uc2Vjb25kKSwgZmlyc3RQYWlyVGFrZW4u
Zmlyc3QpOworICAgIH0KK30KKyNlbmRpZgorCitib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpjYW5FbnF1ZXVlU2FtcGxlKHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IE1lZGlhU2FtcGxl
QVZGT2JqQyYgc2FtcGxlKQoreworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUo
QVZDT05URU5US0VZU0VTU0lPTikKKyAgICAvLyBJZiBzYW1wbGUgYnVmZmVycyBkb24ndCBzdXBw
b3J0IEFWQ29udGVudEtleVNlc3Npb246IGVucXVldWUgc2FtcGxlCisgICAgaWYgKCFzYW1wbGVC
dWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIC8vIGlmIHNhbXBsZSBpcyB1bmVuY3J5dHBlZDogZW5xdWV1ZSBzYW1wbGUKKyAgICBp
ZiAoc2FtcGxlLmtleUlEcygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAvLyBpZiBzYW1wbGUgaXMgZW5jcnlwdGVkLCBidXQgd2UgYXJlIG5vdCBhdHRhY2hlZCB0byBh
IENETTogZG8gbm90IGVucXVldWUgc2FtcGxlLgorICAgIGlmICghbV9jZG1JbnN0YW5jZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gaWYgc2FtcGxlIGlzIGVuY3J5cHRlZCwgYW5k
IGtleUlEcyBtYXRjaCB0aGUgY3VycmVudCBzZXQgb2Yga2V5SURzOiBlbnF1ZXVlIHNhbXBsZS4K
KyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX2N1cnJlbnRUcmFja0lEcy5maW5kKHRyYWNrSUQpOwor
ICAgIGlmIChmaW5kUmVzdWx0ICE9IG1fY3VycmVudFRyYWNrSURzLmVuZCgpICYmIGZpbmRSZXN1
bHQtPnZhbHVlID09IHNhbXBsZS5rZXlJRHMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAvLyBpZiBzYW1wbGUncyBzZXQgb2Yga2V5SURzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50
IHNldCBvZiBrZXlJRHMsIGNvbnN1bHQgd2l0aCB0aGUgQ0RNCisgICAgLy8gdG8gZGV0ZXJtaW5l
IGlmIHRoZSBrZXlJRHMgYXJlIHVzYWJsZTsgaWYgc28sIHVwZGF0ZSB0aGUgY3VycmVudCBzZXQg
b2Yga2V5SURzIGFuZCBlbnF1ZXVlIHNhbXBsZS4KKyAgICBpZiAobV9jZG1JbnN0YW5jZS0+aXNB
bnlLZXlVc2FibGUoc2FtcGxlLmtleUlEcygpKSkgeworICAgICAgICBtX2N1cnJlbnRUcmFja0lE
cy5zZXQodHJhY2tJRCwgc2FtcGxlLmtleUlEcygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
K30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZShSZWY8
TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEU3RyaW5nKQog
ewogICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVp
bnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZV9vcigwKTsKICAgICBpZiAodHJhY2tJRCAhPSBt
X2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJ
RCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxl
ID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOwotICAgIGlmIChwbGF0Zm9ybVNhbXBsZS50eXBl
ICE9IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpCisgICAgaWYgKCFpczxNZWRp
YVNhbXBsZUFWRk9iakM+KHNhbXBsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZjxNZWRp
YVNhbXBsZUFWRk9iakM+IHNhbXBsZUFWRk9iakMgPSBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TWVk
aWFTYW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNhbXBsZSkpOworICAgIGlmICghc2FtcGxlQVZGT2Jq
Qy0+a2V5SURzKCkuaXNFbXB0eSgpICYmICFjYW5FbnF1ZXVlU2FtcGxlKHRyYWNrSUQsIHNhbXBs
ZUFWRk9iakMpKSB7CisgICAgICAgIG1fYmxvY2tlZFNhbXBsZXMuYXBwZW5kKHsgdHJhY2tJRCwg
V1RGTW92ZShzYW1wbGVBVkZPYmpDKSB9KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAg
IGVucXVldWVTYW1wbGUoV1RGTW92ZShzYW1wbGVBVkZPYmpDKSwgdHJhY2tJRCk7Cit9CisKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2Ft
cGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQpCit7CiAgICAgYXV0byBsb2dT
aXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgREVCVUdfTE9HKGxvZ1NpdGVJZGVu
dGlmaWVyLCAidHJhY2sgSUQgPSAiLCB0cmFja0lELCAiLCBzYW1wbGUgPSAiLCBzYW1wbGUuZ2V0
KCkpOwogCisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUgPSBzYW1wbGUtPnBsYXRm
b3JtU2FtcGxlKCk7CisKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0
aW9uID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKHBsYXRmb3JtU2Ft
cGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcik7CiAgICAgQVNTRVJUKGZvcm1hdERlc2NyaXB0aW9u
KTsKICAgICBpZiAoIWZvcm1hdERlc2NyaXB0aW9uKSB7CkBAIC0xMjg0LDYgKzE0MzIsOSBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1w
bGVzKHVpbnQ2NF90IHRyYWNrSUQpCiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKKyAgICBp
ZiAodHJhY2tJc0Jsb2NrZWQodHJhY2tJRCkpCisgICAgICAgIHJldHVybjsKKwogICAgIHByb3Zp
ZGVNZWRpYURhdGEoQXRvbVN0cmluZzo6bnVtYmVyKHRyYWNrSUQpKTsKIH0KIApAQCAtMTM3NSwx
MSArMTUyNiwyMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRWaWRlb0xh
eWVyKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBsYXllcgogICAgICAgICBbbV9kaXNwbGF5
TGF5ZXIgZmx1c2hdOwogICAgICAgICBbbV9kaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRp
YURhdGFdOwogICAgICAgICBbbV9lcnJvckxpc3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcjptX2Rp
c3BsYXlMYXllci5nZXQoKV07CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZF
KEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBs
ZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1J
bnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1f
ZGlzcGxheUxheWVyLmdldCgpXTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1fZGlzcGxheUxheWVy
ID0gbGF5ZXI7CiAKICAgICBpZiAobV9kaXNwbGF5TGF5ZXIpIHsKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2Nk
bUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisg
ICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50
S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgpXTsKKyNlbmRpZgorCiAgICAgICAgIFdl
YWtQdHIgd2Vha1RoaXMgeyAqdGhpcyB9OwogICAgICAgICBbbV9kaXNwbGF5TGF5ZXIgcmVxdWVz
dE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2lu
Z0Jsb2NrOl4gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aAppbmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li5mYzJiYWI5
MDdkOTgzNTNkMWY4YWFkNjk0ZjllNTUyYTRjMjlmZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBMb2dnZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbnRlbnRUeXBlOwotY2xhc3MgTWVkaWFTYW1wbGU7CitjbGFzcyBNZWRpYVNhbXBs
ZUFWRk9iakM7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNv
dXJjZUJ1ZmZlclBhcnNlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZm
ZXJQYXJzZXI+IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8g
V2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHVzaW5nIERpZFByb3ZpZGVN
ZWRpYURhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50
NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk+OworICAgIHVzaW5nIERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlQVZG
T2JqQz4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpPjsKICAg
ICB2b2lkIHNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhEaWRQcm92aWRlTWVkaWFEYXRh
Q2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC0xMzcsMTIgKzEzNywxOSBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUg
cGFyc2VyIHRoZWFkLgotICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPFVpbnQ4
QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAgICB1c2luZyBEaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKICAgICB2b2lk
IHNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SURDYWxsYmFjayhEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayk7CiAgICAgfQogCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhl
IG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50
aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+
JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAgICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU291
cmNlQnVmZmVyUGFyc2VyKCk7CiAKQEAgLTE1Miw2ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNr
OwogICAgIFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEQ2FsbGJhY2sgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOwogICAgIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKKyAgICBEaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrIG1fZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjazsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMDVhODMxNmRjMjdl
NjMwMTdmMzk3ZjE5MjQ2OWI4MmEzM2I3YjAzNC4uYWUxNjQxNGYyMWM2ODQ2YzE4OTc3MDllMTQy
NGU0YTZhNGI3NjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTEw
MzIsNyArMTAzMiw3IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50
cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiwgY29uc3QgVHJhY2tFCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgICAgIGF1dG8mIGtleUlkID0ga2V5SWRFbGVtZW50LnZhbHVl
KCk7Ci0gICAgICAgICAgICBtX2tleUlkcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tFbnRy
eS50cmFja191aWQudmFsdWUoKSwgVWludDhBcnJheTo6Y3JlYXRlKGtleUlkLmRhdGEoKSwga2V5
SWQuc2l6ZSgpKSkpOworICAgICAgICAgICAgbV9rZXlJZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KHRyYWNrRW50cnkudHJhY2tfdWlkLnZhbHVlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleUlk
LmRhdGEoKSwga2V5SWQuc2l6ZSgpKSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggMjhlNzNmYmE1MDIzYzgxNmJmYjI0MmM1Zjk5MGRiOTdh
MThiYzFmZi4uZTg3NmFiNDE0YTRhYmIzM2Q1MThjMzdiNDFmZTVhMTQ3NzZhYjQ5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMjY5LDcgKzI2OSw3IEBAIHByaXZhdGU6CiAg
ICAgd2VibTo6U3RhdHVzIE9uRnJhbWUoY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHdlYm06
OlJlYWRlciosIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZykgZmluYWw7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5pdGlhbGl6YXRpb25TZWdtZW50PiBtX2luaXRpYWxpemF0aW9uU2VnbWVudDsK
LSAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8VWludDhBcnJheT4+PiBtX2tleUlk
czsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8U2hhcmVkQnVmZmVyPj4+IG1f
a2V5SWRzOwogICAgIHdlYm06OlN0YXR1cyBtX3N0YXR1czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
d2VibTo6V2VibVBhcnNlcj4gbV9wYXJzZXI7CiAgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2Vn
bWVudEVuY291bnRlcmVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVy
LmgKaW5kZXggMWQ3MWEzMzk2OWNmYmM2NzVkZWVjZWE3OGU2NGYyZDY4OTllNDFlYi4uY2QwOWNj
N2U1MDJkYzQyNzdjMzI0Y2I0YmNkZTZmMjA5ZWM4YzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2Ft
cGxlR1N0cmVhbWVyLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIFJlZjxNZWRpYVNh
bXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBvdmVycmlkZTsKICAgICBTYW1w
bGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQ
bGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2Ft
cGxlVHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0
Zm9ybVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxlVHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0
ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQ
dHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2
ZWY1N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJkNjViLi4wMDM5YjQyMDAyYTZmMDVkY2I3ZGFiZDU5
M2RmYTg0ZDJiMmJkNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cApAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7IH0KICAgICBTYW1wbGVGbGFncyBm
bGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxl
KCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hU
eXBlOyB9CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRp
b25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRl
eCA0MmEzMjA2NTRiMDNkZjliNDM5Nzc3OTQyNTY0NTgyMDA2Y2RhMTEwLi43MTFjZWQwYmYxMzE0
MjU5MTc3NWZmZDc5M2FlNWE4NmM2YWUwY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OTgs
MTEgKzY5OCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRy
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KFVpbnQ4QXJyYXkqIG1lc3NhZ2UpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlh
UGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKIHsKICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgbWVzc2FnZVJlZmVyZW5jZTsKLSAgICBpZiAobWVzc2FnZSkKLSAgICAg
ICAgbWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5ieXRlTGVu
Z3RoKCkgfTsKKyAgICBtZXNzYWdlUmVmZXJlbmNlID0geyBtZXNzYWdlLmRhdGEoKSwgbWVzc2Fn
ZS5zaXplKCkgfTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyS2V5TmVlZGVkKFdURk1vdmUobWVz
c2FnZVJlZmVyZW5jZSkpLCBtX2lkKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMWZi
ZTFmOTMzZDA5NTAwNmY0MmZkOWRjZmM2ZjJhNDQyYTc2NDA5My4uM2Q5ZTAyZTAxOGRkMTE2NDJi
YjU2YTMzZmJjZTk1OTgwNWE5NDNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0yNDcsNyArMjQ3LDcg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJp
bmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJy
YXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmNwcAppbmRleCA3NzRjY2YzMWYyNjc3ZDBhMDUyMTc2NTFiM2I0ZTEzMjM1YzRj
Mjk0Li5mODk1N2IzYjhlNDE4NjIzYjNiNTZjMDEyMTU3MDA1YmRjZjYyODk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRS
ZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIE1lZGlhRm9y
bWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2UoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJl
Zj4mJiBieXRlUwogICAgICAgICBkaWRQYXJzZVRyYWNrcyh7IH0sIGVycm9yQ29kZSk7CiAgICAg
fSk7CiAKLSAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNh
bXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBw
YXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUs
IHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIGRp
ZFByb3ZpZGVNZWRpYURhdGEoV1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlw
ZSk7CiAgICAgfSk7CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVy
OjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlv
bgogICAgIG1faW5pdCA9IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBy
b3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0
cmFja0lELCBjb25zdCBTdHJpbmcmKQordm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlk
ZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRf
dCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAppbmRleCA2NTA5M2U5ZTQ2YjQwYjVhMzk3
NmZkZWYyOWU2MTNjNjQ1MWYzMTVhLi4xNWQ1NTczNjMzODE3NDYwYzJlNjIwNDQxOTAxMDIzY2Y4
NmI0YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaApAQCAtMzYsNiArMzYsNyBAQAog
REVDTEFSRV9DT1JFX01FRElBX1RSQUlUUyhGb3JtYXRSZWFkZXIpOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakM7CiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJz
ZXI7CiB9CiAKQEAgLTY3LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBhcnNlVHJh
Y2tzKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2Vn
bWVudCYmLCB1aW50NjRfdCBlcnJvckNvZGUpOwogICAgIHZvaWQgZGlkU2VsZWN0VmlkZW9UcmFj
ayhXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQogICAgIHZvaWQgZGlkRW5h
YmxlQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQotICAg
IHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIHVp
bnQ2NF90LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVm
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgZmluaXNoUGFyc2luZyhSZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
PiYmKTsKIAogICAgIC8vIENNQmFzZUNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5n
ZS5oCmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3NmU5ZmIxZWY5NjJiNDA0OTdlM2RjMzEuLjI1NWMw
N2VhNWFkNzg1MWVmZjhlNGVlNmY3ZTQ3YjM2MGU2MzY0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNh
bXBsZUJ5dGVSYW5nZS5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJp
bmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBs
YXRmb3JtU2FtcGxlKCkgZmluYWw7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlR5cGUg
cGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UGxhdGZv
cm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5cGU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFt
cHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcAppbmRleCAzM2RhOGFhMDZiNjE3Mjk3MzI3MDNlOTBhZWUwMjVjNGE3NjI2
YmY5Li41NjYwNmM0NzQwY2U5ZTk1NzU3NDIzYWU4NGI4MDVlMTE4MjExYzIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0xMTkxLDcgKzExOTEsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKElQQzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCiB7
CiAgICAgaWYgKFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKSkKLSAgICAgICAgcGxheWVy
LT5rZXlOZWVkZWQoVWludDhBcnJheTo6Y3JlYXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSkucHRyKCkpOworICAgICAgICBwbGF5ZXItPmtleU5lZWRlZChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtZXNzYWdlKSk7CiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451147</attachid>
            <date>2022-02-07 13:46:34 -0800</date>
            <delta_ts>2022-02-07 16:47:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236109-20220207134633.patch</filename>
            <type>text/plain</type>
            <size>71048</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZkOWYyZmY4ZTVmM2E2OWU0Y2NhNjc3
MjRmZWY3MDA2MjAwYzAwNzMuLjEyMTEzZTRhNGI3Njc5YjczNjgxYjRlZWIxOWJlMGNlMjMzYWNj
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDItMDcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1IYXZlLmg6CisKIDIwMjItMDItMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBNYWtlIEJpdG1hcCBjb25zdGV4cHIgZnJpZW5kbHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZTBkODFkNjQxZTcyODUwNmUzZjA2MGU1YTA2MzJmYTdjMTk0ZDExLi5l
NTU3ZGEyNzRhOTNkNTU3MzYxYzZkODc0OGVlM2UwMzY3NjM2ZTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTI1IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNv
bnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IHNldCBv
ZiBkZWxlZ2F0ZSBjYWxsYmFjayBtZXRob2RzIGhhdmUgYSBzaWduaWZpY2FudCBzaG9ydGNvbWlu
ZzogY2xpZW50cyBtdXN0CisgICAgICAgIGF0dGFjaCBhbiBBVkNvbnRlbnRLZXlTZXNzaW9uIHRv
IHRoZSBBVlN0cmVhbURhdGFQYXJzZXIgYmVmb3JlIHJldHVybmluZyBmcm9tIHRoZQorICAgICAg
ICAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGE6Zm9yVHJhY2tJRDogY2FsbGJhY2suIFRoaXMKKyAgICAgICAgaXMgYmVjYXVzZSB0
aGUgcGFyc2VyIGl0c2VsZiBhdHRhY2hlcyB0aGUgb2JqZWN0IHJlcXVpcmVkIHRvIGRlY3J5cHQg
ZWFjaCBlbmNyeXB0ZWQgc2FtcGxlCisgICAgICAgIHRvIHRoZSBzYW1wbGUgaXRzZWxmIGF0IHRo
ZSBwYXJzaW5nIHN0YWdlLiBJZiBhIGNsaWVudCBkb2VzIG5vdCBhdHRhY2ggYW4KKyAgICAgICAg
QVZDb250ZW50S2V5U2Vzc2lvbiBieSB0aGUgdGltZSB0aGF0IG1ldGhvZCByZXR1cm5zLCBBVlN0
cmVhbURhdGFQYXJzZXIgd2lsbCBhdHRhY2ggb25lIG9mCisgICAgICAgIGl0cyBvd24uCisKKyAg
ICAgICAgVGhlIHdlYi1mYWNpbmcgYmVoYXZpb3IgdGhpcyBjYXVzZXMgaXMgdGhhdCBNU0UgYXBw
ZW5kcyB3aWxsIG5vdCBjb21wbGV0ZSAoYnkgZmlyaW5nCisgICAgICAgIGFuICJ1cGRhdGVlbmQi
IGV2ZW50KSBpZiBhbiBlbmNyeXB0ZWQgc2VnbWVudCBpcyBwYXJzZWQgdW50aWwgdGhlIGNsaWVu
dCBjcmVhdGVzIGFuZAorICAgICAgICBhdHRhY2hlcyBhIE1lZGlhS2V5cyBvYmplY3Qgd2l0aCBh
IHZhbGlkIHNlc3Npb24uCisKKyAgICAgICAgQSBuZXcgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9k
LCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFj
a0lEOgorICAgICAgICBhbGxvd3MgdXMgdG8gd29yayBhcm91bmQgdGhpcyBwcm9ibGVtLiBXaGVu
IHRoaXMgZGVsZWdhdGUgaXMgcHJlc2VudCwgQVZTdHJlYW1EYXRhUGFyc2VyCisgICAgICAgIHdp
bGwgc2tpcCBhdHRhY2hpbmcgYSBkZWNyeXB0aW9uIG9iamVjdCBlbnRpcmVseSwgbW92aW5nIHRo
YXQgcmVzcG9uc2liaWxpdHkgdG8gdGhlCisgICAgICAgIGNsaWVudC4gSG93ZXZlciwgdGhpcyBj
b21lcyB3aXRoIHRoZSByZXF1aXJlbWVudCB0aGF0IHRoZSBjbGllbnQgKFdlYktpdCkgd29uJ3Qg
ZW5xdWV1ZQorICAgICAgICBhbiBlbmNyeXB0ZWQgc2FtcGxlIGJlZm9yZSBhIGRlY3J5cHRpb24g
b2JqZWN0IGlzIGF2YWlsYWJsZSB2aWEgQVZDb250ZW50S2V5U2Vzc2lvbi4KKworICAgICAgICBJ
biBvcmRlciB0byBtZWV0IHRoaXMgbmV3IHJlcXVpcmVtZW50LCBXZWJLaXQgd2lsbCBhc3NvY2lh
dGUgdGhlIGtleSBJRHMgbmVjZXNzYXJ5IHRvCisgICAgICAgIGRlY3J5cHQgZWFjaCBzYW1wbGUg
aW4gdGhlIE1lZGlhU2FtcGxlIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBlbmNyeXB0ZWQgc2FtcGxl
LiBCZWNhdXNlIG5vdAorICAgICAgICBldmVyeSB0eXBlIG9mIE1lZGlhU2FtcGxlIHdpbGwgY2Fy
cnkga2V5IElEcywgdGhpcyBwcm9wZXJ0eSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgIE1lZGlh
U2FtcGxlQVZGT2JqQyBzdWJjbGFzcywgYW5kIHRoZXJlZm9yZSB3ZSBuZWVkIHRvIGJlIGFibGUg
dG8gc2FmZWx5IGRvd25jYXN0IGZyb20KKyAgICAgICAgTWVkaWFTYW1wbGUgdG8gTWVkaWFTYW1w
bGVBVkZPYmpDLiBNZWRpYVNhbXBsZSBzdWJjbGFzc2VzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGJ5
IHRoZQorICAgICAgICBQbGF0Zm9ybU1lZGlhU2FtcGxlIHR5cGUgYXZhaWxhYmxlIHRocm91Z2gg
dGhlaXIgcGxhdGZvcm1TYW1wbGUoKSBwcm9wZXJ0eSwgaG93ZXZlciB0aGlzCisgICAgICAgIGNh
bGwgaXMgbm90IGNvbnN0LCBhbmQgbWF5IG5vdCBiZSBmcmVlLCBhcyBpdCByZXR1cm5zIGEgbm9u
LVBPRCB0eXBlLiBTbworICAgICAgICBQbGF0Zm9ybU1lZGlhOjpUeXBlIHdhcyBtYWRlIGFuIGV4
cGxpY2l0IGVudW0gdHlwZSwgYW5kIGEgbmV3IHZpcnR1YWwgbWV0aG9kCisgICAgICAgIHBsYXRm
b3JtU2FtcGxlVHlwZSgpIHdhcyBhZGRlZCB0byBNZWRpYVNhbXBsZSAoYW5kIGltcGxlbWVudGVk
IGJ5IGFsbCBzdWJjbGFzc2VzKSwgYW5kIGEKKyAgICAgICAgdHlwZSBzcGVjaWFsaXphdGlvbiBt
YWNybyB3YXMgYWRkZWQgdG8gTWVkaWFTYW1wbGVBVkZPYmpDLgorCisgICAgICAgIEluIG9yZGVy
IHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBzYW1wbGUgaXMgY2FwYWJsZSBvZiBiZWluZyBlbnF1
ZXVlZCwgdGhlIENETUluc3RhbmNlCisgICAgICAgIG11c3QgYmUgcXVlcmllZCB0byBkZXRlcm1p
bmUgaWYgdGhlIHNhbXBsZSdzIHJlcXVpcmVkIGtleXMgYXJlIHVzYWJsZS4gRm9yCisgICAgICAg
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLCBpdCBoYXMgYW4gZXhpc3Rpbmcg
a2V5U3RhdHVzKCksIG1ldGhvZCwgYnV0IHRoYXQKKyAgICAgICAgbWV0aG9kIGlzIGFsc28gbm9u
LWNvbnN0LCBhbmQgbWF5IGJlIGV4cGVuc2l2ZS4gU28gYSBLZXlTdGF0dXNNYXAgaW5zdGFuY2Ug
dmFyaWFibGUKKyAgICAgICAgaGFzIGJlZW4gYWRkZWQgdG8gY2FjaGUgdGhlIGtleSBzdGF0dXMg
Zm9yIGVhc2Ugb2YgcXVlcnlpbmcuIFRvIG5vdGlmeSBhbiBhcmJpdHJhcnkgbnVtYmVyCisgICAg
ICAgIG9mIGNsaWVudHMgd2hlbiB0aGUga2V5IHN0YXR1c2VzIGNoYW5nZSwgYW4gT2JzZXJ2ZXIg
aGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAgV2hlbiBhbiBlbmNyeXB0ZWQgc2FtcGxlIGlzIGVu
cXVldWVkLCBpZiB0aGlzIG5ldyBkZWxlZ2F0ZSBtZXRob2QgaXMgYXZhaWxhYmxlLCB0aGUKKyAg
ICAgICAgc291cmNlIGJ1ZmZlciB3aWxsIGNoZWNrIGlmIGEgQ0RNIGluc3RhbmNlIGlzIGF2YWls
YWJsZSwgYW5kIGlmIHNvLCB3aGV0aGVyIHRoZSBzYW1wbGUncworICAgICAgICBrZXlzIGFyZSB1
c2FibGUuIElmIGFueSBvZiB0aGVzZSBjaGVja3MgZmFpbCwgdGhlIHNhbXBsZSB3aWxsIGJlIHN0
b3JlZCBpbiBhIGxvY2FsIHF1ZXVlCisgICAgICAgIGFuZCBuZXcgZW5xdWV1ZXMgd2lsbCBiZSBi
bG9ja2VkLiBXaGVuIHRoZSBDRE0ncyBrZXlTdGF0dXMgb2JzZXJ2ZXIgaXMgdHJpZ2dlcmVkLCB0
aGUKKyAgICAgICAgbG9jYWwgcXVldWUgd2lsbCBiZSBwcm9jZXNzZWQsIGFuZCBhbGwgc2FtcGxl
cyB3aXRoIHVzYWJsZSBrZXkgSURzIHdpbGwgYmUgZW5xdWV1ZWQuCisKKyAgICAgICAgRHJpdmUt
YnkgZml4OiBVc2UgU2hhcmVkQnVmZmVyIHJhdGhlciB0aGFuIFVpbnQ4QXJyYXksIGFzIHRoZSBm
b3JtZXIgaXMgbGlnaHRlciB3ZWlnaHQKKyAgICAgICAgYW5kIGNhbiBiZSBtb3JlIGVhc2lseSBj
b252ZXJ0ZWQgdG8gYW5kIGZyb20gYSBOU0RhdGEuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9G
aWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmlzQW55S2V5VXNhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vz
c2lvbktleVN0YXR1c2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpv
dXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZVByb3RlY3Rpb25TdGF0dXNGb3JEaXNwbGF5SUQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTdGF0
dXNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjprZXlOZWVkZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRLZXlJRHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMpOgorICAgICAgICAoV1RGOjpM
b2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+Ojp0b1N0cmluZyk6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAg
KC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92
aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JU
cmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6c2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29weUtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldENETUluc3RhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0lz
QmxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6a2V5U3RhdHVzZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpjYW5FbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1w
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRW
aWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorCiAyMDIyLTAyLTA3ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgRG9jdW1lbnRU
aW1lbGluZTo6cnVubmluZ0FuaW1hdGlvbnNGb3JSZW5kZXJlckFyZUFsbEFjY2VsZXJhdGVkKCkg
dG8gU3R5bGVhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY3NmFhODUwNDZmMWZiMjVhMzU0ZDAxMmZjNzhlOGRl
NDU2YWE3MTkuLmZhZDZjYmE4OTM3ZGYxZTI3MWY2M2Q4MjExZWQzODkxYjNmNTEyN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDItMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQ
cm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBu
ZXdseSByZXF1cmllZCB2aXJ0dWFsIG1ldGhvZCBjaGFuZ2VzIHRvIE1lZGlhU2FtcGxlIHN1YmNs
YXNzZXMsIGFuZCB1c2UKKyAgICAgICAgU2hhcmVkQnVmZmVyIHJhdGhlciB0aGFuIFVpbnQ4QXJy
YXkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
cktleU5lZWRlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpwYXJz
ZUJ5dGVTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJv
dmlkZU1lZGlhRGF0YSk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYUZvcm1hdFJlYWRlci5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKwogMjAyMi0wMi0wNyAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV1Bd
IEVuYWJsZSBzYW5kYm94IHN0YXRlIHJ1bGVzIGZvciBNYWNoIG1lc3NhZ2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDcyNDNlOTBkN2U3MGY5OTRkMzlmN2RjNDQyMjFlZmZhOGFlNzc4NGUuLjQ3
OTFiNWZiNmE2YmI3OWY4YmViZDU0ODAxZmNkOWNhZTFlMGY2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC0zODgsNiArMzg4LDEzIEBACiAjZGVmaW5lIEhBVkVfQVZDT05URU5US0VZU0VTU0lP
TiAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMTAzMDApIFwKKyAgICB8fCAoKChQTEFURk9STShJT1MpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNDA1MDApIFwKKyAgICB8fCAoUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiBfX1dB
VENIX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gNzA0MDApIFwKKyAgICB8fCAoUExBVEZPUk0o
QVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiBfX1RWX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNTAwKQorI2RlZmluZSBIQVZFX0FWQ09OVEVOVEtFWVNQ
RUNJRklFUiAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZpbmUgSEFWRV9TRUNfS0VZX1BST1hZIDEKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZTVmYTJj
YzdjMTJjOTYyZGY0NzhhZGViM2JlMjg4MWM3OGI5NmYwOC4uZmFmZGE3NmE0MzE3NzVmOTNhNjg2
ZTU1NjU5YTkzMmNlZDdkMWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0yNjM4LDcgKzI2MzgsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJgogICAg
IHJldHVybiBtX3dlYktpdE1lZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlG
b3JLZXlJZChrZXlJZCkgOiBudWxscHRyOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewogICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlh
QVBJRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNjU1LDcgKzI2NTUsMTQgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRN
ZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVu
dCwgaW5pdERhdGEpOworICAgIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OkluaXQgaW5pdDsK
KworICAgIGlmIChhdXRvIGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEudHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSkgeworICAgICAgICBhdXRvIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpOworICAgICAgICBpbml0LmluaXREYXRhID0gVWludDhBcnJheTo6dHJ5Q3JlYXRl
KGluaXREYXRhQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ5dGVMZW5ndGgpOworICAgIH0K
KworICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdCk7CiAgICAgc2NoZWR1bGVFdmVudChX
VEZNb3ZlKGV2ZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
aW5kZXggYjVmZTEzODUzYzY5NDI3ODM3ZWYzZjkxZDJiZDI2MWMxOTNkYzRiYi4uMzI5ZTYzZWE1
NjJiNzkwNmQxNzNhOTYxNzljY2U3ODQ0MThjY2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBs
YXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFsOwot
ICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZv
aWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAg
U3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFs
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2Ft
cGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE4Mzk5
NzIyNjBmNzBlMDA3MzY3OTc5MTcyMjYyNWY1NmIyNTNmMDguLjJjMTE1YThjMjlkMjg0ZjZmY2Jm
OGIwMTY4ZTdmNGQ1NGE4NjYzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01lZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUu
aApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNb2NrU2FtcGxl
Qm94OwogCiBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewotICAgIGVudW0geworICAgIGVudW0gVHlw
ZSB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBD
TVNhbXBsZUJ1ZmZlclR5cGUsCkBAIC05MCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFz
U3luY0luZm8gPSAxIDw8IDMsCiAgICAgfTsKICAgICB2aXJ0dWFsIFNhbXBsZUZsYWdzIGZsYWdz
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1T
YW1wbGVUeXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSA9IDA7CiAKICAgICBzdHJ1Y3QgQnl0ZVJhbmdlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNv
Y29hLmNwcAppbmRleCA1MDYwMzIzODAzYjFhM2IxN2Y0NzM4NjZlYTk3YjNhODI5MGUyMDJjLi5i
NzAzY2ZlY2QzMTZjNjI3YzY5NGU2NGI4ZTY5NzYyMDY4NjdmN2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwCkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxl
UmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSk7Ci0gICAgcGFyc2VyLT5zZXREaWRQcm92
aWRlTWVkaWFEYXRhQ2FsbGJhY2soWyZdKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2
NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVN
ZWRpYURhdGFDYWxsYmFjayhbJl0oUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVp
bnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpIHsKICAgICAgICAgaWYgKCFhdWRpb1RyYWNr
SWQgfHwgdHJhY2tJRCAhPSAqYXVkaW9UcmFja0lkKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBzYW1wbGVzLmFwcGVuZChzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TWVkaWFTYW1wbGVBVkZP
YmpDPihXVEZNb3ZlKHNhbXBsZSkpKTsKKyAgICAgICAgc2FtcGxlcy5hcHBlbmQoV1RGTW92ZShz
YW1wbGUpKTsKICAgICB9KTsKICAgICBwYXJzZXItPnNldENhbGxPbkNsaWVudFRocmVhZENhbGxi
YWNrKFtdKGF1dG8mJiBmdW5jdGlvbikgewogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDUxYTli
M2EzNTRmMTE5YmUyOWY3NDExYTkzNDU3ODQ5OWE2ZGE3NmQuLmFjMzVlNzAwOTRiMjI1YzZjNDI3
NTEyOTE5MDE3Njg2MWVjOWUyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0MDEsNyArMTQwMSw3IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gTWVkaWFQbGF5ZXI6OmNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5
SWQpIGNvbnN0CiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5
SWQoa2V5SWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSog
aW5pdERhdGEpCit2b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKICAgICBjbGllbnQoKS5tZWRpYVBsYXllcktleU5lZWRlZChpbml0RGF0
YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAppbmRleCBlYmJhZDE2YTY1YWI1M2VhZmZjZmEyNjI3NmI4MmM5ZjZhN2Q2NWViLi4yZmNkNDJh
ZjBhYmJlNDIzYzFmZWY3OWFiZTgzOWNiOTVmZjljODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTg1LDYgKzg1LDcgQEAgY2xhc3Mg
TWVkaWFTdHJlYW1Qcml2YXRlOwogY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFzcyBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjsKIGNsYXNzIFZpZGVvVHJh
Y2tQcml2YXRlOwogCkBAIC0yMDUsNyArMjA2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1l
ZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgeyB9CisgICAg
dmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICNlbmRpZgogCkBAIC01NTcsNyAr
NTU4LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtl
eUlkKSBjb25zdDsKLSAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSk7Cisg
ICAgdm9pZCBrZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAgICAgU3Ry
aW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMuaAppbmRleCA1NmI1OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNj
ZjYyLi5kNTlmZTQ4MDRkNThkZmU3OGNiNWJlYTcwNzRiMmU2ODcwNWMxZDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLmgKQEAgLTMwLDcgKzMwLDkgQEAKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5o
IgogI2luY2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogT0JKQ19DTEFTUyBBVkNvbnRlbnRL
ZXlSZXBvcnRHcm91cDsKIE9CSkNfQ0xBU1MgQVZDb250ZW50S2V5UmVxdWVzdDsKQEAgLTExNyw2
ICsxMTksMTMgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29u
c3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNz
aW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CiAKKyAgICBib29sIGlz
QW55S2V5VXNhYmxlKGNvbnN0IEtleXMmKSBjb25zdDsKKworICAgIHVzaW5nIEtleVN0YXR1c2Vz
Q2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFkZEtleVN0YXR1
c2VzQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyJik7CisK
KyAgICB2b2lkIHNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5k
bGVVbmV4cGVjdGVkUmVxdWVzdHMoVmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0
Pj4mJik7CiAKQEAgLTEzNCw2ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VS
TD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CiAgICAgSGFzaFNldDxSZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4+IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzOworICAgIFdl
YWtIYXNoU2V0PEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyPiBtX2tleVN0YXR1c0NoYW5nZWRP
YnNlcnZlcnM7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPExvZ2dlcj4g
bV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpA
QCAtMTg2LDExICsxOTYsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNSZXF1ZXN0KEFWQ29u
dGVudEtleVJlcXVlc3QqKSBjb25zdDsKIAorICAgIGNvbnN0IEtleVN0YXR1c1ZlY3RvciYga2V5
U3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX2tleVN0YXR1c2VzOyB9CisgICAgS2V5U3RhdHVz
VmVjdG9yIGNvcHlLZXlTdGF0dXNlcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGJvb2wgZW5z
dXJlU2Vzc2lvbk9yR3JvdXAoKTsKICAgICBib29sIGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGlj
ZW5zZVR5cGUpIGNvbnN0OwogCi0gICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICB2
b2lkIHVwZGF0ZUtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0g
c3RkOjpudWxsb3B0KTsKICAgICB2b2lkIG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5
UmVxdWVzdCogbGFzdEtleVJlcXVlc3QoKSBjb25zdDsKIApAQCAtMjE2LDYgKzIyOSw3IEBAIHBy
aXZhdGU6CiAKICAgICBjbGFzcyBVcGRhdGVSZXNwb25zZUNvbGxlY3RvcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I+IG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0
b3I7CisgICAgS2V5U3RhdHVzVmVjdG9yIG1fa2V5U3RhdHVzZXM7CiAKICAgICBWZWN0b3I8UmVx
dWVzdD4gbV9wZW5kaW5nUmVxdWVzdHM7CiAgICAgVmVjdG9yPFJlcXVlc3Q+IG1fcmVxdWVzdHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGNmZTA0OGE5MzhjMDVkZjc0NWM3MTYzNTZh
ZDFiM2I5MGE1OWViNzguLmZkNjE1MmUxODY3ZDRlNmE2NzJiZWYxNzA3MGNhNzYyOTEyNmY0Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC02MTcsNiArNjE3LDM3IEBAIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMmIGtl
eXMpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uSW50ZXJmYWNlIDogbV9zZXNzaW9u
cykgeworICAgICAgICBpZiAoIXNlc3Npb25JbnRlcmZhY2UpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBmb3IgKGF1dG8mIGtleVN0YXR1c1BhaXIgOiBzZXNzaW9uSW50ZXJmYWNl
LT5rZXlTdGF0dXNlcygpKSB7CisgICAgICAgICAgICBpZiAoa2V5U3RhdHVzUGFpci5zZWNvbmQg
IT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OlVzYWJsZSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKGtleXMuZmluZElmKFsmXSAoYXV0byYga2V5
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleS5nZXQoKSA9PSBrZXlTdGF0dXNQYWlyLmZp
cnN0LmdldCgpOworICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0No
YW5nZWRPYnNlcnZlcihjb25zdCBLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIp
Cit7CisgICAgbV9rZXlTdGF0dXNDaGFuZ2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisK
K3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25LZXlTdGF0
dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDJikKK3sKKyAgICBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZlcnMuZm9yRWFjaChbXSAoYXV0
byYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgb2JzZXJ2ZXIoKTsKKyAgICB9KTsKK30KKwogQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDPiYmIGluc3RhbmNlKQogICAgIDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkK
ICAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCkBAIC0xMzA2LDEzICsxMzM3LDE1
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRG
YWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICpyZXF1ZXN0KQogeworICAgIHVwZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV91
cGRhdGVSZXNwb25zZUNvbGxlY3RvcikgewogICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVj
dG9yLT5hZGRTdWNjZXNzZnVsUmVzcG9uc2UocmVxdWVzdCwgbnVsbHB0cik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAobV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spIHsKLSAgICAg
ICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChrZXlT
dGF0dXNlcygpKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAg
ICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9uYWwoY29w
eUtleVN0YXR1c2VzKCkpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsK
ICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogCkBAIC0x
NDA1LDcgKzE0MzgsNyBAQCBzdGF0aWMgYXV0byByZXF1ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZD
b250ZW50S2V5UmVxdWVzdFN0YXR1cyBzdGF0dXMpCiAgICAgfQogfQogCi1DRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3RvciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRp
c3BsYXlJRCkgY29uc3QKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVLZXlTdGF0dXNlcyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlE
PiBkaXNwbGF5SUQpCiB7CiAgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOwogCkBAIC0x
NDI3LDcgKzE0NjAsMTkgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjoKICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiBrZXlTdGF0dXNlczsKKyAgICBtX2tleVN0YXR1c2VzLnN3YXAoa2V5
U3RhdHVzZXMpOworCisgICAgbV9pbnN0YW5jZS0+c2Vzc2lvbktleVN0YXR1c2VzQ2hhbmdlZCgq
dGhpcyk7Cit9CisKK2F1dG8gQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpjb3B5S2V5U3RhdHVzZXMoKSBjb25zdCAtPiBLZXlTdGF0dXNWZWN0b3IKK3sKKyAgICBL
ZXlTdGF0dXNWZWN0b3IgY29waWVkS2V5U3RhdHVzZXM7CisgICAgY29waWVkS2V5U3RhdHVzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2tleVN0YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChh
dXRvJiBzdGF0dXMgOiBtX2tleVN0YXR1c2VzKQorICAgICAgICBjb3BpZWRLZXlTdGF0dXNlcy51
bmNoZWNrZWRBcHBlbmQoeyBzdGF0dXMuZmlyc3QuY29weVJlZigpLCBzdGF0dXMuc2Vjb25kIH0p
OworICAgIHJldHVybiBjb3BpZWRLZXlTdGF0dXNlczsKKwogfQogCiB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3Vm
ZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCBvYnNjdXJlZCkKQEAgLTE0Mzgs
OCArMTQ4MywxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudAogICAgIEFMV0FZU19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgb2JzY3VyZWQpOwogICAgIG1fb3V0cHV0T2JzY3VyZWQg
PSBvYnNjdXJlZDsKIAorICAgIHVwZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcygpKTsK
KyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKGNvcHlLZXlTdGF0dXNlcygpKTsK
IH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4
dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29u
dGVudEtleVJlcXVlc3QqKQpAQCAtMTQ5Miw5ICsxNTM5LDEzIEBAIHN0ZDo6b3B0aW9uYWw8Q0RN
S2V5U3RhdHVzPiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnBy
b3RlY3RpCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVQcm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCkKIHsKLSAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQor
ICAgIGlmIChtX3JlcXVlc3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xp
ZW50LT51cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcyhkaXNwbGF5SUQpKTsKKworICAgIHVw
ZGF0ZUtleVN0YXR1c2VzKGRpc3BsYXlJRCk7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhjb3B5S2V5U3RhdHVzZXMoKSk7CiB9CiAKIGJv
b2wgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjplbnN1cmVTZXNz
aW9uT3JHcm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24uaAppbmRleCA3MTlhMTFmZTIyOWJlZjBkNDNjOWMzZWZkNWQ5
MDIwODBlNzZjN2YwLi45MGQyNzNkMDc5NjFmYzk4NmZiN2M0NTZmZjczMzYyYzE0ZWM1ZDU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxX
ZWJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2NvbnRlbnRLZXlTZXNz
aW9uRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1fa2V5UmVx
dWVzdDsKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pZGVudGlmaWVyOwotICAgIFJlZlB0cjxV
aW50OEFycmF5PiBtX2luaXREYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1faW5pdERh
dGE7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gbV9leHBpcmVkU2Vzc2lvbjsKICAgICBWZWN0b3I8
aW50PiBtX3Byb3RvY29sVmVyc2lvbnM7CiAgICAgaW50IG1fY2RtVmVyc2lvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
bW0KaW5kZXggN2VjNTc3NDI2MTBjMzg0YmU2ZGRkYzU4NzRmZjM5NWU1YjVmMmVkYy4uNzJhMDk1
MzA5Yzg0NWJkY2NmZGU3MDdiZTRiNzA3MGM1ZDUxZWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTMy
LDYgKzMyLDcgQEAKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9y
dCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9y
RXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgpAQCAtMTUxLDcgKzE1
Miw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluCiAgICAgaWYgKG1fY2RtVmVyc2lvbiA9PSAy
KQogICAgICAgICBtX2lkZW50aWZpZXIgPSBpbml0RGF0YTsKICAgICBlbHNlCi0gICAgICAgIG1f
aW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICAgICAgbV9pbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5sZW5ndGgoKSk7CiAKICAgICBBU1NF
UlQoIW1fY2VydGlmaWNhdGUpOwogICAgIFN0cmluZyBjZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlm
aWNhdGUiX3MpOwpAQCAtMjczLDEyICsyNzQsMTIgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+Jgog
ICAgIH0KIAogICAgIGlmICghbV9rZXlSZXF1ZXN0KSB7Ci0gICAgICAgIE5TRGF0YSogbnNJbml0
RGF0YSA9IG1faW5pdERhdGEgPyBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bV9pbml0RGF0YS0+ZGF0
YSgpIGxlbmd0aDptX2luaXREYXRhLT5sZW5ndGgoKV0gOiBuaWw7CisgICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IG5zSW5pdERhdGEgPSBtX2luaXREYXRhID8gbV9pbml0RGF0YS0+Y3JlYXRlTlNE
YXRhKCkgOiBuaWw7CiAgICAgICAgIE5TRGF0YSogbnNJZGVudGlmaWVyID0gbV9pZGVudGlmaWVy
ID8gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOm1faWRlbnRpZmllci0+ZGF0YSgpIGxlbmd0aDptX2lk
ZW50aWZpZXItPmxlbmd0aCgpXSA6IG5pbDsKICAgICAgICAgaWYgKFtjb250ZW50S2V5U2Vzc2lv
bigpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0
V2l0aElkZW50aWZpZXI6aW5pdGlhbGl6YXRpb25EYXRhOm9wdGlvbnM6KV0pCi0gICAgICAgICAg
ICBbY29udGVudEtleVNlc3Npb24oKSBwcm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRp
Zmllcjpuc0lkZW50aWZpZXIgaW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpu
aWxdOworICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXF1ZXN0V2l0aElkZW50aWZpZXI6bnNJZGVudGlmaWVyIGluaXRpYWxpemF0aW9uRGF0YTpuc0lu
aXREYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW2Nv
bnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxdOworICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNz
aW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERh
dGEuZ2V0KCkgb3B0aW9uczpuaWxdOwogICAgIH0KIAogICAgIGlmIChzaG91bGRHZW5lcmF0ZUtl
eVJlcXVlc3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDdhYjg5MTFmMDRlOGY3ZWYy
NDUxMDhiNzU3MDc5NDU2N2U0ZWMzZWYuLjJmNjVhNTc5NmUzNzNhY2FmZTMzMWVlYmU3N2UwZWM0
Njg4NmU5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjAxNiw4ICsyMDE2LDggQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQx
NkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3Ro
KCkpOwogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVbmlDaGFyKj4oU3RyaW5nVmlldyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdl
dCgpKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAg
ICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFC
dWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0
RGF0YS5wdHIoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShWZWN0b3I8dWludDhfdD4geyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oaW5pdERhdGFCdWZmZXIt
PmRhdGEoKSksIGJ5dGVMZW5ndGggfSk7CisgICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5p
dERhdGEpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIGlmICghcGxheWVy
KCktPnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMjA0NSw5ICsyMDQ1LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICBp
ZiAoc2NoZW1lID09ICJjbGVhcmtleSIpIHsKICAgICAgICAgU3RyaW5nIGtleUlEID0gW1tbYXZS
ZXF1ZXN0IHJlcXVlc3RdIFVSTF0gcmVzb3VyY2VTcGVjaWZpZXJdOwogICAgICAgICBhdXRvIGVu
Y29kZWRLZXlJZCA9IFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKGtleUlELCBQQUw6OlVuZW5j
b2RhYmxlSGFuZGxpbmc6OlVSTEVuY29kZWRFbnRpdGllcyk7Ci0KLSAgICAgICAgYXV0byBpbml0
RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShlbmNvZGVkS2V5SWQuc2l6ZSgpKTsKLSAgICAgICAg
aW5pdERhdGEtPnNldFJhbmdlKGVuY29kZWRLZXlJZC5kYXRhKCksIGVuY29kZWRLZXlJZC5zaXpl
KCksIDApOworICAgICAgICBhdXRvIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShlbmNvZGVkS2V5SWQpKTsKIAogICAgICAgICBhdXRvIGtleURhdGEgPSBwbGF5ZXIoKS0+
Y2FjaGVkS2V5Rm9yS2V5SWQoa2V5SUQpOwogICAgICAgICBpZiAoa2V5RGF0YSkgewpAQCAtMjA1
NSw3ICsyMDUzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERh
dGEucHRyKCkpOworICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhKTsKIAogICAg
ICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGJjYWQx
MjU0MzYzYTE4N2M2OGEzMzY4ZmE3YTdhMTQ4NTE1YjgyZTUuLjI5ODNjZWNhZGVhMjJlM2YyNTVi
MDc5Yzk2YTJmNzg5MWNkM2EzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0xMzcs
NyArMTM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCkgb3Zl
cnJpZGUgeyBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9u
Q2hhbmdlZChmYWxzZSk7IH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8
fCBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkq
KTsKKyAgICB2b2lkIGtleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRl
eCBlOTVmOGMzY2FjZjBhZGUxODExZjExYmFlNjgzYmU0YjVmYjE1NTMzLi4xYzMzMjcyNTQ2YjRl
ZjhiNzk3ODhkOTA1MjdhNTBlNTRkNmQ0OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CkBAIC0xMTQzLDcgKzExNDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaQogI2VuZGlmIC8v
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRh
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmtleU5lZWRlZChj
b25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIG1fcGxheWVyLT5rZXlOZWVkZWQo
aW5pdERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
aAppbmRleCA5MDA3ZGNjYTlkZWUxMGVlYmMzYjMxZDYzMzgwNjBkN2U5MjM3MDU2Li43ZWMxMGMx
NDA0NzRiNmIxMDAwOTdjOWFmNWFlOTNiNGE4ODIwZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvVHlwZUNhc3RzLmg+CiAKIHVzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19D
VkJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMg
OiBwdWJsaWMgTWVkaWFTYW1wbGUgewpAQCAtNjEsNiArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBT
YW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBs
YXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZv
cm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6OkNN
U2FtcGxlQnVmZmVyVHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFu
Z2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25z
dCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTgwLDYgKzgzLDEzIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0Qnl0ZVJhbmdlT2Zmc2V0KHNpemVfdCk7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgdXNpbmcgS2V5SURzID0g
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdm9pZCBzZXRLZXlJRHMo
S2V5SURzJiYga2V5SURzKSB7IG1fa2V5SURzID0gV1RGTW92ZShrZXlJRHMpOyB9CisgICAgY29u
c3QgS2V5SURzJiBrZXlJRHMoKSBjb25zdCB7IHJldHVybiBtX2tleUlEczsgfQorICAgIEtleUlE
cyYga2V5SURzKCkgeyByZXR1cm4gbV9rZXlJRHM7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2Ft
cGxlQnVmZmVyUmVmKTsKQEAgLTk0LDYgKzEwNCwyOCBAQCBwcm90ZWN0ZWQ6CiAgICAgQXRvbVN0
cmluZyBtX2lkOwogICAgIFZpZGVvUm90YXRpb24gbV9yb3RhdGlvbiB7IFZpZGVvUm90YXRpb246
Ok5vbmUgfTsKICAgICBib29sIG1fbWlycm9yZWQgeyBmYWxzZSB9OworCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3Vt
ZW50PFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQz4geworICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDJiBzYW1wbGUpCisgICAgewor
ICAgICAgICByZXR1cm4gc2FtcGxlLnRvSlNPTlN0cmluZygpOworICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlQVZGT2JqQykKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRp
YVNhbXBsZSYgc2FtcGxlKSB7IHJldHVybiBzYW1wbGUucGxhdGZvcm1TYW1wbGVUeXBlKCkgPT0g
V2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKaW5kZXggNzIyNDk3ZTBiYzQyMGNkNGU2MmIwNjI0OTIz
YmZkOGY5ZDU0MDYyMi4uODk1MWIyNDdkZDAwMTUwZWQxNmNlMDQxYWNjZWNiYmZjYmVkNWY4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqLCBi
b29sIGFjdGl2ZSk7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyopOwogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIHZvaWQgc291cmNlQnVmZmVyS2V5TmVlZGVk
KFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiwgVWludDhBcnJheSopOworICAgIHZvaWQgc291
cmNlQnVmZmVyS2V5TmVlZGVkKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiwgY29uc3QgU2hh
cmVkQnVmZmVyJik7CiAjZW5kaWYKICAgICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VC
dWZmZXJQcml2YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDkyN2QxMzAzMTFlOGVlYzhiMDIxNTZhYzYzMjgw
YTliZjlkMDgwOGMuLjEyMDFiNzI2YmQwNDdjNWYxMTBmNzE0YWIxMDIzMTlhNjE2MjJjYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qy5tbQpAQCAtMTk1LDkgKzE5NSwxMCBAQCB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VCdQogfQogCiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
QyogYnVmZmVyLCBVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQzo6c291cmNlQnVmZmVyS2V5TmVlZGVkKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgbV9zb3VyY2VC
dWZmZXJzTmVlZGluZ1Nlc3Npb25zLmFwcGVuZChidWZmZXIpOworCiAgICAgaWYgKG1fcGxheWVy
KQogICAgICAgICBtX3BsYXllci0+a2V5TmVlZGVkKGluaXREYXRhKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAppbmRleCBjMjJl
NzI1Zjg1NDZmMjc4ZmY2NTdhNWY0YzU3MmI5Mjk1MTVlZDQ4Li43ODExMjA0Y2NmZDFkODFiMTUw
OTJiNTc1YTgyOTgwZDYyYzJmMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQsIENN
U2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3Mp
OwogICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCk7CiAgICAgdm9pZCBkaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSosIHVpbnQ2NF90
IHRyYWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3BlY2lmaWVy
Rm9yVHJhY2tJRChOU0RhdGEqLCB1aW50NjRfdCB0cmFja0lEKTsKIAogcHJpdmF0ZToKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGFiZDgxZTVmM2MxZWE1MGU0MjJlMmZhM2My
YmExZDE4Y2ZlMzFhZTIuLmFhMTU4NDA0YjEwZTQ0NGFmNmU1ZWRkYzhkYWQ2YmE5NmVkNWNiMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbQpAQCAtNTcsNiArNTcsMTIgQEAKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsg
V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIKIAorI2lmIEhBVkUoQVZDT05URU5US0VZU1BF
Q0lGSUVSKQorQGludGVyZmFjZSBBVkNvbnRlbnRLZXlTcGVjaWZpZXIgKFdlYkNvcmVQcml2YXRl
KQorQHByb3BlcnR5IChyZWFkb25seSkgTlNEYXRhICppbml0aWFsaXphdGlvbkRhdGE7CitAZW5k
CisjZW5kaWYKKwogQGludGVyZmFjZSBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciA6IE5T
T2JqZWN0PEFWU3RyZWFtRGF0YVBhcnNlck91dHB1dEhhbmRsaW5nPiB7CiAgICAgV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyogX3BhcmVudDsKICAgICBBVlN0cmVhbURhdGFQYXJz
ZXIqIF9wYXJzZXI7CkBAIC0xMzMsNiArMTM5LDE2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFt
RGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKICAgICBfcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGluaXREYXRhLCB0cmFja0lEKTsK
IH0KKworI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorLSAodm9pZClzdHJlYW1EYXRh
UGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVD
b250ZW50S2V5U3BlY2lmaWVyOihBVkNvbnRlbnRLZXlTcGVjaWZpZXIgKilrZXlTcGVjaWZpZXIg
Zm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECit7CisgICAgQVNTRVJUX1VO
VVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAg
IGlmIChba2V5U3BlY2lmaWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5pdGlhbGl6
YXRpb25EYXRhKV0pCisgICAgICAgIF9wYXJlbnQtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dFNwZWNpZmllckZvclRyYWNrSUQoa2V5U3BlY2lmaWVyLmluaXRpYWxpemF0aW9uRGF0YSwgdHJh
Y2tJRCk7Cit9CisjZW5kaWYKKwogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMzQs
MTAgKzM1MCwxNCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OndpbGxQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogCiB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQoTlNEYXRhKiBuc0luaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKQogewot
ICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUobnNJbml0RGF0YS5sZW5ndGgp
OwotICAgIFtuc0luaXREYXRhIGdldEJ5dGVzOmluaXREYXRhLT5kYXRhKCkgbGVuZ3RoOmluaXRE
YXRhLT5sZW5ndGgoKV07CisgICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNJbml0
RGF0YSksIHRyYWNrSUQpOworfQogCi0gICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soV1RGTW92ZShpbml0RGF0YSksIHRy
YWNrSUQpOwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RTcGVjaWZpZXJGb3JUcmFja0lEKE5TRGF0YSogbnNJbml0RGF0YSwgdWludDY0
X3QgdHJhY2tJRCkKK3sKKyAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBz
dHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfSwgbnNJbml0RGF0YSA9IHJldGFpblB0cihuc0luaXRE
YXRhKSwgdHJhY2tJRF0geworICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElk
ZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNJbml0RGF0
YS5nZXQoKSksIHRyYWNrSUQpOworICAgIH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA3NTRiMWUyZWVj
MDJkZjMzOTVlNWNkYjVjMDdmOGU4OGE5MzVjZDA4Li4zNzZhNmZjMTQzODExZWViODU2N2JjYjA4
ZTdkZGQzYjFmZjEzY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYv
TG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtOTUsNyArOTYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck1lZGlhU291
cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsgfQogCiAgICAgdm9pZCB3aWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0
cmFja0lEKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIEJv
eDxCaW5hcnlTZW1hcGhvcmU+KTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0
X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4pOworCisgICAgdm9pZCBkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRChSZWY8U2hhcmVkQnVmZmVyPiYm
LCB1aW50NjRfdCB0cmFja0lEKTsKIAogICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0
OwogCkBAIC0xMzIsNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgYnVmZmVyV2FzQ29uc3Vt
ZWQoKTsKICAgICAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBVaW50
OEFycmF5KiBpbml0RGF0YSgpIHsgcmV0dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KKyAgICBTaGFy
ZWRCdWZmZXIqIGluaXREYXRhKCkgeyByZXR1cm4gbV9pbml0RGF0YS5nZXQoKTsgfQogI2VuZGlm
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE1MCw3ICsxNTMsNyBAQCBwcml2YXRl
OgogICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKICAgICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsKICAgICB2b2lkIGRpZEVuY291bnRl
ckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90KTsKLSAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURh
dGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUpOworICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNr
SWQoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3Ry
aW5nJiBtZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMK
ICAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKQEAgLTE3NCw2ICsx
NzcsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lk
IGVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QgdHJhY2tJ
RCk7CiAgICAgdm9pZCBkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKHVpbnQ2NF90IHRyYWNr
SUQpOwogICAgIHZvaWQgYXBwZW5kQ29tcGxldGVkKCk7CiAgICAgdm9pZCBkZXN0cm95U3RyZWFt
RGF0YVBhcnNlcigpOwpAQCAtMTg2LDYgKzE5MCwxMiBAQCBwcml2YXRlOgogICAgIEFMTE9XX05F
V19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAKICAgICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMqIHBsYXllcigpIGNvbnN0OworICAgIGJvb2wgY2FuRW5xdWV1ZVNhbXBsZSh1
aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVNhbXBsZUFWRk9iakMmKTsKKyAgICBib29sIHRy
YWNrSXNCbG9ja2VkKHVpbnQ2NF90IHRyYWNrKSBjb25zdDsKKworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICB2b2lkIGtleVN0YXR1
c2VzQ2hhbmdlZCgpOworI2VuZGlmCiAKICAgICBWZWN0b3I8UmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlPj4gbV92aWRlb1RyYWNrczsKICAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRl
Pj4gbV9hdWRpb1RyYWNrczsKQEAgLTE5Nyw3ICsyMDcsOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9wcm9jZXNzaW5nSW5pdGlhbGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzUGVuZGluZ0FwcGVuZENvbXBsZXRlZENhbGxiYWNrIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5kaW5nVHJhY2tDaGFuZ2VDYWxsYmFja3M7Ci0gICAgVmVj
dG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlPj4+IG1fbWVkaWFTYW1wbGVz
OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+
Pj4gbV9tZWRpYVNhbXBsZXM7CisgICAgRGVxdWU8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVk
aWFTYW1wbGVBVkZPYmpDPj4+IG1fYmxvY2tlZFNhbXBsZXM7CiAKICAgICBSZXRhaW5QdHI8QVZT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fZGlzcGxheUxheWVyOwogICAgIEFMTE9XX05FV19B
UElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KQEAgLTIxNSwxMyArMjI2LDI3IEBAIHByaXZhdGU6CiAK
ICAgICBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBtX21lZGlhU291cmNlOwogICAgIGJvb2wg
bV9pc0FjdGl2ZSB7IGZhbHNlIH07CisKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKLSAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2luaXREYXRhOwogICAgIFdlYWtQdHI8Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQz4gbV9zZXNzaW9uIHsgbnVsbHB0ciB9OwogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIHVzaW5nIEtleUlEcyA9
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OworICAgIHN0cnVjdCBUcmFja0lu
aXREYXRhIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGE7CisgICAgICAg
IEtleUlEcyBrZXlJRHM7CisgICAgfTsKKyAgICB1c2luZyBUcmFja0luaXREYXRhTWFwID0gSGFz
aE1hcDx1aW50NjRfdCwgVHJhY2tJbml0RGF0YT47CisgICAgVHJhY2tJbml0RGF0YU1hcCBtX3Bl
bmRpbmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwOworICAgIFRyYWNrSW5pdERhdGFNYXAgbV9w
cm90ZWN0ZWRUcmFja0luaXREYXRhTWFwOworCisgICAgdXNpbmcgVHJhY2tLZXlJRHNNYXAgPSBI
YXNoTWFwPHVpbnQ2NF90LCBLZXlJRHM+OworICAgIFRyYWNrS2V5SURzTWFwIG1fY3VycmVudFRy
YWNrSURzOworCiAgICAgUmVmUHRyPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
PiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IG1fa2V5SURzOworICAgIFVuaXF1ZVJlZjxPYnNlcnZlcjx2b2lkKCk+PiBtX2tleVN0YXR1c2Vz
Q2hhbmdlZE9ic2VydmVyOworICAgIEtleUlEcyBtX2tleUlEczsKICNlbmRpZgogCiAgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTYxYTNhN2Zj
Yzk2Mzc5OGY2ODk4YzAxMjdiZDc0YmIzMzBiZjdhMS4uYzk2NzZkMmY0YjY5MTg3ZjYwZWIwYzgx
ZGRkYWZjMzU5OGFjMDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTc2LDYgKzc2LDEyIEBAIC0gKHZvaWQpZXhw
ZWN0TWluaW11bVVwY29taW5nU2FtcGxlQnVmZmVyUHJlc2VudGF0aW9uVGltZTogKENNVGltZSlt
aW5pbXVtVXBjb21pCiAtICh2b2lkKXJlc2V0VXBjb21pbmdTYW1wbGVCdWZmZXJQcmVzZW50YXRp
b25UaW1lRXhwZWN0YXRpb25zOwogQGVuZAogCitAaW50ZXJmYWNlIEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIChXZWJDb3JlU2FtcGxlQnVmZmVyS2V5U2Vzc2lvbikgPEFWQ29udGVudEtleVJl
Y2lwaWVudD4KK0BlbmQKKworQGludGVyZmFjZSBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIg
KFdlYkNvcmVTYW1wbGVCdWZmZXJLZXlTZXNzaW9uKSA8QVZDb250ZW50S2V5UmVjaXBpZW50Pgor
QGVuZAorCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIEFWU3RyZWFtU2Vzc2lvbgogCkBA
IC0yNzUsNiArMjgxLDI0IEBAIHN0YXRpYyB1aW50NjRfdCBuZXh0TWFwSUQoKQogICAgIHJldHVy
biArK21hcElEOwogfQogCitzdGF0aWMgYm9vbCBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0
S2V5U2Vzc2lvbigpCit7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHMgPSBmYWxzZTsKKyAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIFsmXSB7CisgICAgICAgIHN1cHBvcnRzID0gW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJB
dWRpb1JlbmRlcmVyQ2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKEFWQ29udGVu
dEtleVJlY2lwaWVudCldCisgICAgICAgICAgICAmJiBbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllckNsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRlbnRL
ZXlSZWNpcGllbnQpXTsKKyAgICB9KTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK3N0YXRp
YyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBjb3B5S2V5SURzKGNvbnN0IFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEcykKK3sKKyAgICByZXR1cm4g
a2V5SURzLm1hcChbXSAoYXV0byYga2V5SUQpIHsKKyAgICAgICAgcmV0dXJuIGtleUlELmNvcHlS
ZWYoKTsKKyAgICB9KTsKK30KKwogc3RhdGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFj
ayhDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9pZCogbGlzdGVuZXIsIENGU3RyaW5n
UmVmIG5vdGlmaWNhdGlvbk5hbWUsIGNvbnN0IHZvaWQqLCBDRlR5cGVSZWYpCiB7CiAgICAgaWYg
KCFDRkVxdWFsKFBBTDo6a0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVy
Q29uc3VtZWQsIG5vdGlmaWNhdGlvbk5hbWUpKQpAQCAtMzA3LDYgKzMzMSw5IEBAIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDCiAgICAgLCBtX2Vycm9yTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2Ft
cGxlQnVmZmVyRXJyb3JMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6KnRoaXNdKSkKICAg
ICAsIG1fYXBwZW5kUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDIGRhdGEgcGFyc2VyIHF1ZXVlIikpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVudCkK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04p
CisgICAgLCBtX2tleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyKG1ha2VVbmlxdWVSZWY8T2JzZXJ2
ZXI8dm9pZCgpPj4oW3RoaXNdIHsga2V5U3RhdHVzZXNDaGFuZ2VkKCk7IH0pKQorI2VuZGlmCiAg
ICAgLCBtX21hcElEKG5leHRNYXBJRCgpKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
ICwgbV9sb2dnZXIocGFyZW50LT5sb2dnZXIoKSkKQEAgLTM2NCw2ICszOTEsOSBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0
aWFsaXphdGlvblNlZ21lbgogCiAgICAgY2xlYXJUcmFja3MoKTsKIAorICAgIG1fcHJvdGVjdGVk
VHJhY2tJbml0RGF0YU1hcC5zd2FwKG1fcGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAp
OworICAgIG1fcGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuY2xlYXIoKTsKKwogICAg
IGZvciAoYXV0byB2aWRlb1RyYWNrSW5mbyA6IHNlZ21lbnQudmlkZW9UcmFja3MpIHsKICAgICAg
ICAgdmlkZW9UcmFja0luZm8udHJhY2stPnNldFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzXSAoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNr
LCBib29sIHNlbGVjdGVkKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNDU4LDEw
ICs0ODgsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVy
RXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QgY29kZSkKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQg
PSBmYWxzZTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlk
ZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50
NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNh
bXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlKQogewogICAgIFVOVVNFRF9QQVJBTShtZWRpYVR5cGUpOwogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIGF1
dG8gZmluZFJlc3VsdCA9IG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5maW5kKHRyYWNrSWQp
OworICAgIGlmIChmaW5kUmVzdWx0ICE9IG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5lbmQo
KSkKKyAgICAgICAgbWVkaWFTYW1wbGUtPnNldEtleUlEcyhjb3B5S2V5SURzKGZpbmRSZXN1bHQt
PnZhbHVlLmtleUlEcykpOworI2VuZGlmCisKICAgICBpZiAobV9wcm9jZXNzaW5nSW5pdGlhbGl6
YXRpb25TZWdtZW50KSB7CiAgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNh
bXBsZS5nZXQoKSk7CiAgICAgICAgIG1fbWVkaWFTYW1wbGVzLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cih0cmFja0lkLCBXVEZNb3ZlKG1lZGlhU2FtcGxlKSkpOwpAQCAtNTA4LDcgKzU0NCw3IEBAIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGCiAjZW5kaWYKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCwg
Qm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSkKK3ZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgdWludDY0X3Qg
dHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSkKIHsKICAg
ICBhdXRvIHBsYXllciA9IHRoaXMtPnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpAQCAtNTE5
LDExICs1NTUsMTUgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KIAogICAgIG1fcHJvdGVjdGVk
VHJhY2tJRCA9IHRyYWNrSUQ7CiAgICAgbV9pbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpOwot
ICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJjZUJ1ZmZlcktleU5lZWRlZCh0aGlzLCBtX2luaXREYXRh
LmdldCgpKTsKKyAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywg
Km1faW5pdERhdGEpOworCiAgICAgaWYgKGF1dG8gc2Vzc2lvbiA9IHBsYXllci0+Y2RtU2Vzc2lv
bigpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIo
KSkKKyAgICAgICAgaWYgKHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkp
IHsKKyAgICAgICAgICAgIC8vIG5vLW9wLgorICAgICAgICB9IGVsc2UgaWYgKGF1dG8gcGFyc2Vy
ID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQogICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFy
c2VyKHBhcnNlcik7Ci0gICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOworICAg
ICAgICBpZiAoaGFzU2Vzc2lvblNlbWFwaG9yZSkKKyAgICAgICAgICAgIGhhc1Nlc3Npb25TZW1h
cGhvcmUtPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC01MzMs
MTQgKzU3MywxNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIG1faGFzU2Vzc2lvblNl
bWFwaG9yZSA9IGhhc1Nlc3Npb25TZW1hcGhvcmU7CiAgICAgCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQotICAgIGF1dG8gaW5pdERhdGFC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2luaXREYXRhLT5kYXRhKCksIG1faW5pdERh
dGEtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgYXV0byBrZXlJRHMgPSBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGluaXREYXRhQnVmZmVyKTsKKyAgICBhdXRvIGtl
eUlEcyA9IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoKm1f
aW5pdERhdGEpOwogICAgIGlmICgha2V5SURzKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3Bl
bmRpbmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwLnNldCh0cmFja0lELCBUcmFja0luaXREYXRh
IHsgbV9pbml0RGF0YS5jb3B5UmVmKCksICprZXlJRHMgfSk7CisKICAgICBpZiAobV9jZG1JbnN0
YW5jZSkgewogICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNl
LT5zZXNzaW9uRm9yS2V5SURzKGtleUlEcy52YWx1ZSgpKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQorICAgICAgICAgICAgaWYgKHNh
bXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBuby1vcC4KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5z
dHJlYW1EYXRhUGFyc2VyKCkpCiAgICAgICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29u
dGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgICAg
ICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgICAgICAgICAgbV9oYXNT
ZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKQEAgLTU1Miw3ICs1OTUsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGbwogICAgIH0KIAogICAgIG1fa2V5SURzID0gV1RGTW92ZShrZXlJRHMudmFs
dWUoKSk7Ci0gICAgcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCgic2luZiIs
IGluaXREYXRhQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKKyAgICBwbGF5ZXItPmlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKCJzaW5mIiwgbV9pbml0RGF0YS0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSk7CiAKICAgICBtX3dhaXRpbmdGb3JLZXkgPSB0cnVlOwogICAgIHBsYXll
ci0+d2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKQEAgLTU4Nyw3ICs2MzAsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQog
ICAgICAgICB3ZWFrVGhpcy0+ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGVycm9yQ29k
ZSk7CiAgICAgfSk7CiAKLSAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxi
YWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRD
YWxsZWRdIChSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSkgeworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFE
YXRhQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0Q2FsbGVkID0g
bV9hYm9ydENhbGxlZF0gKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRf
dCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgewogICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8IGFib3J0Q2FsbGVkICE9IHdl
YWtUaGlzLT5tX2Fib3J0Q2FsbGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjE2LDcgKzY1
OSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIG1fcGFyc2VyLT5zZXRE
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0U2VtYXBob3JlID0gbV9h
Ym9ydFNlbWFwaG9yZSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXShSZWY8VWludDhBcnJh
eT4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkgbXV0YWJsZSB7CisgICAgbV9wYXJzZXIt
PnNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SURDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRTZW1hcGhvcmUg
PSBtX2Fib3J0U2VtYXBob3JlLCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpIG11dGFibGUgewogICAgICAg
ICAvLyBDYWxsZWQgb24gdGhlIGRhdGEgcGFyc2VyIHF1ZXVlLgogICAgICAgICBCb3g8QmluYXJ5
U2VtYXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNy
ZWF0ZSgpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBhYm9ydENhbGxlZCwgaW5pdERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJ
RCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gKCkgbXV0YWJsZSB7CkBAIC02MzYsNiArNjc5LDEzIEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiAgICAgICAgIH0KICAgICB9KTsKIAorICAgIG1fcGFyc2VyLT5zZXREaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdIChSZWY8
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKSB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgYWJvcnRDYWxs
ZWQgIT0gd2Vha1RoaXMtPm1fYWJvcnRDYWxsZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lELCBudWxscHRyKTsKKyAgICB9
KTsKKwogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IHRydWU7CiAKICAgICBtX2FwcGVuZFF1ZXVl
LT5kaXNwYXRjaChbZGF0YSA9IFdURk1vdmUoZGF0YSksIHdlYWtUaGlzID0gbV9hcHBlbmRXZWFr
RmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcGFyc2VyID0gbV9wYXJzZXIsIGFib3J0Q2Fs
bGVkID0gbV9hYm9ydENhbGxlZF0oKSBtdXRhYmxlIHsKQEAgLTczNiw2ICs3ODYsMTEgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycygpCiAgICAgICAg
IFtyZW5kZXJlciBmbHVzaF07CiAgICAgICAgIFtyZW5kZXJlciBzdG9wUmVxdWVzdGluZ01lZGlh
RGF0YV07CiAgICAgICAgIFttX2Vycm9yTGlzdGVuZXIgc3RvcE9ic2VydmluZ1JlbmRlcmVyOnJl
bmRlcmVyLmdldCgpXTsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZD
T05URU5US0VZU0VTU0lPTikKKyAgICAgICAgaWYgKG1fY2RtSW5zdGFuY2UgJiYgc2FtcGxlQnVm
ZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSkKKyAgICAgICAgICAgIFttX2NkbUluc3Rh
bmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6cmVuZGVy
ZXIuZ2V0KCldOworI2VuZGlmCiAgICAgfQogCiAgICAgW21fZXJyb3JMaXN0ZW5lciBpbnZhbGlk
YXRlXTsKQEAgLTg0Myw2ICs4OTgsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaywKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2NkbUlu
c3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAg
ICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5
UmVjaXBpZW50OnJlbmRlcmVyLmdldCgpXTsKKyNlbmRpZgorCiAgICAgICAgICAgICBXZWFrUHRy
IHdlYWtUaGlzIHsgKnRoaXMgfTsKICAgICAgICAgICAgIFtyZW5kZXJlciByZXF1ZXN0TWVkaWFE
YXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6
XnsKICAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC05MDksNyArOTY5LDI0IEBAIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldENETUluc3RhbmNlKENETUluc3RhbmNl
KiBpbnN0YW5jZSkKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKKyAgICBpZiAo
c2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSAmJiBtX2NkbUluc3RhbmNl
KSB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlMYXllcikKKyAgICAgICAgICAgIFttX2NkbUluc3Rh
bmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9kaXNw
bGF5TGF5ZXIuZ2V0KCldOworCisgICAgICAgIGZvciAoYXV0byYgYXVkaW9SZW5kZXJlciA6IG1f
YXVkaW9SZW5kZXJlcnMudmFsdWVzKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29u
dGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50OmF1ZGlvUmVuZGVyZXIu
Z2V0KCldOworICAgIH0KKwogICAgIG1fY2RtSW5zdGFuY2UgPSBmcHNJbnN0YW5jZTsKKworICAg
IGlmIChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpICYmIG1fY2RtSW5z
dGFuY2UpIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUxheWVyKQorICAgICAgICAgICAgW21fY2Rt
SW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX2Rp
c3BsYXlMYXllci5nZXQoKV07CisKKyAgICAgICAgZm9yIChhdXRvJiBhdWRpb1JlbmRlcmVyIDog
bV9hdWRpb1JlbmRlcmVycy52YWx1ZXMoKSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5j
b250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6YXVkaW9SZW5kZXJlci5n
ZXQoKV07CisgICAgfQorCiAgICAgYXR0ZW1wdFRvRGVjcnlwdCgpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oaW5zdGFuY2UpOwpAQCAtOTI2LDggKzEwMDMsMTAgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdCgpCiAgICAgaWYgKCFpbnN0YW5jZVNl
c3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0
cmVhbURhdGFQYXJzZXIoKSkKLSAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNl
c3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CisgICAgaWYgKCFzYW1wbGVC
dWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKSB7CisgICAgICAgIGlmIChhdXRvIHBh
cnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKKyAgICAgICAgICAgIFtpbnN0YW5jZVNl
c3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJd
OworICAgIH0KICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgIG1faGFz
U2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9y
ZSA9IG51bGxwdHI7CkBAIC0xMTA1LDE5ICsxMTg0LDg4IEBAIEFMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfRU5ECiAgICAgICAgIHBsYXllci0+c2V0SGFzQXZhaWxhYmxlQXVkaW9TYW1wbGUo
cmVuZGVyZXIsIGZhbHNlKTsKIH0KIAorYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
dHJhY2tJc0Jsb2NrZWQodWludDY0X3QgdHJhY2tJRCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8m
IHNhbXBsZVBhaXIgOiBtX2Jsb2NrZWRTYW1wbGVzKSB7CisgICAgICAgIGlmIChzYW1wbGVQYWly
LmZpcnN0ID09IHRyYWNrSUQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShB
VkNPTlRFTlRLRVlTRVNTSU9OKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6a2V5
U3RhdHVzZXNDaGFuZ2VkKCkKK3sKKyAgICB3aGlsZSAoIW1fYmxvY2tlZFNhbXBsZXMuaXNFbXB0
eSgpKSB7CisgICAgICAgIGF1dG8mIGZpcnN0UGFpciA9IG1fYmxvY2tlZFNhbXBsZXMuZmlyc3Qo
KTsKKworICAgICAgICAvLyBJZiB3ZSBzdGlsbCBjYW4ndCBlbnF1ZXVlIHRoZSBzYW1wbGUsIGJh
aWwuCisgICAgICAgIGlmICghY2FuRW5xdWV1ZVNhbXBsZShmaXJzdFBhaXIuZmlyc3QsIGZpcnN0
UGFpci5zZWNvbmQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gZmlyc3RQ
YWlyVGFrZW4gPSBtX2Jsb2NrZWRTYW1wbGVzLnRha2VGaXJzdCgpOworICAgICAgICBlbnF1ZXVl
U2FtcGxlKFdURk1vdmUoZmlyc3RQYWlyVGFrZW4uc2Vjb25kKSwgZmlyc3RQYWlyVGFrZW4uZmly
c3QpOworICAgIH0KK30KKyNlbmRpZgorCitib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpjYW5FbnF1ZXVlU2FtcGxlKHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IE1lZGlhU2FtcGxlQVZG
T2JqQyYgc2FtcGxlKQoreworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZD
T05URU5US0VZU0VTU0lPTikKKyAgICAvLyBJZiBzYW1wbGUgYnVmZmVycyBkb24ndCBzdXBwb3J0
IEFWQ29udGVudEtleVNlc3Npb246IGVucXVldWUgc2FtcGxlCisgICAgaWYgKCFzYW1wbGVCdWZm
ZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIGlmIHNhbXBsZSBpcyB1bmVuY3J5dHBlZDogZW5xdWV1ZSBzYW1wbGUKKyAgICBpZiAo
c2FtcGxlLmtleUlEcygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAv
LyBpZiBzYW1wbGUgaXMgZW5jcnlwdGVkLCBidXQgd2UgYXJlIG5vdCBhdHRhY2hlZCB0byBhIENE
TTogZG8gbm90IGVucXVldWUgc2FtcGxlLgorICAgIGlmICghbV9jZG1JbnN0YW5jZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gaWYgc2FtcGxlIGlzIGVuY3J5cHRlZCwgYW5kIGtl
eUlEcyBtYXRjaCB0aGUgY3VycmVudCBzZXQgb2Yga2V5SURzOiBlbnF1ZXVlIHNhbXBsZS4KKyAg
ICBhdXRvIGZpbmRSZXN1bHQgPSBtX2N1cnJlbnRUcmFja0lEcy5maW5kKHRyYWNrSUQpOworICAg
IGlmIChmaW5kUmVzdWx0ICE9IG1fY3VycmVudFRyYWNrSURzLmVuZCgpICYmIGZpbmRSZXN1bHQt
PnZhbHVlID09IHNhbXBsZS5rZXlJRHMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAv
LyBpZiBzYW1wbGUncyBzZXQgb2Yga2V5SURzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IHNl
dCBvZiBrZXlJRHMsIGNvbnN1bHQgd2l0aCB0aGUgQ0RNCisgICAgLy8gdG8gZGV0ZXJtaW5lIGlm
IHRoZSBrZXlJRHMgYXJlIHVzYWJsZTsgaWYgc28sIHVwZGF0ZSB0aGUgY3VycmVudCBzZXQgb2Yg
a2V5SURzIGFuZCBlbnF1ZXVlIHNhbXBsZS4KKyAgICBpZiAobV9jZG1JbnN0YW5jZS0+aXNBbnlL
ZXlVc2FibGUoc2FtcGxlLmtleUlEcygpKSkgeworICAgICAgICBtX2N1cnJlbnRUcmFja0lEcy5z
ZXQodHJhY2tJRCwgc2FtcGxlLmtleUlEcygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30K
Kwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVk
aWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEU3RyaW5nKQogewog
ICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2
NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZV9vcigwKTsKICAgICBpZiAodHJhY2tJRCAhPSBtX2Vu
YWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlID0g
c2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOwotICAgIGlmIChwbGF0Zm9ybVNhbXBsZS50eXBlICE9
IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpCisgICAgaWYgKCFpczxNZWRpYVNh
bXBsZUFWRk9iakM+KHNhbXBsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZjxNZWRpYVNh
bXBsZUFWRk9iakM+IHNhbXBsZUFWRk9iakMgPSBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TWVkaWFT
YW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNhbXBsZSkpOworICAgIGlmICghc2FtcGxlQVZGT2JqQy0+
a2V5SURzKCkuaXNFbXB0eSgpICYmICFjYW5FbnF1ZXVlU2FtcGxlKHRyYWNrSUQsIHNhbXBsZUFW
Rk9iakMpKSB7CisgICAgICAgIG1fYmxvY2tlZFNhbXBsZXMuYXBwZW5kKHsgdHJhY2tJRCwgV1RG
TW92ZShzYW1wbGVBVkZPYmpDKSB9KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIGVu
cXVldWVTYW1wbGUoV1RGTW92ZShzYW1wbGVBVkZPYmpDKSwgdHJhY2tJRCk7Cit9CisKK3ZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxl
QVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQpCit7CiAgICAgYXV0byBsb2dTaXRl
SWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgREVCVUdfTE9HKGxvZ1NpdGVJZGVudGlm
aWVyLCAidHJhY2sgSUQgPSAiLCB0cmFja0lELCAiLCBzYW1wbGUgPSAiLCBzYW1wbGUuZ2V0KCkp
OwogCisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUgPSBzYW1wbGUtPnBsYXRmb3Jt
U2FtcGxlKCk7CisKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9u
ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKHBsYXRmb3JtU2FtcGxl
LnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcik7CiAgICAgQVNTRVJUKGZvcm1hdERlc2NyaXB0aW9uKTsK
ICAgICBpZiAoIWZvcm1hdERlc2NyaXB0aW9uKSB7CkBAIC0xMjg0LDYgKzE0MzIsOSBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVz
KHVpbnQ2NF90IHRyYWNrSUQpCiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
dHJhY2tJc0Jsb2NrZWQodHJhY2tJRCkpCisgICAgICAgIHJldHVybjsKKwogICAgIHByb3ZpZGVN
ZWRpYURhdGEoQXRvbVN0cmluZzo6bnVtYmVyKHRyYWNrSUQpKTsKIH0KIApAQCAtMTM3NSwxMSAr
MTUyNiwyMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRWaWRlb0xheWVy
KEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBsYXllcgogICAgICAgICBbbV9kaXNwbGF5TGF5
ZXIgZmx1c2hdOwogICAgICAgICBbbV9kaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURh
dGFdOwogICAgICAgICBbbV9lcnJvckxpc3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcjptX2Rpc3Bs
YXlMYXllci5nZXQoKV07CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFW
Q09OVEVOVEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1
ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0
YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1fZGlz
cGxheUxheWVyLmdldCgpXTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1fZGlzcGxheUxheWVyID0g
bGF5ZXI7CiAKICAgICBpZiAobV9kaXNwbGF5TGF5ZXIpIHsKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2NkbUlu
c3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAg
ICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5
UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgpXTsKKyNlbmRpZgorCiAgICAgICAgIFdlYWtQ
dHIgd2Vha1RoaXMgeyAqdGhpcyB9OwogICAgICAgICBbbV9kaXNwbGF5TGF5ZXIgcmVxdWVzdE1l
ZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Js
b2NrOl4gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApp
bmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li5mYzJiYWI5MDdk
OTgzNTNkMWY4YWFkNjk0ZjllNTUyYTRjMjlmZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBjbGFzcyBMb2dnZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbnRlbnRUeXBlOwotY2xhc3MgTWVkaWFTYW1wbGU7CitjbGFzcyBNZWRpYVNhbXBsZUFW
Rk9iakM7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJj
ZUJ1ZmZlclBhcnNlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQ
YXJzZXI+IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2ls
bCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHVzaW5nIERpZFByb3ZpZGVNZWRp
YURhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRf
dCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk+OworICAgIHVzaW5nIERpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpPjsKICAgICB2
b2lkIHNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhEaWRQcm92aWRlTWVkaWFEYXRhQ2Fs
bGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC0xMzcsMTIgKzEzNywxOSBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFy
c2VyIHRoZWFkLgotICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPFVpbnQ4QXJy
YXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAgICB1c2luZyBEaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKICAgICB2b2lkIHNl
dERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURD
YWxsYmFjayhEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fZGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayk7CiAgICAgfQogCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1h
aW4gdGhyZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZp
ZXJGb3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAgICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU291cmNl
QnVmZmVyUGFyc2VyKCk7CiAKQEAgLTE1Miw2ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRGlk
UHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrOwog
ICAgIFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2sgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRENhbGxiYWNrOwogICAgIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKKyAgICBEaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrIG1fZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjazsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMDVhODMxNmRjMjdlNjMw
MTdmMzk3ZjE5MjQ2OWI4MmEzM2I3YjAzNC4uYWUxNjQxNGYyMWM2ODQ2YzE4OTc3MDllMTQyNGU0
YTZhNGI3NjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTEwMzIs
NyArMTAzMiw3IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnko
Y29uc3QgRWxlbWVudE1ldGFkYXRhJiwgY29uc3QgVHJhY2tFCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgICAgIGF1dG8mIGtleUlkID0ga2V5SWRFbGVtZW50LnZhbHVlKCk7
Ci0gICAgICAgICAgICBtX2tleUlkcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tFbnRyeS50
cmFja191aWQudmFsdWUoKSwgVWludDhBcnJheTo6Y3JlYXRlKGtleUlkLmRhdGEoKSwga2V5SWQu
c2l6ZSgpKSkpOworICAgICAgICAgICAgbV9rZXlJZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHRy
YWNrRW50cnkudHJhY2tfdWlkLnZhbHVlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleUlkLmRh
dGEoKSwga2V5SWQuc2l6ZSgpKSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmgKaW5kZXggMjhlNzNmYmE1MDIzYzgxNmJmYjI0MmM1Zjk5MGRiOTdhMThi
YzFmZi4uZTg3NmFiNDE0YTRhYmIzM2Q1MThjMzdiNDFmZTVhMTQ3NzZhYjQ5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMjY5LDcgKzI2OSw3IEBAIHByaXZhdGU6CiAgICAg
d2VibTo6U3RhdHVzIE9uRnJhbWUoY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHdlYm06OlJl
YWRlciosIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZykgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5pdGlhbGl6YXRpb25TZWdtZW50PiBtX2luaXRpYWxpemF0aW9uU2VnbWVudDsKLSAg
ICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8VWludDhBcnJheT4+PiBtX2tleUlkczsK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8U2hhcmVkQnVmZmVyPj4+IG1fa2V5
SWRzOwogICAgIHdlYm06OlN0YXR1cyBtX3N0YXR1czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
bTo6V2VibVBhcnNlcj4gbV9wYXJzZXI7CiAgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVu
dEVuY291bnRlcmVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgK
aW5kZXggMWQ3MWEzMzk2OWNmYmM2NzVkZWVjZWE3OGU2NGYyZDY4OTllNDFlYi4uY2QwOWNjN2U1
MDJkYzQyNzdjMzI0Y2I0YmNkZTZmMjA5ZWM4YzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxl
R1N0cmVhbWVyLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIFJlZjxNZWRpYVNhbXBs
ZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBvdmVycmlkZTsKICAgICBTYW1wbGVG
bGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0
Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxl
VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9y
bVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxlVHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJh
bmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8
SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2ZWY1
N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJkNjViLi4wMDM5YjQyMDAyYTZmMDVkY2I3ZGFiZDU5M2Rm
YTg0ZDJiMmJkNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApA
QCAtNjIsNiArNjIsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7IH0KICAgICBTYW1wbGVGbGFncyBmbGFn
cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
b3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBl
OyB9CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25T
aXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA0
MmEzMjA2NTRiMDNkZjliNDM5Nzc3OTQyNTY0NTgyMDA2Y2RhMTEwLi43MTFjZWQwYmYxMzE0MjU5
MTc3NWZmZDc5M2FlNWE4NmM2YWUwY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OTgsMTEg
KzY5OCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1l
ZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwog
fQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVp
bnQ4QXJyYXkqIG1lc3NhZ2UpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxh
eWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKIHsKICAgICBJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZVJlZmVyZW5jZTsKLSAgICBpZiAobWVzc2FnZSkKLSAgICAgICAg
bWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5ieXRlTGVuZ3Ro
KCkgfTsKKyAgICBtZXNzYWdlUmVmZXJlbmNlID0geyBtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5z
aXplKCkgfTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyS2V5TmVlZGVkKFdURk1vdmUobWVzc2Fn
ZVJlZmVyZW5jZSkpLCBtX2lkKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMWZiZTFm
OTMzZDA5NTAwNmY0MmZkOWRjZmM2ZjJhNDQyYTc2NDA5My4uM2Q5ZTAyZTAxOGRkMTE2NDJiYjU2
YTMzZmJjZTk1OTgwNWE5NDNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0yNDcsNyArMjQ3LDcgQEAg
cHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkq
KSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmNwcAppbmRleCA3NzRjY2YzMWYyNjc3ZDBhMDUyMTc2NTFiM2I0ZTEzMjM1YzRjMjk0
Li5mODk1N2IzYjhlNDE4NjIzYjNiNTZjMDEyMTU3MDA1YmRjZjYyODk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIE1lZGlhRm9ybWF0
UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2UoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4m
JiBieXRlUwogICAgICAgICBkaWRQYXJzZVRyYWNrcyh7IH0sIGVycm9yQ29kZSk7CiAgICAgfSk7
CiAKLSAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBs
ZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBwYXJz
ZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUsIHVp
bnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIGRpZFBy
b3ZpZGVNZWRpYURhdGEoV1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7
CiAgICAgfSk7CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpk
aWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgog
ICAgIG1faW5pdCA9IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3Zp
ZGVNZWRpYURhdGEoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFj
a0lELCBjb25zdCBTdHJpbmcmKQordm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1l
ZGlhRGF0YShSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0
cmFja0lELCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAppbmRleCA2NTA5M2U5ZTQ2YjQwYjVhMzk3NmZk
ZWYyOWU2MTNjNjQ1MWYzMTVhLi4xNWQ1NTczNjMzODE3NDYwYzJlNjIwNDQxOTAxMDIzY2Y4NmI0
YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogREVD
TEFSRV9DT1JFX01FRElBX1RSQUlUUyhGb3JtYXRSZWFkZXIpOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakM7CiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXI7
CiB9CiAKQEAgLTY3LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBhcnNlVHJhY2tz
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVu
dCYmLCB1aW50NjRfdCBlcnJvckNvZGUpOwogICAgIHZvaWQgZGlkU2VsZWN0VmlkZW9UcmFjayhX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQogICAgIHZvaWQgZGlkRW5hYmxl
QXVkaW9UcmFjayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQotICAgIHZv
aWQgZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIHVpbnQ2
NF90LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPFdl
YkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgZmluaXNoUGFyc2luZyhSZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyPiYm
KTsKIAogICAgIC8vIENNQmFzZUNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5o
CmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3NmU5ZmIxZWY5NjJiNDA0OTdlM2RjMzEuLjI1NWMwN2Vh
NWFkNzg1MWVmZjhlNGVlNmY3ZTQ3YjM2MGU2MzY0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBs
ZUJ5dGVSYW5nZS5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmcg
dHJhY2tJRCgpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRm
b3JtU2FtcGxlKCkgZmluYWw7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxh
dGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1T
YW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5cGU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNC
eShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAppbmRleCAzM2RhOGFhMDZiNjE3Mjk3MzI3MDNlOTBhZWUwMjVjNGE3NjI2YmY5
Li41NjYwNmM0NzQwY2U5ZTk1NzU3NDIzYWU4NGI4MDVlMTE4MjExYzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCkBAIC0xMTkxLDcgKzExOTEsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKElQQzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCiB7CiAg
ICAgaWYgKFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKSkKLSAgICAgICAgcGxheWVyLT5r
ZXlOZWVkZWQoVWludDhBcnJheTo6Y3JlYXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUo
KSkucHRyKCkpOworICAgICAgICBwbGF5ZXItPmtleU5lZWRlZChTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtZXNzYWdlKSk7CiB9CiAjZW5kaWYKIAo=
</data>
<flag name="commit-queue"
          id="477824"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451174</attachid>
            <date>2022-02-07 16:44:14 -0800</date>
            <delta_ts>2022-02-07 18:53:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236109-20220207164413.patch</filename>
            <type>text/plain</type>
            <size>71879</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZkOWYyZmY4ZTVmM2E2OWU0Y2NhNjc3
MjRmZWY3MDA2MjAwYzAwNzMuLjEyMTEzZTRhNGI3Njc5YjczNjgxYjRlZWIxOWJlMGNlMjMzYWNj
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDItMDcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1IYXZlLmg6CisKIDIwMjItMDItMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBNYWtlIEJpdG1hcCBjb25zdGV4cHIgZnJpZW5kbHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZTBkODFkNjQxZTcyODUwNmUzZjA2MGU1YTA2MzJmYTdjMTk0ZDExLi5l
NTU3ZGEyNzRhOTNkNTU3MzYxYzZkODc0OGVlM2UwMzY3NjM2ZTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTI1IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNv
bnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IHNldCBv
ZiBkZWxlZ2F0ZSBjYWxsYmFjayBtZXRob2RzIGhhdmUgYSBzaWduaWZpY2FudCBzaG9ydGNvbWlu
ZzogY2xpZW50cyBtdXN0CisgICAgICAgIGF0dGFjaCBhbiBBVkNvbnRlbnRLZXlTZXNzaW9uIHRv
IHRoZSBBVlN0cmVhbURhdGFQYXJzZXIgYmVmb3JlIHJldHVybmluZyBmcm9tIHRoZQorICAgICAg
ICAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGE6Zm9yVHJhY2tJRDogY2FsbGJhY2suIFRoaXMKKyAgICAgICAgaXMgYmVjYXVzZSB0
aGUgcGFyc2VyIGl0c2VsZiBhdHRhY2hlcyB0aGUgb2JqZWN0IHJlcXVpcmVkIHRvIGRlY3J5cHQg
ZWFjaCBlbmNyeXB0ZWQgc2FtcGxlCisgICAgICAgIHRvIHRoZSBzYW1wbGUgaXRzZWxmIGF0IHRo
ZSBwYXJzaW5nIHN0YWdlLiBJZiBhIGNsaWVudCBkb2VzIG5vdCBhdHRhY2ggYW4KKyAgICAgICAg
QVZDb250ZW50S2V5U2Vzc2lvbiBieSB0aGUgdGltZSB0aGF0IG1ldGhvZCByZXR1cm5zLCBBVlN0
cmVhbURhdGFQYXJzZXIgd2lsbCBhdHRhY2ggb25lIG9mCisgICAgICAgIGl0cyBvd24uCisKKyAg
ICAgICAgVGhlIHdlYi1mYWNpbmcgYmVoYXZpb3IgdGhpcyBjYXVzZXMgaXMgdGhhdCBNU0UgYXBw
ZW5kcyB3aWxsIG5vdCBjb21wbGV0ZSAoYnkgZmlyaW5nCisgICAgICAgIGFuICJ1cGRhdGVlbmQi
IGV2ZW50KSBpZiBhbiBlbmNyeXB0ZWQgc2VnbWVudCBpcyBwYXJzZWQgdW50aWwgdGhlIGNsaWVu
dCBjcmVhdGVzIGFuZAorICAgICAgICBhdHRhY2hlcyBhIE1lZGlhS2V5cyBvYmplY3Qgd2l0aCBh
IHZhbGlkIHNlc3Npb24uCisKKyAgICAgICAgQSBuZXcgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9k
LCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFj
a0lEOgorICAgICAgICBhbGxvd3MgdXMgdG8gd29yayBhcm91bmQgdGhpcyBwcm9ibGVtLiBXaGVu
IHRoaXMgZGVsZWdhdGUgaXMgcHJlc2VudCwgQVZTdHJlYW1EYXRhUGFyc2VyCisgICAgICAgIHdp
bGwgc2tpcCBhdHRhY2hpbmcgYSBkZWNyeXB0aW9uIG9iamVjdCBlbnRpcmVseSwgbW92aW5nIHRo
YXQgcmVzcG9uc2liaWxpdHkgdG8gdGhlCisgICAgICAgIGNsaWVudC4gSG93ZXZlciwgdGhpcyBj
b21lcyB3aXRoIHRoZSByZXF1aXJlbWVudCB0aGF0IHRoZSBjbGllbnQgKFdlYktpdCkgd29uJ3Qg
ZW5xdWV1ZQorICAgICAgICBhbiBlbmNyeXB0ZWQgc2FtcGxlIGJlZm9yZSBhIGRlY3J5cHRpb24g
b2JqZWN0IGlzIGF2YWlsYWJsZSB2aWEgQVZDb250ZW50S2V5U2Vzc2lvbi4KKworICAgICAgICBJ
biBvcmRlciB0byBtZWV0IHRoaXMgbmV3IHJlcXVpcmVtZW50LCBXZWJLaXQgd2lsbCBhc3NvY2lh
dGUgdGhlIGtleSBJRHMgbmVjZXNzYXJ5IHRvCisgICAgICAgIGRlY3J5cHQgZWFjaCBzYW1wbGUg
aW4gdGhlIE1lZGlhU2FtcGxlIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBlbmNyeXB0ZWQgc2FtcGxl
LiBCZWNhdXNlIG5vdAorICAgICAgICBldmVyeSB0eXBlIG9mIE1lZGlhU2FtcGxlIHdpbGwgY2Fy
cnkga2V5IElEcywgdGhpcyBwcm9wZXJ0eSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgIE1lZGlh
U2FtcGxlQVZGT2JqQyBzdWJjbGFzcywgYW5kIHRoZXJlZm9yZSB3ZSBuZWVkIHRvIGJlIGFibGUg
dG8gc2FmZWx5IGRvd25jYXN0IGZyb20KKyAgICAgICAgTWVkaWFTYW1wbGUgdG8gTWVkaWFTYW1w
bGVBVkZPYmpDLiBNZWRpYVNhbXBsZSBzdWJjbGFzc2VzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGJ5
IHRoZQorICAgICAgICBQbGF0Zm9ybU1lZGlhU2FtcGxlIHR5cGUgYXZhaWxhYmxlIHRocm91Z2gg
dGhlaXIgcGxhdGZvcm1TYW1wbGUoKSBwcm9wZXJ0eSwgaG93ZXZlciB0aGlzCisgICAgICAgIGNh
bGwgaXMgbm90IGNvbnN0LCBhbmQgbWF5IG5vdCBiZSBmcmVlLCBhcyBpdCByZXR1cm5zIGEgbm9u
LVBPRCB0eXBlLiBTbworICAgICAgICBQbGF0Zm9ybU1lZGlhOjpUeXBlIHdhcyBtYWRlIGFuIGV4
cGxpY2l0IGVudW0gdHlwZSwgYW5kIGEgbmV3IHZpcnR1YWwgbWV0aG9kCisgICAgICAgIHBsYXRm
b3JtU2FtcGxlVHlwZSgpIHdhcyBhZGRlZCB0byBNZWRpYVNhbXBsZSAoYW5kIGltcGxlbWVudGVk
IGJ5IGFsbCBzdWJjbGFzc2VzKSwgYW5kIGEKKyAgICAgICAgdHlwZSBzcGVjaWFsaXphdGlvbiBt
YWNybyB3YXMgYWRkZWQgdG8gTWVkaWFTYW1wbGVBVkZPYmpDLgorCisgICAgICAgIEluIG9yZGVy
IHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBzYW1wbGUgaXMgY2FwYWJsZSBvZiBiZWluZyBlbnF1
ZXVlZCwgdGhlIENETUluc3RhbmNlCisgICAgICAgIG11c3QgYmUgcXVlcmllZCB0byBkZXRlcm1p
bmUgaWYgdGhlIHNhbXBsZSdzIHJlcXVpcmVkIGtleXMgYXJlIHVzYWJsZS4gRm9yCisgICAgICAg
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLCBpdCBoYXMgYW4gZXhpc3Rpbmcg
a2V5U3RhdHVzKCksIG1ldGhvZCwgYnV0IHRoYXQKKyAgICAgICAgbWV0aG9kIGlzIGFsc28gbm9u
LWNvbnN0LCBhbmQgbWF5IGJlIGV4cGVuc2l2ZS4gU28gYSBLZXlTdGF0dXNNYXAgaW5zdGFuY2Ug
dmFyaWFibGUKKyAgICAgICAgaGFzIGJlZW4gYWRkZWQgdG8gY2FjaGUgdGhlIGtleSBzdGF0dXMg
Zm9yIGVhc2Ugb2YgcXVlcnlpbmcuIFRvIG5vdGlmeSBhbiBhcmJpdHJhcnkgbnVtYmVyCisgICAg
ICAgIG9mIGNsaWVudHMgd2hlbiB0aGUga2V5IHN0YXR1c2VzIGNoYW5nZSwgYW4gT2JzZXJ2ZXIg
aGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAgV2hlbiBhbiBlbmNyeXB0ZWQgc2FtcGxlIGlzIGVu
cXVldWVkLCBpZiB0aGlzIG5ldyBkZWxlZ2F0ZSBtZXRob2QgaXMgYXZhaWxhYmxlLCB0aGUKKyAg
ICAgICAgc291cmNlIGJ1ZmZlciB3aWxsIGNoZWNrIGlmIGEgQ0RNIGluc3RhbmNlIGlzIGF2YWls
YWJsZSwgYW5kIGlmIHNvLCB3aGV0aGVyIHRoZSBzYW1wbGUncworICAgICAgICBrZXlzIGFyZSB1
c2FibGUuIElmIGFueSBvZiB0aGVzZSBjaGVja3MgZmFpbCwgdGhlIHNhbXBsZSB3aWxsIGJlIHN0
b3JlZCBpbiBhIGxvY2FsIHF1ZXVlCisgICAgICAgIGFuZCBuZXcgZW5xdWV1ZXMgd2lsbCBiZSBi
bG9ja2VkLiBXaGVuIHRoZSBDRE0ncyBrZXlTdGF0dXMgb2JzZXJ2ZXIgaXMgdHJpZ2dlcmVkLCB0
aGUKKyAgICAgICAgbG9jYWwgcXVldWUgd2lsbCBiZSBwcm9jZXNzZWQsIGFuZCBhbGwgc2FtcGxl
cyB3aXRoIHVzYWJsZSBrZXkgSURzIHdpbGwgYmUgZW5xdWV1ZWQuCisKKyAgICAgICAgRHJpdmUt
YnkgZml4OiBVc2UgU2hhcmVkQnVmZmVyIHJhdGhlciB0aGFuIFVpbnQ4QXJyYXksIGFzIHRoZSBm
b3JtZXIgaXMgbGlnaHRlciB3ZWlnaHQKKyAgICAgICAgYW5kIGNhbiBiZSBtb3JlIGVhc2lseSBj
b252ZXJ0ZWQgdG8gYW5kIGZyb20gYSBOU0RhdGEuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9G
aWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmlzQW55S2V5VXNhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vz
c2lvbktleVN0YXR1c2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpv
dXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZVByb3RlY3Rpb25TdGF0dXNGb3JEaXNwbGF5SUQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTdGF0
dXNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjprZXlOZWVkZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRLZXlJRHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMpOgorICAgICAgICAoV1RGOjpM
b2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+Ojp0b1N0cmluZyk6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAg
KC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92
aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JU
cmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6c2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29weUtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldENETUluc3RhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0lz
QmxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6a2V5U3RhdHVzZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpjYW5FbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1w
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRW
aWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorCiAyMDIyLTAyLTA3ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgRG9jdW1lbnRU
aW1lbGluZTo6cnVubmluZ0FuaW1hdGlvbnNGb3JSZW5kZXJlckFyZUFsbEFjY2VsZXJhdGVkKCkg
dG8gU3R5bGVhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY3NmFhODUwNDZmMWZiMjVhMzU0ZDAxMmZjNzhlOGRl
NDU2YWE3MTkuLmZhZDZjYmE4OTM3ZGYxZTI3MWY2M2Q4MjExZWQzODkxYjNmNTEyN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDItMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQ
cm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBu
ZXdseSByZXF1cmllZCB2aXJ0dWFsIG1ldGhvZCBjaGFuZ2VzIHRvIE1lZGlhU2FtcGxlIHN1YmNs
YXNzZXMsIGFuZCB1c2UKKyAgICAgICAgU2hhcmVkQnVmZmVyIHJhdGhlciB0aGFuIFVpbnQ4QXJy
YXkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
cktleU5lZWRlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpwYXJz
ZUJ5dGVTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJv
dmlkZU1lZGlhRGF0YSk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYUZvcm1hdFJlYWRlci5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKwogMjAyMi0wMi0wNyAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV1Bd
IEVuYWJsZSBzYW5kYm94IHN0YXRlIHJ1bGVzIGZvciBNYWNoIG1lc3NhZ2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDcyNDNlOTBkN2U3MGY5OTRkMzlmN2RjNDQyMjFlZmZhOGFlNzc4NGUuLjQ3
OTFiNWZiNmE2YmI3OWY4YmViZDU0ODAxZmNkOWNhZTFlMGY2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC0zODgsNiArMzg4LDEzIEBACiAjZGVmaW5lIEhBVkVfQVZDT05URU5US0VZU0VTU0lP
TiAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMTAzMDApIFwKKyAgICB8fCAoKChQTEFURk9STShJT1MpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNDA1MDApIFwKKyAgICB8fCAoUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiBfX1dB
VENIX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gNzA0MDApIFwKKyAgICB8fCAoUExBVEZPUk0o
QVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiBfX1RWX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNTAwKQorI2RlZmluZSBIQVZFX0FWQ09OVEVOVEtFWVNQ
RUNJRklFUiAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZpbmUgSEFWRV9TRUNfS0VZX1BST1hZIDEKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwKaW5kZXggZDYzNDg2YzVhOWM0ODk1
M2MzNGIyYTZkZDIzY2RhOTIzZjI4NDFjNy4uNWU2N2VkZjA2NmI2MDEzYjc4ZTRiNjlkYTY1MzA2
ZTFiYWQ0ZjAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsCkBAIC0zMCw3ICsz
MCw3IEBACiBdIGludGVyZmFjZSBXZWJLaXRNZWRpYUtleXMgewogICAgIGNvbnN0cnVjdG9yKERP
TVN0cmluZyBrZXlTeXN0ZW0pOwogCi0gICAgW0NhbGxXaXRoPUN1cnJlbnRTY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihET01TdHJpbmcg
dHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7CisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVu
dF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVp
bnQ4QXJyYXkgaW5pdERhdGEpOwogICAgIHN0YXRpYyBib29sZWFuIGlzVHlwZVN1cHBvcnRlZChE
T01TdHJpbmcga2V5U3lzdGVtLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZTVmYTJjYzdjMTJjOTYyZGY0NzhhZGViM2JlMjg4
MWM3OGI5NmYwOC4uZmFmZGE3NmE0MzE3NzVmOTNhNjg2ZTU1NjU5YTkzMmNlZDdkMWIyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjM4LDcgKzI2Mzgs
NyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2Fj
aGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtX3dlYktpdE1lZGlhS2V5
cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBudWxscHRy
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5l
ZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGlmICghZG9jdW1lbnQo
KS5zZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNjU1LDcgKzI2NTUsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEpOworICAgIFdlYktp
dE1lZGlhS2V5TmVlZGVkRXZlbnQ6OkluaXQgaW5pdDsKKworICAgIGlmIChhdXRvIGluaXREYXRh
QnVmZmVyID0gaW5pdERhdGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkgeworICAgICAgICBhdXRv
IGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBpbml0
LmluaXREYXRhID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRhQnVmZmVyLnJlbGVhc2VO
b25OdWxsKCksIDAsIGJ5dGVMZW5ndGgpOworICAgIH0KKworICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlF
dmVudCwgaW5pdCk7CiAgICAgc2NoZWR1bGVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYjVmZTEzODUzYzY5NDI3ODM3
ZWYzZjkxZDJiZDI2MWMxOTNkYzRiYi4uMzI5ZTYzZWE1NjJiNzkwNmQxNzNhOTYxNzljY2U3ODQ0
MThjY2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcwNiw3
ICs3MDYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNv
bnN0IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE4Mzk5NzIyNjBmNzBlMDA3MzY3OTc5MTcyMjYy
NWY1NmIyNTNmMDguLjJjMTE1YThjMjlkMjg0ZjZmY2JmOGIwMTY4ZTdmNGQ1NGE4NjYzYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNb2NrU2FtcGxlQm94OwogCiBzdHJ1Y3QgUGxhdGZvcm1T
YW1wbGUgewotICAgIGVudW0geworICAgIGVudW0gVHlwZSB7CiAgICAgICAgIE5vbmUsCiAgICAg
ICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUsCkBAIC05
MCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzU3luY0luZm8gPSAxIDw8IDMsCiAgICAg
fTsKICAgICB2aXJ0dWFsIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSA9IDA7CiAKICAgICBz
dHJ1Y3QgQnl0ZVJhbmdlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCA1MDYwMzIzODAz
YjFhM2IxN2Y0NzM4NjZlYTk3YjNhODI5MGUyMDJjLi5iNzAzY2ZlY2QzMTZjNjI3YzY5NGU2NGI4
ZTY5NzYyMDY4NjdmN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0yMDIsMTAgKzIw
MiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmls
ZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfSk7Ci0gICAgcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soWyZd
KFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmlu
ZyYpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbJl0oUmVm
PE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0
cmluZyYpIHsKICAgICAgICAgaWYgKCFhdWRpb1RyYWNrSWQgfHwgdHJhY2tJRCAhPSAqYXVkaW9U
cmFja0lkKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzYW1wbGVzLmFwcGVuZChzdGF0
aWNfcmVmZXJlbmNlX2Nhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNhbXBsZSkpKTsK
KyAgICAgICAgc2FtcGxlcy5hcHBlbmQoV1RGTW92ZShzYW1wbGUpKTsKICAgICB9KTsKICAgICBw
YXJzZXItPnNldENhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFtdKGF1dG8mJiBmdW5jdGlvbikg
ewogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDUxYTliM2EzNTRmMTE5YmUyOWY3NDExYTkzNDU3
ODQ5OWE2ZGE3NmQuLmFjMzVlNzAwOTRiMjI1YzZjNDI3NTEyOTE5MDE3Njg2MWVjOWUyNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTE0MDEsNyArMTQwMSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gTWVkaWFQbGF5ZXI6OmNh
Y2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0CiAgICAgcmV0dXJuIGNs
aWVudCgpLm1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlhUGxh
eWVyOjprZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBjbGll
bnQoKS5tZWRpYVBsYXllcktleU5lZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBlYmJhZDE2YTY1YWI1M2Vh
ZmZjZmEyNjI3NmI4MmM5ZjZhN2Q2NWViLi4yZmNkNDJhZjBhYmJlNDIzYzFmZWY3OWFiZTgzOWNi
OTVmZjljODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKQEAgLTg1LDYgKzg1LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogY2xh
c3MgTmF0aXZlSW1hZ2U7CiBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBQbGF0Zm9ybVRpbWVSYW5nZXM7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbjsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCkBAIC0yMDUsNyAr
MjA2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAg
ICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5
SWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1l
ZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7IH0KICNlbmRpZgogCkBAIC01NTcsNyArNTU4LDcgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBj
YWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdDsKLSAgICB2b2lkIGtl
eU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSk7CisgICAgdm9pZCBrZXlOZWVkZWQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCA1NmI1
OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyLi5kNTlmZTQ4MDRkNThkZmU3OGNi
NWJlYTcwNzRiMmU2ODcwNWMxZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTMwLDcg
KzMwLDkgQEAKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2luY2x1ZGUgIkNETUluc3RhbmNl
U2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9PYnNl
cnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hh
c2hTZXQuaD4KIAogT0JKQ19DTEFTUyBBVkNvbnRlbnRLZXlSZXBvcnRHcm91cDsKIE9CSkNfQ0xB
U1MgQVZDb250ZW50S2V5UmVxdWVzdDsKQEAgLTExNyw2ICsxMTksMTMgQEAgcHVibGljOgogICAg
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdy
b3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRL
ZXlSZXF1ZXN0KikgY29uc3Q7CiAKKyAgICBib29sIGlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMm
KSBjb25zdDsKKworICAgIHVzaW5nIEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2
ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFkZEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyKGNvbnN0
IEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB2b2lkIHNlc3Npb25LZXlTdGF0
dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVVbmV4cGVjdGVkUmVxdWVzdHMoVmVj
dG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7CiAKQEAgLTEzNCw2ICsxNDMs
NyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZl
Y3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+
IG1fc2Vzc2lvbnM7CiAgICAgSGFzaFNldDxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+
IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzOworICAgIFdlYWtIYXNoU2V0PEtleVN0YXR1c2VzQ2hh
bmdlZE9ic2VydmVyPiBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZlcnM7CiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpAQCAtMTg2LDExICsxOTYsMTQgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsK
IAorICAgIGNvbnN0IEtleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMoKSBjb25zdCB7IHJldHVy
biBtX2tleVN0YXR1c2VzOyB9CisgICAgS2V5U3RhdHVzVmVjdG9yIGNvcHlLZXlTdGF0dXNlcygp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKTsKICAg
ICBib29sIGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUpIGNvbnN0OwogCi0gICAg
S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5
SUQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lk
IG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVlc3Qo
KSBjb25zdDsKIApAQCAtMjE2LDYgKzIyOSw3IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBVcGRh
dGVSZXNwb25zZUNvbGxlY3RvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlUmVzcG9uc2VD
b2xsZWN0b3I+IG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I7CisgICAgS2V5U3RhdHVzVmVjdG9y
IG1fa2V5U3RhdHVzZXM7CiAKICAgICBWZWN0b3I8UmVxdWVzdD4gbV9wZW5kaW5nUmVxdWVzdHM7
CiAgICAgVmVjdG9yPFJlcXVlc3Q+IG1fcmVxdWVzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CmluZGV4IGNmZTA0OGE5MzhjMDVkZjc0NWM3MTYzNTZhZDFiM2I5MGE1OWViNzguLmZkNjE1MmUx
ODY3ZDRlNmE2NzJiZWYxNzA3MGNhNzYyOTEyNmY0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCkBAIC02MTcsNiArNjE3LDM3IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMmIGtleXMpIGNvbnN0Cit7CisgICAgZm9yIChh
dXRvJiBzZXNzaW9uSW50ZXJmYWNlIDogbV9zZXNzaW9ucykgeworICAgICAgICBpZiAoIXNlc3Np
b25JbnRlcmZhY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGF1dG8m
IGtleVN0YXR1c1BhaXIgOiBzZXNzaW9uSW50ZXJmYWNlLT5rZXlTdGF0dXNlcygpKSB7CisgICAg
ICAgICAgICBpZiAoa2V5U3RhdHVzUGFpci5zZWNvbmQgIT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXM6OlVzYWJsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgaWYgKGtleXMuZmluZElmKFsmXSAoYXV0byYga2V5KSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGtleS5nZXQoKSA9PSBrZXlTdGF0dXNQYWlyLmZpcnN0LmdldCgpOworICAgICAgICAgICAg
fSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcihjb25zdCBLZXlT
dGF0dXNlc0NoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9rZXlTdGF0dXNDaGFu
Z2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJikKK3sKKyAgICBtX2tleVN0YXR1
c0NoYW5nZWRPYnNlcnZlcnMuZm9yRWFjaChbXSAoYXV0byYgb2JzZXJ2ZXIpIHsKKyAgICAgICAg
b2JzZXJ2ZXIoKTsKKyAgICB9KTsKK30KKwogQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMo
UmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmIGluc3RhbmNlKQogICAg
IDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKICAgICAsIG1fZGVsZWdhdGUoYWRvcHRO
UyhbW1dlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBh
cmVudDp0aGlzXSkpCkBAIC0xMzA2LDEzICsxMzM3LDE1IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNv
bnRlCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogeworICAgIHVw
ZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV91cGRhdGVSZXNwb25zZUNvbGxlY3Rvcikg
ewogICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yLT5hZGRTdWNjZXNzZnVsUmVzcG9u
c2UocmVxdWVzdCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
bV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spIHsKLSAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChrZXlTdGF0dXNlcygpKSwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxi
YWNrKGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9uYWwoY29weUtleVN0YXR1c2VzKCkpLCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0
ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogCkBAIC0xNDA1LDcgKzE0MzgsNyBAQCBzdGF0aWMg
YXV0byByZXF1ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZDb250ZW50S2V5UmVxdWVzdFN0YXR1cyBz
dGF0dXMpCiAgICAgfQogfQogCi1DRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzKHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRpc3BsYXlJRCkgY29uc3QKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVLZXlTdGF0dXNl
cyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5SUQpCiB7CiAgICAgS2V5
U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOwogCkBAIC0xNDI3LDcgKzE0NjAsMTkgQEAgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjoKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBrZXlTdGF0
dXNlczsKKyAgICBtX2tleVN0YXR1c2VzLnN3YXAoa2V5U3RhdHVzZXMpOworCisgICAgbV9pbnN0
YW5jZS0+c2Vzc2lvbktleVN0YXR1c2VzQ2hhbmdlZCgqdGhpcyk7Cit9CisKK2F1dG8gQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMoKSBj
b25zdCAtPiBLZXlTdGF0dXNWZWN0b3IKK3sKKyAgICBLZXlTdGF0dXNWZWN0b3IgY29waWVkS2V5
U3RhdHVzZXM7CisgICAgY29waWVkS2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X2tleVN0YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBzdGF0dXMgOiBtX2tleVN0YXR1
c2VzKQorICAgICAgICBjb3BpZWRLZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBzdGF0dXMu
Zmlyc3QuY29weVJlZigpLCBzdGF0dXMuc2Vjb25kIH0pOworICAgIHJldHVybiBjb3BpZWRLZXlT
dGF0dXNlczsKKwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlv
bkNoYW5nZWQoYm9vbCBvYnNjdXJlZCkKQEAgLTE0MzgsOCArMTQ4MywxMCBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVU
b0luc3VmZmljaWVudAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwg
b2JzY3VyZWQpOwogICAgIG1fb3V0cHV0T2JzY3VyZWQgPSBvYnNjdXJlZDsKIAorICAgIHVwZGF0
ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT51
cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcygpKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZUtleVN0YXR1c2VzKGNvcHlLZXlTdGF0dXNlcygpKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0Rp
ZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKQpAQCAtMTQ5
Miw5ICsxNTM5LDEzIEBAIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3RhdHVzPiBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnByb3RlY3RpCiAKIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVQcm90ZWN0aW9uU3RhdHVz
Rm9yRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKLSAgICBpZiAobV9y
ZXF1ZXN0cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgIGlmIChtX3JlcXVlc3RzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhr
ZXlTdGF0dXNlcyhkaXNwbGF5SUQpKTsKKworICAgIHVwZGF0ZUtleVN0YXR1c2VzKGRpc3BsYXlJ
RCk7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0
dXNlcyhjb3B5S2V5U3RhdHVzZXMoKSk7CiB9CiAKIGJvb2wgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uT3JHcm91cCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaApp
bmRleCA3MTlhMTFmZTIyOWJlZjBkNDNjOWMzZWZkNWQ5MDIwODBlNzZjN2YwLi45MGQyNzNkMDc5
NjFmYzk4NmZiN2M0NTZmZjczMzYyYzE0ZWM1ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKQEAgLTc0LDcgKzc0
LDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxXZWJDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbkRlbGVnYXRlPiBtX2NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU7CiAgICAgUmV0YWlu
UHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1fa2V5UmVxdWVzdDsKICAgICBSZWZQdHI8VWludDhB
cnJheT4gbV9pZGVudGlmaWVyOwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2luaXREYXRhOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1faW5pdERhdGE7CiAgICAgUmV0YWluUHRyPE5TRGF0
YT4gbV9leHBpcmVkU2Vzc2lvbjsKICAgICBWZWN0b3I8aW50PiBtX3Byb3RvY29sVmVyc2lvbnM7
CiAgICAgaW50IG1fY2RtVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggN2VjNTc3NDI2MTBjMzg0
YmU2ZGRkYzU4NzRmZjM5NWU1YjVmMmVkYy4uNzJhMDk1MzA5Yzg0NWJkY2NmZGU3MDdiZTRiNzA3
MGM1ZDUxZWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkxl
Z2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIK
KyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZv
dW5kYXRpb24vQVZFcnJvci5oPgpAQCAtMTUxLDcgKzE1Miw3IEBAIFJlZlB0cjxVaW50OEFycmF5
PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluCiAgICAgaWYgKG1fY2RtVmVyc2lvbiA9PSAyKQogICAgICAgICBtX2lkZW50aWZpZXIg
PSBpbml0RGF0YTsKICAgICBlbHNlCi0gICAgICAgIG1faW5pdERhdGEgPSBpbml0RGF0YTsKKyAg
ICAgICAgbV9pbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLT5kYXRhKCks
IGluaXREYXRhLT5sZW5ndGgoKSk7CiAKICAgICBBU1NFUlQoIW1fY2VydGlmaWNhdGUpOwogICAg
IFN0cmluZyBjZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlmaWNhdGUiX3MpOwpAQCAtMjczLDEyICsy
NzQsMTIgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKFVpbnQ4
QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgIH0KIAogICAgIGlmICghbV9rZXlS
ZXF1ZXN0KSB7Ci0gICAgICAgIE5TRGF0YSogbnNJbml0RGF0YSA9IG1faW5pdERhdGEgPyBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6bV9pbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDptX2luaXREYXRhLT5s
ZW5ndGgoKV0gOiBuaWw7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IG5zSW5pdERhdGEgPSBt
X2luaXREYXRhID8gbV9pbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkgOiBuaWw7CiAgICAgICAgIE5T
RGF0YSogbnNJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyID8gW05TRGF0YSBkYXRhV2l0aEJ5dGVz
Om1faWRlbnRpZmllci0+ZGF0YSgpIGxlbmd0aDptX2lkZW50aWZpZXItPmxlbmd0aCgpXSA6IG5p
bDsKICAgICAgICAgaWYgKFtjb250ZW50S2V5U2Vzc2lvbigpIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IocHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6aW5pdGlhbGl6
YXRpb25EYXRhOm9wdGlvbnM6KV0pCi0gICAgICAgICAgICBbY29udGVudEtleVNlc3Npb24oKSBw
cm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjpuc0lkZW50aWZpZXIgaW5pdGlh
bGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxdOworICAgICAgICAgICAgW2NvbnRl
bnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6bnNJ
ZGVudGlmaWVyIGluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRhLmdldCgpIG9wdGlvbnM6bmls
XTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vz
c0NvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpu
aWxdOworICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEuZ2V0KCkgb3B0aW9uczpuaWxdOwog
ICAgIH0KIAogICAgIGlmIChzaG91bGRHZW5lcmF0ZUtleVJlcXVlc3QpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IDdhYjg5MTFmMDRlOGY3ZWYyNDUxMDhiNzU3MDc5NDU2N2U0ZWMzZWYu
LjJmNjVhNTc5NmUzNzNhY2FmZTMzMWVlYmU3N2UwZWM0Njg4NmU5ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMjAxNiw4ICsyMDE2LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIK
ICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFC
dWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJh
eS0+c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oU3RyaW5nVmlldyhr
ZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJLmxlbmd0aCgpIC8g
c2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBhdXRvIGluaXREYXRhID0gVWlu
dDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsK
LSAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisgICAgICAgIGF1
dG8gaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4geyBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGggfSk7
CisgICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA0NSw5ICsyMDQ1LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICBpZiAoc2NoZW1lID09ICJjbGVhcmtleSIp
IHsKICAgICAgICAgU3RyaW5nIGtleUlEID0gW1tbYXZSZXF1ZXN0IHJlcXVlc3RdIFVSTF0gcmVz
b3VyY2VTcGVjaWZpZXJdOwogICAgICAgICBhdXRvIGVuY29kZWRLZXlJZCA9IFBBTDo6VVRGOEVu
Y29kaW5nKCkuZW5jb2RlKGtleUlELCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OlVSTEVuY29k
ZWRFbnRpdGllcyk7Ci0KLSAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShlbmNvZGVkS2V5SWQuc2l6ZSgpKTsKLSAgICAgICAgaW5pdERhdGEtPnNldFJhbmdlKGVuY29k
ZWRLZXlJZC5kYXRhKCksIGVuY29kZWRLZXlJZC5zaXplKCksIDApOworICAgICAgICBhdXRvIGlu
aXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShlbmNvZGVkS2V5SWQpKTsKIAog
ICAgICAgICBhdXRvIGtleURhdGEgPSBwbGF5ZXIoKS0+Y2FjaGVkS2V5Rm9yS2V5SWQoa2V5SUQp
OwogICAgICAgICBpZiAoa2V5RGF0YSkgewpAQCAtMjA1NSw3ICsyMDUzLDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVz
b3VyY2UoQVZBc3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0g
ICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworICAgICAgICBwbGF5
ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhKTsKIAogICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91
bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGJjYWQxMjU0MzYzYTE4N2M2OGEzMzY4ZmE3YTdh
MTQ4NTE1YjgyZTUuLjI5ODNjZWNhZGVhMjJlM2YyNTViMDc5Yzk2YTJmNzg5MWNkM2EzMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCkgb3ZlcnJpZGUgeyBvdXRwdXRPYnNjdXJlZER1
ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChmYWxzZSk7IH0KIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQotICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIGtleU5lZWRlZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBlOTVmOGMzY2FjZjBhZGUxODExZjEx
YmFlNjgzYmU0YjVmYjE1NTMzLi4xYzMzMjcyNTQ2YjRlZjhiNzk3ODhkOTA1MjdhNTBlNTRkNmQ0
OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMTQzLDcgKzExNDMsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Q0RNU2Vzc2lvbihM
ZWdhY3lDRE1TZXNzaW9uKiBzZXNzaQogI2VuZGlmIC8vIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShF
TkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmtleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewogICAgIG1fcGxheWVyLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA5MDA3ZGNjYTlkZWUxMGVl
YmMzYjMxZDYzMzgwNjBkN2U5MjM3MDU2Li43ZWMxMGMxNDA0NzRiNmIxMDAwOTdjOWFmNWFlOTNi
NGE4ODIwZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
aApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIHVz
aW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBpeGVsQnVm
ZmVyOwogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJsaWMgTWVkaWFTYW1wbGUgewpA
QCAtNjEsNiArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7
CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQogICAg
IHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsK
QEAgLTgwLDYgKzgzLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Qnl0ZVJhbmdlT2Zmc2V0
KHNpemVfdCk7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVO
VEtFWVNFU1NJT04pCisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj47CisgICAgdm9pZCBzZXRLZXlJRHMoS2V5SURzJiYga2V5SURzKSB7IG1fa2V5
SURzID0gV1RGTW92ZShrZXlJRHMpOyB9CisgICAgY29uc3QgS2V5SURzJiBrZXlJRHMoKSBjb25z
dCB7IHJldHVybiBtX2tleUlEczsgfQorICAgIEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4gbV9r
ZXlJRHM7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFT
YW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmKTsKQEAgLTk0LDYg
KzEwNCwyOCBAQCBwcm90ZWN0ZWQ6CiAgICAgQXRvbVN0cmluZyBtX2lkOwogICAgIFZpZGVvUm90
YXRpb24gbV9yb3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKICAgICBib29sIG1fbWly
cm9yZWQgeyBmYWxzZSB9OworCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShB
VkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IG1fa2V5SURzOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgTG9nQXJndW1l
bnQ7Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2FtcGxl
QVZGT2JqQz4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6TWVk
aWFTYW1wbGVBVkZPYmpDJiBzYW1wbGUpCisgICAgeworICAgICAgICByZXR1cm4gc2FtcGxlLnRv
SlNPTlN0cmluZygpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQykKK3N0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgc2FtcGxlKSB7IHJldHVy
biBzYW1wbGUucGxhdGZvcm1TYW1wbGVUeXBlKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6
OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgK
aW5kZXggNzIyNDk3ZTBiYzQyMGNkNGU2MmIwNjI0OTIzYmZkOGY5ZDU0MDYyMi4uODk1MWIyNDdk
ZDAwMTUwZWQxNmNlMDQxYWNjZWNiYmZjYmVkNWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3Rh
dGUoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqLCBib29sIGFjdGl2ZSk7CiAgICAgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyopOwogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQotICAgIHZvaWQgc291cmNlQnVmZmVyS2V5TmVlZGVkKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDKiwgVWludDhBcnJheSopOworICAgIHZvaWQgc291cmNlQnVmZmVyS2V5TmVlZGVkKFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKICAg
ICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmlu
ZGV4IDkyN2QxMzAzMTFlOGVlYzhiMDIxNTZhYzYzMjgwYTliZjlkMDgwOGMuLjEyMDFiNzI2YmQw
NDdjNWYxMTBmNzE0YWIxMDIzMTlhNjE2MjJjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTk1LDkgKzE5NSwxMCBA
QCB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRD
aGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VCdQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlcktl
eU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogYnVmZmVyLCBVaW50OEFycmF5KiBp
bml0RGF0YSkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5
TmVlZGVkKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgbV9zb3VyY2VCdWZmZXJzTmVlZGluZ1Nlc3Npb25zLmFw
cGVuZChidWZmZXIpOworCiAgICAgaWYgKG1fcGxheWVyKQogICAgICAgICBtX3BsYXllci0+a2V5
TmVlZGVkKGluaXREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMuaAppbmRleCBjMjJlNzI1Zjg1NDZmMjc4ZmY2NTdhNWY0YzU3
MmI5Mjk1MTVlZDQ4Li43ODExMjA0Y2NmZDFkODFiMTUwOTJiNTc1YTgyOTgwZDYyYzJmMTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURh
dGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwogICAgIHZvaWQgd2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJh
Y2tJRCk7CiAgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEKE5TRGF0YSosIHVpbnQ2NF90IHRyYWNrSUQpOworICAgIHZvaWQgZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3BlY2lmaWVyRm9yVHJhY2tJRChOU0RhdGEqLCB1aW50
NjRfdCB0cmFja0lEKTsKIAogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CmluZGV4IGFiZDgxZTVmM2MxZWE1MGU0MjJlMmZhM2MyYmExZDE4Y2ZlMzFhZTIuLmFhMTU4NDA0
YjEwZTQ0NGFmNmU1ZWRkYzhkYWQ2YmE5NmVkNWNiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtNTcsNiArNTcsMTIg
QEAKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlz
dGVuZXIKIAorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorQGludGVyZmFjZSBBVkNv
bnRlbnRLZXlTcGVjaWZpZXIgKFdlYkNvcmVQcml2YXRlKQorQHByb3BlcnR5IChyZWFkb25seSkg
TlNEYXRhICppbml0aWFsaXphdGlvbkRhdGE7CitAZW5kCisjZW5kaWYKKwogQGludGVyZmFjZSBX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciA6IE5TT2JqZWN0PEFWU3RyZWFtRGF0YVBhcnNl
ck91dHB1dEhhbmRsaW5nPiB7CiAgICAgV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
QyogX3BhcmVudDsKICAgICBBVlN0cmVhbURhdGFQYXJzZXIqIF9wYXJzZXI7CkBAIC0xMzMsNiAr
MTM5LDE2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIEFTU0VS
VF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsK
ICAgICBfcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKGluaXREYXRhLCB0cmFja0lEKTsKIH0KKworI2lmIEhBVkUoQVZDT05URU5U
S0VZU1BFQ0lGSUVSKQorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJz
ZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOihBVkNv
bnRlbnRLZXlTcGVjaWZpZXIgKilrZXlTcGVjaWZpZXIgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50
VHJhY2tJRCl0cmFja0lECit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBz
dHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIGlmIChba2V5U3BlY2lmaWVyIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5pdGlhbGl6YXRpb25EYXRhKV0pCisgICAgICAgIF9w
YXJlbnQtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoa2V5
U3BlY2lmaWVyLmluaXRpYWxpemF0aW9uRGF0YSwgdHJhY2tJRCk7Cit9CisjZW5kaWYKKwogQGVu
ZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMzQsMTAgKzM1MCwxNCBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGbwogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBu
c0luaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKQogewotICAgIGF1dG8gaW5pdERhdGEgPSBVaW50
OEFycmF5OjpjcmVhdGUobnNJbml0RGF0YS5sZW5ndGgpOwotICAgIFtuc0luaXREYXRhIGdldEJ5
dGVzOmluaXREYXRhLT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhLT5sZW5ndGgoKV07CisgICAgbV9k
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNJbml0RGF0YSksIHRyYWNrSUQpOworfQogCi0g
ICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2soV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQpOwordm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JU
cmFja0lEKE5TRGF0YSogbnNJbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkKK3sKKyAgICBtX2Nh
bGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMg
fSwgbnNJbml0RGF0YSA9IHJldGFpblB0cihuc0luaXREYXRhKSwgdHJhY2tJRF0geworICAgICAg
ICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJh
Y2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNJbml0RGF0YS5nZXQoKSksIHRyYWNrSUQpOworICAg
IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaAppbmRleCA3NTRiMWUyZWVjMDJkZjMzOTVlNWNkYjVjMDdmOGU4OGE5
MzVjZDA4Li4zNzZhNmZjMTQzODExZWViODU2N2JjYjA4ZTdkZGQzYjFmZjEzY2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtOTUsNyArOTYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0g
bnVsbHB0cjsgfQogCiAgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKTsKLSAgICB2b2lkIGRpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVp
bnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKKyAg
ICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNl
bWFwaG9yZT4pOworCisgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlm
aWVyRm9yVHJhY2tJRChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1aW50NjRfdCB0cmFja0lEKTsKIAog
ICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0OwogCkBAIC0xMzIsNyArMTM1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWQoKTsKICAgICAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBVaW50OEFycmF5KiBpbml0RGF0YSgpIHsgcmV0
dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZmZXIqIGluaXREYXRhKCkgeyBy
ZXR1cm4gbV9pbml0RGF0YS5nZXQoKTsgfQogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKQEAgLTE1MCw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIEluaXRpYWxpemF0
aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2Vn
bWVudDsKICAgICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9u
U2VnbWVudCYmKTsKICAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQz
Ml90KTsKLSAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNh
bXBsZT4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAg
IHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwogCiAgICAg
Ly8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKICAgICB2b2lkIGFwcGVuZChSZWY8U2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKQEAgLTE3NCw2ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIE1l
ZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgTWVkaWFUaW1lIGR1
cmF0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlh
U2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QgdHJhY2tJRCk7CiAgICAgdm9pZCBkaWRCZWNvbWVS
ZWFkeUZvck1vcmVTYW1wbGVzKHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgYXBwZW5kQ29t
cGxldGVkKCk7CiAgICAgdm9pZCBkZXN0cm95U3RyZWFtRGF0YVBhcnNlcigpOwpAQCAtMTg2LDYg
KzE5MCwxMiBAQCBwcml2YXRlOgogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5E
CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNv
bnN0OworICAgIGJvb2wgY2FuRW5xdWV1ZVNhbXBsZSh1aW50NjRfdCB0cmFja0lELCBjb25zdCBN
ZWRpYVNhbXBsZUFWRk9iakMmKTsKKyAgICBib29sIHRyYWNrSXNCbG9ja2VkKHVpbnQ2NF90IHRy
YWNrKSBjb25zdDsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05U
RU5US0VZU0VTU0lPTikKKyAgICB2b2lkIGtleVN0YXR1c2VzQ2hhbmdlZCgpOworI2VuZGlmCiAK
ICAgICBWZWN0b3I8UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPj4gbV92aWRlb1RyYWNrczsKICAg
ICBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPj4gbV9hdWRpb1RyYWNrczsKQEAgLTE5
Nyw3ICsyMDcsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcm9jZXNzaW5nSW5pdGlhbGl6YXRp
b25TZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRl
ZENhbGxiYWNrIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5k
aW5nVHJhY2tDaGFuZ2VDYWxsYmFja3M7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwg
UmVmPE1lZGlhU2FtcGxlPj4+IG1fbWVkaWFTYW1wbGVzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8
dWludDY0X3QsIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+Pj4gbV9tZWRpYVNhbXBsZXM7CisgICAg
RGVxdWU8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4+IG1fYmxv
Y2tlZFNhbXBsZXM7CiAKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IG1fZGlzcGxheUxheWVyOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4K
QEAgLTIxNSwxMyArMjI2LDI3IEBAIHByaXZhdGU6CiAKICAgICBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDKiBtX21lZGlhU291cmNlOwogICAgIGJvb2wgbV9pc0FjdGl2ZSB7IGZhbHNlIH07CisK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBSZWZQdHI8VWludDhBcnJh
eT4gbV9pbml0RGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2luaXREYXRhOwogICAg
IFdlYWtQdHI8Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQz4gbV9zZXNzaW9uIHsgbnVsbHB0
ciB9OwogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRF
TlRLRVlTRVNTSU9OKQorICAgIHVzaW5nIEtleUlEcyA9IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OworICAgIHN0cnVjdCBUcmFja0luaXREYXRhIHsKKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGE7CisgICAgICAgIEtleUlEcyBrZXlJRHM7CisgICAgfTsK
KyAgICB1c2luZyBUcmFja0luaXREYXRhTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgVHJhY2tJbml0
RGF0YT47CisgICAgVHJhY2tJbml0RGF0YU1hcCBtX3BlbmRpbmdQcm90ZWN0ZWRUcmFja0luaXRE
YXRhTWFwOworICAgIFRyYWNrSW5pdERhdGFNYXAgbV9wcm90ZWN0ZWRUcmFja0luaXREYXRhTWFw
OworCisgICAgdXNpbmcgVHJhY2tLZXlJRHNNYXAgPSBIYXNoTWFwPHVpbnQ2NF90LCBLZXlJRHM+
OworICAgIFRyYWNrS2V5SURzTWFwIG1fY3VycmVudFRyYWNrSURzOworCiAgICAgUmVmUHRyPENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFVuaXF1ZVJl
ZjxPYnNlcnZlcjx2b2lkKCk+PiBtX2tleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyOworICAgIEtl
eUlEcyBtX2tleUlEczsKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1f
Y2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTYxYTNhN2ZjYzk2Mzc5OGY2ODk4YzAxMjdiZDc0YmIz
MzBiZjdhMS4uYzk2NzZkMmY0YjY5MTg3ZjYwZWIwYzgxZGRkYWZjMzU5OGFjMDU0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KQEAgLTc2LDYgKzc2LDEyIEBAIC0gKHZvaWQpZXhwZWN0TWluaW11bVVwY29taW5nU2FtcGxl
QnVmZmVyUHJlc2VudGF0aW9uVGltZTogKENNVGltZSltaW5pbXVtVXBjb21pCiAtICh2b2lkKXJl
c2V0VXBjb21pbmdTYW1wbGVCdWZmZXJQcmVzZW50YXRpb25UaW1lRXhwZWN0YXRpb25zOwogQGVu
ZAogCitAaW50ZXJmYWNlIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIChXZWJDb3JlU2FtcGxl
QnVmZmVyS2V5U2Vzc2lvbikgPEFWQ29udGVudEtleVJlY2lwaWVudD4KK0BlbmQKKworQGludGVy
ZmFjZSBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgKFdlYkNvcmVTYW1wbGVCdWZmZXJLZXlT
ZXNzaW9uKSA8QVZDb250ZW50S2V5UmVjaXBpZW50PgorQGVuZAorCiAjcHJhZ21hIG1hcmsgLQog
I3ByYWdtYSBtYXJrIEFWU3RyZWFtU2Vzc2lvbgogCkBAIC0yNzUsNiArMjgxLDI0IEBAIHN0YXRp
YyB1aW50NjRfdCBuZXh0TWFwSUQoKQogICAgIHJldHVybiArK21hcElEOwogfQogCitzdGF0aWMg
Ym9vbCBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpCit7CisgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHMgPSBmYWxzZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIFsmXSB7CisgICAgICAgIHN1
cHBvcnRzID0gW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyQ2xhc3MoKSBjb25m
b3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKEFWQ29udGVudEtleVJlY2lwaWVudCldCisgICAgICAg
ICAgICAmJiBbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCkgY29uZm9y
bXNUb1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRlbnRLZXlSZWNpcGllbnQpXTsKKyAgICB9KTsK
KyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK3N0YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBjb3B5S2V5SURzKGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IGtleUlEcykKK3sKKyAgICByZXR1cm4ga2V5SURzLm1hcChbXSAoYXV0byYga2V5
SUQpIHsKKyAgICAgICAgcmV0dXJuIGtleUlELmNvcHlSZWYoKTsKKyAgICB9KTsKK30KKwogc3Rh
dGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJl
ZiwgY29uc3Qgdm9pZCogbGlzdGVuZXIsIENGU3RyaW5nUmVmIG5vdGlmaWNhdGlvbk5hbWUsIGNv
bnN0IHZvaWQqLCBDRlR5cGVSZWYpCiB7CiAgICAgaWYgKCFDRkVxdWFsKFBBTDo6a0NNU2FtcGxl
QnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQsIG5vdGlmaWNhdGlvbk5h
bWUpKQpAQCAtMzA3LDYgKzMzMSw5IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAgICAgLCBt
X2Vycm9yTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciBh
bGxvY10gaW5pdFdpdGhQYXJlbnQ6KnRoaXNdKSkKICAgICAsIG1fYXBwZW5kUXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIGRhdGEgcGFyc2VyIHF1ZXVl
IikpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVudCkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgLCBtX2tleVN0YXR1c2VzQ2hh
bmdlZE9ic2VydmVyKG1ha2VVbmlxdWVSZWY8T2JzZXJ2ZXI8dm9pZCgpPj4oW3RoaXNdIHsga2V5
U3RhdHVzZXNDaGFuZ2VkKCk7IH0pKQorI2VuZGlmCiAgICAgLCBtX21hcElEKG5leHRNYXBJRCgp
KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGFyZW50LT5sb2dn
ZXIoKSkKQEAgLTM2NCw2ICszOTEsOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogCiAgICAg
Y2xlYXJUcmFja3MoKTsKIAorICAgIG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5zd2FwKG1f
cGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXApOworICAgIG1fcGVuZGluZ1Byb3RlY3Rl
ZFRyYWNrSW5pdERhdGFNYXAuY2xlYXIoKTsKKwogICAgIGZvciAoYXV0byB2aWRlb1RyYWNrSW5m
byA6IHNlZ21lbnQudmlkZW9UcmFja3MpIHsKICAgICAgICAgdmlkZW9UcmFja0luZm8udHJhY2st
PnNldFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCB0aGlzXSAoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKSB7CiAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNDU4LDEwICs0ODgsMTYgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMy
X3QgY29kZSkKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVm
PE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3Zp
ZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1w
bGUsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewogICAgIFVO
VVNFRF9QQVJBTShtZWRpYVR5cGUpOwogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYg
SEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcHJvdGVj
dGVkVHJhY2tJbml0RGF0YU1hcC5maW5kKHRyYWNrSWQpOworICAgIGlmIChmaW5kUmVzdWx0ICE9
IG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5lbmQoKSkKKyAgICAgICAgbWVkaWFTYW1wbGUt
PnNldEtleUlEcyhjb3B5S2V5SURzKGZpbmRSZXN1bHQtPnZhbHVlLmtleUlEcykpOworI2VuZGlm
CisKICAgICBpZiAobV9wcm9jZXNzaW5nSW5pdGlhbGl6YXRpb25TZWdtZW50KSB7CiAgICAgICAg
IERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS5nZXQoKSk7CiAgICAgICAgIG1f
bWVkaWFTYW1wbGVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih0cmFja0lkLCBXVEZNb3ZlKG1lZGlh
U2FtcGxlKSkpOwpAQCAtNTA4LDcgKzU0NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGCiAj
ZW5kaWYKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJh
eT4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFz
U2Vzc2lvblNlbWFwaG9yZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFw
aG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSkKIHsKICAgICBhdXRvIHBsYXllciA9IHRoaXMtPnBs
YXllcigpOwogICAgIGlmICghcGxheWVyKQpAQCAtNTE5LDExICs1NTUsMTUgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm8KIAogICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CiAgICAg
bV9pbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpOwotICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJj
ZUJ1ZmZlcktleU5lZWRlZCh0aGlzLCBtX2luaXREYXRhLmdldCgpKTsKKyAgICBtX21lZGlhU291
cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgKm1faW5pdERhdGEpOworCiAgICAgaWYg
KGF1dG8gc2Vzc2lvbiA9IHBsYXllci0+Y2RtU2Vzc2lvbigpKSB7Ci0gICAgICAgIGlmIChhdXRv
IHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKKyAgICAgICAgaWYgKHNhbXBsZUJ1
ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgIC8vIG5vLW9w
LgorICAgICAgICB9IGVsc2UgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNl
cigpKQogICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKHBhcnNlcik7Ci0gICAgICAgIGhh
c1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBpZiAoaGFzU2Vzc2lvblNlbWFw
aG9yZSkKKyAgICAgICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC01MzMsMTQgKzU3MywxNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGbwogICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IGhhc1Nlc3Npb25TZW1h
cGhvcmU7CiAgICAgCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRF
TlRLRVlTRVNTSU9OKQotICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2luaXREYXRhLT5kYXRhKCksIG1faW5pdERhdGEtPmJ5dGVMZW5ndGgoKSk7Ci0gICAg
YXV0byBrZXlJRHMgPSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNT
aW5mKGluaXREYXRhQnVmZmVyKTsKKyAgICBhdXRvIGtleUlEcyA9IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoKm1faW5pdERhdGEpOwogICAgIGlmICgha2V5
SURzKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3BlbmRpbmdQcm90ZWN0ZWRUcmFja0luaXRE
YXRhTWFwLnNldCh0cmFja0lELCBUcmFja0luaXREYXRhIHsgbV9pbml0RGF0YS5jb3B5UmVmKCks
ICprZXlJRHMgfSk7CisKICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewogICAgICAgICBpZiAoYXV0
byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKGtleUlE
cy52YWx1ZSgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFt
RGF0YVBhcnNlcigpKQorICAgICAgICAgICAgaWYgKHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBv
cnRLZXlTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBuby1vcC4KKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCiAgICAg
ICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250
ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgICAgICAgICBpZiAobV9oYXNTZXNzaW9uU2Vt
YXBob3JlKSB7CiAgICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwo
KTsKQEAgLTU1Miw3ICs1OTUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIH0KIAog
ICAgIG1fa2V5SURzID0gV1RGTW92ZShrZXlJRHMudmFsdWUoKSk7Ci0gICAgcGxheWVyLT5pbml0
aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCgic2luZiIsIGluaXREYXRhQnVmZmVyLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpKTsKKyAgICBwbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKCJzaW5mIiwgbV9pbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAKICAgICBt
X3dhaXRpbmdGb3JLZXkgPSB0cnVlOwogICAgIHBsYXllci0+d2FpdGluZ0ZvcktleUNoYW5nZWQo
KTsKQEAgLTU4Nyw3ICs2MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjph
cHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICB3ZWFrVGhpcy0+ZGlkRW5j
b3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBtX3Bh
cnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdIChSZWY8TWVkaWFTYW1wbGU+
JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgewor
ICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0gKFJlZjxNZWRp
YVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSkgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8IGFib3J0Q2FsbGVkICE9IHdlYWtUaGlzLT5tX2Fib3J0Q2FsbGVkKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjE2LDcgKzY1OSw3IEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAg
IH0KICAgICB9KTsKIAotICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNlbWFwaG9yZSwgYWJvcnRDYWxs
ZWQgPSBtX2Fib3J0Q2FsbGVkXShSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgdWludDY0X3Qg
dHJhY2tJRCkgbXV0YWJsZSB7CisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBob3JlLCBhYm9y
dENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdKFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIHVp
bnQ2NF90IHRyYWNrSUQpIG11dGFibGUgewogICAgICAgICAvLyBDYWxsZWQgb24gdGhlIGRhdGEg
cGFyc2VyIHF1ZXVlLgogICAgICAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2Vt
YXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOwogICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBhYm9ydENhbGxlZCwgaW5p
dERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0g
KCkgbXV0YWJsZSB7CkBAIC02MzYsNiArNjc5LDEzIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIH0KICAg
ICB9KTsKIAorICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVu
dGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBh
Ym9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdIChSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCB1aW50NjRfdCB0cmFja0lEKSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMgfHwgYWJvcnRDYWxsZWQgIT0gd2Vha1RoaXMtPm1fYWJvcnRD
YWxsZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFdURk1vdmUoaW5p
dERhdGEpLCB0cmFja0lELCBudWxscHRyKTsKKyAgICB9KTsKKwogICAgIG1fcGFyc2luZ1N1Y2Nl
ZWRlZCA9IHRydWU7CiAKICAgICBtX2FwcGVuZFF1ZXVlLT5kaXNwYXRjaChbZGF0YSA9IFdURk1v
dmUoZGF0YSksIHdlYWtUaGlzID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0
aGlzKSwgcGFyc2VyID0gbV9wYXJzZXIsIGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0oKSBt
dXRhYmxlIHsKQEAgLTczNiw2ICs3ODYsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGVzdHJveVJlbmRlcmVycygpCiAgICAgICAgIFtyZW5kZXJlciBmbHVzaF07CiAgICAg
ICAgIFtyZW5kZXJlciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CiAgICAgICAgIFttX2Vycm9y
TGlzdGVuZXIgc3RvcE9ic2VydmluZ1JlbmRlcmVyOnJlbmRlcmVyLmdldCgpXTsKKworI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICAg
ICAgaWYgKG1fY2RtSW5zdGFuY2UgJiYgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNl
c3Npb24oKSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigp
IHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6cmVuZGVyZXIuZ2V0KCldOworI2VuZGlmCiAgICAg
fQogCiAgICAgW21fZXJyb3JMaXN0ZW5lciBpbnZhbGlkYXRlXTsKQEAgLTg0Myw2ICs4OTgsMTEg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVk
KEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaywKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVO
VEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJl
bmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+
Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnJlbmRlcmVyLmdldCgp
XTsKKyNlbmRpZgorCiAgICAgICAgICAgICBXZWFrUHRyIHdlYWtUaGlzIHsgKnRoaXMgfTsKICAg
ICAgICAgICAgIFtyZW5kZXJlciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XnsKICAgICAgICAgICAgICAgICBpZiAo
d2Vha1RoaXMpCkBAIC05MDksNyArOTY5LDI0IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OnNldENETUluc3RhbmNlKENETUluc3RhbmNlKiBpbnN0YW5jZSkKIAogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiAKKyAgICBpZiAoc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3Vw
cG9ydEtleVNlc3Npb24oKSAmJiBtX2NkbUluc3RhbmNlKSB7CisgICAgICAgIGlmIChtX2Rpc3Bs
YXlMYXllcikKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigp
IHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworCisgICAg
ICAgIGZvciAoYXV0byYgYXVkaW9SZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJlcnMudmFsdWVzKCkp
CisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVD
b250ZW50S2V5UmVjaXBpZW50OmF1ZGlvUmVuZGVyZXIuZ2V0KCldOworICAgIH0KKwogICAgIG1f
Y2RtSW5zdGFuY2UgPSBmcHNJbnN0YW5jZTsKKworICAgIGlmIChzYW1wbGVCdWZmZXJSZW5kZXJl
cnNTdXBwb3J0S2V5U2Vzc2lvbigpICYmIG1fY2RtSW5zdGFuY2UpIHsKKyAgICAgICAgaWYgKG1f
ZGlzcGxheUxheWVyKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNz
aW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5nZXQoKV07CisKKyAg
ICAgICAgZm9yIChhdXRvJiBhdWRpb1JlbmRlcmVyIDogbV9hdWRpb1JlbmRlcmVycy52YWx1ZXMo
KSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENv
bnRlbnRLZXlSZWNpcGllbnQ6YXVkaW9SZW5kZXJlci5nZXQoKV07CisgICAgfQorCiAgICAgYXR0
ZW1wdFRvRGVjcnlwdCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2UpOwpAQCAt
OTI2LDggKzEwMDMsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0ZW1w
dFRvRGVjcnlwdCgpCiAgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKLSAgICAg
ICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVj
aXBpZW50OnBhcnNlcl07CisgICAgaWYgKCFzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5
U2Vzc2lvbigpKSB7CisgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQ
YXJzZXIoKSkKKyAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9u
KCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOworICAgIH0KICAgICBpZiAobV9oYXNT
ZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFs
KCk7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51bGxwdHI7CkBAIC0xMTA1LDE5
ICsxMTg0LDg4IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgICAgIHBs
YXllci0+c2V0SGFzQXZhaWxhYmxlQXVkaW9TYW1wbGUocmVuZGVyZXIsIGZhbHNlKTsKIH0KIAor
Ym9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tJc0Jsb2NrZWQodWludDY0X3Qg
dHJhY2tJRCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNhbXBsZVBhaXIgOiBtX2Jsb2NrZWRT
YW1wbGVzKSB7CisgICAgICAgIGlmIChzYW1wbGVQYWlyLmZpcnN0ID09IHRyYWNrSUQpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6a2V5U3RhdHVzZXNDaGFuZ2VkKCkKK3sKKyAg
ICB3aGlsZSAoIW1fYmxvY2tlZFNhbXBsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8mIGZp
cnN0UGFpciA9IG1fYmxvY2tlZFNhbXBsZXMuZmlyc3QoKTsKKworICAgICAgICAvLyBJZiB3ZSBz
dGlsbCBjYW4ndCBlbnF1ZXVlIHRoZSBzYW1wbGUsIGJhaWwuCisgICAgICAgIGlmICghY2FuRW5x
dWV1ZVNhbXBsZShmaXJzdFBhaXIuZmlyc3QsIGZpcnN0UGFpci5zZWNvbmQpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gZmlyc3RQYWlyVGFrZW4gPSBtX2Jsb2NrZWRTYW1w
bGVzLnRha2VGaXJzdCgpOworICAgICAgICBlbnF1ZXVlU2FtcGxlKFdURk1vdmUoZmlyc3RQYWly
VGFrZW4uc2Vjb25kKSwgZmlyc3RQYWlyVGFrZW4uZmlyc3QpOworICAgIH0KK30KKyNlbmRpZgor
Citib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjYW5FbnF1ZXVlU2FtcGxlKHVpbnQ2
NF90IHRyYWNrSUQsIGNvbnN0IE1lZGlhU2FtcGxlQVZGT2JqQyYgc2FtcGxlKQoreworI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICAv
LyBJZiBzYW1wbGUgYnVmZmVycyBkb24ndCBzdXBwb3J0IEFWQ29udGVudEtleVNlc3Npb246IGVu
cXVldWUgc2FtcGxlCisgICAgaWYgKCFzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vz
c2lvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIGlmIHNhbXBsZSBpcyB1bmVu
Y3J5dHBlZDogZW5xdWV1ZSBzYW1wbGUKKyAgICBpZiAoc2FtcGxlLmtleUlEcygpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBpZiBzYW1wbGUgaXMgZW5jcnlwdGVk
LCBidXQgd2UgYXJlIG5vdCBhdHRhY2hlZCB0byBhIENETTogZG8gbm90IGVucXVldWUgc2FtcGxl
LgorICAgIGlmICghbV9jZG1JbnN0YW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gaWYgc2FtcGxlIGlzIGVuY3J5cHRlZCwgYW5kIGtleUlEcyBtYXRjaCB0aGUgY3VycmVudCBz
ZXQgb2Yga2V5SURzOiBlbnF1ZXVlIHNhbXBsZS4KKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX2N1
cnJlbnRUcmFja0lEcy5maW5kKHRyYWNrSUQpOworICAgIGlmIChmaW5kUmVzdWx0ICE9IG1fY3Vy
cmVudFRyYWNrSURzLmVuZCgpICYmIGZpbmRSZXN1bHQtPnZhbHVlID09IHNhbXBsZS5rZXlJRHMo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBpZiBzYW1wbGUncyBzZXQgb2Yga2V5
SURzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IHNldCBvZiBrZXlJRHMsIGNvbnN1bHQgd2l0
aCB0aGUgQ0RNCisgICAgLy8gdG8gZGV0ZXJtaW5lIGlmIHRoZSBrZXlJRHMgYXJlIHVzYWJsZTsg
aWYgc28sIHVwZGF0ZSB0aGUgY3VycmVudCBzZXQgb2Yga2V5SURzIGFuZCBlbnF1ZXVlIHNhbXBs
ZS4KKyAgICBpZiAobV9jZG1JbnN0YW5jZS0+aXNBbnlLZXlVc2FibGUoc2FtcGxlLmtleUlEcygp
KSkgeworICAgICAgICBtX2N1cnJlbnRUcmFja0lEcy5zZXQodHJhY2tJRCwgc2FtcGxlLmtleUlE
cygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyNl
bHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25z
dCBBdG9tU3RyaW5nJiB0cmFja0lEU3RyaW5nKQogewogICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1
ZV9vcigwKTsKICAgICBpZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1f
YXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgp
OwotICAgIGlmIChwbGF0Zm9ybVNhbXBsZS50eXBlICE9IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBs
ZUJ1ZmZlclR5cGUpCisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9iakM+KHNhbXBsZSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IHNhbXBsZUFWRk9i
akMgPSBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNh
bXBsZSkpOworICAgIGlmICghc2FtcGxlQVZGT2JqQy0+a2V5SURzKCkuaXNFbXB0eSgpICYmICFj
YW5FbnF1ZXVlU2FtcGxlKHRyYWNrSUQsIHNhbXBsZUFWRk9iakMpKSB7CisgICAgICAgIG1fYmxv
Y2tlZFNhbXBsZXMuYXBwZW5kKHsgdHJhY2tJRCwgV1RGTW92ZShzYW1wbGVBVkZPYmpDKSB9KTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIGVucXVldWVTYW1wbGUoV1RGTW92ZShzYW1w
bGVBVkZPYmpDKSwgdHJhY2tJRCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2
NF90IHRyYWNrSUQpCit7CiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJ
RVI7CiAgICAgREVCVUdfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAidHJhY2sgSUQgPSAiLCB0cmFj
a0lELCAiLCBzYW1wbGUgPSAiLCBzYW1wbGUuZ2V0KCkpOwogCisgICAgUGxhdGZvcm1TYW1wbGUg
cGxhdGZvcm1TYW1wbGUgPSBzYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCk7CisKICAgICBDTUZvcm1h
dERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdl
dEZvcm1hdERlc2NyaXB0aW9uKHBsYXRmb3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcik7
CiAgICAgQVNTRVJUKGZvcm1hdERlc2NyaXB0aW9uKTsKICAgICBpZiAoIWZvcm1hdERlc2NyaXB0
aW9uKSB7CkBAIC0xMjg0LDYgKzE0MzIsOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKHVpbnQ2NF90IHRyYWNrSUQpCiAgICAg
ZWxzZQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAodHJhY2tJc0Jsb2NrZWQodHJhY2tJRCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIHByb3ZpZGVNZWRpYURhdGEoQXRvbVN0cmluZzo6bnVt
YmVyKHRyYWNrSUQpKTsKIH0KIApAQCAtMTM3NSwxMSArMTUyNiwyMSBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRWaWRlb0xheWVyKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKiBsYXllcgogICAgICAgICBbbV9kaXNwbGF5TGF5ZXIgZmx1c2hdOwogICAgICAgICBbbV9k
aXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgICAgICBbbV9lcnJvckxp
c3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcjptX2Rpc3BsYXlMYXllci5nZXQoKV07CisKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAg
ICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlT
ZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24o
KSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgpXTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIG1fZGlzcGxheUxheWVyID0gbGF5ZXI7CiAKICAgICBpZiAobV9kaXNw
bGF5TGF5ZXIpIHsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVO
VEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJl
bmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+
Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVy
LmdldCgpXTsKKyNlbmRpZgorCiAgICAgICAgIFdlYWtQdHIgd2Vha1RoaXMgeyAqdGhpcyB9Owog
ICAgICAgICBbbV9kaXNwbGF5TGF5ZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOl4gewogICAgICAgICAgICAgaWYg
KHdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1
MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li5mYzJiYWI5MDdkOTgzNTNkMWY4YWFkNjk0ZjllNTUyYTRj
MjlmZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBM
b2dnZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRUeXBlOwotY2xhc3Mg
TWVkaWFTYW1wbGU7CitjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakM7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclBhcnNlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+IHsKQEAgLTEyMyw3ICsxMjMs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4g
dGhyZWFkLgotICAgIHVzaW5nIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSk+OworICAgIHVzaW5nIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QgdHJhY2tJRCwg
Y29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpPjsKICAgICB2b2lkIHNldERpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayhEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7
CiAgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayk7CkBAIC0xMzcsMTIgKzEzNywxOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lsbCBi
ZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFyc2VyIHRoZWFkLgotICAgIHVzaW5nIERp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQp
PjsKKyAgICB1c2luZyBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IHVpbnQ2NF90IHRyYWNrSUQpPjsKICAgICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhEaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgfQog
CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAg
ICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lE
Q2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURD
YWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7
CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU291cmNlQnVmZmVyUGFyc2VyKCk7CiAKQEAgLTE1
Miw2ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNr
IG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrOwogICAgIFdpbGxQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgbV93aWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOwog
ICAgIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSURDYWxsYmFjazsKKyAgICBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVu
dGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRl
bnRpZmllckZvclRyYWNrSURDYWxsYmFjazsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKaW5kZXggMDVhODMxNmRjMjdlNjMwMTdmMzk3ZjE5MjQ2OWI4MmEzM2I3YjAz
NC4uYWUxNjQxNGYyMWM2ODQ2YzE4OTc3MDllMTQyNGU0YTZhNGI3NjFhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTEwMzIsNyArMTAzMiw3IEBAIFN0YXR1cyBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiwg
Y29uc3QgVHJhY2tFCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGF1
dG8mIGtleUlkID0ga2V5SWRFbGVtZW50LnZhbHVlKCk7Ci0gICAgICAgICAgICBtX2tleUlkcy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tFbnRyeS50cmFja191aWQudmFsdWUoKSwgVWludDhB
cnJheTo6Y3JlYXRlKGtleUlkLmRhdGEoKSwga2V5SWQuc2l6ZSgpKSkpOworICAgICAgICAgICAg
bV9rZXlJZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHRyYWNrRW50cnkudHJhY2tfdWlkLnZhbHVl
KCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleUlkLmRhdGEoKSwga2V5SWQuc2l6ZSgpKSkpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggMjhl
NzNmYmE1MDIzYzgxNmJmYjI0MmM1Zjk5MGRiOTdhMThiYzFmZi4uZTg3NmFiNDE0YTRhYmIzM2Q1
MThjMzdiNDFmZTVhMTQ3NzZhYjQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApA
QCAtMjY5LDcgKzI2OSw3IEBAIHByaXZhdGU6CiAgICAgd2VibTo6U3RhdHVzIE9uRnJhbWUoY29u
c3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHdlYm06OlJlYWRlciosIHVpbnQ2NF90KiBieXRlc1Jl
bWFpbmluZykgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5pdGlhbGl6YXRpb25TZWdt
ZW50PiBtX2luaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2
NF90LCBSZWY8VWludDhBcnJheT4+PiBtX2tleUlkczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVp
bnQ2NF90LCBSZWY8U2hhcmVkQnVmZmVyPj4+IG1fa2V5SWRzOwogICAgIHdlYm06OlN0YXR1cyBt
X3N0YXR1czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VibTo6V2VibVBhcnNlcj4gbV9wYXJzZXI7
CiAgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVNhbXBsZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggMWQ3MWEzMzk2OWNmYmM2NzVk
ZWVjZWE3OGU2NGYyZDY4OTllNDFlYi4uY2QwOWNjN2U1MDJkYzQyNzdjMzI0Y2I0YmNkZTZmMjA5
ZWM4YzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTYzLDYgKzYz
LDcgQEAgcHVibGljOgogICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0Nv
cHkoKSBjb25zdCBvdmVycmlkZTsKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBs
ZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlVHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxl
VHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4g
Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJk
NjViLi4wMDM5YjQyMDAyYTZmMDVkY2I3ZGFiZDU5M2RmYTg0ZDJiMmJkNzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRl
OgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVv
ZihtX2JveCk7IH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1T
YW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
UGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlOyB9CiAgICAgc3RkOjpvcHRpb25hbDxC
eXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA0MmEzMjA2NTRiMDNkZjliNDM5Nzc3OTQy
NTY0NTgyMDA2Y2RhMTEwLi43MTFjZWQwYmYxMzE0MjU5MTc3NWZmZDc5M2FlNWE4NmM2YWUwY2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OTgsMTEgKzY5OCwxMCBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5
SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1lc3NhZ2UpCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgbWVzc2FnZSkKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZVJlZmVy
ZW5jZTsKLSAgICBpZiAobWVzc2FnZSkKLSAgICAgICAgbWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVz
c2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5ieXRlTGVuZ3RoKCkgfTsKKyAgICBtZXNzYWdlUmVmZXJl
bmNlID0geyBtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkgfTsKICAgICBtX3dlYlByb2Nl
c3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1l
ZGlhUGxheWVyS2V5TmVlZGVkKFdURk1vdmUobWVzc2FnZVJlZmVyZW5jZSkpLCBtX2lkKTsKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMWZiZTFmOTMzZDA5NTAwNmY0MmZkOWRjZmM2ZjJh
NDQyYTc2NDA5My4uM2Q5ZTAyZTAxOGRkMTE2NDJiYjU2YTMzZmJjZTk1OTgwNWE5NDNlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oCkBAIC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5
ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA3NzRjY2Yz
MWYyNjc3ZDBhMDUyMTc2NTFiM2I0ZTEzMjM1YzRjMjk0Li5mODk1N2IzYjhlNDE4NjIzYjNiNTZj
MDEyMTU3MDA1YmRjZjYyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAg
LTE2Miw3ICsxNjIsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2Uo
UmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAgICAgICBkaWRQYXJz
ZVRyYWNrcyh7IH0sIGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBwYXJzZXItPnNldERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRp
YVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIGRpZFByb3ZpZGVNZWRpYURhdGEoV1RGTW92ZSht
ZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIG1faW5pdCA9IHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2Ft
cGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQordm9p
ZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGVB
VkZPYmpDPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQog
ewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuaAppbmRleCA2NTA5M2U5ZTQ2YjQwYjVhMzk3NmZkZWYyOWU2MTNjNjQ1MWYzMTVhLi4xNWQ1
NTczNjMzODE3NDYwYzJlNjIwNDQxOTAxMDIzY2Y4NmI0YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogREVDTEFSRV9DT1JFX01FRElBX1RSQUlUUyhG
b3JtYXRSZWFkZXIpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVNhbXBsZUFW
Rk9iakM7CiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXI7CiB9CiAKQEAgLTY3LDcgKzY4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFBhcnNlVHJhY2tzKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYmLCB1aW50NjRfdCBlcnJvckNvZGUp
OwogICAgIHZvaWQgZGlkU2VsZWN0VmlkZW9UcmFjayhXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZSYsIGJvb2wpIHsgfQogICAgIHZvaWQgZGlkRW5hYmxlQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YShS
ZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qz4mJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmluaXNoUGFyc2luZyhS
ZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIC8vIENNQmFzZUNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3
NmU5ZmIxZWY5NjJiNDA0OTdlM2RjMzEuLjI1NWMwN2VhNWFkNzg1MWVmZjhlNGVlNmY3ZTQ3YjM2
MGU2MzY0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCkBAIC01MSw2ICs1
MSw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwog
ICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWw7CisgICAg
V2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5
cGU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5h
bDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCAzM2RhOGFh
MDZiNjE3Mjk3MzI3MDNlOTBhZWUwMjVjNGE3NjI2YmY5Li41NjYwNmM0NzQwY2U5ZTk1NzU3NDIz
YWU4NGI4MDVlMTE4MjExYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0x
MTkxLDcgKzExOTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQo
KQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKElQ
Qzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKFJlZlB0ciBwbGF5ZXIgPSBt
X3BsYXllci5nZXQoKSkKLSAgICAgICAgcGxheWVyLT5rZXlOZWVkZWQoVWludDhBcnJheTo6Y3Jl
YXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSkucHRyKCkpOworICAgICAgICBwbGF5
ZXItPmtleU5lZWRlZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlKSk7CiB9CiAjZW5kaWYK
IAo=
</data>
<flag name="commit-queue"
          id="477847"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451191</attachid>
            <date>2022-02-07 18:51:46 -0800</date>
            <delta_ts>2022-02-08 10:37:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236109-20220207185145.patch</filename>
            <type>text/plain</type>
            <size>82538</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZkOWYyZmY4ZTVmM2E2OWU0Y2NhNjc3
MjRmZWY3MDA2MjAwYzAwNzMuLjEyMTEzZTRhNGI3Njc5YjczNjgxYjRlZWIxOWJlMGNlMjMzYWNj
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDItMDcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1IYXZlLmg6CisKIDIwMjItMDItMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBNYWtlIEJpdG1hcCBjb25zdGV4cHIgZnJpZW5kbHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZTBkODFkNjQxZTcyODUwNmUzZjA2MGU1YTA2MzJmYTdjMTk0ZDExLi5l
NTU3ZGEyNzRhOTNkNTU3MzYxYzZkODc0OGVlM2UwMzY3NjM2ZTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTI1IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNv
bnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IHNldCBv
ZiBkZWxlZ2F0ZSBjYWxsYmFjayBtZXRob2RzIGhhdmUgYSBzaWduaWZpY2FudCBzaG9ydGNvbWlu
ZzogY2xpZW50cyBtdXN0CisgICAgICAgIGF0dGFjaCBhbiBBVkNvbnRlbnRLZXlTZXNzaW9uIHRv
IHRoZSBBVlN0cmVhbURhdGFQYXJzZXIgYmVmb3JlIHJldHVybmluZyBmcm9tIHRoZQorICAgICAg
ICAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGE6Zm9yVHJhY2tJRDogY2FsbGJhY2suIFRoaXMKKyAgICAgICAgaXMgYmVjYXVzZSB0
aGUgcGFyc2VyIGl0c2VsZiBhdHRhY2hlcyB0aGUgb2JqZWN0IHJlcXVpcmVkIHRvIGRlY3J5cHQg
ZWFjaCBlbmNyeXB0ZWQgc2FtcGxlCisgICAgICAgIHRvIHRoZSBzYW1wbGUgaXRzZWxmIGF0IHRo
ZSBwYXJzaW5nIHN0YWdlLiBJZiBhIGNsaWVudCBkb2VzIG5vdCBhdHRhY2ggYW4KKyAgICAgICAg
QVZDb250ZW50S2V5U2Vzc2lvbiBieSB0aGUgdGltZSB0aGF0IG1ldGhvZCByZXR1cm5zLCBBVlN0
cmVhbURhdGFQYXJzZXIgd2lsbCBhdHRhY2ggb25lIG9mCisgICAgICAgIGl0cyBvd24uCisKKyAg
ICAgICAgVGhlIHdlYi1mYWNpbmcgYmVoYXZpb3IgdGhpcyBjYXVzZXMgaXMgdGhhdCBNU0UgYXBw
ZW5kcyB3aWxsIG5vdCBjb21wbGV0ZSAoYnkgZmlyaW5nCisgICAgICAgIGFuICJ1cGRhdGVlbmQi
IGV2ZW50KSBpZiBhbiBlbmNyeXB0ZWQgc2VnbWVudCBpcyBwYXJzZWQgdW50aWwgdGhlIGNsaWVu
dCBjcmVhdGVzIGFuZAorICAgICAgICBhdHRhY2hlcyBhIE1lZGlhS2V5cyBvYmplY3Qgd2l0aCBh
IHZhbGlkIHNlc3Npb24uCisKKyAgICAgICAgQSBuZXcgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9k
LCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFj
a0lEOgorICAgICAgICBhbGxvd3MgdXMgdG8gd29yayBhcm91bmQgdGhpcyBwcm9ibGVtLiBXaGVu
IHRoaXMgZGVsZWdhdGUgaXMgcHJlc2VudCwgQVZTdHJlYW1EYXRhUGFyc2VyCisgICAgICAgIHdp
bGwgc2tpcCBhdHRhY2hpbmcgYSBkZWNyeXB0aW9uIG9iamVjdCBlbnRpcmVseSwgbW92aW5nIHRo
YXQgcmVzcG9uc2liaWxpdHkgdG8gdGhlCisgICAgICAgIGNsaWVudC4gSG93ZXZlciwgdGhpcyBj
b21lcyB3aXRoIHRoZSByZXF1aXJlbWVudCB0aGF0IHRoZSBjbGllbnQgKFdlYktpdCkgd29uJ3Qg
ZW5xdWV1ZQorICAgICAgICBhbiBlbmNyeXB0ZWQgc2FtcGxlIGJlZm9yZSBhIGRlY3J5cHRpb24g
b2JqZWN0IGlzIGF2YWlsYWJsZSB2aWEgQVZDb250ZW50S2V5U2Vzc2lvbi4KKworICAgICAgICBJ
biBvcmRlciB0byBtZWV0IHRoaXMgbmV3IHJlcXVpcmVtZW50LCBXZWJLaXQgd2lsbCBhc3NvY2lh
dGUgdGhlIGtleSBJRHMgbmVjZXNzYXJ5IHRvCisgICAgICAgIGRlY3J5cHQgZWFjaCBzYW1wbGUg
aW4gdGhlIE1lZGlhU2FtcGxlIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBlbmNyeXB0ZWQgc2FtcGxl
LiBCZWNhdXNlIG5vdAorICAgICAgICBldmVyeSB0eXBlIG9mIE1lZGlhU2FtcGxlIHdpbGwgY2Fy
cnkga2V5IElEcywgdGhpcyBwcm9wZXJ0eSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgIE1lZGlh
U2FtcGxlQVZGT2JqQyBzdWJjbGFzcywgYW5kIHRoZXJlZm9yZSB3ZSBuZWVkIHRvIGJlIGFibGUg
dG8gc2FmZWx5IGRvd25jYXN0IGZyb20KKyAgICAgICAgTWVkaWFTYW1wbGUgdG8gTWVkaWFTYW1w
bGVBVkZPYmpDLiBNZWRpYVNhbXBsZSBzdWJjbGFzc2VzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGJ5
IHRoZQorICAgICAgICBQbGF0Zm9ybU1lZGlhU2FtcGxlIHR5cGUgYXZhaWxhYmxlIHRocm91Z2gg
dGhlaXIgcGxhdGZvcm1TYW1wbGUoKSBwcm9wZXJ0eSwgaG93ZXZlciB0aGlzCisgICAgICAgIGNh
bGwgaXMgbm90IGNvbnN0LCBhbmQgbWF5IG5vdCBiZSBmcmVlLCBhcyBpdCByZXR1cm5zIGEgbm9u
LVBPRCB0eXBlLiBTbworICAgICAgICBQbGF0Zm9ybU1lZGlhOjpUeXBlIHdhcyBtYWRlIGFuIGV4
cGxpY2l0IGVudW0gdHlwZSwgYW5kIGEgbmV3IHZpcnR1YWwgbWV0aG9kCisgICAgICAgIHBsYXRm
b3JtU2FtcGxlVHlwZSgpIHdhcyBhZGRlZCB0byBNZWRpYVNhbXBsZSAoYW5kIGltcGxlbWVudGVk
IGJ5IGFsbCBzdWJjbGFzc2VzKSwgYW5kIGEKKyAgICAgICAgdHlwZSBzcGVjaWFsaXphdGlvbiBt
YWNybyB3YXMgYWRkZWQgdG8gTWVkaWFTYW1wbGVBVkZPYmpDLgorCisgICAgICAgIEluIG9yZGVy
IHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBzYW1wbGUgaXMgY2FwYWJsZSBvZiBiZWluZyBlbnF1
ZXVlZCwgdGhlIENETUluc3RhbmNlCisgICAgICAgIG11c3QgYmUgcXVlcmllZCB0byBkZXRlcm1p
bmUgaWYgdGhlIHNhbXBsZSdzIHJlcXVpcmVkIGtleXMgYXJlIHVzYWJsZS4gRm9yCisgICAgICAg
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLCBpdCBoYXMgYW4gZXhpc3Rpbmcg
a2V5U3RhdHVzKCksIG1ldGhvZCwgYnV0IHRoYXQKKyAgICAgICAgbWV0aG9kIGlzIGFsc28gbm9u
LWNvbnN0LCBhbmQgbWF5IGJlIGV4cGVuc2l2ZS4gU28gYSBLZXlTdGF0dXNNYXAgaW5zdGFuY2Ug
dmFyaWFibGUKKyAgICAgICAgaGFzIGJlZW4gYWRkZWQgdG8gY2FjaGUgdGhlIGtleSBzdGF0dXMg
Zm9yIGVhc2Ugb2YgcXVlcnlpbmcuIFRvIG5vdGlmeSBhbiBhcmJpdHJhcnkgbnVtYmVyCisgICAg
ICAgIG9mIGNsaWVudHMgd2hlbiB0aGUga2V5IHN0YXR1c2VzIGNoYW5nZSwgYW4gT2JzZXJ2ZXIg
aGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAgV2hlbiBhbiBlbmNyeXB0ZWQgc2FtcGxlIGlzIGVu
cXVldWVkLCBpZiB0aGlzIG5ldyBkZWxlZ2F0ZSBtZXRob2QgaXMgYXZhaWxhYmxlLCB0aGUKKyAg
ICAgICAgc291cmNlIGJ1ZmZlciB3aWxsIGNoZWNrIGlmIGEgQ0RNIGluc3RhbmNlIGlzIGF2YWls
YWJsZSwgYW5kIGlmIHNvLCB3aGV0aGVyIHRoZSBzYW1wbGUncworICAgICAgICBrZXlzIGFyZSB1
c2FibGUuIElmIGFueSBvZiB0aGVzZSBjaGVja3MgZmFpbCwgdGhlIHNhbXBsZSB3aWxsIGJlIHN0
b3JlZCBpbiBhIGxvY2FsIHF1ZXVlCisgICAgICAgIGFuZCBuZXcgZW5xdWV1ZXMgd2lsbCBiZSBi
bG9ja2VkLiBXaGVuIHRoZSBDRE0ncyBrZXlTdGF0dXMgb2JzZXJ2ZXIgaXMgdHJpZ2dlcmVkLCB0
aGUKKyAgICAgICAgbG9jYWwgcXVldWUgd2lsbCBiZSBwcm9jZXNzZWQsIGFuZCBhbGwgc2FtcGxl
cyB3aXRoIHVzYWJsZSBrZXkgSURzIHdpbGwgYmUgZW5xdWV1ZWQuCisKKyAgICAgICAgRHJpdmUt
YnkgZml4OiBVc2UgU2hhcmVkQnVmZmVyIHJhdGhlciB0aGFuIFVpbnQ4QXJyYXksIGFzIHRoZSBm
b3JtZXIgaXMgbGlnaHRlciB3ZWlnaHQKKyAgICAgICAgYW5kIGNhbiBiZSBtb3JlIGVhc2lseSBj
b252ZXJ0ZWQgdG8gYW5kIGZyb20gYSBOU0RhdGEuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9G
aWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmlzQW55S2V5VXNhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vz
c2lvbktleVN0YXR1c2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpv
dXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZVByb3RlY3Rpb25TdGF0dXNGb3JEaXNwbGF5SUQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTdGF0
dXNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjprZXlOZWVkZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRLZXlJRHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMpOgorICAgICAgICAoV1RGOjpM
b2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+Ojp0b1N0cmluZyk6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAg
KC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92
aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JU
cmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6c2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29weUtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldENETUluc3RhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0lz
QmxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6a2V5U3RhdHVzZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpjYW5FbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1w
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRW
aWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorCiAyMDIyLTAyLTA3ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgRG9jdW1lbnRU
aW1lbGluZTo6cnVubmluZ0FuaW1hdGlvbnNGb3JSZW5kZXJlckFyZUFsbEFjY2VsZXJhdGVkKCkg
dG8gU3R5bGVhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY3NmFhODUwNDZmMWZiMjVhMzU0ZDAxMmZjNzhlOGRl
NDU2YWE3MTkuLmZhZDZjYmE4OTM3ZGYxZTI3MWY2M2Q4MjExZWQzODkxYjNmNTEyN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDItMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQ
cm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBu
ZXdseSByZXF1cmllZCB2aXJ0dWFsIG1ldGhvZCBjaGFuZ2VzIHRvIE1lZGlhU2FtcGxlIHN1YmNs
YXNzZXMsIGFuZCB1c2UKKyAgICAgICAgU2hhcmVkQnVmZmVyIHJhdGhlciB0aGFuIFVpbnQ4QXJy
YXkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
cktleU5lZWRlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpwYXJz
ZUJ5dGVTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJv
dmlkZU1lZGlhRGF0YSk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYUZvcm1hdFJlYWRlci5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKwogMjAyMi0wMi0wNyAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV1Bd
IEVuYWJsZSBzYW5kYm94IHN0YXRlIHJ1bGVzIGZvciBNYWNoIG1lc3NhZ2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDcyNDNlOTBkN2U3MGY5OTRkMzlmN2RjNDQyMjFlZmZhOGFlNzc4NGUuLjQ3
OTFiNWZiNmE2YmI3OWY4YmViZDU0ODAxZmNkOWNhZTFlMGY2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC0zODgsNiArMzg4LDEzIEBACiAjZGVmaW5lIEhBVkVfQVZDT05URU5US0VZU0VTU0lP
TiAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMTAzMDApIFwKKyAgICB8fCAoKChQTEFURk9STShJT1MpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNDA1MDApIFwKKyAgICB8fCAoUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiBfX1dB
VENIX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gNzA0MDApIFwKKyAgICB8fCAoUExBVEZPUk0o
QVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiBfX1RWX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNTAwKQorI2RlZmluZSBIQVZFX0FWQ09OVEVOVEtFWVNQ
RUNJRklFUiAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZpbmUgSEFWRV9TRUNfS0VZX1BST1hZIDEKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwKaW5kZXggZDYzNDg2YzVhOWM0ODk1
M2MzNGIyYTZkZDIzY2RhOTIzZjI4NDFjNy4uNWU2N2VkZjA2NmI2MDEzYjc4ZTRiNjlkYTY1MzA2
ZTFiYWQ0ZjAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsCkBAIC0zMCw3ICsz
MCw3IEBACiBdIGludGVyZmFjZSBXZWJLaXRNZWRpYUtleXMgewogICAgIGNvbnN0cnVjdG9yKERP
TVN0cmluZyBrZXlTeXN0ZW0pOwogCi0gICAgW0NhbGxXaXRoPUN1cnJlbnRTY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihET01TdHJpbmcg
dHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7CisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVu
dF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVp
bnQ4QXJyYXkgaW5pdERhdGEpOwogICAgIHN0YXRpYyBib29sZWFuIGlzVHlwZVN1cHBvcnRlZChE
T01TdHJpbmcga2V5U3lzdGVtLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZTVmYTJjYzdjMTJjOTYyZGY0NzhhZGViM2JlMjg4
MWM3OGI5NmYwOC4uZmFmZGE3NmE0MzE3NzVmOTNhNjg2ZTU1NjU5YTkzMmNlZDdkMWIyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjM4LDcgKzI2Mzgs
NyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2Fj
aGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtX3dlYktpdE1lZGlhS2V5
cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBudWxscHRy
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5l
ZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGlmICghZG9jdW1lbnQo
KS5zZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNjU1LDcgKzI2NTUsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEpOworICAgIFdlYktp
dE1lZGlhS2V5TmVlZGVkRXZlbnQ6OkluaXQgaW5pdDsKKworICAgIGlmIChhdXRvIGluaXREYXRh
QnVmZmVyID0gaW5pdERhdGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkgeworICAgICAgICBhdXRv
IGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBpbml0
LmluaXREYXRhID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRhQnVmZmVyLnJlbGVhc2VO
b25OdWxsKCksIDAsIGJ5dGVMZW5ndGgpOworICAgIH0KKworICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlF
dmVudCwgaW5pdCk7CiAgICAgc2NoZWR1bGVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYjVmZTEzODUzYzY5NDI3ODM3
ZWYzZjkxZDJiZDI2MWMxOTNkYzRiYi4uMzI5ZTYzZWE1NjJiNzkwNmQxNzNhOTYxNzljY2U3ODQ0
MThjY2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcwNiw3
ICs3MDYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNv
bnN0IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE4Mzk5NzIyNjBmNzBlMDA3MzY3OTc5MTcyMjYy
NWY1NmIyNTNmMDguLjJjMTE1YThjMjlkMjg0ZjZmY2JmOGIwMTY4ZTdmNGQ1NGE4NjYzYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNb2NrU2FtcGxlQm94OwogCiBzdHJ1Y3QgUGxhdGZvcm1T
YW1wbGUgewotICAgIGVudW0geworICAgIGVudW0gVHlwZSB7CiAgICAgICAgIE5vbmUsCiAgICAg
ICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUsCkBAIC05
MCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzU3luY0luZm8gPSAxIDw8IDMsCiAgICAg
fTsKICAgICB2aXJ0dWFsIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSA9IDA7CiAKICAgICBz
dHJ1Y3QgQnl0ZVJhbmdlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCA1MDYwMzIzODAz
YjFhM2IxN2Y0NzM4NjZlYTk3YjNhODI5MGUyMDJjLi5iNzAzY2ZlY2QzMTZjNjI3YzY5NGU2NGI4
ZTY5NzYyMDY4NjdmN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0yMDIsMTAgKzIw
MiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmls
ZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfSk7Ci0gICAgcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soWyZd
KFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmlu
ZyYpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbJl0oUmVm
PE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0
cmluZyYpIHsKICAgICAgICAgaWYgKCFhdWRpb1RyYWNrSWQgfHwgdHJhY2tJRCAhPSAqYXVkaW9U
cmFja0lkKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzYW1wbGVzLmFwcGVuZChzdGF0
aWNfcmVmZXJlbmNlX2Nhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNhbXBsZSkpKTsK
KyAgICAgICAgc2FtcGxlcy5hcHBlbmQoV1RGTW92ZShzYW1wbGUpKTsKICAgICB9KTsKICAgICBw
YXJzZXItPnNldENhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFtdKGF1dG8mJiBmdW5jdGlvbikg
ewogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDUxYTliM2EzNTRmMTE5YmUyOWY3NDExYTkzNDU3
ODQ5OWE2ZGE3NmQuLmFjMzVlNzAwOTRiMjI1YzZjNDI3NTEyOTE5MDE3Njg2MWVjOWUyNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTE0MDEsNyArMTQwMSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gTWVkaWFQbGF5ZXI6OmNh
Y2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0CiAgICAgcmV0dXJuIGNs
aWVudCgpLm1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlhUGxh
eWVyOjprZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBjbGll
bnQoKS5tZWRpYVBsYXllcktleU5lZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBlYmJhZDE2YTY1YWI1M2Vh
ZmZjZmEyNjI3NmI4MmM5ZjZhN2Q2NWViLi4yZmNkNDJhZjBhYmJlNDIzYzFmZWY3OWFiZTgzOWNi
OTVmZjljODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKQEAgLTg1LDYgKzg1LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogY2xh
c3MgTmF0aXZlSW1hZ2U7CiBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBQbGF0Zm9ybVRpbWVSYW5nZXM7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbjsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCkBAIC0yMDUsNyAr
MjA2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAg
ICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5
SWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1l
ZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7IH0KICNlbmRpZgogCkBAIC01NTcsNyArNTU4LDcgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBj
YWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdDsKLSAgICB2b2lkIGtl
eU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSk7CisgICAgdm9pZCBrZXlOZWVkZWQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCA1NmI1
OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyLi5kNTlmZTQ4MDRkNThkZmU3OGNi
NWJlYTcwNzRiMmU2ODcwNWMxZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTMwLDcg
KzMwLDkgQEAKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2luY2x1ZGUgIkNETUluc3RhbmNl
U2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9PYnNl
cnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hh
c2hTZXQuaD4KIAogT0JKQ19DTEFTUyBBVkNvbnRlbnRLZXlSZXBvcnRHcm91cDsKIE9CSkNfQ0xB
U1MgQVZDb250ZW50S2V5UmVxdWVzdDsKQEAgLTExNyw2ICsxMTksMTMgQEAgcHVibGljOgogICAg
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdy
b3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRL
ZXlSZXF1ZXN0KikgY29uc3Q7CiAKKyAgICBib29sIGlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMm
KSBjb25zdDsKKworICAgIHVzaW5nIEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2
ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFkZEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyKGNvbnN0
IEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB2b2lkIHNlc3Npb25LZXlTdGF0
dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVVbmV4cGVjdGVkUmVxdWVzdHMoVmVj
dG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7CiAKQEAgLTEzNCw2ICsxNDMs
NyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZl
Y3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+
IG1fc2Vzc2lvbnM7CiAgICAgSGFzaFNldDxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+
IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzOworICAgIFdlYWtIYXNoU2V0PEtleVN0YXR1c2VzQ2hh
bmdlZE9ic2VydmVyPiBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZlcnM7CiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpAQCAtMTg2LDExICsxOTYsMTQgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsK
IAorICAgIGNvbnN0IEtleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMoKSBjb25zdCB7IHJldHVy
biBtX2tleVN0YXR1c2VzOyB9CisgICAgS2V5U3RhdHVzVmVjdG9yIGNvcHlLZXlTdGF0dXNlcygp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKTsKICAg
ICBib29sIGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUpIGNvbnN0OwogCi0gICAg
S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5
SUQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lk
IG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVlc3Qo
KSBjb25zdDsKIApAQCAtMjE2LDYgKzIyOSw3IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBVcGRh
dGVSZXNwb25zZUNvbGxlY3RvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlUmVzcG9uc2VD
b2xsZWN0b3I+IG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I7CisgICAgS2V5U3RhdHVzVmVjdG9y
IG1fa2V5U3RhdHVzZXM7CiAKICAgICBWZWN0b3I8UmVxdWVzdD4gbV9wZW5kaW5nUmVxdWVzdHM7
CiAgICAgVmVjdG9yPFJlcXVlc3Q+IG1fcmVxdWVzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CmluZGV4IGNmZTA0OGE5MzhjMDVkZjc0NWM3MTYzNTZhZDFiM2I5MGE1OWViNzguLmZkNjE1MmUx
ODY3ZDRlNmE2NzJiZWYxNzA3MGNhNzYyOTEyNmY0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCkBAIC02MTcsNiArNjE3LDM3IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMmIGtleXMpIGNvbnN0Cit7CisgICAgZm9yIChh
dXRvJiBzZXNzaW9uSW50ZXJmYWNlIDogbV9zZXNzaW9ucykgeworICAgICAgICBpZiAoIXNlc3Np
b25JbnRlcmZhY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGF1dG8m
IGtleVN0YXR1c1BhaXIgOiBzZXNzaW9uSW50ZXJmYWNlLT5rZXlTdGF0dXNlcygpKSB7CisgICAg
ICAgICAgICBpZiAoa2V5U3RhdHVzUGFpci5zZWNvbmQgIT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXM6OlVzYWJsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgaWYgKGtleXMuZmluZElmKFsmXSAoYXV0byYga2V5KSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGtleS5nZXQoKSA9PSBrZXlTdGF0dXNQYWlyLmZpcnN0LmdldCgpOworICAgICAgICAgICAg
fSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcihjb25zdCBLZXlT
dGF0dXNlc0NoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9rZXlTdGF0dXNDaGFu
Z2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJikKK3sKKyAgICBtX2tleVN0YXR1
c0NoYW5nZWRPYnNlcnZlcnMuZm9yRWFjaChbXSAoYXV0byYgb2JzZXJ2ZXIpIHsKKyAgICAgICAg
b2JzZXJ2ZXIoKTsKKyAgICB9KTsKK30KKwogQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMo
UmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmIGluc3RhbmNlKQogICAg
IDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKICAgICAsIG1fZGVsZWdhdGUoYWRvcHRO
UyhbW1dlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBh
cmVudDp0aGlzXSkpCkBAIC0xMzA2LDEzICsxMzM3LDE1IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNv
bnRlCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogeworICAgIHVw
ZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV91cGRhdGVSZXNwb25zZUNvbGxlY3Rvcikg
ewogICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yLT5hZGRTdWNjZXNzZnVsUmVzcG9u
c2UocmVxdWVzdCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
bV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spIHsKLSAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChrZXlTdGF0dXNlcygpKSwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxi
YWNrKGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9uYWwoY29weUtleVN0YXR1c2VzKCkpLCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0
ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogCkBAIC0xNDA1LDcgKzE0MzgsNyBAQCBzdGF0aWMg
YXV0byByZXF1ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZDb250ZW50S2V5UmVxdWVzdFN0YXR1cyBz
dGF0dXMpCiAgICAgfQogfQogCi1DRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzKHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRpc3BsYXlJRCkgY29uc3QKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVLZXlTdGF0dXNl
cyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5SUQpCiB7CiAgICAgS2V5
U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOwogCkBAIC0xNDI3LDcgKzE0NjAsMTkgQEAgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjoKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBrZXlTdGF0
dXNlczsKKyAgICBtX2tleVN0YXR1c2VzLnN3YXAoa2V5U3RhdHVzZXMpOworCisgICAgbV9pbnN0
YW5jZS0+c2Vzc2lvbktleVN0YXR1c2VzQ2hhbmdlZCgqdGhpcyk7Cit9CisKK2F1dG8gQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMoKSBj
b25zdCAtPiBLZXlTdGF0dXNWZWN0b3IKK3sKKyAgICBLZXlTdGF0dXNWZWN0b3IgY29waWVkS2V5
U3RhdHVzZXM7CisgICAgY29waWVkS2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X2tleVN0YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBzdGF0dXMgOiBtX2tleVN0YXR1
c2VzKQorICAgICAgICBjb3BpZWRLZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBzdGF0dXMu
Zmlyc3QuY29weVJlZigpLCBzdGF0dXMuc2Vjb25kIH0pOworICAgIHJldHVybiBjb3BpZWRLZXlT
dGF0dXNlczsKKwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlv
bkNoYW5nZWQoYm9vbCBvYnNjdXJlZCkKQEAgLTE0MzgsOCArMTQ4MywxMCBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVU
b0luc3VmZmljaWVudAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwg
b2JzY3VyZWQpOwogICAgIG1fb3V0cHV0T2JzY3VyZWQgPSBvYnNjdXJlZDsKIAorICAgIHVwZGF0
ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT51
cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcygpKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZUtleVN0YXR1c2VzKGNvcHlLZXlTdGF0dXNlcygpKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0Rp
ZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKQpAQCAtMTQ5
Miw5ICsxNTM5LDEzIEBAIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3RhdHVzPiBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnByb3RlY3RpCiAKIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVQcm90ZWN0aW9uU3RhdHVz
Rm9yRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKLSAgICBpZiAobV9y
ZXF1ZXN0cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgIGlmIChtX3JlcXVlc3RzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhr
ZXlTdGF0dXNlcyhkaXNwbGF5SUQpKTsKKworICAgIHVwZGF0ZUtleVN0YXR1c2VzKGRpc3BsYXlJ
RCk7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0
dXNlcyhjb3B5S2V5U3RhdHVzZXMoKSk7CiB9CiAKIGJvb2wgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uT3JHcm91cCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaApp
bmRleCA3MTlhMTFmZTIyOWJlZjBkNDNjOWMzZWZkNWQ5MDIwODBlNzZjN2YwLi45MGQyNzNkMDc5
NjFmYzk4NmZiN2M0NTZmZjczMzYyYzE0ZWM1ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKQEAgLTc0LDcgKzc0
LDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxXZWJDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbkRlbGVnYXRlPiBtX2NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU7CiAgICAgUmV0YWlu
UHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1fa2V5UmVxdWVzdDsKICAgICBSZWZQdHI8VWludDhB
cnJheT4gbV9pZGVudGlmaWVyOwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2luaXREYXRhOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1faW5pdERhdGE7CiAgICAgUmV0YWluUHRyPE5TRGF0
YT4gbV9leHBpcmVkU2Vzc2lvbjsKICAgICBWZWN0b3I8aW50PiBtX3Byb3RvY29sVmVyc2lvbnM7
CiAgICAgaW50IG1fY2RtVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggN2VjNTc3NDI2MTBjMzg0
YmU2ZGRkYzU4NzRmZjM5NWU1YjVmMmVkYy4uNzJhMDk1MzA5Yzg0NWJkY2NmZGU3MDdiZTRiNzA3
MGM1ZDUxZWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkxl
Z2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIK
KyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZv
dW5kYXRpb24vQVZFcnJvci5oPgpAQCAtMTUxLDcgKzE1Miw3IEBAIFJlZlB0cjxVaW50OEFycmF5
PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluCiAgICAgaWYgKG1fY2RtVmVyc2lvbiA9PSAyKQogICAgICAgICBtX2lkZW50aWZpZXIg
PSBpbml0RGF0YTsKICAgICBlbHNlCi0gICAgICAgIG1faW5pdERhdGEgPSBpbml0RGF0YTsKKyAg
ICAgICAgbV9pbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLT5kYXRhKCks
IGluaXREYXRhLT5sZW5ndGgoKSk7CiAKICAgICBBU1NFUlQoIW1fY2VydGlmaWNhdGUpOwogICAg
IFN0cmluZyBjZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlmaWNhdGUiX3MpOwpAQCAtMjczLDEyICsy
NzQsMTIgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKFVpbnQ4
QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgIH0KIAogICAgIGlmICghbV9rZXlS
ZXF1ZXN0KSB7Ci0gICAgICAgIE5TRGF0YSogbnNJbml0RGF0YSA9IG1faW5pdERhdGEgPyBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6bV9pbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDptX2luaXREYXRhLT5s
ZW5ndGgoKV0gOiBuaWw7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IG5zSW5pdERhdGEgPSBt
X2luaXREYXRhID8gbV9pbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkgOiBuaWw7CiAgICAgICAgIE5T
RGF0YSogbnNJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyID8gW05TRGF0YSBkYXRhV2l0aEJ5dGVz
Om1faWRlbnRpZmllci0+ZGF0YSgpIGxlbmd0aDptX2lkZW50aWZpZXItPmxlbmd0aCgpXSA6IG5p
bDsKICAgICAgICAgaWYgKFtjb250ZW50S2V5U2Vzc2lvbigpIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IocHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6aW5pdGlhbGl6
YXRpb25EYXRhOm9wdGlvbnM6KV0pCi0gICAgICAgICAgICBbY29udGVudEtleVNlc3Npb24oKSBw
cm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjpuc0lkZW50aWZpZXIgaW5pdGlh
bGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxdOworICAgICAgICAgICAgW2NvbnRl
bnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6bnNJ
ZGVudGlmaWVyIGluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRhLmdldCgpIG9wdGlvbnM6bmls
XTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vz
c0NvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpu
aWxdOworICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEuZ2V0KCkgb3B0aW9uczpuaWxdOwog
ICAgIH0KIAogICAgIGlmIChzaG91bGRHZW5lcmF0ZUtleVJlcXVlc3QpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IDdhYjg5MTFmMDRlOGY3ZWYyNDUxMDhiNzU3MDc5NDU2N2U0ZWMzZWYu
LjJmNjVhNTc5NmUzNzNhY2FmZTMzMWVlYmU3N2UwZWM0Njg4NmU5ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMjAxNiw4ICsyMDE2LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIK
ICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFC
dWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJh
eS0+c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oU3RyaW5nVmlldyhr
ZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJLmxlbmd0aCgpIC8g
c2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBhdXRvIGluaXREYXRhID0gVWlu
dDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsK
LSAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisgICAgICAgIGF1
dG8gaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4geyBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGggfSk7
CisgICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA0NSw5ICsyMDQ1LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICBpZiAoc2NoZW1lID09ICJjbGVhcmtleSIp
IHsKICAgICAgICAgU3RyaW5nIGtleUlEID0gW1tbYXZSZXF1ZXN0IHJlcXVlc3RdIFVSTF0gcmVz
b3VyY2VTcGVjaWZpZXJdOwogICAgICAgICBhdXRvIGVuY29kZWRLZXlJZCA9IFBBTDo6VVRGOEVu
Y29kaW5nKCkuZW5jb2RlKGtleUlELCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OlVSTEVuY29k
ZWRFbnRpdGllcyk7Ci0KLSAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShlbmNvZGVkS2V5SWQuc2l6ZSgpKTsKLSAgICAgICAgaW5pdERhdGEtPnNldFJhbmdlKGVuY29k
ZWRLZXlJZC5kYXRhKCksIGVuY29kZWRLZXlJZC5zaXplKCksIDApOworICAgICAgICBhdXRvIGlu
aXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShlbmNvZGVkS2V5SWQpKTsKIAog
ICAgICAgICBhdXRvIGtleURhdGEgPSBwbGF5ZXIoKS0+Y2FjaGVkS2V5Rm9yS2V5SWQoa2V5SUQp
OwogICAgICAgICBpZiAoa2V5RGF0YSkgewpAQCAtMjA1NSw3ICsyMDUzLDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVz
b3VyY2UoQVZBc3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0g
ICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworICAgICAgICBwbGF5
ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhKTsKIAogICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91
bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGJjYWQxMjU0MzYzYTE4N2M2OGEzMzY4ZmE3YTdh
MTQ4NTE1YjgyZTUuLjI5ODNjZWNhZGVhMjJlM2YyNTViMDc5Yzk2YTJmNzg5MWNkM2EzMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCkgb3ZlcnJpZGUgeyBvdXRwdXRPYnNjdXJlZER1
ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChmYWxzZSk7IH0KIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQotICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIGtleU5lZWRlZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBlOTVmOGMzY2FjZjBhZGUxODExZjEx
YmFlNjgzYmU0YjVmYjE1NTMzLi4xYzMzMjcyNTQ2YjRlZjhiNzk3ODhkOTA1MjdhNTBlNTRkNmQ0
OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMTQzLDcgKzExNDMsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Q0RNU2Vzc2lvbihM
ZWdhY3lDRE1TZXNzaW9uKiBzZXNzaQogI2VuZGlmIC8vIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShF
TkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmtleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewogICAgIG1fcGxheWVyLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA5MDA3ZGNjYTlkZWUxMGVl
YmMzYjMxZDYzMzgwNjBkN2U5MjM3MDU2Li43ZWMxMGMxNDA0NzRiNmIxMDAwOTdjOWFmNWFlOTNi
NGE4ODIwZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
aApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIHVz
aW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBpeGVsQnVm
ZmVyOwogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJsaWMgTWVkaWFTYW1wbGUgewpA
QCAtNjEsNiArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7
CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQogICAg
IHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsK
QEAgLTgwLDYgKzgzLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Qnl0ZVJhbmdlT2Zmc2V0
KHNpemVfdCk7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVO
VEtFWVNFU1NJT04pCisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj47CisgICAgdm9pZCBzZXRLZXlJRHMoS2V5SURzJiYga2V5SURzKSB7IG1fa2V5
SURzID0gV1RGTW92ZShrZXlJRHMpOyB9CisgICAgY29uc3QgS2V5SURzJiBrZXlJRHMoKSBjb25z
dCB7IHJldHVybiBtX2tleUlEczsgfQorICAgIEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4gbV9r
ZXlJRHM7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFT
YW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmKTsKQEAgLTk0LDYg
KzEwNCwyOCBAQCBwcm90ZWN0ZWQ6CiAgICAgQXRvbVN0cmluZyBtX2lkOwogICAgIFZpZGVvUm90
YXRpb24gbV9yb3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKICAgICBib29sIG1fbWly
cm9yZWQgeyBmYWxzZSB9OworCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShB
VkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IG1fa2V5SURzOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgTG9nQXJndW1l
bnQ7Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2FtcGxl
QVZGT2JqQz4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6TWVk
aWFTYW1wbGVBVkZPYmpDJiBzYW1wbGUpCisgICAgeworICAgICAgICByZXR1cm4gc2FtcGxlLnRv
SlNPTlN0cmluZygpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQykKK3N0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgc2FtcGxlKSB7IHJldHVy
biBzYW1wbGUucGxhdGZvcm1TYW1wbGVUeXBlKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6
OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgK
aW5kZXggNzIyNDk3ZTBiYzQyMGNkNGU2MmIwNjI0OTIzYmZkOGY5ZDU0MDYyMi4uODk1MWIyNDdk
ZDAwMTUwZWQxNmNlMDQxYWNjZWNiYmZjYmVkNWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3Rh
dGUoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqLCBib29sIGFjdGl2ZSk7CiAgICAgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyopOwogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQotICAgIHZvaWQgc291cmNlQnVmZmVyS2V5TmVlZGVkKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDKiwgVWludDhBcnJheSopOworICAgIHZvaWQgc291cmNlQnVmZmVyS2V5TmVlZGVkKFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKICAg
ICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmlu
ZGV4IDkyN2QxMzAzMTFlOGVlYzhiMDIxNTZhYzYzMjgwYTliZjlkMDgwOGMuLjEyMDFiNzI2YmQw
NDdjNWYxMTBmNzE0YWIxMDIzMTlhNjE2MjJjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTk1LDkgKzE5NSwxMCBA
QCB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRD
aGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VCdQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlcktl
eU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogYnVmZmVyLCBVaW50OEFycmF5KiBp
bml0RGF0YSkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5
TmVlZGVkKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgbV9zb3VyY2VCdWZmZXJzTmVlZGluZ1Nlc3Npb25zLmFw
cGVuZChidWZmZXIpOworCiAgICAgaWYgKG1fcGxheWVyKQogICAgICAgICBtX3BsYXllci0+a2V5
TmVlZGVkKGluaXREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMuaAppbmRleCBjMjJlNzI1Zjg1NDZmMjc4ZmY2NTdhNWY0YzU3
MmI5Mjk1MTVlZDQ4Li43ODExMjA0Y2NmZDFkODFiMTUwOTJiNTc1YTgyOTgwZDYyYzJmMTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURh
dGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwogICAgIHZvaWQgd2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJh
Y2tJRCk7CiAgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEKE5TRGF0YSosIHVpbnQ2NF90IHRyYWNrSUQpOworICAgIHZvaWQgZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3BlY2lmaWVyRm9yVHJhY2tJRChOU0RhdGEqLCB1aW50
NjRfdCB0cmFja0lEKTsKIAogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CmluZGV4IGFiZDgxZTVmM2MxZWE1MGU0MjJlMmZhM2MyYmExZDE4Y2ZlMzFhZTIuLmFhMTU4NDA0
YjEwZTQ0NGFmNmU1ZWRkYzhkYWQ2YmE5NmVkNWNiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtNTcsNiArNTcsMTIg
QEAKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlz
dGVuZXIKIAorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorQGludGVyZmFjZSBBVkNv
bnRlbnRLZXlTcGVjaWZpZXIgKFdlYkNvcmVQcml2YXRlKQorQHByb3BlcnR5IChyZWFkb25seSkg
TlNEYXRhICppbml0aWFsaXphdGlvbkRhdGE7CitAZW5kCisjZW5kaWYKKwogQGludGVyZmFjZSBX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciA6IE5TT2JqZWN0PEFWU3RyZWFtRGF0YVBhcnNl
ck91dHB1dEhhbmRsaW5nPiB7CiAgICAgV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
QyogX3BhcmVudDsKICAgICBBVlN0cmVhbURhdGFQYXJzZXIqIF9wYXJzZXI7CkBAIC0xMzMsNiAr
MTM5LDE2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIEFTU0VS
VF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsK
ICAgICBfcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKGluaXREYXRhLCB0cmFja0lEKTsKIH0KKworI2lmIEhBVkUoQVZDT05URU5U
S0VZU1BFQ0lGSUVSKQorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJz
ZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOihBVkNv
bnRlbnRLZXlTcGVjaWZpZXIgKilrZXlTcGVjaWZpZXIgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50
VHJhY2tJRCl0cmFja0lECit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBz
dHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIGlmIChba2V5U3BlY2lmaWVyIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5pdGlhbGl6YXRpb25EYXRhKV0pCisgICAgICAgIF9w
YXJlbnQtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoa2V5
U3BlY2lmaWVyLmluaXRpYWxpemF0aW9uRGF0YSwgdHJhY2tJRCk7Cit9CisjZW5kaWYKKwogQGVu
ZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMzQsMTAgKzM1MCwxNCBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGbwogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBu
c0luaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKQogewotICAgIGF1dG8gaW5pdERhdGEgPSBVaW50
OEFycmF5OjpjcmVhdGUobnNJbml0RGF0YS5sZW5ndGgpOwotICAgIFtuc0luaXREYXRhIGdldEJ5
dGVzOmluaXREYXRhLT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhLT5sZW5ndGgoKV07CisgICAgbV9k
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNJbml0RGF0YSksIHRyYWNrSUQpOworfQogCi0g
ICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2soV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQpOwordm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JU
cmFja0lEKE5TRGF0YSogbnNJbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkKK3sKKyAgICBtX2Nh
bGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMg
fSwgbnNJbml0RGF0YSA9IHJldGFpblB0cihuc0luaXREYXRhKSwgdHJhY2tJRF0geworICAgICAg
ICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJh
Y2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNJbml0RGF0YS5nZXQoKSksIHRyYWNrSUQpOworICAg
IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaAppbmRleCA3NTRiMWUyZWVjMDJkZjMzOTVlNWNkYjVjMDdmOGU4OGE5
MzVjZDA4Li4zNzZhNmZjMTQzODExZWViODU2N2JjYjA4ZTdkZGQzYjFmZjEzY2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtOTUsNyArOTYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0g
bnVsbHB0cjsgfQogCiAgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKTsKLSAgICB2b2lkIGRpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVp
bnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKKyAg
ICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNl
bWFwaG9yZT4pOworCisgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlm
aWVyRm9yVHJhY2tJRChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1aW50NjRfdCB0cmFja0lEKTsKIAog
ICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0OwogCkBAIC0xMzIsNyArMTM1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWQoKTsKICAgICAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBVaW50OEFycmF5KiBpbml0RGF0YSgpIHsgcmV0
dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZmZXIqIGluaXREYXRhKCkgeyBy
ZXR1cm4gbV9pbml0RGF0YS5nZXQoKTsgfQogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKQEAgLTE1MCw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIEluaXRpYWxpemF0
aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2Vn
bWVudDsKICAgICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9u
U2VnbWVudCYmKTsKICAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQz
Ml90KTsKLSAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNh
bXBsZT4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAg
IHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwogCiAgICAg
Ly8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKICAgICB2b2lkIGFwcGVuZChSZWY8U2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKQEAgLTE3NCw2ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIE1l
ZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgTWVkaWFUaW1lIGR1
cmF0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlh
U2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QgdHJhY2tJRCk7CiAgICAgdm9pZCBkaWRCZWNvbWVS
ZWFkeUZvck1vcmVTYW1wbGVzKHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgYXBwZW5kQ29t
cGxldGVkKCk7CiAgICAgdm9pZCBkZXN0cm95U3RyZWFtRGF0YVBhcnNlcigpOwpAQCAtMTg2LDYg
KzE5MCwxMiBAQCBwcml2YXRlOgogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5E
CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNv
bnN0OworICAgIGJvb2wgY2FuRW5xdWV1ZVNhbXBsZSh1aW50NjRfdCB0cmFja0lELCBjb25zdCBN
ZWRpYVNhbXBsZUFWRk9iakMmKTsKKyAgICBib29sIHRyYWNrSXNCbG9ja2VkKHVpbnQ2NF90IHRy
YWNrKSBjb25zdDsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05U
RU5US0VZU0VTU0lPTikKKyAgICB2b2lkIGtleVN0YXR1c2VzQ2hhbmdlZCgpOworI2VuZGlmCiAK
ICAgICBWZWN0b3I8UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPj4gbV92aWRlb1RyYWNrczsKICAg
ICBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPj4gbV9hdWRpb1RyYWNrczsKQEAgLTE5
Nyw3ICsyMDcsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcm9jZXNzaW5nSW5pdGlhbGl6YXRp
b25TZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUGVuZGluZ0FwcGVuZENvbXBsZXRl
ZENhbGxiYWNrIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5k
aW5nVHJhY2tDaGFuZ2VDYWxsYmFja3M7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwg
UmVmPE1lZGlhU2FtcGxlPj4+IG1fbWVkaWFTYW1wbGVzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8
dWludDY0X3QsIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+Pj4gbV9tZWRpYVNhbXBsZXM7CisgICAg
RGVxdWU8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4+IG1fYmxv
Y2tlZFNhbXBsZXM7CiAKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IG1fZGlzcGxheUxheWVyOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4K
QEAgLTIxNSwxMyArMjI2LDI3IEBAIHByaXZhdGU6CiAKICAgICBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDKiBtX21lZGlhU291cmNlOwogICAgIGJvb2wgbV9pc0FjdGl2ZSB7IGZhbHNlIH07CisK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBSZWZQdHI8VWludDhBcnJh
eT4gbV9pbml0RGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2luaXREYXRhOwogICAg
IFdlYWtQdHI8Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQz4gbV9zZXNzaW9uIHsgbnVsbHB0
ciB9OwogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRF
TlRLRVlTRVNTSU9OKQorICAgIHVzaW5nIEtleUlEcyA9IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OworICAgIHN0cnVjdCBUcmFja0luaXREYXRhIHsKKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGE7CisgICAgICAgIEtleUlEcyBrZXlJRHM7CisgICAgfTsK
KyAgICB1c2luZyBUcmFja0luaXREYXRhTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgVHJhY2tJbml0
RGF0YT47CisgICAgVHJhY2tJbml0RGF0YU1hcCBtX3BlbmRpbmdQcm90ZWN0ZWRUcmFja0luaXRE
YXRhTWFwOworICAgIFRyYWNrSW5pdERhdGFNYXAgbV9wcm90ZWN0ZWRUcmFja0luaXREYXRhTWFw
OworCisgICAgdXNpbmcgVHJhY2tLZXlJRHNNYXAgPSBIYXNoTWFwPHVpbnQ2NF90LCBLZXlJRHM+
OworICAgIFRyYWNrS2V5SURzTWFwIG1fY3VycmVudFRyYWNrSURzOworCiAgICAgUmVmUHRyPENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFVuaXF1ZVJl
ZjxPYnNlcnZlcjx2b2lkKCk+PiBtX2tleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyOworICAgIEtl
eUlEcyBtX2tleUlEczsKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1f
Y2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTYxYTNhN2ZjYzk2Mzc5OGY2ODk4YzAxMjdiZDc0YmIz
MzBiZjdhMS4uYzk2NzZkMmY0YjY5MTg3ZjYwZWIwYzgxZGRkYWZjMzU5OGFjMDU0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KQEAgLTc2LDYgKzc2LDEyIEBAIC0gKHZvaWQpZXhwZWN0TWluaW11bVVwY29taW5nU2FtcGxl
QnVmZmVyUHJlc2VudGF0aW9uVGltZTogKENNVGltZSltaW5pbXVtVXBjb21pCiAtICh2b2lkKXJl
c2V0VXBjb21pbmdTYW1wbGVCdWZmZXJQcmVzZW50YXRpb25UaW1lRXhwZWN0YXRpb25zOwogQGVu
ZAogCitAaW50ZXJmYWNlIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIChXZWJDb3JlU2FtcGxl
QnVmZmVyS2V5U2Vzc2lvbikgPEFWQ29udGVudEtleVJlY2lwaWVudD4KK0BlbmQKKworQGludGVy
ZmFjZSBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgKFdlYkNvcmVTYW1wbGVCdWZmZXJLZXlT
ZXNzaW9uKSA8QVZDb250ZW50S2V5UmVjaXBpZW50PgorQGVuZAorCiAjcHJhZ21hIG1hcmsgLQog
I3ByYWdtYSBtYXJrIEFWU3RyZWFtU2Vzc2lvbgogCkBAIC0yNzUsNiArMjgxLDI0IEBAIHN0YXRp
YyB1aW50NjRfdCBuZXh0TWFwSUQoKQogICAgIHJldHVybiArK21hcElEOwogfQogCitzdGF0aWMg
Ym9vbCBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpCit7CisgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHMgPSBmYWxzZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIFsmXSB7CisgICAgICAgIHN1
cHBvcnRzID0gW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyQ2xhc3MoKSBjb25m
b3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKEFWQ29udGVudEtleVJlY2lwaWVudCldCisgICAgICAg
ICAgICAmJiBbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCkgY29uZm9y
bXNUb1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRlbnRLZXlSZWNpcGllbnQpXTsKKyAgICB9KTsK
KyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK3N0YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBjb3B5S2V5SURzKGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IGtleUlEcykKK3sKKyAgICByZXR1cm4ga2V5SURzLm1hcChbXSAoYXV0byYga2V5
SUQpIHsKKyAgICAgICAgcmV0dXJuIGtleUlELmNvcHlSZWYoKTsKKyAgICB9KTsKK30KKwogc3Rh
dGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJl
ZiwgY29uc3Qgdm9pZCogbGlzdGVuZXIsIENGU3RyaW5nUmVmIG5vdGlmaWNhdGlvbk5hbWUsIGNv
bnN0IHZvaWQqLCBDRlR5cGVSZWYpCiB7CiAgICAgaWYgKCFDRkVxdWFsKFBBTDo6a0NNU2FtcGxl
QnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQsIG5vdGlmaWNhdGlvbk5h
bWUpKQpAQCAtMzA3LDYgKzMzMSw5IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAgICAgLCBt
X2Vycm9yTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciBh
bGxvY10gaW5pdFdpdGhQYXJlbnQ6KnRoaXNdKSkKICAgICAsIG1fYXBwZW5kUXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIGRhdGEgcGFyc2VyIHF1ZXVl
IikpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVudCkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgLCBtX2tleVN0YXR1c2VzQ2hh
bmdlZE9ic2VydmVyKG1ha2VVbmlxdWVSZWY8T2JzZXJ2ZXI8dm9pZCgpPj4oW3RoaXNdIHsga2V5
U3RhdHVzZXNDaGFuZ2VkKCk7IH0pKQorI2VuZGlmCiAgICAgLCBtX21hcElEKG5leHRNYXBJRCgp
KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGFyZW50LT5sb2dn
ZXIoKSkKQEAgLTM2NCw2ICszOTEsOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogCiAgICAg
Y2xlYXJUcmFja3MoKTsKIAorICAgIG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5zd2FwKG1f
cGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXApOworICAgIG1fcGVuZGluZ1Byb3RlY3Rl
ZFRyYWNrSW5pdERhdGFNYXAuY2xlYXIoKTsKKwogICAgIGZvciAoYXV0byB2aWRlb1RyYWNrSW5m
byA6IHNlZ21lbnQudmlkZW9UcmFja3MpIHsKICAgICAgICAgdmlkZW9UcmFja0luZm8udHJhY2st
PnNldFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCB0aGlzXSAoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKSB7CiAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNDU4LDEwICs0ODgsMTYgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMy
X3QgY29kZSkKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVm
PE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3Zp
ZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1w
bGUsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewogICAgIFVO
VVNFRF9QQVJBTShtZWRpYVR5cGUpOwogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYg
SEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcHJvdGVj
dGVkVHJhY2tJbml0RGF0YU1hcC5maW5kKHRyYWNrSWQpOworICAgIGlmIChmaW5kUmVzdWx0ICE9
IG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5lbmQoKSkKKyAgICAgICAgbWVkaWFTYW1wbGUt
PnNldEtleUlEcyhjb3B5S2V5SURzKGZpbmRSZXN1bHQtPnZhbHVlLmtleUlEcykpOworI2VuZGlm
CisKICAgICBpZiAobV9wcm9jZXNzaW5nSW5pdGlhbGl6YXRpb25TZWdtZW50KSB7CiAgICAgICAg
IERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS5nZXQoKSk7CiAgICAgICAgIG1f
bWVkaWFTYW1wbGVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih0cmFja0lkLCBXVEZNb3ZlKG1lZGlh
U2FtcGxlKSkpOwpAQCAtNTA4LDcgKzU0NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGCiAj
ZW5kaWYKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJh
eT4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFz
U2Vzc2lvblNlbWFwaG9yZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFw
aG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSkKIHsKICAgICBhdXRvIHBsYXllciA9IHRoaXMtPnBs
YXllcigpOwogICAgIGlmICghcGxheWVyKQpAQCAtNTE5LDExICs1NTUsMTUgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm8KIAogICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CiAgICAg
bV9pbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpOwotICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJj
ZUJ1ZmZlcktleU5lZWRlZCh0aGlzLCBtX2luaXREYXRhLmdldCgpKTsKKyAgICBtX21lZGlhU291
cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgKm1faW5pdERhdGEpOworCiAgICAgaWYg
KGF1dG8gc2Vzc2lvbiA9IHBsYXllci0+Y2RtU2Vzc2lvbigpKSB7Ci0gICAgICAgIGlmIChhdXRv
IHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKKyAgICAgICAgaWYgKHNhbXBsZUJ1
ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgIC8vIG5vLW9w
LgorICAgICAgICB9IGVsc2UgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNl
cigpKQogICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKHBhcnNlcik7Ci0gICAgICAgIGhh
c1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBpZiAoaGFzU2Vzc2lvblNlbWFw
aG9yZSkKKyAgICAgICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC01MzMsMTQgKzU3MywxNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGbwogICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IGhhc1Nlc3Npb25TZW1h
cGhvcmU7CiAgICAgCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRF
TlRLRVlTRVNTSU9OKQotICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2luaXREYXRhLT5kYXRhKCksIG1faW5pdERhdGEtPmJ5dGVMZW5ndGgoKSk7Ci0gICAg
YXV0byBrZXlJRHMgPSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNT
aW5mKGluaXREYXRhQnVmZmVyKTsKKyAgICBhdXRvIGtleUlEcyA9IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoKm1faW5pdERhdGEpOwogICAgIGlmICgha2V5
SURzKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3BlbmRpbmdQcm90ZWN0ZWRUcmFja0luaXRE
YXRhTWFwLnNldCh0cmFja0lELCBUcmFja0luaXREYXRhIHsgbV9pbml0RGF0YS5jb3B5UmVmKCks
ICprZXlJRHMgfSk7CisKICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewogICAgICAgICBpZiAoYXV0
byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKGtleUlE
cy52YWx1ZSgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFt
RGF0YVBhcnNlcigpKQorICAgICAgICAgICAgaWYgKHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBv
cnRLZXlTZXNzaW9uKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBuby1vcC4KKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCiAgICAg
ICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250
ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgICAgICAgICBpZiAobV9oYXNTZXNzaW9uU2Vt
YXBob3JlKSB7CiAgICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwo
KTsKQEAgLTU1Miw3ICs1OTUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIH0KIAog
ICAgIG1fa2V5SURzID0gV1RGTW92ZShrZXlJRHMudmFsdWUoKSk7Ci0gICAgcGxheWVyLT5pbml0
aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCgic2luZiIsIGluaXREYXRhQnVmZmVyLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpKTsKKyAgICBwbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKCJzaW5mIiwgbV9pbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAKICAgICBt
X3dhaXRpbmdGb3JLZXkgPSB0cnVlOwogICAgIHBsYXllci0+d2FpdGluZ0ZvcktleUNoYW5nZWQo
KTsKQEAgLTU4Nyw3ICs2MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjph
cHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICB3ZWFrVGhpcy0+ZGlkRW5j
b3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBtX3Bh
cnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdIChSZWY8TWVkaWFTYW1wbGU+
JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgewor
ICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0gKFJlZjxNZWRp
YVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSkgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8IGFib3J0Q2FsbGVkICE9IHdlYWtUaGlzLT5tX2Fib3J0Q2FsbGVkKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjE2LDcgKzY1OSw3IEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAg
IH0KICAgICB9KTsKIAotICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNlbWFwaG9yZSwgYWJvcnRDYWxs
ZWQgPSBtX2Fib3J0Q2FsbGVkXShSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgdWludDY0X3Qg
dHJhY2tJRCkgbXV0YWJsZSB7CisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBob3JlLCBhYm9y
dENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdKFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIHVp
bnQ2NF90IHRyYWNrSUQpIG11dGFibGUgewogICAgICAgICAvLyBDYWxsZWQgb24gdGhlIGRhdGEg
cGFyc2VyIHF1ZXVlLgogICAgICAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2Vt
YXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOwogICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBhYm9ydENhbGxlZCwgaW5p
dERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0g
KCkgbXV0YWJsZSB7CkBAIC02MzYsNiArNjc5LDEzIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIH0KICAg
ICB9KTsKIAorICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVu
dGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBh
Ym9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdIChSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCB1aW50NjRfdCB0cmFja0lEKSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMgfHwgYWJvcnRDYWxsZWQgIT0gd2Vha1RoaXMtPm1fYWJvcnRD
YWxsZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFdURk1vdmUoaW5p
dERhdGEpLCB0cmFja0lELCBudWxscHRyKTsKKyAgICB9KTsKKwogICAgIG1fcGFyc2luZ1N1Y2Nl
ZWRlZCA9IHRydWU7CiAKICAgICBtX2FwcGVuZFF1ZXVlLT5kaXNwYXRjaChbZGF0YSA9IFdURk1v
dmUoZGF0YSksIHdlYWtUaGlzID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0
aGlzKSwgcGFyc2VyID0gbV9wYXJzZXIsIGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0oKSBt
dXRhYmxlIHsKQEAgLTczNiw2ICs3ODYsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGVzdHJveVJlbmRlcmVycygpCiAgICAgICAgIFtyZW5kZXJlciBmbHVzaF07CiAgICAg
ICAgIFtyZW5kZXJlciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CiAgICAgICAgIFttX2Vycm9y
TGlzdGVuZXIgc3RvcE9ic2VydmluZ1JlbmRlcmVyOnJlbmRlcmVyLmdldCgpXTsKKworI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICAg
ICAgaWYgKG1fY2RtSW5zdGFuY2UgJiYgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNl
c3Npb24oKSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigp
IHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6cmVuZGVyZXIuZ2V0KCldOworI2VuZGlmCiAgICAg
fQogCiAgICAgW21fZXJyb3JMaXN0ZW5lciBpbnZhbGlkYXRlXTsKQEAgLTg0Myw2ICs4OTgsMTEg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVk
KEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaywKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVO
VEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJl
bmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+
Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnJlbmRlcmVyLmdldCgp
XTsKKyNlbmRpZgorCiAgICAgICAgICAgICBXZWFrUHRyIHdlYWtUaGlzIHsgKnRoaXMgfTsKICAg
ICAgICAgICAgIFtyZW5kZXJlciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XnsKICAgICAgICAgICAgICAgICBpZiAo
d2Vha1RoaXMpCkBAIC05MDksNyArOTY5LDI0IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OnNldENETUluc3RhbmNlKENETUluc3RhbmNlKiBpbnN0YW5jZSkKIAogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiAKKyAgICBpZiAoc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3Vw
cG9ydEtleVNlc3Npb24oKSAmJiBtX2NkbUluc3RhbmNlKSB7CisgICAgICAgIGlmIChtX2Rpc3Bs
YXlMYXllcikKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigp
IHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworCisgICAg
ICAgIGZvciAoYXV0byYgYXVkaW9SZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJlcnMudmFsdWVzKCkp
CisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVD
b250ZW50S2V5UmVjaXBpZW50OmF1ZGlvUmVuZGVyZXIuZ2V0KCldOworICAgIH0KKwogICAgIG1f
Y2RtSW5zdGFuY2UgPSBmcHNJbnN0YW5jZTsKKworICAgIGlmIChzYW1wbGVCdWZmZXJSZW5kZXJl
cnNTdXBwb3J0S2V5U2Vzc2lvbigpICYmIG1fY2RtSW5zdGFuY2UpIHsKKyAgICAgICAgaWYgKG1f
ZGlzcGxheUxheWVyKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNz
aW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5nZXQoKV07CisKKyAg
ICAgICAgZm9yIChhdXRvJiBhdWRpb1JlbmRlcmVyIDogbV9hdWRpb1JlbmRlcmVycy52YWx1ZXMo
KSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENv
bnRlbnRLZXlSZWNpcGllbnQ6YXVkaW9SZW5kZXJlci5nZXQoKV07CisgICAgfQorCiAgICAgYXR0
ZW1wdFRvRGVjcnlwdCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2UpOwpAQCAt
OTI2LDggKzEwMDMsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0ZW1w
dFRvRGVjcnlwdCgpCiAgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKLSAgICAg
ICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVj
aXBpZW50OnBhcnNlcl07CisgICAgaWYgKCFzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5
U2Vzc2lvbigpKSB7CisgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQ
YXJzZXIoKSkKKyAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9u
KCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOworICAgIH0KICAgICBpZiAobV9oYXNT
ZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFs
KCk7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51bGxwdHI7CkBAIC0xMTA1LDE5
ICsxMTg0LDg4IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgICAgIHBs
YXllci0+c2V0SGFzQXZhaWxhYmxlQXVkaW9TYW1wbGUocmVuZGVyZXIsIGZhbHNlKTsKIH0KIAor
Ym9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tJc0Jsb2NrZWQodWludDY0X3Qg
dHJhY2tJRCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNhbXBsZVBhaXIgOiBtX2Jsb2NrZWRT
YW1wbGVzKSB7CisgICAgICAgIGlmIChzYW1wbGVQYWlyLmZpcnN0ID09IHRyYWNrSUQpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6a2V5U3RhdHVzZXNDaGFuZ2VkKCkKK3sKKyAg
ICB3aGlsZSAoIW1fYmxvY2tlZFNhbXBsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8mIGZp
cnN0UGFpciA9IG1fYmxvY2tlZFNhbXBsZXMuZmlyc3QoKTsKKworICAgICAgICAvLyBJZiB3ZSBz
dGlsbCBjYW4ndCBlbnF1ZXVlIHRoZSBzYW1wbGUsIGJhaWwuCisgICAgICAgIGlmICghY2FuRW5x
dWV1ZVNhbXBsZShmaXJzdFBhaXIuZmlyc3QsIGZpcnN0UGFpci5zZWNvbmQpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gZmlyc3RQYWlyVGFrZW4gPSBtX2Jsb2NrZWRTYW1w
bGVzLnRha2VGaXJzdCgpOworICAgICAgICBlbnF1ZXVlU2FtcGxlKFdURk1vdmUoZmlyc3RQYWly
VGFrZW4uc2Vjb25kKSwgZmlyc3RQYWlyVGFrZW4uZmlyc3QpOworICAgIH0KK30KKyNlbmRpZgor
Citib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjYW5FbnF1ZXVlU2FtcGxlKHVpbnQ2
NF90IHRyYWNrSUQsIGNvbnN0IE1lZGlhU2FtcGxlQVZGT2JqQyYgc2FtcGxlKQoreworI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICAv
LyBJZiBzYW1wbGUgYnVmZmVycyBkb24ndCBzdXBwb3J0IEFWQ29udGVudEtleVNlc3Npb246IGVu
cXVldWUgc2FtcGxlCisgICAgaWYgKCFzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vz
c2lvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIGlmIHNhbXBsZSBpcyB1bmVu
Y3J5dHBlZDogZW5xdWV1ZSBzYW1wbGUKKyAgICBpZiAoc2FtcGxlLmtleUlEcygpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBpZiBzYW1wbGUgaXMgZW5jcnlwdGVk
LCBidXQgd2UgYXJlIG5vdCBhdHRhY2hlZCB0byBhIENETTogZG8gbm90IGVucXVldWUgc2FtcGxl
LgorICAgIGlmICghbV9jZG1JbnN0YW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gaWYgc2FtcGxlIGlzIGVuY3J5cHRlZCwgYW5kIGtleUlEcyBtYXRjaCB0aGUgY3VycmVudCBz
ZXQgb2Yga2V5SURzOiBlbnF1ZXVlIHNhbXBsZS4KKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX2N1
cnJlbnRUcmFja0lEcy5maW5kKHRyYWNrSUQpOworICAgIGlmIChmaW5kUmVzdWx0ICE9IG1fY3Vy
cmVudFRyYWNrSURzLmVuZCgpICYmIGZpbmRSZXN1bHQtPnZhbHVlID09IHNhbXBsZS5rZXlJRHMo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBpZiBzYW1wbGUncyBzZXQgb2Yga2V5
SURzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IHNldCBvZiBrZXlJRHMsIGNvbnN1bHQgd2l0
aCB0aGUgQ0RNCisgICAgLy8gdG8gZGV0ZXJtaW5lIGlmIHRoZSBrZXlJRHMgYXJlIHVzYWJsZTsg
aWYgc28sIHVwZGF0ZSB0aGUgY3VycmVudCBzZXQgb2Yga2V5SURzIGFuZCBlbnF1ZXVlIHNhbXBs
ZS4KKyAgICBpZiAobV9jZG1JbnN0YW5jZS0+aXNBbnlLZXlVc2FibGUoc2FtcGxlLmtleUlEcygp
KSkgeworICAgICAgICBtX2N1cnJlbnRUcmFja0lEcy5zZXQodHJhY2tJRCwgc2FtcGxlLmtleUlE
cygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyNl
bHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25z
dCBBdG9tU3RyaW5nJiB0cmFja0lEU3RyaW5nKQogewogICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1
ZV9vcigwKTsKICAgICBpZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1f
YXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgp
OwotICAgIGlmIChwbGF0Zm9ybVNhbXBsZS50eXBlICE9IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBs
ZUJ1ZmZlclR5cGUpCisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9iakM+KHNhbXBsZSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IHNhbXBsZUFWRk9i
akMgPSBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNh
bXBsZSkpOworICAgIGlmICghc2FtcGxlQVZGT2JqQy0+a2V5SURzKCkuaXNFbXB0eSgpICYmICFj
YW5FbnF1ZXVlU2FtcGxlKHRyYWNrSUQsIHNhbXBsZUFWRk9iakMpKSB7CisgICAgICAgIG1fYmxv
Y2tlZFNhbXBsZXMuYXBwZW5kKHsgdHJhY2tJRCwgV1RGTW92ZShzYW1wbGVBVkZPYmpDKSB9KTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIGVucXVldWVTYW1wbGUoV1RGTW92ZShzYW1w
bGVBVkZPYmpDKSwgdHJhY2tJRCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2
NF90IHRyYWNrSUQpCit7CiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJ
RVI7CiAgICAgREVCVUdfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAidHJhY2sgSUQgPSAiLCB0cmFj
a0lELCAiLCBzYW1wbGUgPSAiLCBzYW1wbGUuZ2V0KCkpOwogCisgICAgUGxhdGZvcm1TYW1wbGUg
cGxhdGZvcm1TYW1wbGUgPSBzYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCk7CisKICAgICBDTUZvcm1h
dERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdl
dEZvcm1hdERlc2NyaXB0aW9uKHBsYXRmb3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcik7
CiAgICAgQVNTRVJUKGZvcm1hdERlc2NyaXB0aW9uKTsKICAgICBpZiAoIWZvcm1hdERlc2NyaXB0
aW9uKSB7CkBAIC0xMjg0LDYgKzE0MzIsOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKHVpbnQ2NF90IHRyYWNrSUQpCiAgICAg
ZWxzZQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAodHJhY2tJc0Jsb2NrZWQodHJhY2tJRCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIHByb3ZpZGVNZWRpYURhdGEoQXRvbVN0cmluZzo6bnVt
YmVyKHRyYWNrSUQpKTsKIH0KIApAQCAtMTM3NSwxMSArMTUyNiwyMSBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRWaWRlb0xheWVyKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKiBsYXllcgogICAgICAgICBbbV9kaXNwbGF5TGF5ZXIgZmx1c2hdOwogICAgICAgICBbbV9k
aXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgICAgICBbbV9lcnJvckxp
c3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcjptX2Rpc3BsYXlMYXllci5nZXQoKV07CisKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAg
ICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlT
ZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24o
KSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgpXTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIG1fZGlzcGxheUxheWVyID0gbGF5ZXI7CiAKICAgICBpZiAobV9kaXNw
bGF5TGF5ZXIpIHsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVO
VEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJl
bmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+
Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVy
LmdldCgpXTsKKyNlbmRpZgorCiAgICAgICAgIFdlYWtQdHIgd2Vha1RoaXMgeyAqdGhpcyB9Owog
ICAgICAgICBbbV9kaXNwbGF5TGF5ZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOl4gewogICAgICAgICAgICAgaWYg
KHdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1
MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li5mYzJiYWI5MDdkOTgzNTNkMWY4YWFkNjk0ZjllNTUyYTRj
MjlmZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBM
b2dnZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRUeXBlOwotY2xhc3Mg
TWVkaWFTYW1wbGU7CitjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakM7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclBhcnNlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+IHsKQEAgLTEyMyw3ICsxMjMs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4g
dGhyZWFkLgotICAgIHVzaW5nIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSk+OworICAgIHVzaW5nIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QgdHJhY2tJRCwg
Y29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpPjsKICAgICB2b2lkIHNldERpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayhEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7
CiAgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayk7CkBAIC0xMzcsMTIgKzEzNywxOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lsbCBi
ZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFyc2VyIHRoZWFkLgotICAgIHVzaW5nIERp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQp
PjsKKyAgICB1c2luZyBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IHVpbnQ2NF90IHRyYWNrSUQpPjsKICAgICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhEaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgfQog
CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAg
ICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lE
Q2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURD
YWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7
CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU291cmNlQnVmZmVyUGFyc2VyKCk7CiAKQEAgLTE1
Miw2ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNr
IG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrOwogICAgIFdpbGxQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgbV93aWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOwog
ICAgIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSURDYWxsYmFjazsKKyAgICBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVu
dGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRl
bnRpZmllckZvclRyYWNrSURDYWxsYmFjazsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKaW5kZXggMDVhODMxNmRjMjdlNjMwMTdmMzk3ZjE5MjQ2OWI4MmEzM2I3YjAz
NC4uYWUxNjQxNGYyMWM2ODQ2YzE4OTc3MDllMTQyNGU0YTZhNGI3NjFhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTEwMzIsNyArMTAzMiw3IEBAIFN0YXR1cyBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiwg
Y29uc3QgVHJhY2tFCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGF1
dG8mIGtleUlkID0ga2V5SWRFbGVtZW50LnZhbHVlKCk7Ci0gICAgICAgICAgICBtX2tleUlkcy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tFbnRyeS50cmFja191aWQudmFsdWUoKSwgVWludDhB
cnJheTo6Y3JlYXRlKGtleUlkLmRhdGEoKSwga2V5SWQuc2l6ZSgpKSkpOworICAgICAgICAgICAg
bV9rZXlJZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHRyYWNrRW50cnkudHJhY2tfdWlkLnZhbHVl
KCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleUlkLmRhdGEoKSwga2V5SWQuc2l6ZSgpKSkpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggMjhl
NzNmYmE1MDIzYzgxNmJmYjI0MmM1Zjk5MGRiOTdhMThiYzFmZi4uZTg3NmFiNDE0YTRhYmIzM2Q1
MThjMzdiNDFmZTVhMTQ3NzZhYjQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApA
QCAtMjY5LDcgKzI2OSw3IEBAIHByaXZhdGU6CiAgICAgd2VibTo6U3RhdHVzIE9uRnJhbWUoY29u
c3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHdlYm06OlJlYWRlciosIHVpbnQ2NF90KiBieXRlc1Jl
bWFpbmluZykgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5pdGlhbGl6YXRpb25TZWdt
ZW50PiBtX2luaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2
NF90LCBSZWY8VWludDhBcnJheT4+PiBtX2tleUlkczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVp
bnQ2NF90LCBSZWY8U2hhcmVkQnVmZmVyPj4+IG1fa2V5SWRzOwogICAgIHdlYm06OlN0YXR1cyBt
X3N0YXR1czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VibTo6V2VibVBhcnNlcj4gbV9wYXJzZXI7
CiAgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVNhbXBsZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggMWQ3MWEzMzk2OWNmYmM2NzVk
ZWVjZWE3OGU2NGYyZDY4OTllNDFlYi4uY2QwOWNjN2U1MDJkYzQyNzdjMzI0Y2I0YmNkZTZmMjA5
ZWM4YzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTYzLDYgKzYz
LDcgQEAgcHVibGljOgogICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0Nv
cHkoKSBjb25zdCBvdmVycmlkZTsKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBs
ZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlVHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxl
VHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4g
Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJk
NjViLi4wMDM5YjQyMDAyYTZmMDVkY2I3ZGFiZDU5M2RmYTg0ZDJiMmJkNzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRl
OgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVv
ZihtX2JveCk7IH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1T
YW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
UGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlOyB9CiAgICAgc3RkOjpvcHRpb25hbDxC
eXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA0MmEzMjA2NTRiMDNkZjliNDM5Nzc3OTQy
NTY0NTgyMDA2Y2RhMTEwLi43MTFjZWQwYmYxMzE0MjU5MTc3NWZmZDc5M2FlNWE4NmM2YWUwY2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OTgsMTEgKzY5OCwxMCBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5
SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1lc3NhZ2UpCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgbWVzc2FnZSkKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZVJlZmVy
ZW5jZTsKLSAgICBpZiAobWVzc2FnZSkKLSAgICAgICAgbWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVz
c2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5ieXRlTGVuZ3RoKCkgfTsKKyAgICBtZXNzYWdlUmVmZXJl
bmNlID0geyBtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkgfTsKICAgICBtX3dlYlByb2Nl
c3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1l
ZGlhUGxheWVyS2V5TmVlZGVkKFdURk1vdmUobWVzc2FnZVJlZmVyZW5jZSkpLCBtX2lkKTsKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMWZiZTFmOTMzZDA5NTAwNmY0MmZkOWRjZmM2ZjJh
NDQyYTc2NDA5My4uM2Q5ZTAyZTAxOGRkMTE2NDJiYjU2YTMzZmJjZTk1OTgwNWE5NDNlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oCkBAIC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5
ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA3NzRjY2Yz
MWYyNjc3ZDBhMDUyMTc2NTFiM2I0ZTEzMjM1YzRjMjk0Li5mODk1N2IzYjhlNDE4NjIzYjNiNTZj
MDEyMTU3MDA1YmRjZjYyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAg
LTE2Miw3ICsxNjIsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2Uo
UmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAgICAgICBkaWRQYXJz
ZVRyYWNrcyh7IH0sIGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBwYXJzZXItPnNldERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRp
YVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIGRpZFByb3ZpZGVNZWRpYURhdGEoV1RGTW92ZSht
ZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIG1faW5pdCA9IHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2Ft
cGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQordm9p
ZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGVB
VkZPYmpDPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQog
ewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuaAppbmRleCA2NTA5M2U5ZTQ2YjQwYjVhMzk3NmZkZWYyOWU2MTNjNjQ1MWYzMTVhLi4xNWQ1
NTczNjMzODE3NDYwYzJlNjIwNDQxOTAxMDIzY2Y4NmI0YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogREVDTEFSRV9DT1JFX01FRElBX1RSQUlUUyhG
b3JtYXRSZWFkZXIpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVNhbXBsZUFW
Rk9iakM7CiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXI7CiB9CiAKQEAgLTY3LDcgKzY4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFBhcnNlVHJhY2tzKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYmLCB1aW50NjRfdCBlcnJvckNvZGUp
OwogICAgIHZvaWQgZGlkU2VsZWN0VmlkZW9UcmFjayhXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZSYsIGJvb2wpIHsgfQogICAgIHZvaWQgZGlkRW5hYmxlQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YShS
ZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qz4mJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmluaXNoUGFyc2luZyhS
ZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIC8vIENNQmFzZUNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3
NmU5ZmIxZWY5NjJiNDA0OTdlM2RjMzEuLjI1NWMwN2VhNWFkNzg1MWVmZjhlNGVlNmY3ZTQ3YjM2
MGU2MzY0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCkBAIC01MSw2ICs1
MSw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwog
ICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWw7CisgICAg
V2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5
cGU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5h
bDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCAzM2RhOGFh
MDZiNjE3Mjk3MzI3MDNlOTBhZWUwMjVjNGE3NjI2YmY5Li41NjYwNmM0NzQwY2U5ZTk1NzU3NDIz
YWU4NGI4MDVlMTE4MjExYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0x
MTkxLDcgKzExOTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQo
KQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKElQ
Qzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKFJlZlB0ciBwbGF5ZXIgPSBt
X3BsYXllci5nZXQoKSkKLSAgICAgICAgcGxheWVyLT5rZXlOZWVkZWQoVWludDhBcnJheTo6Y3Jl
YXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSkucHRyKCkpOworICAgICAgICBwbGF5
ZXItPmtleU5lZWRlZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlKSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2
ZDJlODkxZWIxMjg2OTU1NWI5ZGM5MzZjYjA5NTUwZmZmODA5NmQuLjdmMDI2OWY1NTczM2UwZmNl
MzQ4YTU4OTllMGNkOGIyOTAxNjMxNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTQgQEAKKzIwMjItMDItMDcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFt
RGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxl
Z2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM2MTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtl
eVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU291cmNlL1dlYkNvcmU6CisKKyAgICAg
ICAgVGhlIGN1cnJlbnQgc2V0IG9mIGRlbGVnYXRlIGNhbGxiYWNrIG1ldGhvZHMgaGF2ZSBhIHNp
Z25pZmljYW50IHNob3J0Y29taW5nOiBjbGllbnRzIG11c3QKKyAgICAgICAgYXR0YWNoIGFuIEFW
Q29udGVudEtleVNlc3Npb24gdG8gdGhlIEFWU3RyZWFtRGF0YVBhcnNlciBiZWZvcmUgcmV0dXJu
aW5nIGZyb20gdGhlCisgICAgICAgIC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOiBjYWxsYmFjay4gVGhpcwor
ICAgICAgICBpcyBiZWNhdXNlIHRoZSBwYXJzZXIgaXRzZWxmIGF0dGFjaGVzIHRoZSBvYmplY3Qg
cmVxdWlyZWQgdG8gZGVjcnlwdCBlYWNoIGVuY3J5cHRlZCBzYW1wbGUKKyAgICAgICAgdG8gdGhl
IHNhbXBsZSBpdHNlbGYgYXQgdGhlIHBhcnNpbmcgc3RhZ2UuIElmIGEgY2xpZW50IGRvZXMgbm90
IGF0dGFjaCBhbgorICAgICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uIGJ5IHRoZSB0aW1lIHRoYXQg
bWV0aG9kIHJldHVybnMsIEFWU3RyZWFtRGF0YVBhcnNlciB3aWxsIGF0dGFjaCBvbmUgb2YKKyAg
ICAgICAgaXRzIG93bi4KKworICAgICAgICBUaGUgd2ViLWZhY2luZyBiZWhhdmlvciB0aGlzIGNh
dXNlcyBpcyB0aGF0IE1TRSBhcHBlbmRzIHdpbGwgbm90IGNvbXBsZXRlIChieSBmaXJpbmcKKyAg
ICAgICAgYW4gInVwZGF0ZWVuZCIgZXZlbnQpIGlmIGFuIGVuY3J5cHRlZCBzZWdtZW50IGlzIHBh
cnNlZCB1bnRpbCB0aGUgY2xpZW50IGNyZWF0ZXMgYW5kCisgICAgICAgIGF0dGFjaGVzIGEgTWVk
aWFLZXlzIG9iamVjdCB3aXRoIGEgdmFsaWQgc2Vzc2lvbi4KKworICAgICAgICBBIG5ldyBkZWxl
Z2F0ZSBjYWxsYmFjayBtZXRob2QsIC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50
S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6CisgICAgICAgIGFsbG93cyB1cyB0byB3b3JrIGFyb3Vu
ZCB0aGlzIHByb2JsZW0uIFdoZW4gdGhpcyBkZWxlZ2F0ZSBpcyBwcmVzZW50LCBBVlN0cmVhbURh
dGFQYXJzZXIKKyAgICAgICAgd2lsbCBza2lwIGF0dGFjaGluZyBhIGRlY3J5cHRpb24gb2JqZWN0
IGVudGlyZWx5LCBtb3ZpbmcgdGhhdCByZXNwb25zaWJpbGl0eSB0byB0aGUKKyAgICAgICAgY2xp
ZW50LiBIb3dldmVyLCB0aGlzIGNvbWVzIHdpdGggdGhlIHJlcXVpcmVtZW50IHRoYXQgdGhlIGNs
aWVudCAoV2ViS2l0KSB3b24ndCBlbnF1ZXVlCisgICAgICAgIGFuIGVuY3J5cHRlZCBzYW1wbGUg
YmVmb3JlIGEgZGVjcnlwdGlvbiBvYmplY3QgaXMgYXZhaWxhYmxlIHZpYSBBVkNvbnRlbnRLZXlT
ZXNzaW9uLgorCisgICAgICAgIEluIG9yZGVyIHRvIG1lZXQgdGhpcyBuZXcgcmVxdWlyZW1lbnQs
IFdlYktpdCB3aWxsIGFzc29jaWF0ZSB0aGUga2V5IElEcyBuZWNlc3NhcnkgdG8KKyAgICAgICAg
ZGVjcnlwdCBlYWNoIHNhbXBsZSBpbiB0aGUgTWVkaWFTYW1wbGUgb2JqZWN0IHRoYXQgd3JhcHMg
dGhlIGVuY3J5cHRlZCBzYW1wbGUuIEJlY2F1c2Ugbm90CisgICAgICAgIGV2ZXJ5IHR5cGUgb2Yg
TWVkaWFTYW1wbGUgd2lsbCBjYXJyeSBrZXkgSURzLCB0aGlzIHByb3BlcnR5IHdhcyBhZGRlZCB0
byB0aGUKKyAgICAgICAgTWVkaWFTYW1wbGVBVkZPYmpDIHN1YmNsYXNzLCBhbmQgdGhlcmVmb3Jl
IHdlIG5lZWQgdG8gYmUgYWJsZSB0byBzYWZlbHkgZG93bmNhc3QgZnJvbQorICAgICAgICBNZWRp
YVNhbXBsZSB0byBNZWRpYVNhbXBsZUFWRk9iakMuIE1lZGlhU2FtcGxlIHN1YmNsYXNzZXMgY2Fu
IGJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhlCisgICAgICAgIFBsYXRmb3JtTWVkaWFTYW1wbGUgdHlw
ZSBhdmFpbGFibGUgdGhyb3VnaCB0aGVpciBwbGF0Zm9ybVNhbXBsZSgpIHByb3BlcnR5LCBob3dl
dmVyIHRoaXMKKyAgICAgICAgY2FsbCBpcyBub3QgY29uc3QsIGFuZCBtYXkgbm90IGJlIGZyZWUs
IGFzIGl0IHJldHVybnMgYSBub24tUE9EIHR5cGUuIFNvCisgICAgICAgIFBsYXRmb3JtTWVkaWE6
OlR5cGUgd2FzIG1hZGUgYW4gZXhwbGljaXQgZW51bSB0eXBlLCBhbmQgYSBuZXcgdmlydHVhbCBt
ZXRob2QKKyAgICAgICAgcGxhdGZvcm1TYW1wbGVUeXBlKCkgd2FzIGFkZGVkIHRvIE1lZGlhU2Ft
cGxlIChhbmQgaW1wbGVtZW50ZWQgYnkgYWxsIHN1YmNsYXNzZXMpLCBhbmQgYQorICAgICAgICB0
eXBlIHNwZWNpYWxpemF0aW9uIG1hY3JvIHdhcyBhZGRlZCB0byBNZWRpYVNhbXBsZUFWRk9iakMu
CisKKyAgICAgICAgSW4gb3JkZXIgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIHNhbXBsZSBpcyBj
YXBhYmxlIG9mIGJlaW5nIGVucXVldWVkLCB0aGUgQ0RNSW5zdGFuY2UKKyAgICAgICAgbXVzdCBi
ZSBxdWVyaWVkIHRvIGRldGVybWluZSBpZiB0aGUgc2FtcGxlJ3MgcmVxdWlyZWQga2V5cyBhcmUg
dXNhYmxlLiBGb3IKKyAgICAgICAgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMs
IGl0IGhhcyBhbiBleGlzdGluZyBrZXlTdGF0dXMoKSwgbWV0aG9kLCBidXQgdGhhdAorICAgICAg
ICBtZXRob2QgaXMgYWxzbyBub24tY29uc3QsIGFuZCBtYXkgYmUgZXhwZW5zaXZlLiBTbyBhIEtl
eVN0YXR1c01hcCBpbnN0YW5jZSB2YXJpYWJsZQorICAgICAgICBoYXMgYmVlbiBhZGRlZCB0byBj
YWNoZSB0aGUga2V5IHN0YXR1cyBmb3IgZWFzZSBvZiBxdWVyeWluZy4gVG8gbm90aWZ5IGFuIGFy
Yml0cmFyeSBudW1iZXIKKyAgICAgICAgb2YgY2xpZW50cyB3aGVuIHRoZSBrZXkgc3RhdHVzZXMg
Y2hhbmdlLCBhbiBPYnNlcnZlciBoYXMgYmVlbiBhZGRlZC4KKworICAgICAgICBXaGVuIGFuIGVu
Y3J5cHRlZCBzYW1wbGUgaXMgZW5xdWV1ZWQsIGlmIHRoaXMgbmV3IGRlbGVnYXRlIG1ldGhvZCBp
cyBhdmFpbGFibGUsIHRoZQorICAgICAgICBzb3VyY2UgYnVmZmVyIHdpbGwgY2hlY2sgaWYgYSBD
RE0gaW5zdGFuY2UgaXMgYXZhaWxhYmxlLCBhbmQgaWYgc28sIHdoZXRoZXIgdGhlIHNhbXBsZSdz
CisgICAgICAgIGtleXMgYXJlIHVzYWJsZS4gSWYgYW55IG9mIHRoZXNlIGNoZWNrcyBmYWlsLCB0
aGUgc2FtcGxlIHdpbGwgYmUgc3RvcmVkIGluIGEgbG9jYWwgcXVldWUKKyAgICAgICAgYW5kIG5l
dyBlbnF1ZXVlcyB3aWxsIGJlIGJsb2NrZWQuIFdoZW4gdGhlIENETSdzIGtleVN0YXR1cyBvYnNl
cnZlciBpcyB0cmlnZ2VyZWQsIHRoZQorICAgICAgICBsb2NhbCBxdWV1ZSB3aWxsIGJlIHByb2Nl
c3NlZCwgYW5kIGFsbCBzYW1wbGVzIHdpdGggdXNhYmxlIGtleSBJRHMgd2lsbCBiZSBlbnF1ZXVl
ZC4KKworICAgICAgICBEcml2ZS1ieSBmaXg6IFVzZSBTaGFyZWRCdWZmZXIgcmF0aGVyIHRoYW4g
VWludDhBcnJheSwgYXMgdGhlIGZvcm1lciBpcyBsaWdodGVyIHdlaWdodAorICAgICAgICBhbmQg
Y2FuIGJlIG1vcmUgZWFzaWx5IGNvbnZlcnRlZCB0byBhbmQgZnJvbSBhIE5TRGF0YS4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVk
aWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6aXNBbnlLZXlVc2FibGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmFkZEtleVN0YXR1c2Vz
Q2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uS2V5U3RhdHVzZXNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVz
dERpZFN1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvcHlLZXlTdGF0
dXNlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5h
bFByb3RlY3Rpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlUHJvdGVjdGlvblN0YXR1c0ZvckRpc3Bs
YXlJRCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmtleVN0YXR1c2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Omtl
eU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akM6OnNldEtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6Omtl
eUlEcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmtleUlE
cyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qz46OnRvU3RyaW5nKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDOjpzb3VyY2VCdWZmZXJLZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6XSk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBw
b3J0S2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5S2V5SURzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0
Q0RNSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OnRyYWNrSXNCbG9ja2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjprZXlTdGF0dXNlc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNhbkVucXVldWVTYW1wbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1w
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJl
Y29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6
CisKKyAgICAgICAgU291cmNlL1dlYktpdDoKKworICAgICAgICBBZGQgdGhlIG5ld2x5IHJlcXVy
aWVkIHZpcnR1YWwgbWV0aG9kIGNoYW5nZXMgdG8gTWVkaWFTYW1wbGUgc3ViY2xhc3NlcywgYW5k
IHVzZQorICAgICAgICBTaGFyZWRCdWZmZXIgcmF0aGVyIHRoYW4gVWludDhBcnJheS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoK
KyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQcm92aWRlTWVkaWFE
YXRhKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNh
bXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorCisgICAgICAgIFNvdXJjZS9XVEY6CisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcDoKKwogMjAyMi0wMi0wNyAgUm95IFJlYXBvciAg
PHJyZWFwb3JAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIEF1dG9pbnN0YWxs
ZXIgbWF5IGZhaWwgdG8gaW5zdGFsbCB3aGVlbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggZDE0NmNlYzRmMmVjNGNmNjkxMmQ3ZjA0
OGQyODgxNTdhZGZkYzFiOC4uMmIyNzU5OTAyODdmY2U1ZDRlMWVmY2M0YTk4MDNhMzAwNGM2NjRj
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1h
cC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5j
cHAKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFn
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHtu
dWxscHRyfX07IH0KKyAgICBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6Tm9uZTsgfQogICAgIHN0ZDo6
b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451270</attachid>
            <date>2022-02-08 10:37:37 -0800</date>
            <delta_ts>2022-02-16 09:14:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236109-20220208103737.patch</filename>
            <type>text/plain</type>
            <size>84362</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI3MTVjNzdmZDE2MjZkODIwMWJkNWI0
OGZiYWJjODY5OTE1M2UxMTQuLmY0YjdiNDhlOWI4MTVkY2ZmNjY1NGRiYmQ3NjBiYTFjZjg4YmZm
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDItMDcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1IYXZlLmg6CisKIDIwMjItMDItMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBNYWtlIEJpdG1hcCBjb25zdGV4cHIgZnJpZW5kbHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZjA0N2JlZjhkNTdkY2QyZGJlYmNiM2NkNmIwMTQyYWU2OTM0MWQ2Li5j
M2FlMGFkMThlZDVjYjBkOTI4OGVmMTBjZmE3ZThmOWJlNDZjZTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTI1IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNv
bnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IHNldCBv
ZiBkZWxlZ2F0ZSBjYWxsYmFjayBtZXRob2RzIGhhdmUgYSBzaWduaWZpY2FudCBzaG9ydGNvbWlu
ZzogY2xpZW50cyBtdXN0CisgICAgICAgIGF0dGFjaCBhbiBBVkNvbnRlbnRLZXlTZXNzaW9uIHRv
IHRoZSBBVlN0cmVhbURhdGFQYXJzZXIgYmVmb3JlIHJldHVybmluZyBmcm9tIHRoZQorICAgICAg
ICAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGE6Zm9yVHJhY2tJRDogY2FsbGJhY2suIFRoaXMKKyAgICAgICAgaXMgYmVjYXVzZSB0
aGUgcGFyc2VyIGl0c2VsZiBhdHRhY2hlcyB0aGUgb2JqZWN0IHJlcXVpcmVkIHRvIGRlY3J5cHQg
ZWFjaCBlbmNyeXB0ZWQgc2FtcGxlCisgICAgICAgIHRvIHRoZSBzYW1wbGUgaXRzZWxmIGF0IHRo
ZSBwYXJzaW5nIHN0YWdlLiBJZiBhIGNsaWVudCBkb2VzIG5vdCBhdHRhY2ggYW4KKyAgICAgICAg
QVZDb250ZW50S2V5U2Vzc2lvbiBieSB0aGUgdGltZSB0aGF0IG1ldGhvZCByZXR1cm5zLCBBVlN0
cmVhbURhdGFQYXJzZXIgd2lsbCBhdHRhY2ggb25lIG9mCisgICAgICAgIGl0cyBvd24uCisKKyAg
ICAgICAgVGhlIHdlYi1mYWNpbmcgYmVoYXZpb3IgdGhpcyBjYXVzZXMgaXMgdGhhdCBNU0UgYXBw
ZW5kcyB3aWxsIG5vdCBjb21wbGV0ZSAoYnkgZmlyaW5nCisgICAgICAgIGFuICJ1cGRhdGVlbmQi
IGV2ZW50KSBpZiBhbiBlbmNyeXB0ZWQgc2VnbWVudCBpcyBwYXJzZWQgdW50aWwgdGhlIGNsaWVu
dCBjcmVhdGVzIGFuZAorICAgICAgICBhdHRhY2hlcyBhIE1lZGlhS2V5cyBvYmplY3Qgd2l0aCBh
IHZhbGlkIHNlc3Npb24uCisKKyAgICAgICAgQSBuZXcgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9k
LCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFj
a0lEOgorICAgICAgICBhbGxvd3MgdXMgdG8gd29yayBhcm91bmQgdGhpcyBwcm9ibGVtLiBXaGVu
IHRoaXMgZGVsZWdhdGUgaXMgcHJlc2VudCwgQVZTdHJlYW1EYXRhUGFyc2VyCisgICAgICAgIHdp
bGwgc2tpcCBhdHRhY2hpbmcgYSBkZWNyeXB0aW9uIG9iamVjdCBlbnRpcmVseSwgbW92aW5nIHRo
YXQgcmVzcG9uc2liaWxpdHkgdG8gdGhlCisgICAgICAgIGNsaWVudC4gSG93ZXZlciwgdGhpcyBj
b21lcyB3aXRoIHRoZSByZXF1aXJlbWVudCB0aGF0IHRoZSBjbGllbnQgKFdlYktpdCkgd29uJ3Qg
ZW5xdWV1ZQorICAgICAgICBhbiBlbmNyeXB0ZWQgc2FtcGxlIGJlZm9yZSBhIGRlY3J5cHRpb24g
b2JqZWN0IGlzIGF2YWlsYWJsZSB2aWEgQVZDb250ZW50S2V5U2Vzc2lvbi4KKworICAgICAgICBJ
biBvcmRlciB0byBtZWV0IHRoaXMgbmV3IHJlcXVpcmVtZW50LCBXZWJLaXQgd2lsbCBhc3NvY2lh
dGUgdGhlIGtleSBJRHMgbmVjZXNzYXJ5IHRvCisgICAgICAgIGRlY3J5cHQgZWFjaCBzYW1wbGUg
aW4gdGhlIE1lZGlhU2FtcGxlIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBlbmNyeXB0ZWQgc2FtcGxl
LiBCZWNhdXNlIG5vdAorICAgICAgICBldmVyeSB0eXBlIG9mIE1lZGlhU2FtcGxlIHdpbGwgY2Fy
cnkga2V5IElEcywgdGhpcyBwcm9wZXJ0eSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgIE1lZGlh
U2FtcGxlQVZGT2JqQyBzdWJjbGFzcywgYW5kIHRoZXJlZm9yZSB3ZSBuZWVkIHRvIGJlIGFibGUg
dG8gc2FmZWx5IGRvd25jYXN0IGZyb20KKyAgICAgICAgTWVkaWFTYW1wbGUgdG8gTWVkaWFTYW1w
bGVBVkZPYmpDLiBNZWRpYVNhbXBsZSBzdWJjbGFzc2VzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGJ5
IHRoZQorICAgICAgICBQbGF0Zm9ybU1lZGlhU2FtcGxlIHR5cGUgYXZhaWxhYmxlIHRocm91Z2gg
dGhlaXIgcGxhdGZvcm1TYW1wbGUoKSBwcm9wZXJ0eSwgaG93ZXZlciB0aGlzCisgICAgICAgIGNh
bGwgaXMgbm90IGNvbnN0LCBhbmQgbWF5IG5vdCBiZSBmcmVlLCBhcyBpdCByZXR1cm5zIGEgbm9u
LVBPRCB0eXBlLiBTbworICAgICAgICBQbGF0Zm9ybU1lZGlhOjpUeXBlIHdhcyBtYWRlIGFuIGV4
cGxpY2l0IGVudW0gdHlwZSwgYW5kIGEgbmV3IHZpcnR1YWwgbWV0aG9kCisgICAgICAgIHBsYXRm
b3JtU2FtcGxlVHlwZSgpIHdhcyBhZGRlZCB0byBNZWRpYVNhbXBsZSAoYW5kIGltcGxlbWVudGVk
IGJ5IGFsbCBzdWJjbGFzc2VzKSwgYW5kIGEKKyAgICAgICAgdHlwZSBzcGVjaWFsaXphdGlvbiBt
YWNybyB3YXMgYWRkZWQgdG8gTWVkaWFTYW1wbGVBVkZPYmpDLgorCisgICAgICAgIEluIG9yZGVy
IHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBzYW1wbGUgaXMgY2FwYWJsZSBvZiBiZWluZyBlbnF1
ZXVlZCwgdGhlIENETUluc3RhbmNlCisgICAgICAgIG11c3QgYmUgcXVlcmllZCB0byBkZXRlcm1p
bmUgaWYgdGhlIHNhbXBsZSdzIHJlcXVpcmVkIGtleXMgYXJlIHVzYWJsZS4gRm9yCisgICAgICAg
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLCBpdCBoYXMgYW4gZXhpc3Rpbmcg
a2V5U3RhdHVzKCksIG1ldGhvZCwgYnV0IHRoYXQKKyAgICAgICAgbWV0aG9kIGlzIGFsc28gbm9u
LWNvbnN0LCBhbmQgbWF5IGJlIGV4cGVuc2l2ZS4gU28gYSBLZXlTdGF0dXNNYXAgaW5zdGFuY2Ug
dmFyaWFibGUKKyAgICAgICAgaGFzIGJlZW4gYWRkZWQgdG8gY2FjaGUgdGhlIGtleSBzdGF0dXMg
Zm9yIGVhc2Ugb2YgcXVlcnlpbmcuIFRvIG5vdGlmeSBhbiBhcmJpdHJhcnkgbnVtYmVyCisgICAg
ICAgIG9mIGNsaWVudHMgd2hlbiB0aGUga2V5IHN0YXR1c2VzIGNoYW5nZSwgYW4gT2JzZXJ2ZXIg
aGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAgV2hlbiBhbiBlbmNyeXB0ZWQgc2FtcGxlIGlzIGVu
cXVldWVkLCBpZiB0aGlzIG5ldyBkZWxlZ2F0ZSBtZXRob2QgaXMgYXZhaWxhYmxlLCB0aGUKKyAg
ICAgICAgc291cmNlIGJ1ZmZlciB3aWxsIGNoZWNrIGlmIGEgQ0RNIGluc3RhbmNlIGlzIGF2YWls
YWJsZSwgYW5kIGlmIHNvLCB3aGV0aGVyIHRoZSBzYW1wbGUncworICAgICAgICBrZXlzIGFyZSB1
c2FibGUuIElmIGFueSBvZiB0aGVzZSBjaGVja3MgZmFpbCwgdGhlIHNhbXBsZSB3aWxsIGJlIHN0
b3JlZCBpbiBhIGxvY2FsIHF1ZXVlCisgICAgICAgIGFuZCBuZXcgZW5xdWV1ZXMgd2lsbCBiZSBi
bG9ja2VkLiBXaGVuIHRoZSBDRE0ncyBrZXlTdGF0dXMgb2JzZXJ2ZXIgaXMgdHJpZ2dlcmVkLCB0
aGUKKyAgICAgICAgbG9jYWwgcXVldWUgd2lsbCBiZSBwcm9jZXNzZWQsIGFuZCBhbGwgc2FtcGxl
cyB3aXRoIHVzYWJsZSBrZXkgSURzIHdpbGwgYmUgZW5xdWV1ZWQuCisKKyAgICAgICAgRHJpdmUt
YnkgZml4OiBVc2UgU2hhcmVkQnVmZmVyIHJhdGhlciB0aGFuIFVpbnQ4QXJyYXksIGFzIHRoZSBm
b3JtZXIgaXMgbGlnaHRlciB3ZWlnaHQKKyAgICAgICAgYW5kIGNhbiBiZSBtb3JlIGVhc2lseSBj
b252ZXJ0ZWQgdG8gYW5kIGZyb20gYSBOU0RhdGEuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9G
aWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmlzQW55S2V5VXNhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vz
c2lvbktleVN0YXR1c2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpv
dXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZVByb3RlY3Rpb25TdGF0dXNGb3JEaXNwbGF5SUQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTdGF0
dXNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjprZXlOZWVkZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRLZXlJRHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMpOgorICAgICAgICAoV1RGOjpM
b2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+Ojp0b1N0cmluZyk6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAg
KC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92
aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JU
cmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6c2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29weUtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldENETUluc3RhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0lz
QmxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6a2V5U3RhdHVzZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpjYW5FbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1w
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRW
aWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorCiAyMDIyLTAyLTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0aW5ncyB0byBy
ZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0aXZlIFBvcnRh
bCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDRiN2VkM2M1ZjM4YTdjNTRhZjRlYjUyYjY5MGQxZjBjNjU5MmM2
MjYuLjRiNjUzZDZlOGZjODhkMDRlM2Y4NWNlNmJhNmYwNTA5YmI2ZWIyYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMjItMDItMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRl
Q29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBuZXdseSBy
ZXF1cmllZCB2aXJ0dWFsIG1ldGhvZCBjaGFuZ2VzIHRvIE1lZGlhU2FtcGxlIHN1YmNsYXNzZXMs
IGFuZCB1c2UKKyAgICAgICAgU2hhcmVkQnVmZmVyIHJhdGhlciB0aGFuIFVpbnQ4QXJyYXkuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5l
ZWRlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVT
b3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1l
ZGlhRGF0YSk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKwogMjAyMi0wMi0wNyAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVz
dHJpY3QgbWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwg
bW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCA3MjQzZTkwZDdlNzBmOTk0ZDM5ZjdkYzQ0MjIx
ZWZmYThhZTc3ODRlLi40NzkxYjVmYjZhNmJiNzlmOGJlYmQ1NDgwMWZjZDljYWUxZTBmNjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtMzg4LDYgKzM4OCwxMyBAQAogI2RlZmluZSBIQVZFX0FW
Q09OVEVOVEtFWVNFU1NJT04gMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTEwMzAwKSBcCisgICAgfHwgKCgoUExBVEZP
Uk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpKSB8fCBQTEFURk9STShN
QUNDQVRBTFlTVCkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNTAw
KSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikgJiYgX19XQVRDSF9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDcwNDAwKSBcCisg
ICAgfHwgKFBMQVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRP
UikgJiYgX19UVl9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE0MDUwMCkKKyNkZWZpbmUgSEFW
RV9BVkNPTlRFTlRLRVlTUEVDSUZJRVIgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjZGVmaW5lIEhBVkVfU0VD
X0tFWV9QUk9YWSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsCmluZGV4
IGQ2MzQ4NmM1YTljNDg5NTNjMzRiMmE2ZGQyM2NkYTkyM2YyODQxYzcuLjVlNjdlZGYwNjZiNjAx
M2I3OGU0YjY5ZGE2NTMwNmUxYmFkNGYwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlz
LmlkbApAQCAtMzAsNyArMzAsNyBAQAogXSBpbnRlcmZhY2UgV2ViS2l0TWVkaWFLZXlzIHsKICAg
ICBjb25zdHJ1Y3RvcihET01TdHJpbmcga2V5U3lzdGVtKTsKIAotICAgIFtDYWxsV2l0aD1DdXJy
ZW50U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNl
c3Npb24oRE9NU3RyaW5nIHR5cGUsIFVpbnQ4QXJyYXkgaW5pdERhdGEpOworICAgIFtDYWxsV2l0
aD1DdXJyZW50RG9jdW1lbnRdIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9uKERP
TVN0cmluZyB0eXBlLCBVaW50OEFycmF5IGluaXREYXRhKTsKICAgICBzdGF0aWMgYm9vbGVhbiBp
c1R5cGVTdXBwb3J0ZWQoRE9NU3RyaW5nIGtleVN5c3RlbSwgb3B0aW9uYWwgRE9NU3RyaW5nIHR5
cGUpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVtOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDcyNWM1MjBhMmViMTZh
NzMyYWRiZGZkMGRhOGUxMDllN2NlNDU1Y2UuLjQ5NmM2YTljYjIzYTZhMmE5NTM5M2Y4YTQ2ZTg2
MjA5NDc3MGFhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMjY0NCw3ICsyNjQ0LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4g
bV93ZWJLaXRNZWRpYUtleXMgPyBtX3dlYktpdE1lZGlhS2V5cy0+Y2FjaGVkS2V5Rm9yS2V5SWQo
a2V5SWQpIDogbnVsbHB0cjsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAg
ICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY2MSw3ICsyNjYxLDE0IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlO
ZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXRE
YXRhKTsKKyAgICBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpJbml0IGluaXQ7CisKKyAgICBp
ZiAoYXV0byBpbml0RGF0YUJ1ZmZlciA9IGluaXREYXRhLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkp
IHsKKyAgICAgICAgYXV0byBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgo
KTsKKyAgICAgICAgaW5pdC5pbml0RGF0YSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShpbml0RGF0
YUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCAwLCBieXRlTGVuZ3RoKTsKKyAgICB9CisKKyAgICBh
dXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXQpOwogICAgIHNjaGVkdWxlRXZlbnQoV1RGTW92ZShl
dmVudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDg5
ZTZhNjI2OGJmNmQ2MWM1ZTM3M2YyOWE4NDk2YjFkNjc3M2JhZDQuLjAwNDkxODYxM2ViOTMxMTA2
MjNiMDNiYWZmOTc2MWQ2MzBjNDhjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC03MDYsNyArNzA2LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNo
ZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIFN0cmluZyBt
ZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAppbmRleCAxODM5OTcyMjYwZjcw
ZTAwNzM2Nzk3OTE3MjI2MjVmNTZiMjUzZjA4Li4yYzExNWE4YzI5ZDI4NGY2ZmNiZjhiMDE2OGU3
ZjRkNTRhODY2M2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAgLTQz
LDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTW9ja1NhbXBsZUJveDsKIAog
c3RydWN0IFBsYXRmb3JtU2FtcGxlIHsKLSAgICBlbnVtIHsKKyAgICBlbnVtIFR5cGUgewogICAg
ICAgICBOb25lLAogICAgICAgICBNb2NrU2FtcGxlQm94VHlwZSwKICAgICAgICAgQ01TYW1wbGVC
dWZmZXJUeXBlLApAQCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc1N5bmNJbmZv
ID0gMSA8PCAzLAogICAgIH07CiAgICAgdmlydHVhbCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlw
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxl
KCkgPSAwOwogCiAgICAgc3RydWN0IEJ5dGVSYW5nZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAK
aW5kZXggNTA2MDMyMzgwM2IxYTNiMTdmNDczODY2ZWE5N2IzYTgyOTBlMjAyYy4uYjcwM2NmZWNk
MzE2YzYyN2M2OTRlNjRiOGU2OTc2MjA2ODY3ZjdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNw
cApAQCAtMjAyLDEwICsyMDIsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRlcldl
Yk1EYXRhPiBBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEoY29uc3QgdWkKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0pOwotICAgIHBhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlh
RGF0YUNhbGxiYWNrKFsmXShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFj
a0lELCBjb25zdCBTdHJpbmcmKSB7CisgICAgcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRh
Q2FsbGJhY2soWyZdKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRfdCB0
cmFja0lELCBjb25zdCBTdHJpbmcmKSB7CiAgICAgICAgIGlmICghYXVkaW9UcmFja0lkIHx8IHRy
YWNrSUQgIT0gKmF1ZGlvVHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2Ft
cGxlcy5hcHBlbmQoc3RhdGljX3JlZmVyZW5jZV9jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oV1RG
TW92ZShzYW1wbGUpKSk7CisgICAgICAgIHNhbXBsZXMuYXBwZW5kKFdURk1vdmUoc2FtcGxlKSk7
CiAgICAgfSk7CiAgICAgcGFyc2VyLT5zZXRDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhbXShh
dXRvJiYgZnVuY3Rpb24pIHsKICAgICAgICAgZnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA1NWY5N2MxYWE5MGZh
ZmQwN2QzZWI5M2QxNjUwMmYwY2I2YThlOGQ0Li5hNWRkZjNlZmM0MWQ4N2E4NGJmMWI0MGQyNzU3
YmU4NGMxOTA0NGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCkBAIC0xNDI1LDcgKzE0MjUsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+
IE1lZGlhUGxheWVyOjpjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25z
dAogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGtleUlk
KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRh
KQordm9pZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCiB7CiAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXgg
MjVjMjQ4MmZmNzY2NDVjOGVjZjgxNTg0ZjRhYmEyNTdmNzk1MGIxZC4uN2M2NGY0ZTBmNjk2NDQ5
MmZkOGQ2Njc4ZGY0N2NiYWZkOTFkOTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC04Niw2ICs4Niw3IEBAIGNsYXNzIE1lZGlhU3Ry
ZWFtUHJpdmF0ZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwogY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyOwogY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2VzOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0
ZTsKIApAQCAtMjAwLDcgKzIwMSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXll
ckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAjZW5kaWYKIApAQCAtNTU4LDcgKzU1OSw3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29u
c3Q7Ci0gICAgdm9pZCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQg
a2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwogICAgIFN0cmluZyBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
aW5kZXggOGVkOWUwYTA3NWIxNTNiY2E1ZjkwZDUxYzEwOTA2NDUzZjA0ZDBmMS4uYzc4NzY2MTc4
ZTEyYjk0YjA4NmRkYzZiNTIzMTc5OWE0NWMwMmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0x
OTIxLDE1ICsxOTIxLDE1IEBAIGJvb2wgQVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdP
ZlJlc291cmNlKEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgICAgIC8vIFs0
IGJ5dGVzOiBrZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAg
ICB1bnNpZ25lZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsK
ICAgICAgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtl
eVVSSVNpemUsIDEpOwotICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6
OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOworICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXIt
PmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgYXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3
OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBieXRlTGVuZ3RoKTsKICAgICAg
ICAgaW5pdERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAg
ICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVm
ZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJyYXkt
PnNldFJhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihTdHJpbmdWaWV3KGtl
eVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCkpLCBrZXlVUkkubGVuZ3RoKCkgLyBz
aXplb2YodW5zaWduZWQgY2hhciksIDApOwogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgg
PSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwotICAgICAgICBhdXRvIGluaXREYXRhID0g
VWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3Ro
KTsKLSAgICAgICAgbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7
CisgICAgICAgIGF1dG8gaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4geyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGJ5
dGVMZW5ndGggfSk7CisgICAgICAgIG1fb3duZXItPnBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERh
dGEpOwogICAgICAgICBzZXRSZXF1ZXN0Rm9yS2V5KGtleVVSSSwgYXZSZXF1ZXN0KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggNTZiNThj
MjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2Mi4uZDU5ZmU0ODA0ZDU4ZGZlNzhjYjVi
ZWE3MDc0YjJlNjg3MDVjMWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC0zMCw3ICsz
MCw5IEBACiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNpbmNsdWRlICJDRE1JbnN0YW5jZVNl
c3Npb24uaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNo
U2V0Lmg+CiAKIE9CSkNfQ0xBU1MgQVZDb250ZW50S2V5UmVwb3J0R3JvdXA7CiBPQkpDX0NMQVNT
IEFWQ29udGVudEtleVJlcXVlc3Q7CkBAIC0xMTcsNiArMTE5LDEzIEBAIHB1YmxpYzoKICAgICBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91
cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5
UmVxdWVzdCopIGNvbnN0OwogCisgICAgYm9vbCBpc0FueUtleVVzYWJsZShjb25zdCBLZXlzJikg
Y29uc3Q7CisKKyAgICB1c2luZyBLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVy
PHZvaWQoKT47CisgICAgdm9pZCBhZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcihjb25zdCBL
ZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlciYpOworCisgICAgdm9pZCBzZXNzaW9uS2V5U3RhdHVz
ZXNDaGFuZ2VkKGNvbnN0IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
QyYpOworCiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlVW5leHBlY3RlZFJlcXVlc3RzKFZlY3Rv
cjxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+JiYpOwogCkBAIC0xMzQsNiArMTQzLDcg
QEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0
b3I8V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBt
X3Nlc3Npb25zOwogICAgIEhhc2hTZXQ8UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+PiBt
X3VuZXhwZWN0ZWRLZXlSZXF1ZXN0czsKKyAgICBXZWFrSGFzaFNldDxLZXlTdGF0dXNlc0NoYW5n
ZWRPYnNlcnZlcj4gbV9rZXlTdGF0dXNDaGFuZ2VkT2JzZXJ2ZXJzOwogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIFJlZlB0cjxMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQq
IG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKQEAgLTE4NiwxMSArMTk2LDE0IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CiAK
KyAgICBjb25zdCBLZXlTdGF0dXNWZWN0b3ImIGtleVN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlTdGF0dXNlczsgfQorICAgIEtleVN0YXR1c1ZlY3RvciBjb3B5S2V5U3RhdHVzZXMoKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBib29sIGVuc3VyZVNlc3Npb25Pckdyb3VwKCk7CiAgICAg
Ym9vbCBpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKExpY2Vuc2VUeXBlKSBjb25zdDsKIAotICAgIEtl
eVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlcyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlE
PiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhzdGQ6
Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBu
ZXh0UmVxdWVzdCgpOwogICAgIEFWQ29udGVudEtleVJlcXVlc3QqIGxhc3RLZXlSZXF1ZXN0KCkg
Y29uc3Q7CiAKQEAgLTIxNiw2ICsyMjksNyBAQCBwcml2YXRlOgogCiAgICAgY2xhc3MgVXBkYXRl
UmVzcG9uc2VDb2xsZWN0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVwZGF0ZVJlc3BvbnNlQ29s
bGVjdG9yPiBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yOworICAgIEtleVN0YXR1c1ZlY3RvciBt
X2tleVN0YXR1c2VzOwogCiAgICAgVmVjdG9yPFJlcXVlc3Q+IG1fcGVuZGluZ1JlcXVlc3RzOwog
ICAgIFZlY3RvcjxSZXF1ZXN0PiBtX3JlcXVlc3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpp
bmRleCBjZmUwNDhhOTM4YzA1ZGY3NDVjNzE2MzU2YWQxYjNiOTBhNTllYjc4Li5mZDYxNTJlMTg2
N2Q0ZTZhNjcyYmVmMTcwNzBjYTc2MjkxMjZmNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bQpAQCAtNjE3LDYgKzYxNywzNyBAQCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgIHJldHVy
biBudWxscHRyOwogfQogCitib29sIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojppc0FueUtleVVzYWJsZShjb25zdCBLZXlzJiBrZXlzKSBjb25zdAoreworICAgIGZvciAoYXV0
byYgc2Vzc2lvbkludGVyZmFjZSA6IG1fc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKCFzZXNzaW9u
SW50ZXJmYWNlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRvJiBr
ZXlTdGF0dXNQYWlyIDogc2Vzc2lvbkludGVyZmFjZS0+a2V5U3RhdHVzZXMoKSkgeworICAgICAg
ICAgICAgaWYgKGtleVN0YXR1c1BhaXIuc2Vjb25kICE9IENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzOjpVc2FibGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
IGlmIChrZXlzLmZpbmRJZihbJl0gKGF1dG8mIGtleSkgeworICAgICAgICAgICAgICAgIHJldHVy
biBrZXkuZ2V0KCkgPT0ga2V5U3RhdHVzUGFpci5maXJzdC5nZXQoKTsKKyAgICAgICAgICAgIH0p
ICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6YWRkS2V5U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgS2V5U3Rh
dHVzZXNDaGFuZ2VkT2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAgIG1fa2V5U3RhdHVzQ2hhbmdl
ZE9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uS2V5U3RhdHVzZXNDaGFuZ2VkKGNvbnN0IENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyYpCit7CisgICAgbV9rZXlTdGF0dXND
aGFuZ2VkT2JzZXJ2ZXJzLmZvckVhY2goW10gKGF1dG8mIG9ic2VydmVyKSB7CisgICAgICAgIG9i
c2VydmVyKCk7CisgICAgfSk7Cit9CisKIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKFJl
ZjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4mJiBpbnN0YW5jZSkKICAgICA6
IG1faW5zdGFuY2UoV1RGTW92ZShpbnN0YW5jZSkpCiAgICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMo
W1tXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJl
bnQ6dGhpc10pKQpAQCAtMTMwNiwxMyArMTMzNywxNSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QoQVZDb250
ZQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVx
dWVzdERpZFN1Y2NlZWQoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKIHsKKyAgICB1cGRh
dGVLZXlTdGF0dXNlcygpOworCiAgICAgaWYgKG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3IpIHsK
ICAgICAgICAgbV91cGRhdGVSZXNwb25zZUNvbGxlY3Rvci0+YWRkU3VjY2Vzc2Z1bFJlc3BvbnNl
KHJlcXVlc3QsIG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1f
dXBkYXRlTGljZW5zZUNhbGxiYWNrKSB7Ci0gICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNr
KGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9uYWwoa2V5U3RhdHVzZXMoKSksIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOworICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFj
ayhmYWxzZSwgc3RkOjptYWtlX29wdGlvbmFsKGNvcHlLZXlTdGF0dXNlcygpKSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIEFTU0VSVCghbV91cGRhdGVM
aWNlbnNlQ2FsbGJhY2spOwogICAgIH0KIApAQCAtMTQwNSw3ICsxNDM4LDcgQEAgc3RhdGljIGF1
dG8gcmVxdWVzdFN0YXR1c1RvQ0RNU3RhdHVzKEFWQ29udGVudEtleVJlcXVlc3RTdGF0dXMgc3Rh
dHVzKQogICAgIH0KIH0KIAotQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTdGF0dXNlcyhzdGQ6
Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5SUQpIGNvbnN0Cit2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlS2V5U3RhdHVzZXMo
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gZGlzcGxheUlEKQogewogICAgIEtleVN0
YXR1c1ZlY3RvciBrZXlTdGF0dXNlczsKIApAQCAtMTQyNyw3ICsxNDYwLDE5IEBAIENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4ga2V5U3RhdHVz
ZXM7CisgICAgbV9rZXlTdGF0dXNlcy5zd2FwKGtleVN0YXR1c2VzKTsKKworICAgIG1faW5zdGFu
Y2UtPnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoKnRoaXMpOworfQorCithdXRvIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29weUtleVN0YXR1c2VzKCkgY29u
c3QgLT4gS2V5U3RhdHVzVmVjdG9yCit7CisgICAgS2V5U3RhdHVzVmVjdG9yIGNvcGllZEtleVN0
YXR1c2VzOworICAgIGNvcGllZEtleVN0YXR1c2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9r
ZXlTdGF0dXNlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgc3RhdHVzIDogbV9rZXlTdGF0dXNl
cykKKyAgICAgICAgY29waWVkS2V5U3RhdHVzZXMudW5jaGVja2VkQXBwZW5kKHsgc3RhdHVzLmZp
cnN0LmNvcHlSZWYoKSwgc3RhdHVzLnNlY29uZCB9KTsKKyAgICByZXR1cm4gY29waWVkS2V5U3Rh
dHVzZXM7CisKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25D
aGFuZ2VkKGJvb2wgb2JzY3VyZWQpCkBAIC0xNDM4LDggKzE0ODMsMTAgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9J
bnN1ZmZpY2llbnQKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIG9i
c2N1cmVkKTsKICAgICBtX291dHB1dE9ic2N1cmVkID0gb2JzY3VyZWQ7CiAKKyAgICB1cGRhdGVL
ZXlTdGF0dXNlcygpOworCiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+dXBk
YXRlS2V5U3RhdHVzZXMoa2V5U3RhdHVzZXMoKSk7CisgICAgICAgIG1fY2xpZW50LT51cGRhdGVL
ZXlTdGF0dXNlcyhjb3B5S2V5U3RhdHVzZXMoKSk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRD
aGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikKQEAgLTE0OTIs
OSArMTUzOSwxMyBAQCBzdGQ6Om9wdGlvbmFsPENETUtleVN0YXR1cz4gQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpwcm90ZWN0aQogCiB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlUHJvdGVjdGlvblN0YXR1c0Zv
ckRpc3BsYXlJRChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7Ci0gICAgaWYgKG1fcmVx
dWVzdHMuaXNFbXB0eSgpIHx8ICFtX2NsaWVudCkKKyAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NsaWVudC0+dXBkYXRlS2V5U3RhdHVzZXMoa2V5
U3RhdHVzZXMoZGlzcGxheUlEKSk7CisKKyAgICB1cGRhdGVLZXlTdGF0dXNlcyhkaXNwbGF5SUQp
OworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dXBkYXRlS2V5U3RhdHVz
ZXMoY29weUtleVN0YXR1c2VzKCkpOwogfQogCiBib29sIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5k
ZXggNzE5YTExZmUyMjliZWYwZDQzYzljM2VmZDVkOTAyMDgwZTc2YzdmMC4uOTBkMjczZDA3OTYx
ZmM5ODZmYjdjNDU2ZmY3MzM2MmMxNGVjNWQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCkBAIC03NCw3ICs3NCw3
IEBAIHByb3RlY3RlZDoKICAgICBSZXRhaW5QdHI8V2ViQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNl
c3Npb25EZWxlZ2F0ZT4gbV9jb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlOwogICAgIFJldGFpblB0
cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBtX2tleVJlcXVlc3Q7CiAgICAgUmVmUHRyPFVpbnQ4QXJy
YXk+IG1faWRlbnRpZmllcjsKLSAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2luaXREYXRhOwogICAgIFJldGFpblB0cjxOU0RhdGE+
IG1fZXhwaXJlZFNlc3Npb247CiAgICAgVmVjdG9yPGludD4gbV9wcm90b2NvbFZlcnNpb25zOwog
ICAgIGludCBtX2NkbVZlcnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCmluZGV4IDdlYzU3NzQyNjEwYzM4NGJl
NmRkZGM1ODc0ZmYzOTVlNWI1ZjJlZGMuLjcyYTA5NTMwOWM4NDViZGNjZmRlNzA3YmU0YjcwNzBj
NWQ1MWViYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJMZWdh
Y3lDRE0uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCisj
aW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNFcnJvckV4dHJhcy5oIgogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWRXJyb3IuaD4KQEAgLTE1MSw3ICsxNTIsNyBAQCBSZWZQdHI8VWludDhBcnJheT4g
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBT
dHJpbgogICAgIGlmIChtX2NkbVZlcnNpb24gPT0gMikKICAgICAgICAgbV9pZGVudGlmaWVyID0g
aW5pdERhdGE7CiAgICAgZWxzZQotICAgICAgICBtX2luaXREYXRhID0gaW5pdERhdGE7CisgICAg
ICAgIG1faW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS0+ZGF0YSgpLCBp
bml0RGF0YS0+bGVuZ3RoKCkpOwogCiAgICAgQVNTRVJUKCFtX2NlcnRpZmljYXRlKTsKICAgICBT
dHJpbmcgY2VydGlmaWNhdGVTdHJpbmcoImNlcnRpZmljYXRlIl9zKTsKQEAgLTI3MywxMiArMjc0
LDEyIEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFy
cmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYKICAgICB9CiAKICAgICBpZiAoIW1fa2V5UmVx
dWVzdCkgewotICAgICAgICBOU0RhdGEqIG5zSW5pdERhdGEgPSBtX2luaXREYXRhID8gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOm1faW5pdERhdGEtPmRhdGEoKSBsZW5ndGg6bV9pbml0RGF0YS0+bGVu
Z3RoKCldIDogbmlsOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0luaXREYXRhID0gbV9p
bml0RGF0YSA/IG1faW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpIDogbmlsOwogICAgICAgICBOU0Rh
dGEqIG5zSWRlbnRpZmllciA9IG1faWRlbnRpZmllciA/IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpt
X2lkZW50aWZpZXItPmRhdGEoKSBsZW5ndGg6bV9pZGVudGlmaWVyLT5sZW5ndGgoKV0gOiBuaWw7
CiAgICAgICAgIGlmIChbY29udGVudEtleVNlc3Npb24oKSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHByb2Nlc3NDb250ZW50S2V5UmVxdWVzdFdpdGhJZGVudGlmaWVyOmluaXRpYWxpemF0
aW9uRGF0YTpvcHRpb25zOildKQotICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6bnNJZGVudGlmaWVyIGluaXRpYWxp
emF0aW9uRGF0YTpuc0luaXREYXRhIG9wdGlvbnM6bmlsXTsKKyAgICAgICAgICAgIFtjb250ZW50
S2V5U2Vzc2lvbigpIHByb2Nlc3NDb250ZW50S2V5UmVxdWVzdFdpdGhJZGVudGlmaWVyOm5zSWRl
bnRpZmllciBpbml0aWFsaXphdGlvbkRhdGE6bnNJbml0RGF0YS5nZXQoKSBvcHRpb25zOm5pbF07
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtjb250ZW50S2V5U2Vzc2lvbigpIHByb2Nlc3ND
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRhIG9wdGlvbnM6bmls
XTsKKyAgICAgICAgICAgIFtjb250ZW50S2V5U2Vzc2lvbigpIHByb2Nlc3NDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKICAg
ICB9CiAKICAgICBpZiAoc2hvdWxkR2VuZXJhdGVLZXlSZXF1ZXN0KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCA3NjQ4YmRiODU1NDVmNzA5OWZhZTY1ODY0MjkyYTE1MTcwMzdkZjI1Li5l
ODAzZDI2YzJlYzRlNWE0MDJjMGM3Mzc2ZTQ3NDI3ZjU1Mjk4MjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTIxMjIsOCArMjEyMiw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAg
ICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVm
ZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJyYXkt
PnNldFJhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KFN0cmluZ1ZpZXcoa2V5
VVJJKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSksIGtleVVSSS5sZW5ndGgoKSAvIHNp
emVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKLSAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0g
ICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworICAgICAgICBhdXRv
IGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGluaXREYXRhQnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoIH0pOwor
ICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhKTsKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQogICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5
TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxNTEsOSArMjE1MSw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgaWYgKHNjaGVtZSA9PSAiY2xlYXJrZXkiKSB7
CiAgICAgICAgIFN0cmluZyBrZXlJRCA9IFtbW2F2UmVxdWVzdCByZXF1ZXN0XSBVUkxdIHJlc291
cmNlU3BlY2lmaWVyXTsKICAgICAgICAgYXV0byBlbmNvZGVkS2V5SWQgPSBQQUw6OlVURjhFbmNv
ZGluZygpLmVuY29kZShrZXlJRCwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxFbmNvZGVk
RW50aXRpZXMpOwotCi0gICAgICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUo
ZW5jb2RlZEtleUlkLnNpemUoKSk7Ci0gICAgICAgIGluaXREYXRhLT5zZXRSYW5nZShlbmNvZGVk
S2V5SWQuZGF0YSgpLCBlbmNvZGVkS2V5SWQuc2l6ZSgpLCAwKTsKKyAgICAgICAgYXV0byBpbml0
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZW5jb2RlZEtleUlkKSk7CiAKICAg
ICAgICAgYXV0byBrZXlEYXRhID0gcGxheWVyKCktPmNhY2hlZEtleUZvcktleUlkKGtleUlEKTsK
ICAgICAgICAgaWYgKGtleURhdGEpIHsKQEAgLTIxNjEsNyArMjE1OSw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291
cmNlKEFWQXNzZXRSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAg
ICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKTsKKyAgICAgICAgcGxheWVy
KCktPmtleU5lZWRlZChpbml0RGF0YSk7CiAKICAgICAgICAgaWYgKCFwbGF5ZXIoKS0+c2hvdWxk
Q29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBiY2FkMTI1NDM2M2ExODdjNjhhMzM2OGZhN2E3YTE0
ODUxNWI4MmU1Li4yOTgzY2VjYWRlYTIyZTNmMjU1YjA3OWM5NmEyZjc4OTFjZDNhMzMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpIG92ZXJyaWRlIHsgb3V0cHV0T2JzY3VyZWREdWVU
b0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoZmFsc2UpOyB9CiAKICNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
LSAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5Kik7CisgICAgdm9pZCBrZXlOZWVkZWQoY29u
c3QgU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZTk1ZjhjM2NhY2YwYWRlMTgxMWYxMWJh
ZTY4M2JlNGI1ZmIxNTUzMy4uMWMzMzI3MjU0NmI0ZWY4Yjc5Nzg4ZDkwNTI3YTUwZTU0ZDZkNDlk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldENETVNlc3Npb24oTGVn
YWN5Q0RNU2Vzc2lvbiogc2Vzc2kKICNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjprZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKIHsKICAgICBtX3BsYXllci0+a2V5TmVlZGVkKGluaXREYXRhKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggOTAwN2RjY2E5ZGVlMTBlZWJj
M2IzMWQ2MzM4MDYwZDdlOTIzNzA1Ni4uN2VjMTBjMTQwNDc0YjZiMTAwMDk3YzlhZjVhZTkzYjRh
ODgyMGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgK
QEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiB1c2lu
ZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBQaXhlbEJ1ZmZl
cjsKIAogY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDIDogcHVibGljIE1lZGlhU2FtcGxlIHsKQEAg
LTYxLDYgKzYzLDcgQEAgcHVibGljOgogCiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBv
dmVycmlkZTsKICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwor
ICAgIFBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGU7IH0KICAgICBz
dGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CkBA
IC04MCw2ICs4MywxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEJ5dGVSYW5nZU9mZnNldChz
aXplX3QpOwogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRL
RVlTRVNTSU9OKQorICAgIHVzaW5nIEtleUlEcyA9IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+OworICAgIHZvaWQgc2V0S2V5SURzKEtleUlEcyYmIGtleUlEcykgeyBtX2tleUlE
cyA9IFdURk1vdmUoa2V5SURzKTsgfQorICAgIGNvbnN0IEtleUlEcyYga2V5SURzKCkgY29uc3Qg
eyByZXR1cm4gbV9rZXlJRHM7IH0KKyAgICBLZXlJRHMmIGtleUlEcygpIHsgcmV0dXJuIG1fa2V5
SURzOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2Ft
cGxlQVZGT2JqQyhSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZik7CkBAIC05NCw2ICsx
MDQsMjggQEAgcHJvdGVjdGVkOgogICAgIEF0b21TdHJpbmcgbV9pZDsKICAgICBWaWRlb1JvdGF0
aW9uIG1fcm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAgICAgYm9vbCBtX21pcnJv
cmVkIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZD
T05URU5US0VZU0VTU0lPTikKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiBtX2tleUlEczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gc3RydWN0IExvZ0FyZ3VtZW50
OwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFW
Rk9iakM+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlh
U2FtcGxlQVZGT2JqQyYgc2FtcGxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNhbXBsZS50b0pT
T05TdHJpbmcoKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakMpCitzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIHNhbXBsZSkgeyByZXR1cm4g
c2FtcGxlLnBsYXRmb3JtU2FtcGxlVHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpD
TVNhbXBsZUJ1ZmZlclR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmlu
ZGV4IDcyMjQ5N2UwYmM0MjBjZDRlNjJiMDYyNDkyM2JmZDhmOWQ1NDA2MjIuLjg5NTFiMjQ3ZGQw
MDE1MGVkMTZjZTA0MWFjY2VjYmJmY2JlZDVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0YXRl
KFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiwgYm9vbCBhY3RpdmUpOwogICAgIHZvaWQgc291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMqKTsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
LSAgICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
QyosIFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAg
dm9pZCByZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRl
eCA5MjdkMTMwMzExZThlZWM4YjAyMTU2YWM2MzI4MGE5YmY5ZDA4MDhjLi4xMjAxYjcyNmJkMDQ3
YzVmMTEwZjcxNGFiMTAyMzE5YTYxNjIyY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTE5NSw5ICsxOTUsMTAgQEAg
dm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hh
bmdlQWN0aXZlU3RhdGUoU291cmNlQnUKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJLZXlO
ZWVkZWQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIGJ1ZmZlciwgVWludDhBcnJheSogaW5p
dERhdGEpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlcktleU5l
ZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogYnVmZmVyLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXREYXRhKQogewogICAgIG1fc291cmNlQnVmZmVyc05lZWRpbmdTZXNzaW9ucy5hcHBl
bmQoYnVmZmVyKTsKKwogICAgIGlmIChtX3BsYXllcikKICAgICAgICAgbV9wbGF5ZXItPmtleU5l
ZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLmgKaW5kZXggYzIyZTcyNWY4NTQ2ZjI3OGZmNjU3YTVmNGM1NzJi
OTI5NTE1ZWQ0OC4uNzgxMTIwNGNjZmQxZDgxYjE1MDkyYjU3NWE4Mjk4MGQ2MmMyZjEwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
aApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRh
Rm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3Ry
aW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKICAgICB2b2lkIHdpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNr
SUQpOwogICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRChOU0RhdGEqLCB1aW50NjRfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoTlNEYXRhKiwgdWludDY0
X3QgdHJhY2tJRCk7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpp
bmRleCBhYmQ4MWU1ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyLi5hYTE1ODQwNGIx
MGU0NDRhZjZlNWVkZGM4ZGFkNmJhOTZlZDVjYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTU3LDYgKzU3LDEyIEBA
CiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKK0BpbnRlcmZhY2UgQVZDb250
ZW50S2V5U3BlY2lmaWVyIChXZWJDb3JlUHJpdmF0ZSkKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5T
RGF0YSAqaW5pdGlhbGl6YXRpb25EYXRhOworQGVuZAorI2VuZGlmCisKIEBpbnRlcmZhY2UgV2Vi
QVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJzZXJP
dXRwdXRIYW5kbGluZz4gewogICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMq
IF9wYXJlbnQ7CiAgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwpAQCAtMTMzLDYgKzEz
OSwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBBU1NFUlRf
VU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7CiAg
ICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7CiB9CisKKyNpZiBIQVZFKEFWQ09OVEVOVEtF
WVNQRUNJRklFUikKKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2Vy
ICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjooQVZDb250
ZW50S2V5U3BlY2lmaWVyICopa2V5U3BlY2lmaWVyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRy
YWNrSUQpdHJhY2tJRAoreworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3Ry
ZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBpZiAoW2tleVNwZWNpZmllciByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluaXRpYWxpemF0aW9uRGF0YSldKQorICAgICAgICBfcGFy
ZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JUcmFja0lEKGtleVNw
ZWNpZmllci5pbml0aWFsaXphdGlvbkRhdGEsIHRyYWNrSUQpOworfQorI2VuZGlmCisKIEBlbmQK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzM0LDEwICszNTAsMTQgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm8KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSogbnNJ
bml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkKIHsKLSAgICBhdXRvIGluaXREYXRhID0gVWludDhB
cnJheTo6Y3JlYXRlKG5zSW5pdERhdGEubGVuZ3RoKTsKLSAgICBbbnNJbml0RGF0YSBnZXRCeXRl
czppbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0YS0+bGVuZ3RoKCldOworICAgIG1fZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxi
YWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zSW5pdERhdGEpLCB0cmFja0lEKTsKK30KIAotICAg
IG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJ
RENhbGxiYWNrKFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK3ZvaWQgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3BlY2lmaWVyRm9yVHJh
Y2tJRChOU0RhdGEqIG5zSW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpCit7CisgICAgbV9jYWxs
T25DbGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IG5zSW5pdERhdGEgPSByZXRhaW5QdHIobnNJbml0RGF0YSksIHRyYWNrSURdIHsKKyAgICAgICAg
bV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zSW5pdERhdGEuZ2V0KCkpLCB0cmFja0lEKTsKKyAgICB9
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmgKaW5kZXggNzU0YjFlMmVlYzAyZGYzMzk1ZTVjZGI1YzA3ZjhlODhhOTM1
Y2QwOC4uMzc2YTZmYzE0MzgxMWVlYjg1NjdiY2IwOGU3ZGRkM2IxZmYxM2NmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTk1LDcgKzk2LDkgQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51
bGxwdHI7IH0KIAogICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCk7Ci0gICAgdm9pZCBkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxVaW50
OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CisgICAg
dm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKFJlZjxTaGFyZWRCdWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1h
cGhvcmU+KTsKKworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmll
ckZvclRyYWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJhY2tJRCk7CiAKICAg
ICBib29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKIApAQCAtMTMyLDcgKzEzNSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkKCk7CiAgICAgCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgVWludDhBcnJheSogaW5pdERhdGEoKSB7IHJldHVy
biBtX2luaXREYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiBpbml0RGF0YSgpIHsgcmV0
dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KICNlbmRpZgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECkBAIC0xNTAsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBJbml0aWFsaXphdGlv
blNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21l
bnQ7CiAgICAgdm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNl
Z21lbnQmJik7CiAgICAgdm9pZCBkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJf
dCk7Ci0gICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1w
bGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKKyAgICB2
b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+
JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8v
IFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CkBAIC0xNzQsNiArMTc3LDcgQEAgcHJpdmF0ZToKICAgICBNZWRp
YVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhVGltZSBkdXJh
dGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNh
bXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgZGlkQmVjb21lUmVh
ZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGFwcGVuZENvbXBs
ZXRlZCgpOwogICAgIHZvaWQgZGVzdHJveVN0cmVhbURhdGFQYXJzZXIoKTsKQEAgLTE4Niw2ICsx
OTAsMTIgQEAgcHJpdmF0ZToKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAog
CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25z
dDsKKyAgICBib29sIGNhbkVucXVldWVTYW1wbGUodWludDY0X3QgdHJhY2tJRCwgY29uc3QgTWVk
aWFTYW1wbGVBVkZPYmpDJik7CisgICAgYm9vbCB0cmFja0lzQmxvY2tlZCh1aW50NjRfdCB0cmFj
aykgY29uc3Q7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVO
VEtFWVNFU1NJT04pCisgICAgdm9pZCBrZXlTdGF0dXNlc0NoYW5nZWQoKTsKKyNlbmRpZgogCiAg
ICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4+IG1fdmlkZW9UcmFja3M7CiAgICAg
VmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4+IG1fYXVkaW9UcmFja3M7CkBAIC0xOTcs
NyArMjA3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJvY2Vzc2luZ0luaXRpYWxpemF0aW9u
U2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRD
YWxsYmFjayB7IGZhbHNlIH07CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGlu
Z1RyYWNrQ2hhbmdlQ2FsbGJhY2tzOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJl
ZjxNZWRpYVNhbXBsZT4+PiBtX21lZGlhU2FtcGxlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVp
bnQ2NF90LCBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4+IG1fbWVkaWFTYW1wbGVzOworICAgIERl
cXVlPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+PiBtX2Jsb2Nr
ZWRTYW1wbGVzOwogCiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBt
X2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCkBA
IC0yMTUsMTMgKzIyNiwyNyBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQyogbV9tZWRpYVNvdXJjZTsKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OworCiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+
IG1faW5pdERhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9pbml0RGF0YTsKICAgICBX
ZWFrUHRyPENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM+IG1fc2Vzc2lvbiB7IG51bGxwdHIg
fTsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5U
S0VZU0VTU0lPTikKKyAgICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PjsKKyAgICBzdHJ1Y3QgVHJhY2tJbml0RGF0YSB7CisgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGluaXREYXRhOworICAgICAgICBLZXlJRHMga2V5SURzOworICAgIH07Cisg
ICAgdXNpbmcgVHJhY2tJbml0RGF0YU1hcCA9IEhhc2hNYXA8dWludDY0X3QsIFRyYWNrSW5pdERh
dGE+OworICAgIFRyYWNrSW5pdERhdGFNYXAgbV9wZW5kaW5nUHJvdGVjdGVkVHJhY2tJbml0RGF0
YU1hcDsKKyAgICBUcmFja0luaXREYXRhTWFwIG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcDsK
KworICAgIHVzaW5nIFRyYWNrS2V5SURzTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgS2V5SURzPjsK
KyAgICBUcmFja0tleUlEc01hcCBtX2N1cnJlbnRUcmFja0lEczsKKwogICAgIFJlZlB0cjxDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBVbmlxdWVSZWY8
T2JzZXJ2ZXI8dm9pZCgpPj4gbV9rZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcjsKKyAgICBLZXlJ
RHMgbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX2Nh
Y2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tCmluZGV4IGU2MWEzYTdmY2M5NjM3OThmNjg5OGMwMTI3YmQ3NGJiMzMw
YmY3YTEuLmM5Njc2ZDJmNGI2OTE4N2Y2MGViMGM4MWRkZGFmYzM1OThhYzA1NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
CkBAIC03Niw2ICs3NiwxMiBAQCAtICh2b2lkKWV4cGVjdE1pbmltdW1VcGNvbWluZ1NhbXBsZUJ1
ZmZlclByZXNlbnRhdGlvblRpbWU6IChDTVRpbWUpbWluaW11bVVwY29taQogLSAodm9pZClyZXNl
dFVwY29taW5nU2FtcGxlQnVmZmVyUHJlc2VudGF0aW9uVGltZUV4cGVjdGF0aW9uczsKIEBlbmQK
IAorQGludGVyZmFjZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAoV2ViQ29yZVNhbXBsZUJ1
ZmZlcktleVNlc3Npb24pIDxBVkNvbnRlbnRLZXlSZWNpcGllbnQ+CitAZW5kCisKK0BpbnRlcmZh
Y2UgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyIChXZWJDb3JlU2FtcGxlQnVmZmVyS2V5U2Vz
c2lvbikgPEFWQ29udGVudEtleVJlY2lwaWVudD4KK0BlbmQKKwogI3ByYWdtYSBtYXJrIC0KICNw
cmFnbWEgbWFyayBBVlN0cmVhbVNlc3Npb24KIApAQCAtMjc1LDYgKzI4MSwyNCBAQCBzdGF0aWMg
dWludDY0X3QgbmV4dE1hcElEKCkKICAgICByZXR1cm4gKyttYXBJRDsKIH0KIAorc3RhdGljIGJv
b2wgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKQoreworICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzID0gZmFsc2U7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBbJl0geworICAgICAgICBzdXBw
b3J0cyA9IFtQQUw6OmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNsYXNzKCkgY29uZm9y
bXNUb1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRlbnRLZXlSZWNpcGllbnQpXQorICAgICAgICAg
ICAgJiYgW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGNvbmZvcm1z
VG9Qcm90b2NvbDpAcHJvdG9jb2woQVZDb250ZW50S2V5UmVjaXBpZW50KV07CisgICAgfSk7Cisg
ICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitzdGF0aWMgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBrZXlJRHMpCit7CisgICAgcmV0dXJuIGtleUlEcy5tYXAoW10gKGF1dG8mIGtleUlE
KSB7CisgICAgICAgIHJldHVybiBrZXlJRC5jb3B5UmVmKCk7CisgICAgfSk7Cit9CisKIHN0YXRp
YyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYs
IGNvbnN0IHZvaWQqIGxpc3RlbmVyLCBDRlN0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lLCBjb25z
dCB2b2lkKiwgQ0ZUeXBlUmVmKQogewogICAgIGlmICghQ0ZFcXVhbChQQUw6OmtDTVNhbXBsZUJ1
ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBub3RpZmljYXRpb25OYW1l
KSkKQEAgLTMwNyw2ICszMzEsOSBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwogICAgICwgbV9l
cnJvckxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoUGFyZW50Oip0aGlzXSkpCiAgICAgLCBtX2FwcGVuZFF1ZXVlKFdvcmtRdWV1
ZTo6Y3JlYXRlKCJTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBkYXRhIHBhcnNlciBxdWV1ZSIp
KQogICAgICwgbV9tZWRpYVNvdXJjZShwYXJlbnQpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICwgbV9rZXlTdGF0dXNlc0NoYW5n
ZWRPYnNlcnZlcihtYWtlVW5pcXVlUmVmPE9ic2VydmVyPHZvaWQoKT4+KFt0aGlzXSB7IGtleVN0
YXR1c2VzQ2hhbmdlZCgpOyB9KSkKKyNlbmRpZgogICAgICwgbV9tYXBJRChuZXh0TWFwSUQoKSkK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBhcmVudC0+bG9nZ2Vy
KCkpCkBAIC0zNjQsNiArMzkxLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KIAogICAgIGNs
ZWFyVHJhY2tzKCk7CiAKKyAgICBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuc3dhcChtX3Bl
bmRpbmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwKTsKKyAgICBtX3BlbmRpbmdQcm90ZWN0ZWRU
cmFja0luaXREYXRhTWFwLmNsZWFyKCk7CisKICAgICBmb3IgKGF1dG8gdmlkZW9UcmFja0luZm8g
OiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CiAgICAgICAgIHZpZGVvVHJhY2tJbmZvLnRyYWNrLT5z
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
dGhpc10gKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTQ1OCwxMCArNDg4LDE2IEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90
IGNvZGUpCiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxN
ZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5n
JiBtZWRpYVR5cGUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRl
TWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1lZGlhU2FtcGxl
LCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKIHsKICAgICBVTlVT
RURfUEFSQU0obWVkaWFUeXBlKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhB
VkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3Byb3RlY3Rl
ZFRyYWNrSW5pdERhdGFNYXAuZmluZCh0cmFja0lkKTsKKyAgICBpZiAoZmluZFJlc3VsdCAhPSBt
X3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuZW5kKCkpCisgICAgICAgIG1lZGlhU2FtcGxlLT5z
ZXRLZXlJRHMoY29weUtleUlEcyhmaW5kUmVzdWx0LT52YWx1ZS5rZXlJRHMpKTsKKyNlbmRpZgor
CiAgICAgaWYgKG1fcHJvY2Vzc2luZ0luaXRpYWxpemF0aW9uU2VnbWVudCkgewogICAgICAgICBE
RUJVR19MT0coTE9HSURFTlRJRklFUiwgbWVkaWFTYW1wbGUuZ2V0KCkpOwogICAgICAgICBtX21l
ZGlhU2FtcGxlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tJZCwgV1RGTW92ZShtZWRpYVNh
bXBsZSkpKTsKQEAgLTUwOCw3ICs1NDQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRgogI2Vu
ZGlmCiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+
JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nl
c3Npb25TZW1hcGhvcmUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhv
cmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUpCiB7CiAgICAgYXV0byBwbGF5ZXIgPSB0aGlzLT5wbGF5
ZXIoKTsKICAgICBpZiAoIXBsYXllcikKQEAgLTUxOSwxMSArNTU1LDE1IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvCiAKICAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwogICAgIG1f
aW5pdERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKTsKLSAgICBtX21lZGlhU291cmNlLT5zb3VyY2VC
dWZmZXJLZXlOZWVkZWQodGhpcywgbV9pbml0RGF0YS5nZXQoKSk7CisgICAgbV9tZWRpYVNvdXJj
ZS0+c291cmNlQnVmZmVyS2V5TmVlZGVkKHRoaXMsICptX2luaXREYXRhKTsKKwogICAgIGlmIChh
dXRvIHNlc3Npb24gPSBwbGF5ZXItPmNkbVNlc3Npb24oKSkgewotICAgICAgICBpZiAoYXV0byBw
YXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCisgICAgICAgIGlmIChzYW1wbGVCdWZm
ZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKSB7CisgICAgICAgICAgICAvLyBuby1vcC4K
KyAgICAgICAgfSBlbHNlIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIo
KSkKICAgICAgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwotICAgICAgICBoYXNT
ZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgaWYgKGhhc1Nlc3Npb25TZW1hcGhv
cmUpCisgICAgICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNTMzLDE0ICs1NzMsMTcgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm8KICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBo
b3JlOwogICAgIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5U
S0VZU0VTU0lPTikKLSAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9pbml0RGF0YS0+ZGF0YSgpLCBtX2luaXREYXRhLT5ieXRlTGVuZ3RoKCkpOwotICAgIGF1
dG8ga2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2lu
Zihpbml0RGF0YUJ1ZmZlcik7CisgICAgYXV0byBrZXlJRHMgPSBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKCptX2luaXREYXRhKTsKICAgICBpZiAoIWtleUlE
cykKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9wZW5kaW5nUHJvdGVjdGVkVHJhY2tJbml0RGF0
YU1hcC5zZXQodHJhY2tJRCwgVHJhY2tJbml0RGF0YSB7IG1faW5pdERhdGEuY29weVJlZigpLCAq
a2V5SURzIH0pOworCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAgICAgaWYgKGF1dG8g
aW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhrZXlJRHMu
dmFsdWUoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURh
dGFQYXJzZXIoKSkKKyAgICAgICAgICAgIGlmIChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0
S2V5U2Vzc2lvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gbm8tb3AuCisgICAgICAgICAgICB9
IGVsc2UgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQogICAgICAg
ICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVu
dEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgICAgICAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFw
aG9yZSkgewogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7
CkBAIC01NTIsNyArNTk1LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICB9CiAKICAg
ICBtX2tleUlEcyA9IFdURk1vdmUoa2V5SURzLnZhbHVlKCkpOwotICAgIHBsYXllci0+aW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoInNpbmYiLCBpbml0RGF0YUJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSk7CisgICAgcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZCgic2luZiIsIG1faW5pdERhdGEtPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogCiAgICAgbV93
YWl0aW5nRm9yS2V5ID0gdHJ1ZTsKICAgICBwbGF5ZXItPndhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7
CkBAIC01ODcsNyArNjMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBw
ZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291
bnRlckVycm9yRHVyaW5nUGFyc2luZyhlcnJvckNvZGUpOwogICAgIH0pOwogCi0gICAgbV9wYXJz
ZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPE1lZGlhU2FtcGxlPiYm
IHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAg
ICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdIChSZWY8TWVkaWFT
YW1wbGVBVkZPYmpDPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCBhYm9ydENhbGxlZCAhPSB3ZWFrVGhpcy0+bV9hYm9ydENhbGxlZCkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTYxNiw3ICs2NTksNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICB9
CiAgICAgfSk7CiAKLSAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmUsIGFib3J0Q2FsbGVk
ID0gbV9hYm9ydENhbGxlZF0oUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRy
YWNrSUQpIG11dGFibGUgeworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNlbWFwaG9yZSwgYWJvcnRD
YWxsZWQgPSBtX2Fib3J0Q2FsbGVkXShSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCB1aW50
NjRfdCB0cmFja0lEKSBtdXRhYmxlIHsKICAgICAgICAgLy8gQ2FsbGVkIG9uIHRoZSBkYXRhIHBh
cnNlciBxdWV1ZS4KICAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFw
aG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgYWJvcnRDYWxsZWQsIGluaXRE
YXRhID0gV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmVdICgp
IG11dGFibGUgewpAQCAtNjM2LDYgKzY3OSwxMyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICB9CiAgICAg
fSk7CiAKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRp
ZmllckZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJv
cnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
dWludDY0X3QgdHJhY2tJRCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8IGFib3J0Q2FsbGVkICE9IHdlYWtUaGlzLT5tX2Fib3J0Q2Fs
bGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChXVEZNb3ZlKGluaXRE
YXRhKSwgdHJhY2tJRCwgbnVsbHB0cik7CisgICAgfSk7CisKICAgICBtX3BhcnNpbmdTdWNjZWVk
ZWQgPSB0cnVlOwogCiAgICAgbV9hcHBlbmRRdWV1ZS0+ZGlzcGF0Y2goW2RhdGEgPSBXVEZNb3Zl
KGRhdGEpLCB3ZWFrVGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhp
cyksIHBhcnNlciA9IG1fcGFyc2VyLCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdKCkgbXV0
YWJsZSB7CkBAIC03MzYsNiArNzg2LDExIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRlc3Ryb3lSZW5kZXJlcnMoKQogICAgICAgICBbcmVuZGVyZXIgZmx1c2hdOwogICAgICAg
ICBbcmVuZGVyZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgICAgICBbbV9lcnJvckxp
c3RlbmVyIHN0b3BPYnNlcnZpbmdSZW5kZXJlcjpyZW5kZXJlci5nZXQoKV07CisKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgICAg
IGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNz
aW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBy
ZW1vdmVDb250ZW50S2V5UmVjaXBpZW50OnJlbmRlcmVyLmdldCgpXTsKKyNlbmRpZgogICAgIH0K
IAogICAgIFttX2Vycm9yTGlzdGVuZXIgaW52YWxpZGF0ZV07CkBAIC04NDMsNiArODk4LDExIEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChB
dWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRL
RVlTRVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5k
ZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNv
bnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpyZW5kZXJlci5nZXQoKV07
CisjZW5kaWYKKwogICAgICAgICAgICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0aGlzIH07CiAgICAg
ICAgICAgICBbcmVuZGVyZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOl57CiAgICAgICAgICAgICAgICAgaWYgKHdl
YWtUaGlzKQpAQCAtOTA5LDcgKzk2OSwyNCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpzZXRDRE1JbnN0YW5jZShDRE1JbnN0YW5jZSogaW5zdGFuY2UpCiAKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogCisgICAgaWYgKHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBv
cnRLZXlTZXNzaW9uKCkgJiYgbV9jZG1JbnN0YW5jZSkgeworICAgICAgICBpZiAobV9kaXNwbGF5
TGF5ZXIpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBy
ZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgpXTsKKworICAgICAg
ICBmb3IgKGF1dG8mIGF1ZGlvUmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQor
ICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29u
dGVudEtleVJlY2lwaWVudDphdWRpb1JlbmRlcmVyLmdldCgpXTsKKyAgICB9CisKICAgICBtX2Nk
bUluc3RhbmNlID0gZnBzSW5zdGFuY2U7CisKKyAgICBpZiAoc2FtcGxlQnVmZmVyUmVuZGVyZXJz
U3VwcG9ydEtleVNlc3Npb24oKSAmJiBtX2NkbUluc3RhbmNlKSB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlMYXllcikKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lv
bigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworCisgICAg
ICAgIGZvciAoYXV0byYgYXVkaW9SZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJlcnMudmFsdWVzKCkp
CisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250
ZW50S2V5UmVjaXBpZW50OmF1ZGlvUmVuZGVyZXIuZ2V0KCldOworICAgIH0KKwogICAgIGF0dGVt
cHRUb0RlY3J5cHQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlKTsKQEAgLTky
Niw4ICsxMDAzLDEwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRU
b0RlY3J5cHQoKQogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCi0gICAgICAg
IFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lw
aWVudDpwYXJzZXJdOworICAgIGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNl
c3Npb24oKSkgeworICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFy
c2VyKCkpCisgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigp
IGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKKyAgICB9CiAgICAgaWYgKG1faGFzU2Vz
c2lvblNlbWFwaG9yZSkgewogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgp
OwogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpAQCAtMTEwNSwxOSAr
MTE4NCw4OCBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgICAgICBwbGF5
ZXItPnNldEhhc0F2YWlsYWJsZUF1ZGlvU2FtcGxlKHJlbmRlcmVyLCBmYWxzZSk7CiB9CiAKK2Jv
b2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrSXNCbG9ja2VkKHVpbnQ2NF90IHRy
YWNrSUQpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzYW1wbGVQYWlyIDogbV9ibG9ja2VkU2Ft
cGxlcykgeworICAgICAgICBpZiAoc2FtcGxlUGFpci5maXJzdCA9PSB0cmFja0lEKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKK3ZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmtleVN0YXR1c2VzQ2hhbmdlZCgpCit7CisgICAg
d2hpbGUgKCFtX2Jsb2NrZWRTYW1wbGVzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiBmaXJz
dFBhaXIgPSBtX2Jsb2NrZWRTYW1wbGVzLmZpcnN0KCk7CisKKyAgICAgICAgLy8gSWYgd2Ugc3Rp
bGwgY2FuJ3QgZW5xdWV1ZSB0aGUgc2FtcGxlLCBiYWlsLgorICAgICAgICBpZiAoIWNhbkVucXVl
dWVTYW1wbGUoZmlyc3RQYWlyLmZpcnN0LCBmaXJzdFBhaXIuc2Vjb25kKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBhdXRvIGZpcnN0UGFpclRha2VuID0gbV9ibG9ja2VkU2FtcGxl
cy50YWtlRmlyc3QoKTsKKyAgICAgICAgZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKGZpcnN0UGFpclRh
a2VuLnNlY29uZCksIGZpcnN0UGFpclRha2VuLmZpcnN0KTsKKyAgICB9Cit9CisjZW5kaWYKKwor
Ym9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuRW5xdWV1ZVNhbXBsZSh1aW50NjRf
dCB0cmFja0lELCBjb25zdCBNZWRpYVNhbXBsZUFWRk9iakMmIHNhbXBsZSkKK3sKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgLy8g
SWYgc2FtcGxlIGJ1ZmZlcnMgZG9uJ3Qgc3VwcG9ydCBBVkNvbnRlbnRLZXlTZXNzaW9uOiBlbnF1
ZXVlIHNhbXBsZQorICAgIGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Np
b24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBpZiBzYW1wbGUgaXMgdW5lbmNy
eXRwZWQ6IGVucXVldWUgc2FtcGxlCisgICAgaWYgKHNhbXBsZS5rZXlJRHMoKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlIGlzIGVuY3J5cHRlZCwg
YnV0IHdlIGFyZSBub3QgYXR0YWNoZWQgdG8gYSBDRE06IGRvIG5vdCBlbnF1ZXVlIHNhbXBsZS4K
KyAgICBpZiAoIW1fY2RtSW5zdGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IGlmIHNhbXBsZSBpcyBlbmNyeXB0ZWQsIGFuZCBrZXlJRHMgbWF0Y2ggdGhlIGN1cnJlbnQgc2V0
IG9mIGtleUlEczogZW5xdWV1ZSBzYW1wbGUuCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9jdXJy
ZW50VHJhY2tJRHMuZmluZCh0cmFja0lEKTsKKyAgICBpZiAoZmluZFJlc3VsdCAhPSBtX2N1cnJl
bnRUcmFja0lEcy5lbmQoKSAmJiBmaW5kUmVzdWx0LT52YWx1ZSA9PSBzYW1wbGUua2V5SURzKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlJ3Mgc2V0IG9mIGtleUlE
cyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzZXQgb2Yga2V5SURzLCBjb25zdWx0IHdpdGgg
dGhlIENETQorICAgIC8vIHRvIGRldGVybWluZSBpZiB0aGUga2V5SURzIGFyZSB1c2FibGU7IGlm
IHNvLCB1cGRhdGUgdGhlIGN1cnJlbnQgc2V0IG9mIGtleUlEcyBhbmQgZW5xdWV1ZSBzYW1wbGUu
CisgICAgaWYgKG1fY2RtSW5zdGFuY2UtPmlzQW55S2V5VXNhYmxlKHNhbXBsZS5rZXlJRHMoKSkp
IHsKKyAgICAgICAgbV9jdXJyZW50VHJhY2tJRHMuc2V0KHRyYWNrSUQsIHNhbXBsZS5rZXlJRHMo
KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisjZWxz
ZQorICAgIHJldHVybiB0cnVlOworI2VuZGlmCit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29uc3Qg
QXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKICAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVf
b3IoMCk7CiAgICAgaWYgKHRyYWNrSUQgIT0gbV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1
ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQ
bGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKTsK
LSAgICBpZiAocGxhdGZvcm1TYW1wbGUudHlwZSAhPSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVC
dWZmZXJUeXBlKQorICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBzYW1wbGVBVkZPYmpD
ID0gc3RhdGljX3JlZmVyZW5jZV9jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oV1RGTW92ZShzYW1w
bGUpKTsKKyAgICBpZiAoIXNhbXBsZUFWRk9iakMtPmtleUlEcygpLmlzRW1wdHkoKSAmJiAhY2Fu
RW5xdWV1ZVNhbXBsZSh0cmFja0lELCBzYW1wbGVBVkZPYmpDKSkgeworICAgICAgICBtX2Jsb2Nr
ZWRTYW1wbGVzLmFwcGVuZCh7IHRyYWNrSUQsIFdURk1vdmUoc2FtcGxlQVZGT2JqQykgfSk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICBlbnF1ZXVlU2FtcGxlKFdURk1vdmUoc2FtcGxl
QVZGT2JqQyksIHRyYWNrSUQpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRf
dCB0cmFja0lEKQorewogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVS
OwogICAgIERFQlVHX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRyYWNrIElEID0gIiwgdHJhY2tJ
RCwgIiwgc2FtcGxlID0gIiwgc2FtcGxlLmdldCgpKTsKIAorICAgIFBsYXRmb3JtU2FtcGxlIHBs
YXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworCiAgICAgQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRG
b3JtYXREZXNjcmlwdGlvbihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpOwog
ICAgIEFTU0VSVChmb3JtYXREZXNjcmlwdGlvbik7CiAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlv
bikgewpAQCAtMTI4NCw2ICsxNDMyLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKQogICAgIGVs
c2UKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHRyYWNrSXNCbG9ja2VkKHRyYWNrSUQpKQor
ICAgICAgICByZXR1cm47CisKICAgICBwcm92aWRlTWVkaWFEYXRhKEF0b21TdHJpbmc6Om51bWJl
cih0cmFja0lEKSk7CiB9CiAKQEAgLTEzNzUsMTEgKzE1MjYsMjEgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6c2V0VmlkZW9MYXllcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciogbGF5ZXIKICAgICAgICAgW21fZGlzcGxheUxheWVyIGZsdXNoXTsKICAgICAgICAgW21fZGlz
cGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKICAgICAgICAgW21fZXJyb3JMaXN0
ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXI6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAg
ICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vz
c2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkg
cmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5nZXQoKV07CisjZW5kaWYK
ICAgICB9CiAKICAgICBtX2Rpc3BsYXlMYXllciA9IGxheWVyOwogCiAgICAgaWYgKG1fZGlzcGxh
eUxheWVyKSB7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRL
RVlTRVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5k
ZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNv
bnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5n
ZXQoKV07CisjZW5kaWYKKwogICAgICAgICBXZWFrUHRyIHdlYWtUaGlzIHsgKnRoaXMgfTsKICAg
ICAgICAgW21fZGlzcGxheUxheWVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeIHsKICAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMz
ZmIxNGQyMzE1NTk0YTg4ODM2NS4uZmMyYmFiOTA3ZDk4MzUzZDFmOGFhZDY5NGY5ZTU1MmE0YzI5
ZmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTG9n
Z2VyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKLWNsYXNzIE1l
ZGlhU2FtcGxlOworY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRo
cmVhZC4KLSAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpPjsKKyAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlTWVkaWFEYXRh
Q2FsbGJhY2soRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewog
ICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OwpAQCAtMTM3LDEyICsxMzcsMTkgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFdpbGwgYmUg
Y2FsbGVkIHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KLSAgICB1c2luZyBEaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxVaW50OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lEKT47
CisgICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1
aW50NjRfdCB0cmFja0lEKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2sp
CiAgICAgewogICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAor
ICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1aW50NjRfdCB0cmFja0lEKT47CisgICAg
dm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENh
bGxiYWNrKERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2Fs
bGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwor
ICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFNvdXJjZUJ1ZmZlclBhcnNlcigpOwogCkBAIC0xNTIs
NiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayBt
X2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjazsKICAgICBXaWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fd2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKICAg
ICBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
Q2FsbGJhY2sgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEQ2FsbGJhY2s7CisgICAgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRp
ZmllckZvclRyYWNrSURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50
aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCmluZGV4IDA1YTgzMTZkYzI3ZTYzMDE3ZjM5N2YxOTI0NjliODJhMzNiN2IwMzQu
LmFlMTY0MTRmMjFjNjg0NmMxODk3NzA5ZTE0MjRlNGE2YTRiNzYxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNv
bnN0IFRyYWNrRQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRv
JiBrZXlJZCA9IGtleUlkRWxlbWVudC52YWx1ZSgpOwotICAgICAgICAgICAgbV9rZXlJZHMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKHRyYWNrRW50cnkudHJhY2tfdWlkLnZhbHVlKCksIFVpbnQ4QXJy
YXk6OmNyZWF0ZShrZXlJZC5kYXRhKCksIGtleUlkLnNpemUoKSkpKTsKKyAgICAgICAgICAgIG1f
a2V5SWRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih0cmFja0VudHJ5LnRyYWNrX3VpZC52YWx1ZSgp
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShrZXlJZC5kYXRhKCksIGtleUlkLnNpemUoKSkpKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDI4ZTcz
ZmJhNTAyM2M4MTZiZmIyNDJjNWY5OTBkYjk3YTE4YmMxZmYuLmU4NzZhYjQxNGE0YWJiMzNkNTE4
YzM3YjQxZmU1YTE0Nzc2YWI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAg
LTI2OSw3ICsyNjksNyBAQCBwcml2YXRlOgogICAgIHdlYm06OlN0YXR1cyBPbkZyYW1lKGNvbnN0
IHdlYm06OkZyYW1lTWV0YWRhdGEmLCB3ZWJtOjpSZWFkZXIqLCB1aW50NjRfdCogYnl0ZXNSZW1h
aW5pbmcpIGZpbmFsOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluaXRpYWxpemF0aW9uU2VnbWVu
dD4gbV9pbml0aWFsaXphdGlvblNlZ21lbnQ7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRf
dCwgUmVmPFVpbnQ4QXJyYXk+Pj4gbV9rZXlJZHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50
NjRfdCwgUmVmPFNoYXJlZEJ1ZmZlcj4+PiBtX2tleUlkczsKICAgICB3ZWJtOjpTdGF0dXMgbV9z
dGF0dXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYm06OldlYm1QYXJzZXI+IG1fcGFyc2VyOwog
ICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFTYW1wbGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCmluZGV4IDFkNzFhMzM5NjljZmJjNjc1ZGVl
Y2VhNzhlNjRmMmQ2ODk5ZTQxZWIuLmI0ZDUzMTUwMjk4MmZkOWJjNmE5ZGQyYzI2OGQ3OWQ3ZmFi
NzM2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCkBAIC02Myw2ICs2Myw3
IEBAIHB1YmxpYzoKICAgICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxl
VHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4g
Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJk
NjViLi4wMDM5YjQyMDAyYTZmMDVkY2I3ZGFiZDU5M2RmYTg0ZDJiMmJkNzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRl
OgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVv
ZihtX2JveCk7IH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1T
YW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
UGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlOyB9CiAgICAgc3RkOjpvcHRpb25hbDxC
eXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA0MmEzMjA2NTRiMDNkZjliNDM5Nzc3OTQy
NTY0NTgyMDA2Y2RhMTEwLi43MTFjZWQwYmYxMzE0MjU5MTc3NWZmZDc5M2FlNWE4NmM2YWUwY2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OTgsMTEgKzY5OCwxMCBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5
SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1lc3NhZ2UpCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgbWVzc2FnZSkKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZVJlZmVy
ZW5jZTsKLSAgICBpZiAobWVzc2FnZSkKLSAgICAgICAgbWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVz
c2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5ieXRlTGVuZ3RoKCkgfTsKKyAgICBtZXNzYWdlUmVmZXJl
bmNlID0geyBtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkgfTsKICAgICBtX3dlYlByb2Nl
c3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1l
ZGlhUGxheWVyS2V5TmVlZGVkKFdURk1vdmUobWVzc2FnZVJlZmVyZW5jZSkpLCBtX2lkKTsKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggOTMxNmI2NmFiMzU5NjZlNWI2NDVkZDFjN2NlMGU4
MTJmMjA2YTYzNy4uNTk1YzU4OTE5ZWExM2ZlYjk1ZDhmYzBkMGI0MzIzMDY4YTgyYTBiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5
ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA3NzRjY2Yz
MWYyNjc3ZDBhMDUyMTc2NTFiM2I0ZTEzMjM1YzRjMjk0Li5mODk1N2IzYjhlNDE4NjIzYjNiNTZj
MDEyMTU3MDA1YmRjZjYyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAg
LTE2Miw3ICsxNjIsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2Uo
UmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAgICAgICBkaWRQYXJz
ZVRyYWNrcyh7IH0sIGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBwYXJzZXItPnNldERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRp
YVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIGRpZFByb3ZpZGVNZWRpYURhdGEoV1RGTW92ZSht
ZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIG1faW5pdCA9IHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2Ft
cGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQordm9p
ZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGVB
VkZPYmpDPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQog
ewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuaAppbmRleCA2NTA5M2U5ZTQ2YjQwYjVhMzk3NmZkZWYyOWU2MTNjNjQ1MWYzMTVhLi4xNWQ1
NTczNjMzODE3NDYwYzJlNjIwNDQxOTAxMDIzY2Y4NmI0YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogREVDTEFSRV9DT1JFX01FRElBX1RSQUlUUyhG
b3JtYXRSZWFkZXIpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVNhbXBsZUFW
Rk9iakM7CiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXI7CiB9CiAKQEAgLTY3LDcgKzY4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFBhcnNlVHJhY2tzKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYmLCB1aW50NjRfdCBlcnJvckNvZGUp
OwogICAgIHZvaWQgZGlkU2VsZWN0VmlkZW9UcmFjayhXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZSYsIGJvb2wpIHsgfQogICAgIHZvaWQgZGlkRW5hYmxlQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YShS
ZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qz4mJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmluaXNoUGFyc2luZyhS
ZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIC8vIENNQmFzZUNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3
NmU5ZmIxZWY5NjJiNDA0OTdlM2RjMzEuLjI1NWMwN2VhNWFkNzg1MWVmZjhlNGVlNmY3ZTQ3YjM2
MGU2MzY0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCkBAIC01MSw2ICs1
MSw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwog
ICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWw7CisgICAg
V2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5
cGU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5h
bDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCAzM2RhOGFh
MDZiNjE3Mjk3MzI3MDNlOTBhZWUwMjVjNGE3NjI2YmY5Li41NjYwNmM0NzQwY2U5ZTk1NzU3NDIz
YWU4NGI4MDVlMTE4MjExYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0x
MTkxLDcgKzExOTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQo
KQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKElQ
Qzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKFJlZlB0ciBwbGF5ZXIgPSBt
X3BsYXllci5nZXQoKSkKLSAgICAgICAgcGxheWVyLT5rZXlOZWVkZWQoVWludDhBcnJheTo6Y3Jl
YXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSkucHRyKCkpOworICAgICAgICBwbGF5
ZXItPmtleU5lZWRlZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlKSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2
ZDJlODkxZWIxMjg2OTU1NWI5ZGM5MzZjYjA5NTUwZmZmODA5NmQuLjdmMDI2OWY1NTczM2UwZmNl
MzQ4YTU4OTllMGNkOGIyOTAxNjMxNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTQgQEAKKzIwMjItMDItMDcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFt
RGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxl
Z2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM2MTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtl
eVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU291cmNlL1dlYkNvcmU6CisKKyAgICAg
ICAgVGhlIGN1cnJlbnQgc2V0IG9mIGRlbGVnYXRlIGNhbGxiYWNrIG1ldGhvZHMgaGF2ZSBhIHNp
Z25pZmljYW50IHNob3J0Y29taW5nOiBjbGllbnRzIG11c3QKKyAgICAgICAgYXR0YWNoIGFuIEFW
Q29udGVudEtleVNlc3Npb24gdG8gdGhlIEFWU3RyZWFtRGF0YVBhcnNlciBiZWZvcmUgcmV0dXJu
aW5nIGZyb20gdGhlCisgICAgICAgIC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOiBjYWxsYmFjay4gVGhpcwor
ICAgICAgICBpcyBiZWNhdXNlIHRoZSBwYXJzZXIgaXRzZWxmIGF0dGFjaGVzIHRoZSBvYmplY3Qg
cmVxdWlyZWQgdG8gZGVjcnlwdCBlYWNoIGVuY3J5cHRlZCBzYW1wbGUKKyAgICAgICAgdG8gdGhl
IHNhbXBsZSBpdHNlbGYgYXQgdGhlIHBhcnNpbmcgc3RhZ2UuIElmIGEgY2xpZW50IGRvZXMgbm90
IGF0dGFjaCBhbgorICAgICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uIGJ5IHRoZSB0aW1lIHRoYXQg
bWV0aG9kIHJldHVybnMsIEFWU3RyZWFtRGF0YVBhcnNlciB3aWxsIGF0dGFjaCBvbmUgb2YKKyAg
ICAgICAgaXRzIG93bi4KKworICAgICAgICBUaGUgd2ViLWZhY2luZyBiZWhhdmlvciB0aGlzIGNh
dXNlcyBpcyB0aGF0IE1TRSBhcHBlbmRzIHdpbGwgbm90IGNvbXBsZXRlIChieSBmaXJpbmcKKyAg
ICAgICAgYW4gInVwZGF0ZWVuZCIgZXZlbnQpIGlmIGFuIGVuY3J5cHRlZCBzZWdtZW50IGlzIHBh
cnNlZCB1bnRpbCB0aGUgY2xpZW50IGNyZWF0ZXMgYW5kCisgICAgICAgIGF0dGFjaGVzIGEgTWVk
aWFLZXlzIG9iamVjdCB3aXRoIGEgdmFsaWQgc2Vzc2lvbi4KKworICAgICAgICBBIG5ldyBkZWxl
Z2F0ZSBjYWxsYmFjayBtZXRob2QsIC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50
S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6CisgICAgICAgIGFsbG93cyB1cyB0byB3b3JrIGFyb3Vu
ZCB0aGlzIHByb2JsZW0uIFdoZW4gdGhpcyBkZWxlZ2F0ZSBpcyBwcmVzZW50LCBBVlN0cmVhbURh
dGFQYXJzZXIKKyAgICAgICAgd2lsbCBza2lwIGF0dGFjaGluZyBhIGRlY3J5cHRpb24gb2JqZWN0
IGVudGlyZWx5LCBtb3ZpbmcgdGhhdCByZXNwb25zaWJpbGl0eSB0byB0aGUKKyAgICAgICAgY2xp
ZW50LiBIb3dldmVyLCB0aGlzIGNvbWVzIHdpdGggdGhlIHJlcXVpcmVtZW50IHRoYXQgdGhlIGNs
aWVudCAoV2ViS2l0KSB3b24ndCBlbnF1ZXVlCisgICAgICAgIGFuIGVuY3J5cHRlZCBzYW1wbGUg
YmVmb3JlIGEgZGVjcnlwdGlvbiBvYmplY3QgaXMgYXZhaWxhYmxlIHZpYSBBVkNvbnRlbnRLZXlT
ZXNzaW9uLgorCisgICAgICAgIEluIG9yZGVyIHRvIG1lZXQgdGhpcyBuZXcgcmVxdWlyZW1lbnQs
IFdlYktpdCB3aWxsIGFzc29jaWF0ZSB0aGUga2V5IElEcyBuZWNlc3NhcnkgdG8KKyAgICAgICAg
ZGVjcnlwdCBlYWNoIHNhbXBsZSBpbiB0aGUgTWVkaWFTYW1wbGUgb2JqZWN0IHRoYXQgd3JhcHMg
dGhlIGVuY3J5cHRlZCBzYW1wbGUuIEJlY2F1c2Ugbm90CisgICAgICAgIGV2ZXJ5IHR5cGUgb2Yg
TWVkaWFTYW1wbGUgd2lsbCBjYXJyeSBrZXkgSURzLCB0aGlzIHByb3BlcnR5IHdhcyBhZGRlZCB0
byB0aGUKKyAgICAgICAgTWVkaWFTYW1wbGVBVkZPYmpDIHN1YmNsYXNzLCBhbmQgdGhlcmVmb3Jl
IHdlIG5lZWQgdG8gYmUgYWJsZSB0byBzYWZlbHkgZG93bmNhc3QgZnJvbQorICAgICAgICBNZWRp
YVNhbXBsZSB0byBNZWRpYVNhbXBsZUFWRk9iakMuIE1lZGlhU2FtcGxlIHN1YmNsYXNzZXMgY2Fu
IGJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhlCisgICAgICAgIFBsYXRmb3JtTWVkaWFTYW1wbGUgdHlw
ZSBhdmFpbGFibGUgdGhyb3VnaCB0aGVpciBwbGF0Zm9ybVNhbXBsZSgpIHByb3BlcnR5LCBob3dl
dmVyIHRoaXMKKyAgICAgICAgY2FsbCBpcyBub3QgY29uc3QsIGFuZCBtYXkgbm90IGJlIGZyZWUs
IGFzIGl0IHJldHVybnMgYSBub24tUE9EIHR5cGUuIFNvCisgICAgICAgIFBsYXRmb3JtTWVkaWE6
OlR5cGUgd2FzIG1hZGUgYW4gZXhwbGljaXQgZW51bSB0eXBlLCBhbmQgYSBuZXcgdmlydHVhbCBt
ZXRob2QKKyAgICAgICAgcGxhdGZvcm1TYW1wbGVUeXBlKCkgd2FzIGFkZGVkIHRvIE1lZGlhU2Ft
cGxlIChhbmQgaW1wbGVtZW50ZWQgYnkgYWxsIHN1YmNsYXNzZXMpLCBhbmQgYQorICAgICAgICB0
eXBlIHNwZWNpYWxpemF0aW9uIG1hY3JvIHdhcyBhZGRlZCB0byBNZWRpYVNhbXBsZUFWRk9iakMu
CisKKyAgICAgICAgSW4gb3JkZXIgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIHNhbXBsZSBpcyBj
YXBhYmxlIG9mIGJlaW5nIGVucXVldWVkLCB0aGUgQ0RNSW5zdGFuY2UKKyAgICAgICAgbXVzdCBi
ZSBxdWVyaWVkIHRvIGRldGVybWluZSBpZiB0aGUgc2FtcGxlJ3MgcmVxdWlyZWQga2V5cyBhcmUg
dXNhYmxlLiBGb3IKKyAgICAgICAgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMs
IGl0IGhhcyBhbiBleGlzdGluZyBrZXlTdGF0dXMoKSwgbWV0aG9kLCBidXQgdGhhdAorICAgICAg
ICBtZXRob2QgaXMgYWxzbyBub24tY29uc3QsIGFuZCBtYXkgYmUgZXhwZW5zaXZlLiBTbyBhIEtl
eVN0YXR1c01hcCBpbnN0YW5jZSB2YXJpYWJsZQorICAgICAgICBoYXMgYmVlbiBhZGRlZCB0byBj
YWNoZSB0aGUga2V5IHN0YXR1cyBmb3IgZWFzZSBvZiBxdWVyeWluZy4gVG8gbm90aWZ5IGFuIGFy
Yml0cmFyeSBudW1iZXIKKyAgICAgICAgb2YgY2xpZW50cyB3aGVuIHRoZSBrZXkgc3RhdHVzZXMg
Y2hhbmdlLCBhbiBPYnNlcnZlciBoYXMgYmVlbiBhZGRlZC4KKworICAgICAgICBXaGVuIGFuIGVu
Y3J5cHRlZCBzYW1wbGUgaXMgZW5xdWV1ZWQsIGlmIHRoaXMgbmV3IGRlbGVnYXRlIG1ldGhvZCBp
cyBhdmFpbGFibGUsIHRoZQorICAgICAgICBzb3VyY2UgYnVmZmVyIHdpbGwgY2hlY2sgaWYgYSBD
RE0gaW5zdGFuY2UgaXMgYXZhaWxhYmxlLCBhbmQgaWYgc28sIHdoZXRoZXIgdGhlIHNhbXBsZSdz
CisgICAgICAgIGtleXMgYXJlIHVzYWJsZS4gSWYgYW55IG9mIHRoZXNlIGNoZWNrcyBmYWlsLCB0
aGUgc2FtcGxlIHdpbGwgYmUgc3RvcmVkIGluIGEgbG9jYWwgcXVldWUKKyAgICAgICAgYW5kIG5l
dyBlbnF1ZXVlcyB3aWxsIGJlIGJsb2NrZWQuIFdoZW4gdGhlIENETSdzIGtleVN0YXR1cyBvYnNl
cnZlciBpcyB0cmlnZ2VyZWQsIHRoZQorICAgICAgICBsb2NhbCBxdWV1ZSB3aWxsIGJlIHByb2Nl
c3NlZCwgYW5kIGFsbCBzYW1wbGVzIHdpdGggdXNhYmxlIGtleSBJRHMgd2lsbCBiZSBlbnF1ZXVl
ZC4KKworICAgICAgICBEcml2ZS1ieSBmaXg6IFVzZSBTaGFyZWRCdWZmZXIgcmF0aGVyIHRoYW4g
VWludDhBcnJheSwgYXMgdGhlIGZvcm1lciBpcyBsaWdodGVyIHdlaWdodAorICAgICAgICBhbmQg
Y2FuIGJlIG1vcmUgZWFzaWx5IGNvbnZlcnRlZCB0byBhbmQgZnJvbSBhIE5TRGF0YS4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVk
aWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6aXNBbnlLZXlVc2FibGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmFkZEtleVN0YXR1c2Vz
Q2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uS2V5U3RhdHVzZXNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVz
dERpZFN1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvcHlLZXlTdGF0
dXNlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5h
bFByb3RlY3Rpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlUHJvdGVjdGlvblN0YXR1c0ZvckRpc3Bs
YXlJRCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmtleVN0YXR1c2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Omtl
eU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akM6OnNldEtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6Omtl
eUlEcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmtleUlE
cyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qz46OnRvU3RyaW5nKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDOjpzb3VyY2VCdWZmZXJLZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6XSk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBw
b3J0S2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5S2V5SURzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0
Q0RNSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OnRyYWNrSXNCbG9ja2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjprZXlTdGF0dXNlc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNhbkVucXVldWVTYW1wbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1w
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJl
Y29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6
CisKKyAgICAgICAgU291cmNlL1dlYktpdDoKKworICAgICAgICBBZGQgdGhlIG5ld2x5IHJlcXVy
aWVkIHZpcnR1YWwgbWV0aG9kIGNoYW5nZXMgdG8gTWVkaWFTYW1wbGUgc3ViY2xhc3NlcywgYW5k
IHVzZQorICAgICAgICBTaGFyZWRCdWZmZXIgcmF0aGVyIHRoYW4gVWludDhBcnJheS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoK
KyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQcm92aWRlTWVkaWFE
YXRhKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNh
bXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorCisgICAgICAgIFNvdXJjZS9XVEY6CisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcDoKKwogMjAyMi0wMi0wNyAgUm95IFJlYXBvciAg
PHJyZWFwb3JAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIEF1dG9pbnN0YWxs
ZXIgbWF5IGZhaWwgdG8gaW5zdGFsbCB3aGVlbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggZDE0NmNlYzRmMmVjNGNmNjkxMmQ3ZjA0
OGQyODgxNTdhZGZkYzFiOC4uMmIyNzU5OTAyODdmY2U1ZDRlMWVmY2M0YTk4MDNhMzAwNGM2NjRj
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1h
cC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5j
cHAKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFn
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHtu
dWxscHRyfX07IH0KKyAgICBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6Tm9uZTsgfQogICAgIHN0ZDo6
b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451730</attachid>
            <date>2022-02-11 11:20:11 -0800</date>
            <delta_ts>2022-02-11 16:21:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236109-20220211112010.patch</filename>
            <type>text/plain</type>
            <size>75126</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM5NWJjYzg4OGJjYzFkNWI3YWVkNDkx
MGM3NzY1MTYyYmU3ZDgzYzQuLmEwZWFmN2MyOGQzMmRjODVhMzY5MmRkNTBlYjkzYWYzZTIyMTgx
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC03LDYgKzcsMTUgQEAKIAogICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXMueWFtbDoKIAorMjAyMi0wMi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkb3B0IC1zdHJlYW1EYXRhUGFyc2VyOmRp
ZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6IGRlbGVnYXRlIGNhbGxiYWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXVEZdIE1ha2UgQml0bWFwIGNvbnN0ZXhwciBmcmllbmRseQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDI2YTY5MTYzZjM3ZDc3Yzg4YTY4ZWI0NmUyY2Q5NTgyZGI2MmE4N2UuLmJm
YjgzODkwZjMwZjAwMGE1NmIxZWJjN2QyMjdjYzc4YjhlNWJiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjItMDItMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29u
dGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIFRoZSBjdXJyZW50IHNldCBvZiBk
ZWxlZ2F0ZSBjYWxsYmFjayBtZXRob2RzIGhhdmUgYSBzaWduaWZpY2FudCBzaG9ydGNvbWluZzog
Y2xpZW50cyBtdXN0CisgICAgICAgIGF0dGFjaCBhbiBBVkNvbnRlbnRLZXlTZXNzaW9uIHRvIHRo
ZSBBVlN0cmVhbURhdGFQYXJzZXIgYmVmb3JlIHJldHVybmluZyBmcm9tIHRoZQorICAgICAgICAt
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGE6Zm9yVHJhY2tJRDogY2FsbGJhY2suIFRoaXMKKyAgICAgICAgaXMgYmVjYXVzZSB0aGUg
cGFyc2VyIGl0c2VsZiBhdHRhY2hlcyB0aGUgb2JqZWN0IHJlcXVpcmVkIHRvIGRlY3J5cHQgZWFj
aCBlbmNyeXB0ZWQgc2FtcGxlCisgICAgICAgIHRvIHRoZSBzYW1wbGUgaXRzZWxmIGF0IHRoZSBw
YXJzaW5nIHN0YWdlLiBJZiBhIGNsaWVudCBkb2VzIG5vdCBhdHRhY2ggYW4KKyAgICAgICAgQVZD
b250ZW50S2V5U2Vzc2lvbiBieSB0aGUgdGltZSB0aGF0IG1ldGhvZCByZXR1cm5zLCBBVlN0cmVh
bURhdGFQYXJzZXIgd2lsbCBhdHRhY2ggb25lIG9mCisgICAgICAgIGl0cyBvd24uCisKKyAgICAg
ICAgVGhlIHdlYi1mYWNpbmcgYmVoYXZpb3IgdGhpcyBjYXVzZXMgaXMgdGhhdCBNU0UgYXBwZW5k
cyB3aWxsIG5vdCBjb21wbGV0ZSAoYnkgZmlyaW5nCisgICAgICAgIGFuICJ1cGRhdGVlbmQiIGV2
ZW50KSBpZiBhbiBlbmNyeXB0ZWQgc2VnbWVudCBpcyBwYXJzZWQgdW50aWwgdGhlIGNsaWVudCBj
cmVhdGVzIGFuZAorICAgICAgICBhdHRhY2hlcyBhIE1lZGlhS2V5cyBvYmplY3Qgd2l0aCBhIHZh
bGlkIHNlc3Npb24uCisKKyAgICAgICAgQSBuZXcgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9kLCAt
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lE
OgorICAgICAgICBhbGxvd3MgdXMgdG8gd29yayBhcm91bmQgdGhpcyBwcm9ibGVtLiBXaGVuIHRo
aXMgZGVsZWdhdGUgaXMgcHJlc2VudCwgQVZTdHJlYW1EYXRhUGFyc2VyCisgICAgICAgIHdpbGwg
c2tpcCBhdHRhY2hpbmcgYSBkZWNyeXB0aW9uIG9iamVjdCBlbnRpcmVseSwgbW92aW5nIHRoYXQg
cmVzcG9uc2liaWxpdHkgdG8gdGhlCisgICAgICAgIGNsaWVudC4gSG93ZXZlciwgdGhpcyBjb21l
cyB3aXRoIHRoZSByZXF1aXJlbWVudCB0aGF0IHRoZSBjbGllbnQgKFdlYktpdCkgd29uJ3QgZW5x
dWV1ZQorICAgICAgICBhbiBlbmNyeXB0ZWQgc2FtcGxlIGJlZm9yZSBhIGRlY3J5cHRpb24gb2Jq
ZWN0IGlzIGF2YWlsYWJsZSB2aWEgQVZDb250ZW50S2V5U2Vzc2lvbi4KKworICAgICAgICBJbiBv
cmRlciB0byBtZWV0IHRoaXMgbmV3IHJlcXVpcmVtZW50LCBXZWJLaXQgd2lsbCBhc3NvY2lhdGUg
dGhlIGtleSBJRHMgbmVjZXNzYXJ5IHRvCisgICAgICAgIGRlY3J5cHQgZWFjaCBzYW1wbGUgaW4g
dGhlIE1lZGlhU2FtcGxlIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBlbmNyeXB0ZWQgc2FtcGxlLiBC
ZWNhdXNlIG5vdAorICAgICAgICBldmVyeSB0eXBlIG9mIE1lZGlhU2FtcGxlIHdpbGwgY2Fycnkg
a2V5IElEcywgdGhpcyBwcm9wZXJ0eSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgIE1lZGlhU2Ft
cGxlQVZGT2JqQyBzdWJjbGFzcywgYW5kIHRoZXJlZm9yZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8g
c2FmZWx5IGRvd25jYXN0IGZyb20KKyAgICAgICAgTWVkaWFTYW1wbGUgdG8gTWVkaWFTYW1wbGVB
VkZPYmpDLiBNZWRpYVNhbXBsZSBzdWJjbGFzc2VzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGJ5IHRo
ZQorICAgICAgICBQbGF0Zm9ybU1lZGlhU2FtcGxlIHR5cGUgYXZhaWxhYmxlIHRocm91Z2ggdGhl
aXIgcGxhdGZvcm1TYW1wbGUoKSBwcm9wZXJ0eSwgaG93ZXZlciB0aGlzCisgICAgICAgIGNhbGwg
aXMgbm90IGNvbnN0LCBhbmQgbWF5IG5vdCBiZSBmcmVlLCBhcyBpdCByZXR1cm5zIGEgbm9uLVBP
RCB0eXBlLiBTbworICAgICAgICBQbGF0Zm9ybU1lZGlhOjpUeXBlIHdhcyBtYWRlIGFuIGV4cGxp
Y2l0IGVudW0gdHlwZSwgYW5kIGEgbmV3IHZpcnR1YWwgbWV0aG9kCisgICAgICAgIHBsYXRmb3Jt
U2FtcGxlVHlwZSgpIHdhcyBhZGRlZCB0byBNZWRpYVNhbXBsZSAoYW5kIGltcGxlbWVudGVkIGJ5
IGFsbCBzdWJjbGFzc2VzKSwgYW5kIGEKKyAgICAgICAgdHlwZSBzcGVjaWFsaXphdGlvbiBtYWNy
byB3YXMgYWRkZWQgdG8gTWVkaWFTYW1wbGVBVkZPYmpDLgorCisgICAgICAgIEluIG9yZGVyIHRv
IGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBzYW1wbGUgaXMgY2FwYWJsZSBvZiBiZWluZyBlbnF1ZXVl
ZCwgdGhlIENETUluc3RhbmNlCisgICAgICAgIG11c3QgYmUgcXVlcmllZCB0byBkZXRlcm1pbmUg
aWYgdGhlIHNhbXBsZSdzIHJlcXVpcmVkIGtleXMgYXJlIHVzYWJsZS4gRm9yCisgICAgICAgIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLCBpdCBoYXMgYW4gZXhpc3Rpbmcga2V5
U3RhdHVzKCksIG1ldGhvZCwgYnV0IHRoYXQKKyAgICAgICAgbWV0aG9kIGlzIGFsc28gbm9uLWNv
bnN0LCBhbmQgbWF5IGJlIGV4cGVuc2l2ZS4gU28gYSBLZXlTdGF0dXNNYXAgaW5zdGFuY2UgdmFy
aWFibGUKKyAgICAgICAgaGFzIGJlZW4gYWRkZWQgdG8gY2FjaGUgdGhlIGtleSBzdGF0dXMgZm9y
IGVhc2Ugb2YgcXVlcnlpbmcuIFRvIG5vdGlmeSBhbiBhcmJpdHJhcnkgbnVtYmVyCisgICAgICAg
IG9mIGNsaWVudHMgd2hlbiB0aGUga2V5IHN0YXR1c2VzIGNoYW5nZSwgYW4gT2JzZXJ2ZXIgaGFz
IGJlZW4gYWRkZWQuCisKKyAgICAgICAgV2hlbiBhbiBlbmNyeXB0ZWQgc2FtcGxlIGlzIGVucXVl
dWVkLCBpZiB0aGlzIG5ldyBkZWxlZ2F0ZSBtZXRob2QgaXMgYXZhaWxhYmxlLCB0aGUKKyAgICAg
ICAgc291cmNlIGJ1ZmZlciB3aWxsIGNoZWNrIGlmIGEgQ0RNIGluc3RhbmNlIGlzIGF2YWlsYWJs
ZSwgYW5kIGlmIHNvLCB3aGV0aGVyIHRoZSBzYW1wbGUncworICAgICAgICBrZXlzIGFyZSB1c2Fi
bGUuIElmIGFueSBvZiB0aGVzZSBjaGVja3MgZmFpbCwgdGhlIHNhbXBsZSB3aWxsIGJlIHN0b3Jl
ZCBpbiBhIGxvY2FsIHF1ZXVlCisgICAgICAgIGFuZCBuZXcgZW5xdWV1ZXMgd2lsbCBiZSBibG9j
a2VkLiBXaGVuIHRoZSBDRE0ncyBrZXlTdGF0dXMgb2JzZXJ2ZXIgaXMgdHJpZ2dlcmVkLCB0aGUK
KyAgICAgICAgbG9jYWwgcXVldWUgd2lsbCBiZSBwcm9jZXNzZWQsIGFuZCBhbGwgc2FtcGxlcyB3
aXRoIHVzYWJsZSBrZXkgSURzIHdpbGwgYmUgZW5xdWV1ZWQuCisKKyAgICAgICAgRHJpdmUtYnkg
Zml4OiBVc2UgU2hhcmVkQnVmZmVyIHJhdGhlciB0aGFuIFVpbnQ4QXJyYXksIGFzIHRoZSBmb3Jt
ZXIgaXMgbGlnaHRlciB3ZWlnaHQKKyAgICAgICAgYW5kIGNhbiBiZSBtb3JlIGVhc2lseSBjb252
ZXJ0ZWQgdG8gYW5kIGZyb20gYSBOU0RhdGEuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxl
UmVhZGVyOjpkZW11eFdlYk1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omlz
QW55S2V5VXNhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lv
bktleVN0YXR1c2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBk
YXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRw
dXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZVByb3RlY3Rpb25TdGF0dXNGb3JEaXNwbGF5SUQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTdGF0dXNl
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjprZXlOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRLZXlJRHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjprZXlJRHMpOgorICAgICAgICAoV1RGOjpMb2dB
cmd1bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+Ojp0b1N0cmluZyk6CisgICAgICAg
IChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5TmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKC1b
V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRl
Q29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JUcmFj
a0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6c2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Y29weUtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
cm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldENETUluc3RhbmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0lzQmxv
Y2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6a2V5U3RhdHVzZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpjYW5FbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRWaWRl
b0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorCiAyMDIyLTAyLTA3ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0aW5ncyB0byByZXN0
cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0aXZlIFBvcnRhbCBt
b2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGU5YzFjZDMwNWJlNmZmMjZkMzBlZDk3OTUyOGM0ZWUxZWM5ZTdmNmEu
LjE3OGE0ODVjOTY2NWFhNjViYTczYjM5OTUwMGRhMGRiNDUzNjE5OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMjItMDItMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29u
dGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkZCB0aGUgbmV3bHkgcmVxdXJp
ZWQgdmlydHVhbCBtZXRob2QgY2hhbmdlcyB0byBNZWRpYVNhbXBsZSBzdWJjbGFzc2VzLCBhbmQg
dXNlCisgICAgICAgIFNoYXJlZEJ1ZmZlciByYXRoZXIgdGhhbiBVaW50OEFycmF5LgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgor
ICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6cGFyc2VCeXRlU291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURh
dGEpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRS
ZWFkZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2Ft
cGxlQnl0ZVJhbmdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjptZWRpYVBsYXllcktleU5lZWRlZCk6CisKIDIwMjItMDItMDcgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNldHRpbmdzIHRvIHJlc3RyaWN0
IG1lZGlhIGNvbnRhaW5lcnMgYW5kIGNvZGVjcyB3aGVuIGluIENhcHRpdmUgUG9ydGFsIG1vZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggNzI0M2U5MGQ3ZTcwZjk5NGQzOWY3ZGM0NDIyMWVmZmE4
YWU3Nzg0ZS4uNDc5MWI1ZmI2YTZiYjc5ZjhiZWJkNTQ4MDFmY2Q5Y2FlMWUwZjYzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgKQEAgLTM4OCw2ICszODgsMTMgQEAKICNkZWZpbmUgSEFWRV9BVkNPTlRF
TlRLRVlTRVNTSU9OIDEKICNlbmRpZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01BWF9BTExPV0VEID49IDExMDMwMCkgXAorICAgIHx8ICgoKFBMQVRGT1JNKElP
UykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSkgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE0MDUwMCkgXAor
ICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFU
T1IpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSA3MDQwMCkgXAorICAgIHx8
IChQTEFURk9STShBUFBMRVRWKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYm
IF9fVFZfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNDA1MDApCisjZGVmaW5lIEhBVkVfQVZD
T05URU5US0VZU1BFQ0lGSUVSIDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBIQVZFX1NFQ19LRVlf
UFJPWFkgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAppbmRleCBkNjM0
ODZjNWE5YzQ4OTUzYzM0YjJhNmRkMjNjZGE5MjNmMjg0MWM3Li41ZTY3ZWRmMDY2YjYwMTNiNzhl
NGI2OWRhNjUzMDZlMWJhZDRmMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwK
QEAgLTMwLDcgKzMwLDcgQEAKIF0gaW50ZXJmYWNlIFdlYktpdE1lZGlhS2V5cyB7CiAgICAgY29u
c3RydWN0b3IoRE9NU3RyaW5nIGtleVN5c3RlbSk7CiAKLSAgICBbQ2FsbFdpdGg9Q3VycmVudFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRdIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9u
KERPTVN0cmluZyB0eXBlLCBVaW50OEFycmF5IGluaXREYXRhKTsKKyAgICBbQ2FsbFdpdGg9Q3Vy
cmVudERvY3VtZW50XSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihET01TdHJp
bmcgdHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7CiAgICAgc3RhdGljIGJvb2xlYW4gaXNUeXBl
U3VwcG9ydGVkKERPTVN0cmluZyBrZXlTeXN0ZW0sIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlKTsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtleVN5c3RlbTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA3MjVjNTIwYTJlYjE2YTczMmFk
YmRmZDBkYThlMTA5ZTdjZTQ1NWNlLi40OTZjNmE5Y2IyM2E2YTJhOTUzOTNmOGE0NmU4NjIwOTQ3
NzBhYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI2
NDQsNyArMjY0NCw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG1fd2Vi
S2l0TWVkaWFLZXlzID8gbV93ZWJLaXRNZWRpYUtleXMtPmNhY2hlZEtleUZvcktleUlkKGtleUlk
KSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgaWYg
KCFkb2N1bWVudCgpLnNldHRpbmdzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI2NjEsNyArMjY2MSwxNCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBldmVudCA9IFdlYktpdE1lZGlhS2V5TmVlZGVk
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0RGF0YSk7
CisgICAgV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6SW5pdCBpbml0OworCisgICAgaWYgKGF1
dG8gaW5pdERhdGFCdWZmZXIgPSBpbml0RGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSB7Cisg
ICAgICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCk7Cisg
ICAgICAgIGluaXQuaW5pdERhdGEgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoaW5pdERhdGFCdWZm
ZXIucmVsZWFzZU5vbk51bGwoKSwgMCwgYnl0ZUxlbmd0aCk7CisgICAgfQorCisgICAgYXV0byBl
dmVudCA9IFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
a2l0bmVlZGtleUV2ZW50LCBpbml0KTsKICAgICBzY2hlZHVsZUV2ZW50KFdURk1vdmUoZXZlbnQp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA4OWU2YTYy
NjhiZjZkNjFjNWUzNzNmMjlhODQ5NmIxZDY3NzNiYWQ0Li4wMDQ5MTg2MTNlYjkzMTEwNjIzYjAz
YmFmZjk3NjFkNjMwYzQ4Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtNzA2LDcgKzcwNiw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5
Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBtZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXll
cktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQ
bGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXggMTgzOTk3MjI2MGY3MGUwMDcz
Njc5NzkxNzIyNjI1ZjU2YjI1M2YwOC4uMmMxMTVhOGMyOWQyODRmNmZjYmY4YjAxNjhlN2Y0ZDU0
YTg2NjNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC00Myw3ICs0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1vY2tTYW1wbGVCb3g7CiAKIHN0cnVj
dCBQbGF0Zm9ybVNhbXBsZSB7Ci0gICAgZW51bSB7CisgICAgZW51bSBUeXBlIHsKICAgICAgICAg
Tm9uZSwKICAgICAgICAgTW9ja1NhbXBsZUJveFR5cGUsCiAgICAgICAgIENNU2FtcGxlQnVmZmVy
VHlwZSwKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgogICAgICAgICBIYXNTeW5jSW5mbyA9IDEg
PDwgMywKICAgICB9OwogICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpID0g
MDsKIAogICAgIHN0cnVjdCBCeXRlUmFuZ2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCmluZGV4
IDUwNjAzMjM4MDNiMWEzYjE3ZjQ3Mzg2NmVhOTdiM2E4MjkwZTIwMmMuLmI3MDNjZmVjZDMxNmM2
MjdjNjk0ZTY0YjhlNjk3NjIwNjg2N2Y3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKQEAg
LTIwMiwxMCArMjAyLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0
YT4gQXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0IHVpCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFD
YWxsYmFjayhbJl0oUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwg
Y29uc3QgU3RyaW5nJikgeworICAgIHBhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxi
YWNrKFsmXShSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJ
RCwgY29uc3QgU3RyaW5nJikgewogICAgICAgICBpZiAoIWF1ZGlvVHJhY2tJZCB8fCB0cmFja0lE
ICE9ICphdWRpb1RyYWNrSWQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNhbXBsZXMu
YXBwZW5kKHN0YXRpY19yZWZlcmVuY2VfY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+KFdURk1vdmUo
c2FtcGxlKSkpOworICAgICAgICBzYW1wbGVzLmFwcGVuZChXVEZNb3ZlKHNhbXBsZSkpOwogICAg
IH0pOwogICAgIHBhcnNlci0+c2V0Q2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2soW10oYXV0byYm
IGZ1bmN0aW9uKSB7CiAgICAgICAgIGZ1bmN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNTVmOTdjMWFhOTBmYWZkMDdk
M2ViOTNkMTY1MDJmMGNiNmE4ZThkNC4uYTVkZGYzZWZjNDFkODdhODRiZjFiNDBkMjc1N2JlODRj
MTkwNDRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcApAQCAtMTQyNSw3ICsxNDI1LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBNZWRp
YVBsYXllcjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKICAg
ICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChrZXlJZCk7CiB9
CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3Zv
aWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQog
ewogICAgIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDI1YzI0
ODJmZjc2NjQ1YzhlY2Y4MTU4NGY0YWJhMjU3Zjc5NTBiMWQuLjdjNjRmNGUwZjY5NjQ0OTJmZDhk
NjY3OGRmNDdjYmFmZDkxZDk0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBNZWRpYVN0cmVhbVBy
aXZhdGU7CiBjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFRleHRUcmFja1JlcHJlc2VudGF0aW9uOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7CiAK
QEAgLTIwMCw3ICsyMDEsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKICAgICB2aXJ0dWFsIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNo
ZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVh
bCBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogI2VuZGlmCiAKQEAgLTU1OCw3ICs1NTksNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0Owot
ICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKKyAgICB2b2lkIGtleU5l
ZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKICAgICBTdHJpbmcgbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4
IDhlZDllMGEwNzViMTUzYmNhNWY5MGQ1MWMxMDkwNjQ1M2YwNGQwZjEuLmM3ODc2NjE3OGUxMmI5
NGIwODZkZGM2YjUyMzE3OTlhNDVjMDJiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTkyMSwx
NSArMTkyMSwxNSBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNv
dXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAgICAvLyBbNCBieXRl
czoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0KICAgICAgICAgdW5z
aWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7CiAgICAg
ICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklT
aXplLCAxKTsKLSAgICAgICAgYXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGluaXREYXRhQnVmZmVyLT5ieXRl
TGVuZ3RoKCk7CisgICAgICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3Jl
YXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIGlu
aXREYXRhVmlldy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0cnVlKTsKIAogICAgICAg
ICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5j
b3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRS
YW5nZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oU3RyaW5nVmlldyhrZXlVUkkp
LnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9m
KHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5p
dERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0g
ICAgICAgIG1fb3duZXItPnBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworICAg
ICAgICBhdXRvIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
IHsgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGluaXREYXRhQnVmZmVyLT5kYXRhKCkpLCBieXRlTGVu
Z3RoIH0pOworICAgICAgICBtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhKTsK
ICAgICAgICAgc2V0UmVxdWVzdEZvcktleShrZXlVUkksIGF2UmVxdWVzdCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IDU2YjU4YzI1YTI4
NzA5ZmIzODIyMTgzOWU1NWJhZTQ1ZWQ5M2NmNjIuLmQ1OWZlNDgwNGQ1OGRmZTc4Y2I1YmVhNzA3
NGIyZTY4NzA1YzFkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtMzAsNyArMzAsOSBA
QAogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2VTZXNzaW9u
LmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5o
PgogCiBPQkpDX0NMQVNTIEFWQ29udGVudEtleVJlcG9ydEdyb3VwOwogT0JKQ19DTEFTUyBBVkNv
bnRlbnRLZXlSZXF1ZXN0OwpAQCAtMTE3LDYgKzExOSwxMyBAQCBwdWJsaWM6CiAgICAgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yR3JvdXAoQVZD
b250ZW50S2V5UmVwb3J0R3JvdXAqKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVl
c3QqKSBjb25zdDsKIAorICAgIGJvb2wgaXNBbnlLZXlVc2FibGUoY29uc3QgS2V5cyYpIGNvbnN0
OworCisgICAgdXNpbmcgS2V5U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lk
KCk+OworICAgIHZvaWQgYWRkS2V5U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgS2V5U3Rh
dHVzZXNDaGFuZ2VkT2JzZXJ2ZXImKTsKKworICAgIHZvaWQgc2Vzc2lvbktleVN0YXR1c2VzQ2hh
bmdlZChjb25zdCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMmKTsK
KwogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZVVuZXhwZWN0ZWRSZXF1ZXN0cyhWZWN0b3I8UmV0
YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+PiYmKTsKIApAQCAtMTM0LDYgKzE0Myw3IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX3N0b3JhZ2VVUkw7CiAgICAgVmVjdG9yPFdl
YWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPj4gbV9zZXNz
aW9uczsKICAgICBIYXNoU2V0PFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4gbV91bmV4
cGVjdGVkS2V5UmVxdWVzdHM7CisgICAgV2Vha0hhc2hTZXQ8S2V5U3RhdHVzZXNDaGFuZ2VkT2Jz
ZXJ2ZXI+IG1fa2V5U3RhdHVzQ2hhbmdlZE9ic2VydmVyczsKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXIgeyBudWxscHRyIH07CkBAIC0xODYsMTEgKzE5NiwxNCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGhhc1JlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OwogCisgICAg
Y29uc3QgS2V5U3RhdHVzVmVjdG9yJiBrZXlTdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5
U3RhdHVzZXM7IH0KKyAgICBLZXlTdGF0dXNWZWN0b3IgY29weUtleVN0YXR1c2VzKCkgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVTZXNzaW9uT3JHcm91cCgpOwogICAgIGJvb2wg
aXNMaWNlbnNlVHlwZVN1cHBvcnRlZChMaWNlbnNlVHlwZSkgY29uc3Q7CiAKLSAgICBLZXlTdGF0
dXNWZWN0b3Iga2V5U3RhdHVzZXMoc3RkOjpvcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gPSBz
dGQ6Om51bGxvcHQpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgbmV4dFJl
cXVlc3QoKTsKICAgICBBVkNvbnRlbnRLZXlSZXF1ZXN0KiBsYXN0S2V5UmVxdWVzdCgpIGNvbnN0
OwogCkBAIC0yMTYsNiArMjI5LDcgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIFVwZGF0ZVJlc3Bv
bnNlQ29sbGVjdG9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGVSZXNwb25zZUNvbGxlY3Rv
cj4gbV91cGRhdGVSZXNwb25zZUNvbGxlY3RvcjsKKyAgICBLZXlTdGF0dXNWZWN0b3IgbV9rZXlT
dGF0dXNlczsKIAogICAgIFZlY3RvcjxSZXF1ZXN0PiBtX3BlbmRpbmdSZXF1ZXN0czsKICAgICBW
ZWN0b3I8UmVxdWVzdD4gbV9yZXF1ZXN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXgg
Y2ZlMDQ4YTkzOGMwNWRmNzQ1YzcxNjM1NmFkMWIzYjkwYTU5ZWI3OC4uZmQ2MTUyZTE4NjdkNGU2
YTY3MmJlZjE3MDcwY2E3NjI5MTI2ZjRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAg
LTYxNyw2ICs2MTcsMzcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAorYm9vbCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aXNB
bnlLZXlVc2FibGUoY29uc3QgS2V5cyYga2V5cykgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNl
c3Npb25JbnRlcmZhY2UgOiBtX3Nlc3Npb25zKSB7CisgICAgICAgIGlmICghc2Vzc2lvbkludGVy
ZmFjZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoYXV0byYga2V5U3Rh
dHVzUGFpciA6IHNlc3Npb25JbnRlcmZhY2UtPmtleVN0YXR1c2VzKCkpIHsKKyAgICAgICAgICAg
IGlmIChrZXlTdGF0dXNQYWlyLnNlY29uZCAhPSBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1
czo6VXNhYmxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAo
a2V5cy5maW5kSWYoWyZdIChhdXRvJiBrZXkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5
LmdldCgpID09IGtleVN0YXR1c1BhaXIuZmlyc3QuZ2V0KCk7CisgICAgICAgICAgICB9KSAhPSBu
b3RGb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmFkZEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEtleVN0YXR1c2Vz
Q2hhbmdlZE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBtX2tleVN0YXR1c0NoYW5nZWRPYnNl
cnZlcnMuYWRkKG9ic2VydmVyKTsKK30KKwordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6c2Vzc2lvbktleVN0YXR1c2VzQ2hhbmdlZChjb25zdCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMmKQoreworICAgIG1fa2V5U3RhdHVzQ2hhbmdl
ZE9ic2VydmVycy5mb3JFYWNoKFtdIChhdXRvJiBvYnNlcnZlcikgeworICAgICAgICBvYnNlcnZl
cigpOworICAgIH0pOworfQorCiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyhSZWY8Q0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+JiYgaW5zdGFuY2UpCiAgICAgOiBtX2lu
c3RhbmNlKFdURk1vdmUoaW5zdGFuY2UpKQogICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV2Vi
Q29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRo
aXNdKSkKQEAgLTEzMDYsMTMgKzEzMzcsMTUgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGUKIAog
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RE
aWRTdWNjZWVkKEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7CisgICAgdXBkYXRlS2V5
U3RhdHVzZXMoKTsKKwogICAgIGlmIChtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yKSB7CiAgICAg
ICAgIG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3ItPmFkZFN1Y2Nlc3NmdWxSZXNwb25zZShyZXF1
ZXN0LCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX3VwZGF0
ZUxpY2Vuc2VDYWxsYmFjaykgewotICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxz
ZSwgc3RkOjptYWtlX29wdGlvbmFsKGtleVN0YXR1c2VzKCkpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgU3VjY2VlZGVkKTsKKyAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFs
c2UsIHN0ZDo6bWFrZV9vcHRpb25hbChjb3B5S2V5U3RhdHVzZXMoKSksIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICBBU1NFUlQoIW1fdXBkYXRlTGljZW5z
ZUNhbGxiYWNrKTsKICAgICB9CiAKQEAgLTE0MDUsNyArMTQzOCw3IEBAIHN0YXRpYyBhdXRvIHJl
cXVlc3RTdGF0dXNUb0NETVN0YXR1cyhBVkNvbnRlbnRLZXlSZXF1ZXN0U3RhdHVzIHN0YXR1cykK
ICAgICB9CiB9CiAKLUNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5U3RhdHVzZXMoc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gZGlzcGxheUlEKSBjb25zdAordm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUtleVN0YXR1c2VzKHN0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRpc3BsYXlJRCkKIHsKICAgICBLZXlTdGF0dXNW
ZWN0b3Iga2V5U3RhdHVzZXM7CiAKQEAgLTE0MjcsNyArMTQ2MCwxOSBAQCBDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3RvciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGtleVN0YXR1c2VzOwor
ICAgIG1fa2V5U3RhdHVzZXMuc3dhcChrZXlTdGF0dXNlcyk7CisKKyAgICBtX2luc3RhbmNlLT5z
ZXNzaW9uS2V5U3RhdHVzZXNDaGFuZ2VkKCp0aGlzKTsKK30KKworYXV0byBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvcHlLZXlTdGF0dXNlcygpIGNvbnN0IC0+
IEtleVN0YXR1c1ZlY3RvcgoreworICAgIEtleVN0YXR1c1ZlY3RvciBjb3BpZWRLZXlTdGF0dXNl
czsKKyAgICBjb3BpZWRLZXlTdGF0dXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fa2V5U3Rh
dHVzZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHN0YXR1cyA6IG1fa2V5U3RhdHVzZXMpCisg
ICAgICAgIGNvcGllZEtleVN0YXR1c2VzLnVuY2hlY2tlZEFwcGVuZCh7IHN0YXR1cy5maXJzdC5j
b3B5UmVmKCksIHN0YXR1cy5zZWNvbmQgfSk7CisgICAgcmV0dXJuIGNvcGllZEtleVN0YXR1c2Vz
OworCiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdl
ZChib29sIG9ic2N1cmVkKQpAQCAtMTQzOCw4ICsxNDgzLDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZm
aWNpZW50CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCBvYnNjdXJl
ZCk7CiAgICAgbV9vdXRwdXRPYnNjdXJlZCA9IG9ic2N1cmVkOwogCisgICAgdXBkYXRlS2V5U3Rh
dHVzZXMoKTsKKwogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUtl
eVN0YXR1c2VzKGtleVN0YXR1c2VzKCkpOworICAgICAgICBtX2NsaWVudC0+dXBkYXRlS2V5U3Rh
dHVzZXMoY29weUtleVN0YXR1c2VzKCkpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZXh0ZXJuYWxQcm90ZWN0aW9uU3RhdHVzRGlkQ2hhbmdl
Rm9yQ29udGVudEtleVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopCkBAIC0xNDkyLDkgKzE1
MzksMTMgQEAgc3RkOjpvcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGkKIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZVByb3RlY3Rpb25TdGF0dXNGb3JEaXNw
bGF5SUQoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewotICAgIGlmIChtX3JlcXVlc3Rz
LmlzRW1wdHkoKSB8fCAhbV9jbGllbnQpCisgICAgaWYgKG1fcmVxdWVzdHMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKGtleVN0YXR1
c2VzKGRpc3BsYXlJRCkpOworCisgICAgdXBkYXRlS2V5U3RhdHVzZXMoZGlzcGxheUlEKTsKKwor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKGNv
cHlLZXlTdGF0dXNlcygpKTsKIH0KIAogYm9vbCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmVuc3VyZVNlc3Npb25Pckdyb3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCmluZGV4IDcx
OWExMWZlMjI5YmVmMGQ0M2M5YzNlZmQ1ZDkwMjA4MGU3NmM3ZjAuLjkwZDI3M2QwNzk2MWZjOTg2
ZmI3YzQ1NmZmNzMzNjJjMTRlYzVkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaApAQCAtNzQsNyArNzQsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPFdlYkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
RGVsZWdhdGU+IG1fY29udGVudEtleVNlc3Npb25EZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4gbV9rZXlSZXF1ZXN0OwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBt
X2lkZW50aWZpZXI7Ci0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1faW5pdERhdGE7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9pbml0RGF0YTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBtX2V4
cGlyZWRTZXNzaW9uOwogICAgIFZlY3RvcjxpbnQ+IG1fcHJvdG9jb2xWZXJzaW9uczsKICAgICBp
bnQgbV9jZG1WZXJzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCA3ZWM1Nzc0MjYxMGMzODRiZTZkZGRj
NTg3NGZmMzk1ZTViNWYyZWRjLi43MmEwOTUzMDljODQ1YmRjY2ZkZTcwN2JlNGI3MDcwYzVkNTFl
YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbi5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiTGVnYWN5Q0RN
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5oIgorI2ltcG9y
dCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
IgogI2ltcG9ydCAiV2ViQ29yZU5TRXJyb3JFeHRyYXMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkVycm9yLmg+CkBAIC0xNTEsNyArMTUyLDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW4K
ICAgICBpZiAobV9jZG1WZXJzaW9uID09IDIpCiAgICAgICAgIG1faWRlbnRpZmllciA9IGluaXRE
YXRhOwogICAgIGVsc2UKLSAgICAgICAgbV9pbml0RGF0YSA9IGluaXREYXRhOworICAgICAgICBt
X2luaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERh
dGEtPmxlbmd0aCgpKTsKIAogICAgIEFTU0VSVCghbV9jZXJ0aWZpY2F0ZSk7CiAgICAgU3RyaW5n
IGNlcnRpZmljYXRlU3RyaW5nKCJjZXJ0aWZpY2F0ZSJfcyk7CkBAIC0yNzMsMTIgKzI3NCwxMiBA
QCBib29sIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSog
a2V5LCBSZWZQdHI8VWludDhBcnJheT4mCiAgICAgfQogCiAgICAgaWYgKCFtX2tleVJlcXVlc3Qp
IHsKLSAgICAgICAgTlNEYXRhKiBuc0luaXREYXRhID0gbV9pbml0RGF0YSA/IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczptX2luaXREYXRhLT5kYXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgp
XSA6IG5pbDsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gbnNJbml0RGF0YSA9IG1faW5pdERh
dGEgPyBtX2luaXREYXRhLT5jcmVhdGVOU0RhdGEoKSA6IG5pbDsKICAgICAgICAgTlNEYXRhKiBu
c0lkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIgPyBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bV9pZGVu
dGlmaWVyLT5kYXRhKCkgbGVuZ3RoOm1faWRlbnRpZmllci0+bGVuZ3RoKCldIDogbmlsOwogICAg
ICAgICBpZiAoW2NvbnRlbnRLZXlTZXNzaW9uKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihwcm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjppbml0aWFsaXphdGlvbkRh
dGE6b3B0aW9uczopXSkKLSAgICAgICAgICAgIFtjb250ZW50S2V5U2Vzc2lvbigpIHByb2Nlc3ND
b250ZW50S2V5UmVxdWVzdFdpdGhJZGVudGlmaWVyOm5zSWRlbnRpZmllciBpbml0aWFsaXphdGlv
bkRhdGE6bnNJbml0RGF0YSBvcHRpb25zOm5pbF07CisgICAgICAgICAgICBbY29udGVudEtleVNl
c3Npb24oKSBwcm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjpuc0lkZW50aWZp
ZXIgaW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEuZ2V0KCkgb3B0aW9uczpuaWxdOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBbY29udGVudEtleVNlc3Npb24oKSBwcm9jZXNzQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6bnNJbml0RGF0YSBvcHRpb25zOm5pbF07Cisg
ICAgICAgICAgICBbY29udGVudEtleVNlc3Npb24oKSBwcm9jZXNzQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGE6bnNJbml0RGF0YS5nZXQoKSBvcHRpb25zOm5pbF07CiAgICAgfQog
CiAgICAgaWYgKHNob3VsZEdlbmVyYXRlS2V5UmVxdWVzdCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggMThmY2ZhMmY3YjQ3NTYyZDE2ZmQ5MGFiNTFiZmMwMTQyNmU0MTc2Ni4uZGQ0ZWFl
MmIyMzYxOWI4YjVhNGM2NDI1MzMwOTYzNzUyODg1NzU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0yMTIyLDggKzIxMjIsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogICAgICAg
ICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5j
b3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRS
YW5nZShyZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihTdHJpbmdWaWV3KGtleVVSSSku
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCkpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2Yo
dW5zaWduZWQgY2hhciksIDApOwogCi0gICAgICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5
OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAg
ICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKTsKKyAgICAgICAgYXV0byBpbml0
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiB7IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihpbml0RGF0YUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCB9KTsKKyAgICAg
ICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKICAgICAgICAgaWYgKCFwbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTUxLDkgKzIxNTEsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZShBVkFzc2V0UgogICAgIGlmIChzY2hlbWUgPT0gImNsZWFya2V5IikgewogICAg
ICAgICBTdHJpbmcga2V5SUQgPSBbW1thdlJlcXVlc3QgcmVxdWVzdF0gVVJMXSByZXNvdXJjZVNw
ZWNpZmllcl07CiAgICAgICAgIGF1dG8gZW5jb2RlZEtleUlkID0gUEFMOjpVVEY4RW5jb2Rpbmco
KS5lbmNvZGUoa2V5SUQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6VVJMRW5jb2RlZEVudGl0
aWVzKTsKLQotICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKGVuY29k
ZWRLZXlJZC5zaXplKCkpOwotICAgICAgICBpbml0RGF0YS0+c2V0UmFuZ2UoZW5jb2RlZEtleUlk
LmRhdGEoKSwgZW5jb2RlZEtleUlkLnNpemUoKSwgMCk7CisgICAgICAgIGF1dG8gaW5pdERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGVuY29kZWRLZXlJZCkpOwogCiAgICAgICAg
IGF1dG8ga2V5RGF0YSA9IHBsYXllcigpLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJRCk7CiAgICAg
ICAgIGlmIChrZXlEYXRhKSB7CkBAIC0yMTYxLDcgKzIxNTksNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShB
VkFzc2V0UgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAg
cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisgICAgICAgIHBsYXllcigpLT5r
ZXlOZWVkZWQoaW5pdERhdGEpOwogCiAgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRp
bnVlQWZ0ZXJLZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKaW5kZXggYmNhZDEyNTQzNjNhMTg3YzY4YTMzNjhmYTdhN2ExNDg1MTVi
ODJlNS4uMjk4M2NlY2FkZWEyMmUzZjI1NWIwNzljOTZhMmY3ODkxY2QzYTMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKQEAgLTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
bmRTaW11bGF0ZWRIRENQRXJyb3IoKSBvdmVycmlkZSB7IG91dHB1dE9ic2N1cmVkRHVlVG9JbnN1
ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKGZhbHNlKTsgfQogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAg
dm9pZCBrZXlOZWVkZWQoVWludDhBcnJheSopOworICAgIHZvaWQga2V5TmVlZGVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGU5NWY4YzNjYWNmMGFkZTE4MTFmMTFiYWU2ODNi
ZTRiNWZiMTU1MzMuLjFjMzMyNzI1NDZiNGVmOGI3OTc4OGQ5MDUyN2E1MGU1NGQ2ZDQ5ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTExNDMsNyArMTE0Myw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRDRE1TZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb24qIHNlc3NpCiAjZW5kaWYgLy8gRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjprZXlO
ZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6a2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7
CiAgICAgbV9wbGF5ZXItPmtleU5lZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBs
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDkwMDdkY2NhOWRlZTEwZWViYzNiMzFk
NjMzODA2MGQ3ZTkyMzcwNTYuLmQ2NjBlNmRkNjAwMWJiODlhODUxMzMwMzIwYjZhOGI1MjdmMjVh
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC0y
OSwxMSArMjksMTMgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogdXNpbmcgQ1ZQ
aXhlbEJ1ZmZlclJlZiA9IHN0cnVjdCBfX0NWQnVmZmVyKjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgUGl4ZWxCdWZmZXI7CiAK
IGNsYXNzIE1lZGlhU2FtcGxlQVZGT2JqQyA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7CkBAIC02MSw2
ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQ
bGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlOyB9CiAgICAgc3RkOjpvcHRp
b25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtODAsNiAr
ODMsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRCeXRlUmFuZ2VPZmZzZXQoc2l6ZV90KTsK
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lP
TikKKyAgICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PjsKKyAgICB2b2lkIHNldEtleUlEcyhLZXlJRHMmJiBrZXlJRHMpIHsgbV9rZXlJRHMgPSBXVEZN
b3ZlKGtleUlEcyk7IH0KKyAgICBjb25zdCBLZXlJRHMmIGtleUlEcygpIGNvbnN0IHsgcmV0dXJu
IG1fa2V5SURzOyB9CisgICAgS2V5SURzJiBrZXlJRHMoKSB7IHJldHVybiBtX2tleUlEczsgfQor
I2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVNhbXBsZUFWRk9i
akMoUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBN
ZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYpOwpAQCAtOTQsNiArMTA0LDI4IEBA
IHByb3RlY3RlZDoKICAgICBBdG9tU3RyaW5nIG1faWQ7CiAgICAgVmlkZW9Sb3RhdGlvbiBtX3Jv
dGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wgbV9taXJyb3JlZCB7IGZh
bHNlIH07CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtF
WVNFU1NJT04pCisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9rZXlJ
RHM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBMb2dBcmd1bWVudDsKK3RlbXBs
YXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDPiB7
CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFW
Rk9iakMmIHNhbXBsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzYW1wbGUudG9KU09OU3RyaW5n
KCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDKQorc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBzYW1wbGUpIHsgcmV0dXJuIHNhbXBsZS5w
bGF0Zm9ybVNhbXBsZVR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVC
dWZmZXJUeXBlOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAppbmRleCA3MjI0
OTdlMGJjNDIwY2Q0ZTYyYjA2MjQ5MjNiZmQ4ZjlkNTQwNjIyLi44OTUxYjI0N2RkMDAxNTBlZDE2
Y2UwNDFhY2NlY2JiZmNiZWQ1ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyosIGJvb2wgYWN0aXZlKTsKICAgICB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKik7CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgdm9p
ZCBzb3VyY2VCdWZmZXJLZXlOZWVkZWQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqLCBVaW50
OEFycmF5Kik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJLZXlOZWVkZWQoU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMqLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogICAgIHZvaWQgcmVt
b3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggOTI3ZDEz
MDMxMWU4ZWVjOGIwMjE1NmFjNjMyODBhOWJmOWQwODA4Yy4uMTIwMWI3MjZiZDA0N2M1ZjExMGY3
MTRhYjEwMjMxOWE2MTYyMmNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC0xOTUsOSArMTk1LDEwIEBAIHZvaWQgTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2
ZVN0YXRlKFNvdXJjZUJ1CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
LXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5TmVlZGVkKFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBidWZmZXIsIFVpbnQ4QXJyYXkqIGluaXREYXRhKQor
dm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJLZXlOZWVkZWQoU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKIHsKICAgICBtX3NvdXJjZUJ1ZmZlcnNOZWVkaW5nU2Vzc2lvbnMuYXBwZW5kKGJ1ZmZl
cik7CisKICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAgIG1fcGxheWVyLT5rZXlOZWVkZWQoaW5p
dERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oCmluZGV4IGMyMmU3MjVmODU0NmYyNzhmZjY1N2E1ZjRjNTcyYjkyOTUxNWVk
NDguLjc4MTEyMDRjY2ZkMWQ4MWIxNTA5MmI1NzVhODI5ODBkNjJjMmYxMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAgLTY4
LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNr
SUQodWludDY0X3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlLCB1bnNpZ25lZCBmbGFncyk7CiAgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKTsKICAg
ICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSUQoTlNEYXRhKiwgdWludDY0X3QgdHJhY2tJRCk7CisgICAgdm9pZCBkaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JUcmFja0lEKE5TRGF0YSosIHVpbnQ2NF90IHRyYWNr
SUQpOwogCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggYWJk
ODFlNWYzYzFlYTUwZTQyMmUyZmEzYzJiYTFkMThjZmUzMWFlMi4uYWExNTg0MDRiMTBlNDQ0YWY2
ZTVlZGRjOGRhZDZiYTk2ZWQ1Y2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC01Nyw2ICs1NywxMiBAQAogI3ByYWdt
YSBtYXJrIC0KICNwcmFnbWEgbWFyayBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgogCisj
aWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCitAaW50ZXJmYWNlIEFWQ29udGVudEtleVNw
ZWNpZmllciAoV2ViQ29yZVByaXZhdGUpCitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU0RhdGEgKmlu
aXRpYWxpemF0aW9uRGF0YTsKK0BlbmQKKyNlbmRpZgorCiBAaW50ZXJmYWNlIFdlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyIDogTlNPYmplY3Q8QVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0SGFu
ZGxpbmc+IHsKICAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBfcGFyZW50
OwogICAgIEFWU3RyZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKQEAgLTEzMyw2ICsxMzksMTYgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgQVNTRVJUX1VOVVNFRChz
dHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwogICAgIF9wYXJl
bnQtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQoaW5pdERhdGEsIHRyYWNrSUQpOwogfQorCisjaWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJ
RVIpCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVh
bURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6KEFWQ29udGVudEtleVNw
ZWNpZmllciAqKWtleVNwZWNpZmllciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRy
YWNrSUQKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQ
YXJzZXIgPT0gX3BhcnNlcik7CisgICAgaWYgKFtrZXlTcGVjaWZpZXIgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihpbml0aWFsaXphdGlvbkRhdGEpXSkKKyAgICAgICAgX3BhcmVudC0+ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3BlY2lmaWVyRm9yVHJhY2tJRChrZXlTcGVjaWZpZXIu
aW5pdGlhbGl6YXRpb25EYXRhLCB0cmFja0lEKTsKK30KKyNlbmRpZgorCiBAZW5kCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTMzNCwxMCArMzUwLDE0IEBAIHZvaWQgU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEqIG5zSW5pdERhdGEs
IHVpbnQ2NF90IHRyYWNrSUQpCiB7Ci0gICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNy
ZWF0ZShuc0luaXREYXRhLmxlbmd0aCk7Ci0gICAgW25zSW5pdERhdGEgZ2V0Qnl0ZXM6aW5pdERh
dGEtPmRhdGEoKSBsZW5ndGg6aW5pdERhdGEtPmxlbmd0aCgpXTsKKyAgICBtX2RpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShuc0luaXREYXRhKSwgdHJhY2tJRCk7Cit9CiAKLSAgICBtX2RpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFj
ayhXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCk7Cit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoTlNE
YXRhKiBuc0luaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKQoreworICAgIG1fY2FsbE9uQ2xpZW50
VGhyZWFkQ2FsbGJhY2soW3RoaXMsIHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBuc0luaXRE
YXRhID0gcmV0YWluUHRyKG5zSW5pdERhdGEpLCB0cmFja0lEXSB7CisgICAgICAgIG1fZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayhTaGFyZWRC
dWZmZXI6OmNyZWF0ZShuc0luaXREYXRhLmdldCgpKSwgdHJhY2tJRCk7CisgICAgfSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oCmluZGV4IDc1NGIxZTJlZWMwMmRmMzM5NWU1Y2RiNWMwN2Y4ZTg4YTkzNWNkMDguLjM3
NmE2ZmMxNDM4MTFlZWI4NTY3YmNiMDhlN2RkZDNiMWZmMTNjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVk
aWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL09i
c2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05NSw3ICs5Niw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9
CiAKICAgICB2b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQpOwotICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4m
JiwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4pOworICAgIHZvaWQgZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8
U2hhcmVkQnVmZmVyPiYmLCB1aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7
CisKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFj
a0lEKFJlZjxTaGFyZWRCdWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQpOwogCiAgICAgYm9vbCBo
YXNTZWxlY3RlZFZpZGVvKCkgY29uc3Q7CiAKQEAgLTEzMiw3ICsxMzUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBidWZmZXJXYXNDb25zdW1lZCgpOwogICAgIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQotICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgeyByZXR1cm4gbV9pbml0
RGF0YS5nZXQoKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogaW5pdERhdGEoKSB7IHJldHVybiBtX2lu
aXREYXRhLmdldCgpOyB9CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAt
MTUwLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50
ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwogICAg
IHZvaWQgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYp
OwogICAgIHZvaWQgZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QpOwotICAg
IHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1
aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAgdm9pZCBkaWRQ
cm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmLCB1aW50
NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VC
dWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOwpAQCAtMTc0LDYgKzE3Nyw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIGN1
cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBj
b25zdCBmaW5hbDsKIAorICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGVBVkZP
YmpDPiYmLCB1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGRpZEJlY29tZVJlYWR5Rm9yTW9y
ZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCk7CiAgICAgdm9pZCBhcHBlbmRDb21wbGV0ZWQoKTsK
ICAgICB2b2lkIGRlc3Ryb3lTdHJlYW1EYXRhUGFyc2VyKCk7CkBAIC0xODYsNiArMTkwLDEyIEBA
IHByaXZhdGU6CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAogICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGxheWVyKCkgY29uc3Q7CisgICAg
Ym9vbCBjYW5FbnF1ZXVlU2FtcGxlKHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IE1lZGlhU2FtcGxl
QVZGT2JqQyYpOworICAgIGJvb2wgdHJhY2tJc0Jsb2NrZWQodWludDY0X3QgdHJhY2spIGNvbnN0
OworCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNT
SU9OKQorICAgIHZvaWQga2V5U3RhdHVzZXNDaGFuZ2VkKCk7CisjZW5kaWYKIAogICAgIFZlY3Rv
cjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+PiBtX3ZpZGVvVHJhY2tzOwogICAgIFZlY3RvcjxS
ZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+PiBtX2F1ZGlvVHJhY2tzOwpAQCAtMTk3LDcgKzIwNyw4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Byb2Nlc3NpbmdJbml0aWFsaXphdGlvblNlZ21lbnQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nQXBwZW5kQ29tcGxldGVkQ2FsbGJhY2sg
eyBmYWxzZSB9OwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUcmFja0No
YW5nZUNhbGxiYWNrczsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVkaWFT
YW1wbGU+Pj4gbV9tZWRpYVNhbXBsZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwg
UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+PiBtX21lZGlhU2FtcGxlczsKKyAgICBEZXF1ZTxzdGQ6
OnBhaXI8dWludDY0X3QsIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+Pj4gbV9ibG9ja2VkU2FtcGxl
czsKIAogICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9kaXNwbGF5
TGF5ZXI7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgpAQCAtMjE1LDEz
ICsyMjYsMjcgQEAgcHJpdmF0ZToKIAogICAgIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIG1f
bWVkaWFTb3VyY2U7CiAgICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFsc2UgfTsKKwogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2luaXRE
YXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1faW5pdERhdGE7CiAgICAgV2Vha1B0cjxD
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDPiBtX3Nlc3Npb24geyBudWxscHRyIH07CiAjZW5k
aWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj47CisgICAgc3RydWN0IFRyYWNrSW5pdERhdGEgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbml0RGF0YTsKKyAgICAgICAgS2V5SURzIGtleUlEczsKKyAgICB9OworICAgIHVzaW5n
IFRyYWNrSW5pdERhdGFNYXAgPSBIYXNoTWFwPHVpbnQ2NF90LCBUcmFja0luaXREYXRhPjsKKyAg
ICBUcmFja0luaXREYXRhTWFwIG1fcGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXA7Cisg
ICAgVHJhY2tJbml0RGF0YU1hcCBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXA7CisKKyAgICB1
c2luZyBUcmFja0tleUlEc01hcCA9IEhhc2hNYXA8dWludDY0X3QsIEtleUlEcz47CisgICAgVHJh
Y2tLZXlJRHNNYXAgbV9jdXJyZW50VHJhY2tJRHM7CisKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1fY2RtSW5zdGFuY2U7Ci0gICAgVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CisgICAgVW5pcXVlUmVmPE9ic2VydmVy
PHZvaWQoKT4+IG1fa2V5U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2ZXI7CisgICAgS2V5SURzIG1fa2V5
SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQppbmRleCBlNjFhM2E3ZmNjOTYzNzk4ZjY4OThjMDEyN2JkNzRiYjMzMGJmN2ExLi5m
M2Q0MjQ1YmUxNDAwOGYwNWM2Yjk5ZDk2OWZmNGNmZDBlYzc3NDNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNzYs
NiArNzYsMTIgQEAgLSAodm9pZClleHBlY3RNaW5pbXVtVXBjb21pbmdTYW1wbGVCdWZmZXJQcmVz
ZW50YXRpb25UaW1lOiAoQ01UaW1lKW1pbmltdW1VcGNvbWkKIC0gKHZvaWQpcmVzZXRVcGNvbWlu
Z1NhbXBsZUJ1ZmZlclByZXNlbnRhdGlvblRpbWVFeHBlY3RhdGlvbnM7CiBAZW5kCiAKK0BpbnRl
cmZhY2UgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKFdlYkNvcmVTYW1wbGVCdWZmZXJLZXlT
ZXNzaW9uKSA8QVZDb250ZW50S2V5UmVjaXBpZW50PgorQGVuZAorCitAaW50ZXJmYWNlIEFWU2Ft
cGxlQnVmZmVyQXVkaW9SZW5kZXJlciAoV2ViQ29yZVNhbXBsZUJ1ZmZlcktleVNlc3Npb24pIDxB
VkNvbnRlbnRLZXlSZWNpcGllbnQ+CitAZW5kCisKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1h
cmsgQVZTdHJlYW1TZXNzaW9uCiAKQEAgLTI3NSw2ICsyODEsMjQgQEAgc3RhdGljIHVpbnQ2NF90
IG5leHRNYXBJRCgpCiAgICAgcmV0dXJuICsrbWFwSUQ7CiB9CiAKK3N0YXRpYyBib29sIHNhbXBs
ZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0cyA9IGZhbHNlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwor
ICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgWyZdIHsKKyAgICAgICAgc3VwcG9ydHMgPSBb
UEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJDbGFzcygpIGNvbmZvcm1zVG9Qcm90
b2NvbDpAcHJvdG9jb2woQVZDb250ZW50S2V5UmVjaXBpZW50KV0KKyAgICAgICAgICAgICYmIFtQ
QUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9j
b2w6QHByb3RvY29sKEFWQ29udGVudEtleVJlY2lwaWVudCldOworICAgIH0pOworICAgIHJldHVy
biBzdXBwb3J0czsKK30KKworc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IGNvcHlLZXlJRHMoY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
a2V5SURzKQoreworICAgIHJldHVybiBrZXlJRHMubWFwKFtdIChhdXRvJiBrZXlJRCkgeworICAg
ICAgICByZXR1cm4ga2V5SUQuY29weVJlZigpOworICAgIH0pOworfQorCiBzdGF0aWMgdm9pZCBi
dWZmZXJXYXNDb25zdW1lZENhbGxiYWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2
b2lkKiBsaXN0ZW5lciwgQ0ZTdHJpbmdSZWYgbm90aWZpY2F0aW9uTmFtZSwgY29uc3Qgdm9pZCos
IENGVHlwZVJlZikKIHsKICAgICBpZiAoIUNGRXF1YWwoUEFMOjprQ01TYW1wbGVCdWZmZXJDb25z
dW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgbm90aWZpY2F0aW9uTmFtZSkpCkBAIC0z
MDcsNiArMzMxLDkgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMKICAgICAsIG1fZXJyb3JMaXN0
ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGFsbG9jXSBpbml0
V2l0aFBhcmVudDoqdGhpc10pKQogICAgICwgbV9hcHBlbmRRdWV1ZShXb3JrUXVldWU6OmNyZWF0
ZSgiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgZGF0YSBwYXJzZXIgcXVldWUiKSkKICAgICAs
IG1fbWVkaWFTb3VyY2UocGFyZW50KQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhB
VkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICAsIG1fa2V5U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2
ZXIobWFrZVVuaXF1ZVJlZjxPYnNlcnZlcjx2b2lkKCk+PihbdGhpc10geyBrZXlTdGF0dXNlc0No
YW5nZWQoKTsgfSkpCisjZW5kaWYKICAgICAsIG1fbWFwSUQobmV4dE1hcElEKCkpCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwYXJlbnQtPmxvZ2dlcigpKQpAQCAt
MzY0LDYgKzM5MSw5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVuCiAKICAgICBjbGVhclRyYWNr
cygpOwogCisgICAgbV9wcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwLnN3YXAobV9wZW5kaW5nUHJv
dGVjdGVkVHJhY2tJbml0RGF0YU1hcCk7CisgICAgbV9wZW5kaW5nUHJvdGVjdGVkVHJhY2tJbml0
RGF0YU1hcC5jbGVhcigpOworCiAgICAgZm9yIChhdXRvIHZpZGVvVHJhY2tJbmZvIDogc2VnbWVu
dC52aWRlb1RyYWNrcykgewogICAgICAgICB2aWRlb1RyYWNrSW5mby50cmFjay0+c2V0U2VsZWN0
ZWRDaGFuZ2VkQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRoaXNdIChW
aWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgc2VsZWN0ZWQpIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCkBAIC00NTgsMTAgKzQ4OCwxNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCBjb2RlKQog
ICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1w
bGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBtZWRpYVNhbXBsZSwgdWludDY0
X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KG1lZGlhVHlwZSk7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09O
VEVOVEtFWVNFU1NJT04pCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9wcm90ZWN0ZWRUcmFja0lu
aXREYXRhTWFwLmZpbmQodHJhY2tJZCk7CisgICAgaWYgKGZpbmRSZXN1bHQgIT0gbV9wcm90ZWN0
ZWRUcmFja0luaXREYXRhTWFwLmVuZCgpKQorICAgICAgICBtZWRpYVNhbXBsZS0+c2V0S2V5SURz
KGNvcHlLZXlJRHMoZmluZFJlc3VsdC0+dmFsdWUua2V5SURzKSk7CisjZW5kaWYKKwogICAgIGlm
IChtX3Byb2Nlc3NpbmdJbml0aWFsaXphdGlvblNlZ21lbnQpIHsKICAgICAgICAgREVCVUdfTE9H
KExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLmdldCgpKTsKICAgICAgICAgbV9tZWRpYVNhbXBs
ZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHRyYWNrSWQsIFdURk1vdmUobWVkaWFTYW1wbGUpKSk7
CkBAIC01MDgsNyArNTQ0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUYKICNlbmRpZgogfQog
Ci12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxVaW50OEFycmF5PiYmIGluaXRE
YXRhLCB1aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2Vt
YXBob3JlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCB1aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNT
ZXNzaW9uU2VtYXBob3JlKQogewogICAgIGF1dG8gcGxheWVyID0gdGhpcy0+cGxheWVyKCk7CiAg
ICAgaWYgKCFwbGF5ZXIpCkBAIC01MTksMTEgKzU1NSwxNSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGbwogCiAgICAgbV9wcm90ZWN0ZWRUcmFja0lEID0gdHJhY2tJRDsKICAgICBtX2luaXREYXRh
ID0gV1RGTW92ZShpbml0RGF0YSk7Ci0gICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5
TmVlZGVkKHRoaXMsIG1faW5pdERhdGEuZ2V0KCkpOworICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJj
ZUJ1ZmZlcktleU5lZWRlZCh0aGlzLCAqbV9pbml0RGF0YSk7CisKICAgICBpZiAoYXV0byBzZXNz
aW9uID0gcGxheWVyLT5jZG1TZXNzaW9uKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGFyc2VyID0g
dGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQorICAgICAgICBpZiAoc2FtcGxlQnVmZmVyUmVuZGVy
ZXJzU3VwcG9ydEtleVNlc3Npb24oKSkgeworICAgICAgICAgICAgLy8gbm8tb3AuCisgICAgICAg
IH0gZWxzZSBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCiAgICAg
ICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIocGFyc2VyKTsKLSAgICAgICAgaGFzU2Vzc2lvblNl
bWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIGlmIChoYXNTZXNzaW9uU2VtYXBob3JlKQorICAg
ICAgICAgICAgaGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAjZW5kaWYKQEAgLTUzMywxNCArNTczLDE3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvCiAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gaGFzU2Vzc2lvblNlbWFwaG9yZTsKICAg
ICAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCi0gICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faW5p
dERhdGEtPmRhdGEoKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKLSAgICBhdXRvIGtleUlE
cyA9IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoaW5pdERh
dGFCdWZmZXIpOworICAgIGF1dG8ga2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpleHRyYWN0S2V5SURzU2luZigqbV9pbml0RGF0YSk7CiAgICAgaWYgKCFrZXlJRHMpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIG1fcGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuc2V0
KHRyYWNrSUQsIFRyYWNrSW5pdERhdGEgeyBtX2luaXREYXRhLmNvcHlSZWYoKSwgKmtleUlEcyB9
KTsKKwogICAgIGlmIChtX2NkbUluc3RhbmNlKSB7CiAgICAgICAgIGlmIChhdXRvIGluc3RhbmNl
U2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoa2V5SURzLnZhbHVlKCkp
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2Vy
KCkpCisgICAgICAgICAgICBpZiAoc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Np
b24oKSkgeworICAgICAgICAgICAgICAgIC8vIG5vLW9wLgorICAgICAgICAgICAgfSBlbHNlIGlm
IChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKICAgICAgICAgICAgICAg
ICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNp
cGllbnQ6cGFyc2VyXTsKICAgICAgICAgICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsK
ICAgICAgICAgICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwpAQCAtNTUy
LDcgKzU5NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgfQogCiAgICAgbV9rZXlJ
RHMgPSBXVEZNb3ZlKGtleUlEcy52YWx1ZSgpKTsKLSAgICBwbGF5ZXItPmluaXRpYWxpemF0aW9u
RGF0YUVuY291bnRlcmVkKCJzaW5mIiwgaW5pdERhdGFCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkpOworICAgIHBsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoInNpbmYi
LCBtX2luaXREYXRhLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIAogICAgIG1fd2FpdGluZ0Zv
cktleSA9IHRydWU7CiAgICAgcGxheWVyLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwpAQCAtNTg3
LDcgKzYzMCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIHdlYWtUaGlzLT5kaWRFbmNvdW50ZXJFcnJv
ckR1cmluZ1BhcnNpbmcoZXJyb3JDb2RlKTsKICAgICB9KTsKIAotICAgIG1fcGFyc2VyLT5zZXRE
aWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0gKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUs
IHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CisgICAgbV9wYXJz
ZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPE1lZGlhU2FtcGxlQVZG
T2JqQz4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghd2Vha1Ro
aXMgfHwgYWJvcnRDYWxsZWQgIT0gd2Vha1RoaXMtPm1fYWJvcnRDYWxsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC02MTYsNyArNjU5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgfQogICAgIH0p
OwogCi0gICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgYWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBob3JlLCBhYm9ydENhbGxlZCA9IG1fYWJv
cnRDYWxsZWRdKFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKSBt
dXRhYmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmUsIGFib3J0Q2FsbGVkID0g
bV9hYm9ydENhbGxlZF0oUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJh
Y2tJRCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIENhbGxlZCBvbiB0aGUgZGF0YSBwYXJzZXIgcXVl
dWUuCiAgICAgICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBC
b3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGFib3J0Q2FsbGVkLCBpbml0RGF0YSA9IFdU
Rk1vdmUoaW5pdERhdGEpLCB0cmFja0lELCBoYXNTZXNzaW9uU2VtYXBob3JlXSAoKSBtdXRhYmxl
IHsKQEAgLTYzNiw2ICs2NzksMTMgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgfQogICAgIH0pOwogCisg
ICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JU
cmFja0lEQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0Q2FsbGVk
ID0gbV9hYm9ydENhbGxlZF0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIHVpbnQ2NF90
IHRyYWNrSUQpIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCBhYm9ydENhbGxlZCAhPSB3ZWFrVGhpcy0+bV9hYm9ydENhbGxlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoV1RGTW92ZShpbml0RGF0YSksIHRy
YWNrSUQsIG51bGxwdHIpOworICAgIH0pOworCiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gdHJ1
ZTsKIAogICAgIG1fYXBwZW5kUXVldWUtPmRpc3BhdGNoKFtkYXRhID0gV1RGTW92ZShkYXRhKSwg
d2Vha1RoaXMgPSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJz
ZXIgPSBtX3BhcnNlciwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSgpIG11dGFibGUgewpA
QCAtNzM2LDYgKzc4NiwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0
cm95UmVuZGVyZXJzKCkKICAgICAgICAgW3JlbmRlcmVyIGZsdXNoXTsKICAgICAgICAgW3JlbmRl
cmVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKICAgICAgICAgW21fZXJyb3JMaXN0ZW5lciBz
dG9wT2JzZXJ2aW5nUmVuZGVyZXI6cmVuZGVyZXIuZ2V0KCldOworCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAgICBpZiAobV9j
ZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQor
ICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29u
dGVudEtleVJlY2lwaWVudDpyZW5kZXJlci5nZXQoKV07CisjZW5kaWYKICAgICB9CiAKICAgICBb
bV9lcnJvckxpc3RlbmVyIGludmFsaWRhdGVdOwpAQCAtODQzLDYgKzg5OCwxMSBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFj
a1ByaXZhdGUmIHRyYWNrLAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lP
TikKKyAgICAgICAgaWYgKG1fY2RtSW5zdGFuY2UgJiYgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3Vw
cG9ydEtleVNlc3Npb24oKSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5
U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cmVuZGVyZXIuZ2V0KCldOworI2VuZGlm
CisKICAgICAgICAgICAgIFdlYWtQdHIgd2Vha1RoaXMgeyAqdGhpcyB9OwogICAgICAgICAgICAg
W3JlbmRlcmVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeewogICAgICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykK
QEAgLTkwOSw3ICs5NjksMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0
Q0RNSW5zdGFuY2UoQ0RNSW5zdGFuY2UqIGluc3RhbmNlKQogCiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKIAorICAgIGlmIChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vz
c2lvbigpICYmIG1fY2RtSW5zdGFuY2UpIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUxheWVyKQor
ICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29u
dGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5nZXQoKV07CisKKyAgICAgICAgZm9yIChh
dXRvJiBhdWRpb1JlbmRlcmVyIDogbV9hdWRpb1JlbmRlcmVycy52YWx1ZXMoKSkKKyAgICAgICAg
ICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlS
ZWNpcGllbnQ6YXVkaW9SZW5kZXJlci5nZXQoKV07CisgICAgfQorCiAgICAgbV9jZG1JbnN0YW5j
ZSA9IGZwc0luc3RhbmNlOworCisgICAgaWYgKHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRL
ZXlTZXNzaW9uKCkgJiYgbV9jZG1JbnN0YW5jZSkgeworICAgICAgICBpZiAobV9kaXNwbGF5TGF5
ZXIpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBhZGRD
b250ZW50S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgpXTsKKworICAgICAgICBmb3Ig
KGF1dG8mIGF1ZGlvUmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQorICAgICAg
ICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJl
Y2lwaWVudDphdWRpb1JlbmRlcmVyLmdldCgpXTsKKyAgICB9CisKICAgICBhdHRlbXB0VG9EZWNy
eXB0KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZSk7CkBAIC05MjYsOCArMTAw
MywxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0
KCkKICAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQotICAgICAgICBbaW5zdGFu
Y2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFy
c2VyXTsKKyAgICBpZiAoIXNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkp
IHsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQor
ICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250
ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CisgICAgfQogICAgIGlmIChtX2hhc1Nlc3Npb25TZW1h
cGhvcmUpIHsKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAg
ICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKQEAgLTExMDUsMTkgKzExODQsODkg
QEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICAgICAgcGxheWVyLT5zZXRI
YXNBdmFpbGFibGVBdWRpb1NhbXBsZShyZW5kZXJlciwgZmFsc2UpOwogfQogCitib29sIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0lzQmxvY2tlZCh1aW50NjRfdCB0cmFja0lEKSBj
b25zdAoreworICAgIGZvciAoYXV0byYgc2FtcGxlUGFpciA6IG1fYmxvY2tlZFNhbXBsZXMpIHsK
KyAgICAgICAgaWYgKHNhbXBsZVBhaXIuZmlyc3QgPT0gdHJhY2tJRCkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCit2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjprZXlTdGF0dXNlc0NoYW5nZWQoKQoreworICAgIHdoaWxlICgh
bV9ibG9ja2VkU2FtcGxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYgZmlyc3RQYWlyID0g
bV9ibG9ja2VkU2FtcGxlcy5maXJzdCgpOworCisgICAgICAgIC8vIElmIHdlIHN0aWxsIGNhbid0
IGVucXVldWUgdGhlIHNhbXBsZSwgYmFpbC4KKyAgICAgICAgaWYgKCFjYW5FbnF1ZXVlU2FtcGxl
KGZpcnN0UGFpci5maXJzdCwgZmlyc3RQYWlyLnNlY29uZCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgYXV0byBmaXJzdFBhaXJUYWtlbiA9IG1fYmxvY2tlZFNhbXBsZXMudGFrZUZp
cnN0KCk7CisgICAgICAgIGVucXVldWVTYW1wbGUoV1RGTW92ZShmaXJzdFBhaXJUYWtlbi5zZWNv
bmQpLCBmaXJzdFBhaXJUYWtlbi5maXJzdCk7CisgICAgfQorfQorI2VuZGlmCisKK2Jvb2wgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNhbkVucXVldWVTYW1wbGUodWludDY0X3QgdHJhY2tJ
RCwgY29uc3QgTWVkaWFTYW1wbGVBVkZPYmpDJiBzYW1wbGUpCit7CisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIC8vIElmIHNhbXBs
ZSBidWZmZXJzIGRvbid0IHN1cHBvcnQgQVZDb250ZW50S2V5U2Vzc2lvbjogZW5xdWV1ZSBzYW1w
bGUKKyAgICBpZiAoIXNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlIGlzIHVuZW5jcnl0cGVkOiBl
bnF1ZXVlIHNhbXBsZQorICAgIGlmIChzYW1wbGUua2V5SURzKCkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIGlmIHNhbXBsZSBpcyBlbmNyeXB0ZWQsIGJ1dCB3ZSBh
cmUgbm90IGF0dGFjaGVkIHRvIGEgQ0RNOiBkbyBub3QgZW5xdWV1ZSBzYW1wbGUuCisgICAgaWYg
KCFtX2NkbUluc3RhbmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBpZiBzYW1w
bGUgaXMgZW5jcnlwdGVkLCBhbmQga2V5SURzIG1hdGNoIHRoZSBjdXJyZW50IHNldCBvZiBrZXlJ
RHM6IGVucXVldWUgc2FtcGxlLgorICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fY3VycmVudFRyYWNr
SURzLmZpbmQodHJhY2tJRCk7CisgICAgaWYgKGZpbmRSZXN1bHQgIT0gbV9jdXJyZW50VHJhY2tJ
RHMuZW5kKCkgJiYgZmluZFJlc3VsdC0+dmFsdWUgPT0gc2FtcGxlLmtleUlEcygpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIGlmIHNhbXBsZSdzIHNldCBvZiBrZXlJRHMgZG9lcyBu
b3QgbWF0Y2ggdGhlIGN1cnJlbnQgc2V0IG9mIGtleUlEcywgY29uc3VsdCB3aXRoIHRoZSBDRE0K
KyAgICAvLyB0byBkZXRlcm1pbmUgaWYgdGhlIGtleUlEcyBhcmUgdXNhYmxlOyBpZiBzbywgdXBk
YXRlIHRoZSBjdXJyZW50IHNldCBvZiBrZXlJRHMgYW5kIGVucXVldWUgc2FtcGxlLgorICAgIGlm
IChtX2NkbUluc3RhbmNlLT5pc0FueUtleVVzYWJsZShzYW1wbGUua2V5SURzKCkpKSB7CisgICAg
ICAgIG1fY3VycmVudFRyYWNrSURzLnNldCh0cmFja0lELCBzYW1wbGUua2V5SURzKCkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEF0b21TdHJp
bmcmIHRyYWNrSURTdHJpbmcpCiB7CiAgICAgYXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRyYWNrSURTdHJpbmcpLnZhbHVlX29yKDApOwog
ICAgIGlmICh0cmFja0lEICE9IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCAmJiAhbV9hdWRpb1JlbmRl
cmVycy5jb250YWlucyh0cmFja0lEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGxhdGZvcm1T
YW1wbGUgcGxhdGZvcm1TYW1wbGUgPSBzYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCk7Ci0gICAgaWYg
KHBsYXRmb3JtU2FtcGxlLnR5cGUgIT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlw
ZSkKKyAgICBBU1NFUlQoaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKTsKKyAgICBpZiAo
IWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4oc2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4gc2FtcGxlQVZGT2JqQyA9IHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+KFdURk1vdmUoc2FtcGxlKSk7CisgICAgaWYgKCFzYW1w
bGVBVkZPYmpDLT5rZXlJRHMoKS5pc0VtcHR5KCkgJiYgIWNhbkVucXVldWVTYW1wbGUodHJhY2tJ
RCwgc2FtcGxlQVZGT2JqQykpIHsKKyAgICAgICAgbV9ibG9ja2VkU2FtcGxlcy5hcHBlbmQoeyB0
cmFja0lELCBXVEZNb3ZlKHNhbXBsZUFWRk9iakMpIH0pOwogICAgICAgICByZXR1cm47CisgICAg
fQogCisgICAgZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNhbXBsZUFWRk9iakMpLCB0cmFja0lEKTsK
K30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZShSZWY8
TWVkaWFTYW1wbGVBVkZPYmpDPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCkKK3sKICAgICBh
dXRvIGxvZ1NpdGVJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBERUJVR19MT0cobG9n
U2l0ZUlkZW50aWZpZXIsICJ0cmFjayBJRCA9ICIsIHRyYWNrSUQsICIsIHNhbXBsZSA9ICIsIHNh
bXBsZS5nZXQoKSk7CiAKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBs
ZS0+cGxhdGZvcm1TYW1wbGUoKTsKKwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
RGVzY3JpcHRpb24gPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24ocGxh
dGZvcm1TYW1wbGUuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKTsKICAgICBBU1NFUlQoZm9ybWF0RGVz
Y3JpcHRpb24pOwogICAgIGlmICghZm9ybWF0RGVzY3JpcHRpb24pIHsKQEAgLTEyODQsNiArMTQz
Myw5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9y
TW9yZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCkKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmICh0cmFja0lzQmxvY2tlZCh0cmFja0lEKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgcHJvdmlkZU1lZGlhRGF0YShBdG9tU3RyaW5nOjpudW1iZXIodHJhY2tJRCkpOwogfQogCkBA
IC0xMzc1LDExICsxNTI3LDIxIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNl
dFZpZGVvTGF5ZXIoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIGxheWVyCiAgICAgICAgIFtt
X2Rpc3BsYXlMYXllciBmbHVzaF07CiAgICAgICAgIFttX2Rpc3BsYXlMYXllciBzdG9wUmVxdWVz
dGluZ01lZGlhRGF0YV07CiAgICAgICAgIFttX2Vycm9yTGlzdGVuZXIgc3RvcE9ic2VydmluZ0xh
eWVyOm1fZGlzcGxheUxheWVyLmdldCgpXTsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
ICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICAgICAgaWYgKG1fY2RtSW5zdGFuY2Ug
JiYgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSkKKyAgICAgICAgICAg
IFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNp
cGllbnQ6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworI2VuZGlmCiAgICAgfQogCiAgICAgbV9kaXNw
bGF5TGF5ZXIgPSBsYXllcjsKIAogICAgIGlmIChtX2Rpc3BsYXlMYXllcikgeworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICAgICAg
aWYgKG1fY2RtSW5zdGFuY2UgJiYgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Np
b24oKSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIGFk
ZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworI2VuZGlmCisKICAg
ICAgICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0aGlzIH07CiAgICAgICAgIFttX2Rpc3BsYXlMYXll
ciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpIHVzaW5nQmxvY2s6XiB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oCmluZGV4IDUyMGI1MjA3ZmMyNzFkNzk4MTUzM2ZiMTRkMjMxNTU5NGE4ODgzNjUu
LmZjMmJhYjkwN2Q5ODM1M2QxZjhhYWQ2OTRmOWU1NTJhNGMyOWZlNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIExvZ2dlcjsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGU7Ci1jbGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIE1l
ZGlhU2FtcGxlQVZGT2JqQzsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNv
dXJjZUJ1ZmZlclBhcnNlcj4gewpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdXNpbmcgRGlk
UHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8TWVkaWFTYW1wbGU+
JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CisgICAgdXNp
bmcgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8TWVkaWFT
YW1wbGVBVkZPYmpDPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlw
ZSk+OwogICAgIHZvaWQgc2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKERpZFByb3ZpZGVN
ZWRpYURhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKQEAgLTEzNywxMiArMTM3LDE5
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5
IG9uIHRoZSBwYXJzZXIgdGhlYWQuCi0gICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChS
ZWY8VWludDhBcnJheT4mJiwgdWludDY0X3QgdHJhY2tJRCk+OworICAgIHVzaW5nIERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJhY2tJRCk+Owog
ICAgIHZvaWQgc2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrKERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9k
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKICAgICB9CiAKKyAgICAvLyBXaWxsIGJlIGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJhY2tJRCk+OworICAgIHZvaWQgc2V0RGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayhEaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2spCisg
ICAgeworICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JU
cmFja0lEQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKIHByb3RlY3RlZDoK
ICAgICBTb3VyY2VCdWZmZXJQYXJzZXIoKTsKIApAQCAtMTUyLDYgKzE1OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgbV9kaWRQcm92aWRlTWVkaWFEYXRh
Q2FsbGJhY2s7CiAgICAgV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSURDYWxsYmFjayBtX3dpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2s7CiAgICAgRGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOwor
ICAgIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJh
Y2sgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxi
YWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAwNWE4
MzE2ZGMyN2U2MzAxN2YzOTdmMTkyNDY5YjgyYTMzYjdiMDM0Li5hZTE2NDE0ZjIxYzY4NDZjMTg5
NzcwOWUxNDI0ZTRhNmE0Yjc2MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cApAQCAtMTAzMiw3ICsxMDMyLDcgQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
VHJhY2tFbnRyeShjb25zdCBFbGVtZW50TWV0YWRhdGEmLCBjb25zdCBUcmFja0UKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgYXV0byYga2V5SWQgPSBrZXlJZEVsZW1l
bnQudmFsdWUoKTsKLSAgICAgICAgICAgIG1fa2V5SWRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih0
cmFja0VudHJ5LnRyYWNrX3VpZC52YWx1ZSgpLCBVaW50OEFycmF5OjpjcmVhdGUoa2V5SWQuZGF0
YSgpLCBrZXlJZC5zaXplKCkpKSk7CisgICAgICAgICAgICBtX2tleUlkcy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIodHJhY2tFbnRyeS50cmFja191aWQudmFsdWUoKSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoa2V5SWQuZGF0YSgpLCBrZXlJZC5zaXplKCkpKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCAyOGU3M2ZiYTUwMjNjODE2YmZiMjQyYzVm
OTkwZGI5N2ExOGJjMWZmLi5lODc2YWI0MTRhNGFiYjMzZDUxOGMzN2I0MWZlNWExNDc3NmFiNDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC0yNjksNyArMjY5LDcgQEAgcHJp
dmF0ZToKICAgICB3ZWJtOjpTdGF0dXMgT25GcmFtZShjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRh
Jiwgd2VibTo6UmVhZGVyKiwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nKSBmaW5hbDsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbml0aWFsaXphdGlvblNlZ21lbnQ+IG1faW5pdGlhbGl6YXRpb25T
ZWdtZW50OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxVaW50OEFycmF5Pj4+
IG1fa2V5SWRzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gbV9rZXlJZHM7CiAgICAgd2VibTo6U3RhdHVzIG1fc3RhdHVzOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjx3ZWJtOjpXZWJtUGFyc2VyPiBtX3BhcnNlcjsKICAgICBib29sIG1faW5pdGlhbGl6
YXRpb25TZWdtZW50RW5jb3VudGVyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVH
U3RyZWFtZXIuaAppbmRleCAxZDcxYTMzOTY5Y2ZiYzY3NWRlZWNlYTc4ZTY0ZjJkNjg5OWU0MWVi
Li5iNGQ1MzE1MDI5ODJmZDliYzZhOWRkMmMyNjhkNzlkN2ZhYjczNmJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgUmVm
PE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbGFnczsg
fQogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxh
dGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gUGxhdGZvcm1TYW1wbGU6OkdTdHJlYW1lclNhbXBsZVR5cGU7IH0KICAgICBzdGQ6Om9w
dGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Rk
OjpudWxsb3B0OyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJbWFnZURhdGEoKSBj
b25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXgg
NWNiNjBiOWVmNmVmNTdhNDNiNGVlZjcyYTEzNzY3OWIxYWViZDY1Yi4uMDAzOWI0MjAwMmE2ZjA1
ZGNiN2RhYmQ1OTNkZmE4NGQyYjJiZDcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKQEAgLTYyLDYgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3Qgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2Ft
cGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0
Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3Jt
U2FtcGxlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtU2FtcGxlOjpNb2Nr
U2FtcGxlQm94VHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBGbG9hdFNpemUg
cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAKaW5kZXggNDJhMzIwNjU0YjAzZGY5YjQzOTc3Nzk0MjU2NDU4MjAwNmNkYTExMC4uNzEx
Y2VkMGJmMTMxNDI1OTE3NzVmZmQ3OTNhZTVhODZjNmFlMGNmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cApAQCAtNjk4LDExICs2OTgsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFMKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBtZXNzYWdlKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjptZWRpYVBsYXllcktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7
CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2VSZWZlcmVuY2U7Ci0gICAgaWYgKG1lc3Nh
Z2UpCi0gICAgICAgIG1lc3NhZ2VSZWZlcmVuY2UgPSB7IG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2Fn
ZS0+Ynl0ZUxlbmd0aCgpIH07CisgICAgbWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVzc2FnZS5kYXRh
KCksIG1lc3NhZ2Uuc2l6ZSgpIH07CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllcktleU5lZWRlZChX
VEZNb3ZlKG1lc3NhZ2VSZWZlcmVuY2UpKSwgbV9pZCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
CmluZGV4IDkzMTZiNjZhYjM1OTY2ZTViNjQ1ZGQxYzdjZTBlODEyZjIwNmE2MzcuLjU5NWM1ODkx
OWVhMTNmZWI5NWQ4ZmMwZDBiNDMyMzA2OGE4MmEwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMjQ5
LDcgKzI0OSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQo
Y29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRl
ZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggNzc0Y2NmMzFmMjY3N2QwYTA1MjE3NjUxYjNi
NGUxMzIzNWM0YzI5NC4uZjg5NTdiM2I4ZTQxODYyM2IzYjU2YzAxMjE1NzAwNWJkY2Y2Mjg5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9p
ZCBNZWRpYUZvcm1hdFJlYWRlcjo6cGFyc2VCeXRlU291cmNlKFJldGFpblB0cjxNVFBsdWdpbkJ5
dGVTb3VyY2VSZWY+JiYgYnl0ZVMKICAgICAgICAgZGlkUGFyc2VUcmFja3MoeyB9LCBlcnJvckNv
ZGUpOwogICAgIH0pOwogCi0gICAgcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJh
Y2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShSZWY8TWVkaWFTYW1wbGU+
JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
KSB7CisgICAgcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1l
ZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgewog
ICAgICAgICBkaWRQcm92aWRlTWVkaWFEYXRhKFdURk1vdmUobWVkaWFTYW1wbGUpLCB0cmFja0lE
LCBtZWRpYVR5cGUpOwogICAgIH0pOwogCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBNZWRpYUZv
cm1hdFJlYWRlcjo6ZGlkUGFyc2VUcmFja3MoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5p
dGlhbGl6YXRpb24KICAgICBtX2luaXQgPSB0cnVlOwogfQogCi12b2lkIE1lZGlhRm9ybWF0UmVh
ZGVyOjpkaWRQcm92aWRlTWVkaWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwg
dWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJikKK3ZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6
OmRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBtZWRpYVNhbXBs
ZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQoIWlzTWFp
blJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKaW5kZXggNjUwOTNlOWU0
NmI0MGI1YTM5NzZmZGVmMjllNjEzYzY0NTFmMzE1YS4uMTVkNTU3MzYzMzgxNzQ2MGMyZTYyMDQ0
MTkwMTAyM2NmODZiNGE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKQEAgLTM2LDYg
KzM2LDcgQEAKIERFQ0xBUkVfQ09SRV9NRURJQV9UUkFJVFMoRm9ybWF0UmVhZGVyKTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDOwogY2xhc3MgU291cmNl
QnVmZmVyUGFyc2VyOwogfQogCkBAIC02Nyw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRQYXJzZVRyYWNrcyhXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvblNlZ21lbnQmJiwgdWludDY0X3QgZXJyb3JDb2RlKTsKICAgICB2b2lkIGRpZFNlbGVj
dFZpZGVvVHJhY2soV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGUmLCBib29sKSB7IH0KICAgICB2
b2lkIGRpZEVuYWJsZUF1ZGlvVHJhY2soV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGUmLCBib29s
KSB7IH0KLSAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlPiYmLCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkaWRQcm92aWRlTWVk
aWFEYXRhKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90LCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoUmVmPFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlcj4mJik7CiAKICAgICAvLyBDTUJhc2VDbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1w
bGVCeXRlUmFuZ2UuaAppbmRleCBiOGU0ZDc2Y2U2ZjM5Mjg1NzZlOWZiMWVmOTYyYjQwNDk3ZTNk
YzMxLi4yNTVjMDdlYTVhZDc4NTFlZmY4ZTRlZTZmN2U0N2IzNjBlNjM2NGY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVC
eXRlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAKICAg
ICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpQbGF0Zm9y
bVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU2Ft
cGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYkNv
cmU6OlBsYXRmb3JtU2FtcGxlOjpCeXRlUmFuZ2VTYW1wbGVUeXBlOyB9CiAgICAgdm9pZCBvZmZz
ZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBzZXRUaW1l
c3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggMzNkYThhYTA2YjYxNzI5NzMyNzAzZTkwYWVl
MDI1YzRhNzYyNmJmOS4uNTY2MDZjNDc0MGNlOWU5NTc1NzQyM2FlODRiODA1ZTExODIxMWMyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTE5MSw3ICsxMTkxLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptZWRpYVBsYXllcktleU5lZWRlZChJUEM6OkRhdGFSZWZlcmVuY2UmJiBt
ZXNzYWdlKQogewogICAgIGlmIChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCi0gICAg
ICAgIHBsYXllci0+a2V5TmVlZGVkKFVpbnQ4QXJyYXk6OmNyZWF0ZShtZXNzYWdlLmRhdGEoKSwg
bWVzc2FnZS5zaXplKCkpLnB0cigpKTsKKyAgICAgICAgcGxheWVyLT5rZXlOZWVkZWQoU2hhcmVk
QnVmZmVyOjpjcmVhdGUobWVzc2FnZSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1NmQyZTg5MWViMTI4Njk1NTViOWRj
OTM2Y2IwOTU1MGZmZjgwOTZkLi40ZDZjOTZhODZmZTMxNjMwNTdhZTVmNTcwNTkzMzBjNDFhZmZh
ODZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMjItMDItMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRl
Q29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHA6CisKIDIwMjItMDItMDcgIFJveSBSZWFwb3IgIDxy
cmVhcG9yQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5XSBBdXRvaW5zdGFsbGVy
IG1heSBmYWlsIHRvIGluc3RhbGwgd2hlZWxzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwCmluZGV4IGQxNDZjZWM0ZjJlYzRjZjY5MTJkN2YwNDhk
Mjg4MTU3YWRmZGMxYjguLjJiMjc1OTkwMjg3ZmNlNWQ0ZTFlZmNjNGE5ODAzYTMwMDRjNjY0YzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3Bw
CkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3Mo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxh
dGZvcm1TYW1wbGUoKSBmaW5hbCB7IHJldHVybiB7IFBsYXRmb3JtU2FtcGxlOjpOb25lLCB7bnVs
bHB0cn19OyB9CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6Ok5vbmU7IH0KICAgICBzdGQ6Om9w
dGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbCB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451768</attachid>
            <date>2022-02-11 18:21:23 -0800</date>
            <delta_ts>2022-02-11 19:48:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236109-20220211182122.patch</filename>
            <type>text/plain</type>
            <size>75427</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRmODRkYTQ5MmY5MDI2OTQyZTk4MzZi
OTI1Yjg0NTYzZTQ3ZjNhZTMuLjMzZDAyNTlmNTlkMjMwZjA5YWEzYjM3MzM3MmMyM2RkZWUzMzk0
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0zMjYsNiArMzI2LDE1IEBACiAKICAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWw6CiAKKzIwMjItMDItMDcgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBk
ZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjItMDItMDYgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBNYWtlIEJpdG1hcCBjb25z
dGV4cHIgZnJpZW5kbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOTgwYTJmYmNjMmM3MzFhOTllNGEzOTFiOWZj
YzY0MTdhZTlhZTdmLi5iMzRhMGJmZGQ5MWY0NzkxMzIyNzMxZGQyZjJhMjJkYWQzMDAxY2FiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJz
ZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjEwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBUaGUg
Y3VycmVudCBzZXQgb2YgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9kcyBoYXZlIGEgc2lnbmlmaWNh
bnQgc2hvcnRjb21pbmc6IGNsaWVudHMgbXVzdAorICAgICAgICBhdHRhY2ggYW4gQVZDb250ZW50
S2V5U2Vzc2lvbiB0byB0aGUgQVZTdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSByZXR1cm5pbmcgZnJv
bSB0aGUKKyAgICAgICAgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6IGNhbGxiYWNrLiBUaGlzCisgICAgICAg
IGlzIGJlY2F1c2UgdGhlIHBhcnNlciBpdHNlbGYgYXR0YWNoZXMgdGhlIG9iamVjdCByZXF1aXJl
ZCB0byBkZWNyeXB0IGVhY2ggZW5jcnlwdGVkIHNhbXBsZQorICAgICAgICB0byB0aGUgc2FtcGxl
IGl0c2VsZiBhdCB0aGUgcGFyc2luZyBzdGFnZS4gSWYgYSBjbGllbnQgZG9lcyBub3QgYXR0YWNo
IGFuCisgICAgICAgIEFWQ29udGVudEtleVNlc3Npb24gYnkgdGhlIHRpbWUgdGhhdCBtZXRob2Qg
cmV0dXJucywgQVZTdHJlYW1EYXRhUGFyc2VyIHdpbGwgYXR0YWNoIG9uZSBvZgorICAgICAgICBp
dHMgb3duLgorCisgICAgICAgIFRoZSB3ZWItZmFjaW5nIGJlaGF2aW9yIHRoaXMgY2F1c2VzIGlz
IHRoYXQgTVNFIGFwcGVuZHMgd2lsbCBub3QgY29tcGxldGUgKGJ5IGZpcmluZworICAgICAgICBh
biAidXBkYXRlZW5kIiBldmVudCkgaWYgYW4gZW5jcnlwdGVkIHNlZ21lbnQgaXMgcGFyc2VkIHVu
dGlsIHRoZSBjbGllbnQgY3JlYXRlcyBhbmQKKyAgICAgICAgYXR0YWNoZXMgYSBNZWRpYUtleXMg
b2JqZWN0IHdpdGggYSB2YWxpZCBzZXNzaW9uLgorCisgICAgICAgIEEgbmV3IGRlbGVnYXRlIGNh
bGxiYWNrIG1ldGhvZCwgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVj
aWZpZXI6Zm9yVHJhY2tJRDoKKyAgICAgICAgYWxsb3dzIHVzIHRvIHdvcmsgYXJvdW5kIHRoaXMg
cHJvYmxlbS4gV2hlbiB0aGlzIGRlbGVnYXRlIGlzIHByZXNlbnQsIEFWU3RyZWFtRGF0YVBhcnNl
cgorICAgICAgICB3aWxsIHNraXAgYXR0YWNoaW5nIGEgZGVjcnlwdGlvbiBvYmplY3QgZW50aXJl
bHksIG1vdmluZyB0aGF0IHJlc3BvbnNpYmlsaXR5IHRvIHRoZQorICAgICAgICBjbGllbnQuIEhv
d2V2ZXIsIHRoaXMgY29tZXMgd2l0aCB0aGUgcmVxdWlyZW1lbnQgdGhhdCB0aGUgY2xpZW50IChX
ZWJLaXQpIHdvbid0IGVucXVldWUKKyAgICAgICAgYW4gZW5jcnlwdGVkIHNhbXBsZSBiZWZvcmUg
YSBkZWNyeXB0aW9uIG9iamVjdCBpcyBhdmFpbGFibGUgdmlhIEFWQ29udGVudEtleVNlc3Npb24u
CisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWVldCB0aGlzIG5ldyByZXF1aXJlbWVudCwgV2ViS2l0
IHdpbGwgYXNzb2NpYXRlIHRoZSBrZXkgSURzIG5lY2Vzc2FyeSB0bworICAgICAgICBkZWNyeXB0
IGVhY2ggc2FtcGxlIGluIHRoZSBNZWRpYVNhbXBsZSBvYmplY3QgdGhhdCB3cmFwcyB0aGUgZW5j
cnlwdGVkIHNhbXBsZS4gQmVjYXVzZSBub3QKKyAgICAgICAgZXZlcnkgdHlwZSBvZiBNZWRpYVNh
bXBsZSB3aWxsIGNhcnJ5IGtleSBJRHMsIHRoaXMgcHJvcGVydHkgd2FzIGFkZGVkIHRvIHRoZQor
ICAgICAgICBNZWRpYVNhbXBsZUFWRk9iakMgc3ViY2xhc3MsIGFuZCB0aGVyZWZvcmUgd2UgbmVl
ZCB0byBiZSBhYmxlIHRvIHNhZmVseSBkb3duY2FzdCBmcm9tCisgICAgICAgIE1lZGlhU2FtcGxl
IHRvIE1lZGlhU2FtcGxlQVZGT2JqQy4gTWVkaWFTYW1wbGUgc3ViY2xhc3NlcyBjYW4gYmUgZGlz
dGluZ3Vpc2hlZCBieSB0aGUKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNhbXBsZSB0eXBlIGF2YWls
YWJsZSB0aHJvdWdoIHRoZWlyIHBsYXRmb3JtU2FtcGxlKCkgcHJvcGVydHksIGhvd2V2ZXIgdGhp
cworICAgICAgICBjYWxsIGlzIG5vdCBjb25zdCwgYW5kIG1heSBub3QgYmUgZnJlZSwgYXMgaXQg
cmV0dXJucyBhIG5vbi1QT0QgdHlwZS4gU28KKyAgICAgICAgUGxhdGZvcm1NZWRpYTo6VHlwZSB3
YXMgbWFkZSBhbiBleHBsaWNpdCBlbnVtIHR5cGUsIGFuZCBhIG5ldyB2aXJ0dWFsIG1ldGhvZAor
ICAgICAgICBwbGF0Zm9ybVNhbXBsZVR5cGUoKSB3YXMgYWRkZWQgdG8gTWVkaWFTYW1wbGUgKGFu
ZCBpbXBsZW1lbnRlZCBieSBhbGwgc3ViY2xhc3NlcyksIGFuZCBhCisgICAgICAgIHR5cGUgc3Bl
Y2lhbGl6YXRpb24gbWFjcm8gd2FzIGFkZGVkIHRvIE1lZGlhU2FtcGxlQVZGT2JqQy4KKworICAg
ICAgICBJbiBvcmRlciB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gc2FtcGxlIGlzIGNhcGFibGUg
b2YgYmVpbmcgZW5xdWV1ZWQsIHRoZSBDRE1JbnN0YW5jZQorICAgICAgICBtdXN0IGJlIHF1ZXJp
ZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzYW1wbGUncyByZXF1aXJlZCBrZXlzIGFyZSB1c2FibGUu
IEZvcgorICAgICAgICBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQywgaXQgaGFz
IGFuIGV4aXN0aW5nIGtleVN0YXR1cygpLCBtZXRob2QsIGJ1dCB0aGF0CisgICAgICAgIG1ldGhv
ZCBpcyBhbHNvIG5vbi1jb25zdCwgYW5kIG1heSBiZSBleHBlbnNpdmUuIFNvIGEgS2V5U3RhdHVz
TWFwIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIGFkZGVkIHRvIGNhY2hlIHRo
ZSBrZXkgc3RhdHVzIGZvciBlYXNlIG9mIHF1ZXJ5aW5nLiBUbyBub3RpZnkgYW4gYXJiaXRyYXJ5
IG51bWJlcgorICAgICAgICBvZiBjbGllbnRzIHdoZW4gdGhlIGtleSBzdGF0dXNlcyBjaGFuZ2Us
IGFuIE9ic2VydmVyIGhhcyBiZWVuIGFkZGVkLgorCisgICAgICAgIFdoZW4gYW4gZW5jcnlwdGVk
IHNhbXBsZSBpcyBlbnF1ZXVlZCwgaWYgdGhpcyBuZXcgZGVsZWdhdGUgbWV0aG9kIGlzIGF2YWls
YWJsZSwgdGhlCisgICAgICAgIHNvdXJjZSBidWZmZXIgd2lsbCBjaGVjayBpZiBhIENETSBpbnN0
YW5jZSBpcyBhdmFpbGFibGUsIGFuZCBpZiBzbywgd2hldGhlciB0aGUgc2FtcGxlJ3MKKyAgICAg
ICAga2V5cyBhcmUgdXNhYmxlLiBJZiBhbnkgb2YgdGhlc2UgY2hlY2tzIGZhaWwsIHRoZSBzYW1w
bGUgd2lsbCBiZSBzdG9yZWQgaW4gYSBsb2NhbCBxdWV1ZQorICAgICAgICBhbmQgbmV3IGVucXVl
dWVzIHdpbGwgYmUgYmxvY2tlZC4gV2hlbiB0aGUgQ0RNJ3Mga2V5U3RhdHVzIG9ic2VydmVyIGlz
IHRyaWdnZXJlZCwgdGhlCisgICAgICAgIGxvY2FsIHF1ZXVlIHdpbGwgYmUgcHJvY2Vzc2VkLCBh
bmQgYWxsIHNhbXBsZXMgd2l0aCB1c2FibGUga2V5IElEcyB3aWxsIGJlIGVucXVldWVkLgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeDogVXNlIFNoYXJlZEJ1ZmZlciByYXRoZXIgdGhhbiBVaW50OEFy
cmF5LCBhcyB0aGUgZm9ybWVyIGlzIGxpZ2h0ZXIgd2VpZ2h0CisgICAgICAgIGFuZCBjYW4gYmUg
bW9yZSBlYXNpbHkgY29udmVydGVkIHRvIGFuZCBmcm9tIGEgTlNEYXRhLgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OmtleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXll
cktleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjppc0FueUtleVVzYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6YWRkS2V5U3RhdHVzZXNDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3Vj
Y2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29weUtleVN0YXR1c2VzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVj
dGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVQcm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxheUlEKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6a2V5U3RhdHVzZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6a2V5TmVlZGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0
S2V5SURzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6a2V5SURzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6a2V5SURzKToKKyAg
ICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDPjo6dG9T
dHJpbmcpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNv
dXJjZUJ1ZmZlcktleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW06CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQ
YXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDpdKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
U3BlY2lmaWVyRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlLZXlJRHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRDRE1JbnN0
YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0
ZW1wdFRvRGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6dHJhY2tJc0Jsb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmtleVN0YXR1c2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuRW5xdWV1ZVNhbXBsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVh
ZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6c2V0VmlkZW9MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKwogMjAy
Mi0wMi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c2V0dGluZ3MgdG8gcmVzdHJpY3QgbWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4g
Q2FwdGl2ZSBQb3J0YWwgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkYjhjNjU3ZDA0ZGU4ODk5OTQ3YjU2ZGYz
M2JmYTlhYjg1OTgyZmM1Li4yMzU1MGE2NzAyZWY3MDI2MTU0MzU5N2Y2MmYxMTI3M2ViOTY2OTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJz
ZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjEwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQg
dGhlIG5ld2x5IHJlcXVyaWVkIHZpcnR1YWwgbWV0aG9kIGNoYW5nZXMgdG8gTWVkaWFTYW1wbGUg
c3ViY2xhc3NlcywgYW5kIHVzZQorICAgICAgICBTaGFyZWRCdWZmZXIgcmF0aGVyIHRoYW4gVWlu
dDhBcnJheS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlh
UGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6
OnBhcnNlQnl0ZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpk
aWRQcm92aWRlTWVkaWFEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorCiAyMDIyLTAy
LTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDRkY2E1YTI2MDdlMmE3MGQ5
Njg4OWFlYTBhZmRlYWM3OTYwMmIyNjMuLmVlNDg2N2I0MDhjNWJjZGI5OTRjYWQ5ZDRlMzgwYjhi
ODBkNjU3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0zODgsNiArMzg4LDEzIEBACiAjZGVm
aW5lIEhBVkVfQVZDT05URU5US0VZU0VTU0lPTiAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDApIFwKKyAgICB8
fCAoKChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dF
RCA+PSAxNDA1MDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFlfU0lNVUxBVE9SKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0g
NzA0MDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFlfU0lNVUxBVE9SKSAmJiBfX1RWX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNTAwKQor
I2RlZmluZSBIQVZFX0FWQ09OVEVOVEtFWVNQRUNJRklFUiAxCisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZp
bmUgSEFWRV9TRUNfS0VZX1BST1hZIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
cy5pZGwKaW5kZXggZDYzNDg2YzVhOWM0ODk1M2MzNGIyYTZkZDIzY2RhOTIzZjI4NDFjNy4uNWU2
N2VkZjA2NmI2MDEzYjc4ZTRiNjlkYTY1MzA2ZTFiYWQ0ZjAzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleXMuaWRsCkBAIC0zMCw3ICszMCw3IEBACiBdIGludGVyZmFjZSBXZWJLaXRNZWRp
YUtleXMgewogICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyBrZXlTeXN0ZW0pOwogCi0gICAgW0Nh
bGxXaXRoPUN1cnJlbnRTY3JpcHRFeGVjdXRpb25Db250ZXh0XSBXZWJLaXRNZWRpYUtleVNlc3Np
b24gY3JlYXRlU2Vzc2lvbihET01TdHJpbmcgdHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7Cisg
ICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0
ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVpbnQ4QXJyYXkgaW5pdERhdGEpOwogICAgIHN0YXRp
YyBib29sZWFuIGlzVHlwZVN1cHBvcnRlZChET01TdHJpbmcga2V5U3lzdGVtLCBvcHRpb25hbCBE
T01TdHJpbmcgdHlwZSk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0
ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzI1
YzUyMGEyZWIxNmE3MzJhZGJkZmQwZGE4ZTEwOWU3Y2U0NTVjZS4uNDk2YzZhOWNiMjNhNmEyYTk1
MzkzZjhhNDZlODYyMDk0NzcwYWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0yNjQ0LDcgKzI2NDQsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJgog
ICAgIHJldHVybiBtX3dlYktpdE1lZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRL
ZXlGb3JLZXlJZChrZXlJZCkgOiBudWxscHRyOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewogICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1l
ZGlhQVBJRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNjYxLDcgKzI2NjEsMTQgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBp
bml0RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlF
dmVudCwgaW5pdERhdGEpOworICAgIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OkluaXQgaW5p
dDsKKworICAgIGlmIChhdXRvIGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEudHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSkgeworICAgICAgICBhdXRvIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpOworICAgICAgICBpbml0LmluaXREYXRhID0gVWludDhBcnJheTo6dHJ5Q3Jl
YXRlKGluaXREYXRhQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ5dGVMZW5ndGgpOworICAg
IH0KKworICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdCk7CiAgICAgc2NoZWR1bGVFdmVu
dChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggODllNmE2MjY4YmY2ZDYxYzVlMzczZjI5YTg0OTZiMWQ2NzczYmFkNC4uMDA0OTE4
NjEzZWI5MzExMDYyM2IwM2JhZmY5NzYxZDYzMGM0OGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRp
YVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFs
OwotICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAg
IHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAg
ICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlh
U2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IGIw
NjUwNGY1N2VlOTM2YjhlMTk4ODcxZjM1NzI3NjUzNTMwNGFmZDMuLjhiM2RjYTYxMmMyM2FhMjll
M2E0ZTM2NmE3ZjQ0YzFjYTVjMjAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1w
bGUuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNb2NrU2Ft
cGxlQm94OwogCiBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewotICAgIGVudW0geworICAgIGVudW0g
VHlwZSB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAg
ICBDTVNhbXBsZUJ1ZmZlclR5cGUsCkBAIC05Miw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB9Owog
ICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQ
bGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBs
YXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0ID0gMDsKIAogICAg
IHN0cnVjdCBCeXRlUmFuZ2UgewogICAgICAgICBzaXplX3QgYnl0ZU9mZnNldCB7IDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJl
YWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RmlsZVJlYWRlckNvY29hLmNwcAppbmRleCA1MDYwMzIzODAzYjFhM2IxN2Y0NzM4NjZlYTk3YjNh
ODI5MGUyMDJjLi5iNzAzY2ZlY2QzMTZjNjI3YzY5NGU2NGI4ZTY5NzYyMDY4NjdmN2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFk
ZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0
YShjb25zdCB1aQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSk7Ci0gICAgcGFyc2Vy
LT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soWyZdKFJlZjxNZWRpYVNhbXBsZT4mJiBz
YW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpIHsKKyAgICBwYXJzZXItPnNl
dERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbJl0oUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4m
JiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpIHsKICAgICAgICAgaWYg
KCFhdWRpb1RyYWNrSWQgfHwgdHJhY2tJRCAhPSAqYXVkaW9UcmFja0lkKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBzYW1wbGVzLmFwcGVuZChzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TWVk
aWFTYW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNhbXBsZSkpKTsKKyAgICAgICAgc2FtcGxlcy5hcHBl
bmQoV1RGTW92ZShzYW1wbGUpKTsKICAgICB9KTsKICAgICBwYXJzZXItPnNldENhbGxPbkNsaWVu
dFRocmVhZENhbGxiYWNrKFtdKGF1dG8mJiBmdW5jdGlvbikgewogICAgICAgICBmdW5jdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CmluZGV4IDBhYmMzMjIzOGQ2NDFhY2E0NWY3Mzk3NzU3ZTRlNWUxNTFiYTdkYjUuLjZjNjFkNzM3
MDg0MWYzODE1MDdiNzY4MmVmYzhmYmU5YTIxYjNlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0MjUsNyArMTQyNSw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gTWVkaWFQbGF5ZXI6OmNhY2hlZEtleUZvcktleUlkKGNvbnN0
IFN0cmluZyYga2V5SWQpIGNvbnN0CiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyQ2Fj
aGVkS2V5Rm9yS2V5SWQoa2V5SWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQo
VWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBjbGllbnQoKS5tZWRpYVBsYXllcktleU5l
ZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAppbmRleCA1ZjBkYWE4NjZmMmM4MjMzYWM4YzE5NGE2MTMzZDk3M2YzNDQ2
ZmU4Li44OTMxNzE1OTI1YTE0ODNhZmFkMGNjY2ExNjNhZTE1OWY5NDczYjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTg2LDYgKzg2
LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFz
cyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjsKIGNs
YXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCkBAIC0yMDAsNyArMjAxLDcgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICNlbmRpZgog
CkBAIC01NTgsNyArNTU5LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJZChjb25z
dCBTdHJpbmcmIGtleUlkKSBjb25zdDsKLSAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBp
bml0RGF0YSk7CisgICAgdm9pZCBrZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBhM2JjOWY1ZmNkZjhmNzA1ZGY3ZmI5YjY5YThiNTA5
OTI0NTBjODFjLi5mNTVmNDMzNDRjMTI4YmY1MWI1Mzk5OGE1ZGI1ZDEyZDQyYzBjZGRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAKQEAgLTE5MjEsMTUgKzE5MjEsMTUgQEAgYm9vbCBBVkZXcmFwcGVyOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdFIKICAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5
dGVzOiBrZXlVUkldCiAgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3Ro
KCkgKiBzaXplb2YoVUNoYXIpOwogICAgICAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIGF1dG8gaW5pdERhdGFW
aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwg
aW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBhdXRvIGluaXREYXRh
VmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAs
IGJ5dGVMZW5ndGgpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5
VVJJU2l6ZSwgdHJ1ZSk7CiAKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5
OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwog
ICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MTZfdCo+KFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSks
IGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKLSAgICAgICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCA9IGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCk7Ci0gICAg
ICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1
ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVl
ZGVkKGluaXREYXRhLnB0cigpKTsKKyAgICAgICAgYXV0byBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiB7IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihpbml0RGF0
YUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCB9KTsKKyAgICAgICAgbV9vd25lci0+cGxheWVy
KCktPmtleU5lZWRlZChpbml0RGF0YSk7CiAgICAgICAgIHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJ
LCBhdlJlcXVlc3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMuaAppbmRleCA1NmI1OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyLi5k
NTlmZTQ4MDRkNThkZmU3OGNiNWJlYTcwNzRiMmU2ODcwNWMxZDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLmgKQEAgLTMwLDcgKzMwLDkgQEAKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2lu
Y2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgor
I2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogT0JKQ19DTEFTUyBBVkNvbnRlbnRLZXlSZXBv
cnRHcm91cDsKIE9CSkNfQ0xBU1MgQVZDb250ZW50S2V5UmVxdWVzdDsKQEAgLTExNyw2ICsxMTks
MTMgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAg
ICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9y
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CiAKKyAgICBib29sIGlzQW55S2V5
VXNhYmxlKGNvbnN0IEtleXMmKSBjb25zdDsKKworICAgIHVzaW5nIEtleVN0YXR1c2VzQ2hhbmdl
ZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFkZEtleVN0YXR1c2VzQ2hh
bmdlZE9ic2VydmVyKGNvbnN0IEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB2
b2lkIHNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVVbmV4
cGVjdGVkUmVxdWVzdHMoVmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7
CiAKQEAgLTEzNCw2ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VSTD4gbV9z
dG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CiAgICAgSGFzaFNldDxSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4+IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzOworICAgIFdlYWtIYXNo
U2V0PEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyPiBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZl
cnM7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dn
ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpAQCAtMTg2
LDExICsxOTYsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNSZXF1ZXN0KEFWQ29udGVudEtl
eVJlcXVlc3QqKSBjb25zdDsKIAorICAgIGNvbnN0IEtleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVz
ZXMoKSBjb25zdCB7IHJldHVybiBtX2tleVN0YXR1c2VzOyB9CisgICAgS2V5U3RhdHVzVmVjdG9y
IGNvcHlLZXlTdGF0dXNlcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlU2Vz
c2lvbk9yR3JvdXAoKTsKICAgICBib29sIGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5
cGUpIGNvbnN0OwogCi0gICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0aW9u
YWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIHVw
ZGF0ZUtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpu
dWxsb3B0KTsKICAgICB2b2lkIG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVz
dCogbGFzdEtleVJlcXVlc3QoKSBjb25zdDsKIApAQCAtMjE2LDYgKzIyOSw3IEBAIHByaXZhdGU6
CiAKICAgICBjbGFzcyBVcGRhdGVSZXNwb25zZUNvbGxlY3RvcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I+IG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I7Cisg
ICAgS2V5U3RhdHVzVmVjdG9yIG1fa2V5U3RhdHVzZXM7CiAKICAgICBWZWN0b3I8UmVxdWVzdD4g
bV9wZW5kaW5nUmVxdWVzdHM7CiAgICAgVmVjdG9yPFJlcXVlc3Q+IG1fcmVxdWVzdHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGNmZTA0OGE5MzhjMDVkZjc0NWM3MTYzNTZhZDFiM2I5
MGE1OWViNzguLmZkNjE1MmUxODY3ZDRlNmE2NzJiZWYxNzA3MGNhNzYyOTEyNmY0YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC02MTcsNiArNjE3LDM3IEBAIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMmIGtleXMpIGNv
bnN0Cit7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uSW50ZXJmYWNlIDogbV9zZXNzaW9ucykgewor
ICAgICAgICBpZiAoIXNlc3Npb25JbnRlcmZhY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBmb3IgKGF1dG8mIGtleVN0YXR1c1BhaXIgOiBzZXNzaW9uSW50ZXJmYWNlLT5rZXlT
dGF0dXNlcygpKSB7CisgICAgICAgICAgICBpZiAoa2V5U3RhdHVzUGFpci5zZWNvbmQgIT0gQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OlVzYWJsZSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgaWYgKGtleXMuZmluZElmKFsmXSAoYXV0byYga2V5KSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGtleS5nZXQoKSA9PSBrZXlTdGF0dXNQYWlyLmZpcnN0Lmdl
dCgpOworICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRP
YnNlcnZlcihjb25zdCBLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7Cisg
ICAgbV9rZXlTdGF0dXNDaGFuZ2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0No
YW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJikK
K3sKKyAgICBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZlcnMuZm9yRWFjaChbXSAoYXV0byYgb2Jz
ZXJ2ZXIpIHsKKyAgICAgICAgb2JzZXJ2ZXIoKTsKKyAgICB9KTsKK30KKwogQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
PiYmIGluc3RhbmNlKQogICAgIDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKICAgICAs
IG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCkBAIC0xMzA2LDEzICsxMzM3LDE1IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Q
cm92aWRlUmVxdWVzdChBVkNvbnRlCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpy
ZXF1ZXN0KQogeworICAgIHVwZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV91cGRhdGVS
ZXNwb25zZUNvbGxlY3RvcikgewogICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yLT5h
ZGRTdWNjZXNzZnVsUmVzcG9uc2UocmVxdWVzdCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAobV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spIHsKLSAgICAgICAgbV91
cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChrZXlTdGF0dXNl
cygpKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgICAgIG1f
dXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9uYWwoY29weUtleVN0
YXR1c2VzKCkpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAg
ICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogCkBAIC0xNDA1LDcg
KzE0MzgsNyBAQCBzdGF0aWMgYXV0byByZXF1ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZDb250ZW50
S2V5UmVxdWVzdFN0YXR1cyBzdGF0dXMpCiAgICAgfQogfQogCi1DRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRpc3BsYXlJ
RCkgY29uc3QKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVLZXlTdGF0dXNlcyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNw
bGF5SUQpCiB7CiAgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOwogCkBAIC0xNDI3LDcg
KzE0NjAsMTkgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjoKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJldHVybiBrZXlTdGF0dXNlczsKKyAgICBtX2tleVN0YXR1c2VzLnN3YXAoa2V5U3RhdHVz
ZXMpOworCisgICAgbV9pbnN0YW5jZS0+c2Vzc2lvbktleVN0YXR1c2VzQ2hhbmdlZCgqdGhpcyk7
Cit9CisKK2F1dG8gQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpj
b3B5S2V5U3RhdHVzZXMoKSBjb25zdCAtPiBLZXlTdGF0dXNWZWN0b3IKK3sKKyAgICBLZXlTdGF0
dXNWZWN0b3IgY29waWVkS2V5U3RhdHVzZXM7CisgICAgY29waWVkS2V5U3RhdHVzZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX2tleVN0YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBz
dGF0dXMgOiBtX2tleVN0YXR1c2VzKQorICAgICAgICBjb3BpZWRLZXlTdGF0dXNlcy51bmNoZWNr
ZWRBcHBlbmQoeyBzdGF0dXMuZmlyc3QuY29weVJlZigpLCBzdGF0dXMuc2Vjb25kIH0pOworICAg
IHJldHVybiBjb3BpZWRLZXlTdGF0dXNlczsKKwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVu
dEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCBvYnNjdXJlZCkKQEAgLTE0MzgsOCArMTQ4
MywxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgb2JzY3VyZWQpOwogICAgIG1fb3V0cHV0T2JzY3VyZWQgPSBvYnNj
dXJlZDsKIAorICAgIHVwZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcygpKTsKKyAgICAg
ICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKGNvcHlLZXlTdGF0dXNlcygpKTsKIH0KIAog
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVybmFs
UHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtl
eVJlcXVlc3QqKQpAQCAtMTQ5Miw5ICsxNTM5LDEzIEBAIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3Rh
dHVzPiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnByb3RlY3Rp
CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRh
dGVQcm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCkKIHsKLSAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgIGlm
IChtX3JlcXVlc3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT51
cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcyhkaXNwbGF5SUQpKTsKKworICAgIHVwZGF0ZUtl
eVN0YXR1c2VzKGRpc3BsYXlJRCk7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT51cGRhdGVLZXlTdGF0dXNlcyhjb3B5S2V5U3RhdHVzZXMoKSk7CiB9CiAKIGJvb2wgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uT3JH
cm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24uaAppbmRleCAwMjEwMjY5NTg2YWYxZDVhMDQyYzYzZGM0NjRkOTlhMjBj
M2M3NWIwLi42YzA1ZTJmOGIxMDNiODUxNzQ3Y2M5YTM1NDNjZDUxYzlhZThjMzgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxXZWJDRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2NvbnRlbnRLZXlTZXNzaW9uRGVs
ZWdhdGU7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1fa2V5UmVxdWVzdDsK
ICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pZGVudGlmaWVyOwotICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBtX2luaXREYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1faW5pdERhdGE7CiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gbV9leHBpcmVkU2Vzc2lvbjsKICAgICBWZWN0b3I8aW50PiBt
X3Byb3RvY29sVmVyc2lvbnM7CiAgICAgaW50IG1fY2RtVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5k
ZXggNjUyYTA4NTA4NzdlYjc4MGYzNWU2ZWY1MTRlMmFjMzJjZDc3OTNhYy4uN2Q1OTNhNjBkNjYz
MmI5OTYyZmY0OTU2MWEwZTcxYmNkY2U2MDk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9y
dCAiTWVkaWFQbGF5ZXIuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFz
LmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgpAQCAtMTQ2LDcgKzE0Nyw3IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluCiAgICAgaWYgKG1fY2RtVmVyc2lvbiA9PSAyKQogICAg
ICAgICBtX2lkZW50aWZpZXIgPSBpbml0RGF0YTsKICAgICBlbHNlCi0gICAgICAgIG1faW5pdERh
dGEgPSBpbml0RGF0YTsKKyAgICAgICAgbV9pbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5sZW5ndGgoKSk7CiAKICAgICBBU1NFUlQoIW1f
Y2VydGlmaWNhdGUpOwogICAgIFN0cmluZyBjZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlmaWNhdGUi
X3MpOwpAQCAtMjY4LDEyICsyNjksMTIgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgIH0K
IAogICAgIGlmICghbV9rZXlSZXF1ZXN0KSB7Ci0gICAgICAgIE5TRGF0YSogbnNJbml0RGF0YSA9
IG1faW5pdERhdGEgPyBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bV9pbml0RGF0YS0+ZGF0YSgpIGxl
bmd0aDptX2luaXREYXRhLT5sZW5ndGgoKV0gOiBuaWw7CisgICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IG5zSW5pdERhdGEgPSBtX2luaXREYXRhID8gbV9pbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkg
OiBuaWw7CiAgICAgICAgIE5TRGF0YSogbnNJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyID8gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOm1faWRlbnRpZmllci0+ZGF0YSgpIGxlbmd0aDptX2lkZW50aWZp
ZXItPmxlbmd0aCgpXSA6IG5pbDsKICAgICAgICAgaWYgKFtjb250ZW50S2V5U2Vzc2lvbigpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElk
ZW50aWZpZXI6aW5pdGlhbGl6YXRpb25EYXRhOm9wdGlvbnM6KV0pCi0gICAgICAgICAgICBbY29u
dGVudEtleVNlc3Npb24oKSBwcm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjpu
c0lkZW50aWZpZXIgaW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxdOwor
ICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0
V2l0aElkZW50aWZpZXI6bnNJZGVudGlmaWVyIGluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRh
LmdldCgpIG9wdGlvbnM6bmlsXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW2NvbnRlbnRL
ZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5z
SW5pdERhdGEgb3B0aW9uczpuaWxdOworICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkg
cHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEuZ2V0
KCkgb3B0aW9uczpuaWxdOwogICAgIH0KIAogICAgIGlmIChzaG91bGRHZW5lcmF0ZUtleVJlcXVl
c3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGE2YzA1OWRjMTA2YTYyMjViMjExMmNi
OGVlNTIwM2E3YjU4ZmQxMjIuLjAyNzg3OWMwZGI0YWE3NjAxYzZkYWRjMDRkYjM5NDQ3MTM2ZmU5
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjExNSw4ICsyMTE1LDggQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5
OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwog
ICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlD
aGFyKj4oU3RyaW5nVmlldyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwg
a2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBh
dXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIp
LCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5w
dHIoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0
b3I8dWludDhfdD4geyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oaW5pdERhdGFCdWZmZXItPmRhdGEo
KSksIGJ5dGVMZW5ndGggfSk7CisgICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEp
OwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIGlmICghcGxheWVyKCktPnNo
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMjE0NCw5ICsyMTQ0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICBpZiAoc2No
ZW1lID09ICJjbGVhcmtleSIpIHsKICAgICAgICAgU3RyaW5nIGtleUlEID0gW1tbYXZSZXF1ZXN0
IHJlcXVlc3RdIFVSTF0gcmVzb3VyY2VTcGVjaWZpZXJdOwogICAgICAgICBhdXRvIGVuY29kZWRL
ZXlJZCA9IFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKGtleUlELCBQQUw6OlVuZW5jb2RhYmxl
SGFuZGxpbmc6OlVSTEVuY29kZWRFbnRpdGllcyk7Ci0KLSAgICAgICAgYXV0byBpbml0RGF0YSA9
IFVpbnQ4QXJyYXk6OmNyZWF0ZShlbmNvZGVkS2V5SWQuc2l6ZSgpKTsKLSAgICAgICAgaW5pdERh
dGEtPnNldFJhbmdlKGVuY29kZWRLZXlJZC5kYXRhKCksIGVuY29kZWRLZXlJZC5zaXplKCksIDAp
OworICAgICAgICBhdXRvIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShl
bmNvZGVkS2V5SWQpKTsKIAogICAgICAgICBhdXRvIGtleURhdGEgPSBwbGF5ZXIoKS0+Y2FjaGVk
S2V5Rm9yS2V5SWQoa2V5SUQpOwogICAgICAgICBpZiAoa2V5RGF0YSkgewpAQCAtMjE1NCw3ICsy
MTUyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRX
YWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRy
KCkpOworICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhKTsKIAogICAgICAgICBp
ZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGJjYWQxMjU0MzYz
YTE4N2M2OGEzMzY4ZmE3YTdhMTQ4NTE1YjgyZTUuLjI5ODNjZWNhZGVhMjJlM2YyNTViMDc5Yzk2
YTJmNzg5MWNkM2EzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0xMzcsNyArMTM3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCkgb3ZlcnJpZGUg
eyBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdl
ZChmYWxzZSk7IH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQotICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqKTsKKyAg
ICB2b2lkIGtleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBlOTVm
OGMzY2FjZjBhZGUxODExZjExYmFlNjgzYmU0YjVmYjE1NTMzLi4xYzMzMjcyNTQ2YjRlZjhiNzk3
ODhkOTA1MjdhNTBlNTRkNmQ0OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0x
MTQzLDcgKzExNDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaQogI2VuZGlmIC8vIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmtleU5lZWRlZChjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIG1fcGxheWVyLT5rZXlOZWVkZWQoaW5pdERh
dGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRl
eCA1YjRmN2YwMGRiMzNhNWJjZGY2NTZjNjAyMmYxNDgzNGY0MWM1OTA2Li5hYzI3YTIwYjdkMGFk
NWIwYWNjYTgzYzAxMjZlMjY3MzBjY2NmZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1l
QVZGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CiAKIHVzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZl
cio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJs
aWMgTWVkaWFTYW1wbGUgewpAQCAtNjAsNiArNjIsNyBAQCBwdWJsaWM6CiAKICAgICBTYW1wbGVG
bGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZv
cm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6OkNN
U2FtcGxlQnVmZmVyVHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFu
Z2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25z
dCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTgwLDYgKzgzLDEzIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0Qnl0ZVJhbmdlT2Zmc2V0KHNpemVfdCk7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgdXNpbmcgS2V5SURzID0g
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdm9pZCBzZXRLZXlJRHMo
S2V5SURzJiYga2V5SURzKSB7IG1fa2V5SURzID0gV1RGTW92ZShrZXlJRHMpOyB9CisgICAgY29u
c3QgS2V5SURzJiBrZXlJRHMoKSBjb25zdCB7IHJldHVybiBtX2tleUlEczsgfQorICAgIEtleUlE
cyYga2V5SURzKCkgeyByZXR1cm4gbV9rZXlJRHM7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2Ft
cGxlQnVmZmVyUmVmKTsKQEAgLTk0LDEwICsxMDQsMjcgQEAgcHJvdGVjdGVkOgogICAgIEF0b21T
dHJpbmcgbV9pZDsKICAgICBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb24geyBWaWRlb1JvdGF0aW9u
OjpOb25lIH07CiAgICAgYm9vbCBtX21pcnJvcmVkIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4gc3RydWN0IExvZ0FyZ3VtZW50OwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1
bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQyYgc2FtcGxlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHNhbXBsZS50b0pTT05TdHJpbmcoKTsKKyAgICB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpN
ZWRpYVNhbXBsZUFWRk9iakMpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1T
YW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5
cGU7IH0KK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgc2Ft
cGxlKSB7IHJldHVybiBzYW1wbGUucGxhdGZvcm1TYW1wbGVUeXBlKCkgPT0gV2ViQ29yZTo6UGxh
dGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oCmluZGV4IDcyMjQ5N2UwYmM0MjBjZDRlNjJiMDYyNDkyM2JmZDhmOWQ1NDA2MjIu
Ljg5NTFiMjQ3ZGQwMDE1MGVkMTZjZTA0MWFjY2VjYmJmY2JlZDVmOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTEyNSw3
ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5n
ZUFjdGl2ZVN0YXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiwgYm9vbCBhY3RpdmUpOwog
ICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqKTsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyosIFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5l
ZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwog
I2VuZGlmCiAgICAgdm9pZCByZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbQppbmRleCA5MjdkMTMwMzExZThlZWM4YjAyMTU2YWM2MzI4MGE5YmY5ZDA4MDhjLi4x
MjAxYjcyNmJkMDQ3YzVmMTEwZjcxNGFiMTAyMzE5YTYxNjIyY2JmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTE5NSw5
ICsxOTUsMTAgQEAgdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUoU291cmNlQnUKIH0KIAogI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3Vy
Y2VCdWZmZXJLZXlOZWVkZWQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIGJ1ZmZlciwgVWlu
dDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJj
ZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogYnVmZmVyLCBjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIG1fc291cmNlQnVmZmVyc05lZWRpbmdT
ZXNzaW9ucy5hcHBlbmQoYnVmZmVyKTsKKwogICAgIGlmIChtX3BsYXllcikKICAgICAgICAgbV9w
bGF5ZXItPmtleU5lZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKaW5kZXggYzIyZTcyNWY4NTQ2ZjI3OGZm
NjU3YTVmNGM1NzJiOTI5NTE1ZWQ0OC4uNzgxMTIwNGNjZmQxZDgxYjE1MDkyYjU3NWE4Mjk4MGQ2
MmMyZjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRQcm92
aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJl
ZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKICAgICB2b2lkIHdp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHVp
bnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEqLCB1aW50NjRfdCB0cmFja0lEKTsKKyAg
ICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoTlNE
YXRhKiwgdWludDY0X3QgdHJhY2tJRCk7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQppbmRleCBhYmQ4MWU1ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUy
Li5hYTE1ODQwNGIxMGU0NDRhZjZlNWVkZGM4ZGFkNmJhOTZlZDVjYjIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTU3
LDYgKzU3LDEyIEBACiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKK0BpbnRl
cmZhY2UgQVZDb250ZW50S2V5U3BlY2lmaWVyIChXZWJDb3JlUHJpdmF0ZSkKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHkpIE5TRGF0YSAqaW5pdGlhbGl6YXRpb25EYXRhOworQGVuZAorI2VuZGlmCisKIEBp
bnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVh
bURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4gewogICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMqIF9wYXJlbnQ7CiAgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwpA
QCAtMTMzLDYgKzEzOSwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0g
X3BhcnNlcik7CiAgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7CiB9CisKKyNpZiBIQVZF
KEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJl
YW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVNwZWNp
ZmllcjooQVZDb250ZW50S2V5U3BlY2lmaWVyICopa2V5U3BlY2lmaWVyIGZvclRyYWNrSUQ6KENN
UGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAoreworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0
YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBpZiAoW2tleVNwZWNp
ZmllciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluaXRpYWxpemF0aW9uRGF0YSldKQor
ICAgICAgICBfcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JU
cmFja0lEKGtleVNwZWNpZmllci5pbml0aWFsaXphdGlvbkRhdGEsIHRyYWNrSUQpOworfQorI2Vu
ZGlmCisKIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzM0LDEwICszNTAsMTQgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
OjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
KE5TRGF0YSogbnNJbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkKIHsKLSAgICBhdXRvIGluaXRE
YXRhID0gVWludDhBcnJheTo6Y3JlYXRlKG5zSW5pdERhdGEubGVuZ3RoKTsKLSAgICBbbnNJbml0
RGF0YSBnZXRCeXRlczppbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0YS0+bGVuZ3RoKCld
OworICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zSW5pdERhdGEpLCB0cmFja0lE
KTsKK30KIAotICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRENhbGxiYWNrKFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK3ZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3Bl
Y2lmaWVyRm9yVHJhY2tJRChOU0RhdGEqIG5zSW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpCit7
CisgICAgbV9jYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgc3Ryb25nVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIG5zSW5pdERhdGEgPSByZXRhaW5QdHIobnNJbml0RGF0YSksIHRyYWNrSURd
IHsKKyAgICAgICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJh
Y2tJRENhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zSW5pdERhdGEuZ2V0KCkpLCB0cmFj
a0lEKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggNzU0YjFlMmVlYzAyZGYzMzk1ZTVjZGI1
YzA3ZjhlODhhOTM1Y2QwOC4uMzc2YTZmYzE0MzgxMWVlYjg1NjdiY2IwOGU3ZGRkM2IxZmYxM2Nm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTk1
LDcgKzk2LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRp
YVNvdXJjZSA9IG51bGxwdHI7IH0KIAogICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCk7Ci0gICAg
dm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKFJlZjxVaW50OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBo
b3JlPik7CisgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEKFJlZjxTaGFyZWRCdWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIEJv
eDxCaW5hcnlTZW1hcGhvcmU+KTsKKworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SWRlbnRpZmllckZvclRyYWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJh
Y2tJRCk7CiAKICAgICBib29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKIApAQCAtMTMyLDcg
KzEzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkKCk7CiAgICAgCiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgVWludDhBcnJheSogaW5pdERh
dGEoKSB7IHJldHVybiBtX2luaXREYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiBpbml0
RGF0YSgpIHsgcmV0dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KICNlbmRpZgogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECkBAIC0xNTAsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBJ
bml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvblNlZ21lbnQ7CiAgICAgdm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0
aWFsaXphdGlvblNlZ21lbnQmJik7CiAgICAgdm9pZCBkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmcoaW50MzJfdCk7Ci0gICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChS
ZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNh
bXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
KTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBhcHBl
bmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CkBAIC0xNzQsNiArMTc3LDcgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOwogICAgIE1l
ZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBlbnF1ZXVlU2FtcGxl
KFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQg
ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lk
IGFwcGVuZENvbXBsZXRlZCgpOwogICAgIHZvaWQgZGVzdHJveVN0cmVhbURhdGFQYXJzZXIoKTsK
QEAgLTE4Niw2ICsxOTAsMTIgQEAgcHJpdmF0ZToKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRf
R1VBUkRTX0VORAogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBw
bGF5ZXIoKSBjb25zdDsKKyAgICBib29sIGNhbkVucXVldWVTYW1wbGUodWludDY0X3QgdHJhY2tJ
RCwgY29uc3QgTWVkaWFTYW1wbGVBVkZPYmpDJik7CisgICAgYm9vbCB0cmFja0lzQmxvY2tlZCh1
aW50NjRfdCB0cmFjaykgY29uc3Q7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBI
QVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgdm9pZCBrZXlTdGF0dXNlc0NoYW5nZWQoKTsK
KyNlbmRpZgogCiAgICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4+IG1fdmlkZW9U
cmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4+IG1fYXVkaW9UcmFj
a3M7CkBAIC0xOTcsNyArMjA3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJvY2Vzc2luZ0lu
aXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdBcHBl
bmRDb21wbGV0ZWRDYWxsYmFjayB7IGZhbHNlIH07CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQo
KT4+IG1fcGVuZGluZ1RyYWNrQ2hhbmdlQ2FsbGJhY2tzOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8
dWludDY0X3QsIFJlZjxNZWRpYVNhbXBsZT4+PiBtX21lZGlhU2FtcGxlczsKKyAgICBWZWN0b3I8
c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4+IG1fbWVkaWFTYW1w
bGVzOworICAgIERlcXVlPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4+PiBtX2Jsb2NrZWRTYW1wbGVzOwogCiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VB
UkRTX0JFR0lOCkBAIC0yMTUsMTMgKzIyNiwyNyBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQyogbV9tZWRpYVNvdXJjZTsKICAgICBib29sIG1faXNBY3RpdmUgeyBm
YWxzZSB9OworCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgUmVmUHRy
PFVpbnQ4QXJyYXk+IG1faW5pdERhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9pbml0
RGF0YTsKICAgICBXZWFrUHRyPENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM+IG1fc2Vzc2lv
biB7IG51bGxwdHIgfTsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhB
VkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKKyAgICBzdHJ1Y3QgVHJhY2tJbml0RGF0YSB7CisgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhOworICAgICAgICBLZXlJRHMga2V5SURz
OworICAgIH07CisgICAgdXNpbmcgVHJhY2tJbml0RGF0YU1hcCA9IEhhc2hNYXA8dWludDY0X3Qs
IFRyYWNrSW5pdERhdGE+OworICAgIFRyYWNrSW5pdERhdGFNYXAgbV9wZW5kaW5nUHJvdGVjdGVk
VHJhY2tJbml0RGF0YU1hcDsKKyAgICBUcmFja0luaXREYXRhTWFwIG1fcHJvdGVjdGVkVHJhY2tJ
bml0RGF0YU1hcDsKKworICAgIHVzaW5nIFRyYWNrS2V5SURzTWFwID0gSGFzaE1hcDx1aW50NjRf
dCwgS2V5SURzPjsKKyAgICBUcmFja0tleUlEc01hcCBtX2N1cnJlbnRUcmFja0lEczsKKwogICAg
IFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5j
ZTsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAg
ICBVbmlxdWVSZWY8T2JzZXJ2ZXI8dm9pZCgpPj4gbV9rZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZl
cjsKKyAgICBLZXlJRHMgbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRTaXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGU2MWEzYTdmY2M5NjM3OThmNjg5OGMw
MTI3YmQ3NGJiMzMwYmY3YTEuLmYzZDQyNDViZTE0MDA4ZjA1YzZiOTlkOTY5ZmY0Y2ZkMGVjNzc0
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCkBAIC03Niw2ICs3NiwxMiBAQCAtICh2b2lkKWV4cGVjdE1pbmltdW1VcGNv
bWluZ1NhbXBsZUJ1ZmZlclByZXNlbnRhdGlvblRpbWU6IChDTVRpbWUpbWluaW11bVVwY29taQog
LSAodm9pZClyZXNldFVwY29taW5nU2FtcGxlQnVmZmVyUHJlc2VudGF0aW9uVGltZUV4cGVjdGF0
aW9uczsKIEBlbmQKIAorQGludGVyZmFjZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAoV2Vi
Q29yZVNhbXBsZUJ1ZmZlcktleVNlc3Npb24pIDxBVkNvbnRlbnRLZXlSZWNpcGllbnQ+CitAZW5k
CisKK0BpbnRlcmZhY2UgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyIChXZWJDb3JlU2FtcGxl
QnVmZmVyS2V5U2Vzc2lvbikgPEFWQ29udGVudEtleVJlY2lwaWVudD4KK0BlbmQKKwogI3ByYWdt
YSBtYXJrIC0KICNwcmFnbWEgbWFyayBBVlN0cmVhbVNlc3Npb24KIApAQCAtMjc1LDYgKzI4MSwy
NCBAQCBzdGF0aWMgdWludDY0X3QgbmV4dE1hcElEKCkKICAgICByZXR1cm4gKyttYXBJRDsKIH0K
IAorc3RhdGljIGJvb2wgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKQor
eworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzID0gZmFsc2U7CisgICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBbJl0gewor
ICAgICAgICBzdXBwb3J0cyA9IFtQQUw6OmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNs
YXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRlbnRLZXlSZWNpcGllbnQp
XQorICAgICAgICAgICAgJiYgW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFz
cygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woQVZDb250ZW50S2V5UmVjaXBpZW50KV07
CisgICAgfSk7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitzdGF0aWMgVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHMpCit7CisgICAgcmV0dXJuIGtleUlEcy5tYXAoW10g
KGF1dG8mIGtleUlEKSB7CisgICAgICAgIHJldHVybiBrZXlJRC5jb3B5UmVmKCk7CisgICAgfSk7
Cit9CisKIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRp
b25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqIGxpc3RlbmVyLCBDRlN0cmluZ1JlZiBub3RpZmljYXRp
b25OYW1lLCBjb25zdCB2b2lkKiwgQ0ZUeXBlUmVmKQogewogICAgIGlmICghQ0ZFcXVhbChQQUw6
OmtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBub3Rp
ZmljYXRpb25OYW1lKSkKQEAgLTMwNyw2ICszMzEsOSBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
QwogICAgICwgbV9lcnJvckxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlckVycm9y
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50Oip0aGlzXSkpCiAgICAgLCBtX2FwcGVuZFF1
ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBkYXRhIHBh
cnNlciBxdWV1ZSIpKQogICAgICwgbV9tZWRpYVNvdXJjZShwYXJlbnQpCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICwgbV9rZXlT
dGF0dXNlc0NoYW5nZWRPYnNlcnZlcihtYWtlVW5pcXVlUmVmPE9ic2VydmVyPHZvaWQoKT4+KFt0
aGlzXSB7IGtleVN0YXR1c2VzQ2hhbmdlZCgpOyB9KSkKKyNlbmRpZgogICAgICwgbV9tYXBJRChu
ZXh0TWFwSUQoKSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBh
cmVudC0+bG9nZ2VyKCkpCkBAIC0zNjQsNiArMzkxLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdt
ZW4KIAogICAgIGNsZWFyVHJhY2tzKCk7CiAKKyAgICBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFN
YXAuc3dhcChtX3BlbmRpbmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwKTsKKyAgICBtX3BlbmRp
bmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwLmNsZWFyKCk7CisKICAgICBmb3IgKGF1dG8gdmlk
ZW9UcmFja0luZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CiAgICAgICAgIHZpZGVvVHJhY2tJ
bmZvLnRyYWNrLT5zZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgdGhpc10gKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3Rl
ZCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTQ1OCwxMCArNDg4LDE2IEBAIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFy
c2luZyhpbnQzMl90IGNvZGUpCiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JU
cmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwg
Y29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYm
IG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkK
IHsKICAgICBVTlVTRURfUEFSQU0obWVkaWFUeXBlKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICBhdXRvIGZpbmRSZXN1bHQg
PSBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuZmluZCh0cmFja0lkKTsKKyAgICBpZiAoZmlu
ZFJlc3VsdCAhPSBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuZW5kKCkpCisgICAgICAgIG1l
ZGlhU2FtcGxlLT5zZXRLZXlJRHMoY29weUtleUlEcyhmaW5kUmVzdWx0LT52YWx1ZS5rZXlJRHMp
KTsKKyNlbmRpZgorCiAgICAgaWYgKG1fcHJvY2Vzc2luZ0luaXRpYWxpemF0aW9uU2VnbWVudCkg
ewogICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgbWVkaWFTYW1wbGUuZ2V0KCkpOwog
ICAgICAgICBtX21lZGlhU2FtcGxlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tJZCwgV1RG
TW92ZShtZWRpYVNhbXBsZSkpKTsKQEAgLTUwOCw3ICs1NDQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRgogI2VuZGlmCiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVm
PFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1h
cGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxC
aW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUpCiB7CiAgICAgYXV0byBwbGF5ZXIg
PSB0aGlzLT5wbGF5ZXIoKTsKICAgICBpZiAoIXBsYXllcikKQEAgLTUxOSwxMSArNTU1LDE1IEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAKICAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFj
a0lEOwogICAgIG1faW5pdERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKTsKLSAgICBtX21lZGlhU291
cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgbV9pbml0RGF0YS5nZXQoKSk7CisgICAg
bV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVlZGVkKHRoaXMsICptX2luaXREYXRhKTsK
KwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBwbGF5ZXItPmNkbVNlc3Npb24oKSkgewotICAgICAg
ICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCisgICAgICAgIGlm
IChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKSB7CisgICAgICAgICAg
ICAvLyBuby1vcC4KKyAgICAgICAgfSBlbHNlIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVh
bURhdGFQYXJzZXIoKSkKICAgICAgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwot
ICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgaWYgKGhhc1Nl
c3Npb25TZW1hcGhvcmUpCisgICAgICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNTMzLDE0ICs1NzMsMTcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBoYXNT
ZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhB
VkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9pbml0RGF0YS0+ZGF0YSgpLCBtX2luaXREYXRhLT5ieXRlTGVuZ3Ro
KCkpOwotICAgIGF1dG8ga2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRy
YWN0S2V5SURzU2luZihpbml0RGF0YUJ1ZmZlcik7CisgICAgYXV0byBrZXlJRHMgPSBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKCptX2luaXREYXRhKTsKICAg
ICBpZiAoIWtleUlEcykKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9wZW5kaW5nUHJvdGVjdGVk
VHJhY2tJbml0RGF0YU1hcC5zZXQodHJhY2tJRCwgVHJhY2tJbml0RGF0YSB7IG1faW5pdERhdGEu
Y29weVJlZigpLCAqa2V5SURzIH0pOworCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAg
ICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktl
eUlEcyhrZXlJRHMudmFsdWUoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRo
aXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKKyAgICAgICAgICAgIGlmIChzYW1wbGVCdWZmZXJSZW5k
ZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gbm8tb3AuCisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNl
cigpKQogICAgICAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9u
KCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgICAgICAgICAgaWYgKG1faGFz
U2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9y
ZS0+c2lnbmFsKCk7CkBAIC01NTIsNyArNTk1LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8K
ICAgICB9CiAKICAgICBtX2tleUlEcyA9IFdURk1vdmUoa2V5SURzLnZhbHVlKCkpOwotICAgIHBs
YXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoInNpbmYiLCBpbml0RGF0YUJ1ZmZl
ci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CisgICAgcGxheWVyLT5pbml0aWFsaXphdGlvbkRh
dGFFbmNvdW50ZXJlZCgic2luZiIsIG1faW5pdERhdGEtPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkp
OwogCiAgICAgbV93YWl0aW5nRm9yS2V5ID0gdHJ1ZTsKICAgICBwbGF5ZXItPndhaXRpbmdGb3JL
ZXlDaGFuZ2VkKCk7CkBAIC01ODcsNyArNjMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgd2Vha1Ro
aXMtPmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhlcnJvckNvZGUpOwogICAgIH0pOwog
Ci0gICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPE1l
ZGlhU2FtcGxlPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRp
YVR5cGUpIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRd
IChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBhYm9ydENhbGxlZCAhPSB3ZWFrVGhpcy0+bV9hYm9y
dENhbGxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYxNiw3ICs2NTksNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmUs
IGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0oUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEs
IHVpbnQ2NF90IHRyYWNrSUQpIG11dGFibGUgeworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soW3dl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNlbWFw
aG9yZSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXShSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCB1aW50NjRfdCB0cmFja0lEKSBtdXRhYmxlIHsKICAgICAgICAgLy8gQ2FsbGVkIG9u
IHRoZSBkYXRhIHBhcnNlciBxdWV1ZS4KICAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFz
U2Vzc2lvblNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgYWJvcnRD
YWxsZWQsIGluaXREYXRhID0gV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25T
ZW1hcGhvcmVdICgpIG11dGFibGUgewpAQCAtNjM2LDYgKzY3OSwxMyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAg
ICAgICB9CiAgICAgfSk7CiAKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8IGFib3J0Q2FsbGVkICE9IHdlYWtUaGlz
LT5tX2Fib3J0Q2FsbGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+
ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChX
VEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgbnVsbHB0cik7CisgICAgfSk7CisKICAgICBtX3Bh
cnNpbmdTdWNjZWVkZWQgPSB0cnVlOwogCiAgICAgbV9hcHBlbmRRdWV1ZS0+ZGlzcGF0Y2goW2Rh
dGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRl
V2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2VyLCBhYm9ydENhbGxlZCA9IG1fYWJvcnRD
YWxsZWRdKCkgbXV0YWJsZSB7CkBAIC03MzYsNiArNzg2LDExIEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMoKQogICAgICAgICBbcmVuZGVyZXIgZmx1
c2hdOwogICAgICAgICBbcmVuZGVyZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgICAg
ICBbbV9lcnJvckxpc3RlbmVyIHN0b3BPYnNlcnZpbmdSZW5kZXJlcjpyZW5kZXJlci5nZXQoKV07
CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCisgICAgICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1
cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtl
eVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50OnJlbmRlcmVyLmdldCgpXTsKKyNl
bmRpZgogICAgIH0KIAogICAgIFttX2Vycm9yTGlzdGVuZXIgaW52YWxpZGF0ZV07CkBAIC04NDMs
NiArODk4LDExIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hh
bmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFW
RShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1w
bGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2Rt
SW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpyZW5k
ZXJlci5nZXQoKV07CisjZW5kaWYKKwogICAgICAgICAgICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0
aGlzIH07CiAgICAgICAgICAgICBbcmVuZGVyZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9u
UXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOl57CiAgICAgICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQpAQCAtOTA5LDcgKzk2OSwyNCBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpzZXRDRE1JbnN0YW5jZShDRE1JbnN0YW5jZSogaW5zdGFuY2UpCiAK
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCisgICAgaWYgKHNhbXBsZUJ1ZmZlclJl
bmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkgJiYgbV9jZG1JbnN0YW5jZSkgeworICAgICAgICBp
ZiAobV9kaXNwbGF5TGF5ZXIpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtl
eVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgp
XTsKKworICAgICAgICBmb3IgKGF1dG8mIGF1ZGlvUmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJz
LnZhbHVlcygpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9u
KCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDphdWRpb1JlbmRlcmVyLmdldCgpXTsKKyAgICB9
CisKICAgICBtX2NkbUluc3RhbmNlID0gZnBzSW5zdGFuY2U7CisKKyAgICBpZiAoc2FtcGxlQnVm
ZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSAmJiBtX2NkbUluc3RhbmNlKSB7CisgICAg
ICAgIGlmIChtX2Rpc3BsYXlMYXllcikKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250
ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9kaXNwbGF5TGF5ZXIuZ2V0
KCldOworCisgICAgICAgIGZvciAoYXV0byYgYXVkaW9SZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJl
cnMudmFsdWVzKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Np
b24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OmF1ZGlvUmVuZGVyZXIuZ2V0KCldOworICAgIH0K
KwogICAgIGF0dGVtcHRUb0RlY3J5cHQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGluc3Rh
bmNlKTsKQEAgLTkyNiw4ICsxMDAzLDEwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmF0dGVtcHRUb0RlY3J5cHQoKQogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2Vy
KCkpCi0gICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29u
dGVudEtleVJlY2lwaWVudDpwYXJzZXJdOworICAgIGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJz
U3VwcG9ydEtleVNlc3Npb24oKSkgeworICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5z
dHJlYW1EYXRhUGFyc2VyKCkpCisgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50
S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKKyAgICB9CiAgICAg
aWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhv
cmUtPnNpZ25hbCgpOwogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpA
QCAtMTEwNSwxOSArMTE4NCw4OSBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAog
ICAgICAgICBwbGF5ZXItPnNldEhhc0F2YWlsYWJsZUF1ZGlvU2FtcGxlKHJlbmRlcmVyLCBmYWxz
ZSk7CiB9CiAKK2Jvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrSXNCbG9ja2Vk
KHVpbnQ2NF90IHRyYWNrSUQpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzYW1wbGVQYWlyIDog
bV9ibG9ja2VkU2FtcGxlcykgeworICAgICAgICBpZiAoc2FtcGxlUGFpci5maXJzdCA9PSB0cmFj
a0lEKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VT
U0lPTikKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmtleVN0YXR1c2VzQ2hhbmdl
ZCgpCit7CisgICAgd2hpbGUgKCFtX2Jsb2NrZWRTYW1wbGVzLmlzRW1wdHkoKSkgeworICAgICAg
ICBhdXRvJiBmaXJzdFBhaXIgPSBtX2Jsb2NrZWRTYW1wbGVzLmZpcnN0KCk7CisKKyAgICAgICAg
Ly8gSWYgd2Ugc3RpbGwgY2FuJ3QgZW5xdWV1ZSB0aGUgc2FtcGxlLCBiYWlsLgorICAgICAgICBp
ZiAoIWNhbkVucXVldWVTYW1wbGUoZmlyc3RQYWlyLmZpcnN0LCBmaXJzdFBhaXIuc2Vjb25kKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGZpcnN0UGFpclRha2VuID0gbV9i
bG9ja2VkU2FtcGxlcy50YWtlRmlyc3QoKTsKKyAgICAgICAgZW5xdWV1ZVNhbXBsZShXVEZNb3Zl
KGZpcnN0UGFpclRha2VuLnNlY29uZCksIGZpcnN0UGFpclRha2VuLmZpcnN0KTsKKyAgICB9Cit9
CisjZW5kaWYKKworYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuRW5xdWV1ZVNh
bXBsZSh1aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVNhbXBsZUFWRk9iakMmIHNhbXBsZSkK
K3sKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCisgICAgLy8gSWYgc2FtcGxlIGJ1ZmZlcnMgZG9uJ3Qgc3VwcG9ydCBBVkNvbnRlbnRLZXlT
ZXNzaW9uOiBlbnF1ZXVlIHNhbXBsZQorICAgIGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3Vw
cG9ydEtleVNlc3Npb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBpZiBzYW1w
bGUgaXMgdW5lbmNyeXRwZWQ6IGVucXVldWUgc2FtcGxlCisgICAgaWYgKHNhbXBsZS5rZXlJRHMo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlIGlz
IGVuY3J5cHRlZCwgYnV0IHdlIGFyZSBub3QgYXR0YWNoZWQgdG8gYSBDRE06IGRvIG5vdCBlbnF1
ZXVlIHNhbXBsZS4KKyAgICBpZiAoIW1fY2RtSW5zdGFuY2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIGlmIHNhbXBsZSBpcyBlbmNyeXB0ZWQsIGFuZCBrZXlJRHMgbWF0Y2ggdGhl
IGN1cnJlbnQgc2V0IG9mIGtleUlEczogZW5xdWV1ZSBzYW1wbGUuCisgICAgYXV0byBmaW5kUmVz
dWx0ID0gbV9jdXJyZW50VHJhY2tJRHMuZmluZCh0cmFja0lEKTsKKyAgICBpZiAoZmluZFJlc3Vs
dCAhPSBtX2N1cnJlbnRUcmFja0lEcy5lbmQoKSAmJiBmaW5kUmVzdWx0LT52YWx1ZSA9PSBzYW1w
bGUua2V5SURzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlJ3Mg
c2V0IG9mIGtleUlEcyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzZXQgb2Yga2V5SURzLCBj
b25zdWx0IHdpdGggdGhlIENETQorICAgIC8vIHRvIGRldGVybWluZSBpZiB0aGUga2V5SURzIGFy
ZSB1c2FibGU7IGlmIHNvLCB1cGRhdGUgdGhlIGN1cnJlbnQgc2V0IG9mIGtleUlEcyBhbmQgZW5x
dWV1ZSBzYW1wbGUuCisgICAgaWYgKG1fY2RtSW5zdGFuY2UtPmlzQW55S2V5VXNhYmxlKHNhbXBs
ZS5rZXlJRHMoKSkpIHsKKyAgICAgICAgbV9jdXJyZW50VHJhY2tJRHMuc2V0KHRyYWNrSUQsIHNh
bXBsZS5rZXlJRHMoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7CisjZWxzZQorICAgIHJldHVybiB0cnVlOworI2VuZGlmCit9CisKIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNh
bXBsZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKICAgICBhdXRvIHRyYWNr
SUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0
cmluZykudmFsdWVfb3IoMCk7CiAgICAgaWYgKHRyYWNrSUQgIT0gbV9lbmFibGVkVmlkZW9UcmFj
a0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBsZS0+cGxhdGZv
cm1TYW1wbGUoKTsKLSAgICBpZiAocGxhdGZvcm1TYW1wbGUudHlwZSAhPSBQbGF0Zm9ybVNhbXBs
ZTo6Q01TYW1wbGVCdWZmZXJUeXBlKQorICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+
KHNhbXBsZSkpOworICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBzYW1wbGVBVkZPYmpD
ID0gc3RhdGljX3JlZmVyZW5jZV9jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oV1RGTW92ZShzYW1w
bGUpKTsKKyAgICBpZiAoIXNhbXBsZUFWRk9iakMtPmtleUlEcygpLmlzRW1wdHkoKSAmJiAhY2Fu
RW5xdWV1ZVNhbXBsZSh0cmFja0lELCBzYW1wbGVBVkZPYmpDKSkgeworICAgICAgICBtX2Jsb2Nr
ZWRTYW1wbGVzLmFwcGVuZCh7IHRyYWNrSUQsIFdURk1vdmUoc2FtcGxlQVZGT2JqQykgfSk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICBlbnF1ZXVlU2FtcGxlKFdURk1vdmUoc2FtcGxl
QVZGT2JqQyksIHRyYWNrSUQpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRf
dCB0cmFja0lEKQorewogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVS
OwogICAgIERFQlVHX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRyYWNrIElEID0gIiwgdHJhY2tJ
RCwgIiwgc2FtcGxlID0gIiwgc2FtcGxlLmdldCgpKTsKIAorICAgIFBsYXRmb3JtU2FtcGxlIHBs
YXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworCiAgICAgQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRG
b3JtYXREZXNjcmlwdGlvbihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpOwog
ICAgIEFTU0VSVChmb3JtYXREZXNjcmlwdGlvbik7CiAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlv
bikgewpAQCAtMTI4NCw2ICsxNDMzLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKQogICAgIGVs
c2UKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHRyYWNrSXNCbG9ja2VkKHRyYWNrSUQpKQor
ICAgICAgICByZXR1cm47CisKICAgICBwcm92aWRlTWVkaWFEYXRhKEF0b21TdHJpbmc6Om51bWJl
cih0cmFja0lEKSk7CiB9CiAKQEAgLTEzNzUsMTEgKzE1MjcsMjEgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6c2V0VmlkZW9MYXllcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciogbGF5ZXIKICAgICAgICAgW21fZGlzcGxheUxheWVyIGZsdXNoXTsKICAgICAgICAgW21fZGlz
cGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKICAgICAgICAgW21fZXJyb3JMaXN0
ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXI6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAg
ICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vz
c2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkg
cmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5nZXQoKV07CisjZW5kaWYK
ICAgICB9CiAKICAgICBtX2Rpc3BsYXlMYXllciA9IGxheWVyOwogCiAgICAgaWYgKG1fZGlzcGxh
eUxheWVyKSB7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRL
RVlTRVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5k
ZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNv
bnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5n
ZXQoKV07CisjZW5kaWYKKwogICAgICAgICBXZWFrUHRyIHdlYWtUaGlzIHsgKnRoaXMgfTsKICAg
ICAgICAgW21fZGlzcGxheUxheWVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeIHsKICAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMz
ZmIxNGQyMzE1NTk0YTg4ODM2NS4uZmMyYmFiOTA3ZDk4MzUzZDFmOGFhZDY5NGY5ZTU1MmE0YzI5
ZmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTG9n
Z2VyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKLWNsYXNzIE1l
ZGlhU2FtcGxlOworY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRo
cmVhZC4KLSAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpPjsKKyAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlTWVkaWFEYXRh
Q2FsbGJhY2soRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewog
ICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OwpAQCAtMTM3LDEyICsxMzcsMTkgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFdpbGwgYmUg
Y2FsbGVkIHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KLSAgICB1c2luZyBEaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxVaW50OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lEKT47
CisgICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1
aW50NjRfdCB0cmFja0lEKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2sp
CiAgICAgewogICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAor
ICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1aW50NjRfdCB0cmFja0lEKT47CisgICAg
dm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENh
bGxiYWNrKERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2Fs
bGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwor
ICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFNvdXJjZUJ1ZmZlclBhcnNlcigpOwogCkBAIC0xNTIs
NiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayBt
X2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjazsKICAgICBXaWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fd2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKICAg
ICBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
Q2FsbGJhY2sgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEQ2FsbGJhY2s7CisgICAgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRp
ZmllckZvclRyYWNrSURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50
aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCmluZGV4IDA1YTgzMTZkYzI3ZTYzMDE3ZjM5N2YxOTI0NjliODJhMzNiN2IwMzQu
LmFlMTY0MTRmMjFjNjg0NmMxODk3NzA5ZTE0MjRlNGE2YTRiNzYxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNv
bnN0IFRyYWNrRQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRv
JiBrZXlJZCA9IGtleUlkRWxlbWVudC52YWx1ZSgpOwotICAgICAgICAgICAgbV9rZXlJZHMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKHRyYWNrRW50cnkudHJhY2tfdWlkLnZhbHVlKCksIFVpbnQ4QXJy
YXk6OmNyZWF0ZShrZXlJZC5kYXRhKCksIGtleUlkLnNpemUoKSkpKTsKKyAgICAgICAgICAgIG1f
a2V5SWRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih0cmFja0VudHJ5LnRyYWNrX3VpZC52YWx1ZSgp
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShrZXlJZC5kYXRhKCksIGtleUlkLnNpemUoKSkpKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDI4ZTcz
ZmJhNTAyM2M4MTZiZmIyNDJjNWY5OTBkYjk3YTE4YmMxZmYuLmU4NzZhYjQxNGE0YWJiMzNkNTE4
YzM3YjQxZmU1YTE0Nzc2YWI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAg
LTI2OSw3ICsyNjksNyBAQCBwcml2YXRlOgogICAgIHdlYm06OlN0YXR1cyBPbkZyYW1lKGNvbnN0
IHdlYm06OkZyYW1lTWV0YWRhdGEmLCB3ZWJtOjpSZWFkZXIqLCB1aW50NjRfdCogYnl0ZXNSZW1h
aW5pbmcpIGZpbmFsOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluaXRpYWxpemF0aW9uU2VnbWVu
dD4gbV9pbml0aWFsaXphdGlvblNlZ21lbnQ7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRf
dCwgUmVmPFVpbnQ4QXJyYXk+Pj4gbV9rZXlJZHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50
NjRfdCwgUmVmPFNoYXJlZEJ1ZmZlcj4+PiBtX2tleUlkczsKICAgICB3ZWJtOjpTdGF0dXMgbV9z
dGF0dXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYm06OldlYm1QYXJzZXI+IG1fcGFyc2VyOwog
ICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFTYW1wbGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCmluZGV4IDNiNWE2OWFhNzZhNmFhZjE3YTU2
MTc2YzFmYjIzOWE0ZjkxMGIwYmIuLmZmOGMxYThiNDgxZDdmMzNjYzI0N2I2NGRmMWI4ZmFjNzBj
YmRkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCkBAIC02Miw2ICs2Miw3
IEBAIHB1YmxpYzoKICAgICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBs
ZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVy
U2FtcGxlVHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRB
cnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA0YWM2OWFjZDlhMDBjZjZlMTk5YTMzYWFjNDczZDhj
ZDg1ZGM1ZTVmLi4wYTk0YWNmMWExZTEzNjZmNmE1NzI1ODhiNzcwNDFlNGMzYzY0NzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNjEsNiArNjEsNyBAQCBw
cml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHNpemVvZihtX2JveCk7IH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlOyB9CiAgICAgc3Rk
OjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA0MmEzMjA2NTRiMDNk
ZjliNDM5Nzc3OTQyNTY0NTgyMDA2Y2RhMTEwLi43MTFjZWQwYmYxMzE0MjU5MTc3NWZmZDc5M2Fl
NWE4NmM2YWUwY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OTgsMTEgKzY5OCwxMCBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2Fj
aGVkS2V5Rm9yS2V5SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1l
c3NhZ2UpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
bWVzc2FnZVJlZmVyZW5jZTsKLSAgICBpZiAobWVzc2FnZSkKLSAgICAgICAgbWVzc2FnZVJlZmVy
ZW5jZSA9IHsgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5ieXRlTGVuZ3RoKCkgfTsKKyAgICBt
ZXNzYWdlUmVmZXJlbmNlID0geyBtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkgfTsKICAg
ICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Ok1lZGlhUGxheWVyS2V5TmVlZGVkKFdURk1vdmUobWVzc2FnZVJlZmVyZW5jZSkp
LCBtX2lkKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggOTMxNmI2NmFiMzU5NjZlNWI2
NDVkZDFjN2NlMGU4MTJmMjA2YTYzNy4uNTk1YzU4OTE5ZWExM2ZlYjk1ZDhmYzBkMGI0MzIzMDY4
YTgyYTBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKIAog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKLSAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAg
ICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApp
bmRleCA3NzRjY2YzMWYyNjc3ZDBhMDUyMTc2NTFiM2I0ZTEzMjM1YzRjMjk0Li5mODk1N2IzYjhl
NDE4NjIzYjNiNTZjMDEyMTU3MDA1YmRjZjYyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJz
ZUJ5dGVTb3VyY2UoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAg
ICAgICBkaWRQYXJzZVRyYWNrcyh7IH0sIGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBwYXJz
ZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3Qg
dHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBwYXJzZXItPnNldERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNr
SUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIGRpZFByb3ZpZGVNZWRpYURh
dGEoV1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiAK
QEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNr
cyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIG1faW5pdCA9
IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURhdGEo
UmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBT
dHJpbmcmKQordm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8
TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25z
dCBTdHJpbmcmKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFGb3JtYXRSZWFkZXIuaAppbmRleCA2NTA5M2U5ZTQ2YjQwYjVhMzk3NmZkZWYyOWU2MTNjNjQ1
MWYzMTVhLi4xNWQ1NTczNjMzODE3NDYwYzJlNjIwNDQxOTAxMDIzY2Y4NmI0YTkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogREVDTEFSRV9DT1JFX01F
RElBX1RSQUlUUyhGb3JtYXRSZWFkZXIpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBN
ZWRpYVNhbXBsZUFWRk9iakM7CiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXI7CiB9CiAKQEAgLTY3
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBhcnNlVHJhY2tzKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYmLCB1aW50NjRf
dCBlcnJvckNvZGUpOwogICAgIHZvaWQgZGlkU2VsZWN0VmlkZW9UcmFjayhXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQogICAgIHZvaWQgZGlkRW5hYmxlQXVkaW9UcmFjayhX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQotICAgIHZvaWQgZGlkUHJvdmlk
ZU1lZGlhRGF0YShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90LCBjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPFdlYkNvcmU6Ok1lZGlh
U2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmlu
aXNoUGFyc2luZyhSZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIC8v
IENNQmFzZUNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGY4MzM2
YmYwMTM3MjEwOTBkYTE5Mzc4ZmI1YTQ1M2M4ZGFjYTU3NmYuLmI2NmYzYTM1YTk2ZjdiNWQ1Zjk3
YWJkNmVkYTAwMjYxNTgyNmUxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5o
CkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNv
bnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1T
YW1wbGVUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6
OkJ5dGVSYW5nZVNhbXBsZVR5cGU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25z
dCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFU
aW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAppbmRleCA4ZDllNWZmOTJhYzNiM2YwZWI3MTMzOWVmZThiNGJmM2Y0Mjk2NGRjLi41Yzcx
YTI2OGUwZDBiNDY3NTBiM2I2MmY1YzdkY2Y3NzJmMmIwNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwCkBAIC0xMTkxLDcgKzExOTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6a2V5QWRkZWQoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlh
UGxheWVyS2V5TmVlZGVkKElQQzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYg
KFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKSkKLSAgICAgICAgcGxheWVyLT5rZXlOZWVk
ZWQoVWludDhBcnJheTo6Y3JlYXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSkucHRy
KCkpOworICAgICAgICBwbGF5ZXItPmtleU5lZWRlZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNz
YWdlKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGU4N2FhYjYzMGY2NjIyMWY4YzVhZTM3YzY0MWZkYjI1MjFmOTFkMWUu
LjhiZDAwNjMzZGYwYjM3ZjM3OWUzY2I4MzAxODc5MjhjZDk1ZDZiNTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTYyNyw2ICs2MjcsMTUgQEAK
ICAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSk6CiAgICAgICAgIEFk
ZGVkIGltcGxlbWVudGF0aW9uLgogCisyMDIyLTAyLTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQor
CisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwOgorCiAyMDIyLTAyLTA3ICBSb3kgUmVh
cG9yICA8cnJlYXBvckBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdGNvcmVweV0gQXV0b2lu
c3RhbGxlciBtYXkgZmFpbCB0byBpbnN0YWxsIHdoZWVscwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAppbmRleCBjNDVjNjdhMzE2NmJmZmI5ODc3
YmMwZDgzNGZlZjg0NGE0ODY2NTE5Li41YTY1MzU4MzAxNWQyODhkZWY0N2JjYjQ3OTJjMjRjOGQy
ZjlhN2VmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2Ft
cGxlTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxl
TWFwLmNwcApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIFNhbXBsZUZsYWdz
IGZsYWdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIFBsYXRmb3JtU2Ft
cGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBs
ZTo6Tm9uZSwgeyBudWxscHRyIH0gfTsgfQorICAgIFBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRm
b3JtU2FtcGxlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFBsYXRmb3JtU2FtcGxlOjpOb25l
OyB9CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3QgZmluYWwgeyB9Cg==
</data>
<flag name="commit-queue"
          id="478609"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451770</attachid>
            <date>2022-02-11 19:48:34 -0800</date>
            <delta_ts>2022-02-15 08:33:01 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236109-20220211194834.patch</filename>
            <type>text/plain</type>
            <size>77123</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRmODRkYTQ5MmY5MDI2OTQyZTk4MzZi
OTI1Yjg0NTYzZTQ3ZjNhZTMuLjMzZDAyNTlmNTlkMjMwZjA5YWEzYjM3MzM3MmMyM2RkZWUzMzk0
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0zMjYsNiArMzI2LDE1IEBACiAKICAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWw6CiAKKzIwMjItMDItMDcgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBk
ZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjItMDItMDYgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBNYWtlIEJpdG1hcCBjb25z
dGV4cHIgZnJpZW5kbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOTgwYTJmYmNjMmM3MzFhOTllNGEzOTFiOWZj
YzY0MTdhZTlhZTdmLi5iMzRhMGJmZGQ5MWY0NzkxMzIyNzMxZGQyZjJhMjJkYWQzMDAxY2FiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJz
ZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjEwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBUaGUg
Y3VycmVudCBzZXQgb2YgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9kcyBoYXZlIGEgc2lnbmlmaWNh
bnQgc2hvcnRjb21pbmc6IGNsaWVudHMgbXVzdAorICAgICAgICBhdHRhY2ggYW4gQVZDb250ZW50
S2V5U2Vzc2lvbiB0byB0aGUgQVZTdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSByZXR1cm5pbmcgZnJv
bSB0aGUKKyAgICAgICAgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6IGNhbGxiYWNrLiBUaGlzCisgICAgICAg
IGlzIGJlY2F1c2UgdGhlIHBhcnNlciBpdHNlbGYgYXR0YWNoZXMgdGhlIG9iamVjdCByZXF1aXJl
ZCB0byBkZWNyeXB0IGVhY2ggZW5jcnlwdGVkIHNhbXBsZQorICAgICAgICB0byB0aGUgc2FtcGxl
IGl0c2VsZiBhdCB0aGUgcGFyc2luZyBzdGFnZS4gSWYgYSBjbGllbnQgZG9lcyBub3QgYXR0YWNo
IGFuCisgICAgICAgIEFWQ29udGVudEtleVNlc3Npb24gYnkgdGhlIHRpbWUgdGhhdCBtZXRob2Qg
cmV0dXJucywgQVZTdHJlYW1EYXRhUGFyc2VyIHdpbGwgYXR0YWNoIG9uZSBvZgorICAgICAgICBp
dHMgb3duLgorCisgICAgICAgIFRoZSB3ZWItZmFjaW5nIGJlaGF2aW9yIHRoaXMgY2F1c2VzIGlz
IHRoYXQgTVNFIGFwcGVuZHMgd2lsbCBub3QgY29tcGxldGUgKGJ5IGZpcmluZworICAgICAgICBh
biAidXBkYXRlZW5kIiBldmVudCkgaWYgYW4gZW5jcnlwdGVkIHNlZ21lbnQgaXMgcGFyc2VkIHVu
dGlsIHRoZSBjbGllbnQgY3JlYXRlcyBhbmQKKyAgICAgICAgYXR0YWNoZXMgYSBNZWRpYUtleXMg
b2JqZWN0IHdpdGggYSB2YWxpZCBzZXNzaW9uLgorCisgICAgICAgIEEgbmV3IGRlbGVnYXRlIGNh
bGxiYWNrIG1ldGhvZCwgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVj
aWZpZXI6Zm9yVHJhY2tJRDoKKyAgICAgICAgYWxsb3dzIHVzIHRvIHdvcmsgYXJvdW5kIHRoaXMg
cHJvYmxlbS4gV2hlbiB0aGlzIGRlbGVnYXRlIGlzIHByZXNlbnQsIEFWU3RyZWFtRGF0YVBhcnNl
cgorICAgICAgICB3aWxsIHNraXAgYXR0YWNoaW5nIGEgZGVjcnlwdGlvbiBvYmplY3QgZW50aXJl
bHksIG1vdmluZyB0aGF0IHJlc3BvbnNpYmlsaXR5IHRvIHRoZQorICAgICAgICBjbGllbnQuIEhv
d2V2ZXIsIHRoaXMgY29tZXMgd2l0aCB0aGUgcmVxdWlyZW1lbnQgdGhhdCB0aGUgY2xpZW50IChX
ZWJLaXQpIHdvbid0IGVucXVldWUKKyAgICAgICAgYW4gZW5jcnlwdGVkIHNhbXBsZSBiZWZvcmUg
YSBkZWNyeXB0aW9uIG9iamVjdCBpcyBhdmFpbGFibGUgdmlhIEFWQ29udGVudEtleVNlc3Npb24u
CisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWVldCB0aGlzIG5ldyByZXF1aXJlbWVudCwgV2ViS2l0
IHdpbGwgYXNzb2NpYXRlIHRoZSBrZXkgSURzIG5lY2Vzc2FyeSB0bworICAgICAgICBkZWNyeXB0
IGVhY2ggc2FtcGxlIGluIHRoZSBNZWRpYVNhbXBsZSBvYmplY3QgdGhhdCB3cmFwcyB0aGUgZW5j
cnlwdGVkIHNhbXBsZS4gQmVjYXVzZSBub3QKKyAgICAgICAgZXZlcnkgdHlwZSBvZiBNZWRpYVNh
bXBsZSB3aWxsIGNhcnJ5IGtleSBJRHMsIHRoaXMgcHJvcGVydHkgd2FzIGFkZGVkIHRvIHRoZQor
ICAgICAgICBNZWRpYVNhbXBsZUFWRk9iakMgc3ViY2xhc3MsIGFuZCB0aGVyZWZvcmUgd2UgbmVl
ZCB0byBiZSBhYmxlIHRvIHNhZmVseSBkb3duY2FzdCBmcm9tCisgICAgICAgIE1lZGlhU2FtcGxl
IHRvIE1lZGlhU2FtcGxlQVZGT2JqQy4gTWVkaWFTYW1wbGUgc3ViY2xhc3NlcyBjYW4gYmUgZGlz
dGluZ3Vpc2hlZCBieSB0aGUKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNhbXBsZSB0eXBlIGF2YWls
YWJsZSB0aHJvdWdoIHRoZWlyIHBsYXRmb3JtU2FtcGxlKCkgcHJvcGVydHksIGhvd2V2ZXIgdGhp
cworICAgICAgICBjYWxsIGlzIG5vdCBjb25zdCwgYW5kIG1heSBub3QgYmUgZnJlZSwgYXMgaXQg
cmV0dXJucyBhIG5vbi1QT0QgdHlwZS4gU28KKyAgICAgICAgUGxhdGZvcm1NZWRpYTo6VHlwZSB3
YXMgbWFkZSBhbiBleHBsaWNpdCBlbnVtIHR5cGUsIGFuZCBhIG5ldyB2aXJ0dWFsIG1ldGhvZAor
ICAgICAgICBwbGF0Zm9ybVNhbXBsZVR5cGUoKSB3YXMgYWRkZWQgdG8gTWVkaWFTYW1wbGUgKGFu
ZCBpbXBsZW1lbnRlZCBieSBhbGwgc3ViY2xhc3NlcyksIGFuZCBhCisgICAgICAgIHR5cGUgc3Bl
Y2lhbGl6YXRpb24gbWFjcm8gd2FzIGFkZGVkIHRvIE1lZGlhU2FtcGxlQVZGT2JqQy4KKworICAg
ICAgICBJbiBvcmRlciB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gc2FtcGxlIGlzIGNhcGFibGUg
b2YgYmVpbmcgZW5xdWV1ZWQsIHRoZSBDRE1JbnN0YW5jZQorICAgICAgICBtdXN0IGJlIHF1ZXJp
ZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzYW1wbGUncyByZXF1aXJlZCBrZXlzIGFyZSB1c2FibGUu
IEZvcgorICAgICAgICBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQywgaXQgaGFz
IGFuIGV4aXN0aW5nIGtleVN0YXR1cygpLCBtZXRob2QsIGJ1dCB0aGF0CisgICAgICAgIG1ldGhv
ZCBpcyBhbHNvIG5vbi1jb25zdCwgYW5kIG1heSBiZSBleHBlbnNpdmUuIFNvIGEgS2V5U3RhdHVz
TWFwIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIGFkZGVkIHRvIGNhY2hlIHRo
ZSBrZXkgc3RhdHVzIGZvciBlYXNlIG9mIHF1ZXJ5aW5nLiBUbyBub3RpZnkgYW4gYXJiaXRyYXJ5
IG51bWJlcgorICAgICAgICBvZiBjbGllbnRzIHdoZW4gdGhlIGtleSBzdGF0dXNlcyBjaGFuZ2Us
IGFuIE9ic2VydmVyIGhhcyBiZWVuIGFkZGVkLgorCisgICAgICAgIFdoZW4gYW4gZW5jcnlwdGVk
IHNhbXBsZSBpcyBlbnF1ZXVlZCwgaWYgdGhpcyBuZXcgZGVsZWdhdGUgbWV0aG9kIGlzIGF2YWls
YWJsZSwgdGhlCisgICAgICAgIHNvdXJjZSBidWZmZXIgd2lsbCBjaGVjayBpZiBhIENETSBpbnN0
YW5jZSBpcyBhdmFpbGFibGUsIGFuZCBpZiBzbywgd2hldGhlciB0aGUgc2FtcGxlJ3MKKyAgICAg
ICAga2V5cyBhcmUgdXNhYmxlLiBJZiBhbnkgb2YgdGhlc2UgY2hlY2tzIGZhaWwsIHRoZSBzYW1w
bGUgd2lsbCBiZSBzdG9yZWQgaW4gYSBsb2NhbCBxdWV1ZQorICAgICAgICBhbmQgbmV3IGVucXVl
dWVzIHdpbGwgYmUgYmxvY2tlZC4gV2hlbiB0aGUgQ0RNJ3Mga2V5U3RhdHVzIG9ic2VydmVyIGlz
IHRyaWdnZXJlZCwgdGhlCisgICAgICAgIGxvY2FsIHF1ZXVlIHdpbGwgYmUgcHJvY2Vzc2VkLCBh
bmQgYWxsIHNhbXBsZXMgd2l0aCB1c2FibGUga2V5IElEcyB3aWxsIGJlIGVucXVldWVkLgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeDogVXNlIFNoYXJlZEJ1ZmZlciByYXRoZXIgdGhhbiBVaW50OEFy
cmF5LCBhcyB0aGUgZm9ybWVyIGlzIGxpZ2h0ZXIgd2VpZ2h0CisgICAgICAgIGFuZCBjYW4gYmUg
bW9yZSBlYXNpbHkgY29udmVydGVkIHRvIGFuZCBmcm9tIGEgTlNEYXRhLgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OmtleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXll
cktleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjppc0FueUtleVVzYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6YWRkS2V5U3RhdHVzZXNDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3Vj
Y2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29weUtleVN0YXR1c2VzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVj
dGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVQcm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxheUlEKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6a2V5U3RhdHVzZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6a2V5TmVlZGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0
S2V5SURzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6a2V5SURzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6a2V5SURzKToKKyAg
ICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDPjo6dG9T
dHJpbmcpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNv
dXJjZUJ1ZmZlcktleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW06CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQ
YXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDpdKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
U3BlY2lmaWVyRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlLZXlJRHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRDRE1JbnN0
YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0
ZW1wdFRvRGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6dHJhY2tJc0Jsb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmtleVN0YXR1c2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuRW5xdWV1ZVNhbXBsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVh
ZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6c2V0VmlkZW9MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKwogMjAy
Mi0wMi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c2V0dGluZ3MgdG8gcmVzdHJpY3QgbWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4g
Q2FwdGl2ZSBQb3J0YWwgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkYjhjNjU3ZDA0ZGU4ODk5OTQ3YjU2ZGYz
M2JmYTlhYjg1OTgyZmM1Li4yMzU1MGE2NzAyZWY3MDI2MTU0MzU5N2Y2MmYxMTI3M2ViOTY2OTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJz
ZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjEwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQg
dGhlIG5ld2x5IHJlcXVyaWVkIHZpcnR1YWwgbWV0aG9kIGNoYW5nZXMgdG8gTWVkaWFTYW1wbGUg
c3ViY2xhc3NlcywgYW5kIHVzZQorICAgICAgICBTaGFyZWRCdWZmZXIgcmF0aGVyIHRoYW4gVWlu
dDhBcnJheS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlh
UGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6
OnBhcnNlQnl0ZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpk
aWRQcm92aWRlTWVkaWFEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorCiAyMDIyLTAy
LTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDRkY2E1YTI2MDdlMmE3MGQ5
Njg4OWFlYTBhZmRlYWM3OTYwMmIyNjMuLmVlNDg2N2I0MDhjNWJjZGI5OTRjYWQ5ZDRlMzgwYjhi
ODBkNjU3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0zODgsNiArMzg4LDEzIEBACiAjZGVm
aW5lIEhBVkVfQVZDT05URU5US0VZU0VTU0lPTiAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDApIFwKKyAgICB8
fCAoKChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dF
RCA+PSAxNDA1MDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFlfU0lNVUxBVE9SKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0g
NzA0MDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFlfU0lNVUxBVE9SKSAmJiBfX1RWX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNTAwKQor
I2RlZmluZSBIQVZFX0FWQ09OVEVOVEtFWVNQRUNJRklFUiAxCisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZp
bmUgSEFWRV9TRUNfS0VZX1BST1hZIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
cy5pZGwKaW5kZXggZDYzNDg2YzVhOWM0ODk1M2MzNGIyYTZkZDIzY2RhOTIzZjI4NDFjNy4uNWU2
N2VkZjA2NmI2MDEzYjc4ZTRiNjlkYTY1MzA2ZTFiYWQ0ZjAzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleXMuaWRsCkBAIC0zMCw3ICszMCw3IEBACiBdIGludGVyZmFjZSBXZWJLaXRNZWRp
YUtleXMgewogICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyBrZXlTeXN0ZW0pOwogCi0gICAgW0Nh
bGxXaXRoPUN1cnJlbnRTY3JpcHRFeGVjdXRpb25Db250ZXh0XSBXZWJLaXRNZWRpYUtleVNlc3Np
b24gY3JlYXRlU2Vzc2lvbihET01TdHJpbmcgdHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7Cisg
ICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0
ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVpbnQ4QXJyYXkgaW5pdERhdGEpOwogICAgIHN0YXRp
YyBib29sZWFuIGlzVHlwZVN1cHBvcnRlZChET01TdHJpbmcga2V5U3lzdGVtLCBvcHRpb25hbCBE
T01TdHJpbmcgdHlwZSk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0
ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzI1
YzUyMGEyZWIxNmE3MzJhZGJkZmQwZGE4ZTEwOWU3Y2U0NTVjZS4uNDk2YzZhOWNiMjNhNmEyYTk1
MzkzZjhhNDZlODYyMDk0NzcwYWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0yNjQ0LDcgKzI2NDQsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJgog
ICAgIHJldHVybiBtX3dlYktpdE1lZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRL
ZXlGb3JLZXlJZChrZXlJZCkgOiBudWxscHRyOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewogICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1l
ZGlhQVBJRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNjYxLDcgKzI2NjEsMTQgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBp
bml0RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlF
dmVudCwgaW5pdERhdGEpOworICAgIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OkluaXQgaW5p
dDsKKworICAgIGlmIChhdXRvIGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEudHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSkgeworICAgICAgICBhdXRvIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpOworICAgICAgICBpbml0LmluaXREYXRhID0gVWludDhBcnJheTo6dHJ5Q3Jl
YXRlKGluaXREYXRhQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ5dGVMZW5ndGgpOworICAg
IH0KKworICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdCk7CiAgICAgc2NoZWR1bGVFdmVu
dChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggODllNmE2MjY4YmY2ZDYxYzVlMzczZjI5YTg0OTZiMWQ2NzczYmFkNC4uMDA0OTE4
NjEzZWI5MzExMDYyM2IwM2JhZmY5NzYxZDYzMGM0OGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRp
YVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFs
OwotICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAg
IHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAg
ICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlh
U2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IGIw
NjUwNGY1N2VlOTM2YjhlMTk4ODcxZjM1NzI3NjUzNTMwNGFmZDMuLjhiM2RjYTYxMmMyM2FhMjll
M2E0ZTM2NmE3ZjQ0YzFjYTVjMjAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1w
bGUuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNb2NrU2Ft
cGxlQm94OwogCiBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewotICAgIGVudW0geworICAgIGVudW0g
VHlwZSB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAg
ICBDTVNhbXBsZUJ1ZmZlclR5cGUsCkBAIC05Miw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB9Owog
ICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQ
bGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBs
YXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0ID0gMDsKIAogICAg
IHN0cnVjdCBCeXRlUmFuZ2UgewogICAgICAgICBzaXplX3QgYnl0ZU9mZnNldCB7IDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJl
YWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RmlsZVJlYWRlckNvY29hLmNwcAppbmRleCA1MDYwMzIzODAzYjFhM2IxN2Y0NzM4NjZlYTk3YjNh
ODI5MGUyMDJjLi5iNzAzY2ZlY2QzMTZjNjI3YzY5NGU2NGI4ZTY5NzYyMDY4NjdmN2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFk
ZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0
YShjb25zdCB1aQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSk7Ci0gICAgcGFyc2Vy
LT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soWyZdKFJlZjxNZWRpYVNhbXBsZT4mJiBz
YW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpIHsKKyAgICBwYXJzZXItPnNl
dERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbJl0oUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4m
JiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpIHsKICAgICAgICAgaWYg
KCFhdWRpb1RyYWNrSWQgfHwgdHJhY2tJRCAhPSAqYXVkaW9UcmFja0lkKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBzYW1wbGVzLmFwcGVuZChzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TWVk
aWFTYW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNhbXBsZSkpKTsKKyAgICAgICAgc2FtcGxlcy5hcHBl
bmQoV1RGTW92ZShzYW1wbGUpKTsKICAgICB9KTsKICAgICBwYXJzZXItPnNldENhbGxPbkNsaWVu
dFRocmVhZENhbGxiYWNrKFtdKGF1dG8mJiBmdW5jdGlvbikgewogICAgICAgICBmdW5jdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CmluZGV4IDBhYmMzMjIzOGQ2NDFhY2E0NWY3Mzk3NzU3ZTRlNWUxNTFiYTdkYjUuLjZjNjFkNzM3
MDg0MWYzODE1MDdiNzY4MmVmYzhmYmU5YTIxYjNlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0MjUsNyArMTQyNSw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gTWVkaWFQbGF5ZXI6OmNhY2hlZEtleUZvcktleUlkKGNvbnN0
IFN0cmluZyYga2V5SWQpIGNvbnN0CiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyQ2Fj
aGVkS2V5Rm9yS2V5SWQoa2V5SWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQo
VWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBjbGllbnQoKS5tZWRpYVBsYXllcktleU5l
ZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAppbmRleCA1ZjBkYWE4NjZmMmM4MjMzYWM4YzE5NGE2MTMzZDk3M2YzNDQ2
ZmU4Li44OTMxNzE1OTI1YTE0ODNhZmFkMGNjY2ExNjNhZTE1OWY5NDczYjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTg2LDYgKzg2
LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFz
cyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjsKIGNs
YXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCkBAIC0yMDAsNyArMjAxLDcgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICNlbmRpZgog
CkBAIC01NTgsNyArNTU5LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJZChjb25z
dCBTdHJpbmcmIGtleUlkKSBjb25zdDsKLSAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBp
bml0RGF0YSk7CisgICAgdm9pZCBrZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBhM2JjOWY1ZmNkZjhmNzA1ZGY3ZmI5YjY5YThiNTA5
OTI0NTBjODFjLi5mNTVmNDMzNDRjMTI4YmY1MWI1Mzk5OGE1ZGI1ZDEyZDQyYzBjZGRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAKQEAgLTE5MjEsMTUgKzE5MjEsMTUgQEAgYm9vbCBBVkZXcmFwcGVyOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdFIKICAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5
dGVzOiBrZXlVUkldCiAgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3Ro
KCkgKiBzaXplb2YoVUNoYXIpOwogICAgICAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIGF1dG8gaW5pdERhdGFW
aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwg
aW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBhdXRvIGluaXREYXRh
VmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAs
IGJ5dGVMZW5ndGgpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5
VVJJU2l6ZSwgdHJ1ZSk7CiAKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5
OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwog
ICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MTZfdCo+KFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSks
IGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKLSAgICAgICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCA9IGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCk7Ci0gICAg
ICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1
ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVl
ZGVkKGluaXREYXRhLnB0cigpKTsKKyAgICAgICAgYXV0byBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiB7IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihpbml0RGF0
YUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCB9KTsKKyAgICAgICAgbV9vd25lci0+cGxheWVy
KCktPmtleU5lZWRlZChpbml0RGF0YSk7CiAgICAgICAgIHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJ
LCBhdlJlcXVlc3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMuaAppbmRleCA1NmI1OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyLi5k
NTlmZTQ4MDRkNThkZmU3OGNiNWJlYTcwNzRiMmU2ODcwNWMxZDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLmgKQEAgLTMwLDcgKzMwLDkgQEAKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2lu
Y2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgor
I2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogT0JKQ19DTEFTUyBBVkNvbnRlbnRLZXlSZXBv
cnRHcm91cDsKIE9CSkNfQ0xBU1MgQVZDb250ZW50S2V5UmVxdWVzdDsKQEAgLTExNyw2ICsxMTks
MTMgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAg
ICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9y
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CiAKKyAgICBib29sIGlzQW55S2V5
VXNhYmxlKGNvbnN0IEtleXMmKSBjb25zdDsKKworICAgIHVzaW5nIEtleVN0YXR1c2VzQ2hhbmdl
ZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFkZEtleVN0YXR1c2VzQ2hh
bmdlZE9ic2VydmVyKGNvbnN0IEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB2
b2lkIHNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVVbmV4
cGVjdGVkUmVxdWVzdHMoVmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7
CiAKQEAgLTEzNCw2ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VSTD4gbV9z
dG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CiAgICAgSGFzaFNldDxSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4+IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzOworICAgIFdlYWtIYXNo
U2V0PEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyPiBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZl
cnM7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dn
ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpAQCAtMTg2
LDExICsxOTYsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNSZXF1ZXN0KEFWQ29udGVudEtl
eVJlcXVlc3QqKSBjb25zdDsKIAorICAgIGNvbnN0IEtleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVz
ZXMoKSBjb25zdCB7IHJldHVybiBtX2tleVN0YXR1c2VzOyB9CisgICAgS2V5U3RhdHVzVmVjdG9y
IGNvcHlLZXlTdGF0dXNlcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlU2Vz
c2lvbk9yR3JvdXAoKTsKICAgICBib29sIGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5
cGUpIGNvbnN0OwogCi0gICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0aW9u
YWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIHVw
ZGF0ZUtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpu
dWxsb3B0KTsKICAgICB2b2lkIG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVz
dCogbGFzdEtleVJlcXVlc3QoKSBjb25zdDsKIApAQCAtMjE2LDYgKzIyOSw3IEBAIHByaXZhdGU6
CiAKICAgICBjbGFzcyBVcGRhdGVSZXNwb25zZUNvbGxlY3RvcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I+IG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I7Cisg
ICAgS2V5U3RhdHVzVmVjdG9yIG1fa2V5U3RhdHVzZXM7CiAKICAgICBWZWN0b3I8UmVxdWVzdD4g
bV9wZW5kaW5nUmVxdWVzdHM7CiAgICAgVmVjdG9yPFJlcXVlc3Q+IG1fcmVxdWVzdHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGNmZTA0OGE5MzhjMDVkZjc0NWM3MTYzNTZhZDFiM2I5
MGE1OWViNzguLmZkNjE1MmUxODY3ZDRlNmE2NzJiZWYxNzA3MGNhNzYyOTEyNmY0YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC02MTcsNiArNjE3LDM3IEBAIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMmIGtleXMpIGNv
bnN0Cit7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uSW50ZXJmYWNlIDogbV9zZXNzaW9ucykgewor
ICAgICAgICBpZiAoIXNlc3Npb25JbnRlcmZhY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBmb3IgKGF1dG8mIGtleVN0YXR1c1BhaXIgOiBzZXNzaW9uSW50ZXJmYWNlLT5rZXlT
dGF0dXNlcygpKSB7CisgICAgICAgICAgICBpZiAoa2V5U3RhdHVzUGFpci5zZWNvbmQgIT0gQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OlVzYWJsZSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgaWYgKGtleXMuZmluZElmKFsmXSAoYXV0byYga2V5KSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGtleS5nZXQoKSA9PSBrZXlTdGF0dXNQYWlyLmZpcnN0Lmdl
dCgpOworICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRP
YnNlcnZlcihjb25zdCBLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7Cisg
ICAgbV9rZXlTdGF0dXNDaGFuZ2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0No
YW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJikK
K3sKKyAgICBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZlcnMuZm9yRWFjaChbXSAoYXV0byYgb2Jz
ZXJ2ZXIpIHsKKyAgICAgICAgb2JzZXJ2ZXIoKTsKKyAgICB9KTsKK30KKwogQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
PiYmIGluc3RhbmNlKQogICAgIDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKICAgICAs
IG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCkBAIC0xMzA2LDEzICsxMzM3LDE1IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Q
cm92aWRlUmVxdWVzdChBVkNvbnRlCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpy
ZXF1ZXN0KQogeworICAgIHVwZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV91cGRhdGVS
ZXNwb25zZUNvbGxlY3RvcikgewogICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yLT5h
ZGRTdWNjZXNzZnVsUmVzcG9uc2UocmVxdWVzdCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAobV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spIHsKLSAgICAgICAgbV91
cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChrZXlTdGF0dXNl
cygpKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgICAgIG1f
dXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9uYWwoY29weUtleVN0
YXR1c2VzKCkpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAg
ICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogCkBAIC0xNDA1LDcg
KzE0MzgsNyBAQCBzdGF0aWMgYXV0byByZXF1ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZDb250ZW50
S2V5UmVxdWVzdFN0YXR1cyBzdGF0dXMpCiAgICAgfQogfQogCi1DRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRpc3BsYXlJ
RCkgY29uc3QKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVLZXlTdGF0dXNlcyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNw
bGF5SUQpCiB7CiAgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOwogCkBAIC0xNDI3LDcg
KzE0NjAsMTkgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjoKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJldHVybiBrZXlTdGF0dXNlczsKKyAgICBtX2tleVN0YXR1c2VzLnN3YXAoa2V5U3RhdHVz
ZXMpOworCisgICAgbV9pbnN0YW5jZS0+c2Vzc2lvbktleVN0YXR1c2VzQ2hhbmdlZCgqdGhpcyk7
Cit9CisKK2F1dG8gQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpj
b3B5S2V5U3RhdHVzZXMoKSBjb25zdCAtPiBLZXlTdGF0dXNWZWN0b3IKK3sKKyAgICBLZXlTdGF0
dXNWZWN0b3IgY29waWVkS2V5U3RhdHVzZXM7CisgICAgY29waWVkS2V5U3RhdHVzZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX2tleVN0YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBz
dGF0dXMgOiBtX2tleVN0YXR1c2VzKQorICAgICAgICBjb3BpZWRLZXlTdGF0dXNlcy51bmNoZWNr
ZWRBcHBlbmQoeyBzdGF0dXMuZmlyc3QuY29weVJlZigpLCBzdGF0dXMuc2Vjb25kIH0pOworICAg
IHJldHVybiBjb3BpZWRLZXlTdGF0dXNlczsKKwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVu
dEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCBvYnNjdXJlZCkKQEAgLTE0MzgsOCArMTQ4
MywxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgb2JzY3VyZWQpOwogICAgIG1fb3V0cHV0T2JzY3VyZWQgPSBvYnNj
dXJlZDsKIAorICAgIHVwZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcygpKTsKKyAgICAg
ICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKGNvcHlLZXlTdGF0dXNlcygpKTsKIH0KIAog
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVybmFs
UHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtl
eVJlcXVlc3QqKQpAQCAtMTQ5Miw5ICsxNTM5LDEzIEBAIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3Rh
dHVzPiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnByb3RlY3Rp
CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRh
dGVQcm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCkKIHsKLSAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgIGlm
IChtX3JlcXVlc3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT51
cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcyhkaXNwbGF5SUQpKTsKKworICAgIHVwZGF0ZUtl
eVN0YXR1c2VzKGRpc3BsYXlJRCk7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT51cGRhdGVLZXlTdGF0dXNlcyhjb3B5S2V5U3RhdHVzZXMoKSk7CiB9CiAKIGJvb2wgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uT3JH
cm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24uaAppbmRleCAwMjEwMjY5NTg2YWYxZDVhMDQyYzYzZGM0NjRkOTlhMjBj
M2M3NWIwLi42YzA1ZTJmOGIxMDNiODUxNzQ3Y2M5YTM1NDNjZDUxYzlhZThjMzgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxXZWJDRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2NvbnRlbnRLZXlTZXNzaW9uRGVs
ZWdhdGU7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1fa2V5UmVxdWVzdDsK
ICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pZGVudGlmaWVyOwotICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBtX2luaXREYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1faW5pdERhdGE7CiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gbV9leHBpcmVkU2Vzc2lvbjsKICAgICBWZWN0b3I8aW50PiBt
X3Byb3RvY29sVmVyc2lvbnM7CiAgICAgaW50IG1fY2RtVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5k
ZXggNjUyYTA4NTA4NzdlYjc4MGYzNWU2ZWY1MTRlMmFjMzJjZDc3OTNhYy4uN2Q1OTNhNjBkNjYz
MmI5OTYyZmY0OTU2MWEwZTcxYmNkY2U2MDk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9y
dCAiTWVkaWFQbGF5ZXIuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFz
LmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgpAQCAtMTQ2LDcgKzE0Nyw3IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluCiAgICAgaWYgKG1fY2RtVmVyc2lvbiA9PSAyKQogICAg
ICAgICBtX2lkZW50aWZpZXIgPSBpbml0RGF0YTsKICAgICBlbHNlCi0gICAgICAgIG1faW5pdERh
dGEgPSBpbml0RGF0YTsKKyAgICAgICAgbV9pbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5sZW5ndGgoKSk7CiAKICAgICBBU1NFUlQoIW1f
Y2VydGlmaWNhdGUpOwogICAgIFN0cmluZyBjZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlmaWNhdGUi
X3MpOwpAQCAtMjY4LDEyICsyNjksMTIgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgIH0K
IAogICAgIGlmICghbV9rZXlSZXF1ZXN0KSB7Ci0gICAgICAgIE5TRGF0YSogbnNJbml0RGF0YSA9
IG1faW5pdERhdGEgPyBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bV9pbml0RGF0YS0+ZGF0YSgpIGxl
bmd0aDptX2luaXREYXRhLT5sZW5ndGgoKV0gOiBuaWw7CisgICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IG5zSW5pdERhdGEgPSBtX2luaXREYXRhID8gbV9pbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkg
OiBuaWw7CiAgICAgICAgIE5TRGF0YSogbnNJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyID8gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOm1faWRlbnRpZmllci0+ZGF0YSgpIGxlbmd0aDptX2lkZW50aWZp
ZXItPmxlbmd0aCgpXSA6IG5pbDsKICAgICAgICAgaWYgKFtjb250ZW50S2V5U2Vzc2lvbigpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElk
ZW50aWZpZXI6aW5pdGlhbGl6YXRpb25EYXRhOm9wdGlvbnM6KV0pCi0gICAgICAgICAgICBbY29u
dGVudEtleVNlc3Npb24oKSBwcm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjpu
c0lkZW50aWZpZXIgaW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxdOwor
ICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0
V2l0aElkZW50aWZpZXI6bnNJZGVudGlmaWVyIGluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRh
LmdldCgpIG9wdGlvbnM6bmlsXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW2NvbnRlbnRL
ZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5z
SW5pdERhdGEgb3B0aW9uczpuaWxdOworICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkg
cHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEuZ2V0
KCkgb3B0aW9uczpuaWxdOwogICAgIH0KIAogICAgIGlmIChzaG91bGRHZW5lcmF0ZUtleVJlcXVl
c3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGE2YzA1OWRjMTA2YTYyMjViMjExMmNi
OGVlNTIwM2E3YjU4ZmQxMjIuLjAyNzg3OWMwZGI0YWE3NjAxYzZkYWRjMDRkYjM5NDQ3MTM2ZmU5
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjExNSw4ICsyMTE1LDggQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5
OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwog
ICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlD
aGFyKj4oU3RyaW5nVmlldyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwg
a2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBh
dXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIp
LCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5w
dHIoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0
b3I8dWludDhfdD4geyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oaW5pdERhdGFCdWZmZXItPmRhdGEo
KSksIGJ5dGVMZW5ndGggfSk7CisgICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEp
OwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIGlmICghcGxheWVyKCktPnNo
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMjE0NCw5ICsyMTQ0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICBpZiAoc2No
ZW1lID09ICJjbGVhcmtleSIpIHsKICAgICAgICAgU3RyaW5nIGtleUlEID0gW1tbYXZSZXF1ZXN0
IHJlcXVlc3RdIFVSTF0gcmVzb3VyY2VTcGVjaWZpZXJdOwogICAgICAgICBhdXRvIGVuY29kZWRL
ZXlJZCA9IFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKGtleUlELCBQQUw6OlVuZW5jb2RhYmxl
SGFuZGxpbmc6OlVSTEVuY29kZWRFbnRpdGllcyk7Ci0KLSAgICAgICAgYXV0byBpbml0RGF0YSA9
IFVpbnQ4QXJyYXk6OmNyZWF0ZShlbmNvZGVkS2V5SWQuc2l6ZSgpKTsKLSAgICAgICAgaW5pdERh
dGEtPnNldFJhbmdlKGVuY29kZWRLZXlJZC5kYXRhKCksIGVuY29kZWRLZXlJZC5zaXplKCksIDAp
OworICAgICAgICBhdXRvIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShl
bmNvZGVkS2V5SWQpKTsKIAogICAgICAgICBhdXRvIGtleURhdGEgPSBwbGF5ZXIoKS0+Y2FjaGVk
S2V5Rm9yS2V5SWQoa2V5SUQpOwogICAgICAgICBpZiAoa2V5RGF0YSkgewpAQCAtMjE1NCw3ICsy
MTUyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRX
YWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRy
KCkpOworICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhKTsKIAogICAgICAgICBp
ZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGJjYWQxMjU0MzYz
YTE4N2M2OGEzMzY4ZmE3YTdhMTQ4NTE1YjgyZTUuLjI5ODNjZWNhZGVhMjJlM2YyNTViMDc5Yzk2
YTJmNzg5MWNkM2EzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0xMzcsNyArMTM3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCkgb3ZlcnJpZGUg
eyBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdl
ZChmYWxzZSk7IH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQotICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqKTsKKyAg
ICB2b2lkIGtleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBlOTVm
OGMzY2FjZjBhZGUxODExZjExYmFlNjgzYmU0YjVmYjE1NTMzLi4xYzMzMjcyNTQ2YjRlZjhiNzk3
ODhkOTA1MjdhNTBlNTRkNmQ0OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0x
MTQzLDcgKzExNDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaQogI2VuZGlmIC8vIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmtleU5lZWRlZChjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIG1fcGxheWVyLT5rZXlOZWVkZWQoaW5pdERh
dGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRl
eCA1YjRmN2YwMGRiMzNhNWJjZGY2NTZjNjAyMmYxNDgzNGY0MWM1OTA2Li5hYzI3YTIwYjdkMGFk
NWIwYWNjYTgzYzAxMjZlMjY3MzBjY2NmZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1l
QVZGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CiAKIHVzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZl
cio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJs
aWMgTWVkaWFTYW1wbGUgewpAQCAtNjAsNiArNjIsNyBAQCBwdWJsaWM6CiAKICAgICBTYW1wbGVG
bGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZv
cm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6OkNN
U2FtcGxlQnVmZmVyVHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFu
Z2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25z
dCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTgwLDYgKzgzLDEzIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0Qnl0ZVJhbmdlT2Zmc2V0KHNpemVfdCk7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgdXNpbmcgS2V5SURzID0g
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdm9pZCBzZXRLZXlJRHMo
S2V5SURzJiYga2V5SURzKSB7IG1fa2V5SURzID0gV1RGTW92ZShrZXlJRHMpOyB9CisgICAgY29u
c3QgS2V5SURzJiBrZXlJRHMoKSBjb25zdCB7IHJldHVybiBtX2tleUlEczsgfQorICAgIEtleUlE
cyYga2V5SURzKCkgeyByZXR1cm4gbV9rZXlJRHM7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2Ft
cGxlQnVmZmVyUmVmKTsKQEAgLTk0LDEwICsxMDQsMjcgQEAgcHJvdGVjdGVkOgogICAgIEF0b21T
dHJpbmcgbV9pZDsKICAgICBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb24geyBWaWRlb1JvdGF0aW9u
OjpOb25lIH07CiAgICAgYm9vbCBtX21pcnJvcmVkIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4gc3RydWN0IExvZ0FyZ3VtZW50OwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1
bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQyYgc2FtcGxlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHNhbXBsZS50b0pTT05TdHJpbmcoKTsKKyAgICB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpN
ZWRpYVNhbXBsZUFWRk9iakMpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1T
YW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5
cGU7IH0KK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgc2Ft
cGxlKSB7IHJldHVybiBzYW1wbGUucGxhdGZvcm1TYW1wbGVUeXBlKCkgPT0gV2ViQ29yZTo6UGxh
dGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oCmluZGV4IDcyMjQ5N2UwYmM0MjBjZDRlNjJiMDYyNDkyM2JmZDhmOWQ1NDA2MjIu
Ljg5NTFiMjQ3ZGQwMDE1MGVkMTZjZTA0MWFjY2VjYmJmY2JlZDVmOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTEyNSw3
ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5n
ZUFjdGl2ZVN0YXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiwgYm9vbCBhY3RpdmUpOwog
ICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqKTsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyosIFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5l
ZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwog
I2VuZGlmCiAgICAgdm9pZCByZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbQppbmRleCA5MjdkMTMwMzExZThlZWM4YjAyMTU2YWM2MzI4MGE5YmY5ZDA4MDhjLi4x
MjAxYjcyNmJkMDQ3YzVmMTEwZjcxNGFiMTAyMzE5YTYxNjIyY2JmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTE5NSw5
ICsxOTUsMTAgQEAgdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUoU291cmNlQnUKIH0KIAogI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3Vy
Y2VCdWZmZXJLZXlOZWVkZWQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIGJ1ZmZlciwgVWlu
dDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJj
ZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogYnVmZmVyLCBjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIG1fc291cmNlQnVmZmVyc05lZWRpbmdT
ZXNzaW9ucy5hcHBlbmQoYnVmZmVyKTsKKwogICAgIGlmIChtX3BsYXllcikKICAgICAgICAgbV9w
bGF5ZXItPmtleU5lZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKaW5kZXggYzIyZTcyNWY4NTQ2ZjI3OGZm
NjU3YTVmNGM1NzJiOTI5NTE1ZWQ0OC4uNzgxMTIwNGNjZmQxZDgxYjE1MDkyYjU3NWE4Mjk4MGQ2
MmMyZjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRQcm92
aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJl
ZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKICAgICB2b2lkIHdp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHVp
bnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEqLCB1aW50NjRfdCB0cmFja0lEKTsKKyAg
ICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoTlNE
YXRhKiwgdWludDY0X3QgdHJhY2tJRCk7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQppbmRleCBhYmQ4MWU1ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUy
Li5hYTE1ODQwNGIxMGU0NDRhZjZlNWVkZGM4ZGFkNmJhOTZlZDVjYjIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTU3
LDYgKzU3LDEyIEBACiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKK0BpbnRl
cmZhY2UgQVZDb250ZW50S2V5U3BlY2lmaWVyIChXZWJDb3JlUHJpdmF0ZSkKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHkpIE5TRGF0YSAqaW5pdGlhbGl6YXRpb25EYXRhOworQGVuZAorI2VuZGlmCisKIEBp
bnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVh
bURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4gewogICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMqIF9wYXJlbnQ7CiAgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwpA
QCAtMTMzLDYgKzEzOSwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0g
X3BhcnNlcik7CiAgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7CiB9CisKKyNpZiBIQVZF
KEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJl
YW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVNwZWNp
ZmllcjooQVZDb250ZW50S2V5U3BlY2lmaWVyICopa2V5U3BlY2lmaWVyIGZvclRyYWNrSUQ6KENN
UGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAoreworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0
YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBpZiAoW2tleVNwZWNp
ZmllciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluaXRpYWxpemF0aW9uRGF0YSldKQor
ICAgICAgICBfcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JU
cmFja0lEKGtleVNwZWNpZmllci5pbml0aWFsaXphdGlvbkRhdGEsIHRyYWNrSUQpOworfQorI2Vu
ZGlmCisKIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzM0LDEwICszNTAsMTQgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
OjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
KE5TRGF0YSogbnNJbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkKIHsKLSAgICBhdXRvIGluaXRE
YXRhID0gVWludDhBcnJheTo6Y3JlYXRlKG5zSW5pdERhdGEubGVuZ3RoKTsKLSAgICBbbnNJbml0
RGF0YSBnZXRCeXRlczppbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0YS0+bGVuZ3RoKCld
OworICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zSW5pdERhdGEpLCB0cmFja0lE
KTsKK30KIAotICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRENhbGxiYWNrKFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK3ZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3Bl
Y2lmaWVyRm9yVHJhY2tJRChOU0RhdGEqIG5zSW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpCit7
CisgICAgbV9jYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgc3Ryb25nVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIG5zSW5pdERhdGEgPSByZXRhaW5QdHIobnNJbml0RGF0YSksIHRyYWNrSURd
IHsKKyAgICAgICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJh
Y2tJRENhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zSW5pdERhdGEuZ2V0KCkpLCB0cmFj
a0lEKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggNzU0YjFlMmVlYzAyZGYzMzk1ZTVjZGI1
YzA3ZjhlODhhOTM1Y2QwOC4uMzc2YTZmYzE0MzgxMWVlYjg1NjdiY2IwOGU3ZGRkM2IxZmYxM2Nm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTk1
LDcgKzk2LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRp
YVNvdXJjZSA9IG51bGxwdHI7IH0KIAogICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCk7Ci0gICAg
dm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKFJlZjxVaW50OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBo
b3JlPik7CisgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEKFJlZjxTaGFyZWRCdWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIEJv
eDxCaW5hcnlTZW1hcGhvcmU+KTsKKworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SWRlbnRpZmllckZvclRyYWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJh
Y2tJRCk7CiAKICAgICBib29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKIApAQCAtMTMyLDcg
KzEzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkKCk7CiAgICAgCiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgVWludDhBcnJheSogaW5pdERh
dGEoKSB7IHJldHVybiBtX2luaXREYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiBpbml0
RGF0YSgpIHsgcmV0dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KICNlbmRpZgogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECkBAIC0xNTAsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBJ
bml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvblNlZ21lbnQ7CiAgICAgdm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0
aWFsaXphdGlvblNlZ21lbnQmJik7CiAgICAgdm9pZCBkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmcoaW50MzJfdCk7Ci0gICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChS
ZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNh
bXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
KTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBhcHBl
bmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CkBAIC0xNzQsNiArMTc3LDcgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOwogICAgIE1l
ZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBlbnF1ZXVlU2FtcGxl
KFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQg
ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lk
IGFwcGVuZENvbXBsZXRlZCgpOwogICAgIHZvaWQgZGVzdHJveVN0cmVhbURhdGFQYXJzZXIoKTsK
QEAgLTE4Niw2ICsxOTAsMTIgQEAgcHJpdmF0ZToKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRf
R1VBUkRTX0VORAogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBw
bGF5ZXIoKSBjb25zdDsKKyAgICBib29sIGNhbkVucXVldWVTYW1wbGUodWludDY0X3QgdHJhY2tJ
RCwgY29uc3QgTWVkaWFTYW1wbGVBVkZPYmpDJik7CisgICAgYm9vbCB0cmFja0lzQmxvY2tlZCh1
aW50NjRfdCB0cmFjaykgY29uc3Q7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBI
QVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgdm9pZCBrZXlTdGF0dXNlc0NoYW5nZWQoKTsK
KyNlbmRpZgogCiAgICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4+IG1fdmlkZW9U
cmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4+IG1fYXVkaW9UcmFj
a3M7CkBAIC0xOTcsNyArMjA3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJvY2Vzc2luZ0lu
aXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdBcHBl
bmRDb21wbGV0ZWRDYWxsYmFjayB7IGZhbHNlIH07CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQo
KT4+IG1fcGVuZGluZ1RyYWNrQ2hhbmdlQ2FsbGJhY2tzOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8
dWludDY0X3QsIFJlZjxNZWRpYVNhbXBsZT4+PiBtX21lZGlhU2FtcGxlczsKKyAgICBWZWN0b3I8
c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4+IG1fbWVkaWFTYW1w
bGVzOworICAgIERlcXVlPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4+PiBtX2Jsb2NrZWRTYW1wbGVzOwogCiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VB
UkRTX0JFR0lOCkBAIC0yMTUsMTMgKzIyNiwyNyBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQyogbV9tZWRpYVNvdXJjZTsKICAgICBib29sIG1faXNBY3RpdmUgeyBm
YWxzZSB9OworCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgUmVmUHRy
PFVpbnQ4QXJyYXk+IG1faW5pdERhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9pbml0
RGF0YTsKICAgICBXZWFrUHRyPENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM+IG1fc2Vzc2lv
biB7IG51bGxwdHIgfTsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhB
VkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKKyAgICBzdHJ1Y3QgVHJhY2tJbml0RGF0YSB7CisgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhOworICAgICAgICBLZXlJRHMga2V5SURz
OworICAgIH07CisgICAgdXNpbmcgVHJhY2tJbml0RGF0YU1hcCA9IEhhc2hNYXA8dWludDY0X3Qs
IFRyYWNrSW5pdERhdGE+OworICAgIFRyYWNrSW5pdERhdGFNYXAgbV9wZW5kaW5nUHJvdGVjdGVk
VHJhY2tJbml0RGF0YU1hcDsKKyAgICBUcmFja0luaXREYXRhTWFwIG1fcHJvdGVjdGVkVHJhY2tJ
bml0RGF0YU1hcDsKKworICAgIHVzaW5nIFRyYWNrS2V5SURzTWFwID0gSGFzaE1hcDx1aW50NjRf
dCwgS2V5SURzPjsKKyAgICBUcmFja0tleUlEc01hcCBtX2N1cnJlbnRUcmFja0lEczsKKwogICAg
IFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5j
ZTsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAg
ICBVbmlxdWVSZWY8T2JzZXJ2ZXI8dm9pZCgpPj4gbV9rZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZl
cjsKKyAgICBLZXlJRHMgbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRTaXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGU2MWEzYTdmY2M5NjM3OThmNjg5OGMw
MTI3YmQ3NGJiMzMwYmY3YTEuLmYzZDQyNDViZTE0MDA4ZjA1YzZiOTlkOTY5ZmY0Y2ZkMGVjNzc0
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCkBAIC03Niw2ICs3NiwxMiBAQCAtICh2b2lkKWV4cGVjdE1pbmltdW1VcGNv
bWluZ1NhbXBsZUJ1ZmZlclByZXNlbnRhdGlvblRpbWU6IChDTVRpbWUpbWluaW11bVVwY29taQog
LSAodm9pZClyZXNldFVwY29taW5nU2FtcGxlQnVmZmVyUHJlc2VudGF0aW9uVGltZUV4cGVjdGF0
aW9uczsKIEBlbmQKIAorQGludGVyZmFjZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAoV2Vi
Q29yZVNhbXBsZUJ1ZmZlcktleVNlc3Npb24pIDxBVkNvbnRlbnRLZXlSZWNpcGllbnQ+CitAZW5k
CisKK0BpbnRlcmZhY2UgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyIChXZWJDb3JlU2FtcGxl
QnVmZmVyS2V5U2Vzc2lvbikgPEFWQ29udGVudEtleVJlY2lwaWVudD4KK0BlbmQKKwogI3ByYWdt
YSBtYXJrIC0KICNwcmFnbWEgbWFyayBBVlN0cmVhbVNlc3Npb24KIApAQCAtMjc1LDYgKzI4MSwy
NCBAQCBzdGF0aWMgdWludDY0X3QgbmV4dE1hcElEKCkKICAgICByZXR1cm4gKyttYXBJRDsKIH0K
IAorc3RhdGljIGJvb2wgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKQor
eworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzID0gZmFsc2U7CisgICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBbJl0gewor
ICAgICAgICBzdXBwb3J0cyA9IFtQQUw6OmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNs
YXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRlbnRLZXlSZWNpcGllbnQp
XQorICAgICAgICAgICAgJiYgW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFz
cygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woQVZDb250ZW50S2V5UmVjaXBpZW50KV07
CisgICAgfSk7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitzdGF0aWMgVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHMpCit7CisgICAgcmV0dXJuIGtleUlEcy5tYXAoW10g
KGF1dG8mIGtleUlEKSB7CisgICAgICAgIHJldHVybiBrZXlJRC5jb3B5UmVmKCk7CisgICAgfSk7
Cit9CisKIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRp
b25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqIGxpc3RlbmVyLCBDRlN0cmluZ1JlZiBub3RpZmljYXRp
b25OYW1lLCBjb25zdCB2b2lkKiwgQ0ZUeXBlUmVmKQogewogICAgIGlmICghQ0ZFcXVhbChQQUw6
OmtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBub3Rp
ZmljYXRpb25OYW1lKSkKQEAgLTMwNyw2ICszMzEsOSBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
QwogICAgICwgbV9lcnJvckxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlckVycm9y
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50Oip0aGlzXSkpCiAgICAgLCBtX2FwcGVuZFF1
ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBkYXRhIHBh
cnNlciBxdWV1ZSIpKQogICAgICwgbV9tZWRpYVNvdXJjZShwYXJlbnQpCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICwgbV9rZXlT
dGF0dXNlc0NoYW5nZWRPYnNlcnZlcihtYWtlVW5pcXVlUmVmPE9ic2VydmVyPHZvaWQoKT4+KFt0
aGlzXSB7IGtleVN0YXR1c2VzQ2hhbmdlZCgpOyB9KSkKKyNlbmRpZgogICAgICwgbV9tYXBJRChu
ZXh0TWFwSUQoKSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBh
cmVudC0+bG9nZ2VyKCkpCkBAIC0zNjQsNiArMzkxLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdt
ZW4KIAogICAgIGNsZWFyVHJhY2tzKCk7CiAKKyAgICBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFN
YXAuc3dhcChtX3BlbmRpbmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwKTsKKyAgICBtX3BlbmRp
bmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwLmNsZWFyKCk7CisKICAgICBmb3IgKGF1dG8gdmlk
ZW9UcmFja0luZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CiAgICAgICAgIHZpZGVvVHJhY2tJ
bmZvLnRyYWNrLT5zZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgdGhpc10gKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3Rl
ZCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTQ1OCwxMCArNDg4LDE2IEBAIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFy
c2luZyhpbnQzMl90IGNvZGUpCiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JU
cmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwg
Y29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYm
IG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkK
IHsKICAgICBVTlVTRURfUEFSQU0obWVkaWFUeXBlKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICBhdXRvIGZpbmRSZXN1bHQg
PSBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuZmluZCh0cmFja0lkKTsKKyAgICBpZiAoZmlu
ZFJlc3VsdCAhPSBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuZW5kKCkpCisgICAgICAgIG1l
ZGlhU2FtcGxlLT5zZXRLZXlJRHMoY29weUtleUlEcyhmaW5kUmVzdWx0LT52YWx1ZS5rZXlJRHMp
KTsKKyNlbmRpZgorCiAgICAgaWYgKG1fcHJvY2Vzc2luZ0luaXRpYWxpemF0aW9uU2VnbWVudCkg
ewogICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgbWVkaWFTYW1wbGUuZ2V0KCkpOwog
ICAgICAgICBtX21lZGlhU2FtcGxlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tJZCwgV1RG
TW92ZShtZWRpYVNhbXBsZSkpKTsKQEAgLTUwOCw3ICs1NDQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRgogI2VuZGlmCiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVm
PFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1h
cGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxC
aW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUpCiB7CiAgICAgYXV0byBwbGF5ZXIg
PSB0aGlzLT5wbGF5ZXIoKTsKICAgICBpZiAoIXBsYXllcikKQEAgLTUxOSwxMSArNTU1LDE1IEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAKICAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFj
a0lEOwogICAgIG1faW5pdERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKTsKLSAgICBtX21lZGlhU291
cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgbV9pbml0RGF0YS5nZXQoKSk7CisgICAg
bV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVlZGVkKHRoaXMsICptX2luaXREYXRhKTsK
KwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBwbGF5ZXItPmNkbVNlc3Npb24oKSkgewotICAgICAg
ICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCisgICAgICAgIGlm
IChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKSB7CisgICAgICAgICAg
ICAvLyBuby1vcC4KKyAgICAgICAgfSBlbHNlIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVh
bURhdGFQYXJzZXIoKSkKICAgICAgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwot
ICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgaWYgKGhhc1Nl
c3Npb25TZW1hcGhvcmUpCisgICAgICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNTMzLDE0ICs1NzMsMTcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBoYXNT
ZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhB
VkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9pbml0RGF0YS0+ZGF0YSgpLCBtX2luaXREYXRhLT5ieXRlTGVuZ3Ro
KCkpOwotICAgIGF1dG8ga2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRy
YWN0S2V5SURzU2luZihpbml0RGF0YUJ1ZmZlcik7CisgICAgYXV0byBrZXlJRHMgPSBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKCptX2luaXREYXRhKTsKICAg
ICBpZiAoIWtleUlEcykKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9wZW5kaW5nUHJvdGVjdGVk
VHJhY2tJbml0RGF0YU1hcC5zZXQodHJhY2tJRCwgVHJhY2tJbml0RGF0YSB7IG1faW5pdERhdGEu
Y29weVJlZigpLCAqa2V5SURzIH0pOworCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAg
ICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktl
eUlEcyhrZXlJRHMudmFsdWUoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRo
aXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKKyAgICAgICAgICAgIGlmIChzYW1wbGVCdWZmZXJSZW5k
ZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gbm8tb3AuCisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNl
cigpKQogICAgICAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9u
KCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgICAgICAgICAgaWYgKG1faGFz
U2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9y
ZS0+c2lnbmFsKCk7CkBAIC01NTIsNyArNTk1LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8K
ICAgICB9CiAKICAgICBtX2tleUlEcyA9IFdURk1vdmUoa2V5SURzLnZhbHVlKCkpOwotICAgIHBs
YXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoInNpbmYiLCBpbml0RGF0YUJ1ZmZl
ci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CisgICAgcGxheWVyLT5pbml0aWFsaXphdGlvbkRh
dGFFbmNvdW50ZXJlZCgic2luZiIsIG1faW5pdERhdGEtPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkp
OwogCiAgICAgbV93YWl0aW5nRm9yS2V5ID0gdHJ1ZTsKICAgICBwbGF5ZXItPndhaXRpbmdGb3JL
ZXlDaGFuZ2VkKCk7CkBAIC01ODcsNyArNjMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgd2Vha1Ro
aXMtPmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhlcnJvckNvZGUpOwogICAgIH0pOwog
Ci0gICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPE1l
ZGlhU2FtcGxlPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRp
YVR5cGUpIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRd
IChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBhYm9ydENhbGxlZCAhPSB3ZWFrVGhpcy0+bV9hYm9y
dENhbGxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYxNiw3ICs2NTksNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmUs
IGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0oUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEs
IHVpbnQ2NF90IHRyYWNrSUQpIG11dGFibGUgeworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soW3dl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNlbWFw
aG9yZSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXShSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCB1aW50NjRfdCB0cmFja0lEKSBtdXRhYmxlIHsKICAgICAgICAgLy8gQ2FsbGVkIG9u
IHRoZSBkYXRhIHBhcnNlciBxdWV1ZS4KICAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFz
U2Vzc2lvblNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgYWJvcnRD
YWxsZWQsIGluaXREYXRhID0gV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25T
ZW1hcGhvcmVdICgpIG11dGFibGUgewpAQCAtNjM2LDYgKzY3OSwxMyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAg
ICAgICB9CiAgICAgfSk7CiAKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8IGFib3J0Q2FsbGVkICE9IHdlYWtUaGlz
LT5tX2Fib3J0Q2FsbGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+
ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChX
VEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgbnVsbHB0cik7CisgICAgfSk7CisKICAgICBtX3Bh
cnNpbmdTdWNjZWVkZWQgPSB0cnVlOwogCiAgICAgbV9hcHBlbmRRdWV1ZS0+ZGlzcGF0Y2goW2Rh
dGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRl
V2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2VyLCBhYm9ydENhbGxlZCA9IG1fYWJvcnRD
YWxsZWRdKCkgbXV0YWJsZSB7CkBAIC03MzYsNiArNzg2LDExIEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMoKQogICAgICAgICBbcmVuZGVyZXIgZmx1
c2hdOwogICAgICAgICBbcmVuZGVyZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgICAg
ICBbbV9lcnJvckxpc3RlbmVyIHN0b3BPYnNlcnZpbmdSZW5kZXJlcjpyZW5kZXJlci5nZXQoKV07
CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCisgICAgICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1
cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtl
eVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50OnJlbmRlcmVyLmdldCgpXTsKKyNl
bmRpZgogICAgIH0KIAogICAgIFttX2Vycm9yTGlzdGVuZXIgaW52YWxpZGF0ZV07CkBAIC04NDMs
NiArODk4LDExIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hh
bmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFW
RShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1w
bGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2Rt
SW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpyZW5k
ZXJlci5nZXQoKV07CisjZW5kaWYKKwogICAgICAgICAgICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0
aGlzIH07CiAgICAgICAgICAgICBbcmVuZGVyZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9u
UXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOl57CiAgICAgICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQpAQCAtOTA5LDcgKzk2OSwyNCBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpzZXRDRE1JbnN0YW5jZShDRE1JbnN0YW5jZSogaW5zdGFuY2UpCiAK
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCisgICAgaWYgKHNhbXBsZUJ1ZmZlclJl
bmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkgJiYgbV9jZG1JbnN0YW5jZSkgeworICAgICAgICBp
ZiAobV9kaXNwbGF5TGF5ZXIpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtl
eVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgp
XTsKKworICAgICAgICBmb3IgKGF1dG8mIGF1ZGlvUmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJz
LnZhbHVlcygpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9u
KCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDphdWRpb1JlbmRlcmVyLmdldCgpXTsKKyAgICB9
CisKICAgICBtX2NkbUluc3RhbmNlID0gZnBzSW5zdGFuY2U7CisKKyAgICBpZiAoc2FtcGxlQnVm
ZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSAmJiBtX2NkbUluc3RhbmNlKSB7CisgICAg
ICAgIGlmIChtX2Rpc3BsYXlMYXllcikKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250
ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9kaXNwbGF5TGF5ZXIuZ2V0
KCldOworCisgICAgICAgIGZvciAoYXV0byYgYXVkaW9SZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJl
cnMudmFsdWVzKCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Np
b24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OmF1ZGlvUmVuZGVyZXIuZ2V0KCldOworICAgIH0K
KwogICAgIGF0dGVtcHRUb0RlY3J5cHQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGluc3Rh
bmNlKTsKQEAgLTkyNiw4ICsxMDAzLDEwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmF0dGVtcHRUb0RlY3J5cHQoKQogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2Vy
KCkpCi0gICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29u
dGVudEtleVJlY2lwaWVudDpwYXJzZXJdOworICAgIGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJz
U3VwcG9ydEtleVNlc3Npb24oKSkgeworICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5z
dHJlYW1EYXRhUGFyc2VyKCkpCisgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50
S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKKyAgICB9CiAgICAg
aWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhv
cmUtPnNpZ25hbCgpOwogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpA
QCAtMTEwNSwxOSArMTE4NCw4OSBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAog
ICAgICAgICBwbGF5ZXItPnNldEhhc0F2YWlsYWJsZUF1ZGlvU2FtcGxlKHJlbmRlcmVyLCBmYWxz
ZSk7CiB9CiAKK2Jvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrSXNCbG9ja2Vk
KHVpbnQ2NF90IHRyYWNrSUQpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzYW1wbGVQYWlyIDog
bV9ibG9ja2VkU2FtcGxlcykgeworICAgICAgICBpZiAoc2FtcGxlUGFpci5maXJzdCA9PSB0cmFj
a0lEKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VT
U0lPTikKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmtleVN0YXR1c2VzQ2hhbmdl
ZCgpCit7CisgICAgd2hpbGUgKCFtX2Jsb2NrZWRTYW1wbGVzLmlzRW1wdHkoKSkgeworICAgICAg
ICBhdXRvJiBmaXJzdFBhaXIgPSBtX2Jsb2NrZWRTYW1wbGVzLmZpcnN0KCk7CisKKyAgICAgICAg
Ly8gSWYgd2Ugc3RpbGwgY2FuJ3QgZW5xdWV1ZSB0aGUgc2FtcGxlLCBiYWlsLgorICAgICAgICBp
ZiAoIWNhbkVucXVldWVTYW1wbGUoZmlyc3RQYWlyLmZpcnN0LCBmaXJzdFBhaXIuc2Vjb25kKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGZpcnN0UGFpclRha2VuID0gbV9i
bG9ja2VkU2FtcGxlcy50YWtlRmlyc3QoKTsKKyAgICAgICAgZW5xdWV1ZVNhbXBsZShXVEZNb3Zl
KGZpcnN0UGFpclRha2VuLnNlY29uZCksIGZpcnN0UGFpclRha2VuLmZpcnN0KTsKKyAgICB9Cit9
CisjZW5kaWYKKworYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuRW5xdWV1ZVNh
bXBsZSh1aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVNhbXBsZUFWRk9iakMmIHNhbXBsZSkK
K3sKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCisgICAgLy8gSWYgc2FtcGxlIGJ1ZmZlcnMgZG9uJ3Qgc3VwcG9ydCBBVkNvbnRlbnRLZXlT
ZXNzaW9uOiBlbnF1ZXVlIHNhbXBsZQorICAgIGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3Vw
cG9ydEtleVNlc3Npb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBpZiBzYW1w
bGUgaXMgdW5lbmNyeXRwZWQ6IGVucXVldWUgc2FtcGxlCisgICAgaWYgKHNhbXBsZS5rZXlJRHMo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlIGlz
IGVuY3J5cHRlZCwgYnV0IHdlIGFyZSBub3QgYXR0YWNoZWQgdG8gYSBDRE06IGRvIG5vdCBlbnF1
ZXVlIHNhbXBsZS4KKyAgICBpZiAoIW1fY2RtSW5zdGFuY2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIGlmIHNhbXBsZSBpcyBlbmNyeXB0ZWQsIGFuZCBrZXlJRHMgbWF0Y2ggdGhl
IGN1cnJlbnQgc2V0IG9mIGtleUlEczogZW5xdWV1ZSBzYW1wbGUuCisgICAgYXV0byBmaW5kUmVz
dWx0ID0gbV9jdXJyZW50VHJhY2tJRHMuZmluZCh0cmFja0lEKTsKKyAgICBpZiAoZmluZFJlc3Vs
dCAhPSBtX2N1cnJlbnRUcmFja0lEcy5lbmQoKSAmJiBmaW5kUmVzdWx0LT52YWx1ZSA9PSBzYW1w
bGUua2V5SURzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlJ3Mg
c2V0IG9mIGtleUlEcyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzZXQgb2Yga2V5SURzLCBj
b25zdWx0IHdpdGggdGhlIENETQorICAgIC8vIHRvIGRldGVybWluZSBpZiB0aGUga2V5SURzIGFy
ZSB1c2FibGU7IGlmIHNvLCB1cGRhdGUgdGhlIGN1cnJlbnQgc2V0IG9mIGtleUlEcyBhbmQgZW5x
dWV1ZSBzYW1wbGUuCisgICAgaWYgKG1fY2RtSW5zdGFuY2UtPmlzQW55S2V5VXNhYmxlKHNhbXBs
ZS5rZXlJRHMoKSkpIHsKKyAgICAgICAgbV9jdXJyZW50VHJhY2tJRHMuc2V0KHRyYWNrSUQsIHNh
bXBsZS5rZXlJRHMoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7CisjZWxzZQorICAgIHJldHVybiB0cnVlOworI2VuZGlmCit9CisKIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNh
bXBsZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKICAgICBhdXRvIHRyYWNr
SUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0
cmluZykudmFsdWVfb3IoMCk7CiAgICAgaWYgKHRyYWNrSUQgIT0gbV9lbmFibGVkVmlkZW9UcmFj
a0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBsZS0+cGxhdGZv
cm1TYW1wbGUoKTsKLSAgICBpZiAocGxhdGZvcm1TYW1wbGUudHlwZSAhPSBQbGF0Zm9ybVNhbXBs
ZTo6Q01TYW1wbGVCdWZmZXJUeXBlKQorICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+
KHNhbXBsZSkpOworICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBzYW1wbGVBVkZPYmpD
ID0gc3RhdGljX3JlZmVyZW5jZV9jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oV1RGTW92ZShzYW1w
bGUpKTsKKyAgICBpZiAoIXNhbXBsZUFWRk9iakMtPmtleUlEcygpLmlzRW1wdHkoKSAmJiAhY2Fu
RW5xdWV1ZVNhbXBsZSh0cmFja0lELCBzYW1wbGVBVkZPYmpDKSkgeworICAgICAgICBtX2Jsb2Nr
ZWRTYW1wbGVzLmFwcGVuZCh7IHRyYWNrSUQsIFdURk1vdmUoc2FtcGxlQVZGT2JqQykgfSk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICBlbnF1ZXVlU2FtcGxlKFdURk1vdmUoc2FtcGxl
QVZGT2JqQyksIHRyYWNrSUQpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRf
dCB0cmFja0lEKQorewogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVS
OwogICAgIERFQlVHX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRyYWNrIElEID0gIiwgdHJhY2tJ
RCwgIiwgc2FtcGxlID0gIiwgc2FtcGxlLmdldCgpKTsKIAorICAgIFBsYXRmb3JtU2FtcGxlIHBs
YXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworCiAgICAgQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRG
b3JtYXREZXNjcmlwdGlvbihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpOwog
ICAgIEFTU0VSVChmb3JtYXREZXNjcmlwdGlvbik7CiAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlv
bikgewpAQCAtMTI4NCw2ICsxNDMzLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKQogICAgIGVs
c2UKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHRyYWNrSXNCbG9ja2VkKHRyYWNrSUQpKQor
ICAgICAgICByZXR1cm47CisKICAgICBwcm92aWRlTWVkaWFEYXRhKEF0b21TdHJpbmc6Om51bWJl
cih0cmFja0lEKSk7CiB9CiAKQEAgLTEzNzUsMTEgKzE1MjcsMjEgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6c2V0VmlkZW9MYXllcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciogbGF5ZXIKICAgICAgICAgW21fZGlzcGxheUxheWVyIGZsdXNoXTsKICAgICAgICAgW21fZGlz
cGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKICAgICAgICAgW21fZXJyb3JMaXN0
ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXI6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAg
ICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vz
c2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkg
cmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5nZXQoKV07CisjZW5kaWYK
ICAgICB9CiAKICAgICBtX2Rpc3BsYXlMYXllciA9IGxheWVyOwogCiAgICAgaWYgKG1fZGlzcGxh
eUxheWVyKSB7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRL
RVlTRVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5k
ZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNv
bnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5n
ZXQoKV07CisjZW5kaWYKKwogICAgICAgICBXZWFrUHRyIHdlYWtUaGlzIHsgKnRoaXMgfTsKICAg
ICAgICAgW21fZGlzcGxheUxheWVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeIHsKICAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMz
ZmIxNGQyMzE1NTk0YTg4ODM2NS4uZmMyYmFiOTA3ZDk4MzUzZDFmOGFhZDY5NGY5ZTU1MmE0YzI5
ZmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTG9n
Z2VyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKLWNsYXNzIE1l
ZGlhU2FtcGxlOworY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRo
cmVhZC4KLSAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpPjsKKyAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlTWVkaWFEYXRh
Q2FsbGJhY2soRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewog
ICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OwpAQCAtMTM3LDEyICsxMzcsMTkgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFdpbGwgYmUg
Y2FsbGVkIHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KLSAgICB1c2luZyBEaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxVaW50OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lEKT47
CisgICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1
aW50NjRfdCB0cmFja0lEKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2sp
CiAgICAgewogICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAor
ICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1aW50NjRfdCB0cmFja0lEKT47CisgICAg
dm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENh
bGxiYWNrKERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2Fs
bGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwor
ICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFNvdXJjZUJ1ZmZlclBhcnNlcigpOwogCkBAIC0xNTIs
NiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayBt
X2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjazsKICAgICBXaWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fd2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKICAg
ICBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
Q2FsbGJhY2sgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEQ2FsbGJhY2s7CisgICAgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRp
ZmllckZvclRyYWNrSURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50
aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCmluZGV4IDA1YTgzMTZkYzI3ZTYzMDE3ZjM5N2YxOTI0NjliODJhMzNiN2IwMzQu
LmFlMTY0MTRmMjFjNjg0NmMxODk3NzA5ZTE0MjRlNGE2YTRiNzYxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNv
bnN0IFRyYWNrRQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRv
JiBrZXlJZCA9IGtleUlkRWxlbWVudC52YWx1ZSgpOwotICAgICAgICAgICAgbV9rZXlJZHMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKHRyYWNrRW50cnkudHJhY2tfdWlkLnZhbHVlKCksIFVpbnQ4QXJy
YXk6OmNyZWF0ZShrZXlJZC5kYXRhKCksIGtleUlkLnNpemUoKSkpKTsKKyAgICAgICAgICAgIG1f
a2V5SWRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih0cmFja0VudHJ5LnRyYWNrX3VpZC52YWx1ZSgp
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShrZXlJZC5kYXRhKCksIGtleUlkLnNpemUoKSkpKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDI4ZTcz
ZmJhNTAyM2M4MTZiZmIyNDJjNWY5OTBkYjk3YTE4YmMxZmYuLmU4NzZhYjQxNGE0YWJiMzNkNTE4
YzM3YjQxZmU1YTE0Nzc2YWI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAg
LTI2OSw3ICsyNjksNyBAQCBwcml2YXRlOgogICAgIHdlYm06OlN0YXR1cyBPbkZyYW1lKGNvbnN0
IHdlYm06OkZyYW1lTWV0YWRhdGEmLCB3ZWJtOjpSZWFkZXIqLCB1aW50NjRfdCogYnl0ZXNSZW1h
aW5pbmcpIGZpbmFsOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluaXRpYWxpemF0aW9uU2VnbWVu
dD4gbV9pbml0aWFsaXphdGlvblNlZ21lbnQ7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRf
dCwgUmVmPFVpbnQ4QXJyYXk+Pj4gbV9rZXlJZHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50
NjRfdCwgUmVmPFNoYXJlZEJ1ZmZlcj4+PiBtX2tleUlkczsKICAgICB3ZWJtOjpTdGF0dXMgbV9z
dGF0dXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYm06OldlYm1QYXJzZXI+IG1fcGFyc2VyOwog
ICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFTYW1wbGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCmluZGV4IDNiNWE2OWFhNzZhNmFhZjE3YTU2
MTc2YzFmYjIzOWE0ZjkxMGIwYmIuLmZmOGMxYThiNDgxZDdmMzNjYzI0N2I2NGRmMWI4ZmFjNzBj
YmRkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCkBAIC02Miw2ICs2Miw3
IEBAIHB1YmxpYzoKICAgICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBs
ZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVy
U2FtcGxlVHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRB
cnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA0YWM2OWFjZDlhMDBjZjZlMTk5YTMzYWFjNDczZDhj
ZDg1ZGM1ZTVmLi4wYTk0YWNmMWExZTEzNjZmNmE1NzI1ODhiNzcwNDFlNGMzYzY0NzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNjEsNiArNjEsNyBAQCBw
cml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHNpemVvZihtX2JveCk7IH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlOyB9CiAgICAgc3Rk
OjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA0MmEzMjA2NTRiMDNk
ZjliNDM5Nzc3OTQyNTY0NTgyMDA2Y2RhMTEwLi43MTFjZWQwYmYxMzE0MjU5MTc3NWZmZDc5M2Fl
NWE4NmM2YWUwY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OTgsMTEgKzY5OCwxMCBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2Fj
aGVkS2V5Rm9yS2V5SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1l
c3NhZ2UpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
bWVzc2FnZVJlZmVyZW5jZTsKLSAgICBpZiAobWVzc2FnZSkKLSAgICAgICAgbWVzc2FnZVJlZmVy
ZW5jZSA9IHsgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5ieXRlTGVuZ3RoKCkgfTsKKyAgICBt
ZXNzYWdlUmVmZXJlbmNlID0geyBtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkgfTsKICAg
ICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Ok1lZGlhUGxheWVyS2V5TmVlZGVkKFdURk1vdmUobWVzc2FnZVJlZmVyZW5jZSkp
LCBtX2lkKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggOTMxNmI2NmFiMzU5NjZlNWI2
NDVkZDFjN2NlMGU4MTJmMjA2YTYzNy4uNTk1YzU4OTE5ZWExM2ZlYjk1ZDhmYzBkMGI0MzIzMDY4
YTgyYTBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKIAog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKLSAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAg
ICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApp
bmRleCA3NzRjY2YzMWYyNjc3ZDBhMDUyMTc2NTFiM2I0ZTEzMjM1YzRjMjk0Li5mODk1N2IzYjhl
NDE4NjIzYjNiNTZjMDEyMTU3MDA1YmRjZjYyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJz
ZUJ5dGVTb3VyY2UoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAg
ICAgICBkaWRQYXJzZVRyYWNrcyh7IH0sIGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBwYXJz
ZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3Qg
dHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBwYXJzZXItPnNldERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNr
SUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIGRpZFByb3ZpZGVNZWRpYURh
dGEoV1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiAK
QEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNr
cyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIG1faW5pdCA9
IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURhdGEo
UmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBT
dHJpbmcmKQordm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8
TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25z
dCBTdHJpbmcmKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFGb3JtYXRSZWFkZXIuaAppbmRleCA2NTA5M2U5ZTQ2YjQwYjVhMzk3NmZkZWYyOWU2MTNjNjQ1
MWYzMTVhLi4xNWQ1NTczNjMzODE3NDYwYzJlNjIwNDQxOTAxMDIzY2Y4NmI0YTkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogREVDTEFSRV9DT1JFX01F
RElBX1RSQUlUUyhGb3JtYXRSZWFkZXIpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBN
ZWRpYVNhbXBsZUFWRk9iakM7CiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXI7CiB9CiAKQEAgLTY3
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBhcnNlVHJhY2tzKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYmLCB1aW50NjRf
dCBlcnJvckNvZGUpOwogICAgIHZvaWQgZGlkU2VsZWN0VmlkZW9UcmFjayhXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQogICAgIHZvaWQgZGlkRW5hYmxlQXVkaW9UcmFjayhX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQotICAgIHZvaWQgZGlkUHJvdmlk
ZU1lZGlhRGF0YShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90LCBjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPFdlYkNvcmU6Ok1lZGlh
U2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmlu
aXNoUGFyc2luZyhSZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIC8v
IENNQmFzZUNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGY4MzM2
YmYwMTM3MjEwOTBkYTE5Mzc4ZmI1YTQ1M2M4ZGFjYTU3NmYuLmI2NmYzYTM1YTk2ZjdiNWQ1Zjk3
YWJkNmVkYTAwMjYxNTgyNmUxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5o
CkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNv
bnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1T
YW1wbGVUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6
OkJ5dGVSYW5nZVNhbXBsZVR5cGU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25z
dCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFU
aW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAppbmRleCA4ZDllNWZmOTJhYzNiM2YwZWI3MTMzOWVmZThiNGJmM2Y0Mjk2NGRjLi41Yzcx
YTI2OGUwZDBiNDY3NTBiM2I2MmY1YzdkY2Y3NzJmMmIwNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwCkBAIC0xMTkxLDcgKzExOTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6a2V5QWRkZWQoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlh
UGxheWVyS2V5TmVlZGVkKElQQzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYg
KFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKSkKLSAgICAgICAgcGxheWVyLT5rZXlOZWVk
ZWQoVWludDhBcnJheTo6Y3JlYXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSkucHRy
KCkpOworICAgICAgICBwbGF5ZXItPmtleU5lZWRlZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNz
YWdlKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKaW5kZXggMzFhMWE4NDU3ZWJm
Njg1MzYxOGQ2OGQ1ZWU5NTEyZWQ3NGVmMWZmNy4uYjI2YmFiNWVmN2VjNzlmYjI4ZmRhZWRiM2U4
YzRmMzBhNTQ3OWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC0xMDIsNiArMTAyLDcgQEAg
cHJpdmF0ZToKICAgICB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CiAg
ICAgLy8gRklYTUU6IFdoZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFTYW1wbGUsIHRoZXNlIHdp
bGwgbm90IGJlIG5lZWRlZC4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNh
bXBsZSgpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpUeXBlIHBs
YXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OlBsYXRmb3Jt
U2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlOyB9CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIGdldFBpeGVsQnVmZmVyKCk7CkBAIC0xNDksOSArMTUwLDkgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXM+IFJlbW8KIAogfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJL
aXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eVR5cGU7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9y
bVNhbXBsZVR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5VHlwZTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lKQotICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1l
ZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBs
ZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2Ft
cGxlLnBsYXRmb3JtU2FtcGxlVHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHlUeXBlOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBlODdhYWI2MzBmNjYyMjFmOGM1YWUzN2M2NDFmZGIyNTIxZjkxZDFlLi44YmQwMDYzM2RmMGIz
N2YzNzllM2NiODMwMTg3OTI4Y2Q5NWQ2YjU3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC02MjcsNiArNjI3LDE1IEBACiAgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgogICAgICAgICBBZGRlZCBpbXBsZW1lbnRh
dGlvbi4KIAorMjAyMi0wMi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIEFkb3B0IC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50
S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6IGRlbGVnYXRlIGNhbGxiYWNrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMDkKKworICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2FtcGxlTWFwLmNwcDoKKwogMjAyMi0wMi0wNyAgUm95IFJlYXBvciAgPHJyZWFwb3JA
YXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIEF1dG9pbnN0YWxsZXIgbWF5IGZh
aWwgdG8gaW5zdGFsbCB3aGVlbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggYzQ1YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRh
NDg2NjUxOS4uNWE2NTM1ODMwMTVkMjg4ZGVmNDdiY2I0NzkyYzI0YzhkMmY5YTdlZiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTcx
LDYgKzcxLDcgQEAgcHVibGljOgogICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNh
bXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHsgbnVs
bHB0ciB9IH07IH0KKyAgICBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6Tm9uZTsgfQogICAgIHN0ZDo6
b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451773</attachid>
            <date>2022-02-11 21:44:07 -0800</date>
            <delta_ts>2022-02-11 23:47:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236109-20220211214407.patch</filename>
            <type>text/plain</type>
            <size>77723</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRmODRkYTQ5MmY5MDI2OTQyZTk4MzZi
OTI1Yjg0NTYzZTQ3ZjNhZTMuLjMzZDAyNTlmNTlkMjMwZjA5YWEzYjM3MzM3MmMyM2RkZWUzMzk0
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0zMjYsNiArMzI2LDE1IEBACiAKICAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWw6CiAKKzIwMjItMDItMDcgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBk
ZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjItMDItMDYgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBNYWtlIEJpdG1hcCBjb25z
dGV4cHIgZnJpZW5kbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOTgwYTJmYmNjMmM3MzFhOTllNGEzOTFiOWZj
YzY0MTdhZTlhZTdmLi5iMzRhMGJmZGQ5MWY0NzkxMzIyNzMxZGQyZjJhMjJkYWQzMDAxY2FiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJz
ZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjEwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBUaGUg
Y3VycmVudCBzZXQgb2YgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9kcyBoYXZlIGEgc2lnbmlmaWNh
bnQgc2hvcnRjb21pbmc6IGNsaWVudHMgbXVzdAorICAgICAgICBhdHRhY2ggYW4gQVZDb250ZW50
S2V5U2Vzc2lvbiB0byB0aGUgQVZTdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSByZXR1cm5pbmcgZnJv
bSB0aGUKKyAgICAgICAgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6IGNhbGxiYWNrLiBUaGlzCisgICAgICAg
IGlzIGJlY2F1c2UgdGhlIHBhcnNlciBpdHNlbGYgYXR0YWNoZXMgdGhlIG9iamVjdCByZXF1aXJl
ZCB0byBkZWNyeXB0IGVhY2ggZW5jcnlwdGVkIHNhbXBsZQorICAgICAgICB0byB0aGUgc2FtcGxl
IGl0c2VsZiBhdCB0aGUgcGFyc2luZyBzdGFnZS4gSWYgYSBjbGllbnQgZG9lcyBub3QgYXR0YWNo
IGFuCisgICAgICAgIEFWQ29udGVudEtleVNlc3Npb24gYnkgdGhlIHRpbWUgdGhhdCBtZXRob2Qg
cmV0dXJucywgQVZTdHJlYW1EYXRhUGFyc2VyIHdpbGwgYXR0YWNoIG9uZSBvZgorICAgICAgICBp
dHMgb3duLgorCisgICAgICAgIFRoZSB3ZWItZmFjaW5nIGJlaGF2aW9yIHRoaXMgY2F1c2VzIGlz
IHRoYXQgTVNFIGFwcGVuZHMgd2lsbCBub3QgY29tcGxldGUgKGJ5IGZpcmluZworICAgICAgICBh
biAidXBkYXRlZW5kIiBldmVudCkgaWYgYW4gZW5jcnlwdGVkIHNlZ21lbnQgaXMgcGFyc2VkIHVu
dGlsIHRoZSBjbGllbnQgY3JlYXRlcyBhbmQKKyAgICAgICAgYXR0YWNoZXMgYSBNZWRpYUtleXMg
b2JqZWN0IHdpdGggYSB2YWxpZCBzZXNzaW9uLgorCisgICAgICAgIEEgbmV3IGRlbGVnYXRlIGNh
bGxiYWNrIG1ldGhvZCwgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVj
aWZpZXI6Zm9yVHJhY2tJRDoKKyAgICAgICAgYWxsb3dzIHVzIHRvIHdvcmsgYXJvdW5kIHRoaXMg
cHJvYmxlbS4gV2hlbiB0aGlzIGRlbGVnYXRlIGlzIHByZXNlbnQsIEFWU3RyZWFtRGF0YVBhcnNl
cgorICAgICAgICB3aWxsIHNraXAgYXR0YWNoaW5nIGEgZGVjcnlwdGlvbiBvYmplY3QgZW50aXJl
bHksIG1vdmluZyB0aGF0IHJlc3BvbnNpYmlsaXR5IHRvIHRoZQorICAgICAgICBjbGllbnQuIEhv
d2V2ZXIsIHRoaXMgY29tZXMgd2l0aCB0aGUgcmVxdWlyZW1lbnQgdGhhdCB0aGUgY2xpZW50IChX
ZWJLaXQpIHdvbid0IGVucXVldWUKKyAgICAgICAgYW4gZW5jcnlwdGVkIHNhbXBsZSBiZWZvcmUg
YSBkZWNyeXB0aW9uIG9iamVjdCBpcyBhdmFpbGFibGUgdmlhIEFWQ29udGVudEtleVNlc3Npb24u
CisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWVldCB0aGlzIG5ldyByZXF1aXJlbWVudCwgV2ViS2l0
IHdpbGwgYXNzb2NpYXRlIHRoZSBrZXkgSURzIG5lY2Vzc2FyeSB0bworICAgICAgICBkZWNyeXB0
IGVhY2ggc2FtcGxlIGluIHRoZSBNZWRpYVNhbXBsZSBvYmplY3QgdGhhdCB3cmFwcyB0aGUgZW5j
cnlwdGVkIHNhbXBsZS4gQmVjYXVzZSBub3QKKyAgICAgICAgZXZlcnkgdHlwZSBvZiBNZWRpYVNh
bXBsZSB3aWxsIGNhcnJ5IGtleSBJRHMsIHRoaXMgcHJvcGVydHkgd2FzIGFkZGVkIHRvIHRoZQor
ICAgICAgICBNZWRpYVNhbXBsZUFWRk9iakMgc3ViY2xhc3MsIGFuZCB0aGVyZWZvcmUgd2UgbmVl
ZCB0byBiZSBhYmxlIHRvIHNhZmVseSBkb3duY2FzdCBmcm9tCisgICAgICAgIE1lZGlhU2FtcGxl
IHRvIE1lZGlhU2FtcGxlQVZGT2JqQy4gTWVkaWFTYW1wbGUgc3ViY2xhc3NlcyBjYW4gYmUgZGlz
dGluZ3Vpc2hlZCBieSB0aGUKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNhbXBsZSB0eXBlIGF2YWls
YWJsZSB0aHJvdWdoIHRoZWlyIHBsYXRmb3JtU2FtcGxlKCkgcHJvcGVydHksIGhvd2V2ZXIgdGhp
cworICAgICAgICBjYWxsIGlzIG5vdCBjb25zdCwgYW5kIG1heSBub3QgYmUgZnJlZSwgYXMgaXQg
cmV0dXJucyBhIG5vbi1QT0QgdHlwZS4gU28KKyAgICAgICAgUGxhdGZvcm1NZWRpYTo6VHlwZSB3
YXMgbWFkZSBhbiBleHBsaWNpdCBlbnVtIHR5cGUsIGFuZCBhIG5ldyB2aXJ0dWFsIG1ldGhvZAor
ICAgICAgICBwbGF0Zm9ybVNhbXBsZVR5cGUoKSB3YXMgYWRkZWQgdG8gTWVkaWFTYW1wbGUgKGFu
ZCBpbXBsZW1lbnRlZCBieSBhbGwgc3ViY2xhc3NlcyksIGFuZCBhCisgICAgICAgIHR5cGUgc3Bl
Y2lhbGl6YXRpb24gbWFjcm8gd2FzIGFkZGVkIHRvIE1lZGlhU2FtcGxlQVZGT2JqQy4KKworICAg
ICAgICBJbiBvcmRlciB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gc2FtcGxlIGlzIGNhcGFibGUg
b2YgYmVpbmcgZW5xdWV1ZWQsIHRoZSBDRE1JbnN0YW5jZQorICAgICAgICBtdXN0IGJlIHF1ZXJp
ZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzYW1wbGUncyByZXF1aXJlZCBrZXlzIGFyZSB1c2FibGUu
IEZvcgorICAgICAgICBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQywgaXQgaGFz
IGFuIGV4aXN0aW5nIGtleVN0YXR1cygpLCBtZXRob2QsIGJ1dCB0aGF0CisgICAgICAgIG1ldGhv
ZCBpcyBhbHNvIG5vbi1jb25zdCwgYW5kIG1heSBiZSBleHBlbnNpdmUuIFNvIGEgS2V5U3RhdHVz
TWFwIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIGFkZGVkIHRvIGNhY2hlIHRo
ZSBrZXkgc3RhdHVzIGZvciBlYXNlIG9mIHF1ZXJ5aW5nLiBUbyBub3RpZnkgYW4gYXJiaXRyYXJ5
IG51bWJlcgorICAgICAgICBvZiBjbGllbnRzIHdoZW4gdGhlIGtleSBzdGF0dXNlcyBjaGFuZ2Us
IGFuIE9ic2VydmVyIGhhcyBiZWVuIGFkZGVkLgorCisgICAgICAgIFdoZW4gYW4gZW5jcnlwdGVk
IHNhbXBsZSBpcyBlbnF1ZXVlZCwgaWYgdGhpcyBuZXcgZGVsZWdhdGUgbWV0aG9kIGlzIGF2YWls
YWJsZSwgdGhlCisgICAgICAgIHNvdXJjZSBidWZmZXIgd2lsbCBjaGVjayBpZiBhIENETSBpbnN0
YW5jZSBpcyBhdmFpbGFibGUsIGFuZCBpZiBzbywgd2hldGhlciB0aGUgc2FtcGxlJ3MKKyAgICAg
ICAga2V5cyBhcmUgdXNhYmxlLiBJZiBhbnkgb2YgdGhlc2UgY2hlY2tzIGZhaWwsIHRoZSBzYW1w
bGUgd2lsbCBiZSBzdG9yZWQgaW4gYSBsb2NhbCBxdWV1ZQorICAgICAgICBhbmQgbmV3IGVucXVl
dWVzIHdpbGwgYmUgYmxvY2tlZC4gV2hlbiB0aGUgQ0RNJ3Mga2V5U3RhdHVzIG9ic2VydmVyIGlz
IHRyaWdnZXJlZCwgdGhlCisgICAgICAgIGxvY2FsIHF1ZXVlIHdpbGwgYmUgcHJvY2Vzc2VkLCBh
bmQgYWxsIHNhbXBsZXMgd2l0aCB1c2FibGUga2V5IElEcyB3aWxsIGJlIGVucXVldWVkLgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeDogVXNlIFNoYXJlZEJ1ZmZlciByYXRoZXIgdGhhbiBVaW50OEFy
cmF5LCBhcyB0aGUgZm9ybWVyIGlzIGxpZ2h0ZXIgd2VpZ2h0CisgICAgICAgIGFuZCBjYW4gYmUg
bW9yZSBlYXNpbHkgY29udmVydGVkIHRvIGFuZCBmcm9tIGEgTlNEYXRhLgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OmtleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXll
cktleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjppc0FueUtleVVzYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6YWRkS2V5U3RhdHVzZXNDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3Vj
Y2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29weUtleVN0YXR1c2VzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVj
dGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVQcm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxheUlEKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6a2V5U3RhdHVzZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6a2V5TmVlZGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0
S2V5SURzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6a2V5SURzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6a2V5SURzKToKKyAg
ICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDPjo6dG9T
dHJpbmcpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNv
dXJjZUJ1ZmZlcktleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW06CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQ
YXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDpdKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
U3BlY2lmaWVyRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlLZXlJRHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRDRE1JbnN0
YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0
ZW1wdFRvRGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6dHJhY2tJc0Jsb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmtleVN0YXR1c2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuRW5xdWV1ZVNhbXBsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVh
ZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6c2V0VmlkZW9MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKwogMjAy
Mi0wMi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c2V0dGluZ3MgdG8gcmVzdHJpY3QgbWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4g
Q2FwdGl2ZSBQb3J0YWwgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkYjhjNjU3ZDA0ZGU4ODk5OTQ3YjU2ZGYz
M2JmYTlhYjg1OTgyZmM1Li4yMzU1MGE2NzAyZWY3MDI2MTU0MzU5N2Y2MmYxMTI3M2ViOTY2OTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJz
ZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjEwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQg
dGhlIG5ld2x5IHJlcXVyaWVkIHZpcnR1YWwgbWV0aG9kIGNoYW5nZXMgdG8gTWVkaWFTYW1wbGUg
c3ViY2xhc3NlcywgYW5kIHVzZQorICAgICAgICBTaGFyZWRCdWZmZXIgcmF0aGVyIHRoYW4gVWlu
dDhBcnJheS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlh
UGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6
OnBhcnNlQnl0ZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpk
aWRQcm92aWRlTWVkaWFEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorCiAyMDIyLTAy
LTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDRkY2E1YTI2MDdlMmE3MGQ5
Njg4OWFlYTBhZmRlYWM3OTYwMmIyNjMuLmVlNDg2N2I0MDhjNWJjZGI5OTRjYWQ5ZDRlMzgwYjhi
ODBkNjU3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0zODgsNiArMzg4LDEzIEBACiAjZGVm
aW5lIEhBVkVfQVZDT05URU5US0VZU0VTU0lPTiAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDApIFwKKyAgICB8
fCAoKChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dF
RCA+PSAxNDA1MDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFlfU0lNVUxBVE9SKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0g
NzA0MDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFlfU0lNVUxBVE9SKSAmJiBfX1RWX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNTAwKQor
I2RlZmluZSBIQVZFX0FWQ09OVEVOVEtFWVNQRUNJRklFUiAxCisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZp
bmUgSEFWRV9TRUNfS0VZX1BST1hZIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODA1
MDAxM2VkNjVmNDBjODhmMDQzNjEyNzgwMjVkNDYwNGZiMzAxYy4uYTRmMTM0N2VjZjc1MWVmZDdh
NDI1ZWU4YzhkYTAxY2RiMGY4OWU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDI3LDYgKzE0
MjcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGVudFR5cGVVdGlsaXRpZXMuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hBcnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVj
b2RpbmdPcHRpb25zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwKaW5kZXggZDYzNDg2YzVhOWM0ODk1
M2MzNGIyYTZkZDIzY2RhOTIzZjI4NDFjNy4uNWU2N2VkZjA2NmI2MDEzYjc4ZTRiNjlkYTY1MzA2
ZTFiYWQ0ZjAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsCkBAIC0zMCw3ICsz
MCw3IEBACiBdIGludGVyZmFjZSBXZWJLaXRNZWRpYUtleXMgewogICAgIGNvbnN0cnVjdG9yKERP
TVN0cmluZyBrZXlTeXN0ZW0pOwogCi0gICAgW0NhbGxXaXRoPUN1cnJlbnRTY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihET01TdHJpbmcg
dHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7CisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVu
dF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVp
bnQ4QXJyYXkgaW5pdERhdGEpOwogICAgIHN0YXRpYyBib29sZWFuIGlzVHlwZVN1cHBvcnRlZChE
T01TdHJpbmcga2V5U3lzdGVtLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzI1YzUyMGEyZWIxNmE3MzJhZGJkZmQwZGE4ZTEw
OWU3Y2U0NTVjZS4uNDk2YzZhOWNiMjNhNmEyYTk1MzkzZjhhNDZlODYyMDk0NzcwYWFiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjQ0LDcgKzI2NDQs
NyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2Fj
aGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtX3dlYktpdE1lZGlhS2V5
cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBudWxscHRy
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5l
ZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGlmICghZG9jdW1lbnQo
KS5zZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNjYxLDcgKzI2NjEsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEpOworICAgIFdlYktp
dE1lZGlhS2V5TmVlZGVkRXZlbnQ6OkluaXQgaW5pdDsKKworICAgIGlmIChhdXRvIGluaXREYXRh
QnVmZmVyID0gaW5pdERhdGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkgeworICAgICAgICBhdXRv
IGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBpbml0
LmluaXREYXRhID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRhQnVmZmVyLnJlbGVhc2VO
b25OdWxsKCksIDAsIGJ5dGVMZW5ndGgpOworICAgIH0KKworICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlF
dmVudCwgaW5pdCk7CiAgICAgc2NoZWR1bGVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggODllNmE2MjY4YmY2ZDYxYzVl
MzczZjI5YTg0OTZiMWQ2NzczYmFkNC4uMDA0OTE4NjEzZWI5MzExMDYyM2IwM2JhZmY5NzYxZDYz
MGM0OGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcwNiw3
ICs3MDYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNv
bnN0IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IGIwNjUwNGY1N2VlOTM2YjhlMTk4ODcxZjM1NzI3
NjUzNTMwNGFmZDMuLjhiM2RjYTYxMmMyM2FhMjllM2E0ZTM2NmE3ZjQ0YzFjYTVjMjAzNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNb2NrU2FtcGxlQm94OwogCiBzdHJ1Y3QgUGxhdGZvcm1T
YW1wbGUgewotICAgIGVudW0geworICAgIGVudW0gVHlwZSB7CiAgICAgICAgIE5vbmUsCiAgICAg
ICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUsCkBAIC05
Miw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxh
Z3MoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBs
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3Jt
U2FtcGxlVHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHN0cnVjdCBCeXRlUmFuZ2UgewogICAgICAg
ICBzaXplX3QgYnl0ZU9mZnNldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCA1
MDYwMzIzODAzYjFhM2IxN2Y0NzM4NjZlYTk3YjNhODI5MGUyMDJjLi5iNzAzY2ZlY2QzMTZjNjI3
YzY5NGU2NGI4ZTY5NzYyMDY4NjdmN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0y
MDIsMTAgKzIwMiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+
IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSk7Ci0gICAgcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2Fs
bGJhY2soWyZdKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNv
bnN0IFN0cmluZyYpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFj
ayhbJl0oUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQs
IGNvbnN0IFN0cmluZyYpIHsKICAgICAgICAgaWYgKCFhdWRpb1RyYWNrSWQgfHwgdHJhY2tJRCAh
PSAqYXVkaW9UcmFja0lkKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzYW1wbGVzLmFw
cGVuZChzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPihXVEZNb3ZlKHNh
bXBsZSkpKTsKKyAgICAgICAgc2FtcGxlcy5hcHBlbmQoV1RGTW92ZShzYW1wbGUpKTsKICAgICB9
KTsKICAgICBwYXJzZXItPnNldENhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFtdKGF1dG8mJiBm
dW5jdGlvbikgewogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDBhYmMzMjIzOGQ2NDFhY2E0NWY3
Mzk3NzU3ZTRlNWUxNTFiYTdkYjUuLjZjNjFkNzM3MDg0MWYzODE1MDdiNzY4MmVmYzhmYmU5YTIx
YjNlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKQEAgLTE0MjUsNyArMTQyNSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gTWVkaWFQ
bGF5ZXI6OmNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0CiAgICAg
cmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lk
IE1lZGlhUGxheWVyOjprZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsK
ICAgICBjbGllbnQoKS5tZWRpYVBsYXllcktleU5lZWRlZChpbml0RGF0YSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA1ZjBkYWE4
NjZmMmM4MjMzYWM4YzE5NGE2MTMzZDk3M2YzNDQ2ZmU4Li44OTMxNzE1OTI1YTE0ODNhZmFkMGNj
Y2ExNjNhZTE1OWY5NDczYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1Qcml2
YXRlOwogY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCkBA
IC0yMDAsNyArMjAxLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCiAgICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVk
S2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7IH0KICNlbmRpZgogCkBAIC01NTgsNyArNTU5LDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdDsKLSAg
ICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSk7CisgICAgdm9pZCBrZXlOZWVk
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBh
M2JjOWY1ZmNkZjhmNzA1ZGY3ZmI5YjY5YThiNTA5OTI0NTBjODFjLi5mNTVmNDMzNDRjMTI4YmY1
MWI1Mzk5OGE1ZGI1ZDEyZDQyYzBjZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTE5MjEsMTUg
KzE5MjEsMTUgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8gWzQgYnl0ZXM6
IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCiAgICAgICAgIHVuc2ln
bmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOwogICAgICAg
ICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6
ZSwgMSk7Ci0gICAgICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRl
KGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpOworICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGJ5dGVMZW5ndGgpOwogICAgICAgICBpbml0
RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAKICAgICAgICAg
YXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29w
eVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFu
Z2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KFN0cmluZ1ZpZXcoa2V5VVJJKS51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1
bnNpZ25lZCBjaGFyKSwgMCk7CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGluaXRE
YXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCk7Ci0gICAgICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFy
cmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwotICAg
ICAgICBtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKTsKKyAgICAg
ICAgYXV0byBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiB7
IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihpbml0RGF0YUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0
aCB9KTsKKyAgICAgICAgbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YSk7CiAg
ICAgICAgIHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVlc3QpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCA1NmI1OGMyNWEyODcw
OWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyLi5kNTlmZTQ4MDRkNThkZmU3OGNiNWJlYTcwNzRi
MmU2ODcwNWMxZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTMwLDcgKzMwLDkgQEAK
ICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2luY2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5o
IgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
IAogT0JKQ19DTEFTUyBBVkNvbnRlbnRLZXlSZXBvcnRHcm91cDsKIE9CSkNfQ0xBU1MgQVZDb250
ZW50S2V5UmVxdWVzdDsKQEAgLTExNyw2ICsxMTksMTMgQEAgcHVibGljOgogICAgIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29u
dGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0
KikgY29uc3Q7CiAKKyAgICBib29sIGlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMmKSBjb25zdDsK
KworICAgIHVzaW5nIEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgp
PjsKKyAgICB2b2lkIGFkZEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEtleVN0YXR1
c2VzQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB2b2lkIHNlc3Npb25LZXlTdGF0dXNlc0NoYW5n
ZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJik7CisK
IHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVVbmV4cGVjdGVkUmVxdWVzdHMoVmVjdG9yPFJldGFp
blB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7CiAKQEAgLTEzNCw2ICsxNDMsNyBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFr
UHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lv
bnM7CiAgICAgSGFzaFNldDxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+IG1fdW5leHBl
Y3RlZEtleVJlcXVlc3RzOworICAgIFdlYWtIYXNoU2V0PEtleVN0YXR1c2VzQ2hhbmdlZE9ic2Vy
dmVyPiBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZlcnM7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJ
ZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpAQCAtMTg2LDExICsxOTYsMTQgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBoYXNSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsKIAorICAgIGNv
bnN0IEtleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX2tleVN0
YXR1c2VzOyB9CisgICAgS2V5U3RhdHVzVmVjdG9yIGNvcHlLZXlTdGF0dXNlcygpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKTsKICAgICBib29sIGlz
TGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUpIGNvbnN0OwogCi0gICAgS2V5U3RhdHVz
VmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3Rk
OjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKHN0ZDo6b3B0aW9u
YWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIG5leHRSZXF1
ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVlc3QoKSBjb25zdDsK
IApAQCAtMjE2LDYgKzIyOSw3IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBVcGRhdGVSZXNwb25z
ZUNvbGxlY3RvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I+
IG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I7CisgICAgS2V5U3RhdHVzVmVjdG9yIG1fa2V5U3Rh
dHVzZXM7CiAKICAgICBWZWN0b3I8UmVxdWVzdD4gbV9wZW5kaW5nUmVxdWVzdHM7CiAgICAgVmVj
dG9yPFJlcXVlc3Q+IG1fcmVxdWVzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGNm
ZTA0OGE5MzhjMDVkZjc0NWM3MTYzNTZhZDFiM2I5MGE1OWViNzguLmZkNjE1MmUxODY3ZDRlNmE2
NzJiZWYxNzA3MGNhNzYyOTEyNmY0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC02
MTcsNiArNjE3LDM3IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
QyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK2Jvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmlzQW55
S2V5VXNhYmxlKGNvbnN0IEtleXMmIGtleXMpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzZXNz
aW9uSW50ZXJmYWNlIDogbV9zZXNzaW9ucykgeworICAgICAgICBpZiAoIXNlc3Npb25JbnRlcmZh
Y2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGF1dG8mIGtleVN0YXR1
c1BhaXIgOiBzZXNzaW9uSW50ZXJmYWNlLT5rZXlTdGF0dXNlcygpKSB7CisgICAgICAgICAgICBp
ZiAoa2V5U3RhdHVzUGFpci5zZWNvbmQgIT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6
OlVzYWJsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKGtl
eXMuZmluZElmKFsmXSAoYXV0byYga2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleS5n
ZXQoKSA9PSBrZXlTdGF0dXNQYWlyLmZpcnN0LmdldCgpOworICAgICAgICAgICAgfSkgIT0gbm90
Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcihjb25zdCBLZXlTdGF0dXNlc0No
YW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9rZXlTdGF0dXNDaGFuZ2VkT2JzZXJ2
ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJikKK3sKKyAgICBtX2tleVN0YXR1c0NoYW5nZWRP
YnNlcnZlcnMuZm9yRWFjaChbXSAoYXV0byYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgb2JzZXJ2ZXIo
KTsKKyAgICB9KTsKK30KKwogQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMoUmVmPENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmIGluc3RhbmNlKQogICAgIDogbV9pbnN0
YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKICAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkNv
cmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlz
XSkpCkBAIC0xMzA2LDEzICsxMzM3LDE1IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlCiAKIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlk
U3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogeworICAgIHVwZGF0ZUtleVN0
YXR1c2VzKCk7CisKICAgICBpZiAobV91cGRhdGVSZXNwb25zZUNvbGxlY3RvcikgewogICAgICAg
ICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yLT5hZGRTdWNjZXNzZnVsUmVzcG9uc2UocmVxdWVz
dCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV91cGRhdGVM
aWNlbnNlQ2FsbGJhY2spIHsKLSAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2Us
IHN0ZDo6bWFrZV9vcHRpb25hbChrZXlTdGF0dXNlcygpKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNl
LCBzdGQ6Om1ha2Vfb3B0aW9uYWwoY29weUtleVN0YXR1c2VzKCkpLCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VD
YWxsYmFjayk7CiAgICAgfQogCkBAIC0xNDA1LDcgKzE0MzgsNyBAQCBzdGF0aWMgYXV0byByZXF1
ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZDb250ZW50S2V5UmVxdWVzdFN0YXR1cyBzdGF0dXMpCiAg
ICAgfQogfQogCi1DRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzKHN0ZDo6b3B0aW9u
YWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRpc3BsYXlJRCkgY29uc3QKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVLZXlTdGF0dXNlcyhzdGQ6Om9w
dGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5SUQpCiB7CiAgICAgS2V5U3RhdHVzVmVj
dG9yIGtleVN0YXR1c2VzOwogCkBAIC0xNDI3LDcgKzE0NjAsMTkgQEAgQ0RNSW5zdGFuY2VTZXNz
aW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjoKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBrZXlTdGF0dXNlczsKKyAg
ICBtX2tleVN0YXR1c2VzLnN3YXAoa2V5U3RhdHVzZXMpOworCisgICAgbV9pbnN0YW5jZS0+c2Vz
c2lvbktleVN0YXR1c2VzQ2hhbmdlZCgqdGhpcyk7Cit9CisKK2F1dG8gQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMoKSBjb25zdCAtPiBL
ZXlTdGF0dXNWZWN0b3IKK3sKKyAgICBLZXlTdGF0dXNWZWN0b3IgY29waWVkS2V5U3RhdHVzZXM7
CisgICAgY29waWVkS2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2tleVN0YXR1
c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBzdGF0dXMgOiBtX2tleVN0YXR1c2VzKQorICAg
ICAgICBjb3BpZWRLZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBzdGF0dXMuZmlyc3QuY29w
eVJlZigpLCBzdGF0dXMuc2Vjb25kIH0pOworICAgIHJldHVybiBjb3BpZWRLZXlTdGF0dXNlczsK
KwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQo
Ym9vbCBvYnNjdXJlZCkKQEAgLTE0MzgsOCArMTQ4MywxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmlj
aWVudAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgb2JzY3VyZWQp
OwogICAgIG1fb3V0cHV0T2JzY3VyZWQgPSBvYnNjdXJlZDsKIAorICAgIHVwZGF0ZUtleVN0YXR1
c2VzKCk7CisKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlT
dGF0dXNlcyhrZXlTdGF0dXNlcygpKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1
c2VzKGNvcHlLZXlTdGF0dXNlcygpKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZv
ckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKQpAQCAtMTQ5Miw5ICsxNTM5
LDEzIEBAIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3RhdHVzPiBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnByb3RlY3RpCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVQcm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxh
eUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKLSAgICBpZiAobV9yZXF1ZXN0cy5p
c0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgIGlmIChtX3JlcXVlc3RzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNl
cyhkaXNwbGF5SUQpKTsKKworICAgIHVwZGF0ZUtleVN0YXR1c2VzKGRpc3BsYXlJRCk7CisKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhjb3B5
S2V5U3RhdHVzZXMoKSk7CiB9CiAKIGJvb2wgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uT3JHcm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaAppbmRleCAwMjEw
MjY5NTg2YWYxZDVhMDQyYzYzZGM0NjRkOTlhMjBjM2M3NWIwLi42YzA1ZTJmOGIxMDNiODUxNzQ3
Y2M5YTM1NDNjZDUxYzlhZThjMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJv
dGVjdGVkOgogICAgIFJldGFpblB0cjxXZWJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbkRl
bGVnYXRlPiBtX2NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPEFWQ29u
dGVudEtleVJlcXVlc3Q+IG1fa2V5UmVxdWVzdDsKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9p
ZGVudGlmaWVyOwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2luaXREYXRhOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1faW5pdERhdGE7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gbV9leHBp
cmVkU2Vzc2lvbjsKICAgICBWZWN0b3I8aW50PiBtX3Byb3RvY29sVmVyc2lvbnM7CiAgICAgaW50
IG1fY2RtVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggNjUyYTA4NTA4NzdlYjc4MGYzNWU2ZWY1
MTRlMmFjMzJjZDc3OTNhYy4uN2Q1OTNhNjBkNjYzMmI5OTYyZmY0OTU2MWEwZTcxYmNkY2U2MDk3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkxlZ2FjeUNETS5o
IgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKKyNpbXBvcnQg
IlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCIK
ICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZFcnJvci5oPgpAQCAtMTQ2LDcgKzE0Nyw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluCiAg
ICAgaWYgKG1fY2RtVmVyc2lvbiA9PSAyKQogICAgICAgICBtX2lkZW50aWZpZXIgPSBpbml0RGF0
YTsKICAgICBlbHNlCi0gICAgICAgIG1faW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICAgICAgbV9p
bml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRh
LT5sZW5ndGgoKSk7CiAKICAgICBBU1NFUlQoIW1fY2VydGlmaWNhdGUpOwogICAgIFN0cmluZyBj
ZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlmaWNhdGUiX3MpOwpAQCAtMjY4LDEyICsyNjksMTIgQEAg
Ym9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtl
eSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgIH0KIAogICAgIGlmICghbV9rZXlSZXF1ZXN0KSB7
Ci0gICAgICAgIE5TRGF0YSogbnNJbml0RGF0YSA9IG1faW5pdERhdGEgPyBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6bV9pbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDptX2luaXREYXRhLT5sZW5ndGgoKV0g
OiBuaWw7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IG5zSW5pdERhdGEgPSBtX2luaXREYXRh
ID8gbV9pbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkgOiBuaWw7CiAgICAgICAgIE5TRGF0YSogbnNJ
ZGVudGlmaWVyID0gbV9pZGVudGlmaWVyID8gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOm1faWRlbnRp
Zmllci0+ZGF0YSgpIGxlbmd0aDptX2lkZW50aWZpZXItPmxlbmd0aCgpXSA6IG5pbDsKICAgICAg
ICAgaWYgKFtjb250ZW50S2V5U2Vzc2lvbigpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
cHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6aW5pdGlhbGl6YXRpb25EYXRh
Om9wdGlvbnM6KV0pCi0gICAgICAgICAgICBbY29udGVudEtleVNlc3Npb24oKSBwcm9jZXNzQ29u
dGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjpuc0lkZW50aWZpZXIgaW5pdGlhbGl6YXRpb25E
YXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxdOworICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNz
aW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6bnNJZGVudGlmaWVy
IGluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxdOworICAg
ICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEuZ2V0KCkgb3B0aW9uczpuaWxdOwogICAgIH0KIAog
ICAgIGlmIChzaG91bGRHZW5lcmF0ZUtleVJlcXVlc3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IGE2YzA1OWRjMTA2YTYyMjViMjExMmNiOGVlNTIwM2E3YjU4ZmQxMjIuLjAyNzg3OWMw
ZGI0YWE3NjAxYzZkYWRjMDRkYjM5NDQ3MTM2ZmU5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMjExNSw4ICsyMTE1LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAg
YXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29w
eVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFu
Z2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oU3RyaW5nVmlldyhrZXlVUkkpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVu
c2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6
Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAg
cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisgICAgICAgIGF1dG8gaW5pdERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4geyBzdGF0aWNfY2FzdDx1
aW50OF90Kj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGggfSk7CisgICAgICAg
IHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQo
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjE0NCw5ICsyMTQ0LDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZBc3NldFIKICAgICBpZiAoc2NoZW1lID09ICJjbGVhcmtleSIpIHsKICAgICAg
ICAgU3RyaW5nIGtleUlEID0gW1tbYXZSZXF1ZXN0IHJlcXVlc3RdIFVSTF0gcmVzb3VyY2VTcGVj
aWZpZXJdOwogICAgICAgICBhdXRvIGVuY29kZWRLZXlJZCA9IFBBTDo6VVRGOEVuY29kaW5nKCku
ZW5jb2RlKGtleUlELCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OlVSTEVuY29kZWRFbnRpdGll
cyk7Ci0KLSAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShlbmNvZGVk
S2V5SWQuc2l6ZSgpKTsKLSAgICAgICAgaW5pdERhdGEtPnNldFJhbmdlKGVuY29kZWRLZXlJZC5k
YXRhKCksIGVuY29kZWRLZXlJZC5zaXplKCksIDApOworICAgICAgICBhdXRvIGluaXREYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShlbmNvZGVkS2V5SWQpKTsKIAogICAgICAgICBh
dXRvIGtleURhdGEgPSBwbGF5ZXIoKS0+Y2FjaGVkS2V5Rm9yS2V5SWQoa2V5SUQpOwogICAgICAg
ICBpZiAoa2V5RGF0YSkgewpAQCAtMjE1NCw3ICsyMTUyLDcgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZB
c3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHBs
YXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworICAgICAgICBwbGF5ZXIoKS0+a2V5
TmVlZGVkKGluaXREYXRhKTsKIAogICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51
ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oCmluZGV4IGJjYWQxMjU0MzYzYTE4N2M2OGEzMzY4ZmE3YTdhMTQ4NTE1Yjgy
ZTUuLjI5ODNjZWNhZGVhMjJlM2YyNTViMDc5Yzk2YTJmNzg5MWNkM2EzMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5k
U2ltdWxhdGVkSERDUEVycm9yKCkgb3ZlcnJpZGUgeyBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZm
aWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChmYWxzZSk7IH0KIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotICAgIHZv
aWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIGtleU5lZWRlZChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBlOTVmOGMzY2FjZjBhZGUxODExZjExYmFlNjgzYmU0
YjVmYjE1NTMzLi4xYzMzMjcyNTQ2YjRlZjhiNzk3ODhkOTA1MjdhNTBlNTRkNmQ0OWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMTQzLDcgKzExNDMsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1T
ZXNzaW9uKiBzZXNzaQogI2VuZGlmIC8vIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURf
TUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6a2V5TmVl
ZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmtleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewog
ICAgIG1fcGxheWVyLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA1YjRmN2YwMGRiMzNhNWJjZGY2NTZjNjAy
MmYxNDgzNGY0MWM1OTA2Li5hYzI3YTIwYjdkMGFkNWIwYWNjYTgzYzAxMjZlMjY3MzBjY2NmZTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtMjks
MTEgKzI5LDEzIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIHVzaW5nIENWUGl4
ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBj
bGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJsaWMgTWVkaWFTYW1wbGUgewpAQCAtNjAsNiAr
NjIsNyBAQCBwdWJsaWM6CiAKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQogICAgIHN0
ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAg
LTgwLDYgKzgzLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Qnl0ZVJhbmdlT2Zmc2V0KHNp
emVfdCk7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtF
WVNFU1NJT04pCisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj47CisgICAgdm9pZCBzZXRLZXlJRHMoS2V5SURzJiYga2V5SURzKSB7IG1fa2V5SURz
ID0gV1RGTW92ZShrZXlJRHMpOyB9CisgICAgY29uc3QgS2V5SURzJiBrZXlJRHMoKSBjb25zdCB7
IHJldHVybiBtX2tleUlEczsgfQorICAgIEtleUlEcyYga2V5SURzKCkgeyByZXR1cm4gbV9rZXlJ
RHM7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1w
bGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4mJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmKTsKQEAgLTk0LDEwICsx
MDQsMjcgQEAgcHJvdGVjdGVkOgogICAgIEF0b21TdHJpbmcgbV9pZDsKICAgICBWaWRlb1JvdGF0
aW9uIG1fcm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAgICAgYm9vbCBtX21pcnJv
cmVkIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZD
T05URU5US0VZU0VTU0lPTikKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiBtX2tleUlEczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gc3RydWN0IExvZ0FyZ3VtZW50
OwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBsZUFW
Rk9iakM+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlh
U2FtcGxlQVZGT2JqQyYgc2FtcGxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNhbXBsZS50b0pT
T05TdHJpbmcoKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakMpCi0gICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkg
eyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBs
YXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGU7IH0KK3N0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgc2FtcGxlKSB7IHJldHVybiBzYW1wbGUucGxhdGZv
cm1TYW1wbGVUeXBlKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVy
VHlwZTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4IDcyMjQ5N2UwYmM0
MjBjZDRlNjJiMDYyNDkyM2JmZDhmOWQ1NDA2MjIuLjg5NTFiMjQ3ZGQwMDE1MGVkMTZjZTA0MWFj
Y2VjYmJmY2JlZDVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0YXRlKFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDKiwgYm9vbCBhY3RpdmUpOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMqKTsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICB2b2lkIHNvdXJj
ZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyosIFVpbnQ4QXJyYXkq
KTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAgdm9pZCByZW1vdmVTb3Vy
Y2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCA5MjdkMTMwMzExZThl
ZWM4YjAyMTU2YWM2MzI4MGE5YmY5ZDA4MDhjLi4xMjAxYjcyNmJkMDQ3YzVmMTEwZjcxNGFiMTAy
MzE5YTYxNjIyY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTE5NSw5ICsxOTUsMTAgQEAgdm9pZCBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUo
U291cmNlQnUKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotdm9pZCBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJLZXlOZWVkZWQoU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMqIGJ1ZmZlciwgVWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyogYnVmZmVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQog
ewogICAgIG1fc291cmNlQnVmZmVyc05lZWRpbmdTZXNzaW9ucy5hcHBlbmQoYnVmZmVyKTsKKwog
ICAgIGlmIChtX3BsYXllcikKICAgICAgICAgbV9wbGF5ZXItPmtleU5lZWRlZChpbml0RGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLmgKaW5kZXggYzIyZTcyNWY4NTQ2ZjI3OGZmNjU3YTVmNGM1NzJiOTI5NTE1ZWQ0OC4uNzgx
MTIwNGNjZmQxZDgxYjE1MDkyYjU3NWE4Mjk4MGQ2MmMyZjEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtNjgsNiArNjgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh1aW50
NjRfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUs
IHVuc2lnbmVkIGZsYWdzKTsKICAgICB2b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQg
ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChO
U0RhdGEqLCB1aW50NjRfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoTlNEYXRhKiwgdWludDY0X3QgdHJhY2tJRCk7CiAK
IHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBhYmQ4MWU1ZjNj
MWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyLi5hYTE1ODQwNGIxMGU0NDRhZjZlNWVkZGM4
ZGFkNmJhOTZlZDVjYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTU3LDYgKzU3LDEyIEBACiAjcHJhZ21hIG1hcmsg
LQogI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCiAKKyNpZiBIQVZF
KEFWQ09OVEVOVEtFWVNQRUNJRklFUikKK0BpbnRlcmZhY2UgQVZDb250ZW50S2V5U3BlY2lmaWVy
IChXZWJDb3JlUHJpdmF0ZSkKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5TRGF0YSAqaW5pdGlhbGl6
YXRpb25EYXRhOworQGVuZAorI2VuZGlmCisKIEBpbnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFy
c2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4g
ewogICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqIF9wYXJlbnQ7CiAgICAg
QVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwpAQCAtMTMzLDYgKzEzOSwxNiBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURh
dGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7CiAgICAgX3BhcmVudC0+ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbml0
RGF0YSwgdHJhY2tJRCk7CiB9CisKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKy0g
KHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBh
cnNlciBkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjooQVZDb250ZW50S2V5U3BlY2lmaWVy
ICopa2V5U3BlY2lmaWVyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAor
eworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9
PSBfcGFyc2VyKTsKKyAgICBpZiAoW2tleVNwZWNpZmllciByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGluaXRpYWxpemF0aW9uRGF0YSldKQorICAgICAgICBfcGFyZW50LT5kaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JUcmFja0lEKGtleVNwZWNpZmllci5pbml0aWFs
aXphdGlvbkRhdGEsIHRyYWNrSUQpOworfQorI2VuZGlmCisKIEBlbmQKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzM0LDEwICszNTAsMTQgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KIAog
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSogbnNJbml0RGF0YSwgdWludDY0
X3QgdHJhY2tJRCkKIHsKLSAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKG5z
SW5pdERhdGEubGVuZ3RoKTsKLSAgICBbbnNJbml0RGF0YSBnZXRCeXRlczppbml0RGF0YS0+ZGF0
YSgpIGxlbmd0aDppbml0RGF0YS0+bGVuZ3RoKCldOworICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG5zSW5pdERhdGEpLCB0cmFja0lEKTsKK30KIAotICAgIG1fZGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFdURk1v
dmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3BlY2lmaWVyRm9yVHJhY2tJRChOU0RhdGEqIG5z
SW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpCit7CisgICAgbV9jYWxsT25DbGllbnRUaHJlYWRD
YWxsYmFjayhbdGhpcywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5zSW5pdERhdGEgPSBy
ZXRhaW5QdHIobnNJbml0RGF0YSksIHRyYWNrSURdIHsKKyAgICAgICAgbV9kaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG5zSW5pdERhdGEuZ2V0KCkpLCB0cmFja0lEKTsKKyAgICB9KTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgK
aW5kZXggNzU0YjFlMmVlYzAyZGYzMzk1ZTVjZGI1YzA3ZjhlODhhOTM1Y2QwOC4uMzc2YTZmYzE0
MzgxMWVlYjg1NjdiY2IwOGU3ZGRkM2IxZmYxM2NmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTk1LDcgKzk2LDkgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KIAogICAg
IHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSUQodWludDY0X3QgdHJhY2tJRCk7Ci0gICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxVaW50OEFycmF5PiYmLCB1aW50
NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CisgICAgdm9pZCBkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKKworICAg
IHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSUQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJhY2tJRCk7CiAKICAgICBib29sIGhhc1NlbGVj
dGVkVmlkZW8oKSBjb25zdDsKIApAQCAtMTMyLDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGJ1ZmZlcldhc0NvbnN1bWVkKCk7CiAgICAgCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCi0gICAgVWludDhBcnJheSogaW5pdERhdGEoKSB7IHJldHVybiBtX2luaXREYXRhLmdl
dCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiBpbml0RGF0YSgpIHsgcmV0dXJuIG1faW5pdERhdGEu
Z2V0KCk7IH0KICNlbmRpZgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xNTAsNyAr
MTUzLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7CiAgICAgdm9pZCBk
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJik7CiAgICAg
dm9pZCBkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCk7Ci0gICAgdm9pZCBk
aWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90
IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRy
YWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclBy
aXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CkBAIC0xNzQsNiArMTc3LDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgY3VycmVudE1l
ZGlhVGltZSgpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZp
bmFsOwogCisgICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYs
IHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxl
cyh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGFwcGVuZENvbXBsZXRlZCgpOwogICAgIHZv
aWQgZGVzdHJveVN0cmVhbURhdGFQYXJzZXIoKTsKQEAgLTE4Niw2ICsxOTAsMTIgQEAgcHJpdmF0
ZToKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogCiAgICAgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdDsKKyAgICBib29sIGNh
bkVucXVldWVTYW1wbGUodWludDY0X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFTYW1wbGVBVkZPYmpD
Jik7CisgICAgYm9vbCB0cmFja0lzQmxvY2tlZCh1aW50NjRfdCB0cmFjaykgY29uc3Q7CisKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisg
ICAgdm9pZCBrZXlTdGF0dXNlc0NoYW5nZWQoKTsKKyNlbmRpZgogCiAgICAgVmVjdG9yPFJlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZT4+IG1fdmlkZW9UcmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxB
dWRpb1RyYWNrUHJpdmF0ZT4+IG1fYXVkaW9UcmFja3M7CkBAIC0xOTcsNyArMjA3LDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1fcHJvY2Vzc2luZ0luaXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxsYmFjayB7IGZhbHNl
IH07CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1RyYWNrQ2hhbmdlQ2Fs
bGJhY2tzOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxNZWRpYVNhbXBsZT4+
PiBtX21lZGlhU2FtcGxlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVk
aWFTYW1wbGVBVkZPYmpDPj4+IG1fbWVkaWFTYW1wbGVzOworICAgIERlcXVlPHN0ZDo6cGFpcjx1
aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+PiBtX2Jsb2NrZWRTYW1wbGVzOwogCiAg
ICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX2Rpc3BsYXlMYXllcjsK
ICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCkBAIC0yMTUsMTMgKzIyNiwy
NyBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogbV9tZWRpYVNv
dXJjZTsKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OworCiAjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCi0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1faW5pdERhdGE7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9pbml0RGF0YTsKICAgICBXZWFrUHRyPENETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakM+IG1fc2Vzc2lvbiB7IG51bGxwdHIgfTsKICNlbmRpZgogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAg
ICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKKyAg
ICBzdHJ1Y3QgVHJhY2tJbml0RGF0YSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlu
aXREYXRhOworICAgICAgICBLZXlJRHMga2V5SURzOworICAgIH07CisgICAgdXNpbmcgVHJhY2tJ
bml0RGF0YU1hcCA9IEhhc2hNYXA8dWludDY0X3QsIFRyYWNrSW5pdERhdGE+OworICAgIFRyYWNr
SW5pdERhdGFNYXAgbV9wZW5kaW5nUHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcDsKKyAgICBUcmFj
a0luaXREYXRhTWFwIG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcDsKKworICAgIHVzaW5nIFRy
YWNrS2V5SURzTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgS2V5SURzPjsKKyAgICBUcmFja0tleUlE
c01hcCBtX2N1cnJlbnRUcmFja0lEczsKKwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBVbmlxdWVSZWY8T2JzZXJ2ZXI8dm9pZCgp
Pj4gbV9rZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcjsKKyAgICBLZXlJRHMgbV9rZXlJRHM7CiAj
ZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNpemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
CmluZGV4IGU2MWEzYTdmY2M5NjM3OThmNjg5OGMwMTI3YmQ3NGJiMzMwYmY3YTEuLmYzZDQyNDVi
ZTE0MDA4ZjA1YzZiOTlkOTY5ZmY0Y2ZkMGVjNzc0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC03Niw2ICs3Niwx
MiBAQCAtICh2b2lkKWV4cGVjdE1pbmltdW1VcGNvbWluZ1NhbXBsZUJ1ZmZlclByZXNlbnRhdGlv
blRpbWU6IChDTVRpbWUpbWluaW11bVVwY29taQogLSAodm9pZClyZXNldFVwY29taW5nU2FtcGxl
QnVmZmVyUHJlc2VudGF0aW9uVGltZUV4cGVjdGF0aW9uczsKIEBlbmQKIAorQGludGVyZmFjZSBB
VlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAoV2ViQ29yZVNhbXBsZUJ1ZmZlcktleVNlc3Npb24p
IDxBVkNvbnRlbnRLZXlSZWNpcGllbnQ+CitAZW5kCisKK0BpbnRlcmZhY2UgQVZTYW1wbGVCdWZm
ZXJBdWRpb1JlbmRlcmVyIChXZWJDb3JlU2FtcGxlQnVmZmVyS2V5U2Vzc2lvbikgPEFWQ29udGVu
dEtleVJlY2lwaWVudD4KK0BlbmQKKwogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBBVlN0
cmVhbVNlc3Npb24KIApAQCAtMjc1LDYgKzI4MSwyNCBAQCBzdGF0aWMgdWludDY0X3QgbmV4dE1h
cElEKCkKICAgICByZXR1cm4gKyttYXBJRDsKIH0KIAorc3RhdGljIGJvb2wgc2FtcGxlQnVmZmVy
UmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKQoreworICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
ID0gZmFsc2U7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlz
cGF0Y2hfb25jZSgmb25jZVRva2VuLCBbJl0geworICAgICAgICBzdXBwb3J0cyA9IFtQQUw6Omdl
dEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBw
cm90b2NvbChBVkNvbnRlbnRLZXlSZWNpcGllbnQpXQorICAgICAgICAgICAgJiYgW1BBTDo6Z2V0
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJv
dG9jb2woQVZDb250ZW50S2V5UmVjaXBpZW50KV07CisgICAgfSk7CisgICAgcmV0dXJuIHN1cHBv
cnRzOworfQorCitzdGF0aWMgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29w
eUtleUlEcyhjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHMp
Cit7CisgICAgcmV0dXJuIGtleUlEcy5tYXAoW10gKGF1dG8mIGtleUlEKSB7CisgICAgICAgIHJl
dHVybiBrZXlJRC5jb3B5UmVmKCk7CisgICAgfSk7Cit9CisKIHN0YXRpYyB2b2lkIGJ1ZmZlcldh
c0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqIGxp
c3RlbmVyLCBDRlN0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lLCBjb25zdCB2b2lkKiwgQ0ZUeXBl
UmVmKQogewogICAgIGlmICghQ0ZFcXVhbChQQUw6OmtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90
aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBub3RpZmljYXRpb25OYW1lKSkKQEAgLTMwNyw2ICsz
MzEsOSBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwogICAgICwgbV9lcnJvckxpc3RlbmVyKGFk
b3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFy
ZW50Oip0aGlzXSkpCiAgICAgLCBtX2FwcGVuZFF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyBkYXRhIHBhcnNlciBxdWV1ZSIpKQogICAgICwgbV9tZWRp
YVNvdXJjZShwYXJlbnQpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNP
TlRFTlRLRVlTRVNTSU9OKQorICAgICwgbV9rZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcihtYWtl
VW5pcXVlUmVmPE9ic2VydmVyPHZvaWQoKT4+KFt0aGlzXSB7IGtleVN0YXR1c2VzQ2hhbmdlZCgp
OyB9KSkKKyNlbmRpZgogICAgICwgbV9tYXBJRChuZXh0TWFwSUQoKSkKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBhcmVudC0+bG9nZ2VyKCkpCkBAIC0zNjQsNiAr
MzkxLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KIAogICAgIGNsZWFyVHJhY2tzKCk7CiAK
KyAgICBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuc3dhcChtX3BlbmRpbmdQcm90ZWN0ZWRU
cmFja0luaXREYXRhTWFwKTsKKyAgICBtX3BlbmRpbmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFw
LmNsZWFyKCk7CisKICAgICBmb3IgKGF1dG8gdmlkZW9UcmFja0luZm8gOiBzZWdtZW50LnZpZGVv
VHJhY2tzKSB7CiAgICAgICAgIHZpZGVvVHJhY2tJbmZvLnRyYWNrLT5zZXRTZWxlY3RlZENoYW5n
ZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhpc10gKFZpZGVvVHJh
Y2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkgewogICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKQEAgLTQ1OCwxMCArNDg4LDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUpCiAgICAgbV9w
YXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiBt
ZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJh
Y2tJZChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFj
a0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKIHsKICAgICBVTlVTRURfUEFSQU0obWVkaWFU
eXBlKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZ
U0VTU0lPTikKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFN
YXAuZmluZCh0cmFja0lkKTsKKyAgICBpZiAoZmluZFJlc3VsdCAhPSBtX3Byb3RlY3RlZFRyYWNr
SW5pdERhdGFNYXAuZW5kKCkpCisgICAgICAgIG1lZGlhU2FtcGxlLT5zZXRLZXlJRHMoY29weUtl
eUlEcyhmaW5kUmVzdWx0LT52YWx1ZS5rZXlJRHMpKTsKKyNlbmRpZgorCiAgICAgaWYgKG1fcHJv
Y2Vzc2luZ0luaXRpYWxpemF0aW9uU2VnbWVudCkgewogICAgICAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUiwgbWVkaWFTYW1wbGUuZ2V0KCkpOwogICAgICAgICBtX21lZGlhU2FtcGxlcy5hcHBl
bmQoc3RkOjptYWtlX3BhaXIodHJhY2tJZCwgV1RGTW92ZShtZWRpYVNhbXBsZSkpKTsKQEAgLTUw
OCw3ICs1NDQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRgogI2VuZGlmCiB9CiAKLXZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIHVp
bnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUp
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25T
ZW1hcGhvcmUpCiB7CiAgICAgYXV0byBwbGF5ZXIgPSB0aGlzLT5wbGF5ZXIoKTsKICAgICBpZiAo
IXBsYXllcikKQEAgLTUxOSwxMSArNTU1LDE1IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAK
ICAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwogICAgIG1faW5pdERhdGEgPSBXVEZN
b3ZlKGluaXREYXRhKTsKLSAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQo
dGhpcywgbV9pbml0RGF0YS5nZXQoKSk7CisgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVy
S2V5TmVlZGVkKHRoaXMsICptX2luaXREYXRhKTsKKwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBw
bGF5ZXItPmNkbVNlc3Npb24oKSkgewotICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5z
dHJlYW1EYXRhUGFyc2VyKCkpCisgICAgICAgIGlmIChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBw
b3J0S2V5U2Vzc2lvbigpKSB7CisgICAgICAgICAgICAvLyBuby1vcC4KKyAgICAgICAgfSBlbHNl
IGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKICAgICAgICAgICAg
IHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwotICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3Jl
LT5zaWduYWwoKTsKKyAgICAgICAgaWYgKGhhc1Nlc3Npb25TZW1hcGhvcmUpCisgICAgICAgICAg
ICBoYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgpAQCAtNTMzLDE0ICs1NzMsMTcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAg
ICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAg
ICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9pbml0RGF0YS0+
ZGF0YSgpLCBtX2luaXREYXRhLT5ieXRlTGVuZ3RoKCkpOwotICAgIGF1dG8ga2V5SURzID0gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihpbml0RGF0YUJ1ZmZl
cik7CisgICAgYXV0byBrZXlJRHMgPSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTaW5mKCptX2luaXREYXRhKTsKICAgICBpZiAoIWtleUlEcykKICAgICAgICAgcmV0
dXJuOwogCisgICAgbV9wZW5kaW5nUHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5zZXQodHJhY2tJ
RCwgVHJhY2tJbml0RGF0YSB7IG1faW5pdERhdGEuY29weVJlZigpLCAqa2V5SURzIH0pOworCiAg
ICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAgICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9u
ID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhrZXlJRHMudmFsdWUoKSkpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkKKyAg
ICAgICAgICAgIGlmIChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKSB7
CisgICAgICAgICAgICAgICAgLy8gbm8tb3AuCisgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8g
cGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQogICAgICAgICAgICAgICAgIFtpbnN0
YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpw
YXJzZXJdOwogICAgICAgICAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAg
ICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CkBAIC01NTIsNyArNTk1
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICB9CiAKICAgICBtX2tleUlEcyA9IFdU
Rk1vdmUoa2V5SURzLnZhbHVlKCkpOwotICAgIHBsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoInNpbmYiLCBpbml0RGF0YUJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CisgICAgcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCgic2luZiIsIG1faW5p
dERhdGEtPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogCiAgICAgbV93YWl0aW5nRm9yS2V5ID0g
dHJ1ZTsKICAgICBwbGF5ZXItPndhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7CkBAIC01ODcsNyArNjMw
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZyhlcnJvckNvZGUpOwogICAgIH0pOwogCi0gICAgbV9wYXJzZXItPnNldERpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRD
YWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgdWludDY0
X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBtX3BhcnNlci0+c2V0
RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdIChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYm
IHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKICAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBh
Ym9ydENhbGxlZCAhPSB3ZWFrVGhpcy0+bV9hYm9ydENhbGxlZCkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTYxNiw3ICs2NTksNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjph
cHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICB9CiAgICAgfSk7CiAKLSAg
ICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9y
dFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmUsIGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxl
ZF0oUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpIG11dGFibGUg
eworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNlbWFwaG9yZSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0
Q2FsbGVkXShSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKSBt
dXRhYmxlIHsKICAgICAgICAgLy8gQ2FsbGVkIG9uIHRoZSBkYXRhIHBhcnNlciBxdWV1ZS4KICAg
ICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSA9IEJveDxCaW5h
cnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgYWJvcnRDYWxsZWQsIGluaXREYXRhID0gV1RGTW92ZShp
bml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmVdICgpIG11dGFibGUgewpAQCAt
NjM2LDYgKzY3OSwxMyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBtX3Bh
cnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURD
YWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRDYWxsZWQgPSBtX2Fi
b3J0Q2FsbGVkXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJ
RCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoIXdlYWtU
aGlzIHx8IGFib3J0Q2FsbGVkICE9IHdlYWtUaGlzLT5tX2Fib3J0Q2FsbGVkKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwg
bnVsbHB0cik7CisgICAgfSk7CisKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSB0cnVlOwogCiAg
ICAgbV9hcHBlbmRRdWV1ZS0+ZGlzcGF0Y2goW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhp
cyA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1f
cGFyc2VyLCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdKCkgbXV0YWJsZSB7CkBAIC03MzYs
NiArNzg2LDExIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5k
ZXJlcnMoKQogICAgICAgICBbcmVuZGVyZXIgZmx1c2hdOwogICAgICAgICBbcmVuZGVyZXIgc3Rv
cFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgICAgICBbbV9lcnJvckxpc3RlbmVyIHN0b3BPYnNl
cnZpbmdSZW5kZXJlcjpyZW5kZXJlci5nZXQoKV07CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgICAgIGlmIChtX2NkbUluc3Rh
bmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAg
ICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5
UmVjaXBpZW50OnJlbmRlcmVyLmdldCgpXTsKKyNlbmRpZgogICAgIH0KIAogICAgIFttX2Vycm9y
TGlzdGVuZXIgaW52YWxpZGF0ZV07CkBAIC04NDMsNiArODk4LDExIEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0
ZSYgdHJhY2ssCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAg
ICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5
U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9u
KCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpyZW5kZXJlci5nZXQoKV07CisjZW5kaWYKKwogICAg
ICAgICAgICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0aGlzIH07CiAgICAgICAgICAgICBbcmVuZGVy
ZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSB1c2luZ0Jsb2NrOl57CiAgICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQpAQCAtOTA5
LDcgKzk2OSwyNCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRDRE1JbnN0
YW5jZShDRE1JbnN0YW5jZSogaW5zdGFuY2UpCiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCisgICAgaWYgKHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkg
JiYgbV9jZG1JbnN0YW5jZSkgeworICAgICAgICBpZiAobV9kaXNwbGF5TGF5ZXIpCisgICAgICAg
ICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5
UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgpXTsKKworICAgICAgICBmb3IgKGF1dG8mIGF1
ZGlvUmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQorICAgICAgICAgICAgW21f
Y2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVu
dDphdWRpb1JlbmRlcmVyLmdldCgpXTsKKyAgICB9CisKICAgICBtX2NkbUluc3RhbmNlID0gZnBz
SW5zdGFuY2U7CisKKyAgICBpZiAoc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Np
b24oKSAmJiBtX2NkbUluc3RhbmNlKSB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlMYXllcikKKyAg
ICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRL
ZXlSZWNpcGllbnQ6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworCisgICAgICAgIGZvciAoYXV0byYg
YXVkaW9SZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJlcnMudmFsdWVzKCkpCisgICAgICAgICAgICBb
bV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50
OmF1ZGlvUmVuZGVyZXIuZ2V0KCldOworICAgIH0KKwogICAgIGF0dGVtcHRUb0RlY3J5cHQoKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlKTsKQEAgLTkyNiw4ICsxMDAzLDEwIEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQoKQogICAg
IGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byBw
YXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCi0gICAgICAgIFtpbnN0YW5jZVNlc3Np
b24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwor
ICAgIGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSkgeworICAg
ICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCisgICAgICAg
ICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlS
ZWNpcGllbnQ6cGFyc2VyXTsKKyAgICB9CiAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkg
ewogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICBtX2hh
c1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpAQCAtMTEwNSwxOSArMTE4NCw4OSBAQCBBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgICAgICBwbGF5ZXItPnNldEhhc0F2YWls
YWJsZUF1ZGlvU2FtcGxlKHJlbmRlcmVyLCBmYWxzZSk7CiB9CiAKK2Jvb2wgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OnRyYWNrSXNCbG9ja2VkKHVpbnQ2NF90IHRyYWNrSUQpIGNvbnN0Cit7
CisgICAgZm9yIChhdXRvJiBzYW1wbGVQYWlyIDogbV9ibG9ja2VkU2FtcGxlcykgeworICAgICAg
ICBpZiAoc2FtcGxlUGFpci5maXJzdCA9PSB0cmFja0lEKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmtleVN0YXR1c2VzQ2hhbmdlZCgpCit7CisgICAgd2hpbGUgKCFtX2Jsb2Nr
ZWRTYW1wbGVzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiBmaXJzdFBhaXIgPSBtX2Jsb2Nr
ZWRTYW1wbGVzLmZpcnN0KCk7CisKKyAgICAgICAgLy8gSWYgd2Ugc3RpbGwgY2FuJ3QgZW5xdWV1
ZSB0aGUgc2FtcGxlLCBiYWlsLgorICAgICAgICBpZiAoIWNhbkVucXVldWVTYW1wbGUoZmlyc3RQ
YWlyLmZpcnN0LCBmaXJzdFBhaXIuc2Vjb25kKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIGZpcnN0UGFpclRha2VuID0gbV9ibG9ja2VkU2FtcGxlcy50YWtlRmlyc3QoKTsK
KyAgICAgICAgZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKGZpcnN0UGFpclRha2VuLnNlY29uZCksIGZp
cnN0UGFpclRha2VuLmZpcnN0KTsKKyAgICB9Cit9CisjZW5kaWYKKworYm9vbCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6Y2FuRW5xdWV1ZVNhbXBsZSh1aW50NjRfdCB0cmFja0lELCBjb25z
dCBNZWRpYVNhbXBsZUFWRk9iakMmIHNhbXBsZSkKK3sKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgLy8gSWYgc2FtcGxlIGJ1ZmZl
cnMgZG9uJ3Qgc3VwcG9ydCBBVkNvbnRlbnRLZXlTZXNzaW9uOiBlbnF1ZXVlIHNhbXBsZQorICAg
IGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyBpZiBzYW1wbGUgaXMgdW5lbmNyeXRwZWQ6IGVucXVldWUg
c2FtcGxlCisgICAgaWYgKHNhbXBsZS5rZXlJRHMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlIGlzIGVuY3J5cHRlZCwgYnV0IHdlIGFyZSBub3Qg
YXR0YWNoZWQgdG8gYSBDRE06IGRvIG5vdCBlbnF1ZXVlIHNhbXBsZS4KKyAgICBpZiAoIW1fY2Rt
SW5zdGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIGlmIHNhbXBsZSBpcyBl
bmNyeXB0ZWQsIGFuZCBrZXlJRHMgbWF0Y2ggdGhlIGN1cnJlbnQgc2V0IG9mIGtleUlEczogZW5x
dWV1ZSBzYW1wbGUuCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9jdXJyZW50VHJhY2tJRHMuZmlu
ZCh0cmFja0lEKTsKKyAgICBpZiAoZmluZFJlc3VsdCAhPSBtX2N1cnJlbnRUcmFja0lEcy5lbmQo
KSAmJiBmaW5kUmVzdWx0LT52YWx1ZSA9PSBzYW1wbGUua2V5SURzKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlJ3Mgc2V0IG9mIGtleUlEcyBkb2VzIG5vdCBtYXRj
aCB0aGUgY3VycmVudCBzZXQgb2Yga2V5SURzLCBjb25zdWx0IHdpdGggdGhlIENETQorICAgIC8v
IHRvIGRldGVybWluZSBpZiB0aGUga2V5SURzIGFyZSB1c2FibGU7IGlmIHNvLCB1cGRhdGUgdGhl
IGN1cnJlbnQgc2V0IG9mIGtleUlEcyBhbmQgZW5xdWV1ZSBzYW1wbGUuCisgICAgaWYgKG1fY2Rt
SW5zdGFuY2UtPmlzQW55S2V5VXNhYmxlKHNhbXBsZS5rZXlJRHMoKSkpIHsKKyAgICAgICAgbV9j
dXJyZW50VHJhY2tJRHMuc2V0KHRyYWNrSUQsIHNhbXBsZS5rZXlJRHMoKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAgIHJldHVybiB0
cnVlOworI2VuZGlmCit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVl
dWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRFN0cmluZykKIHsKICAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVfb3IoMCk7CiAgICAgaWYg
KHRyYWNrSUQgIT0gbV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNv
bnRhaW5zKHRyYWNrSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSA9IHNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKTsKLSAgICBpZiAocGxhdGZv
cm1TYW1wbGUudHlwZSAhPSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKQorICAg
IEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KHNhbXBsZSkpOworICAgIGlmICghaXM8TWVk
aWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWY8TWVk
aWFTYW1wbGVBVkZPYmpDPiBzYW1wbGVBVkZPYmpDID0gc3RhdGljX3JlZmVyZW5jZV9jYXN0PE1l
ZGlhU2FtcGxlQVZGT2JqQz4oV1RGTW92ZShzYW1wbGUpKTsKKyAgICBpZiAoIXNhbXBsZUFWRk9i
akMtPmtleUlEcygpLmlzRW1wdHkoKSAmJiAhY2FuRW5xdWV1ZVNhbXBsZSh0cmFja0lELCBzYW1w
bGVBVkZPYmpDKSkgeworICAgICAgICBtX2Jsb2NrZWRTYW1wbGVzLmFwcGVuZCh7IHRyYWNrSUQs
IFdURk1vdmUoc2FtcGxlQVZGT2JqQykgfSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAg
ICBlbnF1ZXVlU2FtcGxlKFdURk1vdmUoc2FtcGxlQVZGT2JqQyksIHRyYWNrSUQpOworfQorCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNh
bXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lEKQorewogICAgIGF1dG8gbG9n
U2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIERFQlVHX0xPRyhsb2dTaXRlSWRl
bnRpZmllciwgInRyYWNrIElEID0gIiwgdHJhY2tJRCwgIiwgc2FtcGxlID0gIiwgc2FtcGxlLmdl
dCgpKTsKIAorICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0
Zm9ybVNhbXBsZSgpOworCiAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlw
dGlvbiA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihwbGF0Zm9ybVNh
bXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpOwogICAgIEFTU0VSVChmb3JtYXREZXNjcmlwdGlv
bik7CiAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikgewpAQCAtMTI4NCw2ICsxNDMzLDkgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2Ft
cGxlcyh1aW50NjRfdCB0cmFja0lEKQogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwogCisgICAg
aWYgKHRyYWNrSXNCbG9ja2VkKHRyYWNrSUQpKQorICAgICAgICByZXR1cm47CisKICAgICBwcm92
aWRlTWVkaWFEYXRhKEF0b21TdHJpbmc6Om51bWJlcih0cmFja0lEKSk7CiB9CiAKQEAgLTEzNzUs
MTEgKzE1MjcsMjEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0VmlkZW9M
YXllcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogbGF5ZXIKICAgICAgICAgW21fZGlzcGxh
eUxheWVyIGZsdXNoXTsKICAgICAgICAgW21fZGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVk
aWFEYXRhXTsKICAgICAgICAgW21fZXJyb3JMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXI6bV9k
aXNwbGF5TGF5ZXIuZ2V0KCldOworCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFW
RShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1w
bGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2Rt
SW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDpt
X2Rpc3BsYXlMYXllci5nZXQoKV07CisjZW5kaWYKICAgICB9CiAKICAgICBtX2Rpc3BsYXlMYXll
ciA9IGxheWVyOwogCiAgICAgaWYgKG1fZGlzcGxheUxheWVyKSB7CisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAgICBpZiAobV9j
ZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQor
ICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVu
dEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5nZXQoKV07CisjZW5kaWYKKwogICAgICAgICBX
ZWFrUHRyIHdlYWtUaGlzIHsgKnRoaXMgfTsKICAgICAgICAgW21fZGlzcGxheUxheWVyIHJlcXVl
c3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNp
bmdCbG9jazpeIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIxNGQyMzE1NTk0YTg4ODM2NS4uZmMyYmFi
OTA3ZDk4MzUzZDFmOGFhZDY5NGY5ZTU1MmE0YzI5ZmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTG9nZ2VyOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb250ZW50VHlwZTsKLWNsYXNzIE1lZGlhU2FtcGxlOworY2xhc3MgTWVkaWFTYW1w
bGVBVkZPYmpDOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBT
b3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVm
ZmVyUGFyc2VyPiB7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8v
IFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB1c2luZyBEaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWlu
dDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpPjsKKyAgICB1c2luZyBEaWRQ
cm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxNZWRpYVNhbXBsZUFW
Rk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CiAg
ICAgdm9pZCBzZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soRGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtMTM3LDEyICsxMzcsMTkgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkgb24gdGhl
IHBhcnNlciB0aGVhZC4KLSAgICB1c2luZyBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxVaW50
OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lEKT47CisgICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1aW50NjRfdCB0cmFja0lEKT47CiAgICAgdm9p
ZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2RpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAorICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRo
ZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVu
dGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVy
PiYmLCB1aW50NjRfdCB0cmFja0lEKT47CisgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrKERpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURD
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFNv
dXJjZUJ1ZmZlclBhcnNlcigpOwogCkBAIC0xNTIsNiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAg
IERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFj
azsKICAgICBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrIG1fd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKICAgICBEaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgbV9kaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2s7CisgICAgRGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayBtX2Rp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2s7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDA1YTgzMTZkYzI3
ZTYzMDE3ZjM5N2YxOTI0NjliODJhMzNiN2IwMzQuLmFlMTY0MTRmMjFjNjg0NmMxODk3NzA5ZTE0
MjRlNGE2YTRiNzYxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0x
MDMyLDcgKzEwMzIsNyBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0Vu
dHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IFRyYWNrRQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiBrZXlJZCA9IGtleUlkRWxlbWVudC52YWx1
ZSgpOwotICAgICAgICAgICAgbV9rZXlJZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHRyYWNrRW50
cnkudHJhY2tfdWlkLnZhbHVlKCksIFVpbnQ4QXJyYXk6OmNyZWF0ZShrZXlJZC5kYXRhKCksIGtl
eUlkLnNpemUoKSkpKTsKKyAgICAgICAgICAgIG1fa2V5SWRzLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cih0cmFja0VudHJ5LnRyYWNrX3VpZC52YWx1ZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShrZXlJ
ZC5kYXRhKCksIGtleUlkLnNpemUoKSkpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDI4ZTczZmJhNTAyM2M4MTZiZmIyNDJjNWY5OTBkYjk3
YTE4YmMxZmYuLmU4NzZhYjQxNGE0YWJiMzNkNTE4YzM3YjQxZmU1YTE0Nzc2YWI0OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTI2OSw3ICsyNjksNyBAQCBwcml2YXRlOgog
ICAgIHdlYm06OlN0YXR1cyBPbkZyYW1lKGNvbnN0IHdlYm06OkZyYW1lTWV0YWRhdGEmLCB3ZWJt
OjpSZWFkZXIqLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcpIGZpbmFsOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluaXRpYWxpemF0aW9uU2VnbWVudD4gbV9pbml0aWFsaXphdGlvblNlZ21lbnQ7
Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPFVpbnQ4QXJyYXk+Pj4gbV9rZXlJ
ZHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPFNoYXJlZEJ1ZmZlcj4+PiBt
X2tleUlkczsKICAgICB3ZWJtOjpTdGF0dXMgbV9zdGF0dXM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PHdlYm06OldlYm1QYXJzZXI+IG1fcGFyc2VyOwogICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNl
Z21lbnRFbmNvdW50ZXJlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1l
ci5oCmluZGV4IDNiNWE2OWFhNzZhNmFhZjE3YTU2MTc2YzFmYjIzOWE0ZjkxMGIwYmIuLmZmOGMx
YThiNDgxZDdmMzNjYzI0N2I2NGRmMWI4ZmFjNzBjYmRkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNh
bXBsZUdTdHJlYW1lci5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBSZWY8TWVkaWFT
YW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2Ft
cGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAg
UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGF0
Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxlVHlwZTsgfQogICAgIHN0ZDo6b3B0
aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
ICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA0
YWM2OWFjZDlhMDBjZjZlMTk5YTMzYWFjNDczZDhjZDg1ZGM1ZTVmLi4wYTk0YWNmMWExZTEzNjZm
NmE1NzI1ODhiNzcwNDFlNGMzYzY0NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcApAQCAtNjEsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBzaXplSW5C
eXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7IH0KICAgICBTYW1w
bGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRm
b3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxh
dGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6
Ok1vY2tTYW1wbGVCb3hUeXBlOyB9CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0
U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXpl
KCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcAppbmRleCA0MmEzMjA2NTRiMDNkZjliNDM5Nzc3OTQyNTY0NTgyMDA2Y2RhMTEw
Li43MTFjZWQwYmYxMzE0MjU5MTc3NWZmZDc5M2FlNWE4NmM2YWUwY2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwCkBAIC02OTgsMTEgKzY5OCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgUwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlh
UGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1lc3NhZ2UpCit2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2Fn
ZSkKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZVJlZmVyZW5jZTsKLSAgICBpZiAo
bWVzc2FnZSkKLSAgICAgICAgbWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVzc2FnZS0+ZGF0YSgpLCBt
ZXNzYWdlLT5ieXRlTGVuZ3RoKCkgfTsKKyAgICBtZXNzYWdlUmVmZXJlbmNlID0geyBtZXNzYWdl
LmRhdGEoKSwgbWVzc2FnZS5zaXplKCkgfTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyS2V5TmVl
ZGVkKFdURk1vdmUobWVzc2FnZVJlZmVyZW5jZSkpLCBtX2lkKTsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKaW5kZXggOTMxNmI2NmFiMzU5NjZlNWI2NDVkZDFjN2NlMGU4MTJmMjA2YTYzNy4uNTk1
YzU4OTE5ZWExM2ZlYjk1ZDhmYzBkMGI0MzIzMDY4YTgyYTBiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBA
IC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVk
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBs
YXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA3NzRjY2YzMWYyNjc3ZDBhMDUyMTc2
NTFiM2I0ZTEzMjM1YzRjMjk0Li5mODk1N2IzYjhlNDE4NjIzYjNiNTZjMDEyMTU3MDA1YmRjZjYy
ODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2UoUmV0YWluUHRyPE1UUGx1
Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAgICAgICBkaWRQYXJzZVRyYWNrcyh7IH0sIGVy
cm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFD
YWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRpYVNh
bXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRp
YVR5cGUpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+
JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
KSB7CiAgICAgICAgIGRpZFByb3ZpZGVNZWRpYURhdGEoV1RGTW92ZShtZWRpYVNhbXBsZSksIHRy
YWNrSUQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIE1l
ZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
OjpJbml0aWFsaXphdGlvbgogICAgIG1faW5pdCA9IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFGb3Jt
YXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2Ft
cGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQordm9pZCBNZWRpYUZvcm1hdFJl
YWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1lZGlh
U2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAppbmRleCA2NTA5
M2U5ZTQ2YjQwYjVhMzk3NmZkZWYyOWU2MTNjNjQ1MWYzMTVhLi4xNWQ1NTczNjMzODE3NDYwYzJl
NjIwNDQxOTAxMDIzY2Y4NmI0YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaApAQCAt
MzYsNiArMzYsNyBAQAogREVDTEFSRV9DT1JFX01FRElBX1RSQUlUUyhGb3JtYXRSZWFkZXIpOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakM7CiBjbGFzcyBT
b3VyY2VCdWZmZXJQYXJzZXI7CiB9CiAKQEAgLTY3LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZFBhcnNlVHJhY2tzKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6Oklu
aXRpYWxpemF0aW9uU2VnbWVudCYmLCB1aW50NjRfdCBlcnJvckNvZGUpOwogICAgIHZvaWQgZGlk
U2VsZWN0VmlkZW9UcmFjayhXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQog
ICAgIHZvaWQgZGlkRW5hYmxlQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZSYs
IGJvb2wpIHsgfQotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8V2ViQ29yZTo6TWVk
aWFTYW1wbGU+JiYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRpZFByb3Zp
ZGVNZWRpYURhdGEoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQz4mJiwgdWludDY0X3Qs
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmluaXNoUGFyc2luZyhSZWY8V2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIC8vIENNQmFzZUNsYXNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRl
UmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGY4MzM2YmYwMTM3MjEwOTBkYTE5Mzc4ZmI1YTQ1M2M4
ZGFjYTU3NmYuLmI2NmYzYTM1YTk2ZjdiNWQ1Zjk3YWJkNmVkYTAwMjYxNTgyNmUxZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNh
bXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoK
IAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OlBs
YXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6
UGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5cGU7IH0KICAg
ICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2
b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA4ZDllNWZmOTJhYzNiM2Yw
ZWI3MTMzOWVmZThiNGJmM2Y0Mjk2NGRjLi41YzcxYTI2OGUwZDBiNDY3NTBiM2I2MmY1YzdkY2Y3
NzJmMmIwNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0xMTkxLDcgKzEx
OTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKElQQzo6RGF0YVJl
ZmVyZW5jZSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5n
ZXQoKSkKLSAgICAgICAgcGxheWVyLT5rZXlOZWVkZWQoVWludDhBcnJheTo6Y3JlYXRlKG1lc3Nh
Z2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSkucHRyKCkpOworICAgICAgICBwbGF5ZXItPmtleU5l
ZWRlZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5LmgKaW5kZXggMzFhMWE4NDU3ZWJmNjg1MzYxOGQ2OGQ1ZWU5NTEyZWQ3NGVmMWZm
Ny4uYjI2YmFiNWVmN2VjNzlmYjI4ZmRhZWRiM2U4YzRmMzBhNTQ3OWUwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVQcm94eS5oCkBAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCB2aWRl
b1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CiAgICAgLy8gRklYTUU6IFdoZW4gVmlkZW9GcmFt
ZSBpcyBub3QgTWVkaWFTYW1wbGUsIHRoZXNlIHdpbGwgbm90IGJlIG5lZWRlZC4KICAgICBXZWJD
b3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOworICAgIFdl
YkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHlUeXBlOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGdldFBpeGVsQnVmZmVy
KCk7CkBAIC0xNDksOSArMTUwLDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpv
cHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IFJlbW8KIAogfQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSkK
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlh
U2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2Vi
Q29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGU7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxl
KSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZVR5cGUoKSA9PSBXZWJDb3JlOjpQ
bGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpW
aWRlb0ZyYW1lKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNh
bXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCku
dHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlw
ZTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYg
bWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlVHlwZSgpID09
IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlOyB9CiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlODdhYWI2MzBmNjYyMjFmOGM1YWUzN2M2
NDFmZGIyNTIxZjkxZDFlLi44YmQwMDYzM2RmMGIzN2YzNzllM2NiODMwMTg3OTI4Y2Q5NWQ2YjU3
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC02
MjcsNiArNjI3LDE1IEBACiAgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJv
bGUpOgogICAgICAgICBBZGRlZCBpbXBsZW1lbnRhdGlvbi4KIAorMjAyMi0wMi0wNyAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkb3B0IC1zdHJl
YW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6IGRl
bGVnYXRlIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzYxMDkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcDoKKwogMjAy
Mi0wMi0wNyAgUm95IFJlYXBvciAgPHJyZWFwb3JAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJr
aXRjb3JlcHldIEF1dG9pbnN0YWxsZXIgbWF5IGZhaWwgdG8gaW5zdGFsbCB3aGVlbHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggYzQ1
YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRhNDg2NjUxOS4uNWE2NTM1ODMwMTVkMjg4ZGVm
NDdiY2I0NzkyYzI0YzhkMmY5YTdlZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIH0K
ICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0K
ICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHsgbnVsbHB0ciB9IH07IH0KKyAgICBQbGF0Zm9ybVNh
bXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0
Zm9ybVNhbXBsZTo6Tm9uZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFu
Z2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsgfQo=
</data>
<flag name="commit-queue"
          id="478616"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451774</attachid>
            <date>2022-02-11 23:55:05 -0800</date>
            <delta_ts>2022-02-15 08:33:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236109-20220211235504.patch</filename>
            <type>text/plain</type>
            <size>91623</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkMjE0Y2FmNzVlZmI5ODU5ZDZmYjI4
Yzg3ZmY0M2U1MWIzMGZiNzguLjMzZDAyNTlmNTlkMjMwZjA5YWEzYjM3MzM3MmMyM2RkZWUzMzk0
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDItMDcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHNldHRpbmdzIHRvIHJlc3RyaWN0IG1lZGlhIGNv
bnRhaW5lcnMgYW5kIGNvZGVjcyB3aGVuIGluIENhcHRpdmUgUG9ydGFsIG1vZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI0NQorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXMueWFtbDoKKwogMjAyMi0wMi0xMSAgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQ2hlY2sgZm9yIE1BUF9BTElH
TkVEIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYmRmMTI4MDU0ZDFmZjdmMWVkZGFkYTUwOGM4YzFk
NjJiZmU4MTJiLi5iMzRhMGJmZGQ5MWY0NzkxMzIyNzMxZGQyZjJhMjJkYWQzMDAxY2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xMjAsNiArMTIwLDEwNSBAQAogICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgogICAgICAgICAqIHBsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgogCisyMDIyLTAyLTA3
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzZXR0aW5n
cyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0aXZl
IFBvcnRhbCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzYyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAg
ICAgVGVzdHM6IG1lZGlhL21lZGlhLWFsbG93ZWQtY29kZWNzLmh0bWwKKyAgICAgICAgICAgICAg
IG1lZGlhL21lZGlhLWFsbG93ZWQtY29udGFpbmVycy5odG1sCisgICAgICAgICAgICAgICBtZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFsbG93ZWQtY29kZWNzLmh0bWwKKyAgICAgICAg
ICAgICAgIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWxsb3dlZC1jb250YWluZXJz
Lmh0bWwKKworICAgICAgICBBZGQgc2V0dGluZ3MgYXQgdGhlIFdlYkNvcmUgbGV2ZWwgdG8gb3B0
aW9uYWxseSBkZWNsYXJlIGEgbGlzdCBvZiBjb250YWluZXIgdHlwZXMsCisgICAgICAgIHZpZGVv
IGNvZGVjcywgYXVkaW8gY29kZWNzLCBhbmQgY2FwdGlvbiBmb3JtYXRzIHRvIGFsbG93IHdoZW4g
bG9hZGluZyBtZWRpYSB0aHJvdWdoCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgYW5kIE1lZGlh
U291cmNlLgorCisgICAgICAgIFRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlIHRoZSBjb2RlYyBJ
RCwgdHlwaWNhbGx5IGEgZm91ci1jaGFyYWN0ZXItY29kZSBlbWJlZGRlZAorICAgICAgICBpbiB0
aGUgY29udGFpbmVyIGl0c2VsZiwgZG9lcyBub3QgbWF0Y2ggdGhlIFJGQzQyODEgY29kZWMgc3Ry
aW5nLiBOb3RhYmx5LCB0aGlzIGlzIHRoZSBjYXNlCisgICAgICAgIHdpdGggIm1wNGEuNDAiIGFu
ZCAnYWFjICcuIFNvIHRoZSBzZXR0aW5ncyBtdXN0IGluY2x1ZGUgYm90aCB0aGUgY29kZWMgSUQg
YW5kIHRoZSBjb2RlYworICAgICAgICB0eXBlIGluIHN0cmluZyBmb3JtLgorCisgICAgICAgIFF1
ZXJ5IHRoZXNlIGxpc3RzIGluIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKCkgYW5kIE1l
ZGlhU291cmNlOjppc1R5cGVTdXBwb3J0ZWQoKQorICAgICAgICBhbmQgcmVqZWN0IENvbnRlbnRU
eXBlcyB3aGljaCBkbyBub3QgY29uZm9ybSB0byB0aGUgYWxsb3dlZCB0eXBlcy4KKworICAgICAg
ICBRdWVyeSB0aGVzZSBsaXN0cyBpbiBNZWRpYVNvdXJjZTo6Y2hhbmdlVHlwZSgpIHRvIGRpc2Fs
bG93IHN3aXRjaGluZyB0byBhbiB1bnN1cHBvcnRlZAorICAgICAgICBDb250ZW50VHlwZS4KKyAg
ICAgICAgCisgICAgICAgIElmIHRoZXNlIGxpc3RzIGFyZSBzZXQsIHBhc3MgdGhlbSBpbnRvIEFW
VVJMQXNzZXQgYXMgY3JlYXRpb24gb3B0aW9ucy4KKworICAgICAgICBXaGVuIGEgbmV3IEFWQXNz
ZXRUcmFjayBpcyBsb2FkZWQsIHF1ZXJ5IHRoZXNlIGxpc3RzIGFuZCBpZiB0aGUgdHJhY2sncyB0
eXBlIGRvZXMgbm90CisgICAgICAgIGNvbmZvcm0gdG8gdGhlIGFsbG93ZWQgdHlwZXMsIHN5bnRo
ZXNpemUgYW4gZXJyb3IgYW5kIGJsb2NrIGZ1cnRoZXIgbG9hZGluZy4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2U6OmlzVHlwZVN1cHBvcnRlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpjaGFu
Z2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWxsb3dlZE1lZGlhQ29kZWNUeXBlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphbGxvd2VkTWVkaWFWaWRlb0Nv
ZGVjVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWxs
b3dlZE1lZGlhQXVkaW9Db2RlY1R5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyBjb25zdCk6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5nc0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRBbGxvd2VkTWVkaWFD
b250YWluZXJUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldEFsbG93
ZWRNZWRpYVZpZGVvQ29kZWNUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6
OnNldEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nc0Jhc2U6OnNldEFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyk6CisgICAgICAgICog
cGFnZS9TZXR0aW5nc0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0
QWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NC
YXNlOjphbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nc0Jhc2U6OnNldEFsbG93ZWRNZWRpYVZpZGVvQ29kZWNUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmFsbG93ZWRNZWRpYVZpZGVvQ29kZWNUeXBlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldEFsbG93ZWRNZWRpYUF1ZGlv
Q29kZWNUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmFsbG93ZWRNZWRp
YUF1ZGlvQ29kZWNUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6
OnNldEFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OmFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGVudFR5cGVVdGlsaXRpZXMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRUeXBlc1RvQ29kZWNzKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRlbnRUeXBlTWVldHNDb250YWluZXJBbmRDb2RlY1R5cGVSZXF1aXJlbWVudHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRlbnRUeXBlVXRpbGl0aWVzLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Rm91ckNDOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm91ckNDOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om51bGxPcHRpb25hbFN0cmluZ1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpudWxsT3B0aW9uYWxGb3VyQ0NWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjphbGxvd2VkTWVkaWFWaWRlb0NvZGVjVHlwZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNUeXBlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWxsb3dlZE1lZGlhQ2FwdGlvbkZvcm1h
dFR5cGVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkaW5nTWV0YWRhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRUeXBlc1RvQ29kZWNzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6YWxsVHJhY2tzQXJlUGxheWFibGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dHJhY2tJc1BsYXlh
YmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmFzc2V0U3RhdHVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAg
ICAgIChXZWJDb3JlOjphc3NldFRyYWNrTWV0YWRhdGFLZXlOYW1lcyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0
dGluZ3M6OnNldEFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsU2V0dGluZ3M6OnNldEFsbG93ZWRNZWRpYVZpZGVvQ29kZWNUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRBbGxvd2VkTWVkaWFBdWRpb0NvZGVj
VHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0QWxsb3dlZE1l
ZGlhQ2FwdGlvbkZvcm1hdFR5cGVzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOgorCiAyMDIyLTAy
LTExICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAg
RW5hYmxlIGdyYW1tYXIgY2hlY2tpbmcgb24gTWFjIENhdGFseXN0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
aW5kZXggMGE3ODdlMDU4NDA2NjFiNDhiZjY3MGY2OTkzZjZmNGU4ZWFlMmJmMi4uMzZhOWRjODdj
ZjdiMjE1Mzk5YTA5MGU2YTkzMjI0NWUzYzBmMDlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMjItMDItMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHNldHRpbmdzIHRvIHJlc3RyaWN0IG1lZGlhIGNvbnRhaW5lcnMgYW5k
IGNvZGVjcyB3aGVuIGluIENhcHRpdmUgUG9ydGFsIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlu
ay5oOgorICAgICAgICAqIHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5tbToKKwogMjAy
Mi0wMi0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbbWFjT1NdIFN1cHBvcnQgYm90aCB2ZXJzaW9ucyBvZiBTY3JlZW5DYXB0dXJlS2l0IEFQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA0ZGI2MmI1Mjg0NzA5MDQ0NDc2NzNlYzA0Y2M4MGY2MWJkNWM1MGVhLi4yMzU1
MGE2NzAyZWY3MDI2MTU0MzU5N2Y2MmYxMTI3M2ViOTY2OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMTksNiAr
MTksMzEgQEAKICAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwOgogICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKIAorMjAyMi0wMi0wNyAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3QgbWVkaWEg
Y29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciBjYWNoZXMgdGhlIHJlc3VsdHMgb2Ygc3VwcG9ydHNUeXBlQW5kQ29kZWNzKCkgY2Fs
bHMsIHdoaWNoCisgICAgICAgIGlzIHByb2JsZW1hdGljIHdoZW4gdGhvc2UgcmVzdWx0cyBjYW4g
Y2hhbmdlIGR1ZSB0byBhIGNoYW5nZSBpbiBzZXR0aW5ncy4gU28gZW5mb3JjZQorICAgICAgICB0
aGUgYWxsb3dlZCBjb2RlYyBhbmQgY29udGFpbmVycyBzZXR0aW5ncyBhdCB0aGUgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyIGxldmVsLiBBbHNvLAorICAgICAgICBwYXNzIHRob3NlIHNldHRpbmdz
IGFjcm9zcyB0aGUgR1BVIHByb2Nlc3MgYm91bmRhcnkgdmlhIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHlDb25maWd1cmF0aW9uLgorCisgICAgICAgIERyaXZlLWJ5IGZpeDogcmVmYWN0b3IgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb246OmRlY29kZSgpIHNvIGFzIG5vdCB0byByZXF1
aXJlCisgICAgICAgIHJlLWRlY2xhcmluZyB0aGUgdHlwZXMgb2YgZXZlcnkgaXZhciwgYW5kIGdy
ZWF0bHkgc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb246OmRl
Y29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpj
cmVhdGVSZW1vdGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcjo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVBy
ZWZlcmVuY2VzKToKKwogMjAyMi0wMi0xMSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBncmFtbWFyIGNoZWNraW5nIG9uIE1hYyBDYXRh
bHlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlcy55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzLnlhbWwKaW5kZXggZTc5YzdkOTJkMTI4YTg2NjhmMzRjMzI0MTg1MzkxNDYzMzFmMmVjZS4u
NGFhNjdhMzEyOTgwNGRhOWZmOGU2YTQ0OTQ1OTZjNDY2MWZmOWUxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTEzMjYs
NiArMTMyNiwxNCBAQCBNYXhQYXJzZUR1cmF0aW9uOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZh
dWx0OiAtMQogCitNZWRpYUF1ZGlvQ29kZWNJRHNBbGxvd2VkSW5DYXB0aXZlUG9ydGFsTW9kZToK
KyAgdHlwZTogU3RyaW5nCisgIHdlYmNvcmVCaW5kaW5nOiBub25lCisgIGV4cG9zZWQ6IFsgV2Vi
S2l0IF0KKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6ICciYWFj
ICx6YWFjLHFhYWMsY2FhYywubXAzIicKKwogTWVkaWFDYXBhYmlsaXRpZXNFbmFibGVkOgogICB0
eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZToKQEAgLTEzMzYsNiArMTM0NCwzMCBAQCBNZWRpYUNh
cGFiaWxpdGllc0VuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAK
K01lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzQWxsb3dlZEluQ2FwdGl2ZVBvcnRhbE1vZGU6CisgIHR5
cGU6IFN0cmluZworICB3ZWJjb3JlQmluZGluZzogbm9uZQorICBleHBvc2VkOiBbIFdlYktpdCBd
CisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiAnImM2MDgsd3Z0
dCInCisKK01lZGlhQ29kZWNUeXBlc0FsbG93ZWRJbkNhcHRpdmVQb3J0YWxNb2RlOgorICB0eXBl
OiBTdHJpbmcKKyAgd2ViY29yZUJpbmRpbmc6IG5vbmUKKyAgZXhwb3NlZDogWyBXZWJLaXQgXQor
ICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogJyJtcDRhLjQwLGF2
YzEiJworCitNZWRpYUNvbnRhaW5lclR5cGVzQWxsb3dlZEluQ2FwdGl2ZVBvcnRhbE1vZGU6Cisg
IHR5cGU6IFN0cmluZworICB3ZWJjb3JlQmluZGluZzogbm9uZQorICBleHBvc2VkOiBbIFdlYktp
dCBdCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiAnInZpZGVv
L21wNCxhdWRpby9tcDQsdmlkZW8veC1tNHYsYXVkaW8veC1tNGEsYXVkaW8vbXAzLGFwcGxpY2F0
aW9uL3gtbXBlZ1VSTCx2bmQuYXBwbGUubXBlZ1VSTCInCisKIE1lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0OgogICB0eXBlOiBTdHJpbmcKICAgd2ViY29yZUV4Y2x1ZGVG
cm9tSW50ZXJuYWxTZXR0aW5nczogdHJ1ZQpAQCAtMTQ1NSw2ICsxNDg3LDE0IEBAIE1lZGlhVXNl
ckdlc3R1cmVJbmhlcml0c0Zyb21Eb2N1bWVudDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVs
dDogZmFsc2UKIAorTWVkaWFWaWRlb0NvZGVjSURzQWxsb3dlZEluQ2FwdGl2ZVBvcnRhbE1vZGU6
CisgIHR5cGU6IFN0cmluZworICB3ZWJjb3JlQmluZGluZzogbm9uZQorICBleHBvc2VkOiBbIFdl
YktpdCBdCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiAnImF2
YzEsemF2YyxxYXZjLGNhdmMiJworCiBNZW51SXRlbUVsZW1lbnRFbmFibGVkOgogICB0eXBlOiBi
b29sCiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA4MDUwMDEzZWQ2NWY0MGM4OGYwNDM2MTI3ODAyNWQ0NjA0ZmIzMDFjLi5hNGYx
MzQ3ZWNmNzUxZWZkN2E0MjVlZThjOGRhMDFjZGIwZjg5ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTE0MjcsNiArMTQyNyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9D
b25jcmV0ZUltYWdlQnVmZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZW50VHlwZVV0
aWxpdGllcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGFzaEFycmF5LmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDU5NWU0MjU0MjdlOGViYWM5ZjVhYjZhZjEwYTU3
M2MwNTQ1YmI0YWIuLjkxMjc0N2Y0MDZjMjk1OTQ5OTczYjViYjEzNDlkYmNhNjc0MWMxMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiQ29udGVudFR5cGVVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCkBAIC05MDksNiArOTEwLDE3IEBAIGJvb2wgTWVkaWFTb3VyY2U6
OmlzVHlwZVN1cHBvcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmCiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1ZTsKICAgICBwYXJhbWV0
ZXJzLmNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCA9IFdURk1vdmUoY29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KTsKIAorICAgIGlmIChjb250ZXh0LmlzRG9j
dW1lbnQoKSkgeworICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IGRvd25jYXN0PERvY3VtZW50Pihj
b250ZXh0KS5zZXR0aW5ncygpOworICAgICAgICBpZiAoIWNvbnRlbnRUeXBlTWVldHNDb250YWlu
ZXJBbmRDb2RlY1R5cGVSZXF1aXJlbWVudHMoY29udGVudFR5cGUsIHNldHRpbmdzLmFsbG93ZWRN
ZWRpYUNvbnRhaW5lclR5cGVzKCksIHNldHRpbmdzLmFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoKSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcGFyYW1ldGVycy5hbGxvd2Vk
TWVkaWFDb250YWluZXJUeXBlcyA9IHNldHRpbmdzLmFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVz
KCk7CisgICAgICAgIHBhcmFtZXRlcnMuYWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcyA9IHNldHRp
bmdzLmFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMoKTsKKyAgICAgICAgcGFyYW1ldGVycy5hbGxv
d2VkTWVkaWFBdWRpb0NvZGVjSURzID0gc2V0dGluZ3MuYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lE
cygpOworICAgICAgICBwYXJhbWV0ZXJzLmFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyA9
IHNldHRpbmdzLmFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcygpOworICAgIH0KKwogICAg
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OnN1cHBv
cnRzVHlwZShwYXJhbWV0ZXJzKTsKIAogICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmlu
ZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNmNjFjYzgxY2MzNjBjMzlkOTAuLmUwNjkyNzBkZjZi
NmQxZTdiZmJjM2UyMDkzMjc2NzZiMmQ4YTM5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCisjaW5jbHVkZSAiQ29udGVudFR5cGVVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCkBAIC0zNTUsNiArMzU2LDExIEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6Y2hhbmdlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAg
ICAgLy8gdGhlIHR5cGVzIHNwZWNpZmllZCAoY3VycmVudGx5IG9yIHByZXZpb3VzbHkpIG9mIFNv
dXJjZUJ1ZmZlciBvYmplY3RzIGluIHRoZSBzb3VyY2VCdWZmZXJzIGF0dHJpYnV0ZSBvZgogICAg
IC8vIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlLCB0aGVuIHRocm93IGEgTm90U3VwcG9ydGVkRXJy
b3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBDb250ZW50VHlwZSBjb250
ZW50VHlwZSh0eXBlKTsKKworICAgIGF1dG8mIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5n
cygpOworICAgIGlmICghY29udGVudFR5cGVNZWV0c0NvbnRhaW5lckFuZENvZGVjVHlwZVJlcXVp
cmVtZW50cyhjb250ZW50VHlwZSwgc2V0dGluZ3MuYWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMo
KSwgc2V0dGluZ3MuYWxsb3dlZE1lZGlhQ29kZWNUeXBlcygpKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKICAgICBpZiAoIW1fcHJpdmF0ZS0+Y2Fu
U3dpdGNoVG9UeXBlKGNvbnRlbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CiAKQEAgLTc4Niw2ICs3OTIsMjUgQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KElu
aXRpYWxpemEKICAgICAgICAgLy8gNS4xIElmIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IGNv
bnRhaW5zIHRyYWNrcyB3aXRoIGNvZGVjcyB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCBzdXBwb3J0
LAogICAgICAgICAvLyB0aGVuIHJ1biB0aGUgYXBwZW5kIGVycm9yIGFsZ29yaXRobSB3aXRoIHRo
ZSBkZWNvZGUgZXJyb3IgcGFyYW1ldGVyIHNldCB0byB0cnVlIGFuZCBhYm9ydCB0aGVzZSBzdGVw
cy4KICAgICAgICAgLy8gTk9URTogVGhpcyBjaGVjayBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2Yg
dGhlIFNvdXJjZUJ1ZmZlclByaXZhdGUuCisgICAgICAgIGlmIChhdXRvJiBhbGxvd2VkTWVkaWFB
dWRpb0NvZGVjSURzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFsbG93ZWRNZWRpYUF1ZGlvQ29k
ZWNJRHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBhdWRpb1RyYWNrSW5mbyA6IHNlZ21l
bnQuYXVkaW9UcmFja3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXVkaW9UcmFja0luZm8uZGVz
Y3JpcHRpb24gJiYgYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcy0+Y29udGFpbnMoRm91ckNDOjpm
cm9tU3RyaW5nKGF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKSkpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGFwcGVuZEVycm9yKHRydWUp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG8mIGFs
bG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMgPSBkb2N1bWVudCgpLnNldHRpbmdzKCkuYWxsb3dlZE1l
ZGlhVmlkZW9Db2RlY0lEcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2tJ
bmZvIDogc2VnbWVudC52aWRlb1RyYWNrcykgeworICAgICAgICAgICAgICAgIGlmICh2aWRlb1Ry
YWNrSW5mby5kZXNjcmlwdGlvbiAmJiBhbGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzLT5jb250YWlu
cyhGb3VyQ0M6OmZyb21TdHJpbmcodmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkp
KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYXBwZW5k
RXJyb3IodHJ1ZSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICAv
LyA1LjIgRm9yIGVhY2ggYXVkaW8gdHJhY2sgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQs
IHJ1biBmb2xsb3dpbmcgc3RlcHM6CiAgICAgICAgIGZvciAoYXV0byYgYXVkaW9UcmFja0luZm8g
OiBzZWdtZW50LmF1ZGlvVHJhY2tzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmgKaW5kZXggYTk3YTg3NjFlOTY0ODEwODE3MjFi
ZWM1MjdjMDEwYmU0NTNmZDM5Ny4uOTc3MjE1OGZhOWE1NDZiNDY3NTc5MjdhMDMxYzI4ZDEwYmRh
NDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0
aW9uU29mdExpbmsuaApAQCAtMTI3LDYgKzEyNywxNCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVBdWRpbywgTlNTdHJpbmcgKikK
ICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYVR5
cGVBdWRpbygpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlv
biwgQVZNZWRpYVR5cGVNZXRhZGF0YSwgTlNTdHJpbmcgKikKICNkZWZpbmUgQVZNZWRpYVR5cGVN
ZXRhZGF0YSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYVR5cGVNZXRhZGF0YSgpCitTT0ZU
X0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZV
UkxBc3NldEFsbG93YWJsZVR5cGVDYXRlZ29yaWVzS2V5LCBOU1N0cmluZyAqKQorI2RlZmluZSBB
VlVSTEFzc2V0QWxsb3dhYmxlVHlwZUNhdGVnb3JpZXNLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9u
X0FWVVJMQXNzZXRBbGxvd2FibGVUeXBlQ2F0ZWdvcmllc0tleSgpCitTT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldEFsbG93
YWJsZUF1ZGlvQ29kZWNUeXBlc0tleSwgTlNTdHJpbmcgKikKKyNkZWZpbmUgQVZVUkxBc3NldEFs
bG93YWJsZUF1ZGlvQ29kZWNUeXBlc0tleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3Nl
dEFsbG93YWJsZUF1ZGlvQ29kZWNUeXBlc0tleSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldEFsbG93YWJsZVZpZGVv
Q29kZWNUeXBlc0tleSwgTlNTdHJpbmcgKikKKyNkZWZpbmUgQVZVUkxBc3NldEFsbG93YWJsZVZp
ZGVvQ29kZWNUeXBlc0tleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEFsbG93YWJs
ZVZpZGVvQ29kZWNUeXBlc0tleSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hF
QURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldEFsbG93YWJsZUNhcHRpb25Gb3JtYXRz
S2V5LCBOU1N0cmluZyAqKQorI2RlZmluZSBBVlVSTEFzc2V0QWxsb3dhYmxlQ2FwdGlvbkZvcm1h
dHNLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRBbGxvd2FibGVDYXB0aW9uRm9y
bWF0c0tleSgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlv
biwgQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtl
eSwgTlNTdHJpbmcgKikKICNkZWZpbmUgQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVu
dEZyb21SZWZlcmVuY2luZ1VSSUtleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldElu
aGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSgpCiBTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJh
dG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSwgTlNTdHJpbmcgKikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLm1tCmluZGV4IGJk
NmViYmNiOTkxM2RhOGMxMmE4Yjk2YWEyYmUxMjhmMDgxOTM3N2QuLjZkYjkyNWJhZjNlNTJlMmQy
ZGMxZGE4Nzg1OWJmZWY4OTU0ODAzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5tbQpAQCAtMTgyLDYgKzE4MiwxMCBAQCBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlv
biwgQVZTYW1wbGVCdWZmZXJBdWRpbwogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWU3RyZWFtRGF0YVBhcnNlckNvbnRlbnRLZXlS
ZXF1ZXN0UHJvdG9jb2xWZXJzaW9uc0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBB
VlN0cmVhbVNlc3Npb25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5v
dGlmaWNhdGlvbiwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlN0cmVhbWluZ0tleURl
bGl2ZXJ5Q29udGVudEtleVR5cGUsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktf
Q09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlv
biwgQVZVUkxBc3NldEFsbG93YWJsZVR5cGVDYXRlZ29yaWVzS2V5LCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRBbGxvd2FibGVBdWRpb0NvZGVjVHlwZXNL
ZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldEFsbG93
YWJsZVZpZGVvQ29kZWNUeXBlc0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKK1NPRlRfTElO
S19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0
aW9uLCBBVlVSTEFzc2V0QWxsb3dhYmxlQ2FwdGlvbkZvcm1hdHNLZXksIE5TU3RyaW5nICosIFBB
TF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENhY2hlS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWVVJMQXNzZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdV
UklLZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldE91dE9mQmFuZEFs
dGVybmF0ZVRyYWNrc0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggNjE0MmQyNDNkYjI4ODBjNTFlZmVmNThhMDRjOWIwYmE3NTNmNjA0MS4uMjAxOTA1NjJjMTMz
NjE2ODMyNWEzNDk4ZTViMzFkNDA4MmRiNjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwMDMsNiAr
MjAwMyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbnRlbnRUeXBlVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5h
dGlvbkNvbG9yU3BhY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYThkNzM2ODVlMGJiNGY0YTc1NGVkZTQ5MTc2YTMyYjgwZTJkMmRiYi4uNzg5
ZDc2ZWZlZjM1NzM2MGYwYTlkNGRlZDJjYjk5MDZkMWNkZGExMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDU2Niw2ICs0NTY2
LDcgQEAKIAkJQ0RBQjZEMkUxN0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFDb250cm9sc0hvc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDJD
MTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggKi87IH07CiAJCUNEQUI2
RDMxMTdDOTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRTY3JpcHRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyRjE3QzkyNTk1MDBDNjBCMzQg
LyogVXNlckFnZW50U2NyaXB0cy5oICovOyB9OwogCQlDREFDMDY4MzI0QzZBOTVBMDAyRjcyN0Yg
LyogVlA5VXRpbGl0aWVzQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENENkZFNUI3MjRCQ0U2NDUwMDlGQ0RBNCAvKiBWUDlVdGlsaXRpZXNDb2Nv
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNE
QUQxQTVBMjdBRkMyN0MwMDY5OTI4NSAvKiBDb250ZW50VHlwZVV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBRDFBNTcyN0FGQkYzOTAw
Njk5Mjg1IC8qIENvbnRlbnRUeXBlVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RCNjM1NDkyM0Y2MDIzQTAwQzBGOURFIC8qIFdl
YkFWUGxheWVyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBMjlBMkMxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29udHJv
bGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNEQjcwNDVBMUY3NDY1QTEwMDM5MjNERiAvKiBDRE1GYWlyUGxheVN0cmVhbWluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCNzA0NTgxRjc0NjVB
MTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3RyZWFtaW5nLmggKi87IH07CiAJCUNEQjcwNDVCMUY3
NDY1QTEwMDM5MjNERiAvKiBDRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI3MDQ1OTFGNzQ2NUExMDAzOTIzREYg
LyogQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwICovOyB9OwpAQCAtMTYxNjUsNiArMTYxNjYsOCBA
QAogCQlDREFCNkQyQzE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhQ29udHJvbHNIb3N0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUI2RDJGMTdDOTI1OTUwMEM2MEIzNCAvKiBV
c2VyQWdlbnRTY3JpcHRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFVzZXJB
Z2VudFNjcmlwdHMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvVXNlckFnZW50U2Ny
aXB0cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDREFCNkQzMDE3
QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2NyaXB0c0RhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVXNlckFnZW50U2NyaXB0c0RhdGEuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Vc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUNEQUQxQTU3MjdBRkJGMzkwMDY5OTI4NSAv
KiBDb250ZW50VHlwZVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZVV0aWxp
dGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFEMUE1ODI3QUZCRjM5MDA2
OTkyODUgLyogQ29udGVudFR5cGVVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29u
dGVudFR5cGVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFF
OEMwNzE3NDZCOTU3MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUU4QzA4MTc0NkI5
NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjcwNDU4MUY3NDY1QTEwMDM5MjNERiAvKiBDRE1G
YWlyUGxheVN0cmVhbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1GYWlyUGxheVN0cmVhbWluZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg4NTcsNiArMjg4NjAsOCBAQAogCQkJ
CUMyRjRFNzg5MUU0NUFFREYwMDZENzEwNSAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXIuaCAqLywK
IAkJCQkxQzg0QkU0MTI2RDM5MzlGMDAyRDYxRkMgLyogQ29tcG9zZWRDaGFyYWN0ZXJDbHVzdGVy
VGV4dEl0ZXJhdG9yLmggKi8sCiAJCQkJNzJCQUMzQTcyM0UxNzMyODAwOEQ3NDFDIC8qIENvbmNy
ZXRlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQlDREFEMUE1ODI3QUZCRjM5MDA2OTkyODUgLyogQ29u
dGVudFR5cGVVdGlsaXRpZXMuY3BwICovLAorCQkJCUNEQUQxQTU3MjdBRkJGMzkwMDY5OTI4NSAv
KiBDb250ZW50VHlwZVV0aWxpdGllcy5oICovLAogCQkJCTJEMkZDMDU0MTQ2MENENkYwMDI2MzYz
MyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJMkQyRkMwNTUxNDYwQ0Q2
RjAwMjYzNjMzIC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJQThDQjQxMDIw
RTg1QjhBNTAwMzJDNEYwIC8qIERhc2hBcnJheS5oICovLApAQCAtMzM4ODgsNiArMzM4OTMsNyBA
QAogCQkJCUNFNzk5Rjk4MUM2QTQ2QkMwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTc5OUZBQzFDNkE1MDY2MDA5N0I1MTgg
LyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFEMDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDREFEMUE1QTI3QUZDMjdDMDA2OTkyODUgLyogQ29udGVudFR5cGVVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NjI3QjhFMTRGQjNDRUUwMDJDRENBMSAvKiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNkEwRTYw
QjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjVB
RDRGNTBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL2NhcHRpb25zLmNzcyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9jYXB0aW9ucy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNlODc2OWQ1NDA3OGRkNWIxNmYx
YTkyNWRhMjU1Yjg4MTc5NWJiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9jYXB0aW9ucy5jc3MKQEAgLTAsMCArMSwyOCBAQAordmlkZW86OmN1ZSgqKSB7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpOworfQorCit2aWRlbzo6Y3VlKDpmdXR1
cmUpID4gKiB7CisgICAgY29sb3I6IGdyYXk7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLXRl
eHQtdHJhY2stZGlzcGxheSB7CisgICAgZm9udDogMjJweCBzYW5zLXNlcmlmOyAvKiBLZWVwIGlu
IHN5bmMgd2l0aCBgREVGQVVMVENBUFRJT05GT05UU0laRWAuICovCit9CisKK3ZpZGVvOjotd2Vi
a2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIGIgeworICAgIGZvbnQtd2VpZ2h0OiBib2xk
OworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciB1IHsKKyAg
ICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEt
dGV4dC10cmFjay1jb250YWluZXIgaSB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworfQorCit2
aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbiB7CisgICAgYmFja2dyb3VuZDog
cmdiYSgwLCAwLCAwLCAwLjgpOworICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZmFmZGE3NmE0
MzE3NzVmOTNhNjg2ZTU1NjU5YTkzMmNlZDdkMWIyZC4uNDk2YzZhOWNiMjNhNmEyYTk1MzkzZjhh
NDZlODYyMDk0NzcwYWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC0xMDg5LDYgKzEwODksMTIgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBs
YXlUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiAgICAgQ29udGVudFR5cGUgY29u
dGVudFR5cGUobWltZVR5cGUpOwogICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlOwog
ICAgIHBhcmFtZXRlcnMuY29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gbWVk
aWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKTsKKyAgICBwYXJhbWV0ZXJz
LmFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzID0gYWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMo
KTsKKyAgICBwYXJhbWV0ZXJzLmFsbG93ZWRNZWRpYUNvZGVjVHlwZXMgPSBhbGxvd2VkTWVkaWFD
b2RlY1R5cGVzKCk7CisgICAgcGFyYW1ldGVycy5hbGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzID0g
YWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcygpOworICAgIHBhcmFtZXRlcnMuYWxsb3dlZE1lZGlh
QXVkaW9Db2RlY0lEcyA9IGFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoKTsKKyAgICBwYXJhbWV0
ZXJzLmFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyA9IGFsbG93ZWRNZWRpYUNhcHRpb25G
b3JtYXRUeXBlcygpOworCiAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ID0g
TWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKICAgICBTdHJpbmcgY2FuUGxh
eTsKIApAQCAtNzQxNCw2ICs3NDIwLDMxIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJTaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+JiBIVE1MTWVkaWFFbGVt
ZW50OjphbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRv
Y3VtZW50KCkuc2V0dGluZ3MoKS5hbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcygpOworfQorCitj
b25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgSFRNTE1lZGlhRWxlbWVudDo6YWxs
b3dlZE1lZGlhQ29kZWNUeXBlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50KCkuc2V0
dGluZ3MoKS5hbGxvd2VkTWVkaWFDb2RlY1R5cGVzKCk7Cit9CisKK2NvbnN0IHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPEZvdXJDQz4+JiBIVE1MTWVkaWFFbGVtZW50OjphbGxvd2VkTWVkaWFWaWRlb0Nv
ZGVjSURzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFsbG93
ZWRNZWRpYVZpZGVvQ29kZWNJRHMoKTsKK30KKworY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8
Rm91ckNDPj4mIEhUTUxNZWRpYUVsZW1lbnQ6OmFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoKSBj
b25zdAoreworICAgIHJldHVybiBkb2N1bWVudCgpLnNldHRpbmdzKCkuYWxsb3dlZE1lZGlhQXVk
aW9Db2RlY0lEcygpOworfQorCitjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGb3VyQ0M+PiYg
SFRNTE1lZGlhRWxlbWVudDo6YWxsb3dlZE1lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFsbG93ZWRNZWRpYUNhcHRpb25G
b3JtYXRUeXBlcygpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQnVm
ZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZCgpCiB7CiAgICAgaWYgKCFtX3RleHRUcmFja3MgfHwgbV9i
dWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFza0NhbmNlbGxhdGlvbkdyb3VwLmhhc1BlbmRpbmdU
YXNrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDMyOWU2M2Vh
NTYyYjc5MDZkMTczYTk2MTc5Y2NlNzg0NDE4Y2NmN2EuLjAwNDkxODYxM2ViOTMxMTA2MjNiMDNi
YWZmOTc2MWQ2MzBjNDhjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC03NzAsNiArNzcwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtZWRpYVBsYXllclNob3Vs
ZERpc2FibGVTbGVlcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNob3VsZERpc2FibGVTbGVlcCgp
ID09IFNsZWVwVHlwZTo6RGlzcGxheTsgfQogICAgIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRDaGVj
a0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFZlY3RvcjxDb250ZW50
VHlwZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkgY29uc3Qg
ZmluYWw7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIGFsbG93ZWRN
ZWRpYUNvbnRhaW5lclR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgY29uc3Qgc3RkOjpvcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4mIGFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoKSBjb25zdCBmaW5hbDsK
KyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGb3VyQ0M+PiYgYWxsb3dlZE1lZGlhVmlk
ZW9Db2RlY0lEcygpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PEZvdXJDQz4+JiBhbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKCkgY29uc3QgZmluYWw7CisgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm91ckNDPj4mIGFsbG93ZWRNZWRpYUNhcHRpb25G
b3JtYXRUeXBlcygpIGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCBtZWRpYVBsYXllckJ1ZmZlcmVk
VGltZVJhbmdlc0NoYW5nZWQoKSBmaW5hbDsKIAogI2lmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggN2Y1NGQ4NzY4Y2MyZmEzNjRlNTQ0MWNlOGQ0
MGRhODU2MDc5YzZmYi4uMTZjYWY4NDM3MTdkOWYwZDEzODdmZjE5OWU1ZDc4MTViNjFhZjQ2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtMTk5LDcgKzE5OSw5OCBAQCB2
b2lkIFNldHRpbmdzQmFzZTo6c2V0TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1
cHBvcnQoY29uc3QgVmVjdG9yPENvbgogICAgIG1fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdI
YXJkd2FyZVN1cHBvcnQgPSBjb250ZW50VHlwZXM7CiB9CiAKK3ZvaWQgU2V0dGluZ3NCYXNlOjpz
ZXRBbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcyhjb25zdCBTdHJpbmcmIHR5cGVzKQoreworICAg
IGlmICh0eXBlcy5pc051bGwoKSkgeworICAgICAgICBtX2FsbG93ZWRNZWRpYUNvbnRhaW5lclR5
cGVzID0gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9y
PFN0cmluZz4gbmV3VHlwZXM7CisgICAgZm9yIChhdXRvIHR5cGUgOiBTdHJpbmdWaWV3KHR5cGVz
KS5zcGxpdCgnLCcpKQorICAgICAgICBuZXdUeXBlcy5hcHBlbmQodHlwZS50b1N0cmluZygpKTsK
KworICAgIG1fYWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMgPSBXVEZNb3ZlKG5ld1R5cGVzKTsK
K30KKwordm9pZCBTZXR0aW5nc0Jhc2U6OnNldEFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoY29uc3Qg
U3RyaW5nJiB0eXBlcykKK3sKKyAgICBpZiAodHlwZXMuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9h
bGxvd2VkTWVkaWFDb2RlY1R5cGVzID0gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgVmVjdG9yPFN0cmluZz4gbmV3VHlwZXM7CisgICAgZm9yIChhdXRvIHR5cGUg
OiBTdHJpbmdWaWV3KHR5cGVzKS5zcGxpdCgnLCcpKQorICAgICAgICBuZXdUeXBlcy5hcHBlbmQo
dHlwZS50b1N0cmluZygpKTsKIAorICAgIG1fYWxsb3dlZE1lZGlhQ29kZWNUeXBlcyA9IFdURk1v
dmUobmV3VHlwZXMpOworfQorCit2b2lkIFNldHRpbmdzQmFzZTo6c2V0QWxsb3dlZE1lZGlhVmlk
ZW9Db2RlY0lEcyhjb25zdCBTdHJpbmcmIHR5cGVzKQoreworICAgIGlmICh0eXBlcy5pc051bGwo
KSkgeworICAgICAgICBtX2FsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMgPSBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8Rm91ckNDPiBuZXdUeXBlczsK
KyAgICBmb3IgKGF1dG8gdHlwZSA6IFN0cmluZ1ZpZXcodHlwZXMpLnNwbGl0KCcsJykpIHsKKyAg
ICAgICAgaWYgKGF1dG8gZm91ckNDID0gRm91ckNDOjpmcm9tU3RyaW5nKHR5cGUpKQorICAgICAg
ICAgICAgbmV3VHlwZXMuYXBwZW5kKFdURk1vdmUoKmZvdXJDQykpOworICAgIH0KKworICAgIG1f
YWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcyA9IFdURk1vdmUobmV3VHlwZXMpOworfQorCit2b2lk
IFNldHRpbmdzQmFzZTo6c2V0QWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcyhjb25zdCBTdHJpbmcm
IHR5cGVzKQoreworICAgIGlmICh0eXBlcy5pc051bGwoKSkgeworICAgICAgICBtX2FsbG93ZWRN
ZWRpYUF1ZGlvQ29kZWNJRHMgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBWZWN0b3I8Rm91ckNDPiBuZXdUeXBlczsKKyAgICBmb3IgKGF1dG8gdHlwZSA6IFN0
cmluZ1ZpZXcodHlwZXMpLnNwbGl0KCcsJykpIHsKKyAgICAgICAgaWYgKGF1dG8gZm91ckNDID0g
Rm91ckNDOjpmcm9tU3RyaW5nKHR5cGUpKQorICAgICAgICAgICAgbmV3VHlwZXMuYXBwZW5kKFdU
Rk1vdmUoKmZvdXJDQykpOworICAgIH0KKworICAgIG1fYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lE
cyA9IFdURk1vdmUobmV3VHlwZXMpOworfQorCit2b2lkIFNldHRpbmdzQmFzZTo6c2V0QWxsb3dl
ZE1lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzKGNvbnN0IFN0cmluZyYgdHlwZXMpCit7CisgICAgaWYg
KHR5cGVzLmlzTnVsbCgpKSB7CisgICAgICAgIG1fYWxsb3dlZE1lZGlhQ2FwdGlvbkZvcm1hdFR5
cGVzID0gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9y
PEZvdXJDQz4gbmV3VHlwZXM7CisgICAgZm9yIChhdXRvIHR5cGUgOiBTdHJpbmdWaWV3KHR5cGVz
KS5zcGxpdCgnLCcpKSB7CisgICAgICAgIGlmIChhdXRvIGZvdXJDQyA9IEZvdXJDQzo6ZnJvbVN0
cmluZyh0eXBlKSkKKyAgICAgICAgICAgIG5ld1R5cGVzLmFwcGVuZChXVEZNb3ZlKCpmb3VyQ0Mp
KTsKKyAgICB9CisKKyAgICBtX2FsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyA9IFdURk1v
dmUobmV3VHlwZXMpOworfQorCit2b2lkIFNldHRpbmdzQmFzZTo6cmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSgpCit7CisgICAgbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbCA9IERPTVRpbWVyOjpkZWZh
dWx0TWluaW11bUludGVydmFsKCk7CisKKyAgICBzZXRBbGxvd2VkTWVkaWFDb250YWluZXJUeXBl
cyhzdGQ6Om51bGxvcHQpOworICAgIHNldEFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoc3RkOjpudWxs
b3B0KTsKKyAgICBzZXRBbGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzKHN0ZDo6bnVsbG9wdCk7Cisg
ICAgc2V0QWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcyhzdGQ6Om51bGxvcHQpOworICAgIHNldEFs
bG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyhzdGQ6Om51bGxvcHQpOworCisjaWYgRU5BQkxF
KFRFWFRfQVVUT1NJWklORykKKyAgICBtX29uZUxpbmVUZXh0TXVsdGlwbGllckNvZWZmaWNpZW50
ID0gZGVmYXVsdE9uZUxpbmVUZXh0TXVsdGlwbGllckNvZWZmaWNpZW50OworICAgIG1fbXVsdGlM
aW5lVGV4dE11bHRpcGxpZXJDb2VmZmljaWVudCA9IGRlZmF1bHRNdWx0aUxpbmVUZXh0TXVsdGlw
bGllckNvZWZmaWNpZW50OworICAgIG1fbWF4VGV4dEF1dG9zaXppbmdTY2FsZUluY3JlYXNlID0g
ZGVmYXVsdE1heFRleHRBdXRvc2l6aW5nU2NhbGVJbmNyZWFzZTsKKyNlbmRpZgorfQogCiAvLyBN
QVJLIC0gb25DaGFuZ2UgaGFuZGxlcnMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKaW5k
ZXggNDBkZGI4YTdmN2FmODQ1ZDRiNjVlNjMwZmI3YWIyZTY1NGJhMWM5Mi4uMWIzOWIxMzY5YzA5
NmM4MzM2NTJkODkxNWUzZGE1ZDhiNzE5NmYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFz
ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRm9udExvYWRUaW1pbmdPdmVycmlkZS5o
IgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSAiRm9yY2VkQWNjZXNz
aWJpbGl0eVZhbHVlLmgiCisjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSAiRnJhbWVGbGF0
dGVuaW5nLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclNjcmlwdGluZ0ZsYWdQb2xpY3kuaCIKICNp
bmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgiCkBAIC0xMDgsNiArMTA5LDI4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0KGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFZlY3RvcjxDb250ZW50VHlw
ZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsgfQogCisg
ICAgdm9pZCBzZXRBbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcyhzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxTdHJpbmc+PiYmIHR5cGVzKSB7IG1fYWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMgPSBXVEZN
b3ZlKHR5cGVzKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWxsb3dlZE1lZGlhQ29u
dGFpbmVyVHlwZXMoY29uc3QgU3RyaW5nJik7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0
b3I8U3RyaW5nPj4mIGFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzKCkgY29uc3QgeyByZXR1cm4g
bV9hbGxvd2VkTWVkaWFDb250YWluZXJUeXBlczsgfQorCisgICAgdm9pZCBzZXRBbGxvd2VkTWVk
aWFDb2RlY1R5cGVzKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+JiYgdHlwZXMpIHsgbV9h
bGxvd2VkTWVkaWFDb2RlY1R5cGVzID0gV1RGTW92ZSh0eXBlcyk7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoY29uc3QgU3RyaW5nJik7CisgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIGFsbG93ZWRNZWRpYUNvZGVjVHlw
ZXMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWRNZWRpYUNvZGVjVHlwZXM7IH0KKworICAgIHZv
aWQgc2V0QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcyhzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGb3Vy
Q0M+PiYmIHR5cGVzKSB7IG1fYWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcyA9IFdURk1vdmUodHlw
ZXMpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBbGxvd2VkTWVkaWFWaWRlb0NvZGVj
SURzKGNvbnN0IFN0cmluZyYpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEZvdXJD
Qz4+JiBhbGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2Vk
TWVkaWFWaWRlb0NvZGVjSURzOyB9CisKKyAgICB2b2lkIHNldEFsbG93ZWRNZWRpYUF1ZGlvQ29k
ZWNJRHMoc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm91ckNDPj4mJiB0eXBlcykgeyBtX2FsbG93ZWRN
ZWRpYUF1ZGlvQ29kZWNJRHMgPSBXVEZNb3ZlKHR5cGVzKTsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0QWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcyhjb25zdCBTdHJpbmcmKTsKKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGb3VyQ0M+PiYgYWxsb3dlZE1lZGlhQXVkaW9Db2Rl
Y0lEcygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEczsgfQorCisg
ICAgdm9pZCBzZXRBbGxvd2VkTWVkaWFDYXB0aW9uRm9ybWF0VHlwZXMoc3RkOjpvcHRpb25hbDxW
ZWN0b3I8Rm91ckNDPj4mJiB0eXBlcykgeyBtX2FsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBl
cyA9IFdURk1vdmUodHlwZXMpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBbGxvd2Vk
TWVkaWFDYXB0aW9uRm9ybWF0VHlwZXMoY29uc3QgU3RyaW5nJik7CisgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxWZWN0b3I8Rm91ckNDPj4mIGFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZE1lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzOyB9CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKwogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IFNldHRpbmdzQmFzZShQYWdlKik7CiAgICAgdmlydHVhbCB+U2V0
dGluZ3NCYXNlKCk7CkBAIC0xNTAsNiArMTczLDExIEBAIHByb3RlY3RlZDoKICAgICBUaW1lciBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXI7CiAKICAgICBWZWN0b3I8Q29udGVudFR5cGU+
IG1fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbV9hbGxvd2VkTWVkaWFDb250YWluZXJUeXBlczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX2FsbG93ZWRNZWRpYUNvZGVjVHlwZXM7
CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm91ckNDPj4gbV9hbGxvd2VkTWVkaWFWaWRlb0Nv
ZGVjSURzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEZvdXJDQz4+IG1fYWxsb3dlZE1lZGlh
QXVkaW9Db2RlY0lEczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGb3VyQ0M+PiBtX2FsbG93
ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlczsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcp
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBmbG9hdCBib29zdGVkT25lTGluZVRleHRNdWx0
aXBsaWVyQ29lZmZpY2llbnQgPSAyLjIzMTI1ZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRlbnRUeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRlbnRUeXBlVXRpbGl0aWVzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NGQ3NTUyODE2MTdiMGFjODhiNzQwZmRjMGU3NjM5ZTViNWZmYzgzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGVudFR5cGVVdGlsaXRp
ZXMuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ29udGVudFR5cGVVdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjaW5jbHVkZSAiRm91ckNDLmgiCisjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKwor
Ym9vbCBjb250ZW50VHlwZU1lZXRzQ29udGFpbmVyQW5kQ29kZWNUeXBlUmVxdWlyZW1lbnRzKGNv
bnN0IENvbnRlbnRUeXBlJiB0eXBlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiYgYWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+JiBhbGxvd2VkTWVkaWFDb2RlY1R5cGVzKQoreworICAgIGlmIChhbGxvd2VkTWVk
aWFDb250YWluZXJUeXBlcyAmJiAhYWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMtPmNvbnRhaW5z
KHR5cGUuY29udGFpbmVyVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFhbGxvd2VkTWVkaWFDb2RlY1R5cGVzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJl
dHVybiBhbGxPZih0eXBlLmNvZGVjcygpLCBbJl0gKGF1dG8mIGNvZGVjKSB7CisgICAgICAgIHJl
dHVybiBhbnlPZigqYWxsb3dlZE1lZGlhQ29kZWNUeXBlcywgWyZdIChhdXRvJiBhbGxvd2VkQ29k
ZWMpIHsKKyAgICAgICAgICAgIHJldHVybiBjb2RlYy5zdGFydHNXaXRoKGFsbG93ZWRDb2RlYyk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZW50VHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGVudFR5cGVVdGlsaXRpZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
OWM0ZDJiOWE0ZTliZWEyZjJjYzZhYzdmMzBkMzRiNGI4MTg1YTZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGVudFR5cGVVdGlsaXRpZXMu
aApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IEZvdXJDQzsKKworV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250ZW50
VHlwZU1lZXRzQ29udGFpbmVyQW5kQ29kZWNUeXBlUmVxdWlyZW1lbnRzKGNvbnN0IENvbnRlbnRU
eXBlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIGFsbG93ZWRNZWRpYUNv
bnRhaW5lclR5cGVzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgYWxsb3dl
ZE1lZGlhQ29kZWNUeXBlcyk7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvdXJDQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm91ckNDLmgKaW5kZXggMjRlMjU1ZGY0NGZiMWY3ODcxNGM1OGU5OTk5MTAxMjZkNDY5YzBhYi4u
YjM3ZDA1MGU5YzBjMzY3NzA3ZGFlMGI2YWNjYjFiYzM3ZjhlYWMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmgKQEAgLTM3LDYgKzM3LDE4IEBAIHN0cnVjdCBG
b3VyQ0MgewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvdXJDQz4gZnJvbVN0cmluZyhTdHJp
bmdWaWV3KTsKIAogICAgIHVpbnQzMl90IHZhbHVlIHsgMCB9OworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgZW5jb2RlciA8PCB2YWx1ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIEZvdXJDQyYgY29uZmlndXJhdGlvbikKKyAgICB7CisgICAgICAgIHJl
dHVybiBkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLnZhbHVlKTsKKyAgICB9CiB9OwogCiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEZvdXJDQywgRm91ckNDKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3ZGNhNThjYWZj
NmRiNjY5ZTQ4NjJlNTVjMjgzZTk0YjdhNGQ4MmU0Li42YzYxZDczNzA4NDFmMzgxNTA3Yjc2ODJl
ZmM4ZmJlOWEyMWIzZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb250ZW50
VHlwZS5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgorI2luY2x1ZGUg
IkZvdXJDQy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCkBAIC0xNzYsNiArMTc3LDE4IEBA
IHN0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+JiBudWxsQ29udGVudFR5
cGVWZWN0b3IoKQogICAgIHJldHVybiB2ZWN0b3I7CiB9CiAKK3N0YXRpYyBjb25zdCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgbnVsbE9wdGlvbmFsU3RyaW5nVmVjdG9yKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4+IHZl
Y3RvcjsKKyAgICByZXR1cm4gdmVjdG9yOworfQorCitzdGF0aWMgY29uc3Qgc3RkOjpvcHRpb25h
bDxWZWN0b3I8Rm91ckNDPj4mIG51bGxPcHRpb25hbEZvdXJDQ1ZlY3RvcigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEZvdXJDQz4+PiB2ZWN0b3I7
CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKwogY2xhc3MgTnVsbE1lZGlhUGxheWVyQ2xpZW50IDog
cHVibGljIE1lZGlhUGxheWVyQ2xpZW50IHsKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECkBAIC0xOTcsNiArMjEwLDEyIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hl
ZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KICNlbmRpZgorCisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIGFs
bG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbE9wdGlv
bmFsU3RyaW5nVmVjdG9yKCk7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiYgYWxsb3dlZE1lZGlhQ29kZWNUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxP
cHRpb25hbFN0cmluZ1ZlY3RvcigpOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8
Rm91ckNDPj4mIGFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBudWxsT3B0aW9uYWxGb3VyQ0NWZWN0b3IoKTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPEZvdXJDQz4+JiBhbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbnVsbE9wdGlvbmFsRm91ckNDVmVjdG9yKCk7IH0KKyAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxGb3VyQ0M+PiYgYWxsb3dlZE1lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbnVsbE9wdGlvbmFsRm91ckNDVmVjdG9yKCk7IH0KIH07CiAK
IGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIE1lZGlhUGxheWVyQ2xpZW50OjptZWRpYUNvbnRl
bnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CkBAIC01MjksNiArNTQ4LDEx
IEBAIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFF
bmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICBwYXJhbWV0ZXJzLmlzTWVkaWFTdHJlYW0gPSAhIW1fbWVkaWFTdHJlYW07CiAjZW5kaWYKKyAg
ICBwYXJhbWV0ZXJzLmFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzID0gYWxsb3dlZE1lZGlhQ29u
dGFpbmVyVHlwZXMoKTsKKyAgICBwYXJhbWV0ZXJzLmFsbG93ZWRNZWRpYUNvZGVjVHlwZXMgPSBh
bGxvd2VkTWVkaWFDb2RlY1R5cGVzKCk7CisgICAgcGFyYW1ldGVycy5hbGxvd2VkTWVkaWFWaWRl
b0NvZGVjSURzID0gYWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcygpOworICAgIHBhcmFtZXRlcnMu
YWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcyA9IGFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoKTsK
KyAgICBwYXJhbWV0ZXJzLmFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyA9IGFsbG93ZWRN
ZWRpYUNhcHRpb25Gb3JtYXRUeXBlcygpOwogCiAgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRp
ZmllcikgewogICAgICAgICBpZiAoY3VycmVudCkKQEAgLTE2NTcsNiArMTY4MSwzMSBAQCBib29s
IE1lZGlhUGxheWVyOjpzaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CiAgICAgcmV0
dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKTsKIH0K
IAorY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIE1lZGlhUGxheWVyOjphbGxv
d2VkTWVkaWFDb250YWluZXJUeXBlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNsaWVudCgpLmFs
bG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzKCk7Cit9CisKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+JiBNZWRpYVBsYXllcjo6YWxsb3dlZE1lZGlhQ29kZWNUeXBlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNsaWVudCgpLmFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoKTsKK30KKwor
Y29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm91ckNDPj4mIE1lZGlhUGxheWVyOjphbGxvd2Vk
TWVkaWFWaWRlb0NvZGVjSURzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2xpZW50KCkuYWxsb3dl
ZE1lZGlhVmlkZW9Db2RlY0lEcygpOworfQorCitjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxG
b3VyQ0M+PiYgTWVkaWFQbGF5ZXI6OmFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoKSBjb25zdAor
eworICAgIHJldHVybiBjbGllbnQoKS5hbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKCk7Cit9CisK
K2NvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEZvdXJDQz4+JiBNZWRpYVBsYXllcjo6YWxsb3dl
ZE1lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2xpZW50KCku
YWxsb3dlZE1lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzKCk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXI6
OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiB7CiAgICAgbV9wcml2YXRlLT5hcHBsaWNh
dGlvbldpbGxSZXNpZ25BY3RpdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCmluZGV4IGQ3Y2I5NDMzNzQxYWVmMTc0NTE4YTAxMTQ4NTVkMGIz
MzlkZjY2MjcuLjg5MzE3MTU5MjVhMTQ4M2FmYWQwY2NjYTE2M2FlMTU5Zjk0NzNiOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKICNpbmNsdWRlICJDb29raWUu
aCIKKyNpbmNsdWRlICJGb3VyQ0MuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNp
bmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbnVtcy5oIgpAQCAt
OTgsNiArOTksMTEgQEAgc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAg
IGJvb2wgaXNNZWRpYVNvdXJjZSB7IGZhbHNlIH07CiAgICAgYm9vbCBpc01lZGlhU3RyZWFtIHsg
ZmFsc2UgfTsKICAgICBWZWN0b3I8Q29udGVudFR5cGU+IGNvbnRlbnRUeXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhbGxvd2Vk
TWVkaWFDb250YWluZXJUeXBlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBh
bGxvd2VkTWVkaWFDb2RlY1R5cGVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEZvdXJDQz4+
IGFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm91
ckNDPj4gYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxGb3VyQ0M+PiBhbGxvd2VkTWVkaWFDYXB0aW9uRm9ybWF0VHlwZXM7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CkBAIC0xMDcsMzcgKzExMywyNiBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyB7CiAgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKICAgICAgICAgZW5jb2RlciA8
PCBpc01lZGlhU3RyZWFtOwogICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRUeXBlc1JlcXVpcmlu
Z0hhcmR3YXJlU3VwcG9ydDsKKyAgICAgICAgZW5jb2RlciA8PCBhbGxvd2VkTWVkaWFDb250YWlu
ZXJUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBhbGxvd2VkTWVkaWFDb2RlY1R5cGVzOworICAg
ICAgICBlbmNvZGVyIDw8IGFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHM7CisgICAgICAgIGVuY29k
ZXIgPDwgYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEczsKKyAgICAgICAgZW5jb2RlciA8PCBhbGxv
d2VkTWVkaWFDYXB0aW9uRm9ybWF0VHlwZXM7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IERlY29kZXI+Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAgICAgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnRUeXBlPiB0eXBlOwotICAg
ICAgICBkZWNvZGVyID4+IHR5cGU7Ci0gICAgICAgIGlmICghdHlwZSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsKLSAg
ICAgICAgZGVjb2RlciA+PiB1cmw7Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTWVkaWFT
b3VyY2U7Ci0gICAgICAgIGRlY29kZXIgPj4gaXNNZWRpYVNvdXJjZTsKLSAgICAgICAgaWYgKCFp
c01lZGlhU291cmNlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTWVkaWFTdHJlYW07Ci0gICAgICAgIGRlY29kZXIgPj4g
aXNNZWRpYVN0cmVhbTsKLSAgICAgICAgaWYgKCFpc01lZGlhU3RyZWFtKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb250
ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7Ci0gICAgICAgIGRlY29kZXIgPj4gdHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZTsKLSAgICAgICAgaWYgKCF0eXBlc1JlcXVpcmluZ0hhcmR3YXJl
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICByZXR1cm4ge3sg
V1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksICppc01lZGlhU291cmNlLCAqaXNNZWRpYVN0
cmVhbSwgKnR5cGVzUmVxdWlyaW5nSGFyZHdhcmUgfX07CisgICAgICAgIHJldHVybiBkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnR5cGUpCisgICAgICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnVybCkKKyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
aXNNZWRpYVNvdXJjZSkKKyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
aXNNZWRpYVN0cmVhbSkKKyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Y29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KQorICAgICAgICAgICAgJiYgZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5hbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcykKKyAgICAg
ICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWxsb3dlZE1lZGlhQ29kZWNUeXBl
cykKKyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWxsb3dlZE1lZGlh
VmlkZW9Db2RlY0lEcykKKyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
YWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcykKKyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuYWxsb3dlZE1lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzKTsKICAgICB9CiB9Owog
CkBAIC0yNzYsNiArMjcxLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxD
b250ZW50VHlwZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZENoZWNrSGFyZHdh
cmVTdXBwb3J0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgY29uc3Qg
c3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIGFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVz
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3Ry
aW5nPj4mIGFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGb3VyQ0M+PiYgYWxsb3dlZE1lZGlhVmlkZW9Db2Rl
Y0lEcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PEZvdXJDQz4+JiBhbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm91ckNDPj4mIGFsbG93ZWRNZWRpYUNh
cHRpb25Gb3JtYXRUeXBlcygpIGNvbnN0ID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllckJ1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJTZWVrYWJsZVRpbWVSYW5nZXNDaGFuZ2VkKCkgeyB9CiAKQEAgLTYzNSw2ICs2MzYs
MTIgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIG1lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRD
aGVja0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0OwogCisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4mIGFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzKCkgY29uc3Q7CisgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIGFsbG93ZWRNZWRpYUNvZGVjVHlw
ZXMoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGb3VyQ0M+PiYgYWxs
b3dlZE1lZGlhVmlkZW9Db2RlY0lEcygpIGNvbnN0OworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPEZvdXJDQz4+JiBhbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKCkgY29uc3Q7CisgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm91ckNDPj4mIGFsbG93ZWRNZWRpYUNhcHRpb25G
b3JtYXRUeXBlcygpIGNvbnN0OworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpOwogICAgIGNvbnN0IHZvaWQqIG1lZGlhUGxh
eWVyTG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyTG9nSWRlbnRp
ZmllcigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmgKaW5kZXggNjI2N2I4MzMyMTI5OWIxM2VhN2VkMmE0MDVlNGNiYjg1ZTQ0ODgz
Yi4uZjRiMzVkNzY5ZDcyNzk3YTJmYWQ0NWViNzgyYmRkMjVjOTI2Y2RiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaApAQCAtMzI5
LDYgKzMyOSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNo
YW5nZWQoKTsKICAgICB2b2lkIHJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAKKyAgICBib29sIGxv
YWRpbmdNZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZ01ldGFkYXRhOyB9CisKIHBy
aXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgK
aW5kZXggY2RhYTFiMDk4YzNhNTRiMWE2YzYxYTQ1ZGRkYmRmMmM2OTNkNjJhYi4uMzgzNzcyYzUw
NDQ5MjliOWU1MTU3ODQxNmRlZjY0Zjg3ODgwMjM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApA
QCAtMzUwLDYgKzM1MCw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
TWV0YWRhdGE+IHZpZGVvRnJhbWVNZXRhZGF0YSgpIGZpbmFsIHsgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UobV92aWRlb0ZyYW1lTWV0YWRhdGEsIHsgfSk7IH0KICAgICB2b2lkIGNoZWNrTmV3VmlkZW9G
cmFtZU1ldGFkYXRhKCk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFsbFRyYWNrc0FyZVBs
YXlhYmxlKCkgY29uc3Q7CisgICAgYm9vbCB0cmFja0lzUGxheWFibGUoQVZBc3NldFRyYWNrKikg
Y29uc3Q7CisKICAgICBSZXRhaW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0OwogICAgIFJldGFp
blB0cjxBVlBsYXllcj4gbV9hdlBsYXllcjsKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBt
X2F2UGxheWVySXRlbTsKQEAgLTQ0Nyw3ICs0NTAsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9j
YWNoZWRDYW5QbGF5RmFzdEZvcndhcmQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9jYWNoZWRDYW5Q
bGF5RmFzdFJldmVyc2UgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZEFzc2V0
SXNMb2FkZWQgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZFRyYWNrc0FyZUxv
YWRlZCB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY2FjaGVk
QXNzZXRJc1BsYXlhYmxlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NhY2hl
ZFRyYWNrc0FyZVBsYXlhYmxlOwogICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3Nob3VsZE9ic2VydmVUaW1lQ29udHJvbFN0YXR1cyB7IGZhbHNlIH07CiAgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fdHJhY2tzQXJlUGxheWFibGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCBlOTc1NWYyM2Q3ZDMwNWI2YjFjZWU2NTI0ZjM3YzQxZjFkZTQ2NzFmLi4w
Mjc4NzljMGRiNGFhNzYwMWM2ZGFkYzA0ZGIzOTQ0NzEzNmZlOTdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTM4LDEwICszOCwxMiBAQAogI2ltcG9ydCAiQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakMuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJDb2xvclNwYWNl
Q0cuaCIKKyNpbXBvcnQgIkNvbnRlbnRUeXBlVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJDb29raWUu
aCIKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgogI2ltcG9ydCAiRXh0ZW5z
aW9uc0dMLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbXBvcnQgIkZvdXJDQy5o
IgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJJbWFnZVJvdGF0aW9uU2Vz
c2lvblZULmgiCiAjaW1wb3J0ICJJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oIgpA
QCAtNjYsNiArNjgsNyBAQAogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmgiCiAjaW1wb3J0ICJUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5o
IgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJWaWRlb0xheWVyTWFuYWdlck9i
akMuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgiCkBAIC05NDgsNiArOTUxLDM4IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBV
UkwmIHVybCwgUmV0CiAgICAgICAgICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6QE5PIGZvcktleTpB
VlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5XTsKICAgICB9CiAKKyAgICBhdXRvIGFs
bG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzID0gcGxheWVyKCktPmFsbG93ZWRNZWRpYUNvbnRhaW5l
clR5cGVzKCk7CisgICAgaWYgKGFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzICYmIFBBTDo6Y2Fu
TG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEFsbG93YWJsZVR5cGVDYXRlZ29yaWVzS2V5KCkp
IHsKKyAgICAgICAgYXV0byBuc1R5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CisgICAgICAgIGZvciAoYXV0byB0eXBlIDogKmFsbG93ZWRNZWRpYUNvbnRhaW5l
clR5cGVzKQorICAgICAgICAgICAgW25zVHlwZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKVVUSUZy
b21NSU1FVHlwZSh0eXBlKV07CisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpuc1R5cGVzLmdl
dCgpIGZvcktleTpBVlVSTEFzc2V0QWxsb3dhYmxlVHlwZUNhdGVnb3JpZXNLZXldOworICAgIH0K
KworICAgIGF1dG8gYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcyA9IHBsYXllcigpLT5hbGxvd2Vk
TWVkaWFBdWRpb0NvZGVjSURzKCk7CisgICAgaWYgKGFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMg
JiYgUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0QWxsb3dhYmxlQXVkaW9Db2Rl
Y1R5cGVzS2V5KCkpIHsKKyAgICAgICAgYXV0byBuc1R5cGVzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGZvciAoYXV0byB0eXBlIDogKmFsbG93ZWRN
ZWRpYUF1ZGlvQ29kZWNJRHMpCisgICAgICAgICAgICBbbnNUeXBlcyBhZGRPYmplY3Q6QCh0eXBl
LnZhbHVlKV07CisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpuc1R5cGVzLmdldCgpIGZvcktl
eTpBVlVSTEFzc2V0QWxsb3dhYmxlQXVkaW9Db2RlY1R5cGVzS2V5XTsKKyAgICB9CisKKyAgICBh
dXRvIGFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMgPSBwbGF5ZXIoKS0+YWxsb3dlZE1lZGlhVmlk
ZW9Db2RlY0lEcygpOworICAgIGlmIChhbGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzICYmIFBBTDo6
Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEFsbG93YWJsZVZpZGVvQ29kZWNUeXBlc0tl
eSgpKSB7CisgICAgICAgIGF1dG8gbnNUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOworICAgICAgICBmb3IgKGF1dG8gdHlwZSA6ICphbGxvd2VkTWVkaWFWaWRl
b0NvZGVjSURzKQorICAgICAgICAgICAgW25zVHlwZXMgYWRkT2JqZWN0OkAodHlwZS52YWx1ZSld
OworICAgICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6bnNUeXBlcy5nZXQoKSBmb3JLZXk6QVZVUkxB
c3NldEFsbG93YWJsZVZpZGVvQ29kZWNUeXBlc0tleV07CisgICAgfQorCisgICAgYXV0byBhbGxv
d2VkTWVkaWFDYXB0aW9uRm9ybWF0VHlwZXMgPSBwbGF5ZXIoKS0+YWxsb3dlZE1lZGlhQ2FwdGlv
bkZvcm1hdFR5cGVzKCk7CisgICAgaWYgKGFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyAm
JiBQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRBbGxvd2FibGVDYXB0aW9uRm9y
bWF0c0tleSgpKSB7CisgICAgICAgIGF1dG8gbnNUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3IgKGF1dG8gdHlwZSA6ICphbGxvd2VkTWVk
aWFDYXB0aW9uRm9ybWF0VHlwZXMpCisgICAgICAgICAgICBbbnNUeXBlcyBhZGRPYmplY3Q6QCh0
eXBlLnZhbHVlKV07CisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpuc1R5cGVzLmdldCgpIGZv
cktleTpBVlVSTEFzc2V0QWxsb3dhYmxlQ2FwdGlvbkZvcm1hdHNLZXldOworICAgIH0KKwogICAg
IGlmICh3aWxsVXNlV2ViTUZvcm1hdFJlYWRlcikKICAgICAgICAgcmVnaXN0ZXJGb3JtYXRSZWFk
ZXJJZk5lY2Vzc2FyeSgpOwogCkBAIC0xNzgzLDYgKzE4MTgsNzYgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRBc3NldChSZXRhaW5QdHI8aWQ+JiYgYXNzZXQp
CiAgICAgcHJvY2Vzc0NoYXB0ZXJUcmFja3MoKTsKIH0KIAorc3RkOjpvcHRpb25hbDxib29sPiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphbGxUcmFja3NBcmVQbGF5YWJsZSgp
IGNvbnN0Cit7CisgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKSB7CisgICAgICAgIGZvciAoQVZQbGF5
ZXJJdGVtVHJhY2sgKnRyYWNrIGluIFttX2F2UGxheWVySXRlbSB0cmFja3NdKSB7CisgICAgICAg
ICAgICBpZiAoIXRyYWNrSXNQbGF5YWJsZSh0cmFjay5hc3NldFRyYWNrKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBpZiAoIW1fYXZBc3NldCB8fCBbbV9hdkFzc2V0IHN0YXR1c09mVmFsdWVGb3JL
ZXk6QCJ0cmFja3MiIGVycm9yOk5VTExdICE9IEFWS2V5VmFsdWVTdGF0dXNMb2FkZWQpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBmb3IgKEFWQXNzZXRUcmFjayAqYXNzZXRU
cmFjayA6IFttX2F2QXNzZXQgdHJhY2tzXSkgeworICAgICAgICBpZiAoIXRyYWNrSXNQbGF5YWJs
ZShhc3NldFRyYWNrKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
dHJhY2tJc1BsYXlhYmxlKEFWQXNzZXRUcmFjayogdHJhY2spIGNvbnN0Cit7CisgICAgaWYgKHBs
YXllcigpLT5zaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpICYmICFhc3NldFRyYWNrTWVldHNI
YXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyh0cmFjaywgcGxheWVyKCktPm1lZGlhQ29udGVudFR5
cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhdXRvIGRlc2NyaXB0aW9uID0gcmV0YWluUHRyKChfX2JyaWRnZSBDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmKXRyYWNrLmZvcm1hdERlc2NyaXB0aW9ucy5maXJzdE9iamVjdCk7CisgICAgaWYg
KCFkZXNjcmlwdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBtZWRpYVR5
cGUgPSBQQUw6OkNNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUoZGVzY3JpcHRpb24uZ2V0
KCkpOworICAgIGF1dG8gY29kZWNUeXBlID0gRm91ckNDIHsgUEFMOjpDTUZvcm1hdERlc2NyaXB0
aW9uR2V0TWVkaWFTdWJUeXBlKGRlc2NyaXB0aW9uLmdldCgpKSB9OworICAgIHN3aXRjaCAoUEFM
OjpDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFUeXBlKGRlc2NyaXB0aW9uLmdldCgpKSkgewor
ICAgIGNhc2Uga0NNTWVkaWFUeXBlX1ZpZGVvOiB7CisgICAgICAgIGF1dG8mIGFsbG93ZWRNZWRp
YVZpZGVvQ29kZWNJRHMgPSBwbGF5ZXIoKS0+YWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcygpOwor
ICAgICAgICBpZiAoYWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcyAmJiAhYWxsb3dlZE1lZGlhVmlk
ZW9Db2RlY0lEcy0+Y29udGFpbnMoY29kZWNUeXBlKSkgeworICAgICAgICAgICAgRVJST1JfTE9H
KExPR0lERU5USUZJRVIsICJWaWRlbyB0cmFjayB3aXRoIGNvZGVjIHR5cGUgJyIsIGNvZGVjVHlw
ZSwgIicgbm90IGNvbnRhaW5lZCBpbiBhbGxvd2VkIGNvZGVjIGxpc3Q7IGJsb2NraW5nIik7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGNhc2Uga0NNTWVkaWFUeXBlX0F1ZGlvOiB7CisgICAgICAgIGF1dG8mIGFs
bG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMgPSBwbGF5ZXIoKS0+YWxsb3dlZE1lZGlhQXVkaW9Db2Rl
Y0lEcygpOworICAgICAgICBpZiAoYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcyAmJiAhYWxsb3dl
ZE1lZGlhQXVkaW9Db2RlY0lEcy0+Y29udGFpbnMoY29kZWNUeXBlKSkgeworICAgICAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpbyB0cmFjayB3aXRoIGNvZGVjIHR5cGUgJyIs
IGNvZGVjVHlwZSwgIicgbm90IGNvbnRhaW5lZCBpbiBhbGxvd2VkIGNvZGVjIGxpc3Q7IGJsb2Nr
aW5nIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIGNhc2Uga0NNTWVkaWFUeXBlX1RleHQ6CisgICAgY2FzZSBr
Q01NZWRpYVR5cGVfQ2xvc2VkQ2FwdGlvbjoKKyAgICBjYXNlIGtDTU1lZGlhVHlwZV9TdWJ0aXRs
ZTogeworICAgICAgICBhdXRvJiBhbGxvd2VkTWVkaWFDYXB0aW9uRm9ybWF0VHlwZXMgPSBwbGF5
ZXIoKS0+YWxsb3dlZE1lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzKCk7CisgICAgICAgIGlmIChhbGxv
d2VkTWVkaWFDYXB0aW9uRm9ybWF0VHlwZXMgJiYgIWFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRU
eXBlcy0+Y29udGFpbnMoY29kZWNUeXBlKSkgeworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lE
RU5USUZJRVIsICJUZXh0IHRyYWNrIHdpdGggY29kZWMgdHlwZSAnIiwgY29kZWNUeXBlLCAiJyBu
b3QgY29udGFpbmVkIGluIGFsbG93ZWQgY29kZWMgbGlzdDsgYmxvY2tpbmciKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgY2FzZSBrQ01NZWRpYVR5cGVfTXV4ZWQ6CisgICAgY2FzZSBrQ01NZWRpYVR5cGVfVGlt
ZUNvZGU6CisgICAgY2FzZSBrQ01NZWRpYVR5cGVfTWV0YWRhdGE6CisgICAgICAgIC8vIE5vLW9w
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCAiVHJhY2sgd2l0aCB1bnVleHBlY3RlZCBtZWRpYSB0eXBlICciLCBGb3VyQ0MobWVkaWFU
eXBlKSwgIicgbm90IGNvbnRhaW5lZCBpbiBhbGxvd2VkIGNvZGVjIGxpc3Q7IGlnbm9yaW5nIik7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
QXNzZXRTdGF0dXMgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXNzZXRTdGF0
dXMoKSBjb25zdAogewogICAgIGlmICghbV9hdkFzc2V0KQpAQCAtMTgwOCwyMyArMTkxMywyMSBA
QCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhdHVzIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OgogICAgICAgICBtX2NhY2hlZEFzc2V0SXNMb2FkZWQg
PSB0cnVlOwogICAgIH0KIAotICAgIGlmICghcGxheWVyKCktPnNob3VsZENoZWNrSGFyZHdhcmVT
dXBwb3J0KCkpCi0gICAgICAgIG1fdHJhY2tzQXJlUGxheWFibGUgPSB0cnVlOworICAgIC8vIG1f
bG9hZGluZ01ldGFkYXRhIHdpbGwgYmUgZmFsc2UgdW50aWwgYWxsIHRyYWNrcycgcHJvcGVydGll
cyBoYXZlIGZpbmlzaGVkIGxvYWRpbmcuCisgICAgLy8gU2VlOiBiZWdpbkxvYWRpbmdNZXRhZGF0
YSgpLgorICAgIGlmIChsb2FkaW5nTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyQVZBc3NldFN0YXR1c0xvYWRpbmc7CiAKLSAgICBpZiAoIW1fdHJhY2tzQXJlUGxheWFibGUp
IHsKLSAgICAgICAgbV90cmFja3NBcmVQbGF5YWJsZSA9IHRydWU7Ci0gICAgICAgIGZvciAoQVZB
c3NldFRyYWNrICp0cmFjayBpbiBbbV9hdkFzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgICAgIGlm
ICghYXNzZXRUcmFja01lZXRzSGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHModHJhY2ssIHBsYXll
cigpLT5tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpKSkgewotICAg
ICAgICAgICAgICAgIG1fdHJhY2tzQXJlUGxheWFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGlmICghbV9jYWNoZWRUcmFj
a3NBcmVQbGF5YWJsZSkgeworICAgICAgICBtX2NhY2hlZFRyYWNrc0FyZVBsYXlhYmxlID0gYWxs
VHJhY2tzQXJlUGxheWFibGUoKTsKKyAgICAgICAgaWYgKCFtX2NhY2hlZFRyYWNrc0FyZVBsYXlh
YmxlKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyQVZBc3NldFN0YXR1c0xvYWRpbmc7
CiAgICAgfQogCiAgICAgaWYgKCFtX2NhY2hlZEFzc2V0SXNQbGF5YWJsZSkKICAgICAgICAgbV9j
YWNoZWRBc3NldElzUGxheWFibGUgPSBbW21fYXZBc3NldCB2YWx1ZUZvcktleTpAInBsYXlhYmxl
Il0gYm9vbFZhbHVlXTsKIAotICAgIGlmICgqbV9jYWNoZWRBc3NldElzUGxheWFibGUgJiYgbV90
cmFja3NBcmVQbGF5YWJsZS52YWx1ZSgpKQorICAgIGlmICgqbV9jYWNoZWRBc3NldElzUGxheWFi
bGUgJiYgKm1fY2FjaGVkVHJhY2tzQXJlUGxheWFibGUpCiAgICAgICAgIHJldHVybiBNZWRpYVBs
YXllckFWQXNzZXRTdGF0dXNQbGF5YWJsZTsKIAogICAgIHJldHVybiBNZWRpYVBsYXllckFWQXNz
ZXRTdGF0dXNMb2FkZWQ7CkBAIC0xOTI5LDYgKzIwMzIsOSBAQCBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZUFu
ZENvZAogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7CiAjZW5kaWYKIAorICAgIGlmICghY29udGVudFR5cGVNZWV0c0NvbnRhaW5lckFuZENv
ZGVjVHlwZVJlcXVpcmVtZW50cyhwYXJhbWV0ZXJzLnR5cGUsIHBhcmFtZXRlcnMuYWxsb3dlZE1l
ZGlhQ29udGFpbmVyVHlwZXMsIHBhcmFtZXRlcnMuYWxsb3dlZE1lZGlhQ29kZWNUeXBlcykpCisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsK
KwogICAgIGF1dG8gc3VwcG9ydGVkID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LmNhbkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKICAgICBpZiAoc3VwcG9ydGVk
ICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkKQogICAgICAgICByZXR1
cm4gc3VwcG9ydGVkOwpAQCAtMzczMiw3ICszODM4LDcgQEAgTlNBcnJheSogaXRlbUtWT1Byb3Bl
cnRpZXMoKQogCiBOU0FycmF5KiBhc3NldFRyYWNrTWV0YWRhdGFLZXlOYW1lcygpCiB7Ci0gICAg
c3RhdGljIE5TQXJyYXkqIGtleXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpA
InRvdGFsU2FtcGxlRGF0YUxlbmd0aCIsIEAibWVkaWFUeXBlIiwgQCJlbmFibGVkIiwgQCJwcmVm
ZXJyZWRUcmFuc2Zvcm0iLCBAIm5hdHVyYWxTaXplIiwgbmlsXTsKKyAgICBzdGF0aWMgTlNBcnJh
eSoga2V5cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOkAidG90YWxTYW1wbGVE
YXRhTGVuZ3RoIiwgQCJtZWRpYVR5cGUiLCBAImVuYWJsZWQiLCBAInByZWZlcnJlZFRyYW5zZm9y
bSIsIEAibmF0dXJhbFNpemUiLCBAImZvcm1hdERlc2NyaXB0aW9ucyIsIG5pbF07CiAgICAgcmV0
dXJuIGtleXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwCmluZGV4IDVkYTkxZWUwZWFiNGZkZmY5MjFmYzY3ODdhYTIzNDRjZDFjZjRmMTguLmQ5MzIw
ZTE5ZWQwZjgwN2M2NDEzNjNlNmU0MDY2ZjI5ODJhMTI3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTkzLDYgKzE5Myw4IEBAIHZvaWQgSW50
ZXJuYWxTZXR0aW5nczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiAgICAgbV9iYWNrdXAucmVz
dG9yZVRvKHNldHRpbmdzKCkpOwogICAgIG1fYmFja3VwID0gQmFja3VwIHsgc2V0dGluZ3MoKSB9
OwogCisgICAgbV9wYWdlLT5zZXR0aW5ncygpLnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKwog
ICAgIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQ6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsK
IH0KIApAQCAtNTg4LDYgKzU5MCw0OCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbFNldHRp
bmdzOjpzZXREZWZhdWx0QXVkaW9Db250ZXh0U2FtcGxlUmF0ZShmbG9hdCBzYW1wbAogICAgIHJl
dHVybiB7IH07CiB9CiAKK0V4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsU2V0dGluZ3M6OnNldEFs
bG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzKGNvbnN0IFN0cmluZyYgdHlwZXMpCit7CisgICAgaWYg
KCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3Ig
fTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0QWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMo
dHlwZXMpOworICAgIHJldHVybiB7IH07Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFs
U2V0dGluZ3M6OnNldEFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoY29uc3QgU3RyaW5nJiB0eXBlcykK
K3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRB
Y2Nlc3NFcnJvciB9OworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRBbGxvd2VkTWVkaWFDb2Rl
Y1R5cGVzKHR5cGVzKTsKKyAgICByZXR1cm4geyB9OworfQorCitFeGNlcHRpb25Pcjx2b2lkPiBJ
bnRlcm5hbFNldHRpbmdzOjpzZXRBbGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzKGNvbnN0IFN0cmlu
ZyYgdHlwZXMpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0QWxsb3dl
ZE1lZGlhVmlkZW9Db2RlY0lEcyh0eXBlcyk7CisgICAgcmV0dXJuIHsgfTsKK30KKworRXhjZXB0
aW9uT3I8dm9pZD4gSW50ZXJuYWxTZXR0aW5nczo6c2V0QWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lE
cyhjb25zdCBTdHJpbmcmIHR5cGVzKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgbV9wYWdlLT5zZXR0aW5n
cygpLnNldEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHModHlwZXMpOworICAgIHJldHVybiB7IH07
Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsU2V0dGluZ3M6OnNldEFsbG93ZWRNZWRp
YUNhcHRpb25Gb3JtYXRUeXBlcyhjb25zdCBTdHJpbmcmIHR5cGVzKQoreworICAgIGlmICghbV9w
YWdlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07Cisg
ICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldEFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyh0
eXBlcyk7CisgICAgcmV0dXJuIHsgfTsKK30KKworCisKIC8vIElmIHlvdSBhZGQgdG8gdGhpcyBj
bGFzcywgbWFrZSBzdXJlIHlvdSBhcmUgbm90IGR1cGxpY2F0aW5nIGZ1bmN0aW9uYWxpdHkgaW4g
dGhlIGdlbmVyYXRlZAogLy8gYmFzZSBjbGFzcyBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkIGFu
ZCB0aGF0IHlvdSB1cGRhdGUgdGhlIEJhY2t1cCBjbGFzcyBmb3IgdGVzdCByZXByb2R1Y2FiaWxp
dHkuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggZjFh
N2UyMjExMjBlNzFhOTY5OTFiMzIzM2EzODU0MzAzMTg5ZDViMC4uZmI5NGNlN2RkYmVmM2JjNTVi
YjM3NjMxYWVkZTE2YzNlMTUyZTc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmgKQEAgLTEyMiw2ICsxMjIsMTIgQEAgcHVibGljOgogICAgIC8vIEF1ZGlvQ29u
dGV4dAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldERlZmF1bHRBdWRpb0NvbnRleHRTYW1wbGVS
YXRlKGZsb2F0KTsKIAorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFsbG93ZWRNZWRpYUNvbnRh
aW5lclR5cGVzKGNvbnN0IFN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFsbG93
ZWRNZWRpYUNvZGVjVHlwZXMoY29uc3QgU3RyaW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcyhjb25zdCBTdHJpbmcmKTsKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRBbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKGNvbnN0IFN0cmluZyYpOwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyhj
b25zdCBTdHJpbmcmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdz
KFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwK
aW5kZXggYmI2YjhmNTIxMTJkZDk5NGNjNmI3NzgzMjMxMTk4ZTU5MjhiZmMxZS4uYmM0MDE5NTBh
OTQ3Mjg2OTc4YzAwOGFmZWI2MWY0OTBmOGFkY2EyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC05NSw0ICs5NSwxMCBAQCBlbnVtIFVzZXJJbnRl
cmZhY2VEaXJlY3Rpb25Qb2xpY3kgeyAiQ29udGVudCIsICJTeXN0ZW0iIH07CiAKICAgICAvLyBB
dWRpb0NvbnRleHQKICAgICB1bmRlZmluZWQgc2V0RGVmYXVsdEF1ZGlvQ29udGV4dFNhbXBsZVJh
dGUoZmxvYXQgc2FtcGxlUmF0ZSk7CisKKyAgICB1bmRlZmluZWQgc2V0QWxsb3dlZE1lZGlhQ29u
dGFpbmVyVHlwZXMoRE9NU3RyaW5nPyB0eXBlcyk7CisgICAgdW5kZWZpbmVkIHNldEFsbG93ZWRN
ZWRpYUNvZGVjVHlwZXMoRE9NU3RyaW5nPyB0eXBlcyk7CisgICAgdW5kZWZpbmVkIHNldEFsbG93
ZWRNZWRpYVZpZGVvQ29kZWNJRHMoRE9NU3RyaW5nPyB0eXBlcyk7CisgICAgdW5kZWZpbmVkIHNl
dEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoRE9NU3RyaW5nPyB0eXBlcyk7CisgICAgdW5kZWZp
bmVkIHNldEFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyhET01TdHJpbmc/IHR5cGVzKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaAppbmRleCAzZDllMDJlMDE4ZGQxMTY0MmJiNTZhMzNmYmNlOTU5ODA1
YTk0M2U3Li41OTVjNTg5MTllYTEzZmViOTVkOGZjMGQwYjQzMjMwNjhhODJhMGJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKQEAgLTc2LDYgKzc2LDggQEAgY2xhc3MgQXVkaW9UcmFja1ByaXZhdGU7CiBjbGFz
cyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDsKICNlbmRpZgogY2xhc3MgVmlkZW9UcmFja1By
aXZhdGU7CisKK3N0cnVjdCBGb3VyQ0M7CiB9CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQpAQCAt
MjkzLDYgKzI5NSwxMiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb250
ZW50VHlwZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBtZWRpYVBsYXllclNob3VsZENoZWNrSGFyZHdhcmVTdXBwb3J0
KCkgY29uc3QgZmluYWw7CiAKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiYgYWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24uYWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXM7IH07CisgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mIGFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uYWxsb3dlZE1lZGlhQ29kZWNUeXBlczsg
fTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpGb3VyQ0M+PiYgYWxs
b3dlZE1lZGlhVmlkZW9Db2RlY0lEcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi5hbGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzOyB9OworICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkZvdXJDQz4+JiBhbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmFsbG93ZWRNZWRpYUF1ZGlvQ29k
ZWNJRHM7IH07CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Rm91ckND
Pj4mIGFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY29uZmlndXJhdGlvbi5hbGxvd2VkTWVkaWFDYXB0aW9uRm9ybWF0VHlwZXM7IH07CisKICAg
ICB2b2lkIHN0YXJ0VXBkYXRlQ2FjaGVkU3RhdGVNZXNzYWdlVGltZXIoKTsKICAgICB2b2lkIHVw
ZGF0ZUNhY2hlZFN0YXRlKGJvb2wgPSBmYWxzZSk7CiAgICAgdm9pZCBzZW5kQ2FjaGVkU3RhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgKaW5kZXggNGFjYjQwZTJj
MDllYzc1Y2U5ZWViYjczMWUxZGQxYzljNjMyMTUwZi4uNGZkNjYxYjdkMDY3MGRjNTBkMWM3OGFk
YjVmOGJhZjI5NjJlZTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9u
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Gb3VyQ0MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGV4dFRyYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQwLDYgKzQxLDEyIEBAIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlv
biB7CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcjsKICAgICBTdHJpbmcg
bmV0d29ya0ludGVyZmFjZU5hbWU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRUeXBlPiBt
ZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxTdHJpbmc+PiBhbGxvd2VkTWVkaWFDb250YWluZXJUeXBlczsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhbGxvd2VkTWVkaWFDb2RlY1R5cGVzOworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkZvdXJDQz4+IGFsbG93ZWRNZWRpYVZpZGVvQ29k
ZWNJRHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Rm91ckNDPj4gYWxsb3dl
ZE1lZGlhQXVkaW9Db2RlY0lEczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpG
b3VyQ0M+PiBhbGxvd2VkTWVkaWFDYXB0aW9uRm9ybWF0VHlwZXM7CisKICAgICBWZWN0b3I8U3Ry
aW5nPiBwcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljczsKICNpZiBFTkFCTEUoQVZGX0NBUFRJ
T05TKQogICAgIFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFja0RhdGE+IG91dE9mQmFu
ZFRyYWNrRGF0YTsKQEAgLTU4LDYgKzY1LDExIEBAIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5Q29uZmlndXJhdGlvbiB7CiAgICAgICAgIGVuY29kZXIgPDwgc291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyOwogICAgICAgICBlbmNvZGVyIDw8IG5ldHdvcmtJbnRlcmZhY2VOYW1lOwogICAg
ICAgICBlbmNvZGVyIDw8IG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0
OworICAgICAgICBlbmNvZGVyIDw8IGFsbG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzOworICAgICAg
ICBlbmNvZGVyIDw8IGFsbG93ZWRNZWRpYUNvZGVjVHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwg
YWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEczsKKyAgICAgICAgZW5jb2RlciA8PCBhbGxvd2VkTWVk
aWFBdWRpb0NvZGVjSURzOworICAgICAgICBlbmNvZGVyIDw8IGFsbG93ZWRNZWRpYUNhcHRpb25G
b3JtYXRUeXBlczsKICAgICAgICAgZW5jb2RlciA8PCBwcmVmZXJyZWRBdWRpb0NoYXJhY3Rlcmlz
dGljczsKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQogICAgICAgICBlbmNvZGVyIDw8IG91dE9m
QmFuZFRyYWNrRGF0YTsKQEAgLTcwLDg2ICs4MiwyNyBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eUNvbmZpZ3VyYXRpb24gewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNv
ZGVyPgotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25m
aWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pCiAgICAgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVm
ZXJyZXI7Ci0gICAgICAgIGRlY29kZXIgPj4gcmVmZXJyZXI7Ci0gICAgICAgIGlmICghcmVmZXJy
ZXIpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiB1c2VyQWdlbnQ7Ci0gICAgICAgIGRlY29kZXIgPj4gdXNlckFnZW50Owot
ICAgICAgICBpZiAoIXVzZXJBZ2VudCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcjsKLSAgICAgICAgZGVjb2RlciA+PiBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7Ci0g
ICAgICAgIGlmICghc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV0d29y
a0ludGVyZmFjZU5hbWU7Ci0gICAgICAgIGRlY29kZXIgPj4gbmV0d29ya0ludGVyZmFjZU5hbWU7
Ci0gICAgICAgIGlmICghbmV0d29ya0ludGVyZmFjZU5hbWUpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNv
bnRlbnRUeXBlPj4gbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7Ci0g
ICAgICAgIGRlY29kZXIgPj4gbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQ7Ci0gICAgICAgIGlmICghbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzOwotICAg
ICAgICBkZWNvZGVyID4+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzOwotICAgICAgICBp
ZiAoIXByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCi0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrRGF0YT4+IG91dE9mQmFuZFRy
YWNrRGF0YTsKLSAgICAgICAgZGVjb2RlciA+PiBvdXRPZkJhbmRUcmFja0RhdGE7Ci0gICAgICAg
IGlmICghb3V0T2ZCYW5kVHJhY2tEYXRhKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSNlbmRpZgotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiBkb2N1bWVudFNlY3VyaXR5T3JpZ2luOwotICAgICAgICBkZWNvZGVyID4+IGRvY3Vt
ZW50U2VjdXJpdHlPcmlnaW47Ci0gICAgICAgIGlmICghZG9jdW1lbnRTZWN1cml0eU9yaWdpbikK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gbG9nSWRlbnRpZmllcjsKLSAgICAgICAgZGVjb2RlciA+PiBsb2dJZGVudGlm
aWVyOwotICAgICAgICBpZiAoIWxvZ0lkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkVXNlUGVyc2lz
dGVudENhY2hlOwotICAgICAgICBkZWNvZGVyID4+IHNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZTsK
LSAgICAgICAgaWYgKCFzaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNWaWRlbzsK
LSAgICAgICAgZGVjb2RlciA+PiBpc1ZpZGVvOwotICAgICAgICBpZiAoIWlzVmlkZW8pCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZDsKLSAgICAgICAgZGVjb2RlciA+PiByZW5kZXJp
bmdDYW5CZUFjY2VsZXJhdGVkOwotICAgICAgICBpZiAoIXJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0
ZWQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHJldHVybiB7
ewotICAgICAgICAgICAgV1RGTW92ZSgqcmVmZXJyZXIpLAotICAgICAgICAgICAgV1RGTW92ZSgq
dXNlckFnZW50KSwKLSAgICAgICAgICAgIFdURk1vdmUoKnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllciksCi0gICAgICAgICAgICBXVEZNb3ZlKCpuZXR3b3JrSW50ZXJmYWNlTmFtZSksCi0gICAg
ICAgICAgICBXVEZNb3ZlKCptZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dCksCi0gICAgICAgICAgICBXVEZNb3ZlKCpwcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcyks
CisgICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLnJlZmVycmVyKQor
ICAgICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi51c2VyQWdlbnQpCisg
ICAgICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLnNvdXJjZUFwcGxpY2F0
aW9uSWRlbnRpZmllcikKKyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRp
b24ubmV0d29ya0ludGVyZmFjZU5hbWUpCisgICAgICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShj
b25maWd1cmF0aW9uLm1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KQor
ICAgICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi5hbGxvd2VkTWVkaWFD
b250YWluZXJUeXBlcykKKyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRp
b24uYWxsb3dlZE1lZGlhQ29kZWNUeXBlcykKKyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KGNvbmZpZ3VyYXRpb24uYWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcykKKyAgICAgICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcykK
KyAgICAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uYWxsb3dlZE1lZGlh
Q2FwdGlvbkZvcm1hdFR5cGVzKQorICAgICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUoY29uZmln
dXJhdGlvbi5wcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcykKICNpZiBFTkFCTEUoQVZGX0NB
UFRJT05TKQotICAgICAgICAgICAgV1RGTW92ZSgqb3V0T2ZCYW5kVHJhY2tEYXRhKSwKKyAgICAg
ICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24ub3V0T2ZCYW5kVHJhY2tEYXRh
KQogI2VuZGlmCi0gICAgICAgICAgICBXVEZNb3ZlKCpkb2N1bWVudFNlY3VyaXR5T3JpZ2luKSwK
LSAgICAgICAgICAgICpsb2dJZGVudGlmaWVyLAotICAgICAgICAgICAgKnNob3VsZFVzZVBlcnNp
c3RlbnRDYWNoZSwKLSAgICAgICAgICAgICppc1ZpZGVvLAotICAgICAgICAgICAgKnJlbmRlcmlu
Z0NhbkJlQWNjZWxlcmF0ZWQsCi0gICAgICAgIH19OworICAgICAgICAgICAgJiYgZGVjb2Rlci5k
ZWNvZGUoY29uZmlndXJhdGlvbi5kb2N1bWVudFNlY3VyaXR5T3JpZ2luKQorICAgICAgICAgICAg
JiYgZGVjb2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi5sb2dJZGVudGlmaWVyKQorICAgICAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi5zaG91bGRVc2VQZXJzaXN0ZW50Q2Fj
aGUpCisgICAgICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmlzVmlkZW8p
CisgICAgICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLnJlbmRlcmluZ0Nh
bkJlQWNjZWxlcmF0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNw
cAppbmRleCA1OGZjMWU0ZWUyNTVlZDU4MzBjOTk2ZGZlNjhiZjJhYmQzNTNlYWY4Li43YzlkNDU2
OWE0ZTUwYjA3MTNhNzdhOGI0YWMyNDBmYWU0NmRkZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlw
ZVV0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xNjYs
NiArMTY3LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtCiAgICAgYXV0byBkb2N1bWVudFNl
Y3VyaXR5T3JpZ2luID0gcGxheWVyLT5kb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgcHJv
eHlDb25maWd1cmF0aW9uLmRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudFNlY3VyaXR5
T3JpZ2luOwogCisgICAgcHJveHlDb25maWd1cmF0aW9uLmFsbG93ZWRNZWRpYUNvbnRhaW5lclR5
cGVzID0gcGxheWVyLT5hbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcygpOworICAgIHByb3h5Q29u
ZmlndXJhdGlvbi5hbGxvd2VkTWVkaWFDb2RlY1R5cGVzID0gcGxheWVyLT5hbGxvd2VkTWVkaWFD
b2RlY1R5cGVzKCk7CisgICAgcHJveHlDb25maWd1cmF0aW9uLmFsbG93ZWRNZWRpYVZpZGVvQ29k
ZWNJRHMgPSBwbGF5ZXItPmFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMoKTsKKyAgICBwcm94eUNv
bmZpZ3VyYXRpb24uYWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcyA9IHBsYXllci0+YWxsb3dlZE1l
ZGlhQXVkaW9Db2RlY0lEcygpOworICAgIHByb3h5Q29uZmlndXJhdGlvbi5hbGxvd2VkTWVkaWFD
YXB0aW9uRm9ybWF0VHlwZXMgPSBwbGF5ZXItPmFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBl
cygpOworCiAgICAgYXV0byBpZGVudGlmaWVyID0gTWVkaWFQbGF5ZXJJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOwogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVBsYXllcihp
ZGVudGlmaWVyLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwcm94eUNvbmZpZ3VyYXRpb24pLCAw
KTsKIApAQCAtMjAyLDYgKzIwOSwxMCBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKE1lZGlhUAogICAgIGlm
IChwYXJhbWV0ZXJzLmlzTWVkaWFTdHJlYW0pCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICNlbmRpZgorCisgICAgaWYgKCFjb250ZW50
VHlwZU1lZXRzQ29udGFpbmVyQW5kQ29kZWNUeXBlUmVxdWlyZW1lbnRzKHBhcmFtZXRlcnMudHlw
ZSwgcGFyYW1ldGVycy5hbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcywgcGFyYW1ldGVycy5hbGxv
d2VkTWVkaWFDb2RlY1R5cGVzKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGU6OklzTm90U3VwcG9ydGVkOworCiAgICAgcmV0dXJuIHR5cGVDYWNoZShyZW1vdGVFbmdp
bmVJZGVudGlmaWVyKS5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzZkNmI3
ZGVjNTY5MzNiMmM3YTU1OWVlZjRkOTEyYWFhZWFjNDgxNy4uNjNhZjkxZmRiYTVmMjAxMDA2Yzcz
YzU5ZjI5NmJhMjJmM2QzN2M1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTQxMTYsNiArNDExNiwxMiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0
ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgICAgICBz
ZXR0aW5ncy5zZXRNYXRoTUxFbmFibGVkKGZhbHNlKTsKICNlbmRpZgogICAgICAgICBzZXR0aW5n
cy5zZXRQZGZKU1ZpZXdlckVuYWJsZWQodHJ1ZSk7CisKKyAgICAgICAgc2V0dGluZ3Muc2V0QWxs
b3dlZE1lZGlhQ29udGFpbmVyVHlwZXMoc3RvcmUuZ2V0U3RyaW5nVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6Om1lZGlhQ29udGFpbmVyVHlwZXNBbGxvd2VkSW5DYXB0aXZlUG9ydGFsTW9k
ZUtleSgpKSk7CisgICAgICAgIHNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoc3Rv
cmUuZ2V0U3RyaW5nVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Om1lZGlhQ29kZWNUeXBl
c0FsbG93ZWRJbkNhcHRpdmVQb3J0YWxNb2RlS2V5KCkpKTsKKyAgICAgICAgc2V0dGluZ3Muc2V0
QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcyhzdG9yZS5nZXRTdHJpbmdWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6bWVkaWFWaWRlb0NvZGVjSURzQWxsb3dlZEluQ2FwdGl2ZVBvcnRhbE1v
ZGVLZXkoKSkpOworICAgICAgICBzZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURz
KHN0b3JlLmdldFN0cmluZ1ZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjptZWRpYUF1ZGlv
Q29kZWNJRHNBbGxvd2VkSW5DYXB0aXZlUG9ydGFsTW9kZUtleSgpKSk7CisgICAgICAgIHNldHRp
bmdzLnNldEFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyhzdG9yZS5nZXRTdHJpbmdWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bWVkaWFDYXB0aW9uRm9ybWF0VHlwZXNBbGxvd2Vk
SW5DYXB0aXZlUG9ydGFsTW9kZUtleSgpKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ2ODY3NGQ5Nzk1ZWFiOWUyN2Y3OGQ0ZTYxOTNhNDExYWU4
MWE3NTYuLjhkNjExYzNiMDgwYmYzZWNkMzJmZjc5YjA1NmMzYzM1ZjMwOWEyNTQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMi0wMi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3QgbWVkaWEgY29udGFpbmVycyBh
bmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtYWxsb3dlZC1jb2RlY3Mt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1hbGxvd2VkLWNvZGVj
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1hbGxvd2VkLWNvbnRhaW5lcnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1hbGxvd2VkLWNvbnRh
aW5lcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS1hbGxvd2VkLWNvZGVjcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWxsb3dlZC1jb2RlY3MuaHRtbDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hbGxvd2VkLWNvbnRhaW5l
cnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLWFsbG93ZWQtY29udGFpbmVycy5odG1sOiBBZGRlZC4KKwogMjAyMi0wMi0xMSAg
VHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmtpbmcgZXhw
ZWN0YXRpb25zIGZvciBjb21wb3NpdGluZy9pZnJhbWVzL2JvcmRlci1yYWRpdXMtY29tcG9zaXRl
ZC1mcmFtZS5odG1sIGFzIGl0IGlzIGZhaWxpbmcgb24gRVdTCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1hbGxvd2VkLWNvZGVjcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1hbGxvd2VkLWNvZGVjcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUw
ZDUzOWEyZjkwNjNhYTJjNWNhMDkzNzQ4NzRmNzFlNGRiZWJlMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLWFsbG93ZWQtY29kZWNzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMzIEBACitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYVZpZGVv
Q29kZWNJRHMobnVsbCkpCitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUF1
ZGlvQ29kZWNJRHMobnVsbCkpCitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRp
YUNvZGVjVHlwZXMobnVsbCkpCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoInZpZGVvL21w
NDsgY29kZWNzPWF2YzEiKSA9PSAncHJvYmFibHknKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBs
YXlUeXBlKCJ2aWRlby9tcDQ7IGNvZGVjcz1tcDR2IikgPT0gJ3Byb2JhYmx5JykgT0sKK1JVTih2
aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCIpCitFVkVOVChjYW5wbGF5KSBPSworUlVOKGlu
dGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzKCJhdmMxIikpCitS
VU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoImFhYyAi
KSkKK1JVTihpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlhQ29kZWNUeXBlcygiYXZj
MSxtcDRhLjQwIikpCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoInZpZGVvL21wNDsgY29k
ZWNzPWF2YzEiKSA9PSAncHJvYmFibHknKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBl
KCJ2aWRlby9tcDQ7IGNvZGVjcz1tcDR2IikgPT0gJycpIE9LCitSVU4odmlkZW8uc3JjID0gImNv
bnRlbnQvdGVzdC5tcDQiKQorRVZFTlQoY2FucGxheSkgT0sKK1JVTihpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcygidnAwOSIpKQorUlVOKGludGVybmFscy5z
ZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKCJvcHVzIikpCitSVU4oaW50ZXJu
YWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoInZwMDksb3B1cyIpKQorRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCJ2aWRlby9tcDQ7IGNvZGVjcz1hdmMxIikgPT0gJycp
IE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoInZpZGVvL21wNDsgY29kZWNzPW1wNHYi
KSA9PSAnJykgT0sKK1JVTih2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCIpCitFVkVOVChl
cnJvcikgT0sKK1JVTihpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlhVmlkZW9Db2Rl
Y0lEcygiYXZjMSIpKQorUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFBdWRp
b0NvZGVjSURzKCJvcHVzIikpCitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRp
YUNvZGVjVHlwZXMoImF2YzEsb3B1cyIpKQorUlVOKHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3Qu
bXA0IikKK0VWRU5UKGVycm9yKSBPSworUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2Vk
TWVkaWFWaWRlb0NvZGVjSURzKCJ2cDA5IikpCitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldEFs
bG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoImFhYyAiKSkKK1JVTihpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0QWxsb3dlZE1lZGlhQ29kZWNUeXBlcygidnAwOSxtcDRhLjQwIikpCitSVU4odmlkZW8uc3Jj
ID0gImNvbnRlbnQvdGVzdC5tcDQiKQorRVZFTlQoZXJyb3IpIE9LCitFTkQgT0YgVEVTVAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1hbGxvd2VkLWNvZGVjcy5odG1sIGIv
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtYWxsb3dlZC1jb2RlY3MuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MWM3YmM1MDE5MmY0YmI4OWM4MGVhZGNmMzY3ZDFkNGFiYjBlOGJiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtYWxsb3dlZC1jb2RlY3MuaHRtbApAQCAtMCwwICsx
LDYwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1lZGlh
LWFsbG93ZWQtY29kZWNzPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgICAgICBmYWlsVGVzdCgnUmVxdWlyZXMgd2luZG93LmludGVybmFscycpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCd2aWRlbycpOworICAgICAgICBydW4oJ2ludGVybmFscy5zZXR0aW5ncy5zZXRB
bGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzKG51bGwpJyk7CisgICAgICAgIHJ1bignaW50ZXJuYWxz
LnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMobnVsbCknKTsKKyAgICAgICAg
cnVuKCdpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlhQ29kZWNUeXBlcyhudWxsKScp
OworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLmNhblBsYXlUeXBlKCJ2aWRlby9tcDQ7IGNv
ZGVjcz1hdmMxIiknLCAncHJvYmFibHknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5j
YW5QbGF5VHlwZSgidmlkZW8vbXA0OyBjb2RlY3M9bXA0diIpJywgJ3Byb2JhYmx5Jyk7CisgICAg
ICAgIHJ1bigndmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiJyk7CisgICAgICAgIGF3YWl0
IFByb21pc2UucmFjZShbd2FpdEZvckFuZFN1Y2NlZWQodmlkZW8sICdjYW5wbGF5JyksIHdhaXRG
b3JBbmRGYWlsKHZpZGVvLCAnZXJyb3InKV0pOworCisgICAgICAgIHZpZGVvID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgndmlkZW8nKTsKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcygiYXZjMSIpJyk7CisgICAgICAgIHJ1bignaW50
ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoImFhYyAiKScpOwor
ICAgICAgICBydW4oJ2ludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFDb2RlY1R5cGVz
KCJhdmMxLG1wNGEuNDAiKScpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLmNhblBsYXlU
eXBlKCJ2aWRlby9tcDQ7IGNvZGVjcz1hdmMxIiknLCAncHJvYmFibHknKTsKKyAgICAgICAgdGVz
dEV4cGVjdGVkKCd2aWRlby5jYW5QbGF5VHlwZSgidmlkZW8vbXA0OyBjb2RlY3M9bXA0diIpJywg
JycpOworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IicpOworICAg
ICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW3dhaXRGb3JBbmRTdWNjZWVkKHZpZGVvLCAnY2FucGxh
eScpLCB3YWl0Rm9yQW5kRmFpbCh2aWRlbywgJ2Vycm9yJyldKTsKKworICAgICAgICB2aWRlbyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7CisgICAgICAgIHJ1bignaW50ZXJuYWxz
LnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMoInZwMDkiKScpOworICAgICAg
ICBydW4oJ2ludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKCJv
cHVzIiknKTsKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlh
Q29kZWNUeXBlcygidnAwOSxvcHVzIiknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5j
YW5QbGF5VHlwZSgidmlkZW8vbXA0OyBjb2RlY3M9YXZjMSIpJywgJycpOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ3ZpZGVvLmNhblBsYXlUeXBlKCJ2aWRlby9tcDQ7IGNvZGVjcz1tcDR2IiknLCAn
Jyk7CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiJyk7CisgICAg
ICAgIGF3YWl0IFByb21pc2UucmFjZShbd2FpdEZvckFuZFN1Y2NlZWQodmlkZW8sICdlcnJvcicp
LCB3YWl0Rm9yQW5kRmFpbCh2aWRlbywgJ2NhbnBsYXknKV0pOworCisgICAgICAgIHZpZGVvID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcygiYXZjMSIpJyk7CisgICAgICAg
IHJ1bignaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoIm9w
dXMiKScpOworICAgICAgICBydW4oJ2ludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFD
b2RlY1R5cGVzKCJhdmMxLG9wdXMiKScpOworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9ICJjb250
ZW50L3Rlc3QubXA0IicpOworICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW3dhaXRGb3JBbmRT
dWNjZWVkKHZpZGVvLCAnZXJyb3InKSwgd2FpdEZvckFuZEZhaWwodmlkZW8sICdjYW5wbGF5Jyld
KTsKKworICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7Cisg
ICAgICAgIHJ1bignaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJ
RHMoInZwMDkiKScpOworICAgICAgICBydW4oJ2ludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2Vk
TWVkaWFBdWRpb0NvZGVjSURzKCJhYWMgIiknKTsKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0QWxsb3dlZE1lZGlhQ29kZWNUeXBlcygidnAwOSxtcDRhLjQwIiknKTsKKyAgICAg
ICAgcnVuKCd2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCInKTsKKyAgICAgICAgYXdhaXQg
UHJvbWlzZS5yYWNlKFt3YWl0Rm9yQW5kU3VjY2VlZCh2aWRlbywgJ2Vycm9yJyksIHdhaXRGb3JB
bmRGYWlsKHZpZGVvLCAnY2FucGxheScpXSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0p
OworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtYWxsb3dlZC1jb250YWluZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLWFsbG93ZWQtY29udGFpbmVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcwMjdjZThi
NTc1Yjk0NTUyMmU1ZmJjNzc1NTNkYTc5MTEzNjc1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLWFsbG93ZWQtY29udGFpbmVycy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNyBAQAorUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFDb250YWlu
ZXJUeXBlcyhudWxsKSkKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgiYXVkaW8vbXAzIikg
PT0gJ21heWJlJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgidmlkZW8vbXA0Iikg
PT0gJ21heWJlJykgT0sKK1JVTih2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCIpCitFVkVO
VChjYW5wbGF5KSBPSworUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFDb250
YWluZXJUeXBlcygiYXVkaW8vbXAzIikpCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoImF1
ZGlvL21wMyIpID09ICdtYXliZScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoInZp
ZGVvL21wNCIpID09ICcnKSBPSworUlVOKHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IikK
K0VWRU5UKGVycm9yKSBPSworUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFD
b250YWluZXJUeXBlcygidmlkZW8vbXA0IikpCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
ImF1ZGlvL21wMyIpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCJ2aWRl
by9tcDQiKSA9PSAnbWF5YmUnKSBPSworUlVOKHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0
IikKK0VWRU5UKGNhbnBsYXkpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1hbGxvd2VkLWNvbnRhaW5lcnMuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhLWFsbG93ZWQtY29udGFpbmVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZmYyZDk5NmMz
NTUzYTEzNGVhM2I2Mzc1NjE0MDE0YzA3YTRiZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1hbGxvd2VkLWNvbnRhaW5lcnMuaHRtbApAQCAtMCwwICsxLDQwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1lZGlhLWFsbG93
ZWQtY29udGFpbmVyczwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAg
ICAgICAgICAgZmFpbFRlc3QoJ1JlcXVpcmVzIHdpbmRvdy5pbnRlcm5hbHMnKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZpZGVvID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgndmlkZW8nKTsKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxs
b3dlZE1lZGlhQ29udGFpbmVyVHlwZXMobnVsbCknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCd2
aWRlby5jYW5QbGF5VHlwZSgiYXVkaW8vbXAzIiknLCAnbWF5YmUnKTsKKyAgICAgICAgdGVzdEV4
cGVjdGVkKCd2aWRlby5jYW5QbGF5VHlwZSgidmlkZW8vbXA0IiknLCAnbWF5YmUnKTsKKyAgICAg
ICAgcnVuKCd2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCInKTsKKyAgICAgICAgYXdhaXQg
UHJvbWlzZS5yYWNlKFt3YWl0Rm9yQW5kU3VjY2VlZCh2aWRlbywgJ2NhbnBsYXknKSwgd2FpdEZv
ckFuZEZhaWwodmlkZW8sICdlcnJvcicpXSk7CisKKyAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCd2aWRlbycpOworICAgICAgICBydW4oJ2ludGVybmFscy5zZXR0aW5ncy5z
ZXRBbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcygiYXVkaW8vbXAzIiknKTsKKyAgICAgICAgdGVz
dEV4cGVjdGVkKCd2aWRlby5jYW5QbGF5VHlwZSgiYXVkaW8vbXAzIiknLCAnbWF5YmUnKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5jYW5QbGF5VHlwZSgidmlkZW8vbXA0IiknLCAnJyk7
CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiJyk7CisgICAgICAg
IGF3YWl0IFByb21pc2UucmFjZShbd2FpdEZvckFuZFN1Y2NlZWQodmlkZW8sICdlcnJvcicpLCB3
YWl0Rm9yQW5kRmFpbCh2aWRlbywgJ2NhbnBsYXknKV0pOworCisgICAgICAgIHZpZGVvID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0QWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMoInZpZGVvL21wNCIpJyk7CisgICAg
ICAgIHRlc3RFeHBlY3RlZCgndmlkZW8uY2FuUGxheVR5cGUoImF1ZGlvL21wMyIpJywgJycpOwor
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLmNhblBsYXlUeXBlKCJ2aWRlby9tcDQiKScsICdt
YXliZScpOworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IicpOwor
ICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW3dhaXRGb3JBbmRTdWNjZWVkKHZpZGVvLCAnY2Fu
cGxheScpLCB3YWl0Rm9yQW5kRmFpbCh2aWRlbywgJ2Vycm9yJyldKTsKKworICAgICAgICBlbmRU
ZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFsbG93ZWQtY29kZWNzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWxs
b3dlZC1jb2RlY3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiNWNjM2JkNmNlMDg3YzIwMjBl
YzlmOGYxZmNiMDVlMTlkMDIzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFsbG93ZWQtY29kZWNzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE4IEBACitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYVZp
ZGVvQ29kZWNJRHMobnVsbCkpCitFWFBFQ1RFRCAoTWVkaWFTb3VyY2UuaXNUeXBlU3VwcG9ydGVk
KCJ2aWRlby9tcDQ7IGNvZGVjcz1hdmMxIikgPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKE1lZGlh
U291cmNlLmlzVHlwZVN1cHBvcnRlZCgidmlkZW8vbXA0OyBjb2RlY3M9bXA0diIpID09ICd0cnVl
JykgT0sKK1JVTihpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lE
cygiYXZjMSIpKQorUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFBdWRpb0Nv
ZGVjSURzKCJhYWMgIikpCitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUNv
ZGVjVHlwZXMoImF2YzEsbXA0YS40MCIpKQorRVhQRUNURUQgKE1lZGlhU291cmNlLmlzVHlwZVN1
cHBvcnRlZCgidmlkZW8vbXA0OyBjb2RlY3M9YXZjMSIpID09ICd0cnVlJykgT0sKK0VYUEVDVEVE
IChNZWRpYVNvdXJjZS5pc1R5cGVTdXBwb3J0ZWQoInZpZGVvL21wNDsgY29kZWNzPW1wNHYiKSA9
PSAnZmFsc2UnKSBPSworRVZFTlQoc291cmNlb3BlbikKK1JVTihzb3VyY2VCdWZmZXIgPSBtZWRp
YVNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21wNDsgY29kZWNzPWF2YzEiKSkKK1RFU1Qo
c291cmNlQnVmZmVyLmNoYW5nZVR5cGUoInZpZGVvL21wNDsgY29kZWNzPW1wNHYiKSkgVEhST1dT
KCJOb3RTdXBwb3J0ZWRFcnJvcjogVGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiIpIE9L
CitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMoInZw
MDkiKSkKK1JVTihpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lE
cygib3B1cyIpKQorUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFDb2RlY1R5
cGVzKCJ2cDA5LG9wdXMiKSkKK0VYUEVDVEVEIChNZWRpYVNvdXJjZS5pc1R5cGVTdXBwb3J0ZWQo
InZpZGVvL21wNDsgY29kZWNzPWF2YzEiKSA9PSAnZmFsc2UnKSBPSworVEVTVChtZWRpYVNvdXJj
ZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21wNDsgY29kZWNzPWF2YzEiKSkgVEhST1dTKCJOb3RT
dXBwb3J0ZWRFcnJvcjogVGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiIpIE9LCitFTkQg
T0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLWFsbG93ZWQtY29kZWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLWFsbG93ZWQtY29kZWNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE3YTUw
NGE1ZjIyMTk1ZGQzOGY3ZDg5ZWRiNjZhZTA5ODg1NGY2OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWxsb3dlZC1jb2RlY3Mu
aHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHRpdGxlPm1lZGlhLXNvdXJjZS1hbGxvd2VkLWNvbnRhaW5lcnM8L3RpdGxlPgorICAgIDxz
Y3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAg
ICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIGZhaWxUZXN0KCdSZXF1aXJl
cyB3aW5kb3cuaW50ZXJuYWxzJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7CisKKyAgICAg
ICAgcnVuKCdpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcyhu
dWxsKScpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ01lZGlhU291cmNlLmlzVHlwZVN1cHBvcnRl
ZCgidmlkZW8vbXA0OyBjb2RlY3M9YXZjMSIpJywgdHJ1ZSk7CisgICAgICAgIHRlc3RFeHBlY3Rl
ZCgnTWVkaWFTb3VyY2UuaXNUeXBlU3VwcG9ydGVkKCJ2aWRlby9tcDQ7IGNvZGVjcz1tcDR2Iikn
LCB0cnVlKTsKKworICAgICAgICBydW4oJ2ludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVk
aWFWaWRlb0NvZGVjSURzKCJhdmMxIiknKTsKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0QWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcygiYWFjICIpJyk7CisgICAgICAgIHJ1bign
aW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUNvZGVjVHlwZXMoImF2YzEsbXA0YS40
MCIpJyk7CisKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdNZWRpYVNvdXJjZS5pc1R5cGVTdXBwb3J0
ZWQoInZpZGVvL21wNDsgY29kZWNzPWF2YzEiKScsIHRydWUpOworICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ01lZGlhU291cmNlLmlzVHlwZVN1cHBvcnRlZCgidmlkZW8vbXA0OyBjb2RlY3M9bXA0diIp
JywgZmFsc2UpOworCisgICAgICAgIG1lZGlhU291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7Cisg
ICAgICAgIHZpZGVvLnNyY09iamVjdCA9IG1lZGlhU291cmNlOworICAgICAgICBhd2FpdCB3YWl0
Rm9yKG1lZGlhU291cmNlLCAnc291cmNlb3BlbicpOworCisgICAgICAgIHJ1bignc291cmNlQnVm
ZmVyID0gbWVkaWFTb3VyY2UuYWRkU291cmNlQnVmZmVyKCJ2aWRlby9tcDQ7IGNvZGVjcz1hdmMx
IiknKTsKKyAgICAgICAgdGVzdEV4Y2VwdGlvbignc291cmNlQnVmZmVyLmNoYW5nZVR5cGUoInZp
ZGVvL21wNDsgY29kZWNzPW1wNHYiKScsICciTm90U3VwcG9ydGVkRXJyb3I6IFRoZSBvcGVyYXRp
b24gaXMgbm90IHN1cHBvcnRlZC4iJyk7CisKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcygidnAwOSIpJyk7CisgICAgICAgIHJ1bign
aW50ZXJuYWxzLnNldHRpbmdzLnNldEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoIm9wdXMiKScp
OworICAgICAgICBydW4oJ2ludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFDb2RlY1R5
cGVzKCJ2cDA5LG9wdXMiKScpOworCisgICAgICAgIHRlc3RFeHBlY3RlZCgnTWVkaWFTb3VyY2Uu
aXNUeXBlU3VwcG9ydGVkKCJ2aWRlby9tcDQ7IGNvZGVjcz1hdmMxIiknLCBmYWxzZSk7CisKKyAg
ICAgICAgdGVzdEV4Y2VwdGlvbignbWVkaWFTb3VyY2UuYWRkU291cmNlQnVmZmVyKCJ2aWRlby9t
cDQ7IGNvZGVjcz1hdmMxIiknLCAnIk5vdFN1cHBvcnRlZEVycm9yOiBUaGUgb3BlcmF0aW9uIGlz
IG5vdCBzdXBwb3J0ZWQuIicpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2UtYWxsb3dlZC1jb250YWluZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWxsb3dlZC1jb250YWluZXJzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWU5NjY5ZmI4YmQyOTgxNzljZWVkYWIyYzdhZjRiM2Ji
MDkzMWRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS1hbGxvd2VkLWNvbnRhaW5lcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
OCBAQAorUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd2VkTWVkaWFDb250YWluZXJUeXBl
cyhudWxsKSkKK0VYUEVDVEVEIChNZWRpYVNvdXJjZS5pc1R5cGVTdXBwb3J0ZWQoInZpZGVvL21w
NCIpID09ICd0cnVlJykgT0sKK1JVTihpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlh
Q29udGFpbmVyVHlwZXMoInZpZGVvL21wNCIpKQorRVhQRUNURUQgKE1lZGlhU291cmNlLmlzVHlw
ZVN1cHBvcnRlZCgidmlkZW8vbXA0IikgPT0gJ3RydWUnKSBPSworUlVOKGludGVybmFscy5zZXR0
aW5ncy5zZXRBbGxvd2VkTWVkaWFDb250YWluZXJUeXBlcygidmlkZW8vd2VibSIpKQorRVhQRUNU
RUQgKE1lZGlhU291cmNlLmlzVHlwZVN1cHBvcnRlZCgidmlkZW8vbXA0IikgPT0gJ2ZhbHNlJykg
T0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYWxsb3dlZC1jb250YWluZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFsbG93ZWQtY29udGFpbmVycy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYzNDlhMjlhNjc5MzE2ZDZmNzZiYzFiMWYyM2NkYTc0NWE1ZWQ5MzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNl
LWFsbG93ZWQtY29udGFpbmVycy5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bWVkaWEtc291cmNlLWFsbG93ZWQtY29udGFp
bmVyczwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3lu
YyBldmVudCA9PiB7CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAgICAg
ICAgZmFpbFRlc3QoJ1JlcXVpcmVzIHdpbmRvdy5pbnRlcm5hbHMnKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJ1bignaW50ZXJuYWxzLnNldHRpbmdzLnNldEFs
bG93ZWRNZWRpYUNvbnRhaW5lclR5cGVzKG51bGwpJyk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgn
TWVkaWFTb3VyY2UuaXNUeXBlU3VwcG9ydGVkKCJ2aWRlby9tcDQiKScsIHRydWUpOworCisgICAg
ICAgIHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKKyAgICAgICAgcnVu
KCdpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMoInZpZGVv
L21wNCIpJyk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnTWVkaWFTb3VyY2UuaXNUeXBlU3VwcG9y
dGVkKCJ2aWRlby9tcDQiKScsIHRydWUpOworCisgICAgICAgIHZpZGVvID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgndmlkZW8nKTsKKyAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
QWxsb3dlZE1lZGlhQ29udGFpbmVyVHlwZXMoInZpZGVvL3dlYm0iKScpOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ01lZGlhU291cmNlLmlzVHlwZVN1cHBvcnRlZCgidmlkZW8vbXA0IiknLCBmYWxz
ZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcyBiL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXRlc3QuanMKaW5kZXggYTNiNmNiN2MzMTcyZjAxMTczMmRkOTk5YWFmN2I0
NDM2NWM2ZGI1ZS4uYmRlMmEzN2IwMmQwMzU4OWZiY2E1YmU5NGU1MzhhZDI0Njg2ZjRkZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcworKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS92aWRlby10ZXN0LmpzCkBAIC0yMTcsMTYgKzIxNywzMiBAQCBmdW5jdGlvbiB3YWl0
Rm9yRXZlbnRXaXRoVGltZW91dChlbGVtZW50LCB0eXBlLCB0aW1lLCBtZXNzYWdlKSB7CiAgICAg
fSk7CiB9CiAKLWZ1bmN0aW9uIHdhaXRGb3IoZWxlbWVudCwgdHlwZSwgc2lsZW50KSB7CitmdW5j
dGlvbiB3YWl0Rm9yKGVsZW1lbnQsIHR5cGUsIHNpbGVudCwgc3VjY2VzcykgewogICAgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKHR5cGUsIGV2ZW50ID0+IHsKLSAgICAgICAgICAgIGlmICghc2lsZW50KQorICAgICAgICAg
ICAgaWYgKHNpbGVudCkgeworICAgICAgICAgICAgICAgIHJlc29sdmUoZXZlbnQpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN1Y2Nl
c3MgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgICAgICBsb2dSZXN1bHQoc3VjY2VzcywgYEVW
RU5UKCR7ZXZlbnQudHlwZX0pYCk7CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKGBFVkVOVCgke2V2ZW50LnR5cGV9KWApOworICAgICAgICAgICAgCiAgICAg
ICAgICAgICByZXNvbHZlKGV2ZW50KTsKICAgICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pOwogICAg
IH0pOwogfQogCitmdW5jdGlvbiB3YWl0Rm9yQW5kU3VjY2VlZChlbGVtZW50LCB0eXBlKSB7Cisg
ICAgcmV0dXJuIHdhaXRGb3IoZWxlbWVudCwgdHlwZSwgZmFsc2UsIHRydWUpOworfQorCitmdW5j
dGlvbiB3YWl0Rm9yQW5kRmFpbChlbGVtZW50LCB0eXBlKSB7CisgICAgcmV0dXJuIHdhaXRGb3Io
ZWxlbWVudCwgdHlwZSwgZmFsc2UsIGZhbHNlKTsKK30KKwogZnVuY3Rpb24gd2FpdEZvckV2ZW50
T25jZShldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQogewogICAgIHdhaXRGb3JFdmVudChldmVudE5h
bWUsIGZ1bmMsIGVuZGl0LCB0cnVlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBiMGQyOWQ0OTliNDZlY2JiMzAwYmM5OTUzNjM2MzY3Y2JjZjZlMzcyLi5k
ZTI4OTUyYzBmZWQ4NGM4ZjIxMDQ5MDc1MDE2NGQ1YmJlMTljY2RiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTg1MCwzICsxODUwLDUgQEAgd2Via2l0
Lm9yZy9iLzE2MDExOSBmYXN0L3JlcGFpbnQvc2VsZWN0aW9uLWdhcC1mbGlwcGVkLWZpeGVkLWNo
aWxkLmh0bWwgWyBGYWlsdXIKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKICMg
VGhlc2UgdGVzdHMgcmVxdWlyZSBwbGF0Zm9ybSBzdXBwb3J0LgorbWVkaWEvbWVkaWEtYWxsb3dl
ZC1jb2RlY3MuaHRtbAorbWVkaWEvbWVkaWEtYWxsb3dlZC1jb250YWluZXJzLmh0bWwKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDg4Yzc4MTVmYmZhNmMxNWFlOTAzZWJmMDhmNDA3MmI1MzNmNzRlZTcuLmVk
MmFlMzIyYTI2ZjZkMjQ5NjQ2NThkYzg0NjhmZjJmM2Q1Y2ZlZDMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNDQwLDQgKzI0NDAsNyBAQCBmYXN0L3Rl
eHQvZm9udC1sb29rdXAtZG90LXByZWZpeC1jYXNlLXNlbnNpdGl2ZS5odG1sIFsgUGFzcyBdCiBb
IENhdGFsaW5hIEJpZ1N1ciBNb250ZXJleSBdIGZhc3QvdGV4dC9sb2NhbGUtc2hhcGluZy0zLmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiAjcmRhcjovLzgwMzMzMDcxCi1bIEJpZ1N1
cisgXSBjb21wb3NpdGluZy9pZnJhbWVzL2JvcmRlci1yYWRpdXMtY29tcG9zaXRlZC1mcmFtZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorWyBC
aWdTdXIrIF0gY29tcG9zaXRpbmcvaWZyYW1lcy9ib3JkZXItcmFkaXVzLWNvbXBvc2l0ZWQtZnJh
bWUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorCisjIHJkYXI6Ly84NDU1NjgzMSAKK1sgQ2F0
YWxpbmEgXSBtZWRpYS9tZWRpYS1hbGxvd2VkLWNvbnRhaW5lcnMuaHRtbCBbIFNraXAgXQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="478630"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452027</attachid>
            <date>2022-02-15 08:43:52 -0800</date>
            <delta_ts>2022-02-16 09:14:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236109-20220215084351.patch</filename>
            <type>text/plain</type>
            <size>77009</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRmMzE0MGRmNzQ5MWVhOTYyY2NiMGJi
NTVkOWY0NDZmNDVkNTU1MjQuLjgwZmE5OWRkYjk1MmY2YWZmNjA4Y2IwMDlhNWJiMTJjYWMyMjEz
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDItMDcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1IYXZlLmg6CisKIDIwMjItMDItMTMgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyAnc3ViZ3JpZCcg
aW4gZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zL3JvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg1Y2U3OTg0NjA5YmEw
NDg1Nzg4ZTVhNDA5ZGE2YzlmMDUxOGEzZWYuLjNmYmE2Y2IxNzk3YzNmNGM3ZDE4MTUwNjQzNjE0
MzlmY2JjYzJjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjUgQEAKKzIwMjItMDItMDMgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAt
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lE
OiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM2MTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgIFRoZSBjdXJyZW50IHNldCBvZiBkZWxlZ2F0ZSBjYWxsYmFjayBtZXRob2RzIGhh
dmUgYSBzaWduaWZpY2FudCBzaG9ydGNvbWluZzogY2xpZW50cyBtdXN0CisgICAgICAgIGF0dGFj
aCBhbiBBVkNvbnRlbnRLZXlTZXNzaW9uIHRvIHRoZSBBVlN0cmVhbURhdGFQYXJzZXIgYmVmb3Jl
IHJldHVybmluZyBmcm9tIHRoZQorICAgICAgICAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6Zm9yVHJhY2tJRDogY2FsbGJhY2su
IFRoaXMKKyAgICAgICAgaXMgYmVjYXVzZSB0aGUgcGFyc2VyIGl0c2VsZiBhdHRhY2hlcyB0aGUg
b2JqZWN0IHJlcXVpcmVkIHRvIGRlY3J5cHQgZWFjaCBlbmNyeXB0ZWQgc2FtcGxlCisgICAgICAg
IHRvIHRoZSBzYW1wbGUgaXRzZWxmIGF0IHRoZSBwYXJzaW5nIHN0YWdlLiBJZiBhIGNsaWVudCBk
b2VzIG5vdCBhdHRhY2ggYW4KKyAgICAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiBieSB0aGUgdGlt
ZSB0aGF0IG1ldGhvZCByZXR1cm5zLCBBVlN0cmVhbURhdGFQYXJzZXIgd2lsbCBhdHRhY2ggb25l
IG9mCisgICAgICAgIGl0cyBvd24uCisKKyAgICAgICAgVGhlIHdlYi1mYWNpbmcgYmVoYXZpb3Ig
dGhpcyBjYXVzZXMgaXMgdGhhdCBNU0UgYXBwZW5kcyB3aWxsIG5vdCBjb21wbGV0ZSAoYnkgZmly
aW5nCisgICAgICAgIGFuICJ1cGRhdGVlbmQiIGV2ZW50KSBpZiBhbiBlbmNyeXB0ZWQgc2VnbWVu
dCBpcyBwYXJzZWQgdW50aWwgdGhlIGNsaWVudCBjcmVhdGVzIGFuZAorICAgICAgICBhdHRhY2hl
cyBhIE1lZGlhS2V5cyBvYmplY3Qgd2l0aCBhIHZhbGlkIHNlc3Npb24uCisKKyAgICAgICAgQSBu
ZXcgZGVsZWdhdGUgY2FsbGJhY2sgbWV0aG9kLCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRl
Q29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOgorICAgICAgICBhbGxvd3MgdXMgdG8gd29y
ayBhcm91bmQgdGhpcyBwcm9ibGVtLiBXaGVuIHRoaXMgZGVsZWdhdGUgaXMgcHJlc2VudCwgQVZT
dHJlYW1EYXRhUGFyc2VyCisgICAgICAgIHdpbGwgc2tpcCBhdHRhY2hpbmcgYSBkZWNyeXB0aW9u
IG9iamVjdCBlbnRpcmVseSwgbW92aW5nIHRoYXQgcmVzcG9uc2liaWxpdHkgdG8gdGhlCisgICAg
ICAgIGNsaWVudC4gSG93ZXZlciwgdGhpcyBjb21lcyB3aXRoIHRoZSByZXF1aXJlbWVudCB0aGF0
IHRoZSBjbGllbnQgKFdlYktpdCkgd29uJ3QgZW5xdWV1ZQorICAgICAgICBhbiBlbmNyeXB0ZWQg
c2FtcGxlIGJlZm9yZSBhIGRlY3J5cHRpb24gb2JqZWN0IGlzIGF2YWlsYWJsZSB2aWEgQVZDb250
ZW50S2V5U2Vzc2lvbi4KKworICAgICAgICBJbiBvcmRlciB0byBtZWV0IHRoaXMgbmV3IHJlcXVp
cmVtZW50LCBXZWJLaXQgd2lsbCBhc3NvY2lhdGUgdGhlIGtleSBJRHMgbmVjZXNzYXJ5IHRvCisg
ICAgICAgIGRlY3J5cHQgZWFjaCBzYW1wbGUgaW4gdGhlIE1lZGlhU2FtcGxlIG9iamVjdCB0aGF0
IHdyYXBzIHRoZSBlbmNyeXB0ZWQgc2FtcGxlLiBCZWNhdXNlIG5vdAorICAgICAgICBldmVyeSB0
eXBlIG9mIE1lZGlhU2FtcGxlIHdpbGwgY2Fycnkga2V5IElEcywgdGhpcyBwcm9wZXJ0eSB3YXMg
YWRkZWQgdG8gdGhlCisgICAgICAgIE1lZGlhU2FtcGxlQVZGT2JqQyBzdWJjbGFzcywgYW5kIHRo
ZXJlZm9yZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gc2FmZWx5IGRvd25jYXN0IGZyb20KKyAgICAg
ICAgTWVkaWFTYW1wbGUgdG8gTWVkaWFTYW1wbGVBVkZPYmpDLiBNZWRpYVNhbXBsZSBzdWJjbGFz
c2VzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGJ5IHRoZQorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Ft
cGxlIHR5cGUgYXZhaWxhYmxlIHRocm91Z2ggdGhlaXIgcGxhdGZvcm1TYW1wbGUoKSBwcm9wZXJ0
eSwgaG93ZXZlciB0aGlzCisgICAgICAgIGNhbGwgaXMgbm90IGNvbnN0LCBhbmQgbWF5IG5vdCBi
ZSBmcmVlLCBhcyBpdCByZXR1cm5zIGEgbm9uLVBPRCB0eXBlLiBTbworICAgICAgICBQbGF0Zm9y
bU1lZGlhOjpUeXBlIHdhcyBtYWRlIGFuIGV4cGxpY2l0IGVudW0gdHlwZSwgYW5kIGEgbmV3IHZp
cnR1YWwgbWV0aG9kCisgICAgICAgIHBsYXRmb3JtU2FtcGxlVHlwZSgpIHdhcyBhZGRlZCB0byBN
ZWRpYVNhbXBsZSAoYW5kIGltcGxlbWVudGVkIGJ5IGFsbCBzdWJjbGFzc2VzKSwgYW5kIGEKKyAg
ICAgICAgdHlwZSBzcGVjaWFsaXphdGlvbiBtYWNybyB3YXMgYWRkZWQgdG8gTWVkaWFTYW1wbGVB
VkZPYmpDLgorCisgICAgICAgIEluIG9yZGVyIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBzYW1w
bGUgaXMgY2FwYWJsZSBvZiBiZWluZyBlbnF1ZXVlZCwgdGhlIENETUluc3RhbmNlCisgICAgICAg
IG11c3QgYmUgcXVlcmllZCB0byBkZXRlcm1pbmUgaWYgdGhlIHNhbXBsZSdzIHJlcXVpcmVkIGtl
eXMgYXJlIHVzYWJsZS4gRm9yCisgICAgICAgIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLCBpdCBoYXMgYW4gZXhpc3Rpbmcga2V5U3RhdHVzKCksIG1ldGhvZCwgYnV0IHRoYXQK
KyAgICAgICAgbWV0aG9kIGlzIGFsc28gbm9uLWNvbnN0LCBhbmQgbWF5IGJlIGV4cGVuc2l2ZS4g
U28gYSBLZXlTdGF0dXNNYXAgaW5zdGFuY2UgdmFyaWFibGUKKyAgICAgICAgaGFzIGJlZW4gYWRk
ZWQgdG8gY2FjaGUgdGhlIGtleSBzdGF0dXMgZm9yIGVhc2Ugb2YgcXVlcnlpbmcuIFRvIG5vdGlm
eSBhbiBhcmJpdHJhcnkgbnVtYmVyCisgICAgICAgIG9mIGNsaWVudHMgd2hlbiB0aGUga2V5IHN0
YXR1c2VzIGNoYW5nZSwgYW4gT2JzZXJ2ZXIgaGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAgV2hl
biBhbiBlbmNyeXB0ZWQgc2FtcGxlIGlzIGVucXVldWVkLCBpZiB0aGlzIG5ldyBkZWxlZ2F0ZSBt
ZXRob2QgaXMgYXZhaWxhYmxlLCB0aGUKKyAgICAgICAgc291cmNlIGJ1ZmZlciB3aWxsIGNoZWNr
IGlmIGEgQ0RNIGluc3RhbmNlIGlzIGF2YWlsYWJsZSwgYW5kIGlmIHNvLCB3aGV0aGVyIHRoZSBz
YW1wbGUncworICAgICAgICBrZXlzIGFyZSB1c2FibGUuIElmIGFueSBvZiB0aGVzZSBjaGVja3Mg
ZmFpbCwgdGhlIHNhbXBsZSB3aWxsIGJlIHN0b3JlZCBpbiBhIGxvY2FsIHF1ZXVlCisgICAgICAg
IGFuZCBuZXcgZW5xdWV1ZXMgd2lsbCBiZSBibG9ja2VkLiBXaGVuIHRoZSBDRE0ncyBrZXlTdGF0
dXMgb2JzZXJ2ZXIgaXMgdHJpZ2dlcmVkLCB0aGUKKyAgICAgICAgbG9jYWwgcXVldWUgd2lsbCBi
ZSBwcm9jZXNzZWQsIGFuZCBhbGwgc2FtcGxlcyB3aXRoIHVzYWJsZSBrZXkgSURzIHdpbGwgYmUg
ZW5xdWV1ZWQuCisKKyAgICAgICAgRHJpdmUtYnkgZml4OiBVc2UgU2hhcmVkQnVmZmVyIHJhdGhl
ciB0aGFuIFVpbnQ4QXJyYXksIGFzIHRoZSBmb3JtZXIgaXMgbGlnaHRlciB3ZWlnaHQKKyAgICAg
ICAgYW5kIGNhbiBiZSBtb3JlIGVhc2lseSBjb252ZXJ0ZWQgdG8gYW5kIGZyb20gYSBOU0RhdGEu
CisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGll
bnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmlzQW55S2V5VXNhYmxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlT
dGF0dXNlc0NoYW5nZWRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbktleVN0YXR1c2VzQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5
S2V5U3RhdHVzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50
RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZVByb3RlY3Rpb25TdGF0dXNG
b3JEaXNwbGF5SUQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTdGF0dXNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjprZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1w
bGVBVkZPYmpDOjpzZXRLZXlJRHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZP
YmpDOjprZXlJRHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpD
OjprZXlJRHMpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVNhbXBs
ZUFWRk9iakM+Ojp0b1N0cmluZyk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVu
ZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFj
a0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2FtcGxlQnVmZmVyUmVuZGVy
ZXJzU3VwcG9ydEtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29weUtleUlEcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENo
YW5nZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OnNldENETUluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0lzQmxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6a2V5U3RhdHVzZXNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjYW5FbnF1ZXVlU2Ft
cGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1
ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRWaWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwOgorCiAyMDIyLTAyLTE0ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2ViQXV0aG5dIE1vZGlmeSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlIGFjY29yZGluZyB0byBpbnRlcm5hbCBuZWVkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjNWEwMGU3ZjBk
NjAxYTRmMDU4YTg4M2IyYzI0ZDZiOTc1ODE4YzU2Li45NDU0NmJiOWQ1Y2ZkYjRhM2I5NzAzMmZk
N2RkZDkxNWUzMmNhM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAyLTAzICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQg
LXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJ
RDogZGVsZWdhdGUgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjEwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICBBZGQgdGhlIG5ld2x5IHJlcXVyaWVkIHZpcnR1YWwgbWV0aG9kIGNoYW5nZXMg
dG8gTWVkaWFTYW1wbGUgc3ViY2xhc3NlcywgYW5kIHVzZQorICAgICAgICBTaGFyZWRCdWZmZXIg
cmF0aGVyIHRoYW4gVWludDhBcnJheS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
Rm9ybWF0UmVhZGVyOjpkaWRQcm92aWRlTWVkaWFEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQpOgorCiAyMDIyLTAyLTE0ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV2ViQXV0aG5dIE1vZGlmeSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlIGFjY29yZGluZyB0byBpbnRlcm5hbCBuZWVkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAw
OTJiYzM2MjE1MDFkNDRjZWFmYjA3MGZhY2NkMzk5NWNkYTIzMTI3Li4zZGE4ZDZhNjAzMTNmOTlh
OTk4YmE4YTcxZWRiNjI4Zjg2MTljN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtMzg4LDYg
KzM4OCwxMyBAQAogI2RlZmluZSBIQVZFX0FWQ09OVEVOVEtFWVNFU1NJT04gMQogI2VuZGlmCiAK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0g
MTEwMzAwKSBcCisgICAgfHwgKCgoUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WV9TSU1VTEFUT1IpKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNTAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1Mp
ICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgX19XQVRDSF9PU19WRVJTSU9O
X01BWF9BTExPV0VEID49IDcwNDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQUExFVFYpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgX19UVl9PU19WRVJTSU9OX01BWF9BTExP
V0VEID49IDE0MDUwMCkKKyNkZWZpbmUgSEFWRV9BVkNPTlRFTlRLRVlTUEVDSUZJRVIgMQorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAjZGVmaW5lIEhBVkVfU0VDX0tFWV9QUk9YWSAxCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1l
ZGlhS2V5cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleXMuaWRsCmluZGV4IGQ2MzQ4NmM1YTljNDg5NTNjMzRiMmE2ZGQyM2Nk
YTkyM2YyODQxYzcuLjVlNjdlZGYwNjZiNjAxM2I3OGU0YjY5ZGE2NTMwNmUxYmFkNGYwMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbApAQCAtMzAsNyArMzAsNyBAQAogXSBpbnRl
cmZhY2UgV2ViS2l0TWVkaWFLZXlzIHsKICAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcga2V5U3lz
dGVtKTsKIAotICAgIFtDYWxsV2l0aD1DdXJyZW50U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVpbnQ4QXJy
YXkgaW5pdERhdGEpOworICAgIFtDYWxsV2l0aD1DdXJyZW50RG9jdW1lbnRdIFdlYktpdE1lZGlh
S2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9uKERPTVN0cmluZyB0eXBlLCBVaW50OEFycmF5IGluaXRE
YXRhKTsKICAgICBzdGF0aWMgYm9vbGVhbiBpc1R5cGVTdXBwb3J0ZWQoRE9NU3RyaW5nIGtleVN5
c3RlbSwgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcga2V5U3lzdGVtOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IDcyNWM1MjBhMmViMTZhNzMyYWRiZGZkMGRhOGUxMDllN2NlNDU1Y2UuLjQ5
NmM2YTljYjIzYTZhMmE5NTM5M2Y4YTQ2ZTg2MjA5NDc3MGFhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjY0NCw3ICsyNjQ0LDcgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlk
KGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbV93ZWJLaXRNZWRpYUtleXMgPyBtX3dlYktpdE1l
ZGlhS2V5cy0+Y2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpIDogbnVsbHB0cjsKIH0KIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0
YSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5s
ZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY2
MSw3ICsyNjYxLDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSogaW5pdERhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKKyAgICBXZWJLaXRNZWRpYUtleU5lZWRl
ZEV2ZW50OjpJbml0IGluaXQ7CisKKyAgICBpZiAoYXV0byBpbml0RGF0YUJ1ZmZlciA9IGluaXRE
YXRhLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpIHsKKyAgICAgICAgYXV0byBieXRlTGVuZ3RoID0g
aW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgaW5pdC5pbml0RGF0YSA9IFVp
bnQ4QXJyYXk6OnRyeUNyZWF0ZShpbml0RGF0YUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCAwLCBi
eXRlTGVuZ3RoKTsKKyAgICB9CisKKyAgICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVk
ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXQpOwog
ICAgIHNjaGVkdWxlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDg5ZTZhNjI2OGJmNmQ2MWM1ZTM3M2YyOWE4NDk2YjFk
Njc3M2JhZDQuLjAwNDkxODYxM2ViOTMxMTA2MjNiMDNiYWZmOTc2MWQ2MzBjNDhjZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MDYsNyArNzA2LDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtl
eUlkKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJy
YXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFT
YW1wbGUuaAppbmRleCBiMDY1MDRmNTdlZTkzNmI4ZTE5ODg3MWYzNTcyNzY1MzUzMDRhZmQzLi44
YjNkY2E2MTJjMjNhYTI5ZTNhNGUzNjZhN2Y0NGMxY2E1YzIwMzQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lZGlhU2FtcGxlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTW9ja1NhbXBsZUJveDsKIAogc3RydWN0IFBsYXRmb3JtU2FtcGxlIHsKLSAgICBl
bnVtIHsKKyAgICBlbnVtIFR5cGUgewogICAgICAgICBOb25lLAogICAgICAgICBNb2NrU2FtcGxl
Qm94VHlwZSwKICAgICAgICAgQ01TYW1wbGVCdWZmZXJUeXBlLApAQCAtOTIsNiArOTIsNyBAQCBw
dWJsaWM6CiAgICAgfTsKICAgICB2aXJ0dWFsIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBj
b25zdCA9IDA7CiAKICAgICBzdHJ1Y3QgQnl0ZVJhbmdlIHsKICAgICAgICAgc2l6ZV90IGJ5dGVP
ZmZzZXQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggNTA2MDMyMzgwM2IxYTNi
MTdmNDczODY2ZWE5N2IzYTgyOTBlMjAyYy4uYjcwM2NmZWNkMzE2YzYyN2M2OTRlNjRiOGU2OTc2
MjA2ODY3ZjdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtMjAyLDEwICsyMDIsMTAg
QEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhPiBBdWRpb0ZpbGVSZWFk
ZXI6OmRlbXV4V2ViTURhdGEoY29uc3QgdWkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0pOwotICAgIHBhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFsmXShSZWY8
TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKSB7
CisgICAgcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soWyZdKFJlZjxNZWRp
YVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcm
KSB7CiAgICAgICAgIGlmICghYXVkaW9UcmFja0lkIHx8IHRyYWNrSUQgIT0gKmF1ZGlvVHJhY2tJ
ZCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2FtcGxlcy5hcHBlbmQoc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oV1RGTW92ZShzYW1wbGUpKSk7CisgICAg
ICAgIHNhbXBsZXMuYXBwZW5kKFdURk1vdmUoc2FtcGxlKSk7CiAgICAgfSk7CiAgICAgcGFyc2Vy
LT5zZXRDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayhbXShhdXRvJiYgZnVuY3Rpb24pIHsKICAg
ICAgICAgZnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAppbmRleCAwYWJjMzIyMzhkNjQxYWNhNDVmNzM5Nzc1N2U0ZTVlMTUx
YmE3ZGI1Li42YzYxZDczNzA4NDFmMzgxNTA3Yjc2ODJlZmM4ZmJlOWEyMWIzZWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0x
NDI1LDcgKzE0MjUsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IE1lZGlhUGxheWVyOjpjYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogICAgIHJldHVybiBjbGllbnQo
KS5tZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGtleUlkKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYVBsYXllcjo6
a2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgY2xpZW50KCku
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNWYwZGFhODY2ZjJjODIzM2FjOGMx
OTRhNjEzM2Q5NzNmMzQ0NmZlOC4uODkzMTcxNTkyNWExNDgzYWZhZDBjY2NhMTYzYWUxNTlmOTQ3
M2I4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCkBAIC04Niw2ICs4Niw3IEBAIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE5h
dGl2ZUltYWdlOwogY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgUGxh
dGZvcm1UaW1lUmFuZ2VzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFRyYWNrUmVw
cmVzZW50YXRpb247CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIApAQCAtMjAwLDcgKzIwMSw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZp
cnR1YWwgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNv
bnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5l
ZWRlZChjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBs
YXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmlu
ZygpOyB9CiAjZW5kaWYKIApAQCAtNTU4LDcgKzU1OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVk
S2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3Q7Ci0gICAgdm9pZCBrZXlOZWVk
ZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQga2V5TmVlZGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpOwogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYTNiYzlmNWZjZGY4Zjcw
NWRmN2ZiOWI2OWE4YjUwOTkyNDUwYzgxYy4uZjU1ZjQzMzQ0YzEyOGJmNTFiNTM5OThhNWRiNWQx
MmQ0MmMwY2RkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0xOTIxLDE1ICsxOTIxLDE1IEBAIGJv
b2wgQVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgICAgIC8vIFs0IGJ5dGVzOiBrZXlVUkkgc2l6ZV0s
IFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25lZCBrZXlVUklTaXpl
ID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKICAgICAgICAgYXV0byBpbml0RGF0
YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwotICAgICAg
ICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZl
ci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICB1
bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAg
ICAgYXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZm
ZXIuY29weVJlZigpLCAwLCBieXRlTGVuZ3RoKTsKICAgICAgICAgaW5pdERhdGFWaWV3LT5zZXQ8
dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAgICAgICAgIGF1dG8ga2V5VVJJQXJy
YXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5
VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCkuZ2V0KCkpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2YodW5zaWduZWQgY2hhciks
IDApOwogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpOwotICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdU
Rk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgbV9vd25lci0+
cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisgICAgICAgIGF1dG8gaW5pdERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4geyBzdGF0aWNfY2FzdDx1
aW50OF90Kj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGggfSk7CisgICAgICAg
IG1fb3duZXItPnBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogICAgICAgICBzZXRSZXF1
ZXN0Rm9yS2V5KGtleVVSSSwgYXZSZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1
YmFlNDVlZDkzY2Y2Mi4uZDU5ZmU0ODA0ZDU4ZGZlNzhjYjViZWE3MDc0YjJlNjg3MDVjMWQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiQ0RN
SW5zdGFuY2UuaCIKICNpbmNsdWRlICJDRE1JbnN0YW5jZVNlc3Npb24uaCIKICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIE9CSkNfQ0xBU1Mg
QVZDb250ZW50S2V5UmVwb3J0R3JvdXA7CiBPQkpDX0NMQVNTIEFWQ29udGVudEtleVJlcXVlc3Q7
CkBAIC0xMTcsNiArMTE5LDEzIEBAIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91cChBVkNvbnRlbnRLZXlSZXBvcnRH
cm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OwogCisg
ICAgYm9vbCBpc0FueUtleVVzYWJsZShjb25zdCBLZXlzJikgY29uc3Q7CisKKyAgICB1c2luZyBL
ZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoKT47CisgICAgdm9pZCBh
ZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcihjb25zdCBLZXlTdGF0dXNlc0NoYW5nZWRPYnNl
cnZlciYpOworCisgICAgdm9pZCBzZXNzaW9uS2V5U3RhdHVzZXNDaGFuZ2VkKGNvbnN0IENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyYpOworCiBwcml2YXRlOgogICAg
IHZvaWQgaGFuZGxlVW5leHBlY3RlZFJlcXVlc3RzKFZlY3RvcjxSZXRhaW5QdHI8QVZDb250ZW50
S2V5UmVxdWVzdD4+JiYpOwogCkBAIC0xMzQsNiArMTQzLDcgQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Npb25zOwogICAgIEhhc2hT
ZXQ8UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+PiBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0
czsKKyAgICBXZWFrSGFzaFNldDxLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcj4gbV9rZXlTdGF0
dXNDaGFuZ2VkT2JzZXJ2ZXJzOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZlB0
cjxMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51
bGxwdHIgfTsKQEAgLTE4NiwxMSArMTk2LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzUmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CiAKKyAgICBjb25zdCBLZXlTdGF0dXNW
ZWN0b3ImIGtleVN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTdGF0dXNlczsgfQorICAg
IEtleVN0YXR1c1ZlY3RvciBjb3B5S2V5U3RhdHVzZXMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBib29sIGVuc3VyZVNlc3Npb25Pckdyb3VwKCk7CiAgICAgYm9vbCBpc0xpY2Vuc2VUeXBlU3Vw
cG9ydGVkKExpY2Vuc2VUeXBlKSBjb25zdDsKIAotICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0
dXNlcyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiA9IHN0ZDo6bnVsbG9wdCkgY29u
c3Q7CisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlz
cGxheUlEPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBuZXh0UmVxdWVzdCgpOwogICAgIEFW
Q29udGVudEtleVJlcXVlc3QqIGxhc3RLZXlSZXF1ZXN0KCkgY29uc3Q7CiAKQEAgLTIxNiw2ICsy
MjksNyBAQCBwcml2YXRlOgogCiAgICAgY2xhc3MgVXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFVwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yPiBtX3VwZGF0ZVJlc3Bv
bnNlQ29sbGVjdG9yOworICAgIEtleVN0YXR1c1ZlY3RvciBtX2tleVN0YXR1c2VzOwogCiAgICAg
VmVjdG9yPFJlcXVlc3Q+IG1fcGVuZGluZ1JlcXVlc3RzOwogICAgIFZlY3RvcjxSZXF1ZXN0PiBt
X3JlcXVlc3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBjZmUwNDhhOTM4YzA1ZGY3
NDVjNzE2MzU2YWQxYjNiOTBhNTllYjc4Li5mZDYxNTJlMTg2N2Q0ZTZhNjcyYmVmMTcwNzBjYTc2
MjkxMjZmNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtNjE3LDYgKzYxNywzNyBA
QCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29s
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppc0FueUtleVVzYWJsZShjb25z
dCBLZXlzJiBrZXlzKSBjb25zdAoreworICAgIGZvciAoYXV0byYgc2Vzc2lvbkludGVyZmFjZSA6
IG1fc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKCFzZXNzaW9uSW50ZXJmYWNlKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRvJiBrZXlTdGF0dXNQYWlyIDogc2Vzc2lv
bkludGVyZmFjZS0+a2V5U3RhdHVzZXMoKSkgeworICAgICAgICAgICAgaWYgKGtleVN0YXR1c1Bh
aXIuc2Vjb25kICE9IENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzOjpVc2FibGUpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChrZXlzLmZpbmRJZihbJl0g
KGF1dG8mIGtleSkgeworICAgICAgICAgICAgICAgIHJldHVybiBrZXkuZ2V0KCkgPT0ga2V5U3Rh
dHVzUGFpci5maXJzdC5nZXQoKTsKKyAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6YWRkS2V5
U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgS2V5U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2ZXIm
IG9ic2VydmVyKQoreworICAgIG1fa2V5U3RhdHVzQ2hhbmdlZE9ic2VydmVycy5hZGQob2JzZXJ2
ZXIpOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNz
aW9uS2V5U3RhdHVzZXNDaGFuZ2VkKGNvbnN0IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQyYpCit7CisgICAgbV9rZXlTdGF0dXNDaGFuZ2VkT2JzZXJ2ZXJzLmZvckVh
Y2goW10gKGF1dG8mIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyKCk7CisgICAgfSk7Cit9
CisKIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKFJlZjxDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQz4mJiBpbnN0YW5jZSkKICAgICA6IG1faW5zdGFuY2UoV1RGTW92ZShp
bnN0YW5jZSkpCiAgICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJDb3JlRlBTQ29udGVudEtl
eVNlc3Npb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQpAQCAtMTMwNiwx
MyArMTMzNywxNSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QoQVZDb250ZQogCiB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdERpZFN1Y2NlZWQoQVZDb250
ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKIHsKKyAgICB1cGRhdGVLZXlTdGF0dXNlcygpOworCiAg
ICAgaWYgKG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3IpIHsKICAgICAgICAgbV91cGRhdGVSZXNw
b25zZUNvbGxlY3Rvci0+YWRkU3VjY2Vzc2Z1bFJlc3BvbnNlKHJlcXVlc3QsIG51bGxwdHIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxiYWNr
KSB7Ci0gICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om1ha2Vfb3B0
aW9uYWwoa2V5U3RhdHVzZXMoKSksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVk
ZWQpOworICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjptYWtlX29w
dGlvbmFsKGNvcHlLZXlTdGF0dXNlcygpKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1
Y2NlZWRlZCk7CiAgICAgICAgIEFTU0VSVCghbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spOwogICAg
IH0KIApAQCAtMTQwNSw3ICsxNDM4LDcgQEAgc3RhdGljIGF1dG8gcmVxdWVzdFN0YXR1c1RvQ0RN
U3RhdHVzKEFWQ29udGVudEtleVJlcXVlc3RTdGF0dXMgc3RhdHVzKQogICAgIH0KIH0KIAotQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTdGF0dXNlcyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlz
cGxheUlEPiBkaXNwbGF5SUQpIGNvbnN0Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlS2V5U3RhdHVzZXMoc3RkOjpvcHRpb25hbDxQbGF0Zm9y
bURpc3BsYXlJRD4gZGlzcGxheUlEKQogewogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNl
czsKIApAQCAtMTQyNyw3ICsxNDYwLDE5IEBAIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4ga2V5U3RhdHVzZXM7CisgICAgbV9rZXlTdGF0dXNl
cy5zd2FwKGtleVN0YXR1c2VzKTsKKworICAgIG1faW5zdGFuY2UtPnNlc3Npb25LZXlTdGF0dXNl
c0NoYW5nZWQoKnRoaXMpOworfQorCithdXRvIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6Y29weUtleVN0YXR1c2VzKCkgY29uc3QgLT4gS2V5U3RhdHVzVmVjdG9y
Cit7CisgICAgS2V5U3RhdHVzVmVjdG9yIGNvcGllZEtleVN0YXR1c2VzOworICAgIGNvcGllZEtl
eVN0YXR1c2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9rZXlTdGF0dXNlcy5zaXplKCkpOwor
ICAgIGZvciAoYXV0byYgc3RhdHVzIDogbV9rZXlTdGF0dXNlcykKKyAgICAgICAgY29waWVkS2V5
U3RhdHVzZXMudW5jaGVja2VkQXBwZW5kKHsgc3RhdHVzLmZpcnN0LmNvcHlSZWYoKSwgc3RhdHVz
LnNlY29uZCB9KTsKKyAgICByZXR1cm4gY29waWVkS2V5U3RhdHVzZXM7CisKIH0KIAogdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVk
RHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wgb2JzY3VyZWQp
CkBAIC0xNDM4LDggKzE0ODMsMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnQKICAgICBBTFdB
WVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIG9ic2N1cmVkKTsKICAgICBtX291dHB1
dE9ic2N1cmVkID0gb2JzY3VyZWQ7CiAKKyAgICB1cGRhdGVLZXlTdGF0dXNlcygpOworCiAgICAg
aWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+dXBkYXRlS2V5U3RhdHVzZXMoa2V5U3Rh
dHVzZXMoKSk7CisgICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhjb3B5S2V5U3Rh
dHVzZXMoKSk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikKQEAgLTE0OTIsOSArMTUzOSwxMyBAQCBzdGQ6Om9w
dGlvbmFsPENETUtleVN0YXR1cz4gQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpwcm90ZWN0aQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlUHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCiB7Ci0gICAgaWYgKG1fcmVxdWVzdHMuaXNFbXB0eSgpIHx8ICFt
X2NsaWVudCkKKyAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBtX2NsaWVudC0+dXBkYXRlS2V5U3RhdHVzZXMoa2V5U3RhdHVzZXMoZGlzcGxheUlEKSk7
CisKKyAgICB1cGRhdGVLZXlTdGF0dXNlcyhkaXNwbGF5SUQpOworCisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+dXBkYXRlS2V5U3RhdHVzZXMoY29weUtleVN0YXR1c2VzKCkp
OwogfQogCiBib29sIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggMDIxMDI2OTU4NmFmMWQ1YTA0
MmM2M2RjNDY0ZDk5YTIwYzNjNzViMC4uNmMwNWUyZjhiMTAzYjg1MTc0N2NjOWEzNTQzY2Q1MWM5
YWU4YzM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbi5oCkBAIC03MCw3ICs3MCw3IEBAIHByb3RlY3RlZDoKICAgICBS
ZXRhaW5QdHI8V2ViQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9jb250
ZW50S2V5U2Vzc2lvbkRlbGVnYXRlOwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0
PiBtX2tleVJlcXVlc3Q7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1faWRlbnRpZmllcjsKLSAg
ICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2luaXREYXRhOwogICAgIFJldGFpblB0cjxOU0RhdGE+IG1fZXhwaXJlZFNlc3Npb247CiAg
ICAgVmVjdG9yPGludD4gbV9wcm90b2NvbFZlcnNpb25zOwogICAgIGludCBtX2NkbVZlcnNpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLm1tCmluZGV4IDY1MmEwODUwODc3ZWI3ODBmMzVlNmVmNTE0ZTJhYzMyY2Q3Nzkz
YWMuLjdkNTkzYTYwZDY2MzJiOTk2MmZmNDk1NjFhMGU3MWJjZGNlNjA5NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJMZWdhY3lDRE0uaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIu
aCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJXZWJD
b3JlTlNFcnJvckV4dHJhcy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRXJyb3IuaD4KQEAg
LTE0Niw3ICsxNDcsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbgogICAgIGlmIChtX2NkbVZl
cnNpb24gPT0gMikKICAgICAgICAgbV9pZGVudGlmaWVyID0gaW5pdERhdGE7CiAgICAgZWxzZQot
ICAgICAgICBtX2luaXREYXRhID0gaW5pdERhdGE7CisgICAgICAgIG1faW5pdERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+bGVuZ3RoKCkpOwog
CiAgICAgQVNTRVJUKCFtX2NlcnRpZmljYXRlKTsKICAgICBTdHJpbmcgY2VydGlmaWNhdGVTdHJp
bmcoImNlcnRpZmljYXRlIl9zKTsKQEAgLTI2OCwxMiArMjY5LDEyIEBAIGJvb2wgQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50
OEFycmF5PiYKICAgICB9CiAKICAgICBpZiAoIW1fa2V5UmVxdWVzdCkgewotICAgICAgICBOU0Rh
dGEqIG5zSW5pdERhdGEgPSBtX2luaXREYXRhID8gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOm1faW5p
dERhdGEtPmRhdGEoKSBsZW5ndGg6bV9pbml0RGF0YS0+bGVuZ3RoKCldIDogbmlsOworICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBuc0luaXREYXRhID0gbV9pbml0RGF0YSA/IG1faW5pdERhdGEt
PmNyZWF0ZU5TRGF0YSgpIDogbmlsOwogICAgICAgICBOU0RhdGEqIG5zSWRlbnRpZmllciA9IG1f
aWRlbnRpZmllciA/IFtOU0RhdGEgZGF0YVdpdGhCeXRlczptX2lkZW50aWZpZXItPmRhdGEoKSBs
ZW5ndGg6bV9pZGVudGlmaWVyLT5sZW5ndGgoKV0gOiBuaWw7CiAgICAgICAgIGlmIChbY29udGVu
dEtleVNlc3Npb24oKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHByb2Nlc3NDb250ZW50
S2V5UmVxdWVzdFdpdGhJZGVudGlmaWVyOmluaXRpYWxpemF0aW9uRGF0YTpvcHRpb25zOildKQot
ICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0
V2l0aElkZW50aWZpZXI6bnNJZGVudGlmaWVyIGluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRh
IG9wdGlvbnM6bmlsXTsKKyAgICAgICAgICAgIFtjb250ZW50S2V5U2Vzc2lvbigpIHByb2Nlc3ND
b250ZW50S2V5UmVxdWVzdFdpdGhJZGVudGlmaWVyOm5zSWRlbnRpZmllciBpbml0aWFsaXphdGlv
bkRhdGE6bnNJbml0RGF0YS5nZXQoKSBvcHRpb25zOm5pbF07CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIFtjb250ZW50S2V5U2Vzc2lvbigpIHByb2Nlc3NDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YTpuc0luaXREYXRhIG9wdGlvbnM6bmlsXTsKKyAgICAgICAgICAgIFtjb250
ZW50S2V5U2Vzc2lvbigpIHByb2Nlc3NDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YTpuc0luaXREYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxk
R2VuZXJhdGVLZXlSZXF1ZXN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBhNmMwNTlk
YzEwNmE2MjI1YjIxMTJjYjhlZTUyMDNhN2I1OGZkMTIyLi4wMjc4NzljMGRiNGFhNzYwMWM2ZGFk
YzA0ZGIzOTQ0NzEzNmZlOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTIxMTUsOCAr
MjExNSw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxk
V2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIGF1dG8ga2V5VVJJQXJy
YXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5
VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRlZENoYXJh
Y3RlcnMoKS5nZXQoKSksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwg
MCk7CiAKLSAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIHBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEucHRyKCkpOworICAgICAgICBhdXRvIGluaXREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGluaXRE
YXRhQnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoIH0pOworICAgICAgICBwbGF5ZXIoKS0+a2V5
TmVlZGVkKGluaXREYXRhKTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgICAgICBp
ZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTIxNDQsOSArMjE0NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNz
ZXRSCiAgICAgaWYgKHNjaGVtZSA9PSAiY2xlYXJrZXkiKSB7CiAgICAgICAgIFN0cmluZyBrZXlJ
RCA9IFtbW2F2UmVxdWVzdCByZXF1ZXN0XSBVUkxdIHJlc291cmNlU3BlY2lmaWVyXTsKICAgICAg
ICAgYXV0byBlbmNvZGVkS2V5SWQgPSBQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZShrZXlJRCwg
UEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxFbmNvZGVkRW50aXRpZXMpOwotCi0gICAgICAg
IGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoZW5jb2RlZEtleUlkLnNpemUoKSk7
Ci0gICAgICAgIGluaXREYXRhLT5zZXRSYW5nZShlbmNvZGVkS2V5SWQuZGF0YSgpLCBlbmNvZGVk
S2V5SWQuc2l6ZSgpLCAwKTsKKyAgICAgICAgYXV0byBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZW5jb2RlZEtleUlkKSk7CiAKICAgICAgICAgYXV0byBrZXlEYXRhID0g
cGxheWVyKCktPmNhY2hlZEtleUZvcktleUlkKGtleUlEKTsKICAgICAgICAgaWYgKGtleURhdGEp
IHsKQEAgLTIxNTQsNyArMjE1Miw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBwbGF5ZXIoKS0+a2V5TmVl
ZGVkKGluaXREYXRhLnB0cigpKTsKKyAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0
YSk7CiAKICAgICAgICAgaWYgKCFwbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApp
bmRleCBiY2FkMTI1NDM2M2ExODdjNjhhMzM2OGZhN2E3YTE0ODUxNWI4MmU1Li4yOTgzY2VjYWRl
YTIyZTNmMjU1YjA3OWM5NmEyZjc4OTFjZDNhMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aApAQCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BF
cnJvcigpIG92ZXJyaWRlIHsgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFs
UHJvdGVjdGlvbkNoYW5nZWQoZmFsc2UpOyB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICB2b2lkIGtleU5lZWRlZChV
aW50OEFycmF5Kik7CisgICAgdm9pZCBrZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggZTk1ZjhjM2NhY2YwYWRlMTgxMWYxMWJhZTY4M2JlNGI1ZmIxNTUzMy4uMWMz
MzI3MjU0NmI0ZWY4Yjc5Nzg4ZDkwNTI3YTUwZTU0ZDZkNDlkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiogc2Vzc2kK
ICNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmtleU5lZWRlZChVaW50OEFycmF5
KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpr
ZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBtX3BsYXllci0+
a2V5TmVlZGVkKGluaXREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLmgKaW5kZXggNWI0ZjdmMDBkYjMzYTViY2RmNjU2YzYwMjJmMTQ4MzRmNDFjNTkw
Ni4uYWMyN2EyMGI3ZDBhZDViMGFjY2E4M2MwMTI2ZTI2NzMwY2NjZmU3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTI5LDExICsyOSwxMyBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQuaD4KICNpbmNsdWRlIDxwYWwvYXZmb3Vu
ZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiB1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0g
c3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAogY2xhc3MgTWVkaWFTYW1w
bGVBVkZPYmpDIDogcHVibGljIE1lZGlhU2FtcGxlIHsKQEAgLTYwLDYgKzYyLDcgQEAgcHVibGlj
OgogCiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9y
bVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2Ft
cGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBs
YXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGU7IH0KICAgICBzdGQ6Om9wdGlvbmFsPEJ5
dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBvZmZzZXRU
aW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CkBAIC04MCw2ICs4MywxMyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEJ5dGVSYW5nZU9mZnNldChzaXplX3QpOwogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAg
IHVzaW5nIEtleUlEcyA9IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OworICAg
IHZvaWQgc2V0S2V5SURzKEtleUlEcyYmIGtleUlEcykgeyBtX2tleUlEcyA9IFdURk1vdmUoa2V5
SURzKTsgfQorICAgIGNvbnN0IEtleUlEcyYga2V5SURzKCkgY29uc3QgeyByZXR1cm4gbV9rZXlJ
RHM7IH0KKyAgICBLZXlJRHMmIGtleUlEcygpIHsgcmV0dXJuIG1fa2V5SURzOyB9CisjZW5kaWYK
KwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2FtcGxlQVZGT2JqQyhSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2Ft
cGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZik7CkBAIC05NCwxMCArMTA0LDI3IEBAIHByb3Rl
Y3RlZDoKICAgICBBdG9tU3RyaW5nIG1faWQ7CiAgICAgVmlkZW9Sb3RhdGlvbiBtX3JvdGF0aW9u
IHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wgbV9taXJyb3JlZCB7IGZhbHNlIH07
CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBMb2dBcmd1bWVudDsKK3RlbXBsYXRlIDw+
CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDPiB7CisgICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakMm
IHNhbXBsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzYW1wbGUudG9KU09OU3RyaW5nKCk7Cisg
ICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDKQotICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlh
U2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6
Q01TYW1wbGVCdWZmZXJUeXBlOyB9CitzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
TWVkaWFTYW1wbGUmIHNhbXBsZSkgeyByZXR1cm4gc2FtcGxlLnBsYXRmb3JtU2FtcGxlVHlwZSgp
ID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGU7IH0KIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAppbmRleCA3MjI0OTdlMGJjNDIwY2Q0ZTYyYjA2MjQ5
MjNiZmQ4ZjlkNTQwNjIyLi44OTUxYjI0N2RkMDAxNTBlZDE2Y2UwNDFhY2NlY2JiZmNiZWQ1Zjhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyos
IGJvb2wgYWN0aXZlKTsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKik7CiAjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgdm9pZCBzb3VyY2VCdWZmZXJLZXlOZWVk
ZWQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqLCBVaW50OEFycmF5Kik7CisgICAgdm9pZCBz
b3VyY2VCdWZmZXJLZXlOZWVkZWQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqLCBjb25zdCBT
aGFyZWRCdWZmZXImKTsKICNlbmRpZgogICAgIHZvaWQgcmVtb3ZlU291cmNlQnVmZmVyKFNvdXJj
ZUJ1ZmZlclByaXZhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggOTI3ZDEzMDMxMWU4ZWVjOGIwMjE1NmFjNjMy
ODBhOWJmOWQwODA4Yy4uMTIwMWI3MjZiZDA0N2M1ZjExMGY3MTRhYjEwMjMxOWE2MTYyMmNiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLm1tCkBAIC0xOTUsOSArMTk1LDEwIEBAIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qzo6c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0YXRlKFNvdXJjZUJ1CiB9CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLXZvaWQgTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQzo6c291cmNlQnVmZmVyS2V5TmVlZGVkKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDKiBidWZmZXIsIFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJLZXlOZWVkZWQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMqIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBtX3NvdXJj
ZUJ1ZmZlcnNOZWVkaW5nU2Vzc2lvbnMuYXBwZW5kKGJ1ZmZlcik7CisKICAgICBpZiAobV9wbGF5
ZXIpCiAgICAgICAgIG1fcGxheWVyLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCmluZGV4IGMy
MmU3MjVmODU0NmYyNzhmZjY1N2E1ZjRjNTcyYjkyOTUxNWVkNDguLjc4MTEyMDRjY2ZkMWQ4MWIx
NTA5MmI1NzVhODI5ODBkNjJjMmYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCwg
Q01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFn
cyk7CiAgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgdWludDY0
X3QgdHJhY2tJRCk7CisgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZp
ZXJGb3JUcmFja0lEKE5TRGF0YSosIHVpbnQ2NF90IHRyYWNrSUQpOwogCiBwcml2YXRlOgogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggYWJkODFlNWYzYzFlYTUwZTQyMmUyZmEz
YzJiYTFkMThjZmUzMWFlMi4uYWExNTg0MDRiMTBlNDQ0YWY2ZTVlZGRjOGRhZDZiYTk2ZWQ1Y2Iy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCkBAIC01Nyw2ICs1NywxMiBAQAogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFy
ayBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgogCisjaWYgSEFWRShBVkNPTlRFTlRLRVlT
UEVDSUZJRVIpCitAaW50ZXJmYWNlIEFWQ29udGVudEtleVNwZWNpZmllciAoV2ViQ29yZVByaXZh
dGUpCitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU0RhdGEgKmluaXRpYWxpemF0aW9uRGF0YTsKK0Bl
bmQKKyNlbmRpZgorCiBAaW50ZXJmYWNlIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIDog
TlNPYmplY3Q8QVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0SGFuZGxpbmc+IHsKICAgICBXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBfcGFyZW50OwogICAgIEFWU3RyZWFtRGF0YVBh
cnNlciogX3BhcnNlcjsKQEAgLTEzMyw2ICsxMzksMTYgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJl
YW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwogICAgIF9wYXJlbnQtPmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW5pdERhdGEsIHRyYWNrSUQp
OwogfQorCisjaWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCistICh2b2lkKXN0cmVhbURh
dGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlk
ZUNvbnRlbnRLZXlTcGVjaWZpZXI6KEFWQ29udGVudEtleVNwZWNpZmllciAqKWtleVNwZWNpZmll
ciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Cisg
ICAgaWYgKFtrZXlTcGVjaWZpZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihpbml0aWFs
aXphdGlvbkRhdGEpXSkKKyAgICAgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0U3BlY2lmaWVyRm9yVHJhY2tJRChrZXlTcGVjaWZpZXIuaW5pdGlhbGl6YXRpb25EYXRhLCB0
cmFja0lEKTsKK30KKyNlbmRpZgorCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMz
NCwxMCArMzUwLDE0IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAKIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRChOU0RhdGEqIG5zSW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpCiB7
Ci0gICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShuc0luaXREYXRhLmxlbmd0
aCk7Ci0gICAgW25zSW5pdERhdGEgZ2V0Qnl0ZXM6aW5pdERhdGEtPmRhdGEoKSBsZW5ndGg6aW5p
dERhdGEtPmxlbmd0aCgpXTsKKyAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0lu
aXREYXRhKSwgdHJhY2tJRCk7Cit9CiAKLSAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhXVEZNb3ZlKGluaXREYXRhKSwg
dHJhY2tJRCk7Cit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoTlNEYXRhKiBuc0luaXREYXRhLCB1aW50
NjRfdCB0cmFja0lEKQoreworICAgIG1fY2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2soW3RoaXMs
IHN0cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9LCBuc0luaXREYXRhID0gcmV0YWluUHRyKG5zSW5p
dERhdGEpLCB0cmFja0lEXSB7CisgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SWRlbnRpZmllckZvclRyYWNrSURDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0luaXRE
YXRhLmdldCgpKSwgdHJhY2tJRCk7CisgICAgfSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDc1NGIxZTJl
ZWMwMmRmMzM5NWU1Y2RiNWMwN2Y4ZTg4YTkzNWNkMDguLjM3NmE2ZmMxNDM4MTFlZWI4NTY3YmNi
MDhlN2RkZDNiMWZmMTNjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC05NSw3ICs5Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyTWVkaWFT
b3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CiAKICAgICB2b2lkIHdpbGxQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHVpbnQ2NF90
IHRyYWNrSUQpOwotICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4mJiwgdWludDY0X3QgdHJhY2tJRCwg
Qm94PEJpbmFyeVNlbWFwaG9yZT4pOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1aW50
NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CisKKyAgICB2b2lkIGRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEKFJlZjxTaGFyZWRCdWZmZXI+
JiYsIHVpbnQ2NF90IHRyYWNrSUQpOwogCiAgICAgYm9vbCBoYXNTZWxlY3RlZFZpZGVvKCkgY29u
c3Q7CiAKQEAgLTEzMiw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBidWZmZXJXYXNDb25z
dW1lZCgpOwogICAgIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIFVp
bnQ4QXJyYXkqIGluaXREYXRhKCkgeyByZXR1cm4gbV9pbml0RGF0YS5nZXQoKTsgfQorICAgIFNo
YXJlZEJ1ZmZlciogaW5pdERhdGEoKSB7IHJldHVybiBtX2luaXREYXRhLmdldCgpOyB9CiAjZW5k
aWYKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMTUwLDcgKzE1Myw3IEBAIHByaXZh
dGU6CiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwogICAgIHZvaWQgZGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOwogICAgIHZvaWQgZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QpOwotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJh
Y2tJZChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRl
cwogICAgIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwpAQCAtMTc0LDYg
KzE3Nyw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25z
dCBmaW5hbDsKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbDsKIAorICAgIHZv
aWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmLCB1aW50NjRfdCB0cmFj
a0lEKTsKICAgICB2b2lkIGRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJh
Y2tJRCk7CiAgICAgdm9pZCBhcHBlbmRDb21wbGV0ZWQoKTsKICAgICB2b2lkIGRlc3Ryb3lTdHJl
YW1EYXRhUGFyc2VyKCk7CkBAIC0xODYsNiArMTkwLDEyIEBAIHByaXZhdGU6CiAgICAgQUxMT1df
TkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyogcGxheWVyKCkgY29uc3Q7CisgICAgYm9vbCBjYW5FbnF1ZXVlU2FtcGxl
KHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IE1lZGlhU2FtcGxlQVZGT2JqQyYpOworICAgIGJvb2wg
dHJhY2tJc0Jsb2NrZWQodWludDY0X3QgdHJhY2spIGNvbnN0OworCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIHZvaWQga2V5U3Rh
dHVzZXNDaGFuZ2VkKCk7CisjZW5kaWYKIAogICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGU+PiBtX3ZpZGVvVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZh
dGU+PiBtX2F1ZGlvVHJhY2tzOwpAQCAtMTk3LDcgKzIwNyw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3Byb2Nlc3NpbmdJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9oYXNQZW5kaW5nQXBwZW5kQ29tcGxldGVkQ2FsbGJhY2sgeyBmYWxzZSB9OwogICAgIFZlY3Rv
cjxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUcmFja0NoYW5nZUNhbGxiYWNrczsKLSAgICBW
ZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZWY8TWVkaWFTYW1wbGU+Pj4gbV9tZWRpYVNhbXBs
ZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4+PiBtX21lZGlhU2FtcGxlczsKKyAgICBEZXF1ZTxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxN
ZWRpYVNhbXBsZUFWRk9iakM+Pj4gbV9ibG9ja2VkU2FtcGxlczsKIAogICAgIFJldGFpblB0cjxB
VlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9kaXNwbGF5TGF5ZXI7CiAgICAgQUxMT1dfTkVX
X0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgpAQCAtMjE1LDEzICsyMjYsMjcgQEAgcHJpdmF0ZToK
IAogICAgIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIG1fbWVkaWFTb3VyY2U7CiAgICAgYm9v
bCBtX2lzQWN0aXZlIHsgZmFsc2UgfTsKKwogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQotICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2luaXREYXRhOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1faW5pdERhdGE7CiAgICAgV2Vha1B0cjxDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDPiBtX3Nlc3Npb24geyBudWxscHRyIH07CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgdXNpbmcgS2V5SURz
ID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgc3RydWN0IFRyYWNr
SW5pdERhdGEgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YTsKKyAgICAg
ICAgS2V5SURzIGtleUlEczsKKyAgICB9OworICAgIHVzaW5nIFRyYWNrSW5pdERhdGFNYXAgPSBI
YXNoTWFwPHVpbnQ2NF90LCBUcmFja0luaXREYXRhPjsKKyAgICBUcmFja0luaXREYXRhTWFwIG1f
cGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXA7CisgICAgVHJhY2tJbml0RGF0YU1hcCBt
X3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXA7CisKKyAgICB1c2luZyBUcmFja0tleUlEc01hcCA9
IEhhc2hNYXA8dWludDY0X3QsIEtleUlEcz47CisgICAgVHJhY2tLZXlJRHNNYXAgbV9jdXJyZW50
VHJhY2tJRHM7CisKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM+IG1fY2RtSW5zdGFuY2U7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gbV9rZXlJRHM7CisgICAgVW5pcXVlUmVmPE9ic2VydmVyPHZvaWQoKT4+IG1fa2V5U3RhdHVz
ZXNDaGFuZ2VkT2JzZXJ2ZXI7CisgICAgS2V5SURzIG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlNjFhM2E3
ZmNjOTYzNzk4ZjY4OThjMDEyN2JkNzRiYjMzMGJmN2ExLi5mM2Q0MjQ1YmUxNDAwOGYwNWM2Yjk5
ZDk2OWZmNGNmZDBlYzc3NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNzYsNiArNzYsMTIgQEAgLSAodm9pZCll
eHBlY3RNaW5pbXVtVXBjb21pbmdTYW1wbGVCdWZmZXJQcmVzZW50YXRpb25UaW1lOiAoQ01UaW1l
KW1pbmltdW1VcGNvbWkKIC0gKHZvaWQpcmVzZXRVcGNvbWluZ1NhbXBsZUJ1ZmZlclByZXNlbnRh
dGlvblRpbWVFeHBlY3RhdGlvbnM7CiBAZW5kCiAKK0BpbnRlcmZhY2UgQVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgKFdlYkNvcmVTYW1wbGVCdWZmZXJLZXlTZXNzaW9uKSA8QVZDb250ZW50S2V5
UmVjaXBpZW50PgorQGVuZAorCitAaW50ZXJmYWNlIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJl
ciAoV2ViQ29yZVNhbXBsZUJ1ZmZlcktleVNlc3Npb24pIDxBVkNvbnRlbnRLZXlSZWNpcGllbnQ+
CitAZW5kCisKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZTdHJlYW1TZXNzaW9uCiAK
QEAgLTI3NSw2ICsyODEsMjQgQEAgc3RhdGljIHVpbnQ2NF90IG5leHRNYXBJRCgpCiAgICAgcmV0
dXJuICsrbWFwSUQ7CiB9CiAKK3N0YXRpYyBib29sIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBv
cnRLZXlTZXNzaW9uKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0cyA9IGZhbHNlOworICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9u
Y2VUb2tlbiwgWyZdIHsKKyAgICAgICAgc3VwcG9ydHMgPSBbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZl
ckF1ZGlvUmVuZGVyZXJDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woQVZDb250
ZW50S2V5UmVjaXBpZW50KV0KKyAgICAgICAgICAgICYmIFtQQUw6OmdldEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyQ2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKEFWQ29udGVu
dEtleVJlY2lwaWVudCldOworICAgIH0pOworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworc3Rh
dGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGNvcHlLZXlJRHMoY29uc3Qg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzKQoreworICAgIHJldHVy
biBrZXlJRHMubWFwKFtdIChhdXRvJiBrZXlJRCkgeworICAgICAgICByZXR1cm4ga2V5SUQuY29w
eVJlZigpOworICAgIH0pOworfQorCiBzdGF0aWMgdm9pZCBidWZmZXJXYXNDb25zdW1lZENhbGxi
YWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkKiBsaXN0ZW5lciwgQ0ZTdHJp
bmdSZWYgbm90aWZpY2F0aW9uTmFtZSwgY29uc3Qgdm9pZCosIENGVHlwZVJlZikKIHsKICAgICBp
ZiAoIUNGRXF1YWwoUEFMOjprQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZm
ZXJDb25zdW1lZCwgbm90aWZpY2F0aW9uTmFtZSkpCkBAIC0zMDcsNiArMzMxLDkgQEAgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMKICAgICAsIG1fZXJyb3JMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZT
YW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVudDoqdGhpc10pKQog
ICAgICwgbV9hcHBlbmRRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMgZGF0YSBwYXJzZXIgcXVldWUiKSkKICAgICAsIG1fbWVkaWFTb3VyY2UocGFyZW50
KQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lP
TikKKyAgICAsIG1fa2V5U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2ZXIobWFrZVVuaXF1ZVJlZjxPYnNl
cnZlcjx2b2lkKCk+PihbdGhpc10geyBrZXlTdGF0dXNlc0NoYW5nZWQoKTsgfSkpCisjZW5kaWYK
ICAgICAsIG1fbWFwSUQobmV4dE1hcElEKCkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgLCBtX2xvZ2dlcihwYXJlbnQtPmxvZ2dlcigpKQpAQCAtMzY0LDYgKzM5MSw5IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKElu
aXRpYWxpemF0aW9uU2VnbWVuCiAKICAgICBjbGVhclRyYWNrcygpOwogCisgICAgbV9wcm90ZWN0
ZWRUcmFja0luaXREYXRhTWFwLnN3YXAobV9wZW5kaW5nUHJvdGVjdGVkVHJhY2tJbml0RGF0YU1h
cCk7CisgICAgbV9wZW5kaW5nUHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcC5jbGVhcigpOworCiAg
ICAgZm9yIChhdXRvIHZpZGVvVHJhY2tJbmZvIDogc2VnbWVudC52aWRlb1RyYWNrcykgewogICAg
ICAgICB2aWRlb1RyYWNrSW5mby50cmFjay0+c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soW3dl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRoaXNdIChWaWRlb1RyYWNrUHJpdmF0ZSYgdHJh
Y2ssIGJvb2wgc2VsZWN0ZWQpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC00NTgs
MTAgKzQ4OCwxNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50
ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCBjb2RlKQogICAgIG1fcGFyc2luZ1N1Y2NlZWRl
ZCA9IGZhbHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92
aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVp
bnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlh
U2FtcGxlQVZGT2JqQz4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3Ry
aW5nJiBtZWRpYVR5cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1lZGlhVHlwZSk7CiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAg
YXV0byBmaW5kUmVzdWx0ID0gbV9wcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwLmZpbmQodHJhY2tJ
ZCk7CisgICAgaWYgKGZpbmRSZXN1bHQgIT0gbV9wcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwLmVu
ZCgpKQorICAgICAgICBtZWRpYVNhbXBsZS0+c2V0S2V5SURzKGNvcHlLZXlJRHMoZmluZFJlc3Vs
dC0+dmFsdWUua2V5SURzKSk7CisjZW5kaWYKKwogICAgIGlmIChtX3Byb2Nlc3NpbmdJbml0aWFs
aXphdGlvblNlZ21lbnQpIHsKICAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlh
U2FtcGxlLmdldCgpKTsKICAgICAgICAgbV9tZWRpYVNhbXBsZXMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHRyYWNrSWQsIFdURk1vdmUobWVkaWFTYW1wbGUpKSk7CkBAIC01MDgsNyArNTQ0LDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUYKICNlbmRpZgogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhLCB1aW50NjRfdCB0cmFja0lE
LCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlKQordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCB1aW50NjRf
dCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlKQogewog
ICAgIGF1dG8gcGxheWVyID0gdGhpcy0+cGxheWVyKCk7CiAgICAgaWYgKCFwbGF5ZXIpCkBAIC01
MTksMTEgKzU1NSwxNSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogCiAgICAgbV9wcm90ZWN0
ZWRUcmFja0lEID0gdHJhY2tJRDsKICAgICBtX2luaXREYXRhID0gV1RGTW92ZShpbml0RGF0YSk7
Ci0gICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVlZGVkKHRoaXMsIG1faW5pdERh
dGEuZ2V0KCkpOworICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJjZUJ1ZmZlcktleU5lZWRlZCh0aGlz
LCAqbV9pbml0RGF0YSk7CisKICAgICBpZiAoYXV0byBzZXNzaW9uID0gcGxheWVyLT5jZG1TZXNz
aW9uKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNl
cigpKQorICAgICAgICBpZiAoc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24o
KSkgeworICAgICAgICAgICAgLy8gbm8tb3AuCisgICAgICAgIH0gZWxzZSBpZiAoYXV0byBwYXJz
ZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCiAgICAgICAgICAgICBzZXNzaW9uLT5hZGRQ
YXJzZXIocGFyc2VyKTsKLSAgICAgICAgaGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7Cisg
ICAgICAgIGlmIChoYXNTZXNzaW9uU2VtYXBob3JlKQorICAgICAgICAgICAgaGFzU2Vzc2lvblNl
bWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTUz
MywxNCArNTczLDE3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgbV9oYXNTZXNzaW9u
U2VtYXBob3JlID0gaGFzU2Vzc2lvblNlbWFwaG9yZTsKICAgICAKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCi0gICAgYXV0byBpbml0RGF0
YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faW5pdERhdGEtPmRhdGEoKSwgbV9pbml0
RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKLSAgICBhdXRvIGtleUlEcyA9IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoaW5pdERhdGFCdWZmZXIpOworICAgIGF1dG8g
a2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZigq
bV9pbml0RGF0YSk7CiAgICAgaWYgKCFrZXlJRHMpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1f
cGVuZGluZ1Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuc2V0KHRyYWNrSUQsIFRyYWNrSW5pdERh
dGEgeyBtX2luaXREYXRhLmNvcHlSZWYoKSwgKmtleUlEcyB9KTsKKwogICAgIGlmIChtX2NkbUlu
c3RhbmNlKSB7CiAgICAgICAgIGlmIChhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFu
Y2UtPnNlc3Npb25Gb3JLZXlJRHMoa2V5SURzLnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCisgICAgICAgICAgICBpZiAo
c2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSkgeworICAgICAgICAgICAg
ICAgIC8vIG5vLW9wLgorICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvIHBhcnNlciA9IHRoaXMt
PnN0cmVhbURhdGFQYXJzZXIoKSkKICAgICAgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5j
b250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICAg
ICAgICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsKICAgICAgICAgICAgICAgICBtX2hh
c1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwpAQCAtNTUyLDcgKzU5NSw3IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvCiAgICAgfQogCiAgICAgbV9rZXlJRHMgPSBXVEZNb3ZlKGtleUlEcy52
YWx1ZSgpKTsKLSAgICBwbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKCJzaW5m
IiwgaW5pdERhdGFCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOworICAgIHBsYXllci0+
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoInNpbmYiLCBtX2luaXREYXRhLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpKTsKIAogICAgIG1fd2FpdGluZ0ZvcktleSA9IHRydWU7CiAgICAgcGxh
eWVyLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwpAQCAtNTg3LDcgKzYzMCw3IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiAgICAgICAgIHdlYWtUaGlzLT5kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoZXJyb3JD
b2RlKTsKICAgICB9KTsKIAotICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2Fs
bGJhY2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0Q2FsbGVkID0gbV9hYm9y
dENhbGxlZF0gKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSWQsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVNZWRp
YURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRDYWxsZWQg
PSBtX2Fib3J0Q2FsbGVkXSAoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2
NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgYWJvcnRDYWxsZWQgIT0g
d2Vha1RoaXMtPm1fYWJvcnRDYWxsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02MTYsNyAr
NjU5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgbV9wYXJzZXItPnNl
dERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURD
YWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRTZW1hcGhvcmUgPSBt
X2Fib3J0U2VtYXBob3JlLCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdKFJlZjxVaW50OEFy
cmF5PiYmIGluaXREYXRhLCB1aW50NjRfdCB0cmFja0lEKSBtdXRhYmxlIHsKKyAgICBtX3BhcnNl
ci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBhYm9ydFNlbWFwaG9y
ZSA9IG1fYWJvcnRTZW1hcGhvcmUsIGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0oUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkgbXV0YWJsZSB7CiAgICAg
ICAgIC8vIENhbGxlZCBvbiB0aGUgZGF0YSBwYXJzZXIgcXVldWUuCiAgICAgICAgIEJveDxCaW5h
cnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6
Y3JlYXRlKCk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIGFib3J0Q2FsbGVkLCBpbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpLCB0cmFj
a0lELCBoYXNTZXNzaW9uU2VtYXBob3JlXSAoKSBtdXRhYmxlIHsKQEAgLTYzNiw2ICs2NzksMTMg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKICAgICAgICAgfQogICAgIH0pOwogCisgICAgbV9wYXJzZXItPnNldERpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2soW3dlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGFib3J0Q2FsbGVkID0gbV9hYm9ydENhbGxlZF0gKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpIHsKKyAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBhYm9ydENh
bGxlZCAhPSB3ZWFrVGhpcy0+bV9hYm9ydENhbGxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQoV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIG51bGxwdHIpOworICAg
IH0pOworCiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gdHJ1ZTsKIAogICAgIG1fYXBwZW5kUXVl
dWUtPmRpc3BhdGNoKFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2FwcGVuZFdl
YWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwgYWJvcnRD
YWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSgpIG11dGFibGUgewpAQCAtNzM2LDYgKzc4NiwxMSBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKCkKICAgICAg
ICAgW3JlbmRlcmVyIGZsdXNoXTsKICAgICAgICAgW3JlbmRlcmVyIHN0b3BSZXF1ZXN0aW5nTWVk
aWFEYXRhXTsKICAgICAgICAgW21fZXJyb3JMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6
cmVuZGVyZXIuZ2V0KCldOworCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShB
VkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVC
dWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5z
dGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDpyZW5k
ZXJlci5nZXQoKV07CisjZW5kaWYKICAgICB9CiAKICAgICBbbV9lcnJvckxpc3RlbmVyIGludmFs
aWRhdGVdOwpAQCAtODQzLDYgKzg5OCwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrLAogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICAgICAgaWYgKG1fY2Rt
SW5zdGFuY2UgJiYgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSkKKyAg
ICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRL
ZXlSZWNpcGllbnQ6cmVuZGVyZXIuZ2V0KCldOworI2VuZGlmCisKICAgICAgICAgICAgIFdlYWtQ
dHIgd2Vha1RoaXMgeyAqdGhpcyB9OwogICAgICAgICAgICAgW3JlbmRlcmVyIHJlcXVlc3RNZWRp
YURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9j
azpeewogICAgICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKQEAgLTkwOSw3ICs5NjksMjQgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0Q0RNSW5zdGFuY2UoQ0RNSW5zdGFu
Y2UqIGluc3RhbmNlKQogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAorICAgIGlm
IChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpICYmIG1fY2RtSW5zdGFu
Y2UpIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUxheWVyKQorICAgICAgICAgICAgW21fY2RtSW5z
dGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDptX2Rp
c3BsYXlMYXllci5nZXQoKV07CisKKyAgICAgICAgZm9yIChhdXRvJiBhdWRpb1JlbmRlcmVyIDog
bV9hdWRpb1JlbmRlcmVycy52YWx1ZXMoKSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5j
b250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6YXVkaW9SZW5kZXJl
ci5nZXQoKV07CisgICAgfQorCiAgICAgbV9jZG1JbnN0YW5jZSA9IGZwc0luc3RhbmNlOworCisg
ICAgaWYgKHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkgJiYgbV9jZG1J
bnN0YW5jZSkgeworICAgICAgICBpZiAobV9kaXNwbGF5TGF5ZXIpCisgICAgICAgICAgICBbbV9j
ZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1f
ZGlzcGxheUxheWVyLmdldCgpXTsKKworICAgICAgICBmb3IgKGF1dG8mIGF1ZGlvUmVuZGVyZXIg
OiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2Ut
PmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDphdWRpb1JlbmRlcmVy
LmdldCgpXTsKKyAgICB9CisKICAgICBhdHRlbXB0VG9EZWNyeXB0KCk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShpbnN0YW5jZSk7CkBAIC05MjYsOCArMTAwMywxMCBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0KCkKICAgICBpZiAoIWluc3RhbmNl
U2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+
c3RyZWFtRGF0YVBhcnNlcigpKQotICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5
U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKKyAgICBpZiAoIXNhbXBs
ZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpIHsKKyAgICAgICAgaWYgKGF1dG8g
cGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQorICAgICAgICAgICAgW2luc3RhbmNl
U2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnBhcnNl
cl07CisgICAgfQogICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsKICAgICAgICAgbV9o
YXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBo
b3JlID0gbnVsbHB0cjsKQEAgLTExMDUsMTkgKzExODQsODkgQEAgQUxMT1dfTkVXX0FQSV9XSVRI
T1VUX0dVQVJEU19FTkQKICAgICAgICAgcGxheWVyLT5zZXRIYXNBdmFpbGFibGVBdWRpb1NhbXBs
ZShyZW5kZXJlciwgZmFsc2UpOwogfQogCitib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojp0cmFja0lzQmxvY2tlZCh1aW50NjRfdCB0cmFja0lEKSBjb25zdAoreworICAgIGZvciAoYXV0
byYgc2FtcGxlUGFpciA6IG1fYmxvY2tlZFNhbXBsZXMpIHsKKyAgICAgICAgaWYgKHNhbXBsZVBh
aXIuZmlyc3QgPT0gdHJhY2tJRCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZF
KEFWQ09OVEVOVEtFWVNFU1NJT04pCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpr
ZXlTdGF0dXNlc0NoYW5nZWQoKQoreworICAgIHdoaWxlICghbV9ibG9ja2VkU2FtcGxlcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYXV0byYgZmlyc3RQYWlyID0gbV9ibG9ja2VkU2FtcGxlcy5maXJz
dCgpOworCisgICAgICAgIC8vIElmIHdlIHN0aWxsIGNhbid0IGVucXVldWUgdGhlIHNhbXBsZSwg
YmFpbC4KKyAgICAgICAgaWYgKCFjYW5FbnF1ZXVlU2FtcGxlKGZpcnN0UGFpci5maXJzdCwgZmly
c3RQYWlyLnNlY29uZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBmaXJz
dFBhaXJUYWtlbiA9IG1fYmxvY2tlZFNhbXBsZXMudGFrZUZpcnN0KCk7CisgICAgICAgIGVucXVl
dWVTYW1wbGUoV1RGTW92ZShmaXJzdFBhaXJUYWtlbi5zZWNvbmQpLCBmaXJzdFBhaXJUYWtlbi5m
aXJzdCk7CisgICAgfQorfQorI2VuZGlmCisKK2Jvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmNhbkVucXVldWVTYW1wbGUodWludDY0X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFTYW1wbGVB
VkZPYmpDJiBzYW1wbGUpCit7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShB
VkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIC8vIElmIHNhbXBsZSBidWZmZXJzIGRvbid0IHN1cHBv
cnQgQVZDb250ZW50S2V5U2Vzc2lvbjogZW5xdWV1ZSBzYW1wbGUKKyAgICBpZiAoIXNhbXBsZUJ1
ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gaWYgc2FtcGxlIGlzIHVuZW5jcnl0cGVkOiBlbnF1ZXVlIHNhbXBsZQorICAgIGlm
IChzYW1wbGUua2V5SURzKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIGlmIHNhbXBsZSBpcyBlbmNyeXB0ZWQsIGJ1dCB3ZSBhcmUgbm90IGF0dGFjaGVkIHRvIGEg
Q0RNOiBkbyBub3QgZW5xdWV1ZSBzYW1wbGUuCisgICAgaWYgKCFtX2NkbUluc3RhbmNlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBpZiBzYW1wbGUgaXMgZW5jcnlwdGVkLCBhbmQg
a2V5SURzIG1hdGNoIHRoZSBjdXJyZW50IHNldCBvZiBrZXlJRHM6IGVucXVldWUgc2FtcGxlLgor
ICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fY3VycmVudFRyYWNrSURzLmZpbmQodHJhY2tJRCk7Cisg
ICAgaWYgKGZpbmRSZXN1bHQgIT0gbV9jdXJyZW50VHJhY2tJRHMuZW5kKCkgJiYgZmluZFJlc3Vs
dC0+dmFsdWUgPT0gc2FtcGxlLmtleUlEcygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIGlmIHNhbXBsZSdzIHNldCBvZiBrZXlJRHMgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQg
c2V0IG9mIGtleUlEcywgY29uc3VsdCB3aXRoIHRoZSBDRE0KKyAgICAvLyB0byBkZXRlcm1pbmUg
aWYgdGhlIGtleUlEcyBhcmUgdXNhYmxlOyBpZiBzbywgdXBkYXRlIHRoZSBjdXJyZW50IHNldCBv
ZiBrZXlJRHMgYW5kIGVucXVldWUgc2FtcGxlLgorICAgIGlmIChtX2NkbUluc3RhbmNlLT5pc0Fu
eUtleVVzYWJsZShzYW1wbGUua2V5SURzKCkpKSB7CisgICAgICAgIG1fY3VycmVudFRyYWNrSURz
LnNldCh0cmFja0lELCBzYW1wbGUua2V5SURzKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgor
fQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKFJlZjxN
ZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSURTdHJpbmcpCiB7
CiAgICAgYXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWlu
dDY0X3Q+KHRyYWNrSURTdHJpbmcpLnZhbHVlX29yKDApOwogICAgIGlmICh0cmFja0lEICE9IG1f
ZW5hYmxlZFZpZGVvVHJhY2tJRCAmJiAhbV9hdWRpb1JlbmRlcmVycy5jb250YWlucyh0cmFja0lE
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUg
PSBzYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCk7Ci0gICAgaWYgKHBsYXRmb3JtU2FtcGxlLnR5cGUg
IT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSkKKyAgICBBU1NFUlQoaXM8TWVk
aWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKTsKKyAgICBpZiAoIWlzPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4oc2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4gc2FtcGxlQVZGT2JqQyA9IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxNZWRpYVNhbXBsZUFWRk9i
akM+KFdURk1vdmUoc2FtcGxlKSk7CisgICAgaWYgKCFzYW1wbGVBVkZPYmpDLT5rZXlJRHMoKS5p
c0VtcHR5KCkgJiYgIWNhbkVucXVldWVTYW1wbGUodHJhY2tJRCwgc2FtcGxlQVZGT2JqQykpIHsK
KyAgICAgICAgbV9ibG9ja2VkU2FtcGxlcy5hcHBlbmQoeyB0cmFja0lELCBXVEZNb3ZlKHNhbXBs
ZUFWRk9iakMpIH0pOwogICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgZW5xdWV1ZVNhbXBs
ZShXVEZNb3ZlKHNhbXBsZUFWRk9iakMpLCB0cmFja0lEKTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYm
IHNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCkKK3sKICAgICBhdXRvIGxvZ1NpdGVJZGVudGlmaWVy
ID0gTE9HSURFTlRJRklFUjsKICAgICBERUJVR19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJ0cmFj
ayBJRCA9ICIsIHRyYWNrSUQsICIsIHNhbXBsZSA9ICIsIHNhbXBsZS5nZXQoKSk7CiAKKyAgICBQ
bGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKTsK
KwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBQQUw6OkNN
U2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24ocGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNt
U2FtcGxlQnVmZmVyKTsKICAgICBBU1NFUlQoZm9ybWF0RGVzY3JpcHRpb24pOwogICAgIGlmICgh
Zm9ybWF0RGVzY3JpcHRpb24pIHsKQEAgLTEyODQsNiArMTQzMyw5IEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3Qg
dHJhY2tJRCkKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICh0cmFja0lzQmxv
Y2tlZCh0cmFja0lEKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgcHJvdmlkZU1lZGlhRGF0YShB
dG9tU3RyaW5nOjpudW1iZXIodHJhY2tJRCkpOwogfQogCkBAIC0xMzc1LDExICsxNTI3LDIxIEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5ZXIoQVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIqIGxheWVyCiAgICAgICAgIFttX2Rpc3BsYXlMYXllciBmbHVzaF07
CiAgICAgICAgIFttX2Rpc3BsYXlMYXllciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CiAgICAg
ICAgIFttX2Vycm9yTGlzdGVuZXIgc3RvcE9ic2VydmluZ0xheWVyOm1fZGlzcGxheUxheWVyLmdl
dCgpXTsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZ
U0VTU0lPTikKKyAgICAgICAgaWYgKG1fY2RtSW5zdGFuY2UgJiYgc2FtcGxlQnVmZmVyUmVuZGVy
ZXJzU3VwcG9ydEtleVNlc3Npb24oKSkKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250
ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9kaXNwbGF5TGF5ZXIu
Z2V0KCldOworI2VuZGlmCiAgICAgfQogCiAgICAgbV9kaXNwbGF5TGF5ZXIgPSBsYXllcjsKIAog
ICAgIGlmIChtX2Rpc3BsYXlMYXllcikgeworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYm
IEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICAgICAgaWYgKG1fY2RtSW5zdGFuY2UgJiYg
c2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKSkKKyAgICAgICAgICAgIFtt
X2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6
bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworI2VuZGlmCisKICAgICAgICAgV2Vha1B0ciB3ZWFrVGhp
cyB7ICp0aGlzIH07CiAgICAgICAgIFttX2Rpc3BsYXlMYXllciByZXF1ZXN0TWVkaWFEYXRhV2hl
blJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XiB7CiAg
ICAgICAgICAgICBpZiAod2Vha1RoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDUyMGI1
MjA3ZmMyNzFkNzk4MTUzM2ZiMTRkMjMxNTU5NGE4ODgzNjUuLmZjMmJhYjkwN2Q5ODM1M2QxZjhh
YWQ2OTRmOWU1NTJhNGMyOWZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC00NCw3ICs0
NCw3IEBAIGNsYXNzIExvZ2dlcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVu
dFR5cGU7Ci1jbGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIE1lZGlhU2FtcGxlQVZGT2JqQzsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFy
c2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewpA
QCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWxsIGJlIGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdXNpbmcgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxi
YWNrID0gRnVuY3Rpb248dm9pZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQs
IGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CisgICAgdXNpbmcgRGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmLCB1aW50
NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk+OwogICAgIHZvaWQgc2V0RGlk
UHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayYmIGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsKQEAgLTEzNywxMiArMTM3LDE5IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICAvLyBXaWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5IG9uIHRoZSBwYXJzZXIgdGhlYWQu
Ci0gICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8VWludDhBcnJheT4mJiwgdWlu
dDY0X3QgdHJhY2tJRCk+OworICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJhY2tJRCk+OwogICAgIHZvaWQgc2V0RGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKERp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKTsKICAgICB9CiAKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
CisgICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNr
SURDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0X3Qg
dHJhY2tJRCk+OworICAgIHZvaWQgc2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRp
ZmllckZvclRyYWNrSURDYWxsYmFjayhEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlm
aWVyRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBtX2RpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBTb3VyY2VCdWZmZXJQYXJz
ZXIoKTsKIApAQCAtMTUyLDYgKzE1OSw3IEBAIHByb3RlY3RlZDoKICAgICBEaWRQcm92aWRlTWVk
aWFEYXRhQ2FsbGJhY2sgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2s7CiAgICAgV2lsbFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFj
ayBtX3dpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2s7CiAgICAgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOworICAgIERpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2sgbV9kaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAwNWE4MzE2ZGMyN2U2MzAxN2YzOTdmMTky
NDY5YjgyYTMzYjdiMDM0Li5hZTE2NDE0ZjIxYzY4NDZjMTg5NzcwOWUxNDI0ZTRhNmE0Yjc2MWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMTAzMiw3ICsxMDMyLDcg
QEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVt
ZW50TWV0YWRhdGEmLCBjb25zdCBUcmFja0UKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAgICAgYXV0byYga2V5SWQgPSBrZXlJZEVsZW1lbnQudmFsdWUoKTsKLSAgICAgICAg
ICAgIG1fa2V5SWRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih0cmFja0VudHJ5LnRyYWNrX3VpZC52
YWx1ZSgpLCBVaW50OEFycmF5OjpjcmVhdGUoa2V5SWQuZGF0YSgpLCBrZXlJZC5zaXplKCkpKSk7
CisgICAgICAgICAgICBtX2tleUlkcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tFbnRyeS50
cmFja191aWQudmFsdWUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoa2V5SWQuZGF0YSgpLCBrZXlJ
ZC5zaXplKCkpKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uaAppbmRleCAyOGU3M2ZiYTUwMjNjODE2YmZiMjQyYzVmOTkwZGI5N2ExOGJjMWZmLi5lODc2
YWI0MTRhNGFiYjMzZDUxOGMzN2I0MWZlNWExNDc3NmFiNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5oCkBAIC0yNjksNyArMjY5LDcgQEAgcHJpdmF0ZToKICAgICB3ZWJtOjpTdGF0
dXMgT25GcmFtZShjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwgd2VibTo6UmVhZGVyKiwgdWlu
dDY0X3QqIGJ5dGVzUmVtYWluaW5nKSBmaW5hbDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbml0
aWFsaXphdGlvblNlZ21lbnQ+IG1faW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8dWludDY0X3QsIFJlZjxVaW50OEFycmF5Pj4+IG1fa2V5SWRzOworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9rZXlJZHM7CiAgICAg
d2VibTo6U3RhdHVzIG1fc3RhdHVzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJtOjpXZWJtUGFy
c2VyPiBtX3BhcnNlcjsKICAgICBib29sIG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVy
ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCAzYjVh
NjlhYTc2YTZhYWYxN2E1NjE3NmMxZmIyMzlhNGY5MTBiMGJiLi5mZjhjMWE4YjQ4MWQ3ZjMzY2My
NDdiNjRkZjFiOGZhYzcwY2JkZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIu
aApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVO
b25EaXNwbGF5aW5nQ29weSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNhbXBsZUZsYWdzIGZsYWdz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIFBsYXRmb3JtU2FtcGxl
IHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5
cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1T
YW1wbGU6OkdTdHJlYW1lclNhbXBsZVR5cGU7IH0KICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5n
ZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEpT
Qzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggNGFjNjlhY2Q5YTAwY2Y2
ZTE5OWEzM2FhYzQ3M2Q4Y2Q4NWRjNWU1Zi4uMGE5NGFjZjFhMWUxMzY2ZjZhNTcyNTg4Yjc3MDQx
ZTRjM2M2NDczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAg
LTYxLDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3Mo
KSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtU2FtcGxlOjpNb2NrU2FtcGxlQm94
VHlwZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0
aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5k
ZXggNDJhMzIwNjU0YjAzZGY5YjQzOTc3Nzk0MjU2NDU4MjAwNmNkYTExMC4uNzExY2VkMGJmMTMx
NDI1OTE3NzVmZmQ3OTNhZTVhODZjNmFlMGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNjk4
LDExICs2OTgsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFMKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRl
ZChVaW50OEFycmF5KiBtZXNzYWdlKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRp
YVBsYXllcktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2VSZWZlcmVuY2U7Ci0gICAgaWYgKG1lc3NhZ2UpCi0gICAg
ICAgIG1lc3NhZ2VSZWZlcmVuY2UgPSB7IG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+Ynl0ZUxl
bmd0aCgpIH07CisgICAgbWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVzc2FnZS5kYXRhKCksIG1lc3Nh
Z2Uuc2l6ZSgpIH07CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllcktleU5lZWRlZChXVEZNb3ZlKG1l
c3NhZ2VSZWZlcmVuY2UpKSwgbV9pZCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDkz
MTZiNjZhYjM1OTY2ZTViNjQ1ZGQxYzdjZTBlODEyZjIwNmE2MzcuLjU5NWM1ODkxOWVhMTNmZWI5
NWQ4ZmMwZDBiNDMyMzA2OGE4MmEwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMjQ5LDcgKzI0OSw3
IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3Ry
aW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFy
cmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHAKaW5kZXggNzc0Y2NmMzFmMjY3N2QwYTA1MjE3NjUxYjNiNGUxMzIzNWM0
YzI5NC4uZjg5NTdiM2I4ZTQxODYyM2IzYjU2YzAxMjE1NzAwNWJkY2Y2Mjg5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBNZWRpYUZv
cm1hdFJlYWRlcjo6cGFyc2VCeXRlU291cmNlKFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VS
ZWY+JiYgYnl0ZVMKICAgICAgICAgZGlkUGFyc2VUcmFja3MoeyB9LCBlcnJvckNvZGUpOwogICAg
IH0pOwogCi0gICAgcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFT
YW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7CisgICAg
cGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9XShSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1lZGlhU2FtcGxl
LCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgewogICAgICAgICBk
aWRQcm92aWRlTWVkaWFEYXRhKFdURk1vdmUobWVkaWFTYW1wbGUpLCB0cmFja0lELCBtZWRpYVR5
cGUpOwogICAgIH0pOwogCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBNZWRpYUZvcm1hdFJlYWRl
cjo6ZGlkUGFyc2VUcmFja3MoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRp
b24KICAgICBtX2luaXQgPSB0cnVlOwogfQogCi12b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQ
cm92aWRlTWVkaWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3Qg
dHJhY2tJRCwgY29uc3QgU3RyaW5nJikKK3ZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3Zp
ZGVNZWRpYURhdGEoUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBtZWRpYVNhbXBsZSwgdWludDY0
X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3Ao
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKaW5kZXggNjUwOTNlOWU0NmI0MGI1YTM5
NzZmZGVmMjllNjEzYzY0NTFmMzE1YS4uMTVkNTU3MzYzMzgxNzQ2MGMyZTYyMDQ0MTkwMTAyM2Nm
ODZiNGE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAK
IERFQ0xBUkVfQ09SRV9NRURJQV9UUkFJVFMoRm9ybWF0UmVhZGVyKTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgTWVkaWFTYW1wbGVBVkZPYmpDOwogY2xhc3MgU291cmNlQnVmZmVyUGFy
c2VyOwogfQogCkBAIC02Nyw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRQYXJzZVRy
YWNrcyhXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNl
Z21lbnQmJiwgdWludDY0X3QgZXJyb3JDb2RlKTsKICAgICB2b2lkIGRpZFNlbGVjdFZpZGVvVHJh
Y2soV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGUmLCBib29sKSB7IH0KICAgICB2b2lkIGRpZEVu
YWJsZUF1ZGlvVHJhY2soV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGUmLCBib29sKSB7IH0KLSAg
ICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmLCB1
aW50NjRfdCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhKFJl
ZjxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoUmVmPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cj4mJik7CiAKICAgICAvLyBDTUJhc2VDbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFu
Z2UuaAppbmRleCBmODMzNmJmMDEzNzIxMDkwZGExOTM3OGZiNWE0NTNjOGRhY2E1NzZmLi5iNjZm
M2EzNWE5NmY3YjVkNWY5N2FiZDZlZGEwMDI2MTU4MjZlMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVCeXRlUmFuZ2UuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBBdG9tU3Ry
aW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxl
OjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6
OlBsYXRmb3JtU2FtcGxlOjpCeXRlUmFuZ2VTYW1wbGVUeXBlOyB9CiAgICAgdm9pZCBvZmZzZXRU
aW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBzZXRUaW1lc3Rh
bXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggOGQ5ZTVmZjkyYWMzYjNmMGViNzEzMzllZmU4YjRi
ZjNmNDI5NjRkYy4uNWM3MWEyNjhlMGQwYjQ2NzUwYjNiNjJmNWM3ZGNmNzcyZjJiMDY4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTE5MSw3ICsxMTkxLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjptZWRpYVBsYXllcktleU5lZWRlZChJUEM6OkRhdGFSZWZlcmVuY2UmJiBtZXNz
YWdlKQogewogICAgIGlmIChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCi0gICAgICAg
IHBsYXllci0+a2V5TmVlZGVkKFVpbnQ4QXJyYXk6OmNyZWF0ZShtZXNzYWdlLmRhdGEoKSwgbWVz
c2FnZS5zaXplKCkpLnB0cigpKTsKKyAgICAgICAgcGxheWVyLT5rZXlOZWVkZWQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobWVzc2FnZSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCmlu
ZGV4IDMxYTFhODQ1N2ViZjY4NTM2MThkNjhkNWVlOTUxMmVkNzRlZjFmZjcuLmIyNmJhYjVlZjdl
Yzc5ZmIyOGZkYWVkYjNlOGM0ZjMwYTU0NzllMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApAQCAt
MTAyLDYgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgp
IGNvbnN0IGZpbmFsOwogICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlh
U2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQuCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1T
YW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpQbGF0Zm9y
bVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBX
ZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBnZXRQaXhlbEJ1ZmZlcigpOwpAQCAtMTQ5LDkg
KzE1MCw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBSZW1vCiAKIH0KIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkpCi0gICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1
cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3Jt
U2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlOyB9CisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVk
aWFTYW1wbGUucGxhdGZvcm1TYW1wbGVUeXBlKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6
OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGU7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9GcmFtZSkKLSAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2Ft
cGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29y
ZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGU7IH0KKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7
IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZVR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0
Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMzUxZGM4M2FlODU0ZDg3YTQzOGQ5ZjU0ODVhNGZiODc5MWVmZGU4
MS4uMzI2MzFkZmQwZmE5NGVhZGY2NWM1NTQ4MTUxNGMxNTA2MDA0ZDJjMyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDIyLTAyLTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtD
b2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZp
ZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgQ2FybHNvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1w
bGVNYXAuY3BwOgorCiAyMDIyLTAyLTE0ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRG9uJ3QgcGVyZm9ybSBsYXlvdXQgaW4gV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZUZvclRlc3RpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggYzQ1YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRh
NDg2NjUxOS4uNWE2NTM1ODMwMTVkMjg4ZGVmNDdiY2I0NzkyYzI0YzhkMmY5YTdlZiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTcx
LDYgKzcxLDcgQEAgcHVibGljOgogICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNh
bXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHsgbnVs
bHB0ciB9IH07IH0KKyAgICBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6Tm9uZTsgfQogICAgIHN0ZDo6
b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452201</attachid>
            <date>2022-02-16 09:14:46 -0800</date>
            <delta_ts>2022-02-25 14:35:04 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236109-20220216091446.patch</filename>
            <type>text/plain</type>
            <size>77030</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExMDg0YzIwOTIxZWY0ZjMyMzdlNzAw
NTRiYjExNTMxMDY3MjhjMGYuLmZmY2MxMTgwYjYzZTkxMTY2ZWRlNzI5M2FhMjQ5NTljYmMxYmYx
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDItMDcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIyLTAyLTE2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5IGlzIG1pc3NpbmcgcmVm
ZXJlbmNlIGZpZWxkIGVuY29kZSwgZGVjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFjZWU0Zjk0MTBlNmY0
NWJkYmZhOTA0ZGViYjA1NWY5YmM5NGNkNy4uZWU3OWJlYTJkZDFjOWJlZmI1YTE3ZjFjMzEwY2Nl
OTQ4ZWM2MWEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMi0wMi0wMyAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkb3B0IC1z
dHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6
IGRlbGVnYXRlIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzYxMDkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgVGhlIGN1cnJlbnQgc2V0IG9mIGRlbGVnYXRlIGNhbGxiYWNrIG1ldGhvZHMgaGF2
ZSBhIHNpZ25pZmljYW50IHNob3J0Y29taW5nOiBjbGllbnRzIG11c3QKKyAgICAgICAgYXR0YWNo
IGFuIEFWQ29udGVudEtleVNlc3Npb24gdG8gdGhlIEFWU3RyZWFtRGF0YVBhcnNlciBiZWZvcmUg
cmV0dXJuaW5nIGZyb20gdGhlCisgICAgICAgIC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOiBjYWxsYmFjay4g
VGhpcworICAgICAgICBpcyBiZWNhdXNlIHRoZSBwYXJzZXIgaXRzZWxmIGF0dGFjaGVzIHRoZSBv
YmplY3QgcmVxdWlyZWQgdG8gZGVjcnlwdCBlYWNoIGVuY3J5cHRlZCBzYW1wbGUKKyAgICAgICAg
dG8gdGhlIHNhbXBsZSBpdHNlbGYgYXQgdGhlIHBhcnNpbmcgc3RhZ2UuIElmIGEgY2xpZW50IGRv
ZXMgbm90IGF0dGFjaCBhbgorICAgICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uIGJ5IHRoZSB0aW1l
IHRoYXQgbWV0aG9kIHJldHVybnMsIEFWU3RyZWFtRGF0YVBhcnNlciB3aWxsIGF0dGFjaCBvbmUg
b2YKKyAgICAgICAgaXRzIG93bi4KKworICAgICAgICBUaGUgd2ViLWZhY2luZyBiZWhhdmlvciB0
aGlzIGNhdXNlcyBpcyB0aGF0IE1TRSBhcHBlbmRzIHdpbGwgbm90IGNvbXBsZXRlIChieSBmaXJp
bmcKKyAgICAgICAgYW4gInVwZGF0ZWVuZCIgZXZlbnQpIGlmIGFuIGVuY3J5cHRlZCBzZWdtZW50
IGlzIHBhcnNlZCB1bnRpbCB0aGUgY2xpZW50IGNyZWF0ZXMgYW5kCisgICAgICAgIGF0dGFjaGVz
IGEgTWVkaWFLZXlzIG9iamVjdCB3aXRoIGEgdmFsaWQgc2Vzc2lvbi4KKworICAgICAgICBBIG5l
dyBkZWxlZ2F0ZSBjYWxsYmFjayBtZXRob2QsIC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVD
b250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6CisgICAgICAgIGFsbG93cyB1cyB0byB3b3Jr
IGFyb3VuZCB0aGlzIHByb2JsZW0uIFdoZW4gdGhpcyBkZWxlZ2F0ZSBpcyBwcmVzZW50LCBBVlN0
cmVhbURhdGFQYXJzZXIKKyAgICAgICAgd2lsbCBza2lwIGF0dGFjaGluZyBhIGRlY3J5cHRpb24g
b2JqZWN0IGVudGlyZWx5LCBtb3ZpbmcgdGhhdCByZXNwb25zaWJpbGl0eSB0byB0aGUKKyAgICAg
ICAgY2xpZW50LiBIb3dldmVyLCB0aGlzIGNvbWVzIHdpdGggdGhlIHJlcXVpcmVtZW50IHRoYXQg
dGhlIGNsaWVudCAoV2ViS2l0KSB3b24ndCBlbnF1ZXVlCisgICAgICAgIGFuIGVuY3J5cHRlZCBz
YW1wbGUgYmVmb3JlIGEgZGVjcnlwdGlvbiBvYmplY3QgaXMgYXZhaWxhYmxlIHZpYSBBVkNvbnRl
bnRLZXlTZXNzaW9uLgorCisgICAgICAgIEluIG9yZGVyIHRvIG1lZXQgdGhpcyBuZXcgcmVxdWly
ZW1lbnQsIFdlYktpdCB3aWxsIGFzc29jaWF0ZSB0aGUga2V5IElEcyBuZWNlc3NhcnkgdG8KKyAg
ICAgICAgZGVjcnlwdCBlYWNoIHNhbXBsZSBpbiB0aGUgTWVkaWFTYW1wbGUgb2JqZWN0IHRoYXQg
d3JhcHMgdGhlIGVuY3J5cHRlZCBzYW1wbGUuIEJlY2F1c2Ugbm90CisgICAgICAgIGV2ZXJ5IHR5
cGUgb2YgTWVkaWFTYW1wbGUgd2lsbCBjYXJyeSBrZXkgSURzLCB0aGlzIHByb3BlcnR5IHdhcyBh
ZGRlZCB0byB0aGUKKyAgICAgICAgTWVkaWFTYW1wbGVBVkZPYmpDIHN1YmNsYXNzLCBhbmQgdGhl
cmVmb3JlIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBzYWZlbHkgZG93bmNhc3QgZnJvbQorICAgICAg
ICBNZWRpYVNhbXBsZSB0byBNZWRpYVNhbXBsZUFWRk9iakMuIE1lZGlhU2FtcGxlIHN1YmNsYXNz
ZXMgY2FuIGJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhlCisgICAgICAgIFBsYXRmb3JtTWVkaWFTYW1w
bGUgdHlwZSBhdmFpbGFibGUgdGhyb3VnaCB0aGVpciBwbGF0Zm9ybVNhbXBsZSgpIHByb3BlcnR5
LCBob3dldmVyIHRoaXMKKyAgICAgICAgY2FsbCBpcyBub3QgY29uc3QsIGFuZCBtYXkgbm90IGJl
IGZyZWUsIGFzIGl0IHJldHVybnMgYSBub24tUE9EIHR5cGUuIFNvCisgICAgICAgIFBsYXRmb3Jt
TWVkaWE6OlR5cGUgd2FzIG1hZGUgYW4gZXhwbGljaXQgZW51bSB0eXBlLCBhbmQgYSBuZXcgdmly
dHVhbCBtZXRob2QKKyAgICAgICAgcGxhdGZvcm1TYW1wbGVUeXBlKCkgd2FzIGFkZGVkIHRvIE1l
ZGlhU2FtcGxlIChhbmQgaW1wbGVtZW50ZWQgYnkgYWxsIHN1YmNsYXNzZXMpLCBhbmQgYQorICAg
ICAgICB0eXBlIHNwZWNpYWxpemF0aW9uIG1hY3JvIHdhcyBhZGRlZCB0byBNZWRpYVNhbXBsZUFW
Rk9iakMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIHNhbXBs
ZSBpcyBjYXBhYmxlIG9mIGJlaW5nIGVucXVldWVkLCB0aGUgQ0RNSW5zdGFuY2UKKyAgICAgICAg
bXVzdCBiZSBxdWVyaWVkIHRvIGRldGVybWluZSBpZiB0aGUgc2FtcGxlJ3MgcmVxdWlyZWQga2V5
cyBhcmUgdXNhYmxlLiBGb3IKKyAgICAgICAgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMsIGl0IGhhcyBhbiBleGlzdGluZyBrZXlTdGF0dXMoKSwgbWV0aG9kLCBidXQgdGhhdAor
ICAgICAgICBtZXRob2QgaXMgYWxzbyBub24tY29uc3QsIGFuZCBtYXkgYmUgZXhwZW5zaXZlLiBT
byBhIEtleVN0YXR1c01hcCBpbnN0YW5jZSB2YXJpYWJsZQorICAgICAgICBoYXMgYmVlbiBhZGRl
ZCB0byBjYWNoZSB0aGUga2V5IHN0YXR1cyBmb3IgZWFzZSBvZiBxdWVyeWluZy4gVG8gbm90aWZ5
IGFuIGFyYml0cmFyeSBudW1iZXIKKyAgICAgICAgb2YgY2xpZW50cyB3aGVuIHRoZSBrZXkgc3Rh
dHVzZXMgY2hhbmdlLCBhbiBPYnNlcnZlciBoYXMgYmVlbiBhZGRlZC4KKworICAgICAgICBXaGVu
IGFuIGVuY3J5cHRlZCBzYW1wbGUgaXMgZW5xdWV1ZWQsIGlmIHRoaXMgbmV3IGRlbGVnYXRlIG1l
dGhvZCBpcyBhdmFpbGFibGUsIHRoZQorICAgICAgICBzb3VyY2UgYnVmZmVyIHdpbGwgY2hlY2sg
aWYgYSBDRE0gaW5zdGFuY2UgaXMgYXZhaWxhYmxlLCBhbmQgaWYgc28sIHdoZXRoZXIgdGhlIHNh
bXBsZSdzCisgICAgICAgIGtleXMgYXJlIHVzYWJsZS4gSWYgYW55IG9mIHRoZXNlIGNoZWNrcyBm
YWlsLCB0aGUgc2FtcGxlIHdpbGwgYmUgc3RvcmVkIGluIGEgbG9jYWwgcXVldWUKKyAgICAgICAg
YW5kIG5ldyBlbnF1ZXVlcyB3aWxsIGJlIGJsb2NrZWQuIFdoZW4gdGhlIENETSdzIGtleVN0YXR1
cyBvYnNlcnZlciBpcyB0cmlnZ2VyZWQsIHRoZQorICAgICAgICBsb2NhbCBxdWV1ZSB3aWxsIGJl
IHByb2Nlc3NlZCwgYW5kIGFsbCBzYW1wbGVzIHdpdGggdXNhYmxlIGtleSBJRHMgd2lsbCBiZSBl
bnF1ZXVlZC4KKworICAgICAgICBEcml2ZS1ieSBmaXg6IFVzZSBTaGFyZWRCdWZmZXIgcmF0aGVy
IHRoYW4gVWludDhBcnJheSwgYXMgdGhlIGZvcm1lciBpcyBsaWdodGVyIHdlaWdodAorICAgICAg
ICBhbmQgY2FuIGJlIG1vcmUgZWFzaWx5IGNvbnZlcnRlZCB0byBhbmQgZnJvbSBhIE5TRGF0YS4K
KworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVu
dDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aXNBbnlLZXlVc2FibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmFkZEtleVN0
YXR1c2VzQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uS2V5U3RhdHVzZXNDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVxdWVzdERpZFN1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvcHlL
ZXlTdGF0dXNlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRF
eHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlUHJvdGVjdGlvblN0YXR1c0Zv
ckRpc3BsYXlJRCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmtleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBs
ZUFWRk9iakM6OnNldEtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akM6OmtleUlEcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6
OmtleUlEcyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhU2FtcGxl
QVZGT2JqQz46OnRvU3RyaW5nKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJLZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNr
SUQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVCdWZmZXJSZW5kZXJl
cnNTdXBwb3J0S2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5S2V5SURzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hh
bmdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6c2V0Q0RNSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrSXNCbG9ja2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjprZXlTdGF0dXNlc0NoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNhbkVucXVldWVTYW1w
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVl
dWVTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFZpZGVvTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHA6CisKIDIwMjItMDItMTYgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI4NzI5Myk6IEV2ZW50TGlzdGVuZXI6Ondhc0NyZWF0
ZWRGcm9tTWFya3VwKCkgaXMgaW5jb3JyZWN0IGFmdGVyIHJlcGxhY2VKU0Z1bmN0aW9uRm9yQXR0
cmlidXRlTGlzdGVuZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZTgyYzZhMmRjMWZkNzRmYWQwZmJlYjRjZWNl
NTE2NGIyZjY0MDY1Li5iYmNiMjg0ZDRjYzUwMjk3NDlmY2JmZWU3ZTE5MjQ3ZTAxNmZlZWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAyLTAzICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6
ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2FsbGJh
Y2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEw
OQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQgdGhl
IG5ld2x5IHJlcXVyaWVkIHZpcnR1YWwgbWV0aG9kIGNoYW5nZXMgdG8gTWVkaWFTYW1wbGUgc3Vi
Y2xhc3NlcywgYW5kIHVzZQorICAgICAgICBTaGFyZWRCdWZmZXIgcmF0aGVyIHRoYW4gVWludDhB
cnJheS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxh
eWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
Rm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OnBh
cnNlQnl0ZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQ
cm92aWRlTWVkaWFEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorCiAyMDIyLTAyLTE2
ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5IGlzIG1pc3NpbmcgcmVmZXJlbmNlIGZpZWxkIGVuY29kZSwgZGVjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDI3YmZiMzkwMzM4Yjk2NTE0OGVhYTJiYjA0ODJjM2Ri
NWVmOTlmMzQuLjA0MmNiYTg2NWZiYzNiYTgwODJmZGZjOWQxZTExN2RhZjc1NDM0OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtSGF2ZS5oCkBAIC0zODgsNiArMzg4LDEzIEBACiAjZGVmaW5lIEhBVkVfQVZDT05U
RU5US0VZU0VTU0lPTiAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMTAzMDApIFwKKyAgICB8fCAoKChQTEFURk9STShJ
T1MpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNDA1MDApIFwK
KyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxB
VE9SKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gNzA0MDApIFwKKyAgICB8
fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAm
JiBfX1RWX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNTAwKQorI2RlZmluZSBIQVZFX0FW
Q09OVEVOVEtFWVNQRUNJRklFUiAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZpbmUgSEFWRV9TRUNfS0VZ
X1BST1hZIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwKaW5kZXggZDYz
NDg2YzVhOWM0ODk1M2MzNGIyYTZkZDIzY2RhOTIzZjI4NDFjNy4uNWU2N2VkZjA2NmI2MDEzYjc4
ZTRiNjlkYTY1MzA2ZTFiYWQ0ZjAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRs
CkBAIC0zMCw3ICszMCw3IEBACiBdIGludGVyZmFjZSBXZWJLaXRNZWRpYUtleXMgewogICAgIGNv
bnN0cnVjdG9yKERPTVN0cmluZyBrZXlTeXN0ZW0pOwogCi0gICAgW0NhbGxXaXRoPUN1cnJlbnRT
Y3JpcHRFeGVjdXRpb25Db250ZXh0XSBXZWJLaXRNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lv
bihET01TdHJpbmcgdHlwZSwgVWludDhBcnJheSBpbml0RGF0YSk7CisgICAgW0NhbGxXaXRoPUN1
cnJlbnREb2N1bWVudF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3Ry
aW5nIHR5cGUsIFVpbnQ4QXJyYXkgaW5pdERhdGEpOwogICAgIHN0YXRpYyBib29sZWFuIGlzVHlw
ZVN1cHBvcnRlZChET01TdHJpbmcga2V5U3lzdGVtLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzI1YzUyMGEyZWIxNmE3MzJh
ZGJkZmQwZGE4ZTEwOWU3Y2U0NTVjZS4uNDk2YzZhOWNiMjNhNmEyYTk1MzkzZjhhNDZlODYyMDk0
NzcwYWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0y
NjQ0LDcgKzI2NDQsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtX3dl
YktpdE1lZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJ
ZCkgOiBudWxscHRyOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllcktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGlm
ICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CkBAIC0yNjYxLDcgKzI2NjEsMTQgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRl
ZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEp
OworICAgIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OkluaXQgaW5pdDsKKworICAgIGlmIChh
dXRvIGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkgewor
ICAgICAgICBhdXRvIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICBpbml0LmluaXREYXRhID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRhQnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ5dGVMZW5ndGgpOworICAgIH0KKworICAgIGF1dG8g
ZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdG5lZWRrZXlFdmVudCwgaW5pdCk7CiAgICAgc2NoZWR1bGVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggODllNmE2
MjY4YmY2ZDYxYzVlMzczZjI5YTg0OTZiMWQ2NzczYmFkNC4uMDA0OTE4NjEzZWI5MzExMDYyM2Iw
M2JhZmY5NzYxZDYzMGM0OGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtl
eUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWVk
aWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5
ZXJLZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlh
UGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IGIwNjUwNGY1N2VlOTM2Yjhl
MTk4ODcxZjM1NzI3NjUzNTMwNGFmZDMuLjhiM2RjYTYxMmMyM2FhMjllM2E0ZTM2NmE3ZjQ0YzFj
YTVjMjAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtNDQsNyAr
NDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNb2NrU2FtcGxlQm94OwogCiBzdHJ1
Y3QgUGxhdGZvcm1TYW1wbGUgewotICAgIGVudW0geworICAgIGVudW0gVHlwZSB7CiAgICAgICAg
IE5vbmUsCiAgICAgICAgIE1vY2tTYW1wbGVCb3hUeXBlLAogICAgICAgICBDTVNhbXBsZUJ1ZmZl
clR5cGUsCkBAIC05Miw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwgU2Ft
cGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlOjpU
eXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHN0cnVjdCBCeXRlUmFu
Z2UgewogICAgICAgICBzaXplX3QgYnl0ZU9mZnNldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29h
LmNwcAppbmRleCA1MDYwMzIzODAzYjFhM2IxN2Y0NzM4NjZlYTk3YjNhODI5MGUyMDJjLi5iNzAz
Y2ZlY2QzMTZjNjI3YzY5NGU2NGI4ZTY5NzYyMDY4NjdmN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29j
b2EuY3BwCkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVh
ZGVyV2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSk7Ci0gICAgcGFyc2VyLT5zZXREaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2soWyZdKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90
IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRp
YURhdGFDYWxsYmFjayhbJl0oUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4mJiBzYW1wbGUsIHVpbnQ2
NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpIHsKICAgICAgICAgaWYgKCFhdWRpb1RyYWNrSWQg
fHwgdHJhY2tJRCAhPSAqYXVkaW9UcmFja0lkKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBzYW1wbGVzLmFwcGVuZChzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TWVkaWFTYW1wbGVBVkZPYmpD
PihXVEZNb3ZlKHNhbXBsZSkpKTsKKyAgICAgICAgc2FtcGxlcy5hcHBlbmQoV1RGTW92ZShzYW1w
bGUpKTsKICAgICB9KTsKICAgICBwYXJzZXItPnNldENhbGxPbkNsaWVudFRocmVhZENhbGxiYWNr
KFtdKGF1dG8mJiBmdW5jdGlvbikgewogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDBhYmMzMjIz
OGQ2NDFhY2E0NWY3Mzk3NzU3ZTRlNWUxNTFiYTdkYjUuLjZjNjFkNzM3MDg0MWYzODE1MDdiNzY4
MmVmYzhmYmU5YTIxYjNlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0MjUsNyArMTQyNSw3IEBAIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gTWVkaWFQbGF5ZXI6OmNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQp
IGNvbnN0CiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQo
a2V5SWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSogaW5p
dERhdGEpCit2b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKICAgICBjbGllbnQoKS5tZWRpYVBsYXllcktleU5lZWRlZChpbml0RGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApp
bmRleCA1ZjBkYWE4NjZmMmM4MjMzYWM4YzE5NGE2MTMzZDk3M2YzNDQ2ZmU4Li44OTMxNzE1OTI1
YTE0ODNhZmFkMGNjY2ExNjNhZTE1OWY5NDczYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgTWVk
aWFTdHJlYW1Qcml2YXRlOwogY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFzcyBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjsKIGNsYXNzIFZpZGVvVHJhY2tQ
cml2YXRlOwogCkBAIC0yMDAsNyArMjAxLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlh
UGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgeyB9CisgICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQog
ICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICNlbmRpZgogCkBAIC01NTgsNyArNTU5
LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlk
KSBjb25zdDsKLSAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSk7CisgICAg
dm9pZCBrZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAgICAgU3RyaW5n
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAppbmRleCBhM2JjOWY1ZmNkZjhmNzA1ZGY3ZmI5YjY5YThiNTA5OTI0NTBjODFjLi5mNTVm
NDMzNDRjMTI4YmY1MWI1Mzk5OGE1ZGI1ZDEyZDQyYzBjZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
QEAgLTE5MjEsMTUgKzE5MjEsMTUgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAg
Ly8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCiAg
ICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2YoVUNo
YXIpOwogICAgICAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0
ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRh
Vmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0
YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGJ5dGVMZW5ndGgpOwog
ICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwgdHJ1ZSk7
CiAKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERh
dGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklB
cnJheS0+c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KFN0cmluZ1Zp
ZXcoa2V5VVJJKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSksIGtleVVSSS5sZW5ndGgo
KSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxl
bmd0aCA9IGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCk7Ci0gICAgICAgIGF1dG8gaW5pdERh
dGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVM
ZW5ndGgpOwotICAgICAgICBtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0
cigpKTsKKyAgICAgICAgYXV0byBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rv
cjx1aW50OF90PiB7IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihpbml0RGF0YUJ1ZmZlci0+ZGF0YSgp
KSwgYnl0ZUxlbmd0aCB9KTsKKyAgICAgICAgbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChp
bml0RGF0YSk7CiAgICAgICAgIHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVlc3QpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCA1
NmI1OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyLi5kNTlmZTQ4MDRkNThkZmU3
OGNiNWJlYTcwNzRiMmU2ODcwNWMxZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTMw
LDcgKzMwLDkgQEAKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgogI2luY2x1ZGUgIkNETUluc3Rh
bmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9P
YnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a0hhc2hTZXQuaD4KIAogT0JKQ19DTEFTUyBBVkNvbnRlbnRLZXlSZXBvcnRHcm91cDsKIE9CSkNf
Q0xBU1MgQVZDb250ZW50S2V5UmVxdWVzdDsKQEAgLTExNyw2ICsxMTksMTMgQEAgcHVibGljOgog
ICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZv
ckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRl
bnRLZXlSZXF1ZXN0KikgY29uc3Q7CiAKKyAgICBib29sIGlzQW55S2V5VXNhYmxlKGNvbnN0IEtl
eXMmKSBjb25zdDsKKworICAgIHVzaW5nIEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyID0gT2Jz
ZXJ2ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFkZEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyKGNv
bnN0IEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB2b2lkIHNlc3Npb25LZXlT
dGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVVbmV4cGVjdGVkUmVxdWVzdHMo
VmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7CiAKQEAgLTEzNCw2ICsx
NDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAg
IFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qz4+IG1fc2Vzc2lvbnM7CiAgICAgSGFzaFNldDxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVz
dD4+IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzOworICAgIFdlYWtIYXNoU2V0PEtleVN0YXR1c2Vz
Q2hhbmdlZE9ic2VydmVyPiBtX2tleVN0YXR1c0NoYW5nZWRPYnNlcnZlcnM7CiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qg
dm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpAQCAtMTg2LDExICsxOTYsMTQgQEAg
cHVibGljOgogCiAgICAgYm9vbCBoYXNSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25z
dDsKIAorICAgIGNvbnN0IEtleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMoKSBjb25zdCB7IHJl
dHVybiBtX2tleVN0YXR1c2VzOyB9CisgICAgS2V5U3RhdHVzVmVjdG9yIGNvcHlLZXlTdGF0dXNl
cygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKTsK
ICAgICBib29sIGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUpIGNvbnN0OwogCi0g
ICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNw
bGF5SUQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2Vz
KHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KTsKICAgICB2
b2lkIG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVl
c3QoKSBjb25zdDsKIApAQCAtMjE2LDYgKzIyOSw3IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBV
cGRhdGVSZXNwb25zZUNvbGxlY3RvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlUmVzcG9u
c2VDb2xsZWN0b3I+IG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I7CisgICAgS2V5U3RhdHVzVmVj
dG9yIG1fa2V5U3RhdHVzZXM7CiAKICAgICBWZWN0b3I8UmVxdWVzdD4gbV9wZW5kaW5nUmVxdWVz
dHM7CiAgICAgVmVjdG9yPFJlcXVlc3Q+IG1fcmVxdWVzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCmluZGV4IGNmZTA0OGE5MzhjMDVkZjc0NWM3MTYzNTZhZDFiM2I5MGE1OWViNzguLmZkNjE1
MmUxODY3ZDRlNmE2NzJiZWYxNzA3MGNhNzYyOTEyNmY0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCkBAIC02MTcsNiArNjE3LDM3IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmlzQW55S2V5VXNhYmxlKGNvbnN0IEtleXMmIGtleXMpIGNvbnN0Cit7CisgICAgZm9y
IChhdXRvJiBzZXNzaW9uSW50ZXJmYWNlIDogbV9zZXNzaW9ucykgeworICAgICAgICBpZiAoIXNl
c3Npb25JbnRlcmZhY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGF1
dG8mIGtleVN0YXR1c1BhaXIgOiBzZXNzaW9uSW50ZXJmYWNlLT5rZXlTdGF0dXNlcygpKSB7Cisg
ICAgICAgICAgICBpZiAoa2V5U3RhdHVzUGFpci5zZWNvbmQgIT0gQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXM6OlVzYWJsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgaWYgKGtleXMuZmluZElmKFsmXSAoYXV0byYga2V5KSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGtleS5nZXQoKSA9PSBrZXlTdGF0dXNQYWlyLmZpcnN0LmdldCgpOworICAgICAgICAg
ICAgfSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjphZGRLZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcihjb25zdCBL
ZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9rZXlTdGF0dXND
aGFuZ2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJikKK3sKKyAgICBtX2tleVN0
YXR1c0NoYW5nZWRPYnNlcnZlcnMuZm9yRWFjaChbXSAoYXV0byYgb2JzZXJ2ZXIpIHsKKyAgICAg
ICAgb2JzZXJ2ZXIoKTsKKyAgICB9KTsKK30KKwogQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmIGluc3RhbmNlKQog
ICAgIDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKICAgICAsIG1fZGVsZWdhdGUoYWRv
cHROUyhbW1dlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aFBhcmVudDp0aGlzXSkpCkBAIC0xMzA2LDEzICsxMzM3LDE1IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChB
VkNvbnRlCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogeworICAg
IHVwZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV91cGRhdGVSZXNwb25zZUNvbGxlY3Rv
cikgewogICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yLT5hZGRTdWNjZXNzZnVsUmVz
cG9uc2UocmVxdWVzdCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAobV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spIHsKLSAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2Fs
bGJhY2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChrZXlTdGF0dXNlcygpKSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgICAgIG1fdXBkYXRlTGljZW5zZUNh
bGxiYWNrKGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9uYWwoY29weUtleVN0YXR1c2VzKCkpLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3Vw
ZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogCkBAIC0xNDA1LDcgKzE0MzgsNyBAQCBzdGF0
aWMgYXV0byByZXF1ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZDb250ZW50S2V5UmVxdWVzdFN0YXR1
cyBzdGF0dXMpCiAgICAgfQogfQogCi1DRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2Vz
KHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRpc3BsYXlJRCkgY29uc3QKK3ZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVLZXlTdGF0
dXNlcyhzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5SUQpCiB7CiAgICAg
S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOwogCkBAIC0xNDI3LDcgKzE0NjAsMTkgQEAgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjoKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBrZXlT
dGF0dXNlczsKKyAgICBtX2tleVN0YXR1c2VzLnN3YXAoa2V5U3RhdHVzZXMpOworCisgICAgbV9p
bnN0YW5jZS0+c2Vzc2lvbktleVN0YXR1c2VzQ2hhbmdlZCgqdGhpcyk7Cit9CisKK2F1dG8gQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb3B5S2V5U3RhdHVzZXMo
KSBjb25zdCAtPiBLZXlTdGF0dXNWZWN0b3IKK3sKKyAgICBLZXlTdGF0dXNWZWN0b3IgY29waWVk
S2V5U3RhdHVzZXM7CisgICAgY29waWVkS2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtX2tleVN0YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBzdGF0dXMgOiBtX2tleVN0
YXR1c2VzKQorICAgICAgICBjb3BpZWRLZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBzdGF0
dXMuZmlyc3QuY29weVJlZigpLCBzdGF0dXMuc2Vjb25kIH0pOworICAgIHJldHVybiBjb3BpZWRL
ZXlTdGF0dXNlczsKKwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVj
dGlvbkNoYW5nZWQoYm9vbCBvYnNjdXJlZCkKQEAgLTE0MzgsOCArMTQ4MywxMCBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWRE
dWVUb0luc3VmZmljaWVudAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklF
Uiwgb2JzY3VyZWQpOwogICAgIG1fb3V0cHV0T2JzY3VyZWQgPSBvYnNjdXJlZDsKIAorICAgIHVw
ZGF0ZUtleVN0YXR1c2VzKCk7CisKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50
LT51cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcygpKTsKKyAgICAgICAgbV9jbGllbnQtPnVw
ZGF0ZUtleVN0YXR1c2VzKGNvcHlLZXlTdGF0dXNlcygpKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVybmFsUHJvdGVjdGlvblN0YXR1
c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKQpAQCAt
MTQ5Miw5ICsxNTM5LDEzIEBAIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3RhdHVzPiBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnByb3RlY3RpCiAKIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVQcm90ZWN0aW9uU3Rh
dHVzRm9yRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKLSAgICBpZiAo
bV9yZXF1ZXN0cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgIGlmIChtX3JlcXVlc3RzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNl
cyhrZXlTdGF0dXNlcyhkaXNwbGF5SUQpKTsKKworICAgIHVwZGF0ZUtleVN0YXR1c2VzKGRpc3Bs
YXlJRCk7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlT
dGF0dXNlcyhjb3B5S2V5U3RhdHVzZXMoKSk7CiB9CiAKIGJvb2wgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uT3JHcm91cCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
aAppbmRleCAwMjEwMjY5NTg2YWYxZDVhMDQyYzYzZGM0NjRkOTlhMjBjM2M3NWIwLi42YzA1ZTJm
OGIxMDNiODUxNzQ3Y2M5YTM1NDNjZDUxYzlhZThjMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKQEAgLTcwLDcg
KzcwLDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxXZWJDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU7CiAgICAgUmV0
YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1fa2V5UmVxdWVzdDsKICAgICBSZWZQdHI8VWlu
dDhBcnJheT4gbV9pZGVudGlmaWVyOwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2luaXREYXRh
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1faW5pdERhdGE7CiAgICAgUmV0YWluUHRyPE5T
RGF0YT4gbV9leHBpcmVkU2Vzc2lvbjsKICAgICBWZWN0b3I8aW50PiBtX3Byb3RvY29sVmVyc2lv
bnM7CiAgICAgaW50IG1fY2RtVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggNjUyYTA4NTA4Nzdl
Yjc4MGYzNWU2ZWY1MTRlMmFjMzJjZDc3OTNhYy4uN2Q1OTNhNjBkNjYzMmI5OTYyZmY0OTU2MWEw
ZTcxYmNkY2U2MDk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQg
IkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIu
aCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZFcnJvci5oPgpAQCAtMTQ2LDcgKzE0Nyw3IEBAIFJlZlB0cjxVaW50OEFy
cmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluCiAgICAgaWYgKG1fY2RtVmVyc2lvbiA9PSAyKQogICAgICAgICBtX2lkZW50aWZp
ZXIgPSBpbml0RGF0YTsKICAgICBlbHNlCi0gICAgICAgIG1faW5pdERhdGEgPSBpbml0RGF0YTsK
KyAgICAgICAgbV9pbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLT5kYXRh
KCksIGluaXREYXRhLT5sZW5ndGgoKSk7CiAKICAgICBBU1NFUlQoIW1fY2VydGlmaWNhdGUpOwog
ICAgIFN0cmluZyBjZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlmaWNhdGUiX3MpOwpAQCAtMjY4LDEy
ICsyNjksMTIgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKFVp
bnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgIH0KIAogICAgIGlmICghbV9r
ZXlSZXF1ZXN0KSB7Ci0gICAgICAgIE5TRGF0YSogbnNJbml0RGF0YSA9IG1faW5pdERhdGEgPyBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6bV9pbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDptX2luaXREYXRh
LT5sZW5ndGgoKV0gOiBuaWw7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IG5zSW5pdERhdGEg
PSBtX2luaXREYXRhID8gbV9pbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkgOiBuaWw7CiAgICAgICAg
IE5TRGF0YSogbnNJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyID8gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOm1faWRlbnRpZmllci0+ZGF0YSgpIGxlbmd0aDptX2lkZW50aWZpZXItPmxlbmd0aCgpXSA6
IG5pbDsKICAgICAgICAgaWYgKFtjb250ZW50S2V5U2Vzc2lvbigpIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6aW5pdGlh
bGl6YXRpb25EYXRhOm9wdGlvbnM6KV0pCi0gICAgICAgICAgICBbY29udGVudEtleVNlc3Npb24o
KSBwcm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjpuc0lkZW50aWZpZXIgaW5p
dGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9uczpuaWxdOworICAgICAgICAgICAgW2Nv
bnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6
bnNJZGVudGlmaWVyIGluaXRpYWxpemF0aW9uRGF0YTpuc0luaXREYXRhLmdldCgpIG9wdGlvbnM6
bmlsXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEgb3B0aW9u
czpuaWxdOworICAgICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOm5zSW5pdERhdGEuZ2V0KCkgb3B0aW9uczpuaWxd
OwogICAgIH0KIAogICAgIGlmIChzaG91bGRHZW5lcmF0ZUtleVJlcXVlc3QpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IGFkYjNiZDFiNzBmNDI5NTk4M2FkNWEyMmU0YmVjMmY2NTBkMDc3
N2EuLmZhNzUzN2Y3ZGU5ZTRiYzNlM2JhNDBjMDhhMWM1ZWExMzhhOGRiMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMjExNCw4ICsyMTE0LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3Nl
dFIKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERh
dGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklB
cnJheS0+c2V0UmFuZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oU3RyaW5nVmll
dyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJLmxlbmd0aCgp
IC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBhdXRvIGluaXREYXRhID0g
VWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3Ro
KTsKLSAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisgICAgICAg
IGF1dG8gaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4geyBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgg
fSk7CisgICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCiAgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0
ZXJLZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjE0Myw5ICsyMTQz
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICBpZiAoc2NoZW1lID09ICJjbGVhcmtl
eSIpIHsKICAgICAgICAgU3RyaW5nIGtleUlEID0gW1tbYXZSZXF1ZXN0IHJlcXVlc3RdIFVSTF0g
cmVzb3VyY2VTcGVjaWZpZXJdOwogICAgICAgICBhdXRvIGVuY29kZWRLZXlJZCA9IFBBTDo6VVRG
OEVuY29kaW5nKCkuZW5jb2RlKGtleUlELCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OlVSTEVu
Y29kZWRFbnRpdGllcyk7Ci0KLSAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNy
ZWF0ZShlbmNvZGVkS2V5SWQuc2l6ZSgpKTsKLSAgICAgICAgaW5pdERhdGEtPnNldFJhbmdlKGVu
Y29kZWRLZXlJZC5kYXRhKCksIGVuY29kZWRLZXlJZC5zaXplKCksIDApOworICAgICAgICBhdXRv
IGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShlbmNvZGVkS2V5SWQpKTsK
IAogICAgICAgICBhdXRvIGtleURhdGEgPSBwbGF5ZXIoKS0+Y2FjaGVkS2V5Rm9yS2V5SWQoa2V5
SUQpOwogICAgICAgICBpZiAoa2V5RGF0YSkgewpAQCAtMjE1Myw3ICsyMTUxLDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
Ci0gICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworICAgICAgICBw
bGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhKTsKIAogICAgICAgICBpZiAoIXBsYXllcigpLT5z
aG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGJjYWQxMjU0MzYzYTE4N2M2OGEzMzY4ZmE3
YTdhMTQ4NTE1YjgyZTUuLjI5ODNjZWNhZGVhMjJlM2YyNTViMDc5Yzk2YTJmNzg5MWNkM2EzMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCkgb3ZlcnJpZGUgeyBvdXRwdXRPYnNjdXJl
ZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChmYWxzZSk7IH0KIAog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQotICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIGtleU5lZWRl
ZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBlOTVmOGMzY2FjZjBhZGUxODEx
ZjExYmFlNjgzYmU0YjVmYjE1NTMzLi4xYzMzMjcyNTQ2YjRlZjhiNzk3ODhkOTA1MjdhNTBlNTRk
NmQ0OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMTQzLDcgKzExNDMsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Q0RNU2Vzc2lv
bihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaQogI2VuZGlmIC8vIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpIHx8IEVOQUJM
RShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmtleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQogewogICAgIG1fcGxheWVyLT5rZXlOZWVkZWQoaW5pdERhdGEpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA1YjRmN2YwMGRiMzNh
NWJjZGY2NTZjNjAyMmYxNDgzNGY0MWM1OTA2Li5hYzI3YTIwYjdkMGFkNWIwYWNjYTgzYzAxMjZl
MjY3MzBjY2NmZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMuaApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAK
IHVzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBpeGVs
QnVmZmVyOwogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJsaWMgTWVkaWFTYW1wbGUg
ewpAQCAtNjAsNiArNjIsNyBAQCBwdWJsaWM6CiAKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlw
ZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBv
dmVycmlkZTsKQEAgLTgwLDYgKzgzLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Qnl0ZVJh
bmdlT2Zmc2V0KHNpemVfdCk7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZF
KEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgdXNpbmcgS2V5SURzID0gVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj47CisgICAgdm9pZCBzZXRLZXlJRHMoS2V5SURzJiYga2V5SURz
KSB7IG1fa2V5SURzID0gV1RGTW92ZShrZXlJRHMpOyB9CisgICAgY29uc3QgS2V5SURzJiBrZXlJ
RHMoKSBjb25zdCB7IHJldHVybiBtX2tleUlEczsgfQorICAgIEtleUlEcyYga2V5SURzKCkgeyBy
ZXR1cm4gbV9rZXlJRHM7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBP
UlQgTWVkaWFTYW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4mJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmKTsK
QEAgLTk0LDEwICsxMDQsMjcgQEAgcHJvdGVjdGVkOgogICAgIEF0b21TdHJpbmcgbV9pZDsKICAg
ICBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAgICAg
Ym9vbCBtX21pcnJvcmVkIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
ICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gc3RydWN0
IExvZ0FyZ3VtZW50OwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpN
ZWRpYVNhbXBsZUFWRk9iakM+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdl
YkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQyYgc2FtcGxlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHNhbXBsZS50b0pTT05TdHJpbmcoKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akMpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBt
ZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09
IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGU7IH0KK3N0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgc2FtcGxlKSB7IHJldHVybiBz
YW1wbGUucGxhdGZvcm1TYW1wbGVUeXBlKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNN
U2FtcGxlQnVmZmVyVHlwZTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4
IDcyMjQ5N2UwYmM0MjBjZDRlNjJiMDYyNDkyM2JmZDhmOWQ1NDA2MjIuLjg5NTFiMjQ3ZGQwMDE1
MGVkMTZjZTA0MWFjY2VjYmJmY2JlZDVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0YXRlKFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiwgYm9vbCBhY3RpdmUpOwogICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMqKTsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAg
ICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyos
IFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlcktleU5lZWRlZChTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAgdm9p
ZCByZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCA5
MjdkMTMwMzExZThlZWM4YjAyMTU2YWM2MzI4MGE5YmY5ZDA4MDhjLi4xMjAxYjcyNmJkMDQ3YzVm
MTEwZjcxNGFiMTAyMzE5YTYxNjIyY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTE5NSw5ICsxOTUsMTAgQEAgdm9p
ZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdl
QWN0aXZlU3RhdGUoU291cmNlQnUKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpzb3VyY2VCdWZmZXJLZXlOZWVk
ZWQoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIGJ1ZmZlciwgVWludDhBcnJheSogaW5pdERh
dGEpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNvdXJjZUJ1ZmZlcktleU5lZWRl
ZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogYnVmZmVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXREYXRhKQogewogICAgIG1fc291cmNlQnVmZmVyc05lZWRpbmdTZXNzaW9ucy5hcHBlbmQo
YnVmZmVyKTsKKwogICAgIGlmIChtX3BsYXllcikKICAgICAgICAgbV9wbGF5ZXItPmtleU5lZWRl
ZChpbml0RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLmgKaW5kZXggYzIyZTcyNWY4NTQ2ZjI3OGZmNjU3YTVmNGM1NzJiOTI5
NTE1ZWQ0OC4uNzgxMTIwNGNjZmQxZDgxYjE1MDkyYjU3NWE4Mjk4MGQ2MmMyZjEwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApA
QCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9y
VHJhY2tJRCh1aW50NjRfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5n
JiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKICAgICB2b2lkIHdpbGxQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQp
OwogICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRChOU0RhdGEqLCB1aW50NjRfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoTlNEYXRhKiwgdWludDY0X3Qg
dHJhY2tJRCk7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRl
eCBhYmQ4MWU1ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyLi5hYTE1ODQwNGIxMGU0
NDRhZjZlNWVkZGM4ZGFkNmJhOTZlZDVjYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTU3LDYgKzU3LDEyIEBACiAj
cHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
CiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKK0BpbnRlcmZhY2UgQVZDb250ZW50
S2V5U3BlY2lmaWVyIChXZWJDb3JlUHJpdmF0ZSkKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5TRGF0
YSAqaW5pdGlhbGl6YXRpb25EYXRhOworQGVuZAorI2VuZGlmCisKIEBpbnRlcmZhY2UgV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJzZXJPdXRw
dXRIYW5kbGluZz4gewogICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqIF9w
YXJlbnQ7CiAgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwpAQCAtMTMzLDYgKzEzOSwx
NiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBBU1NFUlRfVU5V
U0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7CiAgICAg
X3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7CiB9CisKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQ
RUNJRklFUikKKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICop
c3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjooQVZDb250ZW50
S2V5U3BlY2lmaWVyICopa2V5U3BlY2lmaWVyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNr
SUQpdHJhY2tJRAoreworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFt
RGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBpZiAoW2tleVNwZWNpZmllciByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGluaXRpYWxpemF0aW9uRGF0YSldKQorICAgICAgICBfcGFyZW50
LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RTcGVjaWZpZXJGb3JUcmFja0lEKGtleVNwZWNp
Zmllci5pbml0aWFsaXphdGlvbkRhdGEsIHRyYWNrSUQpOworfQorI2VuZGlmCisKIEBlbmQKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzM0LDEwICszNTAsMTQgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm8KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSogbnNJbml0
RGF0YSwgdWludDY0X3QgdHJhY2tJRCkKIHsKLSAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKG5zSW5pdERhdGEubGVuZ3RoKTsKLSAgICBbbnNJbml0RGF0YSBnZXRCeXRlczpp
bml0RGF0YS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0YS0+bGVuZ3RoKCldOworICAgIG1fZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zSW5pdERhdGEpLCB0cmFja0lEKTsKK30KIAotICAgIG1f
ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENh
bGxiYWNrKFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK3ZvaWQgU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3BlY2lmaWVyRm9yVHJhY2tJ
RChOU0RhdGEqIG5zSW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpCit7CisgICAgbV9jYWxsT25D
bGllbnRUaHJlYWRDYWxsYmFjayhbdGhpcywgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5z
SW5pdERhdGEgPSByZXRhaW5QdHIobnNJbml0RGF0YSksIHRyYWNrSURdIHsKKyAgICAgICAgbV9k
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zSW5pdERhdGEuZ2V0KCkpLCB0cmFja0lEKTsKKyAgICB9KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLmgKaW5kZXggNzU0YjFlMmVlYzAyZGYzMzk1ZTVjZGI1YzA3ZjhlODhhOTM1Y2Qw
OC4uMzc2YTZmYzE0MzgxMWVlYjg1NjdiY2IwOGU3ZGRkM2IxZmYxM2NmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0
Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTk1LDcgKzk2LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxw
dHI7IH0KIAogICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCk7Ci0gICAgdm9pZCBkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxVaW50OEFy
cmF5PiYmLCB1aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CisgICAgdm9p
ZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
KFJlZjxTaGFyZWRCdWZmZXI+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhv
cmU+KTsKKworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZv
clRyYWNrSUQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDY0X3QgdHJhY2tJRCk7CiAKICAgICBi
b29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKIApAQCAtMTMyLDcgKzEzNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkKCk7CiAgICAgCiAjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCi0gICAgVWludDhBcnJheSogaW5pdERhdGEoKSB7IHJldHVybiBt
X2luaXREYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiBpbml0RGF0YSgpIHsgcmV0dXJu
IG1faW5pdERhdGEuZ2V0KCk7IH0KICNlbmRpZgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CkBAIC0xNTAsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBJbml0aWFsaXphdGlvblNl
Z21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7
CiAgICAgdm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21l
bnQmJik7CiAgICAgdm9pZCBkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCk7
Ci0gICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+
JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKKyAgICB2b2lk
IGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYs
IHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNv
dXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CkBAIC0xNzQsNiArMTc3LDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRp
bWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhVGltZSBkdXJhdGlv
bigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBs
ZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgZGlkQmVjb21lUmVhZHlG
b3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGFwcGVuZENvbXBsZXRl
ZCgpOwogICAgIHZvaWQgZGVzdHJveVN0cmVhbURhdGFQYXJzZXIoKTsKQEAgLTE4Niw2ICsxOTAs
MTIgQEAgcHJpdmF0ZToKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogCiAg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdDsK
KyAgICBib29sIGNhbkVucXVldWVTYW1wbGUodWludDY0X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFT
YW1wbGVBVkZPYmpDJik7CisgICAgYm9vbCB0cmFja0lzQmxvY2tlZCh1aW50NjRfdCB0cmFjaykg
Y29uc3Q7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtF
WVNFU1NJT04pCisgICAgdm9pZCBrZXlTdGF0dXNlc0NoYW5nZWQoKTsKKyNlbmRpZgogCiAgICAg
VmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4+IG1fdmlkZW9UcmFja3M7CiAgICAgVmVj
dG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4+IG1fYXVkaW9UcmFja3M7CkBAIC0xOTcsNyAr
MjA3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJvY2Vzc2luZ0luaXRpYWxpemF0aW9uU2Vn
bWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdBcHBlbmRDb21wbGV0ZWRDYWxs
YmFjayB7IGZhbHNlIH07CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1Ry
YWNrQ2hhbmdlQ2FsbGJhY2tzOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFJlZjxN
ZWRpYVNhbXBsZT4+PiBtX21lZGlhU2FtcGxlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2
NF90LCBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPj4+IG1fbWVkaWFTYW1wbGVzOworICAgIERlcXVl
PHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4+PiBtX2Jsb2NrZWRT
YW1wbGVzOwogCiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX2Rp
c3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCkBAIC0y
MTUsMTMgKzIyNiwyNyBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
QyogbV9tZWRpYVNvdXJjZTsKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OworCiAjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1f
aW5pdERhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9pbml0RGF0YTsKICAgICBXZWFr
UHRyPENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM+IG1fc2Vzc2lvbiB7IG51bGxwdHIgfTsK
ICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZ
U0VTU0lPTikKKyAgICB1c2luZyBLZXlJRHMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PjsKKyAgICBzdHJ1Y3QgVHJhY2tJbml0RGF0YSB7CisgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGluaXREYXRhOworICAgICAgICBLZXlJRHMga2V5SURzOworICAgIH07CisgICAg
dXNpbmcgVHJhY2tJbml0RGF0YU1hcCA9IEhhc2hNYXA8dWludDY0X3QsIFRyYWNrSW5pdERhdGE+
OworICAgIFRyYWNrSW5pdERhdGFNYXAgbV9wZW5kaW5nUHJvdGVjdGVkVHJhY2tJbml0RGF0YU1h
cDsKKyAgICBUcmFja0luaXREYXRhTWFwIG1fcHJvdGVjdGVkVHJhY2tJbml0RGF0YU1hcDsKKwor
ICAgIHVzaW5nIFRyYWNrS2V5SURzTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgS2V5SURzPjsKKyAg
ICBUcmFja0tleUlEc01hcCBtX2N1cnJlbnRUcmFja0lEczsKKwogICAgIFJlZlB0cjxDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBVbmlxdWVSZWY8T2Jz
ZXJ2ZXI8dm9pZCgpPj4gbV9rZXlTdGF0dXNlc0NoYW5nZWRPYnNlcnZlcjsKKyAgICBLZXlJRHMg
bV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hl
ZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCmluZGV4IGU2MWEzYTdmY2M5NjM3OThmNjg5OGMwMTI3YmQ3NGJiMzMwYmY3
YTEuLmYzZDQyNDViZTE0MDA4ZjA1YzZiOTlkOTY5ZmY0Y2ZkMGVjNzc0M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBA
IC03Niw2ICs3NiwxMiBAQCAtICh2b2lkKWV4cGVjdE1pbmltdW1VcGNvbWluZ1NhbXBsZUJ1ZmZl
clByZXNlbnRhdGlvblRpbWU6IChDTVRpbWUpbWluaW11bVVwY29taQogLSAodm9pZClyZXNldFVw
Y29taW5nU2FtcGxlQnVmZmVyUHJlc2VudGF0aW9uVGltZUV4cGVjdGF0aW9uczsKIEBlbmQKIAor
QGludGVyZmFjZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAoV2ViQ29yZVNhbXBsZUJ1ZmZl
cktleVNlc3Npb24pIDxBVkNvbnRlbnRLZXlSZWNpcGllbnQ+CitAZW5kCisKK0BpbnRlcmZhY2Ug
QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyIChXZWJDb3JlU2FtcGxlQnVmZmVyS2V5U2Vzc2lv
bikgPEFWQ29udGVudEtleVJlY2lwaWVudD4KK0BlbmQKKwogI3ByYWdtYSBtYXJrIC0KICNwcmFn
bWEgbWFyayBBVlN0cmVhbVNlc3Npb24KIApAQCAtMjc1LDYgKzI4MSwyNCBAQCBzdGF0aWMgdWlu
dDY0X3QgbmV4dE1hcElEKCkKICAgICByZXR1cm4gKyttYXBJRDsKIH0KIAorc3RhdGljIGJvb2wg
c2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24oKQoreworICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRzID0gZmFsc2U7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBbJl0geworICAgICAgICBzdXBwb3J0
cyA9IFtQQUw6OmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNsYXNzKCkgY29uZm9ybXNU
b1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRlbnRLZXlSZWNpcGllbnQpXQorICAgICAgICAgICAg
JiYgW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGNvbmZvcm1zVG9Q
cm90b2NvbDpAcHJvdG9jb2woQVZDb250ZW50S2V5UmVjaXBpZW50KV07CisgICAgfSk7CisgICAg
cmV0dXJuIHN1cHBvcnRzOworfQorCitzdGF0aWMgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gY29weUtleUlEcyhjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBrZXlJRHMpCit7CisgICAgcmV0dXJuIGtleUlEcy5tYXAoW10gKGF1dG8mIGtleUlEKSB7
CisgICAgICAgIHJldHVybiBrZXlJRC5jb3B5UmVmKCk7CisgICAgfSk7Cit9CisKIHN0YXRpYyB2
b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNv
bnN0IHZvaWQqIGxpc3RlbmVyLCBDRlN0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lLCBjb25zdCB2
b2lkKiwgQ0ZUeXBlUmVmKQogewogICAgIGlmICghQ0ZFcXVhbChQQUw6OmtDTVNhbXBsZUJ1ZmZl
ckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBub3RpZmljYXRpb25OYW1lKSkK
QEAgLTMwNyw2ICszMzEsOSBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwogICAgICwgbV9lcnJv
ckxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgYWxsb2Nd
IGluaXRXaXRoUGFyZW50Oip0aGlzXSkpCiAgICAgLCBtX2FwcGVuZFF1ZXVlKFdvcmtRdWV1ZTo6
Y3JlYXRlKCJTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBkYXRhIHBhcnNlciBxdWV1ZSIpKQog
ICAgICwgbV9tZWRpYVNvdXJjZShwYXJlbnQpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkg
JiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICwgbV9rZXlTdGF0dXNlc0NoYW5nZWRP
YnNlcnZlcihtYWtlVW5pcXVlUmVmPE9ic2VydmVyPHZvaWQoKT4+KFt0aGlzXSB7IGtleVN0YXR1
c2VzQ2hhbmdlZCgpOyB9KSkKKyNlbmRpZgogICAgICwgbV9tYXBJRChuZXh0TWFwSUQoKSkKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBhcmVudC0+bG9nZ2VyKCkp
CkBAIC0zNjQsNiArMzkxLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
UGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KIAogICAgIGNsZWFy
VHJhY2tzKCk7CiAKKyAgICBtX3Byb3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuc3dhcChtX3BlbmRp
bmdQcm90ZWN0ZWRUcmFja0luaXREYXRhTWFwKTsKKyAgICBtX3BlbmRpbmdQcm90ZWN0ZWRUcmFj
a0luaXREYXRhTWFwLmNsZWFyKCk7CisKICAgICBmb3IgKGF1dG8gdmlkZW9UcmFja0luZm8gOiBz
ZWdtZW50LnZpZGVvVHJhY2tzKSB7CiAgICAgICAgIHZpZGVvVHJhY2tJbmZvLnRyYWNrLT5zZXRT
ZWxlY3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhp
c10gKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkgewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKQEAgLTQ1OCwxMCArNDg4LDE2IEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNv
ZGUpCiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRp
YVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVk
aWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiYmIG1lZGlhU2FtcGxlLCB1
aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKIHsKICAgICBVTlVTRURf
UEFSQU0obWVkaWFUeXBlKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUo
QVZDT05URU5US0VZU0VTU0lPTikKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3Byb3RlY3RlZFRy
YWNrSW5pdERhdGFNYXAuZmluZCh0cmFja0lkKTsKKyAgICBpZiAoZmluZFJlc3VsdCAhPSBtX3By
b3RlY3RlZFRyYWNrSW5pdERhdGFNYXAuZW5kKCkpCisgICAgICAgIG1lZGlhU2FtcGxlLT5zZXRL
ZXlJRHMoY29weUtleUlEcyhmaW5kUmVzdWx0LT52YWx1ZS5rZXlJRHMpKTsKKyNlbmRpZgorCiAg
ICAgaWYgKG1fcHJvY2Vzc2luZ0luaXRpYWxpemF0aW9uU2VnbWVudCkgewogICAgICAgICBERUJV
R19MT0coTE9HSURFTlRJRklFUiwgbWVkaWFTYW1wbGUuZ2V0KCkpOwogICAgICAgICBtX21lZGlh
U2FtcGxlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tJZCwgV1RGTW92ZShtZWRpYVNhbXBs
ZSkpKTsKQEAgLTUwOCw3ICs1NDQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRgogI2VuZGlm
CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYg
aW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Np
b25TZW1hcGhvcmUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+
IGhhc1Nlc3Npb25TZW1hcGhvcmUpCiB7CiAgICAgYXV0byBwbGF5ZXIgPSB0aGlzLT5wbGF5ZXIo
KTsKICAgICBpZiAoIXBsYXllcikKQEAgLTUxOSwxMSArNTU1LDE1IEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvCiAKICAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwogICAgIG1faW5p
dERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKTsKLSAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZm
ZXJLZXlOZWVkZWQodGhpcywgbV9pbml0RGF0YS5nZXQoKSk7CisgICAgbV9tZWRpYVNvdXJjZS0+
c291cmNlQnVmZmVyS2V5TmVlZGVkKHRoaXMsICptX2luaXREYXRhKTsKKwogICAgIGlmIChhdXRv
IHNlc3Npb24gPSBwbGF5ZXItPmNkbVNlc3Npb24oKSkgewotICAgICAgICBpZiAoYXV0byBwYXJz
ZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCisgICAgICAgIGlmIChzYW1wbGVCdWZmZXJS
ZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKSB7CisgICAgICAgICAgICAvLyBuby1vcC4KKyAg
ICAgICAgfSBlbHNlIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQYXJzZXIoKSkK
ICAgICAgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwotICAgICAgICBoYXNTZXNz
aW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgaWYgKGhhc1Nlc3Npb25TZW1hcGhvcmUp
CisgICAgICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNTMzLDE0ICs1NzMsMTcgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm8KICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBob3Jl
OwogICAgIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZ
U0VTU0lPTikKLSAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9pbml0RGF0YS0+ZGF0YSgpLCBtX2luaXREYXRhLT5ieXRlTGVuZ3RoKCkpOwotICAgIGF1dG8g
a2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihp
bml0RGF0YUJ1ZmZlcik7CisgICAgYXV0byBrZXlJRHMgPSBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKCptX2luaXREYXRhKTsKICAgICBpZiAoIWtleUlEcykK
ICAgICAgICAgcmV0dXJuOwogCisgICAgbV9wZW5kaW5nUHJvdGVjdGVkVHJhY2tJbml0RGF0YU1h
cC5zZXQodHJhY2tJRCwgVHJhY2tJbml0RGF0YSB7IG1faW5pdERhdGEuY29weVJlZigpLCAqa2V5
SURzIH0pOworCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAgICAgaWYgKGF1dG8gaW5z
dGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhrZXlJRHMudmFs
dWUoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnN0cmVhbURhdGFQ
YXJzZXIoKSkKKyAgICAgICAgICAgIGlmIChzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5
U2Vzc2lvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gbm8tb3AuCisgICAgICAgICAgICB9IGVs
c2UgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+c3RyZWFtRGF0YVBhcnNlcigpKQogICAgICAgICAg
ICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtl
eVJlY2lwaWVudDpwYXJzZXJdOwogICAgICAgICAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9y
ZSkgewogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CkBA
IC01NTIsNyArNTk1LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICB9CiAKICAgICBt
X2tleUlEcyA9IFdURk1vdmUoa2V5SURzLnZhbHVlKCkpOwotICAgIHBsYXllci0+aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoInNpbmYiLCBpbml0RGF0YUJ1ZmZlci0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSk7CisgICAgcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCgi
c2luZiIsIG1faW5pdERhdGEtPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogCiAgICAgbV93YWl0
aW5nRm9yS2V5ID0gdHJ1ZTsKICAgICBwbGF5ZXItPndhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7CkBA
IC01ODcsNyArNjMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5k
KFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRl
ckVycm9yRHVyaW5nUGFyc2luZyhlcnJvckNvZGUpOwogICAgIH0pOwogCi0gICAgbV9wYXJzZXIt
PnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgYWJvcnRDYWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPE1lZGlhU2FtcGxlPiYmIHNh
bXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBt
X3BhcnNlci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdIChSZWY8TWVkaWFTYW1w
bGVBVkZPYmpDPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRp
YVR5cGUpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCBhYm9ydENhbGxlZCAhPSB3ZWFrVGhpcy0+bV9hYm9ydENhbGxlZCkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTYxNiw3ICs2NTksNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICB9CiAg
ICAgfSk7CiAKLSAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmUsIGFib3J0Q2FsbGVkID0g
bV9hYm9ydENhbGxlZF0oUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNr
SUQpIG11dGFibGUgeworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNlbWFwaG9yZSwgYWJvcnRDYWxs
ZWQgPSBtX2Fib3J0Q2FsbGVkXShSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCB1aW50NjRf
dCB0cmFja0lEKSBtdXRhYmxlIHsKICAgICAgICAgLy8gQ2FsbGVkIG9uIHRoZSBkYXRhIHBhcnNl
ciBxdWV1ZS4KICAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9y
ZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgYWJvcnRDYWxsZWQsIGluaXREYXRh
ID0gV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmVdICgpIG11
dGFibGUgewpAQCAtNjM2LDYgKzY3OSwxMyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICB9CiAgICAgfSk7
CiAKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmll
ckZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgYWJvcnRD
YWxsZWQgPSBtX2Fib3J0Q2FsbGVkXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgdWlu
dDY0X3QgdHJhY2tJRCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAg
ICBpZiAoIXdlYWtUaGlzIHx8IGFib3J0Q2FsbGVkICE9IHdlYWtUaGlzLT5tX2Fib3J0Q2FsbGVk
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChXVEZNb3ZlKGluaXREYXRh
KSwgdHJhY2tJRCwgbnVsbHB0cik7CisgICAgfSk7CisKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQg
PSB0cnVlOwogCiAgICAgbV9hcHBlbmRRdWV1ZS0+ZGlzcGF0Y2goW2RhdGEgPSBXVEZNb3ZlKGRh
dGEpLCB3ZWFrVGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyks
IHBhcnNlciA9IG1fcGFyc2VyLCBhYm9ydENhbGxlZCA9IG1fYWJvcnRDYWxsZWRdKCkgbXV0YWJs
ZSB7CkBAIC03MzYsNiArNzg2LDExIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRlc3Ryb3lSZW5kZXJlcnMoKQogICAgICAgICBbcmVuZGVyZXIgZmx1c2hdOwogICAgICAgICBb
cmVuZGVyZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgICAgICBbbV9lcnJvckxpc3Rl
bmVyIHN0b3BPYnNlcnZpbmdSZW5kZXJlcjpyZW5kZXJlci5nZXQoKV07CisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgICAgIGlm
IChtX2NkbUluc3RhbmNlICYmIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9u
KCkpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSByZW1v
dmVDb250ZW50S2V5UmVjaXBpZW50OnJlbmRlcmVyLmdldCgpXTsKKyNlbmRpZgogICAgIH0KIAog
ICAgIFttX2Vycm9yTGlzdGVuZXIgaW52YWxpZGF0ZV07CkBAIC04NDMsNiArODk4LDExIEBAIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2ssCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlT
RVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5kZXJl
cnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRl
bnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpyZW5kZXJlci5nZXQoKV07Cisj
ZW5kaWYKKwogICAgICAgICAgICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0aGlzIH07CiAgICAgICAg
ICAgICBbcmVuZGVyZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOl57CiAgICAgICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQpAQCAtOTA5LDcgKzk2OSwyNCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpzZXRDRE1JbnN0YW5jZShDRE1JbnN0YW5jZSogaW5zdGFuY2UpCiAKICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOwogCisgICAgaWYgKHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRL
ZXlTZXNzaW9uKCkgJiYgbV9jZG1JbnN0YW5jZSkgeworICAgICAgICBpZiAobV9kaXNwbGF5TGF5
ZXIpCisgICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSByZW1v
dmVDb250ZW50S2V5UmVjaXBpZW50Om1fZGlzcGxheUxheWVyLmdldCgpXTsKKworICAgICAgICBm
b3IgKGF1dG8mIGF1ZGlvUmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQorICAg
ICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVu
dEtleVJlY2lwaWVudDphdWRpb1JlbmRlcmVyLmdldCgpXTsKKyAgICB9CisKICAgICBtX2NkbUlu
c3RhbmNlID0gZnBzSW5zdGFuY2U7CisKKyAgICBpZiAoc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3Vw
cG9ydEtleVNlc3Npb24oKSAmJiBtX2NkbUluc3RhbmNlKSB7CisgICAgICAgIGlmIChtX2Rpc3Bs
YXlMYXllcikKKyAgICAgICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigp
IGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworCisgICAgICAg
IGZvciAoYXV0byYgYXVkaW9SZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJlcnMudmFsdWVzKCkpCisg
ICAgICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50
S2V5UmVjaXBpZW50OmF1ZGlvUmVuZGVyZXIuZ2V0KCldOworICAgIH0KKwogICAgIGF0dGVtcHRU
b0RlY3J5cHQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlKTsKQEAgLTkyNiw4
ICsxMDAzLDEwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0Rl
Y3J5cHQoKQogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2VyKCkpCi0gICAgICAgIFtp
bnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVu
dDpwYXJzZXJdOworICAgIGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Np
b24oKSkgeworICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5zdHJlYW1EYXRhUGFyc2Vy
KCkpCisgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFk
ZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKKyAgICB9CiAgICAgaWYgKG1faGFzU2Vzc2lv
blNlbWFwaG9yZSkgewogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwog
ICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpAQCAtMTEwNSwxOSArMTE4
NCw4OSBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgICAgICBwbGF5ZXIt
PnNldEhhc0F2YWlsYWJsZUF1ZGlvU2FtcGxlKHJlbmRlcmVyLCBmYWxzZSk7CiB9CiAKK2Jvb2wg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrSXNCbG9ja2VkKHVpbnQ2NF90IHRyYWNr
SUQpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBzYW1wbGVQYWlyIDogbV9ibG9ja2VkU2FtcGxl
cykgeworICAgICAgICBpZiAoc2FtcGxlUGFpci5maXJzdCA9PSB0cmFja0lEKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKK3ZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmtleVN0YXR1c2VzQ2hhbmdlZCgpCit7CisgICAgd2hp
bGUgKCFtX2Jsb2NrZWRTYW1wbGVzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiBmaXJzdFBh
aXIgPSBtX2Jsb2NrZWRTYW1wbGVzLmZpcnN0KCk7CisKKyAgICAgICAgLy8gSWYgd2Ugc3RpbGwg
Y2FuJ3QgZW5xdWV1ZSB0aGUgc2FtcGxlLCBiYWlsLgorICAgICAgICBpZiAoIWNhbkVucXVldWVT
YW1wbGUoZmlyc3RQYWlyLmZpcnN0LCBmaXJzdFBhaXIuc2Vjb25kKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBhdXRvIGZpcnN0UGFpclRha2VuID0gbV9ibG9ja2VkU2FtcGxlcy50
YWtlRmlyc3QoKTsKKyAgICAgICAgZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKGZpcnN0UGFpclRha2Vu
LnNlY29uZCksIGZpcnN0UGFpclRha2VuLmZpcnN0KTsKKyAgICB9Cit9CisjZW5kaWYKKworYm9v
bCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuRW5xdWV1ZVNhbXBsZSh1aW50NjRfdCB0
cmFja0lELCBjb25zdCBNZWRpYVNhbXBsZUFWRk9iakMmIHNhbXBsZSkKK3sKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCisgICAgLy8gSWYg
c2FtcGxlIGJ1ZmZlcnMgZG9uJ3Qgc3VwcG9ydCBBVkNvbnRlbnRLZXlTZXNzaW9uOiBlbnF1ZXVl
IHNhbXBsZQorICAgIGlmICghc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3VwcG9ydEtleVNlc3Npb24o
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBpZiBzYW1wbGUgaXMgdW5lbmNyeXRw
ZWQ6IGVucXVldWUgc2FtcGxlCisgICAgaWYgKHNhbXBsZS5rZXlJRHMoKS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlIGlzIGVuY3J5cHRlZCwgYnV0
IHdlIGFyZSBub3QgYXR0YWNoZWQgdG8gYSBDRE06IGRvIG5vdCBlbnF1ZXVlIHNhbXBsZS4KKyAg
ICBpZiAoIW1fY2RtSW5zdGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIGlm
IHNhbXBsZSBpcyBlbmNyeXB0ZWQsIGFuZCBrZXlJRHMgbWF0Y2ggdGhlIGN1cnJlbnQgc2V0IG9m
IGtleUlEczogZW5xdWV1ZSBzYW1wbGUuCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9jdXJyZW50
VHJhY2tJRHMuZmluZCh0cmFja0lEKTsKKyAgICBpZiAoZmluZFJlc3VsdCAhPSBtX2N1cnJlbnRU
cmFja0lEcy5lbmQoKSAmJiBmaW5kUmVzdWx0LT52YWx1ZSA9PSBzYW1wbGUua2V5SURzKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaWYgc2FtcGxlJ3Mgc2V0IG9mIGtleUlEcyBk
b2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzZXQgb2Yga2V5SURzLCBjb25zdWx0IHdpdGggdGhl
IENETQorICAgIC8vIHRvIGRldGVybWluZSBpZiB0aGUga2V5SURzIGFyZSB1c2FibGU7IGlmIHNv
LCB1cGRhdGUgdGhlIGN1cnJlbnQgc2V0IG9mIGtleUlEcyBhbmQgZW5xdWV1ZSBzYW1wbGUuCisg
ICAgaWYgKG1fY2RtSW5zdGFuY2UtPmlzQW55S2V5VXNhYmxlKHNhbXBsZS5rZXlJRHMoKSkpIHsK
KyAgICAgICAgbV9jdXJyZW50VHJhY2tJRHMuc2V0KHRyYWNrSUQsIHNhbXBsZS5rZXlJRHMoKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisjZWxzZQor
ICAgIHJldHVybiB0cnVlOworI2VuZGlmCit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgQXRv
bVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKICAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVfb3Io
MCk7CiAgICAgaWYgKHRyYWNrSUQgIT0gbV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlv
UmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0
Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKTsKLSAg
ICBpZiAocGxhdGZvcm1TYW1wbGUudHlwZSAhPSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZm
ZXJUeXBlKQorICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KHNhbXBsZSkpOworICAg
IGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBzYW1wbGVBVkZPYmpDID0gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oV1RGTW92ZShzYW1wbGUpKTsKKyAgICBpZiAo
IXNhbXBsZUFWRk9iakMtPmtleUlEcygpLmlzRW1wdHkoKSAmJiAhY2FuRW5xdWV1ZVNhbXBsZSh0
cmFja0lELCBzYW1wbGVBVkZPYmpDKSkgeworICAgICAgICBtX2Jsb2NrZWRTYW1wbGVzLmFwcGVu
ZCh7IHRyYWNrSUQsIFdURk1vdmUoc2FtcGxlQVZGT2JqQykgfSk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKKyAgICBlbnF1ZXVlU2FtcGxlKFdURk1vdmUoc2FtcGxlQVZGT2JqQyksIHRyYWNr
SUQpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxl
KFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lEKQorewog
ICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIERFQlVHX0xP
Ryhsb2dTaXRlSWRlbnRpZmllciwgInRyYWNrIElEID0gIiwgdHJhY2tJRCwgIiwgc2FtcGxlID0g
Iiwgc2FtcGxlLmdldCgpKTsKIAorICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlID0g
c2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworCiAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBm
b3JtYXREZXNjcmlwdGlvbiA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlv
bihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpOwogICAgIEFTU0VSVChmb3Jt
YXREZXNjcmlwdGlvbik7CiAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikgewpAQCAtMTI4NCw2
ICsxNDMzLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVh
ZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKQogICAgIGVsc2UKICAgICAgICAgcmV0
dXJuOwogCisgICAgaWYgKHRyYWNrSXNCbG9ja2VkKHRyYWNrSUQpKQorICAgICAgICByZXR1cm47
CisKICAgICBwcm92aWRlTWVkaWFEYXRhKEF0b21TdHJpbmc6Om51bWJlcih0cmFja0lEKSk7CiB9
CiAKQEAgLTEzNzUsMTEgKzE1MjcsMjEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6c2V0VmlkZW9MYXllcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogbGF5ZXIKICAgICAg
ICAgW21fZGlzcGxheUxheWVyIGZsdXNoXTsKICAgICAgICAgW21fZGlzcGxheUxheWVyIHN0b3BS
ZXF1ZXN0aW5nTWVkaWFEYXRhXTsKICAgICAgICAgW21fZXJyb3JMaXN0ZW5lciBzdG9wT2JzZXJ2
aW5nTGF5ZXI6bV9kaXNwbGF5TGF5ZXIuZ2V0KCldOworCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgICAgICBpZiAobV9jZG1JbnN0
YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbigpKQorICAgICAg
ICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtl
eVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5nZXQoKV07CisjZW5kaWYKICAgICB9CiAKICAgICBt
X2Rpc3BsYXlMYXllciA9IGxheWVyOwogCiAgICAgaWYgKG1fZGlzcGxheUxheWVyKSB7CisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAg
ICAgICBpZiAobV9jZG1JbnN0YW5jZSAmJiBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBwb3J0S2V5
U2Vzc2lvbigpKQorICAgICAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9u
KCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX2Rpc3BsYXlMYXllci5nZXQoKV07CisjZW5kaWYK
KwogICAgICAgICBXZWFrUHRyIHdlYWtUaGlzIHsgKnRoaXMgfTsKICAgICAgICAgW21fZGlzcGxh
eUxheWVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCkgdXNpbmdCbG9jazpeIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIxNGQyMzE1NTk0YTg4
ODM2NS4uZmMyYmFiOTA3ZDk4MzUzZDFmOGFhZDY5NGY5ZTU1MmE0YzI5ZmU3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTG9nZ2VyOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKLWNsYXNzIE1lZGlhU2FtcGxlOworY2xh
c3MgTWVkaWFTYW1wbGVBVkZPYmpDOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB1c2lu
ZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxNZWRpYVNh
bXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpPjsKKyAg
ICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxN
ZWRpYVNhbXBsZUFWRk9iakM+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soRGlkUHJv
dmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2RpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtMTM3LDEyICsx
MzcsMTkgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5bmNocm9u
b3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KLSAgICB1c2luZyBEaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFJlZjxVaW50OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lEKT47CisgICAgdXNpbmcgRGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxi
YWNrID0gRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1aW50NjRfdCB0cmFja0lE
KT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAg
ICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAorICAgIC8vIFdpbGwgYmUg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8
U2hhcmVkQnVmZmVyPiYmLCB1aW50NjRfdCB0cmFja0lEKT47CisgICAgdm9pZCBzZXREaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJZGVudGlmaWVyRm9yVHJhY2tJRENhbGxiYWNrKERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmll
ckZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKwogcHJvdGVj
dGVkOgogICAgIFNvdXJjZUJ1ZmZlclBhcnNlcigpOwogCkBAIC0xNTIsNiArMTU5LDcgQEAgcHJv
dGVjdGVkOgogICAgIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayBtX2RpZFByb3ZpZGVNZWRp
YURhdGFDYWxsYmFjazsKICAgICBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKICAgICBEaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgbV9kaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJh
Y2s7CisgICAgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SWRlbnRpZmllckZvclRyYWNrSURD
YWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElkZW50aWZpZXJGb3JUcmFja0lE
Q2FsbGJhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4
IDA1YTgzMTZkYzI3ZTYzMDE3ZjM5N2YxOTI0NjliODJhMzNiN2IwMzQuLmFlMTY0MTRmMjFjNjg0
NmMxODk3NzA5ZTE0MjRlNGE2YTRiNzYxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IFRyYWNrRQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiBrZXlJZCA9IGtleUlk
RWxlbWVudC52YWx1ZSgpOwotICAgICAgICAgICAgbV9rZXlJZHMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHRyYWNrRW50cnkudHJhY2tfdWlkLnZhbHVlKCksIFVpbnQ4QXJyYXk6OmNyZWF0ZShrZXlJ
ZC5kYXRhKCksIGtleUlkLnNpemUoKSkpKTsKKyAgICAgICAgICAgIG1fa2V5SWRzLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcih0cmFja0VudHJ5LnRyYWNrX3VpZC52YWx1ZSgpLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShrZXlJZC5kYXRhKCksIGtleUlkLnNpemUoKSkpKTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDI4ZTczZmJhNTAyM2M4MTZiZmIy
NDJjNWY5OTBkYjk3YTE4YmMxZmYuLmU4NzZhYjQxNGE0YWJiMzNkNTE4YzM3YjQxZmU1YTE0Nzc2
YWI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTI2OSw3ICsyNjksNyBA
QCBwcml2YXRlOgogICAgIHdlYm06OlN0YXR1cyBPbkZyYW1lKGNvbnN0IHdlYm06OkZyYW1lTWV0
YWRhdGEmLCB3ZWJtOjpSZWFkZXIqLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcpIGZpbmFsOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluaXRpYWxpemF0aW9uU2VnbWVudD4gbV9pbml0aWFsaXph
dGlvblNlZ21lbnQ7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPFVpbnQ4QXJy
YXk+Pj4gbV9rZXlJZHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmPFNoYXJl
ZEJ1ZmZlcj4+PiBtX2tleUlkczsKICAgICB3ZWJtOjpTdGF0dXMgbV9zdGF0dXM7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHdlYm06OldlYm1QYXJzZXI+IG1fcGFyc2VyOwogICAgIGJvb2wgbV9pbml0
aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNh
bXBsZUdTdHJlYW1lci5oCmluZGV4IDNiNWE2OWFhNzZhNmFhZjE3YTU2MTc2YzFmYjIzOWE0Zjkx
MGIwYmIuLmZmOGMxYThiNDgxZDdmMzNjYzI0N2I2NGRmMWI4ZmFjNzBjYmRkZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBs
ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAg
ICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zs
YWdzOyB9CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxlVHlwZTsgfQog
ICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUlt
YWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRl
LmNwcAppbmRleCA0YWM2OWFjZDlhMDBjZjZlMTk5YTMzYWFjNDczZDhjZDg1ZGM1ZTVmLi4wYTk0
YWNmMWExZTEzNjZmNmE1NzI1ODhiNzcwNDFlNGMzYzY0NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNjEsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIHNp
emVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7
IH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3Jt
U2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1w
bGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxh
dGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlOyB9CiAgICAgc3RkOjpvcHRpb25hbDxCeXRl
UmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA0MmEzMjA2NTRiMDNkZjliNDM5Nzc3OTQyNTY0
NTgyMDA2Y2RhMTEwLi43MTFjZWQwYmYxMzE0MjU5MTc3NWZmZDc5M2FlNWE4NmM2YWUwY2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OTgsMTEgKzY5OCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQo
Y29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1lc3NhZ2UpCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgbWVzc2FnZSkKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZVJlZmVyZW5j
ZTsKLSAgICBpZiAobWVzc2FnZSkKLSAgICAgICAgbWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVzc2Fn
ZS0+ZGF0YSgpLCBtZXNzYWdlLT5ieXRlTGVuZ3RoKCkgfTsKKyAgICBtZXNzYWdlUmVmZXJlbmNl
ID0geyBtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkgfTsKICAgICBtX3dlYlByb2Nlc3ND
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlh
UGxheWVyS2V5TmVlZGVkKFdURk1vdmUobWVzc2FnZVJlZmVyZW5jZSkpLCBtX2lkKTsKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmgKaW5kZXggOTMxNmI2NmFiMzU5NjZlNWI2NDVkZDFjN2NlMGU4MTJm
MjA2YTYzNy4uNTk1YzU4OTE5ZWExM2ZlYjk1ZDhmYzBkMGI0MzIzMDY4YTgyYTBiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJD
YWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1l
ZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIFN0
cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCA3NzRjY2YzMWYy
Njc3ZDBhMDUyMTc2NTFiM2I0ZTEzMjM1YzRjMjk0Li5mODk1N2IzYjhlNDE4NjIzYjNiNTZjMDEy
MTU3MDA1YmRjZjYyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTE2
Miw3ICsxNjIsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2UoUmV0
YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogICAgICAgICBkaWRQYXJzZVRy
YWNrcyh7IH0sIGVycm9yQ29kZSk7CiAgICAgfSk7CiAKLSAgICBwYXJzZXItPnNldERpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1d
KFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUpIHsKKyAgICBwYXJzZXItPnNldERpZFByb3ZpZGVNZWRpYURhdGFD
YWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFJlZjxNZWRpYVNh
bXBsZUFWRk9iakM+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlKSB7CiAgICAgICAgIGRpZFByb3ZpZGVNZWRpYURhdGEoV1RGTW92ZShtZWRp
YVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiAKQEAgLTIyNCw3ICsyMjQs
NyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAgIG1faW5pdCA9IHRydWU7CiB9CiAKLXZv
aWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2FtcGxl
PiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQordm9pZCBN
ZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGVBVkZP
YmpDPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQogewog
ICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIu
aAppbmRleCA2NTA5M2U5ZTQ2YjQwYjVhMzk3NmZkZWYyOWU2MTNjNjQ1MWYzMTVhLi4xNWQ1NTcz
NjMzODE3NDYwYzJlNjIwNDQxOTAxMDIzY2Y4NmI0YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRS
ZWFkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogREVDTEFSRV9DT1JFX01FRElBX1RSQUlUUyhGb3Jt
YXRSZWFkZXIpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVNhbXBsZUFWRk9i
akM7CiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXI7CiB9CiAKQEAgLTY3LDcgKzY4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFBhcnNlVHJhY2tzKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYmLCB1aW50NjRfdCBlcnJvckNvZGUpOwog
ICAgIHZvaWQgZGlkU2VsZWN0VmlkZW9UcmFjayhXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZSYs
IGJvb2wpIHsgfQogICAgIHZvaWQgZGlkRW5hYmxlQXVkaW9UcmFjayhXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZSYsIGJvb2wpIHsgfQotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8
V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQz4m
JiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmluaXNoUGFyc2luZyhSZWY8
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIC8vIENNQmFzZUNsYXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGY4MzM2YmYwMTM3MjEwOTBkYTE5
Mzc4ZmI1YTQ1M2M4ZGFjYTU3NmYuLmI2NmYzYTM1YTk2ZjdiNWQ1Zjk3YWJkNmVkYTAwMjYxNTgy
NmUxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCkBAIC01MSw2ICs1MSw3
IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwogICAg
IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7Cisg
ICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBs
ZVR5cGU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBm
aW5hbDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVk
aWFUaW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA4ZDll
NWZmOTJhYzNiM2YwZWI3MTMzOWVmZThiNGJmM2Y0Mjk2NGRjLi41YzcxYTI2OGUwZDBiNDY3NTBi
M2I2MmY1YzdkY2Y3NzJmMmIwNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBA
IC0xMTkxLDcgKzExOTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRk
ZWQoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KElQQzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKFJlZlB0ciBwbGF5ZXIg
PSBtX3BsYXllci5nZXQoKSkKLSAgICAgICAgcGxheWVyLT5rZXlOZWVkZWQoVWludDhBcnJheTo6
Y3JlYXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSkucHRyKCkpOworICAgICAgICBw
bGF5ZXItPmtleU5lZWRlZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlKSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKaW5kZXggNzIwOTQwOTczOTY5OWUzNzFhMjNhNGIxYTUx
YTdmZDAyYjUzNmIwMS4uMzQwMGI2N2FhZTNkYWVkNTFhNTU0MmM3M2NkYjIwZjFlZGY0YWEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB1
aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CiAgICAgLy8gRklYTUU6IFdo
ZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFTYW1wbGUsIHRoZXNlIHdpbGwgbm90IGJlIG5lZWRl
ZC4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZp
bmFsOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlw
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHlUeXBlOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGdl
dFBpeGVsQnVmZmVyKCk7CkBAIC0xNDMsOSArMTQ0LDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJik7
CiB9CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHkpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50
eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBl
OyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBt
ZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGVUeXBlKCkgPT0g
V2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGU7IH0KIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6VmlkZW9GcmFtZSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9y
bVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eVR5cGU7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVk
aWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBs
ZVR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
VHlwZTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzg4ZGQ5MGQ2ZGRhMWNk
M2IyNmVjM2UyZGM2NzY1ODgwNDY5ZjI4Zi4uMjQ0OWNlMmRiNTk1OTEwNzFkNDRmOGFhNDU0ZDI1
NTkyMzIxNmQzYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQor
CisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwOgorCiAyMDIyLTAyLTE1ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdTXSBTdXBwb3J0IFBS
cyB3aGVuIHNlbmRpbmcgbGF5b3V0IHRlc3QgZmFpbHVyZSBlbWFpbHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggYzQ1YzY3YTMxNjZi
ZmZiOTg3N2JjMGQ4MzRmZWY4NDRhNDg2NjUxOS4uNWE2NTM1ODMwMTVkMjg4ZGVmNDdiY2I0Nzky
YzI0YzhkMmY5YTdlZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NhbXBsZU1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NhbXBsZU1hcC5jcHAKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIH0KICAgICBTYW1w
bGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0
Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZv
cm1TYW1wbGU6Ok5vbmUsIHsgbnVsbHB0ciB9IH07IH0KKyAgICBQbGF0Zm9ybVNhbXBsZTo6VHlw
ZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0Zm9ybVNhbXBs
ZTo6Tm9uZTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0IGZpbmFsIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453264</attachid>
            <date>2022-02-25 14:35:12 -0800</date>
            <delta_ts>2022-02-25 15:16:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236109-20220225143511.patch</filename>
            <type>text/plain</type>
            <size>18439</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhjMTAyNzA2NTEyZTNiYWFkYWEzZDYx
YjYzNWZmNzJkMjE2NGFmOTAuLjZlMTczZTVhNmQzMGUxOWIyMzM2YmRkZmI1NzA5MGI0MDMyODli
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMjUgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODc4NTg0ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbDoKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5
KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyNDMw
NWY3NTVmYzJmNzI5Njk3ODg4ZTNhMDQ2MjYyNjU2NTM5OC4uZGUwM2JhNjYxNDAzZGY0YzQ4MTVl
ZjM2NWY4ZjM3NjI5NDVhYmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAy
LTI1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
QWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9y
VHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg3ODU4
NDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUt
bGFuZCBzdXBwb3J0IGFmdGVyIGEgcm9sbG91dCBpbiByMjkwMzExLCB0aGlzIHRpbWUgd2l0aCBh
biBvZmYtYnktZGVmYXVsdCBFeHBlcmltZW50YWwgRmVhdHVyZQorICAgICAgICBmbGFnLgorCisg
ICAgICAgIEluIGFkZGl0aW9uIHRvIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJlbmRlcmVyIGNsYXNz
ZXMgc3VwcG9ydCBBVkNvbnRlbnRLZXlTZXNzaW9uLCBhbHNvIGNoZWNrIHdoZXRoZXIKKyAgICAg
ICAgdGhlIFJ1bnRpbWVTZXR0aW5nIGhhcyBiZWVuIGVuYWJsZWQuIFRoaXMgcmVxdWlyZXMgcGFz
c2luZyB0aGF0IHNldHRpbmcgdGhyb3VnaCB0byB0aGUgCisgICAgICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYSBzaW5nbGV0b24sIHNvIGl0IGNhbiBiZSBhY2Nlc3NlZCBmcm9tIHBsYXRmb3Jt
Ly4KKworICAgICAgICBJZiB0aGUgcmVuZGVyZXIgc3VwcG9ydCBjaGVjayBzdWNjZWVkcyBhbmQg
dGhlIHNldHRpbmcgaXMgZW5hYmxlZCwgb25seSB0aGVuIHNob3VsZCB0aGUgZGVsZWdhdGUgZm9y
CisgICAgICAgIEFWU3RyZWFtRGF0YVBhcnNlciBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBuZXcg
LWRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyIGNhbGxiYWNrLiBTdWJjbGFzcyB0aGUKKyAg
ICAgICAgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgaW50byBhIG5ldyBXZWJBVlN0cmVh
bURhdGFQYXJzZXJXaXRoS2V5U3BlY2lmaWVyTGlzdGVuZXIgb2JqZWN0LCBhbmQKKyAgICAgICAg
aW5zdGFudGlhdGUgb25lIG9yIHRoZSBvdGhlciBhY2NvcmRpbmcgdG8gdGhlIHN1cHBvcnQgY2hl
Y2tzIGFib3ZlLgorCisgICAgICAgICogcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNhbXBsZUJ1ZmZl
ckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXRT
YW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2FtcGxlQnVmZmVyQ29udGVudEtleVNl
c3Npb25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKC1bV2Vi
QVZTdHJlYW1EYXRhUGFyc2VyV2l0aEtleVNwZWNpZmllckxpc3RlbmVyIHN0cmVhbURhdGFQYXJz
ZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDpdKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMpOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1E
YXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6XSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVCdWZm
ZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbik6CisKIDIwMjItMDItMjUgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBITFMgKyBNb2Rlcm4gRU1F
IGtleSByb3RhdGlvbiBjYXVzZXMgcGxheWJhY2sgdG8gc3RhbGwgaW5kZWZpbml0ZWx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDI2MjcxMmU2MjA5OTYyYjA5NzdjNzhmMGExMzdkZjEzMTEyZjIyMzIuLjE4ZTRjMGI1
MjkzODNlMWMxYzY4NDljZDk2NWNjYWI5ZWE4ODFkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMjItMDItMjUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNw
ZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84ODc4NTg0ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXNzIHRoZSBuZXcgUnVudGltZUVuYWJsZWRGZWF0dXJlIHRocm91Z2ggdG8gdGhl
IEdQVSBwcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6c2V0U2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Np
b25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzUHJveHk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5oOgorCiAyMDIyLTAyLTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWxsb3cgbG9nZ2luZyB0byBiZSBjb25maWd1
cmVkIGJ5IE5TRGVmYXVsdHMgKHdpdGhvdXQgcmVncmVzc2luZyBsYXVuY2ggdGltZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggNjNlMjQ5NDVkNjAxNzYzMDdkNjA5ZjFiYTU2NTQ1
ZmMwYTE5MmU0My4uNWVmNDhkNTNiMjliNzdiZGEzNmE4ZGVkZjY0MmEwODdiOWQxMDBhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAgLTEyMzEsNiArMTIzMSwxOSBAQCBSZXNvbHV0
aW9uTWVkaWFGZWF0dXJlRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1
ZQogCitTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkOgorICB0eXBl
OiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ29udGVudEtleVNlc3Npb24gc3VwcG9ydCBm
b3IgU2FtcGxlQnVmZmVyIFJlbmRlcmVycyIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAi
Q29udGVudEtleVNlc3Npb24gc3VwcG9ydCBmb3IgU2FtcGxlQnVmZmVyIFJlbmRlcmVycyBFbmFi
bGVkIgorICBjb25kaXRpb246IEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorICBkZWZhdWx0
VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJL
aXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBm
YWxzZQorCiAjIEZJWE1FOiBJcyB0aGlzIGltcGxlbWVudGVkIGZvciBXZWJLaXRMZWdhY3k/IElm
IG5vdCwgdGhpcyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHku
CiAjIEZJWE1FOiBUaGlzIHNob3VsZCBoYXZlIGl0J3Mgb3duIEVOQUJMRS4KIFNjcmVlbkNhcHR1
cmVFbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5jcHAKaW5kZXggMDRmZmYyMWEyNmFkYmM3M2Q4Yjc0ZGJmNTVhY2M4ZTk4MjRmMzVkYS4uNWMw
NWI5NzA5MWM4Y2RiNTI2NzRmOWM3MTFlZGM3NjJhYmJiY2MyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC05MSw0ICs5MSwxMiBAQCB2
b2lkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU291cmNlSW5saW5lUGFpbnRpbmdF
bmFibGVkKGJvb2wgaXNFbmFibGVkKQogfQogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtF
WVNQRUNJRklFUikKK3ZvaWQgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2FtcGxlQnVmZmVy
Q29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9z
YW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkID0gZW5hYmxlZDsKKyAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNz
aW9uU3VwcG9ydEVuYWJsZWQoZW5hYmxlZCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApp
bmRleCA1NmIyM2Y3N2Q2Y2I1MWFmMDcwMTEyMmU4YWUzZGU5NGJiMGRhOTYwLi5kYTZiNTQ0ODVl
Mjc1YmIzOTY0MWM2MDNkY2FmMmZkODE3MmU1NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMjQxLDYgKzI0MSwxMSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBtZWRpYVNvdXJjZUlubGluZVBhaW50aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFTb3VyY2VJbmxpbmVQYWludGluZ0VuYWJsZWQ7IH0KICNlbmRpZgogCisjaWYgSEFW
RShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTYW1w
bGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wpOworICAgIGJvb2wg
c2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZDsgfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICB2b2lkIHNldEJ1
aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2J1aWx0SW5Ob3Rp
ZmljYXRpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgYnVpbHRJbk5vdGlmaWNh
dGlvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9idWlsdEluTm90aWZpY2F0aW9uc0VuYWJs
ZWQ7IH0KQEAgLTM4Niw2ICszOTEsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWVkaWFTb3Vy
Y2VJbmxpbmVQYWludGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBIQVZFKEFW
Q09OVEVOVEtFWVNQRUNJRklFUikKKyAgICBib29sIG1fc2FtcGxlQnVmZmVyQ29udGVudEtleVNl
c3Npb25TdXBwb3J0RW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogI2lmIEVOQUJMRShCVUlM
VF9JTl9OT1RJRklDQVRJT05TKQogICAgIGJvb2wgbV9idWlsdEluTm90aWZpY2F0aW9uc0VuYWJs
ZWQgeyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCmluZGV4IDBm
M2U3MGJhM2VhMTcxNDRiNzk5MzAzNDQzMjE1Y2YxNWNmYzkyN2QuLjUzZmVkNTIwNmYxM2VkYTI2
MzJhNTFmMmQ2MGI5MGY4NjJmOGQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCkBA
IC03MSw2ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bWVkaWFTb3VyY2VJbmxpbmVQYWludGluZ0VuYWJsZWQoKTsKICNlbmRpZgogCisjaWYgSEFWRShB
VkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChib29sKTsKKyAgICBz
dGF0aWMgV0VCQ09SRV9FWFBPUlQgYm9vbCBzYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1
cHBvcnRFbmFibGVkKCk7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgc2NoZWR1bGVT
ZXNzaW9uU3RhdHVzVXBkYXRlKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVOb3dQbGF5aW5nSW5m
bygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGVkOGNkZTAzMGY5MDA5NDFj
ODY3Y2YzOTIyYzUwMzEwZjBmZmZiNTIuLmEwZTkwMmYxMmNlN2ViMTdjNzc2ZDQzYzEzNWM4NTMy
NmM3NWNmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTkyLDYgKzkyLDIw
IEBAIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjptZWRpYVNvdXJjZUlubGluZVBhaW50
aW5nRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVS
KQorc3RhdGljIGJvb2wgc19zYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFi
bGVkID0gZmFsc2U7Cit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0U2FtcGxlQnVm
ZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAg
c19zYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkID0gZW5hYmxlZDsK
K30KKworYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNhbXBsZUJ1ZmZlckNvbnRlbnRL
ZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoKQoreworICAgIHJldHVybiBzX3NhbXBsZUJ1ZmZlckNv
bnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQ7Cit9CisjZW5kaWYKKworCiB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKIHsKICAgICBjb25zdGV4
cHIgYXV0byBkZWxheUJlZm9yZVNldHRpbmdDYXRlZ29yeU5vbmUgPSAyX3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBl
NjFiMTQ3ZjYzYzVmNDU3Mjc1ZjYwNTAzZTM3YThiNTJkMThlM2EzLi45ZDYwMmM0YzdhYWNhMWZm
YTcxYTMyNjFhNmE0NDQ4YmZiZmNiOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTE0MCwxNiArMTQwLDIxIEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIF9wYXJlbnQtPmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW5pdERhdGEs
IHRyYWNrSUQpOwogfQogCitAZW5kCisKICNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikK
K0BpbnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyV2l0aEtleVNwZWNpZmllckxpc3RlbmVy
IDogV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFdlYkFWU3RyZWFtRGF0YVBhcnNlcldpdGhLZXlTcGVjaWZpZXJMaXN0ZW5lcgogLSAodm9pZClz
dHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRp
ZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOihBVkNvbnRlbnRLZXlTcGVjaWZpZXIgKilrZXlT
cGVjaWZpZXIgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECiB7CiAgICAg
QVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJz
ZXIpOwogICAgIGlmIChba2V5U3BlY2lmaWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
aW5pdGlhbGl6YXRpb25EYXRhKV0pCiAgICAgICAgIF9wYXJlbnQtPmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoa2V5U3BlY2lmaWVyLmluaXRpYWxpemF0aW9u
RGF0YSwgdHJhY2tJRCk7CiB9Ci0jZW5kaWYKLQogQGVuZAorI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMjE2LDggKzIyMSwxMyBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0
c1R5cGUgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZAog
CiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkK
ICAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0
YW5jZSgpIGluaXRdKSkKLSAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJl
bnQ6dGhpc10pKQogeworI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorICAgIGlmIChN
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3Vw
cG9ydEVuYWJsZWQoKSkKKyAgICAgICAgbV9kZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVlN0cmVh
bURhdGFQYXJzZXJXaXRoS2V5U3BlY2lmaWVyTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyc2Vy
Om1fcGFyc2VyLmdldCgpIHBhcmVudDp0aGlzXSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAg
IG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDp0aGlzXSk7CiB9CiAKIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KaW5kZXggZWMxNzg5NThhYzdmMzI1MjQ5ZjdjMWNlMmZkZDdlMDhiN2M4YzAxNi4uNzM3MWJh
NTBjMGNmYmI1ZmIwYjgzZjIzMTFlMTY2MWE3ZWY2MTk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQxLDYgKzQx
LDcgQEAKICNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgog
I2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgor
I2ltcG9ydCAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKQEAgLTI4NCw2ICsyODUsMTIgQEAgc3RhdGljIHVp
bnQ2NF90IG5leHRNYXBJRCgpCiBzdGF0aWMgYm9vbCBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBw
b3J0S2V5U2Vzc2lvbigpCiB7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHMgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF57CisgICAgICAgIHN1cHBvcnRzID0gW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJB
dWRpb1JlbmRlcmVyQ2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKEFWQ29udGVu
dEtleVJlY2lwaWVudCldCisgICAgICAgICAgICAmJiBbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllckNsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRlbnRL
ZXlSZWNpcGllbnQpXQorICAgICAgICAgICAgJiYgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpz
YW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKCk7CisgICAgfSk7CiAg
ICAgcmV0dXJuIHN1cHBvcnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vz
cy5jcHAKaW5kZXggNWZjMTUwNGE4ZTFkZDQ5NzIyMWQxMGY0MzkzMWRlY2Q1YTc0N2JkZi4uZmZl
MGFjZDgxMjMyNmEzYTA3YjJhNTIzNzhiYTdmNjFlYTAwMGQ4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtNTMxLDYgKzUzMSwxNiBAQCB2b2lkIEdQVVByb2Nl
c3M6OnNldFVzZVNjcmVlbkNhcHR1cmVLaXQoYm9vbCB1c2UpCiB9CiAjZW5kaWYKIAorI2lmIEhB
VkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQordm9pZCBHUFVQcm9jZXNzOjpzZXRTYW1wbGVCdWZm
ZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBp
ZiAobV9zYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkID09IGVuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9u
U3VwcG9ydEVuYWJsZWQgPSBlbmFibGVkOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6
c2V0U2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChlbmFibGVkKTsK
K30KKyNlbmRpZgorCiB2b2lkIEdQVVByb2Nlc3M6OndlYlByb2Nlc3NDb25uZWN0aW9uQ291bnRG
b3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Om9iamVjdENvdW50Rm9yVGVzdGluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5oCmluZGV4IGRjMDNhYTYyNTQzM2VkZDdjNmFhZjdmZWUzNjAzMmQ5YmUxYzQ2ZDUuLjkx
MGE4YjhhMmU5YmMxNDI4NGI3YmZkN2M2ZjBhODM1MDZmMzdkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MuaApAQCAtMTkyLDYgKzE5MiwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0VXNlU2NyZWVuQ2FwdHVyZUtpdChib29sKTsKICNlbmRpZgogCisjaWYgSEFWRShBVkNP
TlRFTlRLRVlTUEVDSUZJRVIpCisgICAgdm9pZCBzZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vz
c2lvblN1cHBvcnRFbmFibGVkKGJvb2wpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ0ZQUkVGU19E
SVJFQ1RfTU9ERSkKICAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiYgZW5jb2RlZFZhbHVlKTsKICAgICB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkTm90aWZpY2F0aW9u
c0ZvclByZWZlcmVuY2VDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOwpAQCAtMjU3LDYg
KzI2MSwxMCBAQCBwcml2YXRlOgogI2lmIEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQogICAgIGJv
b2wgbV91c2VTY3JlZW5DYXB0dXJlS2l0IHsgZmFsc2UgfTsKICNlbmRpZgorI2lmIEhBVkUoQVZD
T05URU5US0VZU1BFQ0lGSUVSKQorICAgIGJvb2wgbV9zYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vz
c2lvblN1cHBvcnRFbmFibGVkIHsgZmFsc2UgfTsKKyNlbmRpZgorCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggZjUzMTFiODFjNTYzN2IwMThmNjU2OGI3ZjVlNGE3Yjk1NTVlZDNmMi4u
OGU5OTI5YTUzNWI0MWUyZDE2N2YyMWU1YjNlZjMyNWJkNWM4MjNjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgxLDYgKzgxLDEw
IEBAIG1lc3NhZ2VzIC0+IEdQVVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFVzZVNj
cmVlbkNhcHR1cmVLaXQoYm9vbCB1c2UpOwogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtF
WVNQRUNJRklFUikKKyAgICBTZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRF
bmFibGVkKGJvb2wgZW5hYmxlZCk7CisjZW5kaWYKKwogICAgIFJlcXVlc3RCaXRtYXBJbWFnZUZv
ckN1cnJlbnRUaW1lKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVy
LCBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgcGxheWVySWRlbnRpZmllcikgLT4gKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlKSBBc3luYwogCiAjaWYgRU5BQkxF
KENGUFJFRlNfRElSRUNUX01PREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYWZhYjg3MjE0MjQy
MGY1MmI5OTJkZmFmMTI3NzI5ZDAyNDc2ZDhmMC4uNDY0Njc2NjgzMmUxNTQ3ZDBiMGI5OTllMjk1
ZWUyZjk3ZmFmYjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDcsNiArNDcsOSBAQCB2b2lk
IEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgbWljcm9waG9uZVNh
bmRib3hFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKKyNlbmRpZgorI2lmIEhBVkUoQVZDT05URU5U
S0VZU1BFQ0lGSUVSKQorICAgIGVuY29kZXIgPDwgc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Np
b25TdXBwb3J0RW5hYmxlZDsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgcGFyZW50UElEOwogCkBA
IC03NSw2ICs3OCwxMSBAQCBib29sIEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEdQVVByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKICNlbmRpZgorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNz
aW9uU3VwcG9ydEVuYWJsZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhcmVudFBJRCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZWU4ZTliZmU4OTY0NjZiZGM0NDc3ZWM4NDZhMTVi
ODkyNDZlMWRjOS4uZDU5MzBlZWY4YzJlMzJiYzNmMDliMjI5NjhhZjE3OTNjZmIyZjY5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC00Nyw2ICs0Nyw5IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIG1pY3JvcGhvbmVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCisjZW5kaWYKKyNp
ZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKyAgICBib29sIHNhbXBsZUJ1ZmZlckNvbnRl
bnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgUHJvY2Vz
c0lEIHBhcmVudFBJRDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCAzMzQxNTQxZGJkMjEwOWMzYWJiYTI5ZDdhMDc5NGI0OTgxZmFl
YWE4Li4yMzJjNTcyNjUxMTM5NDU3ODU2ODA2YzU0NzlkNjI3YzQ4NDQxMDU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjc5LDYg
KzY3OSwxMiBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXMoV2ViUHJv
Y2Vzc1Byb3h5JiB3ZWJQcm9jZXNzKQogICAgICAgICB9CiAjZW5kaWYKIAorI2lmIEhBVkUoQVZD
T05URU5US0VZU1BFQ0lGSUVSKQorICAgICAgICBpZiAoIW1faGFzRW5hYmxlZFNhbXBsZUJ1ZmZl
ckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydCAmJiBwcmVmZXJlbmNlcy5zYW1wbGVCdWZmZXJDb250
ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIG1faGFzRW5hYmxl
ZFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydCA9IHRydWU7CisgICAgICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpTZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vz
c2lvblN1cHBvcnRFbmFibGVkKG1faGFzRW5hYmxlZFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNz
aW9uU3VwcG9ydCksIDApOworICAgICAgICB9CisjZW5kaWYKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAppbmRleCBlYWRlOWI1OWJk
ZjVhYjEwNzUzOGJmNWIwNzQzMDcxYjkxOThkMTlkLi4wMDYyNTVkMWY2NjZlOGM0MjRkMGNjYjZl
ZmNkZWNhMWM4MmM3OWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5oCkBAIC0xODMsNiArMTgzLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hh
c0VuYWJsZWRNZWRpYVNvdXJjZUlubGluZVBhaW50aW5nIHsgZmFsc2UgfTsKICNlbmRpZgogCisj
aWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgYm9vbCBtX2hhc0VuYWJsZWRTYW1w
bGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnQgeyBmYWxzZSB9OworI2VuZGlmCisKICNp
ZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKICAgICBib29sIG1faGFzRW5hYmxlZFNjcmVlbkNh
cHR1cmVLaXQgeyBmYWxzZSB9OwogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="480566"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453267</attachid>
            <date>2022-02-25 15:02:35 -0800</date>
            <delta_ts>2022-02-25 15:24:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236109-20220225150234.patch</filename>
            <type>text/plain</type>
            <size>18499</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhjMTAyNzA2NTEyZTNiYWFkYWEzZDYx
YjYzNWZmNzJkMjE2NGFmOTAuLjZlMTczZTVhNmQzMGUxOWIyMzM2YmRkZmI1NzA5MGI0MDMyODli
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMjUgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODc4NTg0ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbDoKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5
KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyNDMw
NWY3NTVmYzJmNzI5Njk3ODg4ZTNhMDQ2MjYyNjU2NTM5OC4uZGUwM2JhNjYxNDAzZGY0YzQ4MTVl
ZjM2NWY4ZjM3NjI5NDVhYmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAy
LTI1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
QWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9y
VHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg3ODU4
NDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUt
bGFuZCBzdXBwb3J0IGFmdGVyIGEgcm9sbG91dCBpbiByMjkwMzExLCB0aGlzIHRpbWUgd2l0aCBh
biBvZmYtYnktZGVmYXVsdCBFeHBlcmltZW50YWwgRmVhdHVyZQorICAgICAgICBmbGFnLgorCisg
ICAgICAgIEluIGFkZGl0aW9uIHRvIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJlbmRlcmVyIGNsYXNz
ZXMgc3VwcG9ydCBBVkNvbnRlbnRLZXlTZXNzaW9uLCBhbHNvIGNoZWNrIHdoZXRoZXIKKyAgICAg
ICAgdGhlIFJ1bnRpbWVTZXR0aW5nIGhhcyBiZWVuIGVuYWJsZWQuIFRoaXMgcmVxdWlyZXMgcGFz
c2luZyB0aGF0IHNldHRpbmcgdGhyb3VnaCB0byB0aGUgCisgICAgICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYSBzaW5nbGV0b24sIHNvIGl0IGNhbiBiZSBhY2Nlc3NlZCBmcm9tIHBsYXRmb3Jt
Ly4KKworICAgICAgICBJZiB0aGUgcmVuZGVyZXIgc3VwcG9ydCBjaGVjayBzdWNjZWVkcyBhbmQg
dGhlIHNldHRpbmcgaXMgZW5hYmxlZCwgb25seSB0aGVuIHNob3VsZCB0aGUgZGVsZWdhdGUgZm9y
CisgICAgICAgIEFWU3RyZWFtRGF0YVBhcnNlciBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBuZXcg
LWRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyIGNhbGxiYWNrLiBTdWJjbGFzcyB0aGUKKyAg
ICAgICAgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgaW50byBhIG5ldyBXZWJBVlN0cmVh
bURhdGFQYXJzZXJXaXRoS2V5U3BlY2lmaWVyTGlzdGVuZXIgb2JqZWN0LCBhbmQKKyAgICAgICAg
aW5zdGFudGlhdGUgb25lIG9yIHRoZSBvdGhlciBhY2NvcmRpbmcgdG8gdGhlIHN1cHBvcnQgY2hl
Y2tzIGFib3ZlLgorCisgICAgICAgICogcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNhbXBsZUJ1ZmZl
ckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXRT
YW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2FtcGxlQnVmZmVyQ29udGVudEtleVNl
c3Npb25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKC1bV2Vi
QVZTdHJlYW1EYXRhUGFyc2VyV2l0aEtleVNwZWNpZmllckxpc3RlbmVyIHN0cmVhbURhdGFQYXJz
ZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDpdKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMpOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1E
YXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6XSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVCdWZm
ZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbik6CisKIDIwMjItMDItMjUgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBITFMgKyBNb2Rlcm4gRU1F
IGtleSByb3RhdGlvbiBjYXVzZXMgcGxheWJhY2sgdG8gc3RhbGwgaW5kZWZpbml0ZWx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDI2MjcxMmU2MjA5OTYyYjA5NzdjNzhmMGExMzdkZjEzMTEyZjIyMzIuLjE4ZTRjMGI1
MjkzODNlMWMxYzY4NDljZDk2NWNjYWI5ZWE4ODFkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMjItMDItMjUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNw
ZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84ODc4NTg0ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXNzIHRoZSBuZXcgUnVudGltZUVuYWJsZWRGZWF0dXJlIHRocm91Z2ggdG8gdGhl
IEdQVSBwcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6c2V0U2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Np
b25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzUHJveHk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5oOgorCiAyMDIyLTAyLTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWxsb3cgbG9nZ2luZyB0byBiZSBjb25maWd1
cmVkIGJ5IE5TRGVmYXVsdHMgKHdpdGhvdXQgcmVncmVzc2luZyBsYXVuY2ggdGltZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggNjNlMjQ5NDVkNjAxNzYzMDdkNjA5ZjFiYTU2NTQ1
ZmMwYTE5MmU0My4uNWVmNDhkNTNiMjliNzdiZGEzNmE4ZGVkZjY0MmEwODdiOWQxMDBhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAgLTEyMzEsNiArMTIzMSwxOSBAQCBSZXNvbHV0
aW9uTWVkaWFGZWF0dXJlRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1
ZQogCitTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkOgorICB0eXBl
OiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ29udGVudEtleVNlc3Npb24gc3VwcG9ydCBm
b3IgU2FtcGxlQnVmZmVyIFJlbmRlcmVycyIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAi
Q29udGVudEtleVNlc3Npb24gc3VwcG9ydCBmb3IgU2FtcGxlQnVmZmVyIFJlbmRlcmVycyBFbmFi
bGVkIgorICBjb25kaXRpb246IEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorICBkZWZhdWx0
VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJL
aXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBm
YWxzZQorCiAjIEZJWE1FOiBJcyB0aGlzIGltcGxlbWVudGVkIGZvciBXZWJLaXRMZWdhY3k/IElm
IG5vdCwgdGhpcyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHku
CiAjIEZJWE1FOiBUaGlzIHNob3VsZCBoYXZlIGl0J3Mgb3duIEVOQUJMRS4KIFNjcmVlbkNhcHR1
cmVFbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5jcHAKaW5kZXggMDRmZmYyMWEyNmFkYmM3M2Q4Yjc0ZGJmNTVhY2M4ZTk4MjRmMzVkYS4uNWMw
NWI5NzA5MWM4Y2RiNTI2NzRmOWM3MTFlZGM3NjJhYmJiY2MyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC05MSw0ICs5MSwxMiBAQCB2
b2lkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU291cmNlSW5saW5lUGFpbnRpbmdF
bmFibGVkKGJvb2wgaXNFbmFibGVkKQogfQogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtF
WVNQRUNJRklFUikKK3ZvaWQgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2FtcGxlQnVmZmVy
Q29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9z
YW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkID0gZW5hYmxlZDsKKyAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNz
aW9uU3VwcG9ydEVuYWJsZWQoZW5hYmxlZCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApp
bmRleCA1NmIyM2Y3N2Q2Y2I1MWFmMDcwMTEyMmU4YWUzZGU5NGJiMGRhOTYwLi5kYTZiNTQ0ODVl
Mjc1YmIzOTY0MWM2MDNkY2FmMmZkODE3MmU1NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMjQxLDYgKzI0MSwxMSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBtZWRpYVNvdXJjZUlubGluZVBhaW50aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFTb3VyY2VJbmxpbmVQYWludGluZ0VuYWJsZWQ7IH0KICNlbmRpZgogCisjaWYgSEFW
RShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTYW1w
bGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wpOworICAgIGJvb2wg
c2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZDsgfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICB2b2lkIHNldEJ1
aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2J1aWx0SW5Ob3Rp
ZmljYXRpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgYnVpbHRJbk5vdGlmaWNh
dGlvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9idWlsdEluTm90aWZpY2F0aW9uc0VuYWJs
ZWQ7IH0KQEAgLTM4Niw2ICszOTEsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWVkaWFTb3Vy
Y2VJbmxpbmVQYWludGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBIQVZFKEFW
Q09OVEVOVEtFWVNQRUNJRklFUikKKyAgICBib29sIG1fc2FtcGxlQnVmZmVyQ29udGVudEtleVNl
c3Npb25TdXBwb3J0RW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogI2lmIEVOQUJMRShCVUlM
VF9JTl9OT1RJRklDQVRJT05TKQogICAgIGJvb2wgbV9idWlsdEluTm90aWZpY2F0aW9uc0VuYWJs
ZWQgeyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCmluZGV4IDBm
M2U3MGJhM2VhMTcxNDRiNzk5MzAzNDQzMjE1Y2YxNWNmYzkyN2QuLjUzZmVkNTIwNmYxM2VkYTI2
MzJhNTFmMmQ2MGI5MGY4NjJmOGQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCkBA
IC03MSw2ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bWVkaWFTb3VyY2VJbmxpbmVQYWludGluZ0VuYWJsZWQoKTsKICNlbmRpZgogCisjaWYgSEFWRShB
VkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChib29sKTsKKyAgICBz
dGF0aWMgV0VCQ09SRV9FWFBPUlQgYm9vbCBzYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1
cHBvcnRFbmFibGVkKCk7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgc2NoZWR1bGVT
ZXNzaW9uU3RhdHVzVXBkYXRlKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVOb3dQbGF5aW5nSW5m
bygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGVkOGNkZTAzMGY5MDA5NDFj
ODY3Y2YzOTIyYzUwMzEwZjBmZmZiNTIuLmEwZTkwMmYxMmNlN2ViMTdjNzc2ZDQzYzEzNWM4NTMy
NmM3NWNmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTkyLDYgKzkyLDIw
IEBAIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjptZWRpYVNvdXJjZUlubGluZVBhaW50
aW5nRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVS
KQorc3RhdGljIGJvb2wgc19zYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFi
bGVkID0gZmFsc2U7Cit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0U2FtcGxlQnVm
ZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAg
c19zYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkID0gZW5hYmxlZDsK
K30KKworYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNhbXBsZUJ1ZmZlckNvbnRlbnRL
ZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoKQoreworICAgIHJldHVybiBzX3NhbXBsZUJ1ZmZlckNv
bnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQ7Cit9CisjZW5kaWYKKworCiB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKIHsKICAgICBjb25zdGV4
cHIgYXV0byBkZWxheUJlZm9yZVNldHRpbmdDYXRlZ29yeU5vbmUgPSAyX3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBl
NjFiMTQ3ZjYzYzVmNDU3Mjc1ZjYwNTAzZTM3YThiNTJkMThlM2EzLi45ZDYwMmM0YzdhYWNhMWZm
YTcxYTMyNjFhNmE0NDQ4YmZiZmNiOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTE0MCwxNiArMTQwLDIxIEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIF9wYXJlbnQtPmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW5pdERhdGEs
IHRyYWNrSUQpOwogfQogCitAZW5kCisKICNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikK
K0BpbnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyV2l0aEtleVNwZWNpZmllckxpc3RlbmVy
IDogV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFdlYkFWU3RyZWFtRGF0YVBhcnNlcldpdGhLZXlTcGVjaWZpZXJMaXN0ZW5lcgogLSAodm9pZClz
dHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRp
ZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOihBVkNvbnRlbnRLZXlTcGVjaWZpZXIgKilrZXlT
cGVjaWZpZXIgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECiB7CiAgICAg
QVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJz
ZXIpOwogICAgIGlmIChba2V5U3BlY2lmaWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
aW5pdGlhbGl6YXRpb25EYXRhKV0pCiAgICAgICAgIF9wYXJlbnQtPmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdFNwZWNpZmllckZvclRyYWNrSUQoa2V5U3BlY2lmaWVyLmluaXRpYWxpemF0aW9u
RGF0YSwgdHJhY2tJRCk7CiB9Ci0jZW5kaWYKLQogQGVuZAorI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMjE2LDggKzIyMSwxMyBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0
c1R5cGUgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZAog
CiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkK
ICAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0
YW5jZSgpIGluaXRdKSkKLSAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJl
bnQ6dGhpc10pKQogeworI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorICAgIGlmIChN
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3Vw
cG9ydEVuYWJsZWQoKSkKKyAgICAgICAgbV9kZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVlN0cmVh
bURhdGFQYXJzZXJXaXRoS2V5U3BlY2lmaWVyTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyc2Vy
Om1fcGFyc2VyLmdldCgpIHBhcmVudDp0aGlzXSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAg
IG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDp0aGlzXSk7CiB9CiAKIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KaW5kZXggZWMxNzg5NThhYzdmMzI1MjQ5ZjdjMWNlMmZkZDdlMDhiN2M4YzAxNi4uYWQyNzYw
MDNjNDA5NDE4YTMyNWQ1Yzg3NDU2MzdjZjI0ZGU0NTA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQxLDYgKzQx
LDcgQEAKICNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgog
I2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgor
I2ltcG9ydCAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKQEAgLTI4NCw2ICsyODUsMTYgQEAgc3RhdGljIHVp
bnQ2NF90IG5leHRNYXBJRCgpCiBzdGF0aWMgYm9vbCBzYW1wbGVCdWZmZXJSZW5kZXJlcnNTdXBw
b3J0S2V5U2Vzc2lvbigpCiB7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHMgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF57CisgICAgICAgIHN1cHBvcnRzID0KKyAgICAgICAgW1BBTDo6Z2V0QVZTYW1w
bGVCdWZmZXJBdWRpb1JlbmRlcmVyQ2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29s
KEFWQ29udGVudEtleVJlY2lwaWVudCldCisgICAgICAgICAgICAmJiBbUEFMOjpnZXRBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChB
VkNvbnRlbnRLZXlSZWNpcGllbnQpXQorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQor
ICAgICAgICAgICAgJiYgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzYW1wbGVCdWZmZXJDb250
ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKCkKKyNlbmRpZgorICAgICAgICA7CisgICAgfSk7
CiAgICAgcmV0dXJuIHN1cHBvcnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5jcHAKaW5kZXggNWZjMTUwNGE4ZTFkZDQ5NzIyMWQxMGY0MzkzMWRlY2Q1YTc0N2JkZi4u
ZmZlMGFjZDgxMjMyNmEzYTA3YjJhNTIzNzhiYTdmNjFlYTAwMGQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtNTMxLDYgKzUzMSwxNiBAQCB2b2lkIEdQVVBy
b2Nlc3M6OnNldFVzZVNjcmVlbkNhcHR1cmVLaXQoYm9vbCB1c2UpCiB9CiAjZW5kaWYKIAorI2lm
IEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQordm9pZCBHUFVQcm9jZXNzOjpzZXRTYW1wbGVC
dWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBpZiAobV9zYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkID09IGVu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNz
aW9uU3VwcG9ydEVuYWJsZWQgPSBlbmFibGVkOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6c2V0U2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChlbmFibGVk
KTsKK30KKyNlbmRpZgorCiB2b2lkIEdQVVByb2Nlc3M6OndlYlByb2Nlc3NDb25uZWN0aW9uQ291
bnRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6Om9iamVjdENvdW50Rm9yVGVzdGluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
UHJvY2Vzcy5oCmluZGV4IGRjMDNhYTYyNTQzM2VkZDdjNmFhZjdmZWUzNjAzMmQ5YmUxYzQ2ZDUu
LjkxMGE4YjhhMmU5YmMxNDI4NGI3YmZkN2M2ZjBhODM1MDZmMzdkNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVVByb2Nlc3MuaApAQCAtMTkyLDYgKzE5MiwxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0VXNlU2NyZWVuQ2FwdHVyZUtpdChib29sKTsKICNlbmRpZgogCisjaWYgSEFWRShB
VkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgdm9pZCBzZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5
U2Vzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ0ZQUkVG
U19ESVJFQ1RfTU9ERSkKICAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBT
dHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiYgZW5jb2RlZFZhbHVlKTsKICAgICB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkTm90aWZpY2F0
aW9uc0ZvclByZWZlcmVuY2VDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOwpAQCAtMjU3
LDYgKzI2MSwxMCBAQCBwcml2YXRlOgogI2lmIEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQogICAg
IGJvb2wgbV91c2VTY3JlZW5DYXB0dXJlS2l0IHsgZmFsc2UgfTsKICNlbmRpZgorI2lmIEhBVkUo
QVZDT05URU5US0VZU1BFQ0lGSUVSKQorICAgIGJvb2wgbV9zYW1wbGVCdWZmZXJDb250ZW50S2V5
U2Vzc2lvblN1cHBvcnRFbmFibGVkIHsgZmFsc2UgfTsKKyNlbmRpZgorCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggZjUzMTFiODFjNTYzN2IwMThmNjU2OGI3ZjVlNGE3Yjk1NTVlZDNm
Mi4uOGU5OTI5YTUzNWI0MWUyZDE2N2YyMWU1YjNlZjMyNWJkNWM4MjNjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgxLDYgKzgx
LDEwIEBAIG1lc3NhZ2VzIC0+IEdQVVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFVz
ZVNjcmVlbkNhcHR1cmVLaXQoYm9vbCB1c2UpOwogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVO
VEtFWVNQRUNJRklFUikKKyAgICBTZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBv
cnRFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisjZW5kaWYKKwogICAgIFJlcXVlc3RCaXRtYXBJbWFn
ZUZvckN1cnJlbnRUaW1lKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgcGxheWVySWRlbnRpZmllcikgLT4g
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlKSBBc3luYwogCiAjaWYgRU5B
QkxFKENGUFJFRlNfRElSRUNUX01PREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYWZhYjg3MjE0
MjQyMGY1MmI5OTJkZmFmMTI3NzI5ZDAyNDc2ZDhmMC4uNDY0Njc2NjgzMmUxNTQ3ZDBiMGI5OTll
Mjk1ZWUyZjk3ZmFmYjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDcsNiArNDcsOSBAQCB2
b2lkIEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgbWljcm9waG9u
ZVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKKyNlbmRpZgorI2lmIEhBVkUoQVZDT05U
RU5US0VZU1BFQ0lGSUVSKQorICAgIGVuY29kZXIgPDwgc2FtcGxlQnVmZmVyQ29udGVudEtleVNl
c3Npb25TdXBwb3J0RW5hYmxlZDsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgcGFyZW50UElEOwog
CkBAIC03NSw2ICs3OCwxMSBAQCBib29sIEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEdQVVByb2Nlc3NDcmVhdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKICNlbmRpZgorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVS
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlT
ZXNzaW9uU3VwcG9ydEVuYWJsZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhcmVudFBJRCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZWU4ZTliZmU4OTY0NjZiZGM0NDc3ZWM4NDZh
MTViODkyNDZlMWRjOS4uZDU5MzBlZWY4YzJlMzJiYzNmMDliMjI5NjhhZjE3OTNjZmIyZjY5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCkBAIC00Nyw2ICs0Nyw5IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIG1pY3JvcGhvbmVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCisjZW5kaWYK
KyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKyAgICBib29sIHNhbXBsZUJ1ZmZlckNv
bnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgUHJv
Y2Vzc0lEIHBhcmVudFBJRDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMzQxNTQxZGJkMjEwOWMzYWJiYTI5ZDdhMDc5NGI0OTgx
ZmFlYWE4Li4yMzJjNTcyNjUxMTM5NDU3ODU2ODA2YzU0NzlkNjI3YzQ4NDQxMDU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjc5
LDYgKzY3OSwxMiBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXMoV2Vi
UHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzKQogICAgICAgICB9CiAjZW5kaWYKIAorI2lmIEhBVkUo
QVZDT05URU5US0VZU1BFQ0lGSUVSKQorICAgICAgICBpZiAoIW1faGFzRW5hYmxlZFNhbXBsZUJ1
ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydCAmJiBwcmVmZXJlbmNlcy5zYW1wbGVCdWZmZXJD
b250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIG1faGFzRW5h
YmxlZFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydCA9IHRydWU7CisgICAgICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpTZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5
U2Vzc2lvblN1cHBvcnRFbmFibGVkKG1faGFzRW5hYmxlZFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlT
ZXNzaW9uU3VwcG9ydCksIDApOworICAgICAgICB9CisjZW5kaWYKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAppbmRleCBlYWRlOWI1
OWJkZjVhYjEwNzUzOGJmNWIwNzQzMDcxYjkxOThkMTlkLi4wMDYyNTVkMWY2NjZlOGM0MjRkMGNj
YjZlZmNkZWNhMWM4MmM3OWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5oCkBAIC0xODMsNiArMTgzLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc0VuYWJsZWRNZWRpYVNvdXJjZUlubGluZVBhaW50aW5nIHsgZmFsc2UgfTsKICNlbmRpZgog
CisjaWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgYm9vbCBtX2hhc0VuYWJsZWRT
YW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnQgeyBmYWxzZSB9OworI2VuZGlmCisK
ICNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKICAgICBib29sIG1faGFzRW5hYmxlZFNjcmVl
bkNhcHR1cmVLaXQgeyBmYWxzZSB9OwogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="480567"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453271</attachid>
            <date>2022-02-25 15:16:05 -0800</date>
            <delta_ts>2022-02-26 15:45:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236109-20220225151605.patch</filename>
            <type>text/plain</type>
            <size>18528</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhjMTAyNzA2NTEyZTNiYWFkYWEzZDYx
YjYzNWZmNzJkMjE2NGFmOTAuLjZlMTczZTVhNmQzMGUxOWIyMzM2YmRkZmI1NzA5MGI0MDMyODli
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMjUgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODc4NTg0ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbDoKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5
KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyNDMw
NWY3NTVmYzJmNzI5Njk3ODg4ZTNhMDQ2MjYyNjU2NTM5OC4uZGUwM2JhNjYxNDAzZGY0YzQ4MTVl
ZjM2NWY4ZjM3NjI5NDVhYmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTAy
LTI1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
QWRvcHQgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9y
VHJhY2tJRDogZGVsZWdhdGUgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjEwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg3ODU4
NDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUt
bGFuZCBzdXBwb3J0IGFmdGVyIGEgcm9sbG91dCBpbiByMjkwMzExLCB0aGlzIHRpbWUgd2l0aCBh
biBvZmYtYnktZGVmYXVsdCBFeHBlcmltZW50YWwgRmVhdHVyZQorICAgICAgICBmbGFnLgorCisg
ICAgICAgIEluIGFkZGl0aW9uIHRvIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJlbmRlcmVyIGNsYXNz
ZXMgc3VwcG9ydCBBVkNvbnRlbnRLZXlTZXNzaW9uLCBhbHNvIGNoZWNrIHdoZXRoZXIKKyAgICAg
ICAgdGhlIFJ1bnRpbWVTZXR0aW5nIGhhcyBiZWVuIGVuYWJsZWQuIFRoaXMgcmVxdWlyZXMgcGFz
c2luZyB0aGF0IHNldHRpbmcgdGhyb3VnaCB0byB0aGUgCisgICAgICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYSBzaW5nbGV0b24sIHNvIGl0IGNhbiBiZSBhY2Nlc3NlZCBmcm9tIHBsYXRmb3Jt
Ly4KKworICAgICAgICBJZiB0aGUgcmVuZGVyZXIgc3VwcG9ydCBjaGVjayBzdWNjZWVkcyBhbmQg
dGhlIHNldHRpbmcgaXMgZW5hYmxlZCwgb25seSB0aGVuIHNob3VsZCB0aGUgZGVsZWdhdGUgZm9y
CisgICAgICAgIEFWU3RyZWFtRGF0YVBhcnNlciBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBuZXcg
LWRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyIGNhbGxiYWNrLiBTdWJjbGFzcyB0aGUKKyAg
ICAgICAgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgaW50byBhIG5ldyBXZWJBVlN0cmVh
bURhdGFQYXJzZXJXaXRoS2V5U3BlY2lmaWVyTGlzdGVuZXIgb2JqZWN0LCBhbmQKKyAgICAgICAg
aW5zdGFudGlhdGUgb25lIG9yIHRoZSBvdGhlciBhY2NvcmRpbmcgdG8gdGhlIHN1cHBvcnQgY2hl
Y2tzIGFib3ZlLgorCisgICAgICAgICogcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNhbXBsZUJ1ZmZl
ckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXRT
YW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2FtcGxlQnVmZmVyQ29udGVudEtleVNl
c3Npb25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKC1bV2Vi
QVZTdHJlYW1EYXRhUGFyc2VyV2l0aEtleVNwZWNpZmllckxpc3RlbmVyIHN0cmVhbURhdGFQYXJz
ZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDpdKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMpOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1E
YXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5U3BlY2lmaWVyOmZvclRyYWNrSUQ6XSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVCdWZm
ZXJSZW5kZXJlcnNTdXBwb3J0S2V5U2Vzc2lvbik6CisKIDIwMjItMDItMjUgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBITFMgKyBNb2Rlcm4gRU1F
IGtleSByb3RhdGlvbiBjYXVzZXMgcGxheWJhY2sgdG8gc3RhbGwgaW5kZWZpbml0ZWx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDI2MjcxMmU2MjA5OTYyYjA5NzdjNzhmMGExMzdkZjEzMTEyZjIyMzIuLjE4ZTRjMGI1
MjkzODNlMWMxYzY4NDljZDk2NWNjYWI5ZWE4ODFkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMjItMDItMjUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNw
ZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84ODc4NTg0ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXNzIHRoZSBuZXcgUnVudGltZUVuYWJsZWRGZWF0dXJlIHRocm91Z2ggdG8gdGhl
IEdQVSBwcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6c2V0U2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Np
b25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzUHJveHk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5oOgorCiAyMDIyLTAyLTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWxsb3cgbG9nZ2luZyB0byBiZSBjb25maWd1
cmVkIGJ5IE5TRGVmYXVsdHMgKHdpdGhvdXQgcmVncmVzc2luZyBsYXVuY2ggdGltZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggNjNlMjQ5NDVkNjAxNzYzMDdkNjA5ZjFiYTU2NTQ1
ZmMwYTE5MmU0My4uNWVmNDhkNTNiMjliNzdiZGEzNmE4ZGVkZjY0MmEwODdiOWQxMDBhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAgLTEyMzEsNiArMTIzMSwxOSBAQCBSZXNvbHV0
aW9uTWVkaWFGZWF0dXJlRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1
ZQogCitTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkOgorICB0eXBl
OiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ29udGVudEtleVNlc3Npb24gc3VwcG9ydCBm
b3IgU2FtcGxlQnVmZmVyIFJlbmRlcmVycyIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAi
Q29udGVudEtleVNlc3Npb24gc3VwcG9ydCBmb3IgU2FtcGxlQnVmZmVyIFJlbmRlcmVycyBFbmFi
bGVkIgorICBjb25kaXRpb246IEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorICBkZWZhdWx0
VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJL
aXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBm
YWxzZQorCiAjIEZJWE1FOiBJcyB0aGlzIGltcGxlbWVudGVkIGZvciBXZWJLaXRMZWdhY3k/IElm
IG5vdCwgdGhpcyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHku
CiAjIEZJWE1FOiBUaGlzIHNob3VsZCBoYXZlIGl0J3Mgb3duIEVOQUJMRS4KIFNjcmVlbkNhcHR1
cmVFbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5jcHAKaW5kZXggMDRmZmYyMWEyNmFkYmM3M2Q4Yjc0ZGJmNTVhY2M4ZTk4MjRmMzVkYS4uZmVi
NTQ2OTlhZDc3YzkwYjIxN2FkMGEyNjZiNTU4Zjc3ZTMwOTAxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC05MSw0ICs5MSwxNCBAQCB2
b2lkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU291cmNlSW5saW5lUGFpbnRpbmdF
bmFibGVkKGJvb2wgaXNFbmFibGVkKQogfQogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtF
WVNQRUNJRklFUikKK3ZvaWQgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2FtcGxlQnVmZmVy
Q29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9z
YW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkID0gZW5hYmxlZDsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldFNhbXBs
ZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoZW5hYmxlZCk7CisjZW5kaWYK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDU2YjIzZjc3ZDZjYjUxYWYwNzAxMTIy
ZThhZTNkZTk0YmIwZGE5NjAuLmRhNmI1NDQ4NWUyNzViYjM5NjQxYzYwM2RjYWYyZmQ4MTcyZTU0
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBA
IC0yNDEsNiArMjQxLDExIEBAIHB1YmxpYzoKICAgICBib29sIG1lZGlhU291cmNlSW5saW5lUGFp
bnRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNvdXJjZUlubGluZVBhaW50aW5n
RW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3Vw
cG9ydEVuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBzYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lv
blN1cHBvcnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVCdWZmZXJDb250ZW50S2V5
U2Vzc2lvblN1cHBvcnRFbmFibGVkOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShCVUlMVF9JTl9O
T1RJRklDQVRJT05TKQogICAgIHZvaWQgc2V0QnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IG1fYnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkID0gaXNFbmFibGVk
OyB9CiAgICAgYm9vbCBidWlsdEluTm90aWZpY2F0aW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2J1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZDsgfQpAQCAtMzg2LDYgKzM5MSwxMCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9tZWRpYVNvdXJjZUlubGluZVBhaW50aW5nRW5hYmxlZCB7IGZh
bHNlIH07CiAjZW5kaWYKIAorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorICAgIGJv
b2wgbV9zYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkIHsgZmFsc2Ug
fTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAgICAgYm9v
bCBtX2J1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLmgKaW5kZXggMGYzZTcwYmEzZWExNzE0NGI3OTkzMDM0NDMyMTVj
ZjE1Y2ZjOTI3ZC4uNTNmZWQ1MjA2ZjEzZWRhMjYzMmE1MWYyZDYwYjkwZjg2MmY4ZDliMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKQEAgLTcxLDYgKzcxLDExIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgYm9vbCBtZWRpYVNvdXJjZUlubGluZVBhaW50aW5nRW5h
YmxlZCgpOwogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKyAgICBz
dGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lv
blN1cHBvcnRFbmFibGVkKGJvb2wpOworICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBib29sIHNh
bXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoKTsKKyNlbmRpZgorCiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hlZHVsZVNlc3Npb25TdGF0dXNVcGRhdGUoKSBmaW5hbDsK
ICAgICB2b2lkIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EubW0KaW5kZXggZWQ4Y2RlMDMwZjkwMDk0MWM4NjdjZjM5MjJjNTAzMTBmMGZmZmI1Mi4uYTBl
OTAyZjEyY2U3ZWIxN2M3NzZkNDNjMTM1Yzg1MzI2Yzc1Y2ZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbQpAQCAtOTIsNiArOTIsMjAgQEAgYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2E6Om1lZGlhU291cmNlSW5saW5lUGFpbnRpbmdFbmFibGVkKCkKIH0KICNlbmRpZgogCisj
aWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCitzdGF0aWMgYm9vbCBzX3NhbXBsZUJ1ZmZl
ckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBmYWxzZTsKK3ZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpzZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRF
bmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBzX3NhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNz
aW9uU3VwcG9ydEVuYWJsZWQgPSBlbmFibGVkOworfQorCitib29sIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6c2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCgpCit7
CisgICAgcmV0dXJuIHNfc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxl
ZDsKK30KKyNlbmRpZgorCisKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVT
ZXNzaW9uU3RhdGUoKQogewogICAgIGNvbnN0ZXhwciBhdXRvIGRlbGF5QmVmb3JlU2V0dGluZ0Nh
dGVnb3J5Tm9uZSA9IDJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGU2MWIxNDdmNjNjNWY0NTcyNzVmNjA1MDNlMzdh
OGI1MmQxOGUzYTMuLjlkNjAyYzRjN2FhY2ExZmZhNzFhMzI2MWE2YTQ0NDhiZmJmY2I4YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQpAQCAtMTQwLDE2ICsxNDAsMjEgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7CiB9CiAKK0BlbmQKKwogI2lm
IEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorQGludGVyZmFjZSBXZWJBVlN0cmVhbURhdGFQ
YXJzZXJXaXRoS2V5U3BlY2lmaWVyTGlzdGVuZXIgOiBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lcgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZTdHJlYW1EYXRhUGFyc2VyV2l0aEtl
eVNwZWNpZmllckxpc3RlbmVyCiAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0
YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6
KEFWQ29udGVudEtleVNwZWNpZmllciAqKWtleVNwZWNpZmllciBmb3JUcmFja0lEOihDTVBlcnNp
c3RlbnRUcmFja0lEKXRyYWNrSUQKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJz
ZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7CiAgICAgaWYgKFtrZXlTcGVjaWZpZXIg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihpbml0aWFsaXphdGlvbkRhdGEpXSkKICAgICAg
ICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0U3BlY2lmaWVyRm9yVHJhY2tJ
RChrZXlTcGVjaWZpZXIuaW5pdGlhbGl6YXRpb25EYXRhLCB0cmFja0lEKTsKIH0KLSNlbmRpZgot
CiBAZW5kCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTYsOCArMjIxLDEz
IEBAIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkCiAKIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogICAgIDogbV9wYXJzZXIoYWRvcHROUyhbUEFM
OjphbGxvY0FWU3RyZWFtRGF0YVBhcnNlckluc3RhbmNlKCkgaW5pdF0pKQotICAgICwgbV9kZWxl
Z2F0ZShhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxsb2NdIGluaXRX
aXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDp0aGlzXSkpCiB7CisjaWYgSEFWRShBVkNP
TlRFTlRLRVlTUEVDSUZJRVIpCisgICAgaWYgKE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Ft
cGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCgpKQorICAgICAgICBtX2Rl
bGVnYXRlID0gYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlcldpdGhLZXlTcGVjaWZpZXJM
aXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OnRoaXNd
KTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgbV9kZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIu
Z2V0KCkgcGFyZW50OnRoaXNdKTsKIH0KIAogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlYzE3ODk1OGFjN2YzMjUyNDlm
N2MxY2UyZmRkN2UwOGI3YzhjMDE2Li5hZDI3NjAwM2M0MDk0MThhMzI1ZDVjODc0NTYzN2NmMjRk
ZTQ1MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgogI2lt
cG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjaW1wb3J0ICJNZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQg
IlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIgpA
QCAtMjg0LDYgKzI4NSwxNiBAQCBzdGF0aWMgdWludDY0X3QgbmV4dE1hcElEKCkKIHN0YXRpYyBi
b29sIHNhbXBsZUJ1ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKCkKIHsKICAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0cyA9IGZhbHNlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25j
ZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgc3VwcG9y
dHMgPQorICAgICAgICBbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJDbGFzcygp
IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woQVZDb250ZW50S2V5UmVjaXBpZW50KV0KKyAg
ICAgICAgICAgICYmIFtQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBj
b25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKEFWQ29udGVudEtleVJlY2lwaWVudCldCisjaWYg
SEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgICAgICAgICAmJiBNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OnNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQo
KQorI2VuZGlmCisgICAgICAgIDsKKyAgICB9KTsKICAgICByZXR1cm4gc3VwcG9ydHM7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCA1ZmMxNTA0YThlMWRk
NDk3MjIxZDEwZjQzOTMxZGVjZDVhNzQ3YmRmLi5mZmUwYWNkODEyMzI2YTNhMDdiMmE1MjM3OGJh
N2Y2MWVhMDAwZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBA
IC01MzEsNiArNTMxLDE2IEBAIHZvaWQgR1BVUHJvY2Vzczo6c2V0VXNlU2NyZWVuQ2FwdHVyZUtp
dChib29sIHVzZSkKIH0KICNlbmRpZgogCisjaWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIp
Cit2b2lkIEdQVVByb2Nlc3M6OnNldFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9y
dEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX3NhbXBsZUJ1ZmZlckNvbnRlbnRL
ZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCA9IGVuYWJsZWQ7
CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5
U2Vzc2lvblN1cHBvcnRFbmFibGVkKGVuYWJsZWQpOworfQorI2VuZGlmCisKIHZvaWQgR1BVUHJv
Y2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb25Db3VudEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6b2JqZWN0Q291bnRGb3JUZXN0aW5n
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggZGMwM2FhNjI1NDMz
ZWRkN2M2YWFmN2ZlZTM2MDMyZDliZTFjNDZkNS4uOTEwYThiOGEyZTliYzE0Mjg0YjdiZmQ3YzZm
MGE4MzUwNmYzN2Q1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC0x
OTIsNiArMTkyLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRVc2VTY3JlZW5DYXB0dXJlS2l0
KGJvb2wpOwogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKyAgICB2
b2lkIHNldFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoYm9vbCk7
CisjZW5kaWYKKwogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQogICAgIHZvaWQgbm90
aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBlbmNvZGVkVmFsdWUpOwogICAgIHZv
aWQgZGlzcGF0Y2hTaW11bGF0ZWROb3RpZmljYXRpb25zRm9yUHJlZmVyZW5jZUNoYW5nZShjb25z
dCBTdHJpbmcmIGtleSkgZmluYWw7CkBAIC0yNTcsNiArMjYxLDEwIEBAIHByaXZhdGU6CiAjaWYg
SEFWRShTQ1JFRU5fQ0FQVFVSRV9LSVQpCiAgICAgYm9vbCBtX3VzZVNjcmVlbkNhcHR1cmVLaXQg
eyBmYWxzZSB9OwogI2VuZGlmCisjaWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAg
Ym9vbCBtX3NhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQgeyBmYWxz
ZSB9OworI2VuZGlmCisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmNTMxMWI4MWM1
NjM3YjAxOGY2NTY4YjdmNWU0YTdiOTU1NWVkM2YyLi44ZTk5MjlhNTM1YjQxZTJkMTY3ZjIxZTVi
M2VmMzI1YmQ1YzgyM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtODEsNiArODEsMTAgQEAgbWVzc2FnZXMgLT4gR1BVUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0VXNlU2NyZWVuQ2FwdHVyZUtpdChib29sIHVzZSk7
CiAjZW5kaWYKIAorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorICAgIFNldFNhbXBs
ZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKyNl
bmRpZgorCiAgICAgUmVxdWVzdEJpdG1hcEltYWdlRm9yQ3VycmVudFRpbWUoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRl
bnRpZmllciBwbGF5ZXJJZGVudGlmaWVyKSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBoYW5kbGUpIEFzeW5jCiAKICNpZiBFTkFCTEUoQ0ZQUkVGU19ESVJFQ1RfTU9ERSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCBhZmFiODcyMTQyNDIwZjUyYjk5MmRmYWYxMjc3MjlkMDI0NzZk
OGYwLi40NjQ2NzY2ODMyZTE1NDdkMGIwYjk5OWUyOTVlZTJmOTdmYWZiNWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCkBAIC00Nyw2ICs0Nyw5IEBAIHZvaWQgR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBQTEFURk9STShN
QUMpCiAgICAgZW5jb2RlciA8PCBtaWNyb3Bob25lU2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICNl
bmRpZgorI2VuZGlmCisjaWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgZW5jb2Rl
ciA8PCBzYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkOwogI2VuZGlm
CiAgICAgZW5jb2RlciA8PCBwYXJlbnRQSUQ7CiAKQEAgLTc1LDYgKzc4LDExIEBAIGJvb2wgR1BV
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
R1BVUHJvY2Vzc0NyZWF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogI2VuZGlmCisj
aWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQucGFyZW50UElEKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRl
eCBlZThlOWJmZTg5NjQ2NmJkYzQ0NzdlYzg0NmExNWI4OTI0NmUxZGM5Li5kNTkzMGVlZjhjMmUz
MmJjM2YwOWIyMjk2OGFmMTc5M2NmYjJmNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTQ3LDYgKzQ3
LDkgQEAgc3RydWN0IEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWljcm9waG9uZVNhbmRib3hFeHRl
bnNpb25IYW5kbGU7CiAjZW5kaWYKKyNlbmRpZgorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lG
SUVSKQorICAgIGJvb2wgc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxl
ZCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBQcm9jZXNzSUQgcGFyZW50UElEOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMzNDE1
NDFkYmQyMTA5YzNhYmJhMjlkN2EwNzk0YjQ5ODFmYWVhYTguLjIzMmM1NzI2NTExMzk0NTc4NTY4
MDZjNTQ3OWQ2MjdjNDg0NDEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuY3BwCkBAIC02NzksNiArNjc5LDEyIEBAIHZvaWQgR1BVUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVQcmVmZXJlbmNlcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3MpCiAg
ICAgICAgIH0KICNlbmRpZgogCisjaWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAg
ICAgIGlmICghbV9oYXNFbmFibGVkU2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0
ICYmIHByZWZlcmVuY2VzLnNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJs
ZWQoKSkgeworICAgICAgICAgICAgbV9oYXNFbmFibGVkU2FtcGxlQnVmZmVyQ29udGVudEtleVNl
c3Npb25TdXBwb3J0ID0gdHJ1ZTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OkdQVVByb2Nl
c3M6OlNldFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQobV9oYXNF
bmFibGVkU2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0KSwgMCk7CisgICAgICAg
IH0KKyNlbmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5oCmluZGV4IGVhZGU5YjU5YmRmNWFiMTA3NTM4YmY1YjA3NDMwNzFiOTE5
OGQxOWQuLjAwNjI1NWQxZjY2NmU4YzQyNGQwY2NiNmVmY2RlY2ExYzgyYzc5YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTE4Myw2ICsx
ODMsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzRW5hYmxlZE1lZGlhU291cmNlSW5saW5l
UGFpbnRpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJ
RklFUikKKyAgICBib29sIG1faGFzRW5hYmxlZFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9u
U3VwcG9ydCB7IGZhbHNlIH07CisjZW5kaWYKKwogI2lmIEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lU
KQogICAgIGJvb2wgbV9oYXNFbmFibGVkU2NyZWVuQ2FwdHVyZUtpdCB7IGZhbHNlIH07CiAjZW5k
aWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453313</attachid>
            <date>2022-02-26 15:45:32 -0800</date>
            <delta_ts>2022-02-28 17:00:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236109-20220226154531.patch</filename>
            <type>text/plain</type>
            <size>18718</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ4NGRjYjlkMjg5NzlmMjdhYzUzY2Vm
NzE0Nzg2NGEwMTUyZjQwNDcuLmEyNjY0YzAxNDg5Mzk5MDE0MjYzMDQ0YjA3MWQwNzRjMzkzNTI0
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMjUgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODc4NTg0ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFt
cyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRl
ciBidWlsZCBydWxlIGZvciBTY3JpcHRzL1ByZWZlcmVuY2VzLyoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNDQy
N2I5NTc0NmJhNTA1MDEzMzlhOTI4N2EwODE4ZmQ4YTVkODUxLi43NmU1YzVmN2YzM2VhNTdiYWM1
NzAzZTA2MGQ2YmUwNjM3MzBmZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjIt
MDItMjUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29h
XSBBZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpm
b3JUcmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODc4
NTg0ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZS1sYW5kIHN1cHBvcnQgYWZ0ZXIgYSByb2xsb3V0IGluIHIyOTAzMTEsIHRoaXMgdGltZSB3aXRo
IGFuIG9mZi1ieS1kZWZhdWx0IEV4cGVyaW1lbnRhbCBGZWF0dXJlCisgICAgICAgIGZsYWcuCisK
KyAgICAgICAgSW4gYWRkaXRpb24gdG8gY2hlY2tpbmcgd2hldGhlciB0aGUgcmVuZGVyZXIgY2xh
c3NlcyBzdXBwb3J0IEFWQ29udGVudEtleVNlc3Npb24sIGFsc28gY2hlY2sgd2hldGhlcgorICAg
ICAgICB0aGUgUnVudGltZVNldHRpbmcgaGFzIGJlZW4gZW5hYmxlZC4gVGhpcyByZXF1aXJlcyBw
YXNzaW5nIHRoYXQgc2V0dGluZyB0aHJvdWdoIHRvIHRoZSAKKyAgICAgICAgTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hIHNpbmdsZXRvbiwgc28gaXQgY2FuIGJlIGFjY2Vzc2VkIGZyb20gcGxhdGZv
cm0vLgorCisgICAgICAgIElmIHRoZSByZW5kZXJlciBzdXBwb3J0IGNoZWNrIHN1Y2NlZWRzIGFu
ZCB0aGUgc2V0dGluZyBpcyBlbmFibGVkLCBvbmx5IHRoZW4gc2hvdWxkIHRoZSBkZWxlZ2F0ZSBm
b3IKKyAgICAgICAgQVZTdHJlYW1EYXRhUGFyc2VyIGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhlIG5l
dyAtZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXIgY2FsbGJhY2suIFN1YmNsYXNzIHRoZQor
ICAgICAgICBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnRvIGEgbmV3IFdlYkFWU3Ry
ZWFtRGF0YVBhcnNlcldpdGhLZXlTcGVjaWZpZXJMaXN0ZW5lciBvYmplY3QsIGFuZAorICAgICAg
ICBpbnN0YW50aWF0ZSBvbmUgb3IgdGhlIG90aGVyIGFjY29yZGluZyB0byB0aGUgc3VwcG9ydCBj
aGVja3MgYWJvdmUuCisKKyAgICAgICAgKiBwYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2FtcGxlQnVm
ZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICogcGFnZS9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNl
dFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzYW1wbGVCdWZmZXJDb250ZW50S2V5
U2Vzc2lvblN1cHBvcnRFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoLVtX
ZWJBVlN0cmVhbURhdGFQYXJzZXJXaXRoS2V5U3BlY2lmaWVyTGlzdGVuZXIgc3RyZWFtRGF0YVBh
cnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JUcmFja0lEOl0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQyk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVh
bURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJRDpdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUJ1
ZmZlclJlbmRlcmVyc1N1cHBvcnRLZXlTZXNzaW9uKToKKwogMjAyMi0wMi0yNSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEhMUyArIE1vZGVybiBF
TUUga2V5IHJvdGF0aW9uIGNhdXNlcyBwbGF5YmFjayB0byBzdGFsbCBpbmRlZmluaXRlbHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYzNmZjk3NDM0NjI3ZGEzNWFjNjc5OTRhMDBkMzQ3ZWI2NjA0ZGVhYS4uODJjMzNl
NDQ4YzUzOGMwZDM2Njg1MDEzMjRhMTc4YTAyYzlhZmFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NSBAQAorMjAyMi0wMi0yNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIEFkb3B0IC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5
U3BlY2lmaWVyOmZvclRyYWNrSUQ6IGRlbGVnYXRlIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMDkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg4Nzg1ODQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhc3MgdGhlIG5ldyBSdW50aW1lRW5hYmxlZEZlYXR1cmUgdGhyb3VnaCB0byB0
aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpzZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vz
c2lvblN1cHBvcnRFbmFibGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICog
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6R1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VVByb2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc1Byb3h5Lmg6CisKIDIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSB0aGVyZSBpcyBhIGRlZmF1bHQg
TmV0d29ya2luZyBwcm9jZXNzIHRvIHByb3ZpZGUgdGhlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCBlMDdhNDkwNjc1ZTBkNmRlYWU1NmU3
YTdmNDlmOGJkZGIyYzgxYzk0Li4xNmNhOGQ3MGM5ZTA1YjYzYzQ0NzNmMDVjZGM0ZWZiMjU4ODE2
NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtMTIzMyw2ICsxMjMzLDE5IEBA
IFJlc29sdXRpb25NZWRpYUZlYXR1cmVFbmFibGVkOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZh
dWx0OiB0cnVlCiAKK1NhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQ6
CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJDb250ZW50S2V5U2Vzc2lvbiBz
dXBwb3J0IGZvciBTYW1wbGVCdWZmZXIgUmVuZGVyZXJzIgorICBodW1hblJlYWRhYmxlRGVzY3Jp
cHRpb246ICJDb250ZW50S2V5U2Vzc2lvbiBzdXBwb3J0IGZvciBTYW1wbGVCdWZmZXIgUmVuZGVy
ZXJzIEVuYWJsZWQiCisgIGNvbmRpdGlvbjogSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisg
IGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQor
ICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRl
ZmF1bHQ6IGZhbHNlCisKICMgRklYTUU6IElzIHRoaXMgaW1wbGVtZW50ZWQgZm9yIFdlYktpdExl
Z2FjeT8gSWYgbm90LCB0aGlzIHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIFdlYktpdExlZ2FjeSBl
bnRpcmVseS4KICMgRklYTUU6IFRoaXMgc2hvdWxkIGhhdmUgaXQncyBvd24gRU5BQkxFLgogU2Ny
ZWVuQ2FwdHVyZUVuYWJsZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcAppbmRleCAwNGZmZjIxYTI2YWRiYzczZDhiNzRkYmY1NWFjYzhlOTgyNGYz
NWRhLi44OTdkMmEwMDk3NTJhNDAzMDY1OWE4OGU4YjE2MzgyZTAwYWMyMzE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBIQVZFKEFW
U0FNUExFQlVGRkVSVklERU9PVVRQVVQpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAi
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgiCiAjZW5kaWYKIApAQCAtOTEsNCArOTEsMTIgQEAg
dm9pZCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRNZWRpYVNvdXJjZUlubGluZVBhaW50aW5n
RW5hYmxlZChib29sIGlzRW5hYmxlZCkKIH0KICNlbmRpZgogCisjaWYgSEFWRShBVkNPTlRFTlRL
RVlTUEVDSUZJRVIpCit2b2lkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNhbXBsZUJ1ZmZl
ckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1f
c2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCA9IGVuYWJsZWQ7Cisg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vz
c2lvblN1cHBvcnRFbmFibGVkKGVuYWJsZWQpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgK
aW5kZXggNTZiMjNmNzdkNmNiNTFhZjA3MDExMjJlOGFlM2RlOTRiYjBkYTk2MC4uZGE2YjU0NDg1
ZTI3NWJiMzk2NDFjNjAzZGNhZjJmZDgxNzJlNTRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTI0MSw2ICsyNDEsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgbWVkaWFTb3VyY2VJbmxpbmVQYWludGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX21lZGlhU291cmNlSW5saW5lUGFpbnRpbmdFbmFibGVkOyB9CiAjZW5kaWYKIAorI2lmIEhB
VkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Ft
cGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChib29sKTsKKyAgICBib29s
IHNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3NhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQ7IH0KKyNl
bmRpZgorCiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAgICAgdm9pZCBzZXRC
dWlsdEluTm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9idWlsdEluTm90
aWZpY2F0aW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIGJ1aWx0SW5Ob3RpZmlj
YXRpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFi
bGVkOyB9CkBAIC0zODYsNiArMzkxLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21lZGlhU291
cmNlSW5saW5lUGFpbnRpbmdFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogCisjaWYgSEFWRShB
VkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgYm9vbCBtX3NhbXBsZUJ1ZmZlckNvbnRlbnRLZXlT
ZXNzaW9uU3VwcG9ydEVuYWJsZWQgeyBmYWxzZSB9OworI2VuZGlmCisKICNpZiBFTkFCTEUoQlVJ
TFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICBib29sIG1fYnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFi
bGVkIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaAppbmRleCAw
ZjNlNzBiYTNlYTE3MTQ0Yjc5OTMwMzQ0MzIxNWNmMTVjZmM5MjdkLi41M2ZlZDUyMDZmMTNlZGEy
NjMyYTUxZjJkNjBiOTBmODYyZjhkOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaApA
QCAtNzEsNiArNzEsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBib29s
IG1lZGlhU291cmNlSW5saW5lUGFpbnRpbmdFbmFibGVkKCk7CiAjZW5kaWYKIAorI2lmIEhBVkUo
QVZDT05URU5US0VZU1BFQ0lGSUVSKQorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoYm9vbCk7CisgICAg
c3RhdGljIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25T
dXBwb3J0RW5hYmxlZCgpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICB2b2lkIHNjaGVkdWxl
U2Vzc2lvblN0YXR1c1VwZGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlTm93UGxheWluZ0lu
Zm8oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBlZDhjZGUwMzBmOTAwOTQx
Yzg2N2NmMzkyMmM1MDMxMGYwZmZmYjUyLi5hMGU5MDJmMTJjZTdlYjE3Yzc3NmQ0M2MxMzVjODUz
MjZjNzVjZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC05Miw2ICs5Miwy
MCBAQCBib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6bWVkaWFTb3VyY2VJbmxpbmVQYWlu
dGluZ0VuYWJsZWQoKQogfQogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklF
UikKK3N0YXRpYyBib29sIHNfc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5h
YmxlZCA9IGZhbHNlOwordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldFNhbXBsZUJ1
ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAg
IHNfc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCA9IGVuYWJsZWQ7
Cit9CisKK2Jvb2wgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzYW1wbGVCdWZmZXJDb250ZW50
S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gc19zYW1wbGVCdWZmZXJD
b250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkOworfQorI2VuZGlmCisKKwogdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiB7CiAgICAgY29uc3Rl
eHByIGF1dG8gZGVsYXlCZWZvcmVTZXR0aW5nQ2F0ZWdvcnlOb25lID0gMl9zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXgg
ZTYxYjE0N2Y2M2M1ZjQ1NzI3NWY2MDUwM2UzN2E4YjUyZDE4ZTNhMy4uOWQ2MDJjNGM3YWFjYTFm
ZmE3MWEzMjYxYTZhNDQ0OGJmYmZjYjhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0xNDAsMTYgKzE0MCwyMSBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBfcGFyZW50LT5kaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGluaXREYXRh
LCB0cmFja0lEKTsKIH0KIAorQGVuZAorCiAjaWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIp
CitAaW50ZXJmYWNlIFdlYkFWU3RyZWFtRGF0YVBhcnNlcldpdGhLZXlTcGVjaWZpZXJMaXN0ZW5l
ciA6IFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXZWJBVlN0cmVhbURhdGFQYXJzZXJXaXRoS2V5U3BlY2lmaWVyTGlzdGVuZXIKIC0gKHZvaWQp
c3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBk
aWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjooQVZDb250ZW50S2V5U3BlY2lmaWVyICopa2V5
U3BlY2lmaWVyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAogewogICAg
IEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFy
c2VyKTsKICAgICBpZiAoW2tleVNwZWNpZmllciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGluaXRpYWxpemF0aW9uRGF0YSldKQogICAgICAgICBfcGFyZW50LT5kaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RTcGVjaWZpZXJGb3JUcmFja0lEKGtleVNwZWNpZmllci5pbml0aWFsaXphdGlv
bkRhdGEsIHRyYWNrSUQpOwogfQotI2VuZGlmCi0KIEBlbmQKKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTIxNiw4ICsyMjEsMTMgQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQK
IAogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygp
CiAgICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5z
dGFuY2UoKSBpbml0XSkpCi0gICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFy
ZW50OnRoaXNdKSkKIHsKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKyAgICBpZiAo
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1
cHBvcnRFbmFibGVkKCkpCisgICAgICAgIG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQVZTdHJl
YW1EYXRhUGFyc2VyV2l0aEtleVNwZWNpZmllckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcnNl
cjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6dGhpc10pOworICAgIGVsc2UKKyNlbmRpZgorICAgICAg
ICBtX2RlbGVnYXRlID0gYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFs
bG9jXSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6dGhpc10pOwogfQogCiBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lm1tCmluZGV4IGVjMTc4OTU4YWM3ZjMyNTI0OWY3YzFjZTJmZGQ3ZTA4YjdjOGMwMTYuLjZiYTZi
OWJmMTJhZDNjOWYzODkwN2MyZmQzNmZlODdhNTUzYjJhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00MSw2ICs0
MSw3IEBACiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIK
ICNpbXBvcnQgIk1lZGlhU2FtcGxlLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIK
KyNpbXBvcnQgIk1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oIgogI2ltcG9ydCAiTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCkBAIC0yODQsNiArMjg1LDE1IEBAIHN0YXRpYyB1
aW50NjRfdCBuZXh0TWFwSUQoKQogc3RhdGljIGJvb2wgc2FtcGxlQnVmZmVyUmVuZGVyZXJzU3Vw
cG9ydEtleVNlc3Npb24oKQogewogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzID0gZmFsc2U7Cisj
aWYgSEFWRShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBz
dXBwb3J0cyA9CisgICAgICAgIFtQQUw6OmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNs
YXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChBVkNvbnRlbnRLZXlSZWNpcGllbnQp
XQorICAgICAgICAgICAgJiYgW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFz
cygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woQVZDb250ZW50S2V5UmVjaXBpZW50KV0K
KyAgICAgICAgICAgICYmIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2FtcGxlQnVmZmVyQ29u
dGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZCgpOworICAgIH0pOworI2VuZGlmCiAgICAgcmV0
dXJuIHN1cHBvcnRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAK
aW5kZXggNWZjMTUwNGE4ZTFkZDQ5NzIyMWQxMGY0MzkzMWRlY2Q1YTc0N2JkZi4uZmZlMGFjZDgx
MjMyNmEzYTA3YjJhNTIzNzhiYTdmNjFlYTAwMGQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLmNwcApAQCAtNTMxLDYgKzUzMSwxNiBAQCB2b2lkIEdQVVByb2Nlc3M6OnNl
dFVzZVNjcmVlbkNhcHR1cmVLaXQoYm9vbCB1c2UpCiB9CiAjZW5kaWYKIAorI2lmIEhBVkUoQVZD
T05URU5US0VZU1BFQ0lGSUVSKQordm9pZCBHUFVQcm9jZXNzOjpzZXRTYW1wbGVCdWZmZXJDb250
ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAobV9z
YW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVkID09IGVuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX3NhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9y
dEVuYWJsZWQgPSBlbmFibGVkOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0U2Ft
cGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBwb3J0RW5hYmxlZChlbmFibGVkKTsKK30KKyNl
bmRpZgorCiB2b2lkIEdQVVByb2Nlc3M6OndlYlByb2Nlc3NDb25uZWN0aW9uQ291bnRGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om9i
amVjdENvdW50Rm9yVGVzdGluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5o
CmluZGV4IGRjMDNhYTYyNTQzM2VkZDdjNmFhZjdmZWUzNjAzMmQ5YmUxYzQ2ZDUuLjkxMGE4Yjhh
MmU5YmMxNDI4NGI3YmZkN2M2ZjBhODM1MDZmMzdkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVVByb2Nlc3MuaApAQCAtMTkyLDYgKzE5MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
VXNlU2NyZWVuQ2FwdHVyZUtpdChib29sKTsKICNlbmRpZgogCisjaWYgSEFWRShBVkNPTlRFTlRL
RVlTUEVDSUZJRVIpCisgICAgdm9pZCBzZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1
cHBvcnRFbmFibGVkKGJvb2wpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ0ZQUkVGU19ESVJFQ1Rf
TU9ERSkKICAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRv
bWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgZW5j
b2RlZFZhbHVlKTsKICAgICB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkTm90aWZpY2F0aW9uc0ZvclBy
ZWZlcmVuY2VDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOwpAQCAtMjU3LDYgKzI2MSwx
MCBAQCBwcml2YXRlOgogI2lmIEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQogICAgIGJvb2wgbV91
c2VTY3JlZW5DYXB0dXJlS2l0IHsgZmFsc2UgfTsKICNlbmRpZgorI2lmIEhBVkUoQVZDT05URU5U
S0VZU1BFQ0lGSUVSKQorICAgIGJvb2wgbV9zYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1
cHBvcnRFbmFibGVkIHsgZmFsc2UgfTsKKyNlbmRpZgorCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggZjUzMTFiODFjNTYzN2IwMThmNjU2OGI3ZjVlNGE3Yjk1NTVlZDNmMi4uOGU5OTI5
YTUzNWI0MWUyZDE2N2YyMWU1YjNlZjMyNWJkNWM4MjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgxLDYgKzgxLDEwIEBAIG1l
c3NhZ2VzIC0+IEdQVVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFVzZVNjcmVlbkNh
cHR1cmVLaXQoYm9vbCB1c2UpOwogI2VuZGlmCiAKKyNpZiBIQVZFKEFWQ09OVEVOVEtFWVNQRUNJ
RklFUikKKyAgICBTZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnRFbmFibGVk
KGJvb2wgZW5hYmxlZCk7CisjZW5kaWYKKwogICAgIFJlcXVlc3RCaXRtYXBJbWFnZUZvckN1cnJl
bnRUaW1lKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgcGxheWVySWRlbnRpZmllcikgLT4gKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlKSBBc3luYwogCiAjaWYgRU5BQkxFKENGUFJF
RlNfRElSRUNUX01PREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYWZhYjg3MjE0MjQyMGY1MmI5
OTJkZmFmMTI3NzI5ZDAyNDc2ZDhmMC4uNDY0Njc2NjgzMmUxNTQ3ZDBiMGI5OTllMjk1ZWUyZjk3
ZmFmYjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDcsNiArNDcsOSBAQCB2b2lkIEdQVVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgbWljcm9waG9uZVNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKKyNlbmRpZgorI2lmIEhBVkUoQVZDT05URU5US0VZU1BF
Q0lGSUVSKQorICAgIGVuY29kZXIgPDwgc2FtcGxlQnVmZmVyQ29udGVudEtleVNlc3Npb25TdXBw
b3J0RW5hYmxlZDsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgcGFyZW50UElEOwogCkBAIC03NSw2
ICs3OCwxMSBAQCBib29sIEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIEdQVVByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKICNlbmRpZgorI2lmIEhBVkUoQVZDT05URU5US0VZU1BFQ0lGSUVSKQorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3Vw
cG9ydEVuYWJsZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhcmVudFBJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggZWU4ZTliZmU4OTY0NjZiZGM0NDc3ZWM4NDZhMTViODkyNDZl
MWRjOS4uZDU5MzBlZWY4YzJlMzJiYzNmMDliMjI5NjhhZjE3OTNjZmIyZjY5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCkBAIC00Nyw2ICs0Nyw5IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1p
Y3JvcGhvbmVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCisjZW5kaWYKKyNpZiBIQVZF
KEFWQ09OVEVOVEtFWVNQRUNJRklFUikKKyAgICBib29sIHNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlT
ZXNzaW9uU3VwcG9ydEVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgUHJvY2Vzc0lEIHBh
cmVudFBJRDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5LmNwcAppbmRleCAzMzQxNTQxZGJkMjEwOWMzYWJiYTI5ZDdhMDc5NGI0OTgxZmFlYWE4Li4y
MzJjNTcyNjUxMTM5NDU3ODU2ODA2YzU0NzlkNjI3YzQ4NDQxMDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjc5LDYgKzY3OSwx
MiBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXMoV2ViUHJvY2Vzc1By
b3h5JiB3ZWJQcm9jZXNzKQogICAgICAgICB9CiAjZW5kaWYKIAorI2lmIEhBVkUoQVZDT05URU5U
S0VZU1BFQ0lGSUVSKQorICAgICAgICBpZiAoIW1faGFzRW5hYmxlZFNhbXBsZUJ1ZmZlckNvbnRl
bnRLZXlTZXNzaW9uU3VwcG9ydCAmJiBwcmVmZXJlbmNlcy5zYW1wbGVCdWZmZXJDb250ZW50S2V5
U2Vzc2lvblN1cHBvcnRFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIG1faGFzRW5hYmxlZFNhbXBs
ZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3VwcG9ydCA9IHRydWU7CisgICAgICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpTZXRTYW1wbGVCdWZmZXJDb250ZW50S2V5U2Vzc2lvblN1
cHBvcnRFbmFibGVkKG1faGFzRW5hYmxlZFNhbXBsZUJ1ZmZlckNvbnRlbnRLZXlTZXNzaW9uU3Vw
cG9ydCksIDApOworICAgICAgICB9CisjZW5kaWYKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAppbmRleCBlYWRlOWI1OWJkZjVhYjEw
NzUzOGJmNWIwNzQzMDcxYjkxOThkMTlkLi4wMDYyNTVkMWY2NjZlOGM0MjRkMGNjYjZlZmNkZWNh
MWM4MmM3OWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5oCkBAIC0xODMsNiArMTgzLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0VuYWJs
ZWRNZWRpYVNvdXJjZUlubGluZVBhaW50aW5nIHsgZmFsc2UgfTsKICNlbmRpZgogCisjaWYgSEFW
RShBVkNPTlRFTlRLRVlTUEVDSUZJRVIpCisgICAgYm9vbCBtX2hhc0VuYWJsZWRTYW1wbGVCdWZm
ZXJDb250ZW50S2V5U2Vzc2lvblN1cHBvcnQgeyBmYWxzZSB9OworI2VuZGlmCisKICNpZiBIQVZF
KFNDUkVFTl9DQVBUVVJFX0tJVCkKICAgICBib29sIG1faGFzRW5hYmxlZFNjcmVlbkNhcHR1cmVL
aXQgeyBmYWxzZSB9OwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>