<?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>238773</bug_id>
          
          <creation_ts>2022-04-04 15:34:26 -0700</creation_ts>
          <short_desc>Avoid repeated calls to WebCore::eventNames()</short_desc>
          <delta_ts>2022-04-04 20:48:19 -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>WebCore Misc.</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=238702</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1858118</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-04 15:34:26 -0700</bug_when>
    <thetext>Avoid repeated calls to WebCore::eventNames() by caching it where appropriate.
WebCore::eventNames() calls pthread_get_specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858119</commentid>
    <comment_count>1</comment_count>
      <attachid>456641</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-04 15:35:33 -0700</bug_when>
    <thetext>Created attachment 456641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858135</commentid>
    <comment_count>2</comment_count>
      <attachid>456641</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-04 16:20:14 -0700</bug_when>
    <thetext>Comment on attachment 456641
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858219</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-04 20:47:52 -0700</bug_when>
    <thetext>Committed r292370 (249235@main): &lt;https://commits.webkit.org/249235@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456641.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858220</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-04 20:48:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/91275396&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456641</attachid>
            <date>2022-04-04 15:35:33 -0700</date>
            <delta_ts>2022-04-04 20:47:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238773-20220404153533.patch</filename>
            <type>text/plain</type>
            <size>47321</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4M2E2MDI3ZjA4ODk4
