<?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>230720</bug_id>
          
          <creation_ts>2021-09-23 14:33:14 -0700</creation_ts>
          <short_desc>Move the ScrollAnimationSmooth from ScrollAnimator into ScrollingEffectsController</short_desc>
          <delta_ts>2021-09-23 17:06:21 -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>cathiechen</cc>
    
    <cc>clord</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</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>1796663</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-23 14:33:14 -0700</bug_when>
    <thetext>Move the ScrollAnimationSmooth from ScrollAnimator into ScrollingEffectsController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796666</commentid>
    <comment_count>1</comment_count>
      <attachid>439092</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-23 14:37:07 -0700</bug_when>
    <thetext>Created attachment 439092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796688</commentid>
    <comment_count>2</comment_count>
      <attachid>439097</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-23 15:02:42 -0700</bug_when>
    <thetext>Created attachment 439097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796703</commentid>
    <comment_count>3</comment_count>
      <attachid>439101</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-23 15:45:10 -0700</bug_when>
    <thetext>Created attachment 439101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796707</commentid>
    <comment_count>4</comment_count>
      <attachid>439101</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-09-23 15:58:29 -0700</bug_when>
    <thetext>Comment on attachment 439101
Patch

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

&gt; Source/WebCore/platform/generic/ScrollAnimatorGeneric.h:45
&gt; +private:

remove it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796725</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-23 17:05:29 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/283019/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796726</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-23 17:06:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/83472297&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439092</attachid>
            <date>2021-09-23 14:37:07 -0700</date>
            <delta_ts>2021-09-23 15:03:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230720-20210923143706.patch</filename>
            <type>text/plain</type>
            <size>25856</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyOTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTUzMTNlOTAxZjU5Mjdm
YzRmODMyNjEyNTRjMjUyNzQ5OTYyZjRiYS4uZTMxNGNjN2QwZGYwMGU5YjQzNzhiZDU1ZWRiYTAx
NWNlYjQ0YjY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA5LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgdGhlIFNj
cm9sbEFuaW1hdGlvblNtb290aCBmcm9tIFNjcm9sbEFuaW1hdG9yIGludG8gU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMDcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIGlzIHdoZXJlIGFsbCB0aGUgU2Nyb2xs
QW5pbWF0aW9ucyB3aWxsIGxpdmUuIFRoZSBmaXJzdAorICAgICAgICBzdGVwIGlzIHRvIG1vdmUg
U2Nyb2xsQW5pbWF0b3IncyBtX3Njcm9sbEFuaW1hdGlvbiB0aGVyZTsgdGhpcyBpcyB1c2VkIGZv
cgorICAgICAgICBrZXlib2FyZCBzY3JvbGxpbmcsIGFuZCBDU1Mgc21vb3RoIHNjcm9sbGluZy4K
KworICAgICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciBiZWNvbWVzIGEgU2Nyb2xsQW5p
bWF0aW9uQ2xpZW50IChhbmQgU2Nyb2xsQW5pbWF0b3Igc3RvcHMKKyAgICAgICAgYmVpbmcgb25l
KSwgc28gbmVlZHMgYSBsaXR0bGUgYml0IG1vcmUgZ2x1ZSBjb2RlLgorCisgICAgICAgIEFkZCB0
eXBlIHRyYWl0cyBmb3IgU2Nyb2xsQW5pbWF0b3Igc3ViY2xhc3NlcyBiZWNhdXNlIHdlIG5lZWQg
dG8gZG93bmNhc3Q8PiB0aGVtCisgICAgICAgIGhlcmUgYW5kIGluIGZ1dHVyZSBwYXRjaGVzLgor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6U2Nyb2xsQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6dHlwZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmltYXRpb25LaW5ldGljKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
aW9uTW9tZW50dW06OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvblNtb290aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9v
dGg6OlNjcm9sbEFuaW1hdGlvblNtb290aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6cmV0YXJnZXRSdW5uaW5nQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzZXRTY3JvbGxCZWhh
dmlvclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQmVo
YXZpb3JTdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNh
bmNlbEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNvbnRl
bnRzU2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNvbnRl
bnRzU2l6ZUNoYW5nZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1hdGVkU2Nyb2xs
VG9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6cmVnYXJnZXRBbmltYXRlZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcEFuaW1hdGVkU2Nyb2xsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpjb250ZW50c1NpemVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjphY3RpdmVTY3JvbGxT
bmFwSW5kZXhGb3JBeGlzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpzY3JvbGxUb09mZnNldEZvckFuaW1hdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxB
bmltYXRpb25EaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZSk6CisKIDIwMjEt
MDktMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5pZnkgbW9yZSBtZWRpYS1yZWxhdGVkIFdlYkNvcmUgc291cmNlIGZpbGVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAppbmRleCBkODZjOTc1MWI0ZmJh
ODlmYTI1YzBlOTIwNjNlZWQ3MjMzYWEzZTAxLi5kYjBkOTI5NDU2MjdmYjgzZmQ4NWIxNmFiOTNh
OTYyMjVhNzRlMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLmgKQEAgLTgyLDYgKzgyLDkgQEAgcHJpdmF0ZToKICAgICBSZWN0RWRnZXM8Ym9vbD4g
ZWRnZVBpbm5lZFN0YXRlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBhbGxvd3NIb3Jpem9udGFs
U2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBhbGxvd3NWZXJ0aWNhbFNjcm9sbGlu
ZygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xs
QmVoYXZpb3JTdGF0dXMgc3RhdHVzKSBmaW5hbCB7IG1fc2Nyb2xsQmVoYXZpb3JTdGF0dXMgPSBz
dGF0dXM7IH0KKyAgICBTY3JvbGxCZWhhdmlvclN0YXR1cyBzY3JvbGxCZWhhdmlvclN0YXR1cygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Nyb2xsQmVoYXZpb3JTdGF0dXM7IH0KKwogICAgIGJv
b2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmKSBmaW5hbDsK
ICAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMo
Y29uc3QgRmxvYXRTaXplJikgZmluYWw7CkBAIC0xMDgsNiArMTExLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTWFjPj4gbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXI7CiAKKyAg
ICBTY3JvbGxCZWhhdmlvclN0YXR1cyBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzIHsgU2Nyb2xsQmVo
YXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uIH07CiAgICAgYm9vbCBtX2luTW9tZW50dW1QaGFz
ZSB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
bi5oCmluZGV4IDIxMzdlZDRiMjkxNmY5ZjVjYzI0MmUzMzI5YTFmYzgwN2E1NDcyM2MuLjVjNjRh
ZDdlMjc1ODFhNzQwNjA3MzJiZTlkYTcwZjljNTk0N2YzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBAIC00NywxMCArNDcsMTkgQEAgcHVibGljOgogY2xh
c3MgU2Nyb2xsQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBTY3JvbGxBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCisg
ICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgU21vb3RoLAorICAgICAgICBLaW5ldGljLAor
ICAgICAgICBNb21lbnR1bSwKKyAgICB9OworCisgICAgU2Nyb2xsQW5pbWF0aW9uKFR5cGUgYW5p
bWF0aW9uVHlwZSwgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIDogbV9j
bGllbnQoY2xpZW50KQorICAgICAgICAsIG1fYW5pbWF0aW9uVHlwZShhbmltYXRpb25UeXBlKQog
ICAgIHsgfQogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbigpID0gZGVmYXVsdDsKKyAgICAK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvblR5cGU7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBu
ZXdEZXN0aW5hdGlvbk9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwpA
QCAtNjIsNiArNzEsMTIgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsQW5pbWF0
aW9uQ2xpZW50JiBtX2NsaWVudDsKKyAgICBjb25zdCBUeXBlIG1fYW5pbWF0aW9uVHlwZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1NDUk9MTF9BTklNQVRJT04oVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbiYgc2Nyb2xsQW5pbWF0aW9u
KSB7IHJldHVybiBzY3JvbGxBbmltYXRpb24ucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5jcHAKaW5kZXggYmEyNTdkYTM0NjgwOGM0M2JiOWM3NTk1YWNkNjEzM2M4
MmVhM2Q2NC4uYTliNjY1NGE2YmI2NjU5NWQyZTM1NzYzMGQ1NDRmNGRiYmI4NWNhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAK
QEAgLTExNCw3ICsxMTQsNyBAQCBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNE
YXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQogfQogCiBTY3JvbGxBbmltYXRp
b25LaW5ldGljOjpTY3JvbGxBbmltYXRpb25LaW5ldGljKFNjcm9sbEFuaW1hdGlvbkNsaWVudCYg
Y2xpZW50KQotICAgIDogU2Nyb2xsQW5pbWF0aW9uKGNsaWVudCkKKyAgICA6IFNjcm9sbEFuaW1h
dGlvbihUeXBlOjpLaW5ldGljLCBjbGllbnQpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxv
b3A6OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlvblRp
bWVyRmlyZWQpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaAppbmRleCA2MmE3NDYxYWVhNWIw
NDZlMGY2MWI4NDBkYjEzMjMzM2E2YzUyNmIwLi4xM2NlMzI5NjRiZGFmZjY5ZjQ0NWQxN2JmMTI4
MTFiYzBlMTJmZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5oCkBAIC04NiwzICs4Niw1IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMX0FOSU1BVElP
TihXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljLCB0eXBlKCkgPT0gV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0aW9uOjpUeXBlOjpLaW5ldGljKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwCmluZGV4IDRhNDc5ZjhjODExMjAwMDQ5
MTM1ZWQ3N2QzZTcwYzIxZDJjY2U1NTAuLmZhNTczNjkxNTRhMzg3OTQyOTMwZDZmODM1NWRlZjFj
N2ZlZDA3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbk1vbWVudHVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25Nb21lbnR1bS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtKFNjcm9s
bEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQotICAgIDogU2Nyb2xsQW5pbWF0aW9uKGNsaWVudCkK
KyAgICA6IFNjcm9sbEFuaW1hdGlvbihUeXBlOjpNb21lbnR1bSwgY2xpZW50KQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaApp
bmRleCA2ZTZhNjYxNmZjZDk1NjUyZTgzOWI1N2M5ZmUwNjRiZGMxYzdiM2U2Li42NjQyZGNiNTQ2
ZWZkOTA5MzliOGZmNTIxODBmYjAzOTA5M2RiNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKQEAgLTUxLDMgKzUxLDUgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19TQ1JPTExfQU5JTUFUSU9OKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtLCB0
eXBlKCkgPT0gV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjpUeXBlOjpNb21lbnR1bSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCmluZGV4
IDcwZTk0YTljNmY0Y2RiMjRlZmFhODJlMThjNjFhYTA5ZDViY2UyNzkuLmIwNmYyZjI0ZWE1NzUx
MjUwNGY3MjIxZDBiOWIyMmJhODIwOTMyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMg
Y29uc3RleHByIFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiBzdGF0aWMg
Y29uc3QgU2Vjb25kcyBtYXhBbmltYXRpb25EdXJhdGlvbiB7IDIwMF9tcyB9OwogCiBTY3JvbGxB
bmltYXRpb25TbW9vdGg6OlNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxBbmltYXRpb25DbGll
bnQmIGNsaWVudCkKLSAgICA6IFNjcm9sbEFuaW1hdGlvbihjbGllbnQpCisgICAgOiBTY3JvbGxB
bmltYXRpb24oVHlwZTo6U21vb3RoLCBjbGllbnQpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9u
VGltZXJGaXJlZCkKICAgICAsIG1fZWFzZUluT3V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OlRpbWluZ0Z1
bmN0aW9uUHJlc2V0OjpFYXNlSW5PdXQpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCA1YWZkYzEzZDc5Y2Y4N2MzOTY3NTA2M2Q3
MjYzMDMxNmQzMTQxYzUzLi4xZDIzNGEyOTJkNzc2Njk4ODMxN2MxODBmYTU0OTVkNjU1ZGJmYTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGgu
aApAQCAtNzMsMyArNzMsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMX0FOSU1BVElPTihXZWJDb3JlOjpTY3JvbGxB
bmltYXRpb25TbW9vdGgsIHR5cGUoKSA9PSBXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OlR5cGU6
OlNtb290aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRl
eCBjOTA0Y2UxYWFjN2ZlNzdkYmM0Y2M5MTZlZGI0N2UzZTdkZGY2MDI4Li4yZTE1YjNiYzdjNDlm
MDc5ODExNzBiODExMmYxMjgzY2Y2NmZmMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5oIgogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIK
ICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhcnNDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKQEAgLTU1LDcg
KzU0LDYgQEAgU2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpCiAg
ICAgLCBtX3Njcm9sbENvbnRyb2xsZXIoKnRoaXMpCiAgICAgLCBtX3Njcm9sbENvbnRyb2xsZXJB
bmltYXRpb25UaW1lcigqdGhpcywgJlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxDb250cm9sbGVyQW5p
bWF0aW9uVGltZXJGaXJlZCkKLSAgICAsIG1fc2Nyb2xsQW5pbWF0aW9uKG1ha2VVbmlxdWU8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPigqdGhpcykpCiAgICAgLCBtX2tleWJvYXJkU2Nyb2xsaW5nQW5p
bWF0b3IobWFrZVVuaXF1ZTxLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yPigqdGhpcywgbV9zY3Jv
bGxDb250cm9sbGVyKSkKIHsKIH0KQEAgLTkzLDcgKzkxLDcgQEAgYm9vbCBTY3JvbGxBbmltYXRv
cjo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxh
cml0eQogICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gb2Zmc2V0RnJvbVBvc2l0aW9uKG1fY3Vy
cmVudFBvc2l0aW9uKTsKICAgICAgICAgYXV0byBleHRlbnRzID0gc2Nyb2xsRXh0ZW50cygpOwog
ICAgICAgICBhdXRvIGRlc3RpbmF0aW9uT2Zmc2V0ID0gKHN0YXJ0T2Zmc2V0ICsgZGVsdGEpLmNv
bnN0cmFpbmVkQmV0d2VlbihleHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQoKSwgZXh0ZW50cy5t
YXhpbXVtU2Nyb2xsT2Zmc2V0KCkpOwotICAgICAgICByZXR1cm4gbV9zY3JvbGxBbmltYXRpb24t
PnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKHN0YXJ0T2Zmc2V0LCBkZXN0aW5hdGlv
bk9mZnNldCk7CisgICAgICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuc3RhcnRBbmltYXRl
ZFNjcm9sbFRvRGVzdGluYXRpb24oc3RhcnRPZmZzZXQsIGRlc3RpbmF0aW9uT2Zmc2V0KTsKICAg
ICB9CiAKICAgICByZXR1cm4gc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY3VycmVu
dFBvc2l0aW9uKCkgKyBkZWx0YSk7CkBAIC0xMDksNyArMTA3LDcgQEAgYm9vbCBTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYg
cG9zaXRpb24KICAgICBpZiAoYWRqdXN0ZWRQb3NpdGlvbiA9PSBjdXJyZW50UG9zaXRpb24gJiYg
YWRqdXN0ZWRQb3NpdGlvbiA9PSBzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbFBvc2l0aW9uKCkgJiYg
IXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c3RvcCgpOworICAgIG1fc2Nyb2xsQ29u
dHJvbGxlci5zdG9wQW5pbWF0ZWRTY3JvbGwoKTsKIAogICAgIHNldEN1cnJlbnRQb3NpdGlvbihh
ZGp1c3RlZFBvc2l0aW9uLCBOb3RpZnlTY3JvbGxhYmxlQXJlYTo6WWVzKTsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTEyMSwxNiArMTE5LDE1IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRv
UG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uCiAgICAg
aWYgKCFwb3NpdGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hh
bmdlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3Njcm9sbEFuaW1hdGlvbi0+
c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24ob2Zmc2V0RnJvbVBvc2l0aW9uKG1fY3Vy
cmVudFBvc2l0aW9uKSwgb2Zmc2V0RnJvbVBvc2l0aW9uKG5ld1Bvc2l0aW9uKSk7Ci0gICAgc2Ny
b2xsYWJsZUFyZWEoKS5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1
czo6SW5Ob25OYXRpdmVBbmltYXRpb24pOworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zdGFydEFu
aW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihvZmZzZXRGcm9tUG9zaXRpb24obV9jdXJyZW50UG9z
aXRpb24pLCBvZmZzZXRGcm9tUG9zaXRpb24obmV3UG9zaXRpb24pKTsKKyAgICBzZXRTY3JvbGxC
ZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25OYXRpdmVBbmltYXRpb24p
OwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpyZXRhcmdldFJ1
bm5pbmdBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24pCiB7CiAgICAgQVNT
RVJUKHNjcm9sbGFibGVBcmVhKCkuY3VycmVudFNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgPT0gU2Ny
b2xsQmVoYXZpb3JTdGF0dXM6OkluTm9uTmF0aXZlQW5pbWF0aW9uKTsKLSAgICBBU1NFUlQobV9z
Y3JvbGxBbmltYXRpb24tPmlzQWN0aXZlKCkpOwotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5yZXRh
cmdldEFjdGl2ZUFuaW1hdGlvbihuZXdQb3NpdGlvbik7CisgICAgbV9zY3JvbGxDb250cm9sbGVy
LnJlZ2FyZ2V0QW5pbWF0ZWRTY3JvbGwob2Zmc2V0RnJvbVBvc2l0aW9uKG5ld1Bvc2l0aW9uKSk7
CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Om9mZnNldEZyb21Qb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3QKQEAgLTI5MCw2ICsyODcsMTYgQEAgYm9vbCBT
Y3JvbGxBbmltYXRvcjo6YWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSBjb25zdAogICAgIHJldHVy
biBtX3Njcm9sbGFibGVBcmVhLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiB9CiAKK3ZvaWQg
U2Nyb2xsQW5pbWF0b3I6OnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3Rh
dHVzIHN0YXR1cykKK3sKKyAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3Rh
dHVzKHN0YXR1cyk7Cit9CisKK1Njcm9sbEJlaGF2aW9yU3RhdHVzIFNjcm9sbEFuaW1hdG9yOjpz
Y3JvbGxCZWhhdmlvclN0YXR1cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWEuY3VycmVudFNjcm9sbEJlaGF2aW9yU3RhdHVzKCk7Cit9CisKICNpZiBIQVZFKFJVQkJFUl9C
QU5ESU5HKQogSW50U2l6ZSBTY3JvbGxBbmltYXRvcjo6c3RyZXRjaEFtb3VudCgpIGNvbnN0CiB7
CkBAIC0zODUsMTMgKzM5MiwxMyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpyZW1vdmVXaGVlbEV2
ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VAogCiB2b2lkIFNj
cm9sbEFuaW1hdG9yOjpjYW5jZWxBbmltYXRpb25zKCkKIHsKLSAgICBtX3Njcm9sbEFuaW1hdGlv
bi0+c3RvcCgpOworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zdG9wQW5pbWF0ZWRTY3JvbGwoKTsK
ICAgICBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbGJhcnNDb250cm9sbGVyKCkuY2FuY2VsQW5pbWF0
aW9ucygpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yOjpjb250ZW50c1NpemVDaGFuZ2VkKCkg
Y29uc3QKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoKQogewotICAg
IG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVTY3JvbGxFeHRlbnRzKCk7CisgICAgbV9zY3JvbGxD
b250cm9sbGVyLmNvbnRlbnRzU2l6ZUNoYW5nZWQoKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsT2Zmc2V0QWRqdXN0ZWRGb3JTbmFwcGluZyhjb25zdCBGbG9hdFBvaW50
JiBvZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCBtZXRob2QpIGNvbnN0CkBA
IC00MjMsMjAgKzQzMCw0IEBAIGZsb2F0IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxPZmZzZXRBZGp1
c3RlZEZvclNuYXBwaW5nKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zCiAgICAgcmV0dXJuIG1f
c2Nyb2xsQ29udHJvbGxlci5hZGp1c3RlZFNjcm9sbERlc3RpbmF0aW9uKGF4aXMsIG5ld09mZnNl
dCwgdmVsb2NpdHlJblNjcm9sbEF4aXMsIG9yaWdpbmFsT2Zmc2V0KTsKIH0KIAotdm9pZCBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNv
bnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRPZmZzZXQpCi17Ci0gICAgc2V0Q3VycmVudFBvc2l0aW9u
KHBvc2l0aW9uRnJvbU9mZnNldChjdXJyZW50T2Zmc2V0KSwgTm90aWZ5U2Nyb2xsYWJsZUFyZWE6
Olllcyk7Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChT
Y3JvbGxBbmltYXRpb24mKQotewotICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZp
b3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uKTsKLX0KLQotU2Ny
b2xsRXh0ZW50cyBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3Jv
bGxBbmltYXRpb24mKQotewotICAgIHJldHVybiBzY3JvbGxFeHRlbnRzKCk7Ci19Ci0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmgKaW5kZXggYjZhMGJkZWJkYzE3NWQ3OTJjOGUxY2UwY2E5NTRlZTM1YWUwMGU0OC4uYTczZDhh
YWI3MGYwODZiYjRhNmU2NTg0ZGI4ODliZWFjY2M4ZjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0zMyw3ICszMyw2IEBACiAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCi0jaW5jbHVkZSAiU2Ny
b2xsQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgpA
QCAtNTIsNyArNTEsNyBAQCBjbGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3I7CiAKIGNsYXNzIFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI7CiAKLWNsYXNzIFNjcm9sbEFuaW1hdG9yIDog
cHJpdmF0ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCwgcHVibGljIFNjcm9sbEFu
aW1hdGlvbkNsaWVudCB7CitjbGFzcyBTY3JvbGxBbmltYXRvciA6IHByaXZhdGUgU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IGNyZWF0
ZShTY3JvbGxhYmxlQXJlYSYpOwpAQCAtNzgsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
LCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKTsKICAgICBib29sIHNj
cm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAotICAgIHZv
aWQgcmV0YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICB2b2lk
IHJldGFyZ2V0UnVubmluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbik7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmKTsKIApAQCAtOTgsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
UnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZCgpIGNvbnN0OworICAgIHZvaWQgY29udGVu
dHNTaXplQ2hhbmdlZCgpOwogCiAgICAgZW51bSBOb3RpZnlTY3JvbGxhYmxlQXJlYSA6IGJvb2wg
ewogICAgICAgICBObywgWWVzCkBAIC0xMjIsOSArMTIxLDYgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFsbG93c1Njcm9sbEFuaW1hdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVudAotICAgIHZv
aWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0
UG9pbnQmIGN1cnJlbnRPZmZzZXQpIG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIHZvaWQgbm90
aWZ5UG9zaXRpb25DaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpOwogCkBAIC0xMzQsNyAr
MTMwLDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG9mZnNldEZyb21Qb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBwb3NpdGlvbkZy
b21PZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KSBjb25zdDsKIAotCiAgICAgLy8gU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IGNyZWF0ZVRpbWVyKEZ1bmN0aW9uPHZvaWQoKT4m
JikgZmluYWw7CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyJikgZmluYWw7CkBAIC0xNDgsNiArMTQzLDkgQEAgcHJpdmF0ZToKICAgICBi
b29sIGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGFs
bG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIHNldFNjcm9s
bEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzKSBmaW5hbDsKKyAgICBTY3JvbGxC
ZWhhdmlvclN0YXR1cyBzY3JvbGxCZWhhdmlvclN0YXR1cygpIGNvbnN0IGZpbmFsOworCiAjaWYg
SEFWRShSVUJCRVJfQkFORElORykKICAgICBJbnRTaXplIHN0cmV0Y2hBbW91bnQoKSBjb25zdCBm
aW5hbDsKICAgICBSZWN0RWRnZXM8Ym9vbD4gZWRnZVBpbm5lZFN0YXRlKCkgY29uc3QgZmluYWw7
CkBAIC0xNTksMTAgKzE1Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50
VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNj
cm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNv
bikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAotICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVudAot
ICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOwot
ICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRp
b24mKSBmaW5hbDsKLQogICAgIHN0YXRpYyBGbG9hdFNpemUgZGVsdGFGcm9tU3RlcChTY3JvbGxi
YXJPcmllbnRhdGlvbiwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcik7CiAKIHByb3RlY3Rl
ZDoKQEAgLTE3Miw3ICsxNjYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgVGltZXIgbV9zY3JvbGxDb250
cm9sbGVyQW5pbWF0aW9uVGltZXI7CiAgICAgRmxvYXRQb2ludCBtX2N1cnJlbnRQb3NpdGlvbjsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25TbW9vdGg+IG1fc2Nyb2xsQW5p
bWF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yPiBt
X2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggZmEyNGYy
MjdkNTM5MWYzZDMwYzljNTFmY2ZmN2Y2YzRmZTBhYjVmYS4uOGUyNGQzYjYxYjkyNGY1NTQ2YjI2
MTkwOWJjZDMzMGVmZGRmNGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0
b3IuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC03Niw2ICs3NywzMCBA
QCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdG9wS2V5Ym9hcmRTY3JvbGxpbmco
KQogICAgIHNldElzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcoZmFsc2UpOwogfQogCitib29s
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5h
dGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBGbG9hdFBvaW50IGRlc3RpbmF0aW9uT2Zmc2V0
KQoreworICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCisgICAgICAgIG1fY3VycmVudEFuaW1h
dGlvbi0+c3RvcCgpOworCisgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3Jv
bGxBbmltYXRpb25TbW9vdGg+KCp0aGlzKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5p
bWF0aW9uU21vb3RoPigqbV9jdXJyZW50QW5pbWF0aW9uKS5zdGFydEFuaW1hdGVkU2Nyb2xsVG9E
ZXN0aW5hdGlvbihzdGFydE9mZnNldCwgZGVzdGluYXRpb25PZmZzZXQpOworfQorCitib29sIFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWdhcmdldEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9p
bnQgbmV3RGVzdGluYXRpb25PZmZzZXQpCit7CisgICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25T
bW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBBU1NFUlQobV9jdXJyZW50QW5pbWF0aW9uLT5pc0FjdGl2ZSgpKTsKKyAgICBy
ZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqbV9jdXJyZW50QW5pbWF0aW9u
KS5yZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihuZXdEZXN0aW5hdGlvbk9mZnNldCk7Cit9CisKK3Zv
aWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BBbmltYXRlZFNjcm9sbCgpCit7Cisg
ICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbikKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uLT5z
dG9wKCk7Cit9CisKIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNldElzQW5pbWF0
aW5nUnViYmVyQmFuZChib29sIGlzQW5pbWF0aW5nUnViYmVyQmFuZCkKIHsKICAgICBpZiAoaXNB
bmltYXRpbmdSdWJiZXJCYW5kID09IG1faXNBbmltYXRpbmdSdWJiZXJCYW5kKQpAQCAtMTAzLDYg
KzEyOCwxMiBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzZXRJc0FuaW1hdGlu
Z0tleWJvYXJkU2Nyb2xsaW5nKGJvb2wgaXNBbmltYXRpbgogICAgIHN0YXJ0T3JTdG9wQW5pbWF0
aW9uQ2FsbGJhY2tzKCk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmNv
bnRlbnRzU2l6ZUNoYW5nZWQoKQoreworICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCisgICAg
ICAgIG1fY3VycmVudEFuaW1hdGlvbi0+dXBkYXRlU2Nyb2xsRXh0ZW50cygpOworfQorCiBib29s
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1c2VzU2Nyb2xsU25hcCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuICEhbV9zY3JvbGxTbmFwU3RhdGU7CkBAIC0xMzYsNiArMTY3LDcgQEAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFjdGl2ZVNjcm9s
bFNuYXBJbmRleEZvckF4aXMKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICByZXR1cm4gbV9zY3JvbGxTbmFwU3RhdGUtPmFj
dGl2ZVNuYXBJbmRleEZvckF4aXMoYXhpcyk7CiB9CiAKQEAgLTE4NCw2ICsyMTYsMjggQEAgdm9p
ZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRpbmdTdGF0ZShNb25vdG9uaWMKICAgICBtX2NsaWVudC5rZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yKCktPnVwZGF0ZUtleWJvYXJkU2Nyb2xsUG9zaXRpb24oY3VycmVudFRpbWUpOwogfQogCit2
b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxUb09mZnNldEZvckFuaW1hdGlv
bihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxPZmZzZXQpCit7CisgICAgYXV0byBjdXJyZW50T2Zm
c2V0ID0gbV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCk7CisgICAgYXV0byBzY3JvbGxEZWx0YSA9IHNj
cm9sbE9mZnNldCAtIGN1cnJlbnRPZmZzZXQ7CisgICAgbV9jbGllbnQuaW1tZWRpYXRlU2Nyb2xs
Qnkoc2Nyb2xsRGVsdGEpOworfQorCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpz
Y3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2lu
dCYgY3VycmVudE9mZnNldCkKK3sKKyAgICBzY3JvbGxUb09mZnNldEZvckFuaW1hdGlvbihjdXJy
ZW50T2Zmc2V0KTsKK30KKwordm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xs
QW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpCit7CisgICAgbV9jbGllbnQuc2V0U2Ny
b2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uKTsK
K30KKworU2Nyb2xsRXh0ZW50cyBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsRXh0
ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKQoreworICAgIHJldHVybiBtX2NsaWVu
dC5zY3JvbGxFeHRlbnRzKCk7Cit9CisKIC8vIEN1cnJlbnRseSwgb25seSBNYWMgc3VwcG9ydHMg
bW9tZW50dW0gc3JvbGxpbmctYmFzZWQgc2Nyb2xsc25hcHBpbmcgYW5kIHJ1YmJlciBiYW5kaW5n
CiAvLyBzbyBhbGwgb2YgdGhlc2UgbWV0aG9kcyBhcmUgYSBub29wIG9uIG5vbi1NYWMgcGxhdGZv
cm1zLgogI2lmICFQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCBhNzE0NmRiYmJjZmExMWExZWE4
NjY2NjU3OTYwMDVlZTAzMWI1NTU2Li4wN2UxNDY5Y2I1MDA1OWZlZGY4Y2MyMmE3ZmM4NDk5MDI2
YWQ0NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUu
aCIKIAogI2luY2x1ZGUgIlJlY3RFZGdlcy5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbi5o
IgogI2luY2x1ZGUgIlNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKQEAgLTgwLDYgKzgx
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGlu
ZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzVmVydGljYWxTY3JvbGxpbmco
KSBjb25zdCA9IDA7CiAKKyAgICAvLyBGSVhNRTogTWF5YmUgU2Nyb2xsQmVoYXZpb3JTdGF0dXMg
c2hvdWxkIGJlIHN0b3JlZCBvbiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci4KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXMpID0g
MDsKKyAgICB2aXJ0dWFsIFNjcm9sbEJlaGF2aW9yU3RhdHVzIHNjcm9sbEJlaGF2aW9yU3RhdHVz
KCkgY29uc3QgPSAwOworCiAjaWYgSEFWRShSVUJCRVJfQkFORElORykKICAgICB2aXJ0dWFsIGJv
b2wgYWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgY29uc3QgPSAwOwpAQCAtMTE2LDE3ICsxMjEsMjEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgU2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzKCkgY29uc3Qg
PSAwOwogfTsKIAotY2xhc3MgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgeworY2xhc3MgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgOiBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcik7CiAK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcihTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCYpOwotICAgIH5TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcigpOworICAgIHZpcnR1YWwgflNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyKCk7CiAKICAg
ICBib29sIHVzZXNTY3JvbGxTbmFwKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wQWxsVGltZXJzKCk7
CiAgICAgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKIAorICAgIGJvb2wgc3RhcnRBbmlt
YXRlZFNjcm9sbFRvRGVzdGluYXRpb24oRmxvYXRQb2ludCBzdGFydE9mZnNldCwgRmxvYXRQb2lu
dCBkZXN0aW5hdGlvbk9mZnNldCk7CisgICAgYm9vbCByZWdhcmdldEFuaW1hdGVkU2Nyb2xsKEZs
b2F0UG9pbnQgbmV3RGVzdGluYXRpb25PZmZzZXQpOworICAgIHZvaWQgc3RvcEFuaW1hdGVkU2Ny
b2xsKCk7CisKICAgICB2b2lkIGJlZ2luS2V5Ym9hcmRTY3JvbGxpbmcoKTsKICAgICB2b2lkIHN0
b3BLZXlib2FyZFNjcm9sbGluZygpOwogICAgIApAQCAtMTM0LDYgKzE0Myw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWUpOwogCiAgICAgdm9pZCB1
cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwor
ICAgIAorICAgIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBzZXRTbmFw
T2Zmc2V0c0luZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgY29u
c3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsK
QEAgLTIwMiw4ICsyMTMsMTcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydE9y
U3RvcEFuaW1hdGlvbkNhbGxiYWNrcygpOworICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXRGb3JBbmlt
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsT2Zmc2V0KTsKKworICAgIC8vIFNjcm9sbEFu
aW1hdGlvbkNsaWVudAorICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFu
aW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIC8qIGN1cnJlbnRPZmZzZXQgKi8pIGZpbmFsOwor
ICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOwor
ICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRp
b24mKSAgZmluYWw7CiAKICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCYgbV9j
bGllbnQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uPiBtX2N1cnJlbnRB
bmltYXRpb247CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+
IG1fc2Nyb2xsU25hcFN0YXRlOwogICAgIGJvb2wgbV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRD
aGFuZ2UgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KaW5kZXggMjk0OTBkOGFlYzgzYzNh
MjI3ZDNiZTU2OWZhY2FkMjQxOThkZDAxNy4uYWMyNzc0NjQ1MjM4NjZkOGJlYjlkMzA3YjJkYzAx
NGE3ZmE3MmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpAQCAtNzU3LDExICs3NTcsMTAgQEAgdm9p
ZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0
YXRlKE1vbm90b25pY1RpbWUgY3UKIAogICAgIGJvb2wgaXNBbmltYXRpb25Db21wbGV0ZTsKICAg
ICBhdXRvIGFuaW1hdGlvbk9mZnNldCA9IG1fc2Nyb2xsU25hcFN0YXRlLT5jdXJyZW50QW5pbWF0
ZWRTY3JvbGxPZmZzZXQoY3VycmVudFRpbWUsIGlzQW5pbWF0aW9uQ29tcGxldGUpOwotICAgIGF1
dG8gY3VycmVudE9mZnNldCA9IG1fY2xpZW50LnNjcm9sbE9mZnNldCgpOworICAgIExPR19XSVRI
X1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
ICIgPDwgdGhpcyA8PCAiIHVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZSAtIGlzQW5pbWF0
aW9uQ29tcGxldGUgIiA8PCBpc0FuaW1hdGlvbkNvbXBsZXRlIDw8ICIgYW5pbWF0aW9uT2Zmc2V0
ICIgPDwgYW5pbWF0aW9uT2Zmc2V0IDw8ICIgKG1haW4gdGhyZWFkICIgPDwgaXNNYWluVGhyZWFk
KCkgPDwgIikiKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwg
IlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIHVwZGF0ZVNjcm9sbFNu
YXBBbmltYXRpbmdTdGF0ZSAtIGlzQW5pbWF0aW9uQ29tcGxldGUgIiA8PCBpc0FuaW1hdGlvbkNv
bXBsZXRlIDw8ICIgY3VycmVudE9mZnNldCAiIDw8IGN1cnJlbnRPZmZzZXQgPDwgIiAobWFpbiB0
aHJlYWQgIiA8PCBpc01haW5UaHJlYWQoKSA8PCAiKSIpOworICAgIHNjcm9sbFRvT2Zmc2V0Rm9y
QW5pbWF0aW9uKGFuaW1hdGlvbk9mZnNldCk7CiAKLSAgICBtX2NsaWVudC5pbW1lZGlhdGVTY3Jv
bGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKEZsb2F0U2l6ZShhbmltYXRpb25PZmZz
ZXQueCgpIC0gY3VycmVudE9mZnNldC54KCksIGFuaW1hdGlvbk9mZnNldC55KCkgLSBjdXJyZW50
T2Zmc2V0LnkoKSkpOwogICAgIGlmIChpc0FuaW1hdGlvbkNvbXBsZXRlKSB7CiAgICAgICAgIG1f
c2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRTdGF0ZSgpOwog
ICAgICAgICBzdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpOwo=
</data>
<flag name="commit-queue"
          id="462667"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439097</attachid>
            <date>2021-09-23 15:02:42 -0700</date>
            <delta_ts>2021-09-23 15:50:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230720-20210923150241.patch</filename>
            <type>text/plain</type>
            <size>36035</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyOTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTUzMTNlOTAxZjU5Mjdm
