<?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>215544</bug_id>
          
          <creation_ts>2020-08-15 13:06:48 -0700</creation_ts>
          <short_desc>Use more enum classes in DateComponents</short_desc>
          <delta_ts>2020-08-25 08:29:18 -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>DOM</component>
          <version>Other</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="Rob Buis">rbuis</reporter>
          <assigned_to name="Rob Buis">rbuis</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1680643</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-08-15 13:06:48 -0700</bug_when>
    <thetext>Make Type and SecondFormat enum classes since this is more readable
and allows us to have less includes in header files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680646</commentid>
    <comment_count>1</comment_count>
      <attachid>406674</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-08-15 13:38:00 -0700</bug_when>
    <thetext>Created attachment 406674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680647</commentid>
    <comment_count>2</comment_count>
      <attachid>406675</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-08-15 13:55:52 -0700</bug_when>
    <thetext>Created attachment 406675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680648</commentid>
    <comment_count>3</comment_count>
      <attachid>406675</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-15 14:24:22 -0700</bug_when>
    <thetext>Comment on attachment 406675
Patch

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

&gt; Source/WebCore/platform/DateComponents.h:39
&gt; +enum class SecondFormat {

I suggest adding &quot;: uint8_t&quot;.

&gt; Source/WebCore/platform/DateComponents.h:45
&gt; +enum class DateComponentsType {

I suggest adding &quot;: uint8_t&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680671</commentid>
    <comment_count>4</comment_count>
      <attachid>406683</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-08-16 05:33:15 -0700</bug_when>
    <thetext>Created attachment 406683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680678</commentid>
    <comment_count>5</comment_count>
      <attachid>406675</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-08-16 12:40:45 -0700</bug_when>
    <thetext>Comment on attachment 406675
Patch

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

&gt;&gt; Source/WebCore/platform/DateComponents.h:39
&gt;&gt; +enum class SecondFormat {
&gt; 
&gt; I suggest adding &quot;: uint8_t&quot;.

Done.

&gt;&gt; Source/WebCore/platform/DateComponents.h:45
&gt;&gt; +enum class DateComponentsType {
&gt; 
&gt; I suggest adding &quot;: uint8_t&quot;.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682158</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-22 13:07:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/67622319&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682646</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-25 08:29:17 -0700</bug_when>
    <thetext>Committed r266114: &lt;https://trac.webkit.org/changeset/266114&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406683.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406674</attachid>
            <date>2020-08-15 13:38:00 -0700</date>
            <delta_ts>2020-08-15 13:55:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215544-20200815223758.patch</filename>
            <type>text/plain</type>
            <size>34822</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTcwOGI1NWZkMjI3YmRk
MDA1M2Q2YjdjZTEzZjUwZTZjMGMxMDhlZi4uM2I1MDRkNGMxMTBkMzQzZTQ3MDcxNjUwM2JiYjAy
ZDM1NjIzZDFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA4LTE1ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgZW51bSBjbGFzc2Vz
IGluIERhdGVDb21wb25lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTU1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNYWtlIFR5cGUgYW5kIFNlY29uZEZvcm1hdCBlbnVtIGNsYXNzZXMgc2luY2Ug
dGhpcyBpcyBtb3JlIHJlYWRhYmxlCisgICAgICAgIGFuZCBhbGxvd3MgdXMgdG8gaGF2ZSBsZXNz
IGluY2x1ZGVzIGluIGhlYWRlciBmaWxlcy4KKworICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIGh0bWwvRGF0
ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpkYXRlVHlw
ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRt
bC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OmRhdGVUeXBlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1l
TG9jYWxJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGF0ZVR5cGUgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6ZGF0ZVR5cGUgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6ZGF0ZVR5cGUgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1RpbWVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6ZGF0ZVR5cGUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvV2Vl
a0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWVrSW5wdXRUeXBlOjpkYXRlVHlw
ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9XZWVrSW5wdXRUeXBlLmg6CisgICAgICAgICogcGxh
dGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVu
dHM6OnBhcnNlTW9udGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM6OnBhcnNl
RGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6cGFyc2VXZWVrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpwYXJzZVRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM6OnBhcnNlRGF0ZVRpbWVMb2NhbCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2hGb3JEYXRlVGltZUxvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpz
ZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1vbnRoc1NpbmNlRXBvY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjptaWxsaXNlY29uZHNTaW5jZUVwb2No
Rm9yVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6bWlsbGlz
ZWNvbmRzU2luY2VFcG9jaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50
czo6bW9udGhzU2luY2VFcG9jaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9u
ZW50czo6dG9TdHJpbmdGb3JUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21w
b25lbnRzOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vRGF0ZUNvbXBvbmVu
dHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpEYXRlQ29tcG9uZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6dHlwZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmZvcm1hdERhdGVUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1BsYXRmb3Jt
TG9jYWxlLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUNvY29hOjpmb3JtYXREYXRlVGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmg6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxpemVkRGF0ZUNhY2hlOjpmb3JtYXR0ZXJGb3JEYXRlVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGl6ZWREYXRlQ2FjaGU6Om1heGltdW1XaWR0aEZvckRhdGVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Y3JlYXRlRm9ybWF0dGVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1X
aWR0aCk6CisKIDIwMjAtMDgtMTUgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmVydCB1bm5lY2Vzc2FyeSBjaGFuZ2UgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1MjEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMWE3ZWQzMTU1MTZmMTQw
N2E3NmE4MmUyOWE1NTRjNmMwZTc3OWYwZS4uOGQ1MTBkZDVlMWE5OTUxNzA0YWMzYWJhZDgxZDEz
NzVmYTc5ZDRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmNwcApAQCAtMTMzLDEzICsxMzMsMTEgQEAgU3RyaW5nIEJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMoY29uc3QgRGF0ZUNvbXBvbmVudHMm
IGQKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBEZWNpbWFsIHN0ZXA7Ci0gICAgaWYg
KCFlbGVtZW50KCktPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQorICAgIGlmICghZWxlbWVu
dCgpLT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSB8fCBzdGVwLnJlbWFpbmRlcihtc2VjUGVy
TWludXRlKS5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoKTsKLSAgICBp
ZiAoc3RlcC5yZW1haW5kZXIobXNlY1Blck1pbnV0ZSkuaXNaZXJvKCkpCi0gICAgICAgIHJldHVy
biBkYXRlLnRvU3RyaW5nKERhdGVDb21wb25lbnRzOjpOb25lKTsKICAgICBpZiAoc3RlcC5yZW1h
aW5kZXIobXNlY1BlclNlY29uZCkuaXNaZXJvKCkpCi0gICAgICAgIHJldHVybiBkYXRlLnRvU3Ry
aW5nKERhdGVDb21wb25lbnRzOjpTZWNvbmQpOwotICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKERh
dGVDb21wb25lbnRzOjpNaWxsaXNlY29uZCk7CisgICAgICAgIHJldHVybiBkYXRlLnRvU3RyaW5n
KFNlY29uZEZvcm1hdDo6U2Vjb25kKTsKKyAgICByZXR1cm4gZGF0ZS50b1N0cmluZyhTZWNvbmRG
b3JtYXQ6Ok1pbGxpc2Vjb25kKTsKIH0KIAogU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUgdmFsdWUpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBhNWQ2ZDllZjI4NzkyMTY4ZmU5Y2ZiZjY2
N2FjMDE0OWRkMzA4MTA0Li5iMTk5OWUxMTI2Mzk0NWNlNWYxM2ZmNmY2ZjY2Mzc1MDFlZGNhODJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTU2LDkgKzU2LDkgQEAg
Y29uc3QgQXRvbVN0cmluZyYgRGF0ZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QK
ICAgICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmRhdGUoKTsKIH0KIAotRGF0ZUNvbXBvbmVudHM6
OlR5cGUgRGF0ZUlucHV0VHlwZTo6ZGF0ZVR5cGUoKSBjb25zdAorRGF0ZUNvbXBvbmVudHNUeXBl
IERhdGVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0ZUNvbXBv
bmVudHM6OkRhdGU7CisgICAgcmV0dXJuIERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZTsKIH0KIAog
U3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
YXRlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAppbmRl
eCAzMzU1MDc0YmU2ZDVmMmUyZjYzODgwNjYyZDM5NjA2NWRlNjliZjJiLi5lYmJhMGYwZGZlYmI4
YzQ5ZTY4MDdhYjM2ZjkzZGIwYjFjZWIyODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQXRv
bVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgRGF0ZUNvbXBv
bmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEYXRlQ29tcG9uZW50
c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdGVwUmFuZ2UgY3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RGF0
ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKaW5kZXggZGI2MzkwOGZhNjQ1MmZk
ZmVlMGIxZTNhNTZmMzY3YzAxYjdjMmQyOS4uZjQwOGIyYzczZDlhNzdmYjIxYTZkZTAyN2MzODU0
NTdhYTQzNWZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1
dFR5cGUuY3BwCkBAIC01Myw5ICs1Myw5IEBAIGNvbnN0IEF0b21TdHJpbmcmIERhdGVUaW1lTG9j
YWxJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlw
ZU5hbWVzOjpkYXRldGltZWxvY2FsKCk7CiB9CiAKLURhdGVDb21wb25lbnRzOjpUeXBlIERhdGVU
aW1lTG9jYWxJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKK0RhdGVDb21wb25lbnRzVHlwZSBE
YXRlVGltZUxvY2FsSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERh
dGVDb21wb25lbnRzOjpEYXRlVGltZUxvY2FsOworICAgIHJldHVybiBEYXRlQ29tcG9uZW50c1R5
cGU6OkRhdGVUaW1lTG9jYWw7CiB9CiAKIGRvdWJsZSBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjp2
YWx1ZUFzRGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lTG9jYWxJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElu
cHV0VHlwZS5oCmluZGV4IDJjMDQ5NDlmMGYwYTZkOTBmMzI0OGU0ZWY5MGI4MDAwMTk3NDk0YTUu
LmM3MTMzZWUzYmEwYjdjZWVkYzNhMmJiZWMyOTM4MmY0NDBmNzc1YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUo
KSBjb25zdCBmaW5hbDsKLSAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0
IGZpbmFsOworICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IGZpbmFsOwog
ICAgIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldFZhbHVlQXNEYXRlKGRvdWJsZSkgY29uc3QgZmluYWw7CiAgICAgU3RlcFJhbmdlIGNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMTkzODNlN2JlNGE1ZjU5NWRjZTRjOThh
NDdkMTc2MmIzNjNhNDE0Yy4uNzRjYWNmYjA1Y2MxMDE4ZTg3YjkyYmNjMGIzN2Y5MjFmYzA4NDc4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNp
bmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgpAQCAtMTY3NSw3ICsxNjc2LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50
Ojppc1N0ZXBwYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pc1N0ZXBwYWJs
ZSgpOwogfQogCi1EYXRlQ29tcG9uZW50czo6VHlwZSBIVE1MSW5wdXRFbGVtZW50OjpkYXRlVHlw
ZSgpIGNvbnN0CitEYXRlQ29tcG9uZW50c1R5cGUgSFRNTElucHV0RWxlbWVudDo6ZGF0ZVR5cGUo
KSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+ZGF0ZVR5cGUoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggY2I4NTQ1NmQ0YjIxMTE5NWQ2MmYy
YTgxNmRlNmE4NDBkYzkwNjI5YS4uNDJkNjMwYWM1ZmIxZGY1YjY1MTZjMTc0ODQ4MDliZDFlNzcx
ZWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI0LDcgKzI0
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2lu
Y2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBAIC01Myw2ICs1Miw3IEBAIHN0cnVjdCBJbnB1dEVs
ZW1lbnRDbGlja1N0YXRlIHsKIH07CiAKIGVudW0gY2xhc3MgQW55U3RlcEhhbmRsaW5nIDogYm9v
bDsKK2VudW0gY2xhc3MgRGF0ZUNvbXBvbmVudHNUeXBlOwogCiBjbGFzcyBIVE1MSW5wdXRFbGVt
ZW50IDogcHVibGljIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50IHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEhUTUxJbnB1dEVsZW1lbnQpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGltZUZpZWxkKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1dlZWtGaWVsZCgpIGNvbnN0OwogCi0gICAgRGF0ZUNvbXBvbmVu
dHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdDsKKyAgICBEYXRlQ29tcG9uZW50c1R5cGUgZGF0ZVR5
cGUoKSBjb25zdDsKIAogICAgIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29uc3Q7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggMzQ1ZDJkYTY1MTUyMTBhMjc2
ZmQ4MGY4ZjI3ODY4ZDI0MTliYWJhOS4uMjcwNjE4YmE5ZTU1ZjZjYjIzNzc1MjUxNDc5Y2RiMTYz
NTlhODFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNTIzLDkgKzUyMyw5IEBA
IFN0cmluZyBJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QKICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiB9CiAKLURhdGVDb21wb25lbnRzOjpUeXBlIElucHV0VHlwZTo6ZGF0
ZVR5cGUoKSBjb25zdAorRGF0ZUNvbXBvbmVudHNUeXBlIElucHV0VHlwZTo6ZGF0ZVR5cGUoKSBj
b25zdAogewotICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6SW52YWxpZDsKKyAgICByZXR1cm4g
RGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkOwogfQogCiB2b2lkIElucHV0VHlwZTo6ZGlzcGF0
Y2hTaW11bGF0ZWRDbGlja0lmQWN0aXZlKEtleWJvYXJkRXZlbnQmIGV2ZW50KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggMWM1NTEyOWMxNDVkMDRkM2YxMTFiOTY5MGE4NTM0Mjc2
MDM5NGRmMC4uMTAxNWIwZmFmZTRjNTRmMGI2NDMyOTE3MGUwZWRlNGViMzJiNzRkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oCkBAIC00MCwxMCArNDAsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CkBAIC02Nyw2ICs2Myw3
IEBAIGNsYXNzIFRvdWNoRXZlbnQ7CiBzdHJ1Y3QgSW5wdXRFbGVtZW50Q2xpY2tTdGF0ZTsKIAog
ZW51bSBjbGFzcyBBbnlTdGVwSGFuZGxpbmcgOiBib29sOworZW51bSBjbGFzcyBEYXRlQ29tcG9u
ZW50c1R5cGU7CiAKIC8vIEFuIElucHV0VHlwZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgdHlwZS1z
cGVjaWZpYyBwYXJ0IG9mIGFuIEhUTUxJbnB1dEVsZW1lbnQuCiAvLyBEbyBub3QgZXhwb3NlIGlu
c3RhbmNlcyBvZiBJbnB1dFR5cGUgYW5kIGNsYXNzZXMgZGVyaXZlZCBmcm9tIGl0IHRvIGNsYXNz
ZXMKQEAgLTMwNSw3ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlY2VpdmVE
cm9wcGVkRmlsZXMoY29uc3QgRHJhZ0RhdGEmKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBEYXRl
Q29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRGF0ZUNvbXBv
bmVudHNUeXBlIGRhdGVUeXBlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5
U3RyaW5nKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5k
ZXggNDkwMjYwYzI4Yzc5ZjM1MDY3NjI3Yzg5ZGIwMmY5YjY5YmIwZWUwNC4uMTFhYWU2NDE1ZDVj
OTg2MWFkMzM3MWM5MmU1OWYzMTUzZWYyOTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElu
cHV0VHlwZS5jcHAKQEAgLTU1LDkgKzU1LDkgQEAgY29uc3QgQXRvbVN0cmluZyYgTW9udGhJbnB1
dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVz
Ojptb250aCgpOwogfQogCi1EYXRlQ29tcG9uZW50czo6VHlwZSBNb250aElucHV0VHlwZTo6ZGF0
ZVR5cGUoKSBjb25zdAorRGF0ZUNvbXBvbmVudHNUeXBlIE1vbnRoSW5wdXRUeXBlOjpkYXRlVHlw
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpNb250aDsKKyAgICByZXR1
cm4gRGF0ZUNvbXBvbmVudHNUeXBlOjpNb250aDsKIH0KIAogZG91YmxlIE1vbnRoSW5wdXRUeXBl
Ojp2YWx1ZUFzRGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01v
bnRoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgKaW5k
ZXggMGNjYTkyMmE1M2M0MGRmMTU4ZGNmYjJjNjA2MWQ4YTM4Yzg0YWY4NC4uODUzNmFjMWFiNDdi
MjYyNTJkNDI4NDgyMWFlYWQ4NWRjNzI0Y2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1
dFR5cGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3Qg
QXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgRGF0ZUNv
bXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEYXRlQ29tcG9u
ZW50c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3VibGUgdmFsdWVBc0Rh
dGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25k
cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lSW5wdXRUeXBlLmNwcAppbmRleCAwYmQyZDRiY2U5YTU4ZWI3OTY3OTdiMzgxMTAwODQ1
YWU1ZDY1NmZkLi4zZmVkOTZhYjE4YjQ1ZWQwN2VmMjFhNjMzMWI3NGRkM2MxYThlYjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTU5LDkgKzU5LDkgQEAgY29uc3Qg
QXRvbVN0cmluZyYgVGltZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKICAgICBy
ZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnRpbWUoKTsKIH0KIAotRGF0ZUNvbXBvbmVudHM6OlR5cGUg
VGltZUlucHV0VHlwZTo6ZGF0ZVR5cGUoKSBjb25zdAorRGF0ZUNvbXBvbmVudHNUeXBlIFRpbWVJ
bnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6
OlRpbWU7CisgICAgcmV0dXJuIERhdGVDb21wb25lbnRzVHlwZTo6VGltZTsKIH0KIAogRGVjaW1h
bCBUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVJbnB1dFR5cGUuaAppbmRleCA4NDE2NmIwOTVhZjIxODhjYThlMDc1NmJlN2U1NTcx
MWIxMmQ4ZWQ0Li42NzUyNDUzNjM2NjUxMDQwMzA4NWVlNjFiN2EwZDZlOTQ5MDYzYWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBEYXRlQ29tcG9uZW50c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBvdmVycmlk
ZTsKICAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKGNv
bnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1
dFR5cGUuY3BwCmluZGV4IGIyYmIyNDNiOTA1ZDg0MTViMDM0Yzk0MDZlNGJmYTM4MjFiMzliYTMu
LmZiN2NhMTZhNjk4NjgyMDgxMjU0ODViYjMzMjQxOTE4OGJlMTZiNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAtNTIsOSArNTIsOSBAQCBjb25zdCBBdG9tU3RyaW5n
JiBXZWVrSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogICAgIHJldHVybiBJbnB1
dFR5cGVOYW1lczo6d2VlaygpOwogfQogCi1EYXRlQ29tcG9uZW50czo6VHlwZSBXZWVrSW5wdXRU
eXBlOjpkYXRlVHlwZSgpIGNvbnN0CitEYXRlQ29tcG9uZW50c1R5cGUgV2Vla0lucHV0VHlwZTo6
ZGF0ZVR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6V2VlazsKKyAg
ICByZXR1cm4gRGF0ZUNvbXBvbmVudHNUeXBlOjpXZWVrOwogfQogCiBTdGVwUmFuZ2UgV2Vla0lu
cHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCmluZGV4IGQzYmExNTEzM2U3MzQx
MWVhODA1NGMwMzNjZjEwNmE1YzM2NmEzYTcuLmEzMmQ2Zjc5N2U3OWMxMWNiODViY2M2MzczYWE0
OTkwZjE1OTgxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRl
VHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhh
bmRsaW5nKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFy
c2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBvdmVycmlkZTsKICAg
ICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRz
KGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29t
cG9uZW50cy5jcHAKaW5kZXggZjg3MWYyZWFjYTY3ODFmYWY5N2U2NGE2ZDBmMDY1NDQ3N2Q5Yjll
Ny4uM2E1ZjVjYzUyODM1NGE3NDkyMTE1ZDI3YmUyZGQ2NGY5YjNlYWUzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcApAQCAtMzk4LDcgKzM5OCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgRGF0ZUNvbXBvbmVudHM6OnBhcnNl
TW9udGgoU3RyaW5nUGFyc2luZ0J1CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fbW9u
dGggPSAqbW9udGg7Ci0gICAgbV90eXBlID0gTW9udGg7CisgICAgbV90eXBlID0gRGF0ZUNvbXBv
bmVudHNUeXBlOjpNb250aDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDE4LDcgKzQxOCw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgRGF0ZUNvbXBvbmVudHM6
OnBhcnNlRGF0ZShTdHJpbmdQYXJzaW5nQnVmCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IG1fbW9udGhEYXkgPSAqZGF5OwotICAgIG1fdHlwZSA9IERhdGU7CisgICAgbV90eXBlID0gRGF0
ZUNvbXBvbmVudHNUeXBlOjpEYXRlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NDAsNyAr
NDQwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBEYXRlQ29tcG9u
ZW50czo6cGFyc2VXZWVrKFN0cmluZ1BhcnNpbmdCdWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgbV93ZWVrID0gKndlZWs7Ci0gICAgbV90eXBlID0gV2VlazsKKyAgICBtX3R5cGUgPSBE
YXRlQ29tcG9uZW50c1R5cGU6OldlZWs7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwMCw3
ICs1MDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIERhdGVDb21w
b25lbnRzOjpwYXJzZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZgogICAgIG1fbWludXRlID0gKm1pbnV0
ZTsKICAgICBtX3NlY29uZCA9IHNlY29uZC52YWx1ZU9yKDApOwogICAgIG1fbWlsbGlzZWNvbmQg
PSBtaWxsaXNlY29uZC52YWx1ZU9yKDApOwotICAgIG1fdHlwZSA9IFRpbWU7CisgICAgbV90eXBl
ID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpUaW1lOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01
MTgsNyArNTE4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBEYXRl
Q29tcG9uZW50czo6cGFyc2VEYXRlVGltZUxvY2FsKFN0cmluZ1AKICAgICBpZiAoIXdpdGhpbkhU
TUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250aCwgbV9tb250aERheSwgbV9ob3VyLCBtX21pbnV0
ZSwgbV9zZWNvbmQsIG1fbWlsbGlzZWNvbmQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX3R5cGUgPSBEYXRlVGltZUxvY2FsOworICAgIG1fdHlwZSA9IERhdGVDb21wb25lbnRzVHlw
ZTo6RGF0ZVRpbWVMb2NhbDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjAwLDIwICs2MDAs
MjAgQEAgYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRh
dGVJbnRlcm5hbChkb3VibGUgbXMpCiAKIGJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vj
b25kc1NpbmNlRXBvY2hGb3JEYXRlKGRvdWJsZSBtcykKIHsKLSAgICBtX3R5cGUgPSBJbnZhbGlk
OworICAgIG1fdHlwZSA9IERhdGVDb21wb25lbnRzVHlwZTo6SW52YWxpZDsKICAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUobXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzZXRNaWxs
aXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVybmFsKHJvdW5kKG1zKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIXdpdGhpbkhUTUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250
aCwgbV9tb250aERheSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3R5cGUgPSBEYXRl
OworICAgIG1fdHlwZSA9IERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZv
ckRhdGVUaW1lTG9jYWwoZG91YmxlIG1zKQogewotICAgIG1fdHlwZSA9IEludmFsaWQ7CisgICAg
bV90eXBlID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkOwogICAgIGlmICghc3RkOjppc2Zp
bml0ZShtcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtcyA9IHJvdW5kKG1zKTsKQEAg
LTYyMiwzMCArNjIyLDMwIEBAIGJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1Np
bmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKGRvdWJsZSBtcykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMobV95ZWFyLCBtX21vbnRoLCBtX21vbnRo
RGF5LCBtX2hvdXIsIG1fbWludXRlLCBtX3NlY29uZCwgbV9taWxsaXNlY29uZCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBtX3R5cGUgPSBEYXRlVGltZUxvY2FsOworICAgIG1fdHlwZSA9
IERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbDsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvck1vbnRo
KGRvdWJsZSBtcykKIHsKLSAgICBtX3R5cGUgPSBJbnZhbGlkOworICAgIG1fdHlwZSA9IERhdGVD
b21wb25lbnRzVHlwZTo6SW52YWxpZDsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobXMpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9y
RGF0ZUludGVybmFsKHJvdW5kKG1zKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IXdpdGhpbkhUTUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250aCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBtX3R5cGUgPSBNb250aDsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50c1R5
cGU6Ok1vbnRoOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIERhdGVDb21wb25lbnRzOjpz
ZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KGRvdWJsZSBtcykKIHsKLSAgICBtX3R5cGUgPSBJ
bnZhbGlkOworICAgIG1fdHlwZSA9IERhdGVDb21wb25lbnRzVHlwZTo6SW52YWxpZDsKICAgICBp
ZiAoIXN0ZDo6aXNmaW5pdGUobXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2V0TWls
bGlzZWNvbmRzU2luY2VNaWRuaWdodEludGVybmFsKHBvc2l0aXZlRm1vZChyb3VuZChtcyksIG1z
UGVyRGF5KSk7Ci0gICAgbV90eXBlID0gVGltZTsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50
c1R5cGU6OlRpbWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY2NCw3ICs2NjQsNyBAQCBi
b29sIERhdGVDb21wb25lbnRzOjpzZXRNb250aHNTaW5jZUVwb2NoKGRvdWJsZSBtb250aHMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3llYXIgPSB5ZWFyOwogICAgIG1fbW9udGggPSBt
b250aDsKLSAgICBtX3R5cGUgPSBNb250aDsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50c1R5
cGU6Ok1vbnRoOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02ODAsNyArNjgwLDcgQEAgc3Rh
dGljIGludCBvZmZzZXRUbzFzdFdlZWtTdGFydChpbnQgeWVhcikKIAogYm9vbCBEYXRlQ29tcG9u
ZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvcldlZWsoZG91YmxlIG1zKQogewotICAg
IG1fdHlwZSA9IEludmFsaWQ7CisgICAgbV90eXBlID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZh
bGlkOwogICAgIGlmICghc3RkOjppc2Zpbml0ZShtcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBtcyA9IHJvdW5kKG1zKTsKQEAgLTcwNiwzMCArNzA2LDMwIEBAIGJvb2wgRGF0ZUNvbXBv
bmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKGRvdWJsZSBtcykKICAgICAg
ICAgaWYgKG1feWVhciA+IG1heGltdW1ZZWFyIHx8IChtX3llYXIgPT0gbWF4aW11bVllYXIgJiYg
bV93ZWVrID4gbWF4aW11bVdlZWtJbk1heGltdW1ZZWFyKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgbV90eXBlID0gV2VlazsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9u
ZW50c1R5cGU6OldlZWs7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGRvdWJsZSBEYXRlQ29tcG9u
ZW50czo6bWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvclRpbWUoKSBjb25zdAogewotICAgIEFTU0VS
VChtX3R5cGUgPT0gVGltZSB8fCBtX3R5cGUgPT0gRGF0ZVRpbWVMb2NhbCk7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6OlRpbWUgfHwgbV90eXBlID09IERhdGVDb21w
b25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbCk7CiAgICAgcmV0dXJuICgobV9ob3VyICogbWludXRl
c1BlckhvdXIgKyBtX21pbnV0ZSkgKiBzZWNvbmRzUGVyTWludXRlICsgbV9zZWNvbmQpICogbXNQ
ZXJTZWNvbmQgKyBtX21pbGxpc2Vjb25kOwogfQogCiBkb3VibGUgRGF0ZUNvbXBvbmVudHM6Om1p
bGxpc2Vjb25kc1NpbmNlRXBvY2goKSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0g
ICAgY2FzZSBEYXRlOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOgogICAgICAg
ICByZXR1cm4gZGF0ZVRvRGF5c0Zyb20xOTcwKG1feWVhciwgbV9tb250aCwgbV9tb250aERheSkg
KiBtc1BlckRheTsKLSAgICBjYXNlIERhdGVUaW1lTG9jYWw6CisgICAgY2FzZSBEYXRlQ29tcG9u
ZW50c1R5cGU6OkRhdGVUaW1lTG9jYWw6CiAgICAgICAgIHJldHVybiBkYXRlVG9EYXlzRnJvbTE5
NzAobV95ZWFyLCBtX21vbnRoLCBtX21vbnRoRGF5KSAqIG1zUGVyRGF5ICsgbWlsbGlzZWNvbmRz
U2luY2VFcG9jaEZvclRpbWUoKTsKLSAgICBjYXNlIE1vbnRoOgorICAgIGNhc2UgRGF0ZUNvbXBv
bmVudHNUeXBlOjpNb250aDoKICAgICAgICAgcmV0dXJuIGRhdGVUb0RheXNGcm9tMTk3MChtX3ll
YXIsIG1fbW9udGgsIDEpICogbXNQZXJEYXk7Ci0gICAgY2FzZSBUaW1lOgorICAgIGNhc2UgRGF0
ZUNvbXBvbmVudHNUeXBlOjpUaW1lOgogICAgICAgICByZXR1cm4gbWlsbGlzZWNvbmRzU2luY2VF
cG9jaEZvclRpbWUoKTsKLSAgICBjYXNlIFdlZWs6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5
cGU6OldlZWs6CiAgICAgICAgIHJldHVybiAoZGF0ZVRvRGF5c0Zyb20xOTcwKG1feWVhciwgMCwg
MSkgKyBvZmZzZXRUbzFzdFdlZWtTdGFydChtX3llYXIpICsgKG1fd2VlayAtIDEpICogNykgKiBt
c1BlckRheTsKLSAgICBjYXNlIEludmFsaWQ6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6
OkludmFsaWQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTczOCwxOCArNzM4LDE4IEBAIGRvdWJsZSBEYXRlQ29tcG9uZW50czo6bWlsbGlzZWNv
bmRzU2luY2VFcG9jaCgpIGNvbnN0CiAKIGRvdWJsZSBEYXRlQ29tcG9uZW50czo6bW9udGhzU2lu
Y2VFcG9jaCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBNb250aCk7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6Ok1vbnRoKTsKICAgICByZXR1cm4gKG1f
eWVhciAtIDE5NzApICogMTIgKyBtX21vbnRoOwogfQogCiBTdHJpbmcgRGF0ZUNvbXBvbmVudHM6
OnRvU3RyaW5nRm9yVGltZShTZWNvbmRGb3JtYXQgZm9ybWF0KSBjb25zdAogewotICAgIEFTU0VS
VChtX3R5cGUgPT0gRGF0ZVRpbWVMb2NhbCB8fCBtX3R5cGUgPT0gVGltZSk7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6OkRhdGVUaW1lTG9jYWwgfHwgbV90eXBlID09
IERhdGVDb21wb25lbnRzVHlwZTo6VGltZSk7CiAgICAgU2Vjb25kRm9ybWF0IGVmZmVjdGl2ZUZv
cm1hdCA9IGZvcm1hdDsKICAgICBpZiAobV9taWxsaXNlY29uZCkKLSAgICAgICAgZWZmZWN0aXZl
Rm9ybWF0ID0gTWlsbGlzZWNvbmQ7Ci0gICAgZWxzZSBpZiAoZm9ybWF0ID09IE5vbmUgJiYgbV9z
ZWNvbmQpCi0gICAgICAgIGVmZmVjdGl2ZUZvcm1hdCA9IFNlY29uZDsKKyAgICAgICAgZWZmZWN0
aXZlRm9ybWF0ID0gU2Vjb25kRm9ybWF0OjpNaWxsaXNlY29uZDsKKyAgICBlbHNlIGlmIChmb3Jt
YXQgPT0gU2Vjb25kRm9ybWF0OjpOb25lICYmIG1fc2Vjb25kKQorICAgICAgICBlZmZlY3RpdmVG
b3JtYXQgPSBTZWNvbmRGb3JtYXQ6OlNlY29uZDsKIAogICAgIHN3aXRjaCAoZWZmZWN0aXZlRm9y
bWF0KSB7CiAgICAgZGVmYXVsdDoKQEAgLTc1NywxMSArNzU3LDExIEBAIFN0cmluZyBEYXRlQ29t
cG9uZW50czo6dG9TdHJpbmdGb3JUaW1lKFNlY29uZEZvcm1hdCBmb3JtYXQpIGNvbnN0CiAjaWYg
IUFTU0VSVF9FTkFCTEVECiAgICAgICAgIEZBTExUSFJPVUdIOyAvLyBUbyBOb25lLgogI2VuZGlm
Ci0gICAgY2FzZSBOb25lOgorICAgIGNhc2UgU2Vjb25kRm9ybWF0OjpOb25lOgogICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBtX2hvdXIpLCAnOicsIHBhZCgnMCcsIDIsIG1f
bWludXRlKSk7Ci0gICAgY2FzZSBTZWNvbmQ6CisgICAgY2FzZSBTZWNvbmRGb3JtYXQ6OlNlY29u
ZDoKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgbV9ob3VyKSwgJzonLCBw
YWQoJzAnLCAyLCBtX21pbnV0ZSksICc6JywgcGFkKCcwJywgMiwgbV9zZWNvbmQpKTsKLSAgICBj
YXNlIE1pbGxpc2Vjb25kOgorICAgIGNhc2UgU2Vjb25kRm9ybWF0OjpNaWxsaXNlY29uZDoKICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgbV9ob3VyKSwgJzonLCBwYWQoJzAn
LCAyLCBtX21pbnV0ZSksICc6JywgcGFkKCcwJywgMiwgbV9zZWNvbmQpLCAnLicsIHBhZCgnMCcs
IDMsIG1fbWlsbGlzZWNvbmQpKTsKICAgICB9CiB9CkBAIC03NjksMTcgKzc2OSwxNyBAQCBTdHJp
bmcgRGF0ZUNvbXBvbmVudHM6OnRvU3RyaW5nRm9yVGltZShTZWNvbmRGb3JtYXQgZm9ybWF0KSBj
b25zdAogU3RyaW5nIERhdGVDb21wb25lbnRzOjp0b1N0cmluZyhTZWNvbmRGb3JtYXQgZm9ybWF0
KSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBEYXRlOgorICAgIGNh
c2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhw
YWQoJzAnLCA0LCBtX3llYXIpLCAnLScsIHBhZCgnMCcsIDIsIG1fbW9udGggKyAxKSwgJy0nLCBw
YWQoJzAnLCAyLCBtX21vbnRoRGF5KSk7Ci0gICAgY2FzZSBEYXRlVGltZUxvY2FsOgorICAgIGNh
c2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlVGltZUxvY2FsOgogICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZyhwYWQoJzAnLCA0LCBtX3llYXIpLCAnLScsIHBhZCgnMCcsIDIsIG1fbW9udGggKyAx
KSwgJy0nLCBwYWQoJzAnLCAyLCBtX21vbnRoRGF5KSwgJ1QnLCB0b1N0cmluZ0ZvclRpbWUoZm9y
bWF0KSk7Ci0gICAgY2FzZSBNb250aDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzVHlwZTo6TW9u
dGg6CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDQsIG1feWVhciksICctJywg
cGFkKCcwJywgMiwgbV9tb250aCArIDEpKTsKLSAgICBjYXNlIFRpbWU6CisgICAgY2FzZSBEYXRl
Q29tcG9uZW50c1R5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiB0b1N0cmluZ0ZvclRpbWUoZm9y
bWF0KTsKLSAgICBjYXNlIFdlZWs6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OldlZWs6
CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDQsIG1feWVhciksICItVyIsIHBh
ZCgnMCcsIDIsIG1fd2VlaykpOwotICAgIGNhc2UgSW52YWxpZDoKKyAgICBjYXNlIERhdGVDb21w
b25lbnRzVHlwZTo6SW52YWxpZDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNv
bXBvbmVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmgKaW5k
ZXggYzk3MjFmNzVkYjA5Y2ZhOTVmYTNkY2FkMmNjOTIxNjRiZDlmNTU4My4uNGM4ZGM4MTVhZmM0
YjJkZDc4ZjQzMTczMjEzZmIyOWY0MGY5ZmNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
YXRlQ29tcG9uZW50cy5oCkBAIC0zNiw2ICszNiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2VudW0gY2xhc3MgU2Vjb25kRm9ybWF0IHsKKyAgICBOb25lLCAvLyBTdXBwcmVzcyB0aGUg
c2Vjb25kIHBhcnQgYW5kIHRoZSBtaWxsaXNlY29uZCBwYXJ0IGlmIHRoZXkgYXJlIDAuCisgICAg
U2Vjb25kLCAvLyBBbHdheXMgc2hvdyB0aGUgc2Vjb25kIHBhcnQsIGFuZCBzdXBwcmVzcyB0aGUg
bWlsbGlzZWNvbmQgcGFydCBpZiBpdCBpcyAwLgorICAgIE1pbGxpc2Vjb25kIC8vIEFsd2F5cyBz
aG93IHRoZSBzZWNvbmQgcGFydCBhbmQgdGhlIG1pbGxpc2Vjb25kIHBhcnQuCit9OworCitlbnVt
IGNsYXNzIERhdGVDb21wb25lbnRzVHlwZSB7CisgICAgSW52YWxpZCwKKyAgICBEYXRlLAorICAg
IERhdGVUaW1lTG9jYWwsCisgICAgTW9udGgsCisgICAgVGltZSwKKyAgICBXZWVrLAorfTsKKwog
Ly8gQSBEYXRlQ29tcG9uZW50cyBpbnN0YW5jZSByZXByZXNlbnRzIG9uZSBvZiB0aGUgZm9sbG93
aW5nIGRhdGUgYW5kIHRpbWUgY29tYmluYXRpb25zOgogLy8gKiBNb250aCB0eXBlOiB5ZWFyLW1v
bnRoCiAvLyAqIERhdGUgdHlwZTogeWVhci1tb250aC1kYXkKQEAgLTUzLDE5ICs2OCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgICwgbV9tb250aCgwKQogICAgICAgICAsIG1feWVhcigwKQogICAgICAg
ICAsIG1fd2VlaygwKQotICAgICAgICAsIG1fdHlwZShJbnZhbGlkKQorICAgICAgICAsIG1fdHlw
ZShEYXRlQ29tcG9uZW50c1R5cGU6OkludmFsaWQpCiAgICAgewogICAgIH0KIAotICAgIGVudW0g
VHlwZSB7Ci0gICAgICAgIEludmFsaWQsCi0gICAgICAgIERhdGUsCi0gICAgICAgIERhdGVUaW1l
TG9jYWwsCi0gICAgICAgIE1vbnRoLAotICAgICAgICBUaW1lLAotICAgICAgICBXZWVrLAotICAg
IH07Ci0KICAgICBpbnQgbWlsbGlzZWNvbmQoKSBjb25zdCB7IHJldHVybiBtX21pbGxpc2Vjb25k
OyB9CiAgICAgaW50IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vjb25kOyB9CiAgICAgaW50
IG1pbnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWludXRlOyB9CkBAIC03NCwxNyArODAsMTEgQEAg
cHVibGljOgogICAgIGludCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9udGg7IH0KICAgICBp
bnQgZnVsbFllYXIoKSBjb25zdCB7IHJldHVybiBtX3llYXI7IH0KICAgICBpbnQgd2VlaygpIGNv
bnN0IHsgcmV0dXJuIG1fd2VlazsgfQotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQotCi0gICAgZW51bSBTZWNvbmRGb3JtYXQgewotICAgICAgICBOb25lLCAvLyBTdXBw
cmVzcyB0aGUgc2Vjb25kIHBhcnQgYW5kIHRoZSBtaWxsaXNlY29uZCBwYXJ0IGlmIHRoZXkgYXJl
IDAuCi0gICAgICAgIFNlY29uZCwgLy8gQWx3YXlzIHNob3cgdGhlIHNlY29uZCBwYXJ0LCBhbmQg
c3VwcHJlc3MgdGhlIG1pbGxpc2Vjb25kIHBhcnQgaWYgaXQgaXMgMC4KLSAgICAgICAgTWlsbGlz
ZWNvbmQgLy8gQWx3YXlzIHNob3cgdGhlIHNlY29uZCBwYXJ0IGFuZCB0aGUgbWlsbGlzZWNvbmQg
cGFydC4KLSAgICB9OworICAgIERhdGVDb21wb25lbnRzVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAKICAgICAvLyBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9u
IGZvciB0aGlzIGluc3RhbmNlLgogICAgIC8vIFRoZSBmb3JtYXQgYXJndW1lbnQgaXMgdmFsaWQg
Zm9yIERhdGVUaW1lTG9jYWwgYW5kIFRpbWUgdHlwZXMuCi0gICAgU3RyaW5nIHRvU3RyaW5nKFNl
Y29uZEZvcm1hdCA9IE5vbmUpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhTZWNvbmRGb3Jt
YXQgPSBTZWNvbmRGb3JtYXQ6Ok5vbmUpIGNvbnN0OwogCiAgICAgLy8gU2V0cyB5ZWFyIGFuZCBt
b250aC4KICAgICBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nTW9u
dGgoU3RyaW5nVmlldyk7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV95
ZWFyOyAvLyAgMTU4MiAtCiAgICAgaW50IG1fd2VlazsgLy8gMSAtIDUzCiAKLSAgICBUeXBlIG1f
dHlwZTsKKyAgICBEYXRlQ29tcG9uZW50c1R5cGUgbV90eXBlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0
Zm9ybUxvY2FsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9j
YWxlLmNwcAppbmRleCBlNDBhNmIxMGJmZmZjOTA5MDJjNzkwZjg1MjgxZDIwOGMwZjg1OGY0Li5i
NWIwZWVhNDYyMDQ5YmQxYjgzMDA3NzMwZWIxOWUzOWU0ZGJkYjE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAKKyNp
bmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkRhdGVUaW1lRm9ybWF0LmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KQEAgLTMyNywyNyArMzI4LDI3IEBAIFN0cmluZyBMb2NhbGU6OmNvbnZlcnRGcm9t
TG9jYWxpemVkTnVtYmVyKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkKQogI2lmIEVOQUJMRShEQVRF
X0FORF9USU1FX0lOUFVUX1RZUEVTKQogU3RyaW5nIExvY2FsZTo6Zm9ybWF0RGF0ZVRpbWUoY29u
c3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUsIEZvcm1hdFR5cGUgZm9ybWF0VHlwZSkKIHsKLSAgICBp
ZiAoZGF0ZS50eXBlKCkgPT0gRGF0ZUNvbXBvbmVudHM6OkludmFsaWQpCisgICAgaWYgKGRhdGUu
dHlwZSgpID09IERhdGVDb21wb25lbnRzVHlwZTo6SW52YWxpZCkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoKnRoaXMsIGRhdGUp
OwogICAgIHN3aXRjaCAoZGF0ZS50eXBlKCkpIHsKLSAgICBjYXNlIERhdGVDb21wb25lbnRzOjpU
aW1lOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpUaW1lOgogICAgICAgICBidWlsZGVy
LmJ1aWxkKGZvcm1hdFR5cGUgPT0gRm9ybWF0VHlwZVNob3J0ID8gc2hvcnRUaW1lRm9ybWF0KCkg
OiB0aW1lRm9ybWF0KCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERhdGVDb21wb25lbnRz
OjpEYXRlOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOgogICAgICAgICBidWls
ZGVyLmJ1aWxkKGRhdGVGb3JtYXQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGF0ZUNv
bXBvbmVudHM6Ok1vbnRoOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpNb250aDoKICAg
ICAgICAgYnVpbGRlci5idWlsZChmb3JtYXRUeXBlID09IEZvcm1hdFR5cGVTaG9ydCA/IHNob3J0
TW9udGhGb3JtYXQoKSA6IG1vbnRoRm9ybWF0KCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IERhdGVDb21wb25lbnRzOjpXZWVrOiAgICAKKyAgICBjYXNlIERhdGVDb21wb25lbnRzVHlwZTo6
V2VlazogICAgCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgZm9ybWF0dGluZyB3
ZWVrcy4KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVM
b2NhbDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbDoKICAgICAg
ICAgYnVpbGRlci5idWlsZChmb3JtYXRUeXBlID09IEZvcm1hdFR5cGVTaG9ydCA/IGRhdGVUaW1l
Rm9ybWF0V2l0aG91dFNlY29uZHMoKSA6IGRhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHMoKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6OkludmFsaWQ6CisgICAgY2Fz
ZSBEYXRlQ29tcG9uZW50c1R5cGU6OkludmFsaWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1BsYXRmb3JtTG9jYWxlLmgKaW5kZXggOWY3MzJiOGE3NzA3ZmI3N2E0YzA5ZDA0MjNiMzM1
NmI1OGQ2ZTMyNC4uZTYzYzBjYWRiYWQ5YzMxY2M5YjkwODMyMmNjZDY0MjkzYmY5NGJjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaApAQCAtMjYs
MTIgKzI2LDEzIEBACiAjaWZuZGVmIFBsYXRmb3JtTG9jYWxlX2gKICNkZWZpbmUgUGxhdGZvcm1M
b2NhbGVfaAogCi0jaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlIDx3dGYvTGFu
Z3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBEYXRlQ29tcG9uZW50czsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBjbGFzcyBGb250Q2FzY2FkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0KaW5kZXggMmUyNDA0NzZkMWU1Y2ZkOWVh
NjJjMDI2ODhhYzI2YjAyNjc3NzJmMC4uOWI5MmY0OTFiNWQ5YWYxNmUyZmJkNDY0NzljNDdiMzE5
N2EwYzRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9M
b2NhbGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xv
Y2FsZUNvY29hLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkxvY2FsZUNvY29hLmgiCiAKKyNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TRGF0ZUZvcm1hdHRl
ci5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0xvY2FsZS5oPgpAQCAtMTA2LDExICsxMDcsMTEg
QEAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gTG9jYWxlQ29jb2E6OnNob3J0RGF0ZUZvcm1h
dHRlcigpCiBTdHJpbmcgTG9jYWxlQ29jb2E6OmZvcm1hdERhdGVUaW1lKGNvbnN0IERhdGVDb21w
b25lbnRzJiBkYXRlQ29tcG9uZW50cywgRm9ybWF0VHlwZSkKIHsKICAgICBkb3VibGUgbXNlYyA9
IGRhdGVDb21wb25lbnRzLm1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBEYXRlQ29tcG9u
ZW50czo6VHlwZSB0eXBlID0gZGF0ZUNvbXBvbmVudHMudHlwZSgpOworICAgIERhdGVDb21wb25l
bnRzVHlwZSB0eXBlID0gZGF0ZUNvbXBvbmVudHMudHlwZSgpOwogCiAgICAgLy8gIndlZWsiIHR5
cGUgbm90IHN1cHBvcnRlZC4KLSAgICBBU1NFUlQodHlwZSAhPSBEYXRlQ29tcG9uZW50czo6SW52
YWxpZCk7Ci0gICAgaWYgKHR5cGUgPT0gRGF0ZUNvbXBvbmVudHM6OldlZWspCisgICAgQVNTRVJU
KHR5cGUgIT0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkKTsKKyAgICBpZiAodHlwZSA9PSBE
YXRlQ29tcG9uZW50c1R5cGU6OldlZWspCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAg
IC8vIEluY29taW5nIG1zZWMgdmFsdWUgaXMgbWlsbGlzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEg
MDA6MDA6MDAgVVRDLiBUaGUgMTk3MCBlcG9jaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKaW5kZXggNWI1ZWM0YjcxZTU4
Y2E2NTgzNWU1ZTY0NzViMjk5OWMwOTMzZjZlNy4uN2ZjNGZmZmZkYmViYWQxZDkxYWIxODNlMTlk
MzQ1MzQ5MTM2ZjM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9p
b3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRm9udENhc2Nh
ZGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAorZW51bSBjbGFzcyBEYXRlQ29tcG9uZW50
c1R5cGU7CisKIGNsYXNzIE1lYXN1cmVUZXh0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGZsb2F0IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKQEAgLTQwLDE4ICs0
MSwxOCBAQCBwdWJsaWM6CiAKIGNsYXNzIExvY2FsaXplZERhdGVDYWNoZSB7CiBwdWJsaWM6Ci0g
ICAgTlNEYXRlRm9ybWF0dGVyICpmb3JtYXR0ZXJGb3JEYXRlVHlwZShEYXRlQ29tcG9uZW50czo6
VHlwZSk7Ci0gICAgZmxvYXQgbWF4aW11bVdpZHRoRm9yRGF0ZVR5cGUoRGF0ZUNvbXBvbmVudHM6
OlR5cGUsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmKTsKKyAg
ICBOU0RhdGVGb3JtYXR0ZXIgKmZvcm1hdHRlckZvckRhdGVUeXBlKERhdGVDb21wb25lbnRzVHlw
ZSk7CisgICAgZmxvYXQgbWF4aW11bVdpZHRoRm9yRGF0ZVR5cGUoRGF0ZUNvbXBvbmVudHNUeXBl
LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IE1lYXN1cmVUZXh0Q2xpZW50Jik7CiAgICAgdm9p
ZCBsb2NhbGVDaGFuZ2VkKCk7CiAKIHByaXZhdGU6CiAgICAgTG9jYWxpemVkRGF0ZUNhY2hlKCk7
CiAgICAgfkxvY2FsaXplZERhdGVDYWNoZSgpOwogCi0gICAgTlNEYXRlRm9ybWF0dGVyICpjcmVh
dGVGb3JtYXR0ZXJGb3JUeXBlKERhdGVDb21wb25lbnRzOjpUeXBlKTsKLSAgICBmbG9hdCBjYWxj
dWxhdGVNYXhpbXVtV2lkdGgoRGF0ZUNvbXBvbmVudHM6OlR5cGUsIGNvbnN0IE1lYXN1cmVUZXh0
Q2xpZW50Jik7CisgICAgTlNEYXRlRm9ybWF0dGVyICpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKERh
dGVDb21wb25lbnRzVHlwZSk7CisgICAgZmxvYXQgY2FsY3VsYXRlTWF4aW11bVdpZHRoKERhdGVD
b21wb25lbnRzVHlwZSwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmKTsKIAotICAgIC8vIFVzaW5n
IGludCBpbnN0ZWFkIG9mIERhdGVDb21wb25lbnRzOjpUeXBlIGZvciB0aGUga2V5IGJlY2F1c2Ug
dGhlIGVudW0KKyAgICAvLyBVc2luZyBpbnQgaW5zdGVhZCBvZiBEYXRlQ29tcG9uZW50c1R5cGUg
Zm9yIHRoZSBrZXkgYmVjYXVzZSB0aGUgZW51bQogICAgIC8vIGRvZXMgbm90IGhhdmUgYSBkZWZh
dWx0IGhhc2ggYW5kIGhhc2ggdHJhaXRzLiBVc2FnZSBvZiB0aGUgbWFwcwogICAgIC8vIGNhc3Rz
IHRoZSBEYXRlQ29tcG9uZW50czo6VHlwZSBpbnRvIGFuIGludCBhcyB0aGUga2V5LgogICAgIHR5
cGVkZWYgSGFzaE1hcDxpbnQsIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+PiBEYXRlVHlwZUZv
cm1hdHRlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9z
L0xvY2FsaXplZERhdGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9z
L0xvY2FsaXplZERhdGVDYWNoZS5tbQppbmRleCAxYzJhYTU3NGEzYTMyZjFiZmQ1MDkwMDcyNzUz
OWM1MzEzODFhZTg1Li5hOTMzM2I5YmIwMDkyZTkxYjQxMjZlMjdkOGJmN2FhYzRjNDFmYWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRl
Q2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVk
RGF0ZUNhY2hlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkxvY2FsaXplZERhdGVDYWNoZS5oIgogCisjaW1wb3J0ICJEYXRlQ29tcG9uZW50cy5oIgog
I2ltcG9ydCAiRm9udENhc2NhZGUuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGTm90aWZp
Y2F0aW9uQ2VudGVyLmg+CiAjaW1wb3J0IDxtYXRoLmg+CkBAIC02OSw3ICs3MCw3IEBAIHZvaWQg
TG9jYWxpemVkRGF0ZUNhY2hlOjpsb2NhbGVDaGFuZ2VkKCkKICAgICBtX2Zvcm1hdHRlck1hcC5j
bGVhcigpOwogfQogCi1OU0RhdGVGb3JtYXR0ZXIgKkxvY2FsaXplZERhdGVDYWNoZTo6Zm9ybWF0
dGVyRm9yRGF0ZVR5cGUoRGF0ZUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKK05TRGF0ZUZvcm1hdHRl
ciAqTG9jYWxpemVkRGF0ZUNhY2hlOjpmb3JtYXR0ZXJGb3JEYXRlVHlwZShEYXRlQ29tcG9uZW50
c1R5cGUgdHlwZSkKIHsKICAgICBpbnQga2V5ID0gc3RhdGljX2Nhc3Q8aW50Pih0eXBlKTsKICAg
ICBpZiAobV9mb3JtYXR0ZXJNYXAuY29udGFpbnMoa2V5KSkKQEAgLTgwLDcgKzgxLDcgQEAgTlNE
YXRlRm9ybWF0dGVyICpMb2NhbGl6ZWREYXRlQ2FjaGU6OmZvcm1hdHRlckZvckRhdGVUeXBlKERh
dGVDb21wb25lbnRzOjpUeXBlIHQKICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlcjsKIH0KIAotZmxv
YXQgTG9jYWxpemVkRGF0ZUNhY2hlOjptYXhpbXVtV2lkdGhGb3JEYXRlVHlwZShEYXRlQ29tcG9u
ZW50czo6VHlwZSB0eXBlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTWVhc3VyZVRl
eHRDbGllbnQmIG1lYXN1cmVyKQorZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjptYXhpbXVtV2lk
dGhGb3JEYXRlVHlwZShEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IE1lYXN1cmVUZXh0Q2xpZW50JiBtZWFzdXJlcikKIHsKICAgICBpbnQga2V5
ID0gc3RhdGljX2Nhc3Q8aW50Pih0eXBlKTsKICAgICBpZiAobV9mb250ID09IGZvbnQpIHsKQEAg
LTk2LDM2ICs5NywzNiBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6Om1heGltdW1XaWR0aEZv
ckRhdGVUeXBlKERhdGVDb21wb25lbnRzOjpUeXBlIHR5cGUsIGNvbgogICAgIHJldHVybiBjYWxj
dWxhdGVkTWF4aW11bTsKIH0KIAotTlNEYXRlRm9ybWF0dGVyICpMb2NhbGl6ZWREYXRlQ2FjaGU6
OmNyZWF0ZUZvcm1hdHRlckZvclR5cGUoRGF0ZUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKK05TRGF0
ZUZvcm1hdHRlciAqTG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKERh
dGVDb21wb25lbnRzVHlwZSB0eXBlKQogewogICAgIE5TRGF0ZUZvcm1hdHRlciAqZGF0ZUZvcm1h
dHRlciA9IFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XTsKICAgICBOU0xvY2FsZSAqY3Vy
cmVudExvY2FsZSA9IFtOU0xvY2FsZSBjdXJyZW50TG9jYWxlXTsKICAgICBbZGF0ZUZvcm1hdHRl
ciBzZXRMb2NhbGU6Y3VycmVudExvY2FsZV07CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBj
YXNlIERhdGVDb21wb25lbnRzOjpJbnZhbGlkOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBl
OjpJbnZhbGlkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZToKKyAgICBjYXNlIERhdGVDb21wb25lbnRz
VHlwZTo6RGF0ZToKICAgICAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0VGltZVpvbmU6W05TVGltZVpv
bmUgdGltZVpvbmVGb3JTZWNvbmRzRnJvbUdNVDowXV07CiAgICAgICAgIFtkYXRlRm9ybWF0dGVy
IHNldFRpbWVTdHlsZTpOU0RhdGVGb3JtYXR0ZXJOb1N0eWxlXTsKICAgICAgICAgW2RhdGVGb3Jt
YXR0ZXIgc2V0RGF0ZVN0eWxlOk5TRGF0ZUZvcm1hdHRlck1lZGl1bVN0eWxlXTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNl
IERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbDoKICAgICAgICAgW2RhdGVGb3JtYXR0
ZXIgc2V0VGltZVpvbmU6W05TVGltZVpvbmUgdGltZVpvbmVGb3JTZWNvbmRzRnJvbUdNVDowXV07
CiAgICAgICAgIFtkYXRlRm9ybWF0dGVyIHNldFRpbWVTdHlsZTpOU0RhdGVGb3JtYXR0ZXJTaG9y
dFN0eWxlXTsKICAgICAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0RGF0ZVN0eWxlOk5TRGF0ZUZvcm1h
dHRlck1lZGl1bVN0eWxlXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50
czo6TW9udGg6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6Ok1vbnRoOgogICAgICAgICBb
ZGF0ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpbTlNUaW1lWm9uZSB0aW1lWm9uZUZvclNlY29uZHNG
cm9tR01UOjBdXTsKICAgICAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0RGF0ZUZvcm1hdDpbTlNEYXRl
Rm9ybWF0dGVyIGRhdGVGb3JtYXRGcm9tVGVtcGxhdGU6QCJNTU1NeXl5eSIgb3B0aW9uczowIGxv
Y2FsZTpjdXJyZW50TG9jYWxlXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGF0ZUNvbXBv
bmVudHM6OlRpbWU6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OlRpbWU6CiAgICAgICAg
IFtkYXRlRm9ybWF0dGVyIHNldFRpbWVab25lOltOU1RpbWVab25lIHRpbWVab25lRm9yU2Vjb25k
c0Zyb21HTVQ6MF1dOwogICAgICAgICBbZGF0ZUZvcm1hdHRlciBzZXRUaW1lU3R5bGU6TlNEYXRl
Rm9ybWF0dGVyU2hvcnRTdHlsZV07CiAgICAgICAgIFtkYXRlRm9ybWF0dGVyIHNldERhdGVTdHls
ZTpOU0RhdGVGb3JtYXR0ZXJOb1N0eWxlXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEYXRl
Q29tcG9uZW50czo6V2VlazoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzVHlwZTo6V2VlazoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEz
NSw3ICsxMzYsNyBAQCBOU0RhdGVGb3JtYXR0ZXIgKkxvY2FsaXplZERhdGVDYWNoZTo6Y3JlYXRl
Rm9ybWF0dGVyRm9yVHlwZShEYXRlQ29tcG9uZW50czo6VHlwZQogCiAvLyBOT1RFOiBUaGlzIGRv
ZXMgbm90IGNoZWNrIGZvciB0aGUgd2lkZXN0IGRheSBvZiB0aGUgd2Vlay4KIC8vIFdlIGFzc3Vt
ZSBubyBmb3JtYXR0ZXIgb3B0aW9uIHNob3dzIHRoYXQgaW5mb3JtYXRpb24uCi1mbG9hdCBMb2Nh
bGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50czo6VHlw
ZSB0eXBlLCBjb25zdCBNZWFzdXJlVGV4dENsaWVudCYgbWVhc3VyZXIpCitmbG9hdCBMb2NhbGl6
ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlw
ZSwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmIG1lYXN1cmVyKQogewogICAgIGZsb2F0IG1heGlt
dW1XaWR0aCA9IDA7CiAKQEAgLTE2MCw5ICsxNjEsOSBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2Fj
aGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50czo6VHlwZSB0eXBlLCBjb25z
dAogCiAgICAgLy8gRm9yIGVhY2ggbW9udGggKGluIHRoZSBHcmVnb3JpYW4gQ2FsZW5kYXIpLCBm
b3JtYXQgYSBkYXRlIGFuZCBtZWFzdXJlIGl0cyBsZW5ndGguCiAgICAgTlNVSW50ZWdlciB0b3Rh
bE1vbnRoc1RvVGVzdCA9IDE7Ci0gICAgaWYgKHR5cGUgPT0gRGF0ZUNvbXBvbmVudHM6OkRhdGUK
LSAgICAgICAgfHwgdHlwZSA9PSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVMb2NhbAotICAgICAg
ICB8fCB0eXBlID09IERhdGVDb21wb25lbnRzOjpNb250aCkKKyAgICBpZiAodHlwZSA9PSBEYXRl
Q29tcG9uZW50c1R5cGU6OkRhdGUKKyAgICAgICAgfHwgdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5
cGU6OkRhdGVUaW1lTG9jYWwKKyAgICAgICAgfHwgdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6
Ok1vbnRoKQogICAgICAgICB0b3RhbE1vbnRoc1RvVGVzdCA9IG51bWJlck9mR3JlZ29yaWFuTW9u
dGhzOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IHRvdGFsTW9udGhzVG9UZXN0OyAr
K2kpIHsKICAgICAgICAgW2NvbXBvbmVudHMuZ2V0KCkgc2V0TW9udGg6KGkgKyAxKV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406675</attachid>
            <date>2020-08-15 13:55:52 -0700</date>
            <delta_ts>2020-08-16 05:33:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215544-20200815225550.patch</filename>
            <type>text/plain</type>
            <size>35703</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTcwOGI1NWZkMjI3YmRk
MDA1M2Q2YjdjZTEzZjUwZTZjMGMxMDhlZi4uM2I1MDRkNGMxMTBkMzQzZTQ3MDcxNjUwM2JiYjAy
ZDM1NjIzZDFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA4LTE1ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgZW51bSBjbGFzc2Vz
IGluIERhdGVDb21wb25lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTU1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNYWtlIFR5cGUgYW5kIFNlY29uZEZvcm1hdCBlbnVtIGNsYXNzZXMgc2luY2Ug
dGhpcyBpcyBtb3JlIHJlYWRhYmxlCisgICAgICAgIGFuZCBhbGxvd3MgdXMgdG8gaGF2ZSBsZXNz
IGluY2x1ZGVzIGluIGhlYWRlciBmaWxlcy4KKworICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIGh0bWwvRGF0
ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpkYXRlVHlw
ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRt
bC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OmRhdGVUeXBlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1l
TG9jYWxJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGF0ZVR5cGUgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6ZGF0ZVR5cGUgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6ZGF0ZVR5cGUgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1RpbWVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6ZGF0ZVR5cGUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvV2Vl
a0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWVrSW5wdXRUeXBlOjpkYXRlVHlw
ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9XZWVrSW5wdXRUeXBlLmg6CisgICAgICAgICogcGxh
dGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVu
dHM6OnBhcnNlTW9udGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM6OnBhcnNl
RGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6cGFyc2VXZWVrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpwYXJzZVRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM6OnBhcnNlRGF0ZVRpbWVMb2NhbCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2hGb3JEYXRlVGltZUxvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpz
ZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1vbnRoc1NpbmNlRXBvY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjptaWxsaXNlY29uZHNTaW5jZUVwb2No
Rm9yVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6bWlsbGlz
ZWNvbmRzU2luY2VFcG9jaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50
czo6bW9udGhzU2luY2VFcG9jaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9u
ZW50czo6dG9TdHJpbmdGb3JUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21w
b25lbnRzOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vRGF0ZUNvbXBvbmVu
dHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpEYXRlQ29tcG9uZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6dHlwZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmZvcm1hdERhdGVUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1BsYXRmb3Jt
TG9jYWxlLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUNvY29hOjpmb3JtYXREYXRlVGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmg6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxpemVkRGF0ZUNhY2hlOjpmb3JtYXR0ZXJGb3JEYXRlVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGl6ZWREYXRlQ2FjaGU6Om1heGltdW1XaWR0aEZvckRhdGVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Y3JlYXRlRm9ybWF0dGVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1X
aWR0aCk6CisKIDIwMjAtMDgtMTUgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmVydCB1bm5lY2Vzc2FyeSBjaGFuZ2UgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1MjEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMWE3ZWQzMTU1MTZmMTQw
N2E3NmE4MmUyOWE1NTRjNmMwZTc3OWYwZS4uOGQ1MTBkZDVlMWE5OTUxNzA0YWMzYWJhZDgxZDEz
NzVmYTc5ZDRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmNwcApAQCAtMTMzLDEzICsxMzMsMTEgQEAgU3RyaW5nIEJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMoY29uc3QgRGF0ZUNvbXBvbmVudHMm
IGQKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBEZWNpbWFsIHN0ZXA7Ci0gICAgaWYg
KCFlbGVtZW50KCktPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQorICAgIGlmICghZWxlbWVu
dCgpLT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSB8fCBzdGVwLnJlbWFpbmRlcihtc2VjUGVy
TWludXRlKS5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoKTsKLSAgICBp
ZiAoc3RlcC5yZW1haW5kZXIobXNlY1Blck1pbnV0ZSkuaXNaZXJvKCkpCi0gICAgICAgIHJldHVy
biBkYXRlLnRvU3RyaW5nKERhdGVDb21wb25lbnRzOjpOb25lKTsKICAgICBpZiAoc3RlcC5yZW1h
aW5kZXIobXNlY1BlclNlY29uZCkuaXNaZXJvKCkpCi0gICAgICAgIHJldHVybiBkYXRlLnRvU3Ry
aW5nKERhdGVDb21wb25lbnRzOjpTZWNvbmQpOwotICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKERh
dGVDb21wb25lbnRzOjpNaWxsaXNlY29uZCk7CisgICAgICAgIHJldHVybiBkYXRlLnRvU3RyaW5n
KFNlY29uZEZvcm1hdDo6U2Vjb25kKTsKKyAgICByZXR1cm4gZGF0ZS50b1N0cmluZyhTZWNvbmRG
b3JtYXQ6Ok1pbGxpc2Vjb25kKTsKIH0KIAogU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUgdmFsdWUpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBhNWQ2ZDllZjI4NzkyMTY4ZmU5Y2ZiZjY2
N2FjMDE0OWRkMzA4MTA0Li5iMTk5OWUxMTI2Mzk0NWNlNWYxM2ZmNmY2ZjY2Mzc1MDFlZGNhODJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTU2LDkgKzU2LDkgQEAg
Y29uc3QgQXRvbVN0cmluZyYgRGF0ZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QK
ICAgICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmRhdGUoKTsKIH0KIAotRGF0ZUNvbXBvbmVudHM6
OlR5cGUgRGF0ZUlucHV0VHlwZTo6ZGF0ZVR5cGUoKSBjb25zdAorRGF0ZUNvbXBvbmVudHNUeXBl
IERhdGVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0ZUNvbXBv
bmVudHM6OkRhdGU7CisgICAgcmV0dXJuIERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZTsKIH0KIAog
U3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
YXRlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAppbmRl
eCAzMzU1MDc0YmU2ZDVmMmUyZjYzODgwNjYyZDM5NjA2NWRlNjliZjJiLi5lYmJhMGYwZGZlYmI4
YzQ5ZTY4MDdhYjM2ZjkzZGIwYjFjZWIyODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQXRv
bVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgRGF0ZUNvbXBv
bmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEYXRlQ29tcG9uZW50
c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdGVwUmFuZ2UgY3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RGF0
ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKaW5kZXggZGI2MzkwOGZhNjQ1MmZk
ZmVlMGIxZTNhNTZmMzY3YzAxYjdjMmQyOS4uZjQwOGIyYzczZDlhNzdmYjIxYTZkZTAyN2MzODU0
NTdhYTQzNWZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1
dFR5cGUuY3BwCkBAIC01Myw5ICs1Myw5IEBAIGNvbnN0IEF0b21TdHJpbmcmIERhdGVUaW1lTG9j
YWxJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlw
ZU5hbWVzOjpkYXRldGltZWxvY2FsKCk7CiB9CiAKLURhdGVDb21wb25lbnRzOjpUeXBlIERhdGVU
aW1lTG9jYWxJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKK0RhdGVDb21wb25lbnRzVHlwZSBE
YXRlVGltZUxvY2FsSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERh
dGVDb21wb25lbnRzOjpEYXRlVGltZUxvY2FsOworICAgIHJldHVybiBEYXRlQ29tcG9uZW50c1R5
cGU6OkRhdGVUaW1lTG9jYWw7CiB9CiAKIGRvdWJsZSBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjp2
YWx1ZUFzRGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lTG9jYWxJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElu
cHV0VHlwZS5oCmluZGV4IDJjMDQ5NDlmMGYwYTZkOTBmMzI0OGU0ZWY5MGI4MDAwMTk3NDk0YTUu
LmM3MTMzZWUzYmEwYjdjZWVkYzNhMmJiZWMyOTM4MmY0NDBmNzc1YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUo
KSBjb25zdCBmaW5hbDsKLSAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0
IGZpbmFsOworICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IGZpbmFsOwog
ICAgIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldFZhbHVlQXNEYXRlKGRvdWJsZSkgY29uc3QgZmluYWw7CiAgICAgU3RlcFJhbmdlIGNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMTkzODNlN2JlNGE1ZjU5NWRjZTRjOThh
NDdkMTc2MmIzNjNhNDE0Yy4uNzRjYWNmYjA1Y2MxMDE4ZTg3YjkyYmNjMGIzN2Y5MjFmYzA4NDc4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNp
bmNsdWRlICJEYXRlVGltZUNob29zZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgpAQCAtMTY3NSw3ICsxNjc2LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50
Ojppc1N0ZXBwYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pc1N0ZXBwYWJs
ZSgpOwogfQogCi1EYXRlQ29tcG9uZW50czo6VHlwZSBIVE1MSW5wdXRFbGVtZW50OjpkYXRlVHlw
ZSgpIGNvbnN0CitEYXRlQ29tcG9uZW50c1R5cGUgSFRNTElucHV0RWxlbWVudDo6ZGF0ZVR5cGUo
KSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+ZGF0ZVR5cGUoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggY2I4NTQ1NmQ0YjIxMTE5NWQ2MmYy
YTgxNmRlNmE4NDBkYzkwNjI5YS4uNDJkNjMwYWM1ZmIxZGY1YjY1MTZjMTc0ODQ4MDliZDFlNzcx
ZWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI0LDcgKzI0
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2lu
Y2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBAIC01Myw2ICs1Miw3IEBAIHN0cnVjdCBJbnB1dEVs
ZW1lbnRDbGlja1N0YXRlIHsKIH07CiAKIGVudW0gY2xhc3MgQW55U3RlcEhhbmRsaW5nIDogYm9v
bDsKK2VudW0gY2xhc3MgRGF0ZUNvbXBvbmVudHNUeXBlOwogCiBjbGFzcyBIVE1MSW5wdXRFbGVt
ZW50IDogcHVibGljIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50IHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEhUTUxJbnB1dEVsZW1lbnQpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGltZUZpZWxkKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1dlZWtGaWVsZCgpIGNvbnN0OwogCi0gICAgRGF0ZUNvbXBvbmVu
dHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdDsKKyAgICBEYXRlQ29tcG9uZW50c1R5cGUgZGF0ZVR5
cGUoKSBjb25zdDsKIAogICAgIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29uc3Q7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggMzQ1ZDJkYTY1MTUyMTBhMjc2
ZmQ4MGY4ZjI3ODY4ZDI0MTliYWJhOS4uMjcwNjE4YmE5ZTU1ZjZjYjIzNzc1MjUxNDc5Y2RiMTYz
NTlhODFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNTIzLDkgKzUyMyw5IEBA
IFN0cmluZyBJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QKICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiB9CiAKLURhdGVDb21wb25lbnRzOjpUeXBlIElucHV0VHlwZTo6ZGF0
ZVR5cGUoKSBjb25zdAorRGF0ZUNvbXBvbmVudHNUeXBlIElucHV0VHlwZTo6ZGF0ZVR5cGUoKSBj
b25zdAogewotICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6SW52YWxpZDsKKyAgICByZXR1cm4g
RGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkOwogfQogCiB2b2lkIElucHV0VHlwZTo6ZGlzcGF0
Y2hTaW11bGF0ZWRDbGlja0lmQWN0aXZlKEtleWJvYXJkRXZlbnQmIGV2ZW50KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggMWM1NTEyOWMxNDVkMDRkM2YxMTFiOTY5MGE4NTM0Mjc2
MDM5NGRmMC4uMTAxNWIwZmFmZTRjNTRmMGI2NDMyOTE3MGUwZWRlNGViMzJiNzRkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oCkBAIC00MCwxMCArNDAsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CkBAIC02Nyw2ICs2Myw3
IEBAIGNsYXNzIFRvdWNoRXZlbnQ7CiBzdHJ1Y3QgSW5wdXRFbGVtZW50Q2xpY2tTdGF0ZTsKIAog
ZW51bSBjbGFzcyBBbnlTdGVwSGFuZGxpbmcgOiBib29sOworZW51bSBjbGFzcyBEYXRlQ29tcG9u
ZW50c1R5cGU7CiAKIC8vIEFuIElucHV0VHlwZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgdHlwZS1z
cGVjaWZpYyBwYXJ0IG9mIGFuIEhUTUxJbnB1dEVsZW1lbnQuCiAvLyBEbyBub3QgZXhwb3NlIGlu
c3RhbmNlcyBvZiBJbnB1dFR5cGUgYW5kIGNsYXNzZXMgZGVyaXZlZCBmcm9tIGl0IHRvIGNsYXNz
ZXMKQEAgLTMwNSw3ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlY2VpdmVE
cm9wcGVkRmlsZXMoY29uc3QgRHJhZ0RhdGEmKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBEYXRl
Q29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRGF0ZUNvbXBv
bmVudHNUeXBlIGRhdGVUeXBlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5
U3RyaW5nKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5k
ZXggNDkwMjYwYzI4Yzc5ZjM1MDY3NjI3Yzg5ZGIwMmY5YjY5YmIwZWUwNC4uMTFhYWU2NDE1ZDVj
OTg2MWFkMzM3MWM5MmU1OWYzMTUzZWYyOTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElu
cHV0VHlwZS5jcHAKQEAgLTU1LDkgKzU1LDkgQEAgY29uc3QgQXRvbVN0cmluZyYgTW9udGhJbnB1
dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVz
Ojptb250aCgpOwogfQogCi1EYXRlQ29tcG9uZW50czo6VHlwZSBNb250aElucHV0VHlwZTo6ZGF0
ZVR5cGUoKSBjb25zdAorRGF0ZUNvbXBvbmVudHNUeXBlIE1vbnRoSW5wdXRUeXBlOjpkYXRlVHlw
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpNb250aDsKKyAgICByZXR1
cm4gRGF0ZUNvbXBvbmVudHNUeXBlOjpNb250aDsKIH0KIAogZG91YmxlIE1vbnRoSW5wdXRUeXBl
Ojp2YWx1ZUFzRGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01v
bnRoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgKaW5k
ZXggMGNjYTkyMmE1M2M0MGRmMTU4ZGNmYjJjNjA2MWQ4YTM4Yzg0YWY4NC4uODUzNmFjMWFiNDdi
MjYyNTJkNDI4NDgyMWFlYWQ4NWRjNzI0Y2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1
dFR5cGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3Qg
QXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgRGF0ZUNv
bXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEYXRlQ29tcG9u
ZW50c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3VibGUgdmFsdWVBc0Rh
dGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25k
cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lSW5wdXRUeXBlLmNwcAppbmRleCAwYmQyZDRiY2U5YTU4ZWI3OTY3OTdiMzgxMTAwODQ1
YWU1ZDY1NmZkLi4zZmVkOTZhYjE4YjQ1ZWQwN2VmMjFhNjMzMWI3NGRkM2MxYThlYjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTU5LDkgKzU5LDkgQEAgY29uc3Qg
QXRvbVN0cmluZyYgVGltZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKICAgICBy
ZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnRpbWUoKTsKIH0KIAotRGF0ZUNvbXBvbmVudHM6OlR5cGUg
VGltZUlucHV0VHlwZTo6ZGF0ZVR5cGUoKSBjb25zdAorRGF0ZUNvbXBvbmVudHNUeXBlIFRpbWVJ
bnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6
OlRpbWU7CisgICAgcmV0dXJuIERhdGVDb21wb25lbnRzVHlwZTo6VGltZTsKIH0KIAogRGVjaW1h
bCBUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVJbnB1dFR5cGUuaAppbmRleCA4NDE2NmIwOTVhZjIxODhjYThlMDc1NmJlN2U1NTcx
MWIxMmQ4ZWQ0Li42NzUyNDUzNjM2NjUxMDQwMzA4NWVlNjFiN2EwZDZlOTQ5MDYzYWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBEYXRlQ29tcG9uZW50c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBvdmVycmlk
ZTsKICAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKGNv
bnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1
dFR5cGUuY3BwCmluZGV4IGIyYmIyNDNiOTA1ZDg0MTViMDM0Yzk0MDZlNGJmYTM4MjFiMzliYTMu
LmZiN2NhMTZhNjk4NjgyMDgxMjU0ODViYjMzMjQxOTE4OGJlMTZiNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAtNTIsOSArNTIsOSBAQCBjb25zdCBBdG9tU3RyaW5n
JiBXZWVrSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogICAgIHJldHVybiBJbnB1
dFR5cGVOYW1lczo6d2VlaygpOwogfQogCi1EYXRlQ29tcG9uZW50czo6VHlwZSBXZWVrSW5wdXRU
eXBlOjpkYXRlVHlwZSgpIGNvbnN0CitEYXRlQ29tcG9uZW50c1R5cGUgV2Vla0lucHV0VHlwZTo6
ZGF0ZVR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6V2VlazsKKyAg
ICByZXR1cm4gRGF0ZUNvbXBvbmVudHNUeXBlOjpXZWVrOwogfQogCiBTdGVwUmFuZ2UgV2Vla0lu
cHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCmluZGV4IGQzYmExNTEzM2U3MzQx
MWVhODA1NGMwMzNjZjEwNmE1YzM2NmEzYTcuLmEzMmQ2Zjc5N2U3OWMxMWNiODViY2M2MzczYWE0
OTkwZjE1OTgxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRl
VHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhh
bmRsaW5nKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFy
c2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBvdmVycmlkZTsKICAg
ICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRz
KGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29t
cG9uZW50cy5jcHAKaW5kZXggZjg3MWYyZWFjYTY3ODFmYWY5N2U2NGE2ZDBmMDY1NDQ3N2Q5Yjll
Ny4uM2E1ZjVjYzUyODM1NGE3NDkyMTE1ZDI3YmUyZGQ2NGY5YjNlYWUzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcApAQCAtMzk4LDcgKzM5OCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgRGF0ZUNvbXBvbmVudHM6OnBhcnNl
TW9udGgoU3RyaW5nUGFyc2luZ0J1CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fbW9u
dGggPSAqbW9udGg7Ci0gICAgbV90eXBlID0gTW9udGg7CisgICAgbV90eXBlID0gRGF0ZUNvbXBv
bmVudHNUeXBlOjpNb250aDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDE4LDcgKzQxOCw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgRGF0ZUNvbXBvbmVudHM6
OnBhcnNlRGF0ZShTdHJpbmdQYXJzaW5nQnVmCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IG1fbW9udGhEYXkgPSAqZGF5OwotICAgIG1fdHlwZSA9IERhdGU7CisgICAgbV90eXBlID0gRGF0
ZUNvbXBvbmVudHNUeXBlOjpEYXRlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NDAsNyAr
NDQwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBEYXRlQ29tcG9u
ZW50czo6cGFyc2VXZWVrKFN0cmluZ1BhcnNpbmdCdWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgbV93ZWVrID0gKndlZWs7Ci0gICAgbV90eXBlID0gV2VlazsKKyAgICBtX3R5cGUgPSBE
YXRlQ29tcG9uZW50c1R5cGU6OldlZWs7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwMCw3
ICs1MDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIERhdGVDb21w
b25lbnRzOjpwYXJzZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZgogICAgIG1fbWludXRlID0gKm1pbnV0
ZTsKICAgICBtX3NlY29uZCA9IHNlY29uZC52YWx1ZU9yKDApOwogICAgIG1fbWlsbGlzZWNvbmQg
PSBtaWxsaXNlY29uZC52YWx1ZU9yKDApOwotICAgIG1fdHlwZSA9IFRpbWU7CisgICAgbV90eXBl
ID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpUaW1lOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01
MTgsNyArNTE4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBEYXRl
Q29tcG9uZW50czo6cGFyc2VEYXRlVGltZUxvY2FsKFN0cmluZ1AKICAgICBpZiAoIXdpdGhpbkhU
TUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250aCwgbV9tb250aERheSwgbV9ob3VyLCBtX21pbnV0
ZSwgbV9zZWNvbmQsIG1fbWlsbGlzZWNvbmQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX3R5cGUgPSBEYXRlVGltZUxvY2FsOworICAgIG1fdHlwZSA9IERhdGVDb21wb25lbnRzVHlw
ZTo6RGF0ZVRpbWVMb2NhbDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjAwLDIwICs2MDAs
MjAgQEAgYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRh
dGVJbnRlcm5hbChkb3VibGUgbXMpCiAKIGJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vj
b25kc1NpbmNlRXBvY2hGb3JEYXRlKGRvdWJsZSBtcykKIHsKLSAgICBtX3R5cGUgPSBJbnZhbGlk
OworICAgIG1fdHlwZSA9IERhdGVDb21wb25lbnRzVHlwZTo6SW52YWxpZDsKICAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUobXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzZXRNaWxs
aXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVybmFsKHJvdW5kKG1zKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIXdpdGhpbkhUTUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250
aCwgbV9tb250aERheSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3R5cGUgPSBEYXRl
OworICAgIG1fdHlwZSA9IERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZv
ckRhdGVUaW1lTG9jYWwoZG91YmxlIG1zKQogewotICAgIG1fdHlwZSA9IEludmFsaWQ7CisgICAg
bV90eXBlID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkOwogICAgIGlmICghc3RkOjppc2Zp
bml0ZShtcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtcyA9IHJvdW5kKG1zKTsKQEAg
LTYyMiwzMCArNjIyLDMwIEBAIGJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1Np
bmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKGRvdWJsZSBtcykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMobV95ZWFyLCBtX21vbnRoLCBtX21vbnRo
RGF5LCBtX2hvdXIsIG1fbWludXRlLCBtX3NlY29uZCwgbV9taWxsaXNlY29uZCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBtX3R5cGUgPSBEYXRlVGltZUxvY2FsOworICAgIG1fdHlwZSA9
IERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbDsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvck1vbnRo
KGRvdWJsZSBtcykKIHsKLSAgICBtX3R5cGUgPSBJbnZhbGlkOworICAgIG1fdHlwZSA9IERhdGVD
b21wb25lbnRzVHlwZTo6SW52YWxpZDsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobXMpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9y
RGF0ZUludGVybmFsKHJvdW5kKG1zKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IXdpdGhpbkhUTUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250aCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBtX3R5cGUgPSBNb250aDsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50c1R5
cGU6Ok1vbnRoOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIERhdGVDb21wb25lbnRzOjpz
ZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KGRvdWJsZSBtcykKIHsKLSAgICBtX3R5cGUgPSBJ
bnZhbGlkOworICAgIG1fdHlwZSA9IERhdGVDb21wb25lbnRzVHlwZTo6SW52YWxpZDsKICAgICBp
ZiAoIXN0ZDo6aXNmaW5pdGUobXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2V0TWls
bGlzZWNvbmRzU2luY2VNaWRuaWdodEludGVybmFsKHBvc2l0aXZlRm1vZChyb3VuZChtcyksIG1z
UGVyRGF5KSk7Ci0gICAgbV90eXBlID0gVGltZTsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50
c1R5cGU6OlRpbWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY2NCw3ICs2NjQsNyBAQCBi
b29sIERhdGVDb21wb25lbnRzOjpzZXRNb250aHNTaW5jZUVwb2NoKGRvdWJsZSBtb250aHMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3llYXIgPSB5ZWFyOwogICAgIG1fbW9udGggPSBt
b250aDsKLSAgICBtX3R5cGUgPSBNb250aDsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50c1R5
cGU6Ok1vbnRoOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02ODAsNyArNjgwLDcgQEAgc3Rh
dGljIGludCBvZmZzZXRUbzFzdFdlZWtTdGFydChpbnQgeWVhcikKIAogYm9vbCBEYXRlQ29tcG9u
ZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvcldlZWsoZG91YmxlIG1zKQogewotICAg
IG1fdHlwZSA9IEludmFsaWQ7CisgICAgbV90eXBlID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZh
bGlkOwogICAgIGlmICghc3RkOjppc2Zpbml0ZShtcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBtcyA9IHJvdW5kKG1zKTsKQEAgLTcwNiwzMCArNzA2LDMwIEBAIGJvb2wgRGF0ZUNvbXBv
bmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKGRvdWJsZSBtcykKICAgICAg
ICAgaWYgKG1feWVhciA+IG1heGltdW1ZZWFyIHx8IChtX3llYXIgPT0gbWF4aW11bVllYXIgJiYg
bV93ZWVrID4gbWF4aW11bVdlZWtJbk1heGltdW1ZZWFyKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgbV90eXBlID0gV2VlazsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9u
ZW50c1R5cGU6OldlZWs7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGRvdWJsZSBEYXRlQ29tcG9u
ZW50czo6bWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvclRpbWUoKSBjb25zdAogewotICAgIEFTU0VS
VChtX3R5cGUgPT0gVGltZSB8fCBtX3R5cGUgPT0gRGF0ZVRpbWVMb2NhbCk7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6OlRpbWUgfHwgbV90eXBlID09IERhdGVDb21w
b25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbCk7CiAgICAgcmV0dXJuICgobV9ob3VyICogbWludXRl
c1BlckhvdXIgKyBtX21pbnV0ZSkgKiBzZWNvbmRzUGVyTWludXRlICsgbV9zZWNvbmQpICogbXNQ
ZXJTZWNvbmQgKyBtX21pbGxpc2Vjb25kOwogfQogCiBkb3VibGUgRGF0ZUNvbXBvbmVudHM6Om1p
bGxpc2Vjb25kc1NpbmNlRXBvY2goKSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0g
ICAgY2FzZSBEYXRlOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOgogICAgICAg
ICByZXR1cm4gZGF0ZVRvRGF5c0Zyb20xOTcwKG1feWVhciwgbV9tb250aCwgbV9tb250aERheSkg
KiBtc1BlckRheTsKLSAgICBjYXNlIERhdGVUaW1lTG9jYWw6CisgICAgY2FzZSBEYXRlQ29tcG9u
ZW50c1R5cGU6OkRhdGVUaW1lTG9jYWw6CiAgICAgICAgIHJldHVybiBkYXRlVG9EYXlzRnJvbTE5
NzAobV95ZWFyLCBtX21vbnRoLCBtX21vbnRoRGF5KSAqIG1zUGVyRGF5ICsgbWlsbGlzZWNvbmRz
U2luY2VFcG9jaEZvclRpbWUoKTsKLSAgICBjYXNlIE1vbnRoOgorICAgIGNhc2UgRGF0ZUNvbXBv
bmVudHNUeXBlOjpNb250aDoKICAgICAgICAgcmV0dXJuIGRhdGVUb0RheXNGcm9tMTk3MChtX3ll
YXIsIG1fbW9udGgsIDEpICogbXNQZXJEYXk7Ci0gICAgY2FzZSBUaW1lOgorICAgIGNhc2UgRGF0
ZUNvbXBvbmVudHNUeXBlOjpUaW1lOgogICAgICAgICByZXR1cm4gbWlsbGlzZWNvbmRzU2luY2VF
cG9jaEZvclRpbWUoKTsKLSAgICBjYXNlIFdlZWs6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5
cGU6OldlZWs6CiAgICAgICAgIHJldHVybiAoZGF0ZVRvRGF5c0Zyb20xOTcwKG1feWVhciwgMCwg
MSkgKyBvZmZzZXRUbzFzdFdlZWtTdGFydChtX3llYXIpICsgKG1fd2VlayAtIDEpICogNykgKiBt
c1BlckRheTsKLSAgICBjYXNlIEludmFsaWQ6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6
OkludmFsaWQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTczOCwxOCArNzM4LDE4IEBAIGRvdWJsZSBEYXRlQ29tcG9uZW50czo6bWlsbGlzZWNv
bmRzU2luY2VFcG9jaCgpIGNvbnN0CiAKIGRvdWJsZSBEYXRlQ29tcG9uZW50czo6bW9udGhzU2lu
Y2VFcG9jaCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBNb250aCk7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6Ok1vbnRoKTsKICAgICByZXR1cm4gKG1f
eWVhciAtIDE5NzApICogMTIgKyBtX21vbnRoOwogfQogCiBTdHJpbmcgRGF0ZUNvbXBvbmVudHM6
OnRvU3RyaW5nRm9yVGltZShTZWNvbmRGb3JtYXQgZm9ybWF0KSBjb25zdAogewotICAgIEFTU0VS
VChtX3R5cGUgPT0gRGF0ZVRpbWVMb2NhbCB8fCBtX3R5cGUgPT0gVGltZSk7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6OkRhdGVUaW1lTG9jYWwgfHwgbV90eXBlID09
IERhdGVDb21wb25lbnRzVHlwZTo6VGltZSk7CiAgICAgU2Vjb25kRm9ybWF0IGVmZmVjdGl2ZUZv
cm1hdCA9IGZvcm1hdDsKICAgICBpZiAobV9taWxsaXNlY29uZCkKLSAgICAgICAgZWZmZWN0aXZl
Rm9ybWF0ID0gTWlsbGlzZWNvbmQ7Ci0gICAgZWxzZSBpZiAoZm9ybWF0ID09IE5vbmUgJiYgbV9z
ZWNvbmQpCi0gICAgICAgIGVmZmVjdGl2ZUZvcm1hdCA9IFNlY29uZDsKKyAgICAgICAgZWZmZWN0
aXZlRm9ybWF0ID0gU2Vjb25kRm9ybWF0OjpNaWxsaXNlY29uZDsKKyAgICBlbHNlIGlmIChmb3Jt
YXQgPT0gU2Vjb25kRm9ybWF0OjpOb25lICYmIG1fc2Vjb25kKQorICAgICAgICBlZmZlY3RpdmVG
b3JtYXQgPSBTZWNvbmRGb3JtYXQ6OlNlY29uZDsKIAogICAgIHN3aXRjaCAoZWZmZWN0aXZlRm9y
bWF0KSB7CiAgICAgZGVmYXVsdDoKQEAgLTc1NywxMSArNzU3LDExIEBAIFN0cmluZyBEYXRlQ29t
cG9uZW50czo6dG9TdHJpbmdGb3JUaW1lKFNlY29uZEZvcm1hdCBmb3JtYXQpIGNvbnN0CiAjaWYg
IUFTU0VSVF9FTkFCTEVECiAgICAgICAgIEZBTExUSFJPVUdIOyAvLyBUbyBOb25lLgogI2VuZGlm
Ci0gICAgY2FzZSBOb25lOgorICAgIGNhc2UgU2Vjb25kRm9ybWF0OjpOb25lOgogICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBtX2hvdXIpLCAnOicsIHBhZCgnMCcsIDIsIG1f
bWludXRlKSk7Ci0gICAgY2FzZSBTZWNvbmQ6CisgICAgY2FzZSBTZWNvbmRGb3JtYXQ6OlNlY29u
ZDoKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgbV9ob3VyKSwgJzonLCBw
YWQoJzAnLCAyLCBtX21pbnV0ZSksICc6JywgcGFkKCcwJywgMiwgbV9zZWNvbmQpKTsKLSAgICBj
YXNlIE1pbGxpc2Vjb25kOgorICAgIGNhc2UgU2Vjb25kRm9ybWF0OjpNaWxsaXNlY29uZDoKICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgbV9ob3VyKSwgJzonLCBwYWQoJzAn
LCAyLCBtX21pbnV0ZSksICc6JywgcGFkKCcwJywgMiwgbV9zZWNvbmQpLCAnLicsIHBhZCgnMCcs
IDMsIG1fbWlsbGlzZWNvbmQpKTsKICAgICB9CiB9CkBAIC03NjksMTcgKzc2OSwxNyBAQCBTdHJp
bmcgRGF0ZUNvbXBvbmVudHM6OnRvU3RyaW5nRm9yVGltZShTZWNvbmRGb3JtYXQgZm9ybWF0KSBj
b25zdAogU3RyaW5nIERhdGVDb21wb25lbnRzOjp0b1N0cmluZyhTZWNvbmRGb3JtYXQgZm9ybWF0
KSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBEYXRlOgorICAgIGNh
c2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhw
YWQoJzAnLCA0LCBtX3llYXIpLCAnLScsIHBhZCgnMCcsIDIsIG1fbW9udGggKyAxKSwgJy0nLCBw
YWQoJzAnLCAyLCBtX21vbnRoRGF5KSk7Ci0gICAgY2FzZSBEYXRlVGltZUxvY2FsOgorICAgIGNh
c2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlVGltZUxvY2FsOgogICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZyhwYWQoJzAnLCA0LCBtX3llYXIpLCAnLScsIHBhZCgnMCcsIDIsIG1fbW9udGggKyAx
KSwgJy0nLCBwYWQoJzAnLCAyLCBtX21vbnRoRGF5KSwgJ1QnLCB0b1N0cmluZ0ZvclRpbWUoZm9y
bWF0KSk7Ci0gICAgY2FzZSBNb250aDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzVHlwZTo6TW9u
dGg6CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDQsIG1feWVhciksICctJywg
cGFkKCcwJywgMiwgbV9tb250aCArIDEpKTsKLSAgICBjYXNlIFRpbWU6CisgICAgY2FzZSBEYXRl
Q29tcG9uZW50c1R5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiB0b1N0cmluZ0ZvclRpbWUoZm9y
bWF0KTsKLSAgICBjYXNlIFdlZWs6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OldlZWs6
CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDQsIG1feWVhciksICItVyIsIHBh
ZCgnMCcsIDIsIG1fd2VlaykpOwotICAgIGNhc2UgSW52YWxpZDoKKyAgICBjYXNlIERhdGVDb21w
b25lbnRzVHlwZTo6SW52YWxpZDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNv
bXBvbmVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmgKaW5k
ZXggYzk3MjFmNzVkYjA5Y2ZhOTVmYTNkY2FkMmNjOTIxNjRiZDlmNTU4My4uNGM4ZGM4MTVhZmM0
YjJkZDc4ZjQzMTczMjEzZmIyOWY0MGY5ZmNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
YXRlQ29tcG9uZW50cy5oCkBAIC0zNiw2ICszNiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2VudW0gY2xhc3MgU2Vjb25kRm9ybWF0IHsKKyAgICBOb25lLCAvLyBTdXBwcmVzcyB0aGUg
c2Vjb25kIHBhcnQgYW5kIHRoZSBtaWxsaXNlY29uZCBwYXJ0IGlmIHRoZXkgYXJlIDAuCisgICAg
U2Vjb25kLCAvLyBBbHdheXMgc2hvdyB0aGUgc2Vjb25kIHBhcnQsIGFuZCBzdXBwcmVzcyB0aGUg
bWlsbGlzZWNvbmQgcGFydCBpZiBpdCBpcyAwLgorICAgIE1pbGxpc2Vjb25kIC8vIEFsd2F5cyBz
aG93IHRoZSBzZWNvbmQgcGFydCBhbmQgdGhlIG1pbGxpc2Vjb25kIHBhcnQuCit9OworCitlbnVt
IGNsYXNzIERhdGVDb21wb25lbnRzVHlwZSB7CisgICAgSW52YWxpZCwKKyAgICBEYXRlLAorICAg
IERhdGVUaW1lTG9jYWwsCisgICAgTW9udGgsCisgICAgVGltZSwKKyAgICBXZWVrLAorfTsKKwog
Ly8gQSBEYXRlQ29tcG9uZW50cyBpbnN0YW5jZSByZXByZXNlbnRzIG9uZSBvZiB0aGUgZm9sbG93
aW5nIGRhdGUgYW5kIHRpbWUgY29tYmluYXRpb25zOgogLy8gKiBNb250aCB0eXBlOiB5ZWFyLW1v
bnRoCiAvLyAqIERhdGUgdHlwZTogeWVhci1tb250aC1kYXkKQEAgLTUzLDE5ICs2OCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgICwgbV9tb250aCgwKQogICAgICAgICAsIG1feWVhcigwKQogICAgICAg
ICAsIG1fd2VlaygwKQotICAgICAgICAsIG1fdHlwZShJbnZhbGlkKQorICAgICAgICAsIG1fdHlw
ZShEYXRlQ29tcG9uZW50c1R5cGU6OkludmFsaWQpCiAgICAgewogICAgIH0KIAotICAgIGVudW0g
VHlwZSB7Ci0gICAgICAgIEludmFsaWQsCi0gICAgICAgIERhdGUsCi0gICAgICAgIERhdGVUaW1l
TG9jYWwsCi0gICAgICAgIE1vbnRoLAotICAgICAgICBUaW1lLAotICAgICAgICBXZWVrLAotICAg
IH07Ci0KICAgICBpbnQgbWlsbGlzZWNvbmQoKSBjb25zdCB7IHJldHVybiBtX21pbGxpc2Vjb25k
OyB9CiAgICAgaW50IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vjb25kOyB9CiAgICAgaW50
IG1pbnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWludXRlOyB9CkBAIC03NCwxNyArODAsMTEgQEAg
cHVibGljOgogICAgIGludCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9udGg7IH0KICAgICBp
bnQgZnVsbFllYXIoKSBjb25zdCB7IHJldHVybiBtX3llYXI7IH0KICAgICBpbnQgd2VlaygpIGNv
bnN0IHsgcmV0dXJuIG1fd2VlazsgfQotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQotCi0gICAgZW51bSBTZWNvbmRGb3JtYXQgewotICAgICAgICBOb25lLCAvLyBTdXBw
cmVzcyB0aGUgc2Vjb25kIHBhcnQgYW5kIHRoZSBtaWxsaXNlY29uZCBwYXJ0IGlmIHRoZXkgYXJl
IDAuCi0gICAgICAgIFNlY29uZCwgLy8gQWx3YXlzIHNob3cgdGhlIHNlY29uZCBwYXJ0LCBhbmQg
c3VwcHJlc3MgdGhlIG1pbGxpc2Vjb25kIHBhcnQgaWYgaXQgaXMgMC4KLSAgICAgICAgTWlsbGlz
ZWNvbmQgLy8gQWx3YXlzIHNob3cgdGhlIHNlY29uZCBwYXJ0IGFuZCB0aGUgbWlsbGlzZWNvbmQg
cGFydC4KLSAgICB9OworICAgIERhdGVDb21wb25lbnRzVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAKICAgICAvLyBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9u
IGZvciB0aGlzIGluc3RhbmNlLgogICAgIC8vIFRoZSBmb3JtYXQgYXJndW1lbnQgaXMgdmFsaWQg
Zm9yIERhdGVUaW1lTG9jYWwgYW5kIFRpbWUgdHlwZXMuCi0gICAgU3RyaW5nIHRvU3RyaW5nKFNl
Y29uZEZvcm1hdCA9IE5vbmUpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhTZWNvbmRGb3Jt
YXQgPSBTZWNvbmRGb3JtYXQ6Ok5vbmUpIGNvbnN0OwogCiAgICAgLy8gU2V0cyB5ZWFyIGFuZCBt
b250aC4KICAgICBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nTW9u
dGgoU3RyaW5nVmlldyk7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV95
ZWFyOyAvLyAgMTU4MiAtCiAgICAgaW50IG1fd2VlazsgLy8gMSAtIDUzCiAKLSAgICBUeXBlIG1f
dHlwZTsKKyAgICBEYXRlQ29tcG9uZW50c1R5cGUgbV90eXBlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0
Zm9ybUxvY2FsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9j
YWxlLmNwcAppbmRleCBlNDBhNmIxMGJmZmZjOTA5MDJjNzkwZjg1MjgxZDIwOGMwZjg1OGY0Li5i
NWIwZWVhNDYyMDQ5YmQxYjgzMDA3NzMwZWIxOWUzOWU0ZGJkYjE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAKKyNp
bmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkRhdGVUaW1lRm9ybWF0LmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KQEAgLTMyNywyNyArMzI4LDI3IEBAIFN0cmluZyBMb2NhbGU6OmNvbnZlcnRGcm9t
TG9jYWxpemVkTnVtYmVyKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkKQogI2lmIEVOQUJMRShEQVRF
X0FORF9USU1FX0lOUFVUX1RZUEVTKQogU3RyaW5nIExvY2FsZTo6Zm9ybWF0RGF0ZVRpbWUoY29u
c3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUsIEZvcm1hdFR5cGUgZm9ybWF0VHlwZSkKIHsKLSAgICBp
ZiAoZGF0ZS50eXBlKCkgPT0gRGF0ZUNvbXBvbmVudHM6OkludmFsaWQpCisgICAgaWYgKGRhdGUu
dHlwZSgpID09IERhdGVDb21wb25lbnRzVHlwZTo6SW52YWxpZCkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoKnRoaXMsIGRhdGUp
OwogICAgIHN3aXRjaCAoZGF0ZS50eXBlKCkpIHsKLSAgICBjYXNlIERhdGVDb21wb25lbnRzOjpU
aW1lOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpUaW1lOgogICAgICAgICBidWlsZGVy
LmJ1aWxkKGZvcm1hdFR5cGUgPT0gRm9ybWF0VHlwZVNob3J0ID8gc2hvcnRUaW1lRm9ybWF0KCkg
OiB0aW1lRm9ybWF0KCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERhdGVDb21wb25lbnRz
OjpEYXRlOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOgogICAgICAgICBidWls
ZGVyLmJ1aWxkKGRhdGVGb3JtYXQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGF0ZUNv
bXBvbmVudHM6Ok1vbnRoOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpNb250aDoKICAg
ICAgICAgYnVpbGRlci5idWlsZChmb3JtYXRUeXBlID09IEZvcm1hdFR5cGVTaG9ydCA/IHNob3J0
TW9udGhGb3JtYXQoKSA6IG1vbnRoRm9ybWF0KCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IERhdGVDb21wb25lbnRzOjpXZWVrOiAgICAKKyAgICBjYXNlIERhdGVDb21wb25lbnRzVHlwZTo6
V2VlazogICAgCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgZm9ybWF0dGluZyB3
ZWVrcy4KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVM
b2NhbDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbDoKICAgICAg
ICAgYnVpbGRlci5idWlsZChmb3JtYXRUeXBlID09IEZvcm1hdFR5cGVTaG9ydCA/IGRhdGVUaW1l
Rm9ybWF0V2l0aG91dFNlY29uZHMoKSA6IGRhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHMoKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6OkludmFsaWQ6CisgICAgY2Fz
ZSBEYXRlQ29tcG9uZW50c1R5cGU6OkludmFsaWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1BsYXRmb3JtTG9jYWxlLmgKaW5kZXggOWY3MzJiOGE3NzA3ZmI3N2E0YzA5ZDA0MjNiMzM1
NmI1OGQ2ZTMyNC4uZTYzYzBjYWRiYWQ5YzMxY2M5YjkwODMyMmNjZDY0MjkzYmY5NGJjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaApAQCAtMjYs
MTIgKzI2LDEzIEBACiAjaWZuZGVmIFBsYXRmb3JtTG9jYWxlX2gKICNkZWZpbmUgUGxhdGZvcm1M
b2NhbGVfaAogCi0jaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlIDx3dGYvTGFu
Z3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBEYXRlQ29tcG9uZW50czsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBjbGFzcyBGb250Q2FzY2FkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0KaW5kZXggMmUyNDA0NzZkMWU1Y2ZkOWVh
NjJjMDI2ODhhYzI2YjAyNjc3NzJmMC4uOWI5MmY0OTFiNWQ5YWYxNmUyZmJkNDY0NzljNDdiMzE5
N2EwYzRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9M
b2NhbGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xv
Y2FsZUNvY29hLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkxvY2FsZUNvY29hLmgiCiAKKyNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TRGF0ZUZvcm1hdHRl
ci5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0xvY2FsZS5oPgpAQCAtMTA2LDExICsxMDcsMTEg
QEAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gTG9jYWxlQ29jb2E6OnNob3J0RGF0ZUZvcm1h
dHRlcigpCiBTdHJpbmcgTG9jYWxlQ29jb2E6OmZvcm1hdERhdGVUaW1lKGNvbnN0IERhdGVDb21w
b25lbnRzJiBkYXRlQ29tcG9uZW50cywgRm9ybWF0VHlwZSkKIHsKICAgICBkb3VibGUgbXNlYyA9
IGRhdGVDb21wb25lbnRzLm1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBEYXRlQ29tcG9u
ZW50czo6VHlwZSB0eXBlID0gZGF0ZUNvbXBvbmVudHMudHlwZSgpOworICAgIERhdGVDb21wb25l
bnRzVHlwZSB0eXBlID0gZGF0ZUNvbXBvbmVudHMudHlwZSgpOwogCiAgICAgLy8gIndlZWsiIHR5
cGUgbm90IHN1cHBvcnRlZC4KLSAgICBBU1NFUlQodHlwZSAhPSBEYXRlQ29tcG9uZW50czo6SW52
YWxpZCk7Ci0gICAgaWYgKHR5cGUgPT0gRGF0ZUNvbXBvbmVudHM6OldlZWspCisgICAgQVNTRVJU
KHR5cGUgIT0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkKTsKKyAgICBpZiAodHlwZSA9PSBE
YXRlQ29tcG9uZW50c1R5cGU6OldlZWspCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAg
IC8vIEluY29taW5nIG1zZWMgdmFsdWUgaXMgbWlsbGlzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEg
MDA6MDA6MDAgVVRDLiBUaGUgMTk3MCBlcG9jaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKaW5kZXggNWI1ZWM0YjcxZTU4
Y2E2NTgzNWU1ZTY0NzViMjk5OWMwOTMzZjZlNy4uN2ZjNGZmZmZkYmViYWQxZDkxYWIxODNlMTlk
MzQ1MzQ5MTM2ZjM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9p
b3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRm9udENhc2Nh
ZGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAorZW51bSBjbGFzcyBEYXRlQ29tcG9uZW50
c1R5cGU7CisKIGNsYXNzIE1lYXN1cmVUZXh0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGZsb2F0IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKQEAgLTQwLDE4ICs0
MSwxOCBAQCBwdWJsaWM6CiAKIGNsYXNzIExvY2FsaXplZERhdGVDYWNoZSB7CiBwdWJsaWM6Ci0g
ICAgTlNEYXRlRm9ybWF0dGVyICpmb3JtYXR0ZXJGb3JEYXRlVHlwZShEYXRlQ29tcG9uZW50czo6
VHlwZSk7Ci0gICAgZmxvYXQgbWF4aW11bVdpZHRoRm9yRGF0ZVR5cGUoRGF0ZUNvbXBvbmVudHM6
OlR5cGUsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmKTsKKyAg
ICBOU0RhdGVGb3JtYXR0ZXIgKmZvcm1hdHRlckZvckRhdGVUeXBlKERhdGVDb21wb25lbnRzVHlw
ZSk7CisgICAgZmxvYXQgbWF4aW11bVdpZHRoRm9yRGF0ZVR5cGUoRGF0ZUNvbXBvbmVudHNUeXBl
LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IE1lYXN1cmVUZXh0Q2xpZW50Jik7CiAgICAgdm9p
ZCBsb2NhbGVDaGFuZ2VkKCk7CiAKIHByaXZhdGU6CiAgICAgTG9jYWxpemVkRGF0ZUNhY2hlKCk7
CiAgICAgfkxvY2FsaXplZERhdGVDYWNoZSgpOwogCi0gICAgTlNEYXRlRm9ybWF0dGVyICpjcmVh
dGVGb3JtYXR0ZXJGb3JUeXBlKERhdGVDb21wb25lbnRzOjpUeXBlKTsKLSAgICBmbG9hdCBjYWxj
dWxhdGVNYXhpbXVtV2lkdGgoRGF0ZUNvbXBvbmVudHM6OlR5cGUsIGNvbnN0IE1lYXN1cmVUZXh0
Q2xpZW50Jik7CisgICAgTlNEYXRlRm9ybWF0dGVyICpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKERh
dGVDb21wb25lbnRzVHlwZSk7CisgICAgZmxvYXQgY2FsY3VsYXRlTWF4aW11bVdpZHRoKERhdGVD
b21wb25lbnRzVHlwZSwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmKTsKIAotICAgIC8vIFVzaW5n
IGludCBpbnN0ZWFkIG9mIERhdGVDb21wb25lbnRzOjpUeXBlIGZvciB0aGUga2V5IGJlY2F1c2Ug
dGhlIGVudW0KKyAgICAvLyBVc2luZyBpbnQgaW5zdGVhZCBvZiBEYXRlQ29tcG9uZW50c1R5cGUg
Zm9yIHRoZSBrZXkgYmVjYXVzZSB0aGUgZW51bQogICAgIC8vIGRvZXMgbm90IGhhdmUgYSBkZWZh
dWx0IGhhc2ggYW5kIGhhc2ggdHJhaXRzLiBVc2FnZSBvZiB0aGUgbWFwcwogICAgIC8vIGNhc3Rz
IHRoZSBEYXRlQ29tcG9uZW50czo6VHlwZSBpbnRvIGFuIGludCBhcyB0aGUga2V5LgogICAgIHR5
cGVkZWYgSGFzaE1hcDxpbnQsIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+PiBEYXRlVHlwZUZv
cm1hdHRlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9z
L0xvY2FsaXplZERhdGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9z
L0xvY2FsaXplZERhdGVDYWNoZS5tbQppbmRleCAxYzJhYTU3NGEzYTMyZjFiZmQ1MDkwMDcyNzUz
OWM1MzEzODFhZTg1Li5hOTMzM2I5YmIwMDkyZTkxYjQxMjZlMjdkOGJmN2FhYzRjNDFmYWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRl
Q2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVk
RGF0ZUNhY2hlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkxvY2FsaXplZERhdGVDYWNoZS5oIgogCisjaW1wb3J0ICJEYXRlQ29tcG9uZW50cy5oIgog
I2ltcG9ydCAiRm9udENhc2NhZGUuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGTm90aWZp
Y2F0aW9uQ2VudGVyLmg+CiAjaW1wb3J0IDxtYXRoLmg+CkBAIC02OSw3ICs3MCw3IEBAIHZvaWQg
TG9jYWxpemVkRGF0ZUNhY2hlOjpsb2NhbGVDaGFuZ2VkKCkKICAgICBtX2Zvcm1hdHRlck1hcC5j
bGVhcigpOwogfQogCi1OU0RhdGVGb3JtYXR0ZXIgKkxvY2FsaXplZERhdGVDYWNoZTo6Zm9ybWF0
dGVyRm9yRGF0ZVR5cGUoRGF0ZUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKK05TRGF0ZUZvcm1hdHRl
ciAqTG9jYWxpemVkRGF0ZUNhY2hlOjpmb3JtYXR0ZXJGb3JEYXRlVHlwZShEYXRlQ29tcG9uZW50
c1R5cGUgdHlwZSkKIHsKICAgICBpbnQga2V5ID0gc3RhdGljX2Nhc3Q8aW50Pih0eXBlKTsKICAg
ICBpZiAobV9mb3JtYXR0ZXJNYXAuY29udGFpbnMoa2V5KSkKQEAgLTgwLDcgKzgxLDcgQEAgTlNE
YXRlRm9ybWF0dGVyICpMb2NhbGl6ZWREYXRlQ2FjaGU6OmZvcm1hdHRlckZvckRhdGVUeXBlKERh
dGVDb21wb25lbnRzOjpUeXBlIHQKICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlcjsKIH0KIAotZmxv
YXQgTG9jYWxpemVkRGF0ZUNhY2hlOjptYXhpbXVtV2lkdGhGb3JEYXRlVHlwZShEYXRlQ29tcG9u
ZW50czo6VHlwZSB0eXBlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTWVhc3VyZVRl
eHRDbGllbnQmIG1lYXN1cmVyKQorZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjptYXhpbXVtV2lk
dGhGb3JEYXRlVHlwZShEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IE1lYXN1cmVUZXh0Q2xpZW50JiBtZWFzdXJlcikKIHsKICAgICBpbnQga2V5
ID0gc3RhdGljX2Nhc3Q8aW50Pih0eXBlKTsKICAgICBpZiAobV9mb250ID09IGZvbnQpIHsKQEAg
LTk2LDM2ICs5NywzNiBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6Om1heGltdW1XaWR0aEZv
ckRhdGVUeXBlKERhdGVDb21wb25lbnRzOjpUeXBlIHR5cGUsIGNvbgogICAgIHJldHVybiBjYWxj
dWxhdGVkTWF4aW11bTsKIH0KIAotTlNEYXRlRm9ybWF0dGVyICpMb2NhbGl6ZWREYXRlQ2FjaGU6
OmNyZWF0ZUZvcm1hdHRlckZvclR5cGUoRGF0ZUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKK05TRGF0
ZUZvcm1hdHRlciAqTG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKERh
dGVDb21wb25lbnRzVHlwZSB0eXBlKQogewogICAgIE5TRGF0ZUZvcm1hdHRlciAqZGF0ZUZvcm1h
dHRlciA9IFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XTsKICAgICBOU0xvY2FsZSAqY3Vy
cmVudExvY2FsZSA9IFtOU0xvY2FsZSBjdXJyZW50TG9jYWxlXTsKICAgICBbZGF0ZUZvcm1hdHRl
ciBzZXRMb2NhbGU6Y3VycmVudExvY2FsZV07CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBj
YXNlIERhdGVDb21wb25lbnRzOjpJbnZhbGlkOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBl
OjpJbnZhbGlkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZToKKyAgICBjYXNlIERhdGVDb21wb25lbnRz
VHlwZTo6RGF0ZToKICAgICAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0VGltZVpvbmU6W05TVGltZVpv
bmUgdGltZVpvbmVGb3JTZWNvbmRzRnJvbUdNVDowXV07CiAgICAgICAgIFtkYXRlRm9ybWF0dGVy
IHNldFRpbWVTdHlsZTpOU0RhdGVGb3JtYXR0ZXJOb1N0eWxlXTsKICAgICAgICAgW2RhdGVGb3Jt
YXR0ZXIgc2V0RGF0ZVN0eWxlOk5TRGF0ZUZvcm1hdHRlck1lZGl1bVN0eWxlXTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNl
IERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbDoKICAgICAgICAgW2RhdGVGb3JtYXR0
ZXIgc2V0VGltZVpvbmU6W05TVGltZVpvbmUgdGltZVpvbmVGb3JTZWNvbmRzRnJvbUdNVDowXV07
CiAgICAgICAgIFtkYXRlRm9ybWF0dGVyIHNldFRpbWVTdHlsZTpOU0RhdGVGb3JtYXR0ZXJTaG9y
dFN0eWxlXTsKICAgICAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0RGF0ZVN0eWxlOk5TRGF0ZUZvcm1h
dHRlck1lZGl1bVN0eWxlXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50
czo6TW9udGg6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6Ok1vbnRoOgogICAgICAgICBb
ZGF0ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpbTlNUaW1lWm9uZSB0aW1lWm9uZUZvclNlY29uZHNG
cm9tR01UOjBdXTsKICAgICAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0RGF0ZUZvcm1hdDpbTlNEYXRl
Rm9ybWF0dGVyIGRhdGVGb3JtYXRGcm9tVGVtcGxhdGU6QCJNTU1NeXl5eSIgb3B0aW9uczowIGxv
Y2FsZTpjdXJyZW50TG9jYWxlXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGF0ZUNvbXBv
bmVudHM6OlRpbWU6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OlRpbWU6CiAgICAgICAg
IFtkYXRlRm9ybWF0dGVyIHNldFRpbWVab25lOltOU1RpbWVab25lIHRpbWVab25lRm9yU2Vjb25k
c0Zyb21HTVQ6MF1dOwogICAgICAgICBbZGF0ZUZvcm1hdHRlciBzZXRUaW1lU3R5bGU6TlNEYXRl
Rm9ybWF0dGVyU2hvcnRTdHlsZV07CiAgICAgICAgIFtkYXRlRm9ybWF0dGVyIHNldERhdGVTdHls
ZTpOU0RhdGVGb3JtYXR0ZXJOb1N0eWxlXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEYXRl
Q29tcG9uZW50czo6V2VlazoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzVHlwZTo6V2VlazoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEz
NSw3ICsxMzYsNyBAQCBOU0RhdGVGb3JtYXR0ZXIgKkxvY2FsaXplZERhdGVDYWNoZTo6Y3JlYXRl
Rm9ybWF0dGVyRm9yVHlwZShEYXRlQ29tcG9uZW50czo6VHlwZQogCiAvLyBOT1RFOiBUaGlzIGRv
ZXMgbm90IGNoZWNrIGZvciB0aGUgd2lkZXN0IGRheSBvZiB0aGUgd2Vlay4KIC8vIFdlIGFzc3Vt
ZSBubyBmb3JtYXR0ZXIgb3B0aW9uIHNob3dzIHRoYXQgaW5mb3JtYXRpb24uCi1mbG9hdCBMb2Nh
bGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50czo6VHlw
ZSB0eXBlLCBjb25zdCBNZWFzdXJlVGV4dENsaWVudCYgbWVhc3VyZXIpCitmbG9hdCBMb2NhbGl6
ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlw
ZSwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmIG1lYXN1cmVyKQogewogICAgIGZsb2F0IG1heGlt
dW1XaWR0aCA9IDA7CiAKQEAgLTE2MCw5ICsxNjEsOSBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2Fj
aGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50czo6VHlwZSB0eXBlLCBjb25z
dAogCiAgICAgLy8gRm9yIGVhY2ggbW9udGggKGluIHRoZSBHcmVnb3JpYW4gQ2FsZW5kYXIpLCBm
b3JtYXQgYSBkYXRlIGFuZCBtZWFzdXJlIGl0cyBsZW5ndGguCiAgICAgTlNVSW50ZWdlciB0b3Rh
bE1vbnRoc1RvVGVzdCA9IDE7Ci0gICAgaWYgKHR5cGUgPT0gRGF0ZUNvbXBvbmVudHM6OkRhdGUK
LSAgICAgICAgfHwgdHlwZSA9PSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVMb2NhbAotICAgICAg
ICB8fCB0eXBlID09IERhdGVDb21wb25lbnRzOjpNb250aCkKKyAgICBpZiAodHlwZSA9PSBEYXRl
Q29tcG9uZW50c1R5cGU6OkRhdGUKKyAgICAgICAgfHwgdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5
cGU6OkRhdGVUaW1lTG9jYWwKKyAgICAgICAgfHwgdHlwZSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6
Ok1vbnRoKQogICAgICAgICB0b3RhbE1vbnRoc1RvVGVzdCA9IG51bWJlck9mR3JlZ29yaWFuTW9u
dGhzOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IHRvdGFsTW9udGhzVG9UZXN0OyAr
K2kpIHsKICAgICAgICAgW2NvbXBvbmVudHMuZ2V0KCkgc2V0TW9udGg6KGkgKyAxKV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNTJiZjYyNTFkNTQ5
ZjIzYzM3ODVhMzlkNzQyMmUyYzQyZDc4ZTg4NC4uNmYwZjQ4N2M0NzNmNTI0YzljYjgyOTJiYzgz
OTI3NGU1MTYwYzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQpAQCAtNjEyLDggKzYxMiw4IEBAIHN0YXRpYyB2b2lkIGFkanVzdElucHV0RWxlbWVudEJ1
dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgSFRNTElucHV0RWxlCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIERvbid0IGFkanVzdCBmb3IgdW5zdXBwb3J0ZWQgZGF0ZSBpbnB1
dCB0eXBlcy4KLSAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSA9IGlucHV0RWxlbWVu
dC5kYXRlVHlwZSgpOwotICAgIGlmIChkYXRlVHlwZSA9PSBEYXRlQ29tcG9uZW50czo6SW52YWxp
ZCB8fCBkYXRlVHlwZSA9PSBEYXRlQ29tcG9uZW50czo6V2VlaykKKyAgICBEYXRlQ29tcG9uZW50
c1R5cGUgZGF0ZVR5cGUgPSBpbnB1dEVsZW1lbnQuZGF0ZVR5cGUoKTsKKyAgICBpZiAoZGF0ZVR5
cGUgPT0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkIHx8IGRhdGVUeXBlID09IERhdGVDb21w
b25lbnRzVHlwZTo6V2VlaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRW5mb3JjZSB0aGUg
d2lkdGggYW5kIHNldCB0aGUgYm94LXNpemluZyB0byBjb250ZW50LWJveCB0byBub3QgY29uZmxp
Y3Qgd2l0aCB0aGUgcGFkZGluZy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406683</attachid>
            <date>2020-08-16 05:33:15 -0700</date>
            <delta_ts>2020-08-25 08:29:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215544-20200816143313.patch</filename>
            <type>text/plain</type>
            <size>37451</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTcwOGI1NWZkMjI3YmRk
MDA1M2Q2YjdjZTEzZjUwZTZjMGMxMDhlZi4uM2I1MDRkNGMxMTBkMzQzZTQ3MDcxNjUwM2JiYjAy
ZDM1NjIzZDFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA4LTE1ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgZW51bSBjbGFzc2Vz
IGluIERhdGVDb21wb25lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTU1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNYWtlIFR5cGUgYW5kIFNlY29uZEZvcm1hdCBlbnVtIGNsYXNzZXMgc2luY2Ug
dGhpcyBpcyBtb3JlIHJlYWRhYmxlCisgICAgICAgIGFuZCBhbGxvd3MgdXMgdG8gaGF2ZSBsZXNz
IGluY2x1ZGVzIGluIGhlYWRlciBmaWxlcy4KKworICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIGh0bWwvRGF0
ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpkYXRlVHlw
ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRt
bC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OmRhdGVUeXBlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1l
TG9jYWxJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGF0ZVR5cGUgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6ZGF0ZVR5cGUgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6ZGF0ZVR5cGUgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1RpbWVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6ZGF0ZVR5cGUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvVGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvV2Vl
a0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWVrSW5wdXRUeXBlOjpkYXRlVHlw
ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9XZWVrSW5wdXRUeXBlLmg6CisgICAgICAgICogcGxh
dGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVu
dHM6OnBhcnNlTW9udGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM6OnBhcnNl
RGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6cGFyc2VXZWVrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpwYXJzZVRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM6OnBhcnNlRGF0ZVRpbWVMb2NhbCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2hGb3JEYXRlVGltZUxvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpz
ZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1vbnRoc1NpbmNlRXBvY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjptaWxsaXNlY29uZHNTaW5jZUVwb2No
Rm9yVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6bWlsbGlz
ZWNvbmRzU2luY2VFcG9jaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50
czo6bW9udGhzU2luY2VFcG9jaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9u
ZW50czo6dG9TdHJpbmdGb3JUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21w
b25lbnRzOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vRGF0ZUNvbXBvbmVu
dHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpEYXRlQ29tcG9uZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6dHlwZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmZvcm1hdERhdGVUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1BsYXRmb3Jt
TG9jYWxlLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUNvY29hOjpmb3JtYXREYXRlVGltZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmg6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxpemVkRGF0ZUNhY2hlOjpmb3JtYXR0ZXJGb3JEYXRlVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGl6ZWREYXRlQ2FjaGU6Om1heGltdW1XaWR0aEZvckRhdGVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Y3JlYXRlRm9ybWF0dGVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1X
aWR0aCk6CisKIDIwMjAtMDgtMTUgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmVydCB1bm5lY2Vzc2FyeSBjaGFuZ2UgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1MjEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMWE3ZWQzMTU1MTZmMTQw
N2E3NmE4MmUyOWE1NTRjNmMwZTc3OWYwZS4uMzBmNWRmY2IwYjAyNjZjNGRlYWY5ZThjMTQ0ZmI1
NjEwZWVhMGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJ
TUVfSU5QVVRfVFlQRVMpCiAKKyNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUg
IkRlY2ltYWwuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCkBAIC0xMzMsMTMgKzEzNCwxMSBAQCBTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlOjpzZXJpYWxpemVXaXRoQ29tcG9uZW50cyhjb25zdCBEYXRlQ29tcG9uZW50cyYgZAog
ewogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIERlY2ltYWwgc3RlcDsKLSAgICBpZiAoIWVs
ZW1lbnQoKS0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgaWYgKCFlbGVtZW50KCkt
PmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApIHx8IHN0ZXAucmVtYWluZGVyKG1zZWNQZXJNaW51
dGUpLmlzWmVybygpKQogICAgICAgICByZXR1cm4gZGF0ZS50b1N0cmluZygpOwotICAgIGlmIChz
dGVwLnJlbWFpbmRlcihtc2VjUGVyTWludXRlKS5pc1plcm8oKSkKLSAgICAgICAgcmV0dXJuIGRh
dGUudG9TdHJpbmcoRGF0ZUNvbXBvbmVudHM6Ok5vbmUpOwogICAgIGlmIChzdGVwLnJlbWFpbmRl
cihtc2VjUGVyU2Vjb25kKS5pc1plcm8oKSkKLSAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmco
RGF0ZUNvbXBvbmVudHM6OlNlY29uZCk7Ci0gICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoRGF0ZUNv
bXBvbmVudHM6Ok1pbGxpc2Vjb25kKTsKKyAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoU2Vj
b25kRm9ybWF0OjpTZWNvbmQpOworICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKFNlY29uZEZvcm1h
dDo6TWlsbGlzZWNvbmQpOwogfQogCiBTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpz
ZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IDNlMTcyNDcwNjEz
MjVkMGEyOGU0ZDE0Y2E5ODQwYWRkMmM1YjQ5ZTIuLmYxN2MwMjNjOTZiNmQ5Yjg1MTAwZTUxNTNi
MzlhMjQ4ZTVlMDBiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuaApAQCAtMzMsMTEgKzMzLDEyIEBACiAKICNpZiBFTkFCTEUoREFURV9BTkRf
VElNRV9JTlBVVF9UWVBFUykKIAotI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVk
ZSAiSW5wdXRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0ZUNvbXBv
bmVudHM7CisKIC8vIEEgc3VwZXIgY2xhc3Mgb2YgZGF0ZSwgZGF0ZXRpbWUsIGRhdGV0aW1lLWxv
Y2FsLCBtb250aCwgdGltZSwgYW5kIHdlZWsgdHlwZXMuCiBjbGFzcyBCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVJbnB1dFR5cGUuY3BwCmluZGV4IGE1ZDZkOWVmMjg3OTIxNjhmZTljZmJmNjY3YWMwMTQ5
ZGQzMDgxMDQuLjZmMjI3MDcxZTI1M2NhZmZhOWQ2MGE2MDY2NzEzZWMyMDBjYjZjYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0RBVEUpCiAjaW5jbHVkZSAiRGF0ZUlucHV0VHlwZS5oIgogCisjaW5j
bHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKQEAgLTU2
LDkgKzU3LDkgQEAgY29uc3QgQXRvbVN0cmluZyYgRGF0ZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QKICAgICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmRhdGUoKTsKIH0KIAotRGF0
ZUNvbXBvbmVudHM6OlR5cGUgRGF0ZUlucHV0VHlwZTo6ZGF0ZVR5cGUoKSBjb25zdAorRGF0ZUNv
bXBvbmVudHNUeXBlIERhdGVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gRGF0ZUNvbXBvbmVudHM6OkRhdGU7CisgICAgcmV0dXJuIERhdGVDb21wb25lbnRzVHlwZTo6
RGF0ZTsKIH0KIAogU3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlT
dGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1
dFR5cGUuaAppbmRleCAzMzU1MDc0YmU2ZDVmMmUyZjYzODgwNjYyZDM5NjA2NWRlNjliZjJiLi5l
YmJhMGYwZGZlYmI4YzQ5ZTY4MDdhYjM2ZjkzZGIwYjFjZWIyODAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVJbnB1dFR5cGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBE
YXRlQ29tcG9uZW50c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdGVwUmFu
Z2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
T3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJp
bmdWaWV3JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNl
dE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKaW5kZXggZGI2
MzkwOGZhNjQ1MmZkZmVlMGIxZTNhNTZmMzY3YzAxYjdjMmQyOS4uYWMyMTI1OTE1MDAxZjZmZWVm
YWViNTdjMzVhMThiODk0ZTc5ZDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
YXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lTG9jYWxJbnB1dFR5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9EQVRFVElNRUxPQ0FMKQogCisjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNp
bmNsdWRlICJEZWNpbWFsLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNTMsOSArNTQsOSBAQCBjb25zdCBBdG9tU3RyaW5nJiBEYXRl
VGltZUxvY2FsSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogICAgIHJldHVybiBJ
bnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCgpOwogfQogCi1EYXRlQ29tcG9uZW50czo6VHlw
ZSBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CitEYXRlQ29tcG9uZW50
c1R5cGUgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6ZGF0ZVR5cGUoKSBjb25zdAogewotICAgIHJl
dHVybiBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVMb2NhbDsKKyAgICByZXR1cm4gRGF0ZUNvbXBv
bmVudHNUeXBlOjpEYXRlVGltZUxvY2FsOwogfQogCiBkb3VibGUgRGF0ZVRpbWVMb2NhbElucHV0
VHlwZTo6dmFsdWVBc0RhdGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1l
TG9jYWxJbnB1dFR5cGUuaAppbmRleCAyYzA0OTQ5ZjBmMGE2ZDkwZjMyNDhlNGVmOTBiODAwMDE5
NzQ5NGE1Li5jNzEzM2VlM2JhMGI3Y2VlZGMzYTJiYmVjMjkzODJmNDQwZjc3NWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRy
b2xUeXBlKCkgY29uc3QgZmluYWw7Ci0gICAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUo
KSBjb25zdCBmaW5hbDsKKyAgICBEYXRlQ29tcG9uZW50c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBm
aW5hbDsKICAgICBkb3VibGUgdmFsdWVBc0RhdGUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRWYWx1ZUFzRGF0ZShkb3VibGUpIGNvbnN0IGZpbmFsOwogICAgIFN0ZXBS
YW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDE5MzgzZTdiZTRhNWY1OTVk
Y2U0Yzk4YTQ3ZDE3NjJiMzYzYTQxNGMuLjc0Y2FjZmIwNWNjMTAxOGU4N2I5MmJjYzBiMzdmOTIx
ZmMwODQ3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUgIkNocm9t
ZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRhdGVDb21wb25lbnRz
LmgiCiAjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTE2NzUsNyArMTY3Niw3IEBAIGJvb2wgSFRNTElucHV0
RWxlbWVudDo6aXNTdGVwcGFibGUoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0VHlwZS0+aXNT
dGVwcGFibGUoKTsKIH0KIAotRGF0ZUNvbXBvbmVudHM6OlR5cGUgSFRNTElucHV0RWxlbWVudDo6
ZGF0ZVR5cGUoKSBjb25zdAorRGF0ZUNvbXBvbmVudHNUeXBlIEhUTUxJbnB1dEVsZW1lbnQ6OmRh
dGVUeXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmRhdGVUeXBlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGNiODU0NTZkNGIyMTEx
OTVkNjJmMmE4MTZkZTZhODQwZGM5MDYyOWEuLmZiOGM4NWQ5MmQ4YWQzZTA5NTMzNWM2YzgzZTk2
OTY4MTgyYWVjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0y
NCw3ICsyNCw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMu
aCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtNTMsNiArNTIsNyBAQCBzdHJ1Y3Qg
SW5wdXRFbGVtZW50Q2xpY2tTdGF0ZSB7CiB9OwogCiBlbnVtIGNsYXNzIEFueVN0ZXBIYW5kbGlu
ZyA6IGJvb2w7CitlbnVtIGNsYXNzIERhdGVDb21wb25lbnRzVHlwZSA6IHVpbnQ4X3Q7CiAKIGNs
YXNzIEhUTUxJbnB1dEVsZW1lbnQgOiBwdWJsaWMgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTElucHV0RWxlbWVudCk7CkBAIC0xMzAs
NyArMTMwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNUaW1lRmllbGQo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzV2Vla0ZpZWxkKCkgY29uc3Q7CiAK
LSAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0OworICAgIERhdGVDb21w
b25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0OwogCiAgICAgSFRNTEVsZW1lbnQqIGNvbnRhaW5l
ckVsZW1lbnQoKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCAz
NDVkMmRhNjUxNTIxMGEyNzZmZDgwZjhmMjc4NjhkMjQxOWJhYmE5Li4yNzA2MThiYTllNTVmNmNi
MjM3NzUyNTE0NzljZGIxNjM1OWE4MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBA
IC01MjMsOSArNTIzLDkgQEAgU3RyaW5nIElucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IERlY2lt
YWwmKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotRGF0ZUNvbXBvbmVudHM6OlR5
cGUgSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CitEYXRlQ29tcG9uZW50c1R5cGUgSW5wdXRU
eXBlOjpkYXRlVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpJbnZh
bGlkOworICAgIHJldHVybiBEYXRlQ29tcG9uZW50c1R5cGU6OkludmFsaWQ7CiB9CiAKIHZvaWQg
SW5wdXRUeXBlOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCAxYzU1MTI5YzE0NWQwNGQz
ZjExMWI5NjkwYTg1MzQyNzYwMzk0ZGYwLi5mOTEzNDczNDUwNTMxMmQ4NzljZWRiNGQyYjY2YWEy
ODQzYjcwMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTQwLDEwICs0MCw2IEBACiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCi0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dDsKQEAgLTY3LDYgKzYzLDcgQEAgY2xhc3MgVG91Y2hFdmVudDsKIHN0cnVjdCBJbnB1dEVsZW1l
bnRDbGlja1N0YXRlOwogCiBlbnVtIGNsYXNzIEFueVN0ZXBIYW5kbGluZyA6IGJvb2w7CitlbnVt
IGNsYXNzIERhdGVDb21wb25lbnRzVHlwZSA6IHVpbnQ4X3Q7CiAKIC8vIEFuIElucHV0VHlwZSBv
YmplY3QgcmVwcmVzZW50cyB0aGUgdHlwZS1zcGVjaWZpYyBwYXJ0IG9mIGFuIEhUTUxJbnB1dEVs
ZW1lbnQuCiAvLyBEbyBub3QgZXhwb3NlIGluc3RhbmNlcyBvZiBJbnB1dFR5cGUgYW5kIGNsYXNz
ZXMgZGVyaXZlZCBmcm9tIGl0IHRvIGNsYXNzZXMKQEAgLTMwNSw3ICszMDIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgRHJhZ0RhdGEmKTsK
ICNlbmRpZgogCi0gICAgdmlydHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHNUeXBlIGRhdGVUeXBlKCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5U3RyaW5nKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggNDkwMjYwYzI4Yzc5ZjM1MDY3NjI3Yzg5ZGIw
MmY5YjY5YmIwZWUwNC4uNWI1ZGU1NTRjMGQzOWQ2OTYzOTM1MWE1NmY4M2MyY2I0OTY0Y2UxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9NT05USCkKICNpbmNsdWRlICJNb250aElucHV0VHlwZS5o
IgogCisjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJEZWNpbWFsLmgiCiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAt
NTUsOSArNTYsOSBAQCBjb25zdCBBdG9tU3RyaW5nJiBNb250aElucHV0VHlwZTo6Zm9ybUNvbnRy
b2xUeXBlKCkgY29uc3QKICAgICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6Om1vbnRoKCk7CiB9CiAK
LURhdGVDb21wb25lbnRzOjpUeXBlIE1vbnRoSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CitE
YXRlQ29tcG9uZW50c1R5cGUgTW9udGhJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6Ok1vbnRoOworICAgIHJldHVybiBEYXRlQ29tcG9uZW50
c1R5cGU6Ok1vbnRoOwogfQogCiBkb3VibGUgTW9udGhJbnB1dFR5cGU6OnZhbHVlQXNEYXRlKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaAppbmRleCAwY2NhOTIyYTUzYzQw
ZGYxNThkY2ZiMmM2MDYxZDhhMzhjODRhZjg0Li44NTM2YWMxYWI0N2IyNjI1MmQ0Mjg0ODIxYWVh
ZDg1ZGM3MjRjZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBk
YXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IERlY2ltYWwmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUu
Y3BwCmluZGV4IDBiZDJkNGJjZTlhNThlYjc5Njc5N2IzODExMDA4NDVhZTVkNjU2ZmQuLjNkM2Zl
ODRhMWE0MmM4YmIzMzZhY2M2NWQ0ODc0N2QzZWMyYzViNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lSW5wdXRUeXBlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShJTlBVVF9UWVBF
X1RJTUUpCiAjaW5jbHVkZSAiVGltZUlucHV0VHlwZS5oIgogCisjaW5jbHVkZSAiRGF0ZUNvbXBv
bmVudHMuaCIKICNpbmNsdWRlICJEZWNpbWFsLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNTksOSArNjAsOSBAQCBjb25zdCBBdG9t
U3RyaW5nJiBUaW1lSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogICAgIHJldHVy
biBJbnB1dFR5cGVOYW1lczo6dGltZSgpOwogfQogCi1EYXRlQ29tcG9uZW50czo6VHlwZSBUaW1l
SW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CitEYXRlQ29tcG9uZW50c1R5cGUgVGltZUlucHV0
VHlwZTo6ZGF0ZVR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6VGlt
ZTsKKyAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHNUeXBlOjpUaW1lOwogfQogCiBEZWNpbWFsIFRp
bWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZUlucHV0VHlwZS5oCmluZGV4IDg0MTY2YjA5NWFmMjE4OGNhOGUwNzU2YmU3ZTU1NzExYjEy
ZDhlZDQuLjY3NTI0NTM2MzY2NTEwNDAzMDg1ZWU2MWI3YTBkNmU5NDkwNjNhZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3Rl
cFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3Qg
U3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9XZWVrSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlw
ZS5jcHAKaW5kZXggYjJiYjI0M2I5MDVkODQxNWIwMzRjOTQwNmU0YmZhMzgyMWIzOWJhMy4uZmY0
YjZkNmQyNWRkMzhjMmM4NTI4NmRkNTUzZWFjMTFlMTNhMTVlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1dlZWtJbnB1dFR5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfV0VFSykKICNpbmNsdWRlICJXZWVrSW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJEYXRlQ29t
cG9uZW50cy5oIgogI2luY2x1ZGUgIkRlY2ltYWwuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC01Miw5ICs1Myw5IEBAIGNvbnN0IEF0
b21TdHJpbmcmIFdlZWtJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0
dXJuIElucHV0VHlwZU5hbWVzOjp3ZWVrKCk7CiB9CiAKLURhdGVDb21wb25lbnRzOjpUeXBlIFdl
ZWtJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKK0RhdGVDb21wb25lbnRzVHlwZSBXZWVrSW5w
dXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpX
ZWVrOworICAgIHJldHVybiBEYXRlQ29tcG9uZW50c1R5cGU6OldlZWs7CiB9CiAKIFN0ZXBSYW5n
ZSBXZWVrSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBI
YW5kbGluZykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmgKaW5kZXggZDNiYTE1
MTMzZTczNDExZWE4MDU0YzAzM2NmMTA2YTVjMzY2YTNhNy4uYTMyZDZmNzk3ZTc5YzExY2I4NWJj
YzYzNzNhYTQ5OTBmMTU5ODEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVr
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0IEF0b21TdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIERhdGVDb21wb25lbnRzOjpU
eXBlIGRhdGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRGF0ZUNvbXBvbmVudHNUeXBlIGRh
dGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwogICAgIE9wdGlvbmFsPERhdGVDb21wb25l
bnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNv
bXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RhdGVDb21wb25lbnRzLmNwcAppbmRleCBmODcxZjJlYWNhNjc4MWZhZjk3ZTY0YTZkMGYwNjU0
NDc3ZDliOWU3Li4zYTVmNWNjNTI4MzU0YTc0OTIxMTVkMjdiZTJkZDY0ZjliM2VhZTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCkBAIC0zOTgsNyArMzk4
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBEYXRlQ29tcG9uZW50
czo6cGFyc2VNb250aChTdHJpbmdQYXJzaW5nQnUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgbV9tb250aCA9ICptb250aDsKLSAgICBtX3R5cGUgPSBNb250aDsKKyAgICBtX3R5cGUgPSBE
YXRlQ29tcG9uZW50c1R5cGU6Ok1vbnRoOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MTgs
NyArNDE4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBEYXRlQ29t
cG9uZW50czo6cGFyc2VEYXRlKFN0cmluZ1BhcnNpbmdCdWYKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgbV9tb250aERheSA9ICpkYXk7Ci0gICAgbV90eXBlID0gRGF0ZTsKKyAgICBtX3R5
cGUgPSBEYXRlQ29tcG9uZW50c1R5cGU6OkRhdGU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTQ0MCw3ICs0NDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIERh
dGVDb21wb25lbnRzOjpwYXJzZVdlZWsoU3RyaW5nUGFyc2luZ0J1ZgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBtX3dlZWsgPSAqd2VlazsKLSAgICBtX3R5cGUgPSBXZWVrOworICAgIG1f
dHlwZSA9IERhdGVDb21wb25lbnRzVHlwZTo6V2VlazsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNTAwLDcgKzUwMCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wg
RGF0ZUNvbXBvbmVudHM6OnBhcnNlVGltZShTdHJpbmdQYXJzaW5nQnVmCiAgICAgbV9taW51dGUg
PSAqbWludXRlOwogICAgIG1fc2Vjb25kID0gc2Vjb25kLnZhbHVlT3IoMCk7CiAgICAgbV9taWxs
aXNlY29uZCA9IG1pbGxpc2Vjb25kLnZhbHVlT3IoMCk7Ci0gICAgbV90eXBlID0gVGltZTsKKyAg
ICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50c1R5cGU6OlRpbWU7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTUxOCw3ICs1MTgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBi
b29sIERhdGVDb21wb25lbnRzOjpwYXJzZURhdGVUaW1lTG9jYWwoU3RyaW5nUAogICAgIGlmICgh
d2l0aGluSFRNTERhdGVMaW1pdHMobV95ZWFyLCBtX21vbnRoLCBtX21vbnRoRGF5LCBtX2hvdXIs
IG1fbWludXRlLCBtX3NlY29uZCwgbV9taWxsaXNlY29uZCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIG1fdHlwZSA9IERhdGVUaW1lTG9jYWw7CisgICAgbV90eXBlID0gRGF0ZUNvbXBv
bmVudHNUeXBlOjpEYXRlVGltZUxvY2FsOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MDAs
MjAgKzYwMCwyMCBAQCBib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVw
b2NoRm9yRGF0ZUludGVybmFsKGRvdWJsZSBtcykKIAogYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0
TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoZG91YmxlIG1zKQogewotICAgIG1fdHlwZSA9
IEludmFsaWQ7CisgICAgbV90eXBlID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkOwogICAg
IGlmICghc3RkOjppc2Zpbml0ZShtcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IXNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlSW50ZXJuYWwocm91bmQobXMpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMobV95ZWFy
LCBtX21vbnRoLCBtX21vbnRoRGF5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fdHlw
ZSA9IERhdGU7CisgICAgbV90eXBlID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5j
ZUVwb2NoRm9yRGF0ZVRpbWVMb2NhbChkb3VibGUgbXMpCiB7Ci0gICAgbV90eXBlID0gSW52YWxp
ZDsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50c1R5cGU6OkludmFsaWQ7CiAgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKG1zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1zID0gcm91bmQo
bXMpOwpAQCAtNjIyLDMwICs2MjIsMzAgQEAgYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlz
ZWNvbmRzU2luY2VFcG9jaEZvckRhdGVUaW1lTG9jYWwoZG91YmxlIG1zKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCF3aXRoaW5IVE1MRGF0ZUxpbWl0cyhtX3llYXIsIG1fbW9udGgs
IG1fbW9udGhEYXksIG1faG91ciwgbV9taW51dGUsIG1fc2Vjb25kLCBtX21pbGxpc2Vjb25kKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fdHlwZSA9IERhdGVUaW1lTG9jYWw7CisgICAg
bV90eXBlID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlVGltZUxvY2FsOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2No
Rm9yTW9udGgoZG91YmxlIG1zKQogewotICAgIG1fdHlwZSA9IEludmFsaWQ7CisgICAgbV90eXBl
ID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSht
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXNldE1pbGxpc2Vjb25kc1NpbmNl
RXBvY2hGb3JEYXRlSW50ZXJuYWwocm91bmQobXMpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMobV95ZWFyLCBtX21vbnRoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIG1fdHlwZSA9IE1vbnRoOworICAgIG1fdHlwZSA9IERhdGVDb21w
b25lbnRzVHlwZTo6TW9udGg7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgRGF0ZUNvbXBv
bmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKQogewotICAgIG1f
dHlwZSA9IEludmFsaWQ7CisgICAgbV90eXBlID0gRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlk
OwogICAgIGlmICghc3RkOjppc2Zpbml0ZShtcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBzZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0SW50ZXJuYWwocG9zaXRpdmVGbW9kKHJvdW5k
KG1zKSwgbXNQZXJEYXkpKTsKLSAgICBtX3R5cGUgPSBUaW1lOworICAgIG1fdHlwZSA9IERhdGVD
b21wb25lbnRzVHlwZTo6VGltZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjY0LDcgKzY2
NCw3IEBAIGJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1vbnRoc1NpbmNlRXBvY2goZG91YmxlIG1v
bnRocykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1feWVhciA9IHllYXI7CiAgICAgbV9t
b250aCA9IG1vbnRoOwotICAgIG1fdHlwZSA9IE1vbnRoOworICAgIG1fdHlwZSA9IERhdGVDb21w
b25lbnRzVHlwZTo6TW9udGg7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY4MCw3ICs2ODAs
NyBAQCBzdGF0aWMgaW50IG9mZnNldFRvMXN0V2Vla1N0YXJ0KGludCB5ZWFyKQogCiBib29sIERh
dGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayhkb3VibGUgbXMp
CiB7Ci0gICAgbV90eXBlID0gSW52YWxpZDsKKyAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50c1R5
cGU6OkludmFsaWQ7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1zKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIG1zID0gcm91bmQobXMpOwpAQCAtNzA2LDMwICs3MDYsMzAgQEAgYm9vbCBE
YXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvcldlZWsoZG91YmxlIG1z
KQogICAgICAgICBpZiAobV95ZWFyID4gbWF4aW11bVllYXIgfHwgKG1feWVhciA9PSBtYXhpbXVt
WWVhciAmJiBtX3dlZWsgPiBtYXhpbXVtV2Vla0luTWF4aW11bVllYXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBtX3R5cGUgPSBXZWVrOworICAgIG1fdHlwZSA9IERh
dGVDb21wb25lbnRzVHlwZTo6V2VlazsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZG91YmxlIERh
dGVDb21wb25lbnRzOjptaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yVGltZSgpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKG1fdHlwZSA9PSBUaW1lIHx8IG1fdHlwZSA9PSBEYXRlVGltZUxvY2FsKTsKKyAg
ICBBU1NFUlQobV90eXBlID09IERhdGVDb21wb25lbnRzVHlwZTo6VGltZSB8fCBtX3R5cGUgPT0g
RGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlVGltZUxvY2FsKTsKICAgICByZXR1cm4gKChtX2hvdXIg
KiBtaW51dGVzUGVySG91ciArIG1fbWludXRlKSAqIHNlY29uZHNQZXJNaW51dGUgKyBtX3NlY29u
ZCkgKiBtc1BlclNlY29uZCArIG1fbWlsbGlzZWNvbmQ7CiB9CiAKIGRvdWJsZSBEYXRlQ29tcG9u
ZW50czo6bWlsbGlzZWNvbmRzU2luY2VFcG9jaCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3R5
cGUpIHsKLSAgICBjYXNlIERhdGU6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OkRhdGU6
CiAgICAgICAgIHJldHVybiBkYXRlVG9EYXlzRnJvbTE5NzAobV95ZWFyLCBtX21vbnRoLCBtX21v
bnRoRGF5KSAqIG1zUGVyRGF5OwotICAgIGNhc2UgRGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIERh
dGVDb21wb25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbDoKICAgICAgICAgcmV0dXJuIGRhdGVUb0Rh
eXNGcm9tMTk3MChtX3llYXIsIG1fbW9udGgsIG1fbW9udGhEYXkpICogbXNQZXJEYXkgKyBtaWxs
aXNlY29uZHNTaW5jZUVwb2NoRm9yVGltZSgpOwotICAgIGNhc2UgTW9udGg6CisgICAgY2FzZSBE
YXRlQ29tcG9uZW50c1R5cGU6Ok1vbnRoOgogICAgICAgICByZXR1cm4gZGF0ZVRvRGF5c0Zyb20x
OTcwKG1feWVhciwgbV9tb250aCwgMSkgKiBtc1BlckRheTsKLSAgICBjYXNlIFRpbWU6CisgICAg
Y2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiBtaWxsaXNlY29u
ZHNTaW5jZUVwb2NoRm9yVGltZSgpOwotICAgIGNhc2UgV2VlazoKKyAgICBjYXNlIERhdGVDb21w
b25lbnRzVHlwZTo6V2VlazoKICAgICAgICAgcmV0dXJuIChkYXRlVG9EYXlzRnJvbTE5NzAobV95
ZWFyLCAwLCAxKSArIG9mZnNldFRvMXN0V2Vla1N0YXJ0KG1feWVhcikgKyAobV93ZWVrIC0gMSkg
KiA3KSAqIG1zUGVyRGF5OwotICAgIGNhc2UgSW52YWxpZDoKKyAgICBjYXNlIERhdGVDb21wb25l
bnRzVHlwZTo6SW52YWxpZDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNzM4LDE4ICs3MzgsMTggQEAgZG91YmxlIERhdGVDb21wb25lbnRzOjpt
aWxsaXNlY29uZHNTaW5jZUVwb2NoKCkgY29uc3QKIAogZG91YmxlIERhdGVDb21wb25lbnRzOjpt
b250aHNTaW5jZUVwb2NoKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV90eXBlID09IE1vbnRoKTsK
KyAgICBBU1NFUlQobV90eXBlID09IERhdGVDb21wb25lbnRzVHlwZTo6TW9udGgpOwogICAgIHJl
dHVybiAobV95ZWFyIC0gMTk3MCkgKiAxMiArIG1fbW9udGg7CiB9CiAKIFN0cmluZyBEYXRlQ29t
cG9uZW50czo6dG9TdHJpbmdGb3JUaW1lKFNlY29uZEZvcm1hdCBmb3JtYXQpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKG1fdHlwZSA9PSBEYXRlVGltZUxvY2FsIHx8IG1fdHlwZSA9PSBUaW1lKTsKKyAg
ICBBU1NFUlQobV90eXBlID09IERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbCB8fCBt
X3R5cGUgPT0gRGF0ZUNvbXBvbmVudHNUeXBlOjpUaW1lKTsKICAgICBTZWNvbmRGb3JtYXQgZWZm
ZWN0aXZlRm9ybWF0ID0gZm9ybWF0OwogICAgIGlmIChtX21pbGxpc2Vjb25kKQotICAgICAgICBl
ZmZlY3RpdmVGb3JtYXQgPSBNaWxsaXNlY29uZDsKLSAgICBlbHNlIGlmIChmb3JtYXQgPT0gTm9u
ZSAmJiBtX3NlY29uZCkKLSAgICAgICAgZWZmZWN0aXZlRm9ybWF0ID0gU2Vjb25kOworICAgICAg
ICBlZmZlY3RpdmVGb3JtYXQgPSBTZWNvbmRGb3JtYXQ6Ok1pbGxpc2Vjb25kOworICAgIGVsc2Ug
aWYgKGZvcm1hdCA9PSBTZWNvbmRGb3JtYXQ6Ok5vbmUgJiYgbV9zZWNvbmQpCisgICAgICAgIGVm
ZmVjdGl2ZUZvcm1hdCA9IFNlY29uZEZvcm1hdDo6U2Vjb25kOwogCiAgICAgc3dpdGNoIChlZmZl
Y3RpdmVGb3JtYXQpIHsKICAgICBkZWZhdWx0OgpAQCAtNzU3LDExICs3NTcsMTEgQEAgU3RyaW5n
IERhdGVDb21wb25lbnRzOjp0b1N0cmluZ0ZvclRpbWUoU2Vjb25kRm9ybWF0IGZvcm1hdCkgY29u
c3QKICNpZiAhQVNTRVJUX0VOQUJMRUQKICAgICAgICAgRkFMTFRIUk9VR0g7IC8vIFRvIE5vbmUu
CiAjZW5kaWYKLSAgICBjYXNlIE5vbmU6CisgICAgY2FzZSBTZWNvbmRGb3JtYXQ6Ok5vbmU6CiAg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIG1faG91ciksICc6JywgcGFkKCcw
JywgMiwgbV9taW51dGUpKTsKLSAgICBjYXNlIFNlY29uZDoKKyAgICBjYXNlIFNlY29uZEZvcm1h
dDo6U2Vjb25kOgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBtX2hvdXIp
LCAnOicsIHBhZCgnMCcsIDIsIG1fbWludXRlKSwgJzonLCBwYWQoJzAnLCAyLCBtX3NlY29uZCkp
OwotICAgIGNhc2UgTWlsbGlzZWNvbmQ6CisgICAgY2FzZSBTZWNvbmRGb3JtYXQ6Ok1pbGxpc2Vj
b25kOgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBtX2hvdXIpLCAnOics
IHBhZCgnMCcsIDIsIG1fbWludXRlKSwgJzonLCBwYWQoJzAnLCAyLCBtX3NlY29uZCksICcuJywg
cGFkKCcwJywgMywgbV9taWxsaXNlY29uZCkpOwogICAgIH0KIH0KQEAgLTc2OSwxNyArNzY5LDE3
IEBAIFN0cmluZyBEYXRlQ29tcG9uZW50czo6dG9TdHJpbmdGb3JUaW1lKFNlY29uZEZvcm1hdCBm
b3JtYXQpIGNvbnN0CiBTdHJpbmcgRGF0ZUNvbXBvbmVudHM6OnRvU3RyaW5nKFNlY29uZEZvcm1h
dCBmb3JtYXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIERhdGU6
CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OkRhdGU6CiAgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKHBhZCgnMCcsIDQsIG1feWVhciksICctJywgcGFkKCcwJywgMiwgbV9tb250aCArIDEp
LCAnLScsIHBhZCgnMCcsIDIsIG1fbW9udGhEYXkpKTsKLSAgICBjYXNlIERhdGVUaW1lTG9jYWw6
CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OkRhdGVUaW1lTG9jYWw6CiAgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDQsIG1feWVhciksICctJywgcGFkKCcwJywgMiwgbV9t
b250aCArIDEpLCAnLScsIHBhZCgnMCcsIDIsIG1fbW9udGhEYXkpLCAnVCcsIHRvU3RyaW5nRm9y
VGltZShmb3JtYXQpKTsKLSAgICBjYXNlIE1vbnRoOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNU
eXBlOjpNb250aDoKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgNCwgbV95ZWFy
KSwgJy0nLCBwYWQoJzAnLCAyLCBtX21vbnRoICsgMSkpOwotICAgIGNhc2UgVGltZToKKyAgICBj
YXNlIERhdGVDb21wb25lbnRzVHlwZTo6VGltZToKICAgICAgICAgcmV0dXJuIHRvU3RyaW5nRm9y
VGltZShmb3JtYXQpOwotICAgIGNhc2UgV2VlazoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzVHlw
ZTo6V2VlazoKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgNCwgbV95ZWFyKSwg
Ii1XIiwgcGFkKCcwJywgMiwgbV93ZWVrKSk7Ci0gICAgY2FzZSBJbnZhbGlkOgorICAgIGNhc2Ug
RGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlkOgogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EYXRlQ29tcG9uZW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVu
dHMuaAppbmRleCBjOTcyMWY3NWRiMDljZmE5NWZhM2RjYWQyY2M5MjE2NGJkOWY1NTgzLi5hMjRm
YjlmMWYxMTAzNzg3NDY4ZGVlNTMzNDEwYmNhY2IyMmQ1NDdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RhdGVDb21wb25lbnRzLmgKQEAgLTM2LDYgKzM2LDIxIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorZW51bSBjbGFzcyBTZWNvbmRGb3JtYXQgOiB1aW50OF90IHsKKyAgICBOb25l
LCAvLyBTdXBwcmVzcyB0aGUgc2Vjb25kIHBhcnQgYW5kIHRoZSBtaWxsaXNlY29uZCBwYXJ0IGlm
IHRoZXkgYXJlIDAuCisgICAgU2Vjb25kLCAvLyBBbHdheXMgc2hvdyB0aGUgc2Vjb25kIHBhcnQs
IGFuZCBzdXBwcmVzcyB0aGUgbWlsbGlzZWNvbmQgcGFydCBpZiBpdCBpcyAwLgorICAgIE1pbGxp
c2Vjb25kIC8vIEFsd2F5cyBzaG93IHRoZSBzZWNvbmQgcGFydCBhbmQgdGhlIG1pbGxpc2Vjb25k
IHBhcnQuCit9OworCitlbnVtIGNsYXNzIERhdGVDb21wb25lbnRzVHlwZSA6IHVpbnQ4X3Qgewor
ICAgIEludmFsaWQsCisgICAgRGF0ZSwKKyAgICBEYXRlVGltZUxvY2FsLAorICAgIE1vbnRoLAor
ICAgIFRpbWUsCisgICAgV2VlaywKK307CisKIC8vIEEgRGF0ZUNvbXBvbmVudHMgaW5zdGFuY2Ug
cmVwcmVzZW50cyBvbmUgb2YgdGhlIGZvbGxvd2luZyBkYXRlIGFuZCB0aW1lIGNvbWJpbmF0aW9u
czoKIC8vICogTW9udGggdHlwZTogeWVhci1tb250aAogLy8gKiBEYXRlIHR5cGU6IHllYXItbW9u
dGgtZGF5CkBAIC01MywxOSArNjgsMTAgQEAgcHVibGljOgogICAgICAgICAsIG1fbW9udGgoMCkK
ICAgICAgICAgLCBtX3llYXIoMCkKICAgICAgICAgLCBtX3dlZWsoMCkKLSAgICAgICAgLCBtX3R5
cGUoSW52YWxpZCkKKyAgICAgICAgLCBtX3R5cGUoRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlk
KQogICAgIHsKICAgICB9CiAKLSAgICBlbnVtIFR5cGUgewotICAgICAgICBJbnZhbGlkLAotICAg
ICAgICBEYXRlLAotICAgICAgICBEYXRlVGltZUxvY2FsLAotICAgICAgICBNb250aCwKLSAgICAg
ICAgVGltZSwKLSAgICAgICAgV2VlaywKLSAgICB9OwotCiAgICAgaW50IG1pbGxpc2Vjb25kKCkg
Y29uc3QgeyByZXR1cm4gbV9taWxsaXNlY29uZDsgfQogICAgIGludCBzZWNvbmQoKSBjb25zdCB7
IHJldHVybiBtX3NlY29uZDsgfQogICAgIGludCBtaW51dGUoKSBjb25zdCB7IHJldHVybiBtX21p
bnV0ZTsgfQpAQCAtNzQsMTcgKzgwLDExIEBAIHB1YmxpYzoKICAgICBpbnQgbW9udGgoKSBjb25z
dCB7IHJldHVybiBtX21vbnRoOyB9CiAgICAgaW50IGZ1bGxZZWFyKCkgY29uc3QgeyByZXR1cm4g
bV95ZWFyOyB9CiAgICAgaW50IHdlZWsoKSBjb25zdCB7IHJldHVybiBtX3dlZWs7IH0KLSAgICBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIGVudW0gU2Vjb25kRm9y
bWF0IHsKLSAgICAgICAgTm9uZSwgLy8gU3VwcHJlc3MgdGhlIHNlY29uZCBwYXJ0IGFuZCB0aGUg
bWlsbGlzZWNvbmQgcGFydCBpZiB0aGV5IGFyZSAwLgotICAgICAgICBTZWNvbmQsIC8vIEFsd2F5
cyBzaG93IHRoZSBzZWNvbmQgcGFydCwgYW5kIHN1cHByZXNzIHRoZSBtaWxsaXNlY29uZCBwYXJ0
IGlmIGl0IGlzIDAuCi0gICAgICAgIE1pbGxpc2Vjb25kIC8vIEFsd2F5cyBzaG93IHRoZSBzZWNv
bmQgcGFydCBhbmQgdGhlIG1pbGxpc2Vjb25kIHBhcnQuCi0gICAgfTsKKyAgICBEYXRlQ29tcG9u
ZW50c1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgLy8gUmV0dXJu
cyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBmb3IgdGhpcyBpbnN0YW5jZS4KICAgICAvLyBU
aGUgZm9ybWF0IGFyZ3VtZW50IGlzIHZhbGlkIGZvciBEYXRlVGltZUxvY2FsIGFuZCBUaW1lIHR5
cGVzLgotICAgIFN0cmluZyB0b1N0cmluZyhTZWNvbmRGb3JtYXQgPSBOb25lKSBjb25zdDsKKyAg
ICBTdHJpbmcgdG9TdHJpbmcoU2Vjb25kRm9ybWF0ID0gU2Vjb25kRm9ybWF0OjpOb25lKSBjb25z
dDsKIAogICAgIC8vIFNldHMgeWVhciBhbmQgbW9udGguCiAgICAgc3RhdGljIE9wdGlvbmFsPERh
dGVDb21wb25lbnRzPiBmcm9tUGFyc2luZ01vbnRoKFN0cmluZ1ZpZXcpOwpAQCAtMTkzLDcgKzE5
Myw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1feWVhcjsgLy8gIDE1ODIgLQogICAgIGludCBtX3dl
ZWs7IC8vIDEgLSA1MwogCi0gICAgVHlwZSBtX3R5cGU7CisgICAgRGF0ZUNvbXBvbmVudHNUeXBl
IG1fdHlwZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKaW5kZXggZTQwYTZiMTBiZmZmYzkw
OTAyYzc5MGY4NTI4MWQyMDhjMGY4NThmNC4uYjViMGVlYTQ2MjA0OWJkMWI4MzAwNzczMGViMTll
MzllNGRiZGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0
Zm9ybUxvY2FsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9y
bUxvY2FsZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogCisjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNp
bmNsdWRlICJEYXRlVGltZUZvcm1hdC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0zMjcsMjcgKzMyOCwyNyBA
QCBTdHJpbmcgTG9jYWxlOjpjb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcm
IGxvY2FsaXplZCkKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKIFN0cmlu
ZyBMb2NhbGU6OmZvcm1hdERhdGVUaW1lKGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRlLCBGb3Jt
YXRUeXBlIGZvcm1hdFR5cGUpCiB7Ci0gICAgaWYgKGRhdGUudHlwZSgpID09IERhdGVDb21wb25l
bnRzOjpJbnZhbGlkKQorICAgIGlmIChkYXRlLnR5cGUoKSA9PSBEYXRlQ29tcG9uZW50c1R5cGU6
OkludmFsaWQpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIERhdGVUaW1lU3RyaW5n
QnVpbGRlciBidWlsZGVyKCp0aGlzLCBkYXRlKTsKICAgICBzd2l0Y2ggKGRhdGUudHlwZSgpKSB7
Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6VGltZToKKyAgICBjYXNlIERhdGVDb21wb25lbnRz
VHlwZTo6VGltZToKICAgICAgICAgYnVpbGRlci5idWlsZChmb3JtYXRUeXBlID09IEZvcm1hdFR5
cGVTaG9ydCA/IHNob3J0VGltZUZvcm1hdCgpIDogdGltZUZvcm1hdCgpKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZToKKyAgICBjYXNlIERhdGVDb21wb25l
bnRzVHlwZTo6RGF0ZToKICAgICAgICAgYnVpbGRlci5idWlsZChkYXRlRm9ybWF0KCkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIERhdGVDb21wb25lbnRzOjpNb250aDoKKyAgICBjYXNlIERh
dGVDb21wb25lbnRzVHlwZTo6TW9udGg6CiAgICAgICAgIGJ1aWxkZXIuYnVpbGQoZm9ybWF0VHlw
ZSA9PSBGb3JtYXRUeXBlU2hvcnQgPyBzaG9ydE1vbnRoRm9ybWF0KCkgOiBtb250aEZvcm1hdCgp
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6V2VlazogICAgCisg
ICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OldlZWs6ICAgIAogICAgICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGZvcm1hdHRpbmcgd2Vla3MuCiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRGF0ZUNvbXBvbmVudHM6OkRhdGVUaW1lTG9jYWw6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50
c1R5cGU6OkRhdGVUaW1lTG9jYWw6CiAgICAgICAgIGJ1aWxkZXIuYnVpbGQoZm9ybWF0VHlwZSA9
PSBGb3JtYXRUeXBlU2hvcnQgPyBkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKCkgOiBkYXRl
VGltZUZvcm1hdFdpdGhTZWNvbmRzKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERhdGVD
b21wb25lbnRzOjpJbnZhbGlkOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpJbnZhbGlk
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCmluZGV4IDlm
NzMyYjhhNzcwN2ZiNzdhNGMwOWQwNDIzYjMzNTZiNThkNmUzMjQuLmU2M2MwY2FkYmFkOWMzMWNj
OWI5MDgzMjJjY2Q2NDI5M2JmOTRiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1BsYXRmb3JtTG9jYWxlLmgKQEAgLTI2LDEyICsyNiwxMyBAQAogI2lmbmRlZiBQbGF0Zm9y
bUxvY2FsZV9oCiAjZGVmaW5lIFBsYXRmb3JtTG9jYWxlX2gKIAotI2luY2x1ZGUgIkRhdGVDb21w
b25lbnRzLmgiCiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0ZUNvbXBvbmVu
dHM7CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY2xhc3MgRm9udENhc2NhZGU7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsZUNvY29h
Lm1tCmluZGV4IDJlMjQwNDc2ZDFlNWNmZDllYTYyYzAyNjg4YWMyNmIwMjY3NzcyZjAuLjliOTJm
NDkxYjVkOWFmMTZlMmZiZDQ2NDc5YzQ3YjMxOTdhMGM0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMb2NhbGVDb2NvYS5oIgogCisjaW1wb3J0
ICJEYXRlQ29tcG9uZW50cy5oIgogI2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2ltcG9y
dCA8Rm91bmRhdGlvbi9OU0RhdGVGb3JtYXR0ZXIuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vTlNM
b2NhbGUuaD4KQEAgLTEwNiwxMSArMTA3LDExIEBAIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+
IExvY2FsZUNvY29hOjpzaG9ydERhdGVGb3JtYXR0ZXIoKQogU3RyaW5nIExvY2FsZUNvY29hOjpm
b3JtYXREYXRlVGltZShjb25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZUNvbXBvbmVudHMsIEZvcm1h
dFR5cGUpCiB7CiAgICAgZG91YmxlIG1zZWMgPSBkYXRlQ29tcG9uZW50cy5taWxsaXNlY29uZHNT
aW5jZUVwb2NoKCk7Ci0gICAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgdHlwZSA9IGRhdGVDb21wb25l
bnRzLnR5cGUoKTsKKyAgICBEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSA9IGRhdGVDb21wb25lbnRz
LnR5cGUoKTsKIAogICAgIC8vICJ3ZWVrIiB0eXBlIG5vdCBzdXBwb3J0ZWQuCi0gICAgQVNTRVJU
KHR5cGUgIT0gRGF0ZUNvbXBvbmVudHM6OkludmFsaWQpOwotICAgIGlmICh0eXBlID09IERhdGVD
b21wb25lbnRzOjpXZWVrKQorICAgIEFTU0VSVCh0eXBlICE9IERhdGVDb21wb25lbnRzVHlwZTo6
SW52YWxpZCk7CisgICAgaWYgKHR5cGUgPT0gRGF0ZUNvbXBvbmVudHNUeXBlOjpXZWVrKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICAvLyBJbmNvbWluZyBtc2VjIHZhbHVlIGlzIG1p
bGxpc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQy4gVGhlIDE5NzAgZXBvY2gu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWRE
YXRlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERh
dGVDYWNoZS5oCmluZGV4IDViNWVjNGI3MWU1OGNhNjU4MzVlNWU2NDc1YjI5OTljMDkzM2Y2ZTcu
LjlhZTVlYzVkYTNjMzBmM2M5MzNhMmQ2NzkwMTVlNTYxNzdjODAxN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCkBA
IC0yNSwxMyArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJEYXRlQ29tcG9u
ZW50cy5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKK2VudW0gY2xhc3MgRGF0ZUNvbXBvbmVudHNUeXBlIDogdWludDhfdDsKKwogY2xhc3MgTWVh
c3VyZVRleHRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgbWVhc3VyZVRleHQo
Y29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwpAQCAtNDAsMTggKzQxLDE4IEBAIHB1YmxpYzoKIAog
Y2xhc3MgTG9jYWxpemVkRGF0ZUNhY2hlIHsKIHB1YmxpYzoKLSAgICBOU0RhdGVGb3JtYXR0ZXIg
KmZvcm1hdHRlckZvckRhdGVUeXBlKERhdGVDb21wb25lbnRzOjpUeXBlKTsKLSAgICBmbG9hdCBt
YXhpbXVtV2lkdGhGb3JEYXRlVHlwZShEYXRlQ29tcG9uZW50czo6VHlwZSwgY29uc3QgRm9udENh
c2NhZGUmLCBjb25zdCBNZWFzdXJlVGV4dENsaWVudCYpOworICAgIE5TRGF0ZUZvcm1hdHRlciAq
Zm9ybWF0dGVyRm9yRGF0ZVR5cGUoRGF0ZUNvbXBvbmVudHNUeXBlKTsKKyAgICBmbG9hdCBtYXhp
bXVtV2lkdGhGb3JEYXRlVHlwZShEYXRlQ29tcG9uZW50c1R5cGUsIGNvbnN0IEZvbnRDYXNjYWRl
JiwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmKTsKICAgICB2b2lkIGxvY2FsZUNoYW5nZWQoKTsK
IAogcHJpdmF0ZToKICAgICBMb2NhbGl6ZWREYXRlQ2FjaGUoKTsKICAgICB+TG9jYWxpemVkRGF0
ZUNhY2hlKCk7CiAKLSAgICBOU0RhdGVGb3JtYXR0ZXIgKmNyZWF0ZUZvcm1hdHRlckZvclR5cGUo
RGF0ZUNvbXBvbmVudHM6OlR5cGUpOwotICAgIGZsb2F0IGNhbGN1bGF0ZU1heGltdW1XaWR0aChE
YXRlQ29tcG9uZW50czo6VHlwZSwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmKTsKKyAgICBOU0Rh
dGVGb3JtYXR0ZXIgKmNyZWF0ZUZvcm1hdHRlckZvclR5cGUoRGF0ZUNvbXBvbmVudHNUeXBlKTsK
KyAgICBmbG9hdCBjYWxjdWxhdGVNYXhpbXVtV2lkdGgoRGF0ZUNvbXBvbmVudHNUeXBlLCBjb25z
dCBNZWFzdXJlVGV4dENsaWVudCYpOwogCi0gICAgLy8gVXNpbmcgaW50IGluc3RlYWQgb2YgRGF0
ZUNvbXBvbmVudHM6OlR5cGUgZm9yIHRoZSBrZXkgYmVjYXVzZSB0aGUgZW51bQorICAgIC8vIFVz
aW5nIGludCBpbnN0ZWFkIG9mIERhdGVDb21wb25lbnRzVHlwZSBmb3IgdGhlIGtleSBiZWNhdXNl
IHRoZSBlbnVtCiAgICAgLy8gZG9lcyBub3QgaGF2ZSBhIGRlZmF1bHQgaGFzaCBhbmQgaGFzaCB0
cmFpdHMuIFVzYWdlIG9mIHRoZSBtYXBzCiAgICAgLy8gY2FzdHMgdGhlIERhdGVDb21wb25lbnRz
OjpUeXBlIGludG8gYW4gaW50IGFzIHRoZSBrZXkuCiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwg
UmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4+IERhdGVUeXBlRm9ybWF0dGVyTWFwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hl
Lm1tCmluZGV4IDFjMmFhNTc0YTNhMzJmMWJmZDUwOTAwNzI3NTM5YzUzMTM4MWFlODUuLmE5MzMz
YjliYjAwOTJlOTFiNDEyNmUyN2Q4YmY3YWFjNGM0MWZhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KQEAgLTI2
LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTG9jYWxpemVkRGF0ZUNh
Y2hlLmgiCiAKKyNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0ICJGb250Q2FzY2Fk
ZS5oIgogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZOb3RpZmljYXRpb25DZW50ZXIuaD4KICNp
bXBvcnQgPG1hdGguaD4KQEAgLTY5LDcgKzcwLDcgQEAgdm9pZCBMb2NhbGl6ZWREYXRlQ2FjaGU6
OmxvY2FsZUNoYW5nZWQoKQogICAgIG1fZm9ybWF0dGVyTWFwLmNsZWFyKCk7CiB9CiAKLU5TRGF0
ZUZvcm1hdHRlciAqTG9jYWxpemVkRGF0ZUNhY2hlOjpmb3JtYXR0ZXJGb3JEYXRlVHlwZShEYXRl
Q29tcG9uZW50czo6VHlwZSB0eXBlKQorTlNEYXRlRm9ybWF0dGVyICpMb2NhbGl6ZWREYXRlQ2Fj
aGU6OmZvcm1hdHRlckZvckRhdGVUeXBlKERhdGVDb21wb25lbnRzVHlwZSB0eXBlKQogewogICAg
IGludCBrZXkgPSBzdGF0aWNfY2FzdDxpbnQ+KHR5cGUpOwogICAgIGlmIChtX2Zvcm1hdHRlck1h
cC5jb250YWlucyhrZXkpKQpAQCAtODAsNyArODEsNyBAQCBOU0RhdGVGb3JtYXR0ZXIgKkxvY2Fs
aXplZERhdGVDYWNoZTo6Zm9ybWF0dGVyRm9yRGF0ZVR5cGUoRGF0ZUNvbXBvbmVudHM6OlR5cGUg
dAogICAgIHJldHVybiBkYXRlRm9ybWF0dGVyOwogfQogCi1mbG9hdCBMb2NhbGl6ZWREYXRlQ2Fj
aGU6Om1heGltdW1XaWR0aEZvckRhdGVUeXBlKERhdGVDb21wb25lbnRzOjpUeXBlIHR5cGUsIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBNZWFzdXJlVGV4dENsaWVudCYgbWVhc3VyZXIp
CitmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6Om1heGltdW1XaWR0aEZvckRhdGVUeXBlKERhdGVD
b21wb25lbnRzVHlwZSB0eXBlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTWVhc3Vy
ZVRleHRDbGllbnQmIG1lYXN1cmVyKQogewogICAgIGludCBrZXkgPSBzdGF0aWNfY2FzdDxpbnQ+
KHR5cGUpOwogICAgIGlmIChtX2ZvbnQgPT0gZm9udCkgewpAQCAtOTYsMzYgKzk3LDM2IEBAIGZs
b2F0IExvY2FsaXplZERhdGVDYWNoZTo6bWF4aW11bVdpZHRoRm9yRGF0ZVR5cGUoRGF0ZUNvbXBv
bmVudHM6OlR5cGUgdHlwZSwgY29uCiAgICAgcmV0dXJuIGNhbGN1bGF0ZWRNYXhpbXVtOwogfQog
Ci1OU0RhdGVGb3JtYXR0ZXIgKkxvY2FsaXplZERhdGVDYWNoZTo6Y3JlYXRlRm9ybWF0dGVyRm9y
VHlwZShEYXRlQ29tcG9uZW50czo6VHlwZSB0eXBlKQorTlNEYXRlRm9ybWF0dGVyICpMb2NhbGl6
ZWREYXRlQ2FjaGU6OmNyZWF0ZUZvcm1hdHRlckZvclR5cGUoRGF0ZUNvbXBvbmVudHNUeXBlIHR5
cGUpCiB7CiAgICAgTlNEYXRlRm9ybWF0dGVyICpkYXRlRm9ybWF0dGVyID0gW1tOU0RhdGVGb3Jt
YXR0ZXIgYWxsb2NdIGluaXRdOwogICAgIE5TTG9jYWxlICpjdXJyZW50TG9jYWxlID0gW05TTG9j
YWxlIGN1cnJlbnRMb2NhbGVdOwogICAgIFtkYXRlRm9ybWF0dGVyIHNldExvY2FsZTpjdXJyZW50
TG9jYWxlXTsKIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6
OkludmFsaWQ6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50c1R5cGU6OkludmFsaWQ6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERhdGVDb21w
b25lbnRzOjpEYXRlOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOgogICAgICAg
ICBbZGF0ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpbTlNUaW1lWm9uZSB0aW1lWm9uZUZvclNlY29u
ZHNGcm9tR01UOjBdXTsKICAgICAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0VGltZVN0eWxlOk5TRGF0
ZUZvcm1hdHRlck5vU3R5bGVdOwogICAgICAgICBbZGF0ZUZvcm1hdHRlciBzZXREYXRlU3R5bGU6
TlNEYXRlRm9ybWF0dGVyTWVkaXVtU3R5bGVdOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERh
dGVDb21wb25lbnRzOjpEYXRlVGltZUxvY2FsOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBl
OjpEYXRlVGltZUxvY2FsOgogICAgICAgICBbZGF0ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpbTlNU
aW1lWm9uZSB0aW1lWm9uZUZvclNlY29uZHNGcm9tR01UOjBdXTsKICAgICAgICAgW2RhdGVGb3Jt
YXR0ZXIgc2V0VGltZVN0eWxlOk5TRGF0ZUZvcm1hdHRlclNob3J0U3R5bGVdOwogICAgICAgICBb
ZGF0ZUZvcm1hdHRlciBzZXREYXRlU3R5bGU6TlNEYXRlRm9ybWF0dGVyTWVkaXVtU3R5bGVdOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIERhdGVDb21wb25lbnRzOjpNb250aDoKKyAgICBjYXNl
IERhdGVDb21wb25lbnRzVHlwZTo6TW9udGg6CiAgICAgICAgIFtkYXRlRm9ybWF0dGVyIHNldFRp
bWVab25lOltOU1RpbWVab25lIHRpbWVab25lRm9yU2Vjb25kc0Zyb21HTVQ6MF1dOwogICAgICAg
ICBbZGF0ZUZvcm1hdHRlciBzZXREYXRlRm9ybWF0OltOU0RhdGVGb3JtYXR0ZXIgZGF0ZUZvcm1h
dEZyb21UZW1wbGF0ZTpAIk1NTU15eXl5IiBvcHRpb25zOjAgbG9jYWxlOmN1cnJlbnRMb2NhbGVd
XTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEYXRlQ29tcG9uZW50czo6VGltZToKKyAgICBj
YXNlIERhdGVDb21wb25lbnRzVHlwZTo6VGltZToKICAgICAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0
VGltZVpvbmU6W05TVGltZVpvbmUgdGltZVpvbmVGb3JTZWNvbmRzRnJvbUdNVDowXV07CiAgICAg
ICAgIFtkYXRlRm9ybWF0dGVyIHNldFRpbWVTdHlsZTpOU0RhdGVGb3JtYXR0ZXJTaG9ydFN0eWxl
XTsKICAgICAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0RGF0ZVN0eWxlOk5TRGF0ZUZvcm1hdHRlck5v
U3R5bGVdOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERhdGVDb21wb25lbnRzOjpXZWVrOgor
ICAgIGNhc2UgRGF0ZUNvbXBvbmVudHNUeXBlOjpXZWVrOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM1LDcgKzEzNiw3IEBAIE5TRGF0
ZUZvcm1hdHRlciAqTG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKERh
dGVDb21wb25lbnRzOjpUeXBlCiAKIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgY2hlY2sgZm9yIHRo
ZSB3aWRlc3QgZGF5IG9mIHRoZSB3ZWVrLgogLy8gV2UgYXNzdW1lIG5vIGZvcm1hdHRlciBvcHRp
b24gc2hvd3MgdGhhdCBpbmZvcm1hdGlvbi4KLWZsb2F0IExvY2FsaXplZERhdGVDYWNoZTo6Y2Fs
Y3VsYXRlTWF4aW11bVdpZHRoKERhdGVDb21wb25lbnRzOjpUeXBlIHR5cGUsIGNvbnN0IE1lYXN1
cmVUZXh0Q2xpZW50JiBtZWFzdXJlcikKK2Zsb2F0IExvY2FsaXplZERhdGVDYWNoZTo6Y2FsY3Vs
YXRlTWF4aW11bVdpZHRoKERhdGVDb21wb25lbnRzVHlwZSB0eXBlLCBjb25zdCBNZWFzdXJlVGV4
dENsaWVudCYgbWVhc3VyZXIpCiB7CiAgICAgZmxvYXQgbWF4aW11bVdpZHRoID0gMDsKIApAQCAt
MTYwLDkgKzE2MSw5IEBAIGZsb2F0IExvY2FsaXplZERhdGVDYWNoZTo6Y2FsY3VsYXRlTWF4aW11
bVdpZHRoKERhdGVDb21wb25lbnRzOjpUeXBlIHR5cGUsIGNvbnN0CiAKICAgICAvLyBGb3IgZWFj
aCBtb250aCAoaW4gdGhlIEdyZWdvcmlhbiBDYWxlbmRhciksIGZvcm1hdCBhIGRhdGUgYW5kIG1l
YXN1cmUgaXRzIGxlbmd0aC4KICAgICBOU1VJbnRlZ2VyIHRvdGFsTW9udGhzVG9UZXN0ID0gMTsK
LSAgICBpZiAodHlwZSA9PSBEYXRlQ29tcG9uZW50czo6RGF0ZQotICAgICAgICB8fCB0eXBlID09
IERhdGVDb21wb25lbnRzOjpEYXRlVGltZUxvY2FsCi0gICAgICAgIHx8IHR5cGUgPT0gRGF0ZUNv
bXBvbmVudHM6Ok1vbnRoKQorICAgIGlmICh0eXBlID09IERhdGVDb21wb25lbnRzVHlwZTo6RGF0
ZQorICAgICAgICB8fCB0eXBlID09IERhdGVDb21wb25lbnRzVHlwZTo6RGF0ZVRpbWVMb2NhbAor
ICAgICAgICB8fCB0eXBlID09IERhdGVDb21wb25lbnRzVHlwZTo6TW9udGgpCiAgICAgICAgIHRv
dGFsTW9udGhzVG9UZXN0ID0gbnVtYmVyT2ZHcmVnb3JpYW5Nb250aHM7CiAgICAgZm9yIChOU1VJ
bnRlZ2VyIGkgPSAwOyBpIDwgdG90YWxNb250aHNUb1Rlc3Q7ICsraSkgewogICAgICAgICBbY29t
cG9uZW50cy5nZXQoKSBzZXRNb250aDooaSArIDEpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA1MmJmNjI1MWQ1NDlmMjNjMzc4NWEzOWQ3NDIyZTJj
NDJkNzhlODg0Li42ZjBmNDg3YzQ3M2Y1MjRjOWNiODI5MmJjODM5Mjc0ZTUxNjBjNjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC02MTIsOCArNjEy
LDggQEAgc3RhdGljIHZvaWQgYWRqdXN0SW5wdXRFbGVtZW50QnV0dG9uU3R5bGUoUmVuZGVyU3R5
bGUmIHN0eWxlLCBjb25zdCBIVE1MSW5wdXRFbGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
RG9uJ3QgYWRqdXN0IGZvciB1bnN1cHBvcnRlZCBkYXRlIGlucHV0IHR5cGVzLgotICAgIERhdGVD
b21wb25lbnRzOjpUeXBlIGRhdGVUeXBlID0gaW5wdXRFbGVtZW50LmRhdGVUeXBlKCk7Ci0gICAg
aWYgKGRhdGVUeXBlID09IERhdGVDb21wb25lbnRzOjpJbnZhbGlkIHx8IGRhdGVUeXBlID09IERh
dGVDb21wb25lbnRzOjpXZWVrKQorICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSA9IGlu
cHV0RWxlbWVudC5kYXRlVHlwZSgpOworICAgIGlmIChkYXRlVHlwZSA9PSBEYXRlQ29tcG9uZW50
c1R5cGU6OkludmFsaWQgfHwgZGF0ZVR5cGUgPT0gRGF0ZUNvbXBvbmVudHNUeXBlOjpXZWVrKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBFbmZvcmNlIHRoZSB3aWR0aCBhbmQgc2V0IHRoZSBi
b3gtc2l6aW5nIHRvIGNvbnRlbnQtYm94IHRvIG5vdCBjb25mbGljdCB3aXRoIHRoZSBwYWRkaW5n
Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>