YjNiMWFhNWE2MGI5NzU4MjExNGE0YzA2My4uNDVmMTdkMDRkZDA4M2VmNDY3YzFkNzhiMmQ3YzQy
OTg0N2ExNmE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIyLTA0LTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgcmVwZWF0ZWQgY2Fs
bHMgdG8gV2ViQ29yZTo6ZXZlbnROYW1lcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBdm9pZCByZXBlYXRlZCBjYWxscyB0byBXZWJDb3JlOjpldmVu
dE5hbWVzKCkgYnkgY2FjaGluZyBpdCB3aGVyZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgV2ViQ29y
ZTo6ZXZlbnROYW1lcygpIGNhbGxzIHB0aHJlYWRfZ2V0X3NwZWNpZmljLgorCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDb21wYXRpYmlsaXR5TW91c2VF
dmVudCk6CisgICAgICAgICogZG9tL0V2ZW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzIGNvbnN0KToKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVnYWN5VHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFRhcmdldDo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMpOgorICAgICAg
ICAqIGRvbS9Nb3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OnRv
RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50Ojpmcm9tRWxlbWVu
dCBjb25zdCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKiBkb20vUG9p
bnRlckV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyRXZlbnQ6OnR5cGVJc0VudGVy
T3JMZWF2ZSk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Ondp
bGxEaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVu
dEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hE
ZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3VtbWFyeUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcndhcmRFdmVu
dCk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJU
aHVtYkVsZW1lbnQ6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nVW5s
b2FkRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRldmlj
ZU1vdGlvbkNvbnRyb2xsZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93Ojppc0FsbG93ZWRUb1VzZURldmljZU1vdGlvbk9yT3JpZW50YXRpb24gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc0FsbG93ZWRUb1VzZURldmlj
ZU1vdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Omlz
QWxsb3dlZFRvVXNlRGV2aWNlT3JpZW50YXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpoYXNQZXJtaXNzaW9uVG9SZWNlaXZlRGV2aWNlTW90aW9uT3JP
cmllbnRhdGlvbkV2ZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OnN0YXJ0TGlzdGVuaW5nRm9yRGV2aWNlT3JpZW50YXRpb25JZk5lY2Vzc2FyeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnN0b3BMaXN0ZW5pbmdGb3JEZXZp
Y2VPcmllbnRhdGlvbklmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvdzo6c3RhcnRMaXN0ZW5pbmdGb3JEZXZpY2VNb3Rpb25JZk5lY2Vzc2FyeSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnN0b3BMaXN0ZW5pbmdGb3JEZXZpY2VN
b3Rpb25JZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OmZhaWxlZFRvUmVnaXN0ZXJEZXZpY2VNb3Rpb25FdmVudExpc3RlbmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW5jcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnND
b3VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRlY3JlbWVudFNj
cm9sbEV2ZW50TGlzdGVuZXJzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93OjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpsYW5ndWFnZXNDaGFuZ2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hMb2FkRXZlbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjYXB0dXJlRXZlbnRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVsZWFzZUV2ZW50cyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZpbmlzaGVkTG9hZGluZyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNldExvY2F0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cHJpbnRFcnJvck1lc3NhZ2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpjcm9zc0RvbWFpbkFjY2Vzc0Vycm9y
TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmlzSW5zZWN1
cmVTY3JpcHRBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpj
cmVhdGVXaW5kb3cpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVu
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9n
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZW5hYmxlU3VkZGVuVGVy
bWluYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNhYmxl
U3VkZGVuVGVybWluYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpmcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmV2
ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZl
bnRUYXJnZXROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aXNLZXlib2Fy
ZE9wdGlvblRhYik6CisKIDIwMjItMDQtMDQgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxl
LmNvbT4KIAogICAgICAgICBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZWxlbWVudFJlY3Qgc2hv
dWxkIHVzZSBjaGlsZHJlbiByZWN0cyBmb3IgZGlzcGxheTpjb250ZW50cyBBWCBvYmplY3RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTY5NmYwMWFlN2E0MWYwZGEzM2QzNzU0NDdjOWExZDI5
N2M4MWUwMC4uYTNhYjVhN2JiNzM3NDUxZjJiMDRjM2FhNjZjMjMyNmVmYjMzMjFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtNDMzLDcgKzQzMyw4IEBAIHN0YXRpYyBib29sIGlzQ29tcGF0
aWJpbGl0eU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudCYgbW91c2VFdmVudCkKIHsKICAgICAv
LyBodHRwczovL3d3dy53My5vcmcvVFIvcG9pbnRlcmV2ZW50cy8jY29tcGF0aWJpbGl0eS1tYXBw
aW5nLXdpdGgtbW91c2UtZXZlbnRzCiAgICAgY29uc3QgYXV0byYgdHlwZSA9IG1vdXNlRXZlbnQu
dHlwZSgpOwotICAgIHJldHVybiB0eXBlICE9IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmIHR5
cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50ICYmIHR5cGUgIT0gZXZlbnROYW1lcygp
Lm1vdXNlb3V0RXZlbnQgJiYgdHlwZSAhPSBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50ICYm
IHR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlbGVhdmVFdmVudDsKKyAgICBhdXRvJiBldmVudE5h
bWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOworICAgIHJldHVybiB0eXBlICE9IGV2ZW50TmFt
ZXMuY2xpY2tFdmVudCAmJiB0eXBlICE9IGV2ZW50TmFtZXMubW91c2VvdmVyRXZlbnQgJiYgdHlw
ZSAhPSBldmVudE5hbWVzLm1vdXNlb3V0RXZlbnQgJiYgdHlwZSAhPSBldmVudE5hbWVzLm1vdXNl
ZW50ZXJFdmVudCAmJiB0eXBlICE9IGV2ZW50TmFtZXMubW91c2VsZWF2ZUV2ZW50OwogfQogCiBl
bnVtIGNsYXNzIFNob3VsZElnbm9yZU1vdXNlRXZlbnQgOiBib29sIHsgTm8sIFllcyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRDb250ZXh0LmNwcAppbmRleCBhYjgwOTI0YzU1YWU3NzQ3Yzc1NmJiMTNl
OGI0Nzk2ZWQ4ZWI1NjMxLi40OTNkOTRlYzU2NjFiYjZlODFmZDE4ZjkzN2M5N2FkMDBiMTAwNzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcApAQCAtNzgsNyArNzgsOCBAQCB2b2lk
IEV2ZW50Q29udGV4dDo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQmIGV2ZW50LCBFdmVudEludm9r
ZVBoYXNlIHBoYXNlKSBjb25zdAogCiAgICAgaWYgKFVOTElLRUxZKG1fY29udGV4dE5vZGVJc0Zv
cm1FbGVtZW50KSkgewogICAgICAgICBBU1NFUlQoaXM8SFRNTEZvcm1FbGVtZW50PigqbV9ub2Rl
KSk7Ci0gICAgICAgIGlmICgoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVu
dCB8fCBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnJlc2V0RXZlbnQpCisgICAgICAgIGF1
dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CisgICAgICAgIGlmICgoZXZl
bnQudHlwZSgpID09IGV2ZW50TmFtZXMuc3VibWl0RXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2
ZW50TmFtZXMucmVzZXRFdmVudCkKICAgICAgICAgICAgICYmIGV2ZW50LmV2ZW50UGhhc2UoKSAh
PSBFdmVudDo6Q0FQVFVSSU5HX1BIQVNFICYmIGV2ZW50LnRhcmdldCgpICE9IG1fbm9kZSAmJiBp
czxOb2RlPihldmVudC50YXJnZXQoKSkpIHsKICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAK
aW5kZXggNDI5Yjk5OTRkY2U2Y2YxNzkwNjk4YjlmMGU4NTNlZmI2Y2JkZTBiMi4uNjkzOGJmNjUy
OWQzNTdhYzY3MTdlOTRhN2E0ZDM4NThlN2VhNmRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuY3BwCkBAIC0yNjAsMjEgKzI2MCwyMiBAQCB2b2lkIEV2ZW50VGFyZ2V0Ojp1bmNhdWdodEV4
Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCkKIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGxlZ2Fj
eVR5cGUoY29uc3QgRXZlbnQmIGV2ZW50KQogewotICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmFuaW1hdGlvbmVuZEV2ZW50KQotICAgICAgICByZXR1cm4gZXZlbnROYW1lcygp
LndlYmtpdEFuaW1hdGlvbkVuZEV2ZW50OworICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3Jl
OjpldmVudE5hbWVzKCk7CisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzLmFuaW1h
dGlvbmVuZEV2ZW50KQorICAgICAgICByZXR1cm4gZXZlbnROYW1lcy53ZWJraXRBbmltYXRpb25F
bmRFdmVudDsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmFuaW1hdGlv
bnN0YXJ0RXZlbnQpCi0gICAgICAgIHJldHVybiBldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9u
U3RhcnRFdmVudDsKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMuYW5pbWF0aW9u
c3RhcnRFdmVudCkKKyAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMud2Via2l0QW5pbWF0aW9uU3Rh
cnRFdmVudDsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmFuaW1hdGlv
bml0ZXJhdGlvbkV2ZW50KQotICAgICAgICByZXR1cm4gZXZlbnROYW1lcygpLndlYmtpdEFuaW1h
dGlvbkl0ZXJhdGlvbkV2ZW50OworICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5h
bmltYXRpb25pdGVyYXRpb25FdmVudCkKKyAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMud2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uRXZlbnQ7CiAKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50
TmFtZXMoKS50cmFuc2l0aW9uZW5kRXZlbnQpCi0gICAgICAgIHJldHVybiBldmVudE5hbWVzKCku
d2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50OworICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnRO
YW1lcy50cmFuc2l0aW9uZW5kRXZlbnQpCisgICAgICAgIHJldHVybiBldmVudE5hbWVzLndlYmtp
dFRyYW5zaXRpb25FbmRFdmVudDsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGxlZ2FjeSBuYW1lIGlz
IG5vdCBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL2RvbS5zcGVjLndoYXR3Zy5v
cmcvI2Rpc3BhdGNoaW5nLWV2ZW50cykuCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkud2hlZWxFdmVudCkKLSAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVs
RXZlbnQ7CisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzLndoZWVsRXZlbnQpCisg
ICAgICAgIHJldHVybiBldmVudE5hbWVzLm1vdXNld2hlZWxFdmVudDsKIAogICAgIHJldHVybiBu
dWxsQXRvbSgpOwogfQpAQCAtMzk1LDcgKzM5Niw4IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OnJlbW92
ZUFsbEV2ZW50TGlzdGVuZXJzKCkKIAogICAgIGF1dG8qIGRhdGEgPSBldmVudFRhcmdldERhdGEo
KTsKICAgICBpZiAoZGF0YSAmJiAhZGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgaWYgKGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuY29udGFpbnMoZXZlbnROYW1lcygp
LndoZWVsRXZlbnQpIHx8IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuY29udGFpbnMoZXZlbnROYW1l
cygpLm1vdXNld2hlZWxFdmVudCkpCisgICAgICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3Jl
OjpldmVudE5hbWVzKCk7CisgICAgICAgIGlmIChkYXRhLT5ldmVudExpc3RlbmVyTWFwLmNvbnRh
aW5zKGV2ZW50TmFtZXMud2hlZWxFdmVudCkgfHwgZGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5jb250
YWlucyhldmVudE5hbWVzLm1vdXNld2hlZWxFdmVudCkpCiAgICAgICAgICAgICBpbnZhbGlkYXRl
RXZlbnRMaXN0ZW5lclJlZ2lvbnMoKTsKIAogICAgICAgICBkYXRhLT5ldmVudExpc3RlbmVyTWFw
LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggODg5Mjc0MWU5ZGJkODQy
YzUyMmYxODZiNGVhZmFjY2VlNmYwZDE0MS4uOTJiY2EyZTBiNzRjZDg4YmIwMWQ0YzA3OGViYTc0
MzhhMDc4ODQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtMTk0LDcgKzE5NCw4
IEBAIFJlZlB0cjxOb2RlPiBNb3VzZUV2ZW50Ojp0b0VsZW1lbnQoKSBjb25zdAogewogICAgIC8v
IE1TSUUgZXh0ZW5zaW9uIC0gInRoZSBvYmplY3QgdG93YXJkIHdoaWNoIHRoZSB1c2VyIGlzIG1v
dmluZyB0aGUgbW91c2UgcG9pbnRlciIKICAgICBFdmVudFRhcmdldCogdGFyZ2V0OwotICAgIGlm
ICh0eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQgfHwgdHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZWxlYXZlRXZlbnQpCisgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6
OmV2ZW50TmFtZXMoKTsKKyAgICBpZiAodHlwZSgpID09IGV2ZW50TmFtZXMubW91c2VvdXRFdmVu
dCB8fCB0eXBlKCkgPT0gZXZlbnROYW1lcy5tb3VzZWxlYXZlRXZlbnQpCiAgICAgICAgIHRhcmdl
dCA9IHJlbGF0ZWRUYXJnZXQoKTsKICAgICBlbHNlCiAgICAgICAgIHRhcmdldCA9IHRoaXMtPnRh
cmdldCgpOwpAQCAtMjA1LDcgKzIwNiw4IEBAIFJlZlB0cjxOb2RlPiBNb3VzZUV2ZW50Ojpmcm9t
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgLy8gTVNJRSBleHRlbnNpb24gLSAib2JqZWN0IGZyb20g
d2hpY2ggYWN0aXZhdGlvbiBvciB0aGUgbW91c2UgcG9pbnRlciBpcyBleGl0aW5nIGR1cmluZyB0
aGUgZXZlbnQiIChodWg/KQogICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQ7Ci0gICAgaWYgKHR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCB0eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNlbGVhdmVFdmVudCkKKyAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnRO
YW1lcygpOworICAgIGlmICh0eXBlKCkgPT0gZXZlbnROYW1lcy5tb3VzZW91dEV2ZW50IHx8IHR5
cGUoKSA9PSBldmVudE5hbWVzLm1vdXNlbGVhdmVFdmVudCkKICAgICAgICAgdGFyZ2V0ID0gdGhp
cy0+dGFyZ2V0KCk7CiAgICAgZWxzZQogICAgICAgICB0YXJnZXQgPSByZWxhdGVkVGFyZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggM2I2ZDA1NjU2ZWRiZWUwMTY0YzQ3ZmZkYWVjNGI5MTU1ZDM1
MGJmZC4uYjZmNGNkMDg0MjI1M2VjMzEwNTIwMTE5Y2NlMmMwNmI3N2Q4MDE3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtMjA4MywxMiArMjA4MywxMyBAQCB2b2lkIE5vZGU6Om1vdmVOb2RlVG9OZXdE
b2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKICAg
ICAgICAgdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXItPnJlbW92ZU5vZGUoKnRoaXMpOwogCiAg
ICAgaWYgKGF1dG8qIGV2ZW50VGFyZ2V0RGF0YSA9IHRoaXMtPmV2ZW50VGFyZ2V0RGF0YSgpKSB7
CisgICAgICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAgICAg
ICAgIGlmICghZXZlbnRUYXJnZXREYXRhLT5ldmVudExpc3RlbmVyTWFwLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZXZlbnRUYXJnZXREYXRhLT5ldmVudExpc3Rl
bmVyTWFwLmV2ZW50VHlwZXMoKSkKICAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRMaXN0
ZW5lclR5cGVJZk5lZWRlZCh0eXBlKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIG51
bVdoZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXdo
ZWVsRXZlbnQpLnNpemUoKSArIGV2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50
KS5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIG51bVdoZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50
TGlzdGVuZXJzKGV2ZW50TmFtZXMubW91c2V3aGVlbEV2ZW50KS5zaXplKCkgKyBldmVudExpc3Rl
bmVycyhldmVudE5hbWVzLndoZWVsRXZlbnQpLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bVdoZWVsRXZlbnRIYW5kbGVyczsgKytpKSB7CiAgICAgICAgICAgICBv
bGREb2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7CiAgICAgICAgICAg
ICBuZXdEb2N1bWVudC5kaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7CkBAIC0yMDk3LDEx
ICsyMDk4LDExIEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KERvY3VtZW50JiBv
bGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgICAgICB1bnNpZ25lZCBudW1U
b3VjaEV2ZW50TGlzdGVuZXJzID0gMDsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICAg
ICBpZiAobmV3RG9jdW1lbnQucXVpcmtzKCkuc2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2
ZW50cyh0aGlzKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogZXZlbnROYW1lcygp
LmV4dGVuZGVkVG91Y2hSZWxhdGVkRXZlbnROYW1lcygpKQorICAgICAgICAgICAgZm9yIChhdXRv
JiBuYW1lIDogZXZlbnROYW1lcy5leHRlbmRlZFRvdWNoUmVsYXRlZEV2ZW50TmFtZXMoKSkKICAg
ICAgICAgICAgICAgICBudW1Ub3VjaEV2ZW50TGlzdGVuZXJzICs9IGV2ZW50TGlzdGVuZXJzKG5h
bWUpLnNpemUoKTsKICAgICAgICAgfSBlbHNlIHsKICNlbmRpZgotICAgICAgICAgICAgZm9yIChh
dXRvJiBuYW1lIDogZXZlbnROYW1lcygpLnRvdWNoUmVsYXRlZEV2ZW50TmFtZXMoKSkKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgbmFtZSA6IGV2ZW50TmFtZXMudG91Y2hSZWxhdGVkRXZlbnROYW1l
cygpKQogICAgICAgICAgICAgICAgIG51bVRvdWNoRXZlbnRMaXN0ZW5lcnMgKz0gZXZlbnRMaXN0
ZW5lcnMobmFtZSkuc2l6ZSgpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgICAgIH0K
QEAgLTIxMTgsNyArMjExOSw3IEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KERv
Y3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykKICAgICAgICAgdW5z
aWduZWQgbnVtR2VzdHVyZUV2ZW50TGlzdGVuZXJzID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBu
YW1lIDogZXZlbnROYW1lcygpLmdlc3R1cmVFdmVudE5hbWVzKCkpCisgICAgICAgIGZvciAoYXV0
byYgbmFtZSA6IGV2ZW50TmFtZXMuZ2VzdHVyZUV2ZW50TmFtZXMoKSkKICAgICAgICAgICAgIG51
bUdlc3R1cmVFdmVudExpc3RlbmVycyArPSBldmVudExpc3RlbmVycyhuYW1lKS5zaXplKCk7CiAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUdlc3R1cmVFdmVudExpc3RlbmVy
czsgKytpKSB7CkBAIC0yMTQ4LDI1ICsyMTQ5LDI3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0cnlB
ZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuYWRk
TGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKLSAgICBpZiAoZXZlbnROYW1lcygpLmlz
V2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkKKworICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJD
b3JlOjpldmVudE5hbWVzKCk7CisgICAgaWYgKGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50VHlwZShl
dmVudFR5cGUpKQogICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRpZEFkZFdoZWVsRXZl
bnRIYW5kbGVyKCp0YXJnZXROb2RlKTsKLSAgICBlbHNlIGlmIChldmVudE5hbWVzKCkuaXNUb3Vj
aFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisgICAgZWxzZSBpZiAo
ZXZlbnROYW1lcy5pc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICp0YXJnZXROb2Rl
KSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRUb3VjaEV2ZW50SGFuZGxl
cigqdGFyZ2V0Tm9kZSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICh0YXJn
ZXROb2RlID09ICZ0YXJnZXROb2RlLT5kb2N1bWVudCgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkuc2Nyb2xsRXZlbnQpIHsKKyAgICBpZiAodGFyZ2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+
ZG9jdW1lbnQoKSAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5zY3JvbGxFdmVudCkgewogICAg
ICAgICBpZiAoYXV0byogd2luZG93ID0gdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3co
KSkKICAgICAgICAgICAgIHdpbmRvdy0+aW5jcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3Vu
dCgpOwogICAgIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGV2ZW50TmFt
ZXMoKS5pc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICp0YXJnZXROb2RlKSkKKyAg
ICBpZiAoZXZlbnROYW1lcy5pc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICp0YXJn
ZXROb2RlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50TGlz
dGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpICYmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi0gICAgaWYgKGV2ZW50TmFtZXMoKS5pc0dlc3R1cmVFdmVudFR5cGUoZXZlbnRUeXBlKSkK
KyAgICBpZiAoZXZlbnROYW1lcy5pc0dlc3R1cmVFdmVudFR5cGUoZXZlbnRUeXBlKSkKICAgICAg
ICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9k
ZSk7CiAjZW5kaWYKIApAQCAtMjE4NSwyNSArMjE4OCwyNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9tU3RyaW5n
JiBldgogCiAgICAgLy8gRklYTUU6IE5vdGlmeSBEb2N1bWVudCB0aGF0IHRoZSBsaXN0ZW5lciBo
YXMgdmFuaXNoZWQuIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiBhIG51bWJlciBvZgogICAgIC8v
IGxpc3RlbmVycyBmb3IgZWFjaCB0eXBlLCBub3QganVzdCBhIGJvb2wgLSBzZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODYxCi0gICAgaWYgKGV2ZW50TmFtZXMo
KS5pc1doZWVsRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgYXV0byYgZXZlbnROYW1lcyA9IFdl
YkNvcmU6OmV2ZW50TmFtZXMoKTsKKyAgICBpZiAoZXZlbnROYW1lcy5pc1doZWVsRXZlbnRUeXBl
KGV2ZW50VHlwZSkpCiAgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkUmVtb3ZlV2hl
ZWxFdmVudEhhbmRsZXIoKnRhcmdldE5vZGUpOwotICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMoKS5p
c1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICp0YXJnZXROb2RlKSkKKyAgICBlbHNl
IGlmIChldmVudE5hbWVzLmlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKnRhcmdl
dE5vZGUpKQogICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRpZFJlbW92ZVRvdWNoRXZl
bnRIYW5kbGVyKCp0YXJnZXROb2RlKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
aWYgKHRhcmdldE5vZGUgPT0gJnRhcmdldE5vZGUtPmRvY3VtZW50KCkgJiYgZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCkgeworICAgIGlmICh0YXJnZXROb2RlID09ICZ0YXJn
ZXROb2RlLT5kb2N1bWVudCgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnNjcm9sbEV2ZW50
KSB7CiAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRv
bVdpbmRvdygpKQogICAgICAgICAgICAgd2luZG93LT5kZWNyZW1lbnRTY3JvbGxFdmVudExpc3Rl
bmVyc0NvdW50KCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAo
ZXZlbnROYW1lcygpLmlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKnRhcmdldE5v
ZGUpKQorICAgIGlmIChldmVudE5hbWVzLmlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlw
ZSwgKnRhcmdldE5vZGUpKQogICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLnJlbW92ZVRv
dWNoRXZlbnRMaXN0ZW5lcigqdGFyZ2V0Tm9kZSk7CiAjZW5kaWYKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaWYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykgJiYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZXZlbnROYW1lcygpLmlzR2VzdHVyZUV2ZW50VHlwZShl
dmVudFR5cGUpKQorICAgIGlmIChldmVudE5hbWVzLmlzR2VzdHVyZUV2ZW50VHlwZShldmVudFR5
cGUpKQogICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLnJlbW92ZVRvdWNoRXZlbnRIYW5k
bGVyKCp0YXJnZXROb2RlKTsKICNlbmRpZgogCkBAIC0yNDI3LDI3ICsyNDMxLDI4IEBAIHZvaWQg
Tm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50
LnRhcmdldCgpICE9IHRoaXMpCiAgICAgICAgIHJldHVybjsKLSAgICBjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUgPSBldmVudC50eXBlKCk7Ci0gICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkua2V5ZG93bkV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NF
dmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQpIHsKKyAgICBhdXRv
JiBldmVudFR5cGUgPSBldmVudC50eXBlKCk7CisgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNv
cmU6OmV2ZW50TmFtZXMoKTsKKyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMua2V5ZG93
bkV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmtleXByZXNzRXZlbnQgfHwgZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMua2V5dXBFdmVudCkgewogICAgICAgICBpZiAoaXM8S2V5Ym9hcmRF
dmVudD4oZXZlbnQpKSB7CiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS5mcmFtZSgpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0
S2V5Ym9hcmRFdmVudEhhbmRsZXIoZG93bmNhc3Q8S2V5Ym9hcmRFdmVudD4oZXZlbnQpKTsKICAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50KSB7CisgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5jbGlja0V2ZW50
KSB7CiAgICAgICAgIGRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChldmVudCk7CiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCi0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LmNvbnRleHRtZW51RXZlbnQpIHsKKyAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzLmNvbnRleHRtZW51RXZlbnQpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCkuZnJhbWUoKSkKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KSkKICAgICAgICAgICAgICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5oYW5kbGVD
b250ZXh0TWVudUV2ZW50KGV2ZW50KTsKICNlbmRpZgotICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCkgeworICAgIH0gZWxzZSBpZiAoZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMudGV4dElucHV0RXZlbnQpIHsKICAgICAgICAgaWYgKGlzPFRleHRF
dmVudD4oZXZlbnQpKSB7CiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS5mcmFtZSgpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0
VGV4dElucHV0RXZlbnRIYW5kbGVyKGRvd25jYXN0PFRleHRFdmVudD4oZXZlbnQpKTsKICAgICAg
ICAgfQogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBpczxNb3VzZUV2ZW50PihldmVudCkp
IHsKKyAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLm1vdXNlZG93bkV2ZW50
ICYmIGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSkgewogICAgICAgICBpZiAoZG93bmNhc3Q8TW91c2VF
dmVudD4oZXZlbnQpLmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbikgewogICAgICAgICAgICAgaWYg
KGVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZigpKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTI0NjIsNyArMjQ2Nyw3IEBAIHZvaWQgTm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCYgZXZlbnQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZgotICAgIH0gZWxz
ZSBpZiAoZXZlbnROYW1lcygpLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSAmJiBpczxXaGVl
bEV2ZW50PihldmVudCkpIHsKKyAgICB9IGVsc2UgaWYgKGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50
VHlwZShldmVudFR5cGUpICYmIGlzPFdoZWVsRXZlbnQ+KGV2ZW50KSkgewogICAgICAgICAvLyBJ
ZiB3ZSBkb24ndCBoYXZlIGEgcmVuZGVyZXIsIHNlbmQgdGhlIHdoZWVsIGV2ZW50IHRvIHRoZSBm
aXJzdCBub2RlIHdlIGZpbmQgd2l0aCBhIHJlbmRlcmVyLgogICAgICAgICAvLyBUaGlzIGlzIG5l
ZWRlZCBmb3IgPG9wdGlvbj4gYW5kIDxvcHRncm91cD4gZWxlbWVudHMgc28gdGhhdCA8c2VsZWN0
PnMgZ2V0IGEgd2hlZWwgc2Nyb2xsLgogICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSB0aGlzOwpA
QCAtMjQ3NCw5ICsyNDc5LDkgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
JiBldmVudCkKICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZGVmYXVsdFdo
ZWVsRXZlbnRIYW5kbGVyKHN0YXJ0Tm9kZSwgZG93bmNhc3Q8V2hlZWxFdmVudD4oZXZlbnQpKTsK
ICAgICAgICAgfQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgfSBlbHNlIGlmIChpczxUb3VjaEV2ZW50PihldmVudCkgJiYgZXZlbnROYW1lcygp
LmlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKnRoaXMpKSB7CisgICAgfSBlbHNl
IGlmIChpczxUb3VjaEV2ZW50PihldmVudCkgJiYgZXZlbnROYW1lcy5pc1RvdWNoUmVsYXRlZEV2
ZW50VHlwZShldmVudFR5cGUsICp0aGlzKSkgewogICAgICAgICAvLyBDYXB0dXJlIHRoZSB0YXJn
ZXQgbm9kZSdzIHZpc2liaWxpdHkgc3RhdGUgYmVmb3JlIGRpc3BhdGNoaW5nIHRvdWNoU3RhcnQu
Ci0gICAgICAgIGlmIChpczxFbGVtZW50PigqdGhpcykgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS50b3VjaHN0YXJ0RXZlbnQpIHsKKyAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCp0aGlzKSAm
JiBldmVudFR5cGUgPT0gZXZlbnROYW1lcy50b3VjaHN0YXJ0RXZlbnQpIHsKICNpZiBFTkFCTEUo
Q09OVEVOVF9DSEFOR0VfT0JTRVJWRVIpCiAgICAgICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdl
T2JzZXJ2ZXIgPSBkb2N1bWVudCgpLmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOwogICAgICAgICAg
ICAgaWYgKENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNWaXN1YWxseUhpZGRlbigqdGhpcykpCkBA
IC0yNTA3LDEzICsyNTEyLDE1IEBAIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2
ZW50cygpCiAgICAgaWYgKGRvd25jYXN0PEVsZW1lbnQ+KCp0aGlzKS5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCi0gICAgcmV0dXJuIGhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgfHwgaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkubW91c2VvdXRFdmVudCk7CisgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNv
cmU6OmV2ZW50TmFtZXMoKTsKKyAgICByZXR1cm4gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1l
cy5tb3VzZW1vdmVFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcy5tb3VzZW92
ZXJFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcy5tb3VzZW91dEV2ZW50KTsK
IH0KIAogYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKQogeworICAgIGF1dG8m
IGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAgICAgcmV0dXJuIGV2ZW50VHlw
ZXMoKS5jb250YWluc0lmKFsmXShjb25zdCBhdXRvJiB0eXBlKSB7Ci0gICAgICAgIHJldHVybiBl
dmVudE5hbWVzKCkuaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZSwgKnRoaXMpOworICAgICAg
ICByZXR1cm4gZXZlbnROYW1lcy5pc1RvdWNoUmVsYXRlZEV2ZW50VHlwZSh0eXBlLCAqdGhpcyk7
CiAgICAgfSk7CiB9CiAKQEAgLTI1MjEsMTQgKzI1MjgsMTkgQEAgYm9vbCBOb2RlOjp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGUgaU9T
IGNvZGUgcGF0aCBkaWZmZXJlbnQgZnJvbSB0aGUgbm9uLWlPUyBjb2RlIHBhdGg/CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gaXNDb250ZW50RWRpdGFibGUoKSB8fCBoYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KSB8fCBoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50KTsKKyAgICBpZiAoaXNDb250ZW50RWRpdGFibGUoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50
TmFtZXMoKTsKKyAgICByZXR1cm4gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcy5tb3VzZXVw
RXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMubW91c2Vkb3duRXZlbnQpIHx8
IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMuY2xpY2tFdmVudCk7CiAjZWxzZQogICAgIGlm
ICghaXM8RWxlbWVudD4oKnRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGRv
d25jYXN0PEVsZW1lbnQ+KCp0aGlzKS5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb21wdXRlRWRpdGFiaWxpdHkoVXNlclNlbGVjdEFs
bElzQWx3YXlzTm9uRWRpdGFibGUsIFNob3VsZFVwZGF0ZVN0eWxlOjpVcGRhdGUpICE9IEVkaXRh
YmlsaXR5OjpSZWFkT25seQotICAgICAgICB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVz
KCkubW91c2V1cEV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vk
b3duRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB8
fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCk7CisgICAg
aWYgKGNvbXB1dGVFZGl0YWJpbGl0eShVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSwg
U2hvdWxkVXBkYXRlU3R5bGU6OlVwZGF0ZSkgIT0gRWRpdGFiaWxpdHk6OlJlYWRPbmx5KQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnRO
YW1lcygpOworICAgIHJldHVybiBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzLm1vdXNldXBF
dmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcy5tb3VzZWRvd25FdmVudCkgfHwg
aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcy5jbGlja0V2ZW50KSB8fCBoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzLkRPTUFjdGl2YXRlRXZlbnQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb2ludGVyRXZlbnQuaAppbmRleCA5ZDYwYjg1MTUyZjM3ODU2NjExODU3NDY2MzcwMWMyNWIw
MDFkZjNkLi43YWJjN2JhODMxMGJlNmM3ZGNhM2JmNzg3YTM5YmJiZjNhZTBlMTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1BvaW50ZXJFdmVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIEV2
ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgc3RhdGljIGJvb2wgdHlwZUlzRW50ZXJPckxlYXZlKGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUpIHsgcmV0dXJuIHR5cGUgPT0gZXZlbnROYW1lcygpLnBvaW50ZXJlbnRlckV2ZW50IHx8IHR5
cGUgPT0gZXZlbnROYW1lcygpLnBvaW50ZXJsZWF2ZUV2ZW50OyB9CisgICAgc3RhdGljIGJvb2wg
dHlwZUlzRW50ZXJPckxlYXZlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpOwogICAgIHN0YXRpYyBD
YW5CdWJibGUgdHlwZUNhbkJ1YmJsZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKSB7IHJldHVybiB0
eXBlSXNFbnRlck9yTGVhdmUodHlwZSkgPyBDYW5CdWJibGU6Ok5vIDogQ2FuQnViYmxlOjpZZXM7
IH0KICAgICBzdGF0aWMgSXNDYW5jZWxhYmxlIHR5cGVJc0NhbmNlbGFibGUoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSkgeyByZXR1cm4gdHlwZUlzRW50ZXJPckxlYXZlKHR5cGUpID8gSXNDYW5jZWxh
YmxlOjpObyA6IElzQ2FuY2VsYWJsZTo6WWVzOyB9CiAgICAgc3RhdGljIElzQ29tcG9zZWQgdHlw
ZUlzQ29tcG9zZWQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkgeyByZXR1cm4gdHlwZUlzRW50ZXJP
ckxlYXZlKHR5cGUpID8gSXNDb21wb3NlZDo6Tm8gOiBJc0NvbXBvc2VkOjpZZXM7IH0KQEAgLTEz
Nyw2ICsxMzcsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNQcmltYXJ5IHsgZmFsc2UgfTsK
IH07CiAKK2lubGluZSBib29sIFBvaW50ZXJFdmVudDo6dHlwZUlzRW50ZXJPckxlYXZlKGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUpCit7CisgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2
ZW50TmFtZXMoKTsKKyAgICByZXR1cm4gdHlwZSA9PSBldmVudE5hbWVzLnBvaW50ZXJlbnRlckV2
ZW50IHx8IHR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVybGVhdmVFdmVudDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VWRU5UKFBvaW50ZXJF
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggYzk5
ZTk3NjZiNDgyOTlmOTQ1MWY0MzhiNDUzMGRmZDU1OGE4NTBkNC4uZjkzOGVjYTg4MTlhMTllOTAz
MjkwMWQxZjBkYTg0MGQwMmZjYzRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAKQEAgLTE5OCwxMCArMTk4LDExIEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogICAgICAgICBpZiAoaGFzRWRpdGFi
bGVTdHlsZSgpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBlZGl0
YWJsZSBibG9jayB0aGF0IHRoZSBzZWxlY3Rpb24gd2FzIGluIChpZiBpdCB3YXMgaW4gb25lKSBq
dXN0IGJlZm9yZSB0aGUgbGluayB3YXMgY2xpY2tlZAogICAgICAgICAgICAgLy8gZm9yIHRoZSBM
aXZlV2hlbk5vdEZvY3VzZWQgZWRpdGFibGUgbGluayBiZWhhdmlvcgotICAgICAgICAgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgaXM8TW91c2VF
dmVudD4oZXZlbnQpICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24oKSAhPSBS
aWdodEJ1dHRvbiAmJiBkb2N1bWVudCgpLmZyYW1lKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIGV2
ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CisgICAgICAgICAgICBpZiAoZXZlbnQu
dHlwZSgpID09IGV2ZW50TmFtZXMubW91c2Vkb3duRXZlbnQgJiYgaXM8TW91c2VFdmVudD4oZXZl
bnQpICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24oKSAhPSBSaWdodEJ1dHRv
biAmJiBkb2N1bWVudCgpLmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBzZXRSb290RWRpdGFi
bGVFbGVtZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24oZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCkpOwogICAgICAgICAgICAg
ICAgIG1fd2FzU2hpZnRLZXlEb3duT25Nb3VzZURvd24gPSBkb3duY2FzdDxNb3VzZUV2ZW50Pihl
dmVudCkuc2hpZnRLZXkoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSgpID09
IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChl
dmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5tb3VzZW92ZXJFdmVudCkgewogICAgICAgICAgICAg
ICAgIC8vIFRoZXNlIGFyZSBjbGVhcmVkIG9uIG1vdXNlb3ZlciBhbmQgbm90IG1vdXNlb3V0IGJl
Y2F1c2UgdGhlaXIgdmFsdWVzIGFyZSBuZWVkZWQgZm9yIGRyYWcgZXZlbnRzLAogICAgICAgICAg
ICAgICAgIC8vIGJ1dCBkcmFnIGV2ZW50cyBoYXBwZW4gYWZ0ZXIgbW91c2Ugb3V0IGV2ZW50cy4K
ICAgICAgICAgICAgICAgICBjbGVhclJvb3RFZGl0YWJsZUVsZW1lbnRGb3JTZWxlY3Rpb25Pbk1v
dXNlRG93bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAppbmRl
eCBmMzdjNmZjYmYzOTAwNzYyMGFlMWQ5NjNiY2RmMzBmMDE4Yzk2ZGUxLi5jOGNiZDE4NTBmMWFj
MjhkMWIzNWFiYjE1MzgyYjAwNzVjZTE2YTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxC
dXR0b25FbGVtZW50LmNwcApAQCAtMTM2LDcgKzEzNiw4IEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogICAgIGlmIChJbWFnZUNvbnRy
b2xzTWFjOjpoYW5kbGVFdmVudCgqdGhpcywgZXZlbnQpKQogICAgICAgICByZXR1cm47CiAjZW5k
aWYKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50
ICYmICFpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkgeworICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBX
ZWJDb3JlOjpldmVudE5hbWVzKCk7CisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVz
LkRPTUFjdGl2YXRlRXZlbnQgJiYgIWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAg
IFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IHByb3RlY3RlZEZvcm0oZm9ybSgpKTsKIAogICAgICAg
ICBpZiAocHJvdGVjdGVkRm9ybSkgewpAQCAtMTYxLDEyICsxNjIsMTIgQEAgdm9pZCBIVE1MQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAKICAgICBpZiAo
aXM8S2V5Ym9hcmRFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgIEtleWJvYXJkRXZlbnQmIGtleWJv
YXJkRXZlbnQgPSBkb3duY2FzdDxLZXlib2FyZEV2ZW50PihldmVudCk7Ci0gICAgICAgIGlmIChr
ZXlib2FyZEV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYmIGtleWJv
YXJkRXZlbnQua2V5SWRlbnRpZmllcigpID09ICJVKzAwMjAiKSB7CisgICAgICAgIGlmIChrZXli
b2FyZEV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzLmtleWRvd25FdmVudCAmJiBrZXlib2FyZEV2
ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDIwIikgewogICAgICAgICAgICAgc2V0QWN0aXZl
KHRydWUsIHRydWUpOwogICAgICAgICAgICAgLy8gTm8gc2V0RGVmYXVsdEhhbmRsZWQoKSAtIElF
IGRpc3BhdGNoZXMgYSBrZXlwcmVzcyBpbiB0aGlzIGNhc2UuCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGtleWJvYXJkRXZlbnQudHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5rZXlwcmVzc0V2ZW50KSB7CisgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LnR5cGUoKSA9
PSBldmVudE5hbWVzLmtleXByZXNzRXZlbnQpIHsKICAgICAgICAgICAgIHN3aXRjaCAoa2V5Ym9h
cmRFdmVudC5jaGFyQ29kZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAnXHInOgogICAgICAg
ICAgICAgICAgICAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKCZrZXlib2FyZEV2ZW50KTsKQEAg
LTE3OCw3ICsxNzksNyBAQCB2b2lkIEhUTUxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChrZXlib2FyZEV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkua2V5dXBFdmVudCAmJiBrZXlib2FyZEV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAi
VSswMDIwIikgeworICAgICAgICBpZiAoa2V5Ym9hcmRFdmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cy5rZXl1cEV2ZW50ICYmIGtleWJvYXJkRXZlbnQua2V5SWRlbnRpZmllcigpID09ICJVKzAwMjAi
KSB7CiAgICAgICAgICAgICBpZiAoYWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hT
aW11bGF0ZWRDbGljaygma2V5Ym9hcmRFdmVudCk7CiAgICAgICAgICAgICBrZXlib2FyZEV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCBhMWFhMzhiYWVjZmM5MjkxOTU2ZmNjOWNiMzcwZjdhMGNjZDYzY2YwLi5lYWVj
NzU4YWYwY2E4ODFjMWEyOWQ5MmNjMzkxZjljOGYxYzhiN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTExNjMsOSArMTE2MywxMCBAQCB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAK
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6d2lsbERpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50LCBJ
bnB1dEVsZW1lbnRDbGlja1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAoZXZlbnQudHlwZSgpID09
IGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCAmJiBtX2lucHV0VHlwZS0+c2hvdWxkU3VibWl0
SW1wbGljaXRseShldmVudCkpCisgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50
TmFtZXMoKTsKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMudGV4dElucHV0RXZl
bnQgJiYgbV9pbnB1dFR5cGUtPnNob3VsZFN1Ym1pdEltcGxpY2l0bHkoZXZlbnQpKQogICAgICAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSAmJiBkb3duY2FzdDxN
b3VzZUV2ZW50PihldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgeworICAgIGlmIChldmVu
dC50eXBlKCkgPT0gZXZlbnROYW1lcy5jbGlja0V2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+KGV2ZW50
KSAmJiBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikg
ewogICAgICAgICBtX2lucHV0VHlwZS0+d2lsbERpc3BhdGNoQ2xpY2soc3RhdGUpOwogICAgICAg
ICBzdGF0ZS5zdGF0ZWZ1bCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcAppbmRleCA2ZTBhYjUxYzAzMTk5NmM1YTdmMzBlZTQxZGNjNWNmNWUy
ZWY5NGU3Li4zNGRhZDJiOGYyYTExYjZmZGE0MDFjZjUzNGM5NTkzY2RlZTk3MzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMTE0NCw3ICsxMTQ0LDgg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50JiBldmVudCkKICAgICBBU1NFUlQocmVuZGVyZXIoKSk7CiAgICAgQVNTRVJUKHJlbmRlcmVy
KCktPmlzTWVudUxpc3QoKSk7CiAKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS5rZXlkb3duRXZlbnQpIHsKKyAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnRO
YW1lcygpOworICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5rZXlkb3duRXZlbnQp
IHsKICAgICAgICAgaWYgKCFpczxLZXlib2FyZEV2ZW50PihldmVudCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTExOTYsNyArMTE5Nyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om1l
bnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAKICAgICAvLyBVc2Uga2V5
IHByZXNzIGV2ZW50IGhlcmUgc2luY2Ugc2VuZGluZyBzaW11bGF0ZWQgbW91c2UgZXZlbnRzCiAg
ICAgLy8gb24ga2V5IGRvd24gYmxvY2tzIHRoZSBwcm9wZXIgc2VuZGluZyBvZiB0aGUga2V5IHBy
ZXNzIGV2ZW50LgotICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNz
RXZlbnQpIHsKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMua2V5cHJlc3NFdmVu
dCkgewogICAgICAgICBpZiAoIWlzPEtleWJvYXJkRXZlbnQ+KGV2ZW50KSkKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMTI1OCw3ICsxMjU5LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIGtl
eWJvYXJkRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAKLSAgICBpZiAoZXZlbnQu
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBpczxNb3VzZUV2ZW50Pihl
dmVudCkgJiYgZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpLmJ1dHRvbigpID09IExlZnRCdXR0
b24pIHsKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMubW91c2Vkb3duRXZlbnQg
JiYgaXM8TW91c2VFdmVudD4oZXZlbnQpICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5i
dXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CiAgICAgICAgIGZvY3VzKCk7CiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpA
QCAtMTI4MCw3ICsxMjgxLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICB9CiAKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQg
JiYgIWZvY3VzZWQoKSkgeworICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5ibHVy
RXZlbnQgJiYgIWZvY3VzZWQoKSkgewogICAgICAgICBhdXRvJiBtZW51TGlzdCA9IGRvd25jYXN0
PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChtZW51TGlzdC5wb3B1
cElzVmlzaWJsZSgpKQogICAgICAgICAgICAgbWVudUxpc3QuaGlkZVBvcHVwKCk7CkBAIC0xMzQ1
LDcgKzEzNDYsOCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCYgZXZlbnQpCiB7CiAgICAgYXV0byYgbGlzdEl0ZW1zID0gdGhpcy0+bGlz
dEl0ZW1zKCk7CiAKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRv
d25FdmVudCAmJiBpczxNb3VzZUV2ZW50PihldmVudCkgJiYgZG93bmNhc3Q8TW91c2VFdmVudD4o
ZXZlbnQpLmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKKyAgICBhdXRvJiBldmVudE5hbWVzID0g
V2ViQ29yZTo6ZXZlbnROYW1lcygpOworICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cy5tb3VzZWRvd25FdmVudCAmJiBpczxNb3VzZUV2ZW50PihldmVudCkgJiYgZG93bmNhc3Q8TW91
c2VFdmVudD4oZXZlbnQpLmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKICAgICAgICAgZm9jdXMo
KTsKICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKQEAgLTEzNzIs
NyArMTM3NCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50JiBldmVudCkKIAogICAgICAgICAgICAgbW91c2VFdmVudC5zZXREZWZhdWx0
SGFuZGxlZCgpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZl
bnROYW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSAmJiAhZG93
bmNhc3Q8UmVuZGVyTGlzdEJveD4oKnJlbmRlcmVyKCkpLmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3Jv
bGxhYmxlQXJlYSgpKSB7CisgICAgfSBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cy5tb3VzZW1vdmVFdmVudCAmJiBpczxNb3VzZUV2ZW50PihldmVudCkgJiYgIWRvd25jYXN0PFJl
bmRlckxpc3RCb3g+KCpyZW5kZXJlcigpKS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFy
ZWEoKSkgewogICAgICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNhc3Q8TW91c2VF
dmVudD4oZXZlbnQpOwogICAgICAgICBpZiAobW91c2VFdmVudC5idXR0b24oKSAhPSBMZWZ0QnV0
dG9uIHx8ICFtb3VzZUV2ZW50LmJ1dHRvbkRvd24oKSkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEzOTcsNyArMTM5OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1v
dXNlRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAo
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgaXM8TW91c2VFdmVu
dD4oZXZlbnQpICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24oKSA9PSBMZWZ0
QnV0dG9uICYmIGRvY3VtZW50KCkuZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkuYXV0b3Njcm9sbFJl
bmRlcmVyKCkgIT0gcmVuZGVyZXIoKSkgeworICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSgpID09
IGV2ZW50TmFtZXMubW91c2V1cEV2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSAmJiBkb3du
Y2FzdDxNb3VzZUV2ZW50PihldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbiAmJiBkb2N1bWVu
dCgpLmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLmF1dG9zY3JvbGxSZW5kZXJlcigpICE9IHJlbmRl
cmVyKCkpIHsKICAgICAgICAgLy8gVGhpcyBjbGljayBvciBkcmFnIGV2ZW50IHdhcyBub3Qgb3Zl
ciBhbnkgb2YgdGhlIG9wdGlvbnMuCiAgICAgICAgIGlmIChtX2xhc3RPbkNoYW5nZVNlbGVjdGlv
bi5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDA1LDcgKzE0MDcsNyBAQCB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYg
ZXZlbnQpCiAgICAgICAgIC8vIGNsaWNrLiBGb3IgZHJhZyBzZWxlY3Rpb24sIG9uQ2hhbmdlIHdp
bGwgZmlyZSB3aGVuIHRoZSBhdXRvc2Nyb2xsCiAgICAgICAgIC8vIHRpbWVyIHN0b3BzLgogICAg
ICAgICBsaXN0Qm94T25DaGFuZ2UoKTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CisgICAgfSBlbHNlIGlmIChldmVudC50eXBlKCkg
PT0gZXZlbnROYW1lcy5rZXlkb3duRXZlbnQpIHsKICAgICAgICAgaWYgKCFpczxLZXlib2FyZEV2
ZW50PihldmVudCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE0OTYsNyArMTQ5OCw3IEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
JiBldmVudCkKIAogICAgICAgICAgICAga2V5Ym9hcmRFdmVudC5zZXREZWZhdWx0SGFuZGxlZCgp
OwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmtleXByZXNzRXZlbnQpIHsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzLmtleXByZXNzRXZlbnQpIHsKICAgICAgICAgaWYgKCFpczxLZXlib2FyZEV2ZW50PihldmVu
dCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEtleWJvYXJkRXZlbnQmIGtleWJvYXJk
RXZlbnQgPSBkb3duY2FzdDxLZXlib2FyZEV2ZW50PihldmVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggZDVlNDU2MmE0MGExNDk5YmEwOWViZWY2
MGNiOWI4NjQ5MDI0MDU0NC4uYTYwNmVjN2MxZTRlMmUwMTA4ZWM2YzEwZDIyOWE2YzEyNTM2M2Fi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAtMTE3
LDcgKzExNyw4IEBAIGJvb2wgSFRNTFN1bW1hcnlFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29u
c3QKIHZvaWQgSFRNTFN1bW1hcnlFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBl
dmVudCkKIHsKICAgICBpZiAoaXNBY3RpdmVTdW1tYXJ5KCkgJiYgcmVuZGVyZXIoKSkgewotICAg
ICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50ICYm
ICFpc0NsaWNrYWJsZUNvbnRyb2woZXZlbnQudGFyZ2V0KCkpKSB7CisgICAgICAgIGF1dG8mIGV2
ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CisgICAgICAgIGlmIChldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcy5ET01BY3RpdmF0ZUV2ZW50ICYmICFpc0NsaWNrYWJsZUNvbnRyb2wo
ZXZlbnQudGFyZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEhUTUxEZXRhaWxzRWxl
bWVudD4gZGV0YWlscyA9IGRldGFpbHNFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgZGV0YWls
cy0+dG9nZ2xlT3BlbigpOwogICAgICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsK
QEAgLTEyNiwxMiArMTI3LDEyIEBAIHZvaWQgSFRNTFN1bW1hcnlFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50JiBldmVudCkKIAogICAgICAgICBpZiAoaXM8S2V5Ym9hcmRFdmVudD4o
ZXZlbnQpKSB7CiAgICAgICAgICAgICBLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50ID0gZG93
bmNhc3Q8S2V5Ym9hcmRFdmVudD4oZXZlbnQpOwotICAgICAgICAgICAgaWYgKGtleWJvYXJkRXZl
bnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYga2V5Ym9hcmRFdmVudC5r
ZXlJZGVudGlmaWVyKCkgPT0gIlUrMDAyMCIpIHsKKyAgICAgICAgICAgIGlmIChrZXlib2FyZEV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzLmtleWRvd25FdmVudCAmJiBrZXlib2FyZEV2ZW50Lmtl
eUlkZW50aWZpZXIoKSA9PSAiVSswMDIwIikgewogICAgICAgICAgICAgICAgIHNldEFjdGl2ZSh0
cnVlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAvLyBObyBzZXREZWZhdWx0SGFuZGxlZCgpIC0g
SUUgZGlzcGF0Y2hlcyBhIGtleXByZXNzIGluIHRoaXMgY2FzZS4KICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoa2V5Ym9hcmRFdmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChrZXli
b2FyZEV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzLmtleXByZXNzRXZlbnQpIHsKICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGtleWJvYXJkRXZlbnQuY2hhckNvZGUoKSkgewogICAgICAgICAgICAg
ICAgIGNhc2UgJ1xyJzoKICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGlj
aygmZXZlbnQpOwpAQCAtMTQzLDcgKzE0NCw3IEBAIHZvaWQgSFRNTFN1bW1hcnlFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChr
ZXlib2FyZEV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5dXBFdmVudCAmJiBrZXlib2Fy
ZEV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDIwIikgeworICAgICAgICAgICAgaWYgKGtl
eWJvYXJkRXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMua2V5dXBFdmVudCAmJiBrZXlib2FyZEV2
ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDIwIikgewogICAgICAgICAgICAgICAgIGlmIChh
Y3RpdmUoKSkKICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljaygmZXZl
bnQpOwogICAgICAgICAgICAgICAgIGtleWJvYXJkRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZDc4YjhkNDUwMjJjYzU0YWE4Nzg3MDkzNTk3MzIwZjY4MDk4Y2FhMi4uOWJmZjY1
ZTA5MThiODc5ZmQ2MTBjNjBiOWE0YzE2N2JiYzI3MmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE1OCw3ICsxNTgs
OCBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaWRFZGl0SW5uZXJUZXh0VmFs
dWUoKQogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZl
bnQmIGV2ZW50KQogewotICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJF
dmVudCB8fCBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQpCisgICAgYXV0
byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKKyAgICBpZiAoZXZlbnQudHlw
ZSgpID09IGV2ZW50TmFtZXMuYmx1ckV2ZW50IHx8IGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVz
LmZvY3VzRXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIGlubmVyVGV4dCA9
IGlubmVyVGV4dEVsZW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcAppbmRleCA1OTE0ZjE0OWNkOGU0NjY3ZmYyNGNlN2UwZjE4NjI5NGRiN2RlMzI0Li4w
MWI3NGY3MjcyMmIwNjIyNWEyNjZhNDI0M2FhY2FiYTAxMTA2ZDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0yMzUsOCArMjM1LDkgQEAgdm9pZCBU
ZXh0RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBpc0ZvY3VzRXZlbnQgPSBldmVudC50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQ7Ci0gICAgYm9vbCBpc0JsdXJFdmVudCA9IGV2ZW50
LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2ZW50OworICAgIGF1dG8mIGV2ZW50TmFtZXMg
PSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CisgICAgYm9vbCBpc0ZvY3VzRXZlbnQgPSBldmVudC50
eXBlKCkgPT0gZXZlbnROYW1lcy5mb2N1c0V2ZW50OworICAgIGJvb2wgaXNCbHVyRXZlbnQgPSBl
dmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5ibHVyRXZlbnQ7CiAgICAgaWYgKGlzRm9jdXNFdmVu
dCB8fCBpc0JsdXJFdmVudCkKICAgICAgICAgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7
CiAgICAgaWYgKGV2ZW50LmlzTW91c2VFdmVudCgpIHx8IGlzRm9jdXNFdmVudCB8fCBpc0JsdXJF
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCmluZGV4IGMzMDc3MDdmM2E3MjRkNjIwODAzMzYwODJjYzhkZTU4NzVhNzBiOWYuLmNj
MzE4Nzg3NmNmYzM3ZWVlZjFiMDIxMzVmMjg5NTgwNjI5NGM4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTIwLDE1ICs1
MjAsMTYgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hF
dmVudCYgdG91Y2hFdmVudCkKICAgICB9CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUgPSB0b3VjaEV2ZW50LnR5cGUoKTsKLSAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMo
KS50b3VjaHN0YXJ0RXZlbnQpIHsKKyAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZl
bnROYW1lcygpOworICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy50b3VjaHN0YXJ0RXZl
bnQpIHsKICAgICAgICAgaGFuZGxlVG91Y2hTdGFydCh0b3VjaEV2ZW50KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2
ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkudG91Y2hjYW5jZWxFdmVudCkgeworICAg
IGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy50b3VjaGVuZEV2ZW50IHx8IGV2ZW50VHlwZSA9
PSBldmVudE5hbWVzLnRvdWNoY2FuY2VsRXZlbnQpIHsKICAgICAgICAgaGFuZGxlVG91Y2hFbmRB
bmRDYW5jZWwodG91Y2hFdmVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkudG91Y2htb3ZlRXZlbnQpIHsKKyAgICBpZiAoZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMudG91Y2htb3ZlRXZlbnQpIHsKICAgICAgICAgaGFuZGxlVG91Y2hN
b3ZlKHRvdWNoRXZlbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IGRkM2NjZGJiZDEzNDVmYWI5MjJmOWZmMzYwZTJhOGVhYjk2ZmJmYTQu
LjQzZGFkYTYyZmE1OGUwMDYyNDBjY2VhMzRkMzkyZGRmY2RjZmNhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTI5NywxMiArMjk3LDEzIEBAIHZvaWQgRE9NV2luZG93OjpkaXNw
YXRjaEFsbFBlbmRpbmdVbmxvYWRFdmVudHMoKQogICAgICAgICByZXR1cm4gUmVmPERPTVdpbmRv
dz4oKihrZXlWYWx1ZS5rZXkpKTsKICAgICB9KTsKIAorICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBX
ZWJDb3JlOjpldmVudE5hbWVzKCk7CiAgICAgZm9yIChhdXRvJiB3aW5kb3cgOiB3aW5kb3dzKSB7
CiAgICAgICAgIGlmICghc2V0LmNvbnRhaW5zKHdpbmRvdy5wdHIoKSkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICB3aW5kb3ctPmRpc3BhdGNoRXZlbnQoUGFnZVRyYW5zaXRpb25F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCBmYWxzZSksIHdpbmRvdy0+
ZG9jdW1lbnQoKSk7Ci0gICAgICAgIHdpbmRvdy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSwgd2luZG93LT5kb2N1bWVudCgpKTsKKyAgICAgICAgd2luZG93LT5k
aXNwYXRjaEV2ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzLnBhZ2Vo
aWRlRXZlbnQsIGZhbHNlKSwgd2luZG93LT5kb2N1bWVudCgpKTsKKyAgICAgICAgd2luZG93LT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcy51bmxvYWRFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSwgd2luZG93LT5kb2N1bWVu
dCgpKTsKIAogICAgICAgICB3aW5kb3ctPmVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CiAgICAg
fQpAQCAtMTk3Miw0MCArMTk3Myw0MSBAQCBib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
OworICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAgICAgaWYg
KGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LT5hZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChl
dmVudFR5cGUpOwotICAgICAgICBpZiAoZXZlbnROYW1lcygpLmlzV2hlZWxFdmVudFR5cGUoZXZl
bnRUeXBlKSkKKyAgICAgICAgaWYgKGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5
cGUpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKCpkb2N1
bWVudCk7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMoKS5pc1RvdWNoUmVsYXRlZEV2ZW50
VHlwZShldmVudFR5cGUsICpkb2N1bWVudCkpCisgICAgICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMu
aXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqZG9jdW1lbnQpKQogICAgICAgICAg
ICAgZG9jdW1lbnQtPmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKCpkb2N1bWVudCk7Ci0gICAgICAg
IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50KQorICAgICAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5zdG9yYWdlRXZlbnQpCiAgICAgICAg
ICAgICBkaWRBZGRTdG9yYWdlRXZlbnRMaXN0ZW5lcigqdGhpcyk7CiAgICAgfQogCi0gICAgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpCisgICAgaWYgKGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzLnVubG9hZEV2ZW50KQogICAgICAgICBhZGRVbmxvYWRFdmVudExpc3Rl
bmVyKHRoaXMpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3Jl
dW5sb2FkRXZlbnQgJiYgYWxsb3dzQmVmb3JlVW5sb2FkTGlzdGVuZXJzKHRoaXMpKQorICAgIGVs
c2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmJlZm9yZXVubG9hZEV2ZW50ICYmIGFsbG93
c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKICAgICAgICAgYWRkQmVmb3JlVW5sb2FkRXZl
bnRMaXN0ZW5lcih0aGlzKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGVsc2UgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQpCisgICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xsRXZlbnQpCiAgICAgICAgIGluY3JlbWVudFNjcm9s
bEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICNlbmRpZgogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQotICAgIGVsc2UgaWYgKGRvY3VtZW50ICYmIGV2ZW50TmFtZXMoKS5pc1RvdWNoUmVsYXRl
ZEV2ZW50VHlwZShldmVudFR5cGUsICpkb2N1bWVudCkpCisgICAgZWxzZSBpZiAoZG9jdW1lbnQg
JiYgZXZlbnROYW1lcyguaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqZG9jdW1l
bnQpKQogICAgICAgICArK21fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykKLSAgICBlbHNlIGlmIChldmVudE5h
bWVzKCkuaXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgZWxzZSBpZiAoZXZlbnRO
YW1lcy5pc0dlc3R1cmVFdmVudFR5cGUoZXZlbnRUeXBlKSkKICAgICAgICAgKyttX3RvdWNoQW5k
R2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudDsKICNlbmRpZgogI2lmIEVOQUJMRShHQU1FUEFEKQot
ICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMoKS5pc0dhbWVwYWRFdmVudFR5cGUoZXZlbnRUeXBlKSkK
KyAgICBlbHNlIGlmIChldmVudE5hbWVzLmlzR2FtZXBhZEV2ZW50VHlwZShldmVudFR5cGUpKQog
ICAgICAgICBpbmNyZW1lbnRHYW1lcGFkRXZlbnRMaXN0ZW5lckNvdW50KCk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCkKKyAgICBlbHNlIGlmIChldmVudFR5
cGUgPT0gZXZlbnROYW1lcy5kZXZpY2VvcmllbnRhdGlvbkV2ZW50KQogICAgICAgICBzdGFydExp
c3RlbmluZ0ZvckRldmljZU9yaWVudGF0aW9uSWZOZWNlc3NhcnkoKTsKLSAgICBlbHNlIGlmIChl
dmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50KQorICAgIGVsc2UgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmRldmljZW1vdGlvbkV2ZW50KQogICAgICAgICBzdGFy
dExpc3RlbmluZ0ZvckRldmljZU1vdGlvbklmTmVjZXNzYXJ5KCk7CiAjZW5kaWYKIApAQCAtMjIx
NSw0MSArMjIxNyw0MiBAQCBib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgYXV0
byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKICAgICBpZiAoZG9jdW1lbnQp
IHsKLSAgICAgICAgaWYgKGV2ZW50TmFtZXMoKS5pc1doZWVsRXZlbnRUeXBlKGV2ZW50VHlwZSkp
CisgICAgICAgIGlmIChldmVudE5hbWVzLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkKICAg
ICAgICAgICAgIGRvY3VtZW50LT5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqZG9jdW1lbnQp
OwotICAgICAgICBlbHNlIGlmIChldmVudE5hbWVzKCkuaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUo
ZXZlbnRUeXBlLCAqZG9jdW1lbnQpKQorICAgICAgICBlbHNlIGlmIChldmVudE5hbWVzLmlzVG91
Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKmRvY3VtZW50KSkKICAgICAgICAgICAgIGRv
Y3VtZW50LT5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigqZG9jdW1lbnQpOwogICAgIH0KIAot
ICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KQorICAgIGlmIChl
dmVudFR5cGUgPT0gZXZlbnROYW1lcy51bmxvYWRFdmVudCkKICAgICAgICAgcmVtb3ZlVW5sb2Fk
RXZlbnRMaXN0ZW5lcih0aGlzKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1l
cygpLmJlZm9yZXVubG9hZEV2ZW50ICYmIGFsbG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlz
KSkKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5iZWZvcmV1bmxvYWRFdmVu
dCAmJiBhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCiAgICAgICAgIHJlbW92ZUJl
Zm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50KQorICAg
IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnNjcm9sbEV2ZW50KQogICAgICAgICBk
ZWNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
SU9TX1RPVUNIX0VWRU5UUykKLSAgICBlbHNlIGlmIChkb2N1bWVudCAmJiBldmVudE5hbWVzKCku
aXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqZG9jdW1lbnQpKSB7CisgICAgZWxz
ZSBpZiAoZG9jdW1lbnQgJiYgZXZlbnROYW1lcy5pc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVu
dFR5cGUsICpkb2N1bWVudCkpIHsKICAgICAgICAgQVNTRVJUKG1fdG91Y2hBbmRHZXN0dXJlRXZl
bnRMaXN0ZW5lckNvdW50ID4gMCk7CiAgICAgICAgIC0tbV90b3VjaEFuZEdlc3R1cmVFdmVudExp
c3RlbmVyQ291bnQ7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5U
UykKLSAgICBlbHNlIGlmIChldmVudE5hbWVzKCkuaXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlw
ZSkpIHsKKyAgICBlbHNlIGlmIChldmVudE5hbWVzLmlzR2VzdHVyZUV2ZW50VHlwZShldmVudFR5
cGUpKSB7CiAgICAgICAgIEFTU0VSVChtX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3Vu
dCA+IDApOwogICAgICAgICAtLW1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50Owog
ICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShHQU1FUEFEKQotICAgIGVsc2UgaWYgKGV2ZW50TmFt
ZXMoKS5pc0dhbWVwYWRFdmVudFR5cGUoZXZlbnRUeXBlKSkKKyAgICBlbHNlIGlmIChldmVudE5h
bWVzLmlzR2FtZXBhZEV2ZW50VHlwZShldmVudFR5cGUpKQogICAgICAgICBkZWNyZW1lbnRHYW1l
cGFkRXZlbnRMaXN0ZW5lckNvdW50KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlb3Jp
ZW50YXRpb25FdmVudCkKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5kZXZp
Y2VvcmllbnRhdGlvbkV2ZW50KQogICAgICAgICBzdG9wTGlzdGVuaW5nRm9yRGV2aWNlT3JpZW50
YXRpb25JZk5lY2Vzc2FyeSgpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
KCkuZGV2aWNlbW90aW9uRXZlbnQpCisgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMuZGV2aWNlbW90aW9uRXZlbnQpCiAgICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JEZXZpY2VNb3Rp
b25JZk5lY2Vzc2FyeSgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCBkNmJhMmIzMzA3NmFiZjY4ZmRkODlmMzkyZTRlOWI4YTFmZmJmYzFiLi5mMmM0ZjZj
MzcxN2Y4MjQ5ZGI1MGQxY2JiZmU4NjY0ODQ0NmJjOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCkBAIC0yNjA1LDggKzI2MDUsOSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBk
YXRlTW91c2VFdmVudFRhcmdldE5vZGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBOb2Rl
KgogICAgICAgICAgICAgLy8gbW91c2VlbnRlciBhbmQgbW91c2VsZWF2ZSBldmVudHMgYXJlIG9u
bHkgZGlzcGF0Y2hlZCBpZiB0aGVyZSBpcyBhIGNhcHR1cmluZyBldmVudGhhbmRsZXIgb24gYW4g
YW5jZXN0b3IKICAgICAgICAgICAgIC8vIG9yIGEgbm9ybWFsIGV2ZW50aGFuZGxlciBvbiB0aGUg
ZWxlbWVudCBpdHNlbGYgKHRoZXkgZG9uJ3QgYnViYmxlKS4KICAgICAgICAgICAgIC8vIFRoaXMg
b3B0aW1pemF0aW9uIGlzIG5lY2Vzc2FyeSBzaW5jZSB0aGVzZSBldmVudHMgY2FuIGNhdXNlIE8o
bl4yKSBjYXB0dXJpbmcgZXZlbnQtaGFuZGxlciBjaGVja3MuCi0gICAgICAgICAgICBib29sIGhh
c0NhcHR1cmluZ01vdXNlRW50ZXJMaXN0ZW5lciA9IGhpZXJhcmNoeUhhc0NhcHR1cmluZ0V2ZW50
TGlzdGVuZXJzKG1fZWxlbWVudFVuZGVyTW91c2UuZ2V0KCksIGV2ZW50TmFtZXMoKS5wb2ludGVy
ZW50ZXJFdmVudCwgZXZlbnROYW1lcygpLm1vdXNlZW50ZXJFdmVudCk7Ci0gICAgICAgICAgICBi
b29sIGhhc0NhcHR1cmluZ01vdXNlTGVhdmVMaXN0ZW5lciA9IGhpZXJhcmNoeUhhc0NhcHR1cmlu
Z0V2ZW50TGlzdGVuZXJzKG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlLmdldCgpLCBldmVudE5hbWVz
KCkucG9pbnRlcmxlYXZlRXZlbnQsIGV2ZW50TmFtZXMoKS5tb3VzZWxlYXZlRXZlbnQpOworICAg
ICAgICAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKKyAgICAg
ICAgICAgIGJvb2wgaGFzQ2FwdHVyaW5nTW91c2VFbnRlckxpc3RlbmVyID0gaGllcmFyY2h5SGFz
Q2FwdHVyaW5nRXZlbnRMaXN0ZW5lcnMobV9lbGVtZW50VW5kZXJNb3VzZS5nZXQoKSwgZXZlbnRO
YW1lcy5wb2ludGVyZW50ZXJFdmVudCwgZXZlbnROYW1lcy5tb3VzZWVudGVyRXZlbnQpOworICAg
ICAgICAgICAgYm9vbCBoYXNDYXB0dXJpbmdNb3VzZUxlYXZlTGlzdGVuZXIgPSBoaWVyYXJjaHlI
YXNDYXB0dXJpbmdFdmVudExpc3RlbmVycyhtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS5nZXQoKSwg
ZXZlbnROYW1lcy5wb2ludGVybGVhdmVFdmVudCwgZXZlbnROYW1lcy5tb3VzZWxlYXZlRXZlbnQp
OwogCiAgICAgICAgICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+LCAzMj4gbGVmdEVsZW1lbnRzQ2hh
aW47CiAgICAgICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBtX2xhc3RFbGVtZW50VW5k
ZXJNb3VzZS5nZXQoKTsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnRJ
bkNvbXBvc2VkVHJlZSgpKQpAQCAtMjYyNywxOSArMjYyOCwxOSBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBOb2RlKgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byBsYXN0RWxlbWVu
dFVuZGVyTW91c2UgPSBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZSkKLSAgICAgICAgICAgICAgICBs
YXN0RWxlbWVudFVuZGVyTW91c2UtPmRpc3BhdGNoTW91c2VFdmVudChwbGF0Zm9ybU1vdXNlRXZl
bnQsIGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50LCAwLCBtX2VsZW1lbnRVbmRlck1vdXNlLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBsYXN0RWxlbWVudFVuZGVyTW91c2UtPmRpc3BhdGNoTW91
c2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsIGV2ZW50TmFtZXMubW91c2VvdXRFdmVudCwgMCwg
bV9lbGVtZW50VW5kZXJNb3VzZS5nZXQoKSk7CiAKICAgICAgICAgICAgIGZvciAoYXV0byYgY2hh
aW4gOiBsZWZ0RWxlbWVudHNDaGFpbikgewotICAgICAgICAgICAgICAgIGlmIChoYXNDYXB0dXJp
bmdNb3VzZUxlYXZlTGlzdGVuZXIgfHwgY2hhaW4tPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS5wb2ludGVybGVhdmVFdmVudCkgfHwgY2hhaW4tPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50
TmFtZXMoKS5tb3VzZWxlYXZlRXZlbnQpKQotICAgICAgICAgICAgICAgICAgICBjaGFpbi0+ZGlz
cGF0Y2hNb3VzZUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCwgZXZlbnROYW1lcygpLm1vdXNlbGVh
dmVFdmVudCwgMCwgbV9lbGVtZW50VW5kZXJNb3VzZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
aWYgKGhhc0NhcHR1cmluZ01vdXNlTGVhdmVMaXN0ZW5lciB8fCBjaGFpbi0+aGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcy5wb2ludGVybGVhdmVFdmVudCkgfHwgY2hhaW4tPmhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMubW91c2VsZWF2ZUV2ZW50KSkKKyAgICAgICAgICAgICAgICAgICAg
Y2hhaW4tPmRpc3BhdGNoTW91c2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsIGV2ZW50TmFtZXMu
bW91c2VsZWF2ZUV2ZW50LCAwLCBtX2VsZW1lbnRVbmRlck1vdXNlLmdldCgpKTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8gZWxlbWVudFVuZGVyTW91c2UgPSBtX2VsZW1l
bnRVbmRlck1vdXNlKQotICAgICAgICAgICAgICAgIGVsZW1lbnRVbmRlck1vdXNlLT5kaXNwYXRj
aE1vdXNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50LCBldmVudE5hbWVzKCkubW91c2VvdmVyRXZl
bnQsIDAsIG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBl
bGVtZW50VW5kZXJNb3VzZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCwg
ZXZlbnROYW1lcy5tb3VzZW92ZXJFdmVudCwgMCwgbV9sYXN0RWxlbWVudFVuZGVyTW91c2UuZ2V0
KCkpOwogCiAgICAgICAgICAgICBmb3IgKGF1dG8mIGNoYWluIDogbWFrZVJldmVyc2VkUmFuZ2Uo
ZW50ZXJlZEVsZW1lbnRzQ2hhaW4pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGhhc0NhcHR1cmlu
Z01vdXNlRW50ZXJMaXN0ZW5lciB8fCBjaGFpbi0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1l
cygpLnBvaW50ZXJlbnRlckV2ZW50KSB8fCBjaGFpbi0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcygpLm1vdXNlZW50ZXJFdmVudCkpCi0gICAgICAgICAgICAgICAgICAgIGNoYWluLT5kaXNw
YXRjaE1vdXNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50LCBldmVudE5hbWVzKCkubW91c2VlbnRl
ckV2ZW50LCAwLCBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgaWYgKGhhc0NhcHR1cmluZ01vdXNlRW50ZXJMaXN0ZW5lciB8fCBjaGFpbi0+aGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcy5wb2ludGVyZW50ZXJFdmVudCkgfHwgY2hhaW4tPmhhc0V2ZW50
TGlzdGVuZXJzKGV2ZW50TmFtZXMubW91c2VlbnRlckV2ZW50KSkKKyAgICAgICAgICAgICAgICAg
ICAgY2hhaW4tPmRpc3BhdGNoTW91c2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsIGV2ZW50TmFt
ZXMubW91c2VlbnRlckV2ZW50LCAwLCBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS5nZXQoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDI0MCw3ICs0MjQxLDggQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXZlbnQq
IHVuZGVybHlpbmdFdmUKICAgICAKIGJvb2wgRXZlbnRIYW5kbGVyOjppc0tleWJvYXJkT3B0aW9u
VGFiKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogewotICAgIHJldHVybiAoZXZlbnQudHlwZSgpID09
IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS5rZXlwcmVzc0V2ZW50KQorICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5h
bWVzKCk7CisgICAgcmV0dXJuIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5rZXlkb3duRXZl
bnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMua2V5cHJlc3NFdmVudCkKICAgICAgICAg
JiYgZXZlbnQuYWx0S2V5KCkKICAgICAgICAgJiYgZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJV
KzAwMDkiOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>