<?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>232137</bug_id>
          
          <creation_ts>2021-10-22 03:04:13 -0700</creation_ts>
          <short_desc>Factor style resolver context arguments into a struct</short_desc>
          <delta_ts>2021-10-22 11:20:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=232160</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1807612</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-22 03:04:13 -0700</bug_when>
    <thetext>Style resolver needs context to resolve things correctly. It is currently provided in an ad-hoc manner as a collection of function arguments. Factor them into a struct for consistency and future extensibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807614</commentid>
    <comment_count>1</comment_count>
      <attachid>442140</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-22 03:06:31 -0700</bug_when>
    <thetext>Created attachment 442140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807615</commentid>
    <comment_count>2</comment_count>
      <attachid>442141</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-22 03:18:28 -0700</bug_when>
    <thetext>Created attachment 442141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807639</commentid>
    <comment_count>3</comment_count>
      <attachid>442152</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-22 05:36:16 -0700</bug_when>
    <thetext>Created attachment 442152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807662</commentid>
    <comment_count>4</comment_count>
      <attachid>442161</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-22 07:07:44 -0700</bug_when>
    <thetext>Created attachment 442161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807679</commentid>
    <comment_count>5</comment_count>
      <attachid>442161</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-10-22 08:27:30 -0700</bug_when>
    <thetext>Comment on attachment 442161
Patch

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

&gt; Source/WebCore/style/StyleResolver.h:83
&gt; +struct ResolveContext {

Shouldn&apos;t this be called ResolutionContext rather? Resolve is a noun too, but it doesn&apos;t mean the same thing, and a noun seems better than a verb here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807681</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-22 08:28:53 -0700</bug_when>
    <thetext>&gt; Shouldn&apos;t this be called ResolutionContext rather? Resolve is a noun too,
&gt; but it doesn&apos;t mean the same thing, and a noun seems better than a verb here.

Good idea</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807691</commentid>
    <comment_count>7</comment_count>
      <attachid>442168</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-22 08:47:11 -0700</bug_when>
    <thetext>Created attachment 442168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807729</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-22 09:56:42 -0700</bug_when>
    <thetext>Committed r284693 (243412@main): &lt;https://commits.webkit.org/243412@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442168.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807730</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-22 09:57:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/84553304&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807781</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-10-22 11:20:35 -0700</bug_when>
    <thetext>(In reply to EWS from comment #8)
&gt; Committed r284693 (243412@main): &lt;https://commits.webkit.org/243412@main&gt;
&gt; 
&gt; All reviewed patches have been landed. Closing bug and clearing flags on
&gt; attachment 442168 [details].

This caused the clean build of WebKitGTK to break with a linking error. Reported at bug 232160</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442140</attachid>
            <date>2021-10-22 03:06:31 -0700</date>
            <delta_ts>2021-10-22 03:26:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232137-20211022130629.patch</filename>
            <type>text/plain</type>
            <size>55725</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI2NmIxMmUxYmI2YTQx
YjhkMDJjMGUzZmU2MmUxMmYwODQzZGFjNS4uMDFmNDQ5MGVkYWI1ZTRlYjFkMjVjMzM3NzhiNzFk
Njk1ODBmYjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTEwLTIyICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3Igc3R5bGUgcmVz
b2x2ZXIgYXJndW1lbnRzIGludG8gYSBjb250ZXh0IHN0cnVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0
Lmg6CisgICAgICAgICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NBbmltYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogYW5pbWF0aW9uL0NTU0FuaW1h
dGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1RyYW5zaXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
cmFuc2l0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5o
OgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICog
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp1cGRh
dGVCbGVuZGluZ0tleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6
Y29tcHV0ZURlY2xhcmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZy
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YXBwbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUp
OgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oOgorICAgICAgICAqIGFuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0U3RhY2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKToKKyAgICAgICAgKiBhbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3RTdGFjay5oOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBhbmltYXRp
b24vV2ViQW5pbWF0aW9uLmg6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlNYXRjaGVyOjpkb2N1bWVudEVsZW1lbnRVc2Vy
QWdlbnRTdHlsZSBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlTWVkaWEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVNZWRpYTo6bWF0Y2hNZWRpdW0gY29uc3QpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVGb3JFbGVt
ZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNvbXB1
dGVGaXJzdExpbmVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjpnZXRVbmNhY2hlZFBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvS2V5ZnJhbWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lTGlzdDo6Zmls
bEltcGxpY2l0S2V5ZnJhbWVzKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6UmVzb2x2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
ZXNvbHZlcjo6b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnNldE92ZXJyaWRlRG9jdW1lbnRFbGVt
ZW50U3R5bGUpOiBEZWxldGVkLgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OlNjb3BlOjpTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpTY29wZTo6flNjb3BlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yU3R5bGVhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9T
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpwYXJlbnRCb3hT
dHlsZUZvclBzZXVkb0VsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRy
ZWVSZXNvbHZlcjo6cmVzb2x2ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpU
cmVlUmVzb2x2ZXI6OnJlc29sdmVyQ29udGV4dEZvclBzZXVkb0VsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxl
Rm9yUHNldWRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNv
bHZlci5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHlsZWFibGVBbmRQcm9wZXJ0eSk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmFwcGx5
S2V5ZnJhbWVFZmZlY3RzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudFJhcmVEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50UmFyZURhdGE6Om92ZXJyaWRlQ29tcHV0
ZWRTdHlsZSk6CisKIDIwMjEtMTAtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB0
ZXh0IGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaAppbmRleCAyNjUzMjIxM2E3NDU3ZGQwMjU4MDhmMDgw
MWMwY2RmMWQyNTAzYTc3Li5jZTZjM2I2YmIyNjVhMjVkMWM1MjBhMWQ0NGQ3ZjlhN2U5M2Y1Mzgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oCkBAIC00Nyw2
ICs0NywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVzcGFjZSBTdHlsZSB7Citz
dHJ1Y3QgUmVzb2x2ZXJDb250ZXh0OworfQorCiBjbGFzcyBBbmltYXRpb25FZmZlY3QgOiBwdWJs
aWMgUmVmQ291bnRlZDxBbmltYXRpb25FZmZlY3Q+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QW5p
bWF0aW9uRWZmZWN0PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QW5pbWF0aW9uRWZmZWN0KCk7
CkBAIC02MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5n
c1VwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPik7CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gdXBkYXRlVGltaW5nKHN0ZDo6b3B0aW9uYWw8T3B0aW9uYWxFZmZl
Y3RUaW1pbmc+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHko
UmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZXJDb250ZXh0Jiwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25EaWRUaWNr
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25EaWRQbGF5KCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAppbmRleCAzMTNmMGRjODQ5ZThmY2Zh
NWQxMjMyYWM5ZTA4ODljMWUyZjYyZWMyLi41YzI0ZDhiZDdiODAxYjM5MDIwNmMzNDE4NDE2MzFj
YjVjMDQ5ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcApA
QCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKENTU0FuaW1hdGlvbik7CiAKLVJlZjxDU1NBbmltYXRpb24+IENTU0FuaW1h
dGlvbjo6Y3JlYXRlKGNvbnN0IFN0eWxlYWJsZSYgb3duaW5nRWxlbWVudCwgY29uc3QgQW5pbWF0
aW9uJiBiYWNraW5nQW5pbWF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRT
dHlsZSkKK1JlZjxDU1NBbmltYXRpb24+IENTU0FuaW1hdGlvbjo6Y3JlYXRlKGNvbnN0IFN0eWxl
YWJsZSYgb3duaW5nRWxlbWVudCwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwg
Y29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYgcmVzb2x2ZXJDb250ZXh0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NBbmltYXRpb24ob3duaW5nRWxlbWVudCwgYmFj
a2luZ0FuaW1hdGlvbikpOwotICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShvbGRTdHlsZSwgbmV3U3R5
bGUsIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgcmVzdWx0LT5pbml0aWFsaXplKG9sZFN0eWxl
LCBuZXdTdHlsZSwgcmVzb2x2ZXJDb250ZXh0KTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlV2ViQW5pbWF0aW9uKHJlc3VsdC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaAppbmRleCA1MDM5OTc4ZGUwMWNlN2VhOTZhZDg3NjY1
MDUzZDFkNTMyMGQxYTI2Li4zN2UyM2EzNmIzYjBlYTg4NjJkNmI0MWI0NThhNDIwMDRhMTRjMGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCkBAIC0zOCw3ICszOCw3
IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgQ1NTQW5pbWF0aW9uIGZpbmFsIDogcHVibGlj
IERlY2xhcmF0aXZlQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU0Fu
aW1hdGlvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb24+IGNyZWF0ZShj
b25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEVsZW1lbnRTdHlsZSk7CisgICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb24+IGNyZWF0ZShj
b25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVy
Q29udGV4dCYpOwogICAgIH5DU1NBbmltYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlz
Q1NTQW5pbWF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCmluZGV4IDQwYmMzNGQ2YTE0YzBkY2Qy
ZGIzN2FjMGRiNTFhNTYzNjY2NTM1MWUuLjU3OTViZmZmOTE2NjBjYWQ2YWI4ZTA1MTkyODRmZDI4
NjRmY2Y2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgUmVmPENTU1RyYW5zaXRpb24+IENTU1RyYW5zaXRpb246OmNyZWF0
ZShjb25zdCBTdHlsZWFibGUmIG93bmluZ0VsZW1lbnQsIENTU1Byb3AKIHsKICAgICBBU1NFUlQo
b2xkU3R5bGUpOwogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NUcmFuc2l0aW9u
KG93bmluZ0VsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgYmFja2luZ0FuaW1hdGlv
biwgKm9sZFN0eWxlLCBuZXdTdHlsZSwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZl
cnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7Ci0gICAgcmVzdWx0LT5pbml0aWFsaXplKG9sZFN0eWxl
LCBuZXdTdHlsZSwgbnVsbHB0cik7CisgICAgcmVzdWx0LT5pbml0aWFsaXplKG9sZFN0eWxlLCBu
ZXdTdHlsZSwgeyBudWxscHRyIH0pOwogICAgIHJlc3VsdC0+c2V0VGltaW5nUHJvcGVydGllcyhk
ZWxheSwgZHVyYXRpb24pOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVh
dGVXZWJBbmltYXRpb24ocmVzdWx0LmdldCgpKTsKQEAgLTYxLDkgKzYxLDkgQEAgQ1NTVHJhbnNp
dGlvbjo6Q1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwKIHsKIH0KIAotdm9pZCBDU1NUcmFuc2l0aW9uOjpyZXNvbHZlKFJlbmRl
clN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHls
ZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCit2b2lkIENTU1RyYW5zaXRpb246
OnJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZXJD
b250ZXh0JiByZXNvbHZlckNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1l
KQogewotICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpyZXNvbHZlKHRhcmdldFN0eWxlLCBwYXJl
bnRFbGVtZW50U3R5bGUsIHN0YXJ0VGltZSk7CisgICAgRGVjbGFyYXRpdmVBbmltYXRpb246OnJl
c29sdmUodGFyZ2V0U3R5bGUsIHJlc29sdmVyQ29udGV4dCwgc3RhcnRUaW1lKTsKICAgICBtX2N1
cnJlbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCmluZGV4IDYzZWIzY2EwM2UzYjEy
YjkyYTVjZWNmMTQwZWM3MDYzMjEzMDZkMGIuLjE2ZTU0OGQ1NTNiZmNiMDA4ODVmNGE2YTY1YzNm
NTgzNjY1YmExMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFu
c2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaApA
QCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIENTU1RyYW5zaXRpb24oY29uc3QgU3R5bGVh
YmxlJiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3Qg
QW5pbWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0
U3R5bGUsIGRvdWJsZSk7CiAgICAgdm9pZCBzZXRUaW1pbmdQcm9wZXJ0aWVzKFNlY29uZHMgZGVs
YXksIFNlY29uZHMgZHVyYXRpb24pOwogICAgIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IGNyZWF0
ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBj
b25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGlt
ZSkgZmluYWw7Ci0gICAgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRz
PikgZmluYWw7CisgICAgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29u
c3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pIGZpbmFs
OwogCiAgICAgQ1NTUHJvcGVydHlJRCBtX3Byb3BlcnR5OwogICAgIE1vbm90b25pY1RpbWUgbV9n
ZW5lcmF0aW9uVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNs
YXJhdGl2ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRp
dmVBbmltYXRpb24uY3BwCmluZGV4IGYxOTYwOGUwNGFlYzNiMTE0ZmNiZjQ2M2UwN2UzMjZmMTA5
YTFkZDYuLmJjODY0ZjhkNThjYTQ5N2QyYjJiZDQyMWE0ZGI3MWYzZTI3ODY1NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcApAQCAt
MTA1LDcgKzEwNSw3IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnNldEJhY2tpbmdBbmlt
YXRpb24oY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uCiAgICAgc3luY1Byb3BlcnRp
ZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpOwogfQogCi12b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9u
Ojppbml0aWFsaXplKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUmIG5ld1N0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKQordm9p
ZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5pdGlhbGl6ZShjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVy
Q29udGV4dCYgcmVzb2x2ZXJDb250ZXh0KQogewogICAgIC8vIFdlIG5lZWQgdG8gc3VzcGVuZCBp
bnZhbGlkYXRpb24gb2YgdGhlIGFuaW1hdGlvbidzIGtleWZyYW1lIGVmZmVjdCBkdXJpbmcgaXRz
IGNyZWF0aW9uCiAgICAgLy8gYXMgaXQgd291bGQgb3RoZXJ3aXNlIHRyaWdnZXIgaW52YWxpZGF0
aW9uIG9mIHRoZSBkb2N1bWVudCdzIHN0eWxlIGFuZCB0aGlzIHdvdWxkIGJlCkBAIC0xMTYsNyAr
MTE2LDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5pdGlhbGl6ZShjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclMKIAogICAgIHNldEVmZmVjdChLZXlmcmFt
ZUVmZmVjdDo6Y3JlYXRlKCptX293bmluZ0VsZW1lbnQsIG1fb3duaW5nUHNldWRvSWQpKTsKICAg
ICBzZXRUaW1lbGluZSgmbV9vd25pbmdFbGVtZW50LT5kb2N1bWVudCgpLnRpbWVsaW5lKCkpOwot
ICAgIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihlZmZlY3QoKSktPmNvbXB1dGVEZWNsYXJhdGl2
ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBuZXdTdHlsZSwgcGFyZW50RWxl
bWVudFN0eWxlKTsKKyAgICBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oZWZmZWN0KCkpLT5jb21w
dXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhvbGRTdHlsZSwgbmV3U3R5
bGUsIHJlc29sdmVyQ29udGV4dCk7CiAgICAgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1h
dGlvbigpOwogICAgIGlmIChiYWNraW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkgPT0gQW5pbWF0
aW9uUGxheVN0YXRlOjpQbGF5aW5nKQogICAgICAgICBwbGF5KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCmluZGV4IDg1MjRiNzhkNzQzMWZh
OTc5NzQ2Mjc0OTM2YjkyNDcwZmVjMDQzZjYuLjYzMjAzMjMxNjQyNjExM2UwNWY3NmY0YzM1ZDIz
MDc2ZGE1ZmE3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJh
dGl2ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBE
ZWNsYXJhdGl2ZUFuaW1hdGlvbihjb25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
RWxlbWVudFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6
OlJlc29sdmVyQ29udGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jUHJvcGVydGllc1dpdGhC
YWNraW5nQW5pbWF0aW9uKCk7CiAgICAgLy8gZWxhcHNlZFRpbWUgaXMgdGhlIGFuaW1hdGlvbidz
IGN1cnJlbnQgdGltZSBhdCB0aGUgdGltZSB0aGUgZXZlbnQgaXMgYWRkZWQgYW5kIGlzIGV4cG9z
ZWQgdGhyb3VnaCB0aGUgRE9NIEFQSSwgdGltZWxpbmVUaW1lIGlzIHRoZSBhbmltYXRpb25zJwog
ICAgIC8vIHRpbWVsaW5lIGN1cnJlbnQgdGltZSBhbmQgaXMgbm90IGV4cG9zZWQgdGhyb3VnaCB0
aGUgRE9NIEFQSSBidXQgdXNlZCBieSB0aGUgRG9jdW1lbnRUaW1lbGluZSBmb3Igc29ydGluZyBl
dmVudHMgYmVmb3JlIGRpc3BhdGNoLiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuY3BwCmluZGV4IDY3YjlhZjBjMDE2ODZmOThkMjVhYjY4MDM3MzEwZjVmZTFhZGZl
OTkuLjhkYjlkMzkyYjNhYWMzMTlhOGYzYzFiNDZjYmE0YzgyMzc2MmJiMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtODEyLDcgKzgxMiw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBLZXlm
cmFtZUVmZmVjdDo6dXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmIGVsZW1lbnRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK3ZvaWQgS2V5ZnJh
bWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJiBlbGVtZW50U3R5
bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCkKIHsKICAg
ICBpZiAoIW1fYmxlbmRpbmdLZXlmcmFtZXMuaXNFbXB0eSgpIHx8ICFtX3RhcmdldCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0
ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlCiAg
ICAgICAgICAgICBrZXlmcmFtZUxpc3QuYWRkUHJvcGVydHkoc3R5bGVQcm9wZXJ0aWVzLT5wcm9w
ZXJ0eUF0KGkpLmlkKCkpOwogCiAgICAgICAgIGF1dG8ga2V5ZnJhbWVSdWxlID0gU3R5bGVSdWxl
S2V5ZnJhbWU6OmNyZWF0ZShXVEZNb3ZlKHN0eWxlUHJvcGVydGllcykpOwotICAgICAgICBrZXlm
cmFtZVZhbHVlLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JLZXlmcmFtZSgqbV90YXJn
ZXQsICZlbGVtZW50U3R5bGUsIHBhcmVudEVsZW1lbnRTdHlsZSwga2V5ZnJhbWVSdWxlLnB0cigp
LCBrZXlmcmFtZVZhbHVlKSk7CisgICAgICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVS
ZXNvbHZlci5zdHlsZUZvcktleWZyYW1lKCptX3RhcmdldCwgJmVsZW1lbnRTdHlsZSwgcmVzb2x2
ZXJDb250ZXh0LCBrZXlmcmFtZVJ1bGUucHRyKCksIGtleWZyYW1lVmFsdWUpKTsKICAgICAgICAg
a2V5ZnJhbWVMaXN0Lmluc2VydChXVEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKICAgICB9CiAKQEAg
LTEwMDMsMTYgKzEwMDMsMTYgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y2hlY2tGb3JNYXRjaGlu
Z0NvbG9yRmlsdGVyRnVuY3Rpb25MaXN0cygpCiAgICAgfSk7CiB9CiAKLXZvaWQgS2V5ZnJhbWVF
ZmZlY3Q6OmNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKQordm9pZCBLZXlmcmFtZUVmZmVjdDo6
Y29tcHV0ZURlY2xhcmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxl
OjpSZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCkKIHsKICAgICBBU1NFUlQoaXM8RGVj
bGFyYXRpdmVBbmltYXRpb24+KGFuaW1hdGlvbigpKSk7CiAgICAgaWYgKGlzPENTU0FuaW1hdGlv
bj4oYW5pbWF0aW9uKCkpKQotICAgICAgICBjb21wdXRlQ1NTQW5pbWF0aW9uQmxlbmRpbmdLZXlm
cmFtZXMobmV3U3R5bGUsIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgICAgIGNvbXB1dGVDU1NB
bmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhuZXdTdHlsZSwgcmVzb2x2ZXJDb250ZXh0KTsKICAg
ICBlbHNlIGlmIChpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24oKSkpCiAgICAgICAgIGNvbXB1
dGVDU1NUcmFuc2l0aW9uQmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5bGUsIG5ld1N0eWxlKTsKIH0K
IAotdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJh
bWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmFuaW1hdGVkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
KiBwYXJlbnRFbGVtZW50U3R5bGUpCit2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlQ1NTQW5p
bWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3R5bGUmIHVuYW5pbWF0ZWRTdHls
ZSwgY29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYgcmVzb2x2ZXJDb250ZXh0KQogewogICAg
IEFTU0VSVChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbigpKSk7CiAgICAgQVNTRVJUKGRvY3Vt
ZW50KCkpOwpAQCAtMTAyMiw3ICsxMDIyLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0
ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmEKIAog
ICAgIEtleWZyYW1lTGlzdCBrZXlmcmFtZUxpc3QoYmFja2luZ0FuaW1hdGlvbi5uYW1lKCkuc3Ry
aW5nKTsKICAgICBpZiAoYXV0byogc3R5bGVTY29wZSA9IFN0eWxlOjpTY29wZTo6Zm9yT3JkaW5h
bCgqbV90YXJnZXQsIGJhY2tpbmdBbmltYXRpb24ubmFtZVN0eWxlU2NvcGVPcmRpbmFsKCkpKQot
ICAgICAgICBzdHlsZVNjb3BlLT5yZXNvbHZlcigpLmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9u
KCptX3RhcmdldCwgJnVuYW5pbWF0ZWRTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlLCBrZXlmcmFt
ZUxpc3QpOworICAgICAgICBzdHlsZVNjb3BlLT5yZXNvbHZlcigpLmtleWZyYW1lU3R5bGVzRm9y
QW5pbWF0aW9uKCptX3RhcmdldCwgJnVuYW5pbWF0ZWRTdHlsZSwgcmVzb2x2ZXJDb250ZXh0LCBr
ZXlmcmFtZUxpc3QpOwogCiAgICAgLy8gRW5zdXJlIHJlc291cmNlIGxvYWRzIGZvciBhbGwgdGhl
IGZyYW1lcy4KICAgICBmb3IgKGF1dG8mIGtleWZyYW1lIDoga2V5ZnJhbWVMaXN0LmtleWZyYW1l
cygpKSB7CkBAIC0xMjY2LDEyICsxMjY2LDEyIEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmRpZENo
YW5nZVRhcmdldFN0eWxlYWJsZShjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsCiAg
ICAgICAgIG1faW5UYXJnZXRFZmZlY3RTdGFjayA9IG5ld1RhcmdldFN0eWxlYWJsZS0+ZW5zdXJl
S2V5ZnJhbWVFZmZlY3RTdGFjaygpLmFkZEVmZmVjdCgqdGhpcyk7CiB9CiAKLXZvaWQgS2V5ZnJh
bWVFZmZlY3Q6OmFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUp
Cit2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNv
bnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCwgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBzdGFydFRpbWUpCiB7CiAgICAgaWYgKCFtX3RhcmdldCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXModGFyZ2V0U3R5bGUsIHBhcmVudEVs
ZW1lbnRTdHlsZSk7CisgICAgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXModGFyZ2V0U3R5bGUsIHJl
c29sdmVyQ29udGV4dCk7CiAKICAgICBhdXRvIGNvbXB1dGVkVGltaW5nID0gZ2V0Q29tcHV0ZWRU
aW1pbmcoc3RhcnRUaW1lKTsKICAgICBpZiAoIXN0YXJ0VGltZSkgewpAQCAtMTQzMyw3ICsxNDMz
LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0QW5pbWF0ZWRQcm9wZXJ0aWVzSW5TdHlsZShS
ZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGRvdWIKICAgICAvLyBUaGUgZWZmZWN0IHZhbHVlIG9m
IGEgc2luZ2xlIHByb3BlcnR5IHJlZmVyZW5jZWQgYnkgYSBrZXlmcmFtZSBlZmZlY3QgYXMgb25l
IG9mIGl0cyB0YXJnZXQgcHJvcGVydGllcywKICAgICAvLyBmb3IgYSBnaXZlbiBpdGVyYXRpb24g
cHJvZ3Jlc3MsIGN1cnJlbnQgaXRlcmF0aW9uIGFuZCB1bmRlcmx5aW5nIHZhbHVlIGlzIGNhbGN1
bGF0ZWQgYXMgZm9sbG93cy4KIAotICAgIHVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKHRhcmdldFN0
eWxlLCBudWxscHRyKTsKKyAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0YXJnZXRTdHlsZSwg
eyBudWxscHRyIH0pOwogICAgIGlmIChtX2JsZW5kaW5nS2V5ZnJhbWVzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5o
CmluZGV4IGY3ODE1Mzk5NTI0N2FhMTk1NDU2ZWZiNGI0MTkzZGM0NjY1NDM3Y2EuLjdhYzdiNGE4
ODI3OWM2ZWQxZDdlZGQ3NGVhMzUwMjUzYjdhZmIyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Q29tcG9zaXRlKENvbXBvc2l0ZU9wZXJhdGlvbiBjb21wb3NpdGVPcGVyYXRpb24pIHsg
bV9jb21wb3NpdGVPcGVyYXRpb24gPSBjb21wb3NpdGVPcGVyYXRpb247IH0KIAogICAgIHZvaWQg
Z2V0QW5pbWF0ZWRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0
eWxlKTsKLSAgICB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0
ZDo6bnVsbG9wdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0
U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+ID0gc3RkOjpudWxsb3B0KSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFRpY2soKSBmaW5hbDsKICAgICB2b2lkIGFuaW1h
dGlvbkRpZFBsYXkoKSBmaW5hbDsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICBib29sIGNvbG9yRmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9jb2xvckZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaDsgfQogCi0gICAgdm9pZCBj
b21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgdm9pZCBjb21wdXRlRGVjbGFyYXRpdmVB
bmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYp
OwogICAgIGNvbnN0IEtleWZyYW1lTGlzdCYgYmxlbmRpbmdLZXlmcmFtZXMoKSBjb25zdCB7IHJl
dHVybiBtX2JsZW5kaW5nS2V5ZnJhbWVzOyB9CiAgICAgY29uc3QgSGFzaFNldDxDU1NQcm9wZXJ0
eUlEPiYgYW5pbWF0ZWRQcm9wZXJ0aWVzKCk7CiAgICAgYm9vbCBhbmltYXRlc1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQpIGNvbnN0OwpAQCAtMTk4LDggKzE5OCw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCk7CiAgICAgdm9pZCBjb21wdXRlU29tZUtl
eWZyYW1lc1VzZVN0ZXBzVGltaW5nRnVuY3Rpb24oKTsKICAgICB2b2lkIGNsZWFyQmxlbmRpbmdL
ZXlmcmFtZXMoKTsKLSAgICB2b2lkIHVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxl
JiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpOwot
ICAgIHZvaWQgY29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRl
clN0eWxlJiB1bmFuaW1hdGVkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50
U3R5bGUpOworICAgIHZvaWQgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmIGVs
ZW1lbnRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYpOworICAgIHZvaWQgY29t
cHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmFu
aW1hdGVkU3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmKTsKICAgICB2b2lkIGNv
bXB1dGVDU1NUcmFuc2l0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpOwogICAgIHZvaWQgY29tcHV0ZUFj
Y2VsZXJhdGVkUHJvcGVydGllc1N0YXRlKCk7CiAgICAgdm9pZCBzZXRCbGVuZGluZ0tleWZyYW1l
cyhLZXlmcmFtZUxpc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdFN0YWNrLmNwcAppbmRleCBiOGE4ZmE4OTg5MGVlYjU1OTk4OTllMWY3NmNiZmNkNGY4
NDM1ZWUxLi5lMTU0ZTVhODE1NWQ2ZmJmOTVjYjc4MGRhZDYyMzkxMTQ0YzJiNTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdFN0YWNrOjpzZXRDU1NBbmltYXRpb25M
aXN0KFJlZlB0cjxjb25zdCBBbmltYXRpb25MaXN0PiYmIGNzc0EKICAgICBtX2lzU29ydGVkID0g
ZmFsc2U7CiB9CiAKLU9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEtleWZyYW1lRWZmZWN0U3Rh
Y2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK09wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+
IEtleWZyYW1lRWZmZWN0U3RhY2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0
YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZl
bnRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYgcmVzb2x2ZXJDb250ZXh0KQog
ewogICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGltcGFjdDsKIApAQCAtMTM0LDcgKzEz
NCw3IEBAIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEtleWZyYW1lRWZmZWN0U3RhY2s6OmFw
cGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlCiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVm
ZmVjdCA6IHNvcnRlZEVmZmVjdHMoKSkgewogICAgICAgICBBU1NFUlQoZWZmZWN0LT5hbmltYXRp
b24oKSk7Ci0gICAgICAgIGVmZmVjdC0+YW5pbWF0aW9uKCktPnJlc29sdmUodGFyZ2V0U3R5bGUs
IHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgICAgIGVmZmVjdC0+YW5pbWF0aW9uKCktPnJlc29s
dmUodGFyZ2V0U3R5bGUsIHJlc29sdmVyQ29udGV4dCk7CiAKICAgICAgICAgaWYgKGVmZmVjdC0+
aXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSB8fCBlZmZlY3QtPmlzQWJvdXRUb1J1bkFjY2VsZXJhdGVk
KCkpCiAgICAgICAgICAgICBpbXBhY3QuYWRkKEFuaW1hdGlvbkltcGFjdDo6UmVxdWlyZXNSZWNv
bXBvc2l0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3RTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3Rh
Y2suaAppbmRleCA1ZGFiNGM3MmVlYjc1ZDViZmQxZWQ3MzYxNTI5Y2ZiZDQ0NjhhMTEwLi4xZTMz
YjRiMjQ4ODVkNjFmMzg5OTY2NWE1YmZjNDMzOTg5NzA2MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmgKQEAgLTM2LDYgKzM2LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtleWZyYW1lRWZmZWN0OwogY2xhc3MgUmVuZGVyU3R5
bGU7CiAKK25hbWVzcGFjZSBTdHlsZSB7CitzdHJ1Y3QgUmVzb2x2ZXJDb250ZXh0OworfQorCiBj
bGFzcyBLZXlmcmFtZUVmZmVjdFN0YWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTUwLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q1NTQW5pbWF0
aW9uTGlzdChSZWZQdHI8Y29uc3QgQW5pbWF0aW9uTGlzdD4mJik7CiAgICAgYm9vbCBpc0N1cnJl
bnRseUFmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wgcmVx
dWlyZXNQc2V1ZG9FbGVtZW50KCkgY29uc3Q7Ci0gICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFj
dD4gYXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1w
YWN0PiBhcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIGNvbnN0IFN0
eWxlOjpSZXNvbHZlckNvbnRleHQmKTsKICAgICBib29sIGhhc0VmZmVjdFdpdGhJbXBsaWNpdEtl
eWZyYW1lcygpIGNvbnN0OwogCiAgICAgdm9pZCBzdG9wQWNjZWxlcmF0aW5nVHJhbnNmb3JtUmVs
YXRlZFByb3BlcnRpZXMoVXNlQWNjZWxlcmF0ZWRBY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBmYjczOTM1ODlkYTJlNjhkNGFlZmFiZGU5NmFi
NTM5YjYyMDYxNmE0Li40M2ZiYmM4NzdiNjQzN2ZiNWQyODc1MmUxMzExYzRlZWNkOWUyYTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMTIyNywxNCAr
MTIyNywxNCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dGljaygpCiAgICAgICAgIG1fZWZmZWN0LT5h
bmltYXRpb25EaWRUaWNrKCk7CiB9CiAKLXZvaWQgV2ViQW5pbWF0aW9uOjpyZXNvbHZlKFJlbmRl
clN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHls
ZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCit2b2lkIFdlYkFuaW1hdGlvbjo6
cmVzb2x2ZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNv
bnRleHQmIHJlc29sdmVyQ29udGV4dCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUp
CiB7CiAgICAgaWYgKCFtX3Nob3VsZFNraXBVcGRhdGluZ0ZpbmlzaGVkU3RhdGVXaGVuUmVzb2x2
aW5nKQogICAgICAgICB1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWs6Ok5vLCBTeW5jaHJvbm91
c2x5Tm90aWZ5OjpZZXMpOwogICAgIG1fc2hvdWxkU2tpcFVwZGF0aW5nRmluaXNoZWRTdGF0ZVdo
ZW5SZXNvbHZpbmcgPSBmYWxzZTsKIAogICAgIGlmIChtX2VmZmVjdCkKLSAgICAgICAgbV9lZmZl
Y3QtPmFwcGx5KHRhcmdldFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUsIHN0YXJ0VGltZSk7Cisg
ICAgICAgIG1fZWZmZWN0LT5hcHBseSh0YXJnZXRTdHlsZSwgcmVzb2x2ZXJDb250ZXh0LCBzdGFy
dFRpbWUpOwogfQogCiB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0U3VzcGVuZGVkKGJvb2wgaXNTdXNw
ZW5kZWQpCkBAIC0xNDI2LDEyICsxNDI2LDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1h
dGlvbjo6Y29tbWl0U3R5bGVzKCkKICAgICAgICAgICAgIGlmIChlZmZlY3RJblN0YWNrLT5hbmlt
YXRpb24oKSAhPSB0aGlzICYmICFjb21wYXJlQW5pbWF0aW9uc0J5Q29tcG9zaXRlT3JkZXIoKmVm
ZmVjdEluU3RhY2stPmFuaW1hdGlvbigpLCAqdGhpcykpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBpZiAoZWZmZWN0SW5TdGFjay0+YW5pbWF0ZWRQcm9wZXJ0aWVzKCkuY29u
dGFpbnMocHJvcGVydHkpKQotICAgICAgICAgICAgICAgIGVmZmVjdEluU3RhY2stPmFuaW1hdGlv
bigpLT5yZXNvbHZlKCphbmltYXRlZFN0eWxlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBl
ZmZlY3RJblN0YWNrLT5hbmltYXRpb24oKS0+cmVzb2x2ZSgqYW5pbWF0ZWRTdHlsZSwgeyBudWxs
cHRyIH0pOwogICAgICAgICAgICAgaWYgKGVmZmVjdEluU3RhY2stPmFuaW1hdGlvbigpID09IHRo
aXMpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fcmVw
bGFjZVN0YXRlID09IFJlcGxhY2VTdGF0ZTo6UmVtb3ZlZCkKLSAgICAgICAgICAgIGVmZmVjdC0+
YW5pbWF0aW9uKCktPnJlc29sdmUoKmFuaW1hdGVkU3R5bGUsIG51bGxwdHIpOworICAgICAgICAg
ICAgZWZmZWN0LT5hbmltYXRpb24oKS0+cmVzb2x2ZSgqYW5pbWF0ZWRTdHlsZSwgeyBudWxscHRy
IH0pOwogICAgICAgICBpZiAoYXV0byBjc3NWYWx1ZSA9IGNvbXB1dGVkU3R5bGVFeHRyYWN0b3Iu
dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoKmFuaW1hdGVkU3R5bGUsIHByb3BlcnR5LCByZW5kZXJl
cikpCiAgICAgICAgICAgICBpbmxpbmVTdHlsZS0+c2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0
eSwgY3NzVmFsdWUtPmNzc1RleHQoKSwgZmFsc2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uaAppbmRleCA3NzQ0ZmJmM2NmNmE3YmQ5NzQ5YWJkMTg4YTUwMzc1
M2NjYjQ3OTg0Li5kZWFlZWZjZTU3ZGUzNzVhYWU3ZDRiNTRiMjEwNTU4YjI1M2EyYzRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCkBAIC00OCw2ICs0OCwxMCBAQCBj
bGFzcyBSZW5kZXJTdHlsZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9N
UHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazsKIAorbmFtZXNwYWNlIFN0eWxlIHsKK3N0
cnVjdCBSZXNvbHZlckNvbnRleHQ7Cit9CisKIGNsYXNzIFdlYkFuaW1hdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYkFuaW1hdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdl
YkFuaW1hdGlvbik7CiBwdWJsaWM6CkBAIC0xMTksNyArMTIzLDcgQEAgcHVibGljOgogICAgIGJv
b2wgbmVlZHNUaWNrKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHRpY2soKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBTZWNvbmRzIHRpbWVUb05leHRUaWNrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50RWxlbWVudFN0eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNv
bnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3Rk
OjpudWxsb3B0KTsKICAgICB2b2lkIGVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBzdGQ6Om9w
dGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBzdGQ6Om9wdGlv
bmFsPGNvbnN0IFN0eWxlYWJsZT4mIG5ld1RhcmdldCk7CiAgICAgdm9pZCBhY2NlbGVyYXRlZFN0
YXRlRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVyZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCmluZGV4IDViNTVkZWJlMGQ3M2RhMmMwM2Ni
OGFhYmM2YzQ0NDFiZDY5MDQwODAuLjU1ODM2MzJmNjAzYjc4N2ZkNDBiNDEzMDI1NTU4NTI4NmNm
NGM5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IE1lZGlhUXVlcnlNYXRjaGVy
Ojpkb2N1bWVudEVsZW1lbnRVc2VyQWdlbnRTdHlsZSgpCiAgICAgaWYgKCFkb2N1bWVudEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1fZG9jdW1lbnQtPnN0
eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCBt
X2RvY3VtZW50LT5yZW5kZXJTdHlsZSgpLCBudWxscHRyLCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6
TWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpLnJlbmRlclN0eWxlOworICAgIHJldHVybiBtX2RvY3Vt
ZW50LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmRvY3VtZW50RWxl
bWVudCwgeyBtX2RvY3VtZW50LT5yZW5kZXJTdHlsZSgpIH0sIFJ1bGVNYXRjaGluZ0JlaGF2aW9y
OjpNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CiB9CiAKIGJvb2wgTWVkaWFR
dWVyeU1hdGNoZXI6OmV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlTZXQmIG1lZGlhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlTWVkaWEuY3BwCmluZGV4IGE2MTQyYWFiMmZlMzdjMTVkMGIwMTRmZGMzMjljNzQz
ZDQ2MGQ5YzMuLmZlMmVlMWJhM2FkMDI4ODcyN2RlYmI4YjFlNjc4ODQzNmM1OTQ3YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVNZWRpYS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBTdHlsZU1lZGlh
OjptYXRjaE1lZGl1bShjb25zdCBTdHJpbmcmIHF1ZXJ5KSBjb25zdAogICAgIGlmICghZG9jdW1l
bnRFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHJvb3RTdHlsZSA9
IGRvY3VtZW50LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmRvY3Vt
ZW50RWxlbWVudCwgZG9jdW1lbnQtPnJlbmRlclN0eWxlKCksIG51bGxwdHIsIFJ1bGVNYXRjaGlu
Z0JlaGF2aW9yOjpNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CisgICAgYXV0
byByb290U3R5bGUgPSBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JF
bGVtZW50KCpkb2N1bWVudEVsZW1lbnQsIHsgZG9jdW1lbnQtPnJlbmRlclN0eWxlKCkgfSwgUnVs
ZU1hdGNoaW5nQmVoYXZpb3I6Ok1hdGNoT25seVVzZXJBZ2VudFJ1bGVzKS5yZW5kZXJTdHlsZTsK
IAogICAgIGF1dG8gbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUocXVlcnksIE1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0KCpkb2N1bWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA1MjUwNjI5ZjJjYzZhNGFhZGQ2NjEyZWI1ZDI2NWE4YjFlNDhkZGY0Li4wOTM4ZjZkNWZhMzk2
NjhmNmE5MDQyN2Y1Y2I4MGU0NTI1NWNjM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTIyNjIsOSArMjI2Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnQ6
OnN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzCiAgICAgYXV0byYgcmVz
b2x2ZXIgPSBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKTsKIAogICAgIGlmIChwc2V1ZG9FbGVtZW50
U3BlY2lmaWVyICE9IFBzZXVkb0lkOjpOb25lKQotICAgICAgICByZXR1cm4gcmVzb2x2ZXIucHNl
dWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcHNldWRvRWxlbWVudFNwZWNpZmllciB9LCAq
cGFyZW50U3R5bGUpOworICAgICAgICByZXR1cm4gcmVzb2x2ZXIucHNldWRvU3R5bGVGb3JFbGVt
ZW50KGVsZW1lbnQsIHsgcHNldWRvRWxlbWVudFNwZWNpZmllciB9LCB7IHBhcmVudFN0eWxlIH0p
OwogCi0gICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlci5zdHlsZUZvckVsZW1lbnQoZWxl
bWVudCwgcGFyZW50U3R5bGUpOworICAgIGF1dG8gZWxlbWVudFN0eWxlID0gcmVzb2x2ZXIuc3R5
bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcGFyZW50U3R5bGUgfSk7CiAgICAgaWYgKGVsZW1lbnRT
dHlsZS5yZWxhdGlvbnMpIHsKICAgICAgICAgU3R5bGU6OlVwZGF0ZSBlbXB0eVVwZGF0ZSgqdGhp
cyk7CiAgICAgICAgIFN0eWxlOjpjb21taXRSZWxhdGlvbnMoV1RGTW92ZShlbGVtZW50U3R5bGUu
cmVsYXRpb25zKSwgZW1wdHlVcGRhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDkyODll
MGNjZTY2NWNiMTVlNTg4ZDVmM2Y5ZmUxMzNhYmI0YzNjMzUuLmMxNDY2MDljOGI3OTdhYjE4Mzcz
YTMyN2U1NDdhYWZiMjY5NTlkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE5NzYsNyAr
MTk3Niw3IEBAIFN0eWxlOjpSZXNvbHZlciYgRWxlbWVudDo6c3R5bGVSZXNvbHZlcigpCiAKIFN0
eWxlOjpFbGVtZW50U3R5bGUgRWxlbWVudDo6cmVzb2x2ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSkKIHsKLSAgICByZXR1cm4gc3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxl
bWVudCgqdGhpcywgcGFyZW50U3R5bGUpOworICAgIHJldHVybiBzdHlsZVJlc29sdmVyKCkuc3R5
bGVGb3JFbGVtZW50KCp0aGlzLCB7IHBhcmVudFN0eWxlIH0pOwogfQogCiBzdGF0aWMgdm9pZCBp
bnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNpYmxpbmcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAppbmRleCBjYzU4OTllNzMxYTY1ZWZjYTdi
MTU1YWQyNjljYmFhYzZhMjBiNmFkLi5jNTVjZjE3YWNiNDlkMmY2ZTY3YjMxOWM4NWZmZmVjNzY2
MmQwYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVFbGVtZW50Ojpjb21wdXRl
ZFRleHRXaXRoRGlyZWN0aW9uKCkKICAgICBpZiAoYXV0byogY29tcHV0ZWRTdHlsZSA9IHRoaXMt
PmNvbXB1dGVkU3R5bGUoKSkKICAgICAgICAgZGlyZWN0aW9uID0gY29tcHV0ZWRTdHlsZS0+ZGly
ZWN0aW9uKCk7CiAgICAgZWxzZQotICAgICAgICBkaXJlY3Rpb24gPSBzdHlsZVJlc29sdmVyKCku
c3R5bGVGb3JFbGVtZW50KCp0aGlzLCBwYXJlbnRFbGVtZW50KCkgPyBwYXJlbnRFbGVtZW50KCkt
PnJlbmRlclN0eWxlKCkgOiBudWxscHRyKS5yZW5kZXJTdHlsZS0+ZGlyZWN0aW9uKCk7CisgICAg
ICAgIGRpcmVjdGlvbiA9IHN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKnRoaXMsIHsg
cGFyZW50RWxlbWVudCgpID8gcGFyZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpIDogbnVsbHB0
ciB9KS5yZW5kZXJTdHlsZS0+ZGlyZWN0aW9uKCk7CiAgICAgcmV0dXJuIHsgdGV4dCgpLCBkaXJl
Y3Rpb24gfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CmluZGV4IDY5YWI0NjM0YWNiNDYxMmE1MDIyOGU5NjExMjM5MGQxNzFjNThiM2YuLjE0NzUyMjY4
NWVmYjEwOGMyNTI5MDA2YjkwN2MyMGMyOTY4NzM3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVTdHlsZSgpIGNv
bnN0CiAgICAgICAgIGlmICghY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQYXJl
bnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRyZWVQ
YXJlbnRFbGVtZW50LCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOworICAgICAgICBhdXRvIHN0
eWxlID0gY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudC0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9y
RWxlbWVudCgqY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCwgeyAmcGFyZW50U3R5bGUgfSkucmVu
ZGVyU3R5bGU7CiAgICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBl
OjpDb250ZW50cyk7CiAKICAgICAgICAgLy8gV2UgYWN0IGFzIGlmIHRoZXJlIHdhcyBhbiB1bnN0
eWxlZCA8c3Bhbj4gYXJvdW5kIHRoZSB0ZXh0IG5vZGUuIE9ubHkgc3R5bGluZyBoYXBwZW5zIHZp
YSBpbmhlcml0YW5jZS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IFJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVTdHlsZSgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBmaXJzdExpbmVTdHlsZTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVuZGVyZXJG
b3JGaXJzdExpbmVTdHlsZS5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1l
bnQoKmVsZW1lbnQoKSwgJnBhcmVudFN0eWxlKS5yZW5kZXJTdHlsZTsKKyAgICByZXR1cm4gcmVu
ZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZv
ckVsZW1lbnQoKmVsZW1lbnQoKSwgeyAmcGFyZW50U3R5bGUgfSkucmVuZGVyU3R5bGU7CiB9CiAK
IGNvbnN0IFJlbmRlclN0eWxlJiBSZW5kZXJFbGVtZW50OjpmaXJzdExpbmVTdHlsZSgpIGNvbnN0
CkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRl
ckVsZW1lbnQ6OmdldFVuY2FjaGVkUHNldWRvU3R5bGUoY29uc3QgU3R5bGU6OgogCiAgICAgYXV0
byYgc3R5bGVSZXNvbHZlciA9IGVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5
bGVGb3JFbGVtZW50KCplbGVtZW50KCksIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCAqcGFyZW50U3R5
bGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVJlc29s
dmVyLnBzZXVkb1N0eWxlRm9yRWxlbWVudCgqZWxlbWVudCgpLCBwc2V1ZG9FbGVtZW50UmVxdWVz
dCwgeyBwYXJlbnRTdHlsZSB9KTsKIAogICAgIGlmIChzdHlsZSkKICAgICAgICAgU3R5bGU6Omxv
YWRQZW5kaW5nUmVzb3VyY2VzKCpzdHlsZSwgZG9jdW1lbnQoKSwgZWxlbWVudCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKaW5kZXggMWJk
MWI3Zjg2OGY3NTQzYjQ5ZTM1YjYzY2M1YTdjNmQxMmVmODQxMy4uZTIzYTIxYzQ3YWYxMTcxNzJm
ZTJkNTU4MmYzOTBjZTFlMzAxNjMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKQEAgLTExOSwxNCArMTE5LDE0IEBAIHZvaWQgS2V5ZnJh
bWVMaXN0OjpmaWxsSW1wbGljaXRLZXlmcmFtZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgU3R5
bGU6OlJlc29sdmVyCiAgICAgYXV0byBpbml0aWFsU2l6ZSA9IHNpemUoKTsKICAgICBpZiAoaW5p
dGlhbFNpemUgPiAwICYmIG1fa2V5ZnJhbWVzWzBdLmtleSgpKSB7CiAgICAgICAgIEtleWZyYW1l
VmFsdWUga2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKLSAgICAgICAga2V5ZnJhbWVWYWx1ZS5z
ZXRTdHlsZShzdHlsZVJlc29sdmVyLnN0eWxlRm9yS2V5ZnJhbWUoZWxlbWVudCwgZWxlbWVudFN0
eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUsICZ6ZXJvUGVyY2VudEtleWZyYW1lKCksIGtleWZyYW1l
VmFsdWUpKTsKKyAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHlsZShzdHlsZVJlc29sdmVyLnN0
eWxlRm9yS2V5ZnJhbWUoZWxlbWVudCwgZWxlbWVudFN0eWxlLCB7IHBhcmVudEVsZW1lbnRTdHls
ZSB9LCAmemVyb1BlcmNlbnRLZXlmcmFtZSgpLCBrZXlmcmFtZVZhbHVlKSk7CiAgICAgICAgIGlu
c2VydChXVEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgMTAw
JSBrZXlmcmFtZSBpcyBtaXNzaW5nLCBjcmVhdGUgaXQgKGJ1dCBvbmx5IGlmIHRoZXJlIGlzIGF0
IGxlYXN0IG9uZSBvdGhlciBrZXlmcmFtZSkuCiAgICAgaWYgKGluaXRpYWxTaXplID4gMCAmJiAo
bV9rZXlmcmFtZXNbc2l6ZSgpIC0gMV0ua2V5KCkgIT0gMSkpIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZSBrZXlmcmFtZVZhbHVlKDEsIG51bGxwdHIpOwotICAgICAgICBrZXlmcmFtZVZhbHVlLnNl
dFN0eWxlKHN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5
bGUsIHBhcmVudEVsZW1lbnRTdHlsZSwgJmh1bmRyZWRQZXJjZW50S2V5ZnJhbWUoKSwga2V5ZnJh
bWVWYWx1ZSkpOworICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIu
c3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHsgcGFyZW50RWxlbWVudFN0
eWxlIH0sICZodW5kcmVkUGVyY2VudEtleWZyYW1lKCksIGtleWZyYW1lVmFsdWUpKTsKICAgICAg
ICAgaW5zZXJ0KFdURk1vdmUoa2V5ZnJhbWVWYWx1ZSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZTQ0NDViNjUzMTk3M2EyYzAzZWViZTMyNGI4
NWZhMTIwZTQ3NTE5MS4uYWM5M2I4NmQ0ZTI4ZTU4YWQ0YjUyNDNmYjk4ZmU5MzgyZDJhYTg1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBA
QCBSZXNvbHZlcjo6UmVzb2x2ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICBtX21lZGlh
UXVlcnlFdmFsdWF0b3IgPSBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgfTsKIAogICAgIGlmIChhdXRv
KiBkb2N1bWVudEVsZW1lbnQgPSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKSB7Ci0gICAg
ICAgIG1fcm9vdERlZmF1bHRTdHlsZSA9IHN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50
LCBtX2RvY3VtZW50LnJlbmRlclN0eWxlKCksIG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9y
OjpNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CisgICAgICAgIG1fcm9vdERl
ZmF1bHRTdHlsZSA9IHN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCB7IG1fZG9jdW1l
bnQucmVuZGVyU3R5bGUoKSB9LCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hPbmx5VXNlckFn
ZW50UnVsZXMpLnJlbmRlclN0eWxlOwogICAgICAgICAvLyBUdXJuIG9mZiBhc3NlcnRpb24gYWdh
aW5zdCBmb250IGxvb2t1cHMgZHVyaW5nIHN0eWxlIHJlc29sdmVyIGluaXRpYWxpemF0aW9uLiBX
ZSBtYXkgbmVlZCByb290IHN0eWxlIGZvbnQgZm9yIG1lZGlhIHF1ZXJpZXMuCiAgICAgICAgIG1f
ZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuaW5jcmVtZW50SXNDb21wdXRpbmdSb290U3R5bGVGb250
KCk7CiAgICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUoJm1f
ZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpOwpAQCAtMjE4LDkgKzIxOCw5IEBAIEJ1aWxkZXJDb250
ZXh0IFJlc29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYgc3RhdGUpCiAgICAgfTsK
IH0KIAotRWxlbWVudFN0eWxlIFJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50Qm94U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZp
b3IsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKK0VsZW1lbnRTdHlsZSBS
ZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJl
c29sdmVyQ29udGV4dCYgY29udGV4dCwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgbWF0Y2hpbmdCZWhh
dmlvcikKIHsKLSAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVudCwgcGFyZW50U3R5bGUsIG1f
b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSk7CisgICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVs
ZW1lbnQsIGNvbnRleHQucGFyZW50U3R5bGUsIGNvbnRleHQuZG9jdW1lbnRFbGVtZW50U3R5bGUp
OwogCiAgICAgaWYgKHN0YXRlLnBhcmVudFN0eWxlKCkpIHsKICAgICAgICAgc3RhdGUuc2V0U3R5
bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBFbGVtZW50
U3R5bGUgUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBSZW5kZXJTdHlsZQogCiAgICAgVXNlckFnZW50U3R5bGU6OmVuc3VyZURlZmF1bHRTdHls
ZVNoZWV0c0ZvckVsZW1lbnQoZWxlbWVudCk7CiAKLSAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBj
b2xsZWN0b3IoZWxlbWVudCwgbV9ydWxlU2V0cywgc2VsZWN0b3JGaWx0ZXIpOworICAgIEVsZW1l
bnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVtZW50LCBtX3J1bGVTZXRzLCBjb250ZXh0LnNl
bGVjdG9yRmlsdGVyKTsKICAgICBjb2xsZWN0b3Iuc2V0TWVkaXVtKCZtX21lZGlhUXVlcnlFdmFs
dWF0b3IpOwogCiAgICAgaWYgKG1hdGNoaW5nQmVoYXZpb3IgPT0gUnVsZU1hdGNoaW5nQmVoYXZp
b3I6Ok1hdGNoT25seVVzZXJBZ2VudFJ1bGVzKQpAQCAtMjY0LDcgKzI2NCw3IEBAIEVsZW1lbnRT
dHlsZSBSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFJlbmRlclN0eWxlCiAKICAgICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKHN0YXRlLCBjb2xs
ZWN0b3IubWF0Y2hSZXN1bHQoKSk7CiAKLSAgICBBZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVudCgp
LCAqc3RhdGUucGFyZW50U3R5bGUoKSwgcGFyZW50Qm94U3R5bGUsICZlbGVtZW50KTsKKyAgICBB
ZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVudCgpLCAqc3RhdGUucGFyZW50U3R5bGUoKSwgY29udGV4
dC5wYXJlbnRCb3hTdHlsZSwgJmVsZW1lbnQpOwogICAgIGFkanVzdGVyLmFkanVzdCgqc3RhdGUu
c3R5bGUoKSwgc3RhdGUudXNlckFnZW50QXBwZWFyYW5jZVN0eWxlKCkpOwogCiAgICAgaWYgKHN0
YXRlLnN0eWxlKCktPmhhc1ZpZXdwb3J0VW5pdHMoKSkKQEAgLTI3MywxNSArMjczLDE1IEBAIEVs
ZW1lbnRTdHlsZSBSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFJlbmRlclN0eWxlCiAgICAgcmV0dXJuIHsgc3RhdGUudGFrZVN0eWxlKCksIFdU
Rk1vdmUoZWxlbWVudFN0eWxlUmVsYXRpb25zKSB9OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRFbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxlUnVsZUtleWZyYW1lKiBrZXlmcmFtZSwgS2V5
ZnJhbWVWYWx1ZSYga2V5ZnJhbWVWYWx1ZSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
UmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
UmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVzb2x2ZXJDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZSoga2V5ZnJhbWUsIEtleWZyYW1lVmFsdWUmIGtleWZy
YW1lVmFsdWUpCiB7CiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC5hdXRob3JE
ZWNsYXJhdGlvbnMuYXBwZW5kKHsgJmtleWZyYW1lLT5wcm9wZXJ0aWVzKCksIFNlbGVjdG9yQ2hl
Y2tlcjo6TWF0Y2hBbGwsIHByb3BlcnR5QWxsb3dsaXN0Rm9yUHNldWRvSWQoZWxlbWVudFN0eWxl
LT5zdHlsZVR5cGUoKSkgfSk7CiAKLSAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVudCwgbnVs
bHB0ciwgbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKTsKKyAgICBhdXRvIHN0YXRlID0g
U3RhdGUoZWxlbWVudCwgbnVsbHB0ciwgY29udGV4dC5kb2N1bWVudEVsZW1lbnRTdHlsZSk7CiAK
ICAgICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmVsZW1lbnRTdHlsZSkp
OwotICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cihwYXJlbnRF
bGVtZW50U3R5bGUgPyAqcGFyZW50RWxlbWVudFN0eWxlIDogKmVsZW1lbnRTdHlsZSkpOworICAg
IHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb250ZXh0LnBhcmVu
dFN0eWxlID8gKmNvbnRleHQucGFyZW50U3R5bGUgOiAqZWxlbWVudFN0eWxlKSk7CiAKICAgICBC
dWlsZGVyIGJ1aWxkZXIoKnN0YXRlLnN0eWxlKCksIGJ1aWxkZXJDb250ZXh0KHN0YXRlKSwgcmVz
dWx0LCB7IENhc2NhZGVMZXZlbDo6QXV0aG9yIH0pOwogICAgIGJ1aWxkZXIuYXBwbHlBbGxQcm9w
ZXJ0aWVzKCk7CkBAIC0zMDcsNyArMzA3LDcgQEAgYm9vbCBSZXNvbHZlcjo6aXNBbmltYXRpb25O
YW1lVmFsaWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2tleWZyYW1lc1J1bGVN
YXAuZmluZChBdG9tU3RyaW5nKG5hbWUpLmltcGwoKSkgIT0gbV9rZXlmcmFtZXNSdWxlTWFwLmVu
ZCgpOwogfQogCi12b2lkIFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25z
dCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBLZXlmcmFtZUxpc3QmIGxpc3QpCit2
b2lkIFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25zdCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHZlckNv
bnRleHQmIGNvbnRleHQsIEtleWZyYW1lTGlzdCYgbGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7
CiAKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFu
aW1hdGlvbihjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdAogICAgICAgICAv
LyBBZGQgdGhpcyBrZXlmcmFtZSBzdHlsZSB0byBhbGwgdGhlIGluZGljYXRlZCBrZXkgdGltZXMK
ICAgICAgICAgZm9yIChhdXRvIGtleSA6IGtleWZyYW1lLT5rZXlzKCkpIHsKICAgICAgICAgICAg
IEtleWZyYW1lVmFsdWUga2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKLSAgICAgICAgICAgIGtl
eWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5
bGUsIHBhcmVudEVsZW1lbnRTdHlsZSwga2V5ZnJhbWUucHRyKCksIGtleWZyYW1lVmFsdWUpKTsK
KyAgICAgICAgICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVGb3JLZXlmcmFtZShlbGVt
ZW50LCBlbGVtZW50U3R5bGUsIGNvbnRleHQsIGtleWZyYW1lLnB0cigpLCBrZXlmcmFtZVZhbHVl
KSk7CiAgICAgICAgICAgICBrZXlmcmFtZVZhbHVlLnNldEtleShrZXkpOwogICAgICAgICAgICAg
aWYgKGF1dG8gdGltaW5nRnVuY3Rpb25DU1NWYWx1ZSA9IGtleWZyYW1lLT5wcm9wZXJ0aWVzKCku
Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKSkK
ICAgICAgICAgICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1
bmN0aW9uOjpjcmVhdGVGcm9tQ1NTVmFsdWUoKnRpbWluZ0Z1bmN0aW9uQ1NTVmFsdWUuZ2V0KCkp
KTsKQEAgLTM3NywxMiArMzc3LDEyIEBAIHZvaWQgUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9y
QW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBsaXN0LmZpbGxJbXBsaWNpdEtleWZyYW1lcyhlbGVtZW50LCAqdGhp
cywgZWxlbWVudFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIGxpc3QuZmlsbEltcGxp
Y2l0S2V5ZnJhbWVzKGVsZW1lbnQsICp0aGlzLCBlbGVtZW50U3R5bGUsIGNvbnRleHQucGFyZW50
U3R5bGUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlc29sdmVyOjpwc2V1
ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUHNldWRvRWxl
bWVudFJlcXVlc3QmIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCBjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgY29uc3QgU2VsZWN0
b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBS
ZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFBzZXVkb0VsZW1lbnRSZXF1ZXN0JiBwc2V1ZG9FbGVtZW50UmVxdWVzdCwgY29uc3QgUmVz
b2x2ZXJDb250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8gc3RhdGUgPSBTdGF0ZShlbGVtZW50
LCAmcGFyZW50U3R5bGUsIG1fb3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSk7CisgICAgYXV0
byBzdGF0ZSA9IFN0YXRlKGVsZW1lbnQsIGNvbnRleHQucGFyZW50U3R5bGUsIGNvbnRleHQuZG9j
dW1lbnRFbGVtZW50U3R5bGUpOwogCiAgICAgaWYgKHN0YXRlLnBhcmVudFN0eWxlKCkpIHsKICAg
ICAgICAgc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpKTsKQEAgLTM5Miw3
ICszOTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlc29sdmVyOjpwc2V1ZG9T
dHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbQogICAgICAgICBzdGF0ZS5zZXRQYXJl
bnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0YXRlLnN0eWxlKCkpKTsKICAgICB9CiAK
LSAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IoZWxlbWVudCwgbV9ydWxlU2V0cywg
c2VsZWN0b3JGaWx0ZXIpOworICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVt
ZW50LCBtX3J1bGVTZXRzLCBjb250ZXh0LnNlbGVjdG9yRmlsdGVyKTsKICAgICBjb2xsZWN0b3Iu
c2V0UHNldWRvRWxlbWVudFJlcXVlc3QocHNldWRvRWxlbWVudFJlcXVlc3QpOwogICAgIGNvbGxl
Y3Rvci5zZXRNZWRpdW0oJm1fbWVkaWFRdWVyeUV2YWx1YXRvcik7CiAgICAgY29sbGVjdG9yLm1h
dGNoVUFSdWxlcygpOwpAQCAtNDExLDcgKzQxMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVt
CiAKICAgICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKHN0YXRlLCBjb2xsZWN0b3IubWF0Y2hSZXN1
bHQoKSk7CiAKLSAgICBBZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVudCgpLCAqc3RhdGUucGFyZW50
U3R5bGUoKSwgcGFyZW50Qm94U3R5bGUsIG51bGxwdHIpOworICAgIEFkanVzdGVyIGFkanVzdGVy
KGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBjb250ZXh0LnBhcmVudEJveFN0eWxl
LCBudWxscHRyKTsKICAgICBhZGp1c3Rlci5hZGp1c3QoKnN0YXRlLnN0eWxlKCksIHN0YXRlLnVz
ZXJBZ2VudEFwcGVhcmFuY2VTdHlsZSgpKTsKIAogICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5oYXNW
aWV3cG9ydFVuaXRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKaW5kZXggZGM1
Yzg0YjhhM2JiOGUwYTFkOWI1ZGNjZmYxZTE2NDM0OWY3MTA4Zi4uM2FlMDM4MzRkM2JiOTk4ZmRm
NGIwY2ZjMzJkMjUyYmE2N2E2YjIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIu
aApAQCAtODAsMTcgKzgwLDI0IEBAIHN0cnVjdCBFbGVtZW50U3R5bGUgewogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZWxhdGlvbnM+IHJlbGF0aW9uczsKIH07CiAKK3N0cnVjdCBSZXNvbHZlckNvbnRl
eHQgeworICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZTsKKyAgICBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgeyBudWxscHRyIH07CisgICAgY29uc3QgUmVuZGVyU3R5
bGUqIGRvY3VtZW50RWxlbWVudFN0eWxlIHsgbnVsbHB0ciB9OworICAgIFNlbGVjdG9yRmlsdGVy
KiBzZWxlY3RvckZpbHRlciB7IG51bGxwdHIgfTsKK307CisKIGNsYXNzIFJlc29sdmVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVzb2x2ZXI+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJl
c29sdmVyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlc29sdmVyPiBjcmVhdGUoRG9jdW1l
bnQmKTsKICAgICB+UmVzb2x2ZXIoKTsKIAotICAgIEVsZW1lbnRTdHlsZSBzdHlsZUZvckVsZW1l
bnQoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlID0gbnVsbHB0ciwgUnVsZU1hdGNoaW5nQmVoYXZp
b3IgPSBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcywgY29uc3QgU2VsZWN0b3JG
aWx0ZXIqID0gbnVsbHB0cik7CisgICAgRWxlbWVudFN0eWxlIHN0eWxlRm9yRWxlbWVudChjb25z
dCBFbGVtZW50JiwgY29uc3QgUmVzb2x2ZXJDb250ZXh0JiwgUnVsZU1hdGNoaW5nQmVoYXZpb3Ig
PSBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcyk7CiAKLSAgICB2b2lkIGtleWZy
YW1lU3R5bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSog
ZWxlbWVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBLZXlm
cmFtZUxpc3QmKTsKKyAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVs
ZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHZlckNv
bnRleHQmLCBLZXlmcmFtZUxpc3QmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmLCBj
b25zdCBQc2V1ZG9FbGVtZW50UmVxdWVzdCYsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlID0gbnVsbHB0ciwgY29uc3QgU2Vs
ZWN0b3JGaWx0ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYsIGNv
bnN0IFBzZXVkb0VsZW1lbnRSZXF1ZXN0JiwgY29uc3QgUmVzb2x2ZXJDb250ZXh0Jik7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGRlZmF1bHRTdHlsZUZvckVsZW1l
bnQoY29uc3QgRWxlbWVudCopOwpAQCAtMTA2LDEyICsxMTMsOSBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYVF1ZXJ5RXZhbHVhdG9yOyB9CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSog
b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVE
b2N1bWVudEVsZW1lbnRTdHlsZTsgfQotICAgIHZvaWQgc2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1l
bnRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgbV9vdmVycmlkZURvY3VtZW50RWxl
bWVudFN0eWxlID0gc3R5bGU7IH0KLQogICAgIHZvaWQgYWRkQ3VycmVudFNWR0ZvbnRGYWNlUnVs
ZXMoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFt
ZShjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgY29uc3QgU3R5bGVSdWxlS2V5ZnJhbWUq
LCBLZXlmcmFtZVZhbHVlJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZUZvcktleWZyYW1lKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0
eWxlLCBjb25zdCBSZXNvbHZlckNvbnRleHQmLCBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZSosIEtl
eWZyYW1lVmFsdWUmKTsKICAgICBib29sIGlzQW5pbWF0aW9uTmFtZVZhbGlkKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGdpdmUgYmFjayB0aGUgc2V0IG9mIHJ1
bGVzIHRoYXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVtZW50IChvciBhIHBzZXVkby1lbGVtZW50
KS4KQEAgLTE2NCw4ICsxNjgsNiBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1l
bnQ7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0
eWxlIHsgbnVsbHB0ciB9OwotCiAgICAgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyBtX2luc3BlY3Rv
ckNTU09NV3JhcHBlcnM7CiAKICAgICBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgbV9tYXRjaGVk
RGVjbGFyYXRpb25zQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHAKaW5kZXggMGNlNTZkOTc0OGIzZGE1YjdlNWY1MDdlZjRkMWM2YTk1Y2RiN2EwYS4uOWY2
YTE4NmIyMWI2OTRmNzY1MjNkYmE4ZTIzZjcyZTdmZDFiMzY5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtODgsMTUgKzg4LDEyIEBAIFRyZWVSZXNv
bHZlcjo6U2NvcGU6OlNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFNjb3BlJiBlbmNsb3Np
bmdTY29wZSkKICAgICAsIHNoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpCiAgICAgLCBlbmNsb3NpbmdT
Y29wZSgmZW5jbG9zaW5nU2NvcGUpCiB7Ci0gICAgcmVzb2x2ZXItPnNldE92ZXJyaWRlRG9jdW1l
bnRFbGVtZW50U3R5bGUoZW5jbG9zaW5nU2NvcGUucmVzb2x2ZXItPm92ZXJyaWRlRG9jdW1lbnRF
bGVtZW50U3R5bGUoKSk7CiB9CiAKIFRyZWVSZXNvbHZlcjo6U2NvcGU6On5TY29wZSgpCiB7CiAg
ICAgaWYgKCFzaGFkb3dSb290KQogICAgICAgICByZXNvbHZlci0+ZG9jdW1lbnQoKS5zZXRJc1Jl
c29sdmluZ1RyZWVTdHlsZShmYWxzZSk7Ci0KLSAgICByZXNvbHZlci0+c2V0T3ZlcnJpZGVEb2N1
bWVudEVsZW1lbnRTdHlsZShudWxscHRyKTsKIH0KIAogVHJlZVJlc29sdmVyOjpQYXJlbnQ6OlBh
cmVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xNDYsNyArMTQzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yU3R5bGVhYmxlKGNvbnN0IFN0
eWxlYWJsZSYgc3QKICAgICBpZiAoYXV0byBzdHlsZSA9IHNjb3BlKCkuc2hhcmluZ1Jlc29sdmVy
LnJlc29sdmUoc3R5bGVhYmxlLCAqbV91cGRhdGUpKQogICAgICAgICByZXR1cm4gc3R5bGU7CiAK
LSAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnN0eWxlRm9yRWxlbWVu
dChlbGVtZW50LCAmaW5oZXJpdGVkU3R5bGUsIHBhcmVudEJveFN0eWxlKCksIFJ1bGVNYXRjaGlu
Z0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzLCAmc2NvcGUoKS5zZWxlY3RvckZpbHRlcik7CisgICAg
YXV0byBlbGVtZW50U3R5bGUgPSBzY29wZSgpLnJlc29sdmVyLT5zdHlsZUZvckVsZW1lbnQoZWxl
bWVudCwgcmVzb2x2ZXJDb250ZXh0KGluaGVyaXRlZFN0eWxlKSk7CiAKICAgICBpZiAoZWxlbWVu
dFN0eWxlLnJlbGF0aW9ucykKICAgICAgICAgY29tbWl0UmVsYXRpb25zKFdURk1vdmUoZWxlbWVu
dFN0eWxlLnJlbGF0aW9ucyksICptX3VwZGF0ZSk7CkBAIC0yMjMsMTIgKzIyMCwxMSBAQCBFbGVt
ZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgICAgIG1fZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoTm9uRmluYWxTdHlsZSgpOwogICAg
IH0KIAotICAgIGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1v
dmUobmV3U3R5bGUpLCBzdHlsZWFibGUsIHBhcmVudCgpLmNoYW5nZSwgcGFyZW50KCkuc3R5bGUs
IHBhcmVudEJveFN0eWxlKCkpOworICAgIGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVt
ZW50VXBkYXRlKFdURk1vdmUobmV3U3R5bGUpLCBzdHlsZWFibGUsIHBhcmVudCgpLmNoYW5nZSwg
cmVzb2x2ZXJDb250ZXh0KHBhcmVudCgpLnN0eWxlKSk7CiAgICAgYXV0byBkZXNjZW5kYW50c1Rv
UmVzb2x2ZSA9IGNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZSh1cGRhdGUuY2hhbmdlLCBlbGVt
ZW50LnN0eWxlVmFsaWRpdHkoKSwgcGFyZW50KCkuZGVzY2VuZGFudHNUb1Jlc29sdmUpOwogCiAg
ICAgaWYgKCZlbGVtZW50ID09IG1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpIHsKICAgICAg
ICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRl
LnN0eWxlKTsKLSAgICAgICAgc2NvcGUoKS5yZXNvbHZlci0+c2V0T3ZlcnJpZGVEb2N1bWVudEVs
ZW1lbnRTdHlsZShtX2RvY3VtZW50RWxlbWVudFN0eWxlLmdldCgpKTsKIAogICAgICAgICBpZiAo
IWV4aXN0aW5nU3R5bGUgfHwgZXhpc3RpbmdTdHlsZS0+Y29tcHV0ZWRGb250UGl4ZWxTaXplKCkg
IT0gdXBkYXRlLnN0eWxlLT5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSkgewogICAgICAgICAgICAg
Ly8gInJlbSIgdW5pdHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBkb2N1bWVudCBlbGVtZW50J3MgZm9u
dCBzaXplIHNvIHdlIG5lZWQgdG8gcmVjb21wdXRlIGV2ZXJ5dGhpbmcuCkBAIC0yODYsMTAgKzI4
Miw5IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZl
UHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwKICAgICBpZiAoIWVsZW1lbnRVcGRhdGUuc3R5
bGUtPmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IGF1dG8mIHBhcmVudFN0eWxlID0gKmVsZW1lbnRVcGRhdGUuc3R5bGU7Ci0gICAgYXV0byogcGFy
ZW50Qm94U3R5bGUgPSBwYXJlbnRCb3hTdHlsZUZvclBzZXVkbyhlbGVtZW50VXBkYXRlKTsKKyAg
ICBhdXRvIHJlc29sdmVyQ29udGV4dCA9IHJlc29sdmVyQ29udGV4dEZvclBzZXVkb0VsZW1lbnQo
ZWxlbWVudFVwZGF0ZSk7CiAKLSAgICBhdXRvIHBzZXVkb1N0eWxlID0gc2NvcGUoKS5yZXNvbHZl
ci0+cHNldWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcHNldWRvSWQgfSwgcGFyZW50U3R5
bGUsIHBhcmVudEJveFN0eWxlLCAmc2NvcGUoKS5zZWxlY3RvckZpbHRlcik7CisgICAgYXV0byBw
c2V1ZG9TdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVt
ZW50LCB7IHBzZXVkb0lkIH0sIHJlc29sdmVyQ29udGV4dCk7CiAgICAgaWYgKCFwc2V1ZG9TdHls
ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMjk3LDcgKzI5Miw3IEBAIHN0ZDo6b3B0aW9u
YWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVu
dCYgZWxlbWVudCwKICAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVk
b1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIHJldHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHls
ZSksIHsgZWxlbWVudCwgcHNldWRvSWQgfSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UsIHBhcmVudFN0
eWxlLCBwYXJlbnRCb3hTdHlsZSk7CisgICAgcmV0dXJuIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVw
ZGF0ZShXVEZNb3ZlKHBzZXVkb1N0eWxlKSwgeyBlbGVtZW50LCBwc2V1ZG9JZCB9LCBlbGVtZW50
VXBkYXRlLmNoYW5nZSwgcmVzb2x2ZXJDb250ZXh0KTsKIH0KIAogY29uc3QgUmVuZGVyU3R5bGUq
IFRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUoKSBjb25zdApAQCAtMzE0LDcgKzMwOSw3IEBA
IGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlKCkgY29uc3QK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNvbHZl
cjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG8oY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVw
ZGF0ZSkgY29uc3QKK2NvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0
eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKSBj
b25zdAogewogICAgIHN3aXRjaCAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpKSB7CiAg
ICAgY2FzZSBEaXNwbGF5VHlwZTo6Tm9uZToKQEAgLTMyNiw3ICszMjEsMjcgQEAgY29uc3QgUmVu
ZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG8oY29uc3QgRWxl
bWVudFVwZGF0ZSYgZWwKICAgICB9CiB9CiAKLUVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpj
cmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBu
ZXdTdHlsZSwgY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIENoYW5nZSBwYXJlbnRDaGFuZ2Us
IGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVu
dEJveFN0eWxlKQorUmVzb2x2ZXJDb250ZXh0IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZXJDb250ZXh0
KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKK3sKKyAgICByZXR1cm4geworICAgICAg
ICAmcGFyZW50U3R5bGUsCisgICAgICAgIHBhcmVudEJveFN0eWxlKCksCisgICAgICAgIG1fZG9j
dW1lbnRFbGVtZW50U3R5bGUuZ2V0KCksCisgICAgICAgICZzY29wZSgpLnNlbGVjdG9yRmlsdGVy
CisgICAgfTsKK30KKworUmVzb2x2ZXJDb250ZXh0IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZXJDb250
ZXh0Rm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKQor
eworICAgIHJldHVybiB7CisgICAgICAgIGVsZW1lbnRVcGRhdGUuc3R5bGUuZ2V0KCksCisgICAg
ICAgIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChlbGVtZW50VXBkYXRlKSwKKyAgICAg
ICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZS5nZXQoKSwKKyAgICAgICAgJnNjb3BlKCkuc2VsZWN0
b3JGaWx0ZXIKKyAgICB9OworfQorCitFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRl
QW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbmV3U3R5
bGUsIGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDaGFuZ2UgcGFyZW50Q2hhbmdlLCBjb25z
dCBSZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCkKIHsKICAgICBhdXRvJiBlbGVtZW50
ID0gc3R5bGVhYmxlLmVsZW1lbnQ7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBlbGVtZW50LmRvY3Vt
ZW50KCk7CkBAIC0zNDUsNyArMzYwLDcgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNy
ZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3QKICAgICAg
ICAgLy8gdG8gdXNlIENTUyBBbmltYXRpb25zIGFzIGRlZmluZWQgaW4gdGhlIHByZXZpb3VzIHN0
eWxlIGNoYW5nZSBldmVudC4gQXMgc3VjaCwgd2UgdXBkYXRlIENTUyBBbmltYXRpb25zIGFmdGVy
IENTUyBUcmFuc2l0aW9ucwogICAgICAgICAvLyBzdWNoIHRoYXQgd2hlbiBDU1MgVHJhbnNpdGlv
bnMgYXJlIHVwZGF0ZWQgdGhlIENTUyBBbmltYXRpb25zIGRhdGEgaXMgdGhlIHNhbWUgYXMgZHVy
aW5nIHRoZSBwcmV2aW91cyBzdHlsZSBjaGFuZ2UgZXZlbnQuCiAgICAgICAgIGlmICgob2xkU3R5
bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgfHwgbmV3U3R5bGUtPmhhc0FuaW1hdGlv
bnMoKSkKLSAgICAgICAgICAgIHN0eWxlYWJsZS51cGRhdGVDU1NBbmltYXRpb25zKG9sZFN0eWxl
LCAqbmV3U3R5bGUsICZwYXJlbnRTdHlsZSk7CisgICAgICAgICAgICBzdHlsZWFibGUudXBkYXRl
Q1NTQW5pbWF0aW9ucyhvbGRTdHlsZSwgKm5ld1N0eWxlLCByZXNvbHZlckNvbnRleHQpOwogICAg
IH0KIAogICAgIC8vIE5vdyB3ZSBjYW4gdXBkYXRlIGFsbCBXZWIgYW5pbWF0aW9ucywgd2hpY2gg
d2lsbCBpbmNsdWRlIENTUyBBbmltYXRpb25zIGFzIHdlbGwKQEAgLTM1NiwxMCArMzcxLDEwIEBA
IEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0CiAgICAgICAgIHN0eWxlYWJsZS5zZXRMYXN0U3R5bGVD
aGFuZ2VFdmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbmV3U3R5bGUpKTsKICAgICAg
ICAgLy8gQXBwbHkgYWxsIGtleWZyYW1lIGVmZmVjdHMgdG8gdGhlIG5ldyBzdHlsZS4KICAgICAg
ICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpuZXdTdHlsZSk7
Ci0gICAgICAgIGFuaW1hdGlvbkltcGFjdCA9IHN0eWxlYWJsZS5hcHBseUtleWZyYW1lRWZmZWN0
cygqYW5pbWF0ZWRTdHlsZSwgKnByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgJnBh
cmVudFN0eWxlKTsKKyAgICAgICAgYW5pbWF0aW9uSW1wYWN0ID0gc3R5bGVhYmxlLmFwcGx5S2V5
ZnJhbWVFZmZlY3RzKCphbmltYXRlZFN0eWxlLCAqcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVu
dFN0eWxlLCByZXNvbHZlckNvbnRleHQpOwogICAgICAgICBuZXdTdHlsZSA9IFdURk1vdmUoYW5p
bWF0ZWRTdHlsZSk7CiAKLSAgICAgICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQsIHBhcmVu
dFN0eWxlLCBwYXJlbnRCb3hTdHlsZSwgc3R5bGVhYmxlLnBzZXVkb0lkID09IFBzZXVkb0lkOjpO
b25lID8gJmVsZW1lbnQgOiBudWxscHRyKTsKKyAgICAgICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9j
dW1lbnQsICpyZXNvbHZlckNvbnRleHQucGFyZW50U3R5bGUsIHJlc29sdmVyQ29udGV4dC5wYXJl
bnRCb3hTdHlsZSwgc3R5bGVhYmxlLnBzZXVkb0lkID09IFBzZXVkb0lkOjpOb25lID8gJmVsZW1l
bnQgOiBudWxscHRyKTsKICAgICAgICAgYWRqdXN0ZXIuYWRqdXN0QW5pbWF0ZWRTdHlsZSgqbmV3
U3R5bGUsIGFuaW1hdGlvbkltcGFjdCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHN0eWxlYWJsZS5z
ZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggZjI1ZDIyZDI0NDQ5MTAzYTQzNDVjODg5MWRjNTdi
OWFkMDVmYWFlYy4uZWRiZjMzMjNiZTQyODliYjQzZDY2OGE1ZDA4ZTQxZWIxMTY3YjcyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCkBAIC00NSw2ICs0NSw3IEBA
IGNsYXNzIFNoYWRvd1Jvb3Q7CiBuYW1lc3BhY2UgU3R5bGUgewogCiBjbGFzcyBSZXNvbHZlcjsK
K3N0cnVjdCBSZXNvbHZlckNvbnRleHQ7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFRyZWVSZXNvbHZlclNjb3BlKTsKIGNsYXNzIFRyZWVSZXNvbHZlciB7CkBAIC02
MSw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICBFbGVtZW50VXBkYXRlcyByZXNvbHZlRWxlbWVu
dChFbGVtZW50Jik7CiAKLSAgICBzdGF0aWMgRWxlbWVudFVwZGF0ZSBjcmVhdGVBbmltYXRlZEVs
ZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgU3R5bGVhYmxl
JiwgQ2hhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRCb3hTdHlsZSk7CisgICAgc3RhdGljIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5p
bWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFN0
eWxlYWJsZSYsIENoYW5nZSwgY29uc3QgUmVzb2x2ZXJDb250ZXh0Jik7CiAgICAgc3RkOjpvcHRp
b25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVs
ZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAKICAgICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3VudGVk
PFNjb3BlPiB7CkBAIC0xMDAsNyArMTAxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvcFBhcmVu
dHNUb0RlcHRoKHVuc2lnbmVkIGRlcHRoKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRCb3hTdHlsZSgpIGNvbnN0OwotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHls
ZUZvclBzZXVkbyhjb25zdCBFbGVtZW50VXBkYXRlJikgY29uc3Q7CisgICAgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRl
JikgY29uc3Q7CisgICAgUmVzb2x2ZXJDb250ZXh0IHJlc29sdmVyQ29udGV4dChjb25zdCBSZW5k
ZXJTdHlsZSYgcGFyZW50U3R5bGUpOworICAgIFJlc29sdmVyQ29udGV4dCByZXNvbHZlckNvbnRl
eHRGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUmKTsKIAogICAgIERvY3VtZW50
JiBtX2RvY3VtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV9kb2N1bWVu
dEVsZW1lbnRTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCmluZGV4IGNmYjA3NmZk
NTQ0ZTg5OWMwODJiNGJlMDNhYzA4NWZlYjlmNTY0NjkuLjE0MzFhMjBjNWJhZjc1MmIwMjhhMzg0
YTQ2MTY2YmQxYzliZWNhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcApAQCAtMjEx
LDcgKzIxMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHls
ZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpIGNvbnN0Cit2b2lkIFN0eWxlYWJsZTo6dXBkYXRl
Q1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmIHJlc29sdmVy
Q29udGV4dCkgY29uc3QKIHsKICAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZW5zdXJl
S2V5ZnJhbWVFZmZlY3RTdGFjaygpOwogCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBTdHlsZWFi
bGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwg
Y29uc3QgUmVuZGUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFmb3VuZE1hdGNo
aW5nQW5pbWF0aW9uKQotICAgICAgICAgICAgICAgIG5ld0FuaW1hdGlvbnMuYWRkKENTU0FuaW1h
dGlvbjo6Y3JlYXRlKCp0aGlzLCBjdXJyZW50QW5pbWF0aW9uLCBjdXJyZW50U3R5bGUsIG5ld1N0
eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUpKTsKKyAgICAgICAgICAgICAgICBuZXdBbmltYXRpb25z
LmFkZChDU1NBbmltYXRpb246OmNyZWF0ZSgqdGhpcywgY3VycmVudEFuaW1hdGlvbiwgY3VycmVu
dFN0eWxlLCBuZXdTdHlsZSwgcmVzb2x2ZXJDb250ZXh0KSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0
eWxlYWJsZUFuZFByb3BlcnR5KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYgogICAgICAgICAgICAg
Ly8gSWYgYSB0cmFuc2l0aW9uIGhhcyBub3QgeWV0IHN0YXJ0ZWQgb3Igc3RhcnRlZCB3aGVuIGFu
aW1hdGlvbnMgd2VyZSBsYXN0IHVwZGF0ZWQsIHVzZSB0aGUgdGltZWxpbmUgdGltZSBhdCBpdHMg
Y3JlYXRpb24KICAgICAgICAgICAgIC8vIGFzIGl0cyBzdGFydCB0aW1lIHRvIGVuc3VyZSB0aGF0
IGl0IHdpbGwgcHJvZHVjZSBhIHN0eWxlIHdpdGggcHJvZ3Jlc3MgPiAwLgogICAgICAgICAgICAg
Ym9vbCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID0gaXM8Q1NTVHJhbnNpdGlvbj4o
YW5pbWF0aW9uKSAmJiAoIWFuaW1hdGlvbi0+c3RhcnRUaW1lKCkgfHwgKmFuaW1hdGlvbi0+c3Rh
cnRUaW1lKCkgPT0gc3R5bGVhYmxlLmVsZW1lbnQuZG9jdW1lbnQoKS50aW1lbGluZSgpLmN1cnJl
bnRUaW1lKCkpOwotICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUs
IG51bGxwdHIsIHNob3VsZFVzZVRpbWVsaW5lVGltZUF0Q3JlYXRpb24gPyBkb3duY2FzdDxDU1NU
cmFuc2l0aW9uPigqYW5pbWF0aW9uKS50aW1lbGluZVRpbWVBdENyZWF0aW9uKCkgOiBzdGQ6Om51
bGxvcHQpOworICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUsIHsg
bnVsbHB0ciB9LCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID8gZG93bmNhc3Q8Q1NT
VHJhbnNpdGlvbj4oKmFuaW1hdGlvbikudGltZWxpbmVUaW1lQXRDcmVhdGlvbigpIDogc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybiBhbmltYXRlZFN0eWxlOwogICAgICAgICB9CiAK
QEAgLTQwOCw3ICs0MDgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0
eWxlYWJsZUFuZFByb3BlcnR5KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYgogICAgIGF1dG8gYWZ0
ZXJDaGFuZ2VTdHlsZSA9IFsmXSgpIC0+IGNvbnN0IFJlbmRlclN0eWxlIHsKICAgICAgICAgaWYg
KGlzPENTU0FuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBhbmltYXRpb24tPmlzUmVsZXZhbnQoKSkg
ewogICAgICAgICAgICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKG5l
d1N0eWxlKTsKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCBu
dWxscHRyKTsKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCB7
IG51bGxwdHIgfSk7CiAgICAgICAgICAgICByZXR1cm4gYW5pbWF0ZWRTdHlsZTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCmluZGV4IDIzYzhhZmFjOTBjNDZkNGQxZjIxM2Jj
YWFkMDEwNDY2ZGNhNGFiNWMuLjQxN2FiZmVhZjc5NGRiM2UyYTZlMjQwZDMyZDMyM2Y3MjNhODU1
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCkBAIC04NSw5ICs4NSw5IEBAIHN0cnVjdCBT
dHlsZWFibGUgewogICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMocHNl
dWRvSWQpOwogICAgIH0KIAotICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5
ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUm
IHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEVsZW1lbnRTdHlsZSkgY29uc3QKKyAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBh
cHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIGNvbnN0IFN0eWxlOjpS
ZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBlbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2socHNldWRvSWQpLmFwcGx5S2V5
ZnJhbWVFZmZlY3RzKHRhcmdldFN0eWxlLCBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5
bGUsIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgICAgIHJldHVybiBlbGVtZW50LmVuc3VyZUtl
eWZyYW1lRWZmZWN0U3RhY2socHNldWRvSWQpLmFwcGx5S2V5ZnJhbWVFZmZlY3RzKHRhcmdldFN0
eWxlLCBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIHJlc29sdmVyQ29udGV4dCk7
CiAgICAgfQogCiAgICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucygpIGNv
bnN0CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RydWN0IFN0eWxlYWJsZSB7CiAKICAgICB2b2lkIHJl
bW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudChXZWJBbmlt
YXRpb24mKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5k
ZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkgY29uc3Q7CisgICAgdm9p
ZCB1cGRhdGVDU1NBbmltYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZXJD
b250ZXh0JikgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9ucyhjb25zdCBSZW5k
ZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIGNvbnN0
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDc5YzFl
OGMyZjJkNjE2ODMxOTMzZTM4MTdiYzI5MmVlNWYwZTQ1MWEuLjYyNzJmZTNmOTZlOTFjOWMzYjJk
OGQ1OTQwMTY2OWFmMzg2NTY0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVE
YXRhLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIGlmICghbV9vdmVycmlkZUNvbXB1dGVkU3R5bGUgfHwgbV9uZWVkc092ZXJy
aWRlQ29tcHV0ZWRTdHlsZVVwZGF0ZSkgewogICAgICAgICAgICAgLy8gVGhlIHN0eWxlIGNvbXB1
dGVkIGhlcmUgY29udGFpbnMgbm8gQ1NTIEFuaW1hdGlvbnMvVHJhbnNpdGlvbnMgb3IgU01JTCBp
bmR1Y2VkIHJ1bGVzIC0gdGhpcyBpcyBuZWVkZWQgdG8gY29tcHV0ZSB0aGUgImJhc2UgdmFsdWUi
IGZvciB0aGUgU01JTCBhbmltYXRpb24gc2FuZHdoaWNoIG1vZGVsLgotICAgICAgICAgICAgbV9v
dmVycmlkZUNvbXB1dGVkU3R5bGUgPSBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVs
ZW1lbnQoZWxlbWVudCwgcGFyZW50U3R5bGUsIG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9y
OjpNYXRjaEFsbFJ1bGVzRXhjbHVkaW5nU01JTCkucmVuZGVyU3R5bGU7CisgICAgICAgICAgICBt
X292ZXJyaWRlQ29tcHV0ZWRTdHlsZSA9IGVsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnN0eWxlRm9y
RWxlbWVudChlbGVtZW50LCB7IHBhcmVudFN0eWxlIH0sIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpN
YXRjaEFsbFJ1bGVzRXhjbHVkaW5nU01JTCkucmVuZGVyU3R5bGU7CiAgICAgICAgICAgICBtX25l
ZWRzT3ZlcnJpZGVDb21wdXRlZFN0eWxlVXBkYXRlID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgQVNTRVJUKG1fb3ZlcnJpZGVDb21wdXRlZFN0eWxlKTsK
</data>
<flag name="commit-queue"
          id="466571"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442141</attachid>
            <date>2021-10-22 03:18:28 -0700</date>
            <delta_ts>2021-10-22 05:36:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232137-20211022131826.patch</filename>
            <type>text/plain</type>
            <size>56424</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI2NmIxMmUxYmI2YTQx
YjhkMDJjMGUzZmU2MmUxMmYwODQzZGFjNS4uMDFmNDQ5MGVkYWI1ZTRlYjFkMjVjMzM3NzhiNzFk
Njk1ODBmYjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTEwLTIyICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3Igc3R5bGUgcmVz
b2x2ZXIgYXJndW1lbnRzIGludG8gYSBjb250ZXh0IHN0cnVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0
Lmg6CisgICAgICAgICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NBbmltYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogYW5pbWF0aW9uL0NTU0FuaW1h
dGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1RyYW5zaXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
cmFuc2l0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5o
OgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICog
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp1cGRh
dGVCbGVuZGluZ0tleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6
Y29tcHV0ZURlY2xhcmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZy
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YXBwbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUp
OgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oOgorICAgICAgICAqIGFuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0U3RhY2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKToKKyAgICAgICAgKiBhbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3RTdGFjay5oOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBhbmltYXRp
b24vV2ViQW5pbWF0aW9uLmg6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlNYXRjaGVyOjpkb2N1bWVudEVsZW1lbnRVc2Vy
QWdlbnRTdHlsZSBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlTWVkaWEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVNZWRpYTo6bWF0Y2hNZWRpdW0gY29uc3QpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVGb3JFbGVt
ZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNvbXB1
dGVGaXJzdExpbmVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjpnZXRVbmNhY2hlZFBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvS2V5ZnJhbWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lTGlzdDo6Zmls
bEltcGxpY2l0S2V5ZnJhbWVzKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6UmVzb2x2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
ZXNvbHZlcjo6b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnNldE92ZXJyaWRlRG9jdW1lbnRFbGVt
ZW50U3R5bGUpOiBEZWxldGVkLgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OlNjb3BlOjpTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpTY29wZTo6flNjb3BlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yU3R5bGVhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9T
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpwYXJlbnRCb3hT
dHlsZUZvclBzZXVkb0VsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRy
ZWVSZXNvbHZlcjo6cmVzb2x2ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpU
cmVlUmVzb2x2ZXI6OnJlc29sdmVyQ29udGV4dEZvclBzZXVkb0VsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxl
Rm9yUHNldWRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNv
bHZlci5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHlsZWFibGVBbmRQcm9wZXJ0eSk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmFwcGx5
S2V5ZnJhbWVFZmZlY3RzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudFJhcmVEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50UmFyZURhdGE6Om92ZXJyaWRlQ29tcHV0
ZWRTdHlsZSk6CisKIDIwMjEtMTAtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB0
ZXh0IGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaAppbmRleCAyNjUzMjIxM2E3NDU3ZGQwMjU4MDhmMDgw
MWMwY2RmMWQyNTAzYTc3Li5jZTZjM2I2YmIyNjVhMjVkMWM1MjBhMWQ0NGQ3ZjlhN2U5M2Y1Mzgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oCkBAIC00Nyw2
ICs0NywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVzcGFjZSBTdHlsZSB7Citz
dHJ1Y3QgUmVzb2x2ZXJDb250ZXh0OworfQorCiBjbGFzcyBBbmltYXRpb25FZmZlY3QgOiBwdWJs
aWMgUmVmQ291bnRlZDxBbmltYXRpb25FZmZlY3Q+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QW5p
bWF0aW9uRWZmZWN0PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QW5pbWF0aW9uRWZmZWN0KCk7
CkBAIC02MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5n
c1VwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPik7CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gdXBkYXRlVGltaW5nKHN0ZDo6b3B0aW9uYWw8T3B0aW9uYWxFZmZl
Y3RUaW1pbmc+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHko
UmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZXJDb250ZXh0Jiwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25EaWRUaWNr
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25EaWRQbGF5KCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAppbmRleCAzMTNmMGRjODQ5ZThmY2Zh
NWQxMjMyYWM5ZTA4ODljMWUyZjYyZWMyLi41YzI0ZDhiZDdiODAxYjM5MDIwNmMzNDE4NDE2MzFj
YjVjMDQ5ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcApA
QCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKENTU0FuaW1hdGlvbik7CiAKLVJlZjxDU1NBbmltYXRpb24+IENTU0FuaW1h
dGlvbjo6Y3JlYXRlKGNvbnN0IFN0eWxlYWJsZSYgb3duaW5nRWxlbWVudCwgY29uc3QgQW5pbWF0
aW9uJiBiYWNraW5nQW5pbWF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRT
dHlsZSkKK1JlZjxDU1NBbmltYXRpb24+IENTU0FuaW1hdGlvbjo6Y3JlYXRlKGNvbnN0IFN0eWxl
YWJsZSYgb3duaW5nRWxlbWVudCwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwg
Y29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYgcmVzb2x2ZXJDb250ZXh0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NBbmltYXRpb24ob3duaW5nRWxlbWVudCwgYmFj
a2luZ0FuaW1hdGlvbikpOwotICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShvbGRTdHlsZSwgbmV3U3R5
bGUsIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgcmVzdWx0LT5pbml0aWFsaXplKG9sZFN0eWxl
LCBuZXdTdHlsZSwgcmVzb2x2ZXJDb250ZXh0KTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlV2ViQW5pbWF0aW9uKHJlc3VsdC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaAppbmRleCA1MDM5OTc4ZGUwMWNlN2VhOTZhZDg3NjY1
MDUzZDFkNTMyMGQxYTI2Li4zN2UyM2EzNmIzYjBlYTg4NjJkNmI0MWI0NThhNDIwMDRhMTRjMGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCkBAIC0zOCw3ICszOCw3
IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgQ1NTQW5pbWF0aW9uIGZpbmFsIDogcHVibGlj
IERlY2xhcmF0aXZlQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU0Fu
aW1hdGlvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb24+IGNyZWF0ZShj
b25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEVsZW1lbnRTdHlsZSk7CisgICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb24+IGNyZWF0ZShj
b25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVy
Q29udGV4dCYpOwogICAgIH5DU1NBbmltYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlz
Q1NTQW5pbWF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCmluZGV4IDQwYmMzNGQ2YTE0YzBkY2Qy
ZGIzN2FjMGRiNTFhNTYzNjY2NTM1MWUuLjU3OTViZmZmOTE2NjBjYWQ2YWI4ZTA1MTkyODRmZDI4
NjRmY2Y2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgUmVmPENTU1RyYW5zaXRpb24+IENTU1RyYW5zaXRpb246OmNyZWF0
ZShjb25zdCBTdHlsZWFibGUmIG93bmluZ0VsZW1lbnQsIENTU1Byb3AKIHsKICAgICBBU1NFUlQo
b2xkU3R5bGUpOwogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NUcmFuc2l0aW9u
KG93bmluZ0VsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgYmFja2luZ0FuaW1hdGlv
biwgKm9sZFN0eWxlLCBuZXdTdHlsZSwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZl
cnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7Ci0gICAgcmVzdWx0LT5pbml0aWFsaXplKG9sZFN0eWxl
LCBuZXdTdHlsZSwgbnVsbHB0cik7CisgICAgcmVzdWx0LT5pbml0aWFsaXplKG9sZFN0eWxlLCBu
ZXdTdHlsZSwgeyBudWxscHRyIH0pOwogICAgIHJlc3VsdC0+c2V0VGltaW5nUHJvcGVydGllcyhk
ZWxheSwgZHVyYXRpb24pOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVh
dGVXZWJBbmltYXRpb24ocmVzdWx0LmdldCgpKTsKQEAgLTYxLDkgKzYxLDkgQEAgQ1NTVHJhbnNp
dGlvbjo6Q1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwKIHsKIH0KIAotdm9pZCBDU1NUcmFuc2l0aW9uOjpyZXNvbHZlKFJlbmRl
clN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHls
ZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCit2b2lkIENTU1RyYW5zaXRpb246
OnJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZXJD
b250ZXh0JiByZXNvbHZlckNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1l
KQogewotICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpyZXNvbHZlKHRhcmdldFN0eWxlLCBwYXJl
bnRFbGVtZW50U3R5bGUsIHN0YXJ0VGltZSk7CisgICAgRGVjbGFyYXRpdmVBbmltYXRpb246OnJl
c29sdmUodGFyZ2V0U3R5bGUsIHJlc29sdmVyQ29udGV4dCwgc3RhcnRUaW1lKTsKICAgICBtX2N1
cnJlbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCmluZGV4IDYzZWIzY2EwM2UzYjEy
YjkyYTVjZWNmMTQwZWM3MDYzMjEzMDZkMGIuLjE2ZTU0OGQ1NTNiZmNiMDA4ODVmNGE2YTY1YzNm
NTgzNjY1YmExMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFu
c2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaApA
QCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIENTU1RyYW5zaXRpb24oY29uc3QgU3R5bGVh
YmxlJiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3Qg
QW5pbWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0
U3R5bGUsIGRvdWJsZSk7CiAgICAgdm9pZCBzZXRUaW1pbmdQcm9wZXJ0aWVzKFNlY29uZHMgZGVs
YXksIFNlY29uZHMgZHVyYXRpb24pOwogICAgIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IGNyZWF0
ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBj
b25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGlt
ZSkgZmluYWw7Ci0gICAgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRz
PikgZmluYWw7CisgICAgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29u
c3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pIGZpbmFs
OwogCiAgICAgQ1NTUHJvcGVydHlJRCBtX3Byb3BlcnR5OwogICAgIE1vbm90b25pY1RpbWUgbV9n
ZW5lcmF0aW9uVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNs
YXJhdGl2ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRp
dmVBbmltYXRpb24uY3BwCmluZGV4IGYxOTYwOGUwNGFlYzNiMTE0ZmNiZjQ2M2UwN2UzMjZmMTA5
YTFkZDYuLmJjODY0ZjhkNThjYTQ5N2QyYjJiZDQyMWE0ZGI3MWYzZTI3ODY1NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcApAQCAt
MTA1LDcgKzEwNSw3IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnNldEJhY2tpbmdBbmlt
YXRpb24oY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uCiAgICAgc3luY1Byb3BlcnRp
ZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpOwogfQogCi12b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9u
Ojppbml0aWFsaXplKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUmIG5ld1N0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKQordm9p
ZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5pdGlhbGl6ZShjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVy
Q29udGV4dCYgcmVzb2x2ZXJDb250ZXh0KQogewogICAgIC8vIFdlIG5lZWQgdG8gc3VzcGVuZCBp
bnZhbGlkYXRpb24gb2YgdGhlIGFuaW1hdGlvbidzIGtleWZyYW1lIGVmZmVjdCBkdXJpbmcgaXRz
IGNyZWF0aW9uCiAgICAgLy8gYXMgaXQgd291bGQgb3RoZXJ3aXNlIHRyaWdnZXIgaW52YWxpZGF0
aW9uIG9mIHRoZSBkb2N1bWVudCdzIHN0eWxlIGFuZCB0aGlzIHdvdWxkIGJlCkBAIC0xMTYsNyAr
MTE2LDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5pdGlhbGl6ZShjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclMKIAogICAgIHNldEVmZmVjdChLZXlmcmFt
ZUVmZmVjdDo6Y3JlYXRlKCptX293bmluZ0VsZW1lbnQsIG1fb3duaW5nUHNldWRvSWQpKTsKICAg
ICBzZXRUaW1lbGluZSgmbV9vd25pbmdFbGVtZW50LT5kb2N1bWVudCgpLnRpbWVsaW5lKCkpOwot
ICAgIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihlZmZlY3QoKSktPmNvbXB1dGVEZWNsYXJhdGl2
ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBuZXdTdHlsZSwgcGFyZW50RWxl
bWVudFN0eWxlKTsKKyAgICBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oZWZmZWN0KCkpLT5jb21w
dXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhvbGRTdHlsZSwgbmV3U3R5
bGUsIHJlc29sdmVyQ29udGV4dCk7CiAgICAgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1h
dGlvbigpOwogICAgIGlmIChiYWNraW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkgPT0gQW5pbWF0
aW9uUGxheVN0YXRlOjpQbGF5aW5nKQogICAgICAgICBwbGF5KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCmluZGV4IDg1MjRiNzhkNzQzMWZh
OTc5NzQ2Mjc0OTM2YjkyNDcwZmVjMDQzZjYuLjYzMjAzMjMxNjQyNjExM2UwNWY3NmY0YzM1ZDIz
MDc2ZGE1ZmE3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJh
dGl2ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBE
ZWNsYXJhdGl2ZUFuaW1hdGlvbihjb25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
RWxlbWVudFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6
OlJlc29sdmVyQ29udGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jUHJvcGVydGllc1dpdGhC
YWNraW5nQW5pbWF0aW9uKCk7CiAgICAgLy8gZWxhcHNlZFRpbWUgaXMgdGhlIGFuaW1hdGlvbidz
IGN1cnJlbnQgdGltZSBhdCB0aGUgdGltZSB0aGUgZXZlbnQgaXMgYWRkZWQgYW5kIGlzIGV4cG9z
ZWQgdGhyb3VnaCB0aGUgRE9NIEFQSSwgdGltZWxpbmVUaW1lIGlzIHRoZSBhbmltYXRpb25zJwog
ICAgIC8vIHRpbWVsaW5lIGN1cnJlbnQgdGltZSBhbmQgaXMgbm90IGV4cG9zZWQgdGhyb3VnaCB0
aGUgRE9NIEFQSSBidXQgdXNlZCBieSB0aGUgRG9jdW1lbnRUaW1lbGluZSBmb3Igc29ydGluZyBl
dmVudHMgYmVmb3JlIGRpc3BhdGNoLiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuY3BwCmluZGV4IDY3YjlhZjBjMDE2ODZmOThkMjVhYjY4MDM3MzEwZjVmZTFhZGZl
OTkuLjhkYjlkMzkyYjNhYWMzMTlhOGYzYzFiNDZjYmE0YzgyMzc2MmJiMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtODEyLDcgKzgxMiw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBLZXlm
cmFtZUVmZmVjdDo6dXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmIGVsZW1lbnRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK3ZvaWQgS2V5ZnJh
bWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJiBlbGVtZW50U3R5
bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCkKIHsKICAg
ICBpZiAoIW1fYmxlbmRpbmdLZXlmcmFtZXMuaXNFbXB0eSgpIHx8ICFtX3RhcmdldCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0
ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlCiAg
ICAgICAgICAgICBrZXlmcmFtZUxpc3QuYWRkUHJvcGVydHkoc3R5bGVQcm9wZXJ0aWVzLT5wcm9w
ZXJ0eUF0KGkpLmlkKCkpOwogCiAgICAgICAgIGF1dG8ga2V5ZnJhbWVSdWxlID0gU3R5bGVSdWxl
S2V5ZnJhbWU6OmNyZWF0ZShXVEZNb3ZlKHN0eWxlUHJvcGVydGllcykpOwotICAgICAgICBrZXlm
cmFtZVZhbHVlLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JLZXlmcmFtZSgqbV90YXJn
ZXQsICZlbGVtZW50U3R5bGUsIHBhcmVudEVsZW1lbnRTdHlsZSwga2V5ZnJhbWVSdWxlLnB0cigp
LCBrZXlmcmFtZVZhbHVlKSk7CisgICAgICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVS
ZXNvbHZlci5zdHlsZUZvcktleWZyYW1lKCptX3RhcmdldCwgJmVsZW1lbnRTdHlsZSwgcmVzb2x2
ZXJDb250ZXh0LCBrZXlmcmFtZVJ1bGUucHRyKCksIGtleWZyYW1lVmFsdWUpKTsKICAgICAgICAg
a2V5ZnJhbWVMaXN0Lmluc2VydChXVEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKICAgICB9CiAKQEAg
LTEwMDMsMTYgKzEwMDMsMTYgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y2hlY2tGb3JNYXRjaGlu
Z0NvbG9yRmlsdGVyRnVuY3Rpb25MaXN0cygpCiAgICAgfSk7CiB9CiAKLXZvaWQgS2V5ZnJhbWVF
ZmZlY3Q6OmNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKQordm9pZCBLZXlmcmFtZUVmZmVjdDo6
Y29tcHV0ZURlY2xhcmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxl
OjpSZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCkKIHsKICAgICBBU1NFUlQoaXM8RGVj
bGFyYXRpdmVBbmltYXRpb24+KGFuaW1hdGlvbigpKSk7CiAgICAgaWYgKGlzPENTU0FuaW1hdGlv
bj4oYW5pbWF0aW9uKCkpKQotICAgICAgICBjb21wdXRlQ1NTQW5pbWF0aW9uQmxlbmRpbmdLZXlm
cmFtZXMobmV3U3R5bGUsIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgICAgIGNvbXB1dGVDU1NB
bmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhuZXdTdHlsZSwgcmVzb2x2ZXJDb250ZXh0KTsKICAg
ICBlbHNlIGlmIChpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24oKSkpCiAgICAgICAgIGNvbXB1
dGVDU1NUcmFuc2l0aW9uQmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5bGUsIG5ld1N0eWxlKTsKIH0K
IAotdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJh
bWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmFuaW1hdGVkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
KiBwYXJlbnRFbGVtZW50U3R5bGUpCit2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlQ1NTQW5p
bWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3R5bGUmIHVuYW5pbWF0ZWRTdHls
ZSwgY29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYgcmVzb2x2ZXJDb250ZXh0KQogewogICAg
IEFTU0VSVChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbigpKSk7CiAgICAgQVNTRVJUKGRvY3Vt
ZW50KCkpOwpAQCAtMTAyMiw3ICsxMDIyLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0
ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmEKIAog
ICAgIEtleWZyYW1lTGlzdCBrZXlmcmFtZUxpc3QoYmFja2luZ0FuaW1hdGlvbi5uYW1lKCkuc3Ry
aW5nKTsKICAgICBpZiAoYXV0byogc3R5bGVTY29wZSA9IFN0eWxlOjpTY29wZTo6Zm9yT3JkaW5h
bCgqbV90YXJnZXQsIGJhY2tpbmdBbmltYXRpb24ubmFtZVN0eWxlU2NvcGVPcmRpbmFsKCkpKQot
ICAgICAgICBzdHlsZVNjb3BlLT5yZXNvbHZlcigpLmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9u
KCptX3RhcmdldCwgJnVuYW5pbWF0ZWRTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlLCBrZXlmcmFt
ZUxpc3QpOworICAgICAgICBzdHlsZVNjb3BlLT5yZXNvbHZlcigpLmtleWZyYW1lU3R5bGVzRm9y
QW5pbWF0aW9uKCptX3RhcmdldCwgJnVuYW5pbWF0ZWRTdHlsZSwgcmVzb2x2ZXJDb250ZXh0LCBr
ZXlmcmFtZUxpc3QpOwogCiAgICAgLy8gRW5zdXJlIHJlc291cmNlIGxvYWRzIGZvciBhbGwgdGhl
IGZyYW1lcy4KICAgICBmb3IgKGF1dG8mIGtleWZyYW1lIDoga2V5ZnJhbWVMaXN0LmtleWZyYW1l
cygpKSB7CkBAIC0xMjY2LDEyICsxMjY2LDEyIEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmRpZENo
YW5nZVRhcmdldFN0eWxlYWJsZShjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsCiAg
ICAgICAgIG1faW5UYXJnZXRFZmZlY3RTdGFjayA9IG5ld1RhcmdldFN0eWxlYWJsZS0+ZW5zdXJl
S2V5ZnJhbWVFZmZlY3RTdGFjaygpLmFkZEVmZmVjdCgqdGhpcyk7CiB9CiAKLXZvaWQgS2V5ZnJh
bWVFZmZlY3Q6OmFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUp
Cit2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNv
bnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCwgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBzdGFydFRpbWUpCiB7CiAgICAgaWYgKCFtX3RhcmdldCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXModGFyZ2V0U3R5bGUsIHBhcmVudEVs
ZW1lbnRTdHlsZSk7CisgICAgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXModGFyZ2V0U3R5bGUsIHJl
c29sdmVyQ29udGV4dCk7CiAKICAgICBhdXRvIGNvbXB1dGVkVGltaW5nID0gZ2V0Q29tcHV0ZWRU
aW1pbmcoc3RhcnRUaW1lKTsKICAgICBpZiAoIXN0YXJ0VGltZSkgewpAQCAtMTQzMyw3ICsxNDMz
LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0QW5pbWF0ZWRQcm9wZXJ0aWVzSW5TdHlsZShS
ZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGRvdWIKICAgICAvLyBUaGUgZWZmZWN0IHZhbHVlIG9m
IGEgc2luZ2xlIHByb3BlcnR5IHJlZmVyZW5jZWQgYnkgYSBrZXlmcmFtZSBlZmZlY3QgYXMgb25l
IG9mIGl0cyB0YXJnZXQgcHJvcGVydGllcywKICAgICAvLyBmb3IgYSBnaXZlbiBpdGVyYXRpb24g
cHJvZ3Jlc3MsIGN1cnJlbnQgaXRlcmF0aW9uIGFuZCB1bmRlcmx5aW5nIHZhbHVlIGlzIGNhbGN1
bGF0ZWQgYXMgZm9sbG93cy4KIAotICAgIHVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKHRhcmdldFN0
eWxlLCBudWxscHRyKTsKKyAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0YXJnZXRTdHlsZSwg
eyBudWxscHRyIH0pOwogICAgIGlmIChtX2JsZW5kaW5nS2V5ZnJhbWVzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5o
CmluZGV4IGY3ODE1Mzk5NTI0N2FhMTk1NDU2ZWZiNGI0MTkzZGM0NjY1NDM3Y2EuLjdhYzdiNGE4
ODI3OWM2ZWQxZDdlZGQ3NGVhMzUwMjUzYjdhZmIyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Q29tcG9zaXRlKENvbXBvc2l0ZU9wZXJhdGlvbiBjb21wb3NpdGVPcGVyYXRpb24pIHsg
bV9jb21wb3NpdGVPcGVyYXRpb24gPSBjb21wb3NpdGVPcGVyYXRpb247IH0KIAogICAgIHZvaWQg
Z2V0QW5pbWF0ZWRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0
eWxlKTsKLSAgICB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0
ZDo6bnVsbG9wdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0
U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+ID0gc3RkOjpudWxsb3B0KSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFRpY2soKSBmaW5hbDsKICAgICB2b2lkIGFuaW1h
dGlvbkRpZFBsYXkoKSBmaW5hbDsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICBib29sIGNvbG9yRmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9jb2xvckZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaDsgfQogCi0gICAgdm9pZCBj
b21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgdm9pZCBjb21wdXRlRGVjbGFyYXRpdmVB
bmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYp
OwogICAgIGNvbnN0IEtleWZyYW1lTGlzdCYgYmxlbmRpbmdLZXlmcmFtZXMoKSBjb25zdCB7IHJl
dHVybiBtX2JsZW5kaW5nS2V5ZnJhbWVzOyB9CiAgICAgY29uc3QgSGFzaFNldDxDU1NQcm9wZXJ0
eUlEPiYgYW5pbWF0ZWRQcm9wZXJ0aWVzKCk7CiAgICAgYm9vbCBhbmltYXRlc1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQpIGNvbnN0OwpAQCAtMTk4LDggKzE5OCw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCk7CiAgICAgdm9pZCBjb21wdXRlU29tZUtl
eWZyYW1lc1VzZVN0ZXBzVGltaW5nRnVuY3Rpb24oKTsKICAgICB2b2lkIGNsZWFyQmxlbmRpbmdL
ZXlmcmFtZXMoKTsKLSAgICB2b2lkIHVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxl
JiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpOwot
ICAgIHZvaWQgY29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRl
clN0eWxlJiB1bmFuaW1hdGVkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50
U3R5bGUpOworICAgIHZvaWQgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmIGVs
ZW1lbnRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYpOworICAgIHZvaWQgY29t
cHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmFu
aW1hdGVkU3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmKTsKICAgICB2b2lkIGNv
bXB1dGVDU1NUcmFuc2l0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpOwogICAgIHZvaWQgY29tcHV0ZUFj
Y2VsZXJhdGVkUHJvcGVydGllc1N0YXRlKCk7CiAgICAgdm9pZCBzZXRCbGVuZGluZ0tleWZyYW1l
cyhLZXlmcmFtZUxpc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdFN0YWNrLmNwcAppbmRleCBiOGE4ZmE4OTg5MGVlYjU1OTk4OTllMWY3NmNiZmNkNGY4
NDM1ZWUxLi5lMTU0ZTVhODE1NWQ2ZmJmOTVjYjc4MGRhZDYyMzkxMTQ0YzJiNTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdFN0YWNrOjpzZXRDU1NBbmltYXRpb25M
aXN0KFJlZlB0cjxjb25zdCBBbmltYXRpb25MaXN0PiYmIGNzc0EKICAgICBtX2lzU29ydGVkID0g
ZmFsc2U7CiB9CiAKLU9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEtleWZyYW1lRWZmZWN0U3Rh
Y2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK09wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+
IEtleWZyYW1lRWZmZWN0U3RhY2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0
YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZl
bnRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVyQ29udGV4dCYgcmVzb2x2ZXJDb250ZXh0KQog
ewogICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGltcGFjdDsKIApAQCAtMTM0LDcgKzEz
NCw3IEBAIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEtleWZyYW1lRWZmZWN0U3RhY2s6OmFw
cGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlCiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVm
ZmVjdCA6IHNvcnRlZEVmZmVjdHMoKSkgewogICAgICAgICBBU1NFUlQoZWZmZWN0LT5hbmltYXRp
b24oKSk7Ci0gICAgICAgIGVmZmVjdC0+YW5pbWF0aW9uKCktPnJlc29sdmUodGFyZ2V0U3R5bGUs
IHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgICAgIGVmZmVjdC0+YW5pbWF0aW9uKCktPnJlc29s
dmUodGFyZ2V0U3R5bGUsIHJlc29sdmVyQ29udGV4dCk7CiAKICAgICAgICAgaWYgKGVmZmVjdC0+
aXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSB8fCBlZmZlY3QtPmlzQWJvdXRUb1J1bkFjY2VsZXJhdGVk
KCkpCiAgICAgICAgICAgICBpbXBhY3QuYWRkKEFuaW1hdGlvbkltcGFjdDo6UmVxdWlyZXNSZWNv
bXBvc2l0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3RTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3Rh
Y2suaAppbmRleCA1ZGFiNGM3MmVlYjc1ZDViZmQxZWQ3MzYxNTI5Y2ZiZDQ0NjhhMTEwLi4xZTMz
YjRiMjQ4ODVkNjFmMzg5OTY2NWE1YmZjNDMzOTg5NzA2MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmgKQEAgLTM2LDYgKzM2LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtleWZyYW1lRWZmZWN0OwogY2xhc3MgUmVuZGVyU3R5
bGU7CiAKK25hbWVzcGFjZSBTdHlsZSB7CitzdHJ1Y3QgUmVzb2x2ZXJDb250ZXh0OworfQorCiBj
bGFzcyBLZXlmcmFtZUVmZmVjdFN0YWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTUwLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q1NTQW5pbWF0
aW9uTGlzdChSZWZQdHI8Y29uc3QgQW5pbWF0aW9uTGlzdD4mJik7CiAgICAgYm9vbCBpc0N1cnJl
bnRseUFmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wgcmVx
dWlyZXNQc2V1ZG9FbGVtZW50KCkgY29uc3Q7Ci0gICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFj
dD4gYXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1w
YWN0PiBhcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIGNvbnN0IFN0
eWxlOjpSZXNvbHZlckNvbnRleHQmKTsKICAgICBib29sIGhhc0VmZmVjdFdpdGhJbXBsaWNpdEtl
eWZyYW1lcygpIGNvbnN0OwogCiAgICAgdm9pZCBzdG9wQWNjZWxlcmF0aW5nVHJhbnNmb3JtUmVs
YXRlZFByb3BlcnRpZXMoVXNlQWNjZWxlcmF0ZWRBY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBmYjczOTM1ODlkYTJlNjhkNGFlZmFiZGU5NmFi
NTM5YjYyMDYxNmE0Li40M2ZiYmM4NzdiNjQzN2ZiNWQyODc1MmUxMzExYzRlZWNkOWUyYTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMTIyNywxNCAr
MTIyNywxNCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dGljaygpCiAgICAgICAgIG1fZWZmZWN0LT5h
bmltYXRpb25EaWRUaWNrKCk7CiB9CiAKLXZvaWQgV2ViQW5pbWF0aW9uOjpyZXNvbHZlKFJlbmRl
clN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHls
ZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCit2b2lkIFdlYkFuaW1hdGlvbjo6
cmVzb2x2ZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNv
bnRleHQmIHJlc29sdmVyQ29udGV4dCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUp
CiB7CiAgICAgaWYgKCFtX3Nob3VsZFNraXBVcGRhdGluZ0ZpbmlzaGVkU3RhdGVXaGVuUmVzb2x2
aW5nKQogICAgICAgICB1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWs6Ok5vLCBTeW5jaHJvbm91
c2x5Tm90aWZ5OjpZZXMpOwogICAgIG1fc2hvdWxkU2tpcFVwZGF0aW5nRmluaXNoZWRTdGF0ZVdo
ZW5SZXNvbHZpbmcgPSBmYWxzZTsKIAogICAgIGlmIChtX2VmZmVjdCkKLSAgICAgICAgbV9lZmZl
Y3QtPmFwcGx5KHRhcmdldFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUsIHN0YXJ0VGltZSk7Cisg
ICAgICAgIG1fZWZmZWN0LT5hcHBseSh0YXJnZXRTdHlsZSwgcmVzb2x2ZXJDb250ZXh0LCBzdGFy
dFRpbWUpOwogfQogCiB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0U3VzcGVuZGVkKGJvb2wgaXNTdXNw
ZW5kZWQpCkBAIC0xNDI2LDEyICsxNDI2LDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1h
dGlvbjo6Y29tbWl0U3R5bGVzKCkKICAgICAgICAgICAgIGlmIChlZmZlY3RJblN0YWNrLT5hbmlt
YXRpb24oKSAhPSB0aGlzICYmICFjb21wYXJlQW5pbWF0aW9uc0J5Q29tcG9zaXRlT3JkZXIoKmVm
ZmVjdEluU3RhY2stPmFuaW1hdGlvbigpLCAqdGhpcykpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBpZiAoZWZmZWN0SW5TdGFjay0+YW5pbWF0ZWRQcm9wZXJ0aWVzKCkuY29u
dGFpbnMocHJvcGVydHkpKQotICAgICAgICAgICAgICAgIGVmZmVjdEluU3RhY2stPmFuaW1hdGlv
bigpLT5yZXNvbHZlKCphbmltYXRlZFN0eWxlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBl
ZmZlY3RJblN0YWNrLT5hbmltYXRpb24oKS0+cmVzb2x2ZSgqYW5pbWF0ZWRTdHlsZSwgeyBudWxs
cHRyIH0pOwogICAgICAgICAgICAgaWYgKGVmZmVjdEluU3RhY2stPmFuaW1hdGlvbigpID09IHRo
aXMpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fcmVw
bGFjZVN0YXRlID09IFJlcGxhY2VTdGF0ZTo6UmVtb3ZlZCkKLSAgICAgICAgICAgIGVmZmVjdC0+
YW5pbWF0aW9uKCktPnJlc29sdmUoKmFuaW1hdGVkU3R5bGUsIG51bGxwdHIpOworICAgICAgICAg
ICAgZWZmZWN0LT5hbmltYXRpb24oKS0+cmVzb2x2ZSgqYW5pbWF0ZWRTdHlsZSwgeyBudWxscHRy
IH0pOwogICAgICAgICBpZiAoYXV0byBjc3NWYWx1ZSA9IGNvbXB1dGVkU3R5bGVFeHRyYWN0b3Iu
dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoKmFuaW1hdGVkU3R5bGUsIHByb3BlcnR5LCByZW5kZXJl
cikpCiAgICAgICAgICAgICBpbmxpbmVTdHlsZS0+c2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0
eSwgY3NzVmFsdWUtPmNzc1RleHQoKSwgZmFsc2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uaAppbmRleCA3NzQ0ZmJmM2NmNmE3YmQ5NzQ5YWJkMTg4YTUwMzc1
M2NjYjQ3OTg0Li5kZWFlZWZjZTU3ZGUzNzVhYWU3ZDRiNTRiMjEwNTU4YjI1M2EyYzRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCkBAIC00OCw2ICs0OCwxMCBAQCBj
bGFzcyBSZW5kZXJTdHlsZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9N
UHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazsKIAorbmFtZXNwYWNlIFN0eWxlIHsKK3N0
cnVjdCBSZXNvbHZlckNvbnRleHQ7Cit9CisKIGNsYXNzIFdlYkFuaW1hdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYkFuaW1hdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdl
YkFuaW1hdGlvbik7CiBwdWJsaWM6CkBAIC0xMTksNyArMTIzLDcgQEAgcHVibGljOgogICAgIGJv
b2wgbmVlZHNUaWNrKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHRpY2soKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBTZWNvbmRzIHRpbWVUb05leHRUaWNrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50RWxlbWVudFN0eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNv
bnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3Rk
OjpudWxsb3B0KTsKICAgICB2b2lkIGVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBzdGQ6Om9w
dGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBzdGQ6Om9wdGlv
bmFsPGNvbnN0IFN0eWxlYWJsZT4mIG5ld1RhcmdldCk7CiAgICAgdm9pZCBhY2NlbGVyYXRlZFN0
YXRlRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVyZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCmluZGV4IDViNTVkZWJlMGQ3M2RhMmMwM2Ni
OGFhYmM2YzQ0NDFiZDY5MDQwODAuLjU1ODM2MzJmNjAzYjc4N2ZkNDBiNDEzMDI1NTU4NTI4NmNm
NGM5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IE1lZGlhUXVlcnlNYXRjaGVy
Ojpkb2N1bWVudEVsZW1lbnRVc2VyQWdlbnRTdHlsZSgpCiAgICAgaWYgKCFkb2N1bWVudEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1fZG9jdW1lbnQtPnN0
eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCBt
X2RvY3VtZW50LT5yZW5kZXJTdHlsZSgpLCBudWxscHRyLCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6
TWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpLnJlbmRlclN0eWxlOworICAgIHJldHVybiBtX2RvY3Vt
ZW50LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmRvY3VtZW50RWxl
bWVudCwgeyBtX2RvY3VtZW50LT5yZW5kZXJTdHlsZSgpIH0sIFJ1bGVNYXRjaGluZ0JlaGF2aW9y
OjpNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CiB9CiAKIGJvb2wgTWVkaWFR
dWVyeU1hdGNoZXI6OmV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlTZXQmIG1lZGlhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlTWVkaWEuY3BwCmluZGV4IGE2MTQyYWFiMmZlMzdjMTVkMGIwMTRmZGMzMjljNzQz
ZDQ2MGQ5YzMuLmZlMmVlMWJhM2FkMDI4ODcyN2RlYmI4YjFlNjc4ODQzNmM1OTQ3YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVNZWRpYS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBTdHlsZU1lZGlh
OjptYXRjaE1lZGl1bShjb25zdCBTdHJpbmcmIHF1ZXJ5KSBjb25zdAogICAgIGlmICghZG9jdW1l
bnRFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHJvb3RTdHlsZSA9
IGRvY3VtZW50LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmRvY3Vt
ZW50RWxlbWVudCwgZG9jdW1lbnQtPnJlbmRlclN0eWxlKCksIG51bGxwdHIsIFJ1bGVNYXRjaGlu
Z0JlaGF2aW9yOjpNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CisgICAgYXV0
byByb290U3R5bGUgPSBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JF
bGVtZW50KCpkb2N1bWVudEVsZW1lbnQsIHsgZG9jdW1lbnQtPnJlbmRlclN0eWxlKCkgfSwgUnVs
ZU1hdGNoaW5nQmVoYXZpb3I6Ok1hdGNoT25seVVzZXJBZ2VudFJ1bGVzKS5yZW5kZXJTdHlsZTsK
IAogICAgIGF1dG8gbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUocXVlcnksIE1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0KCpkb2N1bWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA1MjUwNjI5ZjJjYzZhNGFhZGQ2NjEyZWI1ZDI2NWE4YjFlNDhkZGY0Li4wOTM4ZjZkNWZhMzk2
NjhmNmE5MDQyN2Y1Y2I4MGU0NTI1NWNjM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTIyNjIsOSArMjI2Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnQ6
OnN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzCiAgICAgYXV0byYgcmVz
b2x2ZXIgPSBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKTsKIAogICAgIGlmIChwc2V1ZG9FbGVtZW50
U3BlY2lmaWVyICE9IFBzZXVkb0lkOjpOb25lKQotICAgICAgICByZXR1cm4gcmVzb2x2ZXIucHNl
dWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcHNldWRvRWxlbWVudFNwZWNpZmllciB9LCAq
cGFyZW50U3R5bGUpOworICAgICAgICByZXR1cm4gcmVzb2x2ZXIucHNldWRvU3R5bGVGb3JFbGVt
ZW50KGVsZW1lbnQsIHsgcHNldWRvRWxlbWVudFNwZWNpZmllciB9LCB7IHBhcmVudFN0eWxlIH0p
OwogCi0gICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlci5zdHlsZUZvckVsZW1lbnQoZWxl
bWVudCwgcGFyZW50U3R5bGUpOworICAgIGF1dG8gZWxlbWVudFN0eWxlID0gcmVzb2x2ZXIuc3R5
bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcGFyZW50U3R5bGUgfSk7CiAgICAgaWYgKGVsZW1lbnRT
dHlsZS5yZWxhdGlvbnMpIHsKICAgICAgICAgU3R5bGU6OlVwZGF0ZSBlbXB0eVVwZGF0ZSgqdGhp
cyk7CiAgICAgICAgIFN0eWxlOjpjb21taXRSZWxhdGlvbnMoV1RGTW92ZShlbGVtZW50U3R5bGUu
cmVsYXRpb25zKSwgZW1wdHlVcGRhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDkyODll
MGNjZTY2NWNiMTVlNTg4ZDVmM2Y5ZmUxMzNhYmI0YzNjMzUuLmMxNDY2MDljOGI3OTdhYjE4Mzcz
YTMyN2U1NDdhYWZiMjY5NTlkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE5NzYsNyAr
MTk3Niw3IEBAIFN0eWxlOjpSZXNvbHZlciYgRWxlbWVudDo6c3R5bGVSZXNvbHZlcigpCiAKIFN0
eWxlOjpFbGVtZW50U3R5bGUgRWxlbWVudDo6cmVzb2x2ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSkKIHsKLSAgICByZXR1cm4gc3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxl
bWVudCgqdGhpcywgcGFyZW50U3R5bGUpOworICAgIHJldHVybiBzdHlsZVJlc29sdmVyKCkuc3R5
bGVGb3JFbGVtZW50KCp0aGlzLCB7IHBhcmVudFN0eWxlIH0pOwogfQogCiBzdGF0aWMgdm9pZCBp
bnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNpYmxpbmcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAppbmRleCBjYzU4OTllNzMxYTY1ZWZjYTdi
MTU1YWQyNjljYmFhYzZhMjBiNmFkLi5jNTVjZjE3YWNiNDlkMmY2ZTY3YjMxOWM4NWZmZmVjNzY2
MmQwYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVFbGVtZW50Ojpjb21wdXRl
ZFRleHRXaXRoRGlyZWN0aW9uKCkKICAgICBpZiAoYXV0byogY29tcHV0ZWRTdHlsZSA9IHRoaXMt
PmNvbXB1dGVkU3R5bGUoKSkKICAgICAgICAgZGlyZWN0aW9uID0gY29tcHV0ZWRTdHlsZS0+ZGly
ZWN0aW9uKCk7CiAgICAgZWxzZQotICAgICAgICBkaXJlY3Rpb24gPSBzdHlsZVJlc29sdmVyKCku
c3R5bGVGb3JFbGVtZW50KCp0aGlzLCBwYXJlbnRFbGVtZW50KCkgPyBwYXJlbnRFbGVtZW50KCkt
PnJlbmRlclN0eWxlKCkgOiBudWxscHRyKS5yZW5kZXJTdHlsZS0+ZGlyZWN0aW9uKCk7CisgICAg
ICAgIGRpcmVjdGlvbiA9IHN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKnRoaXMsIHsg
cGFyZW50RWxlbWVudCgpID8gcGFyZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpIDogbnVsbHB0
ciB9KS5yZW5kZXJTdHlsZS0+ZGlyZWN0aW9uKCk7CiAgICAgcmV0dXJuIHsgdGV4dCgpLCBkaXJl
Y3Rpb24gfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CmluZGV4IDY5YWI0NjM0YWNiNDYxMmE1MDIyOGU5NjExMjM5MGQxNzFjNThiM2YuLjE0NzUyMjY4
NWVmYjEwOGMyNTI5MDA2YjkwN2MyMGMyOTY4NzM3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVTdHlsZSgpIGNv
bnN0CiAgICAgICAgIGlmICghY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQYXJl
bnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRyZWVQ
YXJlbnRFbGVtZW50LCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOworICAgICAgICBhdXRvIHN0
eWxlID0gY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudC0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9y
RWxlbWVudCgqY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCwgeyAmcGFyZW50U3R5bGUgfSkucmVu
ZGVyU3R5bGU7CiAgICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBl
OjpDb250ZW50cyk7CiAKICAgICAgICAgLy8gV2UgYWN0IGFzIGlmIHRoZXJlIHdhcyBhbiB1bnN0
eWxlZCA8c3Bhbj4gYXJvdW5kIHRoZSB0ZXh0IG5vZGUuIE9ubHkgc3R5bGluZyBoYXBwZW5zIHZp
YSBpbmhlcml0YW5jZS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IFJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVTdHlsZSgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBmaXJzdExpbmVTdHlsZTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVuZGVyZXJG
b3JGaXJzdExpbmVTdHlsZS5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1l
bnQoKmVsZW1lbnQoKSwgJnBhcmVudFN0eWxlKS5yZW5kZXJTdHlsZTsKKyAgICByZXR1cm4gcmVu
ZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZv
ckVsZW1lbnQoKmVsZW1lbnQoKSwgeyAmcGFyZW50U3R5bGUgfSkucmVuZGVyU3R5bGU7CiB9CiAK
IGNvbnN0IFJlbmRlclN0eWxlJiBSZW5kZXJFbGVtZW50OjpmaXJzdExpbmVTdHlsZSgpIGNvbnN0
CkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRl
ckVsZW1lbnQ6OmdldFVuY2FjaGVkUHNldWRvU3R5bGUoY29uc3QgU3R5bGU6OgogCiAgICAgYXV0
byYgc3R5bGVSZXNvbHZlciA9IGVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5
bGVGb3JFbGVtZW50KCplbGVtZW50KCksIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCAqcGFyZW50U3R5
bGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVJlc29s
dmVyLnBzZXVkb1N0eWxlRm9yRWxlbWVudCgqZWxlbWVudCgpLCBwc2V1ZG9FbGVtZW50UmVxdWVz
dCwgeyBwYXJlbnRTdHlsZSB9KTsKIAogICAgIGlmIChzdHlsZSkKICAgICAgICAgU3R5bGU6Omxv
YWRQZW5kaW5nUmVzb3VyY2VzKCpzdHlsZSwgZG9jdW1lbnQoKSwgZWxlbWVudCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKaW5kZXggMWJk
MWI3Zjg2OGY3NTQzYjQ5ZTM1YjYzY2M1YTdjNmQxMmVmODQxMy4uZTIzYTIxYzQ3YWYxMTcxNzJm
ZTJkNTU4MmYzOTBjZTFlMzAxNjMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKQEAgLTExOSwxNCArMTE5LDE0IEBAIHZvaWQgS2V5ZnJh
bWVMaXN0OjpmaWxsSW1wbGljaXRLZXlmcmFtZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgU3R5
bGU6OlJlc29sdmVyCiAgICAgYXV0byBpbml0aWFsU2l6ZSA9IHNpemUoKTsKICAgICBpZiAoaW5p
dGlhbFNpemUgPiAwICYmIG1fa2V5ZnJhbWVzWzBdLmtleSgpKSB7CiAgICAgICAgIEtleWZyYW1l
VmFsdWUga2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKLSAgICAgICAga2V5ZnJhbWVWYWx1ZS5z
ZXRTdHlsZShzdHlsZVJlc29sdmVyLnN0eWxlRm9yS2V5ZnJhbWUoZWxlbWVudCwgZWxlbWVudFN0
eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUsICZ6ZXJvUGVyY2VudEtleWZyYW1lKCksIGtleWZyYW1l
VmFsdWUpKTsKKyAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHlsZShzdHlsZVJlc29sdmVyLnN0
eWxlRm9yS2V5ZnJhbWUoZWxlbWVudCwgZWxlbWVudFN0eWxlLCB7IHBhcmVudEVsZW1lbnRTdHls
ZSB9LCAmemVyb1BlcmNlbnRLZXlmcmFtZSgpLCBrZXlmcmFtZVZhbHVlKSk7CiAgICAgICAgIGlu
c2VydChXVEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgMTAw
JSBrZXlmcmFtZSBpcyBtaXNzaW5nLCBjcmVhdGUgaXQgKGJ1dCBvbmx5IGlmIHRoZXJlIGlzIGF0
IGxlYXN0IG9uZSBvdGhlciBrZXlmcmFtZSkuCiAgICAgaWYgKGluaXRpYWxTaXplID4gMCAmJiAo
bV9rZXlmcmFtZXNbc2l6ZSgpIC0gMV0ua2V5KCkgIT0gMSkpIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZSBrZXlmcmFtZVZhbHVlKDEsIG51bGxwdHIpOwotICAgICAgICBrZXlmcmFtZVZhbHVlLnNl
dFN0eWxlKHN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5
bGUsIHBhcmVudEVsZW1lbnRTdHlsZSwgJmh1bmRyZWRQZXJjZW50S2V5ZnJhbWUoKSwga2V5ZnJh
bWVWYWx1ZSkpOworICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIu
c3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHsgcGFyZW50RWxlbWVudFN0
eWxlIH0sICZodW5kcmVkUGVyY2VudEtleWZyYW1lKCksIGtleWZyYW1lVmFsdWUpKTsKICAgICAg
ICAgaW5zZXJ0KFdURk1vdmUoa2V5ZnJhbWVWYWx1ZSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZTQ0NDViNjUzMTk3M2EyYzAzZWViZTMyNGI4
NWZhMTIwZTQ3NTE5MS4uYWM5M2I4NmQ0ZTI4ZTU4YWQ0YjUyNDNmYjk4ZmU5MzgyZDJhYTg1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBA
QCBSZXNvbHZlcjo6UmVzb2x2ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICBtX21lZGlh
UXVlcnlFdmFsdWF0b3IgPSBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgfTsKIAogICAgIGlmIChhdXRv
KiBkb2N1bWVudEVsZW1lbnQgPSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKSB7Ci0gICAg
ICAgIG1fcm9vdERlZmF1bHRTdHlsZSA9IHN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50
LCBtX2RvY3VtZW50LnJlbmRlclN0eWxlKCksIG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9y
OjpNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CisgICAgICAgIG1fcm9vdERl
ZmF1bHRTdHlsZSA9IHN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCB7IG1fZG9jdW1l
bnQucmVuZGVyU3R5bGUoKSB9LCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hPbmx5VXNlckFn
ZW50UnVsZXMpLnJlbmRlclN0eWxlOwogICAgICAgICAvLyBUdXJuIG9mZiBhc3NlcnRpb24gYWdh
aW5zdCBmb250IGxvb2t1cHMgZHVyaW5nIHN0eWxlIHJlc29sdmVyIGluaXRpYWxpemF0aW9uLiBX
ZSBtYXkgbmVlZCByb290IHN0eWxlIGZvbnQgZm9yIG1lZGlhIHF1ZXJpZXMuCiAgICAgICAgIG1f
ZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuaW5jcmVtZW50SXNDb21wdXRpbmdSb290U3R5bGVGb250
KCk7CiAgICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUoJm1f
ZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpOwpAQCAtMjE4LDkgKzIxOCw5IEBAIEJ1aWxkZXJDb250
ZXh0IFJlc29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYgc3RhdGUpCiAgICAgfTsK
IH0KIAotRWxlbWVudFN0eWxlIFJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50Qm94U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZp
b3IsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKK0VsZW1lbnRTdHlsZSBS
ZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJl
c29sdmVyQ29udGV4dCYgY29udGV4dCwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgbWF0Y2hpbmdCZWhh
dmlvcikKIHsKLSAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVudCwgcGFyZW50U3R5bGUsIG1f
b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSk7CisgICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVs
ZW1lbnQsIGNvbnRleHQucGFyZW50U3R5bGUsIGNvbnRleHQuZG9jdW1lbnRFbGVtZW50U3R5bGUp
OwogCiAgICAgaWYgKHN0YXRlLnBhcmVudFN0eWxlKCkpIHsKICAgICAgICAgc3RhdGUuc2V0U3R5
bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBFbGVtZW50
U3R5bGUgUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBSZW5kZXJTdHlsZQogCiAgICAgVXNlckFnZW50U3R5bGU6OmVuc3VyZURlZmF1bHRTdHls
ZVNoZWV0c0ZvckVsZW1lbnQoZWxlbWVudCk7CiAKLSAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBj
b2xsZWN0b3IoZWxlbWVudCwgbV9ydWxlU2V0cywgc2VsZWN0b3JGaWx0ZXIpOworICAgIEVsZW1l
bnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVtZW50LCBtX3J1bGVTZXRzLCBjb250ZXh0LnNl
bGVjdG9yRmlsdGVyKTsKICAgICBjb2xsZWN0b3Iuc2V0TWVkaXVtKCZtX21lZGlhUXVlcnlFdmFs
dWF0b3IpOwogCiAgICAgaWYgKG1hdGNoaW5nQmVoYXZpb3IgPT0gUnVsZU1hdGNoaW5nQmVoYXZp
b3I6Ok1hdGNoT25seVVzZXJBZ2VudFJ1bGVzKQpAQCAtMjY0LDcgKzI2NCw3IEBAIEVsZW1lbnRT
dHlsZSBSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFJlbmRlclN0eWxlCiAKICAgICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKHN0YXRlLCBjb2xs
ZWN0b3IubWF0Y2hSZXN1bHQoKSk7CiAKLSAgICBBZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVudCgp
LCAqc3RhdGUucGFyZW50U3R5bGUoKSwgcGFyZW50Qm94U3R5bGUsICZlbGVtZW50KTsKKyAgICBB
ZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVudCgpLCAqc3RhdGUucGFyZW50U3R5bGUoKSwgY29udGV4
dC5wYXJlbnRCb3hTdHlsZSwgJmVsZW1lbnQpOwogICAgIGFkanVzdGVyLmFkanVzdCgqc3RhdGUu
c3R5bGUoKSwgc3RhdGUudXNlckFnZW50QXBwZWFyYW5jZVN0eWxlKCkpOwogCiAgICAgaWYgKHN0
YXRlLnN0eWxlKCktPmhhc1ZpZXdwb3J0VW5pdHMoKSkKQEAgLTI3MywxNSArMjczLDE1IEBAIEVs
ZW1lbnRTdHlsZSBSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFJlbmRlclN0eWxlCiAgICAgcmV0dXJuIHsgc3RhdGUudGFrZVN0eWxlKCksIFdU
Rk1vdmUoZWxlbWVudFN0eWxlUmVsYXRpb25zKSB9OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRFbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxlUnVsZUtleWZyYW1lKiBrZXlmcmFtZSwgS2V5
ZnJhbWVWYWx1ZSYga2V5ZnJhbWVWYWx1ZSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
UmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
UmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVzb2x2ZXJDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZSoga2V5ZnJhbWUsIEtleWZyYW1lVmFsdWUmIGtleWZy
YW1lVmFsdWUpCiB7CiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC5hdXRob3JE
ZWNsYXJhdGlvbnMuYXBwZW5kKHsgJmtleWZyYW1lLT5wcm9wZXJ0aWVzKCksIFNlbGVjdG9yQ2hl
Y2tlcjo6TWF0Y2hBbGwsIHByb3BlcnR5QWxsb3dsaXN0Rm9yUHNldWRvSWQoZWxlbWVudFN0eWxl
LT5zdHlsZVR5cGUoKSkgfSk7CiAKLSAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVudCwgbnVs
bHB0ciwgbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKTsKKyAgICBhdXRvIHN0YXRlID0g
U3RhdGUoZWxlbWVudCwgbnVsbHB0ciwgY29udGV4dC5kb2N1bWVudEVsZW1lbnRTdHlsZSk7CiAK
ICAgICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmVsZW1lbnRTdHlsZSkp
OwotICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cihwYXJlbnRF
bGVtZW50U3R5bGUgPyAqcGFyZW50RWxlbWVudFN0eWxlIDogKmVsZW1lbnRTdHlsZSkpOworICAg
IHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb250ZXh0LnBhcmVu
dFN0eWxlID8gKmNvbnRleHQucGFyZW50U3R5bGUgOiAqZWxlbWVudFN0eWxlKSk7CiAKICAgICBC
dWlsZGVyIGJ1aWxkZXIoKnN0YXRlLnN0eWxlKCksIGJ1aWxkZXJDb250ZXh0KHN0YXRlKSwgcmVz
dWx0LCB7IENhc2NhZGVMZXZlbDo6QXV0aG9yIH0pOwogICAgIGJ1aWxkZXIuYXBwbHlBbGxQcm9w
ZXJ0aWVzKCk7CkBAIC0zMDcsNyArMzA3LDcgQEAgYm9vbCBSZXNvbHZlcjo6aXNBbmltYXRpb25O
YW1lVmFsaWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2tleWZyYW1lc1J1bGVN
YXAuZmluZChBdG9tU3RyaW5nKG5hbWUpLmltcGwoKSkgIT0gbV9rZXlmcmFtZXNSdWxlTWFwLmVu
ZCgpOwogfQogCi12b2lkIFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25z
dCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBLZXlmcmFtZUxpc3QmIGxpc3QpCit2
b2lkIFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25zdCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHZlckNv
bnRleHQmIGNvbnRleHQsIEtleWZyYW1lTGlzdCYgbGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7
CiAKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFu
aW1hdGlvbihjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdAogICAgICAgICAv
LyBBZGQgdGhpcyBrZXlmcmFtZSBzdHlsZSB0byBhbGwgdGhlIGluZGljYXRlZCBrZXkgdGltZXMK
ICAgICAgICAgZm9yIChhdXRvIGtleSA6IGtleWZyYW1lLT5rZXlzKCkpIHsKICAgICAgICAgICAg
IEtleWZyYW1lVmFsdWUga2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKLSAgICAgICAgICAgIGtl
eWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5
bGUsIHBhcmVudEVsZW1lbnRTdHlsZSwga2V5ZnJhbWUucHRyKCksIGtleWZyYW1lVmFsdWUpKTsK
KyAgICAgICAgICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVGb3JLZXlmcmFtZShlbGVt
ZW50LCBlbGVtZW50U3R5bGUsIGNvbnRleHQsIGtleWZyYW1lLnB0cigpLCBrZXlmcmFtZVZhbHVl
KSk7CiAgICAgICAgICAgICBrZXlmcmFtZVZhbHVlLnNldEtleShrZXkpOwogICAgICAgICAgICAg
aWYgKGF1dG8gdGltaW5nRnVuY3Rpb25DU1NWYWx1ZSA9IGtleWZyYW1lLT5wcm9wZXJ0aWVzKCku
Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKSkK
ICAgICAgICAgICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1
bmN0aW9uOjpjcmVhdGVGcm9tQ1NTVmFsdWUoKnRpbWluZ0Z1bmN0aW9uQ1NTVmFsdWUuZ2V0KCkp
KTsKQEAgLTM3NywxMiArMzc3LDEyIEBAIHZvaWQgUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9y
QW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBsaXN0LmZpbGxJbXBsaWNpdEtleWZyYW1lcyhlbGVtZW50LCAqdGhp
cywgZWxlbWVudFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIGxpc3QuZmlsbEltcGxp
Y2l0S2V5ZnJhbWVzKGVsZW1lbnQsICp0aGlzLCBlbGVtZW50U3R5bGUsIGNvbnRleHQucGFyZW50
U3R5bGUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlc29sdmVyOjpwc2V1
ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUHNldWRvRWxl
bWVudFJlcXVlc3QmIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCBjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgY29uc3QgU2VsZWN0
b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBS
ZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFBzZXVkb0VsZW1lbnRSZXF1ZXN0JiBwc2V1ZG9FbGVtZW50UmVxdWVzdCwgY29uc3QgUmVz
b2x2ZXJDb250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8gc3RhdGUgPSBTdGF0ZShlbGVtZW50
LCAmcGFyZW50U3R5bGUsIG1fb3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSk7CisgICAgYXV0
byBzdGF0ZSA9IFN0YXRlKGVsZW1lbnQsIGNvbnRleHQucGFyZW50U3R5bGUsIGNvbnRleHQuZG9j
dW1lbnRFbGVtZW50U3R5bGUpOwogCiAgICAgaWYgKHN0YXRlLnBhcmVudFN0eWxlKCkpIHsKICAg
ICAgICAgc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpKTsKQEAgLTM5Miw3
ICszOTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlc29sdmVyOjpwc2V1ZG9T
dHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbQogICAgICAgICBzdGF0ZS5zZXRQYXJl
bnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0YXRlLnN0eWxlKCkpKTsKICAgICB9CiAK
LSAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IoZWxlbWVudCwgbV9ydWxlU2V0cywg
c2VsZWN0b3JGaWx0ZXIpOworICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVt
ZW50LCBtX3J1bGVTZXRzLCBjb250ZXh0LnNlbGVjdG9yRmlsdGVyKTsKICAgICBjb2xsZWN0b3Iu
c2V0UHNldWRvRWxlbWVudFJlcXVlc3QocHNldWRvRWxlbWVudFJlcXVlc3QpOwogICAgIGNvbGxl
Y3Rvci5zZXRNZWRpdW0oJm1fbWVkaWFRdWVyeUV2YWx1YXRvcik7CiAgICAgY29sbGVjdG9yLm1h
dGNoVUFSdWxlcygpOwpAQCAtNDExLDcgKzQxMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVt
CiAKICAgICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKHN0YXRlLCBjb2xsZWN0b3IubWF0Y2hSZXN1
bHQoKSk7CiAKLSAgICBBZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVudCgpLCAqc3RhdGUucGFyZW50
U3R5bGUoKSwgcGFyZW50Qm94U3R5bGUsIG51bGxwdHIpOworICAgIEFkanVzdGVyIGFkanVzdGVy
KGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBjb250ZXh0LnBhcmVudEJveFN0eWxl
LCBudWxscHRyKTsKICAgICBhZGp1c3Rlci5hZGp1c3QoKnN0YXRlLnN0eWxlKCksIHN0YXRlLnVz
ZXJBZ2VudEFwcGVhcmFuY2VTdHlsZSgpKTsKIAogICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5oYXNW
aWV3cG9ydFVuaXRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKaW5kZXggZGM1
Yzg0YjhhM2JiOGUwYTFkOWI1ZGNjZmYxZTE2NDM0OWY3MTA4Zi4uM2FlMDM4MzRkM2JiOTk4ZmRm
NGIwY2ZjMzJkMjUyYmE2N2E2YjIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIu
aApAQCAtODAsMTcgKzgwLDI0IEBAIHN0cnVjdCBFbGVtZW50U3R5bGUgewogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZWxhdGlvbnM+IHJlbGF0aW9uczsKIH07CiAKK3N0cnVjdCBSZXNvbHZlckNvbnRl
eHQgeworICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZTsKKyAgICBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgeyBudWxscHRyIH07CisgICAgY29uc3QgUmVuZGVyU3R5
bGUqIGRvY3VtZW50RWxlbWVudFN0eWxlIHsgbnVsbHB0ciB9OworICAgIFNlbGVjdG9yRmlsdGVy
KiBzZWxlY3RvckZpbHRlciB7IG51bGxwdHIgfTsKK307CisKIGNsYXNzIFJlc29sdmVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVzb2x2ZXI+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJl
c29sdmVyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlc29sdmVyPiBjcmVhdGUoRG9jdW1l
bnQmKTsKICAgICB+UmVzb2x2ZXIoKTsKIAotICAgIEVsZW1lbnRTdHlsZSBzdHlsZUZvckVsZW1l
bnQoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlID0gbnVsbHB0ciwgUnVsZU1hdGNoaW5nQmVoYXZp
b3IgPSBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcywgY29uc3QgU2VsZWN0b3JG
aWx0ZXIqID0gbnVsbHB0cik7CisgICAgRWxlbWVudFN0eWxlIHN0eWxlRm9yRWxlbWVudChjb25z
dCBFbGVtZW50JiwgY29uc3QgUmVzb2x2ZXJDb250ZXh0JiwgUnVsZU1hdGNoaW5nQmVoYXZpb3Ig
PSBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcyk7CiAKLSAgICB2b2lkIGtleWZy
YW1lU3R5bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSog
ZWxlbWVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBLZXlm
cmFtZUxpc3QmKTsKKyAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVs
ZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHZlckNv
bnRleHQmLCBLZXlmcmFtZUxpc3QmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmLCBj
b25zdCBQc2V1ZG9FbGVtZW50UmVxdWVzdCYsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlID0gbnVsbHB0ciwgY29uc3QgU2Vs
ZWN0b3JGaWx0ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYsIGNv
bnN0IFBzZXVkb0VsZW1lbnRSZXF1ZXN0JiwgY29uc3QgUmVzb2x2ZXJDb250ZXh0Jik7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGRlZmF1bHRTdHlsZUZvckVsZW1l
bnQoY29uc3QgRWxlbWVudCopOwpAQCAtMTA2LDEyICsxMTMsOSBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYVF1ZXJ5RXZhbHVhdG9yOyB9CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSog
b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVE
b2N1bWVudEVsZW1lbnRTdHlsZTsgfQotICAgIHZvaWQgc2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1l
bnRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgbV9vdmVycmlkZURvY3VtZW50RWxl
bWVudFN0eWxlID0gc3R5bGU7IH0KLQogICAgIHZvaWQgYWRkQ3VycmVudFNWR0ZvbnRGYWNlUnVs
ZXMoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFt
ZShjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgY29uc3QgU3R5bGVSdWxlS2V5ZnJhbWUq
LCBLZXlmcmFtZVZhbHVlJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZUZvcktleWZyYW1lKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0
eWxlLCBjb25zdCBSZXNvbHZlckNvbnRleHQmLCBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZSosIEtl
eWZyYW1lVmFsdWUmKTsKICAgICBib29sIGlzQW5pbWF0aW9uTmFtZVZhbGlkKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGdpdmUgYmFjayB0aGUgc2V0IG9mIHJ1
bGVzIHRoYXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVtZW50IChvciBhIHBzZXVkby1lbGVtZW50
KS4KQEAgLTE2NCw4ICsxNjgsNiBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1l
bnQ7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0
eWxlIHsgbnVsbHB0ciB9OwotCiAgICAgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyBtX2luc3BlY3Rv
ckNTU09NV3JhcHBlcnM7CiAKICAgICBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgbV9tYXRjaGVk
RGVjbGFyYXRpb25zQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHAKaW5kZXggMGNlNTZkOTc0OGIzZGE1YjdlNWY1MDdlZjRkMWM2YTk1Y2RiN2EwYS4uOWY2
YTE4NmIyMWI2OTRmNzY1MjNkYmE4ZTIzZjcyZTdmZDFiMzY5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtODgsMTUgKzg4LDEyIEBAIFRyZWVSZXNv
bHZlcjo6U2NvcGU6OlNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFNjb3BlJiBlbmNsb3Np
bmdTY29wZSkKICAgICAsIHNoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpCiAgICAgLCBlbmNsb3NpbmdT
Y29wZSgmZW5jbG9zaW5nU2NvcGUpCiB7Ci0gICAgcmVzb2x2ZXItPnNldE92ZXJyaWRlRG9jdW1l
bnRFbGVtZW50U3R5bGUoZW5jbG9zaW5nU2NvcGUucmVzb2x2ZXItPm92ZXJyaWRlRG9jdW1lbnRF
bGVtZW50U3R5bGUoKSk7CiB9CiAKIFRyZWVSZXNvbHZlcjo6U2NvcGU6On5TY29wZSgpCiB7CiAg
ICAgaWYgKCFzaGFkb3dSb290KQogICAgICAgICByZXNvbHZlci0+ZG9jdW1lbnQoKS5zZXRJc1Jl
c29sdmluZ1RyZWVTdHlsZShmYWxzZSk7Ci0KLSAgICByZXNvbHZlci0+c2V0T3ZlcnJpZGVEb2N1
bWVudEVsZW1lbnRTdHlsZShudWxscHRyKTsKIH0KIAogVHJlZVJlc29sdmVyOjpQYXJlbnQ6OlBh
cmVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xNDYsNyArMTQzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yU3R5bGVhYmxlKGNvbnN0IFN0
eWxlYWJsZSYgc3QKICAgICBpZiAoYXV0byBzdHlsZSA9IHNjb3BlKCkuc2hhcmluZ1Jlc29sdmVy
LnJlc29sdmUoc3R5bGVhYmxlLCAqbV91cGRhdGUpKQogICAgICAgICByZXR1cm4gc3R5bGU7CiAK
LSAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnN0eWxlRm9yRWxlbWVu
dChlbGVtZW50LCAmaW5oZXJpdGVkU3R5bGUsIHBhcmVudEJveFN0eWxlKCksIFJ1bGVNYXRjaGlu
Z0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzLCAmc2NvcGUoKS5zZWxlY3RvckZpbHRlcik7CisgICAg
YXV0byBlbGVtZW50U3R5bGUgPSBzY29wZSgpLnJlc29sdmVyLT5zdHlsZUZvckVsZW1lbnQoZWxl
bWVudCwgcmVzb2x2ZXJDb250ZXh0KGluaGVyaXRlZFN0eWxlKSk7CiAKICAgICBpZiAoZWxlbWVu
dFN0eWxlLnJlbGF0aW9ucykKICAgICAgICAgY29tbWl0UmVsYXRpb25zKFdURk1vdmUoZWxlbWVu
dFN0eWxlLnJlbGF0aW9ucyksICptX3VwZGF0ZSk7CkBAIC0yMjMsMTIgKzIyMCwxMSBAQCBFbGVt
ZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgICAgIG1fZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoTm9uRmluYWxTdHlsZSgpOwogICAg
IH0KIAotICAgIGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1v
dmUobmV3U3R5bGUpLCBzdHlsZWFibGUsIHBhcmVudCgpLmNoYW5nZSwgcGFyZW50KCkuc3R5bGUs
IHBhcmVudEJveFN0eWxlKCkpOworICAgIGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVt
ZW50VXBkYXRlKFdURk1vdmUobmV3U3R5bGUpLCBzdHlsZWFibGUsIHBhcmVudCgpLmNoYW5nZSwg
cmVzb2x2ZXJDb250ZXh0KHBhcmVudCgpLnN0eWxlKSk7CiAgICAgYXV0byBkZXNjZW5kYW50c1Rv
UmVzb2x2ZSA9IGNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZSh1cGRhdGUuY2hhbmdlLCBlbGVt
ZW50LnN0eWxlVmFsaWRpdHkoKSwgcGFyZW50KCkuZGVzY2VuZGFudHNUb1Jlc29sdmUpOwogCiAg
ICAgaWYgKCZlbGVtZW50ID09IG1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpIHsKICAgICAg
ICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRl
LnN0eWxlKTsKLSAgICAgICAgc2NvcGUoKS5yZXNvbHZlci0+c2V0T3ZlcnJpZGVEb2N1bWVudEVs
ZW1lbnRTdHlsZShtX2RvY3VtZW50RWxlbWVudFN0eWxlLmdldCgpKTsKIAogICAgICAgICBpZiAo
IWV4aXN0aW5nU3R5bGUgfHwgZXhpc3RpbmdTdHlsZS0+Y29tcHV0ZWRGb250UGl4ZWxTaXplKCkg
IT0gdXBkYXRlLnN0eWxlLT5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSkgewogICAgICAgICAgICAg
Ly8gInJlbSIgdW5pdHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBkb2N1bWVudCBlbGVtZW50J3MgZm9u
dCBzaXplIHNvIHdlIG5lZWQgdG8gcmVjb21wdXRlIGV2ZXJ5dGhpbmcuCkBAIC0yODYsMTAgKzI4
Miw5IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZl
UHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwKICAgICBpZiAoIWVsZW1lbnRVcGRhdGUuc3R5
bGUtPmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IGF1dG8mIHBhcmVudFN0eWxlID0gKmVsZW1lbnRVcGRhdGUuc3R5bGU7Ci0gICAgYXV0byogcGFy
ZW50Qm94U3R5bGUgPSBwYXJlbnRCb3hTdHlsZUZvclBzZXVkbyhlbGVtZW50VXBkYXRlKTsKKyAg
ICBhdXRvIHJlc29sdmVyQ29udGV4dCA9IHJlc29sdmVyQ29udGV4dEZvclBzZXVkb0VsZW1lbnQo
ZWxlbWVudFVwZGF0ZSk7CiAKLSAgICBhdXRvIHBzZXVkb1N0eWxlID0gc2NvcGUoKS5yZXNvbHZl
ci0+cHNldWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcHNldWRvSWQgfSwgcGFyZW50U3R5
bGUsIHBhcmVudEJveFN0eWxlLCAmc2NvcGUoKS5zZWxlY3RvckZpbHRlcik7CisgICAgYXV0byBw
c2V1ZG9TdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVt
ZW50LCB7IHBzZXVkb0lkIH0sIHJlc29sdmVyQ29udGV4dCk7CiAgICAgaWYgKCFwc2V1ZG9TdHls
ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMjk3LDcgKzI5Miw3IEBAIHN0ZDo6b3B0aW9u
YWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVu
dCYgZWxlbWVudCwKICAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVk
b1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIHJldHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHls
ZSksIHsgZWxlbWVudCwgcHNldWRvSWQgfSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UsIHBhcmVudFN0
eWxlLCBwYXJlbnRCb3hTdHlsZSk7CisgICAgcmV0dXJuIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVw
ZGF0ZShXVEZNb3ZlKHBzZXVkb1N0eWxlKSwgeyBlbGVtZW50LCBwc2V1ZG9JZCB9LCBlbGVtZW50
VXBkYXRlLmNoYW5nZSwgcmVzb2x2ZXJDb250ZXh0KTsKIH0KIAogY29uc3QgUmVuZGVyU3R5bGUq
IFRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUoKSBjb25zdApAQCAtMzE0LDcgKzMwOSw3IEBA
IGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlKCkgY29uc3QK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNvbHZl
cjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG8oY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVw
ZGF0ZSkgY29uc3QKK2NvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0
eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKSBj
b25zdAogewogICAgIHN3aXRjaCAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpKSB7CiAg
ICAgY2FzZSBEaXNwbGF5VHlwZTo6Tm9uZToKQEAgLTMyNiw3ICszMjEsMjcgQEAgY29uc3QgUmVu
ZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG8oY29uc3QgRWxl
bWVudFVwZGF0ZSYgZWwKICAgICB9CiB9CiAKLUVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpj
cmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBu
ZXdTdHlsZSwgY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIENoYW5nZSBwYXJlbnRDaGFuZ2Us
IGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVu
dEJveFN0eWxlKQorUmVzb2x2ZXJDb250ZXh0IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZXJDb250ZXh0
KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKK3sKKyAgICByZXR1cm4geworICAgICAg
ICAmcGFyZW50U3R5bGUsCisgICAgICAgIHBhcmVudEJveFN0eWxlKCksCisgICAgICAgIG1fZG9j
dW1lbnRFbGVtZW50U3R5bGUuZ2V0KCksCisgICAgICAgICZzY29wZSgpLnNlbGVjdG9yRmlsdGVy
CisgICAgfTsKK30KKworUmVzb2x2ZXJDb250ZXh0IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZXJDb250
ZXh0Rm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKQor
eworICAgIHJldHVybiB7CisgICAgICAgIGVsZW1lbnRVcGRhdGUuc3R5bGUuZ2V0KCksCisgICAg
ICAgIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChlbGVtZW50VXBkYXRlKSwKKyAgICAg
ICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZS5nZXQoKSwKKyAgICAgICAgJnNjb3BlKCkuc2VsZWN0
b3JGaWx0ZXIKKyAgICB9OworfQorCitFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRl
QW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbmV3U3R5
bGUsIGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDaGFuZ2UgcGFyZW50Q2hhbmdlLCBjb25z
dCBSZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCkKIHsKICAgICBhdXRvJiBlbGVtZW50
ID0gc3R5bGVhYmxlLmVsZW1lbnQ7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBlbGVtZW50LmRvY3Vt
ZW50KCk7CkBAIC0zNDUsNyArMzYwLDcgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNy
ZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3QKICAgICAg
ICAgLy8gdG8gdXNlIENTUyBBbmltYXRpb25zIGFzIGRlZmluZWQgaW4gdGhlIHByZXZpb3VzIHN0
eWxlIGNoYW5nZSBldmVudC4gQXMgc3VjaCwgd2UgdXBkYXRlIENTUyBBbmltYXRpb25zIGFmdGVy
IENTUyBUcmFuc2l0aW9ucwogICAgICAgICAvLyBzdWNoIHRoYXQgd2hlbiBDU1MgVHJhbnNpdGlv
bnMgYXJlIHVwZGF0ZWQgdGhlIENTUyBBbmltYXRpb25zIGRhdGEgaXMgdGhlIHNhbWUgYXMgZHVy
aW5nIHRoZSBwcmV2aW91cyBzdHlsZSBjaGFuZ2UgZXZlbnQuCiAgICAgICAgIGlmICgob2xkU3R5
bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgfHwgbmV3U3R5bGUtPmhhc0FuaW1hdGlv
bnMoKSkKLSAgICAgICAgICAgIHN0eWxlYWJsZS51cGRhdGVDU1NBbmltYXRpb25zKG9sZFN0eWxl
LCAqbmV3U3R5bGUsICZwYXJlbnRTdHlsZSk7CisgICAgICAgICAgICBzdHlsZWFibGUudXBkYXRl
Q1NTQW5pbWF0aW9ucyhvbGRTdHlsZSwgKm5ld1N0eWxlLCByZXNvbHZlckNvbnRleHQpOwogICAg
IH0KIAogICAgIC8vIE5vdyB3ZSBjYW4gdXBkYXRlIGFsbCBXZWIgYW5pbWF0aW9ucywgd2hpY2gg
d2lsbCBpbmNsdWRlIENTUyBBbmltYXRpb25zIGFzIHdlbGwKQEAgLTM1NiwxMCArMzcxLDEwIEBA
IEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0CiAgICAgICAgIHN0eWxlYWJsZS5zZXRMYXN0U3R5bGVD
aGFuZ2VFdmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbmV3U3R5bGUpKTsKICAgICAg
ICAgLy8gQXBwbHkgYWxsIGtleWZyYW1lIGVmZmVjdHMgdG8gdGhlIG5ldyBzdHlsZS4KICAgICAg
ICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpuZXdTdHlsZSk7
Ci0gICAgICAgIGFuaW1hdGlvbkltcGFjdCA9IHN0eWxlYWJsZS5hcHBseUtleWZyYW1lRWZmZWN0
cygqYW5pbWF0ZWRTdHlsZSwgKnByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgJnBh
cmVudFN0eWxlKTsKKyAgICAgICAgYW5pbWF0aW9uSW1wYWN0ID0gc3R5bGVhYmxlLmFwcGx5S2V5
ZnJhbWVFZmZlY3RzKCphbmltYXRlZFN0eWxlLCAqcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVu
dFN0eWxlLCByZXNvbHZlckNvbnRleHQpOwogICAgICAgICBuZXdTdHlsZSA9IFdURk1vdmUoYW5p
bWF0ZWRTdHlsZSk7CiAKLSAgICAgICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQsIHBhcmVu
dFN0eWxlLCBwYXJlbnRCb3hTdHlsZSwgc3R5bGVhYmxlLnBzZXVkb0lkID09IFBzZXVkb0lkOjpO
b25lID8gJmVsZW1lbnQgOiBudWxscHRyKTsKKyAgICAgICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9j
dW1lbnQsICpyZXNvbHZlckNvbnRleHQucGFyZW50U3R5bGUsIHJlc29sdmVyQ29udGV4dC5wYXJl
bnRCb3hTdHlsZSwgc3R5bGVhYmxlLnBzZXVkb0lkID09IFBzZXVkb0lkOjpOb25lID8gJmVsZW1l
bnQgOiBudWxscHRyKTsKICAgICAgICAgYWRqdXN0ZXIuYWRqdXN0QW5pbWF0ZWRTdHlsZSgqbmV3
U3R5bGUsIGFuaW1hdGlvbkltcGFjdCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHN0eWxlYWJsZS5z
ZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggZjI1ZDIyZDI0NDQ5MTAzYTQzNDVjODg5MWRjNTdi
OWFkMDVmYWFlYy4uZWRiZjMzMjNiZTQyODliYjQzZDY2OGE1ZDA4ZTQxZWIxMTY3YjcyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCkBAIC00NSw2ICs0NSw3IEBA
IGNsYXNzIFNoYWRvd1Jvb3Q7CiBuYW1lc3BhY2UgU3R5bGUgewogCiBjbGFzcyBSZXNvbHZlcjsK
K3N0cnVjdCBSZXNvbHZlckNvbnRleHQ7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFRyZWVSZXNvbHZlclNjb3BlKTsKIGNsYXNzIFRyZWVSZXNvbHZlciB7CkBAIC02
MSw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICBFbGVtZW50VXBkYXRlcyByZXNvbHZlRWxlbWVu
dChFbGVtZW50Jik7CiAKLSAgICBzdGF0aWMgRWxlbWVudFVwZGF0ZSBjcmVhdGVBbmltYXRlZEVs
ZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgU3R5bGVhYmxl
JiwgQ2hhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRCb3hTdHlsZSk7CisgICAgc3RhdGljIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5p
bWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFN0
eWxlYWJsZSYsIENoYW5nZSwgY29uc3QgUmVzb2x2ZXJDb250ZXh0Jik7CiAgICAgc3RkOjpvcHRp
b25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVs
ZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAKICAgICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3VudGVk
PFNjb3BlPiB7CkBAIC0xMDAsNyArMTAxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvcFBhcmVu
dHNUb0RlcHRoKHVuc2lnbmVkIGRlcHRoKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRCb3hTdHlsZSgpIGNvbnN0OwotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHls
ZUZvclBzZXVkbyhjb25zdCBFbGVtZW50VXBkYXRlJikgY29uc3Q7CisgICAgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRl
JikgY29uc3Q7CisgICAgUmVzb2x2ZXJDb250ZXh0IHJlc29sdmVyQ29udGV4dChjb25zdCBSZW5k
ZXJTdHlsZSYgcGFyZW50U3R5bGUpOworICAgIFJlc29sdmVyQ29udGV4dCByZXNvbHZlckNvbnRl
eHRGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUmKTsKIAogICAgIERvY3VtZW50
JiBtX2RvY3VtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV9kb2N1bWVu
dEVsZW1lbnRTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCmluZGV4IGNmYjA3NmZk
NTQ0ZTg5OWMwODJiNGJlMDNhYzA4NWZlYjlmNTY0NjkuLjE0MzFhMjBjNWJhZjc1MmIwMjhhMzg0
YTQ2MTY2YmQxYzliZWNhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcApAQCAtMjEx
LDcgKzIxMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHls
ZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpIGNvbnN0Cit2b2lkIFN0eWxlYWJsZTo6dXBkYXRl
Q1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlckNvbnRleHQmIHJlc29sdmVy
Q29udGV4dCkgY29uc3QKIHsKICAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZW5zdXJl
S2V5ZnJhbWVFZmZlY3RTdGFjaygpOwogCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBTdHlsZWFi
bGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwg
Y29uc3QgUmVuZGUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFmb3VuZE1hdGNo
aW5nQW5pbWF0aW9uKQotICAgICAgICAgICAgICAgIG5ld0FuaW1hdGlvbnMuYWRkKENTU0FuaW1h
dGlvbjo6Y3JlYXRlKCp0aGlzLCBjdXJyZW50QW5pbWF0aW9uLCBjdXJyZW50U3R5bGUsIG5ld1N0
eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUpKTsKKyAgICAgICAgICAgICAgICBuZXdBbmltYXRpb25z
LmFkZChDU1NBbmltYXRpb246OmNyZWF0ZSgqdGhpcywgY3VycmVudEFuaW1hdGlvbiwgY3VycmVu
dFN0eWxlLCBuZXdTdHlsZSwgcmVzb2x2ZXJDb250ZXh0KSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0
eWxlYWJsZUFuZFByb3BlcnR5KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYgogICAgICAgICAgICAg
Ly8gSWYgYSB0cmFuc2l0aW9uIGhhcyBub3QgeWV0IHN0YXJ0ZWQgb3Igc3RhcnRlZCB3aGVuIGFu
aW1hdGlvbnMgd2VyZSBsYXN0IHVwZGF0ZWQsIHVzZSB0aGUgdGltZWxpbmUgdGltZSBhdCBpdHMg
Y3JlYXRpb24KICAgICAgICAgICAgIC8vIGFzIGl0cyBzdGFydCB0aW1lIHRvIGVuc3VyZSB0aGF0
IGl0IHdpbGwgcHJvZHVjZSBhIHN0eWxlIHdpdGggcHJvZ3Jlc3MgPiAwLgogICAgICAgICAgICAg
Ym9vbCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID0gaXM8Q1NTVHJhbnNpdGlvbj4o
YW5pbWF0aW9uKSAmJiAoIWFuaW1hdGlvbi0+c3RhcnRUaW1lKCkgfHwgKmFuaW1hdGlvbi0+c3Rh
cnRUaW1lKCkgPT0gc3R5bGVhYmxlLmVsZW1lbnQuZG9jdW1lbnQoKS50aW1lbGluZSgpLmN1cnJl
bnRUaW1lKCkpOwotICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUs
IG51bGxwdHIsIHNob3VsZFVzZVRpbWVsaW5lVGltZUF0Q3JlYXRpb24gPyBkb3duY2FzdDxDU1NU
cmFuc2l0aW9uPigqYW5pbWF0aW9uKS50aW1lbGluZVRpbWVBdENyZWF0aW9uKCkgOiBzdGQ6Om51
bGxvcHQpOworICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUsIHsg
bnVsbHB0ciB9LCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID8gZG93bmNhc3Q8Q1NT
VHJhbnNpdGlvbj4oKmFuaW1hdGlvbikudGltZWxpbmVUaW1lQXRDcmVhdGlvbigpIDogc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybiBhbmltYXRlZFN0eWxlOwogICAgICAgICB9CiAK
QEAgLTQwOCw3ICs0MDgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0
eWxlYWJsZUFuZFByb3BlcnR5KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYgogICAgIGF1dG8gYWZ0
ZXJDaGFuZ2VTdHlsZSA9IFsmXSgpIC0+IGNvbnN0IFJlbmRlclN0eWxlIHsKICAgICAgICAgaWYg
KGlzPENTU0FuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBhbmltYXRpb24tPmlzUmVsZXZhbnQoKSkg
ewogICAgICAgICAgICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKG5l
d1N0eWxlKTsKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCBu
dWxscHRyKTsKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCB7
IG51bGxwdHIgfSk7CiAgICAgICAgICAgICByZXR1cm4gYW5pbWF0ZWRTdHlsZTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCmluZGV4IDIzYzhhZmFjOTBjNDZkNGQxZjIxM2Jj
YWFkMDEwNDY2ZGNhNGFiNWMuLjQxN2FiZmVhZjc5NGRiM2UyYTZlMjQwZDMyZDMyM2Y3MjNhODU1
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCkBAIC04NSw5ICs4NSw5IEBAIHN0cnVjdCBT
dHlsZWFibGUgewogICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMocHNl
dWRvSWQpOwogICAgIH0KIAotICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5
ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUm
IHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEVsZW1lbnRTdHlsZSkgY29uc3QKKyAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBh
cHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIGNvbnN0IFN0eWxlOjpS
ZXNvbHZlckNvbnRleHQmIHJlc29sdmVyQ29udGV4dCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBlbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2socHNldWRvSWQpLmFwcGx5S2V5
ZnJhbWVFZmZlY3RzKHRhcmdldFN0eWxlLCBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5
bGUsIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgICAgIHJldHVybiBlbGVtZW50LmVuc3VyZUtl
eWZyYW1lRWZmZWN0U3RhY2socHNldWRvSWQpLmFwcGx5S2V5ZnJhbWVFZmZlY3RzKHRhcmdldFN0
eWxlLCBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIHJlc29sdmVyQ29udGV4dCk7
CiAgICAgfQogCiAgICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucygpIGNv
bnN0CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RydWN0IFN0eWxlYWJsZSB7CiAKICAgICB2b2lkIHJl
bW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudChXZWJBbmlt
YXRpb24mKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5k
ZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkgY29uc3Q7CisgICAgdm9p
ZCB1cGRhdGVDU1NBbmltYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZXJD
b250ZXh0JikgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9ucyhjb25zdCBSZW5k
ZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIGNvbnN0
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDc5YzFl
OGMyZjJkNjE2ODMxOTMzZTM4MTdiYzI5MmVlNWYwZTQ1MWEuLjYyNzJmZTNmOTZlOTFjOWMzYjJk
OGQ1OTQwMTY2OWFmMzg2NTY0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVE
YXRhLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIGlmICghbV9vdmVycmlkZUNvbXB1dGVkU3R5bGUgfHwgbV9uZWVkc092ZXJy
aWRlQ29tcHV0ZWRTdHlsZVVwZGF0ZSkgewogICAgICAgICAgICAgLy8gVGhlIHN0eWxlIGNvbXB1
dGVkIGhlcmUgY29udGFpbnMgbm8gQ1NTIEFuaW1hdGlvbnMvVHJhbnNpdGlvbnMgb3IgU01JTCBp
bmR1Y2VkIHJ1bGVzIC0gdGhpcyBpcyBuZWVkZWQgdG8gY29tcHV0ZSB0aGUgImJhc2UgdmFsdWUi
IGZvciB0aGUgU01JTCBhbmltYXRpb24gc2FuZHdoaWNoIG1vZGVsLgotICAgICAgICAgICAgbV9v
dmVycmlkZUNvbXB1dGVkU3R5bGUgPSBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVs
ZW1lbnQoZWxlbWVudCwgcGFyZW50U3R5bGUsIG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9y
OjpNYXRjaEFsbFJ1bGVzRXhjbHVkaW5nU01JTCkucmVuZGVyU3R5bGU7CisgICAgICAgICAgICBt
X292ZXJyaWRlQ29tcHV0ZWRTdHlsZSA9IGVsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnN0eWxlRm9y
RWxlbWVudChlbGVtZW50LCB7IHBhcmVudFN0eWxlIH0sIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpN
YXRjaEFsbFJ1bGVzRXhjbHVkaW5nU01JTCkucmVuZGVyU3R5bGU7CiAgICAgICAgICAgICBtX25l
ZWRzT3ZlcnJpZGVDb21wdXRlZFN0eWxlVXBkYXRlID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgQVNTRVJUKG1fb3ZlcnJpZGVDb21wdXRlZFN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCAxODdhZTE4ZDlhMGMyYzZiMDQyMDI2NzhiYzAwOWEwYTAxODFlZjg2
Li4zZDE4OGU2NzY0MTVhNDFmMzFmZjc1NWE1ZjlkZmE3MzRhNzRkMjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MDE4LDcgKzYwMTgsNyBAQCBTdHJpbmcgSW50ZXJu
YWxzOjpoaWdobGlnaHRQc2V1ZG9FbGVtZW50Q29sb3IoY29uc3QgU3RyaW5nJiBoaWdobGlnaHRO
YW1lLCBFbGVtZQogICAgIGlmICghcGFyZW50U3R5bGUpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBhdXRvIHN0eWxlID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxl
bWVudCwgeyBQc2V1ZG9JZDo6SGlnaGxpZ2h0LCBoaWdobGlnaHROYW1lIH0sICpwYXJlbnRTdHls
ZSk7CisgICAgYXV0byBzdHlsZSA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVGb3JFbGVtZW50
KGVsZW1lbnQsIHsgUHNldWRvSWQ6OkhpZ2hsaWdodCwgaGlnaGxpZ2h0TmFtZSB9LCB7IHBhcmVu
dFN0eWxlIH0pOwogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiB7IH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442152</attachid>
            <date>2021-10-22 05:36:16 -0700</date>
            <delta_ts>2021-10-22 08:34:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232137-20211022153615.patch</filename>
            <type>text/plain</type>
            <size>76065</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI2NmIxMmUxYmI2YTQx
YjhkMDJjMGUzZmU2MmUxMmYwODQzZGFjNS4uNWUzYjFhMGVlMGRiMDU2ZDhmODJhMDQzMmRjZjUy
MzFhNDg3YWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMS0xMC0yMiAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHN0eWxlIHJl
c29sdmVyIGNvbnRleHQgYXJndW1lbnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjEzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQg
c3RydWN0IGFuZCB1c2UgaXQgdG8gY29uc2lzdGVudGx5IHBhc3MgYXJvdW5kIGFsbCBjb250ZXh0
IGFyZ3VtZW50IG5lZWRlZAorICAgICAgICBmb3IgcmVzb2x2aW5nIHN0eWxlIGluc3RlYWQgb2Yg
anVzdCBwYXNzaW5nIGFyb3VuZCBpbmRpdmlkdWFsIGFyZ3VtZW50cyBhcyBzZXBhcmF0ZSBmdW5j
dGlvbiBwYXJhbWV0ZXIuCisKKyAgICAgICAgQW4gaW1tZWRpYXRlbHkgYmVuZWZpdCBpcyB0aGF0
IHdlIGNhbiByZW1vdmUgdGhlIHN0YXRlZnVsIHNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5
bGUgaGFjay4KKyAgICAgICAgVGhpcyBhbHNvIG1ha2VzIHRoZSBzdHlsZSBzeXN0ZW0gbW9yZSBm
bGV4aWJsZSBhbmQgZXh0ZW5zaWJsZSBmb3IgZnV0dXJlIHdvcmsuCisKKyAgICAgICAgTW9zdCBv
ZiB0aGUgcGF0Y2ggaXMgbWVjaGFuaWNhbGx5IHJlcGxhY2luZyBhIHBhcmVudCBzdHlsZSBhcmd1
bWVudCBpbiB2YXJpb3VzIHBsYWNlcyB3aXRoIGEgY29udGV4dAorICAgICAgICBzdHJ1Y3QgYXJn
dW1lbnQuCisKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0Lmg6CisgICAgICAg
ICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NBbmlt
YXRpb246OmNyZWF0ZSk6CisgICAgICAgICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oOgorICAg
ICAgICAqIGFuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1RyYW5zaXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUcmFuc2l0aW9uOjpy
ZXNvbHZlKToKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oOgorICAgICAgICAq
IGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogYW5pbWF0aW9uL0Rl
Y2xhcmF0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp1cGRhdGVCbGVuZGluZ0tl
eWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZURlY2xh
cmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZnJhbWVFZmZlY3Q6OmNvbXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUpOgorICAgICAgICAq
IGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0U3RhY2s6
OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKToKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3RTdGFjay5oOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0
aW9uLmg6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUXVlcnlNYXRjaGVyOjpkb2N1bWVudEVsZW1lbnRVc2VyQWdlbnRTdHlsZSBj
b25zdCk6CisgICAgICAgICogY3NzL1N0eWxlTWVkaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVNZWRpYTo6bWF0Y2hNZWRpdW0gY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQ
ZW5kaW5nU3R5bGVzaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
aXRsZUVsZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lRmllbGRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L0RhdGVUaW1lRmllbGRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJDb250YWluZXI6
OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVy
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpjb21wdXRlRmlyc3RMaW5l
U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0VW5jYWNo
ZWRQc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1l
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6OmZpbGxJbXBsaWNpdEtl
eWZyYW1lcyk6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OlJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpSZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKiBzdHls
ZS9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6Om92
ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpzZXRPdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6U2NvcGU6On5TY29wZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpzdHlsZUZvclN0eWxlYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6bWFrZVJlc29sdmVDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6Om1ha2VSZXNvbHZlQ29udGV4
dEZvclBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZl
cjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZUZvclBz
ZXVkbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
aDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZWFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVhYmxlOjp1cGRhdGVDU1NBbmltYXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnVw
ZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjphcHBseUtleWZy
YW1lRWZmZWN0cyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6b3ZlcnJpZGVDb21wdXRlZFN0eWxl
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmhpZ2hsaWdodFBzZXVkb0VsZW1lbnRDb2xvcik6CisKIDIwMjEtMTAtMjIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB0ZXh0IGludGVyZmFjZSB3aGVuIGJ1aWxkaW5n
IHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25FZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaApp
bmRleCAyNjUzMjIxM2E3NDU3ZGQwMjU4MDhmMDgwMWMwY2RmMWQyNTAzYTc3Li4zZWM5NjViYTc5
OTllN2E0YWVjYjhhYjBiZjcyMzQzYTJmNmUwY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGlvbkVmZmVjdC5oCkBAIC00Nyw2ICs0NywxMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK25hbWVzcGFjZSBTdHlsZSB7CitzdHJ1Y3QgUmVzb2x2ZUNvbnRleHQ7Cit9CisK
IGNsYXNzIEFuaW1hdGlvbkVmZmVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvbkVmZmVj
dD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBbmltYXRpb25FZmZlY3Q+IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5BbmltYXRpb25FZmZlY3QoKTsKQEAgLTYxLDcgKzY1LDcgQEAgcHVibGljOgog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGJpbmRpbmdzVXBkYXRlVGltaW5nKHN0ZDo6b3B0aW9uYWw8
T3B0aW9uYWxFZmZlY3RUaW1pbmc+KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVUaW1p
bmcoc3RkOjpvcHRpb25hbDxPcHRpb25hbEVmZmVjdFRpbWluZz4pOwogCi0gICAgdmlydHVhbCB2
b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNv
bnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6
Om51bGxvcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgYW5pbWF0aW9uRGlkVGljaygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYW5p
bWF0aW9uRGlkUGxheSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlv
bi5jcHAKaW5kZXggMzEzZjBkYzg0OWU4ZmNmYTVkMTIzMmFjOWUwODg5YzFlMmY2MmVjMi4uZWJh
YjRlOThjZWZhMzQ0YjJlYzg0NmY3NWY3NmU3NGQ1MTNmZjVhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKQEAgLTM2LDEwICszNiwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NBbmltYXRpb24pOwog
Ci1SZWY8Q1NTQW5pbWF0aW9uPiBDU1NBbmltYXRpb246OmNyZWF0ZShjb25zdCBTdHlsZWFibGUm
IG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpCitSZWY8Q1NTQW5pbWF0aW9uPiBDU1NB
bmltYXRpb246OmNyZWF0ZShjb25zdCBTdHlsZWFibGUmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFu
aW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYg
cmVzb2x2ZUNvbnRleHQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU0Fu
aW1hdGlvbihvd25pbmdFbGVtZW50LCBiYWNraW5nQW5pbWF0aW9uKSk7Ci0gICAgcmVzdWx0LT5p
bml0aWFsaXplKG9sZFN0eWxlLCBuZXdTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICBy
ZXN1bHQtPmluaXRpYWxpemUob2xkU3R5bGUsIG5ld1N0eWxlLCByZXNvbHZlQ29udGV4dCk7CiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkFuaW1hdGlvbihyZXN1
bHQuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5p
bWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKaW5kZXgg
NTAzOTk3OGRlMDFjZTdlYTk2YWQ4NzY2NTA1M2QxZDUzMjBkMWEyNi4uMGRlYTMwZTUwYzAxYjc3
M2FkMDQyOGE2MTViODA0YTBlYjhhNThlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NTU0FuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NB
bmltYXRpb24uaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIENT
U0FuaW1hdGlvbiBmaW5hbCA6IHB1YmxpYyBEZWNsYXJhdGl2ZUFuaW1hdGlvbiB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChDU1NBbmltYXRpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8Q1NTQW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgU3R5bGVhYmxlJiwgY29uc3QgQW5pbWF0aW9u
JiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIHN0YXRpYyBS
ZWY8Q1NTQW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgU3R5bGVhYmxlJiwgY29uc3QgQW5pbWF0aW9u
JiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYpOwogICAgIH5DU1NBbmltYXRpb24oKSA9
IGRlZmF1bHQ7CiAKICAgICBib29sIGlzQ1NTQW5pbWF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Ry
YW5zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3Bw
CmluZGV4IDQwYmMzNGQ2YTE0YzBkY2QyZGIzN2FjMGRiNTFhNTYzNjY2NTM1MWUuLjk2N2NmOWQz
NmYyNmY1NTcwYzdkNmUyNTdhODliMDEyMjBiMzhjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPENTU1RyYW5zaXRp
b24+IENTU1RyYW5zaXRpb246OmNyZWF0ZShjb25zdCBTdHlsZWFibGUmIG93bmluZ0VsZW1lbnQs
IENTU1Byb3AKIHsKICAgICBBU1NFUlQob2xkU3R5bGUpOwogICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRSZWYoKm5ldyBDU1NUcmFuc2l0aW9uKG93bmluZ0VsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0
aW9uVGltZSwgYmFja2luZ0FuaW1hdGlvbiwgKm9sZFN0eWxlLCBuZXdTdHlsZSwgcmV2ZXJzaW5n
QWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7Ci0gICAgcmVz
dWx0LT5pbml0aWFsaXplKG9sZFN0eWxlLCBuZXdTdHlsZSwgbnVsbHB0cik7CisgICAgcmVzdWx0
LT5pbml0aWFsaXplKG9sZFN0eWxlLCBuZXdTdHlsZSwgeyBudWxscHRyIH0pOwogICAgIHJlc3Vs
dC0+c2V0VGltaW5nUHJvcGVydGllcyhkZWxheSwgZHVyYXRpb24pOwogCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJBbmltYXRpb24ocmVzdWx0LmdldCgpKTsKQEAg
LTYxLDkgKzYxLDkgQEAgQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFi
bGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwKIHsKIH0KIAotdm9pZCBDU1NU
cmFuc2l0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRp
bWUpCit2b2lkIENTU1RyYW5zaXRpb246OnJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxl
LCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0LCBzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IHN0YXJ0VGltZSkKIHsKLSAgICBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6cmVz
b2x2ZSh0YXJnZXRTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlLCBzdGFydFRpbWUpOworICAgIERl
Y2xhcmF0aXZlQW5pbWF0aW9uOjpyZXNvbHZlKHRhcmdldFN0eWxlLCByZXNvbHZlQ29udGV4dCwg
c3RhcnRUaW1lKTsKICAgICBtX2N1cnJlbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cih0
YXJnZXRTdHlsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9D
U1NUcmFuc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5o
CmluZGV4IDYzZWIzY2EwM2UzYjEyYjkyYTVjZWNmMTQwZWM3MDYzMjEzMDZkMGIuLjc0YmU0Y2M3
NmYyOTIzNjI0OTYxYzE5OTcxMmUxZWIyMDlmYjc5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0NTU1RyYW5zaXRpb24uaApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIENTU1Ry
YW5zaXRpb24oY29uc3QgU3R5bGVhYmxlJiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBn
ZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBy
ZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIGRvdWJsZSk7CiAgICAgdm9pZCBzZXRUaW1pbmdQ
cm9wZXJ0aWVzKFNlY29uZHMgZGVsYXksIFNlY29uZHMgZHVyYXRpb24pOwogICAgIFJlZjxBbmlt
YXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
ZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7Ci0gICAgdm9pZCByZXNvbHZlKFJlbmRlclN0
eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPikgZmluYWw7CisgICAgdm9pZCByZXNvbHZlKFJlbmRlclN0
eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0Jiwgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPikgZmluYWw7CiAKICAgICBDU1NQcm9wZXJ0eUlEIG1fcHJvcGVydHk7CiAg
ICAgTW9ub3RvbmljVGltZSBtX2dlbmVyYXRpb25UaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKaW5kZXggZjE5NjA4ZTA0YWVjM2Ix
MTRmY2JmNDYzZTA3ZTMyNmYxMDlhMWRkNi4uNDhiZDYzMDg0OTAyYWE4YWQ4NzBkZmU5Y2RkNTk2
NjBiNDgyZGMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0
aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRp
dmVBbmltYXRpb24uY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1h
dGlvbjo6c2V0QmFja2luZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRp
b24KICAgICBzeW5jUHJvcGVydGllc1dpdGhCYWNraW5nQW5pbWF0aW9uKCk7CiB9CiAKLXZvaWQg
RGVjbGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRFbGVtZW50U3R5bGUpCit2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFsaXplKGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBj
b25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0KQogewogICAgIC8vIFdl
IG5lZWQgdG8gc3VzcGVuZCBpbnZhbGlkYXRpb24gb2YgdGhlIGFuaW1hdGlvbidzIGtleWZyYW1l
IGVmZmVjdCBkdXJpbmcgaXRzIGNyZWF0aW9uCiAgICAgLy8gYXMgaXQgd291bGQgb3RoZXJ3aXNl
IHRyaWdnZXIgaW52YWxpZGF0aW9uIG9mIHRoZSBkb2N1bWVudCdzIHN0eWxlIGFuZCB0aGlzIHdv
dWxkIGJlCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5p
dGlhbGl6ZShjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclMKIAogICAg
IHNldEVmZmVjdChLZXlmcmFtZUVmZmVjdDo6Y3JlYXRlKCptX293bmluZ0VsZW1lbnQsIG1fb3du
aW5nUHNldWRvSWQpKTsKICAgICBzZXRUaW1lbGluZSgmbV9vd25pbmdFbGVtZW50LT5kb2N1bWVu
dCgpLnRpbWVsaW5lKCkpOwotICAgIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihlZmZlY3QoKSkt
PmNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBu
ZXdTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICBkb3duY2FzdDxLZXlmcmFtZUVmZmVj
dD4oZWZmZWN0KCkpLT5jb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1l
cyhvbGRTdHlsZSwgbmV3U3R5bGUsIHJlc29sdmVDb250ZXh0KTsKICAgICBzeW5jUHJvcGVydGll
c1dpdGhCYWNraW5nQW5pbWF0aW9uKCk7CiAgICAgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5
U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBsYXlpbmcpCiAgICAgICAgIHBsYXkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5k
ZXggODUyNGI3OGQ3NDMxZmE5Nzk3NDYyNzQ5MzZiOTI0NzBmZWMwNDNmNi4uOWE0NDZmZDFjMDYy
YTUwMTA3MjgyYWViZTEzNmFhNzIyMGVmYWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uKGNvbnN0IFN0eWxlYWJsZSYsIGNv
bnN0IEFuaW1hdGlvbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0
eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpOwogICAgIC8vIGVsYXBzZWRUaW1lIGlz
IHRoZSBhbmltYXRpb24ncyBjdXJyZW50IHRpbWUgYXQgdGhlIHRpbWUgdGhlIGV2ZW50IGlzIGFk
ZGVkIGFuZCBpcyBleHBvc2VkIHRocm91Z2ggdGhlIERPTSBBUEksIHRpbWVsaW5lVGltZSBpcyB0
aGUgYW5pbWF0aW9ucycKICAgICAvLyB0aW1lbGluZSBjdXJyZW50IHRpbWUgYW5kIGlzIG5vdCBl
eHBvc2VkIHRocm91Z2ggdGhlIERPTSBBUEkgYnV0IHVzZWQgYnkgdGhlIERvY3VtZW50VGltZWxp
bmUgZm9yIHNvcnRpbmcgZXZlbnRzIGJlZm9yZSBkaXNwYXRjaC4gCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCA2N2I5YWYwYzAxNjg2Zjk4ZDI1YWI2
ODAzNzMxMGY1ZmUxYWRmZTk5Li40MTYyYjc0MmMyZWI2MTM3NDBjYjZmNDljZjhjYTBmYThmYWYy
ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAg
LTgxMiw3ICs4MTIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBLZXlmcmFtZUVmZmVjdDo6cHJvY2Vz
c0tleWZyYW1lcyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbAogICAgIHJldHVybiB7IH07
CiB9CiAKLXZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRl
clN0eWxlJiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5
bGUpCit2b2lkIEtleWZyYW1lRWZmZWN0Ojp1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyhSZW5kZXJT
dHlsZSYgZWxlbWVudFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVD
b250ZXh0KQogewogICAgIGlmICghbV9ibGVuZGluZ0tleWZyYW1lcy5pc0VtcHR5KCkgfHwgIW1f
dGFyZ2V0KQogICAgICAgICByZXR1cm47CkBAIC04MjksNyArODI5LDcgQEAgdm9pZCBLZXlmcmFt
ZUVmZmVjdDo6dXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmIGVsZW1lbnRTdHls
ZSwgY29uc3QgUmUKICAgICAgICAgICAgIGtleWZyYW1lTGlzdC5hZGRQcm9wZXJ0eShzdHlsZVBy
b3BlcnRpZXMtPnByb3BlcnR5QXQoaSkuaWQoKSk7CiAKICAgICAgICAgYXV0byBrZXlmcmFtZVJ1
bGUgPSBTdHlsZVJ1bGVLZXlmcmFtZTo6Y3JlYXRlKFdURk1vdmUoc3R5bGVQcm9wZXJ0aWVzKSk7
Ci0gICAgICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVSZXNvbHZlci5zdHlsZUZvcktl
eWZyYW1lKCptX3RhcmdldCwgJmVsZW1lbnRTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlLCBrZXlm
cmFtZVJ1bGUucHRyKCksIGtleWZyYW1lVmFsdWUpKTsKKyAgICAgICAga2V5ZnJhbWVWYWx1ZS5z
ZXRTdHlsZShzdHlsZVJlc29sdmVyLnN0eWxlRm9yS2V5ZnJhbWUoKm1fdGFyZ2V0LCAmZWxlbWVu
dFN0eWxlLCByZXNvbHZlQ29udGV4dCwga2V5ZnJhbWVSdWxlLnB0cigpLCBrZXlmcmFtZVZhbHVl
KSk7CiAgICAgICAgIGtleWZyYW1lTGlzdC5pbnNlcnQoV1RGTW92ZShrZXlmcmFtZVZhbHVlKSk7
CiAgICAgfQogCkBAIC0xMDAzLDE2ICsxMDAzLDE2IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNo
ZWNrRm9yTWF0Y2hpbmdDb2xvckZpbHRlckZ1bmN0aW9uTGlzdHMoKQogICAgIH0pOwogfQogCi12
b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tl
eWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK3ZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OmNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVz
KGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxl
LCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0KQogewogICAgIEFT
U0VSVChpczxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKCkpKTsKICAgICBpZiAoaXM8
Q1NTQW5pbWF0aW9uPihhbmltYXRpb24oKSkpCi0gICAgICAgIGNvbXB1dGVDU1NBbmltYXRpb25C
bGVuZGluZ0tleWZyYW1lcyhuZXdTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICAgICAg
Y29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG5ld1N0eWxlLCByZXNvbHZlQ29u
dGV4dCk7CiAgICAgZWxzZSBpZiAoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKCkpKQogICAg
ICAgICBjb21wdXRlQ1NTVHJhbnNpdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBuZXdT
dHlsZSk7CiB9CiAKLXZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVDU1NBbmltYXRpb25CbGVu
ZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSYgdW5hbmltYXRlZFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKQordm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29t
cHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmFu
aW1hdGVkU3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYgcmVzb2x2ZUNvbnRleHQp
CiB7CiAgICAgQVNTRVJUKGlzPENTU0FuaW1hdGlvbj4oYW5pbWF0aW9uKCkpKTsKICAgICBBU1NF
UlQoZG9jdW1lbnQoKSk7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0
Ojpjb21wdXRlQ1NTQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3R5bGUm
IHVuYQogCiAgICAgS2V5ZnJhbWVMaXN0IGtleWZyYW1lTGlzdChiYWNraW5nQW5pbWF0aW9uLm5h
bWUoKS5zdHJpbmcpOwogICAgIGlmIChhdXRvKiBzdHlsZVNjb3BlID0gU3R5bGU6OlNjb3BlOjpm
b3JPcmRpbmFsKCptX3RhcmdldCwgYmFja2luZ0FuaW1hdGlvbi5uYW1lU3R5bGVTY29wZU9yZGlu
YWwoKSkpCi0gICAgICAgIHN0eWxlU2NvcGUtPnJlc29sdmVyKCkua2V5ZnJhbWVTdHlsZXNGb3JB
bmltYXRpb24oKm1fdGFyZ2V0LCAmdW5hbmltYXRlZFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUs
IGtleWZyYW1lTGlzdCk7CisgICAgICAgIHN0eWxlU2NvcGUtPnJlc29sdmVyKCkua2V5ZnJhbWVT
dHlsZXNGb3JBbmltYXRpb24oKm1fdGFyZ2V0LCAmdW5hbmltYXRlZFN0eWxlLCByZXNvbHZlQ29u
dGV4dCwga2V5ZnJhbWVMaXN0KTsKIAogICAgIC8vIEVuc3VyZSByZXNvdXJjZSBsb2FkcyBmb3Ig
YWxsIHRoZSBmcmFtZXMuCiAgICAgZm9yIChhdXRvJiBrZXlmcmFtZSA6IGtleWZyYW1lTGlzdC5r
ZXlmcmFtZXMoKSkgewpAQCAtMTI2NiwxMiArMTI2NiwxMiBAQCB2b2lkIEtleWZyYW1lRWZmZWN0
OjpkaWRDaGFuZ2VUYXJnZXRTdHlsZWFibGUoY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHls
ZWFibAogICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSBuZXdUYXJnZXRTdHlsZWFibGUt
PmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMpOwogfQogCi12b2lk
IEtleWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3Rh
cnRUaW1lKQordm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0
eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0LCBzdGQ6Om9w
dGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkKIHsKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0YXJnZXRTdHlsZSwgcGFy
ZW50RWxlbWVudFN0eWxlKTsKKyAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0YXJnZXRTdHls
ZSwgcmVzb2x2ZUNvbnRleHQpOwogCiAgICAgYXV0byBjb21wdXRlZFRpbWluZyA9IGdldENvbXB1
dGVkVGltaW5nKHN0YXJ0VGltZSk7CiAgICAgaWYgKCFzdGFydFRpbWUpIHsKQEAgLTE0MzMsNyAr
MTQzMyw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5
bGUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBkb3ViCiAgICAgLy8gVGhlIGVmZmVjdCB2YWx1
ZSBvZiBhIHNpbmdsZSBwcm9wZXJ0eSByZWZlcmVuY2VkIGJ5IGEga2V5ZnJhbWUgZWZmZWN0IGFz
IG9uZSBvZiBpdHMgdGFyZ2V0IHByb3BlcnRpZXMsCiAgICAgLy8gZm9yIGEgZ2l2ZW4gaXRlcmF0
aW9uIHByb2dyZXNzLCBjdXJyZW50IGl0ZXJhdGlvbiBhbmQgdW5kZXJseWluZyB2YWx1ZSBpcyBj
YWxjdWxhdGVkIGFzIGZvbGxvd3MuCiAKLSAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0YXJn
ZXRTdHlsZSwgbnVsbHB0cik7CisgICAgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXModGFyZ2V0U3R5
bGUsIHsgbnVsbHB0ciB9KTsKICAgICBpZiAobV9ibGVuZGluZ0tleWZyYW1lcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuaAppbmRleCBmNzgxNTM5OTUyNDdhYTE5NTQ1NmVmYjRiNDE5M2RjNDY2NTQzN2NhLi5jYTJk
YmUwODlmMWUwMmI3N2MwZDYzOTQ0ODM2ZWI1YTkzMDgwM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENvbXBvc2l0ZShDb21wb3NpdGVPcGVyYXRpb24gY29tcG9zaXRlT3BlcmF0aW9u
KSB7IG1fY29tcG9zaXRlT3BlcmF0aW9uID0gY29tcG9zaXRlT3BlcmF0aW9uOyB9CiAKICAgICB2
b2lkIGdldEFuaW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0
ZWRTdHlsZSk7Ci0gICAgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
PSBzdGQ6Om51bGxvcHQpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHkoUmVuZGVyU3R5bGUmIHRh
cmdldFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+ID0gc3RkOjpudWxsb3B0KSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGUoKSBv
dmVycmlkZTsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFRpY2soKSBmaW5hbDsKICAgICB2b2lkIGFu
aW1hdGlvbkRpZFBsYXkoKSBmaW5hbDsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICBib29sIGNvbG9yRmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9jb2xvckZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaDsgfQogCi0gICAgdm9p
ZCBjb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgdm9pZCBjb21wdXRlRGVjbGFyYXRp
dmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0
Jik7CiAgICAgY29uc3QgS2V5ZnJhbWVMaXN0JiBibGVuZGluZ0tleWZyYW1lcygpIGNvbnN0IHsg
cmV0dXJuIG1fYmxlbmRpbmdLZXlmcmFtZXM7IH0KICAgICBjb25zdCBIYXNoU2V0PENTU1Byb3Bl
cnR5SUQ+JiBhbmltYXRlZFByb3BlcnRpZXMoKTsKICAgICBib29sIGFuaW1hdGVzUHJvcGVydHko
Q1NTUHJvcGVydHlJRCkgY29uc3Q7CkBAIC0xOTgsOCArMTk4LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBhY3QoKTsKICAgICB2b2lkIGNvbXB1dGVTb21l
S2V5ZnJhbWVzVXNlU3RlcHNUaW1pbmdGdW5jdGlvbigpOwogICAgIHZvaWQgY2xlYXJCbGVuZGlu
Z0tleWZyYW1lcygpOwotICAgIHZvaWQgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5
bGUmIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSk7
Ci0gICAgdm9pZCBjb21wdXRlQ1NTQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVu
ZGVyU3R5bGUmIHVuYW5pbWF0ZWRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1l
bnRTdHlsZSk7CisgICAgdm9pZCB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyhSZW5kZXJTdHlsZSYg
ZWxlbWVudFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmKTsKKyAgICB2b2lkIGNv
bXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSYgdW5h
bmltYXRlZFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmKTsKICAgICB2b2lkIGNv
bXB1dGVDU1NUcmFuc2l0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpOwogICAgIHZvaWQgY29tcHV0ZUFj
Y2VsZXJhdGVkUHJvcGVydGllc1N0YXRlKCk7CiAgICAgdm9pZCBzZXRCbGVuZGluZ0tleWZyYW1l
cyhLZXlmcmFtZUxpc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdFN0YWNrLmNwcAppbmRleCBiOGE4ZmE4OTg5MGVlYjU1OTk4OTllMWY3NmNiZmNkNGY4
NDM1ZWUxLi44NGJkZDNlNTQzZTkxYWIyNjRkZGY3NGNlYmVlNWRjYjBmODlmZGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdFN0YWNrOjpzZXRDU1NBbmltYXRpb25M
aXN0KFJlZlB0cjxjb25zdCBBbmltYXRpb25MaXN0PiYmIGNzc0EKICAgICBtX2lzU29ydGVkID0g
ZmFsc2U7CiB9CiAKLU9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEtleWZyYW1lRWZmZWN0U3Rh
Y2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK09wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+
IEtleWZyYW1lRWZmZWN0U3RhY2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0
YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZl
bnRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiByZXNvbHZlQ29udGV4dCkKIHsK
ICAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBpbXBhY3Q7CiAKQEAgLTEzNCw3ICsxMzQs
NyBAQCBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBLZXlmcmFtZUVmZmVjdFN0YWNrOjphcHBs
eUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBlZmZl
Y3QgOiBzb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAgICAgQVNTRVJUKGVmZmVjdC0+YW5pbWF0aW9u
KCkpOwotICAgICAgICBlZmZlY3QtPmFuaW1hdGlvbigpLT5yZXNvbHZlKHRhcmdldFN0eWxlLCBw
YXJlbnRFbGVtZW50U3R5bGUpOworICAgICAgICBlZmZlY3QtPmFuaW1hdGlvbigpLT5yZXNvbHZl
KHRhcmdldFN0eWxlLCByZXNvbHZlQ29udGV4dCk7CiAKICAgICAgICAgaWYgKGVmZmVjdC0+aXNS
dW5uaW5nQWNjZWxlcmF0ZWQoKSB8fCBlZmZlY3QtPmlzQWJvdXRUb1J1bkFjY2VsZXJhdGVkKCkp
CiAgICAgICAgICAgICBpbXBhY3QuYWRkKEFuaW1hdGlvbkltcGFjdDo6UmVxdWlyZXNSZWNvbXBv
c2l0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3RTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2su
aAppbmRleCA1ZGFiNGM3MmVlYjc1ZDViZmQxZWQ3MzYxNTI5Y2ZiZDQ0NjhhMTEwLi45MjY1MDI3
N2JhZWEwNzllZWE3YmI5YWM2ODIxYzZkNzdjZDdiMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmgKQEAgLTM2LDYgKzM2LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtleWZyYW1lRWZmZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7
CiAKK25hbWVzcGFjZSBTdHlsZSB7CitzdHJ1Y3QgUmVzb2x2ZUNvbnRleHQ7Cit9CisKIGNsYXNz
IEtleWZyYW1lRWZmZWN0U3RhY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgpAQCAtNTAsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDU1NBbmltYXRpb25M
aXN0KFJlZlB0cjxjb25zdCBBbmltYXRpb25MaXN0PiYmKTsKICAgICBib29sIGlzQ3VycmVudGx5
QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJl
c1BzZXVkb0VsZW1lbnQoKSBjb25zdDsKLSAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBh
cHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+
IGFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgU3R5bGU6
OlJlc29sdmVDb250ZXh0Jik7CiAgICAgYm9vbCBoYXNFZmZlY3RXaXRoSW1wbGljaXRLZXlmcmFt
ZXMoKSBjb25zdDsKIAogICAgIHZvaWQgc3RvcEFjY2VsZXJhdGluZ1RyYW5zZm9ybVJlbGF0ZWRQ
cm9wZXJ0aWVzKFVzZUFjY2VsZXJhdGVkQWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggZmI3MzkzNTg5ZGEyZTY4ZDRhZWZhYmRlOTZhYjUzOWI2
MjA2MTZhNC4uYzc1N2UxNTliZmI4NGJjZTZiYjQ1OGY0MDBlNTczYzU1YzU4ODcyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAgLTEyMjcsMTQgKzEyMjcs
MTQgQEAgdm9pZCBXZWJBbmltYXRpb246OnRpY2soKQogICAgICAgICBtX2VmZmVjdC0+YW5pbWF0
aW9uRGlkVGljaygpOwogfQogCi12b2lkIFdlYkFuaW1hdGlvbjo6cmVzb2x2ZShSZW5kZXJTdHls
ZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQordm9pZCBXZWJBbmltYXRpb246OnJlc29s
dmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQm
IHJlc29sdmVDb250ZXh0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkKIHsKICAg
ICBpZiAoIW1fc2hvdWxkU2tpcFVwZGF0aW5nRmluaXNoZWRTdGF0ZVdoZW5SZXNvbHZpbmcpCiAg
ICAgICAgIHVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlkU2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlOb3Rp
Znk6Olllcyk7CiAgICAgbV9zaG91bGRTa2lwVXBkYXRpbmdGaW5pc2hlZFN0YXRlV2hlblJlc29s
dmluZyA9IGZhbHNlOwogCiAgICAgaWYgKG1fZWZmZWN0KQotICAgICAgICBtX2VmZmVjdC0+YXBw
bHkodGFyZ2V0U3R5bGUsIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RhcnRUaW1lKTsKKyAgICAgICAg
bV9lZmZlY3QtPmFwcGx5KHRhcmdldFN0eWxlLCByZXNvbHZlQ29udGV4dCwgc3RhcnRUaW1lKTsK
IH0KIAogdm9pZCBXZWJBbmltYXRpb246OnNldFN1c3BlbmRlZChib29sIGlzU3VzcGVuZGVkKQpA
QCAtMTQyNiwxMiArMTQyNiwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OmNv
bW1pdFN0eWxlcygpCiAgICAgICAgICAgICBpZiAoZWZmZWN0SW5TdGFjay0+YW5pbWF0aW9uKCkg
IT0gdGhpcyAmJiAhY29tcGFyZUFuaW1hdGlvbnNCeUNvbXBvc2l0ZU9yZGVyKCplZmZlY3RJblN0
YWNrLT5hbmltYXRpb24oKSwgKnRoaXMpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgaWYgKGVmZmVjdEluU3RhY2stPmFuaW1hdGVkUHJvcGVydGllcygpLmNvbnRhaW5zKHBy
b3BlcnR5KSkKLSAgICAgICAgICAgICAgICBlZmZlY3RJblN0YWNrLT5hbmltYXRpb24oKS0+cmVz
b2x2ZSgqYW5pbWF0ZWRTdHlsZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgZWZmZWN0SW5T
dGFjay0+YW5pbWF0aW9uKCktPnJlc29sdmUoKmFuaW1hdGVkU3R5bGUsIHsgbnVsbHB0ciB9KTsK
ICAgICAgICAgICAgIGlmIChlZmZlY3RJblN0YWNrLT5hbmltYXRpb24oKSA9PSB0aGlzKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3JlcGxhY2VTdGF0
ZSA9PSBSZXBsYWNlU3RhdGU6OlJlbW92ZWQpCi0gICAgICAgICAgICBlZmZlY3QtPmFuaW1hdGlv
bigpLT5yZXNvbHZlKCphbmltYXRlZFN0eWxlLCBudWxscHRyKTsKKyAgICAgICAgICAgIGVmZmVj
dC0+YW5pbWF0aW9uKCktPnJlc29sdmUoKmFuaW1hdGVkU3R5bGUsIHsgbnVsbHB0ciB9KTsKICAg
ICAgICAgaWYgKGF1dG8gY3NzVmFsdWUgPSBjb21wdXRlZFN0eWxlRXh0cmFjdG9yLnZhbHVlRm9y
UHJvcGVydHlJblN0eWxlKCphbmltYXRlZFN0eWxlLCBwcm9wZXJ0eSwgcmVuZGVyZXIpKQogICAg
ICAgICAgICAgaW5saW5lU3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHksIGNzc1Zh
bHVlLT5jc3NUZXh0KCksIGZhbHNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmgKaW5kZXggNzc0NGZiZjNjZjZhN2JkOTc0OWFiZDE4OGE1MDM3NTNjY2I0Nzk4
NC4uZTBlYjZiMGUwMjE1NDIzY2E3ZTE1ZDQ2NzA0YjdkZjgxM2U2OTA3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtNDgsNiArNDgsMTAgQEAgY2xhc3MgUmVu
ZGVyU3R5bGU7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQ
cm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CiAKK25hbWVzcGFjZSBTdHlsZSB7CitzdHJ1Y3QgUmVz
b2x2ZUNvbnRleHQ7Cit9CisKIGNsYXNzIFdlYkFuaW1hdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkFuaW1hdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYkFuaW1hdGlv
bik7CiBwdWJsaWM6CkBAIC0xMTksNyArMTIzLDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNU
aWNrKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHRpY2soKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBTZWNvbmRzIHRpbWVUb05leHRUaWNrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHJlc29s
dmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxl
bWVudFN0eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzb2x2ZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxl
OjpSZXNvbHZlQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQp
OwogICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29u
c3QgU3R5bGVhYmxlPiYgcHJldmlvdXNUYXJnZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3Qg
U3R5bGVhYmxlPiYgbmV3VGFyZ2V0KTsKICAgICB2b2lkIGFjY2VsZXJhdGVkU3RhdGVEaWRDaGFu
Z2UoKTsKICAgICB2b2lkIHdpbGxDaGFuZ2VSZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKaW5kZXggNWI1NWRlYmUwZDczZGEyYzAzY2I4YWFiYzZjNDQ0
MWJkNjkwNDA4MC4uNTU4MzYzMmY2MDNiNzg3ZmQ0MGI0MTMwMjU1NTg1Mjg2Y2Y0Yzk2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gTWVkaWFRdWVyeU1hdGNoZXI6OmRvY3VtZW50
RWxlbWVudFVzZXJBZ2VudFN0eWxlKCkKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbV9kb2N1bWVudC0+c3R5bGVTY29wZSgp
LnJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpkb2N1bWVudEVsZW1lbnQsIG1fZG9jdW1lbnQt
PnJlbmRlclN0eWxlKCksIG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaE9ubHlV
c2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPnN0eWxl
U2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCB7IG1f
ZG9jdW1lbnQtPnJlbmRlclN0eWxlKCkgfSwgUnVsZU1hdGNoaW5nQmVoYXZpb3I6Ok1hdGNoT25s
eVVzZXJBZ2VudFJ1bGVzKS5yZW5kZXJTdHlsZTsKIH0KIAogYm9vbCBNZWRpYVF1ZXJ5TWF0Y2hl
cjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNldCYgbWVkaWEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVN
ZWRpYS5jcHAKaW5kZXggYTYxNDJhYWIyZmUzN2MxNWQwYjAxNGZkYzMyOWM3NDNkNDYwZDljMy4u
ZmUyZWUxYmEzYWQwMjg4NzI3ZGViYjhiMWU2Nzg4NDM2YzU5NDdiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZU1lZGlhLmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29sIFN0eWxlTWVkaWE6Om1hdGNoTWVk
aXVtKGNvbnN0IFN0cmluZyYgcXVlcnkpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcm9vdFN0eWxlID0gZG9jdW1lbnQt
PnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50
LCBkb2N1bWVudC0+cmVuZGVyU3R5bGUoKSwgbnVsbHB0ciwgUnVsZU1hdGNoaW5nQmVoYXZpb3I6
Ok1hdGNoT25seVVzZXJBZ2VudFJ1bGVzKS5yZW5kZXJTdHlsZTsKKyAgICBhdXRvIHJvb3RTdHls
ZSA9IGRvY3VtZW50LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmRv
Y3VtZW50RWxlbWVudCwgeyBkb2N1bWVudC0+cmVuZGVyU3R5bGUoKSB9LCBSdWxlTWF0Y2hpbmdC
ZWhhdmlvcjo6TWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpLnJlbmRlclN0eWxlOwogCiAgICAgYXV0
byBtZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShxdWVyeSwgTWVkaWFRdWVyeVBhcnNlckNv
bnRleHQoKmRvY3VtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUyNTA2Mjlm
MmNjNmE0YWFkZDY2MTJlYjVkMjY1YThiMWU0OGRkZjQuLjA5MzhmNmQ1ZmEzOTY2OGY2YTkwNDI3
ZjVjYjgwZTQ1MjU1Y2MzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjI2Miw5ICsy
MjYyLDkgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JF
bGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMKICAgICBhdXRvJiByZXNvbHZlciA9IGVs
ZW1lbnQuc3R5bGVSZXNvbHZlcigpOwogCiAgICAgaWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIg
IT0gUHNldWRvSWQ6Ok5vbmUpCi0gICAgICAgIHJldHVybiByZXNvbHZlci5wc2V1ZG9TdHlsZUZv
ckVsZW1lbnQoZWxlbWVudCwgeyBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyIH0sICpwYXJlbnRTdHls
ZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlci5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxlbWVu
dCwgeyBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyIH0sIHsgcGFyZW50U3R5bGUgfSk7CiAKLSAgICBh
dXRvIGVsZW1lbnRTdHlsZSA9IHJlc29sdmVyLnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCBwYXJl
bnRTdHlsZSk7CisgICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlci5zdHlsZUZvckVsZW1l
bnQoZWxlbWVudCwgeyBwYXJlbnRTdHlsZSB9KTsKICAgICBpZiAoZWxlbWVudFN0eWxlLnJlbGF0
aW9ucykgewogICAgICAgICBTdHlsZTo6VXBkYXRlIGVtcHR5VXBkYXRlKCp0aGlzKTsKICAgICAg
ICAgU3R5bGU6OmNvbW1pdFJlbGF0aW9ucyhXVEZNb3ZlKGVsZW1lbnRTdHlsZS5yZWxhdGlvbnMp
LCBlbXB0eVVwZGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTI4OWUwY2NlNjY1Y2Ix
NWU1ODhkNWYzZjlmZTEzM2FiYjRjM2MzNS4uMWIyZmEzOWNjZmYyNTlkYjIwZWJkYjcyY2I4MjZk
MmM5ZDI1MWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTk3NCw5ICsxOTc0LDkgQEAg
U3R5bGU6OlJlc29sdmVyJiBFbGVtZW50OjpzdHlsZVJlc29sdmVyKCkKICAgICByZXR1cm4gZG9j
dW1lbnQoKS5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKTsKIH0KIAotU3R5bGU6OkVsZW1lbnRTdHls
ZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQor
U3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUoY29uc3QgU3R5bGU6OlJl
c29sdmVDb250ZXh0JiByZXNvbHZlQ29udGV4dCkKIHsKLSAgICByZXR1cm4gc3R5bGVSZXNvbHZl
cigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcGFyZW50U3R5bGUpOworICAgIHJldHVybiBzdHls
ZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCp0aGlzLCByZXNvbHZlQ29udGV4dCk7CiB9CiAK
IHN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2li
bGluZykKQEAgLTQ0MDksNyArNDQwOSw3IEBAIHZvaWQgRWxlbWVudDo6ZGlkRGV0YWNoUmVuZGVy
ZXJzKCkKICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwogfQog
Ci1zdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IEVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0
aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAgICBB
U1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAwYzg2MjI5ZjY0ZGM1NjIyYjQzMmJlZTM4
YTAyM2FiNzVhNTI2NjRlLi5kMWJiNjRkNTc3NTkwZjA2ZmVmNjM5MmNjODkxZjU4NmE0YzVhYmRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTk0LDYgKzk0LDcgQEAgbmFtZXNwYWNlIFN0eWxlIHsK
IGNsYXNzIFJlc29sdmVyOwogZW51bSBjbGFzcyBDaGFuZ2UgOiB1aW50OF90Owogc3RydWN0IEVs
ZW1lbnRTdHlsZTsKK3N0cnVjdCBSZXNvbHZlQ29udGV4dDsKIH0KIAogY2xhc3MgRWxlbWVudCA6
IHB1YmxpYyBDb250YWluZXJOb2RlIHsKQEAgLTU3MSw3ICs1NzIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGV0YWNoUmVuZGVyZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGFjaFJlbmRlcmVycygp
OwotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogc2hhZG93SG9zdFN0eWxlKTsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3R5bGU6
OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29u
dGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOwogCiAgICAgTGF5b3V0
UmVjdCBhYnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNsdWRlc0ZpeGVkUG9zaXRp
b25FbGVtZW50cykgb3ZlcnJpZGU7CiAKQEAgLTU5Myw3ICs1OTQsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVSZXNvbHZlcigpOwotICAgIFN0eWxlOjpF
bGVtZW50U3R5bGUgcmVzb2x2ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7
CisgICAgU3R5bGU6OkVsZW1lbnRTdHlsZSByZXNvbHZlU3R5bGUoY29uc3QgU3R5bGU6OlJlc29s
dmVDb250ZXh0Jik7CiAKICAgICAvLyBJbnZhbGlkYXRlcyB0aGUgc3R5bGUgb2YgYSBzaW5nbGUg
ZWxlbWVudC4gU3R5bGUgaXMgcmVzb2x2ZWQgbGF6aWx5LgogICAgIC8vIERlc2NlbmRhbnQgZWxl
bWVudHMgYXJlIHJlc29sdmVkIGFzIG5lZWRlZCwgZm9yIGV4YW1wbGUgaWYgYW4gaW5oZXJpdGVk
IHByb3BlcnR5IGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
aXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNw
cAppbmRleCBjYzU4OTllNzMxYTY1ZWZjYTdiMTU1YWQyNjljYmFhYzZhMjBiNmFkLi5jNTVjZjE3
YWNiNDlkMmY2ZTY3YjMxOWM4NWZmZmVjNzY2MmQwYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgU3RyaW5nV2l0aERpcmVjdGlv
biBIVE1MVGl0bGVFbGVtZW50Ojpjb21wdXRlZFRleHRXaXRoRGlyZWN0aW9uKCkKICAgICBpZiAo
YXV0byogY29tcHV0ZWRTdHlsZSA9IHRoaXMtPmNvbXB1dGVkU3R5bGUoKSkKICAgICAgICAgZGly
ZWN0aW9uID0gY29tcHV0ZWRTdHlsZS0+ZGlyZWN0aW9uKCk7CiAgICAgZWxzZQotICAgICAgICBk
aXJlY3Rpb24gPSBzdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCp0aGlzLCBwYXJlbnRF
bGVtZW50KCkgPyBwYXJlbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCkgOiBudWxscHRyKS5yZW5k
ZXJTdHlsZS0+ZGlyZWN0aW9uKCk7CisgICAgICAgIGRpcmVjdGlvbiA9IHN0eWxlUmVzb2x2ZXIo
KS5zdHlsZUZvckVsZW1lbnQoKnRoaXMsIHsgcGFyZW50RWxlbWVudCgpID8gcGFyZW50RWxlbWVu
dCgpLT5yZW5kZXJTdHlsZSgpIDogbnVsbHB0ciB9KS5yZW5kZXJTdHlsZS0+ZGlyZWN0aW9uKCk7
CiAgICAgcmV0dXJuIHsgdGV4dCgpLCBkaXJlY3Rpb24gfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCmluZGV4IDJjOTU2
Y2I5YzQyYjI1MWUyYWMzZjUwMGUzY2QwYzdjZGZkZjBiYTAuLjhjYjc0N2U3NDY2YmRlYTI0NWQ0
YTViMTg0ZGE0ZmZkYjkxZDNjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgdm9pZCBEYXRl
VGltZUZpZWxkRWxlbWVudDo6aW5pdGlhbGl6ZShjb25zdCBBdG9tU3RyaW5nJiBwc2V1ZG8pCiAg
ICAgc2V0UHNldWRvKHBzZXVkbyk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRT
dHlsZT4gRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUp
CitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IERhdGVUaW1lRmllbGRFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiByZXNvbHZl
Q29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKLSAgICBhdXRv
IGVsZW1lbnRTdHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOworICAgIGF1dG8gZWxl
bWVudFN0eWxlID0gcmVzb2x2ZVN0eWxlKHJlc29sdmVDb250ZXh0KTsKICAgICBpZiAoIWVsZW1l
bnRTdHlsZS5yZW5kZXJTdHlsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmgKaW5k
ZXggMzYzODFmOTRjMTYyODY0MGZhZjgwNjM3NTM4MWQxYWE1NjBhNTM1MS4uNTExZjA2MTY1ZTY3
ZmI3YWVmZGIwZDhmOGQ5YWVjOGE1ZDU3YzViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5oCkBAIC04NSw3ICs4NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KEV2ZW50Jik7CiAKIHByaXZh
dGU6Ci0gICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7CiAK
ICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggOWQxNzRj
ZjdlYTMzYWU3YjYwZTY1Mzc0MzI5YjBkZDMwODI4YjQ4Ny4uZDg3YzMwZDIxNTdiYmQ3NjA5MGE1
ZWMxZjlkMDM3MTI5NjI2NzAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC01ODYsNyArNTg2LDcgQEAgUmVmUHRyPEhUTUxJ
bnB1dEVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElucHV0KCkgY29uc3QKICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93SG9zdCgpKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBob3N0
U3R5bGUpCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxl
bWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNv
bnN0IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCiB7CiAgICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVh
bGx5IGNvbXB1dGUgc3R5bGUuIFRoaXMgaXMganVzdCBhIGhhY2sgdG8gcGljayBzaGFkb3cgcHNl
dWRvIGlkIHdoZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4KIApAQCAtNjM3LDcgKzYzNyw3IEBAIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNs
aWRlckNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotc3RkOjpvcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogaG9zdFN0eWxl
KQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiwgY29u
c3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKIHsKICAgICAvLyBUaGlzIGRvZXNuJ3QgYWN0dWFs
bHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFjayB0byBwaWNrIHNoYWRvdyBwc2V1
ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3duLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IGIzY2RlYmE1NjdlOTVmOTViZjRm
ODlhZDk1M2Y1ZDJkMmNjMzYzYjUuLjYyYjY5NGYzOTAyZmExMTljMGQyMzYyNTRhYTJmZTE4YzVk
OGViY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHdpbGxE
ZXRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVu
ZGVyU3R5bGUqKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+
IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmLCBjb25zdCBS
ZW5kZXJTdHlsZSopIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHN0YXJ0RHJhZ2dpbmcoKTsKQEAgLTEzNCw3ICsx
MzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9j
dW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwotICAg
IHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBmaW5hbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHls
ZTo6UmVzb2x2ZUNvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOwogICAgIGNvbnN0
IEF0b21TdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1Ns
aWRlckNvbnRhaW5lckVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCmluZGV4IDA3NDM1NWY5ODRkZWJhZmRmY2QwOWQ4NGIzYzlkYzljMmIyOThmYzMu
LmE4ZWU0NDc1MWJhZTBiN2FmZWE1YjUxOWJkM2QzMzk2YjZhODU5MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cApAQCAtODIsOSArODIsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJvbmdQYXNzd29yZFRl
eHRGaWVsZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBpczxIVE1MSW5wdXRF
bGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KS0+
aGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFN0
eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
KikKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckNv
bnRhaW5lcjo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYg
cmVzb2x2ZUNvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKLSAgICBhdXRvIGVsZW1lbnRT
dHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOworICAgIGF1dG8gZWxlbWVudFN0eWxl
ID0gcmVzb2x2ZVN0eWxlKHJlc29sdmVDb250ZXh0KTsKICAgICBpZiAoaXNTdHJvbmdQYXNzd29y
ZFRleHRGaWVsZChzaGFkb3dIb3N0KCkpKSB7CiAgICAgICAgIGVsZW1lbnRTdHlsZS5yZW5kZXJT
dHlsZS0+c2V0RmxleFdyYXAoRmxleFdyYXA6OldyYXApOwogICAgICAgICBlbGVtZW50U3R5bGUu
cmVuZGVyU3R5bGUtPnNldE92ZXJmbG93WChPdmVyZmxvdzo6SGlkZGVuKTsKQEAgLTEwNCw3ICsx
MDQsNyBAQCBSZWY8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFRleHRDb250cm9sSW5uZXJFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0
JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIG5ld1N0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwogICAgIG5ld1N0eWxlLT5pbmhlcml0RnJv
bSgqc2hhZG93SG9zdFN0eWxlKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBSZW5kZXJUZXh0Q29udHJv
bElubmVyQmxvY2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25z
dAogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2s+KEhUTUxE
aXZFbGVtZW50OjpyZW5kZXJlcigpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitz
dGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNv
bnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IGRv
d25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJ
bm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKICAgICByZXR1cm4geyBtYWtlVW5pcXVl
PFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkgfTsKQEAgLTIwOSw5ICsyMDksOSBAQCBSZWY8
VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbgogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1zdGQ6Om9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYgcmVzb2x2ZUNvbnRleHQsIGNvbnN0IFJlbmRl
clN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7Ci0gICAgYXV0byBzdHlsZSA9IHJlc29sdmVTdHls
ZSgmcGFyZW50U3R5bGUpOworICAgIGF1dG8gc3R5bGUgPSByZXNvbHZlU3R5bGUocmVzb2x2ZUNv
bnRleHQpOwogCiAgICAgYXV0byYgY29udHJvbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudD4oKmNvbnRhaW5pbmdTaGFkb3dSb290KCktPmhvc3QoKSk7CiAgICAg
c3R5bGUucmVuZGVyU3R5bGUtPnNldERpc3BsYXkoY29udHJvbEVsZW1lbnQuaXNQbGFjZWhvbGRl
clZpc2libGUoKSA/IERpc3BsYXlUeXBlOjpCbG9jayA6IERpc3BsYXlUeXBlOjpOb25lKTsKQEAg
LTIzOSw3ICsyMzksNyBAQCBSZWY8U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudD4gU2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvYwogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKIH0K
IAotc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVu
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiByZXNvbHZlQ29u
dGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBSZWZQdHIg
aW5wdXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihzaGFkb3dIb3N0KCkpOwogICAgIGlm
IChpbnB1dCAmJiBpbnB1dC0+bWF4UmVzdWx0cygpID49IDApCkBAIC0yNDcsNyArMjQ3LDcgQEAg
c3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b25FbGVtZW50OjpyZXNvbHZlQ3VzdG8KIAogICAgIGlmIChzaGFkb3dIb3N0U3R5bGUgJiYgc2hh
ZG93SG9zdFN0eWxlLT5lZmZlY3RpdmVBcHBlYXJhbmNlKCkgIT0gU2VhcmNoRmllbGRQYXJ0KSB7
CiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGNhbkFkanVzdFN0eWxlRm9yQXBwZWFyYW5jZSht
X2NhbkFkanVzdFN0eWxlRm9yQXBwZWFyYW5jZSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gcmVz
b2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlU3R5bGUocmVz
b2x2ZUNvbnRleHQpOwogICAgIH0KIAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zMDYs
OSArMzA2LDkgQEAgUmVmPFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudD4gU2VhcmNoRmll
bGRDYW5jZWxCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW0KICAgICByZXR1cm4gZWxlbWVudDsK
IH0KIAotc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5
bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiByZXNvbHZlQ29udGV4dCwgY29uc3QgUmVu
ZGVyU3R5bGUqKQogewotICAgIGF1dG8gZWxlbWVudFN0eWxlID0gcmVzb2x2ZVN0eWxlKCZwYXJl
bnRTdHlsZSk7CisgICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlU3R5bGUocmVzb2x2ZUNv
bnRleHQpOwogICAgIGF1dG8mIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCpzaGFkb3dIb3N0KCkpOwogICAgIGVsZW1lbnRTdHlsZS5yZW5kZXJTdHlsZS0+c2V0Vmlz
aWJpbGl0eShlbGVtZW50U3R5bGUucmVuZGVyU3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpIaWRkZW4gfHwgaW5wdXRFbGVtZW50LnZhbHVlKCkuaXNFbXB0eSgpID8gVmlzaWJpbGl0
eTo6SGlkZGVuIDogVmlzaWJpbGl0eTo6VmlzaWJsZSk7CiAgICAgcmV0dXJuIGVsZW1lbnRTdHls
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmgKaW5kZXggN2MzMmJiNGEyMTc3NzBjMTRmNjIxZTI0Y2ZkYmI2YjBhN2M3MTUy
YS4uMzYzOTc2NjlmZDI1ODA2ZDJkOTVkYmE4ZjNiY2NkNWE1NDcwNTIzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgK
QEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbElubmVy
Q29udGFpbmVyKERvY3VtZW50Jik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5
bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZl
Q29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwog
fTsKIAogY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERp
dkVsZW1lbnQgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVGV4
dENvbnRyb2xJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dI
b3N0U3R5bGUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIH07CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6
CiAKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNo
YWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKQEAgLTg4
LDcgKzg4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbFBsYWNlaG9sZGVy
RWxlbWVudChEb2N1bWVudCYpOwogICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
U3R5bGU6OlJlc29sdmVDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHls
ZSkgb3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoRG9jdW1l
bnQmKTsKICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2
ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHls
ZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVD
b250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc1NlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIG1fY2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJh
bmNlIHsgdHJ1ZSB9OwpAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50Jik7CiAgICAgYm9vbCBpc01v
dXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGQ6
Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5
bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNvbnN0IFJlbmRl
clN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4
IDY5YWI0NjM0YWNiNDYxMmE1MDIyOGU5NjExMjM5MGQxNzFjNThiM2YuLjE0NzUyMjY4NWVmYjEw
OGMyNTI5MDA2YjkwN2MyMGMyOTY4NzM3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVTdHlsZSgpIGNvbnN0CiAg
ICAgICAgIGlmICghY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQYXJlbnRFbGVt
ZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRyZWVQYXJlbnRF
bGVtZW50LCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOworICAgICAgICBhdXRvIHN0eWxlID0g
Y29tcG9zZWRUcmVlUGFyZW50RWxlbWVudC0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVu
dCgqY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCwgeyAmcGFyZW50U3R5bGUgfSkucmVuZGVyU3R5
bGU7CiAgICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250
ZW50cyk7CiAKICAgICAgICAgLy8gV2UgYWN0IGFzIGlmIHRoZXJlIHdhcyBhbiB1bnN0eWxlZCA8
c3Bhbj4gYXJvdW5kIHRoZSB0ZXh0IG5vZGUuIE9ubHkgc3R5bGluZyBoYXBwZW5zIHZpYSBpbmhl
cml0YW5jZS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IFJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVTdHlsZSgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBmaXJzdExpbmVTdHlsZTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVuZGVyZXJGb3JGaXJz
dExpbmVTdHlsZS5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmVs
ZW1lbnQoKSwgJnBhcmVudFN0eWxlKS5yZW5kZXJTdHlsZTsKKyAgICByZXR1cm4gcmVuZGVyZXJG
b3JGaXJzdExpbmVTdHlsZS5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1l
bnQoKmVsZW1lbnQoKSwgeyAmcGFyZW50U3R5bGUgfSkucmVuZGVyU3R5bGU7CiB9CiAKIGNvbnN0
IFJlbmRlclN0eWxlJiBSZW5kZXJFbGVtZW50OjpmaXJzdExpbmVTdHlsZSgpIGNvbnN0CkBAIC0x
NTMxLDcgKzE1MzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1l
bnQ6OmdldFVuY2FjaGVkUHNldWRvU3R5bGUoY29uc3QgU3R5bGU6OgogCiAgICAgYXV0byYgc3R5
bGVSZXNvbHZlciA9IGVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVGb3JF
bGVtZW50KCplbGVtZW50KCksIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCAqcGFyZW50U3R5bGUpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVJlc29sdmVyLnBz
ZXVkb1N0eWxlRm9yRWxlbWVudCgqZWxlbWVudCgpLCBwc2V1ZG9FbGVtZW50UmVxdWVzdCwgeyBw
YXJlbnRTdHlsZSB9KTsKIAogICAgIGlmIChzdHlsZSkKICAgICAgICAgU3R5bGU6OmxvYWRQZW5k
aW5nUmVzb3VyY2VzKCpzdHlsZSwgZG9jdW1lbnQoKSwgZWxlbWVudCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKaW5kZXggMWJkMWI3Zjg2
OGY3NTQzYjQ5ZTM1YjYzY2M1YTdjNmQxMmVmODQxMy4uZTIzYTIxYzQ3YWYxMTcxNzJmZTJkNTU4
MmYzOTBjZTFlMzAxNjMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0tleWZyYW1lTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0tleWZyYW1lTGlzdC5jcHAKQEAgLTExOSwxNCArMTE5LDE0IEBAIHZvaWQgS2V5ZnJhbWVMaXN0
OjpmaWxsSW1wbGljaXRLZXlmcmFtZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgU3R5bGU6OlJl
c29sdmVyCiAgICAgYXV0byBpbml0aWFsU2l6ZSA9IHNpemUoKTsKICAgICBpZiAoaW5pdGlhbFNp
emUgPiAwICYmIG1fa2V5ZnJhbWVzWzBdLmtleSgpKSB7CiAgICAgICAgIEtleWZyYW1lVmFsdWUg
a2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKLSAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHls
ZShzdHlsZVJlc29sdmVyLnN0eWxlRm9yS2V5ZnJhbWUoZWxlbWVudCwgZWxlbWVudFN0eWxlLCBw
YXJlbnRFbGVtZW50U3R5bGUsICZ6ZXJvUGVyY2VudEtleWZyYW1lKCksIGtleWZyYW1lVmFsdWUp
KTsKKyAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHlsZShzdHlsZVJlc29sdmVyLnN0eWxlRm9y
S2V5ZnJhbWUoZWxlbWVudCwgZWxlbWVudFN0eWxlLCB7IHBhcmVudEVsZW1lbnRTdHlsZSB9LCAm
emVyb1BlcmNlbnRLZXlmcmFtZSgpLCBrZXlmcmFtZVZhbHVlKSk7CiAgICAgICAgIGluc2VydChX
VEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgMTAwJSBrZXlm
cmFtZSBpcyBtaXNzaW5nLCBjcmVhdGUgaXQgKGJ1dCBvbmx5IGlmIHRoZXJlIGlzIGF0IGxlYXN0
IG9uZSBvdGhlciBrZXlmcmFtZSkuCiAgICAgaWYgKGluaXRpYWxTaXplID4gMCAmJiAobV9rZXlm
cmFtZXNbc2l6ZSgpIC0gMV0ua2V5KCkgIT0gMSkpIHsKICAgICAgICAgS2V5ZnJhbWVWYWx1ZSBr
ZXlmcmFtZVZhbHVlKDEsIG51bGxwdHIpOwotICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxl
KHN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHBh
cmVudEVsZW1lbnRTdHlsZSwgJmh1bmRyZWRQZXJjZW50S2V5ZnJhbWUoKSwga2V5ZnJhbWVWYWx1
ZSkpOworICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuc3R5bGVG
b3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHsgcGFyZW50RWxlbWVudFN0eWxlIH0s
ICZodW5kcmVkUGVyY2VudEtleWZyYW1lKCksIGtleWZyYW1lVmFsdWUpKTsKICAgICAgICAgaW5z
ZXJ0KFdURk1vdmUoa2V5ZnJhbWVWYWx1ZSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZTQ0NDViNjUzMTk3M2EyYzAzZWViZTMyNGI4NWZhMTIw
ZTQ3NTE5MS4uNzAzMTgzNmFlYzY5ZjMwMzc4YTQ2ZGRkM2MzNGU3NTQ2YTJlYzY3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBSZXNv
bHZlcjo6UmVzb2x2ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICBtX21lZGlhUXVlcnlF
dmFsdWF0b3IgPSBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgfTsKIAogICAgIGlmIChhdXRvKiBkb2N1
bWVudEVsZW1lbnQgPSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIG1f
cm9vdERlZmF1bHRTdHlsZSA9IHN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCBtX2Rv
Y3VtZW50LnJlbmRlclN0eWxlKCksIG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRj
aE9ubHlVc2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CisgICAgICAgIG1fcm9vdERlZmF1bHRT
dHlsZSA9IHN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCB7IG1fZG9jdW1lbnQucmVu
ZGVyU3R5bGUoKSB9LCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hPbmx5VXNlckFnZW50UnVs
ZXMpLnJlbmRlclN0eWxlOwogICAgICAgICAvLyBUdXJuIG9mZiBhc3NlcnRpb24gYWdhaW5zdCBm
b250IGxvb2t1cHMgZHVyaW5nIHN0eWxlIHJlc29sdmVyIGluaXRpYWxpemF0aW9uLiBXZSBtYXkg
bmVlZCByb290IHN0eWxlIGZvbnQgZm9yIG1lZGlhIHF1ZXJpZXMuCiAgICAgICAgIG1fZG9jdW1l
bnQuZm9udFNlbGVjdG9yKCkuaW5jcmVtZW50SXNDb21wdXRpbmdSb290U3R5bGVGb250KCk7CiAg
ICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUoJm1fZG9jdW1l
bnQuZm9udFNlbGVjdG9yKCkpOwpAQCAtMjE4LDkgKzIxOCw5IEBAIEJ1aWxkZXJDb250ZXh0IFJl
c29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYgc3RhdGUpCiAgICAgfTsKIH0KIAot
RWxlbWVudFN0eWxlIFJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50Qm94U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZpb3IsIGNv
bnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKK0VsZW1lbnRTdHlsZSBSZXNvbHZl
cjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlc29sdmVD
b250ZXh0JiBjb250ZXh0LCBSdWxlTWF0Y2hpbmdCZWhhdmlvciBtYXRjaGluZ0JlaGF2aW9yKQog
ewotICAgIGF1dG8gc3RhdGUgPSBTdGF0ZShlbGVtZW50LCBwYXJlbnRTdHlsZSwgbV9vdmVycmlk
ZURvY3VtZW50RWxlbWVudFN0eWxlKTsKKyAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVudCwg
Y29udGV4dC5wYXJlbnRTdHlsZSwgY29udGV4dC5kb2N1bWVudEVsZW1lbnRTdHlsZSk7CiAKICAg
ICBpZiAoc3RhdGUucGFyZW50U3R5bGUoKSkgewogICAgICAgICBzdGF0ZS5zZXRTdHlsZShSZW5k
ZXJTdHlsZTo6Y3JlYXRlUHRyKCkpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIEVsZW1lbnRTdHlsZSBS
ZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJl
bmRlclN0eWxlCiAKICAgICBVc2VyQWdlbnRTdHlsZTo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRz
Rm9yRWxlbWVudChlbGVtZW50KTsKIAotICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3Rv
cihlbGVtZW50LCBtX3J1bGVTZXRzLCBzZWxlY3RvckZpbHRlcik7CisgICAgRWxlbWVudFJ1bGVD
b2xsZWN0b3IgY29sbGVjdG9yKGVsZW1lbnQsIG1fcnVsZVNldHMsIGNvbnRleHQuc2VsZWN0b3JG
aWx0ZXIpOwogICAgIGNvbGxlY3Rvci5zZXRNZWRpdW0oJm1fbWVkaWFRdWVyeUV2YWx1YXRvcik7
CiAKICAgICBpZiAobWF0Y2hpbmdCZWhhdmlvciA9PSBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0
Y2hPbmx5VXNlckFnZW50UnVsZXMpCkBAIC0yNjQsNyArMjY0LDcgQEAgRWxlbWVudFN0eWxlIFJl
c29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVu
ZGVyU3R5bGUKIAogICAgIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoc3RhdGUsIGNvbGxlY3Rvci5t
YXRjaFJlc3VsdCgpKTsKIAotICAgIEFkanVzdGVyIGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0
ZS5wYXJlbnRTdHlsZSgpLCBwYXJlbnRCb3hTdHlsZSwgJmVsZW1lbnQpOworICAgIEFkanVzdGVy
IGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBjb250ZXh0LnBhcmVu
dEJveFN0eWxlLCAmZWxlbWVudCk7CiAgICAgYWRqdXN0ZXIuYWRqdXN0KCpzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS51c2VyQWdlbnRBcHBlYXJhbmNlU3R5bGUoKSk7CiAKICAgICBpZiAoc3RhdGUuc3R5
bGUoKS0+aGFzVmlld3BvcnRVbml0cygpKQpAQCAtMjczLDE1ICsyNzMsMTUgQEAgRWxlbWVudFN0
eWxlIFJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3R5bGUKICAgICByZXR1cm4geyBzdGF0ZS50YWtlU3R5bGUoKSwgV1RGTW92ZShl
bGVtZW50U3R5bGVSZWxhdGlvbnMpIH07CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVs
ZW1lbnRTdHlsZSwgY29uc3QgU3R5bGVSdWxlS2V5ZnJhbWUqIGtleWZyYW1lLCBLZXlmcmFtZVZh
bHVlJiBrZXlmcmFtZVZhbHVlKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNvbHZl
cjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJT
dHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHZlQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
U3R5bGVSdWxlS2V5ZnJhbWUqIGtleWZyYW1lLCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZVZhbHVl
KQogewogICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQuYXV0aG9yRGVjbGFyYXRp
b25zLmFwcGVuZCh7ICZrZXlmcmFtZS0+cHJvcGVydGllcygpLCBTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoQWxsLCBwcm9wZXJ0eUFsbG93bGlzdEZvclBzZXVkb0lkKGVsZW1lbnRTdHlsZS0+c3R5bGVU
eXBlKCkpIH0pOwogCi0gICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVsZW1lbnQsIG51bGxwdHIsIG1f
b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSk7CisgICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVs
ZW1lbnQsIG51bGxwdHIsIGNvbnRleHQuZG9jdW1lbnRFbGVtZW50U3R5bGUpOwogCiAgICAgc3Rh
dGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCplbGVtZW50U3R5bGUpKTsKLSAgICBz
dGF0ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocGFyZW50RWxlbWVudFN0
eWxlID8gKnBhcmVudEVsZW1lbnRTdHlsZSA6ICplbGVtZW50U3R5bGUpKTsKKyAgICBzdGF0ZS5z
ZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoY29udGV4dC5wYXJlbnRTdHlsZSA/
ICpjb250ZXh0LnBhcmVudFN0eWxlIDogKmVsZW1lbnRTdHlsZSkpOwogCiAgICAgQnVpbGRlciBi
dWlsZGVyKCpzdGF0ZS5zdHlsZSgpLCBidWlsZGVyQ29udGV4dChzdGF0ZSksIHJlc3VsdCwgeyBD
YXNjYWRlTGV2ZWw6OkF1dGhvciB9KTsKICAgICBidWlsZGVyLmFwcGx5QWxsUHJvcGVydGllcygp
OwpAQCAtMzA3LDcgKzMwNyw3IEBAIGJvb2wgUmVzb2x2ZXI6OmlzQW5pbWF0aW9uTmFtZVZhbGlk
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9rZXlmcmFtZXNSdWxlTWFwLmZpbmQo
QXRvbVN0cmluZyhuYW1lKS5pbXBsKCkpICE9IG1fa2V5ZnJhbWVzUnVsZU1hcC5lbmQoKTsKIH0K
IAotdm9pZCBSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgS2V5ZnJhbWVMaXN0JiBsaXN0KQordm9pZCBSZXNv
bHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVzb2x2ZUNvbnRleHQmIGNv
bnRleHQsIEtleWZyYW1lTGlzdCYgbGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7CiAKQEAgLTM2
OSw3ICszNjksNyBAQCB2b2lkIFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihj
b25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdAogICAgICAgICAvLyBBZGQgdGhp
cyBrZXlmcmFtZSBzdHlsZSB0byBhbGwgdGhlIGluZGljYXRlZCBrZXkgdGltZXMKICAgICAgICAg
Zm9yIChhdXRvIGtleSA6IGtleWZyYW1lLT5rZXlzKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1l
VmFsdWUga2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKLSAgICAgICAgICAgIGtleWZyYW1lVmFs
dWUuc2V0U3R5bGUoc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHBhcmVu
dEVsZW1lbnRTdHlsZSwga2V5ZnJhbWUucHRyKCksIGtleWZyYW1lVmFsdWUpKTsKKyAgICAgICAg
ICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVt
ZW50U3R5bGUsIGNvbnRleHQsIGtleWZyYW1lLnB0cigpLCBrZXlmcmFtZVZhbHVlKSk7CiAgICAg
ICAgICAgICBrZXlmcmFtZVZhbHVlLnNldEtleShrZXkpOwogICAgICAgICAgICAgaWYgKGF1dG8g
dGltaW5nRnVuY3Rpb25DU1NWYWx1ZSA9IGtleWZyYW1lLT5wcm9wZXJ0aWVzKCkuZ2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKSkKICAgICAgICAg
ICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uOjpj
cmVhdGVGcm9tQ1NTVmFsdWUoKnRpbWluZ0Z1bmN0aW9uQ1NTVmFsdWUuZ2V0KCkpKTsKQEAgLTM3
NywxMiArMzc3LDEyIEBAIHZvaWQgUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9u
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBsaXN0LmZpbGxJbXBsaWNpdEtleWZyYW1lcyhlbGVtZW50LCAqdGhpcywgZWxlbWVu
dFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIGxpc3QuZmlsbEltcGxpY2l0S2V5ZnJh
bWVzKGVsZW1lbnQsICp0aGlzLCBlbGVtZW50U3R5bGUsIGNvbnRleHQucGFyZW50U3R5bGUpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlc29sdmVyOjpwc2V1ZG9TdHlsZUZv
ckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUHNldWRvRWxlbWVudFJlcXVl
c3QmIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgY29uc3QgU2VsZWN0b3JGaWx0ZXIq
IHNlbGVjdG9yRmlsdGVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNvbHZlcjo6
cHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFBzZXVk
b0VsZW1lbnRSZXF1ZXN0JiBwc2V1ZG9FbGVtZW50UmVxdWVzdCwgY29uc3QgUmVzb2x2ZUNvbnRl
eHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVsZW1lbnQsICZwYXJlbnRT
dHlsZSwgbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKTsKKyAgICBhdXRvIHN0YXRlID0g
U3RhdGUoZWxlbWVudCwgY29udGV4dC5wYXJlbnRTdHlsZSwgY29udGV4dC5kb2N1bWVudEVsZW1l
bnRTdHlsZSk7CiAKICAgICBpZiAoc3RhdGUucGFyZW50U3R5bGUoKSkgewogICAgICAgICBzdGF0
ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCkpOwpAQCAtMzkyLDcgKzM5Miw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxl
bWVudChjb25zdCBFbGVtZW50JiBlbGVtCiAgICAgICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJl
bmRlclN0eWxlOjpjbG9uZVB0cigqc3RhdGUuc3R5bGUoKSkpOwogICAgIH0KIAotICAgIEVsZW1l
bnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVtZW50LCBtX3J1bGVTZXRzLCBzZWxlY3RvckZp
bHRlcik7CisgICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IgY29sbGVjdG9yKGVsZW1lbnQsIG1fcnVs
ZVNldHMsIGNvbnRleHQuc2VsZWN0b3JGaWx0ZXIpOwogICAgIGNvbGxlY3Rvci5zZXRQc2V1ZG9F
bGVtZW50UmVxdWVzdChwc2V1ZG9FbGVtZW50UmVxdWVzdCk7CiAgICAgY29sbGVjdG9yLnNldE1l
ZGl1bSgmbV9tZWRpYVF1ZXJ5RXZhbHVhdG9yKTsKICAgICBjb2xsZWN0b3IubWF0Y2hVQVJ1bGVz
KCk7CkBAIC00MTEsNyArNDExLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNv
bHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW0KIAogICAgIGFw
cGx5TWF0Y2hlZFByb3BlcnRpZXMoc3RhdGUsIGNvbGxlY3Rvci5tYXRjaFJlc3VsdCgpKTsKIAot
ICAgIEFkanVzdGVyIGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBw
YXJlbnRCb3hTdHlsZSwgbnVsbHB0cik7CisgICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQo
KSwgKnN0YXRlLnBhcmVudFN0eWxlKCksIGNvbnRleHQucGFyZW50Qm94U3R5bGUsIG51bGxwdHIp
OwogICAgIGFkanVzdGVyLmFkanVzdCgqc3RhdGUuc3R5bGUoKSwgc3RhdGUudXNlckFnZW50QXBw
ZWFyYW5jZVN0eWxlKCkpOwogCiAgICAgaWYgKHN0YXRlLnN0eWxlKCktPmhhc1ZpZXdwb3J0VW5p
dHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBkYzVjODRiOGEzYmI4
ZTBhMWQ5YjVkY2NmZjFlMTY0MzQ5ZjcxMDhmLi44ODJhYmFkNDZkNmVhNzJlODUwYjgwZmI4ZDQ0
NmFjMjdiNzZiZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCkBAIC04MCwx
NyArODAsMjUgQEAgc3RydWN0IEVsZW1lbnRTdHlsZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bGF0aW9ucz4gcmVsYXRpb25zOwogfTsKIAorc3RydWN0IFJlc29sdmVDb250ZXh0IHsKKyAgICBj
b25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGU7CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEJveFN0eWxlIHsgbnVsbHB0ciB9OworICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgcHJvdmlk
ZWQgZHVyaW5nIHN0eWxlIHJlc29sdXRpb24gd2hlbiB1cC10by1kYXRlIGRvY3VtZW50IGVsZW1l
bnQgc3R5bGUgaXMgbm90IGF2YWlsYWJsZSB2aWEgRE9NLgorICAgIGNvbnN0IFJlbmRlclN0eWxl
KiBkb2N1bWVudEVsZW1lbnRTdHlsZSB7IG51bGxwdHIgfTsKKyAgICBTZWxlY3RvckZpbHRlciog
c2VsZWN0b3JGaWx0ZXIgeyBudWxscHRyIH07Cit9OworCiBjbGFzcyBSZXNvbHZlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlc29sdmVyPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZXNv
bHZlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZXNvbHZlcj4gY3JlYXRlKERvY3VtZW50
Jik7CiAgICAgflJlc29sdmVyKCk7CiAKLSAgICBFbGVtZW50U3R5bGUgc3R5bGVGb3JFbGVtZW50
KGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSA9IG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9y
ID0gUnVsZU1hdGNoaW5nQmVoYXZpb3I6Ok1hdGNoQWxsUnVsZXMsIGNvbnN0IFNlbGVjdG9yRmls
dGVyKiA9IG51bGxwdHIpOworICAgIEVsZW1lbnRTdHlsZSBzdHlsZUZvckVsZW1lbnQoY29uc3Qg
RWxlbWVudCYsIGNvbnN0IFJlc29sdmVDb250ZXh0JiwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgPSBS
dWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcyk7CiAKLSAgICB2b2lkIGtleWZyYW1l
U3R5bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogZWxl
bWVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBLZXlmcmFt
ZUxpc3QmKTsKKyAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVsZW1l
bnQmLCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHZlQ29udGV4
dCYsIEtleWZyYW1lTGlzdCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYsIGNvbnN0
IFBzZXVkb0VsZW1lbnRSZXF1ZXN0JiwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgPSBudWxscHRyLCBjb25zdCBTZWxlY3Rv
ckZpbHRlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiwgY29uc3Qg
UHNldWRvRWxlbWVudFJlcXVlc3QmLCBjb25zdCBSZXNvbHZlQ29udGV4dCYpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBkZWZhdWx0U3R5bGVGb3JFbGVtZW50KGNv
bnN0IEVsZW1lbnQqKTsKQEAgLTEwNiwxMiArMTE0LDkgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
TWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaWFRdWVyeUV2YWx1YXRvcigpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFRdWVyeUV2YWx1YXRvcjsgfQogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUqIG92ZXJy
aWRlRG9jdW1lbnRFbGVtZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRG9jdW1l
bnRFbGVtZW50U3R5bGU7IH0KLSAgICB2b2lkIHNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IG1fb3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRT
dHlsZSA9IHN0eWxlOyB9Ci0KICAgICB2b2lkIGFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCk7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yS2V5ZnJhbWUoY29u
c3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxlUnVsZUtleWZyYW1lKiwgS2V5
ZnJhbWVWYWx1ZSYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JL
ZXlmcmFtZShjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwg
Y29uc3QgUmVzb2x2ZUNvbnRleHQmLCBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZSosIEtleWZyYW1l
VmFsdWUmKTsKICAgICBib29sIGlzQW5pbWF0aW9uTmFtZVZhbGlkKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGdpdmUgYmFjayB0aGUgc2V0IG9mIHJ1bGVzIHRo
YXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVtZW50IChvciBhIHBzZXVkby1lbGVtZW50KS4KQEAg
LTE2NCw4ICsxNjksNiBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAK
LSAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlIHsg
bnVsbHB0ciB9OwotCiAgICAgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyBtX2luc3BlY3RvckNTU09N
V3JhcHBlcnM7CiAKICAgICBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgbV9tYXRjaGVkRGVjbGFy
YXRpb25zQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAK
aW5kZXggMGNlNTZkOTc0OGIzZGE1YjdlNWY1MDdlZjRkMWM2YTk1Y2RiN2EwYS4uMDFiYmEwZTEz
ZWU5OTM4ZjA3Mzk1NGNjNTVhMmY0MWY0NDZkMWI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtODgsMTUgKzg4LDEyIEBAIFRyZWVSZXNvbHZlcjo6
U2NvcGU6OlNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFNjb3BlJiBlbmNsb3NpbmdTY29w
ZSkKICAgICAsIHNoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpCiAgICAgLCBlbmNsb3NpbmdTY29wZSgm
ZW5jbG9zaW5nU2NvcGUpCiB7Ci0gICAgcmVzb2x2ZXItPnNldE92ZXJyaWRlRG9jdW1lbnRFbGVt
ZW50U3R5bGUoZW5jbG9zaW5nU2NvcGUucmVzb2x2ZXItPm92ZXJyaWRlRG9jdW1lbnRFbGVtZW50
U3R5bGUoKSk7CiB9CiAKIFRyZWVSZXNvbHZlcjo6U2NvcGU6On5TY29wZSgpCiB7CiAgICAgaWYg
KCFzaGFkb3dSb290KQogICAgICAgICByZXNvbHZlci0+ZG9jdW1lbnQoKS5zZXRJc1Jlc29sdmlu
Z1RyZWVTdHlsZShmYWxzZSk7Ci0KLSAgICByZXNvbHZlci0+c2V0T3ZlcnJpZGVEb2N1bWVudEVs
ZW1lbnRTdHlsZShudWxscHRyKTsKIH0KIAogVHJlZVJlc29sdmVyOjpQYXJlbnQ6OlBhcmVudChE
b2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xMjksMTMgKzEyNiwxMyBAQCB2b2lkIFRyZWVSZXNvbHZl
cjo6cG9wU2NvcGUoKQogICAgIHJldHVybiBtX3Njb3BlU3RhY2sucmVtb3ZlTGFzdCgpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFRyZWVSZXNvbHZlcjo6c3R5bGVGb3JTdHls
ZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIGNvbnN0IFJlbmRlclN0eWxlJiBpbmhl
cml0ZWRTdHlsZSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gVHJlZVJlc29sdmVyOjpz
dHlsZUZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgY29uc3QgUmVzb2x2
ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0KQogewogICAgIGF1dG8mIGVsZW1lbnQgPSBzdHlsZWFi
bGUuZWxlbWVudDsKIAogICAgIGlmIChlbGVtZW50Lmhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxi
YWNrcygpKSB7CiAgICAgICAgIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUgPSBzY29wZSgp
LnNoYWRvd1Jvb3QgPyBtX3VwZGF0ZS0+ZWxlbWVudFN0eWxlKCpzY29wZSgpLnNoYWRvd1Jvb3Qt
Pmhvc3QoKSkgOiBudWxscHRyOwotICAgICAgICBpZiAoYXV0byBjdXN0b21TdHlsZSA9IGVsZW1l
bnQucmVzb2x2ZUN1c3RvbVN0eWxlKGluaGVyaXRlZFN0eWxlLCBzaGFkb3dIb3N0U3R5bGUpKSB7
CisgICAgICAgIGlmIChhdXRvIGN1c3RvbVN0eWxlID0gZWxlbWVudC5yZXNvbHZlQ3VzdG9tU3R5
bGUocmVzb2x2ZUNvbnRleHQsIHNoYWRvd0hvc3RTdHlsZSkpIHsKICAgICAgICAgICAgIGlmIChj
dXN0b21TdHlsZS0+cmVsYXRpb25zKQogICAgICAgICAgICAgICAgIGNvbW1pdFJlbGF0aW9ucyhX
VEZNb3ZlKGN1c3RvbVN0eWxlLT5yZWxhdGlvbnMpLCAqbV91cGRhdGUpOwogCkBAIC0xNDYsNyAr
MTQzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBUcmVlUmVzb2x2ZXI6OnN0eWxl
Rm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYgc3QKICAgICBpZiAoYXV0byBzdHlsZSA9IHNj
b3BlKCkuc2hhcmluZ1Jlc29sdmVyLnJlc29sdmUoc3R5bGVhYmxlLCAqbV91cGRhdGUpKQogICAg
ICAgICByZXR1cm4gc3R5bGU7CiAKLSAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVz
b2x2ZXItPnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAmaW5oZXJpdGVkU3R5bGUsIHBhcmVudEJv
eFN0eWxlKCksIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzLCAmc2NvcGUoKS5z
ZWxlY3RvckZpbHRlcik7CisgICAgYXV0byBlbGVtZW50U3R5bGUgPSBzY29wZSgpLnJlc29sdmVy
LT5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgcmVzb2x2ZUNvbnRleHQpOwogCiAgICAgaWYgKGVs
ZW1lbnRTdHlsZS5yZWxhdGlvbnMpCiAgICAgICAgIGNvbW1pdFJlbGF0aW9ucyhXVEZNb3ZlKGVs
ZW1lbnRTdHlsZS5yZWxhdGlvbnMpLCAqbV91cGRhdGUpOwpAQCAtMjEwLDggKzIwNywxMCBAQCBF
bGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVySXNFdmVyTmVlZGVkKCkgJiYgIWVsZW1lbnQu
aGFzRGlzcGxheUNvbnRlbnRzKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBhdXRvIHJl
c29sdmVDb250ZXh0ID0gbWFrZVJlc29sdmVDb250ZXh0KCk7CisKICAgICBTdHlsZWFibGUgc3R5
bGVhYmxlIHsgZWxlbWVudCwgUHNldWRvSWQ6Ok5vbmUgfTsKLSAgICBhdXRvIG5ld1N0eWxlID0g
c3R5bGVGb3JTdHlsZWFibGUoc3R5bGVhYmxlLCBwYXJlbnQoKS5zdHlsZSk7CisgICAgYXV0byBu
ZXdTdHlsZSA9IHN0eWxlRm9yU3R5bGVhYmxlKHN0eWxlYWJsZSwgcmVzb2x2ZUNvbnRleHQpOwog
CiAgICAgaWYgKCFhZmZlY3RzUmVuZGVyZWRTdWJ0cmVlKGVsZW1lbnQsICpuZXdTdHlsZSkpCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0yMjMsMTIgKzIyMiwxMSBAQCBFbGVtZW50VXBkYXRlcyBU
cmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1f
ZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoTm9uRmluYWxTdHlsZSgpOwogICAgIH0KIAotICAgIGF1
dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUobmV3U3R5bGUp
LCBzdHlsZWFibGUsIHBhcmVudCgpLmNoYW5nZSwgcGFyZW50KCkuc3R5bGUsIHBhcmVudEJveFN0
eWxlKCkpOworICAgIGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdU
Rk1vdmUobmV3U3R5bGUpLCBzdHlsZWFibGUsIHBhcmVudCgpLmNoYW5nZSwgcmVzb2x2ZUNvbnRl
eHQpOwogICAgIGF1dG8gZGVzY2VuZGFudHNUb1Jlc29sdmUgPSBjb21wdXRlRGVzY2VuZGFudHNU
b1Jlc29sdmUodXBkYXRlLmNoYW5nZSwgZWxlbWVudC5zdHlsZVZhbGlkaXR5KCksIHBhcmVudCgp
LmRlc2NlbmRhbnRzVG9SZXNvbHZlKTsKIAogICAgIGlmICgmZWxlbWVudCA9PSBtX2RvY3VtZW50
LmRvY3VtZW50RWxlbWVudCgpKSB7CiAgICAgICAgIG1fZG9jdW1lbnRFbGVtZW50U3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZS5zdHlsZSk7Ci0gICAgICAgIHNjb3BlKCkucmVz
b2x2ZXItPnNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUobV9kb2N1bWVudEVsZW1lbnRT
dHlsZS5nZXQoKSk7CiAKICAgICAgICAgaWYgKCFleGlzdGluZ1N0eWxlIHx8IGV4aXN0aW5nU3R5
bGUtPmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpICE9IHVwZGF0ZS5zdHlsZS0+Y29tcHV0ZWRGb250
UGl4ZWxTaXplKCkpIHsKICAgICAgICAgICAgIC8vICJyZW0iIHVuaXRzIGFyZSByZWxhdGl2ZSB0
byB0aGUgZG9jdW1lbnQgZWxlbWVudCdzIGZvbnQgc2l6ZSBzbyB3ZSBuZWVkIHRvIHJlY29tcHV0
ZSBldmVyeXRoaW5nLgpAQCAtMjg2LDEwICsyODQsOSBAQCBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRV
cGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1lbnQs
CiAgICAgaWYgKCFlbGVtZW50VXBkYXRlLnN0eWxlLT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvJiBwYXJlbnRTdHlsZSA9ICplbGVtZW50
VXBkYXRlLnN0eWxlOwotICAgIGF1dG8qIHBhcmVudEJveFN0eWxlID0gcGFyZW50Qm94U3R5bGVG
b3JQc2V1ZG8oZWxlbWVudFVwZGF0ZSk7CisgICAgYXV0byByZXNvbHZlQ29udGV4dCA9IG1ha2VS
ZXNvbHZlQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoZWxlbWVudFVwZGF0ZSk7CiAKLSAgICBhdXRv
IHBzZXVkb1N0eWxlID0gc2NvcGUoKS5yZXNvbHZlci0+cHNldWRvU3R5bGVGb3JFbGVtZW50KGVs
ZW1lbnQsIHsgcHNldWRvSWQgfSwgcGFyZW50U3R5bGUsIHBhcmVudEJveFN0eWxlLCAmc2NvcGUo
KS5zZWxlY3RvckZpbHRlcik7CisgICAgYXV0byBwc2V1ZG9TdHlsZSA9IHNjb3BlKCkucmVzb2x2
ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0lkIH0sIHJlc29sdmVD
b250ZXh0KTsKICAgICBpZiAoIXBzZXVkb1N0eWxlKQogICAgICAgICByZXR1cm4geyB9OwogCkBA
IC0yOTcsNyArMjk0LDI3IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29s
dmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwKICAgICBpZiAoIXBzZXVk
b0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0
aW9ucykKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBjcmVhdGVBbmltYXRlZEVs
ZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHlsZSksIHsgZWxlbWVudCwgcHNldWRvSWQgfSwg
ZWxlbWVudFVwZGF0ZS5jaGFuZ2UsIHBhcmVudFN0eWxlLCBwYXJlbnRCb3hTdHlsZSk7CisgICAg
cmV0dXJuIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKHBzZXVkb1N0eWxlKSwg
eyBlbGVtZW50LCBwc2V1ZG9JZCB9LCBlbGVtZW50VXBkYXRlLmNoYW5nZSwgcmVzb2x2ZUNvbnRl
eHQpOworfQorCitSZXNvbHZlQ29udGV4dCBUcmVlUmVzb2x2ZXI6Om1ha2VSZXNvbHZlQ29udGV4
dCgpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgJnBhcmVudCgpLnN0eWxlLAorICAgICAgICBw
YXJlbnRCb3hTdHlsZSgpLAorICAgICAgICBtX2RvY3VtZW50RWxlbWVudFN0eWxlLmdldCgpLAor
ICAgICAgICAmc2NvcGUoKS5zZWxlY3RvckZpbHRlcgorICAgIH07Cit9CisKK1Jlc29sdmVDb250
ZXh0IFRyZWVSZXNvbHZlcjo6bWFrZVJlc29sdmVDb250ZXh0Rm9yUHNldWRvRWxlbWVudChjb25z
dCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKQoreworICAgIHJldHVybiB7CisgICAgICAg
IGVsZW1lbnRVcGRhdGUuc3R5bGUuZ2V0KCksCisgICAgICAgIHBhcmVudEJveFN0eWxlRm9yUHNl
dWRvRWxlbWVudChlbGVtZW50VXBkYXRlKSwKKyAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRTdHls
ZS5nZXQoKSwKKyAgICAgICAgJnNjb3BlKCkuc2VsZWN0b3JGaWx0ZXIKKyAgICB9OwogfQogCiBj
b25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSgpIGNvbnN0CkBA
IC0zMTQsNyArMzMxLDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50
Qm94U3R5bGUoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1jb25zdCBSZW5kZXJT
dHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZUZvclBzZXVkbyhjb25zdCBFbGVtZW50
VXBkYXRlJiBlbGVtZW50VXBkYXRlKSBjb25zdAorY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNv
bHZlcjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUm
IGVsZW1lbnRVcGRhdGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChlbGVtZW50VXBkYXRlLnN0eWxl
LT5kaXNwbGF5KCkpIHsKICAgICBjYXNlIERpc3BsYXlUeXBlOjpOb25lOgpAQCAtMzI2LDcgKzM0
Myw3IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlRm9y
UHNldWRvKGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsCiAgICAgfQogfQogCi1FbGVtZW50VXBkYXRl
IFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUsIGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDaGFu
Z2UgcGFyZW50Q2hhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSkKK0VsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpj
cmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBu
ZXdTdHlsZSwgY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIENoYW5nZSBwYXJlbnRDaGFuZ2Us
IGNvbnN0IFJlc29sdmVDb250ZXh0JiByZXNvbHZlQ29udGV4dCkKIHsKICAgICBhdXRvJiBlbGVt
ZW50ID0gc3R5bGVhYmxlLmVsZW1lbnQ7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBlbGVtZW50LmRv
Y3VtZW50KCk7CkBAIC0zNDUsNyArMzYyLDcgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6
OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3QKICAg
ICAgICAgLy8gdG8gdXNlIENTUyBBbmltYXRpb25zIGFzIGRlZmluZWQgaW4gdGhlIHByZXZpb3Vz
IHN0eWxlIGNoYW5nZSBldmVudC4gQXMgc3VjaCwgd2UgdXBkYXRlIENTUyBBbmltYXRpb25zIGFm
dGVyIENTUyBUcmFuc2l0aW9ucwogICAgICAgICAvLyBzdWNoIHRoYXQgd2hlbiBDU1MgVHJhbnNp
dGlvbnMgYXJlIHVwZGF0ZWQgdGhlIENTUyBBbmltYXRpb25zIGRhdGEgaXMgdGhlIHNhbWUgYXMg
ZHVyaW5nIHRoZSBwcmV2aW91cyBzdHlsZSBjaGFuZ2UgZXZlbnQuCiAgICAgICAgIGlmICgob2xk
U3R5bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgfHwgbmV3U3R5bGUtPmhhc0FuaW1h
dGlvbnMoKSkKLSAgICAgICAgICAgIHN0eWxlYWJsZS51cGRhdGVDU1NBbmltYXRpb25zKG9sZFN0
eWxlLCAqbmV3U3R5bGUsICZwYXJlbnRTdHlsZSk7CisgICAgICAgICAgICBzdHlsZWFibGUudXBk
YXRlQ1NTQW5pbWF0aW9ucyhvbGRTdHlsZSwgKm5ld1N0eWxlLCByZXNvbHZlQ29udGV4dCk7CiAg
ICAgfQogCiAgICAgLy8gTm93IHdlIGNhbiB1cGRhdGUgYWxsIFdlYiBhbmltYXRpb25zLCB3aGlj
aCB3aWxsIGluY2x1ZGUgQ1NTIEFuaW1hdGlvbnMgYXMgd2VsbApAQCAtMzU2LDEwICszNzMsMTAg
QEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0
ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3QKICAgICAgICAgc3R5bGVhYmxlLnNldExhc3RTdHls
ZUNoYW5nZUV2ZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpuZXdTdHlsZSkpOwogICAg
ICAgICAvLyBBcHBseSBhbGwga2V5ZnJhbWUgZWZmZWN0cyB0byB0aGUgbmV3IHN0eWxlLgogICAg
ICAgICBhdXRvIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm5ld1N0eWxl
KTsKLSAgICAgICAgYW5pbWF0aW9uSW1wYWN0ID0gc3R5bGVhYmxlLmFwcGx5S2V5ZnJhbWVFZmZl
Y3RzKCphbmltYXRlZFN0eWxlLCAqcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCAm
cGFyZW50U3R5bGUpOworICAgICAgICBhbmltYXRpb25JbXBhY3QgPSBzdHlsZWFibGUuYXBwbHlL
ZXlmcmFtZUVmZmVjdHMoKmFuaW1hdGVkU3R5bGUsICpwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2
ZW50U3R5bGUsIHJlc29sdmVDb250ZXh0KTsKICAgICAgICAgbmV3U3R5bGUgPSBXVEZNb3ZlKGFu
aW1hdGVkU3R5bGUpOwogCi0gICAgICAgIEFkanVzdGVyIGFkanVzdGVyKGRvY3VtZW50LCBwYXJl
bnRTdHlsZSwgcGFyZW50Qm94U3R5bGUsIHN0eWxlYWJsZS5wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6
Tm9uZSA/ICZlbGVtZW50IDogbnVsbHB0cik7CisgICAgICAgIEFkanVzdGVyIGFkanVzdGVyKGRv
Y3VtZW50LCAqcmVzb2x2ZUNvbnRleHQucGFyZW50U3R5bGUsIHJlc29sdmVDb250ZXh0LnBhcmVu
dEJveFN0eWxlLCBzdHlsZWFibGUucHNldWRvSWQgPT0gUHNldWRvSWQ6Ok5vbmUgPyAmZWxlbWVu
dCA6IG51bGxwdHIpOwogICAgICAgICBhZGp1c3Rlci5hZGp1c3RBbmltYXRlZFN0eWxlKCpuZXdT
dHlsZSwgYW5pbWF0aW9uSW1wYWN0KTsKICAgICB9IGVsc2UKICAgICAgICAgc3R5bGVhYmxlLnNl
dExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuaAppbmRleCBmMjVkMjJkMjQ0NDkxMDNhNDM0NWM4ODkxZGM1N2I5
YWQwNWZhYWVjLi42NzM3NjI0Y2FiZWE0OTJmODFhYjBlZGRkYTczYWE5MjQ2ZTc1YjNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAg
Y2xhc3MgU2hhZG93Um9vdDsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKIGNsYXNzIFJlc29sdmVyOwor
c3RydWN0IFJlc29sdmVDb250ZXh0OwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURF
TlRJRklFUihUcmVlUmVzb2x2ZXJTY29wZSk7CiBjbGFzcyBUcmVlUmVzb2x2ZXIgewpAQCAtNTUs
MTMgKzU2LDEzIEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiByZXNvbHZl
KCk7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZUZv
clN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmLCBjb25zdCBSZW5kZXJTdHlsZSYgaW5oZXJpdGVk
U3R5bGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JTdHlsZWFi
bGUoY29uc3QgU3R5bGVhYmxlJiwgY29uc3QgUmVzb2x2ZUNvbnRleHQmKTsKIAogICAgIHZvaWQg
cmVzb2x2ZUNvbXBvc2VkVHJlZSgpOwogCiAgICAgRWxlbWVudFVwZGF0ZXMgcmVzb2x2ZUVsZW1l
bnQoRWxlbWVudCYpOwogCi0gICAgc3RhdGljIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5pbWF0ZWRF
bGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFN0eWxlYWJs
ZSYsIENoYW5nZSwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50Qm94U3R5bGUpOworICAgIHN0YXRpYyBFbGVtZW50VXBkYXRlIGNyZWF0ZUFu
aW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBT
dHlsZWFibGUmLCBDaGFuZ2UsIGNvbnN0IFJlc29sdmVDb250ZXh0Jik7CiAgICAgc3RkOjpvcHRp
b25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVs
ZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAKICAgICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3VudGVk
PFNjb3BlPiB7CkBAIC05OSw4ICsxMDAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvcFBhcmVu
dCgpOwogICAgIHZvaWQgcG9wUGFyZW50c1RvRGVwdGgodW5zaWduZWQgZGVwdGgpOwogCisgICAg
UmVzb2x2ZUNvbnRleHQgbWFrZVJlc29sdmVDb250ZXh0KCk7CisgICAgUmVzb2x2ZUNvbnRleHQg
bWFrZVJlc29sdmVDb250ZXh0Rm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRlJik7
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlKCkgY29uc3Q7Ci0gICAgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlRm9yUHNldWRvKGNvbnN0IEVsZW1lbnRVcGRh
dGUmKSBjb25zdDsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGVGb3JQc2V1
ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUmKSBjb25zdDsKIAogICAgIERvY3VtZW50JiBt
X2RvY3VtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV9kb2N1bWVudEVs
ZW1lbnRTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCmluZGV4IGNmYjA3NmZkNTQ0
ZTg5OWMwODJiNGJlMDNhYzA4NWZlYjlmNTY0NjkuLmM5MGVlZWEwYTAwZmNhODBhNTA2OTNhZGM2
YTdiOGIwNDNlMGY0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcApAQCAtMjExLDcg
KzIxMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSog
Y3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpIGNvbnN0Cit2b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NT
QW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYgcmVzb2x2ZUNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgYXV0byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVuc3VyZUtleWZy
YW1lRWZmZWN0U3RhY2soKTsKIApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgU3R5bGVhYmxlOjp1
cGRhdGVDU1NBbmltYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0
IFJlbmRlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZm91bmRNYXRjaGluZ0Fu
aW1hdGlvbikKLSAgICAgICAgICAgICAgICBuZXdBbmltYXRpb25zLmFkZChDU1NBbmltYXRpb246
OmNyZWF0ZSgqdGhpcywgY3VycmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSwg
cGFyZW50RWxlbWVudFN0eWxlKSk7CisgICAgICAgICAgICAgICAgbmV3QW5pbWF0aW9ucy5hZGQo
Q1NTQW5pbWF0aW9uOjpjcmVhdGUoKnRoaXMsIGN1cnJlbnRBbmltYXRpb24sIGN1cnJlbnRTdHls
ZSwgbmV3U3R5bGUsIHJlc29sdmVDb250ZXh0KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4
OCw3ICszODgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJs
ZUFuZFByb3BlcnR5KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYgogICAgICAgICAgICAgLy8gSWYg
YSB0cmFuc2l0aW9uIGhhcyBub3QgeWV0IHN0YXJ0ZWQgb3Igc3RhcnRlZCB3aGVuIGFuaW1hdGlv
bnMgd2VyZSBsYXN0IHVwZGF0ZWQsIHVzZSB0aGUgdGltZWxpbmUgdGltZSBhdCBpdHMgY3JlYXRp
b24KICAgICAgICAgICAgIC8vIGFzIGl0cyBzdGFydCB0aW1lIHRvIGVuc3VyZSB0aGF0IGl0IHdp
bGwgcHJvZHVjZSBhIHN0eWxlIHdpdGggcHJvZ3Jlc3MgPiAwLgogICAgICAgICAgICAgYm9vbCBz
aG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID0gaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0
aW9uKSAmJiAoIWFuaW1hdGlvbi0+c3RhcnRUaW1lKCkgfHwgKmFuaW1hdGlvbi0+c3RhcnRUaW1l
KCkgPT0gc3R5bGVhYmxlLmVsZW1lbnQuZG9jdW1lbnQoKS50aW1lbGluZSgpLmN1cnJlbnRUaW1l
KCkpOwotICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUsIG51bGxw
dHIsIHNob3VsZFVzZVRpbWVsaW5lVGltZUF0Q3JlYXRpb24gPyBkb3duY2FzdDxDU1NUcmFuc2l0
aW9uPigqYW5pbWF0aW9uKS50aW1lbGluZVRpbWVBdENyZWF0aW9uKCkgOiBzdGQ6Om51bGxvcHQp
OworICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUsIHsgbnVsbHB0
ciB9LCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID8gZG93bmNhc3Q8Q1NTVHJhbnNp
dGlvbj4oKmFuaW1hdGlvbikudGltZWxpbmVUaW1lQXRDcmVhdGlvbigpIDogc3RkOjpudWxsb3B0
KTsKICAgICAgICAgICAgIHJldHVybiBhbmltYXRlZFN0eWxlOwogICAgICAgICB9CiAKQEAgLTQw
OCw3ICs0MDgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJs
ZUFuZFByb3BlcnR5KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYgogICAgIGF1dG8gYWZ0ZXJDaGFu
Z2VTdHlsZSA9IFsmXSgpIC0+IGNvbnN0IFJlbmRlclN0eWxlIHsKICAgICAgICAgaWYgKGlzPENT
U0FuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBhbmltYXRpb24tPmlzUmVsZXZhbnQoKSkgewogICAg
ICAgICAgICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKG5ld1N0eWxl
KTsKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCB7IG51bGxw
dHIgfSk7CiAgICAgICAgICAgICByZXR1cm4gYW5pbWF0ZWRTdHlsZTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlYWJsZS5oCmluZGV4IDIzYzhhZmFjOTBjNDZkNGQxZjIxM2JjYWFkMDEw
NDY2ZGNhNGFiNWMuLjY1OTU1YzM1ZGJlMjViZjhlNDRlNGU0ZjU1NjJjMGU0ZWE3ZmExMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCkBAIC04NSw5ICs4NSw5IEBAIHN0cnVjdCBTdHlsZWFi
bGUgewogICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMocHNldWRvSWQp
OwogICAgIH0KIAotICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5ZnJhbWVF
ZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHByZXZp
b3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVs
ZW1lbnRTdHlsZSkgY29uc3QKKyAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBhcHBseUtl
eWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
JiBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZl
Q29udGV4dCYgcmVzb2x2ZUNvbnRleHQpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gZWxl
bWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKHBzZXVkb0lkKS5hcHBseUtleWZyYW1lRWZm
ZWN0cyh0YXJnZXRTdHlsZSwgcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCBwYXJl
bnRFbGVtZW50U3R5bGUpOworICAgICAgICByZXR1cm4gZWxlbWVudC5lbnN1cmVLZXlmcmFtZUVm
ZmVjdFN0YWNrKHBzZXVkb0lkKS5hcHBseUtleWZyYW1lRWZmZWN0cyh0YXJnZXRTdHlsZSwgcHJl
dmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCByZXNvbHZlQ29udGV4dCk7CiAgICAgfQog
CiAgICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucygpIGNvbnN0CkBAIC0x
NTUsNyArMTU1LDcgQEAgc3RydWN0IFN0eWxlYWJsZSB7CiAKICAgICB2b2lkIHJlbW92ZURlY2xh
cmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudChXZWJBbmltYXRpb24mKSBj
b25zdDsKIAotICAgIHZvaWQgdXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSog
Y3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVD
U1NBbmltYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBhZnRlckNoYW5nZVN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmKSBj
b25zdDsKICAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBj
dXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgY29uc3Q7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggODY0MjdkNzk1ZWViMmE3ZTZiNWFhY2Q5MGE2
NTNiMDM0ZjE1ZTk0MC4uZTkzOGJhYzI3NjdiZjM5MmRiNWQ2M2RhOWFiZjhiYTdhN2IyZWE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNjM4LDE2ICs2MzgsMTYgQEAgdm9pZCBT
VkdFbGVtZW50OjphbmltYXRvcldpbGxCZURlbGV0ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKICAgICBwcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSgpLmFuaW1hdG9yV2lsbEJl
RGVsZXRlZChhdHRyaWJ1dGVOYW1lKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiBTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpF
bGVtZW50U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHlsZTo6
UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAg
ICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNlPiB0cmVlIHdlIGdldCB0aGUgc3R5bGUg
ZnJvbSB0aGUgZGVmaW5pdGlvbiB0cmVlLgogICAgIGlmIChSZWZQdHIgc3R5bGVFbGVtZW50ID0g
dGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkgewotICAgICAgICBhdXRvIHN0eWxlID0gc3R5
bGVFbGVtZW50LT5yZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKKyAgICAgICAgYXV0byBzdHls
ZSA9IHN0eWxlRWxlbWVudC0+cmVzb2x2ZVN0eWxlKHJlc29sdmVDb250ZXh0KTsKICAgICAgICAg
U3R5bGU6OkFkanVzdGVyOjphZGp1c3RTVkdFbGVtZW50U3R5bGUoKnN0eWxlLnJlbmRlclN0eWxl
LCAqdGhpcyk7CiAgICAgICAgIHJldHVybiBzdHlsZTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVz
b2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CisgICAgcmV0dXJuIHJlc29sdmVTdHlsZShyZXNvbHZl
Q29udGV4dCk7CiB9CiAKIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIFNWR0VsZW1lbnQ6OmFuaW1h
dGVkU01JTFN0eWxlUHJvcGVydGllcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRl
eCAyNTdhZTcwN2RjNzhjMGUyNGZiMjdjODI3Mjk4ZTAxMDZlMTJkNjg5Li5hZTU4YjM5NzU0YjUx
M2E0ZTlhZjQyM2YxZGIxNGI2NGIxMjlkNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAg
LTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvcnJlc3BvbmRpbmdFbGVt
ZW50KFNWR0VsZW1lbnQqKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHls
ZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6
OlJlc29sdmVDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3Zl
cnJpZGU7CiAKICAgICBzdGF0aWMgUXVhbGlmaWVkTmFtZSBhbmltYXRhYmxlQXR0cmlidXRlRm9y
TmFtZShjb25zdCBBdG9tU3RyaW5nJik7CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDc5YzFlOGMyZjJkNjE2ODMxOTMzZTM4MTdiYzI5
MmVlNWYwZTQ1MWEuLjYyNzJmZTNmOTZlOTFjOWMzYjJkOGQ1OTQwMTY2OWFmMzg2NTY0Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgKQEAgLTc3LDcgKzc3LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmICghbV9vdmVy
cmlkZUNvbXB1dGVkU3R5bGUgfHwgbV9uZWVkc092ZXJyaWRlQ29tcHV0ZWRTdHlsZVVwZGF0ZSkg
ewogICAgICAgICAgICAgLy8gVGhlIHN0eWxlIGNvbXB1dGVkIGhlcmUgY29udGFpbnMgbm8gQ1NT
IEFuaW1hdGlvbnMvVHJhbnNpdGlvbnMgb3IgU01JTCBpbmR1Y2VkIHJ1bGVzIC0gdGhpcyBpcyBu
ZWVkZWQgdG8gY29tcHV0ZSB0aGUgImJhc2UgdmFsdWUiIGZvciB0aGUgU01JTCBhbmltYXRpb24g
c2FuZHdoaWNoIG1vZGVsLgotICAgICAgICAgICAgbV9vdmVycmlkZUNvbXB1dGVkU3R5bGUgPSBl
bGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgcGFyZW50U3R5
bGUsIG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzRXhjbHVkaW5n
U01JTCkucmVuZGVyU3R5bGU7CisgICAgICAgICAgICBtX292ZXJyaWRlQ29tcHV0ZWRTdHlsZSA9
IGVsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBhcmVu
dFN0eWxlIH0sIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzRXhjbHVkaW5nU01J
TCkucmVuZGVyU3R5bGU7CiAgICAgICAgICAgICBtX25lZWRzT3ZlcnJpZGVDb21wdXRlZFN0eWxl
VXBkYXRlID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKG1fb3ZlcnJpZGVDb21w
dXRlZFN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxODdhZTE4
ZDlhMGMyYzZiMDQyMDI2NzhiYzAwOWEwYTAxODFlZjg2Li4zZDE4OGU2NzY0MTVhNDFmMzFmZjc1
NWE1ZjlkZmE3MzRhNzRkMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC02MDE4LDcgKzYwMTgsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpoaWdobGlnaHRQc2V1ZG9FbGVt
ZW50Q29sb3IoY29uc3QgU3RyaW5nJiBoaWdobGlnaHROYW1lLCBFbGVtZQogICAgIGlmICghcGFy
ZW50U3R5bGUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHN0eWxlID0gc3R5bGVS
ZXNvbHZlci5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgeyBQc2V1ZG9JZDo6SGlnaGxp
Z2h0LCBoaWdobGlnaHROYW1lIH0sICpwYXJlbnRTdHlsZSk7CisgICAgYXV0byBzdHlsZSA9IHN0
eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgUHNldWRvSWQ6Okhp
Z2hsaWdodCwgaGlnaGxpZ2h0TmFtZSB9LCB7IHBhcmVudFN0eWxlIH0pOwogICAgIGlmICghc3R5
bGUpCiAgICAgICAgIHJldHVybiB7IH07CiAK
</data>
<flag name="commit-queue"
          id="466602"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442161</attachid>
            <date>2021-10-22 07:07:44 -0700</date>
            <delta_ts>2021-10-22 08:47:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232137-20211022170742.patch</filename>
            <type>text/plain</type>
            <size>76288</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI2NmIxMmUxYmI2YTQx
YjhkMDJjMGUzZmU2MmUxMmYwODQzZGFjNS4uNWUzYjFhMGVlMGRiMDU2ZDhmODJhMDQzMmRjZjUy
MzFhNDg3YWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMS0xMC0yMiAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHN0eWxlIHJl
c29sdmVyIGNvbnRleHQgYXJndW1lbnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjEzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQg
c3RydWN0IGFuZCB1c2UgaXQgdG8gY29uc2lzdGVudGx5IHBhc3MgYXJvdW5kIGFsbCBjb250ZXh0
IGFyZ3VtZW50IG5lZWRlZAorICAgICAgICBmb3IgcmVzb2x2aW5nIHN0eWxlIGluc3RlYWQgb2Yg
anVzdCBwYXNzaW5nIGFyb3VuZCBpbmRpdmlkdWFsIGFyZ3VtZW50cyBhcyBzZXBhcmF0ZSBmdW5j
dGlvbiBwYXJhbWV0ZXIuCisKKyAgICAgICAgQW4gaW1tZWRpYXRlbHkgYmVuZWZpdCBpcyB0aGF0
IHdlIGNhbiByZW1vdmUgdGhlIHN0YXRlZnVsIHNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5
bGUgaGFjay4KKyAgICAgICAgVGhpcyBhbHNvIG1ha2VzIHRoZSBzdHlsZSBzeXN0ZW0gbW9yZSBm
bGV4aWJsZSBhbmQgZXh0ZW5zaWJsZSBmb3IgZnV0dXJlIHdvcmsuCisKKyAgICAgICAgTW9zdCBv
ZiB0aGUgcGF0Y2ggaXMgbWVjaGFuaWNhbGx5IHJlcGxhY2luZyBhIHBhcmVudCBzdHlsZSBhcmd1
bWVudCBpbiB2YXJpb3VzIHBsYWNlcyB3aXRoIGEgY29udGV4dAorICAgICAgICBzdHJ1Y3QgYXJn
dW1lbnQuCisKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0Lmg6CisgICAgICAg
ICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NBbmlt
YXRpb246OmNyZWF0ZSk6CisgICAgICAgICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oOgorICAg
ICAgICAqIGFuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1RyYW5zaXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUcmFuc2l0aW9uOjpy
ZXNvbHZlKToKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oOgorICAgICAgICAq
IGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogYW5pbWF0aW9uL0Rl
Y2xhcmF0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp1cGRhdGVCbGVuZGluZ0tl
eWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZURlY2xh
cmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZnJhbWVFZmZlY3Q6OmNvbXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUpOgorICAgICAgICAq
IGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0U3RhY2s6
OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKToKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3RTdGFjay5oOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0
aW9uLmg6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUXVlcnlNYXRjaGVyOjpkb2N1bWVudEVsZW1lbnRVc2VyQWdlbnRTdHlsZSBj
b25zdCk6CisgICAgICAgICogY3NzL1N0eWxlTWVkaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVNZWRpYTo6bWF0Y2hNZWRpdW0gY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQ
ZW5kaW5nU3R5bGVzaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
aXRsZUVsZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lRmllbGRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L0RhdGVUaW1lRmllbGRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJDb250YWluZXI6
OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVy
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpjb21wdXRlRmlyc3RMaW5l
U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0VW5jYWNo
ZWRQc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1l
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6OmZpbGxJbXBsaWNpdEtl
eWZyYW1lcyk6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OlJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpSZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKiBzdHls
ZS9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6Om92
ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpzZXRPdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6U2NvcGU6On5TY29wZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpzdHlsZUZvclN0eWxlYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6bWFrZVJlc29sdmVDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6Om1ha2VSZXNvbHZlQ29udGV4
dEZvclBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZl
cjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZUZvclBz
ZXVkbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
aDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZWFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVhYmxlOjp1cGRhdGVDU1NBbmltYXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnVw
ZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjphcHBseUtleWZy
YW1lRWZmZWN0cyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6b3ZlcnJpZGVDb21wdXRlZFN0eWxl
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmhpZ2hsaWdodFBzZXVkb0VsZW1lbnRDb2xvcik6CisKIDIwMjEtMTAtMjIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB0ZXh0IGludGVyZmFjZSB3aGVuIGJ1aWxkaW5n
IHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25FZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaApp
bmRleCAyNjUzMjIxM2E3NDU3ZGQwMjU4MDhmMDgwMWMwY2RmMWQyNTAzYTc3Li4zZWM5NjViYTc5
OTllN2E0YWVjYjhhYjBiZjcyMzQzYTJmNmUwY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGlvbkVmZmVjdC5oCkBAIC00Nyw2ICs0NywxMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK25hbWVzcGFjZSBTdHlsZSB7CitzdHJ1Y3QgUmVzb2x2ZUNvbnRleHQ7Cit9CisK
IGNsYXNzIEFuaW1hdGlvbkVmZmVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvbkVmZmVj
dD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBbmltYXRpb25FZmZlY3Q+IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5BbmltYXRpb25FZmZlY3QoKTsKQEAgLTYxLDcgKzY1LDcgQEAgcHVibGljOgog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGJpbmRpbmdzVXBkYXRlVGltaW5nKHN0ZDo6b3B0aW9uYWw8
T3B0aW9uYWxFZmZlY3RUaW1pbmc+KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVUaW1p
bmcoc3RkOjpvcHRpb25hbDxPcHRpb25hbEVmZmVjdFRpbWluZz4pOwogCi0gICAgdmlydHVhbCB2
b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNv
bnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6
Om51bGxvcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgYW5pbWF0aW9uRGlkVGljaygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYW5p
bWF0aW9uRGlkUGxheSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlv
bi5jcHAKaW5kZXggMzEzZjBkYzg0OWU4ZmNmYTVkMTIzMmFjOWUwODg5YzFlMmY2MmVjMi4uZWJh
YjRlOThjZWZhMzQ0YjJlYzg0NmY3NWY3NmU3NGQ1MTNmZjVhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKQEAgLTM2LDEwICszNiwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NBbmltYXRpb24pOwog
Ci1SZWY8Q1NTQW5pbWF0aW9uPiBDU1NBbmltYXRpb246OmNyZWF0ZShjb25zdCBTdHlsZWFibGUm
IG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpCitSZWY8Q1NTQW5pbWF0aW9uPiBDU1NB
bmltYXRpb246OmNyZWF0ZShjb25zdCBTdHlsZWFibGUmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFu
aW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYg
cmVzb2x2ZUNvbnRleHQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU0Fu
aW1hdGlvbihvd25pbmdFbGVtZW50LCBiYWNraW5nQW5pbWF0aW9uKSk7Ci0gICAgcmVzdWx0LT5p
bml0aWFsaXplKG9sZFN0eWxlLCBuZXdTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICBy
ZXN1bHQtPmluaXRpYWxpemUob2xkU3R5bGUsIG5ld1N0eWxlLCByZXNvbHZlQ29udGV4dCk7CiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkFuaW1hdGlvbihyZXN1
bHQuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5p
bWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKaW5kZXgg
NTAzOTk3OGRlMDFjZTdlYTk2YWQ4NzY2NTA1M2QxZDUzMjBkMWEyNi4uMGRlYTMwZTUwYzAxYjc3
M2FkMDQyOGE2MTViODA0YTBlYjhhNThlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NTU0FuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NB
bmltYXRpb24uaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIENT
U0FuaW1hdGlvbiBmaW5hbCA6IHB1YmxpYyBEZWNsYXJhdGl2ZUFuaW1hdGlvbiB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChDU1NBbmltYXRpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8Q1NTQW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgU3R5bGVhYmxlJiwgY29uc3QgQW5pbWF0aW9u
JiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIHN0YXRpYyBS
ZWY8Q1NTQW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgU3R5bGVhYmxlJiwgY29uc3QgQW5pbWF0aW9u
JiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYpOwogICAgIH5DU1NBbmltYXRpb24oKSA9
IGRlZmF1bHQ7CiAKICAgICBib29sIGlzQ1NTQW5pbWF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Ry
YW5zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3Bw
CmluZGV4IDQwYmMzNGQ2YTE0YzBkY2QyZGIzN2FjMGRiNTFhNTYzNjY2NTM1MWUuLjk2N2NmOWQz
NmYyNmY1NTcwYzdkNmUyNTdhODliMDEyMjBiMzhjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPENTU1RyYW5zaXRp
b24+IENTU1RyYW5zaXRpb246OmNyZWF0ZShjb25zdCBTdHlsZWFibGUmIG93bmluZ0VsZW1lbnQs
IENTU1Byb3AKIHsKICAgICBBU1NFUlQob2xkU3R5bGUpOwogICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRSZWYoKm5ldyBDU1NUcmFuc2l0aW9uKG93bmluZ0VsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0
aW9uVGltZSwgYmFja2luZ0FuaW1hdGlvbiwgKm9sZFN0eWxlLCBuZXdTdHlsZSwgcmV2ZXJzaW5n
QWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7Ci0gICAgcmVz
dWx0LT5pbml0aWFsaXplKG9sZFN0eWxlLCBuZXdTdHlsZSwgbnVsbHB0cik7CisgICAgcmVzdWx0
LT5pbml0aWFsaXplKG9sZFN0eWxlLCBuZXdTdHlsZSwgeyBudWxscHRyIH0pOwogICAgIHJlc3Vs
dC0+c2V0VGltaW5nUHJvcGVydGllcyhkZWxheSwgZHVyYXRpb24pOwogCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJBbmltYXRpb24ocmVzdWx0LmdldCgpKTsKQEAg
LTYxLDkgKzYxLDkgQEAgQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFi
bGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwKIHsKIH0KIAotdm9pZCBDU1NU
cmFuc2l0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRp
bWUpCit2b2lkIENTU1RyYW5zaXRpb246OnJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxl
LCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0LCBzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IHN0YXJ0VGltZSkKIHsKLSAgICBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6cmVz
b2x2ZSh0YXJnZXRTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlLCBzdGFydFRpbWUpOworICAgIERl
Y2xhcmF0aXZlQW5pbWF0aW9uOjpyZXNvbHZlKHRhcmdldFN0eWxlLCByZXNvbHZlQ29udGV4dCwg
c3RhcnRUaW1lKTsKICAgICBtX2N1cnJlbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cih0
YXJnZXRTdHlsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9D
U1NUcmFuc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5o
CmluZGV4IDYzZWIzY2EwM2UzYjEyYjkyYTVjZWNmMTQwZWM3MDYzMjEzMDZkMGIuLjc0YmU0Y2M3
NmYyOTIzNjI0OTYxYzE5OTcxMmUxZWIyMDlmYjc5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0NTU1RyYW5zaXRpb24uaApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIENTU1Ry
YW5zaXRpb24oY29uc3QgU3R5bGVhYmxlJiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBn
ZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBy
ZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIGRvdWJsZSk7CiAgICAgdm9pZCBzZXRUaW1pbmdQ
cm9wZXJ0aWVzKFNlY29uZHMgZGVsYXksIFNlY29uZHMgZHVyYXRpb24pOwogICAgIFJlZjxBbmlt
YXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
ZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7Ci0gICAgdm9pZCByZXNvbHZlKFJlbmRlclN0
eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPikgZmluYWw7CisgICAgdm9pZCByZXNvbHZlKFJlbmRlclN0
eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0Jiwgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPikgZmluYWw7CiAKICAgICBDU1NQcm9wZXJ0eUlEIG1fcHJvcGVydHk7CiAg
ICAgTW9ub3RvbmljVGltZSBtX2dlbmVyYXRpb25UaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKaW5kZXggZjE5NjA4ZTA0YWVjM2Ix
MTRmY2JmNDYzZTA3ZTMyNmYxMDlhMWRkNi4uNDhiZDYzMDg0OTAyYWE4YWQ4NzBkZmU5Y2RkNTk2
NjBiNDgyZGMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0
aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRp
dmVBbmltYXRpb24uY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1h
dGlvbjo6c2V0QmFja2luZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRp
b24KICAgICBzeW5jUHJvcGVydGllc1dpdGhCYWNraW5nQW5pbWF0aW9uKCk7CiB9CiAKLXZvaWQg
RGVjbGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRFbGVtZW50U3R5bGUpCit2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFsaXplKGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBj
b25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0KQogewogICAgIC8vIFdl
IG5lZWQgdG8gc3VzcGVuZCBpbnZhbGlkYXRpb24gb2YgdGhlIGFuaW1hdGlvbidzIGtleWZyYW1l
IGVmZmVjdCBkdXJpbmcgaXRzIGNyZWF0aW9uCiAgICAgLy8gYXMgaXQgd291bGQgb3RoZXJ3aXNl
IHRyaWdnZXIgaW52YWxpZGF0aW9uIG9mIHRoZSBkb2N1bWVudCdzIHN0eWxlIGFuZCB0aGlzIHdv
dWxkIGJlCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5p
dGlhbGl6ZShjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclMKIAogICAg
IHNldEVmZmVjdChLZXlmcmFtZUVmZmVjdDo6Y3JlYXRlKCptX293bmluZ0VsZW1lbnQsIG1fb3du
aW5nUHNldWRvSWQpKTsKICAgICBzZXRUaW1lbGluZSgmbV9vd25pbmdFbGVtZW50LT5kb2N1bWVu
dCgpLnRpbWVsaW5lKCkpOwotICAgIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihlZmZlY3QoKSkt
PmNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBu
ZXdTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICBkb3duY2FzdDxLZXlmcmFtZUVmZmVj
dD4oZWZmZWN0KCkpLT5jb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1l
cyhvbGRTdHlsZSwgbmV3U3R5bGUsIHJlc29sdmVDb250ZXh0KTsKICAgICBzeW5jUHJvcGVydGll
c1dpdGhCYWNraW5nQW5pbWF0aW9uKCk7CiAgICAgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5
U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBsYXlpbmcpCiAgICAgICAgIHBsYXkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5k
ZXggODUyNGI3OGQ3NDMxZmE5Nzk3NDYyNzQ5MzZiOTI0NzBmZWMwNDNmNi4uOWE0NDZmZDFjMDYy
YTUwMTA3MjgyYWViZTEzNmFhNzIyMGVmYWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uKGNvbnN0IFN0eWxlYWJsZSYsIGNv
bnN0IEFuaW1hdGlvbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0
eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpOwogICAgIC8vIGVsYXBzZWRUaW1lIGlz
IHRoZSBhbmltYXRpb24ncyBjdXJyZW50IHRpbWUgYXQgdGhlIHRpbWUgdGhlIGV2ZW50IGlzIGFk
ZGVkIGFuZCBpcyBleHBvc2VkIHRocm91Z2ggdGhlIERPTSBBUEksIHRpbWVsaW5lVGltZSBpcyB0
aGUgYW5pbWF0aW9ucycKICAgICAvLyB0aW1lbGluZSBjdXJyZW50IHRpbWUgYW5kIGlzIG5vdCBl
eHBvc2VkIHRocm91Z2ggdGhlIERPTSBBUEkgYnV0IHVzZWQgYnkgdGhlIERvY3VtZW50VGltZWxp
bmUgZm9yIHNvcnRpbmcgZXZlbnRzIGJlZm9yZSBkaXNwYXRjaC4gCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCA2N2I5YWYwYzAxNjg2Zjk4ZDI1YWI2
ODAzNzMxMGY1ZmUxYWRmZTk5Li40MTYyYjc0MmMyZWI2MTM3NDBjYjZmNDljZjhjYTBmYThmYWYy
ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAg
LTgxMiw3ICs4MTIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBLZXlmcmFtZUVmZmVjdDo6cHJvY2Vz
c0tleWZyYW1lcyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbAogICAgIHJldHVybiB7IH07
CiB9CiAKLXZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRl
clN0eWxlJiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5
bGUpCit2b2lkIEtleWZyYW1lRWZmZWN0Ojp1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyhSZW5kZXJT
dHlsZSYgZWxlbWVudFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVD
b250ZXh0KQogewogICAgIGlmICghbV9ibGVuZGluZ0tleWZyYW1lcy5pc0VtcHR5KCkgfHwgIW1f
dGFyZ2V0KQogICAgICAgICByZXR1cm47CkBAIC04MjksNyArODI5LDcgQEAgdm9pZCBLZXlmcmFt
ZUVmZmVjdDo6dXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmIGVsZW1lbnRTdHls
ZSwgY29uc3QgUmUKICAgICAgICAgICAgIGtleWZyYW1lTGlzdC5hZGRQcm9wZXJ0eShzdHlsZVBy
b3BlcnRpZXMtPnByb3BlcnR5QXQoaSkuaWQoKSk7CiAKICAgICAgICAgYXV0byBrZXlmcmFtZVJ1
bGUgPSBTdHlsZVJ1bGVLZXlmcmFtZTo6Y3JlYXRlKFdURk1vdmUoc3R5bGVQcm9wZXJ0aWVzKSk7
Ci0gICAgICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVSZXNvbHZlci5zdHlsZUZvcktl
eWZyYW1lKCptX3RhcmdldCwgJmVsZW1lbnRTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlLCBrZXlm
cmFtZVJ1bGUucHRyKCksIGtleWZyYW1lVmFsdWUpKTsKKyAgICAgICAga2V5ZnJhbWVWYWx1ZS5z
ZXRTdHlsZShzdHlsZVJlc29sdmVyLnN0eWxlRm9yS2V5ZnJhbWUoKm1fdGFyZ2V0LCAmZWxlbWVu
dFN0eWxlLCByZXNvbHZlQ29udGV4dCwga2V5ZnJhbWVSdWxlLnB0cigpLCBrZXlmcmFtZVZhbHVl
KSk7CiAgICAgICAgIGtleWZyYW1lTGlzdC5pbnNlcnQoV1RGTW92ZShrZXlmcmFtZVZhbHVlKSk7
CiAgICAgfQogCkBAIC0xMDAzLDE2ICsxMDAzLDE2IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNo
ZWNrRm9yTWF0Y2hpbmdDb2xvckZpbHRlckZ1bmN0aW9uTGlzdHMoKQogICAgIH0pOwogfQogCi12
b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tl
eWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK3ZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OmNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVz
KGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxl
LCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0KQogewogICAgIEFT
U0VSVChpczxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKCkpKTsKICAgICBpZiAoaXM8
Q1NTQW5pbWF0aW9uPihhbmltYXRpb24oKSkpCi0gICAgICAgIGNvbXB1dGVDU1NBbmltYXRpb25C
bGVuZGluZ0tleWZyYW1lcyhuZXdTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICAgICAg
Y29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG5ld1N0eWxlLCByZXNvbHZlQ29u
dGV4dCk7CiAgICAgZWxzZSBpZiAoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKCkpKQogICAg
ICAgICBjb21wdXRlQ1NTVHJhbnNpdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBuZXdT
dHlsZSk7CiB9CiAKLXZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVDU1NBbmltYXRpb25CbGVu
ZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSYgdW5hbmltYXRlZFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKQordm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29t
cHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmFu
aW1hdGVkU3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYgcmVzb2x2ZUNvbnRleHQp
CiB7CiAgICAgQVNTRVJUKGlzPENTU0FuaW1hdGlvbj4oYW5pbWF0aW9uKCkpKTsKICAgICBBU1NF
UlQoZG9jdW1lbnQoKSk7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0
Ojpjb21wdXRlQ1NTQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3R5bGUm
IHVuYQogCiAgICAgS2V5ZnJhbWVMaXN0IGtleWZyYW1lTGlzdChiYWNraW5nQW5pbWF0aW9uLm5h
bWUoKS5zdHJpbmcpOwogICAgIGlmIChhdXRvKiBzdHlsZVNjb3BlID0gU3R5bGU6OlNjb3BlOjpm
b3JPcmRpbmFsKCptX3RhcmdldCwgYmFja2luZ0FuaW1hdGlvbi5uYW1lU3R5bGVTY29wZU9yZGlu
YWwoKSkpCi0gICAgICAgIHN0eWxlU2NvcGUtPnJlc29sdmVyKCkua2V5ZnJhbWVTdHlsZXNGb3JB
bmltYXRpb24oKm1fdGFyZ2V0LCAmdW5hbmltYXRlZFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUs
IGtleWZyYW1lTGlzdCk7CisgICAgICAgIHN0eWxlU2NvcGUtPnJlc29sdmVyKCkua2V5ZnJhbWVT
dHlsZXNGb3JBbmltYXRpb24oKm1fdGFyZ2V0LCAmdW5hbmltYXRlZFN0eWxlLCByZXNvbHZlQ29u
dGV4dCwga2V5ZnJhbWVMaXN0KTsKIAogICAgIC8vIEVuc3VyZSByZXNvdXJjZSBsb2FkcyBmb3Ig
YWxsIHRoZSBmcmFtZXMuCiAgICAgZm9yIChhdXRvJiBrZXlmcmFtZSA6IGtleWZyYW1lTGlzdC5r
ZXlmcmFtZXMoKSkgewpAQCAtMTI2NiwxMiArMTI2NiwxMiBAQCB2b2lkIEtleWZyYW1lRWZmZWN0
OjpkaWRDaGFuZ2VUYXJnZXRTdHlsZWFibGUoY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHls
ZWFibAogICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSBuZXdUYXJnZXRTdHlsZWFibGUt
PmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMpOwogfQogCi12b2lk
IEtleWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3Rh
cnRUaW1lKQordm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0
eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0LCBzdGQ6Om9w
dGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkKIHsKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0YXJnZXRTdHlsZSwgcGFy
ZW50RWxlbWVudFN0eWxlKTsKKyAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0YXJnZXRTdHls
ZSwgcmVzb2x2ZUNvbnRleHQpOwogCiAgICAgYXV0byBjb21wdXRlZFRpbWluZyA9IGdldENvbXB1
dGVkVGltaW5nKHN0YXJ0VGltZSk7CiAgICAgaWYgKCFzdGFydFRpbWUpIHsKQEAgLTE0MzMsNyAr
MTQzMyw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5
bGUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBkb3ViCiAgICAgLy8gVGhlIGVmZmVjdCB2YWx1
ZSBvZiBhIHNpbmdsZSBwcm9wZXJ0eSByZWZlcmVuY2VkIGJ5IGEga2V5ZnJhbWUgZWZmZWN0IGFz
IG9uZSBvZiBpdHMgdGFyZ2V0IHByb3BlcnRpZXMsCiAgICAgLy8gZm9yIGEgZ2l2ZW4gaXRlcmF0
aW9uIHByb2dyZXNzLCBjdXJyZW50IGl0ZXJhdGlvbiBhbmQgdW5kZXJseWluZyB2YWx1ZSBpcyBj
YWxjdWxhdGVkIGFzIGZvbGxvd3MuCiAKLSAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0YXJn
ZXRTdHlsZSwgbnVsbHB0cik7CisgICAgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXModGFyZ2V0U3R5
bGUsIHsgbnVsbHB0ciB9KTsKICAgICBpZiAobV9ibGVuZGluZ0tleWZyYW1lcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuaAppbmRleCBmNzgxNTM5OTUyNDdhYTE5NTQ1NmVmYjRiNDE5M2RjNDY2NTQzN2NhLi5jYTJk
YmUwODlmMWUwMmI3N2MwZDYzOTQ0ODM2ZWI1YTkzMDgwM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENvbXBvc2l0ZShDb21wb3NpdGVPcGVyYXRpb24gY29tcG9zaXRlT3BlcmF0aW9u
KSB7IG1fY29tcG9zaXRlT3BlcmF0aW9uID0gY29tcG9zaXRlT3BlcmF0aW9uOyB9CiAKICAgICB2
b2lkIGdldEFuaW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0
ZWRTdHlsZSk7Ci0gICAgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
PSBzdGQ6Om51bGxvcHQpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHkoUmVuZGVyU3R5bGUmIHRh
cmdldFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+ID0gc3RkOjpudWxsb3B0KSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGUoKSBv
dmVycmlkZTsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFRpY2soKSBmaW5hbDsKICAgICB2b2lkIGFu
aW1hdGlvbkRpZFBsYXkoKSBmaW5hbDsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICBib29sIGNvbG9yRmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9jb2xvckZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaDsgfQogCi0gICAgdm9p
ZCBjb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgdm9pZCBjb21wdXRlRGVjbGFyYXRp
dmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0
Jik7CiAgICAgY29uc3QgS2V5ZnJhbWVMaXN0JiBibGVuZGluZ0tleWZyYW1lcygpIGNvbnN0IHsg
cmV0dXJuIG1fYmxlbmRpbmdLZXlmcmFtZXM7IH0KICAgICBjb25zdCBIYXNoU2V0PENTU1Byb3Bl
cnR5SUQ+JiBhbmltYXRlZFByb3BlcnRpZXMoKTsKICAgICBib29sIGFuaW1hdGVzUHJvcGVydHko
Q1NTUHJvcGVydHlJRCkgY29uc3Q7CkBAIC0xOTgsOCArMTk4LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBhY3QoKTsKICAgICB2b2lkIGNvbXB1dGVTb21l
S2V5ZnJhbWVzVXNlU3RlcHNUaW1pbmdGdW5jdGlvbigpOwogICAgIHZvaWQgY2xlYXJCbGVuZGlu
Z0tleWZyYW1lcygpOwotICAgIHZvaWQgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5
bGUmIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSk7
Ci0gICAgdm9pZCBjb21wdXRlQ1NTQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVu
ZGVyU3R5bGUmIHVuYW5pbWF0ZWRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1l
bnRTdHlsZSk7CisgICAgdm9pZCB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyhSZW5kZXJTdHlsZSYg
ZWxlbWVudFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmKTsKKyAgICB2b2lkIGNv
bXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSYgdW5h
bmltYXRlZFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmKTsKICAgICB2b2lkIGNv
bXB1dGVDU1NUcmFuc2l0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpOwogICAgIHZvaWQgY29tcHV0ZUFj
Y2VsZXJhdGVkUHJvcGVydGllc1N0YXRlKCk7CiAgICAgdm9pZCBzZXRCbGVuZGluZ0tleWZyYW1l
cyhLZXlmcmFtZUxpc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdFN0YWNrLmNwcAppbmRleCBiOGE4ZmE4OTg5MGVlYjU1OTk4OTllMWY3NmNiZmNkNGY4
NDM1ZWUxLi44NGJkZDNlNTQzZTkxYWIyNjRkZGY3NGNlYmVlNWRjYjBmODlmZGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdFN0YWNrOjpzZXRDU1NBbmltYXRpb25M
aXN0KFJlZlB0cjxjb25zdCBBbmltYXRpb25MaXN0PiYmIGNzc0EKICAgICBtX2lzU29ydGVkID0g
ZmFsc2U7CiB9CiAKLU9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEtleWZyYW1lRWZmZWN0U3Rh
Y2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK09wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+
IEtleWZyYW1lRWZmZWN0U3RhY2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0
YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZl
bnRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiByZXNvbHZlQ29udGV4dCkKIHsK
ICAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBpbXBhY3Q7CiAKQEAgLTEzNCw3ICsxMzQs
NyBAQCBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBLZXlmcmFtZUVmZmVjdFN0YWNrOjphcHBs
eUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBlZmZl
Y3QgOiBzb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAgICAgQVNTRVJUKGVmZmVjdC0+YW5pbWF0aW9u
KCkpOwotICAgICAgICBlZmZlY3QtPmFuaW1hdGlvbigpLT5yZXNvbHZlKHRhcmdldFN0eWxlLCBw
YXJlbnRFbGVtZW50U3R5bGUpOworICAgICAgICBlZmZlY3QtPmFuaW1hdGlvbigpLT5yZXNvbHZl
KHRhcmdldFN0eWxlLCByZXNvbHZlQ29udGV4dCk7CiAKICAgICAgICAgaWYgKGVmZmVjdC0+aXNS
dW5uaW5nQWNjZWxlcmF0ZWQoKSB8fCBlZmZlY3QtPmlzQWJvdXRUb1J1bkFjY2VsZXJhdGVkKCkp
CiAgICAgICAgICAgICBpbXBhY3QuYWRkKEFuaW1hdGlvbkltcGFjdDo6UmVxdWlyZXNSZWNvbXBv
c2l0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3RTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2su
aAppbmRleCA1ZGFiNGM3MmVlYjc1ZDViZmQxZWQ3MzYxNTI5Y2ZiZDQ0NjhhMTEwLi45MjY1MDI3
N2JhZWEwNzllZWE3YmI5YWM2ODIxYzZkNzdjZDdiMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmgKQEAgLTM2LDYgKzM2LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtleWZyYW1lRWZmZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7
CiAKK25hbWVzcGFjZSBTdHlsZSB7CitzdHJ1Y3QgUmVzb2x2ZUNvbnRleHQ7Cit9CisKIGNsYXNz
IEtleWZyYW1lRWZmZWN0U3RhY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgpAQCAtNTAsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDU1NBbmltYXRpb25M
aXN0KFJlZlB0cjxjb25zdCBBbmltYXRpb25MaXN0PiYmKTsKICAgICBib29sIGlzQ3VycmVudGx5
QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJl
c1BzZXVkb0VsZW1lbnQoKSBjb25zdDsKLSAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBh
cHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+
IGFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgU3R5bGU6
OlJlc29sdmVDb250ZXh0Jik7CiAgICAgYm9vbCBoYXNFZmZlY3RXaXRoSW1wbGljaXRLZXlmcmFt
ZXMoKSBjb25zdDsKIAogICAgIHZvaWQgc3RvcEFjY2VsZXJhdGluZ1RyYW5zZm9ybVJlbGF0ZWRQ
cm9wZXJ0aWVzKFVzZUFjY2VsZXJhdGVkQWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggZmI3MzkzNTg5ZGEyZTY4ZDRhZWZhYmRlOTZhYjUzOWI2
MjA2MTZhNC4uYzc1N2UxNTliZmI4NGJjZTZiYjQ1OGY0MDBlNTczYzU1YzU4ODcyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAgLTEyMjcsMTQgKzEyMjcs
MTQgQEAgdm9pZCBXZWJBbmltYXRpb246OnRpY2soKQogICAgICAgICBtX2VmZmVjdC0+YW5pbWF0
aW9uRGlkVGljaygpOwogfQogCi12b2lkIFdlYkFuaW1hdGlvbjo6cmVzb2x2ZShSZW5kZXJTdHls
ZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQordm9pZCBXZWJBbmltYXRpb246OnJlc29s
dmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQm
IHJlc29sdmVDb250ZXh0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkKIHsKICAg
ICBpZiAoIW1fc2hvdWxkU2tpcFVwZGF0aW5nRmluaXNoZWRTdGF0ZVdoZW5SZXNvbHZpbmcpCiAg
ICAgICAgIHVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlkU2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlOb3Rp
Znk6Olllcyk7CiAgICAgbV9zaG91bGRTa2lwVXBkYXRpbmdGaW5pc2hlZFN0YXRlV2hlblJlc29s
dmluZyA9IGZhbHNlOwogCiAgICAgaWYgKG1fZWZmZWN0KQotICAgICAgICBtX2VmZmVjdC0+YXBw
bHkodGFyZ2V0U3R5bGUsIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RhcnRUaW1lKTsKKyAgICAgICAg
bV9lZmZlY3QtPmFwcGx5KHRhcmdldFN0eWxlLCByZXNvbHZlQ29udGV4dCwgc3RhcnRUaW1lKTsK
IH0KIAogdm9pZCBXZWJBbmltYXRpb246OnNldFN1c3BlbmRlZChib29sIGlzU3VzcGVuZGVkKQpA
QCAtMTQyNiwxMiArMTQyNiwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OmNv
bW1pdFN0eWxlcygpCiAgICAgICAgICAgICBpZiAoZWZmZWN0SW5TdGFjay0+YW5pbWF0aW9uKCkg
IT0gdGhpcyAmJiAhY29tcGFyZUFuaW1hdGlvbnNCeUNvbXBvc2l0ZU9yZGVyKCplZmZlY3RJblN0
YWNrLT5hbmltYXRpb24oKSwgKnRoaXMpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgaWYgKGVmZmVjdEluU3RhY2stPmFuaW1hdGVkUHJvcGVydGllcygpLmNvbnRhaW5zKHBy
b3BlcnR5KSkKLSAgICAgICAgICAgICAgICBlZmZlY3RJblN0YWNrLT5hbmltYXRpb24oKS0+cmVz
b2x2ZSgqYW5pbWF0ZWRTdHlsZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgZWZmZWN0SW5T
dGFjay0+YW5pbWF0aW9uKCktPnJlc29sdmUoKmFuaW1hdGVkU3R5bGUsIHsgbnVsbHB0ciB9KTsK
ICAgICAgICAgICAgIGlmIChlZmZlY3RJblN0YWNrLT5hbmltYXRpb24oKSA9PSB0aGlzKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3JlcGxhY2VTdGF0
ZSA9PSBSZXBsYWNlU3RhdGU6OlJlbW92ZWQpCi0gICAgICAgICAgICBlZmZlY3QtPmFuaW1hdGlv
bigpLT5yZXNvbHZlKCphbmltYXRlZFN0eWxlLCBudWxscHRyKTsKKyAgICAgICAgICAgIGVmZmVj
dC0+YW5pbWF0aW9uKCktPnJlc29sdmUoKmFuaW1hdGVkU3R5bGUsIHsgbnVsbHB0ciB9KTsKICAg
ICAgICAgaWYgKGF1dG8gY3NzVmFsdWUgPSBjb21wdXRlZFN0eWxlRXh0cmFjdG9yLnZhbHVlRm9y
UHJvcGVydHlJblN0eWxlKCphbmltYXRlZFN0eWxlLCBwcm9wZXJ0eSwgcmVuZGVyZXIpKQogICAg
ICAgICAgICAgaW5saW5lU3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHksIGNzc1Zh
bHVlLT5jc3NUZXh0KCksIGZhbHNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmgKaW5kZXggNzc0NGZiZjNjZjZhN2JkOTc0OWFiZDE4OGE1MDM3NTNjY2I0Nzk4
NC4uZTBlYjZiMGUwMjE1NDIzY2E3ZTE1ZDQ2NzA0YjdkZjgxM2U2OTA3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtNDgsNiArNDgsMTAgQEAgY2xhc3MgUmVu
ZGVyU3R5bGU7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQ
cm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CiAKK25hbWVzcGFjZSBTdHlsZSB7CitzdHJ1Y3QgUmVz
b2x2ZUNvbnRleHQ7Cit9CisKIGNsYXNzIFdlYkFuaW1hdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkFuaW1hdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYkFuaW1hdGlv
bik7CiBwdWJsaWM6CkBAIC0xMTksNyArMTIzLDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNU
aWNrKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHRpY2soKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBTZWNvbmRzIHRpbWVUb05leHRUaWNrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHJlc29s
dmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxl
bWVudFN0eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzb2x2ZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxl
OjpSZXNvbHZlQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQp
OwogICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29u
c3QgU3R5bGVhYmxlPiYgcHJldmlvdXNUYXJnZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3Qg
U3R5bGVhYmxlPiYgbmV3VGFyZ2V0KTsKICAgICB2b2lkIGFjY2VsZXJhdGVkU3RhdGVEaWRDaGFu
Z2UoKTsKICAgICB2b2lkIHdpbGxDaGFuZ2VSZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKaW5kZXggNWI1NWRlYmUwZDczZGEyYzAzY2I4YWFiYzZjNDQ0
MWJkNjkwNDA4MC4uNTU4MzYzMmY2MDNiNzg3ZmQ0MGI0MTMwMjU1NTg1Mjg2Y2Y0Yzk2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gTWVkaWFRdWVyeU1hdGNoZXI6OmRvY3VtZW50
RWxlbWVudFVzZXJBZ2VudFN0eWxlKCkKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbV9kb2N1bWVudC0+c3R5bGVTY29wZSgp
LnJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpkb2N1bWVudEVsZW1lbnQsIG1fZG9jdW1lbnQt
PnJlbmRlclN0eWxlKCksIG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaE9ubHlV
c2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPnN0eWxl
U2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCB7IG1f
ZG9jdW1lbnQtPnJlbmRlclN0eWxlKCkgfSwgUnVsZU1hdGNoaW5nQmVoYXZpb3I6Ok1hdGNoT25s
eVVzZXJBZ2VudFJ1bGVzKS5yZW5kZXJTdHlsZTsKIH0KIAogYm9vbCBNZWRpYVF1ZXJ5TWF0Y2hl
cjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNldCYgbWVkaWEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVN
ZWRpYS5jcHAKaW5kZXggYTYxNDJhYWIyZmUzN2MxNWQwYjAxNGZkYzMyOWM3NDNkNDYwZDljMy4u
ZmUyZWUxYmEzYWQwMjg4NzI3ZGViYjhiMWU2Nzg4NDM2YzU5NDdiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZU1lZGlhLmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29sIFN0eWxlTWVkaWE6Om1hdGNoTWVk
aXVtKGNvbnN0IFN0cmluZyYgcXVlcnkpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcm9vdFN0eWxlID0gZG9jdW1lbnQt
PnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50
LCBkb2N1bWVudC0+cmVuZGVyU3R5bGUoKSwgbnVsbHB0ciwgUnVsZU1hdGNoaW5nQmVoYXZpb3I6
Ok1hdGNoT25seVVzZXJBZ2VudFJ1bGVzKS5yZW5kZXJTdHlsZTsKKyAgICBhdXRvIHJvb3RTdHls
ZSA9IGRvY3VtZW50LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmRv
Y3VtZW50RWxlbWVudCwgeyBkb2N1bWVudC0+cmVuZGVyU3R5bGUoKSB9LCBSdWxlTWF0Y2hpbmdC
ZWhhdmlvcjo6TWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpLnJlbmRlclN0eWxlOwogCiAgICAgYXV0
byBtZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShxdWVyeSwgTWVkaWFRdWVyeVBhcnNlckNv
bnRleHQoKmRvY3VtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUyNTA2Mjlm
MmNjNmE0YWFkZDY2MTJlYjVkMjY1YThiMWU0OGRkZjQuLjA5MzhmNmQ1ZmEzOTY2OGY2YTkwNDI3
ZjVjYjgwZTQ1MjU1Y2MzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjI2Miw5ICsy
MjYyLDkgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JF
bGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMKICAgICBhdXRvJiByZXNvbHZlciA9IGVs
ZW1lbnQuc3R5bGVSZXNvbHZlcigpOwogCiAgICAgaWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIg
IT0gUHNldWRvSWQ6Ok5vbmUpCi0gICAgICAgIHJldHVybiByZXNvbHZlci5wc2V1ZG9TdHlsZUZv
ckVsZW1lbnQoZWxlbWVudCwgeyBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyIH0sICpwYXJlbnRTdHls
ZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlci5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxlbWVu
dCwgeyBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyIH0sIHsgcGFyZW50U3R5bGUgfSk7CiAKLSAgICBh
dXRvIGVsZW1lbnRTdHlsZSA9IHJlc29sdmVyLnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCBwYXJl
bnRTdHlsZSk7CisgICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlci5zdHlsZUZvckVsZW1l
bnQoZWxlbWVudCwgeyBwYXJlbnRTdHlsZSB9KTsKICAgICBpZiAoZWxlbWVudFN0eWxlLnJlbGF0
aW9ucykgewogICAgICAgICBTdHlsZTo6VXBkYXRlIGVtcHR5VXBkYXRlKCp0aGlzKTsKICAgICAg
ICAgU3R5bGU6OmNvbW1pdFJlbGF0aW9ucyhXVEZNb3ZlKGVsZW1lbnRTdHlsZS5yZWxhdGlvbnMp
LCBlbXB0eVVwZGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTI4OWUwY2NlNjY1Y2Ix
NWU1ODhkNWYzZjlmZTEzM2FiYjRjM2MzNS4uMWIyZmEzOWNjZmYyNTlkYjIwZWJkYjcyY2I4MjZk
MmM5ZDI1MWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTk3NCw5ICsxOTc0LDkgQEAg
U3R5bGU6OlJlc29sdmVyJiBFbGVtZW50OjpzdHlsZVJlc29sdmVyKCkKICAgICByZXR1cm4gZG9j
dW1lbnQoKS5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKTsKIH0KIAotU3R5bGU6OkVsZW1lbnRTdHls
ZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQor
U3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUoY29uc3QgU3R5bGU6OlJl
c29sdmVDb250ZXh0JiByZXNvbHZlQ29udGV4dCkKIHsKLSAgICByZXR1cm4gc3R5bGVSZXNvbHZl
cigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcGFyZW50U3R5bGUpOworICAgIHJldHVybiBzdHls
ZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCp0aGlzLCByZXNvbHZlQ29udGV4dCk7CiB9CiAK
IHN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2li
bGluZykKQEAgLTQ0MDksNyArNDQwOSw3IEBAIHZvaWQgRWxlbWVudDo6ZGlkRGV0YWNoUmVuZGVy
ZXJzKCkKICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwogfQog
Ci1zdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IEVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0
aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAgICBB
U1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAwYzg2MjI5ZjY0ZGM1NjIyYjQzMmJlZTM4
YTAyM2FiNzVhNTI2NjRlLi5kMWJiNjRkNTc3NTkwZjA2ZmVmNjM5MmNjODkxZjU4NmE0YzVhYmRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTk0LDYgKzk0LDcgQEAgbmFtZXNwYWNlIFN0eWxlIHsK
IGNsYXNzIFJlc29sdmVyOwogZW51bSBjbGFzcyBDaGFuZ2UgOiB1aW50OF90Owogc3RydWN0IEVs
ZW1lbnRTdHlsZTsKK3N0cnVjdCBSZXNvbHZlQ29udGV4dDsKIH0KIAogY2xhc3MgRWxlbWVudCA6
IHB1YmxpYyBDb250YWluZXJOb2RlIHsKQEAgLTU3MSw3ICs1NzIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGV0YWNoUmVuZGVyZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGFjaFJlbmRlcmVycygp
OwotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogc2hhZG93SG9zdFN0eWxlKTsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3R5bGU6
OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29u
dGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOwogCiAgICAgTGF5b3V0
UmVjdCBhYnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNsdWRlc0ZpeGVkUG9zaXRp
b25FbGVtZW50cykgb3ZlcnJpZGU7CiAKQEAgLTU5Myw3ICs1OTQsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVSZXNvbHZlcigpOwotICAgIFN0eWxlOjpF
bGVtZW50U3R5bGUgcmVzb2x2ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7
CisgICAgU3R5bGU6OkVsZW1lbnRTdHlsZSByZXNvbHZlU3R5bGUoY29uc3QgU3R5bGU6OlJlc29s
dmVDb250ZXh0Jik7CiAKICAgICAvLyBJbnZhbGlkYXRlcyB0aGUgc3R5bGUgb2YgYSBzaW5nbGUg
ZWxlbWVudC4gU3R5bGUgaXMgcmVzb2x2ZWQgbGF6aWx5LgogICAgIC8vIERlc2NlbmRhbnQgZWxl
bWVudHMgYXJlIHJlc29sdmVkIGFzIG5lZWRlZCwgZm9yIGV4YW1wbGUgaWYgYW4gaW5oZXJpdGVk
IHByb3BlcnR5IGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
aXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNw
cAppbmRleCBjYzU4OTllNzMxYTY1ZWZjYTdiMTU1YWQyNjljYmFhYzZhMjBiNmFkLi5jNTVjZjE3
YWNiNDlkMmY2ZTY3YjMxOWM4NWZmZmVjNzY2MmQwYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgU3RyaW5nV2l0aERpcmVjdGlv
biBIVE1MVGl0bGVFbGVtZW50Ojpjb21wdXRlZFRleHRXaXRoRGlyZWN0aW9uKCkKICAgICBpZiAo
YXV0byogY29tcHV0ZWRTdHlsZSA9IHRoaXMtPmNvbXB1dGVkU3R5bGUoKSkKICAgICAgICAgZGly
ZWN0aW9uID0gY29tcHV0ZWRTdHlsZS0+ZGlyZWN0aW9uKCk7CiAgICAgZWxzZQotICAgICAgICBk
aXJlY3Rpb24gPSBzdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCp0aGlzLCBwYXJlbnRF
bGVtZW50KCkgPyBwYXJlbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCkgOiBudWxscHRyKS5yZW5k
ZXJTdHlsZS0+ZGlyZWN0aW9uKCk7CisgICAgICAgIGRpcmVjdGlvbiA9IHN0eWxlUmVzb2x2ZXIo
KS5zdHlsZUZvckVsZW1lbnQoKnRoaXMsIHsgcGFyZW50RWxlbWVudCgpID8gcGFyZW50RWxlbWVu
dCgpLT5yZW5kZXJTdHlsZSgpIDogbnVsbHB0ciB9KS5yZW5kZXJTdHlsZS0+ZGlyZWN0aW9uKCk7
CiAgICAgcmV0dXJuIHsgdGV4dCgpLCBkaXJlY3Rpb24gfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCmluZGV4IDJjOTU2
Y2I5YzQyYjI1MWUyYWMzZjUwMGUzY2QwYzdjZGZkZjBiYTAuLjhjYjc0N2U3NDY2YmRlYTI0NWQ0
YTViMTg0ZGE0ZmZkYjkxZDNjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgdm9pZCBEYXRl
VGltZUZpZWxkRWxlbWVudDo6aW5pdGlhbGl6ZShjb25zdCBBdG9tU3RyaW5nJiBwc2V1ZG8pCiAg
ICAgc2V0UHNldWRvKHBzZXVkbyk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRT
dHlsZT4gRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUp
CitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IERhdGVUaW1lRmllbGRFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiByZXNvbHZl
Q29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKLSAgICBhdXRv
IGVsZW1lbnRTdHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOworICAgIGF1dG8gZWxl
bWVudFN0eWxlID0gcmVzb2x2ZVN0eWxlKHJlc29sdmVDb250ZXh0KTsKICAgICBpZiAoIWVsZW1l
bnRTdHlsZS5yZW5kZXJTdHlsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmgKaW5k
ZXggMzYzODFmOTRjMTYyODY0MGZhZjgwNjM3NTM4MWQxYWE1NjBhNTM1MS4uNTExZjA2MTY1ZTY3
ZmI3YWVmZGIwZDhmOGQ5YWVjOGE1ZDU3YzViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5oCkBAIC04NSw3ICs4NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KEV2ZW50Jik7CiAKIHByaXZh
dGU6Ci0gICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7CiAK
ICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggOWQxNzRj
ZjdlYTMzYWU3YjYwZTY1Mzc0MzI5YjBkZDMwODI4YjQ4Ny4uZDg3YzMwZDIxNTdiYmQ3NjA5MGE1
ZWMxZjlkMDM3MTI5NjI2NzAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC01ODYsNyArNTg2LDcgQEAgUmVmUHRyPEhUTUxJ
bnB1dEVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElucHV0KCkgY29uc3QKICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93SG9zdCgpKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBob3N0
U3R5bGUpCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxl
bWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNv
bnN0IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCiB7CiAgICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVh
bGx5IGNvbXB1dGUgc3R5bGUuIFRoaXMgaXMganVzdCBhIGhhY2sgdG8gcGljayBzaGFkb3cgcHNl
dWRvIGlkIHdoZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4KIApAQCAtNjM3LDcgKzYzNyw3IEBAIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNs
aWRlckNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotc3RkOjpvcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogaG9zdFN0eWxl
KQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiwgY29u
c3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKIHsKICAgICAvLyBUaGlzIGRvZXNuJ3QgYWN0dWFs
bHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFjayB0byBwaWNrIHNoYWRvdyBwc2V1
ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3duLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IGIzY2RlYmE1NjdlOTVmOTViZjRm
ODlhZDk1M2Y1ZDJkMmNjMzYzYjUuLjYyYjY5NGYzOTAyZmExMTljMGQyMzYyNTRhYTJmZTE4YzVk
OGViY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHdpbGxE
ZXRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVu
ZGVyU3R5bGUqKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+
IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmLCBjb25zdCBS
ZW5kZXJTdHlsZSopIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHN0YXJ0RHJhZ2dpbmcoKTsKQEAgLTEzNCw3ICsx
MzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9j
dW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwotICAg
IHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBmaW5hbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHls
ZTo6UmVzb2x2ZUNvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOwogICAgIGNvbnN0
IEF0b21TdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1Ns
aWRlckNvbnRhaW5lckVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCmluZGV4IDA3NDM1NWY5ODRkZWJhZmRmY2QwOWQ4NGIzYzlkYzljMmIyOThmYzMu
LmE4ZWU0NDc1MWJhZTBiN2FmZWE1YjUxOWJkM2QzMzk2YjZhODU5MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cApAQCAtODIsOSArODIsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJvbmdQYXNzd29yZFRl
eHRGaWVsZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBpczxIVE1MSW5wdXRF
bGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KS0+
aGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFN0
eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
KikKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckNv
bnRhaW5lcjo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYg
cmVzb2x2ZUNvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKLSAgICBhdXRvIGVsZW1lbnRT
dHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOworICAgIGF1dG8gZWxlbWVudFN0eWxl
ID0gcmVzb2x2ZVN0eWxlKHJlc29sdmVDb250ZXh0KTsKICAgICBpZiAoaXNTdHJvbmdQYXNzd29y
ZFRleHRGaWVsZChzaGFkb3dIb3N0KCkpKSB7CiAgICAgICAgIGVsZW1lbnRTdHlsZS5yZW5kZXJT
dHlsZS0+c2V0RmxleFdyYXAoRmxleFdyYXA6OldyYXApOwogICAgICAgICBlbGVtZW50U3R5bGUu
cmVuZGVyU3R5bGUtPnNldE92ZXJmbG93WChPdmVyZmxvdzo6SGlkZGVuKTsKQEAgLTEwNCw3ICsx
MDQsNyBAQCBSZWY8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFRleHRDb250cm9sSW5uZXJFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0
JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIG5ld1N0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwogICAgIG5ld1N0eWxlLT5pbmhlcml0RnJv
bSgqc2hhZG93SG9zdFN0eWxlKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBSZW5kZXJUZXh0Q29udHJv
bElubmVyQmxvY2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25z
dAogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2s+KEhUTUxE
aXZFbGVtZW50OjpyZW5kZXJlcigpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitz
dGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNv
bnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IGRv
d25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJ
bm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKICAgICByZXR1cm4geyBtYWtlVW5pcXVl
PFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkgfTsKQEAgLTIwOSw5ICsyMDksOSBAQCBSZWY8
VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbgogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1zdGQ6Om9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYgcmVzb2x2ZUNvbnRleHQsIGNvbnN0IFJlbmRl
clN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7Ci0gICAgYXV0byBzdHlsZSA9IHJlc29sdmVTdHls
ZSgmcGFyZW50U3R5bGUpOworICAgIGF1dG8gc3R5bGUgPSByZXNvbHZlU3R5bGUocmVzb2x2ZUNv
bnRleHQpOwogCiAgICAgYXV0byYgY29udHJvbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudD4oKmNvbnRhaW5pbmdTaGFkb3dSb290KCktPmhvc3QoKSk7CiAgICAg
c3R5bGUucmVuZGVyU3R5bGUtPnNldERpc3BsYXkoY29udHJvbEVsZW1lbnQuaXNQbGFjZWhvbGRl
clZpc2libGUoKSA/IERpc3BsYXlUeXBlOjpCbG9jayA6IERpc3BsYXlUeXBlOjpOb25lKTsKQEAg
LTIzOSw3ICsyMzksNyBAQCBSZWY8U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudD4gU2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvYwogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKIH0K
IAotc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVu
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiByZXNvbHZlQ29u
dGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBSZWZQdHIg
aW5wdXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihzaGFkb3dIb3N0KCkpOwogICAgIGlm
IChpbnB1dCAmJiBpbnB1dC0+bWF4UmVzdWx0cygpID49IDApCkBAIC0yNDcsNyArMjQ3LDcgQEAg
c3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b25FbGVtZW50OjpyZXNvbHZlQ3VzdG8KIAogICAgIGlmIChzaGFkb3dIb3N0U3R5bGUgJiYgc2hh
ZG93SG9zdFN0eWxlLT5lZmZlY3RpdmVBcHBlYXJhbmNlKCkgIT0gU2VhcmNoRmllbGRQYXJ0KSB7
CiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGNhbkFkanVzdFN0eWxlRm9yQXBwZWFyYW5jZSht
X2NhbkFkanVzdFN0eWxlRm9yQXBwZWFyYW5jZSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gcmVz
b2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlU3R5bGUocmVz
b2x2ZUNvbnRleHQpOwogICAgIH0KIAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zMDYs
OSArMzA2LDkgQEAgUmVmPFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudD4gU2VhcmNoRmll
bGRDYW5jZWxCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW0KICAgICByZXR1cm4gZWxlbWVudDsK
IH0KIAotc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5
bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiByZXNvbHZlQ29udGV4dCwgY29uc3QgUmVu
ZGVyU3R5bGUqKQogewotICAgIGF1dG8gZWxlbWVudFN0eWxlID0gcmVzb2x2ZVN0eWxlKCZwYXJl
bnRTdHlsZSk7CisgICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlU3R5bGUocmVzb2x2ZUNv
bnRleHQpOwogICAgIGF1dG8mIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCpzaGFkb3dIb3N0KCkpOwogICAgIGVsZW1lbnRTdHlsZS5yZW5kZXJTdHlsZS0+c2V0Vmlz
aWJpbGl0eShlbGVtZW50U3R5bGUucmVuZGVyU3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpIaWRkZW4gfHwgaW5wdXRFbGVtZW50LnZhbHVlKCkuaXNFbXB0eSgpID8gVmlzaWJpbGl0
eTo6SGlkZGVuIDogVmlzaWJpbGl0eTo6VmlzaWJsZSk7CiAgICAgcmV0dXJuIGVsZW1lbnRTdHls
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmgKaW5kZXggN2MzMmJiNGEyMTc3NzBjMTRmNjIxZTI0Y2ZkYmI2YjBhN2M3MTUy
YS4uMzYzOTc2NjlmZDI1ODA2ZDJkOTVkYmE4ZjNiY2NkNWE1NDcwNTIzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgK
QEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbElubmVy
Q29udGFpbmVyKERvY3VtZW50Jik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5
bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZl
Q29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwog
fTsKIAogY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERp
dkVsZW1lbnQgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVGV4
dENvbnRyb2xJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dI
b3N0U3R5bGUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIH07CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6
CiAKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNo
YWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKQEAgLTg4
LDcgKzg4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbFBsYWNlaG9sZGVy
RWxlbWVudChEb2N1bWVudCYpOwogICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
U3R5bGU6OlJlc29sdmVDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHls
ZSkgb3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoRG9jdW1l
bnQmKTsKICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2
ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHls
ZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdmVD
b250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc1NlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIG1fY2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJh
bmNlIHsgdHJ1ZSB9OwpAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50Jik7CiAgICAgYm9vbCBpc01v
dXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGQ6
Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5
bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYsIGNvbnN0IFJlbmRl
clN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4
IDY5YWI0NjM0YWNiNDYxMmE1MDIyOGU5NjExMjM5MGQxNzFjNThiM2YuLjE0NzUyMjY4NWVmYjEw
OGMyNTI5MDA2YjkwN2MyMGMyOTY4NzM3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVTdHlsZSgpIGNvbnN0CiAg
ICAgICAgIGlmICghY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQYXJlbnRFbGVt
ZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRyZWVQYXJlbnRF
bGVtZW50LCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOworICAgICAgICBhdXRvIHN0eWxlID0g
Y29tcG9zZWRUcmVlUGFyZW50RWxlbWVudC0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVu
dCgqY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCwgeyAmcGFyZW50U3R5bGUgfSkucmVuZGVyU3R5
bGU7CiAgICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250
ZW50cyk7CiAKICAgICAgICAgLy8gV2UgYWN0IGFzIGlmIHRoZXJlIHdhcyBhbiB1bnN0eWxlZCA8
c3Bhbj4gYXJvdW5kIHRoZSB0ZXh0IG5vZGUuIE9ubHkgc3R5bGluZyBoYXBwZW5zIHZpYSBpbmhl
cml0YW5jZS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IFJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVTdHlsZSgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBmaXJzdExpbmVTdHlsZTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVuZGVyZXJGb3JGaXJz
dExpbmVTdHlsZS5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmVs
ZW1lbnQoKSwgJnBhcmVudFN0eWxlKS5yZW5kZXJTdHlsZTsKKyAgICByZXR1cm4gcmVuZGVyZXJG
b3JGaXJzdExpbmVTdHlsZS5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1l
bnQoKmVsZW1lbnQoKSwgeyAmcGFyZW50U3R5bGUgfSkucmVuZGVyU3R5bGU7CiB9CiAKIGNvbnN0
IFJlbmRlclN0eWxlJiBSZW5kZXJFbGVtZW50OjpmaXJzdExpbmVTdHlsZSgpIGNvbnN0CkBAIC0x
NTMxLDcgKzE1MzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1l
bnQ6OmdldFVuY2FjaGVkUHNldWRvU3R5bGUoY29uc3QgU3R5bGU6OgogCiAgICAgYXV0byYgc3R5
bGVSZXNvbHZlciA9IGVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVGb3JF
bGVtZW50KCplbGVtZW50KCksIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCAqcGFyZW50U3R5bGUpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVJlc29sdmVyLnBz
ZXVkb1N0eWxlRm9yRWxlbWVudCgqZWxlbWVudCgpLCBwc2V1ZG9FbGVtZW50UmVxdWVzdCwgeyBw
YXJlbnRTdHlsZSB9KTsKIAogICAgIGlmIChzdHlsZSkKICAgICAgICAgU3R5bGU6OmxvYWRQZW5k
aW5nUmVzb3VyY2VzKCpzdHlsZSwgZG9jdW1lbnQoKSwgZWxlbWVudCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKaW5kZXggMWJkMWI3Zjg2
OGY3NTQzYjQ5ZTM1YjYzY2M1YTdjNmQxMmVmODQxMy4uZTIzYTIxYzQ3YWYxMTcxNzJmZTJkNTU4
MmYzOTBjZTFlMzAxNjMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0tleWZyYW1lTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0tleWZyYW1lTGlzdC5jcHAKQEAgLTExOSwxNCArMTE5LDE0IEBAIHZvaWQgS2V5ZnJhbWVMaXN0
OjpmaWxsSW1wbGljaXRLZXlmcmFtZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgU3R5bGU6OlJl
c29sdmVyCiAgICAgYXV0byBpbml0aWFsU2l6ZSA9IHNpemUoKTsKICAgICBpZiAoaW5pdGlhbFNp
emUgPiAwICYmIG1fa2V5ZnJhbWVzWzBdLmtleSgpKSB7CiAgICAgICAgIEtleWZyYW1lVmFsdWUg
a2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKLSAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHls
ZShzdHlsZVJlc29sdmVyLnN0eWxlRm9yS2V5ZnJhbWUoZWxlbWVudCwgZWxlbWVudFN0eWxlLCBw
YXJlbnRFbGVtZW50U3R5bGUsICZ6ZXJvUGVyY2VudEtleWZyYW1lKCksIGtleWZyYW1lVmFsdWUp
KTsKKyAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHlsZShzdHlsZVJlc29sdmVyLnN0eWxlRm9y
S2V5ZnJhbWUoZWxlbWVudCwgZWxlbWVudFN0eWxlLCB7IHBhcmVudEVsZW1lbnRTdHlsZSB9LCAm
emVyb1BlcmNlbnRLZXlmcmFtZSgpLCBrZXlmcmFtZVZhbHVlKSk7CiAgICAgICAgIGluc2VydChX
VEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgMTAwJSBrZXlm
cmFtZSBpcyBtaXNzaW5nLCBjcmVhdGUgaXQgKGJ1dCBvbmx5IGlmIHRoZXJlIGlzIGF0IGxlYXN0
IG9uZSBvdGhlciBrZXlmcmFtZSkuCiAgICAgaWYgKGluaXRpYWxTaXplID4gMCAmJiAobV9rZXlm
cmFtZXNbc2l6ZSgpIC0gMV0ua2V5KCkgIT0gMSkpIHsKICAgICAgICAgS2V5ZnJhbWVWYWx1ZSBr
ZXlmcmFtZVZhbHVlKDEsIG51bGxwdHIpOwotICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxl
KHN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHBh
cmVudEVsZW1lbnRTdHlsZSwgJmh1bmRyZWRQZXJjZW50S2V5ZnJhbWUoKSwga2V5ZnJhbWVWYWx1
ZSkpOworICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuc3R5bGVG
b3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHsgcGFyZW50RWxlbWVudFN0eWxlIH0s
ICZodW5kcmVkUGVyY2VudEtleWZyYW1lKCksIGtleWZyYW1lVmFsdWUpKTsKICAgICAgICAgaW5z
ZXJ0KFdURk1vdmUoa2V5ZnJhbWVWYWx1ZSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZTQ0NDViNjUzMTk3M2EyYzAzZWViZTMyNGI4NWZhMTIw
ZTQ3NTE5MS4uNzAzMTgzNmFlYzY5ZjMwMzc4YTQ2ZGRkM2MzNGU3NTQ2YTJlYzY3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBSZXNv
bHZlcjo6UmVzb2x2ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICBtX21lZGlhUXVlcnlF
dmFsdWF0b3IgPSBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgfTsKIAogICAgIGlmIChhdXRvKiBkb2N1
bWVudEVsZW1lbnQgPSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIG1f
cm9vdERlZmF1bHRTdHlsZSA9IHN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCBtX2Rv
Y3VtZW50LnJlbmRlclN0eWxlKCksIG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRj
aE9ubHlVc2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CisgICAgICAgIG1fcm9vdERlZmF1bHRT
dHlsZSA9IHN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50LCB7IG1fZG9jdW1lbnQucmVu
ZGVyU3R5bGUoKSB9LCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hPbmx5VXNlckFnZW50UnVs
ZXMpLnJlbmRlclN0eWxlOwogICAgICAgICAvLyBUdXJuIG9mZiBhc3NlcnRpb24gYWdhaW5zdCBm
b250IGxvb2t1cHMgZHVyaW5nIHN0eWxlIHJlc29sdmVyIGluaXRpYWxpemF0aW9uLiBXZSBtYXkg
bmVlZCByb290IHN0eWxlIGZvbnQgZm9yIG1lZGlhIHF1ZXJpZXMuCiAgICAgICAgIG1fZG9jdW1l
bnQuZm9udFNlbGVjdG9yKCkuaW5jcmVtZW50SXNDb21wdXRpbmdSb290U3R5bGVGb250KCk7CiAg
ICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUoJm1fZG9jdW1l
bnQuZm9udFNlbGVjdG9yKCkpOwpAQCAtMjE4LDkgKzIxOCw5IEBAIEJ1aWxkZXJDb250ZXh0IFJl
c29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYgc3RhdGUpCiAgICAgfTsKIH0KIAot
RWxlbWVudFN0eWxlIFJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50Qm94U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZpb3IsIGNv
bnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKK0VsZW1lbnRTdHlsZSBSZXNvbHZl
cjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlc29sdmVD
b250ZXh0JiBjb250ZXh0LCBSdWxlTWF0Y2hpbmdCZWhhdmlvciBtYXRjaGluZ0JlaGF2aW9yKQog
ewotICAgIGF1dG8gc3RhdGUgPSBTdGF0ZShlbGVtZW50LCBwYXJlbnRTdHlsZSwgbV9vdmVycmlk
ZURvY3VtZW50RWxlbWVudFN0eWxlKTsKKyAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVudCwg
Y29udGV4dC5wYXJlbnRTdHlsZSwgY29udGV4dC5kb2N1bWVudEVsZW1lbnRTdHlsZSk7CiAKICAg
ICBpZiAoc3RhdGUucGFyZW50U3R5bGUoKSkgewogICAgICAgICBzdGF0ZS5zZXRTdHlsZShSZW5k
ZXJTdHlsZTo6Y3JlYXRlUHRyKCkpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIEVsZW1lbnRTdHlsZSBS
ZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJl
bmRlclN0eWxlCiAKICAgICBVc2VyQWdlbnRTdHlsZTo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRz
Rm9yRWxlbWVudChlbGVtZW50KTsKIAotICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3Rv
cihlbGVtZW50LCBtX3J1bGVTZXRzLCBzZWxlY3RvckZpbHRlcik7CisgICAgRWxlbWVudFJ1bGVD
b2xsZWN0b3IgY29sbGVjdG9yKGVsZW1lbnQsIG1fcnVsZVNldHMsIGNvbnRleHQuc2VsZWN0b3JG
aWx0ZXIpOwogICAgIGNvbGxlY3Rvci5zZXRNZWRpdW0oJm1fbWVkaWFRdWVyeUV2YWx1YXRvcik7
CiAKICAgICBpZiAobWF0Y2hpbmdCZWhhdmlvciA9PSBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0
Y2hPbmx5VXNlckFnZW50UnVsZXMpCkBAIC0yNjQsNyArMjY0LDcgQEAgRWxlbWVudFN0eWxlIFJl
c29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVu
ZGVyU3R5bGUKIAogICAgIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoc3RhdGUsIGNvbGxlY3Rvci5t
YXRjaFJlc3VsdCgpKTsKIAotICAgIEFkanVzdGVyIGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0
ZS5wYXJlbnRTdHlsZSgpLCBwYXJlbnRCb3hTdHlsZSwgJmVsZW1lbnQpOworICAgIEFkanVzdGVy
IGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBjb250ZXh0LnBhcmVu
dEJveFN0eWxlLCAmZWxlbWVudCk7CiAgICAgYWRqdXN0ZXIuYWRqdXN0KCpzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS51c2VyQWdlbnRBcHBlYXJhbmNlU3R5bGUoKSk7CiAKICAgICBpZiAoc3RhdGUuc3R5
bGUoKS0+aGFzVmlld3BvcnRVbml0cygpKQpAQCAtMjczLDE1ICsyNzMsMTUgQEAgRWxlbWVudFN0
eWxlIFJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3R5bGUKICAgICByZXR1cm4geyBzdGF0ZS50YWtlU3R5bGUoKSwgV1RGTW92ZShl
bGVtZW50U3R5bGVSZWxhdGlvbnMpIH07CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVs
ZW1lbnRTdHlsZSwgY29uc3QgU3R5bGVSdWxlS2V5ZnJhbWUqIGtleWZyYW1lLCBLZXlmcmFtZVZh
bHVlJiBrZXlmcmFtZVZhbHVlKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNvbHZl
cjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJT
dHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHZlQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
U3R5bGVSdWxlS2V5ZnJhbWUqIGtleWZyYW1lLCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZVZhbHVl
KQogewogICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQuYXV0aG9yRGVjbGFyYXRp
b25zLmFwcGVuZCh7ICZrZXlmcmFtZS0+cHJvcGVydGllcygpLCBTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoQWxsLCBwcm9wZXJ0eUFsbG93bGlzdEZvclBzZXVkb0lkKGVsZW1lbnRTdHlsZS0+c3R5bGVU
eXBlKCkpIH0pOwogCi0gICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVsZW1lbnQsIG51bGxwdHIsIG1f
b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSk7CisgICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVs
ZW1lbnQsIG51bGxwdHIsIGNvbnRleHQuZG9jdW1lbnRFbGVtZW50U3R5bGUpOwogCiAgICAgc3Rh
dGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCplbGVtZW50U3R5bGUpKTsKLSAgICBz
dGF0ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocGFyZW50RWxlbWVudFN0
eWxlID8gKnBhcmVudEVsZW1lbnRTdHlsZSA6ICplbGVtZW50U3R5bGUpKTsKKyAgICBzdGF0ZS5z
ZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoY29udGV4dC5wYXJlbnRTdHlsZSA/
ICpjb250ZXh0LnBhcmVudFN0eWxlIDogKmVsZW1lbnRTdHlsZSkpOwogCiAgICAgQnVpbGRlciBi
dWlsZGVyKCpzdGF0ZS5zdHlsZSgpLCBidWlsZGVyQ29udGV4dChzdGF0ZSksIHJlc3VsdCwgeyBD
YXNjYWRlTGV2ZWw6OkF1dGhvciB9KTsKICAgICBidWlsZGVyLmFwcGx5QWxsUHJvcGVydGllcygp
OwpAQCAtMzA3LDcgKzMwNyw3IEBAIGJvb2wgUmVzb2x2ZXI6OmlzQW5pbWF0aW9uTmFtZVZhbGlk
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9rZXlmcmFtZXNSdWxlTWFwLmZpbmQo
QXRvbVN0cmluZyhuYW1lKS5pbXBsKCkpICE9IG1fa2V5ZnJhbWVzUnVsZU1hcC5lbmQoKTsKIH0K
IAotdm9pZCBSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgS2V5ZnJhbWVMaXN0JiBsaXN0KQordm9pZCBSZXNv
bHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVzb2x2ZUNvbnRleHQmIGNv
bnRleHQsIEtleWZyYW1lTGlzdCYgbGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7CiAKQEAgLTM2
OSw3ICszNjksNyBAQCB2b2lkIFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihj
b25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdAogICAgICAgICAvLyBBZGQgdGhp
cyBrZXlmcmFtZSBzdHlsZSB0byBhbGwgdGhlIGluZGljYXRlZCBrZXkgdGltZXMKICAgICAgICAg
Zm9yIChhdXRvIGtleSA6IGtleWZyYW1lLT5rZXlzKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1l
VmFsdWUga2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKLSAgICAgICAgICAgIGtleWZyYW1lVmFs
dWUuc2V0U3R5bGUoc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHBhcmVu
dEVsZW1lbnRTdHlsZSwga2V5ZnJhbWUucHRyKCksIGtleWZyYW1lVmFsdWUpKTsKKyAgICAgICAg
ICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVt
ZW50U3R5bGUsIGNvbnRleHQsIGtleWZyYW1lLnB0cigpLCBrZXlmcmFtZVZhbHVlKSk7CiAgICAg
ICAgICAgICBrZXlmcmFtZVZhbHVlLnNldEtleShrZXkpOwogICAgICAgICAgICAgaWYgKGF1dG8g
dGltaW5nRnVuY3Rpb25DU1NWYWx1ZSA9IGtleWZyYW1lLT5wcm9wZXJ0aWVzKCkuZ2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKSkKICAgICAgICAg
ICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uOjpj
cmVhdGVGcm9tQ1NTVmFsdWUoKnRpbWluZ0Z1bmN0aW9uQ1NTVmFsdWUuZ2V0KCkpKTsKQEAgLTM3
NywxMiArMzc3LDEyIEBAIHZvaWQgUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9u
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBsaXN0LmZpbGxJbXBsaWNpdEtleWZyYW1lcyhlbGVtZW50LCAqdGhpcywgZWxlbWVu
dFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIGxpc3QuZmlsbEltcGxpY2l0S2V5ZnJh
bWVzKGVsZW1lbnQsICp0aGlzLCBlbGVtZW50U3R5bGUsIGNvbnRleHQucGFyZW50U3R5bGUpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlc29sdmVyOjpwc2V1ZG9TdHlsZUZv
ckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUHNldWRvRWxlbWVudFJlcXVl
c3QmIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgY29uc3QgU2VsZWN0b3JGaWx0ZXIq
IHNlbGVjdG9yRmlsdGVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNvbHZlcjo6
cHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFBzZXVk
b0VsZW1lbnRSZXF1ZXN0JiBwc2V1ZG9FbGVtZW50UmVxdWVzdCwgY29uc3QgUmVzb2x2ZUNvbnRl
eHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVsZW1lbnQsICZwYXJlbnRT
dHlsZSwgbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKTsKKyAgICBhdXRvIHN0YXRlID0g
U3RhdGUoZWxlbWVudCwgY29udGV4dC5wYXJlbnRTdHlsZSwgY29udGV4dC5kb2N1bWVudEVsZW1l
bnRTdHlsZSk7CiAKICAgICBpZiAoc3RhdGUucGFyZW50U3R5bGUoKSkgewogICAgICAgICBzdGF0
ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCkpOwpAQCAtMzkyLDcgKzM5Miw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxl
bWVudChjb25zdCBFbGVtZW50JiBlbGVtCiAgICAgICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJl
bmRlclN0eWxlOjpjbG9uZVB0cigqc3RhdGUuc3R5bGUoKSkpOwogICAgIH0KIAotICAgIEVsZW1l
bnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVtZW50LCBtX3J1bGVTZXRzLCBzZWxlY3RvckZp
bHRlcik7CisgICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IgY29sbGVjdG9yKGVsZW1lbnQsIG1fcnVs
ZVNldHMsIGNvbnRleHQuc2VsZWN0b3JGaWx0ZXIpOwogICAgIGNvbGxlY3Rvci5zZXRQc2V1ZG9F
bGVtZW50UmVxdWVzdChwc2V1ZG9FbGVtZW50UmVxdWVzdCk7CiAgICAgY29sbGVjdG9yLnNldE1l
ZGl1bSgmbV9tZWRpYVF1ZXJ5RXZhbHVhdG9yKTsKICAgICBjb2xsZWN0b3IubWF0Y2hVQVJ1bGVz
KCk7CkBAIC00MTEsNyArNDExLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNv
bHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW0KIAogICAgIGFw
cGx5TWF0Y2hlZFByb3BlcnRpZXMoc3RhdGUsIGNvbGxlY3Rvci5tYXRjaFJlc3VsdCgpKTsKIAot
ICAgIEFkanVzdGVyIGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBw
YXJlbnRCb3hTdHlsZSwgbnVsbHB0cik7CisgICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQo
KSwgKnN0YXRlLnBhcmVudFN0eWxlKCksIGNvbnRleHQucGFyZW50Qm94U3R5bGUsIG51bGxwdHIp
OwogICAgIGFkanVzdGVyLmFkanVzdCgqc3RhdGUuc3R5bGUoKSwgc3RhdGUudXNlckFnZW50QXBw
ZWFyYW5jZVN0eWxlKCkpOwogCiAgICAgaWYgKHN0YXRlLnN0eWxlKCktPmhhc1ZpZXdwb3J0VW5p
dHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBkYzVjODRiOGEzYmI4
ZTBhMWQ5YjVkY2NmZjFlMTY0MzQ5ZjcxMDhmLi44ODJhYmFkNDZkNmVhNzJlODUwYjgwZmI4ZDQ0
NmFjMjdiNzZiZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCkBAIC04MCwx
NyArODAsMjUgQEAgc3RydWN0IEVsZW1lbnRTdHlsZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bGF0aW9ucz4gcmVsYXRpb25zOwogfTsKIAorc3RydWN0IFJlc29sdmVDb250ZXh0IHsKKyAgICBj
b25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGU7CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEJveFN0eWxlIHsgbnVsbHB0ciB9OworICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgcHJvdmlk
ZWQgZHVyaW5nIHN0eWxlIHJlc29sdXRpb24gd2hlbiB1cC10by1kYXRlIGRvY3VtZW50IGVsZW1l
bnQgc3R5bGUgaXMgbm90IGF2YWlsYWJsZSB2aWEgRE9NLgorICAgIGNvbnN0IFJlbmRlclN0eWxl
KiBkb2N1bWVudEVsZW1lbnRTdHlsZSB7IG51bGxwdHIgfTsKKyAgICBTZWxlY3RvckZpbHRlciog
c2VsZWN0b3JGaWx0ZXIgeyBudWxscHRyIH07Cit9OworCiBjbGFzcyBSZXNvbHZlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlc29sdmVyPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZXNv
bHZlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZXNvbHZlcj4gY3JlYXRlKERvY3VtZW50
Jik7CiAgICAgflJlc29sdmVyKCk7CiAKLSAgICBFbGVtZW50U3R5bGUgc3R5bGVGb3JFbGVtZW50
KGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSA9IG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9y
ID0gUnVsZU1hdGNoaW5nQmVoYXZpb3I6Ok1hdGNoQWxsUnVsZXMsIGNvbnN0IFNlbGVjdG9yRmls
dGVyKiA9IG51bGxwdHIpOworICAgIEVsZW1lbnRTdHlsZSBzdHlsZUZvckVsZW1lbnQoY29uc3Qg
RWxlbWVudCYsIGNvbnN0IFJlc29sdmVDb250ZXh0JiwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgPSBS
dWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcyk7CiAKLSAgICB2b2lkIGtleWZyYW1l
U3R5bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogZWxl
bWVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBLZXlmcmFt
ZUxpc3QmKTsKKyAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVsZW1l
bnQmLCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHZlQ29udGV4
dCYsIEtleWZyYW1lTGlzdCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYsIGNvbnN0
IFBzZXVkb0VsZW1lbnRSZXF1ZXN0JiwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgPSBudWxscHRyLCBjb25zdCBTZWxlY3Rv
ckZpbHRlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiwgY29uc3Qg
UHNldWRvRWxlbWVudFJlcXVlc3QmLCBjb25zdCBSZXNvbHZlQ29udGV4dCYpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBkZWZhdWx0U3R5bGVGb3JFbGVtZW50KGNv
bnN0IEVsZW1lbnQqKTsKQEAgLTEwNiwxMiArMTE0LDkgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
TWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaWFRdWVyeUV2YWx1YXRvcigpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFRdWVyeUV2YWx1YXRvcjsgfQogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUqIG92ZXJy
aWRlRG9jdW1lbnRFbGVtZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRG9jdW1l
bnRFbGVtZW50U3R5bGU7IH0KLSAgICB2b2lkIHNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IG1fb3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRT
dHlsZSA9IHN0eWxlOyB9Ci0KICAgICB2b2lkIGFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCk7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yS2V5ZnJhbWUoY29u
c3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxlUnVsZUtleWZyYW1lKiwgS2V5
ZnJhbWVWYWx1ZSYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JL
ZXlmcmFtZShjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwg
Y29uc3QgUmVzb2x2ZUNvbnRleHQmLCBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZSosIEtleWZyYW1l
VmFsdWUmKTsKICAgICBib29sIGlzQW5pbWF0aW9uTmFtZVZhbGlkKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGdpdmUgYmFjayB0aGUgc2V0IG9mIHJ1bGVzIHRo
YXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVtZW50IChvciBhIHBzZXVkby1lbGVtZW50KS4KQEAg
LTE2NCw4ICsxNjksNiBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAK
LSAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlIHsg
bnVsbHB0ciB9OwotCiAgICAgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyBtX2luc3BlY3RvckNTU09N
V3JhcHBlcnM7CiAKICAgICBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgbV9tYXRjaGVkRGVjbGFy
YXRpb25zQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAK
aW5kZXggMGNlNTZkOTc0OGIzZGE1YjdlNWY1MDdlZjRkMWM2YTk1Y2RiN2EwYS4uMDFiYmEwZTEz
ZWU5OTM4ZjA3Mzk1NGNjNTVhMmY0MWY0NDZkMWI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtODgsMTUgKzg4LDEyIEBAIFRyZWVSZXNvbHZlcjo6
U2NvcGU6OlNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFNjb3BlJiBlbmNsb3NpbmdTY29w
ZSkKICAgICAsIHNoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpCiAgICAgLCBlbmNsb3NpbmdTY29wZSgm
ZW5jbG9zaW5nU2NvcGUpCiB7Ci0gICAgcmVzb2x2ZXItPnNldE92ZXJyaWRlRG9jdW1lbnRFbGVt
ZW50U3R5bGUoZW5jbG9zaW5nU2NvcGUucmVzb2x2ZXItPm92ZXJyaWRlRG9jdW1lbnRFbGVtZW50
U3R5bGUoKSk7CiB9CiAKIFRyZWVSZXNvbHZlcjo6U2NvcGU6On5TY29wZSgpCiB7CiAgICAgaWYg
KCFzaGFkb3dSb290KQogICAgICAgICByZXNvbHZlci0+ZG9jdW1lbnQoKS5zZXRJc1Jlc29sdmlu
Z1RyZWVTdHlsZShmYWxzZSk7Ci0KLSAgICByZXNvbHZlci0+c2V0T3ZlcnJpZGVEb2N1bWVudEVs
ZW1lbnRTdHlsZShudWxscHRyKTsKIH0KIAogVHJlZVJlc29sdmVyOjpQYXJlbnQ6OlBhcmVudChE
b2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xMjksMTMgKzEyNiwxMyBAQCB2b2lkIFRyZWVSZXNvbHZl
cjo6cG9wU2NvcGUoKQogICAgIHJldHVybiBtX3Njb3BlU3RhY2sucmVtb3ZlTGFzdCgpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFRyZWVSZXNvbHZlcjo6c3R5bGVGb3JTdHls
ZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIGNvbnN0IFJlbmRlclN0eWxlJiBpbmhl
cml0ZWRTdHlsZSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gVHJlZVJlc29sdmVyOjpz
dHlsZUZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgY29uc3QgUmVzb2x2
ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0KQogewogICAgIGF1dG8mIGVsZW1lbnQgPSBzdHlsZWFi
bGUuZWxlbWVudDsKIAogICAgIGlmIChlbGVtZW50Lmhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxi
YWNrcygpKSB7CiAgICAgICAgIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUgPSBzY29wZSgp
LnNoYWRvd1Jvb3QgPyBtX3VwZGF0ZS0+ZWxlbWVudFN0eWxlKCpzY29wZSgpLnNoYWRvd1Jvb3Qt
Pmhvc3QoKSkgOiBudWxscHRyOwotICAgICAgICBpZiAoYXV0byBjdXN0b21TdHlsZSA9IGVsZW1l
bnQucmVzb2x2ZUN1c3RvbVN0eWxlKGluaGVyaXRlZFN0eWxlLCBzaGFkb3dIb3N0U3R5bGUpKSB7
CisgICAgICAgIGlmIChhdXRvIGN1c3RvbVN0eWxlID0gZWxlbWVudC5yZXNvbHZlQ3VzdG9tU3R5
bGUocmVzb2x2ZUNvbnRleHQsIHNoYWRvd0hvc3RTdHlsZSkpIHsKICAgICAgICAgICAgIGlmIChj
dXN0b21TdHlsZS0+cmVsYXRpb25zKQogICAgICAgICAgICAgICAgIGNvbW1pdFJlbGF0aW9ucyhX
VEZNb3ZlKGN1c3RvbVN0eWxlLT5yZWxhdGlvbnMpLCAqbV91cGRhdGUpOwogCkBAIC0xNDYsNyAr
MTQzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBUcmVlUmVzb2x2ZXI6OnN0eWxl
Rm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYgc3QKICAgICBpZiAoYXV0byBzdHlsZSA9IHNj
b3BlKCkuc2hhcmluZ1Jlc29sdmVyLnJlc29sdmUoc3R5bGVhYmxlLCAqbV91cGRhdGUpKQogICAg
ICAgICByZXR1cm4gc3R5bGU7CiAKLSAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVz
b2x2ZXItPnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAmaW5oZXJpdGVkU3R5bGUsIHBhcmVudEJv
eFN0eWxlKCksIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzLCAmc2NvcGUoKS5z
ZWxlY3RvckZpbHRlcik7CisgICAgYXV0byBlbGVtZW50U3R5bGUgPSBzY29wZSgpLnJlc29sdmVy
LT5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgcmVzb2x2ZUNvbnRleHQpOwogCiAgICAgaWYgKGVs
ZW1lbnRTdHlsZS5yZWxhdGlvbnMpCiAgICAgICAgIGNvbW1pdFJlbGF0aW9ucyhXVEZNb3ZlKGVs
ZW1lbnRTdHlsZS5yZWxhdGlvbnMpLCAqbV91cGRhdGUpOwpAQCAtMjEwLDggKzIwNywxMCBAQCBF
bGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVySXNFdmVyTmVlZGVkKCkgJiYgIWVsZW1lbnQu
aGFzRGlzcGxheUNvbnRlbnRzKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBhdXRvIHJl
c29sdmVDb250ZXh0ID0gbWFrZVJlc29sdmVDb250ZXh0KCk7CisKICAgICBTdHlsZWFibGUgc3R5
bGVhYmxlIHsgZWxlbWVudCwgUHNldWRvSWQ6Ok5vbmUgfTsKLSAgICBhdXRvIG5ld1N0eWxlID0g
c3R5bGVGb3JTdHlsZWFibGUoc3R5bGVhYmxlLCBwYXJlbnQoKS5zdHlsZSk7CisgICAgYXV0byBu
ZXdTdHlsZSA9IHN0eWxlRm9yU3R5bGVhYmxlKHN0eWxlYWJsZSwgcmVzb2x2ZUNvbnRleHQpOwog
CiAgICAgaWYgKCFhZmZlY3RzUmVuZGVyZWRTdWJ0cmVlKGVsZW1lbnQsICpuZXdTdHlsZSkpCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0yMjMsMTIgKzIyMiwxMSBAQCBFbGVtZW50VXBkYXRlcyBU
cmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1f
ZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoTm9uRmluYWxTdHlsZSgpOwogICAgIH0KIAotICAgIGF1
dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUobmV3U3R5bGUp
LCBzdHlsZWFibGUsIHBhcmVudCgpLmNoYW5nZSwgcGFyZW50KCkuc3R5bGUsIHBhcmVudEJveFN0
eWxlKCkpOworICAgIGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdU
Rk1vdmUobmV3U3R5bGUpLCBzdHlsZWFibGUsIHBhcmVudCgpLmNoYW5nZSwgcmVzb2x2ZUNvbnRl
eHQpOwogICAgIGF1dG8gZGVzY2VuZGFudHNUb1Jlc29sdmUgPSBjb21wdXRlRGVzY2VuZGFudHNU
b1Jlc29sdmUodXBkYXRlLmNoYW5nZSwgZWxlbWVudC5zdHlsZVZhbGlkaXR5KCksIHBhcmVudCgp
LmRlc2NlbmRhbnRzVG9SZXNvbHZlKTsKIAogICAgIGlmICgmZWxlbWVudCA9PSBtX2RvY3VtZW50
LmRvY3VtZW50RWxlbWVudCgpKSB7CiAgICAgICAgIG1fZG9jdW1lbnRFbGVtZW50U3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZS5zdHlsZSk7Ci0gICAgICAgIHNjb3BlKCkucmVz
b2x2ZXItPnNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUobV9kb2N1bWVudEVsZW1lbnRT
dHlsZS5nZXQoKSk7CiAKICAgICAgICAgaWYgKCFleGlzdGluZ1N0eWxlIHx8IGV4aXN0aW5nU3R5
bGUtPmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpICE9IHVwZGF0ZS5zdHlsZS0+Y29tcHV0ZWRGb250
UGl4ZWxTaXplKCkpIHsKICAgICAgICAgICAgIC8vICJyZW0iIHVuaXRzIGFyZSByZWxhdGl2ZSB0
byB0aGUgZG9jdW1lbnQgZWxlbWVudCdzIGZvbnQgc2l6ZSBzbyB3ZSBuZWVkIHRvIHJlY29tcHV0
ZSBldmVyeXRoaW5nLgpAQCAtMjg2LDEwICsyODQsOSBAQCBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRV
cGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1lbnQs
CiAgICAgaWYgKCFlbGVtZW50VXBkYXRlLnN0eWxlLT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvJiBwYXJlbnRTdHlsZSA9ICplbGVtZW50
VXBkYXRlLnN0eWxlOwotICAgIGF1dG8qIHBhcmVudEJveFN0eWxlID0gcGFyZW50Qm94U3R5bGVG
b3JQc2V1ZG8oZWxlbWVudFVwZGF0ZSk7CisgICAgYXV0byByZXNvbHZlQ29udGV4dCA9IG1ha2VS
ZXNvbHZlQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoZWxlbWVudFVwZGF0ZSk7CiAKLSAgICBhdXRv
IHBzZXVkb1N0eWxlID0gc2NvcGUoKS5yZXNvbHZlci0+cHNldWRvU3R5bGVGb3JFbGVtZW50KGVs
ZW1lbnQsIHsgcHNldWRvSWQgfSwgcGFyZW50U3R5bGUsIHBhcmVudEJveFN0eWxlLCAmc2NvcGUo
KS5zZWxlY3RvckZpbHRlcik7CisgICAgYXV0byBwc2V1ZG9TdHlsZSA9IHNjb3BlKCkucmVzb2x2
ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0lkIH0sIHJlc29sdmVD
b250ZXh0KTsKICAgICBpZiAoIXBzZXVkb1N0eWxlKQogICAgICAgICByZXR1cm4geyB9OwogCkBA
IC0yOTcsNyArMjk0LDI3IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29s
dmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwKICAgICBpZiAoIXBzZXVk
b0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0
aW9ucykKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBjcmVhdGVBbmltYXRlZEVs
ZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHlsZSksIHsgZWxlbWVudCwgcHNldWRvSWQgfSwg
ZWxlbWVudFVwZGF0ZS5jaGFuZ2UsIHBhcmVudFN0eWxlLCBwYXJlbnRCb3hTdHlsZSk7CisgICAg
cmV0dXJuIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKHBzZXVkb1N0eWxlKSwg
eyBlbGVtZW50LCBwc2V1ZG9JZCB9LCBlbGVtZW50VXBkYXRlLmNoYW5nZSwgcmVzb2x2ZUNvbnRl
eHQpOworfQorCitSZXNvbHZlQ29udGV4dCBUcmVlUmVzb2x2ZXI6Om1ha2VSZXNvbHZlQ29udGV4
dCgpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgJnBhcmVudCgpLnN0eWxlLAorICAgICAgICBw
YXJlbnRCb3hTdHlsZSgpLAorICAgICAgICBtX2RvY3VtZW50RWxlbWVudFN0eWxlLmdldCgpLAor
ICAgICAgICAmc2NvcGUoKS5zZWxlY3RvckZpbHRlcgorICAgIH07Cit9CisKK1Jlc29sdmVDb250
ZXh0IFRyZWVSZXNvbHZlcjo6bWFrZVJlc29sdmVDb250ZXh0Rm9yUHNldWRvRWxlbWVudChjb25z
dCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKQoreworICAgIHJldHVybiB7CisgICAgICAg
IGVsZW1lbnRVcGRhdGUuc3R5bGUuZ2V0KCksCisgICAgICAgIHBhcmVudEJveFN0eWxlRm9yUHNl
dWRvRWxlbWVudChlbGVtZW50VXBkYXRlKSwKKyAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRTdHls
ZS5nZXQoKSwKKyAgICAgICAgJnNjb3BlKCkuc2VsZWN0b3JGaWx0ZXIKKyAgICB9OwogfQogCiBj
b25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSgpIGNvbnN0CkBA
IC0zMTQsNyArMzMxLDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50
Qm94U3R5bGUoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1jb25zdCBSZW5kZXJT
dHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZUZvclBzZXVkbyhjb25zdCBFbGVtZW50
VXBkYXRlJiBlbGVtZW50VXBkYXRlKSBjb25zdAorY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNv
bHZlcjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUm
IGVsZW1lbnRVcGRhdGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChlbGVtZW50VXBkYXRlLnN0eWxl
LT5kaXNwbGF5KCkpIHsKICAgICBjYXNlIERpc3BsYXlUeXBlOjpOb25lOgpAQCAtMzI2LDcgKzM0
Myw3IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlRm9y
UHNldWRvKGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsCiAgICAgfQogfQogCi1FbGVtZW50VXBkYXRl
IFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUsIGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDaGFu
Z2UgcGFyZW50Q2hhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSkKK0VsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpj
cmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBu
ZXdTdHlsZSwgY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIENoYW5nZSBwYXJlbnRDaGFuZ2Us
IGNvbnN0IFJlc29sdmVDb250ZXh0JiByZXNvbHZlQ29udGV4dCkKIHsKICAgICBhdXRvJiBlbGVt
ZW50ID0gc3R5bGVhYmxlLmVsZW1lbnQ7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBlbGVtZW50LmRv
Y3VtZW50KCk7CkBAIC0zNDUsNyArMzYyLDcgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6
OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3QKICAg
ICAgICAgLy8gdG8gdXNlIENTUyBBbmltYXRpb25zIGFzIGRlZmluZWQgaW4gdGhlIHByZXZpb3Vz
IHN0eWxlIGNoYW5nZSBldmVudC4gQXMgc3VjaCwgd2UgdXBkYXRlIENTUyBBbmltYXRpb25zIGFm
dGVyIENTUyBUcmFuc2l0aW9ucwogICAgICAgICAvLyBzdWNoIHRoYXQgd2hlbiBDU1MgVHJhbnNp
dGlvbnMgYXJlIHVwZGF0ZWQgdGhlIENTUyBBbmltYXRpb25zIGRhdGEgaXMgdGhlIHNhbWUgYXMg
ZHVyaW5nIHRoZSBwcmV2aW91cyBzdHlsZSBjaGFuZ2UgZXZlbnQuCiAgICAgICAgIGlmICgob2xk
U3R5bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgfHwgbmV3U3R5bGUtPmhhc0FuaW1h
dGlvbnMoKSkKLSAgICAgICAgICAgIHN0eWxlYWJsZS51cGRhdGVDU1NBbmltYXRpb25zKG9sZFN0
eWxlLCAqbmV3U3R5bGUsICZwYXJlbnRTdHlsZSk7CisgICAgICAgICAgICBzdHlsZWFibGUudXBk
YXRlQ1NTQW5pbWF0aW9ucyhvbGRTdHlsZSwgKm5ld1N0eWxlLCByZXNvbHZlQ29udGV4dCk7CiAg
ICAgfQogCiAgICAgLy8gTm93IHdlIGNhbiB1cGRhdGUgYWxsIFdlYiBhbmltYXRpb25zLCB3aGlj
aCB3aWxsIGluY2x1ZGUgQ1NTIEFuaW1hdGlvbnMgYXMgd2VsbApAQCAtMzU2LDEwICszNzMsMTAg
QEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0
ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3QKICAgICAgICAgc3R5bGVhYmxlLnNldExhc3RTdHls
ZUNoYW5nZUV2ZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpuZXdTdHlsZSkpOwogICAg
ICAgICAvLyBBcHBseSBhbGwga2V5ZnJhbWUgZWZmZWN0cyB0byB0aGUgbmV3IHN0eWxlLgogICAg
ICAgICBhdXRvIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm5ld1N0eWxl
KTsKLSAgICAgICAgYW5pbWF0aW9uSW1wYWN0ID0gc3R5bGVhYmxlLmFwcGx5S2V5ZnJhbWVFZmZl
Y3RzKCphbmltYXRlZFN0eWxlLCAqcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCAm
cGFyZW50U3R5bGUpOworICAgICAgICBhbmltYXRpb25JbXBhY3QgPSBzdHlsZWFibGUuYXBwbHlL
ZXlmcmFtZUVmZmVjdHMoKmFuaW1hdGVkU3R5bGUsICpwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2
ZW50U3R5bGUsIHJlc29sdmVDb250ZXh0KTsKICAgICAgICAgbmV3U3R5bGUgPSBXVEZNb3ZlKGFu
aW1hdGVkU3R5bGUpOwogCi0gICAgICAgIEFkanVzdGVyIGFkanVzdGVyKGRvY3VtZW50LCBwYXJl
bnRTdHlsZSwgcGFyZW50Qm94U3R5bGUsIHN0eWxlYWJsZS5wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6
Tm9uZSA/ICZlbGVtZW50IDogbnVsbHB0cik7CisgICAgICAgIEFkanVzdGVyIGFkanVzdGVyKGRv
Y3VtZW50LCAqcmVzb2x2ZUNvbnRleHQucGFyZW50U3R5bGUsIHJlc29sdmVDb250ZXh0LnBhcmVu
dEJveFN0eWxlLCBzdHlsZWFibGUucHNldWRvSWQgPT0gUHNldWRvSWQ6Ok5vbmUgPyAmZWxlbWVu
dCA6IG51bGxwdHIpOwogICAgICAgICBhZGp1c3Rlci5hZGp1c3RBbmltYXRlZFN0eWxlKCpuZXdT
dHlsZSwgYW5pbWF0aW9uSW1wYWN0KTsKICAgICB9IGVsc2UKICAgICAgICAgc3R5bGVhYmxlLnNl
dExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuaAppbmRleCBmMjVkMjJkMjQ0NDkxMDNhNDM0NWM4ODkxZGM1N2I5
YWQwNWZhYWVjLi42NzM3NjI0Y2FiZWE0OTJmODFhYjBlZGRkYTczYWE5MjQ2ZTc1YjNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAg
Y2xhc3MgU2hhZG93Um9vdDsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKIGNsYXNzIFJlc29sdmVyOwor
c3RydWN0IFJlc29sdmVDb250ZXh0OwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURF
TlRJRklFUihUcmVlUmVzb2x2ZXJTY29wZSk7CiBjbGFzcyBUcmVlUmVzb2x2ZXIgewpAQCAtNTUs
MTMgKzU2LDEzIEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiByZXNvbHZl
KCk7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZUZv
clN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmLCBjb25zdCBSZW5kZXJTdHlsZSYgaW5oZXJpdGVk
U3R5bGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JTdHlsZWFi
bGUoY29uc3QgU3R5bGVhYmxlJiwgY29uc3QgUmVzb2x2ZUNvbnRleHQmKTsKIAogICAgIHZvaWQg
cmVzb2x2ZUNvbXBvc2VkVHJlZSgpOwogCiAgICAgRWxlbWVudFVwZGF0ZXMgcmVzb2x2ZUVsZW1l
bnQoRWxlbWVudCYpOwogCi0gICAgc3RhdGljIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5pbWF0ZWRF
bGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFN0eWxlYWJs
ZSYsIENoYW5nZSwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50Qm94U3R5bGUpOworICAgIHN0YXRpYyBFbGVtZW50VXBkYXRlIGNyZWF0ZUFu
aW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBT
dHlsZWFibGUmLCBDaGFuZ2UsIGNvbnN0IFJlc29sdmVDb250ZXh0Jik7CiAgICAgc3RkOjpvcHRp
b25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVs
ZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAKICAgICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3VudGVk
PFNjb3BlPiB7CkBAIC05OSw4ICsxMDAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvcFBhcmVu
dCgpOwogICAgIHZvaWQgcG9wUGFyZW50c1RvRGVwdGgodW5zaWduZWQgZGVwdGgpOwogCisgICAg
UmVzb2x2ZUNvbnRleHQgbWFrZVJlc29sdmVDb250ZXh0KCk7CisgICAgUmVzb2x2ZUNvbnRleHQg
bWFrZVJlc29sdmVDb250ZXh0Rm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRlJik7
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlKCkgY29uc3Q7Ci0gICAgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlRm9yUHNldWRvKGNvbnN0IEVsZW1lbnRVcGRh
dGUmKSBjb25zdDsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGVGb3JQc2V1
ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUmKSBjb25zdDsKIAogICAgIERvY3VtZW50JiBt
X2RvY3VtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV9kb2N1bWVudEVs
ZW1lbnRTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCmluZGV4IGNmYjA3NmZkNTQ0
ZTg5OWMwODJiNGJlMDNhYzA4NWZlYjlmNTY0NjkuLmM5MGVlZWEwYTAwZmNhODBhNTA2OTNhZGM2
YTdiOGIwNDNlMGY0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcApAQCAtMjExLDcg
KzIxMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSog
Y3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpIGNvbnN0Cit2b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NT
QW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZlQ29udGV4dCYgcmVzb2x2ZUNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgYXV0byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVuc3VyZUtleWZy
YW1lRWZmZWN0U3RhY2soKTsKIApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgU3R5bGVhYmxlOjp1
cGRhdGVDU1NBbmltYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0
IFJlbmRlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZm91bmRNYXRjaGluZ0Fu
aW1hdGlvbikKLSAgICAgICAgICAgICAgICBuZXdBbmltYXRpb25zLmFkZChDU1NBbmltYXRpb246
OmNyZWF0ZSgqdGhpcywgY3VycmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSwg
cGFyZW50RWxlbWVudFN0eWxlKSk7CisgICAgICAgICAgICAgICAgbmV3QW5pbWF0aW9ucy5hZGQo
Q1NTQW5pbWF0aW9uOjpjcmVhdGUoKnRoaXMsIGN1cnJlbnRBbmltYXRpb24sIGN1cnJlbnRTdHls
ZSwgbmV3U3R5bGUsIHJlc29sdmVDb250ZXh0KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4
OCw3ICszODgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJs
ZUFuZFByb3BlcnR5KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYgogICAgICAgICAgICAgLy8gSWYg
YSB0cmFuc2l0aW9uIGhhcyBub3QgeWV0IHN0YXJ0ZWQgb3Igc3RhcnRlZCB3aGVuIGFuaW1hdGlv
bnMgd2VyZSBsYXN0IHVwZGF0ZWQsIHVzZSB0aGUgdGltZWxpbmUgdGltZSBhdCBpdHMgY3JlYXRp
b24KICAgICAgICAgICAgIC8vIGFzIGl0cyBzdGFydCB0aW1lIHRvIGVuc3VyZSB0aGF0IGl0IHdp
bGwgcHJvZHVjZSBhIHN0eWxlIHdpdGggcHJvZ3Jlc3MgPiAwLgogICAgICAgICAgICAgYm9vbCBz
aG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID0gaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0
aW9uKSAmJiAoIWFuaW1hdGlvbi0+c3RhcnRUaW1lKCkgfHwgKmFuaW1hdGlvbi0+c3RhcnRUaW1l
KCkgPT0gc3R5bGVhYmxlLmVsZW1lbnQuZG9jdW1lbnQoKS50aW1lbGluZSgpLmN1cnJlbnRUaW1l
KCkpOwotICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUsIG51bGxw
dHIsIHNob3VsZFVzZVRpbWVsaW5lVGltZUF0Q3JlYXRpb24gPyBkb3duY2FzdDxDU1NUcmFuc2l0
aW9uPigqYW5pbWF0aW9uKS50aW1lbGluZVRpbWVBdENyZWF0aW9uKCkgOiBzdGQ6Om51bGxvcHQp
OworICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUsIHsgbnVsbHB0
ciB9LCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID8gZG93bmNhc3Q8Q1NTVHJhbnNp
dGlvbj4oKmFuaW1hdGlvbikudGltZWxpbmVUaW1lQXRDcmVhdGlvbigpIDogc3RkOjpudWxsb3B0
KTsKICAgICAgICAgICAgIHJldHVybiBhbmltYXRlZFN0eWxlOwogICAgICAgICB9CiAKQEAgLTQw
OCw3ICs0MDgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJs
ZUFuZFByb3BlcnR5KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYgogICAgIGF1dG8gYWZ0ZXJDaGFu
Z2VTdHlsZSA9IFsmXSgpIC0+IGNvbnN0IFJlbmRlclN0eWxlIHsKICAgICAgICAgaWYgKGlzPENT
U0FuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBhbmltYXRpb24tPmlzUmVsZXZhbnQoKSkgewogICAg
ICAgICAgICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKG5ld1N0eWxl
KTsKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCB7IG51bGxw
dHIgfSk7CiAgICAgICAgICAgICByZXR1cm4gYW5pbWF0ZWRTdHlsZTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlYWJsZS5oCmluZGV4IDIzYzhhZmFjOTBjNDZkNGQxZjIxM2JjYWFkMDEw
NDY2ZGNhNGFiNWMuLjY1OTU1YzM1ZGJlMjViZjhlNDRlNGU0ZjU1NjJjMGU0ZWE3ZmExMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCkBAIC04NSw5ICs4NSw5IEBAIHN0cnVjdCBTdHlsZWFi
bGUgewogICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMocHNldWRvSWQp
OwogICAgIH0KIAotICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5ZnJhbWVF
ZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHByZXZp
b3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVs
ZW1lbnRTdHlsZSkgY29uc3QKKyAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBhcHBseUtl
eWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
JiBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHZl
Q29udGV4dCYgcmVzb2x2ZUNvbnRleHQpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gZWxl
bWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKHBzZXVkb0lkKS5hcHBseUtleWZyYW1lRWZm
ZWN0cyh0YXJnZXRTdHlsZSwgcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCBwYXJl
bnRFbGVtZW50U3R5bGUpOworICAgICAgICByZXR1cm4gZWxlbWVudC5lbnN1cmVLZXlmcmFtZUVm
ZmVjdFN0YWNrKHBzZXVkb0lkKS5hcHBseUtleWZyYW1lRWZmZWN0cyh0YXJnZXRTdHlsZSwgcHJl
dmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCByZXNvbHZlQ29udGV4dCk7CiAgICAgfQog
CiAgICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucygpIGNvbnN0CkBAIC0x
NTUsNyArMTU1LDcgQEAgc3RydWN0IFN0eWxlYWJsZSB7CiAKICAgICB2b2lkIHJlbW92ZURlY2xh
cmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudChXZWJBbmltYXRpb24mKSBj
b25zdDsKIAotICAgIHZvaWQgdXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSog
Y3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVD
U1NBbmltYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBhZnRlckNoYW5nZVN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x2ZUNvbnRleHQmKSBj
b25zdDsKICAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBj
dXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgY29uc3Q7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggODY0MjdkNzk1ZWViMmE3ZTZiNWFhY2Q5MGE2
NTNiMDM0ZjE1ZTk0MC4uN2JlNGU5MjhhNjc4YzIxNTQxNzA1ZGQyMzQ3MzBhNTllODMzMzU4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNjM4LDE2ICs2MzgsMTkgQEAgdm9pZCBT
VkdFbGVtZW50OjphbmltYXRvcldpbGxCZURlbGV0ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKICAgICBwcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSgpLmFuaW1hdG9yV2lsbEJl
RGVsZXRlZChhdHRyaWJ1dGVOYW1lKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiBTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpF
bGVtZW50U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHlsZTo6
UmVzb2x2ZUNvbnRleHQmIHJlc29sdmVDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAg
ICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNlPiB0cmVlIHdlIGdldCB0aGUgc3R5bGUg
ZnJvbSB0aGUgZGVmaW5pdGlvbiB0cmVlLgogICAgIGlmIChSZWZQdHIgc3R5bGVFbGVtZW50ID0g
dGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkgewotICAgICAgICBhdXRvIHN0eWxlID0gc3R5
bGVFbGVtZW50LT5yZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKKyAgICAgICAgYXV0byBzdHls
ZUVsZW1lbnRSZXNvbHZlQ29udGV4dCA9IHJlc29sdmVDb250ZXh0OworICAgICAgICAvLyBDYW4n
dCB1c2UgdGhlIHNlbGVjdG9yIGZpbHRlciBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYW5vdGhlciBw
YXJ0IG9mIHRoZSB0cmVlLgorICAgICAgICBzdHlsZUVsZW1lbnRSZXNvbHZlQ29udGV4dC5zZWxl
Y3RvckZpbHRlciA9IG51bGxwdHI7CisgICAgICAgIGF1dG8gc3R5bGUgPSBzdHlsZUVsZW1lbnQt
PnJlc29sdmVTdHlsZShzdHlsZUVsZW1lbnRSZXNvbHZlQ29udGV4dCk7CiAgICAgICAgIFN0eWxl
OjpBZGp1c3Rlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKCpzdHlsZS5yZW5kZXJTdHlsZSwgKnRo
aXMpOwogICAgICAgICByZXR1cm4gc3R5bGU7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc29sdmVT
dHlsZSgmcGFyZW50U3R5bGUpOworICAgIHJldHVybiByZXNvbHZlU3R5bGUocmVzb2x2ZUNvbnRl
eHQpOwogfQogCiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBTVkdFbGVtZW50OjphbmltYXRlZFNN
SUxTdHlsZVByb3BlcnRpZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggMjU3
YWU3MDdkYzc4YzBlMjRmYjI3YzgyNzI5OGUwMTA2ZTEyZDY4OS4uYWU1OGIzOTc1NGI1MTNhNGU5
YWY0MjNmMWRiMTRiNjRiMTI5ZDQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xMDUs
NyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDb3JyZXNwb25kaW5nRWxlbWVudChT
VkdFbGVtZW50Kik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJl
c29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNv
bHZlQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRl
OwogCiAgICAgc3RhdGljIFF1YWxpZmllZE5hbWUgYW5pbWF0YWJsZUF0dHJpYnV0ZUZvck5hbWUo
Y29uc3QgQXRvbVN0cmluZyYpOwogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50UmFyZURhdGEuaAppbmRleCA3OWMxZThjMmYyZDYxNjgzMTkzM2UzODE3YmMyOTJlZTVm
MGU0NTFhLi42MjcyZmUzZjk2ZTkxYzljM2IyZDhkNTk0MDE2NjlhZjM4NjU2NGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAoIW1fb3ZlcnJpZGVD
b21wdXRlZFN0eWxlIHx8IG1fbmVlZHNPdmVycmlkZUNvbXB1dGVkU3R5bGVVcGRhdGUpIHsKICAg
ICAgICAgICAgIC8vIFRoZSBzdHlsZSBjb21wdXRlZCBoZXJlIGNvbnRhaW5zIG5vIENTUyBBbmlt
YXRpb25zL1RyYW5zaXRpb25zIG9yIFNNSUwgaW5kdWNlZCBydWxlcyAtIHRoaXMgaXMgbmVlZGVk
IHRvIGNvbXB1dGUgdGhlICJiYXNlIHZhbHVlIiBmb3IgdGhlIFNNSUwgYW5pbWF0aW9uIHNhbmR3
aGljaCBtb2RlbC4KLSAgICAgICAgICAgIG1fb3ZlcnJpZGVDb21wdXRlZFN0eWxlID0gZWxlbWVu
dC5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHBhcmVudFN0eWxlLCBu
dWxscHRyLCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlc0V4Y2x1ZGluZ1NNSUwp
LnJlbmRlclN0eWxlOworICAgICAgICAgICAgbV9vdmVycmlkZUNvbXB1dGVkU3R5bGUgPSBlbGVt
ZW50LnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgeyBwYXJlbnRTdHls
ZSB9LCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlc0V4Y2x1ZGluZ1NNSUwpLnJl
bmRlclN0eWxlOwogICAgICAgICAgICAgbV9uZWVkc092ZXJyaWRlQ29tcHV0ZWRTdHlsZVVwZGF0
ZSA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChtX292ZXJyaWRlQ29tcHV0ZWRT
dHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTg3YWUxOGQ5YTBj
MmM2YjA0MjAyNjc4YmMwMDlhMGEwMTgxZWY4Ni4uM2QxODhlNjc2NDE1YTQxZjMxZmY3NTVhNWY5
ZGZhNzM0YTc0ZDIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjAx
OCw3ICs2MDE4LDcgQEAgU3RyaW5nIEludGVybmFsczo6aGlnaGxpZ2h0UHNldWRvRWxlbWVudENv
bG9yKGNvbnN0IFN0cmluZyYgaGlnaGxpZ2h0TmFtZSwgRWxlbWUKICAgICBpZiAoIXBhcmVudFN0
eWxlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBzdHlsZSA9IHN0eWxlUmVzb2x2
ZXIucHNldWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgUHNldWRvSWQ6OkhpZ2hsaWdodCwg
aGlnaGxpZ2h0TmFtZSB9LCAqcGFyZW50U3R5bGUpOworICAgIGF1dG8gc3R5bGUgPSBzdHlsZVJl
c29sdmVyLnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IFBzZXVkb0lkOjpIaWdobGln
aHQsIGhpZ2hsaWdodE5hbWUgfSwgeyBwYXJlbnRTdHlsZSB9KTsKICAgICBpZiAoIXN0eWxlKQog
ICAgICAgICByZXR1cm4geyB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442168</attachid>
            <date>2021-10-22 08:47:11 -0700</date>
            <delta_ts>2021-10-22 09:56:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232137-20211022184709.patch</filename>
            <type>text/plain</type>
            <size>76680</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI2NmIxMmUxYmI2YTQx
YjhkMDJjMGUzZmU2MmUxMmYwODQzZGFjNS4uZjUyYWI3NTZiOTIyYzFhNTI4YTY4NWUxY2RhN2E1
OGZlMGY0NTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMS0xMC0yMiAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHN0eWxlIHJl
c29sdmVyIGNvbnRleHQgYXJndW1lbnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjEzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IEFudG9pbmUgUXVpbnQuCisKKyAgICAgICAgQWRkIFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4
dCBzdHJ1Y3QgYW5kIHVzZSBpdCB0byBjb25zaXN0ZW50bHkgcGFzcyBhcm91bmQgYWxsIGNvbnRl
eHQgYXJndW1lbnQgbmVlZGVkCisgICAgICAgIGZvciByZXNvbHZpbmcgc3R5bGUgaW5zdGVhZCBv
ZiBqdXN0IHBhc3NpbmcgYXJvdW5kIGluZGl2aWR1YWwgYXJndW1lbnRzIGFzIHNlcGFyYXRlIGZ1
bmN0aW9uIHBhcmFtZXRlci4KKworICAgICAgICBBbiBpbW1lZGlhdGVseSBiZW5lZml0IGlzIHRo
YXQgd2UgY2FuIHJlbW92ZSB0aGUgc3RhdGVmdWwgc2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRT
dHlsZSBoYWNrLgorICAgICAgICBUaGlzIGFsc28gbWFrZXMgdGhlIHN0eWxlIHN5c3RlbSBtb3Jl
IGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGZvciBmdXR1cmUgd29yay4KKworICAgICAgICBNb3N0
IG9mIHRoZSBwYXRjaCBpcyBtZWNoYW5pY2FsbHkgcmVwbGFjaW5nIGEgcGFyZW50IHN0eWxlIGFy
Z3VtZW50IGluIHZhcmlvdXMgcGxhY2VzIHdpdGggYSBjb250ZXh0CisgICAgICAgIHN0cnVjdCBh
cmd1bWVudC4KKworICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaDoKKyAgICAg
ICAgKiBhbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Fu
aW1hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTQW5pbWF0aW9uLmg6Cisg
ICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVHJhbnNpdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RyYW5zaXRpb246
OnJlc29sdmUpOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmg6CisgICAgICAg
ICogYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFsaXplKToKKyAgICAgICAgKiBhbmltYXRpb24v
RGVjbGFyYXRpdmVBbmltYXRpb24uaDoKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5n
S2V5ZnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlRGVj
bGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjphcHBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6c2V0QW5pbWF0ZWRQcm9wZXJ0aWVzSW5TdHlsZSk6CisgICAgICAg
ICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3RTdGFj
azo6YXBwbHlLZXlmcmFtZUVmZmVjdHMpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdFN0YWNrLmg6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQW5pbWF0aW9uOjpjb21taXRTdHlsZXMpOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmlt
YXRpb24uaDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFRdWVyeU1hdGNoZXI6OmRvY3VtZW50RWxlbWVudFVzZXJBZ2VudFN0eWxl
IGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZU1lZGlhOjptYXRjaE1lZGl1bSBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJZ25vcmlu
Z1BlbmRpbmdTdHlsZXNoZWV0cyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6cmVzb2x2ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRpdGxlRWxlbWVudDo6Y29tcHV0ZWRUZXh0V2l0aERpcmVjdGlvbik6CisgICAgICAgICogaHRt
bC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVGaWVsZEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyQ29udGFpbmVy
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckNvbnRhaW5l
cjo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpyZXNv
bHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0
b25FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExp
bmVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZXRVbmNh
Y2hlZFBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvS2V5ZnJh
bWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lTGlzdDo6ZmlsbEltcGxpY2l0
S2V5ZnJhbWVzKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6UmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OlJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6
b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUp
OiBEZWxldGVkLgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OlNjb3BlOjpTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpTY29wZTo6flNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yU3R5bGVhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjptYWtlUmVzb2x2ZUNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6bWFrZVJlc29sdmVDb250
ZXh0Rm9yUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29s
dmVyOjpwYXJlbnRCb3hTdHlsZUZvclBzZXVkb0VsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlRm9y
UHNldWRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHlsZWFibGVBbmRQcm9wZXJ0eSk6CisgICAgICAgICog
c3R5bGUvU3R5bGVhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmFwcGx5S2V5
ZnJhbWVFZmZlY3RzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjpvdmVycmlkZUNvbXB1dGVkU3R5
bGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6aGlnaGxpZ2h0UHNldWRvRWxlbWVudENvbG9yKToKKwogMjAyMS0xMC0yMiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIHRleHQgaW50ZXJmYWNlIHdoZW4gYnVpbGRp
bmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvbkVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5o
CmluZGV4IDI2NTMyMjEzYTc0NTdkZDAyNTgwOGYwODAxYzBjZGYxZDI1MDNhNzcuLmViY2ZkOWY1
N2MzZTA5NzlmMGM3MDEwNTljNWNjYTgwNzNjY2EwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKQEAgLTQ3LDYgKzQ3LDEwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorbmFtZXNwYWNlIFN0eWxlIHsKK3N0cnVjdCBSZXNvbHV0aW9uQ29udGV4dDsK
K30KKwogY2xhc3MgQW5pbWF0aW9uRWZmZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9u
RWZmZWN0PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFuaW1hdGlvbkVmZmVjdD4gewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkFuaW1hdGlvbkVmZmVjdCgpOwpAQCAtNjEsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYmluZGluZ3NVcGRhdGVUaW1pbmcoc3RkOjpvcHRp
b25hbDxPcHRpb25hbEVmZmVjdFRpbWluZz4pOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0
ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogcGFyZW50RWxlbWVudFN0eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxs
b3B0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHls
ZSwgY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiA9IHN0ZDo6bnVsbG9wdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25EaWRUaWNrKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBhbmltYXRpb25EaWRQbGF5KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NT
QW5pbWF0aW9uLmNwcAppbmRleCAzMTNmMGRjODQ5ZThmY2ZhNWQxMjMyYWM5ZTA4ODljMWUyZjYy
ZWMyLi5iNzU2ZmI1NjA2ZjA3MDRlMzUxMDk4ZDk1NjAyMTVhM2UwMjMzMTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU0FuaW1h
dGlvbik7CiAKLVJlZjxDU1NBbmltYXRpb24+IENTU0FuaW1hdGlvbjo6Y3JlYXRlKGNvbnN0IFN0
eWxlYWJsZSYgb3duaW5nRWxlbWVudCwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9u
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK1JlZjxDU1NBbmltYXRp
b24+IENTU0FuaW1hdGlvbjo6Y3JlYXRlKGNvbnN0IFN0eWxlYWJsZSYgb3duaW5nRWxlbWVudCwg
Y29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdXRp
b25Db250ZXh0JiByZXNvbHV0aW9uQ29udGV4dCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgQ1NTQW5pbWF0aW9uKG93bmluZ0VsZW1lbnQsIGJhY2tpbmdBbmltYXRpb24pKTsK
LSAgICByZXN1bHQtPmluaXRpYWxpemUob2xkU3R5bGUsIG5ld1N0eWxlLCBwYXJlbnRFbGVtZW50
U3R5bGUpOworICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShvbGRTdHlsZSwgbmV3U3R5bGUsIHJlc29s
dXRpb25Db250ZXh0KTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRl
V2ViQW5pbWF0aW9uKHJlc3VsdC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NB
bmltYXRpb24uaAppbmRleCA1MDM5OTc4ZGUwMWNlN2VhOTZhZDg3NjY1MDUzZDFkNTMyMGQxYTI2
Li41NWZiYzVjYzYxMzgzOTk0MzZmODJmZDFhNWRkNDQxMTA1NzRlZjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFJlbmRl
clN0eWxlOwogY2xhc3MgQ1NTQW5pbWF0aW9uIGZpbmFsIDogcHVibGljIERlY2xhcmF0aXZlQW5p
bWF0aW9uIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU0FuaW1hdGlvbik7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb24+IGNyZWF0ZShjb25zdCBTdHlsZWFibGUm
LCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHls
ZSk7CisgICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb24+IGNyZWF0ZShjb25zdCBTdHlsZWFibGUm
LCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0Jik7CiAg
ICAgfkNTU0FuaW1hdGlvbigpID0gZGVmYXVsdDsKIAogICAgIGJvb2wgaXNDU1NBbmltYXRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQ1NTVHJhbnNpdGlvbi5jcHAKaW5kZXggNDBiYzM0ZDZhMTRjMGRjZDJkYjM3YWMwZGI1MWE1
NjM2NjY1MzUxZS4uMzQ1ZDVjOTBkZThiMzU1NTgyY2EyNjMxODVlZWEzNjVjMjQ5MWU4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcApAQCAtNDEsNyArNDEs
NyBAQCBSZWY8Q1NTVHJhbnNpdGlvbj4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGNvbnN0IFN0eWxl
YWJsZSYgb3duaW5nRWxlbWVudCwgQ1NTUHJvcAogewogICAgIEFTU0VSVChvbGRTdHlsZSk7CiAg
ICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU1RyYW5zaXRpb24ob3duaW5nRWxlbWVu
dCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCBiYWNraW5nQW5pbWF0aW9uLCAqb2xkU3R5bGUs
IG5ld1N0eWxlLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0ZW5p
bmdGYWN0b3IpKTsKLSAgICByZXN1bHQtPmluaXRpYWxpemUob2xkU3R5bGUsIG5ld1N0eWxlLCBu
dWxscHRyKTsKKyAgICByZXN1bHQtPmluaXRpYWxpemUob2xkU3R5bGUsIG5ld1N0eWxlLCB7IG51
bGxwdHIgfSk7CiAgICAgcmVzdWx0LT5zZXRUaW1pbmdQcm9wZXJ0aWVzKGRlbGF5LCBkdXJhdGlv
bik7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkFuaW1hdGlv
bihyZXN1bHQuZ2V0KCkpOwpAQCAtNjEsOSArNjEsOSBAQCBDU1NUcmFuc2l0aW9uOjpDU1NUcmFu
c2l0aW9uKGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LAogewogfQogCi12b2lkIENTU1RyYW5zaXRpb246OnJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdl
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IHN0YXJ0VGltZSkKK3ZvaWQgQ1NTVHJhbnNpdGlvbjo6cmVzb2x2ZShSZW5k
ZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4dCYgcmVz
b2x1dGlvbkNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQogewotICAg
IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpyZXNvbHZlKHRhcmdldFN0eWxlLCBwYXJlbnRFbGVtZW50
U3R5bGUsIHN0YXJ0VGltZSk7CisgICAgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlc29sdmUodGFy
Z2V0U3R5bGUsIHJlc29sdXRpb25Db250ZXh0LCBzdGFydFRpbWUpOwogICAgIG1fY3VycmVudFN0
eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKHRhcmdldFN0eWxlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKaW5kZXggNjNlYjNjYTAzZTNiMTJiOTJhNWNl
Y2YxNDBlYzcwNjMyMTMwNmQwYi4uOThmNmI0YjA0ZmI5NjYwMmMzZGE0OGUyMzgwMDQ4ZjMxNjA4
MjRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCkBAIC01OCw3
ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgQ1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmLCBD
U1NQcm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRp
b24mLCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiB0YXJn
ZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwg
ZG91YmxlKTsKICAgICB2b2lkIHNldFRpbWluZ1Byb3BlcnRpZXMoU2Vjb25kcyBkZWxheSwgU2Vj
b25kcyBkdXJhdGlvbik7CiAgICAgUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4gY3JlYXRlRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0
cmluZyYgcHNldWRvSWQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKSBmaW5h
bDsKLSAgICB2b2lkIHJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+KSBmaW5h
bDsKKyAgICB2b2lkIHJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBTdHls
ZTo6UmVzb2x1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+KSBmaW5hbDsKIAog
ICAgIENTU1Byb3BlcnR5SUQgbV9wcm9wZXJ0eTsKICAgICBNb25vdG9uaWNUaW1lIG1fZ2VuZXJh
dGlvblRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRp
dmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5p
bWF0aW9uLmNwcAppbmRleCBmMTk2MDhlMDRhZWMzYjExNGZjYmY0NjNlMDdlMzI2ZjEwOWExZGQ2
Li4zZWQxZTJkMGM3NWRjZmVjNDE1MzkzZWE3MTA2MGUzYTA4YTBmMDYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTEwNSw3
ICsxMDUsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzZXRCYWNraW5nQW5pbWF0aW9u
KGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbgogICAgIHN5bmNQcm9wZXJ0aWVzV2l0
aEJhY2tpbmdBbmltYXRpb24oKTsKIH0KIAotdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5p
dGlhbGl6ZShjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK3ZvaWQgRGVj
bGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29u
dGV4dCYgcmVzb2x1dGlvbkNvbnRleHQpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBzdXNwZW5kIGlu
dmFsaWRhdGlvbiBvZiB0aGUgYW5pbWF0aW9uJ3Mga2V5ZnJhbWUgZWZmZWN0IGR1cmluZyBpdHMg
Y3JlYXRpb24KICAgICAvLyBhcyBpdCB3b3VsZCBvdGhlcndpc2UgdHJpZ2dlciBpbnZhbGlkYXRp
b24gb2YgdGhlIGRvY3VtZW50J3Mgc3R5bGUgYW5kIHRoaXMgd291bGQgYmUKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFsaXplKGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyUwogCiAgICAgc2V0RWZmZWN0KEtleWZyYW1l
RWZmZWN0OjpjcmVhdGUoKm1fb3duaW5nRWxlbWVudCwgbV9vd25pbmdQc2V1ZG9JZCkpOwogICAg
IHNldFRpbWVsaW5lKCZtX293bmluZ0VsZW1lbnQtPmRvY3VtZW50KCkudGltZWxpbmUoKSk7Ci0g
ICAgZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGVmZmVjdCgpKS0+Y29tcHV0ZURlY2xhcmF0aXZl
QW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5bGUsIG5ld1N0eWxlLCBwYXJlbnRFbGVt
ZW50U3R5bGUpOworICAgIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihlZmZlY3QoKSktPmNvbXB1
dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBuZXdTdHls
ZSwgcmVzb2x1dGlvbkNvbnRleHQpOwogICAgIHN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmlt
YXRpb24oKTsKICAgICBpZiAoYmFja2luZ0FuaW1hdGlvbigpLnBsYXlTdGF0ZSgpID09IEFuaW1h
dGlvblBsYXlTdGF0ZTo6UGxheWluZykKICAgICAgICAgcGxheSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAppbmRleCA4NTI0Yjc4ZDc0MzFm
YTk3OTc0NjI3NDkzNmI5MjQ3MGZlYzA0M2Y2Li5jYzE5ZTdjZjU0YjVkODQwN2IxNjkzNjczNmE4
MmY0Y2Q2MmQzZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFy
YXRpdmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRp
dmVBbmltYXRpb24uaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
RGVjbGFyYXRpdmVBbmltYXRpb24oY29uc3QgU3R5bGVhYmxlJiwgY29uc3QgQW5pbWF0aW9uJik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVu
dEVsZW1lbnRTdHlsZSk7CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxl
OjpSZXNvbHV0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jUHJvcGVydGllc1dp
dGhCYWNraW5nQW5pbWF0aW9uKCk7CiAgICAgLy8gZWxhcHNlZFRpbWUgaXMgdGhlIGFuaW1hdGlv
bidzIGN1cnJlbnQgdGltZSBhdCB0aGUgdGltZSB0aGUgZXZlbnQgaXMgYWRkZWQgYW5kIGlzIGV4
cG9zZWQgdGhyb3VnaCB0aGUgRE9NIEFQSSwgdGltZWxpbmVUaW1lIGlzIHRoZSBhbmltYXRpb25z
JwogICAgIC8vIHRpbWVsaW5lIGN1cnJlbnQgdGltZSBhbmQgaXMgbm90IGV4cG9zZWQgdGhyb3Vn
aCB0aGUgRE9NIEFQSSBidXQgdXNlZCBieSB0aGUgRG9jdW1lbnRUaW1lbGluZSBmb3Igc29ydGlu
ZyBldmVudHMgYmVmb3JlIGRpc3BhdGNoLiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuY3BwCmluZGV4IDY3YjlhZjBjMDE2ODZmOThkMjVhYjY4MDM3MzEwZjVmZTFh
ZGZlOTkuLmYzYTQ0NmU3MjIyMTZmOTUzOThjMzRjYWJkMTVlZjZiYjlkMDM1NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtODEyLDcgKzgxMiw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBL
ZXlmcmFtZUVmZmVjdDo6dXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmIGVsZW1l
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkKK3ZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJiBlbGVtZW50
U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4dCYgcmVzb2x1dGlvbkNvbnRleHQp
CiB7CiAgICAgaWYgKCFtX2JsZW5kaW5nS2V5ZnJhbWVzLmlzRW1wdHkoKSB8fCAhbV90YXJnZXQp
CiAgICAgICAgIHJldHVybjsKQEAgLTgyOSw3ICs4MjksNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0
Ojp1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyhSZW5kZXJTdHlsZSYgZWxlbWVudFN0eWxlLCBjb25z
dCBSZQogICAgICAgICAgICAga2V5ZnJhbWVMaXN0LmFkZFByb3BlcnR5KHN0eWxlUHJvcGVydGll
cy0+cHJvcGVydHlBdChpKS5pZCgpKTsKIAogICAgICAgICBhdXRvIGtleWZyYW1lUnVsZSA9IFN0
eWxlUnVsZUtleWZyYW1lOjpjcmVhdGUoV1RGTW92ZShzdHlsZVByb3BlcnRpZXMpKTsKLSAgICAg
ICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHlsZShzdHlsZVJlc29sdmVyLnN0eWxlRm9yS2V5ZnJhbWUo
Km1fdGFyZ2V0LCAmZWxlbWVudFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUsIGtleWZyYW1lUnVs
ZS5wdHIoKSwga2V5ZnJhbWVWYWx1ZSkpOworICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxl
KHN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JLZXlmcmFtZSgqbV90YXJnZXQsICZlbGVtZW50U3R5bGUs
IHJlc29sdXRpb25Db250ZXh0LCBrZXlmcmFtZVJ1bGUucHRyKCksIGtleWZyYW1lVmFsdWUpKTsK
ICAgICAgICAga2V5ZnJhbWVMaXN0Lmluc2VydChXVEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKICAg
ICB9CiAKQEAgLTEwMDMsMTYgKzEwMDMsMTYgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y2hlY2tG
b3JNYXRjaGluZ0NvbG9yRmlsdGVyRnVuY3Rpb25MaXN0cygpCiAgICAgfSk7CiB9CiAKLXZvaWQg
S2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJh
bWVzKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKQordm9pZCBLZXlmcmFt
ZUVmZmVjdDo6Y29tcHV0ZURlY2xhcmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNv
bnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4dCYgcmVzb2x1dGlvbkNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKGlzPERlY2xhcmF0aXZlQW5pbWF0aW9uPihhbmltYXRpb24oKSkpOwogICAgIGlmIChp
czxDU1NBbmltYXRpb24+KGFuaW1hdGlvbigpKSkKLSAgICAgICAgY29tcHV0ZUNTU0FuaW1hdGlv
bkJsZW5kaW5nS2V5ZnJhbWVzKG5ld1N0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgICAg
ICBjb21wdXRlQ1NTQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMobmV3U3R5bGUsIHJlc29sdXRp
b25Db250ZXh0KTsKICAgICBlbHNlIGlmIChpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24oKSkp
CiAgICAgICAgIGNvbXB1dGVDU1NUcmFuc2l0aW9uQmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5bGUs
IG5ld1N0eWxlKTsKIH0KIAotdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUNTU0FuaW1hdGlv
bkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmFuaW1hdGVkU3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUpCit2b2lkIEtleWZyYW1lRWZmZWN0
Ojpjb21wdXRlQ1NTQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3R5bGUm
IHVuYW5pbWF0ZWRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHV0
aW9uQ29udGV4dCkKIHsKICAgICBBU1NFUlQoaXM8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24oKSkp
OwogICAgIEFTU0VSVChkb2N1bWVudCgpKTsKQEAgLTEwMjIsNyArMTAyMiw3IEBAIHZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OmNvbXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBS
ZW5kZXJTdHlsZSYgdW5hCiAKICAgICBLZXlmcmFtZUxpc3Qga2V5ZnJhbWVMaXN0KGJhY2tpbmdB
bmltYXRpb24ubmFtZSgpLnN0cmluZyk7CiAgICAgaWYgKGF1dG8qIHN0eWxlU2NvcGUgPSBTdHls
ZTo6U2NvcGU6OmZvck9yZGluYWwoKm1fdGFyZ2V0LCBiYWNraW5nQW5pbWF0aW9uLm5hbWVTdHls
ZVNjb3BlT3JkaW5hbCgpKSkKLSAgICAgICAgc3R5bGVTY29wZS0+cmVzb2x2ZXIoKS5rZXlmcmFt
ZVN0eWxlc0ZvckFuaW1hdGlvbigqbV90YXJnZXQsICZ1bmFuaW1hdGVkU3R5bGUsIHBhcmVudEVs
ZW1lbnRTdHlsZSwga2V5ZnJhbWVMaXN0KTsKKyAgICAgICAgc3R5bGVTY29wZS0+cmVzb2x2ZXIo
KS5rZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbigqbV90YXJnZXQsICZ1bmFuaW1hdGVkU3R5bGUs
IHJlc29sdXRpb25Db250ZXh0LCBrZXlmcmFtZUxpc3QpOwogCiAgICAgLy8gRW5zdXJlIHJlc291
cmNlIGxvYWRzIGZvciBhbGwgdGhlIGZyYW1lcy4KICAgICBmb3IgKGF1dG8mIGtleWZyYW1lIDog
a2V5ZnJhbWVMaXN0LmtleWZyYW1lcygpKSB7CkBAIC0xMjY2LDEyICsxMjY2LDEyIEBAIHZvaWQg
S2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldFN0eWxlYWJsZShjb25zdCBzdGQ6Om9wdGlv
bmFsPGNvbnN0IFN0eWxlYWJsCiAgICAgICAgIG1faW5UYXJnZXRFZmZlY3RTdGFjayA9IG5ld1Rh
cmdldFN0eWxlYWJsZS0+ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpLmFkZEVmZmVjdCgqdGhp
cyk7CiB9CiAKLXZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBzdGFydFRpbWUpCit2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJT
dHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4dCYgcmVzb2x1
dGlvbkNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQogewogICAgIGlm
ICghbV90YXJnZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUJsZW5kaW5nS2V5ZnJh
bWVzKHRhcmdldFN0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUpOworICAgIHVwZGF0ZUJsZW5kaW5n
S2V5ZnJhbWVzKHRhcmdldFN0eWxlLCByZXNvbHV0aW9uQ29udGV4dCk7CiAKICAgICBhdXRvIGNv
bXB1dGVkVGltaW5nID0gZ2V0Q29tcHV0ZWRUaW1pbmcoc3RhcnRUaW1lKTsKICAgICBpZiAoIXN0
YXJ0VGltZSkgewpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0
QW5pbWF0ZWRQcm9wZXJ0aWVzSW5TdHlsZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGRvdWIK
ICAgICAvLyBUaGUgZWZmZWN0IHZhbHVlIG9mIGEgc2luZ2xlIHByb3BlcnR5IHJlZmVyZW5jZWQg
YnkgYSBrZXlmcmFtZSBlZmZlY3QgYXMgb25lIG9mIGl0cyB0YXJnZXQgcHJvcGVydGllcywKICAg
ICAvLyBmb3IgYSBnaXZlbiBpdGVyYXRpb24gcHJvZ3Jlc3MsIGN1cnJlbnQgaXRlcmF0aW9uIGFu
ZCB1bmRlcmx5aW5nIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYXMgZm9sbG93cy4KIAotICAgIHVwZGF0
ZUJsZW5kaW5nS2V5ZnJhbWVzKHRhcmdldFN0eWxlLCBudWxscHRyKTsKKyAgICB1cGRhdGVCbGVu
ZGluZ0tleWZyYW1lcyh0YXJnZXRTdHlsZSwgeyBudWxscHRyIH0pOwogICAgIGlmIChtX2JsZW5k
aW5nS2V5ZnJhbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCmluZGV4IGY3ODE1Mzk5NTI0N2FhMTk1NDU2ZWZi
NGI0MTkzZGM0NjY1NDM3Y2EuLjVhMTQwMTNhNWMxNmU5ZWNkMzMwYzMxZmNjNDU0ODQ2OGNjYjNi
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC0xMjMs
NyArMTIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9zaXRlKENvbXBvc2l0ZU9wZXJh
dGlvbiBjb21wb3NpdGVPcGVyYXRpb24pIHsgbV9jb21wb3NpdGVPcGVyYXRpb24gPSBjb21wb3Np
dGVPcGVyYXRpb247IH0KIAogICAgIHZvaWQgZ2V0QW5pbWF0ZWRTdHlsZShzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKTsKLSAgICB2b2lkIGFwcGx5KFJlbmRlclN0
eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9u
Q29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIG92ZXJyaWRl
OwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYW5pbWF0aW9uRGlk
VGljaygpIGZpbmFsOwogICAgIHZvaWQgYW5pbWF0aW9uRGlkUGxheSgpIGZpbmFsOwpAQCAtMTU0
LDcgKzE1NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIGJvb2wgY29sb3JGaWx0ZXJGdW5jdGlv
bkxpc3RzTWF0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbG9yRmlsdGVyRnVuY3Rp
b25MaXN0c01hdGNoOyB9CiAKLSAgICB2b2lkIGNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJs
ZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUmIG5ld1N0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKTsK
KyAgICB2b2lkIGNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBj
b25zdCBTdHlsZTo6UmVzb2x1dGlvbkNvbnRleHQmKTsKICAgICBjb25zdCBLZXlmcmFtZUxpc3Qm
IGJsZW5kaW5nS2V5ZnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9ibGVuZGluZ0tleWZyYW1lczsg
fQogICAgIGNvbnN0IEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mIGFuaW1hdGVkUHJvcGVydGllcygp
OwogICAgIGJvb2wgYW5pbWF0ZXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKQEAgLTE5
OCw4ICsxOTgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVN0YWNraW5nQ29udGV4dElt
cGFjdCgpOwogICAgIHZvaWQgY29tcHV0ZVNvbWVLZXlmcmFtZXNVc2VTdGVwc1RpbWluZ0Z1bmN0
aW9uKCk7CiAgICAgdm9pZCBjbGVhckJsZW5kaW5nS2V5ZnJhbWVzKCk7Ci0gICAgdm9pZCB1cGRh
dGVCbGVuZGluZ0tleWZyYW1lcyhSZW5kZXJTdHlsZSYgZWxlbWVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKTsKLSAgICB2b2lkIGNvbXB1dGVDU1NBbmltYXRp
b25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSYgdW5hbmltYXRlZFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICB2b2lkIHVwZGF0ZUJs
ZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJiBlbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxlOjpS
ZXNvbHV0aW9uQ29udGV4dCYpOworICAgIHZvaWQgY29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5n
S2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlJiB1bmFuaW1hdGVkU3R5bGUsIGNvbnN0IFN0eWxl
OjpSZXNvbHV0aW9uQ29udGV4dCYpOwogICAgIHZvaWQgY29tcHV0ZUNTU1RyYW5zaXRpb25CbGVu
ZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXdTdHlsZSk7CiAgICAgdm9pZCBjb21wdXRlQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzU3Rh
dGUoKTsKICAgICB2b2lkIHNldEJsZW5kaW5nS2V5ZnJhbWVzKEtleWZyYW1lTGlzdCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCmluZGV4
IGI4YThmYTg5ODkwZWViNTU5OTg5OWUxZjc2Y2JmY2Q0Zjg0MzVlZTEuLmYxMGZjNjU3NzYwMGQ5
ODgyNzkyMDVkYjI3ZTViYmVkYTUzMWNjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEtl
eWZyYW1lRWZmZWN0U3RhY2s6OnNldENTU0FuaW1hdGlvbkxpc3QoUmVmUHRyPGNvbnN0IEFuaW1h
dGlvbkxpc3Q+JiYgY3NzQQogICAgIG1faXNTb3J0ZWQgPSBmYWxzZTsKIH0KIAotT3B0aW9uU2V0
PEFuaW1hdGlvbkltcGFjdD4gS2V5ZnJhbWVFZmZlY3RTdGFjazo6YXBwbHlLZXlmcmFtZUVmZmVj
dHMoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcHJldmlvdXNM
YXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVu
dFN0eWxlKQorT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gS2V5ZnJhbWVFZmZlY3RTdGFjazo6
YXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCBjb25zdCBTdHlsZTo6
UmVzb2x1dGlvbkNvbnRleHQmIHJlc29sdXRpb25Db250ZXh0KQogewogICAgIE9wdGlvblNldDxB
bmltYXRpb25JbXBhY3Q+IGltcGFjdDsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIE9wdGlvblNldDxB
bmltYXRpb25JbXBhY3Q+IEtleWZyYW1lRWZmZWN0U3RhY2s6OmFwcGx5S2V5ZnJhbWVFZmZlY3Rz
KFJlbmRlclN0eWxlCiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVmZmVjdCA6IHNvcnRlZEVmZmVj
dHMoKSkgewogICAgICAgICBBU1NFUlQoZWZmZWN0LT5hbmltYXRpb24oKSk7Ci0gICAgICAgIGVm
ZmVjdC0+YW5pbWF0aW9uKCktPnJlc29sdmUodGFyZ2V0U3R5bGUsIHBhcmVudEVsZW1lbnRTdHls
ZSk7CisgICAgICAgIGVmZmVjdC0+YW5pbWF0aW9uKCktPnJlc29sdmUodGFyZ2V0U3R5bGUsIHJl
c29sdXRpb25Db250ZXh0KTsKIAogICAgICAgICBpZiAoZWZmZWN0LT5pc1J1bm5pbmdBY2NlbGVy
YXRlZCgpIHx8IGVmZmVjdC0+aXNBYm91dFRvUnVuQWNjZWxlcmF0ZWQoKSkKICAgICAgICAgICAg
IGltcGFjdC5hZGQoQW5pbWF0aW9uSW1wYWN0OjpSZXF1aXJlc1JlY29tcG9zaXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5oCmluZGV4IDVkYWI0
YzcyZWViNzVkNWJmZDFlZDczNjE1MjljZmJkNDQ2OGExMTAuLmRiN2QwNGUxZmU4Y2UzNmRmNWU4
NTAxN2Q5ZmYwZTA5ZjE1MTVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdFN0YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0U3RhY2suaApAQCAtMzYsNiArMzYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgS2V5ZnJhbWVFZmZlY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAorbmFtZXNwYWNl
IFN0eWxlIHsKK3N0cnVjdCBSZXNvbHV0aW9uQ29udGV4dDsKK30KKwogY2xhc3MgS2V5ZnJhbWVF
ZmZlY3RTdGFjayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC01
MCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENTU0FuaW1hdGlvbkxpc3QoUmVmUHRy
PGNvbnN0IEFuaW1hdGlvbkxpc3Q+JiYpOwogICAgIGJvb2wgaXNDdXJyZW50bHlBZmZlY3RpbmdQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIHJlcXVpcmVzUHNldWRvRWxl
bWVudCgpIGNvbnN0OwotICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5ZnJh
bWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHBy
ZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVu
dEVsZW1lbnRTdHlsZSk7CisgICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gYXBwbHlLZXlm
cmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYg
cHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x1dGlv
bkNvbnRleHQmKTsKICAgICBib29sIGhhc0VmZmVjdFdpdGhJbXBsaWNpdEtleWZyYW1lcygpIGNv
bnN0OwogCiAgICAgdm9pZCBzdG9wQWNjZWxlcmF0aW5nVHJhbnNmb3JtUmVsYXRlZFByb3BlcnRp
ZXMoVXNlQWNjZWxlcmF0ZWRBY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5p
bWF0aW9uLmNwcAppbmRleCBmYjczOTM1ODlkYTJlNjhkNGFlZmFiZGU5NmFiNTM5YjYyMDYxNmE0
Li4xYmU5NzRmNmFlODU4NWVmYjMzMTEwMzE2NmM3OTQ3MGFmMmQ2MDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMTIyNywxNCArMTIyNywxNCBAQCB2
b2lkIFdlYkFuaW1hdGlvbjo6dGljaygpCiAgICAgICAgIG1fZWZmZWN0LT5hbmltYXRpb25EaWRU
aWNrKCk7CiB9CiAKLXZvaWQgV2ViQW5pbWF0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJn
ZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCit2b2lkIFdlYkFuaW1hdGlvbjo6cmVzb2x2ZShSZW5k
ZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4dCYgcmVz
b2x1dGlvbkNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQogewogICAg
IGlmICghbV9zaG91bGRTa2lwVXBkYXRpbmdGaW5pc2hlZFN0YXRlV2hlblJlc29sdmluZykKICAg
ICAgICAgdXBkYXRlRmluaXNoZWRTdGF0ZShEaWRTZWVrOjpObywgU3luY2hyb25vdXNseU5vdGlm
eTo6WWVzKTsKICAgICBtX3Nob3VsZFNraXBVcGRhdGluZ0ZpbmlzaGVkU3RhdGVXaGVuUmVzb2x2
aW5nID0gZmFsc2U7CiAKICAgICBpZiAobV9lZmZlY3QpCi0gICAgICAgIG1fZWZmZWN0LT5hcHBs
eSh0YXJnZXRTdHlsZSwgcGFyZW50RWxlbWVudFN0eWxlLCBzdGFydFRpbWUpOworICAgICAgICBt
X2VmZmVjdC0+YXBwbHkodGFyZ2V0U3R5bGUsIHJlc29sdXRpb25Db250ZXh0LCBzdGFydFRpbWUp
OwogfQogCiB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0U3VzcGVuZGVkKGJvb2wgaXNTdXNwZW5kZWQp
CkBAIC0xNDI2LDEyICsxNDI2LDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6
Y29tbWl0U3R5bGVzKCkKICAgICAgICAgICAgIGlmIChlZmZlY3RJblN0YWNrLT5hbmltYXRpb24o
KSAhPSB0aGlzICYmICFjb21wYXJlQW5pbWF0aW9uc0J5Q29tcG9zaXRlT3JkZXIoKmVmZmVjdElu
U3RhY2stPmFuaW1hdGlvbigpLCAqdGhpcykpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBpZiAoZWZmZWN0SW5TdGFjay0+YW5pbWF0ZWRQcm9wZXJ0aWVzKCkuY29udGFpbnMo
cHJvcGVydHkpKQotICAgICAgICAgICAgICAgIGVmZmVjdEluU3RhY2stPmFuaW1hdGlvbigpLT5y
ZXNvbHZlKCphbmltYXRlZFN0eWxlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBlZmZlY3RJ
blN0YWNrLT5hbmltYXRpb24oKS0+cmVzb2x2ZSgqYW5pbWF0ZWRTdHlsZSwgeyBudWxscHRyIH0p
OwogICAgICAgICAgICAgaWYgKGVmZmVjdEluU3RhY2stPmFuaW1hdGlvbigpID09IHRoaXMpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fcmVwbGFjZVN0
YXRlID09IFJlcGxhY2VTdGF0ZTo6UmVtb3ZlZCkKLSAgICAgICAgICAgIGVmZmVjdC0+YW5pbWF0
aW9uKCktPnJlc29sdmUoKmFuaW1hdGVkU3R5bGUsIG51bGxwdHIpOworICAgICAgICAgICAgZWZm
ZWN0LT5hbmltYXRpb24oKS0+cmVzb2x2ZSgqYW5pbWF0ZWRTdHlsZSwgeyBudWxscHRyIH0pOwog
ICAgICAgICBpZiAoYXV0byBjc3NWYWx1ZSA9IGNvbXB1dGVkU3R5bGVFeHRyYWN0b3IudmFsdWVG
b3JQcm9wZXJ0eUluU3R5bGUoKmFuaW1hdGVkU3R5bGUsIHByb3BlcnR5LCByZW5kZXJlcikpCiAg
ICAgICAgICAgICBpbmxpbmVTdHlsZS0+c2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgY3Nz
VmFsdWUtPmNzc1RleHQoKSwgZmFsc2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9X
ZWJBbmltYXRpb24uaAppbmRleCA3NzQ0ZmJmM2NmNmE3YmQ5NzQ5YWJkMTg4YTUwMzc1M2NjYjQ3
OTg0Li5kMzIwMGZlYjlhZWY4NGMyNTA5MmQ3MmI5ZWZiODhkODAyZDJkMWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCkBAIC00OCw2ICs0OCwxMCBAQCBjbGFzcyBS
ZW5kZXJTdHlsZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlz
ZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazsKIAorbmFtZXNwYWNlIFN0eWxlIHsKK3N0cnVjdCBS
ZXNvbHV0aW9uQ29udGV4dDsKK30KKwogY2xhc3MgV2ViQW5pbWF0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViQW5pbWF0aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViQW5p
bWF0aW9uKTsKIHB1YmxpYzoKQEAgLTExOSw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBu
ZWVkc1RpY2soKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdGljaygpOwogICAgIFdFQkNPUkVf
RVhQT1JUIFNlY29uZHMgdGltZVRvTmV4dFRpY2soKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVzb2x2ZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRFbGVtZW50U3R5bGUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3Qg
U3R5bGU6OlJlc29sdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6
bnVsbG9wdCk7CiAgICAgdm9pZCBlZmZlY3RUYXJnZXREaWRDaGFuZ2UoY29uc3Qgc3RkOjpvcHRp
b25hbDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW91c1RhcmdldCwgY29uc3Qgc3RkOjpvcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+JiBuZXdUYXJnZXQpOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRTdGF0
ZURpZENoYW5nZSgpOwogICAgIHZvaWQgd2lsbENoYW5nZVJlbmRlcmVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAppbmRleCA1YjU1ZGViZTBkNzNkYTJjMDNjYjhh
YWJjNmM0NDQxYmQ2OTA0MDgwLi41NTgzNjMyZjYwM2I3ODdmZDQwYjQxMzAyNTU1ODUyODZjZjRj
OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBNZWRpYVF1ZXJ5TWF0Y2hlcjo6
ZG9jdW1lbnRFbGVtZW50VXNlckFnZW50U3R5bGUoKQogICAgIGlmICghZG9jdW1lbnRFbGVtZW50
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtX2RvY3VtZW50LT5zdHls
ZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmRvY3VtZW50RWxlbWVudCwgbV9k
b2N1bWVudC0+cmVuZGVyU3R5bGUoKSwgbnVsbHB0ciwgUnVsZU1hdGNoaW5nQmVoYXZpb3I6Ok1h
dGNoT25seVVzZXJBZ2VudFJ1bGVzKS5yZW5kZXJTdHlsZTsKKyAgICByZXR1cm4gbV9kb2N1bWVu
dC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpkb2N1bWVudEVsZW1l
bnQsIHsgbV9kb2N1bWVudC0+cmVuZGVyU3R5bGUoKSB9LCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6
TWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpLnJlbmRlclN0eWxlOwogfQogCiBib29sIE1lZGlhUXVl
cnlNYXRjaGVyOjpldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5U2V0JiBtZWRpYSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZU1lZGlhLmNwcAppbmRleCBhNjE0MmFhYjJmZTM3YzE1ZDBiMDE0ZmRjMzI5Yzc0M2Q0
NjBkOWMzLi5mZTJlZTFiYTNhZDAyODg3MjdkZWJiOGIxZTY3ODg0MzZjNTk0N2IyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlTWVkaWEuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgU3R5bGVNZWRpYTo6
bWF0Y2hNZWRpdW0oY29uc3QgU3RyaW5nJiBxdWVyeSkgY29uc3QKICAgICBpZiAoIWRvY3VtZW50
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byByb290U3R5bGUgPSBk
b2N1bWVudC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpkb2N1bWVu
dEVsZW1lbnQsIGRvY3VtZW50LT5yZW5kZXJTdHlsZSgpLCBudWxscHRyLCBSdWxlTWF0Y2hpbmdC
ZWhhdmlvcjo6TWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpLnJlbmRlclN0eWxlOworICAgIGF1dG8g
cm9vdFN0eWxlID0gZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yRWxl
bWVudCgqZG9jdW1lbnRFbGVtZW50LCB7IGRvY3VtZW50LT5yZW5kZXJTdHlsZSgpIH0sIFJ1bGVN
YXRjaGluZ0JlaGF2aW9yOjpNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykucmVuZGVyU3R5bGU7CiAK
ICAgICBhdXRvIG1lZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKHF1ZXJ5LCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dCgqZG9jdW1lbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
NTI1MDYyOWYyY2M2YTRhYWRkNjYxMmViNWQyNjVhOGIxZTQ4ZGRmNC4uMDkzOGY2ZDVmYTM5NjY4
ZjZhOTA0MjdmNWNiODBlNDUyNTVjYzNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0y
MjYyLDkgKzIyNjIsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IERvY3VtZW50Ojpz
dHlsZUZvckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cwogICAgIGF1dG8mIHJlc29s
dmVyID0gZWxlbWVudC5zdHlsZVJlc29sdmVyKCk7CiAKICAgICBpZiAocHNldWRvRWxlbWVudFNw
ZWNpZmllciAhPSBQc2V1ZG9JZDo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHJlc29sdmVyLnBzZXVk
b1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgfSwgKnBh
cmVudFN0eWxlKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVyLnBzZXVkb1N0eWxlRm9yRWxlbWVu
dChlbGVtZW50LCB7IHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgfSwgeyBwYXJlbnRTdHlsZSB9KTsK
IAotICAgIGF1dG8gZWxlbWVudFN0eWxlID0gcmVzb2x2ZXIuc3R5bGVGb3JFbGVtZW50KGVsZW1l
bnQsIHBhcmVudFN0eWxlKTsKKyAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHJlc29sdmVyLnN0eWxl
Rm9yRWxlbWVudChlbGVtZW50LCB7IHBhcmVudFN0eWxlIH0pOwogICAgIGlmIChlbGVtZW50U3R5
bGUucmVsYXRpb25zKSB7CiAgICAgICAgIFN0eWxlOjpVcGRhdGUgZW1wdHlVcGRhdGUoKnRoaXMp
OwogICAgICAgICBTdHlsZTo6Y29tbWl0UmVsYXRpb25zKFdURk1vdmUoZWxlbWVudFN0eWxlLnJl
bGF0aW9ucyksIGVtcHR5VXBkYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5Mjg5ZTBj
Y2U2NjVjYjE1ZTU4OGQ1ZjNmOWZlMTMzYWJiNGMzYzM1Li40NTg1OTA2YzVhNzEyZGJlZTdiZTk5
OTI5OGQ4MmI0NThmZTliNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xOTc0LDkgKzE5
NzQsOSBAQCBTdHlsZTo6UmVzb2x2ZXImIEVsZW1lbnQ6OnN0eWxlUmVzb2x2ZXIoKQogICAgIHJl
dHVybiBkb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpOwogfQogCi1TdHlsZTo6RWxl
bWVudFN0eWxlIEVsZW1lbnQ6OnJlc29sdmVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUpCitTdHlsZTo6RWxlbWVudFN0eWxlIEVsZW1lbnQ6OnJlc29sdmVTdHlsZShjb25zdCBT
dHlsZTo6UmVzb2x1dGlvbkNvbnRleHQmIHJlc29sdXRpb25Db250ZXh0KQogewotICAgIHJldHVy
biBzdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCp0aGlzLCBwYXJlbnRTdHlsZSk7Cisg
ICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKnRoaXMsIHJlc29sdXRp
b25Db250ZXh0KTsKIH0KIAogc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvclNpYmxpbmdDb21iaW5h
dG9ycyhFbGVtZW50KiBzaWJsaW5nKQpAQCAtNDQwOSw3ICs0NDA5LDcgQEAgdm9pZCBFbGVtZW50
OjpkaWREZXRhY2hSZW5kZXJlcnMoKQogICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVD
YWxsYmFja3MoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gRWxl
bWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVy
U3R5bGUqKQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBFbGVtZW50OjpyZXNv
bHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiwgY29uc3QgUmVu
ZGVyU3R5bGUqKQogewogICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3Mo
KSk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDBjODYy
MjlmNjRkYzU2MjJiNDMyYmVlMzhhMDIzYWI3NWE1MjY2NGUuLmZlYWZmNWU5ZDI2NTEyNWQ5MWJi
ODY2NGU1NWRkMWVkZTFiZDM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtOTQsNiArOTQsNyBA
QCBuYW1lc3BhY2UgU3R5bGUgewogY2xhc3MgUmVzb2x2ZXI7CiBlbnVtIGNsYXNzIENoYW5nZSA6
IHVpbnQ4X3Q7CiBzdHJ1Y3QgRWxlbWVudFN0eWxlOworc3RydWN0IFJlc29sdXRpb25Db250ZXh0
OwogfQogCiBjbGFzcyBFbGVtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgewpAQCAtNTcxLDcg
KzU3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCk7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRGV0YWNoUmVuZGVyZXJzKCk7Ci0gICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOworICAgIHZpcnR1
YWwgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUo
Y29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRv
d0hvc3RTdHlsZSk7CiAKICAgICBMYXlvdXRSZWN0IGFic29sdXRlRXZlbnRIYW5kbGVyQm91bmRz
KGJvb2wmIGluY2x1ZGVzRml4ZWRQb3NpdGlvbkVsZW1lbnRzKSBvdmVycmlkZTsKIApAQCAtNTkz
LDcgKzU5NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgU3R5bGU6OlJlc29sdmVyJiBzdHls
ZVJlc29sdmVyKCk7Ci0gICAgU3R5bGU6OkVsZW1lbnRTdHlsZSByZXNvbHZlU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKKyAgICBTdHlsZTo6RWxlbWVudFN0eWxlIHJlc29s
dmVTdHlsZShjb25zdCBTdHlsZTo6UmVzb2x1dGlvbkNvbnRleHQmKTsKIAogICAgIC8vIEludmFs
aWRhdGVzIHRoZSBzdHlsZSBvZiBhIHNpbmdsZSBlbGVtZW50LiBTdHlsZSBpcyByZXNvbHZlZCBs
YXppbHkuCiAgICAgLy8gRGVzY2VuZGFudCBlbGVtZW50cyBhcmUgcmVzb2x2ZWQgYXMgbmVlZGVk
LCBmb3IgZXhhbXBsZSBpZiBhbiBpbmhlcml0ZWQgcHJvcGVydHkgY2hhbmdlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCmluZGV4IGNjNTg5OWU3MzFhNjVlZmNhN2Ix
NTVhZDI2OWNiYWFjNmEyMGI2YWQuLmM1NWNmMTdhY2I0OWQyZjZlNjdiMzE5Yzg1ZmZmZWM3NjYy
ZDBjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcApAQCAtODQs
NyArODQsNyBAQCBTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxUaXRsZUVsZW1lbnQ6OmNvbXB1dGVk
VGV4dFdpdGhEaXJlY3Rpb24oKQogICAgIGlmIChhdXRvKiBjb21wdXRlZFN0eWxlID0gdGhpcy0+
Y29tcHV0ZWRTdHlsZSgpKQogICAgICAgICBkaXJlY3Rpb24gPSBjb21wdXRlZFN0eWxlLT5kaXJl
Y3Rpb24oKTsKICAgICBlbHNlCi0gICAgICAgIGRpcmVjdGlvbiA9IHN0eWxlUmVzb2x2ZXIoKS5z
dHlsZUZvckVsZW1lbnQoKnRoaXMsIHBhcmVudEVsZW1lbnQoKSA/IHBhcmVudEVsZW1lbnQoKS0+
cmVuZGVyU3R5bGUoKSA6IG51bGxwdHIpLnJlbmRlclN0eWxlLT5kaXJlY3Rpb24oKTsKKyAgICAg
ICAgZGlyZWN0aW9uID0gc3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgeyBw
YXJlbnRFbGVtZW50KCkgPyBwYXJlbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCkgOiBudWxscHRy
IH0pLnJlbmRlclN0eWxlLT5kaXJlY3Rpb24oKTsKICAgICByZXR1cm4geyB0ZXh0KCksIGRpcmVj
dGlvbiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRl
VGltZUZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGlt
ZUZpZWxkRWxlbWVudC5jcHAKaW5kZXggMmM5NTZjYjljNDJiMjUxZTJhYzNmNTAwZTNjZDBjN2Nk
ZmRmMGJhMC4uOWU0ZjYzMzhlZTgwNmNkZDVkYjU2NWQzZWE5NjY1ZTQ5YWU0NjM5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNw
cApAQCAtNjMsOSArNjMsOSBAQCB2b2lkIERhdGVUaW1lRmllbGRFbGVtZW50Ojppbml0aWFsaXpl
KGNvbnN0IEF0b21TdHJpbmcmIHBzZXVkbykKICAgICBzZXRQc2V1ZG8ocHNldWRvKTsKIH0KIAot
c3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBEYXRlVGltZUZpZWxkRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBT
dHlsZTo6UmVzb2x1dGlvbkNvbnRleHQmIHJlc29sdXRpb25Db250ZXh0LCBjb25zdCBSZW5kZXJT
dHlsZSogc2hhZG93SG9zdFN0eWxlKQogewotICAgIGF1dG8gZWxlbWVudFN0eWxlID0gcmVzb2x2
ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CisgICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlU3R5
bGUocmVzb2x1dGlvbkNvbnRleHQpOwogICAgIGlmICghZWxlbWVudFN0eWxlLnJlbmRlclN0eWxl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuaAppbmRleCAzNjM4MWY5NGMxNjI4NjQw
ZmFmODA2Mzc1MzgxZDFhYTU2MGE1MzUxLi4zZGM1NDYxMzYzNmI0M2U2ZTkxZTEwYzM3MTlkYjdj
NTdjZDFiZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGlt
ZUZpZWxkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1l
RmllbGRFbGVtZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVCbHVyRXZlbnQoRXZlbnQmKTsKIAogcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdHls
ZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRp
b25Db250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqKSBmaW5hbDsKIAogICAgIGJvb2wgc3VwcG9y
dHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA5ZDE3NGNmN2VhMzNhZTdiNjBlNjUz
NzQzMjliMGRkMzA4MjhiNDg3Li5jMzA3NzA3ZjNhNzI0ZDYyMDgwMzM2MDgyY2M4ZGU1ODc1YTcw
YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gU2xp
ZGVyVGh1bWJFbGVtZW50Ojpob3N0SW5wdXQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PihzaGFkb3dIb3N0KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKK3N0ZDo6b3B0
aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiwgY29uc3QgUmVuZGVyU3R5
bGUqIGhvc3RTdHlsZSkKIHsKICAgICAvLyBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY29tcHV0ZSBz
dHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFjayB0byBwaWNrIHNoYWRvdyBwc2V1ZG8gaWQgd2hlbiBo
b3N0IHN0eWxlIGlzIGtub3duLgogCkBAIC02MzcsNyArNjM3LDcgQEAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHkKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyQ29udGFpbmVy
PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVt
ZW50U3R5bGU+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCitzdGQ6Om9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBTdHlsZTo6UmVzb2x1dGlvbkNvbnRleHQmLCBjb25zdCBSZW5kZXJT
dHlsZSogaG9zdFN0eWxlKQogewogICAgIC8vIFRoaXMgZG9lc24ndCBhY3R1YWxseSBjb21wdXRl
IHN0eWxlLiBUaGlzIGlzIGp1c3QgYSBoYWNrIHRvIHBpY2sgc2hhZG93IHBzZXVkbyBpZCB3aGVu
IGhvc3Qgc3R5bGUgaXMga25vd24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggYjNjZGViYTU2N2U5NWY5NWJmNGY4OWFkOTUzZjVk
MmQyY2MzNjNiNS4uNjI5MGJjMjI4MjY1MTdlNzFmM2U2ODQwZDY2ZjQ5ZTgzYTViODFiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKQEAg
LTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgd2lsbERldGFjaFJlbmRl
cmVycygpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSop
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0
eWxlKikgZmluYWw7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBmaW5hbDsKIAogICAgIHZvaWQgc3RhcnREcmFnZ2luZygpOwpAQCAtMTM0LDcgKzEzNCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYp
OwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7Ci0gICAgc3RkOjpv
cHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNv
bHV0aW9uQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7CiAgICAgY29uc3QgQXRv
bVN0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzU2xpZGVy
Q29udGFpbmVyRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKaW5kZXggMDc0MzU1Zjk4NGRlYmFmZGZjZDA5ZDg0YjNjOWRjOWMyYjI5OGZjMy4uNWI5
YTJkMzkyMDQ3OTEwZTc5NTJmM2U2MzI5MmQ3N2E4ZjlmYjFmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBA
IC04Miw5ICs4Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N0cm9uZ1Bhc3N3b3JkVGV4dEZp
ZWxkKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIGlzPEhUTUxJbnB1dEVsZW1l
bnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpLT5oYXNB
dXRvRmlsbFN0cm9uZ1Bhc3N3b3JkQnV0dG9uKCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U3R5bGU6
OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcjo6cmVzb2x2ZUN1c3RvbVN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqKQor
c3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyQ29udGFp
bmVyOjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiBy
ZXNvbHV0aW9uQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqKQogewotICAgIGF1dG8gZWxlbWVu
dFN0eWxlID0gcmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CisgICAgYXV0byBlbGVtZW50U3R5
bGUgPSByZXNvbHZlU3R5bGUocmVzb2x1dGlvbkNvbnRleHQpOwogICAgIGlmIChpc1N0cm9uZ1Bh
c3N3b3JkVGV4dEZpZWxkKHNoYWRvd0hvc3QoKSkpIHsKICAgICAgICAgZWxlbWVudFN0eWxlLnJl
bmRlclN0eWxlLT5zZXRGbGV4V3JhcChGbGV4V3JhcDo6V3JhcCk7CiAgICAgICAgIGVsZW1lbnRT
dHlsZS5yZW5kZXJTdHlsZS0+c2V0T3ZlcmZsb3dYKE92ZXJmbG93OjpIaWRkZW4pOwpAQCAtMTA0
LDcgKzEwNCw3IEBAIFJlZjxUZXh0Q29udHJvbElubmVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotc3RkOjpvcHRp
b25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRv
d0hvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRy
b2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHlsZTo6UmVzb2x1dGlv
bkNvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1
dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CiAgICAgbmV3U3R5bGUtPmlu
aGVyaXRGcm9tKCpzaGFkb3dIb3N0U3R5bGUpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFJlbmRlclRl
eHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZW5kZXJl
cigpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9j
az4oSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVyKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3Rv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RT
dHlsZSkKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25D
b250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRv
IHN0eWxlID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0
KCkpLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOwogICAgIHJldHVybiB7
IG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSB9OwpAQCAtMjA5LDkgKzIw
OSw5IEBAIFJlZjxUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudD4gVGV4dENvbnRyb2xQbGFj
ZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVuCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAK
LXN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xQbGFjZWhvbGRl
ckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitzdGQ6Om9wdGlvbmFsPFN0
eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHV0aW9uQ29u
dGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKLSAgICBhdXRvIHN0
eWxlID0gcmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CisgICAgYXV0byBzdHlsZSA9IHJlc29s
dmVTdHlsZShyZXNvbHV0aW9uQ29udGV4dCk7CiAKICAgICBhdXRvJiBjb250cm9sRWxlbWVudCA9
IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PigqY29udGFpbmluZ1NoYWRvd1Jv
b3QoKS0+aG9zdCgpKTsKICAgICBzdHlsZS5yZW5kZXJTdHlsZS0+c2V0RGlzcGxheShjb250cm9s
RWxlbWVudC5pc1BsYWNlaG9sZGVyVmlzaWJsZSgpID8gRGlzcGxheVR5cGU6OkJsb2NrIDogRGlz
cGxheVR5cGU6Ok5vbmUpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIFJlZjxTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b25FbGVtZW50PiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpjcmVhdGUo
RG9jCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxl
bWVudChkb2N1bWVudCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+
IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHlsZTo6UmVzb2x1
dGlvbkNvbnRleHQmIHJlc29sdXRpb25Db250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93
SG9zdFN0eWxlKQogewogICAgIFJlZlB0ciBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KHNoYWRvd0hvc3QoKSk7CiAgICAgaWYgKGlucHV0ICYmIGlucHV0LT5tYXhSZXN1bHRzKCkg
Pj0gMCkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5
bGU+IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0bwogCiAgICAg
aWYgKHNoYWRvd0hvc3RTdHlsZSAmJiBzaGFkb3dIb3N0U3R5bGUtPmVmZmVjdGl2ZUFwcGVhcmFu
Y2UoKSAhPSBTZWFyY2hGaWVsZFBhcnQpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2Fu
QWRqdXN0U3R5bGVGb3JBcHBlYXJhbmNlKG1fY2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJhbmNlLCBm
YWxzZSk7Ci0gICAgICAgIHJldHVybiByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKKyAgICAg
ICAgcmV0dXJuIHJlc29sdmVTdHlsZShyZXNvbHV0aW9uQ29udGV4dCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTMwNiw5ICszMDYsOSBAQCBSZWY8U2VhcmNoRmllbGRD
YW5jZWxCdXR0b25FbGVtZW50PiBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmNyZWF0
ZShEb2N1bQogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1zdGQ6Om9wdGlvbmFsPFN0eWxlOjpF
bGVtZW50U3R5bGU+IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6cmVzb2x2ZUN1c3Rv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
KQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHlsZTo6UmVzb2x1dGlvbkNv
bnRleHQmIHJlc29sdXRpb25Db250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSopCiB7Ci0gICAgYXV0
byBlbGVtZW50U3R5bGUgPSByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKKyAgICBhdXRvIGVs
ZW1lbnRTdHlsZSA9IHJlc29sdmVTdHlsZShyZXNvbHV0aW9uQ29udGV4dCk7CiAgICAgYXV0byYg
aW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKnNoYWRvd0hvc3QoKSk7
CiAgICAgZWxlbWVudFN0eWxlLnJlbmRlclN0eWxlLT5zZXRWaXNpYmlsaXR5KGVsZW1lbnRTdHls
ZS5yZW5kZXJTdHlsZS0+dmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbiB8fCBpbnB1
dEVsZW1lbnQudmFsdWUoKS5pc0VtcHR5KCkgPyBWaXNpYmlsaXR5OjpIaWRkZW4gOiBWaXNpYmls
aXR5OjpWaXNpYmxlKTsKICAgICByZXR1cm4gZWxlbWVudFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAppbmRleCA3
YzMyYmI0YTIxNzc3MGMxNGY2MjFlMjRjZmRiYjZiMGE3YzcxNTJhLi42NmZiN2MxMTcwYTg4ZjIy
YWMwNWIzN2EwMDE5MjAwMDFhZTE3ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFRleHRDb250cm9sSW5uZXJDb250YWluZXIoRG9jdW1lbnQm
KTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHN0
ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RT
dHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiwgY29uc3Qg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBUZXh0
Q29udHJvbElubmVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbElubmVyRWxl
bWVudChEb2N1bWVudCYpOwotICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4g
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJl
c29sdXRpb25Db250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3Zl
cnJpZGU7CiAKICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogfTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudChEb2N1bWVudCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBT
dHlsZTo6UmVzb2x1dGlvbkNvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKSBvdmVycmlkZTsKICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwpAQCAtODgsNyArODgsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KERv
Y3VtZW50Jik7CiAgICAgCi0gICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHlsZTo6UmVz
b2x1dGlvbkNvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVy
cmlkZTsKIH07CiAKIGNsYXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudChEb2N1bWVudCYpOwog
ICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
c2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVt
ZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBTdHlsZTo6UmVzb2x1dGlvbkNvbnRl
eHQmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKICAgICBi
b29sIGlzU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgbV9jYW5BZGp1c3RTdHlsZUZvckFwcGVhcmFuY2Ug
eyB0cnVlIH07CkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBib29sIGlzTW91c2VG
b2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0ZDo6b3B0
aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiwgY29uc3QgUmVuZGVy
U3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXgg
NjlhYjQ2MzRhY2I0NjEyYTUwMjI4ZTk2MTEyMzkwZDE3MWM1OGIzZi4uMTQ3NTIyNjg1ZWZiMTA4
YzI1MjkwMDZiOTA3YzIwYzI5Njg3Mzc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcApAQCAtMjU1LDcgKzI1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6Y29tcHV0ZUZpcnN0TGluZVN0eWxlKCkgY29uc3QKICAg
ICAgICAgaWYgKCFjb21wb3NlZFRyZWVQYXJlbnRFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBzdHlsZSA9IGNvbXBvc2VkVHJlZVBhcmVudEVsZW1l
bnQtPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmNvbXBvc2VkVHJlZVBhcmVudEVs
ZW1lbnQsICZwYXJlbnRTdHlsZSkucmVuZGVyU3R5bGU7CisgICAgICAgIGF1dG8gc3R5bGUgPSBj
b21wb3NlZFRyZWVQYXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50
KCpjb21wb3NlZFRyZWVQYXJlbnRFbGVtZW50LCB7ICZwYXJlbnRTdHlsZSB9KS5yZW5kZXJTdHls
ZTsKICAgICAgICAgQVNTRVJUKHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRl
bnRzKTsKIAogICAgICAgICAvLyBXZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVkIDxz
cGFuPiBhcm91bmQgdGhlIHRleHQgbm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGluaGVy
aXRhbmNlLgpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
UmVuZGVyRWxlbWVudDo6Y29tcHV0ZUZpcnN0TGluZVN0eWxlKCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGZpcnN0TGluZVN0eWxlOwogICAgIH0KIAotICAgIHJldHVybiByZW5kZXJlckZvckZpcnN0
TGluZVN0eWxlLmVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZWxl
bWVudCgpLCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOworICAgIHJldHVybiByZW5kZXJlckZv
ckZpcnN0TGluZVN0eWxlLmVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVu
dCgqZWxlbWVudCgpLCB7ICZwYXJlbnRTdHlsZSB9KS5yZW5kZXJTdHlsZTsKIH0KIAogY29uc3Qg
UmVuZGVyU3R5bGUmIFJlbmRlckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlKCkgY29uc3QKQEAgLTE1
MzEsNyArMTUzMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVu
dDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShjb25zdCBTdHlsZTo6CiAKICAgICBhdXRvJiBzdHls
ZVJlc29sdmVyID0gZWxlbWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZUZvckVs
ZW1lbnQoKmVsZW1lbnQoKSwgcHNldWRvRWxlbWVudFJlcXVlc3QsICpwYXJlbnRTdHlsZSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlUmVzb2x2ZXIucHNl
dWRvU3R5bGVGb3JFbGVtZW50KCplbGVtZW50KCksIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCB7IHBh
cmVudFN0eWxlIH0pOwogCiAgICAgaWYgKHN0eWxlKQogICAgICAgICBTdHlsZTo6bG9hZFBlbmRp
bmdSZXNvdXJjZXMoKnN0eWxlLCBkb2N1bWVudCgpLCBlbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcAppbmRleCAxYmQxYjdmODY4
Zjc1NDNiNDllMzViNjNjYzVhN2M2ZDEyZWY4NDEzLi5lMjNhMjFjNDdhZjExNzE3MmZlMmQ1NTgy
ZjM5MGNlMWUzMDE2MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvS2V5ZnJhbWVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
S2V5ZnJhbWVMaXN0LmNwcApAQCAtMTE5LDE0ICsxMTksMTQgQEAgdm9pZCBLZXlmcmFtZUxpc3Q6
OmZpbGxJbXBsaWNpdEtleWZyYW1lcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBTdHlsZTo6UmVz
b2x2ZXIKICAgICBhdXRvIGluaXRpYWxTaXplID0gc2l6ZSgpOwogICAgIGlmIChpbml0aWFsU2l6
ZSA+IDAgJiYgbV9rZXlmcmFtZXNbMF0ua2V5KCkpIHsKICAgICAgICAgS2V5ZnJhbWVWYWx1ZSBr
ZXlmcmFtZVZhbHVlKDAsIG51bGxwdHIpOwotICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxl
KHN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JLZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHBh
cmVudEVsZW1lbnRTdHlsZSwgJnplcm9QZXJjZW50S2V5ZnJhbWUoKSwga2V5ZnJhbWVWYWx1ZSkp
OworICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JL
ZXlmcmFtZShlbGVtZW50LCBlbGVtZW50U3R5bGUsIHsgcGFyZW50RWxlbWVudFN0eWxlIH0sICZ6
ZXJvUGVyY2VudEtleWZyYW1lKCksIGtleWZyYW1lVmFsdWUpKTsKICAgICAgICAgaW5zZXJ0KFdU
Rk1vdmUoa2V5ZnJhbWVWYWx1ZSkpOwogICAgIH0KIAogICAgIC8vIElmIHRoZSAxMDAlIGtleWZy
YW1lIGlzIG1pc3NpbmcsIGNyZWF0ZSBpdCAoYnV0IG9ubHkgaWYgdGhlcmUgaXMgYXQgbGVhc3Qg
b25lIG90aGVyIGtleWZyYW1lKS4KICAgICBpZiAoaW5pdGlhbFNpemUgPiAwICYmIChtX2tleWZy
YW1lc1tzaXplKCkgLSAxXS5rZXkoKSAhPSAxKSkgewogICAgICAgICBLZXlmcmFtZVZhbHVlIGtl
eWZyYW1lVmFsdWUoMSwgbnVsbHB0cik7Ci0gICAgICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUo
c3R5bGVSZXNvbHZlci5zdHlsZUZvcktleWZyYW1lKGVsZW1lbnQsIGVsZW1lbnRTdHlsZSwgcGFy
ZW50RWxlbWVudFN0eWxlLCAmaHVuZHJlZFBlcmNlbnRLZXlmcmFtZSgpLCBrZXlmcmFtZVZhbHVl
KSk7CisgICAgICAgIGtleWZyYW1lVmFsdWUuc2V0U3R5bGUoc3R5bGVSZXNvbHZlci5zdHlsZUZv
cktleWZyYW1lKGVsZW1lbnQsIGVsZW1lbnRTdHlsZSwgeyBwYXJlbnRFbGVtZW50U3R5bGUgfSwg
Jmh1bmRyZWRQZXJjZW50S2V5ZnJhbWUoKSwga2V5ZnJhbWVWYWx1ZSkpOwogICAgICAgICBpbnNl
cnQoV1RGTW92ZShrZXlmcmFtZVZhbHVlKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVyLmNwcAppbmRleCBlNDQ0NWI2NTMxOTczYTJjMDNlZWJlMzI0Yjg1ZmExMjBl
NDc1MTkxLi5kNmE2NjI1Y2ZmYjAxZWU4MzJjZmM5NjJiMWQ0MjY4YWQ4Y2M4ZTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIFJlc29s
dmVyOjpSZXNvbHZlcihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIG1fbWVkaWFRdWVyeUV2
YWx1YXRvciA9IE1lZGlhUXVlcnlFdmFsdWF0b3IgeyB9OwogCiAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50RWxlbWVudCA9IG1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpIHsKLSAgICAgICAgbV9y
b290RGVmYXVsdFN0eWxlID0gc3R5bGVGb3JFbGVtZW50KCpkb2N1bWVudEVsZW1lbnQsIG1fZG9j
dW1lbnQucmVuZGVyU3R5bGUoKSwgbnVsbHB0ciwgUnVsZU1hdGNoaW5nQmVoYXZpb3I6Ok1hdGNo
T25seVVzZXJBZ2VudFJ1bGVzKS5yZW5kZXJTdHlsZTsKKyAgICAgICAgbV9yb290RGVmYXVsdFN0
eWxlID0gc3R5bGVGb3JFbGVtZW50KCpkb2N1bWVudEVsZW1lbnQsIHsgbV9kb2N1bWVudC5yZW5k
ZXJTdHlsZSgpIH0sIFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaE9ubHlVc2VyQWdlbnRSdWxl
cykucmVuZGVyU3R5bGU7CiAgICAgICAgIC8vIFR1cm4gb2ZmIGFzc2VydGlvbiBhZ2FpbnN0IGZv
bnQgbG9va3VwcyBkdXJpbmcgc3R5bGUgcmVzb2x2ZXIgaW5pdGlhbGl6YXRpb24uIFdlIG1heSBu
ZWVkIHJvb3Qgc3R5bGUgZm9udCBmb3IgbWVkaWEgcXVlcmllcy4KICAgICAgICAgbV9kb2N1bWVu
dC5mb250U2VsZWN0b3IoKS5pbmNyZW1lbnRJc0NvbXB1dGluZ1Jvb3RTdHlsZUZvbnQoKTsKICAg
ICAgICAgbV9yb290RGVmYXVsdFN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmbV9kb2N1bWVu
dC5mb250U2VsZWN0b3IoKSk7CkBAIC0yMTgsOSArMjE4LDkgQEAgQnVpbGRlckNvbnRleHQgUmVz
b2x2ZXI6OmJ1aWxkZXJDb250ZXh0KGNvbnN0IFN0YXRlJiBzdGF0ZSkKICAgICB9OwogfQogCi1F
bGVtZW50U3R5bGUgUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRCb3hTdHlsZSwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgbWF0Y2hpbmdCZWhhdmlvciwgY29u
c3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQorRWxlbWVudFN0eWxlIFJlc29sdmVy
OjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVzb2x1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZpb3Ip
CiB7Ci0gICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVsZW1lbnQsIHBhcmVudFN0eWxlLCBtX292ZXJy
aWRlRG9jdW1lbnRFbGVtZW50U3R5bGUpOworICAgIGF1dG8gc3RhdGUgPSBTdGF0ZShlbGVtZW50
LCBjb250ZXh0LnBhcmVudFN0eWxlLCBjb250ZXh0LmRvY3VtZW50RWxlbWVudFN0eWxlKTsKIAog
ICAgIGlmIChzdGF0ZS5wYXJlbnRTdHlsZSgpKSB7CiAgICAgICAgIHN0YXRlLnNldFN0eWxlKFJl
bmRlclN0eWxlOjpjcmVhdGVQdHIoKSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgRWxlbWVudFN0eWxl
IFJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
UmVuZGVyU3R5bGUKIAogICAgIFVzZXJBZ2VudFN0eWxlOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVl
dHNGb3JFbGVtZW50KGVsZW1lbnQpOwogCi0gICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IgY29sbGVj
dG9yKGVsZW1lbnQsIG1fcnVsZVNldHMsIHNlbGVjdG9yRmlsdGVyKTsKKyAgICBFbGVtZW50UnVs
ZUNvbGxlY3RvciBjb2xsZWN0b3IoZWxlbWVudCwgbV9ydWxlU2V0cywgY29udGV4dC5zZWxlY3Rv
ckZpbHRlcik7CiAgICAgY29sbGVjdG9yLnNldE1lZGl1bSgmbV9tZWRpYVF1ZXJ5RXZhbHVhdG9y
KTsKIAogICAgIGlmIChtYXRjaGluZ0JlaGF2aW9yID09IFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpN
YXRjaE9ubHlVc2VyQWdlbnRSdWxlcykKQEAgLTI2NCw3ICsyNjQsNyBAQCBFbGVtZW50U3R5bGUg
UmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBS
ZW5kZXJTdHlsZQogCiAgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhzdGF0ZSwgY29sbGVjdG9y
Lm1hdGNoUmVzdWx0KCkpOwogCi0gICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQoKSwgKnN0
YXRlLnBhcmVudFN0eWxlKCksIHBhcmVudEJveFN0eWxlLCAmZWxlbWVudCk7CisgICAgQWRqdXN0
ZXIgYWRqdXN0ZXIoZG9jdW1lbnQoKSwgKnN0YXRlLnBhcmVudFN0eWxlKCksIGNvbnRleHQucGFy
ZW50Qm94U3R5bGUsICZlbGVtZW50KTsKICAgICBhZGp1c3Rlci5hZGp1c3QoKnN0YXRlLnN0eWxl
KCksIHN0YXRlLnVzZXJBZ2VudEFwcGVhcmFuY2VTdHlsZSgpKTsKIAogICAgIGlmIChzdGF0ZS5z
dHlsZSgpLT5oYXNWaWV3cG9ydFVuaXRzKCkpCkBAIC0yNzMsMTUgKzI3MywxNSBAQCBFbGVtZW50
U3R5bGUgUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBSZW5kZXJTdHlsZQogICAgIHJldHVybiB7IHN0YXRlLnRha2VTdHlsZSgpLCBXVEZNb3Zl
KGVsZW1lbnRTdHlsZVJlbGF0aW9ucykgfTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
RWxlbWVudFN0eWxlLCBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZSoga2V5ZnJhbWUsIEtleWZyYW1l
VmFsdWUmIGtleWZyYW1lVmFsdWUpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlc29s
dmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRl
clN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlc29sdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHlsZVJ1bGVLZXlmcmFtZSoga2V5ZnJhbWUsIEtleWZyYW1lVmFsdWUmIGtleWZyYW1l
VmFsdWUpCiB7CiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC5hdXRob3JEZWNs
YXJhdGlvbnMuYXBwZW5kKHsgJmtleWZyYW1lLT5wcm9wZXJ0aWVzKCksIFNlbGVjdG9yQ2hlY2tl
cjo6TWF0Y2hBbGwsIHByb3BlcnR5QWxsb3dsaXN0Rm9yUHNldWRvSWQoZWxlbWVudFN0eWxlLT5z
dHlsZVR5cGUoKSkgfSk7CiAKLSAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVudCwgbnVsbHB0
ciwgbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKTsKKyAgICBhdXRvIHN0YXRlID0gU3Rh
dGUoZWxlbWVudCwgbnVsbHB0ciwgY29udGV4dC5kb2N1bWVudEVsZW1lbnRTdHlsZSk7CiAKICAg
ICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmVsZW1lbnRTdHlsZSkpOwot
ICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cihwYXJlbnRFbGVt
ZW50U3R5bGUgPyAqcGFyZW50RWxlbWVudFN0eWxlIDogKmVsZW1lbnRTdHlsZSkpOworICAgIHN0
YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb250ZXh0LnBhcmVudFN0
eWxlID8gKmNvbnRleHQucGFyZW50U3R5bGUgOiAqZWxlbWVudFN0eWxlKSk7CiAKICAgICBCdWls
ZGVyIGJ1aWxkZXIoKnN0YXRlLnN0eWxlKCksIGJ1aWxkZXJDb250ZXh0KHN0YXRlKSwgcmVzdWx0
LCB7IENhc2NhZGVMZXZlbDo6QXV0aG9yIH0pOwogICAgIGJ1aWxkZXIuYXBwbHlBbGxQcm9wZXJ0
aWVzKCk7CkBAIC0zMDcsNyArMzA3LDcgQEAgYm9vbCBSZXNvbHZlcjo6aXNBbmltYXRpb25OYW1l
VmFsaWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBtX2tleWZyYW1lc1J1bGVNYXAu
ZmluZChBdG9tU3RyaW5nKG5hbWUpLmltcGwoKSkgIT0gbV9rZXlmcmFtZXNSdWxlTWFwLmVuZCgp
OwogfQogCi12b2lkIFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25zdCBF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBLZXlmcmFtZUxpc3QmIGxpc3QpCit2b2lk
IFJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25zdCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHV0aW9uQ29u
dGV4dCYgY29udGV4dCwgS2V5ZnJhbWVMaXN0JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsK
IApAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5p
bWF0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0CiAgICAgICAgIC8v
IEFkZCB0aGlzIGtleWZyYW1lIHN0eWxlIHRvIGFsbCB0aGUgaW5kaWNhdGVkIGtleSB0aW1lcwog
ICAgICAgICBmb3IgKGF1dG8ga2V5IDoga2V5ZnJhbWUtPmtleXMoKSkgewogICAgICAgICAgICAg
S2V5ZnJhbWVWYWx1ZSBrZXlmcmFtZVZhbHVlKDAsIG51bGxwdHIpOwotICAgICAgICAgICAga2V5
ZnJhbWVWYWx1ZS5zZXRTdHlsZShzdHlsZUZvcktleWZyYW1lKGVsZW1lbnQsIGVsZW1lbnRTdHls
ZSwgcGFyZW50RWxlbWVudFN0eWxlLCBrZXlmcmFtZS5wdHIoKSwga2V5ZnJhbWVWYWx1ZSkpOwor
ICAgICAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHlsZShzdHlsZUZvcktleWZyYW1lKGVsZW1l
bnQsIGVsZW1lbnRTdHlsZSwgY29udGV4dCwga2V5ZnJhbWUucHRyKCksIGtleWZyYW1lVmFsdWUp
KTsKICAgICAgICAgICAgIGtleWZyYW1lVmFsdWUuc2V0S2V5KGtleSk7CiAgICAgICAgICAgICBp
ZiAoYXV0byB0aW1pbmdGdW5jdGlvbkNTU1ZhbHVlID0ga2V5ZnJhbWUtPnByb3BlcnRpZXMoKS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pKQog
ICAgICAgICAgICAgICAgIGtleWZyYW1lVmFsdWUuc2V0VGltaW5nRnVuY3Rpb24oVGltaW5nRnVu
Y3Rpb246OmNyZWF0ZUZyb21DU1NWYWx1ZSgqdGltaW5nRnVuY3Rpb25DU1NWYWx1ZS5nZXQoKSkp
OwpAQCAtMzc3LDEyICszNzcsMTIgQEAgdm9pZCBSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JB
bmltYXRpb24oY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3QKICAgICAgICAg
fQogICAgIH0KIAotICAgIGxpc3QuZmlsbEltcGxpY2l0S2V5ZnJhbWVzKGVsZW1lbnQsICp0aGlz
LCBlbGVtZW50U3R5bGUsIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgbGlzdC5maWxsSW1wbGlj
aXRLZXlmcmFtZXMoZWxlbWVudCwgKnRoaXMsIGVsZW1lbnRTdHlsZSwgY29udGV4dC5wYXJlbnRT
dHlsZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVzb2x2ZXI6OnBzZXVk
b1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBQc2V1ZG9FbGVt
ZW50UmVxdWVzdCYgcHNldWRvRWxlbWVudFJlcXVlc3QsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlLCBjb25zdCBTZWxlY3Rv
ckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJl
c29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUHNldWRvRWxlbWVudFJlcXVlc3QmIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCBjb25zdCBSZXNv
bHV0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVu
dCwgJnBhcmVudFN0eWxlLCBtX292ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUpOworICAgIGF1
dG8gc3RhdGUgPSBTdGF0ZShlbGVtZW50LCBjb250ZXh0LnBhcmVudFN0eWxlLCBjb250ZXh0LmRv
Y3VtZW50RWxlbWVudFN0eWxlKTsKIAogICAgIGlmIChzdGF0ZS5wYXJlbnRTdHlsZSgpKSB7CiAg
ICAgICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKSk7CkBAIC0zOTIs
NyArMzkyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNvbHZlcjo6cHNldWRv
U3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW0KICAgICAgICAgc3RhdGUuc2V0UGFy
ZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpzdGF0ZS5zdHlsZSgpKSk7CiAgICAgfQog
Ci0gICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IgY29sbGVjdG9yKGVsZW1lbnQsIG1fcnVsZVNldHMs
IHNlbGVjdG9yRmlsdGVyKTsKKyAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IoZWxl
bWVudCwgbV9ydWxlU2V0cywgY29udGV4dC5zZWxlY3RvckZpbHRlcik7CiAgICAgY29sbGVjdG9y
LnNldFBzZXVkb0VsZW1lbnRSZXF1ZXN0KHBzZXVkb0VsZW1lbnRSZXF1ZXN0KTsKICAgICBjb2xs
ZWN0b3Iuc2V0TWVkaXVtKCZtX21lZGlhUXVlcnlFdmFsdWF0b3IpOwogICAgIGNvbGxlY3Rvci5t
YXRjaFVBUnVsZXMoKTsKQEAgLTQxMSw3ICs0MTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IFJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxl
bQogCiAgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhzdGF0ZSwgY29sbGVjdG9yLm1hdGNoUmVz
dWx0KCkpOwogCi0gICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQoKSwgKnN0YXRlLnBhcmVu
dFN0eWxlKCksIHBhcmVudEJveFN0eWxlLCBudWxscHRyKTsKKyAgICBBZGp1c3RlciBhZGp1c3Rl
cihkb2N1bWVudCgpLCAqc3RhdGUucGFyZW50U3R5bGUoKSwgY29udGV4dC5wYXJlbnRCb3hTdHls
ZSwgbnVsbHB0cik7CiAgICAgYWRqdXN0ZXIuYWRqdXN0KCpzdGF0ZS5zdHlsZSgpLCBzdGF0ZS51
c2VyQWdlbnRBcHBlYXJhbmNlU3R5bGUoKSk7CiAKICAgICBpZiAoc3RhdGUuc3R5bGUoKS0+aGFz
Vmlld3BvcnRVbml0cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCmluZGV4IGRj
NWM4NGI4YTNiYjhlMGExZDliNWRjY2ZmMWUxNjQzNDlmNzEwOGYuLjYxNGMxNmM0ODhlMmIwZGFj
NmNkZTgyNjAwMjRmOGM3Y2QzNjI4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVy
LmgKQEAgLTgwLDE3ICs4MCwyNSBAQCBzdHJ1Y3QgRWxlbWVudFN0eWxlIHsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVsYXRpb25zPiByZWxhdGlvbnM7CiB9OwogCitzdHJ1Y3QgUmVzb2x1dGlvbkNv
bnRleHQgeworICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZTsKKyAgICBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgeyBudWxscHRyIH07CisgICAgLy8gVGhpcyBuZWVk
cyB0byBiZSBwcm92aWRlZCBkdXJpbmcgc3R5bGUgcmVzb2x1dGlvbiB3aGVuIHVwLXRvLWRhdGUg
ZG9jdW1lbnQgZWxlbWVudCBzdHlsZSBpcyBub3QgYXZhaWxhYmxlIHZpYSBET00uCisgICAgY29u
c3QgUmVuZGVyU3R5bGUqIGRvY3VtZW50RWxlbWVudFN0eWxlIHsgbnVsbHB0ciB9OworICAgIGNv
bnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlciB7IG51bGxwdHIgfTsKK307CisKIGNs
YXNzIFJlc29sdmVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2ZXI+IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFJlc29sdmVyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlc29s
dmVyPiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICB+UmVzb2x2ZXIoKTsKIAotICAgIEVsZW1lbnRT
dHlsZSBzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlID0gbnVsbHB0ciwg
UnVsZU1hdGNoaW5nQmVoYXZpb3IgPSBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxl
cywgY29uc3QgU2VsZWN0b3JGaWx0ZXIqID0gbnVsbHB0cik7CisgICAgRWxlbWVudFN0eWxlIHN0
eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiwgY29uc3QgUmVzb2x1dGlvbkNvbnRleHQmLCBS
dWxlTWF0Y2hpbmdCZWhhdmlvciA9IFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVz
KTsKIAotICAgIHZvaWQga2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxlbWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRFbGVtZW50U3R5bGUsIEtleWZyYW1lTGlzdCYpOworICAgIHZvaWQga2V5ZnJhbWVTdHlsZXNG
b3JBbmltYXRpb24oY29uc3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5
bGUsIGNvbnN0IFJlc29sdXRpb25Db250ZXh0JiwgS2V5ZnJhbWVMaXN0Jik7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxl
bWVudChjb25zdCBFbGVtZW50JiwgY29uc3QgUHNldWRvRWxlbWVudFJlcXVlc3QmLCBjb25zdCBS
ZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHls
ZSA9IG51bGxwdHIsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmLCBjb25zdCBQc2V1ZG9FbGVtZW50UmVxdWVzdCYsIGNvbnN0IFJl
c29sdXRpb25Db250ZXh0Jik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IGRlZmF1bHRTdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCopOwpAQCAtMTA2LDEyICsx
MTQsOSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpYVF1
ZXJ5RXZhbHVhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVF1ZXJ5RXZhbHVhdG9yOyB9CiAK
LSAgICBjb25zdCBSZW5kZXJTdHlsZSogb3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZTsgfQotICAgIHZvaWQg
c2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUp
IHsgbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlID0gc3R5bGU7IH0KLQogICAgIHZvaWQg
YWRkQ3VycmVudFNWR0ZvbnRGYWNlUnVsZXMoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFtZShjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5
bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwg
Y29uc3QgU3R5bGVSdWxlS2V5ZnJhbWUqLCBLZXlmcmFtZVZhbHVlJik7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvcktleWZyYW1lKGNvbnN0IEVsZW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBSZXNvbHV0aW9uQ29udGV4dCYsIGNv
bnN0IFN0eWxlUnVsZUtleWZyYW1lKiwgS2V5ZnJhbWVWYWx1ZSYpOwogICAgIGJvb2wgaXNBbmlt
YXRpb25OYW1lVmFsaWQoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdp
bGwgZ2l2ZSBiYWNrIHRoZSBzZXQgb2YgcnVsZXMgdGhhdCBtYXRjaGVkIGZvciBhIGdpdmVuIGVs
ZW1lbnQgKG9yIGEgcHNldWRvLWVsZW1lbnQpLgpAQCAtMTY0LDggKzE2OSw2IEBAIHByaXZhdGU6
CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKIAotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBt
X292ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUgeyBudWxscHRyIH07Ci0KICAgICBJbnNwZWN0
b3JDU1NPTVdyYXBwZXJzIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVyczsKIAogICAgIE1hdGNoZWRE
ZWNsYXJhdGlvbnNDYWNoZSBtX21hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCAwY2U1NmQ5NzQ4YjNkYTViN2U1
ZjUwN2VmNGQxYzZhOTVjZGI3YTBhLi5lMjhiYmRiMjZlZGQ0MDMzNjYyODAyMmU2ZDFiZTJlY2Zm
ZTE2OTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBA
IC04OCwxNSArODgsMTIgQEAgVHJlZVJlc29sdmVyOjpTY29wZTo6U2NvcGUoU2hhZG93Um9vdCYg
c2hhZG93Um9vdCwgU2NvcGUmIGVuY2xvc2luZ1Njb3BlKQogICAgICwgc2hhZG93Um9vdCgmc2hh
ZG93Um9vdCkKICAgICAsIGVuY2xvc2luZ1Njb3BlKCZlbmNsb3NpbmdTY29wZSkKIHsKLSAgICBy
ZXNvbHZlci0+c2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZShlbmNsb3NpbmdTY29wZS5y
ZXNvbHZlci0+b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSgpKTsKIH0KIAogVHJlZVJlc29s
dmVyOjpTY29wZTo6flNjb3BlKCkKIHsKICAgICBpZiAoIXNoYWRvd1Jvb3QpCiAgICAgICAgIHJl
c29sdmVyLT5kb2N1bWVudCgpLnNldElzUmVzb2x2aW5nVHJlZVN0eWxlKGZhbHNlKTsKLQotICAg
IHJlc29sdmVyLT5zZXRPdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKG51bGxwdHIpOwogfQog
CiBUcmVlUmVzb2x2ZXI6OlBhcmVudDo6UGFyZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTEy
OSwxMyArMTI2LDEzIEBAIHZvaWQgVHJlZVJlc29sdmVyOjpwb3BTY29wZSgpCiAgICAgcmV0dXJu
IG1fc2NvcGVTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gVHJlZVJlc29sdmVyOjpzdHlsZUZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmIHN0
eWxlYWJsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGluaGVyaXRlZFN0eWxlKQorc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yU3R5bGVhYmxlKGNvbnN0IFN0
eWxlYWJsZSYgc3R5bGVhYmxlLCBjb25zdCBSZXNvbHV0aW9uQ29udGV4dCYgcmVzb2x1dGlvbkNv
bnRleHQpCiB7CiAgICAgYXV0byYgZWxlbWVudCA9IHN0eWxlYWJsZS5lbGVtZW50OwogCiAgICAg
aWYgKGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpIHsKICAgICAgICAg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSA9IHNjb3BlKCkuc2hhZG93Um9vdCA/IG1fdXBk
YXRlLT5lbGVtZW50U3R5bGUoKnNjb3BlKCkuc2hhZG93Um9vdC0+aG9zdCgpKSA6IG51bGxwdHI7
Ci0gICAgICAgIGlmIChhdXRvIGN1c3RvbVN0eWxlID0gZWxlbWVudC5yZXNvbHZlQ3VzdG9tU3R5
bGUoaW5oZXJpdGVkU3R5bGUsIHNoYWRvd0hvc3RTdHlsZSkpIHsKKyAgICAgICAgaWYgKGF1dG8g
Y3VzdG9tU3R5bGUgPSBlbGVtZW50LnJlc29sdmVDdXN0b21TdHlsZShyZXNvbHV0aW9uQ29udGV4
dCwgc2hhZG93SG9zdFN0eWxlKSkgewogICAgICAgICAgICAgaWYgKGN1c3RvbVN0eWxlLT5yZWxh
dGlvbnMpCiAgICAgICAgICAgICAgICAgY29tbWl0UmVsYXRpb25zKFdURk1vdmUoY3VzdG9tU3R5
bGUtPnJlbGF0aW9ucyksICptX3VwZGF0ZSk7CiAKQEAgLTE0Niw3ICsxNDMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFRyZWVSZXNvbHZlcjo6c3R5bGVGb3JTdHlsZWFibGUoY29u
c3QgU3R5bGVhYmxlJiBzdAogICAgIGlmIChhdXRvIHN0eWxlID0gc2NvcGUoKS5zaGFyaW5nUmVz
b2x2ZXIucmVzb2x2ZShzdHlsZWFibGUsICptX3VwZGF0ZSkpCiAgICAgICAgIHJldHVybiBzdHls
ZTsKIAotICAgIGF1dG8gZWxlbWVudFN0eWxlID0gc2NvcGUoKS5yZXNvbHZlci0+c3R5bGVGb3JF
bGVtZW50KGVsZW1lbnQsICZpbmhlcml0ZWRTdHlsZSwgcGFyZW50Qm94U3R5bGUoKSwgUnVsZU1h
dGNoaW5nQmVoYXZpb3I6Ok1hdGNoQWxsUnVsZXMsICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyKTsK
KyAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnN0eWxlRm9yRWxlbWVu
dChlbGVtZW50LCByZXNvbHV0aW9uQ29udGV4dCk7CiAKICAgICBpZiAoZWxlbWVudFN0eWxlLnJl
bGF0aW9ucykKICAgICAgICAgY29tbWl0UmVsYXRpb25zKFdURk1vdmUoZWxlbWVudFN0eWxlLnJl
bGF0aW9ucyksICptX3VwZGF0ZSk7CkBAIC0yMTAsOCArMjA3LDEwIEBAIEVsZW1lbnRVcGRhdGVz
IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAo
IWVsZW1lbnQucmVuZGVyZXJJc0V2ZXJOZWVkZWQoKSAmJiAhZWxlbWVudC5oYXNEaXNwbGF5Q29u
dGVudHMoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAorICAgIGF1dG8gcmVzb2x1dGlvbkNvbnRl
eHQgPSBtYWtlUmVzb2x1dGlvbkNvbnRleHQoKTsKKwogICAgIFN0eWxlYWJsZSBzdHlsZWFibGUg
eyBlbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSB9OwotICAgIGF1dG8gbmV3U3R5bGUgPSBzdHlsZUZv
clN0eWxlYWJsZShzdHlsZWFibGUsIHBhcmVudCgpLnN0eWxlKTsKKyAgICBhdXRvIG5ld1N0eWxl
ID0gc3R5bGVGb3JTdHlsZWFibGUoc3R5bGVhYmxlLCByZXNvbHV0aW9uQ29udGV4dCk7CiAKICAg
ICBpZiAoIWFmZmVjdHNSZW5kZXJlZFN1YnRyZWUoZWxlbWVudCwgKm5ld1N0eWxlKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTIyMywxMiArMjIyLDExIEBAIEVsZW1lbnRVcGRhdGVzIFRyZWVS
ZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgbV9kb2N1
bWVudC5zZXRIYXNOb2Rlc1dpdGhOb25GaW5hbFN0eWxlKCk7CiAgICAgfQogCi0gICAgYXV0byB1
cGRhdGUgPSBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShuZXdTdHlsZSksIHN0
eWxlYWJsZSwgcGFyZW50KCkuY2hhbmdlLCBwYXJlbnQoKS5zdHlsZSwgcGFyZW50Qm94U3R5bGUo
KSk7CisgICAgYXV0byB1cGRhdGUgPSBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92
ZShuZXdTdHlsZSksIHN0eWxlYWJsZSwgcGFyZW50KCkuY2hhbmdlLCByZXNvbHV0aW9uQ29udGV4
dCk7CiAgICAgYXV0byBkZXNjZW5kYW50c1RvUmVzb2x2ZSA9IGNvbXB1dGVEZXNjZW5kYW50c1Rv
UmVzb2x2ZSh1cGRhdGUuY2hhbmdlLCBlbGVtZW50LnN0eWxlVmFsaWRpdHkoKSwgcGFyZW50KCku
ZGVzY2VuZGFudHNUb1Jlc29sdmUpOwogCiAgICAgaWYgKCZlbGVtZW50ID09IG1fZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KCkpIHsKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZSA9IFJl
bmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRlLnN0eWxlKTsKLSAgICAgICAgc2NvcGUoKS5yZXNv
bHZlci0+c2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZShtX2RvY3VtZW50RWxlbWVudFN0
eWxlLmdldCgpKTsKIAogICAgICAgICBpZiAoIWV4aXN0aW5nU3R5bGUgfHwgZXhpc3RpbmdTdHls
ZS0+Y29tcHV0ZWRGb250UGl4ZWxTaXplKCkgIT0gdXBkYXRlLnN0eWxlLT5jb21wdXRlZEZvbnRQ
aXhlbFNpemUoKSkgewogICAgICAgICAgICAgLy8gInJlbSIgdW5pdHMgYXJlIHJlbGF0aXZlIHRv
IHRoZSBkb2N1bWVudCBlbGVtZW50J3MgZm9udCBzaXplIHNvIHdlIG5lZWQgdG8gcmVjb21wdXRl
IGV2ZXJ5dGhpbmcuCkBAIC0yODYsMTAgKzI4NCw5IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVw
ZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwK
ICAgICBpZiAoIWVsZW1lbnRVcGRhdGUuc3R5bGUtPmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8mIHBhcmVudFN0eWxlID0gKmVsZW1lbnRV
cGRhdGUuc3R5bGU7Ci0gICAgYXV0byogcGFyZW50Qm94U3R5bGUgPSBwYXJlbnRCb3hTdHlsZUZv
clBzZXVkbyhlbGVtZW50VXBkYXRlKTsKKyAgICBhdXRvIHJlc29sdXRpb25Db250ZXh0ID0gbWFr
ZVJlc29sdXRpb25Db250ZXh0Rm9yUHNldWRvRWxlbWVudChlbGVtZW50VXBkYXRlKTsKIAotICAg
IGF1dG8gcHNldWRvU3R5bGUgPSBzY29wZSgpLnJlc29sdmVyLT5wc2V1ZG9TdHlsZUZvckVsZW1l
bnQoZWxlbWVudCwgeyBwc2V1ZG9JZCB9LCBwYXJlbnRTdHlsZSwgcGFyZW50Qm94U3R5bGUsICZz
Y29wZSgpLnNlbGVjdG9yRmlsdGVyKTsKKyAgICBhdXRvIHBzZXVkb1N0eWxlID0gc2NvcGUoKS5y
ZXNvbHZlci0+cHNldWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcHNldWRvSWQgfSwgcmVz
b2x1dGlvbkNvbnRleHQpOwogICAgIGlmICghcHNldWRvU3R5bGUpCiAgICAgICAgIHJldHVybiB7
IH07CiAKQEAgLTI5Nyw3ICsyOTQsMjcgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiBU
cmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LAogICAgIGlm
ICghcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkpICYmICFo
YXNBbmltYXRpb25zKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGNyZWF0ZUFu
aW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKHBzZXVkb1N0eWxlKSwgeyBlbGVtZW50LCBwc2V1
ZG9JZCB9LCBlbGVtZW50VXBkYXRlLmNoYW5nZSwgcGFyZW50U3R5bGUsIHBhcmVudEJveFN0eWxl
KTsKKyAgICByZXR1cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUocHNldWRv
U3R5bGUpLCB7IGVsZW1lbnQsIHBzZXVkb0lkIH0sIGVsZW1lbnRVcGRhdGUuY2hhbmdlLCByZXNv
bHV0aW9uQ29udGV4dCk7Cit9CisKK1Jlc29sdXRpb25Db250ZXh0IFRyZWVSZXNvbHZlcjo6bWFr
ZVJlc29sdXRpb25Db250ZXh0KCkKK3sKKyAgICByZXR1cm4geworICAgICAgICAmcGFyZW50KCku
c3R5bGUsCisgICAgICAgIHBhcmVudEJveFN0eWxlKCksCisgICAgICAgIG1fZG9jdW1lbnRFbGVt
ZW50U3R5bGUuZ2V0KCksCisgICAgICAgICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyCisgICAgfTsK
K30KKworUmVzb2x1dGlvbkNvbnRleHQgVHJlZVJlc29sdmVyOjptYWtlUmVzb2x1dGlvbkNvbnRl
eHRGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUpCit7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgZWxlbWVudFVwZGF0ZS5zdHlsZS5nZXQoKSwKKyAgICAg
ICAgcGFyZW50Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50KGVsZW1lbnRVcGRhdGUpLAorICAgICAg
ICBtX2RvY3VtZW50RWxlbWVudFN0eWxlLmdldCgpLAorICAgICAgICAmc2NvcGUoKS5zZWxlY3Rv
ckZpbHRlcgorICAgIH07CiB9CiAKIGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBh
cmVudEJveFN0eWxlKCkgY29uc3QKQEAgLTMxNCw3ICszMzEsNyBAQCBjb25zdCBSZW5kZXJTdHls
ZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLWNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxl
Rm9yUHNldWRvKGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUpIGNvbnN0Citjb25z
dCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZUZvclBzZXVkb0VsZW1l
bnQoY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkgY29uc3QKIHsKICAgICBzd2l0
Y2ggKGVsZW1lbnRVcGRhdGUuc3R5bGUtPmRpc3BsYXkoKSkgewogICAgIGNhc2UgRGlzcGxheVR5
cGU6Ok5vbmU6CkBAIC0zMjYsNyArMzQzLDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNv
bHZlcjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG8oY29uc3QgRWxlbWVudFVwZGF0ZSYgZWwKICAg
ICB9CiB9CiAKLUVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1l
bnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSwgY29uc3QgU3R5
bGVhYmxlJiBzdHlsZWFibGUsIENoYW5nZSBwYXJlbnRDaGFuZ2UsIGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlKQorRWxlbWVu
dFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlLCBjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJs
ZSwgQ2hhbmdlIHBhcmVudENoYW5nZSwgY29uc3QgUmVzb2x1dGlvbkNvbnRleHQmIHJlc29sdXRp
b25Db250ZXh0KQogewogICAgIGF1dG8mIGVsZW1lbnQgPSBzdHlsZWFibGUuZWxlbWVudDsKICAg
ICBhdXRvJiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKQEAgLTM0NSw3ICszNjIsNyBA
QCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRl
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdAogICAgICAgICAvLyB0byB1c2UgQ1NTIEFuaW1hdGlv
bnMgYXMgZGVmaW5lZCBpbiB0aGUgcHJldmlvdXMgc3R5bGUgY2hhbmdlIGV2ZW50LiBBcyBzdWNo
LCB3ZSB1cGRhdGUgQ1NTIEFuaW1hdGlvbnMgYWZ0ZXIgQ1NTIFRyYW5zaXRpb25zCiAgICAgICAg
IC8vIHN1Y2ggdGhhdCB3aGVuIENTUyBUcmFuc2l0aW9ucyBhcmUgdXBkYXRlZCB0aGUgQ1NTIEFu
aW1hdGlvbnMgZGF0YSBpcyB0aGUgc2FtZSBhcyBkdXJpbmcgdGhlIHByZXZpb3VzIHN0eWxlIGNo
YW5nZSBldmVudC4KICAgICAgICAgaWYgKChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+aGFzQW5pbWF0
aW9ucygpKSB8fCBuZXdTdHlsZS0+aGFzQW5pbWF0aW9ucygpKQotICAgICAgICAgICAgc3R5bGVh
YmxlLnVwZGF0ZUNTU0FuaW1hdGlvbnMob2xkU3R5bGUsICpuZXdTdHlsZSwgJnBhcmVudFN0eWxl
KTsKKyAgICAgICAgICAgIHN0eWxlYWJsZS51cGRhdGVDU1NBbmltYXRpb25zKG9sZFN0eWxlLCAq
bmV3U3R5bGUsIHJlc29sdXRpb25Db250ZXh0KTsKICAgICB9CiAKICAgICAvLyBOb3cgd2UgY2Fu
IHVwZGF0ZSBhbGwgV2ViIGFuaW1hdGlvbnMsIHdoaWNoIHdpbGwgaW5jbHVkZSBDU1MgQW5pbWF0
aW9ucyBhcyB3ZWxsCkBAIC0zNTYsMTAgKzM3MywxMCBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNv
bHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dAogICAgICAgICBzdHlsZWFibGUuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShSZW5kZXJT
dHlsZTo6Y2xvbmVQdHIoKm5ld1N0eWxlKSk7CiAgICAgICAgIC8vIEFwcGx5IGFsbCBrZXlmcmFt
ZSBlZmZlY3RzIHRvIHRoZSBuZXcgc3R5bGUuCiAgICAgICAgIGF1dG8gYW5pbWF0ZWRTdHlsZSA9
IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbmV3U3R5bGUpOwotICAgICAgICBhbmltYXRpb25JbXBh
Y3QgPSBzdHlsZWFibGUuYXBwbHlLZXlmcmFtZUVmZmVjdHMoKmFuaW1hdGVkU3R5bGUsICpwcmV2
aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsICZwYXJlbnRTdHlsZSk7CisgICAgICAgIGFu
aW1hdGlvbkltcGFjdCA9IHN0eWxlYWJsZS5hcHBseUtleWZyYW1lRWZmZWN0cygqYW5pbWF0ZWRT
dHlsZSwgKnByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgcmVzb2x1dGlvbkNvbnRl
eHQpOwogICAgICAgICBuZXdTdHlsZSA9IFdURk1vdmUoYW5pbWF0ZWRTdHlsZSk7CiAKLSAgICAg
ICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQsIHBhcmVudFN0eWxlLCBwYXJlbnRCb3hTdHls
ZSwgc3R5bGVhYmxlLnBzZXVkb0lkID09IFBzZXVkb0lkOjpOb25lID8gJmVsZW1lbnQgOiBudWxs
cHRyKTsKKyAgICAgICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQsICpyZXNvbHV0aW9uQ29u
dGV4dC5wYXJlbnRTdHlsZSwgcmVzb2x1dGlvbkNvbnRleHQucGFyZW50Qm94U3R5bGUsIHN0eWxl
YWJsZS5wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Tm9uZSA/ICZlbGVtZW50IDogbnVsbHB0cik7CiAg
ICAgICAgIGFkanVzdGVyLmFkanVzdEFuaW1hdGVkU3R5bGUoKm5ld1N0eWxlLCBhbmltYXRpb25J
bXBhY3QpOwogICAgIH0gZWxzZQogICAgICAgICBzdHlsZWFibGUuc2V0TGFzdFN0eWxlQ2hhbmdl
RXZlbnRTdHlsZShudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5oCmluZGV4IGYyNWQyMmQyNDQ0OTEwM2E0MzQ1Yzg4OTFkYzU3YjlhZDA1ZmFhZWMuLjU2MmVm
NzdmODBlYThmN2U2ODcyODcwMWEzYzA4YzZkMjIxOTAxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBTaGFkb3dSb290
OwogbmFtZXNwYWNlIFN0eWxlIHsKIAogY2xhc3MgUmVzb2x2ZXI7CitzdHJ1Y3QgUmVzb2x1dGlv
bkNvbnRleHQ7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFRyZWVS
ZXNvbHZlclNjb3BlKTsKIGNsYXNzIFRyZWVSZXNvbHZlciB7CkBAIC01NSwxMyArNTYsMTMgQEAg
cHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGU+IHJlc29sdmUoKTsKIAogcHJpdmF0
ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yU3R5bGVhYmxlKGNv
bnN0IFN0eWxlYWJsZSYsIGNvbnN0IFJlbmRlclN0eWxlJiBpbmhlcml0ZWRTdHlsZSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclN0eWxlYWJsZShjb25zdCBTdHls
ZWFibGUmLCBjb25zdCBSZXNvbHV0aW9uQ29udGV4dCYpOwogCiAgICAgdm9pZCByZXNvbHZlQ29t
cG9zZWRUcmVlKCk7CiAKICAgICBFbGVtZW50VXBkYXRlcyByZXNvbHZlRWxlbWVudChFbGVtZW50
Jik7CiAKLSAgICBzdGF0aWMgRWxlbWVudFVwZGF0ZSBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRh
dGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgU3R5bGVhYmxlJiwgQ2hhbmdl
LCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRCb3hTdHlsZSk7CisgICAgc3RhdGljIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5pbWF0ZWRFbGVt
ZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFN0eWxlYWJsZSYs
IENoYW5nZSwgY29uc3QgUmVzb2x1dGlvbkNvbnRleHQmKTsKICAgICBzdGQ6Om9wdGlvbmFsPEVs
ZW1lbnRVcGRhdGU+IHJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiwgY29uc3QgRWxlbWVudFVw
ZGF0ZSYsIFBzZXVkb0lkKTsKIAogICAgIHN0cnVjdCBTY29wZSA6IFJlZkNvdW50ZWQ8U2NvcGU+
IHsKQEAgLTk5LDggKzEwMCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9wUGFyZW50KCk7CiAg
ICAgdm9pZCBwb3BQYXJlbnRzVG9EZXB0aCh1bnNpZ25lZCBkZXB0aCk7CiAKKyAgICBSZXNvbHV0
aW9uQ29udGV4dCBtYWtlUmVzb2x1dGlvbkNvbnRleHQoKTsKKyAgICBSZXNvbHV0aW9uQ29udGV4
dCBtYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRh
dGUmKTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUoKSBjb25zdDsKLSAg
ICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGVGb3JQc2V1ZG8oY29uc3QgRWxlbWVu
dFVwZGF0ZSYpIGNvbnN0OworICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZUZv
clBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0ZSYpIGNvbnN0OwogCiAgICAgRG9jdW1l
bnQmIG1fZG9jdW1lbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBtX2RvY3Vt
ZW50RWxlbWVudFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVh
YmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKaW5kZXggY2ZiMDc2
ZmQ1NDRlODk5YzA4MmI0YmUwM2FjMDg1ZmViOWY1NjQ2OS4uNjZkZmE1MTM3ZGQ0ZjQ5ZjA4NDZh
ZDFmOWU5OGY5OWJhZWYzOTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ29uc2lkZXJBbmltYXRpb24oRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgU3R5bGVhYmxlOjp1cGRhdGVDU1NBbmltYXRpb25zKGNvbnN0IFJlbmRlclN0
eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSkgY29uc3QKK3ZvaWQgU3R5bGVhYmxlOjp1cGRh
dGVDU1NBbmltYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNv
bHV0aW9uQ29udGV4dCkgY29uc3QKIHsKICAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdFN0YWNrID0g
ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpOwogCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBT
dHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRT
dHlsZSwgY29uc3QgUmVuZGUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFmb3Vu
ZE1hdGNoaW5nQW5pbWF0aW9uKQotICAgICAgICAgICAgICAgIG5ld0FuaW1hdGlvbnMuYWRkKENT
U0FuaW1hdGlvbjo6Y3JlYXRlKCp0aGlzLCBjdXJyZW50QW5pbWF0aW9uLCBjdXJyZW50U3R5bGUs
IG5ld1N0eWxlLCBwYXJlbnRFbGVtZW50U3R5bGUpKTsKKyAgICAgICAgICAgICAgICBuZXdBbmlt
YXRpb25zLmFkZChDU1NBbmltYXRpb246OmNyZWF0ZSgqdGhpcywgY3VycmVudEFuaW1hdGlvbiwg
Y3VycmVudFN0eWxlLCBuZXdTdHlsZSwgcmVzb2x1dGlvbkNvbnRleHQpKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMzg4LDcgKzM4OCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRp
b25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFiCiAgICAg
ICAgICAgICAvLyBJZiBhIHRyYW5zaXRpb24gaGFzIG5vdCB5ZXQgc3RhcnRlZCBvciBzdGFydGVk
IHdoZW4gYW5pbWF0aW9ucyB3ZXJlIGxhc3QgdXBkYXRlZCwgdXNlIHRoZSB0aW1lbGluZSB0aW1l
IGF0IGl0cyBjcmVhdGlvbgogICAgICAgICAgICAgLy8gYXMgaXRzIHN0YXJ0IHRpbWUgdG8gZW5z
dXJlIHRoYXQgaXQgd2lsbCBwcm9kdWNlIGEgc3R5bGUgd2l0aCBwcm9ncmVzcyA+IDAuCiAgICAg
ICAgICAgICBib29sIHNob3VsZFVzZVRpbWVsaW5lVGltZUF0Q3JlYXRpb24gPSBpczxDU1NUcmFu
c2l0aW9uPihhbmltYXRpb24pICYmICghYW5pbWF0aW9uLT5zdGFydFRpbWUoKSB8fCAqYW5pbWF0
aW9uLT5zdGFydFRpbWUoKSA9PSBzdHlsZWFibGUuZWxlbWVudC5kb2N1bWVudCgpLnRpbWVsaW5l
KCkuY3VycmVudFRpbWUoKSk7Ci0gICAgICAgICAgICBhbmltYXRpb24tPnJlc29sdmUoYW5pbWF0
ZWRTdHlsZSwgbnVsbHB0ciwgc2hvdWxkVXNlVGltZWxpbmVUaW1lQXRDcmVhdGlvbiA/IGRvd25j
YXN0PENTU1RyYW5zaXRpb24+KCphbmltYXRpb24pLnRpbWVsaW5lVGltZUF0Q3JlYXRpb24oKSA6
IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICBhbmltYXRpb24tPnJlc29sdmUoYW5pbWF0ZWRT
dHlsZSwgeyBudWxscHRyIH0sIHNob3VsZFVzZVRpbWVsaW5lVGltZUF0Q3JlYXRpb24gPyBkb3du
Y2FzdDxDU1NUcmFuc2l0aW9uPigqYW5pbWF0aW9uKS50aW1lbGluZVRpbWVBdENyZWF0aW9uKCkg
OiBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGVkU3R5bGU7CiAgICAg
ICAgIH0KIApAQCAtNDA4LDcgKzQwOCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRp
b25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFiCiAgICAg
YXV0byBhZnRlckNoYW5nZVN0eWxlID0gWyZdKCkgLT4gY29uc3QgUmVuZGVyU3R5bGUgewogICAg
ICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24pICYmIGFuaW1hdGlvbi0+aXNSZWxl
dmFudCgpKSB7CiAgICAgICAgICAgICBhdXRvIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y2xvbmUobmV3U3R5bGUpOwotICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVk
U3R5bGUsIG51bGxwdHIpOworICAgICAgICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKGFuaW1hdGVk
U3R5bGUsIHsgbnVsbHB0ciB9KTsKICAgICAgICAgICAgIHJldHVybiBhbmltYXRlZFN0eWxlOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5o
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKaW5kZXggMjNjOGFmYWM5MGM0NmQ0
ZDFmMjEzYmNhYWQwMTA0NjZkY2E0YWI1Yy4uM2E1M2IzNmNmMjRlNThiNGRkOGJhNGQyNjllMzEz
OWE5NTljY2NiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKQEAgLTg1LDkgKzg1LDkgQEAg
c3RydWN0IFN0eWxlYWJsZSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0tleWZyYW1lRWZm
ZWN0cyhwc2V1ZG9JZCk7CiAgICAgfQogCi0gICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4g
YXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgcHJldmlvdXNMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50RWxlbWVudFN0eWxlKSBjb25zdAorICAgIE9wdGlvblNldDxBbmltYXRpb25J
bXBhY3Q+IGFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUmIHByZXZpb3VzTGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSwgY29uc3Qg
U3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHV0aW9uQ29udGV4dCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBlbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2socHNldWRv
SWQpLmFwcGx5S2V5ZnJhbWVFZmZlY3RzKHRhcmdldFN0eWxlLCBwcmV2aW91c0xhc3RTdHlsZUNo
YW5nZUV2ZW50U3R5bGUsIHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgICAgIHJldHVybiBlbGVt
ZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2socHNldWRvSWQpLmFwcGx5S2V5ZnJhbWVFZmZl
Y3RzKHRhcmdldFN0eWxlLCBwcmV2aW91c0xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUsIHJlc29s
dXRpb25Db250ZXh0KTsKICAgICB9CiAKICAgICBjb25zdCBBbmltYXRpb25Db2xsZWN0aW9uKiBh
bmltYXRpb25zKCkgY29uc3QKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdHJ1Y3QgU3R5bGVhYmxlIHsK
IAogICAgIHZvaWQgcmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdF
bGVtZW50KFdlYkFuaW1hdGlvbiYpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVDU1NBbmltYXRp
b25zKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBh
ZnRlckNoYW5nZVN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlKSBj
b25zdDsKKyAgICB2b2lkIHVwZGF0ZUNTU0FuaW1hdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIGN1
cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUsIGNvbnN0IFN0
eWxlOjpSZXNvbHV0aW9uQ29udGV4dCYpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlQ1NTVHJhbnNp
dGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUm
IG5ld1N0eWxlKSBjb25zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA4
NjQyN2Q3OTVlZWIyYTdlNmI1YWFjZDkwYTY1M2IwMzRmMTVlOTQwLi5kZGQzM2MwZjA0Mjc2MDM2
OWQzZDMyMWMzNjYyYjQxMGQ0NzNjZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBA
IC02MzgsMTYgKzYzOCwxOSBAQCB2b2lkIFNWR0VsZW1lbnQ6OmFuaW1hdG9yV2lsbEJlRGVsZXRl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAgIHByb3BlcnR5QW5pbWF0
b3JGYWN0b3J5KCkuYW5pbWF0b3JXaWxsQmVEZWxldGVkKGF0dHJpYnV0ZU5hbWUpOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
KikKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU1ZHRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4dCYgcmVzb2x1dGlvbkNv
bnRleHQsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBp
biBhIDx1c2U+IHRyZWUgd2UgZ2V0IHRoZSBzdHlsZSBmcm9tIHRoZSBkZWZpbml0aW9uIHRyZWUu
CiAgICAgaWYgKFJlZlB0ciBzdHlsZUVsZW1lbnQgPSB0aGlzLT5jb3JyZXNwb25kaW5nRWxlbWVu
dCgpKSB7Ci0gICAgICAgIGF1dG8gc3R5bGUgPSBzdHlsZUVsZW1lbnQtPnJlc29sdmVTdHlsZSgm
cGFyZW50U3R5bGUpOworICAgICAgICBhdXRvIHN0eWxlRWxlbWVudFJlc29sdXRpb25Db250ZXh0
ID0gcmVzb2x1dGlvbkNvbnRleHQ7CisgICAgICAgIC8vIENhbid0IHVzZSB0aGUgc2VsZWN0b3Ig
ZmlsdGVyIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhbm90aGVyIHBhcnQgb2YgdGhlIHRyZWUuCisg
ICAgICAgIHN0eWxlRWxlbWVudFJlc29sdXRpb25Db250ZXh0LnNlbGVjdG9yRmlsdGVyID0gbnVs
bHB0cjsKKyAgICAgICAgYXV0byBzdHlsZSA9IHN0eWxlRWxlbWVudC0+cmVzb2x2ZVN0eWxlKHN0
eWxlRWxlbWVudFJlc29sdXRpb25Db250ZXh0KTsKICAgICAgICAgU3R5bGU6OkFkanVzdGVyOjph
ZGp1c3RTVkdFbGVtZW50U3R5bGUoKnN0eWxlLnJlbmRlclN0eWxlLCAqdGhpcyk7CiAgICAgICAg
IHJldHVybiBzdHlsZTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzb2x2ZVN0eWxlKCZwYXJlbnRT
dHlsZSk7CisgICAgcmV0dXJuIHJlc29sdmVTdHlsZShyZXNvbHV0aW9uQ29udGV4dCk7CiB9CiAK
IE11dGFibGVTdHlsZVByb3BlcnRpZXMqIFNWR0VsZW1lbnQ6OmFuaW1hdGVkU01JTFN0eWxlUHJv
cGVydGllcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCAyNTdhZTcwN2RjNzhj
MGUyNGZiMjdjODI3Mjk4ZTAxMDZlMTJkNjg5Li45N2U2MDg2OTk4MzM4OTQ5OTMyYjIxYjI4NGM5
NTU5MDBkOTBkYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTEwNSw3ICsxMDUsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQq
KTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3Rv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxl
bWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250
ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAKICAg
ICBzdGF0aWMgUXVhbGlmaWVkTmFtZSBhbmltYXRhYmxlQXR0cmlidXRlRm9yTmFtZShjb25zdCBB
dG9tU3RyaW5nJik7CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRS
YXJlRGF0YS5oCmluZGV4IDc5YzFlOGMyZjJkNjE2ODMxOTMzZTM4MTdiYzI5MmVlNWYwZTQ1MWEu
LjYyNzJmZTNmOTZlOTFjOWMzYjJkOGQ1OTQwMTY2OWFmMzg2NTY0Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmICghbV9vdmVycmlkZUNvbXB1dGVk
U3R5bGUgfHwgbV9uZWVkc092ZXJyaWRlQ29tcHV0ZWRTdHlsZVVwZGF0ZSkgewogICAgICAgICAg
ICAgLy8gVGhlIHN0eWxlIGNvbXB1dGVkIGhlcmUgY29udGFpbnMgbm8gQ1NTIEFuaW1hdGlvbnMv
VHJhbnNpdGlvbnMgb3IgU01JTCBpbmR1Y2VkIHJ1bGVzIC0gdGhpcyBpcyBuZWVkZWQgdG8gY29t
cHV0ZSB0aGUgImJhc2UgdmFsdWUiIGZvciB0aGUgU01JTCBhbmltYXRpb24gc2FuZHdoaWNoIG1v
ZGVsLgotICAgICAgICAgICAgbV9vdmVycmlkZUNvbXB1dGVkU3R5bGUgPSBlbGVtZW50LnN0eWxl
UmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgcGFyZW50U3R5bGUsIG51bGxwdHIs
IFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzRXhjbHVkaW5nU01JTCkucmVuZGVy
U3R5bGU7CisgICAgICAgICAgICBtX292ZXJyaWRlQ29tcHV0ZWRTdHlsZSA9IGVsZW1lbnQuc3R5
bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBhcmVudFN0eWxlIH0sIFJ1
bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzRXhjbHVkaW5nU01JTCkucmVuZGVyU3R5
bGU7CiAgICAgICAgICAgICBtX25lZWRzT3ZlcnJpZGVDb21wdXRlZFN0eWxlVXBkYXRlID0gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKG1fb3ZlcnJpZGVDb21wdXRlZFN0eWxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxODdhZTE4ZDlhMGMyYzZiMDQy
MDI2NzhiYzAwOWEwYTAxODFlZjg2Li4zZDE4OGU2NzY0MTVhNDFmMzFmZjc1NWE1ZjlkZmE3MzRh
NzRkMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MDE4LDcgKzYw
MTgsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpoaWdobGlnaHRQc2V1ZG9FbGVtZW50Q29sb3IoY29u
c3QgU3RyaW5nJiBoaWdobGlnaHROYW1lLCBFbGVtZQogICAgIGlmICghcGFyZW50U3R5bGUpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHN0eWxlID0gc3R5bGVSZXNvbHZlci5wc2V1
ZG9TdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgeyBQc2V1ZG9JZDo6SGlnaGxpZ2h0LCBoaWdobGln
aHROYW1lIH0sICpwYXJlbnRTdHlsZSk7CisgICAgYXV0byBzdHlsZSA9IHN0eWxlUmVzb2x2ZXIu
cHNldWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgUHNldWRvSWQ6OkhpZ2hsaWdodCwgaGln
aGxpZ2h0TmFtZSB9LCB7IHBhcmVudFN0eWxlIH0pOwogICAgIGlmICghc3R5bGUpCiAgICAgICAg
IHJldHVybiB7IH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>