YzRmODMyNjEyNTRjMjUyNzQ5OTYyZjRiYS4uODUzOTcyN2Q3NDI1MTUxMTQxNmVhMjc3MjA2YzAz
ZWYyN2M3YzQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA5LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgdGhlIFNj
cm9sbEFuaW1hdGlvblNtb290aCBmcm9tIFNjcm9sbEFuaW1hdG9yIGludG8gU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMDcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIGlzIHdoZXJlIGFsbCB0aGUgU2Nyb2xs
QW5pbWF0aW9ucyB3aWxsIGxpdmUuIFRoZSBmaXJzdAorICAgICAgICBzdGVwIGlzIHRvIG1vdmUg
U2Nyb2xsQW5pbWF0b3IncyBtX3Njcm9sbEFuaW1hdGlvbiB0aGVyZTsgdGhpcyBpcyB1c2VkIGZv
cgorICAgICAgICBrZXlib2FyZCBzY3JvbGxpbmcsIGFuZCBDU1Mgc21vb3RoIHNjcm9sbGluZy4K
KworICAgICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciBiZWNvbWVzIGEgU2Nyb2xsQW5p
bWF0aW9uQ2xpZW50IChhbmQgU2Nyb2xsQW5pbWF0b3Igc3RvcHMKKyAgICAgICAgYmVpbmcgb25l
KSwgc28gbmVlZHMgYSBsaXR0bGUgYml0IG1vcmUgZ2x1ZSBjb2RlLgorCisgICAgICAgIEFkZCB0
eXBlIHRyYWl0cyBmb3IgU2Nyb2xsQW5pbWF0b3Igc3ViY2xhc3NlcyBiZWNhdXNlIHdlIG5lZWQg
dG8gZG93bmNhc3Q8PiB0aGVtCisgICAgICAgIGhlcmUgYW5kIGluIGZ1dHVyZSBwYXRjaGVzLgor
CisgICAgICAgIE1vdmUgc29tZSBjb2RlIGZyb20gU2Nyb2xsQW5pbWF0b3JNYWMgaW50byBTY3Jv
bGxBbmltYXRvciBzaW5jZSBpdCdzIG5vdCBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYy4KKwor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTWFjLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjppbW1lZGlhdGVTY3JvbGxPbkF4aXMpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0aW9uOjpTY3JvbGxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0aW9uOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25LaW5ldGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlv
bktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMpOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25Nb21lbnR1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1
bTo6U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvbk1vbWVudHVtLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21v
b3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xs
QW5pbWF0aW9uU21vb3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpyZXRhcmdldFJ1bm5pbmdBbmltYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNldFNjcm9sbEJlaGF2aW9yU3RhdHVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxCZWhhdmlvclN0YXR1
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6YWRqdXN0U2Nyb2xs
UG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjphZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjppbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50
RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjppbW1l
ZGlhdGVTY3JvbGxCeSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y2FuY2Vs
QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y29udGVudHNT
aXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aW1tZWRpYXRl
U2Nyb2xsT25BeGlzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
Ojpjb250ZW50c1NpemVDaGFuZ2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50c0Zv
ckFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRBbmltYXRl
ZFNjcm9sbFRvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OnJlZ2FyZ2V0QW5pbWF0ZWRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BBbmltYXRlZFNjcm9sbCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6Y29udGVudHNTaXplQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6YWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsVG9PZmZzZXRGb3JBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbkRp
ZFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQ6OnJ1YmJlckJhbmRpbmdTdGF0ZUNoYW5nZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yTWFjOjphZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphZGp1c3RTY3Jv
bGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdl
Q29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JN
YWM6OmltbWVkaWF0ZVNjcm9sbEJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRlKToKKwog
MjAyMS0wOS0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbmlmeSBtb3JlIG1lZGlhLXJlbGF0ZWQgV2ViQ29yZSBzb3VyY2UgZmlsZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCmluZGV4IGQ4NmM5NzUx
YjRmYmE4OWZhMjVjMGU5MjA2M2VlZDcyMzNhYTNlMDEuLjFiNGZlZmNlNWE5MGJjZTkzOGJmMmFi
ZjEyZDgzZWE3YzViZDczMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaApAQCAtODIsNiArODIsOSBAQCBwcml2YXRlOgogICAgIFJlY3RFZGdlczxi
b29sPiBlZGdlUGlubmVkU3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGFsbG93c0hvcml6
b250YWxTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGFsbG93c1ZlcnRpY2FsU2Ny
b2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhT
Y3JvbGxCZWhhdmlvclN0YXR1cyBzdGF0dXMpIGZpbmFsIHsgbV9zY3JvbGxCZWhhdmlvclN0YXR1
cyA9IHN0YXR1czsgfQorICAgIFNjcm9sbEJlaGF2aW9yU3RhdHVzIHNjcm9sbEJlaGF2aW9yU3Rh
dHVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zY3JvbGxCZWhhdmlvclN0YXR1czsgfQorCiAg
ICAgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYpIGZp
bmFsOwogICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJh
aW50cyhjb25zdCBGbG9hdFNpemUmKSBmaW5hbDsKQEAgLTkzLDcgKzk2LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNjcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICBG
bG9hdFBvaW50IHNjcm9sbE9mZnNldCgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgaW1tZWRpYXRl
U2Nyb2xsT25BeGlzKFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgZGVsdGEpIGZpbmFsOwogICAgIGZs
b2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgd2lsbFN0YXJ0U2Ny
b2xsU25hcEFuaW1hdGlvbigpIGZpbmFsOwogICAgIHZvaWQgZGlkU3RvcFNjcm9sbFNuYXBBbmlt
YXRpb24oKSBmaW5hbDsKQEAgLTEwOCw2ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJ1bkxvb3A6OlRpbWVyPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM+PiBtX3Njcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lcjsKIAorICAgIFNjcm9sbEJl
aGF2aW9yU3RhdHVzIG1fc2Nyb2xsQmVoYXZpb3JTdGF0dXMgeyBTY3JvbGxCZWhhdmlvclN0YXR1
czo6Tm90SW5BbmltYXRpb24gfTsKICAgICBib29sIG1faW5Nb21lbnR1bVBoYXNlIHsgZmFsc2Ug
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMu
bW0KaW5kZXggZjcxZmQ0N2Q4YzI0MGI5N2I3OTExZWIyY2YzYTFkMzJmNTJiMTQ4Yy4uYjhmZmM3
MzQzODI4NzAyNjA2OThmOGI3OTZmNjU0MDI0ODlmNDkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KQEAgLTM3OSwxOCArMzc5LDYgQEAgRmxv
YXRQb2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzY3JvbGxPZmZz
ZXQoKSBjb25zdAogICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsT2Zmc2V0RnJvbVBv
c2l0aW9uKGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxPcmlnaW4oKSk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6aW1tZWRpYXRlU2Nyb2xs
T25BeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZWx0YSkKLXsKLSAgICBjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiA9IGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpOwotICAg
IEZsb2F0UG9pbnQgY2hhbmdlOwotICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCkKLSAgICAgICAgY2hhbmdlID0gRmxvYXRQb2ludChzY3JvbGxQb3NpdGlvbi54KCkg
KyBkZWx0YSwgc2Nyb2xsUG9zaXRpb24ueSgpKTsKLSAgICBlbHNlCi0gICAgICAgIGNoYW5nZSA9
IEZsb2F0UG9pbnQoc2Nyb2xsUG9zaXRpb24ueCgpLCBzY3JvbGxQb3NpdGlvbi55KCkgKyBkZWx0
YSk7Ci0KLSAgICBpbW1lZGlhdGVTY3JvbGxCeShjaGFuZ2UgLSBzY3JvbGxQb3NpdGlvbik7Ci19
Ci0KIGZsb2F0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnBhZ2VTY2Fs
ZUZhY3RvcigpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJu
IGZvciBub24tcm9vdCBmcmFtZXMsIGFuZCBvdmVyZmxvdz8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uLmgKaW5kZXggMjEzN2VkNGIyOTE2ZjlmNWNjMjQyZTMzMjlhMWZj
ODA3YTU0NzIzYy4uNWM2NGFkN2UyNzU4MWE3NDA2MDczMmJlOWRhNzBmOWM1OTQ3ZjM2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTQ3LDEwICs0Nywx
OSBAQCBwdWJsaWM6CiBjbGFzcyBTY3JvbGxBbmltYXRpb24gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdGlvbihTY3JvbGxBbmltYXRpb25D
bGllbnQmIGNsaWVudCkKKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBTbW9vdGgsCisg
ICAgICAgIEtpbmV0aWMsCisgICAgICAgIE1vbWVudHVtLAorICAgIH07CisKKyAgICBTY3JvbGxB
bmltYXRpb24oVHlwZSBhbmltYXRpb25UeXBlLCBTY3JvbGxBbmltYXRpb25DbGllbnQmIGNsaWVu
dCkKICAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgICAgICwgbV9hbmltYXRpb25UeXBl
KGFuaW1hdGlvblR5cGUpCiAgICAgeyB9CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uKCkg
PSBkZWZhdWx0OworICAgIAorICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0
aW9uVHlwZTsgfQogCiAgICAgdmlydHVhbCBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNv
bnN0IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uT2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3AoKSA9IDA7CkBAIC02Miw2ICs3MSwxMiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBTY3JvbGxBbmltYXRpb25DbGllbnQmIG1fY2xpZW50OworICAgIGNvbnN0IFR5cGUgbV9h
bmltYXRpb25UeXBlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZGVmaW5lIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMX0FOSU1BVElPTihUb1ZhbHVlVHlwZU5hbWUsIHBy
ZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUp
IFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9u
JiBzY3JvbGxBbmltYXRpb24pIHsgcmV0dXJuIHNjcm9sbEFuaW1hdGlvbi5wcmVkaWNhdGU7IH0g
XAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAppbmRleCBiYTI1N2RhMzQ2ODA4YzQz
YmI5Yzc1OTVhY2Q2MTMzYzgyZWEzZDY0Li5hOWI2NjU0YTZiYjY2NTk1ZDJlMzU3NjMwZDU0NGY0
ZGJiYjg1Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25LaW5ldGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25LaW5ldGljLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25kcyB0aW1lRGVsdGEpCiB9
CiAKIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xs
QW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCi0gICAgOiBTY3JvbGxBbmltYXRpb24oY2xpZW50KQor
ICAgIDogU2Nyb2xsQW5pbWF0aW9uKFR5cGU6OktpbmV0aWMsIGNsaWVudCkKICAgICAsIG1fYW5p
bWF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYzo6YW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCmlu
ZGV4IDYyYTc0NjFhZWE1YjA0NmUwZjYxYjg0MGRiMTMyMzMzYTZjNTI2YjAuLjEzY2UzMjk2NGJk
YWZmNjlmNDQ1ZDE3YmYxMjgxMWJjMGUxMmZlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKQEAgLTg2LDMgKzg2LDUgQEAgcHJpdmF0
ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19TQ1JPTExfQU5JTUFUSU9OKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMsIHR5cGUo
KSA9PSBXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OlR5cGU6OktpbmV0aWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAKaW5kZXgg
NGE0NzlmOGM4MTEyMDAwNDkxMzVlZDc3ZDNlNzBjMjFkMmNjZTU1MC4uZmE1NzM2OTE1NGEzODc5
NDI5MzBkNmY4MzU1ZGVmMWM3ZmVkMDczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcApAQCAtMzIsNyArMzIsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6U2Nyb2xsQW5pbWF0
aW9uTW9tZW50dW0oU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCi0gICAgOiBTY3JvbGxB
bmltYXRpb24oY2xpZW50KQorICAgIDogU2Nyb2xsQW5pbWF0aW9uKFR5cGU6Ok1vbWVudHVtLCBj
bGllbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbk1vbWVudHVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25Nb21lbnR1bS5oCmluZGV4IDZlNmE2NjE2ZmNkOTU2NTJlODM5YjU3YzlmZTA2NGJkYzFj
N2IzZTYuLjY2NDJkY2I1NDZlZmQ5MDkzOWI4ZmY1MjE4MGZiMDM5MDkzZGI0ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaApAQCAt
NTEsMyArNTEsNSBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NDUk9MTF9BTklNQVRJT04oV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0aW9uTW9tZW50dW0sIHR5cGUoKSA9PSBXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OlR5cGU6
Ok1vbWVudHVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
blNtb290aC5jcHAKaW5kZXggNzBlOTRhOWM2ZjRjZGIyNGVmYWE4MmUxOGM2MWFhMDlkNWJjZTI3
OS4uYjA2ZjJmMjRlYTU3NTEyNTA0ZjcyMjFkMGI5YjIyYmE4MjA5MzJiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC00NSw3
ICs0NSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVtVGltZXJJbnRlcnZhbCB7
IDFfbXMgfTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1heEFuaW1hdGlvbkR1cmF0aW9uIHsgMjAw
X21zIH07CiAKIFNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNj
cm9sbEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQotICAgIDogU2Nyb2xsQW5pbWF0aW9uKGNsaWVu
dCkKKyAgICA6IFNjcm9sbEFuaW1hdGlvbihUeXBlOjpTbW9vdGgsIGNsaWVudCkKICAgICAsIG1f
YW5pbWF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsQW5pbWF0aW9u
U21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKQogICAgICwgbV9lYXNlSW5PdXRUaW1pbmdGdW5j
dGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbjo6VGltaW5nRnVuY3Rpb25QcmVzZXQ6OkVhc2VJbk91dCkpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCmluZGV4IDVhZmRjMTNk
NzljZjg3YzM5Njc1MDYzZDcyNjMwMzE2ZDMxNDFjNTMuLjFkMjM0YTI5MmQ3NzY2OTg4MzE3YzE4
MGZhNTQ5NWQ2NTVkYmZhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvblNtb290aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvblNtb290aC5oCkBAIC03MywzICs3Myw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExfQU5JTUFUSU9O
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aCwgdHlwZSgpID09IFdlYkNvcmU6OlNjcm9s
bEFuaW1hdGlvbjo6VHlwZTo6U21vb3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuY3BwCmluZGV4IGM5MDRjZTFhYWM3ZmU3N2RiYzRjYzkxNmVkYjQ3ZTNlN2RkZjYw
MjguLjBmODNjODJlY2QwY2FjZTgzZGY5MTAyZjViYWI1NWQ2YmEwNjM4YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNp
bmNsdWRlICJLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0U2l6
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlNjcm9sbEFu
aW1hdGlvblNtb290aC5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyc0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5oIgpAQCAtNTUsNyArNTQsNiBAQCBTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3Io
U2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogICAgIDogbV9zY3JvbGxhYmxlQXJlYShz
Y3JvbGxhYmxlQXJlYSkKICAgICAsIG1fc2Nyb2xsQ29udHJvbGxlcigqdGhpcykKICAgICAsIG1f
c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxBbmltYXRp
b24obWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KCp0aGlzKSkKICAgICAsIG1fa2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRvcihtYWtlVW5pcXVlPEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0
b3I+KCp0aGlzLCBtX3Njcm9sbENvbnRyb2xsZXIpKQogewogfQpAQCAtOTMsNyArOTEsNyBAQCBi
b29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRp
b24sIFNjcm9sbEdyYW51bGFyaXR5CiAgICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBvZmZzZXRG
cm9tUG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwogICAgICAgICBhdXRvIGV4dGVudHMgPSBz
Y3JvbGxFeHRlbnRzKCk7CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25PZmZzZXQgPSAoc3RhcnRP
ZmZzZXQgKyBkZWx0YSkuY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11bVNjcm9sbE9m
ZnNldCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKSk7Ci0gICAgICAgIHJldHVybiBt
X3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oc3RhcnRP
ZmZzZXQsIGRlc3RpbmF0aW9uT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJv
bGxlci5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihzdGFydE9mZnNldCwgZGVzdGlu
YXRpb25PZmZzZXQpOwogICAgIH0KIAogICAgIHJldHVybiBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91
dEFuaW1hdGlvbihjdXJyZW50UG9zaXRpb24oKSArIGRlbHRhKTsKQEAgLTEwOSw3ICsxMDcsNyBA
QCBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihj
b25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbgogICAgIGlmIChhZGp1c3RlZFBvc2l0aW9uID09IGN1
cnJlbnRQb3NpdGlvbiAmJiBhZGp1c3RlZFBvc2l0aW9uID09IHNjcm9sbGFibGVBcmVhKCkuc2Ny
b2xsUG9zaXRpb24oKSAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5DaGFuZ2VkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zdG9wKCk7
CisgICAgbV9zY3JvbGxDb250cm9sbGVyLnN0b3BBbmltYXRlZFNjcm9sbCgpOwogCiAgICAgc2V0
Q3VycmVudFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24sIE5vdGlmeVNjcm9sbGFibGVBcmVhOjpZ
ZXMpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTIxLDE2ICsxMTksMTUgQEAgYm9vbCBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYg
bmV3UG9zaXRpb24KICAgICBpZiAoIXBvc2l0aW9uQ2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEo
KS5zY3JvbGxPcmlnaW5DaGFuZ2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1f
c2Nyb2xsQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihvZmZzZXRG
cm9tUG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pLCBvZmZzZXRGcm9tUG9zaXRpb24obmV3UG9z
aXRpb24pKTsKLSAgICBzY3JvbGxhYmxlQXJlYSgpLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNj
cm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5hdGl2ZUFuaW1hdGlvbik7CisgICAgbV9zY3JvbGxD
b250cm9sbGVyLnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKG9mZnNldEZyb21Qb3Np
dGlvbihtX2N1cnJlbnRQb3NpdGlvbiksIG9mZnNldEZyb21Qb3NpdGlvbihuZXdQb3NpdGlvbikp
OworICAgIHNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5v
bk5hdGl2ZUFuaW1hdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU2Nyb2xsQW5p
bWF0b3I6OnJldGFyZ2V0UnVubmluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3Np
dGlvbikKIHsKICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEoKS5jdXJyZW50U2Nyb2xsQmVoYXZp
b3JTdGF0dXMoKSA9PSBTY3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25OYXRpdmVBbmltYXRpb24p
OwotICAgIEFTU0VSVChtX3Njcm9sbEFuaW1hdGlvbi0+aXNBY3RpdmUoKSk7Ci0gICAgbV9zY3Jv
bGxBbmltYXRpb24tPnJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKG5ld1Bvc2l0aW9uKTsKKyAgICBt
X3Njcm9sbENvbnRyb2xsZXIucmVnYXJnZXRBbmltYXRlZFNjcm9sbChvZmZzZXRGcm9tUG9zaXRp
b24obmV3UG9zaXRpb24pKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6b2Zmc2V0
RnJvbVBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25zdApAQCAtMjkwLDYg
KzI4NywxNiBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjphbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEuYWxsb3dzVmVydGljYWxTY3JvbGxp
bmcoKTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6c2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMo
U2Nyb2xsQmVoYXZpb3JTdGF0dXMgc3RhdHVzKQoreworICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0
U2Nyb2xsQmVoYXZpb3JTdGF0dXMoc3RhdHVzKTsKK30KKworU2Nyb2xsQmVoYXZpb3JTdGF0dXMg
U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYS5jdXJyZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMoKTsKK30KKwog
I2lmIEhBVkUoUlVCQkVSX0JBTkRJTkcpCiBJbnRTaXplIFNjcm9sbEFuaW1hdG9yOjpzdHJldGNo
QW1vdW50KCkgY29uc3QKIHsKQEAgLTMxMywxNiArMzIwLDQxIEBAIGJvb2wgU2Nyb2xsQW5pbWF0
b3I6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkgY29uc3QK
IH0KICNlbmRpZgogCi0vLyBGSVhNRTogVW51c2VkLgotdm9pZCBTY3JvbGxBbmltYXRvcjo6aW1t
ZWRpYXRlU2Nyb2xsT25BeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZWx0YSkKK3Zv
aWQgU2Nyb2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2Fy
eSgpCiB7Ci0gICAgRmxvYXRTaXplIGRlbHRhU2l6ZTsKLSAgICBpZiAoYXhpcyA9PSBTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwpCi0gICAgICAgIGRlbHRhU2l6ZS5zZXRXaWR0aChkZWx0YSk7
Ci0gICAgZWxzZQotICAgICAgICBkZWx0YVNpemUuc2V0SGVpZ2h0KGRlbHRhKTsKKyAgICBib29s
IGN1cnJlbnRseUNvbnN0cmFpbnNUb0NvbnRlbnRFZGdlID0gbV9zY3JvbGxhYmxlQXJlYS5jb25z
dHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpOworICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0
Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7CisKKyAgICBhdXRvIGN1cnJl
bnRTY3JvbGxQb3NpdGlvbiA9IG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsUG9zaXRpb24oKTsKKyAg
ICBhdXRvIGNvbnN0cmFpbmVkUG9zaXRpb24gPSBtX3Njcm9sbGFibGVBcmVhLmNvbnN0cmFpblNj
cm9sbFBvc2l0aW9uKGN1cnJlbnRTY3JvbGxQb3NpdGlvbik7CisgICAgaW1tZWRpYXRlU2Nyb2xs
QnkoY29uc3RyYWluZWRQb3NpdGlvbiAtIGN1cnJlbnRTY3JvbGxQb3NpdGlvbik7CiAKLSAgICBz
Y3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjdXJyZW50UG9zaXRpb24oKSArIGRlbHRh
U2l6ZSk7CisgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250
ZW50RWRnZShjdXJyZW50bHlDb25zdHJhaW5zVG9Db250ZW50RWRnZSk7Cit9CisKK0Zsb2F0UG9p
bnQgU2Nyb2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbFBvc2l0aW9uSWZOZWNlc3NhcnkoY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXRpb24pIGNvbnN0Cit7CisgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVh
LmNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkpCisgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmNvbnN0cmFpblNjcm9sbFBvc2l0
aW9uKFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uKSk7Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6
OmltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxv
YXRTaXplJiBkZWx0YSkKK3sKKyAgICBtX3Njcm9sbGFibGVBcmVhLnNldENvbnN0cmFpbnNTY3Jv
bGxpbmdUb0NvbnRlbnRFZGdlKGZhbHNlKTsKKyAgICBpbW1lZGlhdGVTY3JvbGxCeShkZWx0YSk7
CisgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRn
ZSh0cnVlKTsKK30KKwordm9pZCBTY3JvbGxBbmltYXRvcjo6aW1tZWRpYXRlU2Nyb2xsQnkoY29u
c3QgRmxvYXRTaXplJiBkZWx0YSkKK3sKKyAgICBGbG9hdFBvaW50IGN1cnJlbnRQb3NpdGlvbiA9
IHRoaXMtPmN1cnJlbnRQb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRpb24gPSBh
ZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5KGN1cnJlbnRQb3NpdGlvbiArIGRlbHRhKTsK
KyAgICBpZiAobmV3UG9zaXRpb24gPT0gY3VycmVudFBvc2l0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBzZXRDdXJyZW50UG9zaXRpb24obmV3UG9zaXRpb24sIE5vdGlmeVNjcm9sbGFibGVB
cmVhOjpZZXMpOwogfQogCiBTY3JvbGxFeHRlbnRzIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRl
bnRzKCkgY29uc3QKQEAgLTM4NSwxMyArNDE3LDEzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJl
bW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRU
CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmNhbmNlbEFuaW1hdGlvbnMoKQogewotICAgIG1fc2Ny
b2xsQW5pbWF0aW9uLT5zdG9wKCk7CisgICAgbV9zY3JvbGxDb250cm9sbGVyLnN0b3BBbmltYXRl
ZFNjcm9sbCgpOwogICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS5j
YW5jZWxBbmltYXRpb25zKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OmNvbnRlbnRzU2l6
ZUNoYW5nZWQoKSBjb25zdAordm9pZCBTY3JvbGxBbmltYXRvcjo6Y29udGVudHNTaXplQ2hhbmdl
ZCgpCiB7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4dGVudHMoKTsKKyAg
ICBtX3Njcm9sbENvbnRyb2xsZXIuY29udGVudHNTaXplQ2hhbmdlZCgpOwogfQogCiBGbG9hdFBv
aW50IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxPZmZzZXRBZGp1c3RlZEZvclNuYXBwaW5nKGNvbnN0
IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kIG1ldGhv
ZCkgY29uc3QKQEAgLTQyMywyMCArNDU1LDQgQEAgZmxvYXQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9s
bE9mZnNldEFkanVzdGVkRm9yU25hcHBpbmcoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnMKICAg
ICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFkanVzdGVkU2Nyb2xsRGVzdGluYXRpb24oYXhp
cywgbmV3T2Zmc2V0LCB2ZWxvY2l0eUluU2Nyb2xsQXhpcywgb3JpZ2luYWxPZmZzZXQpOwogfQog
Ci12b2lkIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5p
bWF0aW9uJiwgY29uc3QgRmxvYXRQb2ludCYgY3VycmVudE9mZnNldCkKLXsKLSAgICBzZXRDdXJy
ZW50UG9zaXRpb24ocG9zaXRpb25Gcm9tT2Zmc2V0KGN1cnJlbnRPZmZzZXQpLCBOb3RpZnlTY3Jv
bGxhYmxlQXJlYTo6WWVzKTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0
aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpCi17Ci0gICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRT
Y3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24p
OwotfQotCi1TY3JvbGxFeHRlbnRzIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5p
bWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpCi17Ci0gICAgcmV0dXJuIHNjcm9sbEV4dGVudHMoKTsK
LX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuaAppbmRleCBiNmEwYmRlYmRjMTc1ZDc5MmM4ZTFjZTBjYTk1NGVlMzVhZTAw
ZTQ4Li5iM2FmYWE4NWViZjg5ZGNjYmMyNTY2ZTZmMmFlZTFjMWZmMTk2NWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2lu
Y2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLSNp
bmNsdWRlICJTY3JvbGxBbmltYXRpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RN
b25pdG9yLmgiCkBAIC01Miw3ICs1MSw3IEBAIGNsYXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsK
IAogY2xhc3MgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcjsKIAotY2xhc3MgU2Nyb2xs
QW5pbWF0b3IgOiBwcml2YXRlIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50LCBwdWJs
aWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKK2NsYXNzIFNjcm9sbEFuaW1hdG9yIDogcHJpdmF0
ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmlt
YXRvcj4gY3JlYXRlKFNjcm9sbGFibGVBcmVhJik7CkBAIC03OCw3ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3Qg
RmxvYXRQb2ludCYsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpOwog
ICAgIGJvb2wgc2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYp
OwogCi0gICAgdm9pZCByZXRhcmdldFJ1bm5pbmdBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYp
OworICAgIHZvaWQgcmV0YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5l
d1Bvc2l0aW9uKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpOwogCkBAIC05OCw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKCkgY29uc3Q7CisgICAg
dm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKCk7CiAKICAgICBlbnVtIE5vdGlmeVNjcm9sbGFibGVB
cmVhIDogYm9vbCB7CiAgICAgICAgIE5vLCBZZXMKQEAgLTEyMiw5ICsxMjEsNiBAQCBwdWJsaWM6
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0
aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xp
ZW50Ci0gICAgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwg
Y29uc3QgRmxvYXRQb2ludCYgY3VycmVudE9mZnNldCkgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6CiAg
ICAgdm9pZCBub3RpZnlQb3NpdGlvbkNoYW5nZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSk7CiAK
QEAgLTEzNCw2ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgb2Zmc2V0RnJvbVBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25zdDsKICAgICBGbG9hdFBvaW50
IHBvc2l0aW9uRnJvbU9mZnNldChjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQpIGNvbnN0OwogCisg
ICAgRmxvYXRQb2ludCBhZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5KGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdDsKIAogICAgIC8vIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50
LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBj
cmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwpAQCAtMTQxLDEzICsxMzgsMTkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BBbmltYXRpb25DYWxsYmFjayhTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlciYpIGZpbmFsOwogCiAgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXQoKSBj
b25zdCBmaW5hbDsKLSAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4
aXMsIGZsb2F0IGRlbHRhKSBmaW5hbDsKICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25z
dCBmaW5hbDsKICAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHMoKSBjb25zdCBmaW5hbDsK
IAogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKIAorICAgIHZvaWQg
c2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXMpIGZpbmFsOworICAg
IFNjcm9sbEJlaGF2aW9yU3RhdHVzIHNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgY29uc3QgZmluYWw7
CisKKyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWlu
dHMoY29uc3QgRmxvYXRTaXplJikgZmluYWw7CisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeShj
b25zdCBGbG9hdFNpemUmKSBmaW5hbDsKKyAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9C
b3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOworCiAjaWYgSEFWRShSVUJCRVJfQkFORElORykKICAg
ICBJbnRTaXplIHN0cmV0Y2hBbW91bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZWN0RWRnZXM8Ym9v
bD4gZWRnZVBpbm5lZFN0YXRlKCkgY29uc3QgZmluYWw7CkBAIC0xNTksMTAgKzE2Miw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZv
clJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwg
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3QgZmluYWw7CiAjZW5kaWYK
IAotICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVudAotICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9u
RGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOwotICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xs
RXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKLQogICAgIHN0YXRp
YyBGbG9hdFNpemUgZGVsdGFGcm9tU3RlcChTY3JvbGxiYXJPcmllbnRhdGlvbiwgZmxvYXQgc3Rl
cCwgZmxvYXQgbXVsdGlwbGllcik7CiAKIHByb3RlY3RlZDoKQEAgLTE3Miw3ICsxNzEsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgVGltZXIgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXI7CiAg
ICAgRmxvYXRQb2ludCBtX2N1cnJlbnRQb3NpdGlvbjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxBbmltYXRpb25TbW9vdGg+IG1fc2Nyb2xsQW5pbWF0aW9uOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yPiBtX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0
b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggZmEyNGYyMjdkNTM5MWYzZDMwYzljNTFmY2ZmN2Y2
YzRmZTBhYjVmYS4uOGUyNGQzYjYxYjkyNGY1NTQ2YjI2MTkwOWJjZDMzMGVmZGRmNGY4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEu
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CkBAIC03Niw2ICs3NywzMCBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjpzdG9wS2V5Ym9hcmRTY3JvbGxpbmcoKQogICAgIHNldElzQW5pbWF0aW5nS2V5
Ym9hcmRTY3JvbGxpbmcoZmFsc2UpOwogfQogCitib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zm
c2V0LCBGbG9hdFBvaW50IGRlc3RpbmF0aW9uT2Zmc2V0KQoreworICAgIGlmIChtX2N1cnJlbnRB
bmltYXRpb24pCisgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOworCisgICAgbV9j
dXJyZW50QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KCp0aGlz
KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqbV9jdXJyZW50
QW5pbWF0aW9uKS5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihzdGFydE9mZnNldCwg
ZGVzdGluYXRpb25PZmZzZXQpOworfQorCitib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
OjpyZWdhcmdldEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3RGVzdGluYXRpb25PZmZzZXQp
Cit7CisgICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlv
bi5nZXQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBBU1NFUlQobV9jdXJy
ZW50QW5pbWF0aW9uLT5pc0FjdGl2ZSgpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5p
bWF0aW9uU21vb3RoPigqbV9jdXJyZW50QW5pbWF0aW9uKS5yZXRhcmdldEFjdGl2ZUFuaW1hdGlv
bihuZXdEZXN0aW5hdGlvbk9mZnNldCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OnN0b3BBbmltYXRlZFNjcm9sbCgpCit7CisgICAgaWYgKG1fY3VycmVudEFuaW1hdGlv
bikKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uLT5zdG9wKCk7Cit9CisKIHZvaWQgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNldElzQW5pbWF0aW5nUnViYmVyQmFuZChib29sIGlzQW5p
bWF0aW5nUnViYmVyQmFuZCkKIHsKICAgICBpZiAoaXNBbmltYXRpbmdSdWJiZXJCYW5kID09IG1f
aXNBbmltYXRpbmdSdWJiZXJCYW5kKQpAQCAtMTAzLDYgKzEyOCwxMiBAQCB2b2lkIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpzZXRJc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKGJvb2wg
aXNBbmltYXRpbgogICAgIHN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCk7CiB9CiAKK3Zv
aWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoKQorewor
ICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCisgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+
dXBkYXRlU2Nyb2xsRXh0ZW50cygpOworfQorCiBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjp1c2VzU2Nyb2xsU25hcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICEhbV9zY3JvbGxTbmFw
U3RhdGU7CkBAIC0xMzYsNiArMTY3LDcgQEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMKIHsKICAg
ICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
ICAgICByZXR1cm4gbV9zY3JvbGxTbmFwU3RhdGUtPmFjdGl2ZVNuYXBJbmRleEZvckF4aXMoYXhp
cyk7CiB9CiAKQEAgLTE4NCw2ICsyMTYsMjggQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6dXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0ZShNb25vdG9uaWMKICAg
ICBtX2NsaWVudC5rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKCktPnVwZGF0ZUtleWJvYXJkU2Ny
b2xsUG9zaXRpb24oY3VycmVudFRpbWUpOwogfQogCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyOjpzY3JvbGxUb09mZnNldEZvckFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBzY3Jv
bGxPZmZzZXQpCit7CisgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gbV9jbGllbnQuc2Nyb2xsT2Zm
c2V0KCk7CisgICAgYXV0byBzY3JvbGxEZWx0YSA9IHNjcm9sbE9mZnNldCAtIGN1cnJlbnRPZmZz
ZXQ7CisgICAgbV9jbGllbnQuaW1tZWRpYXRlU2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOworfQorCit2
b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUo
U2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2ludCYgY3VycmVudE9mZnNldCkKK3sKKyAg
ICBzY3JvbGxUb09mZnNldEZvckFuaW1hdGlvbihjdXJyZW50T2Zmc2V0KTsKK30KKwordm9pZCBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFu
aW1hdGlvbiYpCit7CisgICAgbV9jbGllbnQuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xs
QmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uKTsKK30KKworU2Nyb2xsRXh0ZW50cyBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxB
bmltYXRpb24mKQoreworICAgIHJldHVybiBtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCk7Cit9CisK
IC8vIEN1cnJlbnRseSwgb25seSBNYWMgc3VwcG9ydHMgbW9tZW50dW0gc3JvbGxpbmctYmFzZWQg
c2Nyb2xsc25hcHBpbmcgYW5kIHJ1YmJlciBiYW5kaW5nCiAvLyBzbyBhbGwgb2YgdGhlc2UgbWV0
aG9kcyBhcmUgYSBub29wIG9uIG5vbi1NYWMgcGxhdGZvcm1zLgogI2lmICFQTEFURk9STShNQUMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIuaAppbmRleCBhNzE0NmRiYmJjZmExMWExZWE4NjY2NjU3OTYwMDVlZTAzMWI1NTU2Li43
ZDFlNGU4ZmU3NjVjYjY2YjQ3M2E1OWY5MGNjMjc0MWQzNWMyOGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKIAogI2luY2x1ZGUgIlJlY3RFZGdl
cy5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIlNjcm9sbFNuYXBB
bmltYXRvclN0YXRlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsVHlwZXMuaCIKQEAgLTgwLDYgKzgxLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSBjb25zdCA9IDA7CiAKKyAgICAvLyBG
SVhNRTogTWF5YmUgU2Nyb2xsQmVoYXZpb3JTdGF0dXMgc2hvdWxkIGJlIHN0b3JlZCBvbiBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsQmVoYXZp
b3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXMpID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbEJl
aGF2aW9yU3RhdHVzIHNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50
cyhjb25zdCBGbG9hdFNpemUmKSA9IDA7CisKKyAgICAvLyBJZiB0aGUgY3VycmVudCBzY3JvbGwg
cG9zaXRpb24gaXMgd2l0aGluIHRoZSBvdmVyaGFuZyBhcmVhLCB0aGlzIGZ1bmN0aW9uIHdpbGwg
Y2F1c2UKKyAgICAvLyB0aGUgcGFnZSB0byBzY3JvbGwgdG8gdGhlIG5lYXJlc3QgYm91bmRhcnkg
cG9pbnQuCisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5l
Y2Vzc2FyeSgpID0gMDsKKwogI2lmIEhBVkUoUlVCQkVSX0JBTkRJTkcpCiAgICAgdmlydHVhbCBi
b29sIGFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0ID0gMDsKQEAgLTkyLDQxICsxMDQsMzcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Ny
b2xsRGlyZWN0aW9uKSBjb25zdCA9IDA7CiAKICAgICAvLyBGSVhNRTogdXNlIFNjcm9sbENsYW1w
aW5nIHRvIGNvbGxhcHNlIHRoZXNlIHRvIG9uZS4KLSAgICB2aXJ0dWFsIHZvaWQgaW1tZWRpYXRl
U2Nyb2xsQnkoY29uc3QgRmxvYXRTaXplJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbW1lZGlh
dGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0U2l6ZSYp
ID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRSdWJiZXJCYW5kU25hcEFuaW1hdGlv
bigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wUnViYmVyYmFuZFNuYXBBbmltYXRpb24o
KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBydWJiZXJCYW5kaW5nU3RhdGVDaGFuZ2VkKGJvb2wp
IHsgfQotCi0gICAgLy8gSWYgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIGlzIHdpdGhpbiB0
aGUgb3ZlcmhhbmcgYXJlYSwgdGhpcyBmdW5jdGlvbiB3aWxsIGNhdXNlCi0gICAgLy8gdGhlIHBh
Z2UgdG8gc2Nyb2xsIHRvIHRoZSBuZWFyZXN0IGJvdW5kYXJ5IHBvaW50LgotICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKSA9IDA7CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJl
YXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3QgeyAvKiBEbyBub3RoaW5nICov
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJy
YWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IHsgLyogRG8gbm90
aGluZyAqLyB9CiAKICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRB
eGlzLCBmbG9hdCBkZWx0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRTY3JvbGxT
bmFwQW5pbWF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BTY3JvbGxTbmFwQW5p
bWF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHMoKSBjb25zdCA9IDA7
CiB9OwogCi1jbGFzcyBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciB7CitjbGFzcyBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlciA6IHB1YmxpYyBTY3JvbGxBbmltYXRpb25DbGllbnQgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyKTsKIAogcHVi
bGljOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyKFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyQ2xpZW50Jik7Ci0gICAgflNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
KCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIoKTsKIAogICAgIGJv
b2wgdXNlc1Njcm9sbFNuYXAoKSBjb25zdDsKICAgICB2b2lkIHN0b3BBbGxUaW1lcnMoKTsKICAg
ICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCisgICAgYm9vbCBzdGFydEFuaW1hdGVk
U2Nyb2xsVG9EZXN0aW5hdGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBGbG9hdFBvaW50IGRl
c3RpbmF0aW9uT2Zmc2V0KTsKKyAgICBib29sIHJlZ2FyZ2V0QW5pbWF0ZWRTY3JvbGwoRmxvYXRQ
b2ludCBuZXdEZXN0aW5hdGlvbk9mZnNldCk7CisgICAgdm9pZCBzdG9wQW5pbWF0ZWRTY3JvbGwo
KTsKKwogICAgIHZvaWQgYmVnaW5LZXlib2FyZFNjcm9sbGluZygpOwogICAgIHZvaWQgc3RvcEtl
eWJvYXJkU2Nyb2xsaW5nKCk7CiAgICAgCkBAIC0xMzQsNiArMTQyLDggQEAgcHVibGljOgogICAg
IHZvaWQgYW5pbWF0aW9uQ2FsbGJhY2soTW9ub3RvbmljVGltZSk7CiAKICAgICB2b2lkIHVwZGF0
ZUdlc3R1cmVJblByb2dyZXNzU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CisgICAg
CisgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKCk7CiAKICAgICB2b2lkIHNldFNuYXBPZmZz
ZXRzSW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKICAgICBjb25zdCBM
YXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwpAQCAt
MjAyLDggKzIxMiwxNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0T3JTdG9w
QW5pbWF0aW9uQ2FsbGJhY2tzKCk7CisgICAgdm9pZCBzY3JvbGxUb09mZnNldEZvckFuaW1hdGlv
bihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxPZmZzZXQpOworCisgICAgLy8gU2Nyb2xsQW5pbWF0
aW9uQ2xpZW50CisgICAgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0
aW9uJiwgY29uc3QgRmxvYXRQb2ludCYgLyogY3VycmVudE9mZnNldCAqLykgZmluYWw7CisgICAg
dm9pZCBzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CisgICAg
U2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYp
ICBmaW5hbDsKIAogICAgIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50JiBtX2NsaWVu
dDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb24+IG1fY3VycmVudEFuaW1h
dGlvbjsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4gbV9z
Y3JvbGxTbmFwU3RhdGU7CiAgICAgYm9vbCBtX2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5n
ZSB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLmgKaW5kZXggY2JmYTY4MmM1NmY3NDY4MjgxODQ2ZWYxMzEyYTlmNWVhNWI2OTY5
ZC4uM2U1MTc2MTNhODBkMTNjMzk3OTgyZjkyNDk3NWRkMjdjOTc3YmFjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKQEAgLTUwLDggKzUw
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlKSBmaW5hbDsKICAgICAKLSAgICBGbG9hdFBvaW50IGFkanVzdFNjcm9s
bFBvc2l0aW9uSWZOZWNlc3NhcnkoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotCiAgICAgYm9v
bCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1J1YmJl
ckJhbmRJblByb2dyZXNzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblBy
b2dyZXNzKCkgY29uc3QgZmluYWw7CkBAIC02Miw5ICs2MCw2IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNob3VsZFJ1YmJlckJhbmRJ
bkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgaW1tZWRp
YXRlU2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNpemUm
KSBmaW5hbDsKLSAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYpIGZp
bmFsOwotICAgIHZvaWQgYWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkg
ZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggNmUzNzcxZWRlNDY0ZGI3
YmMzNDUwYjM0YjIxOTY0NmE2YjUxZWVkNS4uZjE5MDhjNGZhNmQyZTJhNzU3M2ZmMWE4MDExY2M1
MTI0NTU2Yzk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxB
bmltYXRvck1hYy5tbQpAQCAtNzMsMjYgKzczLDYgQEAgc3RhdGljIGJvb2wgcnViYmVyQmFuZGlu
Z0VuYWJsZWRGb3JTeXN0ZW0oKQogICAgIHJldHVybiBlbmFibGVkOwogfQogCi1GbG9hdFBvaW50
IFNjcm9sbEFuaW1hdG9yTWFjOjphZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5KGNvbnN0
IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25zdAotewotICAgIGlmICghbV9zY3JvbGxhYmxlQXJl
YS5jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpKQotICAgICAgICByZXR1cm4gcG9z
aXRpb247Ci0KLSAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5jb25zdHJhaW5TY3JvbGxQb3Np
dGlvbihTY3JvbGxQb3NpdGlvbihwb3NpdGlvbikpOwotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9y
TWFjOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKQotewotICAgIGJv
b2wgY3VycmVudGx5Q29uc3RyYWluc1RvQ29udGVudEVkZ2UgPSBtX3Njcm9sbGFibGVBcmVhLmNv
bnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCk7Ci0gICAgbV9zY3JvbGxhYmxlQXJlYS5z
ZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSh0cnVlKTsKLQotICAgIFNjcm9sbFBv
c2l0aW9uIGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9IG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsUG9z
aXRpb24oKTsKLSAgICBTY3JvbGxQb3NpdGlvbiBjb25zdHJhaW5lZFBvc2l0aW9uID0gbV9zY3Jv
bGxhYmxlQXJlYS5jb25zdHJhaW5TY3JvbGxQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24p
OwotICAgIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0cmFpbmVkUG9zaXRpb24gLSBjdXJyZW50U2Ny
b2xsUG9zaXRpb24pOwotCi0gICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRDb25zdHJhaW5zU2Nyb2xs
aW5nVG9Db250ZW50RWRnZShjdXJyZW50bHlDb25zdHJhaW5zVG9Db250ZW50RWRnZSk7Ci19Ci0K
IGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygp
OwpAQCAtMjIwLDIzICsyMDAsNiBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRSdWJi
ZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsQnlXaXRob3V0
Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNpemUmIGRlbHRhKQotewotICAgIG1f
c2Nyb2xsYWJsZUFyZWEuc2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoZmFsc2Up
OwotICAgIGltbWVkaWF0ZVNjcm9sbEJ5KGRlbHRhKTsKLSAgICBtX3Njcm9sbGFibGVBcmVhLnNl
dENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKHRydWUpOwotfQotCi12b2lkIFNjcm9s
bEFuaW1hdG9yTWFjOjppbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIGRlbHRhKQot
ewotICAgIEZsb2F0UG9pbnQgY3VycmVudFBvc2l0aW9uID0gdGhpcy0+Y3VycmVudFBvc2l0aW9u
KCk7Ci0gICAgRmxvYXRQb2ludCBuZXdQb3NpdGlvbiA9IGFkanVzdFNjcm9sbFBvc2l0aW9uSWZO
ZWNlc3NhcnkoY3VycmVudFBvc2l0aW9uICsgZGVsdGEpOwotICAgIGlmIChuZXdQb3NpdGlvbiA9
PSBjdXJyZW50UG9zaXRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIHNldEN1cnJlbnRQb3Np
dGlvbihuZXdQb3NpdGlvbiwgTm90aWZ5U2Nyb2xsYWJsZUFyZWE6Olllcyk7Ci19Ci0KIGJvb2wg
U2Nyb2xsQW5pbWF0b3JNYWM6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29u
dHJvbGxlci5wcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAod2hlZWxFdmVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIubW0KaW5kZXggMjk0OTBkOGFlYzgzYzNhMjI3ZDNiZTU2OWZhY2FkMjQxOThkZDAx
Ny4uYWMyNzc0NjQ1MjM4NjZkOGJlYjlkMzA3YjJkYzAxNGE3ZmE3MmM2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5tbQpAQCAtNzU3LDExICs3NTcsMTAgQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6dXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUgY3UKIAog
ICAgIGJvb2wgaXNBbmltYXRpb25Db21wbGV0ZTsKICAgICBhdXRvIGFuaW1hdGlvbk9mZnNldCA9
IG1fc2Nyb2xsU25hcFN0YXRlLT5jdXJyZW50QW5pbWF0ZWRTY3JvbGxPZmZzZXQoY3VycmVudFRp
bWUsIGlzQW5pbWF0aW9uQ29tcGxldGUpOwotICAgIGF1dG8gY3VycmVudE9mZnNldCA9IG1fY2xp
ZW50LnNjcm9sbE9mZnNldCgpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJl
YW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIHVwZGF0ZVNj
cm9sbFNuYXBBbmltYXRpbmdTdGF0ZSAtIGlzQW5pbWF0aW9uQ29tcGxldGUgIiA8PCBpc0FuaW1h
dGlvbkNvbXBsZXRlIDw8ICIgYW5pbWF0aW9uT2Zmc2V0ICIgPDwgYW5pbWF0aW9uT2Zmc2V0IDw8
ICIgKG1haW4gdGhyZWFkICIgPDwgaXNNYWluVGhyZWFkKCkgPDwgIikiKTsKIAotICAgIExPR19X
SVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyICIgPDwgdGhpcyA8PCAiIHVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZSAtIGlzQW5p
bWF0aW9uQ29tcGxldGUgIiA8PCBpc0FuaW1hdGlvbkNvbXBsZXRlIDw8ICIgY3VycmVudE9mZnNl
dCAiIDw8IGN1cnJlbnRPZmZzZXQgPDwgIiAobWFpbiB0aHJlYWQgIiA8PCBpc01haW5UaHJlYWQo
KSA8PCAiKSIpOworICAgIHNjcm9sbFRvT2Zmc2V0Rm9yQW5pbWF0aW9uKGFuaW1hdGlvbk9mZnNl
dCk7CiAKLSAgICBtX2NsaWVudC5pbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNv
bnN0cmFpbnRzKEZsb2F0U2l6ZShhbmltYXRpb25PZmZzZXQueCgpIC0gY3VycmVudE9mZnNldC54
KCksIGFuaW1hdGlvbk9mZnNldC55KCkgLSBjdXJyZW50T2Zmc2V0LnkoKSkpOwogICAgIGlmIChp
c0FuaW1hdGlvbkNvbXBsZXRlKSB7CiAgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0
aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRTdGF0ZSgpOwogICAgICAgICBzdG9wU2Nyb2xsU25hcEFu
aW1hdGlvbigpOwo=
</data>
<flag name="commit-queue"
          id="462670"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439101</attachid>
            <date>2021-09-23 15:45:10 -0700</date>
            <delta_ts>2021-09-23 16:42:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230720-20210923154509.patch</filename>
            <type>text/plain</type>
            <size>43170</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyOTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTUzMTNlOTAxZjU5Mjdm
YzRmODMyNjEyNTRjMjUyNzQ5OTYyZjRiYS4uZDQ0M2Y0Y2QyYzhhNWVkOWY3NTI1N2VjMzU3MTUw
MjBjYTdmZjZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIxLTA5LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgdGhlIFNj
cm9sbEFuaW1hdGlvblNtb290aCBmcm9tIFNjcm9sbEFuaW1hdG9yIGludG8gU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMDcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIGlzIHdoZXJlIGFsbCB0aGUgU2Nyb2xs
QW5pbWF0aW9ucyB3aWxsIGxpdmUuIFRoZSBmaXJzdAorICAgICAgICBzdGVwIGlzIHRvIG1vdmUg
U2Nyb2xsQW5pbWF0b3IncyBtX3Njcm9sbEFuaW1hdGlvbiB0aGVyZTsgdGhpcyBpcyB1c2VkIGZv
cgorICAgICAgICBrZXlib2FyZCBzY3JvbGxpbmcsIGFuZCBDU1Mgc21vb3RoIHNjcm9sbGluZy4K
KworICAgICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciBiZWNvbWVzIGEgU2Nyb2xsQW5p
bWF0aW9uQ2xpZW50IChhbmQgU2Nyb2xsQW5pbWF0b3Igc3RvcHMKKyAgICAgICAgYmVpbmcgb25l
KSwgc28gbmVlZHMgYSBsaXR0bGUgYml0IG1vcmUgZ2x1ZSBjb2RlLgorCisgICAgICAgIEFkZCB0
eXBlIHRyYWl0cyBmb3IgU2Nyb2xsQW5pbWF0b3Igc3ViY2xhc3NlcyBiZWNhdXNlIHdlIG5lZWQg
dG8gZG93bmNhc3Q8PiB0aGVtCisgICAgICAgIGhlcmUgYW5kIGluIGZ1dHVyZSBwYXRjaGVzLgor
CisgICAgICAgIE1vdmUgc29tZSBjb2RlIGZyb20gU2Nyb2xsQW5pbWF0b3JNYWMgaW50byBTY3Jv
bGxBbmltYXRvciBzaW5jZSBpdCdzIG5vdCBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYy4KKwor
ICAgICAgICBTY3JvbGxBbmltYXRvckdlbmVyaWMgaXMgYWxtb3N0IGVudGlyZWx5IGd1dHRlZCwg
YW5kIGNvZGUgcHVzaGVkIGludG8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuCisgICAgICAg
IE1ha2UgYSBTY3JvbGxBbmltYXRpb25LaW5ldGljIGluIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyIGZvciB0aGlzIGNvZGUgcGF0aC4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmg6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpp
bW1lZGlhdGVTY3JvbGxPbkF4aXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjpTY3JvbGxB
bmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjp0eXBlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0
aWMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmg6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xs
QW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRB
bmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9z
aXRpb25XaXRoQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpy
ZXRhcmdldFJ1bm5pbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpzY3JvbGxCZWhhdmlvclN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvcjo6YWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjphZGp1c3RTY3JvbGxQb3NpdGlvbklm
TmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjppbW1l
ZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjppbW1lZGlhdGVTY3JvbGxCeSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6Y2FuY2VsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6Y29udGVudHNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6aW1tZWRpYXRlU2Nyb2xsT25BeGlzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjb250ZW50c1NpemVDaGFuZ2VkIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmltYXRp
b25EaWRVcGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
OnNjcm9sbEFuaW1hdGlvbkRpZEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnJlZ2FyZ2V0QW5pbWF0ZWRT
Y3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0
b3BBbmltYXRlZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpjb250ZW50c1NpemVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjphY3RpdmVT
Y3JvbGxTbmFwSW5kZXhGb3JBeGlzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxUb09mZnNldEZvckFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uRGlk
VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpz
Y3JvbGxBbmltYXRpb25EaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudDo6cnViYmVyQmFuZGluZ1N0YXRlQ2hhbmdlZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdl
bmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6c2Ny
b2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OmFkanVzdFNjcm9sbFBvc2l0aW9uSWZOZWNlc3NhcnkgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFkanVzdFNjcm9s
bFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VD
b25zdHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1h
Yzo6aW1tZWRpYXRlU2Nyb2xsQnkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUpOgorCiAy
MDIxLTA5LTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVuaWZ5IG1vcmUgbWVkaWEtcmVsYXRlZCBXZWJDb3JlIHNvdXJjZSBmaWxlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggZDg2Yzk3NTFi
NGZiYTg5ZmEyNWMwZTkyMDYzZWVkNzIzM2FhM2UwMS4uMWI0ZmVmY2U1YTkwYmNlOTM4YmYyYWJm
MTJkODNlYTdjNWJkNzMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5oCkBAIC04Miw2ICs4Miw5IEBAIHByaXZhdGU6CiAgICAgUmVjdEVkZ2VzPGJv
b2w+IGVkZ2VQaW5uZWRTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWxsb3dzSG9yaXpv
bnRhbFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWxsb3dzVmVydGljYWxTY3Jv
bGxpbmcoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNj
cm9sbEJlaGF2aW9yU3RhdHVzIHN0YXR1cykgZmluYWwgeyBtX3Njcm9sbEJlaGF2aW9yU3RhdHVz
ID0gc3RhdHVzOyB9CisgICAgU2Nyb2xsQmVoYXZpb3JTdGF0dXMgc2Nyb2xsQmVoYXZpb3JTdGF0
dXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzOyB9CisKICAg
ICBib29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnkoY29uc3QgRmxvYXRTaXplJikgZmlu
YWw7CiAgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFp
bnRzKGNvbnN0IEZsb2F0U2l6ZSYpIGZpbmFsOwpAQCAtOTMsNyArOTYsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIEZs
b2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBpbW1lZGlhdGVT
Y3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0YSkgZmluYWw7CiAgICAgZmxv
YXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3aWxsU3RhcnRTY3Jv
bGxTbmFwQW5pbWF0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBkaWRTdG9wU2Nyb2xsU25hcEFuaW1h
dGlvbigpIGZpbmFsOwpAQCAtMTA4LDYgKzExMCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYz4+IG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyOwogCisgICAgU2Nyb2xsQmVo
YXZpb3JTdGF0dXMgbV9zY3JvbGxCZWhhdmlvclN0YXR1cyB7IFNjcm9sbEJlaGF2aW9yU3RhdHVz
OjpOb3RJbkFuaW1hdGlvbiB9OwogICAgIGJvb2wgbV9pbk1vbWVudHVtUGhhc2UgeyBmYWxzZSB9
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5t
bQppbmRleCBmNzFmZDQ3ZDhjMjQwYjk3Yjc5MTFlYjJjZjNhMWQzMmY1MmIxNDhjLi5iOGZmYzcz
NDM4Mjg3MDI2MDY5OGY4Yjc5NmY2NTQwMjQ4OWY0OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMzc5LDE4ICszNzksNiBAQCBGbG9h
dFBvaW50IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNjcm9sbE9mZnNl
dCgpIGNvbnN0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9tUG9z
aXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbE9yaWdpbigpKTsKIH0KIAotdm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjppbW1lZGlhdGVTY3JvbGxP
bkF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IGRlbHRhKQotewotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uID0gY3VycmVudFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAg
RmxvYXRQb2ludCBjaGFuZ2U7Ci0gICAgaWYgKGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsKQotICAgICAgICBjaGFuZ2UgPSBGbG9hdFBvaW50KHNjcm9sbFBvc2l0aW9uLngoKSAr
IGRlbHRhLCBzY3JvbGxQb3NpdGlvbi55KCkpOwotICAgIGVsc2UKLSAgICAgICAgY2hhbmdlID0g
RmxvYXRQb2ludChzY3JvbGxQb3NpdGlvbi54KCksIHNjcm9sbFBvc2l0aW9uLnkoKSArIGRlbHRh
KTsKLQotICAgIGltbWVkaWF0ZVNjcm9sbEJ5KGNoYW5nZSAtIHNjcm9sbFBvc2l0aW9uKTsKLX0K
LQogZmxvYXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6cGFnZVNjYWxl
RmFjdG9yKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhpcyByZXR1cm4g
Zm9yIG5vbi1yb290IGZyYW1lcywgYW5kIG92ZXJmbG93PwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaAppbmRleCAyMTM3ZWQ0YjI5MTZmOWY1Y2MyNDJlMzMyOWExZmM4
MDdhNTQ3MjNjLi41YzY0YWQ3ZTI3NTgxYTc0MDYwNzMyYmU5ZGE3MGY5YzU5NDdmMzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaApAQCAtNDcsMTAgKzQ3LDE5
IEBAIHB1YmxpYzoKIGNsYXNzIFNjcm9sbEFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbkNs
aWVudCYgY2xpZW50KQorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIFNtb290aCwKKyAg
ICAgICAgS2luZXRpYywKKyAgICAgICAgTW9tZW50dW0sCisgICAgfTsKKworICAgIFNjcm9sbEFu
aW1hdGlvbihUeXBlIGFuaW1hdGlvblR5cGUsIFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgY2xpZW50
KQogICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBtX2FuaW1hdGlvblR5cGUo
YW5pbWF0aW9uVHlwZSkKICAgICB7IH0KICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb24oKSA9
IGRlZmF1bHQ7CisgICAgCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRp
b25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29u
c3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRpb25PZmZzZXQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpID0gMDsKQEAgLTYyLDYgKzcxLDEyIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgbV9jbGllbnQ7CisgICAgY29uc3QgVHlwZSBtX2Fu
aW1hdGlvblR5cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNkZWZpbmUgU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExfQU5JTUFUSU9OKFRvVmFsdWVUeXBlTmFtZSwgcHJl
ZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkg
XAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTY3JvbGxBbmltYXRpb24m
IHNjcm9sbEFuaW1hdGlvbikgeyByZXR1cm4gc2Nyb2xsQW5pbWF0aW9uLnByZWRpY2F0ZTsgfSBc
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmluZGV4IGJhMjU3ZGEzNDY4MDhjNDNi
YjljNzU5NWFjZDYxMzNjODJlYTNkNjQuLmE5YjY2NTRhNmJiNjY1OTVkMmUzNTc2MzBkNTQ0ZjRk
YmJiODVjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25L
aW5ldGljOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNvbmRzIHRpbWVEZWx0YSkKIH0K
IAogU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxB
bmltYXRpb25DbGllbnQmIGNsaWVudCkKLSAgICA6IFNjcm9sbEFuaW1hdGlvbihjbGllbnQpCisg
ICAgOiBTY3JvbGxBbmltYXRpb24oVHlwZTo6S2luZXRpYywgY2xpZW50KQogICAgICwgbV9hbmlt
YXRpb25UaW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25LaW5l
dGljOjphbmltYXRpb25UaW1lckZpcmVkKQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGlj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5k
ZXggNjJhNzQ2MWFlYTViMDQ2ZTBmNjFiODQwZGIxMzIzMzNhNmM1MjZiMC4uMTQxM2YzMzI4OGU5
ZGUyZjNkMmVkZTZhOWZkZDJlMTcxODE0Yzg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6
CiAgICAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxBbmltYXRpb25DbGllbnQmKTsKICAg
ICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAKKyAgICAvLyBGSVhNRTogVmVs
b2NpdHkgc2hvdWxkIGJlIGEgRmxvYXRTaXplLgogICAgIGJvb2wgc3RhcnRBbmltYXRlZFNjcm9s
bFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xs
KTsKIAogICAgIGJvb2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYg
bmV3T2Zmc2V0KSBmaW5hbDsKQEAgLTg2LDMgKzg3LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExfQU5JTUFU
SU9OKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMsIHR5cGUoKSA9PSBXZWJDb3JlOjpT
Y3JvbGxBbmltYXRpb246OlR5cGU6OktpbmV0aWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAKaW5kZXggNGE0NzlmOGM4MTEyMDAw
NDkxMzVlZDc3ZDNlNzBjMjFkMmNjZTU1MC4uZmE1NzM2OTE1NGEzODc5NDI5MzBkNmY4MzU1ZGVm
MWM3ZmVkMDczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uTW9tZW50dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvbk1vbWVudHVtLmNwcApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0oU2Ny
b2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCi0gICAgOiBTY3JvbGxBbmltYXRpb24oY2xpZW50
KQorICAgIDogU2Nyb2xsQW5pbWF0aW9uKFR5cGU6Ok1vbWVudHVtLCBjbGllbnQpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVu
dHVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5o
CmluZGV4IDZlNmE2NjE2ZmNkOTU2NTJlODM5YjU3YzlmZTA2NGJkYzFjN2IzZTYuLjY2NDJkY2I1
NDZlZmQ5MDkzOWI4ZmY1MjE4MGZiMDM5MDkzZGI0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaApAQCAtNTEsMyArNTEsNSBAQCBw
cml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1NDUk9MTF9BTklNQVRJT04oV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0s
IHR5cGUoKSA9PSBXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OlR5cGU6Ok1vbWVudHVtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKaW5k
ZXggNzBlOTRhOWM2ZjRjZGIyNGVmYWE4MmUxOGM2MWFhMDlkNWJjZTI3OS4uYjA2ZjJmMjRlYTU3
NTEyNTA0ZjcyMjFkMGI5YjIyYmE4MjA5MzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRp
YyBjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVtVGltZXJJbnRlcnZhbCB7IDFfbXMgfTsKIHN0YXRp
YyBjb25zdCBTZWNvbmRzIG1heEFuaW1hdGlvbkR1cmF0aW9uIHsgMjAwX21zIH07CiAKIFNjcm9s
bEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEFuaW1hdGlvbkNs
aWVudCYgY2xpZW50KQotICAgIDogU2Nyb2xsQW5pbWF0aW9uKGNsaWVudCkKKyAgICA6IFNjcm9s
bEFuaW1hdGlvbihUeXBlOjpTbW9vdGgsIGNsaWVudCkKICAgICAsIG1fYW5pbWF0aW9uVGltZXIo
UnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRp
b25UaW1lckZpcmVkKQogICAgICwgbV9lYXNlSW5PdXRUaW1pbmdGdW5jdGlvbihDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6VGltaW5n
RnVuY3Rpb25QcmVzZXQ6OkVhc2VJbk91dCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCmluZGV4IDVhZmRjMTNkNzljZjg3YzM5Njc1MDYz
ZDcyNjMwMzE2ZDMxNDFjNTMuLjFkMjM0YTI5MmQ3NzY2OTg4MzE3YzE4MGZhNTQ5NWQ2NTVkYmZh
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNt
b290aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290
aC5oCkBAIC03MywzICs3Myw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExfQU5JTUFUSU9OKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdGlvblNtb290aCwgdHlwZSgpID09IFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6VHlw
ZTo6U21vb3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmlu
ZGV4IGM5MDRjZTFhYWM3ZmU3N2RiYzRjYzkxNmVkYjQ3ZTNlN2RkZjYwMjguLjBmODNjODJlY2Qw
Y2FjZTgzZGY5MTAyZjViYWI1NWQ2YmEwNjM4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvblNtb290aC5o
IgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyc0NvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIgpAQCAtNTUs
NyArNTQsNiBAQCBTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogICAgIDogbV9zY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkK
ICAgICAsIG1fc2Nyb2xsQ29udHJvbGxlcigqdGhpcykKICAgICAsIG1fc2Nyb2xsQ29udHJvbGxl
ckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbENvbnRyb2xsZXJB
bmltYXRpb25UaW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxBbmltYXRpb24obWFrZVVuaXF1ZTxT
Y3JvbGxBbmltYXRpb25TbW9vdGg+KCp0aGlzKSkKICAgICAsIG1fa2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvcihtYWtlVW5pcXVlPEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I+KCp0aGlzLCBtX3Nj
cm9sbENvbnRyb2xsZXIpKQogewogfQpAQCAtOTMsNyArOTEsNyBAQCBib29sIFNjcm9sbEFuaW1h
dG9yOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51
bGFyaXR5CiAgICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tUG9zaXRpb24obV9j
dXJyZW50UG9zaXRpb24pOwogICAgICAgICBhdXRvIGV4dGVudHMgPSBzY3JvbGxFeHRlbnRzKCk7
CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25PZmZzZXQgPSAoc3RhcnRPZmZzZXQgKyBkZWx0YSku
Y29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLCBleHRlbnRz
Lm1heGltdW1TY3JvbGxPZmZzZXQoKSk7Ci0gICAgICAgIHJldHVybiBtX3Njcm9sbEFuaW1hdGlv
bi0+c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oc3RhcnRPZmZzZXQsIGRlc3RpbmF0
aW9uT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5zdGFydEFuaW1h
dGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihzdGFydE9mZnNldCwgZGVzdGluYXRpb25PZmZzZXQpOwog
ICAgIH0KIAogICAgIHJldHVybiBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjdXJy
ZW50UG9zaXRpb24oKSArIGRlbHRhKTsKQEAgLTEwOSw3ICsxMDcsNyBAQCBib29sIFNjcm9sbEFu
aW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50
JiBwb3NpdGlvbgogICAgIGlmIChhZGp1c3RlZFBvc2l0aW9uID09IGN1cnJlbnRQb3NpdGlvbiAm
JiBhZGp1c3RlZFBvc2l0aW9uID09IHNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsUG9zaXRpb24oKSAm
JiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5DaGFuZ2VkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zdG9wKCk7CisgICAgbV9zY3JvbGxD
b250cm9sbGVyLnN0b3BBbmltYXRlZFNjcm9sbCgpOwogCiAgICAgc2V0Q3VycmVudFBvc2l0aW9u
KGFkanVzdGVkUG9zaXRpb24sIE5vdGlmeVNjcm9sbGFibGVBcmVhOjpZZXMpOwogICAgIHJldHVy
biB0cnVlOwpAQCAtMTIxLDE2ICsxMTksMTUgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
VG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24KICAg
ICBpZiAoIXBvc2l0aW9uQ2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5D
aGFuZ2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fc2Nyb2xsQW5pbWF0aW9u
LT5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihvZmZzZXRGcm9tUG9zaXRpb24obV9j
dXJyZW50UG9zaXRpb24pLCBvZmZzZXRGcm9tUG9zaXRpb24obmV3UG9zaXRpb24pKTsKLSAgICBz
Y3JvbGxhYmxlQXJlYSgpLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3Rh
dHVzOjpJbk5vbk5hdGl2ZUFuaW1hdGlvbik7CisgICAgbV9zY3JvbGxDb250cm9sbGVyLnN0YXJ0
QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKG9mZnNldEZyb21Qb3NpdGlvbihtX2N1cnJlbnRQ
b3NpdGlvbiksIG9mZnNldEZyb21Qb3NpdGlvbihuZXdQb3NpdGlvbikpOworICAgIHNldFNjcm9s
bEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5hdGl2ZUFuaW1hdGlv
bik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJldGFyZ2V0
UnVubmluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbikKIHsKICAgICBB
U1NFUlQoc2Nyb2xsYWJsZUFyZWEoKS5jdXJyZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSA9PSBT
Y3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25OYXRpdmVBbmltYXRpb24pOwotICAgIEFTU0VSVCht
X3Njcm9sbEFuaW1hdGlvbi0+aXNBY3RpdmUoKSk7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24tPnJl
dGFyZ2V0QWN0aXZlQW5pbWF0aW9uKG5ld1Bvc2l0aW9uKTsKKyAgICBtX3Njcm9sbENvbnRyb2xs
ZXIucmVnYXJnZXRBbmltYXRlZFNjcm9sbChvZmZzZXRGcm9tUG9zaXRpb24obmV3UG9zaXRpb24p
KTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6b2Zmc2V0RnJvbVBvc2l0aW9uKGNv
bnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25zdApAQCAtMjkwLDYgKzI4NywxNiBAQCBib29s
IFNjcm9sbEFuaW1hdG9yOjphbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpIGNvbnN0CiAgICAgcmV0
dXJuIG1fc2Nyb2xsYWJsZUFyZWEuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKTsKIH0KIAordm9p
ZCBTY3JvbGxBbmltYXRvcjo6c2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JT
dGF0dXMgc3RhdHVzKQoreworICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZpb3JT
dGF0dXMoc3RhdHVzKTsKK30KKworU2Nyb2xsQmVoYXZpb3JTdGF0dXMgU2Nyb2xsQW5pbWF0b3I6
OnNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYS5jdXJyZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMoKTsKK30KKwogI2lmIEhBVkUoUlVCQkVS
X0JBTkRJTkcpCiBJbnRTaXplIFNjcm9sbEFuaW1hdG9yOjpzdHJldGNoQW1vdW50KCkgY29uc3QK
IHsKQEAgLTMxMywxNiArMzIwLDQxIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmlzUGlubmVkRm9y
U2Nyb2xsRGVsdGEoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkgY29uc3QKIH0KICNlbmRpZgogCi0v
LyBGSVhNRTogVW51c2VkLgotdm9pZCBTY3JvbGxBbmltYXRvcjo6aW1tZWRpYXRlU2Nyb2xsT25B
eGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZWx0YSkKK3ZvaWQgU2Nyb2xsQW5pbWF0
b3I6OmFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgRmxv
YXRTaXplIGRlbHRhU2l6ZTsKLSAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6
b250YWwpCi0gICAgICAgIGRlbHRhU2l6ZS5zZXRXaWR0aChkZWx0YSk7Ci0gICAgZWxzZQotICAg
ICAgICBkZWx0YVNpemUuc2V0SGVpZ2h0KGRlbHRhKTsKKyAgICBib29sIGN1cnJlbnRseUNvbnN0
cmFpbnNUb0NvbnRlbnRFZGdlID0gbV9zY3JvbGxhYmxlQXJlYS5jb25zdHJhaW5zU2Nyb2xsaW5n
VG9Db250ZW50RWRnZSgpOworICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0Q29uc3RyYWluc1Njcm9s
bGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7CisKKyAgICBhdXRvIGN1cnJlbnRTY3JvbGxQb3NpdGlv
biA9IG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsUG9zaXRpb24oKTsKKyAgICBhdXRvIGNvbnN0cmFp
bmVkUG9zaXRpb24gPSBtX3Njcm9sbGFibGVBcmVhLmNvbnN0cmFpblNjcm9sbFBvc2l0aW9uKGN1
cnJlbnRTY3JvbGxQb3NpdGlvbik7CisgICAgaW1tZWRpYXRlU2Nyb2xsQnkoY29uc3RyYWluZWRQ
b3NpdGlvbiAtIGN1cnJlbnRTY3JvbGxQb3NpdGlvbik7CiAKLSAgICBzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbihjdXJyZW50UG9zaXRpb24oKSArIGRlbHRhU2l6ZSk7CisgICAgbV9z
Y3JvbGxhYmxlQXJlYS5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShjdXJyZW50
bHlDb25zdHJhaW5zVG9Db250ZW50RWRnZSk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0
b3I6OmFkanVzdFNjcm9sbFBvc2l0aW9uSWZOZWNlc3NhcnkoY29uc3QgRmxvYXRQb2ludCYgcG9z
aXRpb24pIGNvbnN0Cit7CisgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhLmNvbnN0cmFpbnNTY3Jv
bGxpbmdUb0NvbnRlbnRFZGdlKCkpCisgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKworICAgIHJl
dHVybiBtX3Njcm9sbGFibGVBcmVhLmNvbnN0cmFpblNjcm9sbFBvc2l0aW9uKFNjcm9sbFBvc2l0
aW9uKHBvc2l0aW9uKSk7Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OmltbWVkaWF0ZVNjcm9s
bEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkK
K3sKKyAgICBtX3Njcm9sbGFibGVBcmVhLnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRF
ZGdlKGZhbHNlKTsKKyAgICBpbW1lZGlhdGVTY3JvbGxCeShkZWx0YSk7CisgICAgbV9zY3JvbGxh
YmxlQXJlYS5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSh0cnVlKTsKK30KKwor
dm9pZCBTY3JvbGxBbmltYXRvcjo6aW1tZWRpYXRlU2Nyb2xsQnkoY29uc3QgRmxvYXRTaXplJiBk
ZWx0YSkKK3sKKyAgICBGbG9hdFBvaW50IGN1cnJlbnRQb3NpdGlvbiA9IHRoaXMtPmN1cnJlbnRQ
b3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRpb24gPSBhZGp1c3RTY3JvbGxQb3Np
dGlvbklmTmVjZXNzYXJ5KGN1cnJlbnRQb3NpdGlvbiArIGRlbHRhKTsKKyAgICBpZiAobmV3UG9z
aXRpb24gPT0gY3VycmVudFBvc2l0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRDdXJy
ZW50UG9zaXRpb24obmV3UG9zaXRpb24sIE5vdGlmeVNjcm9sbGFibGVBcmVhOjpZZXMpOwogfQog
CiBTY3JvbGxFeHRlbnRzIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzKCkgY29uc3QKQEAg
LTM4NSwxMyArNDE3LDEzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVdoZWVsRXZlbnRU
ZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUCiAKIHZvaWQgU2Nyb2xs
QW5pbWF0b3I6OmNhbmNlbEFuaW1hdGlvbnMoKQogewotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5z
dG9wKCk7CisgICAgbV9zY3JvbGxDb250cm9sbGVyLnN0b3BBbmltYXRlZFNjcm9sbCgpOwogICAg
IG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS5jYW5jZWxBbmltYXRpb25z
KCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoKSBjb25z
dAordm9pZCBTY3JvbGxBbmltYXRvcjo6Y29udGVudHNTaXplQ2hhbmdlZCgpCiB7Ci0gICAgbV9z
Y3JvbGxBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4dGVudHMoKTsKKyAgICBtX3Njcm9sbENvbnRy
b2xsZXIuY29udGVudHNTaXplQ2hhbmdlZCgpOwogfQogCiBGbG9hdFBvaW50IFNjcm9sbEFuaW1h
dG9yOjpzY3JvbGxPZmZzZXRBZGp1c3RlZEZvclNuYXBwaW5nKGNvbnN0IEZsb2F0UG9pbnQmIG9m
ZnNldCwgU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kIG1ldGhvZCkgY29uc3QKQEAgLTQy
MywyMCArNDU1LDQgQEAgZmxvYXQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbE9mZnNldEFkanVzdGVk
Rm9yU25hcHBpbmcoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnMKICAgICByZXR1cm4gbV9zY3Jv
bGxDb250cm9sbGVyLmFkanVzdGVkU2Nyb2xsRGVzdGluYXRpb24oYXhpcywgbmV3T2Zmc2V0LCB2
ZWxvY2l0eUluU2Nyb2xsQXhpcywgb3JpZ2luYWxPZmZzZXQpOwogfQogCi12b2lkIFNjcm9sbEFu
aW1hdG9yOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3Qg
RmxvYXRQb2ludCYgY3VycmVudE9mZnNldCkKLXsKLSAgICBzZXRDdXJyZW50UG9zaXRpb24ocG9z
aXRpb25Gcm9tT2Zmc2V0KGN1cnJlbnRPZmZzZXQpLCBOb3RpZnlTY3JvbGxhYmxlQXJlYTo6WWVz
KTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9s
bEFuaW1hdGlvbiYpCi17Ci0gICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRTY3JvbGxCZWhhdmlvclN0
YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOwotfQotCi1TY3JvbGxF
eHRlbnRzIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFu
aW1hdGlvbiYpCi17Ci0gICAgcmV0dXJuIHNjcm9sbEV4dGVudHMoKTsKLX0KLQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApp
bmRleCBiNmEwYmRlYmRjMTc1ZDc5MmM4ZTFjZTBjYTk1NGVlMzVhZTAwZTQ4Li5iM2FmYWE4NWVi
Zjg5ZGNjYmMyNTY2ZTZmMmFlZTFjMWZmMTk2NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9p
bnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxB
bmltYXRpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCkBAIC01
Miw3ICs1MSw3IEBAIGNsYXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsKIAogY2xhc3MgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcjsKIAotY2xhc3MgU2Nyb2xsQW5pbWF0b3IgOiBwcml2
YXRlIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50LCBwdWJsaWMgU2Nyb2xsQW5pbWF0
aW9uQ2xpZW50IHsKK2NsYXNzIFNjcm9sbEFuaW1hdG9yIDogcHJpdmF0ZSBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gY3JlYXRlKFNj
cm9sbGFibGVBcmVhJik7CkBAIC03OCw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNj
cm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpOwogICAgIGJvb2wgc2Nyb2xs
VG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogCi0gICAgdm9pZCBy
ZXRhcmdldFJ1bm5pbmdBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpOworICAgIHZvaWQgcmV0
YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpOwogCkBAIC05OCw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSdWJi
ZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0g
ICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKCkgY29uc3Q7CisgICAgdm9pZCBjb250ZW50c1Np
emVDaGFuZ2VkKCk7CiAKICAgICBlbnVtIE5vdGlmeVNjcm9sbGFibGVBcmVhIDogYm9vbCB7CiAg
ICAgICAgIE5vLCBZZXMKQEAgLTEyMiw5ICsxMjEsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBib29sIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50Ci0gICAgdm9pZCBz
Y3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2lu
dCYgY3VycmVudE9mZnNldCkgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlQ
b3NpdGlvbkNoYW5nZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSk7CiAKQEAgLTEzNCw2ICsxMzAs
NyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgb2Zmc2V0RnJvbVBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uKSBjb25zdDsKICAgICBGbG9hdFBvaW50IHBvc2l0aW9uRnJvbU9m
ZnNldChjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQpIGNvbnN0OwogCisgICAgRmxvYXRQb2ludCBh
ZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsK
IAogICAgIC8vIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50LgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBjcmVhdGVUaW1lcihGdW5j
dGlvbjx2b2lkKCk+JiYpIGZpbmFsOwpAQCAtMTQxLDEzICsxMzgsMTkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0b3BBbmltYXRpb25DYWxsYmFjayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYp
IGZpbmFsOwogCiAgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXQoKSBjb25zdCBmaW5hbDsKLSAg
ICB2b2lkIGltbWVkaWF0ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMsIGZsb2F0IGRlbHRh
KSBmaW5hbDsKICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBmaW5hbDsKICAgICBT
Y3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHMoKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgYWxs
b3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYWxsb3dzVmVy
dGljYWxTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKIAorICAgIHZvaWQgc2V0U2Nyb2xsQmVoYXZp
b3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXMpIGZpbmFsOworICAgIFNjcm9sbEJlaGF2aW9y
U3RhdHVzIHNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIGlt
bWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRT
aXplJikgZmluYWw7CisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUm
KSBmaW5hbDsKKyAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2Fy
eSgpIGZpbmFsOworCiAjaWYgSEFWRShSVUJCRVJfQkFORElORykKICAgICBJbnRTaXplIHN0cmV0
Y2hBbW91bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZWN0RWRnZXM8Ym9vbD4gZWRnZVBpbm5lZFN0
YXRlKCkgY29uc3QgZmluYWw7CkBAIC0xNTksMTAgKzE2Miw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RN
b25pdG9yOjpEZWZlclJlYXNvbikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAotICAgIC8vIFNjcm9s
bEFuaW1hdGlvbkNsaWVudAotICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFu
aW1hdGlvbiYpIGZpbmFsOwotICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1h
dGlvbihTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKLQogICAgIHN0YXRpYyBGbG9hdFNpemUgZGVs
dGFGcm9tU3RlcChTY3JvbGxiYXJPcmllbnRhdGlvbiwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlw
bGllcik7CiAKIHByb3RlY3RlZDoKQEAgLTE3Miw3ICsxNzEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
VGltZXIgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXI7CiAgICAgRmxvYXRQb2ludCBt
X2N1cnJlbnRQb3NpdGlvbjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25T
bW9vdGg+IG1fc2Nyb2xsQW5pbWF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yPiBtX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5jcHAKaW5kZXggZmEyNGYyMjdkNTM5MWYzZDMwYzljNTFmY2ZmN2Y2YzRmZTBhYjVmYS4uNzky
MTY4MGU2NWIxMWI3ZDk2N2U5MTVlMWMxNzY1ZjIyM2VhYjhlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApAQCAt
MzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvblNtb290aC5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtNzYsNiArNzgsNTkgQEAg
dm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcEtleWJvYXJkU2Nyb2xsaW5nKCkK
ICAgICBzZXRJc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKGZhbHNlKTsKIH0KIAorYm9vbCBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRp
b24oRmxvYXRQb2ludCBzdGFydE9mZnNldCwgRmxvYXRQb2ludCBkZXN0aW5hdGlvbk9mZnNldCkK
K3sKKyAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uKQorICAgICAgICBtX2N1cnJlbnRBbmltYXRp
b24tPnN0b3AoKTsKKworICAgIG1fY3VycmVudEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xs
QW5pbWF0aW9uU21vb3RoPigqdGhpcyk7CisgICAgcmV0dXJuIGRvd25jYXN0PFNjcm9sbEFuaW1h
dGlvblNtb290aD4oKm1fY3VycmVudEFuaW1hdGlvbikuc3RhcnRBbmltYXRlZFNjcm9sbFRvRGVz
dGluYXRpb24oc3RhcnRPZmZzZXQsIGRlc3RpbmF0aW9uT2Zmc2V0KTsKK30KKworYm9vbCBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmVnYXJnZXRBbmltYXRlZFNjcm9sbChGbG9hdFBvaW50
IG5ld0Rlc3RpbmF0aW9uT2Zmc2V0KQoreworICAgIGlmICghaXM8U2Nyb2xsQW5pbWF0aW9uU21v
b3RoPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgQVNTRVJUKG1fY3VycmVudEFuaW1hdGlvbi0+aXNBY3RpdmUoKSk7CisgICAgcmV0
dXJuIGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblNtb290aD4oKm1fY3VycmVudEFuaW1hdGlvbiku
cmV0YXJnZXRBY3RpdmVBbmltYXRpb24obmV3RGVzdGluYXRpb25PZmZzZXQpOworfQorCit2b2lk
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdG9wQW5pbWF0ZWRTY3JvbGwoKQoreworICAg
IGlmIChtX2N1cnJlbnRBbmltYXRpb24pCisgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+c3Rv
cCgpOworfQorCitib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxF
dmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkK
K3sKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCisgICAgaWYgKG1fY3VycmVudEFuaW1h
dGlvbiAmJiAhaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9jdXJyZW50QW5pbWF0aW9uLmdl
dCgpKSkgeworICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgbV9j
dXJyZW50QW5pbWF0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIW1fY3VycmVudEFu
aW1hdGlvbikKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gV1RGOjptYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM+KCp0aGlzKTsKKworICAgIGF1dG8mIGtpbmV0aWNBbmltYXRp
b24gPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25LaW5ldGljPigqbV9jdXJyZW50QW5pbWF0aW9u
KTsKKyAgICBraW5ldGljQW5pbWF0aW9uLmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShldmVudCk7CisK
KyAgICBpZiAoZXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKKyAgICAgICAga2lu
ZXRpY0FuaW1hdGlvbi5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShtX2Ns
aWVudC5zY3JvbGxPZmZzZXQoKSwga2luZXRpY0FuaW1hdGlvbi5jb21wdXRlVmVsb2NpdHkoKSwg
bV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0
aWNhbFNjcm9sbGluZygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChl
dmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsKKyAgICAgICAga2luZXRp
Y0FuaW1hdGlvbi5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICAgICAga2luZXRpY0FuaW1hdGlv
bi5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShtX2NsaWVudC5zY3JvbGxP
ZmZzZXQoKSwgZXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBtX2NsaWVudC5hbGxvd3NIb3Jpem9udGFs
U2Nyb2xsaW5nKCksIG1fY2xpZW50LmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShldmVudCk7Cisj
ZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OnNldElzQW5pbWF0aW5nUnViYmVyQmFuZChib29sIGlzQW5pbWF0aW5nUnViYmVyQmFu
ZCkKIHsKICAgICBpZiAoaXNBbmltYXRpbmdSdWJiZXJCYW5kID09IG1faXNBbmltYXRpbmdSdWJi
ZXJCYW5kKQpAQCAtMTAzLDYgKzE1OCwxMiBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpzZXRJc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKGJvb2wgaXNBbmltYXRpbgogICAg
IHN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoKQoreworICAgIGlmIChtX2N1cnJl
bnRBbmltYXRpb24pCisgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+dXBkYXRlU2Nyb2xsRXh0
ZW50cygpOworfQorCiBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1c2VzU2Nyb2xs
U25hcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICEhbV9zY3JvbGxTbmFwU3RhdGU7CkBAIC0xMzYs
NiArMTk3LDcgQEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMKIHsKICAgICBpZiAoIXVzZXNTY3Jv
bGxTbmFwKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICByZXR1cm4gbV9z
Y3JvbGxTbmFwU3RhdGUtPmFjdGl2ZVNuYXBJbmRleEZvckF4aXMoYXhpcyk7CiB9CiAKQEAgLTE4
NCw2ICsyNDYsMjggQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlS2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0ZShNb25vdG9uaWMKICAgICBtX2NsaWVudC5rZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yKCktPnVwZGF0ZUtleWJvYXJkU2Nyb2xsUG9zaXRpb24oY3Vy
cmVudFRpbWUpOwogfQogCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxU
b09mZnNldEZvckFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxPZmZzZXQpCit7Cisg
ICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gbV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCk7CisgICAgYXV0
byBzY3JvbGxEZWx0YSA9IHNjcm9sbE9mZnNldCAtIGN1cnJlbnRPZmZzZXQ7CisgICAgbV9jbGll
bnQuaW1tZWRpYXRlU2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOworfQorCit2b2lkIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9u
JiwgY29uc3QgRmxvYXRQb2ludCYgY3VycmVudE9mZnNldCkKK3sKKyAgICBzY3JvbGxUb09mZnNl
dEZvckFuaW1hdGlvbihjdXJyZW50T2Zmc2V0KTsKK30KKwordm9pZCBTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpCit7Cisg
ICAgbV9jbGllbnQuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6
Ok5vdEluQW5pbWF0aW9uKTsKK30KKworU2Nyb2xsRXh0ZW50cyBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKQorewor
ICAgIHJldHVybiBtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCk7Cit9CisKIC8vIEN1cnJlbnRseSwg
b25seSBNYWMgc3VwcG9ydHMgbW9tZW50dW0gc3JvbGxpbmctYmFzZWQgc2Nyb2xsc25hcHBpbmcg
YW5kIHJ1YmJlciBiYW5kaW5nCiAvLyBzbyBhbGwgb2YgdGhlc2UgbWV0aG9kcyBhcmUgYSBub29w
IG9uIG5vbi1NYWMgcGxhdGZvcm1zLgogI2lmICFQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCBh
NzE0NmRiYmJjZmExMWExZWE4NjY2NjU3OTYwMDVlZTAzMWI1NTU2Li5lNzVhOTVhMGQ4NzU1NzFk
MDliNDc2MWY0OTk3ZjZiNzQ5NTZiMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJGbG9hdFNpemUuaCIKIAogI2luY2x1ZGUgIlJlY3RFZGdlcy5oIgorI2luY2x1ZGUg
IlNjcm9sbEFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIlNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlw
ZXMuaCIKQEAgLTgwLDYgKzgxLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dz
SG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dz
VmVydGljYWxTY3JvbGxpbmcoKSBjb25zdCA9IDA7CiAKKyAgICAvLyBGSVhNRTogTWF5YmUgU2Ny
b2xsQmVoYXZpb3JTdGF0dXMgc2hvdWxkIGJlIHN0b3JlZCBvbiBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xs
QmVoYXZpb3JTdGF0dXMpID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbEJlaGF2aW9yU3RhdHVzIHNj
cm9sbEJlaGF2aW9yU3RhdHVzKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGltbWVk
aWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW1t
ZWRpYXRlU2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNp
emUmKSA9IDA7CisKKyAgICAvLyBJZiB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gaXMgd2l0
aGluIHRoZSBvdmVyaGFuZyBhcmVhLCB0aGlzIGZ1bmN0aW9uIHdpbGwgY2F1c2UKKyAgICAvLyB0
aGUgcGFnZSB0byBzY3JvbGwgdG8gdGhlIG5lYXJlc3QgYm91bmRhcnkgcG9pbnQuCisgICAgdmly
dHVhbCB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpID0gMDsK
KwogI2lmIEhBVkUoUlVCQkVSX0JBTkRJTkcpCiAgICAgdmlydHVhbCBib29sIGFsbG93c0hvcml6
b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgYWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpIGNvbnN0ID0gMDsKQEAgLTkyLDQxICsxMDQsNDAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBj
b25zdCA9IDA7CiAKICAgICAvLyBGSVhNRTogdXNlIFNjcm9sbENsYW1waW5nIHRvIGNvbGxhcHNl
IHRoZXNlIHRvIG9uZS4KLSAgICB2aXJ0dWFsIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnkoY29uc3Qg
RmxvYXRTaXplJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeVdpdGhv
dXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKLQogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU3RhcnRSdWJiZXJCYW5kU25hcEFuaW1hdGlvbigpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRTdG9wUnViYmVyYmFuZFNuYXBBbmltYXRpb24oKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBydWJiZXJCYW5kaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIHsgfQotCi0gICAgLy8g
SWYgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIGlzIHdpdGhpbiB0aGUgb3ZlcmhhbmcgYXJl
YSwgdGhpcyBmdW5jdGlvbiB3aWxsIGNhdXNlCi0gICAgLy8gdGhlIHBhZ2UgdG8gc2Nyb2xsIHRv
IHRoZSBuZWFyZXN0IGJvdW5kYXJ5IHBvaW50LgotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTY3Jv
bGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25p
dG9yOjpEZWZlclJlYXNvbikgY29uc3QgeyAvKiBEbyBub3RoaW5nICovIH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IHsgLyogRG8gbm90aGluZyAqLyB9CiAKICAg
ICB2aXJ0dWFsIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0
YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkgeyB9CiAg
ICAgdmlydHVhbCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHMoKSBjb25zdCA9IDA7CiB9OwogCi1jbGFzcyBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciB7CitjbGFzcyBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlciA6IHB1YmxpYyBTY3JvbGxBbmltYXRpb25DbGllbnQgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyKTsKIAogcHVibGljOgogICAgIGV4cGxp
Y2l0IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Q2xpZW50Jik7Ci0gICAgflNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyKCk7CisgICAgdmlydHVh
bCB+U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIoKTsKIAogICAgIGJvb2wgdXNlc1Njcm9sbFNu
YXAoKSBjb25zdDsKICAgICB2b2lkIHN0b3BBbGxUaW1lcnMoKTsKICAgICB2b2lkIHNjcm9sbFBv
c2l0aW9uQ2hhbmdlZCgpOwogCisgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5h
dGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBGbG9hdFBvaW50IGRlc3RpbmF0aW9uT2Zmc2V0
KTsKKyAgICBib29sIHJlZ2FyZ2V0QW5pbWF0ZWRTY3JvbGwoRmxvYXRQb2ludCBuZXdEZXN0aW5h
dGlvbk9mZnNldCk7CisgICAgdm9pZCBzdG9wQW5pbWF0ZWRTY3JvbGwoKTsKKworICAgIC8vIEZJ
WE1FOiBIYWNrIGZvciBTY3JvbGxBbmltYXRvckdlbmVyaWMuIE5lZWRzIGNsZWFudXAuCisgICAg
Ym9vbCBwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50Jik7CisKICAgICB2b2lkIGJlZ2luS2V5Ym9hcmRTY3JvbGxpbmcoKTsKICAgICB2
b2lkIHN0b3BLZXlib2FyZFNjcm9sbGluZygpOwogICAgIApAQCAtMTM0LDYgKzE0NSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWUpOwogCiAgICAg
dm9pZCB1cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpOworICAgIAorICAgIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBz
ZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAg
ICAgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBj
b25zdDsKQEAgLTE2MiwxMiArMTc1LDEwIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgaGFuZGxlZC4KICAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAotI2lmIEhBVkUoUlVCQkVSX0JBTkRJTkcpCiAgICAg
dm9pZCBzdG9wUnViYmVyYmFuZGluZygpOwogICAgIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVz
cygpIGNvbnN0OwogICAgIFJlY3RFZGdlczxib29sPiBydWJiZXJCYW5kaW5nRWRnZXMoKSBjb25z
dCB7IHJldHVybiBtX3J1YmJlckJhbmRpbmdFZGdlczsgfQogI2VuZGlmCi0jZW5kaWYKIAogcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNU
aW1lKTsKQEAgLTE4OCw3ICsxOTksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnREZWZlcnJp
bmdXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKCk7CiAgICAgdm9p
ZCBzdG9wRGVmZXJyaW5nV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGlu
ZygpOwogCi0jaWYgSEFWRShSVUJCRVJfQkFORElORykKICAgICB2b2lkIHN0YXJ0UnViYmVyYmFu
ZEFuaW1hdGlvbigpOwogICAgIHZvaWQgc3RvcFNuYXBSdWJiZXJiYW5kQW5pbWF0aW9uKCk7CiAK
QEAgLTE5OCwxMiArMjA4LDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1J1YmJlckJhbmRJblBy
b2dyZXNzSW50ZXJuYWwoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVJ1YmJlckJhbmRpbmdTdGF0
ZSgpOwogICAgIHZvaWQgdXBkYXRlUnViYmVyQmFuZGluZ0VkZ2VzKEludFNpemUgY2xpZW50U3Ry
ZXRjaCk7Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydE9yU3RvcEFuaW1hdGlvbkNh
bGxiYWNrcygpOworICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXRGb3JBbmltYXRpb24oY29uc3QgRmxv
YXRQb2ludCYgc2Nyb2xsT2Zmc2V0KTsKKworICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVudAor
ICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0
IEZsb2F0UG9pbnQmIC8qIGN1cnJlbnRPZmZzZXQgKi8pIGZpbmFsOworICAgIHZvaWQgc2Nyb2xs
QW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOworICAgIFNjcm9sbEV4dGVu
dHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSAgZmluYWw7CiAK
ICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCYgbV9jbGllbnQ7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uPiBtX2N1cnJlbnRBbmltYXRpb247CisKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+IG1fc2Nyb2xsU25hcFN0
YXRlOwogICAgIGJvb2wgbV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UgeyBmYWxzZSB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFu
aW1hdG9yR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9s
bEFuaW1hdG9yR2VuZXJpYy5jcHAKaW5kZXggYjU4YTk0MzY3ZDBjMWEzNWI0MTFjZGNiYzMzYjVi
NGUxMWNmOTJkOC4uZTQzYTM2YTg0NzYzM2E0ZDgwODcyYmQzZTI1MWNkZjM5YjVjZDY0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdl
bmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5p
bWF0b3JHZW5lcmljLmNwcApAQCAtMzEsMTAgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTY3JvbGxBbmltYXRvckdlbmVyaWMuaCIKIAotI2luY2x1ZGUgIlNjcm9sbEFu
aW1hdGlvbktpbmV0aWMuaCIKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKICNp
bmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgotI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNTAgKzQyLDE4IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYg
c2Nyb2xsYWJsCiAKIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNj
cm9sbGFibGVBcmVhKQotICAgICwgbV9raW5ldGljQW5pbWF0aW9uKG1ha2VVbmlxdWU8U2Nyb2xs
QW5pbWF0aW9uS2luZXRpYz4oKnRoaXMpKQogewogfQogCiBTY3JvbGxBbmltYXRvckdlbmVyaWM6
On5TY3JvbGxBbmltYXRvckdlbmVyaWMoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpCi17Ci0gICAgbV9raW5ldGlj
QW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bv
c2l0aW9uV2l0aG91dEFuaW1hdGlvbihwb3NpdGlvbiwgY2xhbXBpbmcpOwotfQotCisvLyBGSVhN
RTogUHVzaCB0aGlzIGludG8gdGhlIGJhc2UgY2xhc3Mgc28gdGhhdCBTY3JvbGxBbmltYXRvckdl
bmVyaWMgY2FuIGJlIHJlbW92ZWQuCiBib29sIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogewotICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQot
ICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3JvbGxIaXN0b3J5KGV2ZW50KTsKLQot
ICAgIGlmIChldmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tp
bmV0aWNBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KG1f
Y3VycmVudFBvc2l0aW9uLCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBt
X3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9zY3JvbGxhYmxlQXJlYS52
ZXJ0aWNhbFNjcm9sbGJhcigpKTsKKyAgICBpZiAobV9zY3JvbGxDb250cm9sbGVyLnByb2Nlc3NX
aGVlbEV2ZW50Rm9yS2luZXRpY1Njcm9sbGluZyhldmVudCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgp
KSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0g
ICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkobV9jdXJyZW50UG9zaXRpb24sIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgbV9zY3Jv
bGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCksIG1fc2Nyb2xsYWJsZUFyZWEudmVydGlj
YWxTY3JvbGxiYXIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgogCiAg
ICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGV2ZW50KTsKIH0KIAot
Ly8gRklYTUU6IENhbiB3ZSBqdXN0IHVzZSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbj8K
LXZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Ny
b2xsQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQotewot
ICAgIGlmICgmYW5pbWF0aW9uID09IG1fa2luZXRpY0FuaW1hdGlvbi5nZXQoKSkgewotICAgICAg
ICAvLyBGSVhNRTogQ2xhcmlmeSBob3cgYW5pbWF0aW9ucyBpbnRlcmFjdC4gVGhlcmUgc2hvdWxk
IG5ldmVyIGJlIG1vcmUgdGhhbiBvbmUgYWN0aXZlIGF0IGEgdGltZS4KLSAgICAgICAgbV9zY3Jv
bGxBbmltYXRpb24tPnN0b3AoKTsKLSAgICAgICAgc2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9u
LCBOb3RpZnlTY3JvbGxhYmxlQXJlYTo6WWVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoYW5pbWF0aW9uLCBw
b3NpdGlvbik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCmluZGV4
IDJlMGQ5NmFmMzc1YmNjNDE0OWIwMjQ5Y2Y3YzUxZDUyMGI1YjA5ZTMuLmRhZWEyMWUyNGMwZTU4
YjYwZjEzNzU1NTA1NmRkMjNmNjBiOTFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaApAQCAtMzEsMjYgKzMx
LDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCi0jaW5j
bHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxBbmlt
YXRpb247Ci1jbGFzcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOwogCiBjbGFzcyBTY3JvbGxBbmlt
YXRvckdlbmVyaWMgZmluYWwgOiBwdWJsaWMgU2Nyb2xsQW5pbWF0b3IgewogcHVibGljOgogICAg
IGV4cGxpY2l0IFNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYpOwogICAgIHZp
cnR1YWwgflNjcm9sbEFuaW1hdG9yR2VuZXJpYygpOwogCi1wcml2YXRlOgotICAgIGJvb2wgc2Ny
b2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNjcm9sbENs
YW1waW5nKSBmaW5hbDsKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JikgZmluYWw7Ci0KLSAgICAvLyBTY3JvbGxBbmltYXRpb25DbGllbnQKLSAgICB2
b2lkIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9h
dFBvaW50JiBjdXJyZW50UG9zaXRpb24pIGZpbmFsOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fa2luZXRpY0FuaW1hdGlvbjsKK3ByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5oCmluZGV4IGNiZmE2ODJjNTZmNzQ2ODI4MTg0NmVmMTMxMmE5
ZjVlYTViNjk2OWQuLjNlNTE3NjEzYTgwZDEzYzM5Nzk4MmY5MjQ5NzVkZDI3Yzk3N2JhY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCkBA
IC01MCw4ICs1MCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFz
ZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgZmluYWw7CiAgICAgCi0gICAgRmxvYXRQb2ludCBh
ZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsK
LQogICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNTY3Jv
bGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0IGZpbmFsOwpAQCAtNjIsOSArNjAsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmco
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzaG91bGRS
dWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIGltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3Qg
RmxvYXRTaXplJikgZmluYWw7Ci0gICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9h
dFNpemUmKSBmaW5hbDsKLSAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5l
Y2Vzc2FyeSgpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IDZlMzc3
MWVkZTQ2NGRiN2JjMzQ1MGIzNGIyMTk2NDZhNmI1MWVlZDUuLmYxOTA4YzRmYTZkMmUyYTc1NzNm
ZjFhODAxMWNjNTEyNDU1NmM5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTczLDI2ICs3Myw2IEBAIHN0YXRpYyBib29sIHJ1
YmJlckJhbmRpbmdFbmFibGVkRm9yU3lzdGVtKCkKICAgICByZXR1cm4gZW5hYmxlZDsKIH0KIAot
RmxvYXRQb2ludCBTY3JvbGxBbmltYXRvck1hYzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25JZk5lY2Vz
c2FyeShjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3QKLXsKLSAgICBpZiAoIW1fc2Ny
b2xsYWJsZUFyZWEuY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoKSkKLSAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOwotCi0gICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEuY29uc3RyYWlu
U2Nyb2xsUG9zaXRpb24oU2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pKTsKLX0KLQotdm9pZCBTY3Jv
bGxBbmltYXRvck1hYzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkK
LXsKLSAgICBib29sIGN1cnJlbnRseUNvbnN0cmFpbnNUb0NvbnRlbnRFZGdlID0gbV9zY3JvbGxh
YmxlQXJlYS5jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpOwotICAgIG1fc2Nyb2xs
YWJsZUFyZWEuc2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7Ci0KLSAg
ICBTY3JvbGxQb3NpdGlvbiBjdXJyZW50U2Nyb2xsUG9zaXRpb24gPSBtX3Njcm9sbGFibGVBcmVh
LnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgU2Nyb2xsUG9zaXRpb24gY29uc3RyYWluZWRQb3NpdGlv
biA9IG1fc2Nyb2xsYWJsZUFyZWEuY29uc3RyYWluU2Nyb2xsUG9zaXRpb24oY3VycmVudFNjcm9s
bFBvc2l0aW9uKTsKLSAgICBpbW1lZGlhdGVTY3JvbGxCeShjb25zdHJhaW5lZFBvc2l0aW9uIC0g
Y3VycmVudFNjcm9sbFBvc2l0aW9uKTsKLQotICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0Q29uc3Ry
YWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoY3VycmVudGx5Q29uc3RyYWluc1RvQ29udGVudEVk
Z2UpOwotfQotCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjppc1VzZXJTY3JvbGxJblByb2dyZXNz
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmlzVXNlclNjcm9sbElu
UHJvZ3Jlc3MoKTsKQEAgLTIyMCwyMyArMjAwLDYgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6
c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmltbWVkaWF0ZVNjcm9s
bEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkK
LXsKLSAgICBtX3Njcm9sbGFibGVBcmVhLnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRF
ZGdlKGZhbHNlKTsKLSAgICBpbW1lZGlhdGVTY3JvbGxCeShkZWx0YSk7Ci0gICAgbV9zY3JvbGxh
YmxlQXJlYS5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSh0cnVlKTsKLX0KLQot
dm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsQnkoY29uc3QgRmxvYXRTaXpl
JiBkZWx0YSkKLXsKLSAgICBGbG9hdFBvaW50IGN1cnJlbnRQb3NpdGlvbiA9IHRoaXMtPmN1cnJl
bnRQb3NpdGlvbigpOwotICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRpb24gPSBhZGp1c3RTY3JvbGxQ
b3NpdGlvbklmTmVjZXNzYXJ5KGN1cnJlbnRQb3NpdGlvbiArIGRlbHRhKTsKLSAgICBpZiAobmV3
UG9zaXRpb24gPT0gY3VycmVudFBvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzZXRD
dXJyZW50UG9zaXRpb24obmV3UG9zaXRpb24sIE5vdGlmeVNjcm9sbGFibGVBcmVhOjpZZXMpOwot
fQotCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNu
YXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIHJldHVybiBt
X3Njcm9sbENvbnRyb2xsZXIucHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKHdoZWVsRXZl
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyLm1tCmluZGV4IDI5NDkwZDhhZWM4M2MzYTIyN2QzYmU1NjlmYWNh
ZDI0MTk4ZGQwMTcuLmFjMjc3NDY0NTIzODY2ZDhiZWI5ZDMwN2IyZGMwMTRhN2ZhNzJjNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIubW0KQEAgLTc1NywxMSArNzU3LDEwIEBAIHZvaWQgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNU
aW1lIGN1CiAKICAgICBib29sIGlzQW5pbWF0aW9uQ29tcGxldGU7CiAgICAgYXV0byBhbmltYXRp
b25PZmZzZXQgPSBtX3Njcm9sbFNuYXBTdGF0ZS0+Y3VycmVudEFuaW1hdGVkU2Nyb2xsT2Zmc2V0
KGN1cnJlbnRUaW1lLCBpc0FuaW1hdGlvbkNvbXBsZXRlKTsKLSAgICBhdXRvIGN1cnJlbnRPZmZz
ZXQgPSBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
U25hcCwgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwg
IiB1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUgLSBpc0FuaW1hdGlvbkNvbXBsZXRlICIg
PDwgaXNBbmltYXRpb25Db21wbGV0ZSA8PCAiIGFuaW1hdGlvbk9mZnNldCAiIDw8IGFuaW1hdGlv
bk9mZnNldCA8PCAiIChtYWluIHRocmVhZCAiIDw8IGlzTWFpblRocmVhZCgpIDw8ICIpIik7CiAK
LSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiB1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3Rh
dGUgLSBpc0FuaW1hdGlvbkNvbXBsZXRlICIgPDwgaXNBbmltYXRpb25Db21wbGV0ZSA8PCAiIGN1
cnJlbnRPZmZzZXQgIiA8PCBjdXJyZW50T2Zmc2V0IDw8ICIgKG1haW4gdGhyZWFkICIgPDwgaXNN
YWluVGhyZWFkKCkgPDwgIikiKTsKKyAgICBzY3JvbGxUb09mZnNldEZvckFuaW1hdGlvbihhbmlt
YXRpb25PZmZzZXQpOwogCi0gICAgbV9jbGllbnQuaW1tZWRpYXRlU2Nyb2xsQnlXaXRob3V0Q29u
dGVudEVkZ2VDb25zdHJhaW50cyhGbG9hdFNpemUoYW5pbWF0aW9uT2Zmc2V0LngoKSAtIGN1cnJl
bnRPZmZzZXQueCgpLCBhbmltYXRpb25PZmZzZXQueSgpIC0gY3VycmVudE9mZnNldC55KCkpKTsK
ICAgICBpZiAoaXNBbmltYXRpb25Db21wbGV0ZSkgewogICAgICAgICBtX3Njcm9sbFNuYXBTdGF0
ZS0+dHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKICAgICAgICAgc3RvcFNj
cm9sbFNuYXBBbmltYXRpb24oKTsK
</data>
<flag name="review"
          id="462669"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="462677"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>