<?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>231004</bug_id>
          
          <creation_ts>2021-09-29 21:13:03 -0700</creation_ts>
          <short_desc>Replace the confusing isPinnedForScrollDelta() logic with code that uses BoxSide</short_desc>
          <delta_ts>2021-09-30 14:00:23 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1798744</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-29 21:13:03 -0700</bug_when>
    <thetext>Replace the conusing isPinnedForScrollDelta() logic with code that uses BoxSide</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798747</commentid>
    <comment_count>1</comment_count>
      <attachid>439699</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-29 21:15:39 -0700</bug_when>
    <thetext>Created attachment 439699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798951</commentid>
    <comment_count>2</comment_count>
      <attachid>439760</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-30 10:58:51 -0700</bug_when>
    <thetext>Created attachment 439760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798952</commentid>
    <comment_count>3</comment_count>
      <attachid>439760</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-09-30 11:01:31 -0700</bug_when>
    <thetext>Comment on attachment 439760
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Replace the conusing isPinnedForScrollDelta() logic with code that uses BoxSide

&quot;conusing&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799018</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-30 13:59:07 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/283335/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799020</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-30 14:00:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/83736453&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439699</attachid>
            <date>2021-09-29 21:15:39 -0700</date>
            <delta_ts>2021-09-30 10:58:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231004-20210929211538.patch</filename>
            <type>text/plain</type>
            <size>41184</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM4NWNkZmFmYjkzNzM5
ZThkZTJhN2VkMTMzY2U2ZDMzNmM3YTIyYi4uZTQ0ZDMwNDc1NWM2ZWQ3ZmFmNTViZmRhNzIyMjNk
M2VjYmE2NzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA5LTI5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgdGhl
IGNvbnVzaW5nIGlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoKSBsb2dpYyB3aXRoIGNvZGUgdGhhdCB1
c2VzIEJveFNpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoKS9pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlz
KCkgYXJlIGFtYmlndW91cyBiZWNhdXNlIGl0J3MKKyAgICAgICAgZWFzeSB0byBpbnRlcnByZXQg
dGhlbSBhcyBsb29raW5nIGF0IHRoZSBtYWduaXR1ZGUgb2YgdGhlIGRlbHRhIHRvIGRldGVybWlu
ZSB3aGV0aGVyCisgICAgICAgIHRoZSBkZWx0YSB3aWxsIGNhdXNlIHN0cmV0Y2hpbmcgb24gYW4g
ZWRnZS4gSG93ZXZlciwgdGhleSBkb24ndCBkbyB0aGlzOyB0aGV5IHNpbXBseQorICAgICAgICB1
c2UgdGhlIGRlbHRhIHRvIGNob29zZSB3aGljaCBlZGdlIHRvIGxvb2sgYXQsIGFuZCB0aGUgImlz
IHBpbm5lZCIgcmVmZXJzIHRvIHdoZXRoZXIKKyAgICAgICAgdGhlIHNjcm9sbGVyIGlzIGFscmVh
ZHkgc2Nyb2xsZWQgdG8gdGhhdCBlZGdlIG9yIHN0cmV0Y2hpbmcgYXQgdGhhdCBlZGdlLgorCisg
ICAgICAgIFRvIHJlZHVjZSBhbWJpZ3VpdHksIHJld3JpdGUgdGhlIGNvZGUgaW4gdGVybXMgb2Yg
Qm94U2lkZXMsIHNlcGFyYXRpbmcgdGhlIGNvZGUKKyAgICAgICAgdGhhdCBkZXRlcm1pbmVzIHdo
aWNoIEJveFNpZGUgdG8gbG9vayBhdCBmb3IgYSBnaXZlbiBldmVudCBkZWx0YSBmcm9tIHRoZSBj
b2RlIHRoYXQKKyAgICAgICAgY29tcHV0ZWQgcGlubmVkIHN0YXRlLgorCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3Jv
bGxhYmxlQXJlYUNhbkhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6Om1haW5GcmFt
ZUNhblJ1YmJlckJhbmRPblNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6
bWFpbkZyYW1lQ2FuUnViYmVyQmFuZEluRGlyZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2FsU3Ry
ZXRjaGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTWFjOjppc1Bpbm5lZEF0U2lkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRSdWJiZXJCYW5k
T25TaWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYzo6aXNQaW5uZWRGb3JTY3JvbGxEZWx0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRSdWJi
ZXJCYW5kSW5EaXJlY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjppc1Bp
bm5lZEF0U2lkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aXNQ
aW5uZWRGb3JTY3JvbGxEZWx0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6aXNQaW5uZWRBdFNpZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmlzUGlubmVkRm9yU2Nyb2xsRGVs
dGFPbkF4aXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFy
ZWE6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OnJlbGV2YW50U2lkZUZvclNjcm9sbERlbHRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9T
Y3JvbGxBbmltYXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9ySU9T
OjpkZXRlcm1pbmVTY3JvbGxhYmxlQXJlYUZvclRvdWNoU2VxdWVuY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRSdWJiZXJCYW5kT25TaWRlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRSdWJiZXJC
YW5kSW5EaXJlY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRvbWluYW50
QXhpc0Zhdm9yaW5nVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsdGFBbGlnbmVkVG9E
b21pbmFudEF4aXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvRG9taW5hbnRBeGlzRmF2
b3JpbmdWZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjphZmZlY3RlZFNpZGVPbkRvbWluYW50
QXhpcyk6CisgICAgICAgIChXZWJDb3JlOjppc0hvcml6b250YWxTaWRlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzVmVydGljYWxTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2hvdWxkUnVi
YmVyQmFuZE9uU2lkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9Qcm9taW5l
bnRBeGlzRmF2b3JpbmdWZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzaG91bGRSdWJiZXJC
YW5kSW5Ib3Jpem9udGFsRGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rp
b24gY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTA5LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1pbm9yIGNsZWFudXAgb2Ygc29tZSBydWJiZXIt
YmFuZGluZyBjb2RlIGluIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMGI4ZTgzNWJlYzg4YTdjODhiYmRmNzRkMTg3NDViNzlh
MTllYmE5Mi4uMDBlYjcxZWIxNzNmZDMxNzFjYjJhNWM3MDM0ODkyNDI4MjllMTJkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTgsNiArOTgsNyBAQAogI2luY2x1ZGUg
IlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGUuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTMxMDMsMTAgKzMxMDQs
MTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFuZGxlRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEUKICAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hl
ZWxFdmVudC5kZWx0YSgpOwogI2VuZGlmCiAKLSAgICBpZiAoYmlhc2VkRGVsdGEuaGVpZ2h0KCkg
JiYgIXNjcm9sbGFibGVBcmVhLmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoLWJpYXNlZERl
bHRhLmhlaWdodCgpLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSkKKyAgICBhdXRvIHZlcnRp
Y2FsU2lkZSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWxldmFudFNpZGVGb3JTY3Jv
bGxEZWx0YSgtYmlhc2VkRGVsdGEsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpOworICAgIGlm
ICh2ZXJ0aWNhbFNpZGUgJiYgIXNjcm9sbGFibGVBcmVhLmlzUGlubmVkQXRTaWRlKCp2ZXJ0aWNh
bFNpZGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChiaWFzZWREZWx0YS53aWR0
aCgpICYmICFzY3JvbGxhYmxlQXJlYS5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKC1iaWFz
ZWREZWx0YS53aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKQorICAgIGF1dG8g
aG9yaXpvbnRhbFNpZGUgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmVsZXZhbnRTaWRl
Rm9yU2Nyb2xsRGVsdGEoLWJpYXNlZERlbHRhLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwp
OworICAgIGlmIChob3Jpem9udGFsU2lkZSAmJiAhc2Nyb2xsYWJsZUFyZWEuaXNQaW5uZWRBdFNp
ZGUoKmhvcml6b250YWxTaWRlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
Y3BwCmluZGV4IDBlYzI3YTJlMDFiOWY2NzExZDA5YjIyY2RmYzY0ODE1ZDg1NTRmODguLjU5NGE4
YWEzYzQ0OWExYmE1ZTNjOTY4MjQ1YzI3MzEwMjg3ZjIyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC01OTUsMTggKzU5NSwxMCBA
QCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZUNhblJ1YmJlckJhbmQoUmVjdEVkZ2Vz
PGJvb2w+IGNhblJ1YmJlckJhbmQpCiAgICAgbV9zd2lwZVN0YXRlLmNhblJ1YmJlckJhbmQgPSBj
YW5SdWJiZXJCYW5kOwogfQogCi1ib29sIFNjcm9sbGluZ1RyZWU6Om1haW5GcmFtZUNhblJ1YmJl
ckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQorYm9vbCBTY3JvbGxp
bmdUcmVlOjptYWluRnJhbWVDYW5SdWJiZXJCYW5kT25TaWRlKEJveFNpZGUgc2lkZSkKIHsKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zd2lwZVN0YXRlTG9jayB9OwotCi0gICAgc3dpdGNoIChkaXJl
Y3Rpb24pIHsKLSAgICBjYXNlIFNjcm9sbFVwOiByZXR1cm4gbV9zd2lwZVN0YXRlLmNhblJ1YmJl
ckJhbmQudG9wKCk7Ci0gICAgY2FzZSBTY3JvbGxEb3duOiByZXR1cm4gbV9zd2lwZVN0YXRlLmNh
blJ1YmJlckJhbmQuYm90dG9tKCk7Ci0gICAgY2FzZSBTY3JvbGxMZWZ0OiByZXR1cm4gbV9zd2lw
ZVN0YXRlLmNhblJ1YmJlckJhbmQubGVmdCgpOwotICAgIGNhc2UgU2Nyb2xsUmlnaHQ6IHJldHVy
biBtX3N3aXBlU3RhdGUuY2FuUnViYmVyQmFuZC5yaWdodCgpOwotICAgIH07Ci0KLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fc3dpcGVTdGF0ZS5jYW5SdWJiZXJCYW5kLmF0KHNpZGUp
OwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWU6OmFkZFBlbmRpbmdTY3JvbGxVcGRhdGUoU2Nyb2xs
VXBkYXRlJiYgdXBkYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5oCmluZGV4IGFkMjZkZTBjZWFlNjY4ODkxZTViYWM0YjY2MjE5MzJlMTFmY2M0ZjUu
LjNjYTM0NzM5NGJlM2UzYmRjZTNjNGNkOWY5ZmFkM2JmNzMwNmVlNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTE3Myw3ICsxNzMsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4gV2lsbCB1
cGRhdGUgd2hhdCBlZGdlcyBhbGxvdyBydWJiZXItYmFuZGluZy4KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldE1haW5GcmFtZUNhblJ1YmJlckJhbmQoUmVjdEVkZ2VzPGJvb2w+KTsKLSAgICBi
b29sIG1haW5GcmFtZUNhblJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pOwor
ICAgIGJvb2wgbWFpbkZyYW1lQ2FuUnViYmVyQmFuZE9uU2lkZShCb3hTaWRlKTsKIAogICAgIGJv
b2wgaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYW5k
bGluZ1Byb2dyYW1tYXRpY1Njcm9sbDsgfQogICAgIHZvaWQgc2V0SXNIYW5kbGluZ1Byb2dyYW1t
YXRpY1Njcm9sbChib29sIGlzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwpIHsgbV9pc0hhbmRs
aW5nUHJvZ3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggMWI0
ZmVmY2U1YTkwYmNlOTM4YmYyYWJmMTJkODNlYTdjNWJkNzMyYS4uZmY5ZGM2ODM1MTg4MTI4ZDBk
NzY4YTQzODMzNjU0NTQ1YjBlMTE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5oCkBAIC02OCw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0
b3I6OkRlZmVyUmVhc29uKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBib29sIGlz
UGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoZmxvYXQgc2Nyb2xsRGVsdGEsIFNjcm9sbEV2ZW50
QXhpcywgZmxvYXQgc2Nyb2xsTGltaXQgPSAwKSBjb25zdDsKLQogICAgIC8vIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyQ2xpZW50LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlclRpbWVyPiBjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFs
OwogICAgIHZvaWQgc3RhcnRBbmltYXRpb25DYWxsYmFjayhTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlciYpIGZpbmFsOwpAQCAtNzgsMTQgKzc2LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhbGxv
d3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIHN0cmV0Y2hBbW91bnQoKSBjb25z
dCBmaW5hbDsKLSAgICBib29sIGlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoY29uc3QgRmxvYXRTaXpl
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc1Bpbm5lZEF0U2lkZShCb3hTaWRlKSBjb25zdCBm
aW5hbDsKKwogICAgIFJlY3RFZGdlczxib29sPiBlZGdlUGlubmVkU3RhdGUoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBz
ZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1cyBzdGF0dXMpIGZpbmFs
IHsgbV9zY3JvbGxCZWhhdmlvclN0YXR1cyA9IHN0YXR1czsgfQogICAgIFNjcm9sbEJlaGF2aW9y
U3RhdHVzIHNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zY3Jv
bGxCZWhhdmlvclN0YXR1czsgfQogCi0gICAgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rp
b24oU2Nyb2xsRGlyZWN0aW9uKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZFJ1YmJlckJh
bmRPblNpZGUoQm94U2lkZSkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxC
eShjb25zdCBGbG9hdFNpemUmKSBmaW5hbDsKICAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5V2l0
aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRTaXplJikgZmluYWw7CiAgICAg
dm9pZCBkaWRTdG9wUnViYmVyYmFuZFNuYXBBbmltYXRpb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggYjhmZmM3MzQzODI4
NzAyNjA2OThmOGI3OTZmNjU0MDI0ODlmNDkxMy4uNDkyMTZmYzAyYTllMTlhMzM4NDNiZDhmYmY1
ZTFiZGNjYjk1NDg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWMubW0KQEAgLTE3Miw0MyArMTcyLDYgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTWFjOjppc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKTsKIH0KIAot
Ym9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjppc1Bpbm5lZEZvclNj
cm9sbERlbHRhT25BeGlzKGZsb2F0IHNjcm9sbERlbHRhLCBTY3JvbGxFdmVudEF4aXMgYXhpcywg
ZmxvYXQgc2Nyb2xsTGltaXQpIGNvbnN0Ci17Ci0gICAgYXV0byBzY3JvbGxQb3NpdGlvbiA9IGN1
cnJlbnRTY3JvbGxQb3NpdGlvbigpOwotICAgIHN3aXRjaCAoYXhpcykgewotICAgIGNhc2UgU2Ny
b2xsRXZlbnRBeGlzOjpWZXJ0aWNhbDoKLSAgICAgICAgaWYgKCFhbGxvd3NWZXJ0aWNhbFNjcm9s
bGluZygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKHNjcm9sbERl
bHRhIDwgMCkgewotICAgICAgICAgICAgYXV0byB0b3BPZmZzZXQgPSBzY3JvbGxQb3NpdGlvbi55
KCkgLSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCk7Ci0gICAgICAgICAgICByZXR1cm4gdG9w
T2Zmc2V0IDw9IHNjcm9sbExpbWl0OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNjcm9sbERl
bHRhID4gMCkgewotICAgICAgICAgICAgYXV0byBib3R0b21PZmZzZXQgPSBtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS55KCkgLSBzY3JvbGxQb3NpdGlvbi55KCk7Ci0gICAgICAgICAgICByZXR1cm4g
Ym90dG9tT2Zmc2V0IDw9IHNjcm9sbExpbWl0OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsOgotICAgICAgICBpZiAoIWFsbG93
c0hvcml6b250YWxTY3JvbGxpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
ICAgIGlmIChzY3JvbGxEZWx0YSA8IDApIHsKLSAgICAgICAgICAgIGF1dG8gbGVmdE9mZnNldCA9
IHNjcm9sbFBvc2l0aW9uLngoKSAtIG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLngoKTsKLSAgICAg
ICAgICAgIHJldHVybiBsZWZ0T2Zmc2V0IDw9IHNjcm9sbExpbWl0OwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKHNjcm9sbERlbHRhID4gMCkgewotICAgICAgICAgICAgYXV0byByaWdodE9mZnNl
dCA9IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKSAtIHNjcm9sbFBvc2l0aW9uLngoKTsKLSAg
ICAgICAgICAgIHJldHVybiByaWdodE9mZnNldCA8PSBzY3JvbGxMaW1pdDsKLSAgICAgICAgfQot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjOjpjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlclRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIFtmdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pLCBwcm90ZWN0ZWROb2RlID0gUmVmIHsgc2Nyb2xsaW5nTm9kZSgpIH1dIHsKQEAgLTI0
NCwxNSArMjA3LDE2IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAgICAgc3dpdGNoIChob3Jp
em9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0
b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyA9IGFsbG93
c0hvcml6b250YWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKTsKLSAg
ICAgICAgYm9vbCBldmVudFByZXZlbnRzU3RyZXRjaGluZyA9IHdoZWVsRXZlbnQuaXNHZXN0dXJl
U3RhcnQoKSAmJiBpc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKC13aGVlbEV2ZW50LmRlbHRh
WCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOworICAgICAgICBhdXRvIHJlbGV2YW50
U2lkZSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWxldmFudFNpZGVGb3JTY3JvbGxE
ZWx0YSgtd2hlZWxFdmVudC5kZWx0YSgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOwor
ICAgICAgICBib29sIGV2ZW50UHJldmVudHNTdHJldGNoaW5nID0gd2hlZWxFdmVudC5pc0dlc3R1
cmVTdGFydCgpICYmIHJlbGV2YW50U2lkZSAmJiBpc1Bpbm5lZEF0U2lkZSgqcmVsZXZhbnRTaWRl
KTsKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgJiYgIWV2ZW50UHJl
dmVudHNTdHJldGNoaW5nOwogICAgIH0KICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlOb25lOgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QWxsb3dlZDog
ewotICAgICAgICBhdXRvIHNjcm9sbERpcmVjdGlvbiA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQod2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsKTsKLSAgICAgICAgaWYgKHNjcm9sbERpcmVjdGlvbikKLSAgICAgICAgICAgIHJldHVy
biBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oc2Nyb2xsRGlyZWN0aW9uLnZhbHVlKCkpOwor
ICAgICAgICBhdXRvIHJlbGV2YW50U2lkZSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpy
ZWxldmFudFNpZGVGb3JTY3JvbGxEZWx0YSgtd2hlZWxFdmVudC5kZWx0YSgpLCBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwpOworICAgICAgICBpZiAocmVsZXZhbnRTaWRlKQorICAgICAgICAg
ICAgcmV0dXJuIHNob3VsZFJ1YmJlckJhbmRPblNpZGUocmVsZXZhbnRTaWRlLnZhbHVlKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgfQpAQCAtMjY2LDE1ICsyMzAsMTYgQEAg
Ym9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NWZXJ0aWNh
bFN0cmV0Y2hpbmcoY29uc3QgUGxhdGYKICAgICBzd2l0Y2ggKHZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAg
IGJvb2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5n
KCkgfHwgIWFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKLSAgICAgICAgYm9vbCBldmVudFBy
ZXZlbnRzU3RyZXRjaGluZyA9IHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSAmJiBpc1Bpbm5l
ZEZvclNjcm9sbERlbHRhT25BeGlzKC13aGVlbEV2ZW50LmRlbHRhWSgpLCBTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsKTsKKyAgICAgICAgYXV0byByZWxldmFudFNpZGUgPSBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6cmVsZXZhbnRTaWRlRm9yU2Nyb2xsRGVsdGEoLXdoZWVsRXZlbnQuZGVs
dGEoKSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCk7CisgICAgICAgIGJvb2wgZXZlbnRQcmV2
ZW50c1N0cmV0Y2hpbmcgPSB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkgJiYgcmVsZXZhbnRT
aWRlICYmIGlzUGlubmVkQXRTaWRlKCpyZWxldmFudFNpZGUpOwogICAgICAgICByZXR1cm4gc2Ny
b2xsYmFyc0FsbG93U3RyZXRjaGluZyAmJiAhZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmc7CiAgICAg
fQogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eU5vbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkOiB7Ci0gICAgICAgIGF1dG8gc2Nyb2xs
RGlyZWN0aW9uID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVu
dCh3aGVlbEV2ZW50LCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKTsKLSAgICAgICAgaWYgKHNj
cm9sbERpcmVjdGlvbikKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRSdWJiZXJCYW5kSW5EaXJl
Y3Rpb24oc2Nyb2xsRGlyZWN0aW9uLnZhbHVlKCkpOworICAgICAgICBhdXRvIHJlbGV2YW50U2lk
ZSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWxldmFudFNpZGVGb3JTY3JvbGxEZWx0
YSgtd2hlZWxFdmVudC5kZWx0YSgpLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKTsKKyAgICAg
ICAgaWYgKHJlbGV2YW50U2lkZSkKKyAgICAgICAgICAgIHJldHVybiBzaG91bGRSdWJiZXJCYW5k
T25TaWRlKHJlbGV2YW50U2lkZS52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIH0KQEAgLTMwMSwxNyArMjY2LDI2IEBAIEludFNpemUgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYzo6c3RyZXRjaEFtb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0
cmV0Y2g7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
aXNQaW5uZWRGb3JTY3JvbGxEZWx0YShjb25zdCBGbG9hdFNpemUmIGRlbHRhKSBjb25zdAorYm9v
bCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjppc1Bpbm5lZEF0U2lkZShC
b3hTaWRlIHNpZGUpIGNvbnN0CiB7Ci0gICAgLy8gVGhpcyAib2Zmc2V0IDwgMSIgbG9naWMgd2Fz
IGFkZGVkIGluIHIxMDc0ODguIFVuY2xlYXIgaWYgaXQncyBuZWVkZWQuCi0gICAgY29uc3RleHBy
IGZsb2F0IHNjcm9sbE9mZnNldExpbWl0ID0gMS4wZiAtIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjplcHNpbG9uKCk7Ci0KLSAgICBpZiAoZmFic2YoZGVsdGEuaGVpZ2h0KCkpID49IGZhYnNm
KGRlbHRhLndpZHRoKCkpKQotICAgICAgICByZXR1cm4gaXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9u
QXhpcyhkZWx0YS5oZWlnaHQoKSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgc2Nyb2xsT2Zm
c2V0TGltaXQpOwotCi0gICAgaWYgKGRlbHRhLndpZHRoKCkpCi0gICAgICAgIHJldHVybiBpc1Bp
bm5lZEZvclNjcm9sbERlbHRhT25BeGlzKGRlbHRhLndpZHRoKCksIFNjcm9sbEV2ZW50QXhpczo6
SG9yaXpvbnRhbCwgc2Nyb2xsT2Zmc2V0TGltaXQpOwotCisgICAgc3dpdGNoIChzaWRlKSB7Cisg
ICAgY2FzZSBCb3hTaWRlOjpUb3A6CisgICAgICAgIGlmICghYWxsb3dzVmVydGljYWxTY3JvbGxp
bmcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gY3VycmVudFNj
cm9sbFBvc2l0aW9uKCkueSgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKTsKKyAgICBj
YXNlIEJveFNpZGU6OkJvdHRvbToKKyAgICAgICAgaWYgKCFhbGxvd3NWZXJ0aWNhbFNjcm9sbGlu
ZygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBjdXJyZW50U2Ny
b2xsUG9zaXRpb24oKS55KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpOworICAgIGNh
c2UgQm94U2lkZTo6TGVmdDoKKyAgICAgICAgaWYgKCFhbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5n
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRTY3Jv
bGxQb3NpdGlvbigpLngoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7CisgICAgY2Fz
ZSBCb3hTaWRlOjpSaWdodDoKKyAgICAgICAgaWYgKCFhbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5n
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRTY3Jv
bGxQb3NpdGlvbigpLngoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7CisgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMzMwLDE3ICszMDQsMTcgQEAgYm9vbCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygp
IGNvbnN0CiAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6OmFs
bG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYzo6c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVj
dGlvbiBkaXJlY3Rpb24pIGNvbnN0Citib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OnNob3VsZFJ1YmJlckJhbmRPblNpZGUoQm94U2lkZSBzaWRlKSBjb25zdAogewog
ICAgIGlmIChzY3JvbGxpbmdOb2RlKCkuaXNSb290Tm9kZSgpKQotICAgICAgICByZXR1cm4gc2Ny
b2xsaW5nVHJlZSgpLm1haW5GcmFtZUNhblJ1YmJlckJhbmRJbkRpcmVjdGlvbihkaXJlY3Rpb24p
OworICAgICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLm1haW5GcmFtZUNhblJ1YmJlckJhbmRP
blNpZGUoc2lkZSk7CiAKLSAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgU2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxVcDoKLSAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93
bjoKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBjYXNlIEJveFNpZGU6OlRvcDoKKyAgICBjYXNl
IEJveFNpZGU6OkJvdHRvbToKICAgICAgICAgcmV0dXJuIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5n
KCk7Ci0gICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6Ci0gICAgY2FzZSBTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OgorICAgIGNhc2UgQm94U2lkZTo6TGVmdDoKKyAgICBj
YXNlIEJveFNpZGU6OlJpZ2h0OgogICAgICAgICByZXR1cm4gYWxsb3dzSG9yaXpvbnRhbFNjcm9s
bGluZygpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCAwZjgzYzgyZWNkMGNhY2U4M2RmOTEwMmY1YmFiNTVk
NmJhMDYzOGM1Li4yMzFlNDc4OTJmNjBiN2JjOGM0N2YyMDA3OTg0MWMxYTRhYTY2MWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC0zMDgsMTYgKzMw
OCwxMSBAQCBSZWN0RWRnZXM8Ym9vbD4gU2Nyb2xsQW5pbWF0b3I6OmVkZ2VQaW5uZWRTdGF0ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEuZWRnZVBpbm5lZFN0YXRlKCk7CiB9
CiAKLWJvb2wgU2Nyb2xsQW5pbWF0b3I6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoY29uc3QgRmxv
YXRTaXplJiBkZWx0YSkgY29uc3QKK2Jvb2wgU2Nyb2xsQW5pbWF0b3I6OmlzUGlubmVkQXRTaWRl
KEJveFNpZGUgc2lkZSkgY29uc3QKIHsKLSAgICBpZiAoZmFic2YoZGVsdGEuaGVpZ2h0KCkpID49
IGZhYnNmKGRlbHRhLndpZHRoKCkpKQotICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5p
c1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKGRlbHRhLmhlaWdodCgpLCBTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsKTsKLQotICAgIGlmIChkZWx0YS53aWR0aCgpKQotICAgICAgICByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYS5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKGRlbHRhLndpZHRo
KCksIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEuaXNQaW5uZWRBdFNpZGUoc2lkZSk7CiB9CisKICNl
bmRpZgogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRz
SWZOZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5k
ZXggYjNhZmFhODVlYmY4OWRjY2JjMjU2NmU2ZjJhZWUxYzFmZjE5NjVmZi4uNTQzN2JjZjk0NTY4
MTJhMDZiMGQwYzY5YWRhMDg4NTgzM2IxNDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5oCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICNpZiBIQVZFKFJV
QkJFUl9CQU5ESU5HKQogICAgIEludFNpemUgc3RyZXRjaEFtb3VudCgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlY3RFZGdlczxib29sPiBlZGdlUGlubmVkU3RhdGUoKSBjb25zdCBmaW5hbDsKLSAgICBi
b29sIGlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoY29uc3QgRmxvYXRTaXplJikgY29uc3QgZmluYWw7
CisgICAgYm9vbCBpc1Bpbm5lZEF0U2lkZShCb3hTaWRlKSBjb25zdCBmaW5hbDsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwCmluZGV4IDUxOTM1NWFhNTMwYzY2ZTVhNDI1MTAwYjVhNWY3MjZmMzU4Y2E3YjMuLmQ3
YmMyMmUxMGUwNTc4MjFmNmFlYTBkNmQwNzU0ZjEwMGNiMmMyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTU3OCw0MyArNTc4LDI5IEBAIHZvaWQg
U2Nyb2xsYWJsZUFyZWE6OmRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogICAgIHNjcm9sbEFuaW1hdG9yLT5zY3JvbGxUb1Bvc2l0aW9uV2l0
aEFuaW1hdGlvbihwb3NpdGlvbik7CiB9CiAKLWJvb2wgU2Nyb2xsYWJsZUFyZWE6OmlzUGlubmVk
Rm9yU2Nyb2xsRGVsdGFPbkF4aXMoZmxvYXQgc2Nyb2xsRGVsdGEsIFNjcm9sbEV2ZW50QXhpcyBh
eGlzKSBjb25zdAorYm9vbCBTY3JvbGxhYmxlQXJlYTo6aXNQaW5uZWRBdFNpZGUoQm94U2lkZSBz
aWRlKSBjb25zdAogewotICAgIGF1dG8gc2Nyb2xsUG9zaXRpb24gPSB0aGlzLT5zY3JvbGxQb3Np
dGlvbigpOwotICAgIHN3aXRjaCAoYXhpcykgewotICAgIGNhc2UgU2Nyb2xsRXZlbnRBeGlzOjpW
ZXJ0aWNhbDoKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBjYXNlIEJveFNpZGU6OlRvcDoKICAg
ICAgICAgaWYgKCFhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICAgICAgaWYgKHNjcm9sbERlbHRhIDwgMCkgLy8gdG9wCi0gICAgICAgICAg
ICByZXR1cm4gc2Nyb2xsUG9zaXRpb24ueSgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnko
KTsKLQotICAgICAgICBpZiAoc2Nyb2xsRGVsdGEgPiAwKSAvLyBib3R0b20KLSAgICAgICAgICAg
IHJldHVybiBzY3JvbGxQb3NpdGlvbi55KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgp
OwotCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
OgorICAgICAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS55KCkgPD0gbWluaW11bVNjcm9sbFBv
c2l0aW9uKCkueSgpOworICAgIGNhc2UgQm94U2lkZTo6Qm90dG9tOgorICAgICAgICBpZiAoIWFs
bG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigp
LnkoKTsKKyAgICBjYXNlIEJveFNpZGU6OkxlZnQ6CiAgICAgICAgIGlmICghYWxsb3dzSG9yaXpv
bnRhbFNjcm9sbGluZygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYg
KHNjcm9sbERlbHRhIDwgMCkgLy8gbGVmdAotICAgICAgICAgICAgcmV0dXJuIHNjcm9sbFBvc2l0
aW9uLngoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7Ci0KLSAgICAgICAgaWYgKHNj
cm9sbERlbHRhID4gMCkgLy8gcmlnaHQKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxQb3NpdGlv
bi54KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpOwotCi0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS54KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0
aW9uKCkueCgpOworICAgIGNhc2UgQm94U2lkZTo6UmlnaHQ6CisgICAgICAgIGlmICghYWxsb3dz
SG9yaXpvbnRhbFNjcm9sbGluZygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBzY3JvbGxQb3NpdGlvbigpLngoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54
KCk7CiAgICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNjcm9sbGFibGVBcmVh
Ojppc1Bpbm5lZEZvclNjcm9sbERlbHRhKGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xsRGVsdGEpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICghc2Nyb2xsRGVsdGEud2lkdGgoKSB8fCBpc1Bpbm5lZEZvclNj
cm9sbERlbHRhT25BeGlzKHNjcm9sbERlbHRhLndpZHRoKCksIFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCkpCi0gICAgICAgICYmICghc2Nyb2xsRGVsdGEuaGVpZ2h0KCkgfHwgaXNQaW5uZWRG
b3JTY3JvbGxEZWx0YU9uQXhpcyhzY3JvbGxEZWx0YS5oZWlnaHQoKSwgU2Nyb2xsRXZlbnRBeGlz
OjpWZXJ0aWNhbCkpOwotfQotCiBSZWN0RWRnZXM8Ym9vbD4gU2Nyb2xsYWJsZUFyZWE6OmVkZ2VQ
aW5uZWRTdGF0ZSgpIGNvbnN0CiB7CiAgICAgYXV0byBzY3JvbGxQb3NpdGlvbiA9IHRoaXMtPnNj
cm9sbFBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApp
bmRleCAzMTliYmE4MzI3MzgxNDU3NTY3MjYxYTY0Y2M5ZDlhM2RkMTE3NjYxLi5kYzU2YmViMDNl
NjQxYjc5YmE3MGNlMjIzNDkxNDgwNmI0ZTA4ZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKQEAgLTMxNyw4ICszMTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhp
cyBmdW5jdGlvbiBpcyBzdGF0aWMgc28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIG1h
aW4gdGhyZWFkIG9yIHRoZSBzY3JvbGxpbmcgdGhyZWFkLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGNvbXB1dGVTY3JvbGxiYXJWYWx1ZUFuZE92ZXJoYW5nKGZsb2F0IGN1cnJlbnRQ
b3NpdGlvbiwgZmxvYXQgdG90YWxTaXplLCBmbG9hdCB2aXNpYmxlU2l6ZSwgZmxvYXQmIGRvdWJs
ZVZhbHVlLCBmbG9hdCYgb3ZlcmhhbmdBbW91bnQpOwogCi0gICAgYm9vbCBpc1Bpbm5lZEZvclNj
cm9sbERlbHRhT25BeGlzKGZsb2F0IHNjcm9sbERlbHRhLCBTY3JvbGxFdmVudEF4aXMpIGNvbnN0
OwotICAgIGJvb2wgaXNQaW5uZWRGb3JTY3JvbGxEZWx0YShjb25zdCBGbG9hdFNpemUmKSBjb25z
dDsKKyAgICBib29sIGlzUGlubmVkQXRTaWRlKEJveFNpZGUpIGNvbnN0OwogICAgIFJlY3RFZGdl
czxib29sPiBlZGdlUGlubmVkU3RhdGUoKSBjb25zdDsKIAogICAgIC8vIFRydWUgaWYgc2Nyb2xs
aW5nIGhhcHBlbnMgYnkgbW92aW5nIGNvbXBvc2l0aW5nIGxheWVycy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAppbmRl
eCA4YjNkZWU3ZTRlNjI2OWU5NTY5M2M0NWM1NTFlMzdhMWU4YjEyZjFhLi5hNDgxM2M0YTU5OTE4
ZWEwOTljMjM0ZTY5ODUzY2Q4ZWQ4NzI3ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCkBAIC0zNDksNiArMzQ5
LDI5IEBAIFNjcm9sbEV4dGVudHMgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEV4
dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0CiAgICAgcmV0dXJuIG1fY2xpZW50LnNjcm9s
bEV4dGVudHMoKTsKIH0KIAorc3RkOjpvcHRpb25hbDxCb3hTaWRlPiBTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6cmVsZXZhbnRTaWRlRm9yU2Nyb2xsRGVsdGEoRmxvYXRTaXplIGRlbHRhLCBT
Y3JvbGxFdmVudEF4aXMgYXhpcykKK3sKKyAgICBzd2l0Y2ggKGF4aXMpIHsKKyAgICBjYXNlIFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbDoKKyAgICAgICAgaWYgKGRlbHRhLndpZHRoKCkgPCAw
KQorICAgICAgICAgICAgcmV0dXJuIEJveFNpZGU6OkxlZnQ7CisKKyAgICAgICAgaWYgKGRlbHRh
LndpZHRoKCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIEJveFNpZGU6OlJpZ2h0OworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbDoKKyAgICAgICAg
aWYgKGRlbHRhLmhlaWdodCgpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBCb3hTaWRlOjpUb3A7
CisKKyAgICAgICAgaWYgKGRlbHRhLmhlaWdodCgpID4gMCkKKyAgICAgICAgICAgIHJldHVybiBC
b3hTaWRlOjpCb3R0b207CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiB7IH07
Cit9CisKIC8vIEN1cnJlbnRseSwgb25seSBNYWMgc3VwcG9ydHMgbW9tZW50dW0gc3JvbGxpbmct
YmFzZWQgc2Nyb2xsc25hcHBpbmcgYW5kIHJ1YmJlciBiYW5kaW5nCiAvLyBzbyBhbGwgb2YgdGhl
c2UgbWV0aG9kcyBhcmUgYSBub29wIG9uIG5vbi1NYWMgcGxhdGZvcm1zLgogI2lmICFQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIuaAppbmRleCBhNWQ0MmIxY2QyZjg4MDFkODdjN2I2NmM1ZjM1NGRhMjY0Yzkw
YzBjLi5iMzBmOTRkOWQ4Mzg2Yjg0NTJjOWYzZjBjMjNjYWZhNzYyNzdiMTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgK
QEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxCZWhh
dmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1cykgPSAwOwogICAgIHZpcnR1YWwgU2Nyb2xs
QmVoYXZpb3JTdGF0dXMgc2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSBjb25zdCA9IDA7CiAKKyAgICAv
LyBGSVhNRTogdXNlIFNjcm9sbENsYW1waW5nIHRvIGNvbGxhcHNlIHRoZXNlIHRvIG9uZS4KICAg
ICB2aXJ0dWFsIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnkoY29uc3QgRmxvYXRTaXplJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0
cmFpbnRzKGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKIApAQCAtOTcsMTMgKzk4LDEyIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFNpemUgc3RyZXRjaEFt
b3VudCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Bpbm5lZEZvclNjcm9sbERl
bHRhKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0ID0gMDsKLQorICAgIC8vICJQaW5uZWQiIG1lYW5z
IHNjcm9sbGVkIGF0IG9yIGJleW9uZCB0aGUgZWRnZS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNQaW5u
ZWRBdFNpZGUoQm94U2lkZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVjdEVkZ2VzPGJvb2w+
IGVkZ2VQaW5uZWRTdGF0ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRS
dWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRPblNpZGUoQm94U2lkZSkgY29uc3QgPSAwOwogCi0g
ICAgLy8gRklYTUU6IHVzZSBTY3JvbGxDbGFtcGluZyB0byBjb2xsYXBzZSB0aGVzZSB0byBvbmUu
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydFJ1YmJlckJhbmRTbmFwQW5pbWF0aW9uKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BSdWJiZXJiYW5kU25hcEFuaW1hdGlvbigpIHsgfQog
CkBAIC0xNjMsMTIgKzE2MywxMiBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbmV2
ZXIgY2FsbGVkLiBXZSBuZXZlciBzZXQgbV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2Ug
YmFjayB0byBmYWxzZS4KICAgICB2b2lkIHNldFNjcm9sbFNuYXBJbmRleERpZENoYW5nZShib29s
IHN0YXRlKSB7IG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlID0gc3RhdGU7IH0KIAor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IHJlbGV2YW50U2lkZUZvclNjcm9sbERl
bHRhKEZsb2F0U2l6ZSwgU2Nyb2xsRXZlbnRBeGlzKTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxlZC4KICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKLSAgICBlbnVtIGNsYXNzIFdoZWVsQXhpc0Jp
YXMgeyBOb25lLCBWZXJ0aWNhbCB9OwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNjcm9sbERp
cmVjdGlvbj4gZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0
ZDo6b3B0aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiwgV2hlZWxBeGlzQmlhcyA9IFdoZWVsQXhpc0Jp
YXM6Ok5vbmUpOwogICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRz
VmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKICAgICBib29sIGlzU2Nyb2xs
U25hcEluUHJvZ3Jlc3MoKSBjb25zdDsKQEAgLTIwNCw4ICsyMDQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc3RvcFNuYXBSdWJiZXJiYW5kQW5pbWF0aW9uKCk7CiAKICAgICB2b2lkIHNuYXBSdWJi
ZXJCYW5kKCk7Ci0gICAgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5Ib3Jpem9udGFsRGlyZWN0aW9u
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkUnViYmVy
QmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRS
dWJiZXJCYW5kT25TaWRlKEJveFNpZGUpIGNvbnN0OwogICAgIGJvb2wgaXNSdWJiZXJCYW5kSW5Q
cm9ncmVzc0ludGVybmFsKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVSdWJiZXJCYW5kaW5nU3Rh
dGUoKTsKICAgICB2b2lkIHVwZGF0ZVJ1YmJlckJhbmRpbmdFZGdlcyhJbnRTaXplIGNsaWVudFN0
cmV0Y2gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFu
aW1hdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9y
SU9TLm1tCmluZGV4IGQ5NzZlNGVhNGNmOWYwZDA4NmJlOWFlMzBhNzZlNTU4YThhOWM2MzguLmQ5
MDdmMDQwZjJkZjY0MjNmZTMxN2QzYmZiYWVjZWU5MGQzNWY2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KQEAgLTMxLDYgKzMxLDcg
QEAKICNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJSZW5kZXJMYXllci5oIgogI2ltcG9ydCAi
U2Nyb2xsYWJsZUFyZWEuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgi
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogI2ltcG9ydCAiUGxhdGZvcm1Ub3VjaEV2ZW50
SU9TLmgiCkBAIC0xNjMsMTIgKzE2NCwxOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9ySU9TOjpkZXRl
cm1pbmVTY3JvbGxhYmxlQXJlYUZvclRvdWNoU2VxdWVuY2UoY29uc3QgSW50U2l6ZSYgcwogewog
ICAgIEFTU0VSVCghbV9zY3JvbGxhYmxlQXJlYUZvclRvdWNoU2VxdWVuY2UpOwogCi0gICAgU2Ny
b2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhID0gJm1fc2Nyb2xsYWJsZUFyZWE7CisgICAgYXV0
byBob3Jpem9udGFsRWRnZSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWxldmFudFNp
ZGVGb3JTY3JvbGxEZWx0YShzY3JvbGxEZWx0YSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
KTsKKyAgICBhdXRvIHZlcnRpY2FsRWRnZSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpy
ZWxldmFudFNpZGVGb3JTY3JvbGxEZWx0YShzY3JvbGxEZWx0YSwgU2Nyb2xsRXZlbnRBeGlzOjpW
ZXJ0aWNhbCk7CisKKyAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9ICZtX3Njcm9sbGFibGVBcmVh
OwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWEtPmlzUGlu
bmVkRm9yU2Nyb2xsRGVsdGEoc2Nyb2xsRGVsdGEpKQorICAgICAgICBpZiAodmVydGljYWxFZGdl
ICYmICFzY3JvbGxhYmxlQXJlYS0+aXNQaW5uZWRBdFNpZGUoKnZlcnRpY2FsRWRnZSkpCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoaG9yaXpvbnRhbEVkZ2UgJiYgIXNjcm9sbGFi
bGVBcmVhLT5pc1Bpbm5lZEF0U2lkZSgqaG9yaXpvbnRhbEVkZ2UpKQogICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ0FyZWEgPSBzY3JvbGxhYmxl
QXJlYS0+ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKTsKKyAgICAgICAgYXV0byogZW5jbG9zaW5n
QXJlYSA9IHNjcm9sbGFibGVBcmVhLT5lbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpOwogICAgICAg
ICBpZiAoIWVuY2xvc2luZ0FyZWEpCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAppbmRleCAzZTUxNzYxM2E4
MGQxM2MzOTc5ODJmOTI0OTc1ZGQyN2M5NzdiYWNiLi42MDNjMDJkYzMzODEzMmI1YzMyNDcyMDc3
NDZmZjg5MmIxODE3MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIC8vIFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50LgogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFN0
cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgY29u
c3QgZmluYWw7Ci0gICAgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGly
ZWN0aW9uKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZFJ1YmJlckJhbmRPblNpZGUoQm94
U2lkZSkgY29uc3QgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggZjE5
MDhjNGZhNmQyZTJhNzU3M2ZmMWE4MDExY2M1MTI0NTU2Yzk0ZC4uMjc4MTE5OWRhODk4ZTBlMTg1
ZDljMDRhYjBjMWI2YWNlOTI1ODM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtMTU4LDcgKzE1OCw4IEBAIGJvb2wgU2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsCiAgICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxl
QXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CiAgICAgICAgIFNjcm9sbGJhciogdlNjcm9sbGVy
ID0gbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpOwogICAgICAgICBib29sIHNj
cm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgPSAoKHZTY3JvbGxlciAmJiB2U2Nyb2xsZXItPmVuYWJs
ZWQoKSkgfHwgKCFoU2Nyb2xsZXIgfHwgIWhTY3JvbGxlci0+ZW5hYmxlZCgpKSk7Ci0gICAgICAg
IGJvb2wgZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcgPSBtX3Njcm9sbGFibGVBcmVhLmhhc1Njcm9s
bGFibGVPclJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSAmJiB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0
YXJ0KCkgJiYgbV9zY3JvbGxhYmxlQXJlYS5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKC13
aGVlbEV2ZW50LmRlbHRhWSgpLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKTsKKyAgICAgICAg
YXV0byByZWxldmFudFNpZGUgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmVsZXZhbnRT
aWRlRm9yU2Nyb2xsRGVsdGEoLXdoZWVsRXZlbnQuZGVsdGEoKSwgU2Nyb2xsRXZlbnRBeGlzOjpW
ZXJ0aWNhbCk7CisgICAgICAgIGJvb2wgZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcgPSBtX3Njcm9s
bGFibGVBcmVhLmhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSAmJiB3aGVl
bEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkgJiYgcmVsZXZhbnRTaWRlICYmIG1fc2Nyb2xsYWJsZUFy
ZWEuaXNQaW5uZWRBdFNpZGUoKnJlbGV2YW50U2lkZSk7CiAgICAgICAgIGlmICghZXZlbnRQcmV2
ZW50c1N0cmV0Y2hpbmcpCiAgICAgICAgICAgICBldmVudFByZXZlbnRzU3RyZXRjaGluZyA9IGdl
c3R1cmVTaG91bGRCZWdpblNuYXAod2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNh
bCwgbV9zY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0c0luZm8oKSk7CiAgICAgICAgIHJldHVybiBz
Y3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nICYmICFldmVudFByZXZlbnRzU3RyZXRjaGluZzsKQEAg
LTE4MCw3ICsxODEsOCBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFs
U3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZQogICAgICAgICBTY3JvbGxi
YXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpOwog
ICAgICAgICBTY3JvbGxiYXIqIHZTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxT
Y3JvbGxiYXIoKTsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gKCho
U2Nyb2xsZXIgJiYgaFNjcm9sbGVyLT5lbmFibGVkKCkpIHx8ICghdlNjcm9sbGVyIHx8ICF2U2Ny
b2xsZXItPmVuYWJsZWQoKSkpOwotICAgICAgICBib29sIGV2ZW50UHJldmVudHNTdHJldGNoaW5n
ID0gbV9zY3JvbGxhYmxlQXJlYS5oYXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9y
KCkgJiYgd2hlZWxFdmVudC5pc0dlc3R1cmVTdGFydCgpICYmIG1fc2Nyb2xsYWJsZUFyZWEuaXNQ
aW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcygtd2hlZWxFdmVudC5kZWx0YVgoKSwgU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsKTsKKyAgICAgICAgYXV0byByZWxldmFudFNpZGUgPSBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6cmVsZXZhbnRTaWRlRm9yU2Nyb2xsRGVsdGEoLXdoZWVsRXZl
bnQuZGVsdGEoKSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKTsKKyAgICAgICAgYm9vbCBl
dmVudFByZXZlbnRzU3RyZXRjaGluZyA9IG1fc2Nyb2xsYWJsZUFyZWEuaGFzU2Nyb2xsYWJsZU9y
UnViYmVyYmFuZGFibGVBbmNlc3RvcigpICYmIHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSAm
JiByZWxldmFudFNpZGUgJiYgbV9zY3JvbGxhYmxlQXJlYS5pc1Bpbm5lZEF0U2lkZSgqcmVsZXZh
bnRTaWRlKTsKICAgICAgICAgaWYgKCFldmVudFByZXZlbnRzU3RyZXRjaGluZykKICAgICAgICAg
ICAgIGV2ZW50UHJldmVudHNTdHJldGNoaW5nID0gZ2VzdHVyZVNob3VsZEJlZ2luU25hcCh3aGVl
bEV2ZW50LCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIG1fc2Nyb2xsYWJsZUFyZWEuc25h
cE9mZnNldHNJbmZvKCkpOwogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGlu
ZyAmJiAhZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmc7CkBAIC0xOTUsNyArMTk3LDcgQEAgYm9vbCBT
Y3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2Nyb2xsQW5p
bWF0b3JNYWM6OnNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNv
bnN0Citib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRSdWJiZXJCYW5kT25TaWRlKEJveFNp
ZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCmluZGV4
IDU1OWU1NDZlNDM4OGRiNzEzMTBiNzk3MDc4NmVhODIyYzJkZDI4ODcuLmI3MGE4MGRlZjNhZGQy
MjY1OWIzZmY0NTViNTdmMzA0MTA4NjYxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KQEAgLTgzLDEz
ICs4Myw0NCBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdG9wQWxsVGltZXJz
KCkKICNlbmRpZgogfQogCi0KLXN0YXRpYyBGbG9hdFNpemUgY29udmVydFRvUHJvbWluZW50QXhp
c0Zhdm9yaW5nVmVydGljYWwoRmxvYXRTaXplIGRlbHRhKQorc3RhdGljIFNjcm9sbEV2ZW50QXhp
cyBkb21pbmFudEF4aXNGYXZvcmluZ1ZlcnRpY2FsKEZsb2F0U2l6ZSBkZWx0YSkKIHsKICAgICBp
ZiAoZmFic2YoZGVsdGEuaGVpZ2h0KCkpID49IGZhYnNmKGRlbHRhLndpZHRoKCkpKQotICAgICAg
ICByZXR1cm4geyAwLCBkZWx0YS5oZWlnaHQoKSB9OworICAgICAgICByZXR1cm4gU2Nyb2xsRXZl
bnRBeGlzOjpWZXJ0aWNhbDsKKworICAgIHJldHVybiBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWw7Cit9CisKK3N0YXRpYyBGbG9hdFNpemUgZGVsdGFBbGlnbmVkVG9Eb21pbmFudEF4aXMoRmxv
YXRTaXplIGRlbHRhLCBTY3JvbGxFdmVudEF4aXMgYXhpcykKK3sKKyAgICBzd2l0Y2ggKGF4aXMp
IHsKKyAgICBjYXNlIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbDogcmV0dXJuIEZsb2F0U2l6
ZSB7IGRlbHRhLndpZHRoKCksIDAgfTsKKyAgICBjYXNlIFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWw6IHJldHVybiBGbG9hdFNpemUgeyAwLCBkZWx0YS5oZWlnaHQoKSB9OworICAgIH0KKworICAg
IHJldHVybiB7IH07Cit9CisKK3N0YXRpYyBGbG9hdFNpemUgY29udmVydFRvRG9taW5hbnRBeGlz
RmF2b3JpbmdWZXJ0aWNhbChGbG9hdFNpemUgZGVsdGEpCit7CisgICAgYXV0byBkb21pbmFudEF4
aXMgPSBkb21pbmFudEF4aXNGYXZvcmluZ1ZlcnRpY2FsKGRlbHRhKTsKKyAgICByZXR1cm4gZGVs
dGFBbGlnbmVkVG9Eb21pbmFudEF4aXMoZGVsdGEsIGRvbWluYW50QXhpcyk7Cit9CisKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IGFmZmVjdGVkU2lkZU9uRG9taW5hbnRBeGlzKEZsb2F0
U2l6ZSBkZWx0YSkKK3sKKyAgICBhdXRvIGRvbWluYW50QXhpcyA9IGRvbWluYW50QXhpc0Zhdm9y
aW5nVmVydGljYWwoZGVsdGEpOworICAgIHJldHVybiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
cjo6cmVsZXZhbnRTaWRlRm9yU2Nyb2xsRGVsdGEoZGVsdGEsIGRvbWluYW50QXhpcyk7Cit9CisK
K3N0YXRpYyBib29sIGlzSG9yaXpvbnRhbFNpZGUoc3RkOjpvcHRpb25hbDxCb3hTaWRlPiBzaWRl
KQoreworICAgIHJldHVybiBzaWRlICYmICgqc2lkZSA9PSBCb3hTaWRlOjpMZWZ0IHx8ICpzaWRl
ID09IEJveFNpZGU6OlJpZ2h0KTsKK30KIAotICAgIHJldHVybiB7IGRlbHRhLndpZHRoKCksIDAg
fTsKK3N0YXRpYyBib29sIGlzVmVydGljYWxTaWRlKHN0ZDo6b3B0aW9uYWw8Qm94U2lkZT4gc2lk
ZSkKK3sKKyAgICByZXR1cm4gc2lkZSAmJiAoKnNpZGUgPT0gQm94U2lkZTo6VG9wIHx8ICpzaWRl
ID09IEJveFNpZGU6OkJvdHRvbSk7CiB9CiAKIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KQpAQCAtMTAyLDEyICsxMzMsMTIgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWUKIAogICAgIGlm
ICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkJlZ2FuKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBUcnlpbmcgdG8gZGVjaWRlIGlmIGEgZ2VzdHVyZSBpcyBob3Jp
em9udGFsIG9yIHZlcnRpY2FsIGF0IHRoZSAiYmVnYW4iIHBoYXNlIGlzIHZlcnkgZXJyb3ItcHJv
bmUuCi0gICAgICAgIGF1dG8gZGlyZWN0aW9uID0gZGlyZWN0aW9uRnJvbUV2ZW50KHdoZWVsRXZl
bnQsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCk7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24g
JiYgbV9jbGllbnQuaXNQaW5uZWRGb3JTY3JvbGxEZWx0YShGbG9hdFNpemUoLXdoZWVsRXZlbnQu
ZGVsdGFYKCksIDApKSAmJiAhc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKGRpcmVjdGlvbi52
YWx1ZSgpKSkKKyAgICAgICAgYXV0byBob3Jpem9udGFsU2lkZSA9IHJlbGV2YW50U2lkZUZvclNj
cm9sbERlbHRhKC13aGVlbEV2ZW50LmRlbHRhKCksIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRh
bCk7CisgICAgICAgIGlmIChob3Jpem9udGFsU2lkZSAmJiBtX2NsaWVudC5pc1Bpbm5lZEF0U2lk
ZSgqaG9yaXpvbnRhbFNpZGUpICYmICFzaG91bGRSdWJiZXJCYW5kT25TaWRlKCpob3Jpem9udGFs
U2lkZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgZGlyZWN0aW9uID0g
ZGlyZWN0aW9uRnJvbUV2ZW50KHdoZWVsRXZlbnQsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwp
OwotICAgICAgICBpZiAoZGlyZWN0aW9uICYmIG1fY2xpZW50LmlzUGlubmVkRm9yU2Nyb2xsRGVs
dGEoRmxvYXRTaXplKDAsIC13aGVlbEV2ZW50LmRlbHRhWSgpKSkgJiYgIXNob3VsZFJ1YmJlckJh
bmRJbkRpcmVjdGlvbihkaXJlY3Rpb24udmFsdWUoKSkpCisgICAgICAgIGF1dG8gdmVydGljYWxT
aWRlID0gcmVsZXZhbnRTaWRlRm9yU2Nyb2xsRGVsdGEoLXdoZWVsRXZlbnQuZGVsdGEoKSwgU2Ny
b2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCk7CisgICAgICAgIGlmICh2ZXJ0aWNhbFNpZGUgJiYgbV9j
bGllbnQuaXNQaW5uZWRBdFNpZGUoKnZlcnRpY2FsU2lkZSkgJiYgIXNob3VsZFJ1YmJlckJhbmRP
blNpZGUoKnZlcnRpY2FsU2lkZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKQEAgLTE1NSw3ICsxODYsOSBA
QCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZQogICAgIGF1dG8gZXZlbnRDb2FsZXNjZWREZWx0YSA9
IChpc1ZlcnRpY2FsbHlTdHJldGNoZWQgfHwgaXNIb3Jpem9udGFsbHlTdHJldGNoZWQpID8gLXdo
ZWVsRXZlbnQudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCkgOiAtd2hlZWxFdmVudC5kZWx0
YSgpOwogICAgIGRlbHRhICs9IGV2ZW50Q29hbGVzY2VkRGVsdGE7CiAKLSAgICBkZWx0YSA9IGNv
bnZlcnRUb1Byb21pbmVudEF4aXNGYXZvcmluZ1ZlcnRpY2FsKGRlbHRhKTsKKyAgICAvLyBGSVhN
RTogQWxsIG9mIHRoZSBjb2RlIGJlbG93IGNvdWxkIGJlIHNpbXBsaWZpZWQgc2luY2UgcHJlZG9t
aW5hbnRBeGlzIGlzIGtub3duLCBhbmQgd2UgemVybyBvdXQgdGhlIGRlbHRhIG9uIHRoZSBvdGhl
ciBheGlzLgorICAgIGF1dG8gYWZmZWN0ZWRTaWRlID0gYWZmZWN0ZWRTaWRlT25Eb21pbmFudEF4
aXMoZGVsdGEpOworCiAgICAgZmxvYXQgZGVsdGFYID0gZGVsdGEud2lkdGgoKTsKICAgICBmbG9h
dCBkZWx0YVkgPSBkZWx0YS5oZWlnaHQoKTsKIApAQCAtMTc3LDcgKzIxMCw3IEBAIGJvb2wgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNWZXJ0aWNhbGx5U3Ry
ZXRjaGVkKSB7Ci0gICAgICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbGx5U3RyZXRjaGVkICYmIG1f
Y2xpZW50LmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoRmxvYXRTaXplKGRlbHRhWCwgMCkpKSB7Cisg
ICAgICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbGx5U3RyZXRjaGVkICYmIGlzSG9yaXpvbnRhbFNp
ZGUoYWZmZWN0ZWRTaWRlKSAmJiBtX2NsaWVudC5pc1Bpbm5lZEF0U2lkZSgqYWZmZWN0ZWRTaWRl
KSkgewogICAgICAgICAgICAgICAgIC8vIFN0cmV0Y2hpbmcgb25seSBpbiB0aGUgdmVydGljYWwu
CiAgICAgICAgICAgICAgICAgaWYgKGRlbHRhWSAmJiAoZmFic2YoZGVsdGFYIC8gZGVsdGFZKSA8
IHJ1YmJlcmJhbmREaXJlY3Rpb25Mb2NrU3RyZXRjaFJhdGlvKSkKICAgICAgICAgICAgICAgICAg
ICAgZGVsdGFYID0gMDsKQEAgLTE4OSw3ICsyMjIsNyBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGlzSG9yaXpvbnRhbGx5U3RyZXRj
aGVkKSB7CiAgICAgICAgICAgICAvLyBTdHJldGNoaW5nIG9ubHkgaW4gdGhlIGhvcml6b250YWwu
Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQuaXNQaW5uZWRGb3JTY3JvbGxEZWx0YShGbG9hdFNp
emUoMCwgZGVsdGFZKSkpIHsKKyAgICAgICAgICAgIGlmIChpc1ZlcnRpY2FsU2lkZShhZmZlY3Rl
ZFNpZGUpICYmIG1fY2xpZW50LmlzUGlubmVkQXRTaWRlKCphZmZlY3RlZFNpZGUpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGRlbHRhWCAmJiAoZmFic2YoZGVsdGFZIC8gZGVsdGFYKSA8IHJ1YmJl
cmJhbmREaXJlY3Rpb25Mb2NrU3RyZXRjaFJhdGlvKSkKICAgICAgICAgICAgICAgICAgICAgZGVs
dGFZID0gMDsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChmYWJzZihkZWx0YVkpIDwgcnViYmVy
YmFuZE1pbmltdW1SZXF1aXJlZERlbHRhQmVmb3JlU3RyZXRjaCkgewpAQCAtMjAwLDcgKzIzMyw3
IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBOb3Qgc3RyZXRjaGluZyBhdCBhbGwgeWV0LgotICAgICAgICAg
ICAgaWYgKG1fY2xpZW50LmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoRmxvYXRTaXplKGRlbHRhWCwg
ZGVsdGFZKSkpIHsKKyAgICAgICAgICAgIGlmIChhZmZlY3RlZFNpZGUgJiYgbV9jbGllbnQuaXNQ
aW5uZWRBdFNpZGUoKmFmZmVjdGVkU2lkZSkpIHsKICAgICAgICAgICAgICAgICBpZiAoZmFic2Yo
ZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmYWJz
ZihkZWx0YVgpIDwgcnViYmVyYmFuZE1pbmltdW1SZXF1aXJlZERlbHRhQmVmb3JlU3RyZXRjaCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgbV91bmFwcGxpZWRPdmVyc2Nyb2xsRGVsdGEuZXhw
YW5kKGRlbHRhWCwgMCk7CkBAIC0yMzMsMTIgKzI2NiwxMyBAQCBib29sIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZQogICAgICAgICAgICAgICAgIG1fY2xpZW50LmltbWVkaWF0ZVNjcm9sbEJ5KEZsb2F0U2l6
ZShkZWx0YVgsIDApKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGFmZmVjdGVkU2lkZSA9IGFmZmVjdGVkU2lkZU9uRG9taW5hbnRBeGlzKHsgZGVsdGFYLCBk
ZWx0YVkgfSk7CiAgICAgICAgICAgICBpZiAoZGVsdGFYKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5hbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50KSkgewogICAg
ICAgICAgICAgICAgICAgICBkZWx0YVggPSAwOwogICAgICAgICAgICAgICAgICAgICBldmVudENv
YWxlc2NlZERlbHRhLnNldFdpZHRoKDApOwogICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXNIb3Jpem9udGFsbHlTdHJldGNo
ZWQgJiYgIW1fY2xpZW50LmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoRmxvYXRTaXplKGRlbHRhWCwg
MCkpKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXNIb3Jpem9udGFsbHlTdHJldGNo
ZWQgJiYgIW1fY2xpZW50LmlzUGlubmVkQXRTaWRlKCphZmZlY3RlZFNpZGUpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGRlbHRhWCAqPSBzY3JvbGxXaGVlbE11bHRpcGxpZXIoKTsKIAogICAgICAg
ICAgICAgICAgICAgICBtX2NsaWVudC5pbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRn
ZUNvbnN0cmFpbnRzKEZsb2F0U2l6ZShkZWx0YVgsIDApKTsKQEAgLTI1MSw3ICsyODUsNyBAQCBi
b29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZQogICAgICAgICAgICAgICAgICAgICBkZWx0YVkgPSAwOwog
ICAgICAgICAgICAgICAgICAgICBldmVudENvYWxlc2NlZERlbHRhLnNldEhlaWdodCgwKTsKICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIWlzVmVydGljYWxseVN0cmV0Y2hlZCAmJiAhbV9jbGllbnQuaXNQaW5uZWRGb3JTY3Jv
bGxEZWx0YShGbG9hdFNpemUoMCwgZGVsdGFZKSkpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFpc1ZlcnRpY2FsbHlTdHJldGNoZWQgJiYgIW1fY2xpZW50LmlzUGlubmVkQXRTaWRlKCph
ZmZlY3RlZFNpZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRlbHRhWSAqPSBzY3JvbGxXaGVl
bE11bHRpcGxpZXIoKTsKIAogICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC5pbW1lZGlhdGVT
Y3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKEZsb2F0U2l6ZSgwLCBkZWx0YVkp
KTsKQEAgLTI2Miw3ICsyOTYsOCBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZQogICAgICAgICAg
ICAgSW50U2l6ZSBzdHJldGNoQW1vdW50ID0gbV9jbGllbnQuc3RyZXRjaEFtb3VudCgpOwogCiAg
ICAgICAgICAgICBpZiAobV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoKG1fY2xpZW50LmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoZXZlbnRDb2FsZXNjZWRE
ZWx0YSkgfHwgZXZlbnRDb2FsZXNjZWREZWx0YS5pc1plcm8oKSkgJiYgbV9sYXN0TW9tZW50dW1T
Y3JvbGxUaW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICBhdXRvIHNpZGVBZmZlY3RlZEJ5RXZl
bnREZWx0YSA9IGFmZmVjdGVkU2lkZU9uRG9taW5hbnRBeGlzKGV2ZW50Q29hbGVzY2VkRGVsdGEp
OworICAgICAgICAgICAgICAgIGlmICgoIXNpZGVBZmZlY3RlZEJ5RXZlbnREZWx0YSB8fCBtX2Ns
aWVudC5pc1Bpbm5lZEF0U2lkZSgqc2lkZUFmZmVjdGVkQnlFdmVudERlbHRhKSkgJiYgbV9sYXN0
TW9tZW50dW1TY3JvbGxUaW1lc3RhbXApIHsKICAgICAgICAgICAgICAgICAgICAgbV9pZ25vcmVN
b21lbnR1bVNjcm9sbHMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBtX21vbWVudHVtU2Ny
b2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBzbmFwUnViYmVyQmFu
ZCgpOwpAQCAtMjkzLDUzICszMjgsNyBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZQogCiBGbG9h
dFNpemUgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJk
c1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKLSAgICBy
ZXR1cm4gY29udmVydFRvUHJvbWluZW50QXhpc0Zhdm9yaW5nVmVydGljYWwod2hlZWxFdmVudC5k
ZWx0YSgpKTsKLX0KLQotc3RkOjpvcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9wdGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4gYXhpcywgV2hl
ZWxBeGlzQmlhcyBiaWFzKQotewotICAgIC8vIEZJWE1FOiBJdCdzIGltcG9zc2libGUgdG8gaW5m
ZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5nbGUgZXZlbnQsIHNpbmNlIHRoZSBzdGFydCBvZiBhIGdl
c3R1cmUgaXMgZWl0aGVyIHplcm8gb3IKLSAgICAvLyBoYXMgc21hbGwgZGVsdGFzIG9uIGJvdGgg
YXhlcy4KLQotICAgIGF1dG8gd2hlZWxEZWx0YSA9IEZsb2F0U2l6ZSB7IHdoZWVsRXZlbnQuZGVs
dGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkgfTsKLSAgICBpZiAoYmlhcyA9PSBXaGVlbEF4aXNC
aWFzOjpWZXJ0aWNhbCkKLSAgICAgICAgd2hlZWxEZWx0YSA9IHdoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOwotCi0gICAgaWYgKGF4aXMpIHsKLSAgICAgICAgc3dp
dGNoIChheGlzLnZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBTY3JvbGxFdmVudEF4aXM6OlZlcnRp
Y2FsOgotICAgICAgICAgICAgaWYgKHdoZWVsRGVsdGEuaGVpZ2h0KCkgPCAwKQotICAgICAgICAg
ICAgICAgIHJldHVybiBTY3JvbGxEb3duOwotCi0gICAgICAgICAgICBpZiAod2hlZWxEZWx0YS5o
ZWlnaHQoKSA+IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9sbFVwOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWw6Ci0g
ICAgICAgICAgICBpZiAod2hlZWxEZWx0YS53aWR0aCgpID4gMCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gU2Nyb2xsTGVmdDsKLQotICAgICAgICAgICAgaWYgKHdoZWVsRGVsdGEud2lkdGgoKSA8
IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9sbFJpZ2h0OwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAvLyBDaGVjayBZIGZpcnN0
IGJlY2F1c2UgdmVydGljYWwgc2Nyb2xsaW5nIGRvbWluYXRlcy4KLSAgICBpZiAod2hlZWxEZWx0
YS5oZWlnaHQoKSA8IDApCi0gICAgICAgIHJldHVybiBTY3JvbGxEb3duOwotCi0gICAgaWYgKHdo
ZWVsRGVsdGEuaGVpZ2h0KCkgPiAwKQotICAgICAgICByZXR1cm4gU2Nyb2xsVXA7Ci0KLSAgICBp
ZiAod2hlZWxEZWx0YS53aWR0aCgpID4gMCkKLSAgICAgICAgcmV0dXJuIFNjcm9sbExlZnQ7Ci0K
LSAgICBpZiAod2hlZWxEZWx0YS53aWR0aCgpIDwgMCkKLSAgICAgICAgcmV0dXJuIFNjcm9sbFJp
Z2h0OwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gY29udmVydFRvRG9t
aW5hbnRBeGlzRmF2b3JpbmdWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogfQogCiBzdGF0
aWMgaW5saW5lIGZsb2F0IHJvdW5kVG93YXJkWmVybyhmbG9hdCBudW0pCkBAIC00OTMsMTggKzQ4
Miw5IEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNuYXBSdWJiZXJCYW5kKCkK
ICAgICBzdGFydFJ1YmJlcmJhbmRBbmltYXRpb24oKTsKIH0KIAotYm9vbCBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6c2hvdWxkUnViYmVyQmFuZEluSG9yaXpvbnRhbERpcmVjdGlvbihjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0Ci17Ci0gICAgYXV0byBkaXJl
Y3Rpb24gPSBkaXJlY3Rpb25Gcm9tRXZlbnQod2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzOjpI
b3Jpem9udGFsKTsKLSAgICBpZiAoZGlyZWN0aW9uKQotICAgICAgICByZXR1cm4gc2hvdWxkUnVi
YmVyQmFuZEluRGlyZWN0aW9uKGRpcmVjdGlvbi52YWx1ZSgpKTsKLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzaG91bGRSdWJiZXJCYW5k
SW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK2Jvb2wgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNob3VsZFJ1YmJlckJhbmRPblNpZGUoQm94U2lkZSBzaWRl
KSBjb25zdAogewotICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rp
b24oZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkUnViYmVyQmFuZE9uU2lk
ZShzaWRlKTsKIH0KIAogYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6aXNSdWJiZXJC
YW5kSW5Qcm9ncmVzc0ludGVybmFsKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439760</attachid>
            <date>2021-09-30 10:58:51 -0700</date>
            <delta_ts>2021-09-30 11:01:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231004-20210930105850.patch</filename>
            <type>text/plain</type>
            <size>40575</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM4NWNkZmFmYjkzNzM5
ZThkZTJhN2VkMTMzY2U2ZDMzNmM3YTIyYi4uZTlkYjI4MmYyNWJmM2I4YjFkYjZlM2U4Y2NhNGMz
MjQ5Mjk0ZmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTA5LTI5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgdGhl
IGNvbnVzaW5nIGlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoKSBsb2dpYyB3aXRoIGNvZGUgdGhhdCB1
c2VzIEJveFNpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoKS9pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlz
KCkgYXJlIGFtYmlndW91cyBiZWNhdXNlIGl0J3MKKyAgICAgICAgZWFzeSB0byBpbnRlcnByZXQg
dGhlbSBhcyBsb29raW5nIGF0IHRoZSBtYWduaXR1ZGUgb2YgdGhlIGRlbHRhIHRvIGRldGVybWlu
ZSB3aGV0aGVyCisgICAgICAgIHRoZSBkZWx0YSB3aWxsIGNhdXNlIHN0cmV0Y2hpbmcgb24gYW4g
ZWRnZS4gSG93ZXZlciwgdGhleSBkb24ndCBkbyB0aGlzOyB0aGV5IHNpbXBseQorICAgICAgICB1
c2UgdGhlIGRlbHRhIHRvIGNob29zZSB3aGljaCBlZGdlIHRvIGxvb2sgYXQsIGFuZCB0aGUgImlz
IHBpbm5lZCIgcmVmZXJzIHRvIHdoZXRoZXIKKyAgICAgICAgdGhlIHNjcm9sbGVyIGlzIGFscmVh
ZHkgc2Nyb2xsZWQgdG8gdGhhdCBlZGdlIG9yIHN0cmV0Y2hpbmcgYXQgdGhhdCBlZGdlLgorCisg
ICAgICAgIFRvIHJlZHVjZSBhbWJpZ3VpdHksIHJld3JpdGUgdGhlIGNvZGUgaW4gdGVybXMgb2Yg
Qm94U2lkZXMsIHNlcGFyYXRpbmcgdGhlIGNvZGUKKyAgICAgICAgdGhhdCBkZXRlcm1pbmVzIHdo
aWNoIEJveFNpZGUgdG8gbG9vayBhdCBmb3IgYSBnaXZlbiBldmVudCBkZWx0YSBmcm9tIHRoZSBj
b2RlIHRoYXQKKyAgICAgICAgY29tcHV0ZWQgcGlubmVkIHN0YXRlLiBJdCdzIG5vdyBjbGVhcmVy
IHRoYXQgaXQncyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8KKyAgICAgICAgZG8gImRv
bWluYW50IGF4aXMiIGRlbHRhIHRyYW5zZm9ybWF0aW9ucyB0b28uCisKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNjcm9s
bGFibGVBcmVhQ2FuSGFuZGxlRXZlbnQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6bWFpbkZyYW1l
Q2FuUnViYmVyQmFuZE9uU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpt
YWluRnJhbWVDYW5SdWJiZXJCYW5kSW5EaXJlY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJl
dGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWM6OmlzUGlubmVkT25TaWRlIGNvbnN0KTogUmVtb3ZlIHRoZSBvbGQgInNj
cm9sbE9mZnNldExpbWl0IiB0aHJlc2hvbGQuIE91ciBzY3JvbGwgb2Zmc2V0cworICAgICAgICBh
cmUgY3VycmVudGx5IGFsbCBpbnRlZ3JhbCBzbyBJIGRvbid0IHRoaW5rIHRoaXMgZGlkIGFueXRo
aW5nLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYzo6c2hvdWxkUnViYmVyQmFuZE9uU2lkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjppc1Bpbm5lZEZvclNjcm9sbERl
bHRhT25BeGlzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYzo6c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6aXNQaW5uZWRPblNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6
OmlzUGlubmVkT25TaWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
Ojp0YXJnZXRTaWRlRm9yU2Nyb2xsRGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJs
ZUFyZWE6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcklPUzo6ZGV0ZXJtaW5lU2Nyb2xsYWJsZUFyZWFGb3JUb3VjaFNlcXVlbmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkUnViYmVy
QmFuZE9uU2lkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6
c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpkb21pbmFudEF4aXNGYXZvcmluZ1ZlcnRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OmRl
bHRhQWxpZ25lZFRvQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpkZWx0YUFsaWduZWRUb0RvbWlu
YW50QXhpcyk6CisgICAgICAgIChXZWJDb3JlOjphZmZlY3RlZFNpZGVPbkRvbWluYW50QXhpcyk6
CisgICAgICAgIChXZWJDb3JlOjppc0hvcml6b250YWxTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzVmVydGljYWxTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2hvdWxkUnViYmVyQmFu
ZE9uU2lkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9Qcm9taW5lbnRBeGlz
RmF2b3JpbmdWZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzaG91bGRSdWJiZXJCYW5kSW5I
b3Jpem9udGFsRGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24gY29u
c3QpOiBEZWxldGVkLgorCiAyMDIxLTA5LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIE1pbm9yIGNsZWFudXAgb2Ygc29tZSBydWJiZXItYmFuZGlu
ZyBjb2RlIGluIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKaW5kZXggMGI4ZTgzNWJlYzg4YTdjODhiYmRmNzRkMTg3NDViNzlhMTllYmE5
Mi4uMDM2NWE3NThlZmFhMTM2MzM2YTVkOGMzNWRmZmE2Nzk1MjZmODY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTgsNiArOTgsNyBAQAogI2luY2x1ZGUgIlNjcm9s
bEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGUuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTMxMDMsMTAgKzMxMDQsMTIgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFuZGxlRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEUKICAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxFdmVu
dC5kZWx0YSgpOwogI2VuZGlmCiAKLSAgICBpZiAoYmlhc2VkRGVsdGEuaGVpZ2h0KCkgJiYgIXNj
cm9sbGFibGVBcmVhLmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoLWJpYXNlZERlbHRhLmhl
aWdodCgpLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSkKKyAgICBhdXRvIHZlcnRpY2FsU2lk
ZSA9IFNjcm9sbGFibGVBcmVhOjp0YXJnZXRTaWRlRm9yU2Nyb2xsRGVsdGEoLWJpYXNlZERlbHRh
LCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKTsKKyAgICBpZiAodmVydGljYWxTaWRlICYmICFz
Y3JvbGxhYmxlQXJlYS5pc1Bpbm5lZE9uU2lkZSgqdmVydGljYWxTaWRlKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoYmlhc2VkRGVsdGEud2lkdGgoKSAmJiAhc2Nyb2xsYWJsZUFy
ZWEuaXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcygtYmlhc2VkRGVsdGEud2lkdGgoKSwgU2Ny
b2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSkKKyAgICBhdXRvIGhvcml6b250YWxTaWRlID0gU2Ny
b2xsYWJsZUFyZWE6OnRhcmdldFNpZGVGb3JTY3JvbGxEZWx0YSgtYmlhc2VkRGVsdGEsIFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCk7CisgICAgaWYgKGhvcml6b250YWxTaWRlICYmICFzY3Jv
bGxhYmxlQXJlYS5pc1Bpbm5lZE9uU2lkZSgqaG9yaXpvbnRhbFNpZGUpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggMGVjMjdhMmUwMWI5ZjY3MTFkMDliMjJj
ZGZjNjQ4MTVkODU1NGY4OC4uNTk0YThhYTNjNDQ5YTFiYTVlM2M5NjgyNDVjMjczMTAyODdmMjJj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5j
cHAKQEAgLTU5NSwxOCArNTk1LDEwIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0TWFpbkZyYW1l
Q2FuUnViYmVyQmFuZChSZWN0RWRnZXM8Ym9vbD4gY2FuUnViYmVyQmFuZCkKICAgICBtX3N3aXBl
U3RhdGUuY2FuUnViYmVyQmFuZCA9IGNhblJ1YmJlckJhbmQ7CiB9CiAKLWJvb2wgU2Nyb2xsaW5n
VHJlZTo6bWFpbkZyYW1lQ2FuUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbiBk
aXJlY3Rpb24pCitib29sIFNjcm9sbGluZ1RyZWU6Om1haW5GcmFtZUNhblJ1YmJlckJhbmRPblNp
ZGUoQm94U2lkZSBzaWRlKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3N3aXBlU3RhdGVMb2Nr
IH07Ci0KLSAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgU2Nyb2xsVXA6IHJldHVy
biBtX3N3aXBlU3RhdGUuY2FuUnViYmVyQmFuZC50b3AoKTsKLSAgICBjYXNlIFNjcm9sbERvd246
IHJldHVybiBtX3N3aXBlU3RhdGUuY2FuUnViYmVyQmFuZC5ib3R0b20oKTsKLSAgICBjYXNlIFNj
cm9sbExlZnQ6IHJldHVybiBtX3N3aXBlU3RhdGUuY2FuUnViYmVyQmFuZC5sZWZ0KCk7Ci0gICAg
Y2FzZSBTY3JvbGxSaWdodDogcmV0dXJuIG1fc3dpcGVTdGF0ZS5jYW5SdWJiZXJCYW5kLnJpZ2h0
KCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9zd2lwZVN0YXRl
LmNhblJ1YmJlckJhbmQuYXQoc2lkZSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6YWRkUGVu
ZGluZ1Njcm9sbFVwZGF0ZShTY3JvbGxVcGRhdGUmJiB1cGRhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXggYWQyNmRlMGNlYWU2Njg4OTFl
NWJhYzRiNjYyMTkzMmUxMWZjYzRmNS4uM2NhMzQ3Mzk0YmUzZTNiZGNlM2M0Y2Q5ZjlmYWQzYmY3
MzA2ZWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaApAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbiBiZSBjYWxsZWQg
ZnJvbSBhbnkgdGhyZWFkLiBXaWxsIHVwZGF0ZSB3aGF0IGVkZ2VzIGFsbG93IHJ1YmJlci1iYW5k
aW5nLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWFpbkZyYW1lQ2FuUnViYmVyQmFuZChS
ZWN0RWRnZXM8Ym9vbD4pOwotICAgIGJvb2wgbWFpbkZyYW1lQ2FuUnViYmVyQmFuZEluRGlyZWN0
aW9uKFNjcm9sbERpcmVjdGlvbik7CisgICAgYm9vbCBtYWluRnJhbWVDYW5SdWJiZXJCYW5kT25T
aWRlKEJveFNpZGUpOwogCiAgICAgYm9vbCBpc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CiAgICAgdm9p
ZCBzZXRJc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsKGJvb2wgaXNIYW5kbGluZ1Byb2dyYW1t
YXRpY1Njcm9sbCkgeyBtX2lzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwgPSBpc0hhbmRsaW5n
UHJvZ3JhbW1hdGljU2Nyb2xsOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaAppbmRleCAxYjRmZWZjZTVhOTBiY2U5MzhiZjJhYmYxMmQ4M2VhN2M1YmQ3
MzJhLi5mOTJkMDg1Mzc1MzE5ODkxNTljYmY4YThiNTE5YTc5OGZiYjQwZTdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKQEAgLTY4LDggKzY4LDYg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJy
YWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgotICAgIGJvb2wgaXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcyhmbG9hdCBz
Y3JvbGxEZWx0YSwgU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxMaW1pdCA9IDApIGNvbnN0
OwotCiAgICAgLy8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQuCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IGNyZWF0ZVRpbWVyKEZ1
bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbkNhbGxiYWNr
KFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikgZmluYWw7CkBAIC03OCwxNCArNzYsMTUgQEAg
cHJpdmF0ZToKICAgICBib29sIGFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWxsb3dzVmVydGljYWxTdHJl
dGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0IGZpbmFsOwogICAgIEludFNp
emUgc3RyZXRjaEFtb3VudCgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgaXNQaW5uZWRGb3JTY3Jv
bGxEZWx0YShjb25zdCBGbG9hdFNpemUmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzUGlubmVk
T25TaWRlKEJveFNpZGUpIGNvbnN0IGZpbmFsOworCiAgICAgUmVjdEVkZ2VzPGJvb2w+IGVkZ2VQ
aW5uZWRTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9s
bGluZygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2
aW9yU3RhdHVzIHN0YXR1cykgZmluYWwgeyBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzID0gc3RhdHVz
OyB9CiAgICAgU2Nyb2xsQmVoYXZpb3JTdGF0dXMgc2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzOyB9CiAKLSAgICBib29sIHNo
b3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgc2hvdWxkUnViYmVyQmFuZE9uU2lkZShCb3hTaWRlKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYpIGZpbmFsOwogICAgIHZv
aWQgaW1tZWRpYXRlU2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBG
bG9hdFNpemUmKSBmaW5hbDsKICAgICB2b2lkIGRpZFN0b3BSdWJiZXJiYW5kU25hcEFuaW1hdGlv
bigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbQppbmRleCBiOGZmYzczNDM4Mjg3MDI2MDY5OGY4Yjc5NmY2NTQwMjQ4OWY0OTEzLi44ZDU1
NGQyN2QwMjcwNjJmMjgyMjIyMDk4ZjI2Nzg3YzM0NjFiNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMTcyLDQzICsxNzIsNiBAQCBi
b29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmlzU2Nyb2xsU25hcElu
UHJvZ3Jlc3MoKSBjb25zdAogICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuaXNTY3JvbGxT
bmFwSW5Qcm9ncmVzcygpOwogfQogCi1ib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoZmxvYXQgc2Nyb2xsRGVsdGEs
IFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBzY3JvbGxMaW1pdCkgY29uc3QKLXsKLSAgICBh
dXRvIHNjcm9sbFBvc2l0aW9uID0gY3VycmVudFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgc3dpdGNo
IChheGlzKSB7Ci0gICAgY2FzZSBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsOgotICAgICAgICBp
ZiAoIWFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgICAgICBpZiAoc2Nyb2xsRGVsdGEgPCAwKSB7Ci0gICAgICAgICAgICBhdXRvIHRvcE9m
ZnNldCA9IHNjcm9sbFBvc2l0aW9uLnkoKSAtIG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKTsK
LSAgICAgICAgICAgIHJldHVybiB0b3BPZmZzZXQgPD0gc2Nyb2xsTGltaXQ7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoc2Nyb2xsRGVsdGEgPiAwKSB7Ci0gICAgICAgICAgICBhdXRvIGJvdHRv
bU9mZnNldCA9IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSAtIHNjcm9sbFBvc2l0aW9uLnko
KTsKLSAgICAgICAgICAgIHJldHVybiBib3R0b21PZmZzZXQgPD0gc2Nyb2xsTGltaXQ7Ci0gICAg
ICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWw6Ci0gICAgICAgIGlmICghYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKHNjcm9sbERlbHRhIDwgMCkgewotICAgICAg
ICAgICAgYXV0byBsZWZ0T2Zmc2V0ID0gc2Nyb2xsUG9zaXRpb24ueCgpIC0gbWluaW11bVNjcm9s
bFBvc2l0aW9uKCkueCgpOwotICAgICAgICAgICAgcmV0dXJuIGxlZnRPZmZzZXQgPD0gc2Nyb2xs
TGltaXQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2Nyb2xsRGVsdGEgPiAwKSB7Ci0gICAg
ICAgICAgICBhdXRvIHJpZ2h0T2Zmc2V0ID0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpIC0g
c2Nyb2xsUG9zaXRpb24ueCgpOwotICAgICAgICAgICAgcmV0dXJuIHJpZ2h0T2Zmc2V0IDw9IHNj
cm9sbExpbWl0OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
VGltZXI+IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmNyZWF0ZVRpbWVy
KEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKICAgICByZXR1cm4gV1RGOjptYWtlVW5p
cXVlPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwg
W2Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHByb3RlY3RlZE5vZGUgPSBSZWYgeyBzY3Jv
bGxpbmdOb2RlKCkgfV0gewpAQCAtMjQ0LDE1ICsyMDcsMTYgQEAgYm9vbCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25z
dCBQbGEKICAgICBzd2l0Y2ggKGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBj
YXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJz
QWxsb3dTdHJldGNoaW5nID0gYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIHx8ICFhbGxvd3NW
ZXJ0aWNhbFNjcm9sbGluZygpOwotICAgICAgICBib29sIGV2ZW50UHJldmVudHNTdHJldGNoaW5n
ID0gd2hlZWxFdmVudC5pc0dlc3R1cmVTdGFydCgpICYmIGlzUGlubmVkRm9yU2Nyb2xsRGVsdGFP
bkF4aXMoLXdoZWVsRXZlbnQuZGVsdGFYKCksIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCk7
CisgICAgICAgIGF1dG8gcmVsZXZhbnRTaWRlID0gU2Nyb2xsYWJsZUFyZWE6OnRhcmdldFNpZGVG
b3JTY3JvbGxEZWx0YSgtd2hlZWxFdmVudC5kZWx0YSgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6
b250YWwpOworICAgICAgICBib29sIGV2ZW50UHJldmVudHNTdHJldGNoaW5nID0gd2hlZWxFdmVu
dC5pc0dlc3R1cmVTdGFydCgpICYmIHJlbGV2YW50U2lkZSAmJiBpc1Bpbm5lZE9uU2lkZSgqcmVs
ZXZhbnRTaWRlKTsKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgJiYg
IWV2ZW50UHJldmVudHNTdHJldGNoaW5nOwogICAgIH0KICAgICBjYXNlIFNjcm9sbEVsYXN0aWNp
dHlOb25lOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5
QWxsb3dlZDogewotICAgICAgICBhdXRvIHNjcm9sbERpcmVjdGlvbiA9IFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQod2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRB
eGlzOjpIb3Jpem9udGFsKTsKLSAgICAgICAgaWYgKHNjcm9sbERpcmVjdGlvbikKLSAgICAgICAg
ICAgIHJldHVybiBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oc2Nyb2xsRGlyZWN0aW9uLnZh
bHVlKCkpOworICAgICAgICBhdXRvIHJlbGV2YW50U2lkZSA9IFNjcm9sbGFibGVBcmVhOjp0YXJn
ZXRTaWRlRm9yU2Nyb2xsRGVsdGEoLXdoZWVsRXZlbnQuZGVsdGEoKSwgU2Nyb2xsRXZlbnRBeGlz
OjpIb3Jpem9udGFsKTsKKyAgICAgICAgaWYgKHJlbGV2YW50U2lkZSkKKyAgICAgICAgICAgIHJl
dHVybiBzaG91bGRSdWJiZXJCYW5kT25TaWRlKCpyZWxldmFudFNpZGUpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgfQpAQCAtMjY2LDE1ICsyMzAsMTYgQEAgYm9vbCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmco
Y29uc3QgUGxhdGYKICAgICBzd2l0Y2ggKHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAg
ICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xs
YmFyc0FsbG93U3RyZXRjaGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgfHwgIWFsbG93
c0hvcml6b250YWxTY3JvbGxpbmcoKTsKLSAgICAgICAgYm9vbCBldmVudFByZXZlbnRzU3RyZXRj
aGluZyA9IHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSAmJiBpc1Bpbm5lZEZvclNjcm9sbERl
bHRhT25BeGlzKC13aGVlbEV2ZW50LmRlbHRhWSgpLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
KTsKKyAgICAgICAgYXV0byByZWxldmFudFNpZGUgPSBTY3JvbGxhYmxlQXJlYTo6dGFyZ2V0U2lk
ZUZvclNjcm9sbERlbHRhKC13aGVlbEV2ZW50LmRlbHRhKCksIFNjcm9sbEV2ZW50QXhpczo6VmVy
dGljYWwpOworICAgICAgICBib29sIGV2ZW50UHJldmVudHNTdHJldGNoaW5nID0gd2hlZWxFdmVu
dC5pc0dlc3R1cmVTdGFydCgpICYmIHJlbGV2YW50U2lkZSAmJiBpc1Bpbm5lZE9uU2lkZSgqcmVs
ZXZhbnRTaWRlKTsKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgJiYg
IWV2ZW50UHJldmVudHNTdHJldGNoaW5nOwogICAgIH0KICAgICBjYXNlIFNjcm9sbEVsYXN0aWNp
dHlOb25lOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5
QWxsb3dlZDogewotICAgICAgICBhdXRvIHNjcm9sbERpcmVjdGlvbiA9IFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQod2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRB
eGlzOjpWZXJ0aWNhbCk7Ci0gICAgICAgIGlmIChzY3JvbGxEaXJlY3Rpb24pCi0gICAgICAgICAg
ICByZXR1cm4gc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKHNjcm9sbERpcmVjdGlvbi52YWx1
ZSgpKTsKKyAgICAgICAgYXV0byByZWxldmFudFNpZGUgPSBTY3JvbGxhYmxlQXJlYTo6dGFyZ2V0
U2lkZUZvclNjcm9sbERlbHRhKC13aGVlbEV2ZW50LmRlbHRhKCksIFNjcm9sbEV2ZW50QXhpczo6
VmVydGljYWwpOworICAgICAgICBpZiAocmVsZXZhbnRTaWRlKQorICAgICAgICAgICAgcmV0dXJu
IHNob3VsZFJ1YmJlckJhbmRPblNpZGUoKnJlbGV2YW50U2lkZSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICB9CkBAIC0zMDEsMTcgKzI2NiwyNiBAQCBJbnRTaXplIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnN0cmV0Y2hBbW91bnQoKSBjb25zdAogICAg
IHJldHVybiBzdHJldGNoOwogfQogCi1ib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkg
Y29uc3QKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6aXNQaW5u
ZWRPblNpZGUoQm94U2lkZSBzaWRlKSBjb25zdAogewotICAgIC8vIFRoaXMgIm9mZnNldCA8IDEi
IGxvZ2ljIHdhcyBhZGRlZCBpbiByMTA3NDg4LiBVbmNsZWFyIGlmIGl0J3MgbmVlZGVkLgotICAg
IGNvbnN0ZXhwciBmbG9hdCBzY3JvbGxPZmZzZXRMaW1pdCA9IDEuMGYgLSBzdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6ZXBzaWxvbigpOwotCi0gICAgaWYgKGZhYnNmKGRlbHRhLmhlaWdodCgp
KSA+PSBmYWJzZihkZWx0YS53aWR0aCgpKSkKLSAgICAgICAgcmV0dXJuIGlzUGlubmVkRm9yU2Ny
b2xsRGVsdGFPbkF4aXMoZGVsdGEuaGVpZ2h0KCksIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWws
IHNjcm9sbE9mZnNldExpbWl0KTsKLQotICAgIGlmIChkZWx0YS53aWR0aCgpKQotICAgICAgICBy
ZXR1cm4gaXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcyhkZWx0YS53aWR0aCgpLCBTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbE9mZnNldExpbWl0KTsKLQorICAgIHN3aXRjaCAo
c2lkZSkgeworICAgIGNhc2UgQm94U2lkZTo6VG9wOgorICAgICAgICBpZiAoIWFsbG93c1ZlcnRp
Y2FsU2Nyb2xsaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJu
IGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLnkoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55
KCk7CisgICAgY2FzZSBCb3hTaWRlOjpCb3R0b206CisgICAgICAgIGlmICghYWxsb3dzVmVydGlj
YWxTY3JvbGxpbmcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4g
Y3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnko
KTsKKyAgICBjYXNlIEJveFNpZGU6OkxlZnQ6CisgICAgICAgIGlmICghYWxsb3dzSG9yaXpvbnRh
bFNjcm9sbGluZygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBj
dXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueCgp
OworICAgIGNhc2UgQm94U2lkZTo6UmlnaHQ6CisgICAgICAgIGlmICghYWxsb3dzSG9yaXpvbnRh
bFNjcm9sbGluZygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBj
dXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgp
OworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTMzMCwxNyArMzA0LDE3IEBAIGJv
b2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGljYWxT
Y3JvbGxpbmcoKSBjb25zdAogICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlOjphbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpOwogfQogCi1ib29sIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihT
Y3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRSdWJiZXJCYW5kT25TaWRlKEJveFNpZGUgc2lkZSkg
Y29uc3QKIHsKICAgICBpZiAoc2Nyb2xsaW5nTm9kZSgpLmlzUm9vdE5vZGUoKSkKLSAgICAgICAg
cmV0dXJuIHNjcm9sbGluZ1RyZWUoKS5tYWluRnJhbWVDYW5SdWJiZXJCYW5kSW5EaXJlY3Rpb24o
ZGlyZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIHNjcm9sbGluZ1RyZWUoKS5tYWluRnJhbWVDYW5S
dWJiZXJCYW5kT25TaWRlKHNpZGUpOwogCi0gICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBj
YXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6Ci0gICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbERvd246CisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2FzZSBCb3hTaWRlOjpUb3A6
CisgICAgY2FzZSBCb3hTaWRlOjpCb3R0b206CiAgICAgICAgIHJldHVybiBhbGxvd3NWZXJ0aWNh
bFNjcm9sbGluZygpOwotICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgotICAg
IGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKKyAgICBjYXNlIEJveFNpZGU6Okxl
ZnQ6CisgICAgY2FzZSBCb3hTaWRlOjpSaWdodDoKICAgICAgICAgcmV0dXJuIGFsbG93c0hvcml6
b250YWxTY3JvbGxpbmcoKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggMGY4M2M4MmVjZDBjYWNlODNkZjkx
MDJmNWJhYjU1ZDZiYTA2MzhjNS4uNzJlMTgyY2NiYWNiNzY4MjEwNGY4ZWQzMmU2NThhMDU2ODY2
MTgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAt
MzA4LDE2ICszMDgsMTEgQEAgUmVjdEVkZ2VzPGJvb2w+IFNjcm9sbEFuaW1hdG9yOjplZGdlUGlu
bmVkU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmVkZ2VQaW5uZWRT
dGF0ZSgpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdG9yOjppc1Bpbm5lZEZvclNjcm9sbERlbHRh
KGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIGNvbnN0Citib29sIFNjcm9sbEFuaW1hdG9yOjppc1Bp
bm5lZE9uU2lkZShCb3hTaWRlIHNpZGUpIGNvbnN0CiB7Ci0gICAgaWYgKGZhYnNmKGRlbHRhLmhl
aWdodCgpKSA+PSBmYWJzZihkZWx0YS53aWR0aCgpKSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xs
YWJsZUFyZWEuaXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcyhkZWx0YS5oZWlnaHQoKSwgU2Ny
b2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCk7Ci0KLSAgICBpZiAoZGVsdGEud2lkdGgoKSkKLSAgICAg
ICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEuaXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcyhk
ZWx0YS53aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOwotCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmlzUGlubmVkT25TaWRlKHNpZGUp
OwogfQorCiAjZW5kaWYKIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6YWRqdXN0U2Nyb2xsUG9zaXRp
b25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5oCmluZGV4IGIzYWZhYTg1ZWJmODlkY2NiYzI1NjZlNmYyYWVlMWMxZmYxOTY1ZmYuLmU2
YWFkMTVhNDlkMjQyOWYwOTlkYmVjMjQ1ZDhlZGY1ZmZkZmRjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAj
aWYgSEFWRShSVUJCRVJfQkFORElORykKICAgICBJbnRTaXplIHN0cmV0Y2hBbW91bnQoKSBjb25z
dCBmaW5hbDsKICAgICBSZWN0RWRnZXM8Ym9vbD4gZWRnZVBpbm5lZFN0YXRlKCkgY29uc3QgZmlu
YWw7Ci0gICAgYm9vbCBpc1Bpbm5lZEZvclNjcm9sbERlbHRhKGNvbnN0IEZsb2F0U2l6ZSYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNQaW5uZWRPblNpZGUoQm94U2lkZSkgY29uc3QgZmluYWw7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAppbmRleCA1MTkzNTVhYTUzMGM2NmU1YTQyNTEwMGI1YTVmNzI2ZjM1
OGNhN2IzLi42ZDAzZmViZDE0NTQ2OWZlMGYyMzU0MmRiYzUxYzQwNDNkNDM1NWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC01NzgsNDMgKzU3OCwy
OSBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICBzY3JvbGxBbmltYXRvci0+c2Nyb2xsVG9Q
b3NpdGlvbldpdGhBbmltYXRpb24ocG9zaXRpb24pOwogfQogCi1ib29sIFNjcm9sbGFibGVBcmVh
Ojppc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKGZsb2F0IHNjcm9sbERlbHRhLCBTY3JvbGxF
dmVudEF4aXMgYXhpcykgY29uc3QKK2Jvb2wgU2Nyb2xsYWJsZUFyZWE6OmlzUGlubmVkT25TaWRl
KEJveFNpZGUgc2lkZSkgY29uc3QKIHsKLSAgICBhdXRvIHNjcm9sbFBvc2l0aW9uID0gdGhpcy0+
c2Nyb2xsUG9zaXRpb24oKTsKLSAgICBzd2l0Y2ggKGF4aXMpIHsKLSAgICBjYXNlIFNjcm9sbEV2
ZW50QXhpczo6VmVydGljYWw6CisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2FzZSBCb3hTaWRl
OjpUb3A6CiAgICAgICAgIGlmICghYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmIChzY3JvbGxEZWx0YSA8IDApIC8vIHRvcAot
ICAgICAgICAgICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uLnkoKSA8PSBtaW5pbXVtU2Nyb2xsUG9z
aXRpb24oKS55KCk7Ci0KLSAgICAgICAgaWYgKHNjcm9sbERlbHRhID4gMCkgLy8gYm90dG9tCi0g
ICAgICAgICAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb24ueSgpID49IG1heGltdW1TY3JvbGxQb3Np
dGlvbigpLnkoKTsKLQotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNjcm9sbEV2ZW50QXhpczo6
SG9yaXpvbnRhbDoKKyAgICAgICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpIDw9IG1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpLnkoKTsKKyAgICBjYXNlIEJveFNpZGU6OkJvdHRvbToKKyAgICAg
ICAgaWYgKCFhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbigpLnkoKSA+PSBtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS55KCk7CisgICAgY2FzZSBCb3hTaWRlOjpMZWZ0OgogICAgICAgICBpZiAoIWFs
bG93c0hvcml6b250YWxTY3JvbGxpbmcoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgICAgIGlmIChzY3JvbGxEZWx0YSA8IDApIC8vIGxlZnQKLSAgICAgICAgICAgIHJldHVybiBz
Y3JvbGxQb3NpdGlvbi54KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueCgpOwotCi0gICAg
ICAgIGlmIChzY3JvbGxEZWx0YSA+IDApIC8vIHJpZ2h0Ci0gICAgICAgICAgICByZXR1cm4gc2Ny
b2xsUG9zaXRpb24ueCgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKTsKLQotICAgICAg
ICBicmVhazsKKyAgICAgICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueCgpIDw9IG1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpLngoKTsKKyAgICBjYXNlIEJveFNpZGU6OlJpZ2h0OgorICAgICAgICBp
ZiAoIWFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS54KCkgPj0gbWF4aW11bVNjcm9sbFBv
c2l0aW9uKCkueCgpOwogICAgIH0KLQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTY3Jv
bGxhYmxlQXJlYTo6aXNQaW5uZWRGb3JTY3JvbGxEZWx0YShjb25zdCBGbG9hdFNpemUmIHNjcm9s
bERlbHRhKSBjb25zdAotewotICAgIHJldHVybiAoIXNjcm9sbERlbHRhLndpZHRoKCkgfHwgaXNQ
aW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcyhzY3JvbGxEZWx0YS53aWR0aCgpLCBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwpKQotICAgICAgICAmJiAoIXNjcm9sbERlbHRhLmhlaWdodCgpIHx8
IGlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoc2Nyb2xsRGVsdGEuaGVpZ2h0KCksIFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwpKTsKLX0KLQogUmVjdEVkZ2VzPGJvb2w+IFNjcm9sbGFibGVB
cmVhOjplZGdlUGlubmVkU3RhdGUoKSBjb25zdAogewogICAgIGF1dG8gc2Nyb2xsUG9zaXRpb24g
PSB0aGlzLT5zY3JvbGxQb3NpdGlvbigpOwpAQCAtNzk3LDYgKzc4MywyOSBAQCB2b2lkIFNjcm9s
bGFibGVBcmVhOjpjb21wdXRlU2Nyb2xsYmFyVmFsdWVBbmRPdmVyaGFuZyhmbG9hdCBjdXJyZW50
UG9zaXRpb24sIGZsbwogICAgIH0KIH0KIAorc3RkOjpvcHRpb25hbDxCb3hTaWRlPiBTY3JvbGxh
YmxlQXJlYTo6dGFyZ2V0U2lkZUZvclNjcm9sbERlbHRhKEZsb2F0U2l6ZSBkZWx0YSwgU2Nyb2xs
RXZlbnRBeGlzIGF4aXMpCit7CisgICAgc3dpdGNoIChheGlzKSB7CisgICAgY2FzZSBTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWw6CisgICAgICAgIGlmIChkZWx0YS53aWR0aCgpIDwgMCkKKyAg
ICAgICAgICAgIHJldHVybiBCb3hTaWRlOjpMZWZ0OworCisgICAgICAgIGlmIChkZWx0YS53aWR0
aCgpID4gMCkKKyAgICAgICAgICAgIHJldHVybiBCb3hTaWRlOjpSaWdodDsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWw6CisgICAgICAgIGlmIChk
ZWx0YS5oZWlnaHQoKSA8IDApCisgICAgICAgICAgICByZXR1cm4gQm94U2lkZTo6VG9wOworCisg
ICAgICAgIGlmIChkZWx0YS5oZWlnaHQoKSA+IDApCisgICAgICAgICAgICByZXR1cm4gQm94U2lk
ZTo6Qm90dG9tOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQor
CiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgdHMgPDwgc2Nyb2xsYWJsZUFyZWEuZGVidWdE
ZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5k
ZXggMzE5YmJhODMyNzM4MTQ1NzU2NzI2MWE2NGNjOWQ5YTNkZDExNzY2MS4uMmIzNzVmNWJkNDQy
N2M4MzcxZTUwNWY2MDc0OGEyM2ZiYzQ5YjZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oCkBAIC0zMTcsOCArMzE3LDEwIEBAIHB1YmxpYzoKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGlzIHN0YXRpYyBzbyB0aGF0IGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbWFp
biB0aHJlYWQgb3IgdGhlIHNjcm9sbGluZyB0aHJlYWQuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgY29tcHV0ZVNjcm9sbGJhclZhbHVlQW5kT3ZlcmhhbmcoZmxvYXQgY3VycmVudFBv
c2l0aW9uLCBmbG9hdCB0b3RhbFNpemUsIGZsb2F0IHZpc2libGVTaXplLCBmbG9hdCYgZG91Ymxl
VmFsdWUsIGZsb2F0JiBvdmVyaGFuZ0Ftb3VudCk7CiAKLSAgICBib29sIGlzUGlubmVkRm9yU2Ny
b2xsRGVsdGFPbkF4aXMoZmxvYXQgc2Nyb2xsRGVsdGEsIFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7
Ci0gICAgYm9vbCBpc1Bpbm5lZEZvclNjcm9sbERlbHRhKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IHRhcmdldFNpZGVGb3JTY3JvbGxE
ZWx0YShGbG9hdFNpemUsIFNjcm9sbEV2ZW50QXhpcyk7CisKKyAgICAvLyAiUGlubmVkIiBtZWFu
cyBzY3JvbGxlZCBhdCBvciBiZXlvbmQgdGhlIGVkZ2UuCisgICAgYm9vbCBpc1Bpbm5lZE9uU2lk
ZShCb3hTaWRlKSBjb25zdDsKICAgICBSZWN0RWRnZXM8Ym9vbD4gZWRnZVBpbm5lZFN0YXRlKCkg
Y29uc3Q7CiAKICAgICAvLyBUcnVlIGlmIHNjcm9sbGluZyBoYXBwZW5zIGJ5IG1vdmluZyBjb21w
b3NpdGluZyBsYXllcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCBhNWQ0MmIxY2QyZjg4MDFkODdjN2I2NmM1ZjM1
NGRhMjY0YzkwYzBjLi4xODdlYjg2MzBlNDcwNjMxYjI5OTg3NzViOTQ3NDVhYmU3ZThiMDQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmgKQEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1cykgPSAwOwogICAgIHZpcnR1
YWwgU2Nyb2xsQmVoYXZpb3JTdGF0dXMgc2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSBjb25zdCA9IDA7
CiAKKyAgICAvLyBGSVhNRTogdXNlIFNjcm9sbENsYW1waW5nIHRvIGNvbGxhcHNlIHRoZXNlIHRv
IG9uZS4KICAgICB2aXJ0dWFsIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnkoY29uc3QgRmxvYXRTaXpl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50
RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKIApAQCAtOTcsMTMgKzk4LDEy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFNpemUg
c3RyZXRjaEFtb3VudCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Bpbm5lZEZv
clNjcm9sbERlbHRhKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0ID0gMDsKLQorICAgIC8vICJQaW5u
ZWQiIG1lYW5zIHNjcm9sbGVkIGF0IG9yIGJleW9uZCB0aGUgZWRnZS4KKyAgICB2aXJ0dWFsIGJv
b2wgaXNQaW5uZWRPblNpZGUoQm94U2lkZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVjdEVk
Z2VzPGJvb2w+IGVkZ2VQaW5uZWRTdGF0ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRPblNpZGUoQm94U2lkZSkgY29uc3Qg
PSAwOwogCi0gICAgLy8gRklYTUU6IHVzZSBTY3JvbGxDbGFtcGluZyB0byBjb2xsYXBzZSB0aGVz
ZSB0byBvbmUuCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydFJ1YmJlckJhbmRTbmFwQW5pbWF0
aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BSdWJiZXJiYW5kU25hcEFuaW1hdGlv
bigpIHsgfQogCkBAIC0xNjcsOCArMTY3LDYgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBoYW5kbGVkLgogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmKTsKIAotICAgIGVudW0gY2xhc3MgV2hlZWxBeGlzQmlhcyB7IE5vbmUsIFZlcnRp
Y2FsIH07Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBkaXJlY3Rp
b25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwgc3RkOjpvcHRpb25hbDxTY3Jv
bGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlzQmlhczo6Tm9uZSk7CiAgICAg
c3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAogICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygp
IGNvbnN0OwpAQCAtMjA0LDggKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wU25hcFJ1
YmJlcmJhbmRBbmltYXRpb24oKTsKIAogICAgIHZvaWQgc25hcFJ1YmJlckJhbmQoKTsKLSAgICBi
b29sIHNob3VsZFJ1YmJlckJhbmRJbkhvcml6b250YWxEaXJlY3Rpb24oY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24o
U2Nyb2xsRGlyZWN0aW9uKSBjb25zdDsKKyAgICBib29sIHNob3VsZFJ1YmJlckJhbmRPblNpZGUo
Qm94U2lkZSkgY29uc3Q7CiAgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzSW50ZXJuYWwo
KSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVJ1YmJlckJhbmRpbmdTdGF0ZSgpOwogICAgIHZvaWQg
dXBkYXRlUnViYmVyQmFuZGluZ0VkZ2VzKEludFNpemUgY2xpZW50U3RyZXRjaCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KaW5kZXggZDk3
NmU0ZWE0Y2Y5ZjBkMDg2YmU5YWUzMGE3NmU1NThhOGE5YzYzOC4uMTYyZDYzOWZmMzFjYTMzZDU4
ZTM4Y2FmYTJlODEzNGE1ZWVhN2RjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiRnJh
bWUuaCIKICNpbXBvcnQgIlJlbmRlckxheWVyLmgiCiAjaW1wb3J0ICJTY3JvbGxhYmxlQXJlYS5o
IgorI2ltcG9ydCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKIAogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAjaW1wb3J0ICJQbGF0Zm9ybVRvdWNoRXZlbnRJT1MuaCIKQEAgLTE2Mywx
MiArMTY0LDE4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JJT1M6OmRldGVybWluZVNjcm9sbGFibGVB
cmVhRm9yVG91Y2hTZXF1ZW5jZShjb25zdCBJbnRTaXplJiBzCiB7CiAgICAgQVNTRVJUKCFtX3Nj
cm9sbGFibGVBcmVhRm9yVG91Y2hTZXF1ZW5jZSk7CiAKLSAgICBTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEgPSAmbV9zY3JvbGxhYmxlQXJlYTsKKyAgICBhdXRvIGhvcml6b250YWxFZGdl
ID0gU2Nyb2xsYWJsZUFyZWE6OnRhcmdldFNpZGVGb3JTY3JvbGxEZWx0YShzY3JvbGxEZWx0YSwg
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKTsKKyAgICBhdXRvIHZlcnRpY2FsRWRnZSA9IFNj
cm9sbGFibGVBcmVhOjp0YXJnZXRTaWRlRm9yU2Nyb2xsRGVsdGEoc2Nyb2xsRGVsdGEsIFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwpOworCisgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSAmbV9z
Y3JvbGxhYmxlQXJlYTsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoIXNjcm9sbGFi
bGVBcmVhLT5pc1Bpbm5lZEZvclNjcm9sbERlbHRhKHNjcm9sbERlbHRhKSkKKyAgICAgICAgaWYg
KHZlcnRpY2FsRWRnZSAmJiAhc2Nyb2xsYWJsZUFyZWEtPmlzUGlubmVkT25TaWRlKCp2ZXJ0aWNh
bEVkZ2UpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGhvcml6b250YWxFZGdl
ICYmICFzY3JvbGxhYmxlQXJlYS0+aXNQaW5uZWRPblNpZGUoKmhvcml6b250YWxFZGdlKSkKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdBcmVh
ID0gc2Nyb2xsYWJsZUFyZWEtPmVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCk7CisgICAgICAgIGF1
dG8qIGVuY2xvc2luZ0FyZWEgPSBzY3JvbGxhYmxlQXJlYS0+ZW5jbG9zaW5nU2Nyb2xsYWJsZUFy
ZWEoKTsKICAgICAgICAgaWYgKCFlbmNsb3NpbmdBcmVhKQogICAgICAgICAgICAgYnJlYWs7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKaW5k
ZXggM2U1MTc2MTNhODBkMTNjMzk3OTgyZjkyNDk3NWRkMjdjOTc3YmFjYi4uNjAzYzAyZGMzMzgx
MzJiNWMzMjQ3MjA3NzQ2ZmY4OTJiMTgxNzM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudC4KICAgICBib29sIGFsbG93
c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgYWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0
aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzaG91bGRSdWJiZXJC
YW5kT25TaWRlKEJveFNpZGUpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCmluZGV4IGYxOTA4YzRmYTZkMmUyYTc1NzNmZjFhODAxMWNjNTEyNDU1NmM5NGQuLjRjYzhm
NTI4MDhjMTgzMDYxY2E4ZTdkMGU4MjIyYzQwNmZmZTNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTE1OCw3ICsxNTgsOCBA
QCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogICAgICAgICBTY3JvbGxiYXIqIGhTY3JvbGxlciA9
IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpOwogICAgICAgICBTY3JvbGxi
YXIqIHZTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKTsKICAg
ICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gKCh2U2Nyb2xsZXIgJiYgdlNj
cm9sbGVyLT5lbmFibGVkKCkpIHx8ICghaFNjcm9sbGVyIHx8ICFoU2Nyb2xsZXItPmVuYWJsZWQo
KSkpOwotICAgICAgICBib29sIGV2ZW50UHJldmVudHNTdHJldGNoaW5nID0gbV9zY3JvbGxhYmxl
QXJlYS5oYXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkgJiYgd2hlZWxFdmVu
dC5pc0dlc3R1cmVTdGFydCgpICYmIG1fc2Nyb2xsYWJsZUFyZWEuaXNQaW5uZWRGb3JTY3JvbGxE
ZWx0YU9uQXhpcygtd2hlZWxFdmVudC5kZWx0YVkoKSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNh
bCk7CisgICAgICAgIGF1dG8gcmVsZXZhbnRTaWRlID0gU2Nyb2xsYWJsZUFyZWE6OnRhcmdldFNp
ZGVGb3JTY3JvbGxEZWx0YSgtd2hlZWxFdmVudC5kZWx0YSgpLCBTY3JvbGxFdmVudEF4aXM6OlZl
cnRpY2FsKTsKKyAgICAgICAgYm9vbCBldmVudFByZXZlbnRzU3RyZXRjaGluZyA9IG1fc2Nyb2xs
YWJsZUFyZWEuaGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVBbmNlc3RvcigpICYmIHdoZWVs
RXZlbnQuaXNHZXN0dXJlU3RhcnQoKSAmJiByZWxldmFudFNpZGUgJiYgbV9zY3JvbGxhYmxlQXJl
YS5pc1Bpbm5lZE9uU2lkZSgqcmVsZXZhbnRTaWRlKTsKICAgICAgICAgaWYgKCFldmVudFByZXZl
bnRzU3RyZXRjaGluZykKICAgICAgICAgICAgIGV2ZW50UHJldmVudHNTdHJldGNoaW5nID0gZ2Vz
dHVyZVNob3VsZEJlZ2luU25hcCh3aGVlbEV2ZW50LCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
LCBtX3Njcm9sbGFibGVBcmVhLnNuYXBPZmZzZXRzSW5mbygpKTsKICAgICAgICAgcmV0dXJuIHNj
cm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgJiYgIWV2ZW50UHJldmVudHNTdHJldGNoaW5nOwpAQCAt
MTgwLDcgKzE4MSw4IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxT
dHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlCiAgICAgICAgIFNjcm9sbGJh
ciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CiAg
ICAgICAgIFNjcm9sbGJhciogdlNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNj
cm9sbGJhcigpOwogICAgICAgICBib29sIHNjcm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgPSAoKGhT
Y3JvbGxlciAmJiBoU2Nyb2xsZXItPmVuYWJsZWQoKSkgfHwgKCF2U2Nyb2xsZXIgfHwgIXZTY3Jv
bGxlci0+ZW5hYmxlZCgpKSk7Ci0gICAgICAgIGJvb2wgZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcg
PSBtX3Njcm9sbGFibGVBcmVhLmhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQW5jZXN0b3Io
KSAmJiB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkgJiYgbV9zY3JvbGxhYmxlQXJlYS5pc1Bp
bm5lZEZvclNjcm9sbERlbHRhT25BeGlzKC13aGVlbEV2ZW50LmRlbHRhWCgpLCBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwpOworICAgICAgICBhdXRvIHJlbGV2YW50U2lkZSA9IFNjcm9sbGFi
bGVBcmVhOjp0YXJnZXRTaWRlRm9yU2Nyb2xsRGVsdGEoLXdoZWVsRXZlbnQuZGVsdGEoKSwgU2Ny
b2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKTsKKyAgICAgICAgYm9vbCBldmVudFByZXZlbnRzU3Ry
ZXRjaGluZyA9IG1fc2Nyb2xsYWJsZUFyZWEuaGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVB
bmNlc3RvcigpICYmIHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSAmJiByZWxldmFudFNpZGUg
JiYgbV9zY3JvbGxhYmxlQXJlYS5pc1Bpbm5lZE9uU2lkZSgqcmVsZXZhbnRTaWRlKTsKICAgICAg
ICAgaWYgKCFldmVudFByZXZlbnRzU3RyZXRjaGluZykKICAgICAgICAgICAgIGV2ZW50UHJldmVu
dHNTdHJldGNoaW5nID0gZ2VzdHVyZVNob3VsZEJlZ2luU25hcCh3aGVlbEV2ZW50LCBTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwsIG1fc2Nyb2xsYWJsZUFyZWEuc25hcE9mZnNldHNJbmZvKCkp
OwogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyAmJiAhZXZlbnRQcmV2
ZW50c1N0cmV0Y2hpbmc7CkBAIC0xOTUsNyArMTk3LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1h
Yzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3Vs
ZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNvbnN0Citib29sIFNjcm9s
bEFuaW1hdG9yTWFjOjpzaG91bGRSdWJiZXJCYW5kT25TaWRlKEJveFNpZGUpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCmluZGV4IDU1OWU1NDZlNDM4OGRi
NzEzMTBiNzk3MDc4NmVhODIyYzJkZDI4ODcuLjhkMTkzYTQwNzkzNmQ1MTQ0ODkzYmVmN2I3Nzdk
ZTA2ZmFlNjdlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KQEAgLTgzLDEzICs4Myw0NCBAQCB2b2lk
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdG9wQWxsVGltZXJzKCkKICNlbmRpZgogfQog
Ci0KLXN0YXRpYyBGbG9hdFNpemUgY29udmVydFRvUHJvbWluZW50QXhpc0Zhdm9yaW5nVmVydGlj
YWwoRmxvYXRTaXplIGRlbHRhKQorc3RhdGljIFNjcm9sbEV2ZW50QXhpcyBkb21pbmFudEF4aXNG
YXZvcmluZ1ZlcnRpY2FsKEZsb2F0U2l6ZSBkZWx0YSkKIHsKICAgICBpZiAoZmFic2YoZGVsdGEu
aGVpZ2h0KCkpID49IGZhYnNmKGRlbHRhLndpZHRoKCkpKQotICAgICAgICByZXR1cm4geyAwLCBk
ZWx0YS5oZWlnaHQoKSB9OworICAgICAgICByZXR1cm4gU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNh
bDsKKworICAgIHJldHVybiBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWw7Cit9CisKK3N0YXRp
YyBGbG9hdFNpemUgZGVsdGFBbGlnbmVkVG9BeGlzKEZsb2F0U2l6ZSBkZWx0YSwgU2Nyb2xsRXZl
bnRBeGlzIGF4aXMpCit7CisgICAgc3dpdGNoIChheGlzKSB7CisgICAgY2FzZSBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWw6IHJldHVybiBGbG9hdFNpemUgeyBkZWx0YS53aWR0aCgpLCAwIH07
CisgICAgY2FzZSBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsOiByZXR1cm4gRmxvYXRTaXplIHsg
MCwgZGVsdGEuaGVpZ2h0KCkgfTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCitzdGF0
aWMgRmxvYXRTaXplIGRlbHRhQWxpZ25lZFRvRG9taW5hbnRBeGlzKEZsb2F0U2l6ZSBkZWx0YSkK
K3sKKyAgICBhdXRvIGRvbWluYW50QXhpcyA9IGRvbWluYW50QXhpc0Zhdm9yaW5nVmVydGljYWwo
ZGVsdGEpOworICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0F4aXMoZGVsdGEsIGRvbWluYW50QXhp
cyk7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IGFmZmVjdGVkU2lkZU9uRG9t
aW5hbnRBeGlzKEZsb2F0U2l6ZSBkZWx0YSkKK3sKKyAgICBhdXRvIGRvbWluYW50QXhpcyA9IGRv
bWluYW50QXhpc0Zhdm9yaW5nVmVydGljYWwoZGVsdGEpOworICAgIHJldHVybiBTY3JvbGxhYmxl
QXJlYTo6dGFyZ2V0U2lkZUZvclNjcm9sbERlbHRhKGRlbHRhLCBkb21pbmFudEF4aXMpOworfQor
CitzdGF0aWMgYm9vbCBpc0hvcml6b250YWxTaWRlKHN0ZDo6b3B0aW9uYWw8Qm94U2lkZT4gc2lk
ZSkKK3sKKyAgICByZXR1cm4gc2lkZSAmJiAoKnNpZGUgPT0gQm94U2lkZTo6TGVmdCB8fCAqc2lk
ZSA9PSBCb3hTaWRlOjpSaWdodCk7Cit9CiAKLSAgICByZXR1cm4geyBkZWx0YS53aWR0aCgpLCAw
IH07CitzdGF0aWMgYm9vbCBpc1ZlcnRpY2FsU2lkZShzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IHNp
ZGUpCit7CisgICAgcmV0dXJuIHNpZGUgJiYgKCpzaWRlID09IEJveFNpZGU6OlRvcCB8fCAqc2lk
ZSA9PSBCb3hTaWRlOjpCb3R0b20pOwogfQogCiBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkKQEAgLTEwMiwxMiArMTMzLDEyIEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAKICAgICBp
ZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpCZWdhbikg
ewogICAgICAgICAvLyBGSVhNRTogVHJ5aW5nIHRvIGRlY2lkZSBpZiBhIGdlc3R1cmUgaXMgaG9y
aXpvbnRhbCBvciB2ZXJ0aWNhbCBhdCB0aGUgImJlZ2FuIiBwaGFzZSBpcyB2ZXJ5IGVycm9yLXBy
b25lLgotICAgICAgICBhdXRvIGRpcmVjdGlvbiA9IGRpcmVjdGlvbkZyb21FdmVudCh3aGVlbEV2
ZW50LCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOwotICAgICAgICBpZiAoZGlyZWN0aW9u
ICYmIG1fY2xpZW50LmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoRmxvYXRTaXplKC13aGVlbEV2ZW50
LmRlbHRhWCgpLCAwKSkgJiYgIXNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihkaXJlY3Rpb24u
dmFsdWUoKSkpCisgICAgICAgIGF1dG8gaG9yaXpvbnRhbFNpZGUgPSBTY3JvbGxhYmxlQXJlYTo6
dGFyZ2V0U2lkZUZvclNjcm9sbERlbHRhKC13aGVlbEV2ZW50LmRlbHRhKCksIFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCk7CisgICAgICAgIGlmIChob3Jpem9udGFsU2lkZSAmJiBtX2NsaWVu
dC5pc1Bpbm5lZE9uU2lkZSgqaG9yaXpvbnRhbFNpZGUpICYmICFzaG91bGRSdWJiZXJCYW5kT25T
aWRlKCpob3Jpem9udGFsU2lkZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uRnJvbUV2ZW50KHdoZWVsRXZlbnQsIFNjcm9sbEV2ZW50
QXhpczo6VmVydGljYWwpOwotICAgICAgICBpZiAoZGlyZWN0aW9uICYmIG1fY2xpZW50LmlzUGlu
bmVkRm9yU2Nyb2xsRGVsdGEoRmxvYXRTaXplKDAsIC13aGVlbEV2ZW50LmRlbHRhWSgpKSkgJiYg
IXNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihkaXJlY3Rpb24udmFsdWUoKSkpCisgICAgICAg
IGF1dG8gdmVydGljYWxTaWRlID0gU2Nyb2xsYWJsZUFyZWE6OnRhcmdldFNpZGVGb3JTY3JvbGxE
ZWx0YSgtd2hlZWxFdmVudC5kZWx0YSgpLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKTsKKyAg
ICAgICAgaWYgKHZlcnRpY2FsU2lkZSAmJiBtX2NsaWVudC5pc1Bpbm5lZE9uU2lkZSgqdmVydGlj
YWxTaWRlKSAmJiAhc2hvdWxkUnViYmVyQmFuZE9uU2lkZSgqdmVydGljYWxTaWRlKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBtX21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVz
cyA9IGZhbHNlOwpAQCAtMTU1LDcgKzE4Niw5IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAg
ICAgYXV0byBldmVudENvYWxlc2NlZERlbHRhID0gKGlzVmVydGljYWxseVN0cmV0Y2hlZCB8fCBp
c0hvcml6b250YWxseVN0cmV0Y2hlZCkgPyAtd2hlZWxFdmVudC51bmFjY2VsZXJhdGVkU2Nyb2xs
aW5nRGVsdGEoKSA6IC13aGVlbEV2ZW50LmRlbHRhKCk7CiAgICAgZGVsdGEgKz0gZXZlbnRDb2Fs
ZXNjZWREZWx0YTsKIAotICAgIGRlbHRhID0gY29udmVydFRvUHJvbWluZW50QXhpc0Zhdm9yaW5n
VmVydGljYWwoZGVsdGEpOworICAgIC8vIEZJWE1FOiBBbGwgb2YgdGhlIGNvZGUgYmVsb3cgY291
bGQgYmUgc2ltcGxpZmllZCBzaW5jZSBwcmVkb21pbmFudEF4aXMgaXMga25vd24sIGFuZCB3ZSB6
ZXJvIG91dCB0aGUgZGVsdGEgb24gdGhlIG90aGVyIGF4aXMuCisgICAgYXV0byBhZmZlY3RlZFNp
ZGUgPSBhZmZlY3RlZFNpZGVPbkRvbWluYW50QXhpcyhkZWx0YSk7CisKICAgICBmbG9hdCBkZWx0
YVggPSBkZWx0YS53aWR0aCgpOwogICAgIGZsb2F0IGRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOwog
CkBAIC0xNzcsNyArMjEwLDcgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWUKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChpc1ZlcnRpY2FsbHlTdHJldGNoZWQpIHsKLSAgICAgICAgICAgIGlmICgh
aXNIb3Jpem9udGFsbHlTdHJldGNoZWQgJiYgbV9jbGllbnQuaXNQaW5uZWRGb3JTY3JvbGxEZWx0
YShGbG9hdFNpemUoZGVsdGFYLCAwKSkpIHsKKyAgICAgICAgICAgIGlmICghaXNIb3Jpem9udGFs
bHlTdHJldGNoZWQgJiYgaXNIb3Jpem9udGFsU2lkZShhZmZlY3RlZFNpZGUpICYmIG1fY2xpZW50
LmlzUGlubmVkT25TaWRlKCphZmZlY3RlZFNpZGUpKSB7CiAgICAgICAgICAgICAgICAgLy8gU3Ry
ZXRjaGluZyBvbmx5IGluIHRoZSB2ZXJ0aWNhbC4KICAgICAgICAgICAgICAgICBpZiAoZGVsdGFZ
ICYmIChmYWJzZihkZWx0YVggLyBkZWx0YVkpIDwgcnViYmVyYmFuZERpcmVjdGlvbkxvY2tTdHJl
dGNoUmF0aW8pKQogICAgICAgICAgICAgICAgICAgICBkZWx0YVggPSAwOwpAQCAtMTg5LDcgKzIy
Miw3IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoaXNIb3Jpem9udGFsbHlTdHJldGNoZWQpIHsKICAgICAgICAgICAgIC8vIFN0cmV0
Y2hpbmcgb25seSBpbiB0aGUgaG9yaXpvbnRhbC4KLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5p
c1Bpbm5lZEZvclNjcm9sbERlbHRhKEZsb2F0U2l6ZSgwLCBkZWx0YVkpKSkgeworICAgICAgICAg
ICAgaWYgKGlzVmVydGljYWxTaWRlKGFmZmVjdGVkU2lkZSkgJiYgbV9jbGllbnQuaXNQaW5uZWRP
blNpZGUoKmFmZmVjdGVkU2lkZSkpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVsdGFYICYmIChm
YWJzZihkZWx0YVkgLyBkZWx0YVgpIDwgcnViYmVyYmFuZERpcmVjdGlvbkxvY2tTdHJldGNoUmF0
aW8pKQogICAgICAgICAgICAgICAgICAgICBkZWx0YVkgPSAwOwogICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGZhYnNmKGRlbHRhWSkgPCBydWJiZXJiYW5kTWluaW11bVJlcXVpcmVkRGVsdGFCZWZv
cmVTdHJldGNoKSB7CkBAIC0yMDAsNyArMjMzLDcgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWUK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE5vdCBzdHJl
dGNoaW5nIGF0IGFsbCB5ZXQuCi0gICAgICAgICAgICBpZiAobV9jbGllbnQuaXNQaW5uZWRGb3JT
Y3JvbGxEZWx0YShGbG9hdFNpemUoZGVsdGFYLCBkZWx0YVkpKSkgeworICAgICAgICAgICAgaWYg
KGFmZmVjdGVkU2lkZSAmJiBtX2NsaWVudC5pc1Bpbm5lZE9uU2lkZSgqYWZmZWN0ZWRTaWRlKSkg
ewogICAgICAgICAgICAgICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGZhYnNmKGRlbHRhWCkgPCBydWJiZXJiYW5kTWluaW11
bVJlcXVpcmVkRGVsdGFCZWZvcmVTdHJldGNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBt
X3VuYXBwbGllZE92ZXJzY3JvbGxEZWx0YS5leHBhbmQoZGVsdGFYLCAwKTsKQEAgLTIzMywxMiAr
MjY2LDEzIEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAgICAgICAgICAgICAgbV9jbGll
bnQuaW1tZWRpYXRlU2Nyb2xsQnkoRmxvYXRTaXplKGRlbHRhWCwgMCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYWZmZWN0ZWRTaWRlID0gYWZmZWN0ZWRT
aWRlT25Eb21pbmFudEF4aXMoeyBkZWx0YVgsIGRlbHRhWSB9KTsKICAgICAgICAgICAgIGlmIChk
ZWx0YVgpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmFsbG93c0hvcml6b250YWxT
dHJldGNoaW5nKHdoZWVsRXZlbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRlbHRhWCA9IDA7
CiAgICAgICAgICAgICAgICAgICAgIGV2ZW50Q29hbGVzY2VkRGVsdGEuc2V0V2lkdGgoMCk7CiAg
ICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCFpc0hvcml6b250YWxseVN0cmV0Y2hlZCAmJiAhbV9jbGllbnQuaXNQaW5uZWRGb3JT
Y3JvbGxEZWx0YShGbG9hdFNpemUoZGVsdGFYLCAwKSkpIHsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCFpc0hvcml6b250YWxseVN0cmV0Y2hlZCAmJiAhbV9jbGllbnQuaXNQaW5uZWRPblNp
ZGUoKmFmZmVjdGVkU2lkZSkpIHsKICAgICAgICAgICAgICAgICAgICAgZGVsdGFYICo9IHNjcm9s
bFdoZWVsTXVsdGlwbGllcigpOwogCiAgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LmltbWVk
aWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoRmxvYXRTaXplKGRlbHRh
WCwgMCkpOwpAQCAtMjUxLDcgKzI4NSw3IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAg
ICAgICAgICAgICAgICAgIGRlbHRhWSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGV2ZW50Q29h
bGVzY2VkRGVsdGEuc2V0SGVpZ2h0KDApOwogICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXNWZXJ0aWNhbGx5U3RyZXRjaGVk
ICYmICFtX2NsaWVudC5pc1Bpbm5lZEZvclNjcm9sbERlbHRhKEZsb2F0U2l6ZSgwLCBkZWx0YVkp
KSkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzVmVydGljYWxseVN0cmV0Y2hlZCAm
JiAhbV9jbGllbnQuaXNQaW5uZWRPblNpZGUoKmFmZmVjdGVkU2lkZSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgZGVsdGFZICo9IHNjcm9sbFdoZWVsTXVsdGlwbGllcigpOwogCiAgICAgICAgICAg
ICAgICAgICAgIG1fY2xpZW50LmltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMoRmxvYXRTaXplKDAsIGRlbHRhWSkpOwpAQCAtMjYyLDcgKzI5Niw4IEBAIGJvb2wg
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlCiAgICAgICAgICAgICBJbnRTaXplIHN0cmV0Y2hBbW91bnQgPSBt
X2NsaWVudC5zdHJldGNoQW1vdW50KCk7CiAKICAgICAgICAgICAgIGlmIChtX21vbWVudHVtU2Ny
b2xsSW5Qcm9ncmVzcykgewotICAgICAgICAgICAgICAgIGlmICgobV9jbGllbnQuaXNQaW5uZWRG
b3JTY3JvbGxEZWx0YShldmVudENvYWxlc2NlZERlbHRhKSB8fCBldmVudENvYWxlc2NlZERlbHRh
LmlzWmVybygpKSAmJiBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCkgeworICAgICAgICAg
ICAgICAgIGF1dG8gc2lkZUFmZmVjdGVkQnlFdmVudERlbHRhID0gYWZmZWN0ZWRTaWRlT25Eb21p
bmFudEF4aXMoZXZlbnRDb2FsZXNjZWREZWx0YSk7CisgICAgICAgICAgICAgICAgaWYgKCghc2lk
ZUFmZmVjdGVkQnlFdmVudERlbHRhIHx8IG1fY2xpZW50LmlzUGlubmVkT25TaWRlKCpzaWRlQWZm
ZWN0ZWRCeUV2ZW50RGVsdGEpKSAmJiBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCkgewog
ICAgICAgICAgICAgICAgICAgICBtX2lnbm9yZU1vbWVudHVtU2Nyb2xscyA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgIG1fbW9tZW50dW1TY3JvbGxJblByb2dyZXNzID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgICAgIHNuYXBSdWJiZXJCYW5kKCk7CkBAIC0yOTMsNTMgKzMyOCw3IEBAIGJv
b2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAKIEZsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQogewotICAgIHJldHVybiBjb252ZXJ0VG9Qcm9taW5lbnRBeGlz
RmF2b3JpbmdWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwotfQotCi1zdGQ6Om9wdGlvbmFs
PFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmRpcmVjdGlvbkZy
b21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIHN0ZDo6b3B0aW9u
YWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFzIGJpYXMpCi17Ci0gICAgLy8g
RklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rpb24gZnJvbSBhIHNpbmdsZSBl
dmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBlaXRoZXIgemVybyBvcgotICAg
IC8vIGhhcyBzbWFsbCBkZWx0YXMgb24gYm90aCBheGVzLgotCi0gICAgYXV0byB3aGVlbERlbHRh
ID0gRmxvYXRTaXplIHsgd2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSB9
OwotICAgIGlmIChiaWFzID09IFdoZWVsQXhpc0JpYXM6OlZlcnRpY2FsKQotICAgICAgICB3aGVl
bERlbHRhID0gd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7Ci0K
LSAgICBpZiAoYXhpcykgewotICAgICAgICBzd2l0Y2ggKGF4aXMudmFsdWUoKSkgewotICAgICAg
ICBjYXNlIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWw6Ci0gICAgICAgICAgICBpZiAod2hlZWxE
ZWx0YS5oZWlnaHQoKSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9sbERvd247Ci0K
LSAgICAgICAgICAgIGlmICh3aGVlbERlbHRhLmhlaWdodCgpID4gMCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gU2Nyb2xsVXA7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbDoKLSAgICAgICAgICAgIGlmICh3aGVlbERlbHRhLndp
ZHRoKCkgPiAwKQotICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxMZWZ0OwotCi0gICAgICAg
ICAgICBpZiAod2hlZWxEZWx0YS53aWR0aCgpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
U2Nyb2xsUmlnaHQ7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIH0KLQotICAgIC8vIENoZWNrIFkgZmlyc3QgYmVjYXVzZSB2ZXJ0aWNhbCBzY3JvbGxpbmcg
ZG9taW5hdGVzLgotICAgIGlmICh3aGVlbERlbHRhLmhlaWdodCgpIDwgMCkKLSAgICAgICAgcmV0
dXJuIFNjcm9sbERvd247Ci0KLSAgICBpZiAod2hlZWxEZWx0YS5oZWlnaHQoKSA+IDApCi0gICAg
ICAgIHJldHVybiBTY3JvbGxVcDsKLQotICAgIGlmICh3aGVlbERlbHRhLndpZHRoKCkgPiAwKQot
ICAgICAgICByZXR1cm4gU2Nyb2xsTGVmdDsKLQotICAgIGlmICh3aGVlbERlbHRhLndpZHRoKCkg
PCAwKQotICAgICAgICByZXR1cm4gU2Nyb2xsUmlnaHQ7Ci0KLSAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbEV2ZW50LmRl
bHRhKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGZsb2F0IHJvdW5kVG93YXJkWmVybyhmbG9hdCBu
dW0pCkBAIC00OTMsMTggKzQ4Miw5IEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OnNuYXBSdWJiZXJCYW5kKCkKICAgICBzdGFydFJ1YmJlcmJhbmRBbmltYXRpb24oKTsKIH0KIAot
Ym9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2hvdWxkUnViYmVyQmFuZEluSG9yaXpv
bnRhbERpcmVjdGlvbihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0
Ci17Ci0gICAgYXV0byBkaXJlY3Rpb24gPSBkaXJlY3Rpb25Gcm9tRXZlbnQod2hlZWxFdmVudCwg
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKTsKLSAgICBpZiAoZGlyZWN0aW9uKQotICAgICAg
ICByZXR1cm4gc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKGRpcmVjdGlvbi52YWx1ZSgpKTsK
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
OjpzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbikg
Y29uc3QKK2Jvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNob3VsZFJ1YmJlckJhbmRP
blNpZGUoQm94U2lkZSBzaWRlKSBjb25zdAogewotICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRS
dWJiZXJCYW5kSW5EaXJlY3Rpb24oZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gbV9jbGllbnQuc2hv
dWxkUnViYmVyQmFuZE9uU2lkZShzaWRlKTsKIH0KIAogYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6aXNSdWJiZXJCYW5kSW5Qcm9ncmVzc0ludGVybmFsKCkgY29uc3QK
</data>
<flag name="review"
          id="463485"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>