<?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>247821</bug_id>
          
          <creation_ts>2022-11-11 11:50:41 -0800</creation_ts>
          <short_desc>[LFC][Floats] Float layout is BFC concept</short_desc>
          <delta_ts>2022-11-12 13:12:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1911878</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-11-11 11:50:41 -0800</bug_when>
    <thetext>make it BFC only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1911884</commentid>
    <comment_count>1</comment_count>
      <attachid>463494</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-11-11 12:23:45 -0800</bug_when>
    <thetext>Created attachment 463494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1911937</commentid>
    <comment_count>2</comment_count>
      <attachid>463498</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-11-11 17:13:33 -0800</bug_when>
    <thetext>Created attachment 463498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912002</commentid>
    <comment_count>3</comment_count>
      <attachid>463502</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-11-12 09:32:29 -0800</bug_when>
    <thetext>Created attachment 463502
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912022</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-11-12 12:23:50 -0800</bug_when>
    <thetext>Found 1 new test failure: media/video-seek-have-nothing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912026</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-11-12 13:11:19 -0800</bug_when>
    <thetext>Committed 256609@main (1fe3e43cf187): &lt;https://commits.webkit.org/256609@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463502.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912027</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-11-12 13:12:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/102279099&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463494</attachid>
            <date>2022-11-11 12:23:45 -0800</date>
            <delta_ts>2022-11-11 17:13:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-247821-20221111122344.patch</filename>
            <type>text/plain</type>
            <size>35555</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA5ZTQzODIxNzljZGE1NmZlYzUxZGUzYzE2YzgwMzZhOWYyYTBmY2M0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgMTEgTm92IDIwMjIgMTI6MDY6NDMgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtG
bG9hdHNdIEZsb2F0IGxheW91dCBpcyBCRkMgY29uY2VwdAogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI0NzgyMQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpG
bG9hdHMgYWx3YXlzIGJlbG9uZyB0byBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KCjEuIE9u
bHkgQmxvY2tGb3JtYXR0aW5nU3RhdGUgc2hvdWxkIGluc3RhbnRpYXRlIGEgRmxvYXRpbmdTdGF0
ZSAoSUNCIGluIG1hbnkgY2FzZXMpLgoyLiBGbG9hdGluZ1N0YXRlIHNob3VsZCBiZSBwdXNoZWQg
dG8gdGhlIElubGluZUZvcm1hdHRpbmdDb250ZXh0IGFzIHBhcnQgb2YgdGhlIGJsb2NrIGxheW91
dCBzdGF0ZSAoaW5zdGVhZCBvZiBhZGRpbmcgaXQgdG8gdGhlIElubGluZUZvcm1hdHRpbmdTdGF0
ZSkuCjMuIFdoZW4gYSBibG9jayBjb250YWluZXIgZXN0YWJsaXNoZXMgYm90aCBCRkMgYW5kIElG
Qywgd2Ugc2hvdWxkIG5vdCBza2lwIGluc3RhbnRpYXRpbmcgdGhlIGFzc29jaWF0ZWQgQkZDIChG
SVhNRSkuCgooVGhlIGludGVncmF0aW9uIElGQyBjb2RlcGF0aCBub3cgZXhwbGljaXRseSBjcmVh
dGVzIHRoZSBwYXJlbnQgQkZDIHN0YXRlLiBUaGlzIGlzIG1vcmUgaW5saW5lIHdpdGggaG93IHRo
ZSBmdWxsIExGQyBsb2dpYyB3aWxsIGxvb2sgbGlrZS4pCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6
OkZvcm1hdHRpbmdTdGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0
ZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6OmZsb2F0aW5nU3RhdGUgY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHA6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUp
OgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3Rh
dGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlVGFibGVGb3JtYXR0aW5n
U3RhdGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlRmxleEZvcm1hdHRp
bmdTdGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6RmxvYXRpbmdTdGF0ZSk6CiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmg6CihXZWJDb3JlOjpMYXlv
dXQ6OkZsb2F0aW5nU3RhdGU6OnJvb3QgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGlu
Z1N0YXRlOjpjcmVhdGUpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0dlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6OkJsb2NrRm9ybWF0dGlu
Z1N0YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z1N0YXRlOjpmbG9hdGluZ1N0YXRlIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nU3RhdGU6OmZsb2F0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tMYXlvdXRTdGF0ZS5oOgooV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0xheW91dFN0YXRlOjpmbG9hdGluZ1N0YXRlKToKKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tMYXlvdXRTdGF0ZTo6QmxvY2tMYXlvdXRTdGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaCBj
b25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9ybWF0dGluZ1N0
YXRlOjpGbGV4Rm9ybWF0dGluZ1N0YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5oOgoqIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElu
Rmxvd0NvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0SW5GbG93Q29udGVudEZvckludGVncmF0aW9uKToKKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRDb250ZW50SGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ1N0YXRlOjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3Jt
YXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdTdGF0ZTo6
VGFibGVGb3JtYXR0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6TGluZUxheW91dCk6CihX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6bGF5b3V0KToKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RDb250ZW50KToKKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwcmVwYXJlRmxvYXRpbmdTdGF0ZSk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0
YXRlLmNwcCAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0
ZS5oICAgICAgIHwgIDYgKy0tCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3Bw
ICAgICAgICAgfCA0OCArKy0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vV2ViQ29yZS9sYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nU3RhdGUuY3BwICAgfCAgNyArLS0KIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
bG9hdHMvRmxvYXRpbmdTdGF0ZS5oICB8IDEwICsrLS0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMv
Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcCB8ICAyICstCiAuLi4vYmxvY2svQmxvY2tGb3JtYXR0aW5n
U3RhdGUuY3BwICAgICAgICAgICAgfCAgNSArLQogLi4uL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1N0
YXRlLmggICAgICAgICAgICAgIHwgIDcgKystCiAuLi4vYmxvY2svQmxvY2tMYXlvdXRTdGF0ZS5o
ICAgICAgICAgICAgICAgICAgfCAxMyArKysrLQogLi4uL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuY3BwICAgICAgICAgICAgIHwgMTUgKysrKystCiAuLi4vZmxleC9GbGV4Rm9ybWF0dGluZ1N0
YXRlLmNwcCAgICAgICAgICAgICAgfCAgNCArLQogLi4uL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0
ZS5oICAgICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwICAgICAgICB8IDI2ICsrKystLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaCAgICAgICAgICB8ICA0ICstCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRp
bmdTdGF0ZS5jcHAgICAgICAgICAgfCAgNCArLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
U3RhdGUuaCAgICAgICAgICAgIHwgIDIgKy0KIC4uLi90YWJsZS9UYWJsZUZvcm1hdHRpbmdTdGF0
ZS5jcHAgICAgICAgICAgICB8ICA0ICstCiAuLi4vdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUu
aCAgICAgICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuY3BwICAgIHwgIDkgKystLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuaCAgICAgIHwgIDEgKwogMjAgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwg
OTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNw
cAppbmRleCAwNTVlMGQzMjRiOWQuLmYwYWMwNGI5ZTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdTdGF0ZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKIAotI2luY2x1ZGUgIkZsb2F0aW5n
U3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3hHZW9tZXRyeS5oIgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM1LDkgKzM0LDggQEAgbmFtZXNwYWNlIExheW91dCB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChGb3JtYXR0aW5nU3RhdGUpOwogCi1Gb3Jt
YXR0aW5nU3RhdGU6OkZvcm1hdHRpbmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0ZT4mJiBmbG9hdGlu
Z1N0YXRlLCBUeXBlIHR5cGUsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKK0Zvcm1hdHRpbmdT
dGF0ZTo6Rm9ybWF0dGluZ1N0YXRlKFR5cGUgdHlwZSwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
KQogICAgIDogbV9sYXlvdXRTdGF0ZShsYXlvdXRTdGF0ZSkKLSAgICAsIG1fZmxvYXRpbmdTdGF0
ZShXVEZNb3ZlKGZsb2F0aW5nU3RhdGUpKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggN2JmZjI0OGYwZTRiLi4yZmNj
ZWViZjZhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTMz
LDE1ICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAog
Y2xhc3MgQm94OwotY2xhc3MgRmxvYXRpbmdTdGF0ZTsKIGVudW0gY2xhc3MgU3R5bGVEaWZmOwog
CiBjbGFzcyBGb3JtYXR0aW5nU3RhdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvcm1h
dHRpbmdTdGF0ZSk7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChGb3JtYXR0aW5nU3RhdGUp
OwogcHVibGljOgotICAgIEZsb2F0aW5nU3RhdGUmIGZsb2F0aW5nU3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2Zsb2F0aW5nU3RhdGU7IH0KLQogICAgIHZvaWQgbWFya05lZWRzTGF5b3V0KGNvbnN0
IEJveCYsIFN0eWxlRGlmZik7CiAgICAgYm9vbCBuZWVkc0xheW91dChjb25zdCBCb3gmKTsKIApA
QCAtNjksMTIgKzY2LDExIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGVudW0gY2xhc3Mg
VHlwZSB7IEJsb2NrLCBJbmxpbmUsIFRhYmxlLCBGbGV4IH07Ci0gICAgRm9ybWF0dGluZ1N0YXRl
KFJlZjxGbG9hdGluZ1N0YXRlPiYmLCBUeXBlLCBMYXlvdXRTdGF0ZSYpOworICAgIEZvcm1hdHRp
bmdTdGF0ZShUeXBlLCBMYXlvdXRTdGF0ZSYpOwogICAgIH5Gb3JtYXR0aW5nU3RhdGUoKTsKIAog
cHJpdmF0ZToKICAgICBMYXlvdXRTdGF0ZSYgbV9sYXlvdXRTdGF0ZTsKLSAgICBSZWY8RmxvYXRp
bmdTdGF0ZT4gbV9mbG9hdGluZ1N0YXRlOwogICAgIEhhc2hNYXA8Y29uc3QgQm94KiwgSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cz4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQm94ZXM7
CiAgICAgc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBtX2ludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHM7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgV2Vha0xpc3RIYXNo
U2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCBjZjhmNjE1ZDhkY2Iu
LjgxNDkyODBlZmFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC0y
OCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1
ZGUgIkZsZXhGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCiAj
aW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKQEAgLTE1NSw3MSArMTU0LDM0IEBAIEZs
ZXhGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpmb3JtYXR0aW5nU3RhdGVGb3JGbGV4Rm9y
bWF0dGluZ0NvbnRleHQoY29uc3QKIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6
OmVuc3VyZUlubGluZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QpCiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxp
c2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpOwotCi0gICAgYXV0byBjcmVhdGUgPSBbJl0g
ewotICAgICAgICAvLyBJZiB0aGUgYmxvY2sgY29udGFpbmVyIGJveCB0aGF0IGluaXRpYXRlcyB0
aGlzIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgYWxzbyBlc3RhYmxpc2hlcyBhIGJsb2NrIGNv
bnRleHQsIHRoZSBmbG9hdHMgb3V0c2lkZSBvZiB0aGUgZm9ybWF0dGluZyByb290Ci0gICAgICAg
IC8vIHNob3VsZCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGNvbnRlbnQgaW5zaWRlLgotICAgICAg
ICAvLyA8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+PC9kaXY+PGRpdiBzdHlsZT0ib3ZlcmZsb3c6
IGhpZGRlbiI+IDwtIGlzIGEgbm9uLWludHJ1c2l2ZSBmbG9hdCwgYmVjYXVzZSBvdmVyZmxvdzog
aGlkZGVuIHRyaWdnZXJzIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuPC9kaXY+Ci0gICAg
ICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KCkgfHwgZm9ybWF0dGluZ0NvbnRleHRSb290LmlzSW5saW5lSW50ZWdyYXRpb25Sb290
KCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290KSwgKnRo
aXMpOwotCi0gICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBpbmhl
cml0cyB0aGUgZmxvYXRzIGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCi0gICAg
ICAgIC8vIEZpbmQgdGhlIGZvcm1hdHRpbmcgc3RhdGUgaW4gd2hpY2ggdGhpcyBmb3JtYXR0aW5n
IHJvb3QgbGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNyZWF0ZXMgYW5kIHVzZSBpdHMgZmxvYXRpbmcg
c3RhdGUuCi0gICAgICAgIGF1dG8gcGFyZW50Rm9ybWF0dGluZ1N0YXRlID0gWyZdICgpIC0+IEZv
cm1hdHRpbmdTdGF0ZSYgewotICAgICAgICAgICAgZm9yIChhdXRvJiBjb250YWluaW5nQmxvY2sg
OiBjb250YWluaW5nQmxvY2tDaGFpbihmb3JtYXR0aW5nQ29udGV4dFJvb3QpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9jay5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdTdGF0ZUZvckZv
cm1hdHRpbmdDb250ZXh0KGNvbnRhaW5pbmdCbG9jayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXR0aW5n
U3RhdGVGb3JGb3JtYXR0aW5nQ29udGV4dChGb3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbENvbnRh
aW5pbmdCbG9jayhmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgfTsKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGb3JtYXR0aW5n
U3RhdGUoKS5mbG9hdGluZ1N0YXRlKCksICp0aGlzKTsKLSAgICB9OwotCi0gICAgcmV0dXJuICpt
X2lubGluZUZvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNy
ZWF0ZSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqbV9pbmxpbmVGb3JtYXR0aW5nU3Rh
dGVzLmVuc3VyZSgmZm9ybWF0dGluZ0NvbnRleHRSb290LCBbJl0geyByZXR1cm4gbWFrZVVuaXF1
ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KCp0aGlzKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQog
CiBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUJsb2NrRm9ybWF0dGlu
Z1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKIHsKICAgICBB
U1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dCgpKTsKLQotICAgIGF1dG8gY3JlYXRlID0gWyZdIHsKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywg
Zm9ybWF0dGluZ0NvbnRleHRSb290KSwgKnRoaXMpOwotICAgIH07Ci0KLSAgICByZXR1cm4gKm1f
YmxvY2tGb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ0NvbnRleHRSb290LCBjcmVh
dGUpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKm1fYmxvY2tGb3JtYXR0aW5nU3RhdGVz
LmVuc3VyZSgmZm9ybWF0dGluZ0NvbnRleHRSb290LCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxC
bG9ja0Zvcm1hdHRpbmdTdGF0ZT4oKnRoaXMsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7IH0pLml0
ZXJhdG9yLT52YWx1ZTsKIH0KIAogVGFibGVGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpl
bnN1cmVUYWJsZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpCiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hl
c1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0KLSAgICBhdXRvIGNyZWF0ZSA9IFsmXSB7Ci0g
ICAgICAgIC8vIFRhYmxlIGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBu
ZXcgZmxvYXRpbmcgc3RhdGUgLWFuZCBpdCBzdGF5cyBlbXB0eS4KLSAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhp
cywgZm9ybWF0dGluZ0NvbnRleHRSb290KSwgKnRoaXMsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7
Ci0gICAgfTsKLQotICAgIHJldHVybiAqbV90YWJsZUZvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIGNyZWF0ZSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVy
biAqbV90YWJsZUZvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nQ29udGV4dFJvb3Qs
IFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPFRhYmxlRm9ybWF0dGluZ1N0YXRlPigqdGhpcywgZm9y
bWF0dGluZ0NvbnRleHRSb290KTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiBGbGV4Rm9ybWF0
dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZW5zdXJlRmxleEZvcm1hdHRpbmdTdGF0ZShjb25zdCBF
bGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCiB7CiAgICAgQVNTRVJUKGZvcm1hdHRp
bmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0ZsZXhGb3JtYXR0aW5nQ29udGV4dCgpKTsKIAotICAg
IGF1dG8gY3JlYXRlID0gWyZdIHsKLSAgICAgICAgLy8gRmxleCBmb3JtYXR0aW5nIGNvbnRleHQg
YWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0aW5nIHN0YXRlIC1hbmQgaXQgc3RheXMgZW1w
dHkuCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZsZXhGb3JtYXR0aW5nU3RhdGU+KEZsb2F0
aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290KSwgKnRoaXMpOwot
ICAgIH07Ci0KICAgICBpZiAoaXNGbGV4Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbigpKSB7
CiAgICAgICAgIGlmICghbV9yb290RmxleEZvcm1hdHRpbmdTdGF0ZUZvckludGVncmF0aW9uKSB7
CiAgICAgICAgICAgICBBU1NFUlQoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCA9PSBtX3Jvb3RDb250
YWluZXIucHRyKCkpOwotICAgICAgICAgICAgbV9yb290RmxleEZvcm1hdHRpbmdTdGF0ZUZvcklu
dGVncmF0aW9uID0gY3JlYXRlKCk7CisgICAgICAgICAgICBtX3Jvb3RGbGV4Rm9ybWF0dGluZ1N0
YXRlRm9ySW50ZWdyYXRpb24gPSBtYWtlVW5pcXVlPEZsZXhGb3JtYXR0aW5nU3RhdGU+KCp0aGlz
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKm1fcm9vdEZsZXhGb3JtYXR0aW5nU3RhdGVG
b3JJbnRlZ3JhdGlvbjsKICAgICB9CiAKLSAgICByZXR1cm4gKm1fZmxleEZvcm1hdHRpbmdTdGF0
ZXMuZW5zdXJlKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNyZWF0ZSkuaXRlcmF0b3ItPnZhbHVl
OworICAgIHJldHVybiAqbV9mbGV4Rm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdD
b250ZXh0Um9vdCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8RmxleEZvcm1hdHRpbmdTdGF0ZT4o
KnRoaXMpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgTGF5b3V0U3RhdGU6OmRlc3Ry
b3lJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5j
cHAKaW5kZXggYmU1MmI1NTM4MjA4Li4zNTgxYTUxOTI3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcApAQCAtNDksMTEgKzQ5LDEyIEBAIEZs
b2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6RmxvYXRJdGVtKFBvc2l0aW9uIHBvc2l0aW9uLCBCb3hH
ZW9tZXRyeSBhYnNvbHV0ZUJveEdlCiB7CiB9CiAKLUZsb2F0aW5nU3RhdGU6OkZsb2F0aW5nU3Rh
dGUoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QpCitGbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgRWxlbWVudEJveCYgYmxvY2tGb3JtYXR0aW5nQ29udGV4dFJvb3Qp
CiAgICAgOiBtX2xheW91dFN0YXRlKGxheW91dFN0YXRlKQotICAgICwgbV9mb3JtYXR0aW5nQ29u
dGV4dFJvb3QoZm9ybWF0dGluZ0NvbnRleHRSb290KQotICAgICwgbV9pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSkKKyAgICAsIG1fYmxvY2tGb3JtYXR0aW5nQ29udGV4dFJvb3QoYmxvY2tGb3JtYXR0aW5n
Q29udGV4dFJvb3QpCisgICAgLCBtX2lzTGVmdFRvUmlnaHREaXJlY3Rpb24oYmxvY2tGb3JtYXR0
aW5nQ29udGV4dFJvb3Quc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiB7CisgICAg
QVNTRVJUKGJsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpKTsKIH0KIAogdm9pZCBGbG9hdGluZ1N0YXRlOjphcHBlbmQoRmxvYXRJdGVt
IG5ld0Zsb2F0SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMv
RmxvYXRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0
YXRlLmgKaW5kZXggZDhiZGQxY2YxY2NhLi44NDk5YzE5N2M1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5j
bHVkZSAiTGF5b3V0RWxlbWVudEJveC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDEyICs0MywxMiBAQCBjbGFzcyBSZWN0OwogLy8gRmxvYXRp
bmdTdGF0ZSBob2xkcyB0aGUgZmxvYXRpbmcgYm94ZXMgZm9yIEJGQyB1c2luZyB0aGUgQkZDJ3Mg
aW5saW5lIGRpcmVjdGlvbi4KIC8vIEZsb2F0aW5nU3RhdGUgbWF5IGJlIGluaGVyaXRlZCBieSBu
ZXN0ZWQgSUZDcyB3aXRoIG1pc21hdGFjaGluZyBpbmxpbmUgZGlyZWN0aW9uLiBJbiBzdWNoIGNh
c2VzIGZsb2F0aW5nIGJveGVzCiAvLyBhcmUgYWRkZWQgdG8gdGhlIEZsb2F0aW5nU3RhdGUgYXMg
aWYgdGhleSBoYWQgbWF0Y2hpbmcgaW5saW5lIGRpcmVjdGlvbi4KLWNsYXNzIEZsb2F0aW5nU3Rh
dGUgOiBwdWJsaWMgUmVmQ291bnRlZDxGbG9hdGluZ1N0YXRlPiB7CitjbGFzcyBGbG9hdGluZ1N0
YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZsb2F0aW5nU3RhdGUpOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RmxvYXRpbmdTdGF0ZT4gY3JlYXRlKExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IEZsb2F0aW5nU3RhdGUobGF5b3V0U3RhdGUsIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCkpOyB9CisgICAgRmxvYXRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYsIGNvbnN0IEVsZW1l
bnRCb3gmIGJsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290KTsKIAotICAgIGNvbnN0IEVsZW1lbnRC
b3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsgfQorICAg
IGNvbnN0IEVsZW1lbnRCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHRSb290OyB9CiAKICAgICBjbGFzcyBGbG9hdEl0ZW0gewogICAgIHB1YmxpYzoKQEAg
LTkyLDExICs5MSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZs
b2F0aW5nQ29udGV4dDsKLSAgICBGbG9hdGluZ1N0YXRlKExheW91dFN0YXRlJiwgY29uc3QgRWxl
bWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFN0YXRlOyB9CiAKICAgICBMYXlvdXRTdGF0
ZSYgbV9sYXlvdXRTdGF0ZTsKLSAgICBDaGVja2VkUmVmPGNvbnN0IEVsZW1lbnRCb3g+IG1fZm9y
bWF0dGluZ0NvbnRleHRSb290OworICAgIENoZWNrZWRSZWY8Y29uc3QgRWxlbWVudEJveD4gbV9i
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Um9vdDsKICAgICBGbG9hdExpc3QgbV9mbG9hdHM7CiAgICAg
ZW51bSBjbGFzcyBQb3NpdGlvblR5cGUgewogICAgICAgICBMZWZ0ID0gMSA8PCAwLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5n
R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDM3NGM5M2ZjMDRlZC4uMzEwZDY2ODYyNzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC03OTQsNyArNzk0LDcgQEAgQ29udGVu
dEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29u
c3QgQm94JiBsYXlvdXRCb3gKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIChxdWly
az8pIGJlaGF2aW9yIHNpbmNlIHRoZSBkb2N1bWVudCBib3ggaXMgbm90IGEgZm9ybWF0dGluZyBj
b250ZXh0IHJvb3QgYW5kCiAgICAgICAgICAgICAvLyBhbGwgdGhlIGZsb2F0IGJveGVzIGVuZCB1
cCBhdCB0aGUgSUNCIGxldmVsLgogICAgICAgICAgICAgYXV0byYgaW5pdGlhbENvbnRhaW5pbmdC
bG9jayA9IEZvcm1hdHRpbmdDb250ZXh0Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrKGRvY3VtZW50
Qm94KTsKLSAgICAgICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0
IHsgZm9ybWF0dGluZ0NvbnRleHQoKSwgbGF5b3V0U3RhdGUoKS5mb3JtYXR0aW5nU3RhdGVGb3JG
b3JtYXR0aW5nQ29udGV4dChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKS5mbG9hdGluZ1N0YXRlKCkg
fTsKKyAgICAgICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsg
Zm9ybWF0dGluZ0NvbnRleHQoKSwgZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91
dFN0YXRlKCkuZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ0NvbnRleHQoaW5pdGlhbENvbnRh
aW5pbmdCbG9jaykpLmZsb2F0aW5nU3RhdGUoKSB9OwogICAgICAgICAgICAgaWYgKGF1dG8gZmxv
YXRCb3R0b20gPSBmbG9hdGluZ0NvbnRleHQuYm90dG9tKCkpIHsKICAgICAgICAgICAgICAgICBi
b3R0b20gPSBzdGQ6Om1heDxMYXlvdXRVbml0PigqZmxvYXRCb3R0b20sIGJvdHRvbSk7CiAgICAg
ICAgICAgICAgICAgYXV0byBmbG9hdFRvcCA9IGZsb2F0aW5nQ29udGV4dC50b3AoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tGb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXggZGUyY2MzNjJiYzZj
Li4zODk1YzVjNWFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nU3Rh
dGUuY3BwCkBAIC0zMyw4ICszMyw5IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoQmxvY2tGb3JtYXR0aW5nU3RhdGUpOwogCi1CbG9ja0Zvcm1hdHRp
bmdTdGF0ZTo6QmxvY2tGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+JiYgZmxvYXRp
bmdTdGF0ZSwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQotICAgIDogRm9ybWF0dGluZ1N0YXRl
KFdURk1vdmUoZmxvYXRpbmdTdGF0ZSksIFR5cGU6OkJsb2NrLCBsYXlvdXRTdGF0ZSkKK0Jsb2Nr
Rm9ybWF0dGluZ1N0YXRlOjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEVsZW1lbnRCb3gmIGJsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290KQorICAg
IDogRm9ybWF0dGluZ1N0YXRlKFR5cGU6OkJsb2NrLCBsYXlvdXRTdGF0ZSkKKyAgICAsIG1fZmxv
YXRpbmdTdGF0ZShsYXlvdXRTdGF0ZSwgYmxvY2tGb3JtYXR0aW5nQ29udGV4dFJvb3QpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBjNjg4MmNk
MDlmYzguLjU4ZWQwMGIxZDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
U3RhdGUuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZs
b2F0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KQEAgLTM2LDkgKzM3LDEy
IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogY2xhc3MgQmxvY2tGb3JtYXR0aW5nU3RhdGUgOiBwdWJs
aWMgRm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEJsb2NrRm9y
bWF0dGluZ1N0YXRlKTsKIHB1YmxpYzoKLSAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZShSZWY8Rmxv
YXRpbmdTdGF0ZT4mJiwgTGF5b3V0U3RhdGUmKTsKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZShM
YXlvdXRTdGF0ZSYsIGNvbnN0IEVsZW1lbnRCb3gmIGJsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290
KTsKICAgICB+QmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKIAorICAgIGNvbnN0IEZsb2F0aW5nU3Rh
dGUmIGZsb2F0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nU3RhdGU7IH0KKyAg
ICBGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKCkgeyByZXR1cm4gbV9mbG9hdGluZ1N0YXRl
OyB9CisKICAgICB2b2lkIHNldFVzZWRWZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiB1c2VkVmVydGljYWxNYXJnaW4pIHsgbV91c2Vk
VmVydGljYWxNYXJnaW5zLnNldChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNhbE1hcmdpbik7IH0KICAg
ICBVc2VkVmVydGljYWxNYXJnaW4gdXNlZFZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0
Qm94KSBjb25zdCB7IHJldHVybiBtX3VzZWRWZXJ0aWNhbE1hcmdpbnMuZ2V0KGxheW91dEJveCk7
IH0KICAgICBib29sIGhhc1VzZWRWZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QgeyByZXR1cm4gbV91c2VkVmVydGljYWxNYXJnaW5zLmNvbnRhaW5zKGxheW91dEJveCk7
IH0KQEAgLTQ4LDYgKzUyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ2xlYXJhbmNlKGNvbnN0
IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX2NsZWFyYW5jZVNldC5jb250YWlucyhs
YXlvdXRCb3gpOyB9CiAKIHByaXZhdGU6CisgICAgRmxvYXRpbmdTdGF0ZSBtX2Zsb2F0aW5nU3Rh
dGU7CiAgICAgSGFzaE1hcDxDaGVja2VkUmVmPGNvbnN0IEJveD4sIFVzZWRWZXJ0aWNhbE1hcmdp
bj4gbV91c2VkVmVydGljYWxNYXJnaW5zOwogICAgIEhhc2hTZXQ8Q2hlY2tlZFJlZjxjb25zdCBC
b3g+PiBtX2NsZWFyYW5jZVNldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tMYXlvdXRTdGF0ZS5o
CmluZGV4IDhjMzYxZGQzNDI1ZC4uZTYxMzUwYmVkZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTGF5b3V0U3RhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
TGF5b3V0U3RhdGUuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkZsb2F0aW5nU3RhdGUuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExh
eW91dCB7CiAKQEAgLTMzLDIwICszNSwyOSBAQCBjbGFzcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OwogLy8gVGhpcyBjbGFzcyBob2xkcyBibG9jayBsZXZlbCBpbmZvcm1hdGlvbiBzaGFyZWQgYWNy
b3NzIGNoaWxkIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHRzLiAKIGNsYXNzIEJsb2NrTGF5b3V0
U3RhdGUgewogcHVibGljOgorICAgIEJsb2NrTGF5b3V0U3RhdGUoRmxvYXRpbmdTdGF0ZSYpOwor
CisgICAgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSgpIHsgcmV0dXJuIG1fZmxvYXRpbmdT
dGF0ZTsgfQorCiAgICAgc3RydWN0IExpbmVDbGFtcCB7CiAgICAgICAgIHNpemVfdCBtX21heGlt
dW1OdW1iZXJPZkxpbmVzIHsgMCB9OwogICAgICAgICBzaXplX3QgbV9udW1iZXJPZlZpc2libGVM
aW5lcyB7IDAgfTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8TGluZUNsYW1wPiBsaW5lQ2xh
bXAoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDbGFtcDsgfQogCi0gICAgLy8gRklYTUU6IE1vdmUg
RmxvYXRpbmdTdGF0ZSBoZXJlLgogcHJpdmF0ZToKICAgICBmcmllbmQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDsKIAogICAgIHZvaWQgc2V0TGluZUNsYW1wKExpbmVDbGFtcCBsaW5lQ2xhbXApIHsg
bV9saW5lQ2xhbXAgPSBsaW5lQ2xhbXA7IH0KIAorICAgIEZsb2F0aW5nU3RhdGUmIG1fZmxvYXRp
bmdTdGF0ZTsKICAgICBzdGQ6Om9wdGlvbmFsPExpbmVDbGFtcD4gbV9saW5lQ2xhbXA7CiB9Owog
CitpbmxpbmUgQmxvY2tMYXlvdXRTdGF0ZTo6QmxvY2tMYXlvdXRTdGF0ZShGbG9hdGluZ1N0YXRl
JiBmbG9hdGluZ1N0YXRlKQorICAgIDogbV9mbG9hdGluZ1N0YXRlKGZsb2F0aW5nU3RhdGUpCit7
Cit9CisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmlu
ZGV4IGIzOWE0NGZmMTFlZi4uMjc3YTM4MmJkYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJGbG9hdGlu
Z1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0Qm94LmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkxheW91dEVsZW1lbnRCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRJbml0
aWFsQ29udGFpbmluZ0Jsb2NrLmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUg
IlJlbmRlclN0eWxlLmgiCiAKQEAgLTQxMSw4ICs0MTMsMTcgQEAgYm9vbCBCbG9ja01hcmdpbkNv
bGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IEVsZW1lbnRCb3gmIGxheW91dEJv
eCkgY28KICAgICAgICAgICAgICAgICBpZiAoIWlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygp
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICAgIC8vIEFueSBmbG9hdCBib3ggaW4gdGhpcyBmb3JtYXR0aW5nIGNvbnRleHQgcHJldmVu
dHMgY29sbGFwc2luZyB0aHJvdWdoLgotICAgICAgICAgICAgICAgIGF1dG8mIGZsb2F0cyA9IGlu
bGluZUZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCkuZmxvYXRzKCk7Ci0gICAgICAgICAg
ICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBmbG9hdHMpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIHBhcmVudEJsb2NrRm9ybWF0dGluZ1N0YXRlID0gWyZdICgpIC0+IEJsb2NrRm9ybWF0dGlu
Z1N0YXRlJiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQmxvY2tGb3JtYXR0aW5nQ29udGV4dChsYXlv
dXRCb3gpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGNvbnRhaW5pbmdCbG9jayA6
IGNvbnRhaW5pbmdCbG9ja0NoYWluKGxheW91dEJveCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjb250YWluaW5nQmxvY2suZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlLmZvcm1h
dHRpbmdTdGF0ZUZvckJsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29udGFpbmluZ0Jsb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlLmZvcm1hdHRpbmdT
dGF0ZUZvckJsb2NrRm9ybWF0dGluZ0NvbnRleHQoRm9ybWF0dGluZ0NvbnRleHQ6OmluaXRpYWxD
b250YWluaW5nQmxvY2sobGF5b3V0Qm94KSk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IHBhcmVudEJsb2NrRm9ybWF0dGluZ1N0YXRl
KCkuZmxvYXRpbmdTdGF0ZSgpLmZsb2F0cygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChm
bG9hdEl0ZW0uaXNJbkZvcm1hdHRpbmdDb250ZXh0T2YobGF5b3V0Qm94KSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1h
dHRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXggNjM4ZDZmMGRhNWZmLi4zYjNjMTQx
YTk1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvZmxleC9GbGV4Rm9ybWF0dGluZ1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5jcHAKQEAgLTMz
LDggKzMzLDggQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChGbGV4Rm9ybWF0dGluZ1N0YXRlKTsKIAotRmxleEZvcm1hdHRpbmdTdGF0ZTo6RmxleEZv
cm1hdHRpbmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0ZT4mJiBmbG9hdGluZ1N0YXRlLCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUpCi0gICAgOiBGb3JtYXR0aW5nU3RhdGUoV1RGTW92ZShmbG9hdGlu
Z1N0YXRlKSwgVHlwZTo6RmxleCwgbGF5b3V0U3RhdGUpCitGbGV4Rm9ybWF0dGluZ1N0YXRlOjpG
bGV4Rm9ybWF0dGluZ1N0YXRlKExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKKyAgICA6IEZvcm1h
dHRpbmdTdGF0ZShUeXBlOjpGbGV4LCBsYXlvdXRTdGF0ZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0
aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxl
eC9GbGV4Rm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggZDE2OWU0ODI0ZDgyLi4yYzc3MzFlYzFjOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxl
eC9GbGV4Rm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nU3RhdGUuaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNsYXNzIEZsZXhGb3JtYXR0aW5nU3RhdGUgOiBwdWJsaWMg
Rm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZsZXhGb3JtYXR0
aW5nU3RhdGUpOwogcHVibGljOgotICAgIEZsZXhGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5n
U3RhdGU+JiYsIExheW91dFN0YXRlJik7CisgICAgRmxleEZvcm1hdHRpbmdTdGF0ZShMYXlvdXRT
dGF0ZSYpOwogICAgIH5GbGV4Rm9ybWF0dGluZ1N0YXRlKCk7CiAKICAgICBjb25zdCBhdXRvJiBs
aW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA2ZTQ5NTVkY2JlNjEuLjA2NTJhYmE1
YTk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcApAQCAtMTQwLDE5ICsxNDAsMjIgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0SW5GbG93Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnQKICAgICBj
b2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAKICAgICBhdXRvJiBpbmxpbmVJdGVtcyA9IGZvcm1h
dHRpbmdTdGF0ZSgpLmlubGluZUl0ZW1zKCk7Ci0gICAgbGluZUxheW91dChpbmxpbmVJdGVtcywg
eyAwLCBpbmxpbmVJdGVtcy5zaXplKCkgfSwgeyBjb25zdHJhaW50cywgeyB9IH0pOworICAgIC8v
IEZJWE1FOiBMZXQgdGhlIGNhbGxlciBwYXNzIGluIHRoZSBibG9jayBsYXlvdXQgc3RhdGUuIAor
ICAgIGF1dG8gZmxvYXRpbmdTdGF0ZSA9IEZsb2F0aW5nU3RhdGUgeyBsYXlvdXRTdGF0ZSgpLCBG
b3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbENvbnRhaW5pbmdCbG9jayhyb290KCkpIH07CisgICAg
YXV0byBibG9ja0xheW91dFN0YXRlID0gQmxvY2tMYXlvdXRTdGF0ZSB7IGZsb2F0aW5nU3RhdGUg
fTsKKyAgICBsaW5lTGF5b3V0KGlubGluZUl0ZW1zLCB7IDAsIGlubGluZUl0ZW1zLnNpemUoKSB9
LCB7IGNvbnN0cmFpbnRzLCB7IH0gfSwgYmxvY2tMYXlvdXRTdGF0ZSk7CiAgICAgY29tcHV0ZVN0
YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChmb3JtYXR0aW5nU3RhdGUoKS5vdXRPZkZs
b3dCb3hlcygpLCB7IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3Ry
YWludHMubG9naWNhbFRvcCgpIH0pOwogICAgIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
Y29tcHV0ZUlzRmlyc3RJc0xhc3RCb3hGb3JJbmxpbmVDb250ZW50KGZvcm1hdHRpbmdTdGF0ZSgp
LmJveGVzKCkpOwogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbRW5kXSAtPiBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGZvcm1hdHRp
bmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudEZvckludGVncmF0aW9uKGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMsIGNvbnN0IEJsb2NrTGF5b3V0U3RhdGUm
KQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudEZvcklu
dGVncmF0aW9uKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMs
IEJsb2NrTGF5b3V0U3RhdGUmIGJsb2NrTGF5b3V0U3RhdGUpCiB7CiAgICAgaW52YWxpZGF0ZUZv
cm1hdHRpbmdTdGF0ZSgpOwogICAgIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKICAgICBhdXRv
JiBpbmxpbmVJdGVtcyA9IGZvcm1hdHRpbmdTdGF0ZSgpLmlubGluZUl0ZW1zKCk7CiAgICAgYXV0
byBpbmxpbmVDb25zdHJhaW50cyA9IGRvd25jYXN0PENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVu
dD4oY29uc3RyYWludHMpOwotICAgIGxpbmVMYXlvdXQoaW5saW5lSXRlbXMsIHsgMCwgaW5saW5l
SXRlbXMuc2l6ZSgpIH0sIGlubGluZUNvbnN0cmFpbnRzKTsKKyAgICBsaW5lTGF5b3V0KGlubGlu
ZUl0ZW1zLCB7IDAsIGlubGluZUl0ZW1zLnNpemUoKSB9LCBpbmxpbmVDb25zdHJhaW50cywgYmxv
Y2tMYXlvdXRTdGF0ZSk7CiAgICAgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29u
dGVudChmb3JtYXR0aW5nU3RhdGUoKS5vdXRPZkZsb3dCb3hlcygpLCB7IGlubGluZUNvbnN0cmFp
bnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgaW5saW5lQ29uc3RyYWludHMubG9naWNhbFRv
cCgpIH0pOwogICAgIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y29tcHV0ZUlzRmlyc3RJ
c0xhc3RCb3hGb3JJbmxpbmVDb250ZW50KGZvcm1hdHRpbmdTdGF0ZSgpLmJveGVzKCkpOwogfQpA
QCAtMTc0LDI0ICsxNzcsMTEgQEAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmEKIAogTGF5b3V0VW5p
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6dXNlZENvbnRlbnRIZWlnaHQoKSBjb25zdAogewot
ICAgIC8vIDEwLjYuNyAnQXV0bycgaGVpZ2h0cyBmb3IgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0
IHJvb3RzCi0KLSAgICAvLyBJZiBpdCBvbmx5IGhhcyBpbmxpbmUtbGV2ZWwgY2hpbGRyZW4sIHRo
ZSBoZWlnaHQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHRvcCBvZiB0aGUgdG9wbW9zdCBs
aW5lIGJveCBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgYm90dG9tbW9zdCBsaW5lIGJveC4KLQotICAg
IC8vIEluIGFkZGl0aW9uLCBpZiB0aGUgZWxlbWVudCBoYXMgYW55IGZsb2F0aW5nIGRlc2NlbmRh
bnRzIHdob3NlIGJvdHRvbSBtYXJnaW4gZWRnZSBpcyBiZWxvdyB0aGUgZWxlbWVudCdzIGJvdHRv
bSBjb250ZW50IGVkZ2UsCi0gICAgLy8gdGhlbiB0aGUgaGVpZ2h0IGlzIGluY3JlYXNlZCB0byBp
bmNsdWRlIHRob3NlIGVkZ2VzLiBPbmx5IGZsb2F0cyB0aGF0IHBhcnRpY2lwYXRlIGluIHRoaXMg
YmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGFyZSB0YWtlbgotICAgIC8vIGludG8gYWNjb3VudCwg
ZS5nLiwgZmxvYXRzIGluc2lkZSBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZGVzY2VuZGFudHMgb3Ig
b3RoZXIgZmxvYXRzIGFyZSBub3QuCiAgICAgYXV0byYgbGluZXMgPSBmb3JtYXR0aW5nU3RhdGUo
KS5saW5lcygpOwogICAgIC8vIEV2ZW4gZW1wdHkgY29udGVudCBnZW5lcmF0ZXMgYSBsaW5lLgog
ICAgIEFTU0VSVCghbGluZXMuaXNFbXB0eSgpKTsKICAgICBhdXRvIHRvcCA9IExheW91dFVuaXQg
eyBsaW5lcy5maXJzdCgpLnRvcCgpIH07CiAgICAgYXV0byBib3R0b20gPSBMYXlvdXRVbml0IHsg
bGluZXMubGFzdCgpLmJvdHRvbSgpICsgZm9ybWF0dGluZ1N0YXRlKCkuY2xlYXJHYXBBZnRlckxh
c3RMaW5lKCkgfTsKLQotICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0
IHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSB9OwotICAgIGlmIChh
dXRvIGZsb2F0Qm90dG9tID0gZmxvYXRpbmdDb250ZXh0LmJvdHRvbSgpKSB7Ci0gICAgICAgIGJv
dHRvbSA9IHN0ZDo6bWF4KCpmbG9hdEJvdHRvbSwgYm90dG9tKTsKLSAgICAgICAgdG9wID0gc3Rk
OjptaW4oKmZsb2F0aW5nQ29udGV4dC50b3AoKSwgdG9wKTsKLSAgICB9CiAgICAgcmV0dXJuIGJv
dHRvbSAtIHRvcDsKIH0KIApAQCAtMjEyLDcgKzIwMiw3IEBAIHN0YXRpYyBzaXplX3QgaW5kZXhP
ZkZpcnN0SW5saW5lSXRlbUZvck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVu
dCYKICAgICByZXR1cm4gbGluZUNvbnRlbnRSYW5nZS5lbmQ7CiB9CiAKLXZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBjb25z
dCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBD
b25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIGNvbnN0
IExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIGNvbnN0IENv
bnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIEJsb2NrTGF5b3V0U3RhdGUm
IGJsb2NrTGF5b3V0U3RhdGUpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dFJhbmdlLmlzRW1w
dHkoKSk7CiAKQEAgLTIyMiw3ICsyMTIsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsaW5lTGF5b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgY29uc3QgTGluZUJ1aQogICAg
IGF1dG8gbGluZUxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgY29uc3RyYWludHMubG9n
aWNhbFRvcCgpIH07CiAgICAgYXV0byBwcmV2aW91c0xpbmUgPSBzdGQ6Om9wdGlvbmFsPExpbmVC
dWlsZGVyOjpQcmV2aW91c0xpbmU+IHsgfTsKICAgICBhdXRvIHByZXZpb3VzTGluZUxhc3RJbmxp
bmVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4geyB9OwotICAgIGF1dG8mIGZsb2F0
aW5nU3RhdGUgPSBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOworICAgIGF1dG8mIGZs
b2F0aW5nU3RhdGUgPSBibG9ja0xheW91dFN0YXRlLmZsb2F0aW5nU3RhdGUoKTsKICAgICBhdXRv
IGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9hdGluZ1N0YXRl
IH07CiAgICAgYXV0byBmaXJzdElubGluZUl0ZW1OZWVkc0xheW91dCA9IG5lZWRzTGF5b3V0UmFu
Z2Uuc3RhcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IDM5NmYyYjViMGUxYi4uZGVjYTgzMzc1ZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTU3LDExICs1NywxMSBAQCBwdWJs
aWM6CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5JiBmb3JtYXR0aW5nR2VvbWV0
cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdHZW9tZXRyeTsgfQog
ICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdRdWlya3MmIGZvcm1hdHRpbmdRdWlya3MoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdRdWlya3M7IH0KIAotICAgIHZvaWQg
bGF5b3V0SW5GbG93Q29udGVudEZvckludGVncmF0aW9uKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudCYsIGNvbnN0IEJsb2NrTGF5b3V0U3RhdGUmKTsKKyAgICB2b2lkIGxheW91dElu
Rmxvd0NvbnRlbnRGb3JJbnRlZ3JhdGlvbihjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmLCBCbG9ja0xheW91dFN0YXRlJik7CiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBj
b21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JJbnRlZ3JhdGlvbigpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgbGluZUxheW91dChJbmxpbmVJdGVtcyYsIGNvbnN0IExpbmVCdWlsZGVy
OjpJbmxpbmVJdGVtUmFuZ2UmLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmKTsK
KyAgICB2b2lkIGxpbmVMYXlvdXQoSW5saW5lSXRlbXMmLCBjb25zdCBMaW5lQnVpbGRlcjo6SW5s
aW5lSXRlbVJhbmdlJiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgQmxvY2tM
YXlvdXRTdGF0ZSYpOwogICAgIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93
Q29udGVudChjb25zdCBGb3JtYXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmLCBMYXlvdXRQ
b2ludCBjb250ZW50Qm94VG9wTGVmdCk7CiAKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNXaWR0
aEZvckZvcm1hdHRpbmdSb290KGNvbnN0IEJveCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXggZTE1ZTkwMTBjODFkLi5mMDEwYTFmMTg3YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcApAQCAt
MzMsOCArMzMsOCBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKElubGluZUZvcm1hdHRpbmdTdGF0ZSk7CiAKLUlubGluZUZvcm1hdHRpbmdTdGF0ZTo6
SW5saW5lRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYmIGZsb2F0aW5nU3RhdGUs
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKLSAgICA6IEZvcm1hdHRpbmdTdGF0ZShXVEZNb3Zl
KGZsb2F0aW5nU3RhdGUpLCBUeXBlOjpJbmxpbmUsIGxheW91dFN0YXRlKQorSW5saW5lRm9ybWF0
dGluZ1N0YXRlOjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
KQorICAgIDogRm9ybWF0dGluZ1N0YXRlKFR5cGU6OklubGluZSwgbGF5b3V0U3RhdGUpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggMjU0
MmMxOWY5MGFmLi42NzNhMmRiZDhiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdTdGF0ZS5oCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIERpc3BsYXlCb3hlcyA9IFZl
Y3RvcjxJbmxpbmVEaXNwbGF5OjpCb3g+OwogY2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0YXRlIDog
cHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxp
bmVGb3JtYXR0aW5nU3RhdGUpOwogcHVibGljOgotICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZShS
ZWY8RmxvYXRpbmdTdGF0ZT4mJiwgTGF5b3V0U3RhdGUmKTsKKyAgICBJbmxpbmVGb3JtYXR0aW5n
U3RhdGUoTGF5b3V0U3RhdGUmKTsKICAgICB+SW5saW5lRm9ybWF0dGluZ1N0YXRlKCk7CiAKICAg
ICBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMoKSB7IHJldHVybiBtX2lubGluZUl0ZW1zOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IDI2ZDliZDg4
ZmI2ZC4uNzZiODJjNWNmYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGlu
Z1N0YXRlLmNwcApAQCAtODYsOCArODYsOCBAQCBzdGF0aWMgVW5pcXVlUmVmPFRhYmxlR3JpZD4g
ZW5zdXJlVGFibGVHcmlkKGNvbnN0IEVsZW1lbnRCb3gmIHRhYmxlQm94KQogfQogCiAKLVRhYmxl
Rm9ybWF0dGluZ1N0YXRlOjpUYWJsZUZvcm1hdHRpbmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0ZT4m
JiBmbG9hdGluZ1N0YXRlLCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEVsZW1lbnRC
b3gmIHRhYmxlQm94KQotICAgIDogRm9ybWF0dGluZ1N0YXRlKFdURk1vdmUoZmxvYXRpbmdTdGF0
ZSksIFR5cGU6OlRhYmxlLCBsYXlvdXRTdGF0ZSkKK1RhYmxlRm9ybWF0dGluZ1N0YXRlOjpUYWJs
ZUZvcm1hdHRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEVsZW1lbnRC
b3gmIHRhYmxlQm94KQorICAgIDogRm9ybWF0dGluZ1N0YXRlKFR5cGU6OlRhYmxlLCBsYXlvdXRT
dGF0ZSkKICAgICAsIG1fdGFibGVHcmlkKGVuc3VyZVRhYmxlR3JpZCh0YWJsZUJveCkpCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggODgzYThjOGZk
NzNlLi5mY2Y3ZTZiOWY0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1N0
YXRlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBUYWJsZUZv
cm1hdHRpbmdTdGF0ZSA6IHB1YmxpYyBGb3JtYXR0aW5nU3RhdGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoVGFibGVGb3JtYXR0aW5nU3RhdGUpOwogcHVibGljOgotICAgIFRhYmxlRm9y
bWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYmLCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEVs
ZW1lbnRCb3gmIHRhYmxlQm94KTsKKyAgICBUYWJsZUZvcm1hdHRpbmdTdGF0ZShMYXlvdXRTdGF0
ZSYsIGNvbnN0IEVsZW1lbnRCb3gmIHRhYmxlQm94KTsKICAgICB+VGFibGVGb3JtYXR0aW5nU3Rh
dGUoKTsKIAogICAgIFRhYmxlR3JpZCYgdGFibGVHcmlkKCkgeyByZXR1cm4gbV90YWJsZUdyaWQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUv
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA1
YjZhMmY0NWZiM2QuLjZjNWMxNzY3MmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIgogCisjaW5jbHVkZSAi
QmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJCbG9ja0xheW91dFN0YXRlLmgiCiAj
aW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiRXZlbnRSZWdp
b24uaCIKQEAgLTc0LDYgKzc1LDcgQEAgbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIExp
bmVMYXlvdXQ6OkxpbmVMYXlvdXQoUmVuZGVyQmxvY2tGbG93JiBmbG93KQogICAgIDogbV9ib3hU
cmVlKGZsb3cpCiAgICAgLCBtX2xheW91dFN0YXRlKGZsb3cudmlldygpLmVuc3VyZUxheW91dFN0
YXRlKCkpCisgICAgLCBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlKGxheW91dFN0YXRlKCkuZW5zdXJl
QmxvY2tGb3JtYXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKSkKICAgICAsIG1faW5saW5lRm9y
bWF0dGluZ1N0YXRlKGxheW91dFN0YXRlKCkuZW5zdXJlSW5saW5lRm9ybWF0dGluZ1N0YXRlKHJv
b3RMYXlvdXRCb3goKSkpCiB7CiB9CkBAIC00NDAsNyArNDQyLDggQEAgdm9pZCBMaW5lTGF5b3V0
OjpsYXlvdXQoKQogICAgIC8vIEZJWE1FOiBEbyBub3QgY2xlYXIgdGhlIGxpbmVzIGFuZCBib3hl
cyBoZXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGNvbnN1bHQgd2l0aCB0aGUgZGFtYWdlIG9iamVj
dCBpbnN0ZWFkLgogICAgIGNsZWFySW5saW5lQ29udGVudCgpOwogICAgIEFTU0VSVChtX2lubGlu
ZUNvbnRlbnRDb25zdHJhaW50cyk7Ci0gICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCB7IHJvb3RMYXlvdXRCb3gsIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLCBtX2xpbmVEYW1hZ2Uu
Z2V0KCkgfS5sYXlvdXRJbkZsb3dDb250ZW50Rm9ySW50ZWdyYXRpb24oKm1faW5saW5lQ29udGVu
dENvbnN0cmFpbnRzLCB7IH0pOworICAgIGF1dG8gYmxvY2tMYXlvdXRTdGF0ZSA9IExheW91dDo6
QmxvY2tMYXlvdXRTdGF0ZSB7IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgp
IH07CisgICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB7IHJvb3RMYXlvdXRCb3gs
IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0KCkgfS5sYXlvdXRJbkZs
b3dDb250ZW50Rm9ySW50ZWdyYXRpb24oKm1faW5saW5lQ29udGVudENvbnN0cmFpbnRzLCBibG9j
a0xheW91dFN0YXRlKTsKIAogICAgIGNvbnN0cnVjdENvbnRlbnQoKTsKIApAQCAtNDU1LDcgKzQ1
OCw3IEBAIHZvaWQgTGluZUxheW91dDo6Y29uc3RydWN0Q29udGVudCgpCiAKICAgICBhdXRvJiBi
bG9ja0Zsb3cgPSBmbG93KCk7CiAgICAgYXV0byYgcm9vdFN0eWxlID0gYmxvY2tGbG93LnN0eWxl
KCk7Ci0gICAgYXV0byBpc0xlZnRUb1JpZ2h0RmxvYXRpbmdTdGF0ZUlubGluZURpcmVjdGlvbiA9
IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCk7CisgICAgYXV0byBpc0xlZnRUb1JpZ2h0RmxvYXRpbmdTdGF0ZUlubGluZURpcmVj
dGlvbiA9IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKTsKICAgICBhdXRvIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gcm9vdFN0
eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAgICAgYXV0byBpc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSA9IHJvb3RTdHlsZS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpOwogICAg
IGZvciAoYXV0byYgcmVuZGVyT2JqZWN0IDogbV9ib3hUcmVlLnJlbmRlcmVycygpKSB7CkBAIC01
NDcsNyArNTUwLDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwcmVwYXJlTGF5b3V0U3RhdGUoKQogCiB2
b2lkIExpbmVMYXlvdXQ6OnByZXBhcmVGbG9hdGluZ1N0YXRlKCkKIHsKLSAgICBhdXRvJiBmbG9h
dGluZ1N0YXRlID0gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOworICAg
IGF1dG8mIGZsb2F0aW5nU3RhdGUgPSBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3Rh
dGUoKTsKICAgICBmbG9hdGluZ1N0YXRlLmNsZWFyKCk7CiAKICAgICBpZiAoIWZsb3coKS5jb250
YWluc0Zsb2F0cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgK
aW5kZXggYWQ3Y2NlZWViZWQzLi42MWE1MGM0Y2E0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgQm94VHJlZSBtX2JveFRyZWU7CiAgICAgV2Vha1B0cjxMYXlvdXQ6OkxheW91dFN0YXRl
PiBtX2xheW91dFN0YXRlOworICAgIExheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGUmIG1fYmxv
Y2tGb3JtYXR0aW5nU3RhdGU7CiAgICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1f
aW5saW5lRm9ybWF0dGluZ1N0YXRlOwogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpDb25zdHJh
aW50c0ZvcklubGluZUNvbnRlbnQ+IG1faW5saW5lQ29udGVudENvbnN0cmFpbnRzOwogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXJ0IG9mIExheW91dFN0YXRlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463498</attachid>
            <date>2022-11-11 17:13:33 -0800</date>
            <delta_ts>2022-11-12 09:32:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-247821-20221111171333.patch</filename>
            <type>text/plain</type>
            <size>37668</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA0NmZiNjk2NTI2YmFiYzQzNTFmZTUwZTc4MjJiNWEyMGMxYmYyNmEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgMTEgTm92IDIwMjIgMTI6MDY6NDMgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtG
bG9hdHNdIEZsb2F0IGxheW91dCBpcyBCRkMgY29uY2VwdAogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI0NzgyMQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpG
bG9hdHMgYWx3YXlzIGJlbG9uZyB0byBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KCjEuIE9u
bHkgQmxvY2tGb3JtYXR0aW5nU3RhdGUgc2hvdWxkIGluc3RhbnRpYXRlIGEgRmxvYXRpbmdTdGF0
ZSAoSUNCIGluIG1hbnkgY2FzZXMpLgoyLiBGbG9hdGluZ1N0YXRlIHNob3VsZCBiZSBwdXNoZWQg
dG8gdGhlIElubGluZUZvcm1hdHRpbmdDb250ZXh0IGFzIHBhcnQgb2YgdGhlIGJsb2NrIGxheW91
dCBzdGF0ZSAoaW5zdGVhZCBvZiBhZGRpbmcgaXQgdG8gdGhlIElubGluZUZvcm1hdHRpbmdTdGF0
ZSkuCjMuIFdoZW4gYSBibG9jayBjb250YWluZXIgZXN0YWJsaXNoZXMgYm90aCBCRkMgYW5kIElG
Qywgd2Ugc2hvdWxkIG5vdCBza2lwIGluc3RhbnRpYXRpbmcgdGhlIGFzc29jaWF0ZWQgQkZDIChG
SVhNRSkuCgooVGhlIGludGVncmF0aW9uIElGQyBjb2RlcGF0aCBub3cgZXhwbGljaXRseSBjcmVh
dGVzIHRoZSBwYXJlbnQgQkZDIHN0YXRlLiBUaGlzIGlzIG1vcmUgaW5saW5lIHdpdGggaG93IHRo
ZSBmdWxsIExGQyBsb2dpYyB3aWxsIGxvb2sgbGlrZS4pCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6
OkZvcm1hdHRpbmdTdGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0
ZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6OmZsb2F0aW5nU3RhdGUgY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHA6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUp
OgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3Rh
dGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlVGFibGVGb3JtYXR0aW5n
U3RhdGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlRmxleEZvcm1hdHRp
bmdTdGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6RmxvYXRpbmdTdGF0ZSk6CiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmg6CihXZWJDb3JlOjpMYXlv
dXQ6OkZsb2F0aW5nU3RhdGU6OnJvb3QgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGlu
Z1N0YXRlOjpjcmVhdGUpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0dlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6OkJsb2NrRm9ybWF0dGlu
Z1N0YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z1N0YXRlOjpmbG9hdGluZ1N0YXRlIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nU3RhdGU6OmZsb2F0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tMYXlvdXRTdGF0ZS5oOgooV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0xheW91dFN0YXRlOjpmbG9hdGluZ1N0YXRlKToKKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tMYXlvdXRTdGF0ZTo6QmxvY2tMYXlvdXRTdGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaCBj
b25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9ybWF0dGluZ1N0
YXRlOjpGbGV4Rm9ybWF0dGluZ1N0YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5oOgoqIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElu
Rmxvd0NvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0SW5GbG93Q29udGVudEZvckludGVncmF0aW9uKToKKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRDb250ZW50SGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ1N0YXRlOjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3Jt
YXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdTdGF0ZTo6
VGFibGVGb3JtYXR0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6TGluZUxheW91dCk6CihX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6bGF5b3V0KToKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RDb250ZW50KToKKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwcmVwYXJlRmxvYXRpbmdTdGF0ZSk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0
YXRlLmNwcCAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0
ZS5oICAgICAgIHwgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAg
ICAgICAgICB8IDU3ICsrKysrLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRTdGF0ZS5oICAgICAgICAgICB8ICAxICsKIC4uLi9XZWJDb3JlL2xheW91dC9mbG9hdHMv
RmxvYXRpbmdTdGF0ZS5jcHAgICB8ICA3ICsrLQogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ1N0YXRlLmggIHwgMTAgKystLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwIHwgIDIgKy0KIC4uLi9ibG9jay9CbG9ja0Zvcm1hdHRpbmdTdGF0
ZS5jcHAgICAgICAgICAgICB8ICA1ICstCiAuLi4vYmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUu
aCAgICAgICAgICAgICAgfCAgNyArKy0KIC4uLi9ibG9jay9CbG9ja0xheW91dFN0YXRlLmggICAg
ICAgICAgICAgICAgICB8IDEzICsrKystCiAuLi4vYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5j
cHAgICAgICAgICAgICAgfCAxNSArKysrLQogLi4uL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5j
cHAgICAgICAgICAgICAgIHwgIDQgKy0KIC4uLi9mbGV4L0ZsZXhGb3JtYXR0aW5nU3RhdGUuaCAg
ICAgICAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcCAgICAgICAgfCAyNiArKystLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCAgICAgICAgICB8ICA0ICstCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0
ZS5jcHAgICAgICAgICAgfCAgNCArLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUu
aCAgICAgICAgICAgIHwgIDIgKy0KIC4uLi90YWJsZS9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHAg
ICAgICAgICAgICB8ICA0ICstCiAuLi4vdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUuaCAgICAg
ICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwICAgIHwgMTAgKysrLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aCAgICAgIHwgIDEgKwogLi4uL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNw
cCAgIHwgIDMgKwogMjIgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMTAwIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3Rh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXgg
MDU1ZTBkMzI0YjlkLi5mMGFjMDRiOWUyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nU3RhdGUuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCiAKLSNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgi
CiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgogCkBAIC0zNSw5ICszNCw4IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRm9ybWF0dGluZ1N0YXRlKTsKIAotRm9ybWF0dGluZ1N0
YXRlOjpGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+JiYgZmxvYXRpbmdTdGF0ZSwg
VHlwZSB0eXBlLCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCitGb3JtYXR0aW5nU3RhdGU6OkZv
cm1hdHRpbmdTdGF0ZShUeXBlIHR5cGUsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAgICA6
IG1fbGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpCi0gICAgLCBtX2Zsb2F0aW5nU3RhdGUoV1RGTW92
ZShmbG9hdGluZ1N0YXRlKSkKICAgICAsIG1fdHlwZSh0eXBlKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDdiZmYyNDhmMGU0Yi4uMmZjY2VlYmY2YWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oCkBAIC0zMywxNSArMzMs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIEJv
eDsKLWNsYXNzIEZsb2F0aW5nU3RhdGU7CiBlbnVtIGNsYXNzIFN0eWxlRGlmZjsKIAogY2xhc3Mg
Rm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb3JtYXR0aW5nU3Rh
dGUpOwogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRm9ybWF0dGluZ1N0YXRlKTsKIHB1Ymxp
YzoKLSAgICBGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9m
bG9hdGluZ1N0YXRlOyB9Ci0KICAgICB2b2lkIG1hcmtOZWVkc0xheW91dChjb25zdCBCb3gmLCBT
dHlsZURpZmYpOwogICAgIGJvb2wgbmVlZHNMYXlvdXQoY29uc3QgQm94Jik7CiAKQEAgLTY5LDEy
ICs2NiwxMSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBC
bG9jaywgSW5saW5lLCBUYWJsZSwgRmxleCB9OwotICAgIEZvcm1hdHRpbmdTdGF0ZShSZWY8Rmxv
YXRpbmdTdGF0ZT4mJiwgVHlwZSwgTGF5b3V0U3RhdGUmKTsKKyAgICBGb3JtYXR0aW5nU3RhdGUo
VHlwZSwgTGF5b3V0U3RhdGUmKTsKICAgICB+Rm9ybWF0dGluZ1N0YXRlKCk7CiAKIHByaXZhdGU6
CiAgICAgTGF5b3V0U3RhdGUmIG1fbGF5b3V0U3RhdGU7Ci0gICAgUmVmPEZsb2F0aW5nU3RhdGU+
IG1fZmxvYXRpbmdTdGF0ZTsKICAgICBIYXNoTWFwPGNvbnN0IEJveCosIEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHM+IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveGVzOwogICAgIHN0
ZDo6b3B0aW9uYWw8SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gbV9pbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzOwogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIFdlYWtMaXN0SGFzaFNldApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggY2Y4ZjYxNWQ4ZGNiLi41MDViYjBk
MTMwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcApAQCAtMjgsNyArMjgs
NiBAQAogCiAjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJGbGV4
Rm9ybWF0dGluZ1N0YXRlLmgiCi0jaW5jbHVkZSAiRmxvYXRpbmdTdGF0ZS5oIgogI2luY2x1ZGUg
IklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1
ZGUgIkxheW91dEJveEdlb21ldHJ5LmgiCkBAIC0xNTUsNzggKzE1NCw0OCBAQCBGbGV4Rm9ybWF0
dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Zm9ybWF0dGluZ1N0YXRlRm9yRmxleEZvcm1hdHRpbmdD
b250ZXh0KGNvbnN0CiBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRS
b290KQogewogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCgpKTsKLQotICAgIGF1dG8gY3JlYXRlID0gWyZdIHsKLSAgICAg
ICAgLy8gSWYgdGhlIGJsb2NrIGNvbnRhaW5lciBib3ggdGhhdCBpbml0aWF0ZXMgdGhpcyBpbmxp
bmUgZm9ybWF0dGluZyBjb250ZXh0IGFsc28gZXN0YWJsaXNoZXMgYSBibG9jayBjb250ZXh0LCB0
aGUgZmxvYXRzIG91dHNpZGUgb2YgdGhlIGZvcm1hdHRpbmcgcm9vdAotICAgICAgICAvLyBzaG91
bGQgbm90IGludGVyZmVyZSB3aXRoIHRoZSBjb250ZW50IGluc2lkZS4KLSAgICAgICAgLy8gPGRp
diBzdHlsZT0iZmxvYXQ6IGxlZnQiPjwvZGl2PjxkaXYgc3R5bGU9Im92ZXJmbG93OiBoaWRkZW4i
PiA8LSBpcyBhIG5vbi1pbnRydXNpdmUgZmxvYXQsIGJlY2F1c2Ugb3ZlcmZsb3c6IGhpZGRlbiB0
cmlnZ2VycyBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LjwvZGl2PgotICAgICAgICBpZiAo
Zm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgp
IHx8IGZvcm1hdHRpbmdDb250ZXh0Um9vdC5pc0lubGluZUludGVncmF0aW9uUm9vdCgpKQotICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9hdGlu
Z1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCksICp0aGlzKTsKLQot
ICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgaW5oZXJpdHMgdGhl
IGZsb2F0cyBmcm9tIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0LgotICAgICAgICAvLyBG
aW5kIHRoZSBmb3JtYXR0aW5nIHN0YXRlIGluIHdoaWNoIHRoaXMgZm9ybWF0dGluZyByb290IGxp
dmVzLCBub3QgdGhlIG9uZSBpdCBjcmVhdGVzIGFuZCB1c2UgaXRzIGZsb2F0aW5nIHN0YXRlLgot
ICAgICAgICBhdXRvIHBhcmVudEZvcm1hdHRpbmdTdGF0ZSA9IFsmXSAoKSAtPiBGb3JtYXR0aW5n
U3RhdGUmIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgY29udGFpbmluZ0Jsb2NrIDogY29udGFp
bmluZ0Jsb2NrQ2hhaW4oZm9ybWF0dGluZ0NvbnRleHRSb290KSkgewotICAgICAgICAgICAgICAg
IGlmIChjb250YWluaW5nQmxvY2suZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5n
Q29udGV4dChjb250YWluaW5nQmxvY2spOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGluZ1N0YXRlRm9y
Rm9ybWF0dGluZ0NvbnRleHQoRm9ybWF0dGluZ0NvbnRleHQ6OmluaXRpYWxDb250YWluaW5nQmxv
Y2soZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50Rm9ybWF0dGluZ1N0YXRlKCku
ZmxvYXRpbmdTdGF0ZSgpLCAqdGhpcyk7Ci0gICAgfTsKLQotICAgIHJldHVybiAqbV9pbmxpbmVG
b3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ0NvbnRleHRSb290LCBjcmVhdGUpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKm1faW5saW5lRm9ybWF0dGluZ1N0YXRlcy5lbnN1
cmUoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPigqdGhpcyk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogQmxvY2tG
b3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVCbG9ja0Zvcm1hdHRpbmdTdGF0ZShj
b25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCiB7CiAgICAgQVNTRVJUKGZv
cm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7
Ci0KLSAgICBhdXRvIGNyZWF0ZSA9IFsmXSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJs
b2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRp
bmdDb250ZXh0Um9vdCksICp0aGlzKTsKLSAgICB9OwotCi0gICAgcmV0dXJuICptX2Jsb2NrRm9y
bWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY3JlYXRlKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgcmV0dXJuICptX2Jsb2NrRm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUo
JmZvcm1hdHRpbmdDb250ZXh0Um9vdCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3Jt
YXR0aW5nU3RhdGU+KCp0aGlzLCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOyB9KS5pdGVyYXRvci0+
dmFsdWU7CiB9CiAKIFRhYmxlRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZW5zdXJlVGFi
bGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290
KQogewogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNUYWJsZUZv
cm1hdHRpbmdDb250ZXh0KCkpOwotCi0gICAgYXV0byBjcmVhdGUgPSBbJl0gewotICAgICAgICAv
LyBUYWJsZSBmb3JtYXR0aW5nIGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0
aW5nIHN0YXRlIC1hbmQgaXQgc3RheXMgZW1wdHkuCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1h
dHRpbmdDb250ZXh0Um9vdCksICp0aGlzLCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwotICAgIH07
Ci0KLSAgICByZXR1cm4gKm1fdGFibGVGb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGlu
Z0NvbnRleHRSb290LCBjcmVhdGUpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKm1fdGFi
bGVGb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ0NvbnRleHRSb290LCBbJl0geyBy
ZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oKnRoaXMsIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogRmxleEZvcm1hdHRpbmdTdGF0
ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUZsZXhGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJv
eCYgZm9ybWF0dGluZ0NvbnRleHRSb290KQogewogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4
dFJvb3QuZXN0YWJsaXNoZXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQoKSk7CiAKLSAgICBhdXRvIGNy
ZWF0ZSA9IFsmXSB7Ci0gICAgICAgIC8vIEZsZXggZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBl
c3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZSAtYW5kIGl0IHN0YXlzIGVtcHR5LgotICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbGV4Rm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRl
OjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCksICp0aGlzKTsKLSAgICB9Owot
CiAgICAgaWYgKGlzRmxleEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb24oKSkgewogICAgICAg
ICBpZiAoIW1fcm9vdEZsZXhGb3JtYXR0aW5nU3RhdGVGb3JJbnRlZ3JhdGlvbikgewogICAgICAg
ICAgICAgQVNTRVJUKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QgPT0gbV9yb290Q29udGFpbmVyLnB0
cigpKTsKLSAgICAgICAgICAgIG1fcm9vdEZsZXhGb3JtYXR0aW5nU3RhdGVGb3JJbnRlZ3JhdGlv
biA9IGNyZWF0ZSgpOworICAgICAgICAgICAgbV9yb290RmxleEZvcm1hdHRpbmdTdGF0ZUZvcklu
dGVncmF0aW9uID0gbWFrZVVuaXF1ZTxGbGV4Rm9ybWF0dGluZ1N0YXRlPigqdGhpcyk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuICptX3Jvb3RGbGV4Rm9ybWF0dGluZ1N0YXRlRm9ySW50ZWdy
YXRpb247CiAgICAgfQogCi0gICAgcmV0dXJuICptX2ZsZXhGb3JtYXR0aW5nU3RhdGVzLmVuc3Vy
ZSgmZm9ybWF0dGluZ0NvbnRleHRSb290LCBjcmVhdGUpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBy
ZXR1cm4gKm1fZmxleEZvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nQ29udGV4dFJv
b3QsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPEZsZXhGb3JtYXR0aW5nU3RhdGU+KCp0aGlzKTsg
fSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi12b2lkIExheW91dFN0YXRlOjpkZXN0cm95SW5saW5l
Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkK
K3ZvaWQgTGF5b3V0U3RhdGU6OmRlc3Ryb3lCbG9ja0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBFbGVt
ZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCiB7CisgICAgQVNTRVJUKGZvcm1hdHRpbmdD
b250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgbV9p
bmxpbmVGb3JtYXR0aW5nU3RhdGVzLnJlbW92ZSgmZm9ybWF0dGluZ0NvbnRleHRSb290KTsKIH0K
IAordm9pZCBMYXlvdXRTdGF0ZTo6ZGVzdHJveUlubGluZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBF
bGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCit7CisgICAgQVNTRVJUKGZvcm1hdHRp
bmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpOworICAg
IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGVzLnJlbW92ZSgmZm9ybWF0dGluZ0NvbnRleHRSb290KTsK
K30KKwogdm9pZCBMYXlvdXRTdGF0ZTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IExheW91dFNpemUm
IHZpZXdwb3J0U2l6ZSkKIHsKICAgICBBU1NFUlQoaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dElu
dGVncmF0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAppbmRleCBjNjc5NzQ3
MjY2OWYuLjJhZTU0MzczMjcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKQEAg
LTY4LDYgKzY4LDcgQEAgcHVibGljOgogCiAgICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5n
U3RhdGVGb3JGb3JtYXR0aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5nUm9v
dCkgY29uc3Q7CiAKKyAgICB2b2lkIGRlc3Ryb3lCbG9ja0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBF
bGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogICAgIHZvaWQgZGVzdHJveUlubGlu
ZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3Qp
OwogCiAgICAgYm9vbCBoYXNGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0
dGluZ1Jvb3QpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRp
bmdTdGF0ZS5jcHAKaW5kZXggYmU1MmI1NTM4MjA4Li4zNTgxYTUxOTI3ZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcApAQCAtNDksMTEgKzQ5
LDEyIEBAIEZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6RmxvYXRJdGVtKFBvc2l0aW9uIHBvc2l0
aW9uLCBCb3hHZW9tZXRyeSBhYnNvbHV0ZUJveEdlCiB7CiB9CiAKLUZsb2F0aW5nU3RhdGU6OkZs
b2F0aW5nU3RhdGUoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBFbGVtZW50Qm94JiBm
b3JtYXR0aW5nQ29udGV4dFJvb3QpCitGbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgRWxlbWVudEJveCYgYmxvY2tGb3JtYXR0aW5nQ29u
dGV4dFJvb3QpCiAgICAgOiBtX2xheW91dFN0YXRlKGxheW91dFN0YXRlKQotICAgICwgbV9mb3Jt
YXR0aW5nQ29udGV4dFJvb3QoZm9ybWF0dGluZ0NvbnRleHRSb290KQotICAgICwgbV9pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5zdHlsZSgpLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkKKyAgICAsIG1fYmxvY2tGb3JtYXR0aW5nQ29udGV4dFJvb3QoYmxvY2tG
b3JtYXR0aW5nQ29udGV4dFJvb3QpCisgICAgLCBtX2lzTGVmdFRvUmlnaHREaXJlY3Rpb24oYmxv
Y2tGb3JtYXR0aW5nQ29udGV4dFJvb3Quc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
CiB7CisgICAgQVNTRVJUKGJsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKIH0KIAogdm9pZCBGbG9hdGluZ1N0YXRlOjphcHBlbmQo
RmxvYXRJdGVtIG5ld0Zsb2F0SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ1N0YXRlLmgKaW5kZXggZDhiZGQxY2YxY2NhLi44NDk5YzE5N2M1MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaW5jbHVkZSAiTGF5b3V0RWxlbWVudEJveC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2MuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDEyICs0MywxMiBAQCBjbGFzcyBSZWN0Owog
Ly8gRmxvYXRpbmdTdGF0ZSBob2xkcyB0aGUgZmxvYXRpbmcgYm94ZXMgZm9yIEJGQyB1c2luZyB0
aGUgQkZDJ3MgaW5saW5lIGRpcmVjdGlvbi4KIC8vIEZsb2F0aW5nU3RhdGUgbWF5IGJlIGluaGVy
aXRlZCBieSBuZXN0ZWQgSUZDcyB3aXRoIG1pc21hdGFjaGluZyBpbmxpbmUgZGlyZWN0aW9uLiBJ
biBzdWNoIGNhc2VzIGZsb2F0aW5nIGJveGVzCiAvLyBhcmUgYWRkZWQgdG8gdGhlIEZsb2F0aW5n
U3RhdGUgYXMgaWYgdGhleSBoYWQgbWF0Y2hpbmcgaW5saW5lIGRpcmVjdGlvbi4KLWNsYXNzIEZs
b2F0aW5nU3RhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxGbG9hdGluZ1N0YXRlPiB7CitjbGFzcyBG
bG9hdGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZsb2F0aW5nU3RhdGUp
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RmxvYXRpbmdTdGF0ZT4gY3JlYXRlKExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZsb2F0aW5nU3RhdGUobGF5b3V0U3RhdGUsIGZvcm1h
dHRpbmdDb250ZXh0Um9vdCkpOyB9CisgICAgRmxvYXRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYsIGNv
bnN0IEVsZW1lbnRCb3gmIGJsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290KTsKIAotICAgIGNvbnN0
IEVsZW1lbnRCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9v
dDsgfQorICAgIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHRSb290OyB9CiAKICAgICBjbGFzcyBGbG9hdEl0ZW0gewogICAgIHB1
YmxpYzoKQEAgLTkyLDExICs5MSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKLSAgICBGbG9hdGluZ1N0YXRlKExheW91dFN0YXRlJiwg
Y29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKICAgICBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFN0YXRlOyB9CiAKICAgICBM
YXlvdXRTdGF0ZSYgbV9sYXlvdXRTdGF0ZTsKLSAgICBDaGVja2VkUmVmPGNvbnN0IEVsZW1lbnRC
b3g+IG1fZm9ybWF0dGluZ0NvbnRleHRSb290OworICAgIENoZWNrZWRSZWY8Y29uc3QgRWxlbWVu
dEJveD4gbV9ibG9ja0Zvcm1hdHRpbmdDb250ZXh0Um9vdDsKICAgICBGbG9hdExpc3QgbV9mbG9h
dHM7CiAgICAgZW51bSBjbGFzcyBQb3NpdGlvblR5cGUgewogICAgICAgICBMZWZ0ID0gMSA8PCAw
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDM3NGM5M2ZjMDRlZC4uMzEwZDY2
ODYyNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC03OTQsNyArNzk0LDcg
QEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXBsaWNhdGVk
Q2FzZXMoY29uc3QgQm94JiBsYXlvdXRCb3gKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVj
aWFsIChxdWlyaz8pIGJlaGF2aW9yIHNpbmNlIHRoZSBkb2N1bWVudCBib3ggaXMgbm90IGEgZm9y
bWF0dGluZyBjb250ZXh0IHJvb3QgYW5kCiAgICAgICAgICAgICAvLyBhbGwgdGhlIGZsb2F0IGJv
eGVzIGVuZCB1cCBhdCB0aGUgSUNCIGxldmVsLgogICAgICAgICAgICAgYXV0byYgaW5pdGlhbENv
bnRhaW5pbmdCbG9jayA9IEZvcm1hdHRpbmdDb250ZXh0Ojppbml0aWFsQ29udGFpbmluZ0Jsb2Nr
KGRvY3VtZW50Qm94KTsKLSAgICAgICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRp
bmdDb250ZXh0IHsgZm9ybWF0dGluZ0NvbnRleHQoKSwgbGF5b3V0U3RhdGUoKS5mb3JtYXR0aW5n
U3RhdGVGb3JGb3JtYXR0aW5nQ29udGV4dChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKS5mbG9hdGlu
Z1N0YXRlKCkgfTsKKyAgICAgICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdD
b250ZXh0IHsgZm9ybWF0dGluZ0NvbnRleHQoKSwgZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3Rh
dGU+KGxheW91dFN0YXRlKCkuZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ0NvbnRleHQoaW5p
dGlhbENvbnRhaW5pbmdCbG9jaykpLmZsb2F0aW5nU3RhdGUoKSB9OwogICAgICAgICAgICAgaWYg
KGF1dG8gZmxvYXRCb3R0b20gPSBmbG9hdGluZ0NvbnRleHQuYm90dG9tKCkpIHsKICAgICAgICAg
ICAgICAgICBib3R0b20gPSBzdGQ6Om1heDxMYXlvdXRVbml0PigqZmxvYXRCb3R0b20sIGJvdHRv
bSk7CiAgICAgICAgICAgICAgICAgYXV0byBmbG9hdFRvcCA9IGZsb2F0aW5nQ29udGV4dC50b3Ao
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXggZGUy
Y2MzNjJiYzZjLi4zODk1YzVjNWFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nU3RhdGUuY3BwCkBAIC0zMyw4ICszMyw5IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQmxvY2tGb3JtYXR0aW5nU3RhdGUpOwogCi1CbG9j
a0Zvcm1hdHRpbmdTdGF0ZTo6QmxvY2tGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+
JiYgZmxvYXRpbmdTdGF0ZSwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQotICAgIDogRm9ybWF0
dGluZ1N0YXRlKFdURk1vdmUoZmxvYXRpbmdTdGF0ZSksIFR5cGU6OkJsb2NrLCBsYXlvdXRTdGF0
ZSkKK0Jsb2NrRm9ybWF0dGluZ1N0YXRlOjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZShMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEVsZW1lbnRCb3gmIGJsb2NrRm9ybWF0dGluZ0NvbnRleHRS
b290KQorICAgIDogRm9ybWF0dGluZ1N0YXRlKFR5cGU6OkJsb2NrLCBsYXlvdXRTdGF0ZSkKKyAg
ICAsIG1fZmxvYXRpbmdTdGF0ZShsYXlvdXRTdGF0ZSwgYmxvY2tGb3JtYXR0aW5nQ29udGV4dFJv
b3QpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUuaAppbmRl
eCBjNjg4MmNkMDlmYzguLjU4ZWQwMGIxZDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tG
b3JtYXR0aW5nU3RhdGUuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkZsb2F0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KQEAgLTM2
LDkgKzM3LDEyIEBAIG5hbWVzcGFjZSBMYXlvdXQgewogY2xhc3MgQmxvY2tGb3JtYXR0aW5nU3Rh
dGUgOiBwdWJsaWMgRm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKIHB1YmxpYzoKLSAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0
ZShSZWY8RmxvYXRpbmdTdGF0ZT4mJiwgTGF5b3V0U3RhdGUmKTsKKyAgICBCbG9ja0Zvcm1hdHRp
bmdTdGF0ZShMYXlvdXRTdGF0ZSYsIGNvbnN0IEVsZW1lbnRCb3gmIGJsb2NrRm9ybWF0dGluZ0Nv
bnRleHRSb290KTsKICAgICB+QmxvY2tGb3JtYXR0aW5nU3RhdGUoKTsKIAorICAgIGNvbnN0IEZs
b2F0aW5nU3RhdGUmIGZsb2F0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nU3Rh
dGU7IH0KKyAgICBGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKCkgeyByZXR1cm4gbV9mbG9h
dGluZ1N0YXRlOyB9CisKICAgICB2b2lkIHNldFVzZWRWZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gm
IGxheW91dEJveCwgY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiB1c2VkVmVydGljYWxNYXJnaW4p
IHsgbV91c2VkVmVydGljYWxNYXJnaW5zLnNldChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNhbE1hcmdp
bik7IH0KICAgICBVc2VkVmVydGljYWxNYXJnaW4gdXNlZFZlcnRpY2FsTWFyZ2luKGNvbnN0IEJv
eCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX3VzZWRWZXJ0aWNhbE1hcmdpbnMuZ2V0KGxh
eW91dEJveCk7IH0KICAgICBib29sIGhhc1VzZWRWZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gmIGxh
eW91dEJveCkgY29uc3QgeyByZXR1cm4gbV91c2VkVmVydGljYWxNYXJnaW5zLmNvbnRhaW5zKGxh
eW91dEJveCk7IH0KQEAgLTQ4LDYgKzUyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ2xlYXJh
bmNlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX2NsZWFyYW5jZVNldC5j
b250YWlucyhsYXlvdXRCb3gpOyB9CiAKIHByaXZhdGU6CisgICAgRmxvYXRpbmdTdGF0ZSBtX2Zs
b2F0aW5nU3RhdGU7CiAgICAgSGFzaE1hcDxDaGVja2VkUmVmPGNvbnN0IEJveD4sIFVzZWRWZXJ0
aWNhbE1hcmdpbj4gbV91c2VkVmVydGljYWxNYXJnaW5zOwogICAgIEhhc2hTZXQ8Q2hlY2tlZFJl
Zjxjb25zdCBCb3g+PiBtX2NsZWFyYW5jZVNldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTGF5b3V0U3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tMYXlv
dXRTdGF0ZS5oCmluZGV4IDhjMzYxZGQzNDI1ZC4uZTYxMzUwYmVkZmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTGF5b3V0
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrTGF5b3V0U3RhdGUuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkZsb2F0aW5nU3RhdGUuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFt
ZXNwYWNlIExheW91dCB7CiAKQEAgLTMzLDIwICszNSwyOSBAQCBjbGFzcyBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OwogLy8gVGhpcyBjbGFzcyBob2xkcyBibG9jayBsZXZlbCBpbmZvcm1hdGlvbiBz
aGFyZWQgYWNyb3NzIGNoaWxkIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHRzLiAKIGNsYXNzIEJs
b2NrTGF5b3V0U3RhdGUgewogcHVibGljOgorICAgIEJsb2NrTGF5b3V0U3RhdGUoRmxvYXRpbmdT
dGF0ZSYpOworCisgICAgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSgpIHsgcmV0dXJuIG1f
ZmxvYXRpbmdTdGF0ZTsgfQorCiAgICAgc3RydWN0IExpbmVDbGFtcCB7CiAgICAgICAgIHNpemVf
dCBtX21heGltdW1OdW1iZXJPZkxpbmVzIHsgMCB9OwogICAgICAgICBzaXplX3QgbV9udW1iZXJP
ZlZpc2libGVMaW5lcyB7IDAgfTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8TGluZUNsYW1w
PiBsaW5lQ2xhbXAoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDbGFtcDsgfQogCi0gICAgLy8gRklY
TUU6IE1vdmUgRmxvYXRpbmdTdGF0ZSBoZXJlLgogcHJpdmF0ZToKICAgICBmcmllbmQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDsKIAogICAgIHZvaWQgc2V0TGluZUNsYW1wKExpbmVDbGFtcCBsaW5l
Q2xhbXApIHsgbV9saW5lQ2xhbXAgPSBsaW5lQ2xhbXA7IH0KIAorICAgIEZsb2F0aW5nU3RhdGUm
IG1fZmxvYXRpbmdTdGF0ZTsKICAgICBzdGQ6Om9wdGlvbmFsPExpbmVDbGFtcD4gbV9saW5lQ2xh
bXA7CiB9OwogCitpbmxpbmUgQmxvY2tMYXlvdXRTdGF0ZTo6QmxvY2tMYXlvdXRTdGF0ZShGbG9h
dGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKQorICAgIDogbV9mbG9hdGluZ1N0YXRlKGZsb2F0aW5n
U3RhdGUpCit7Cit9CisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuY3BwCmluZGV4IGIzOWE0NGZmMTFlZi4uMjc3YTM4MmJkYWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29s
bGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRl
ICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAj
aW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hh
aW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dEVsZW1lbnRCb3guaCIKKyNpbmNsdWRlICJM
YXlvdXRJbml0aWFsQ29udGFpbmluZ0Jsb2NrLmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgog
I2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAKQEAgLTQxMSw4ICs0MTMsMTcgQEAgYm9vbCBCbG9j
a01hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IEVsZW1lbnRCb3gm
IGxheW91dEJveCkgY28KICAgICAgICAgICAgICAgICBpZiAoIWlubGluZUZvcm1hdHRpbmdTdGF0
ZS5saW5lcygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgICAgIC8vIEFueSBmbG9hdCBib3ggaW4gdGhpcyBmb3JtYXR0aW5nIGNvbnRl
eHQgcHJldmVudHMgY29sbGFwc2luZyB0aHJvdWdoLgotICAgICAgICAgICAgICAgIGF1dG8mIGZs
b2F0cyA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCkuZmxvYXRzKCk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBmbG9hdHMpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIHBhcmVudEJsb2NrRm9ybWF0dGluZ1N0YXRlID0gWyZdICgpIC0+IEJsb2Nr
Rm9ybWF0dGluZ1N0YXRlJiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guZXN0
YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dChsYXlvdXRCb3gpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGNvbnRhaW5p
bmdCbG9jayA6IGNvbnRhaW5pbmdCbG9ja0NoYWluKGxheW91dEJveCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjb250YWluaW5nQmxvY2suZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheW91dFN0
YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckJsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29udGFpbmluZ0Js
b2NrKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlLmZv
cm1hdHRpbmdTdGF0ZUZvckJsb2NrRm9ybWF0dGluZ0NvbnRleHQoRm9ybWF0dGluZ0NvbnRleHQ6
OmluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSk7CisgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IHBhcmVudEJsb2NrRm9ybWF0
dGluZ1N0YXRlKCkuZmxvYXRpbmdTdGF0ZSgpLmZsb2F0cygpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChmbG9hdEl0ZW0uaXNJbkZvcm1hdHRpbmdDb250ZXh0T2YobGF5b3V0Qm94KSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgv
RmxleEZvcm1hdHRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXggNjM4ZDZmMGRhNWZm
Li4zYjNjMTQxYTk1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5j
cHAKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChGbGV4Rm9ybWF0dGluZ1N0YXRlKTsKIAotRmxleEZvcm1hdHRpbmdTdGF0
ZTo6RmxleEZvcm1hdHRpbmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0ZT4mJiBmbG9hdGluZ1N0YXRl
LCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCi0gICAgOiBGb3JtYXR0aW5nU3RhdGUoV1RGTW92
ZShmbG9hdGluZ1N0YXRlKSwgVHlwZTo6RmxleCwgbGF5b3V0U3RhdGUpCitGbGV4Rm9ybWF0dGlu
Z1N0YXRlOjpGbGV4Rm9ybWF0dGluZ1N0YXRlKExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKKyAg
ICA6IEZvcm1hdHRpbmdTdGF0ZShUeXBlOjpGbGV4LCBsYXlvdXRTdGF0ZSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggZDE2OWU0ODI0ZDgyLi4yYzc3
MzFlYzFjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nU3RhdGUuaApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNsYXNzIEZsZXhGb3JtYXR0aW5nU3RhdGUg
OiBwdWJsaWMgRm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZs
ZXhGb3JtYXR0aW5nU3RhdGUpOwogcHVibGljOgotICAgIEZsZXhGb3JtYXR0aW5nU3RhdGUoUmVm
PEZsb2F0aW5nU3RhdGU+JiYsIExheW91dFN0YXRlJik7CisgICAgRmxleEZvcm1hdHRpbmdTdGF0
ZShMYXlvdXRTdGF0ZSYpOwogICAgIH5GbGV4Rm9ybWF0dGluZ1N0YXRlKCk7CiAKICAgICBjb25z
dCBhdXRvJiBsaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZXM7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA2ZTQ5NTVkY2JlNjEu
LjA2NTJhYmE1YTk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMTQwLDE5ICsxNDAsMjIgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0Nv
bnQKICAgICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAKICAgICBhdXRvJiBpbmxpbmVJdGVt
cyA9IGZvcm1hdHRpbmdTdGF0ZSgpLmlubGluZUl0ZW1zKCk7Ci0gICAgbGluZUxheW91dChpbmxp
bmVJdGVtcywgeyAwLCBpbmxpbmVJdGVtcy5zaXplKCkgfSwgeyBjb25zdHJhaW50cywgeyB9IH0p
OworICAgIC8vIEZJWE1FOiBMZXQgdGhlIGNhbGxlciBwYXNzIGluIHRoZSBibG9jayBsYXlvdXQg
c3RhdGUuIAorICAgIGF1dG8gZmxvYXRpbmdTdGF0ZSA9IEZsb2F0aW5nU3RhdGUgeyBsYXlvdXRT
dGF0ZSgpLCBGb3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbENvbnRhaW5pbmdCbG9jayhyb290KCkp
IH07CisgICAgYXV0byBibG9ja0xheW91dFN0YXRlID0gQmxvY2tMYXlvdXRTdGF0ZSB7IGZsb2F0
aW5nU3RhdGUgfTsKKyAgICBsaW5lTGF5b3V0KGlubGluZUl0ZW1zLCB7IDAsIGlubGluZUl0ZW1z
LnNpemUoKSB9LCB7IGNvbnN0cmFpbnRzLCB7IH0gfSwgYmxvY2tMYXlvdXRTdGF0ZSk7CiAgICAg
Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChmb3JtYXR0aW5nU3RhdGUo
KS5vdXRPZkZsb3dCb3hlcygpLCB7IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVm
dCwgY29uc3RyYWludHMubG9naWNhbFRvcCgpIH0pOwogICAgIElubGluZURpc3BsYXlDb250ZW50
QnVpbGRlcjo6Y29tcHV0ZUlzRmlyc3RJc0xhc3RCb3hGb3JJbmxpbmVDb250ZW50KGZvcm1hdHRp
bmdTdGF0ZSgpLmJveGVzKCkpOwogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4
dExheW91dCwgc3RyZWFtIDw8ICJbRW5kXSAtPiBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IC0+
IGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsKIH0KIAotdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudEZvckludGVncmF0aW9uKGNvbnN0
IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMsIGNvbnN0IEJsb2NrTGF5
b3V0U3RhdGUmKQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29u
dGVudEZvckludGVncmF0aW9uKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29u
c3RyYWludHMsIEJsb2NrTGF5b3V0U3RhdGUmIGJsb2NrTGF5b3V0U3RhdGUpCiB7CiAgICAgaW52
YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsK
ICAgICBhdXRvJiBpbmxpbmVJdGVtcyA9IGZvcm1hdHRpbmdTdGF0ZSgpLmlubGluZUl0ZW1zKCk7
CiAgICAgYXV0byBpbmxpbmVDb25zdHJhaW50cyA9IGRvd25jYXN0PENvbnN0cmFpbnRzRm9ySW5s
aW5lQ29udGVudD4oY29uc3RyYWludHMpOwotICAgIGxpbmVMYXlvdXQoaW5saW5lSXRlbXMsIHsg
MCwgaW5saW5lSXRlbXMuc2l6ZSgpIH0sIGlubGluZUNvbnN0cmFpbnRzKTsKKyAgICBsaW5lTGF5
b3V0KGlubGluZUl0ZW1zLCB7IDAsIGlubGluZUl0ZW1zLnNpemUoKSB9LCBpbmxpbmVDb25zdHJh
aW50cywgYmxvY2tMYXlvdXRTdGF0ZSk7CiAgICAgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0
T2ZGbG93Q29udGVudChmb3JtYXR0aW5nU3RhdGUoKS5vdXRPZkZsb3dCb3hlcygpLCB7IGlubGlu
ZUNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgaW5saW5lQ29uc3RyYWludHMu
bG9naWNhbFRvcCgpIH0pOwogICAgIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y29tcHV0
ZUlzRmlyc3RJc0xhc3RCb3hGb3JJbmxpbmVDb250ZW50KGZvcm1hdHRpbmdTdGF0ZSgpLmJveGVz
KCkpOwogfQpAQCAtMTc0LDI0ICsxNzcsMTEgQEAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmEKIAog
TGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6dXNlZENvbnRlbnRIZWlnaHQoKSBj
b25zdAogewotICAgIC8vIDEwLjYuNyAnQXV0bycgaGVpZ2h0cyBmb3IgYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0IHJvb3RzCi0KLSAgICAvLyBJZiBpdCBvbmx5IGhhcyBpbmxpbmUtbGV2ZWwgY2hp
bGRyZW4sIHRoZSBoZWlnaHQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHRvcCBvZiB0aGUg
dG9wbW9zdCBsaW5lIGJveCBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgYm90dG9tbW9zdCBsaW5lIGJv
eC4KLQotICAgIC8vIEluIGFkZGl0aW9uLCBpZiB0aGUgZWxlbWVudCBoYXMgYW55IGZsb2F0aW5n
IGRlc2NlbmRhbnRzIHdob3NlIGJvdHRvbSBtYXJnaW4gZWRnZSBpcyBiZWxvdyB0aGUgZWxlbWVu
dCdzIGJvdHRvbSBjb250ZW50IGVkZ2UsCi0gICAgLy8gdGhlbiB0aGUgaGVpZ2h0IGlzIGluY3Jl
YXNlZCB0byBpbmNsdWRlIHRob3NlIGVkZ2VzLiBPbmx5IGZsb2F0cyB0aGF0IHBhcnRpY2lwYXRl
IGluIHRoaXMgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGFyZSB0YWtlbgotICAgIC8vIGludG8g
YWNjb3VudCwgZS5nLiwgZmxvYXRzIGluc2lkZSBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZGVzY2Vu
ZGFudHMgb3Igb3RoZXIgZmxvYXRzIGFyZSBub3QuCiAgICAgYXV0byYgbGluZXMgPSBmb3JtYXR0
aW5nU3RhdGUoKS5saW5lcygpOwogICAgIC8vIEV2ZW4gZW1wdHkgY29udGVudCBnZW5lcmF0ZXMg
YSBsaW5lLgogICAgIEFTU0VSVCghbGluZXMuaXNFbXB0eSgpKTsKICAgICBhdXRvIHRvcCA9IExh
eW91dFVuaXQgeyBsaW5lcy5maXJzdCgpLnRvcCgpIH07CiAgICAgYXV0byBib3R0b20gPSBMYXlv
dXRVbml0IHsgbGluZXMubGFzdCgpLmJvdHRvbSgpICsgZm9ybWF0dGluZ1N0YXRlKCkuY2xlYXJH
YXBBZnRlckxhc3RMaW5lKCkgfTsKLQotICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRp
bmdDb250ZXh0IHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSB9Owot
ICAgIGlmIChhdXRvIGZsb2F0Qm90dG9tID0gZmxvYXRpbmdDb250ZXh0LmJvdHRvbSgpKSB7Ci0g
ICAgICAgIGJvdHRvbSA9IHN0ZDo6bWF4KCpmbG9hdEJvdHRvbSwgYm90dG9tKTsKLSAgICAgICAg
dG9wID0gc3RkOjptaW4oKmZsb2F0aW5nQ29udGV4dC50b3AoKSwgdG9wKTsKLSAgICB9CiAgICAg
cmV0dXJuIGJvdHRvbSAtIHRvcDsKIH0KIApAQCAtMjEyLDcgKzIwMiw3IEBAIHN0YXRpYyBzaXpl
X3QgaW5kZXhPZkZpcnN0SW5saW5lSXRlbUZvck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpM
aW5lQ29udGVudCYKICAgICByZXR1cm4gbGluZUNvbnRlbnRSYW5nZS5lbmQ7CiB9CiAKLXZvaWQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0
ZW1zLCBjb25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdl
LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRl
bXMsIGNvbnN0IExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2Us
IGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIEJsb2NrTGF5
b3V0U3RhdGUmIGJsb2NrTGF5b3V0U3RhdGUpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dFJh
bmdlLmlzRW1wdHkoKSk7CiAKQEAgLTIyMiw3ICsyMTIsNyBAQCB2b2lkIElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgY29uc3QgTGlu
ZUJ1aQogICAgIGF1dG8gbGluZUxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgY29uc3Ry
YWludHMubG9naWNhbFRvcCgpIH07CiAgICAgYXV0byBwcmV2aW91c0xpbmUgPSBzdGQ6Om9wdGlv
bmFsPExpbmVCdWlsZGVyOjpQcmV2aW91c0xpbmU+IHsgfTsKICAgICBhdXRvIHByZXZpb3VzTGlu
ZUxhc3RJbmxpbmVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4geyB9OwotICAgIGF1
dG8mIGZsb2F0aW5nU3RhdGUgPSBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOworICAg
IGF1dG8mIGZsb2F0aW5nU3RhdGUgPSBibG9ja0xheW91dFN0YXRlLmZsb2F0aW5nU3RhdGUoKTsK
ICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9h
dGluZ1N0YXRlIH07CiAgICAgYXV0byBmaXJzdElubGluZUl0ZW1OZWVkc0xheW91dCA9IG5lZWRz
TGF5b3V0UmFuZ2Uuc3RhcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IDM5NmYyYjViMGUxYi4uZGVjYTgzMzc1ZTQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTU3LDExICs1Nywx
MSBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5JiBmb3JtYXR0
aW5nR2VvbWV0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdRdWlya3MmIGZvcm1hdHRpbmdRdWly
a3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdRdWlya3M7IH0KIAot
ICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudEZvckludGVncmF0aW9uKGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCYsIGNvbnN0IEJsb2NrTGF5b3V0U3RhdGUmKTsKKyAgICB2b2lk
IGxheW91dEluRmxvd0NvbnRlbnRGb3JJbnRlZ3JhdGlvbihjb25zdCBDb25zdHJhaW50c0Zvcklu
Rmxvd0NvbnRlbnQmLCBCbG9ja0xheW91dFN0YXRlJik7CiAgICAgSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JJbnRlZ3JhdGlvbigp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgbGluZUxheW91dChJbmxpbmVJdGVtcyYsIGNvbnN0IExp
bmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UmLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNv
bnRlbnQmKTsKKyAgICB2b2lkIGxpbmVMYXlvdXQoSW5saW5lSXRlbXMmLCBjb25zdCBMaW5lQnVp
bGRlcjo6SW5saW5lSXRlbVJhbmdlJiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50
JiwgQmxvY2tMYXlvdXRTdGF0ZSYpOwogICAgIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9y
T3V0T2ZGbG93Q29udGVudChjb25zdCBGb3JtYXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3Qm
LCBMYXlvdXRQb2ludCBjb250ZW50Qm94VG9wTGVmdCk7CiAKICAgICB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNXaWR0aEZvckZvcm1hdHRpbmdSb290KGNvbnN0IEJveCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXggZTE1ZTkwMTBjODFkLi5mMDEw
YTFmMTg3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0YXRl
LmNwcApAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKElubGluZUZvcm1hdHRpbmdTdGF0ZSk7CiAKLUlubGluZUZvcm1hdHRp
bmdTdGF0ZTo6SW5saW5lRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYmIGZsb2F0
aW5nU3RhdGUsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKLSAgICA6IEZvcm1hdHRpbmdTdGF0
ZShXVEZNb3ZlKGZsb2F0aW5nU3RhdGUpLCBUeXBlOjpJbmxpbmUsIGxheW91dFN0YXRlKQorSW5s
aW5lRm9ybWF0dGluZ1N0YXRlOjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUoTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlKQorICAgIDogRm9ybWF0dGluZ1N0YXRlKFR5cGU6OklubGluZSwgbGF5b3V0U3Rh
dGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgK
aW5kZXggMjU0MmMxOWY5MGFmLi42NzNhMmRiZDhiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIERpc3BsYXlC
b3hlcyA9IFZlY3RvcjxJbmxpbmVEaXNwbGF5OjpCb3g+OwogY2xhc3MgSW5saW5lRm9ybWF0dGlu
Z1N0YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogcHVibGljOgotICAgIElubGluZUZvcm1hdHRp
bmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0ZT4mJiwgTGF5b3V0U3RhdGUmKTsKKyAgICBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUoTGF5b3V0U3RhdGUmKTsKICAgICB+SW5saW5lRm9ybWF0dGluZ1N0YXRl
KCk7CiAKICAgICBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMoKSB7IHJldHVybiBtX2lubGluZUl0
ZW1zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4
IDI2ZDliZDg4ZmI2ZC4uNzZiODJjNWNmYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
Rm9ybWF0dGluZ1N0YXRlLmNwcApAQCAtODYsOCArODYsOCBAQCBzdGF0aWMgVW5pcXVlUmVmPFRh
YmxlR3JpZD4gZW5zdXJlVGFibGVHcmlkKGNvbnN0IEVsZW1lbnRCb3gmIHRhYmxlQm94KQogfQog
CiAKLVRhYmxlRm9ybWF0dGluZ1N0YXRlOjpUYWJsZUZvcm1hdHRpbmdTdGF0ZShSZWY8RmxvYXRp
bmdTdGF0ZT4mJiBmbG9hdGluZ1N0YXRlLCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEVsZW1lbnRCb3gmIHRhYmxlQm94KQotICAgIDogRm9ybWF0dGluZ1N0YXRlKFdURk1vdmUoZmxv
YXRpbmdTdGF0ZSksIFR5cGU6OlRhYmxlLCBsYXlvdXRTdGF0ZSkKK1RhYmxlRm9ybWF0dGluZ1N0
YXRlOjpUYWJsZUZvcm1hdHRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEVsZW1lbnRCb3gmIHRhYmxlQm94KQorICAgIDogRm9ybWF0dGluZ1N0YXRlKFR5cGU6OlRhYmxl
LCBsYXlvdXRTdGF0ZSkKICAgICAsIG1fdGFibGVHcmlkKGVuc3VyZVRhYmxlR3JpZCh0YWJsZUJv
eCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXgg
ODgzYThjOGZkNzNlLi5mY2Y3ZTZiOWY0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9y
bWF0dGluZ1N0YXRlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFz
cyBUYWJsZUZvcm1hdHRpbmdTdGF0ZSA6IHB1YmxpYyBGb3JtYXR0aW5nU3RhdGUgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoVGFibGVGb3JtYXR0aW5nU3RhdGUpOwogcHVibGljOgotICAg
IFRhYmxlRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYmLCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEVsZW1lbnRCb3gmIHRhYmxlQm94KTsKKyAgICBUYWJsZUZvcm1hdHRpbmdTdGF0ZShM
YXlvdXRTdGF0ZSYsIGNvbnN0IEVsZW1lbnRCb3gmIHRhYmxlQm94KTsKICAgICB+VGFibGVGb3Jt
YXR0aW5nU3RhdGUoKTsKIAogICAgIFRhYmxlR3JpZCYgdGFibGVHcmlkKCkgeyByZXR1cm4gbV90
YWJsZUdyaWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNw
cAppbmRleCA1YjZhMmY0NWZiM2QuLjQwMDNiNDFkMzQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIgogCisj
aW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJCbG9ja0xheW91dFN0
YXRlLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
RXZlbnRSZWdpb24uaCIKQEAgLTc0LDYgKzc1LDcgQEAgbmFtZXNwYWNlIExheW91dEludGVncmF0
aW9uIHsKIExpbmVMYXlvdXQ6OkxpbmVMYXlvdXQoUmVuZGVyQmxvY2tGbG93JiBmbG93KQogICAg
IDogbV9ib3hUcmVlKGZsb3cpCiAgICAgLCBtX2xheW91dFN0YXRlKGZsb3cudmlldygpLmVuc3Vy
ZUxheW91dFN0YXRlKCkpCisgICAgLCBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlKGxheW91dFN0YXRl
KCkuZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKSkKICAgICAsIG1f
aW5saW5lRm9ybWF0dGluZ1N0YXRlKGxheW91dFN0YXRlKCkuZW5zdXJlSW5saW5lRm9ybWF0dGlu
Z1N0YXRlKHJvb3RMYXlvdXRCb3goKSkpCiB7CiB9CkBAIC04Miw2ICs4NCw3IEBAIExpbmVMYXlv
dXQ6On5MaW5lTGF5b3V0KCkKIHsKICAgICBjbGVhcklubGluZUNvbnRlbnQoKTsKICAgICBsYXlv
dXRTdGF0ZSgpLmRlc3Ryb3lJbmxpbmVGb3JtYXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKTsK
KyAgICBsYXlvdXRTdGF0ZSgpLmRlc3Ryb3lCbG9ja0Zvcm1hdHRpbmdTdGF0ZShyb290TGF5b3V0
Qm94KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb250ZW50UmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlcikKQEAgLTQ0MCw3ICs0NDMsOCBAQCB2b2lkIExpbmVMYXlv
dXQ6OmxheW91dCgpCiAgICAgLy8gRklYTUU6IERvIG5vdCBjbGVhciB0aGUgbGluZXMgYW5kIGJv
eGVzIGhlcmUgdW5jb25kaXRpb25hbGx5LCBidXQgY29uc3VsdCB3aXRoIHRoZSBkYW1hZ2Ugb2Jq
ZWN0IGluc3RlYWQuCiAgICAgY2xlYXJJbmxpbmVDb250ZW50KCk7CiAgICAgQVNTRVJUKG1faW5s
aW5lQ29udGVudENvbnN0cmFpbnRzKTsKLSAgICBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250
ZXh0IHsgcm9vdExheW91dEJveCwgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUsIG1fbGluZURhbWFn
ZS5nZXQoKSB9LmxheW91dEluRmxvd0NvbnRlbnRGb3JJbnRlZ3JhdGlvbigqbV9pbmxpbmVDb250
ZW50Q29uc3RyYWludHMsIHsgfSk7CisgICAgYXV0byBibG9ja0xheW91dFN0YXRlID0gTGF5b3V0
OjpCbG9ja0xheW91dFN0YXRlIHsgbV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRl
KCkgfTsKKyAgICBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0IHsgcm9vdExheW91dEJv
eCwgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUsIG1fbGluZURhbWFnZS5nZXQoKSB9LmxheW91dElu
Rmxvd0NvbnRlbnRGb3JJbnRlZ3JhdGlvbigqbV9pbmxpbmVDb250ZW50Q29uc3RyYWludHMsIGJs
b2NrTGF5b3V0U3RhdGUpOwogCiAgICAgY29uc3RydWN0Q29udGVudCgpOwogCkBAIC00NTUsNyAr
NDU5LDcgQEAgdm9pZCBMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RDb250ZW50KCkKIAogICAgIGF1dG8m
IGJsb2NrRmxvdyA9IGZsb3coKTsKICAgICBhdXRvJiByb290U3R5bGUgPSBibG9ja0Zsb3cuc3R5
bGUoKTsKLSAgICBhdXRvIGlzTGVmdFRvUmlnaHRGbG9hdGluZ1N0YXRlSW5saW5lRGlyZWN0aW9u
ID0gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKTsKKyAgICBhdXRvIGlzTGVmdFRvUmlnaHRGbG9hdGluZ1N0YXRlSW5saW5lRGly
ZWN0aW9uID0gbV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCkuaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpOwogICAgIGF1dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSByb290
U3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKICAgICBhdXRvIGlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlID0gcm9vdFN0eWxlLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7CiAg
ICAgZm9yIChhdXRvJiByZW5kZXJPYmplY3QgOiBtX2JveFRyZWUucmVuZGVyZXJzKCkpIHsKQEAg
LTU0Nyw3ICs1NTEsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OnByZXBhcmVMYXlvdXRTdGF0ZSgpCiAK
IHZvaWQgTGluZUxheW91dDo6cHJlcGFyZUZsb2F0aW5nU3RhdGUoKQogewotICAgIGF1dG8mIGZs
b2F0aW5nU3RhdGUgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCk7Cisg
ICAgYXV0byYgZmxvYXRpbmdTdGF0ZSA9IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdT
dGF0ZSgpOwogICAgIGZsb2F0aW5nU3RhdGUuY2xlYXIoKTsKIAogICAgIGlmICghZmxvdygpLmNv
bnRhaW5zRmxvYXRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aAppbmRleCBhZDdjY2VlZWJlZDMuLjYxYTUwYzRjYTQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oCkBAIC0xNDcsNiArMTQ3LDcgQEAgcHJpdmF0ZToKICAg
ICAKICAgICBCb3hUcmVlIG1fYm94VHJlZTsKICAgICBXZWFrUHRyPExheW91dDo6TGF5b3V0U3Rh
dGU+IG1fbGF5b3V0U3RhdGU7CisgICAgTGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgbV9i
bG9ja0Zvcm1hdHRpbmdTdGF0ZTsKICAgICBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYg
bV9pbmxpbmVGb3JtYXR0aW5nU3RhdGU7CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkNvbnN0
cmFpbnRzRm9ySW5saW5lQ29udGVudD4gbV9pbmxpbmVDb250ZW50Q29uc3RyYWludHM7CiAgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhcnQgb2YgTGF5b3V0U3RhdGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCBjOGU4NzVkMTFj
MDkuLmM3YjMyODBmNTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRCb3guY3BwCkBAIC05Miw2ICs5Miw5IEBAIGJvb2wgQm94Ojplc3RhYmxpc2hlc0Zv
cm1hdHRpbmdDb250ZXh0KCkgY29uc3QKIAogYm9vbCBCb3g6OmVzdGFibGlzaGVzQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0CiB7CisgICAgaWYgKGlzSW5saW5lSW50ZWdyYXRpb25Sb290
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgLy8gSUNCIGFsd2F5cyBjcmVhdGVzIGEg
bmV3IChpbml0YWwpIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KICAgICBpZiAoaXM8SW5pdGlh
bENvbnRhaW5pbmdCbG9jaz4oKnRoaXMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463502</attachid>
            <date>2022-11-12 09:32:29 -0800</date>
            <delta_ts>2022-11-12 13:11:20 -0800</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-247821-20221112093229.patch</filename>
            <type>text/plain</type>
            <size>38616</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA0MTM3Y2M4ZjY2NmQ3NzQ1NzJkOWYxNTBkN2Y4NzZiM2FjZWIxMDlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgMTEgTm92IDIwMjIgMTI6MDY6NDMgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtG
bG9hdHNdIEZsb2F0IGxheW91dCBpcyBCRkMgY29uY2VwdAogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI0NzgyMQoKUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCgpG
bG9hdHMgYWx3YXlzIGJlbG9uZyB0byBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KCjEuIE9u
bHkgQmxvY2tGb3JtYXR0aW5nU3RhdGUgc2hvdWxkIGluc3RhbnRpYXRlIGEgRmxvYXRpbmdTdGF0
ZSAoSUNCIGluIG1hbnkgY2FzZXMpLgoyLiBGbG9hdGluZ1N0YXRlIHNob3VsZCBiZSBwdXNoZWQg
dG8gdGhlIElubGluZUZvcm1hdHRpbmdDb250ZXh0IGFzIHBhcnQgb2YgdGhlIGJsb2NrIGxheW91
dCBzdGF0ZSAoaW5zdGVhZCBvZiBhZGRpbmcgaXQgdG8gdGhlIElubGluZUZvcm1hdHRpbmdTdGF0
ZSkuCjMuIFdoZW4gYSBibG9jayBjb250YWluZXIgZXN0YWJsaXNoZXMgYm90aCBCRkMgYW5kIElG
Qywgd2Ugc2hvdWxkIG5vdCBza2lwIGluc3RhbnRpYXRpbmcgdGhlIGFzc29jaWF0ZWQgQkZDIChG
SVhNRSkuCgooVGhlIGludGVncmF0aW9uIElGQyBjb2RlcGF0aCBub3cgZXhwbGljaXRseSBjcmVh
dGVzIHRoZSBwYXJlbnQgQkZDIHN0YXRlLiBUaGlzIGlzIG1vcmUgaW5saW5lIHdpdGggaG93IHRo
ZSBmdWxsIExGQyBsb2dpYyB3aWxsIGxvb2sgbGlrZS4pCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6
OkZvcm1hdHRpbmdTdGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0
ZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6OmZsb2F0aW5nU3RhdGUgY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHA6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUp
OgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3Rh
dGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlVGFibGVGb3JtYXR0aW5n
U3RhdGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlRmxleEZvcm1hdHRp
bmdTdGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6RmxvYXRpbmdTdGF0ZSk6CiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmg6CihXZWJDb3JlOjpMYXlv
dXQ6OkZsb2F0aW5nU3RhdGU6OnJvb3QgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGlu
Z1N0YXRlOjpjcmVhdGUpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0dlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6OkJsb2NrRm9ybWF0dGlu
Z1N0YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z1N0YXRlOjpmbG9hdGluZ1N0YXRlIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nU3RhdGU6OmZsb2F0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tMYXlvdXRTdGF0ZS5oOgooV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0xheW91dFN0YXRlOjpmbG9hdGluZ1N0YXRlKToKKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tMYXlvdXRTdGF0ZTo6QmxvY2tMYXlvdXRTdGF0ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaCBj
b25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9ybWF0dGluZ1N0
YXRlOjpGbGV4Rm9ybWF0dGluZ1N0YXRlKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5oOgoqIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElu
Rmxvd0NvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0SW5GbG93Q29udGVudEZvckludGVncmF0aW9uKToKKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRDb250ZW50SGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ1N0YXRlOjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3Jt
YXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdTdGF0ZTo6
VGFibGVGb3JtYXR0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6TGluZUxheW91dCk6CihX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6bGF5b3V0KToKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RDb250ZW50KToKKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwcmVwYXJlRmxvYXRpbmdTdGF0ZSk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0
YXRlLmNwcCAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0
ZS5oICAgICAgIHwgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAg
ICAgICAgICB8IDU3ICsrKysrLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRTdGF0ZS5oICAgICAgICAgICB8ICAxICsKIC4uLi9XZWJDb3JlL2xheW91dC9mbG9hdHMv
RmxvYXRpbmdTdGF0ZS5jcHAgICB8ICA3ICsrLQogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ1N0YXRlLmggIHwgMTAgKystLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwIHwgIDIgKy0KIC4uLi9ibG9jay9CbG9ja0Zvcm1hdHRpbmdTdGF0
ZS5jcHAgICAgICAgICAgICB8ICA1ICstCiAuLi4vYmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUu
aCAgICAgICAgICAgICAgfCAgNyArKy0KIC4uLi9ibG9jay9CbG9ja0xheW91dFN0YXRlLmggICAg
ICAgICAgICAgICAgICB8IDEzICsrKystCiAuLi4vYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5j
cHAgICAgICAgICAgICAgfCAxNSArKysrLQogLi4uL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5j
cHAgICAgICAgICAgICAgIHwgIDQgKy0KIC4uLi9mbGV4L0ZsZXhGb3JtYXR0aW5nU3RhdGUuaCAg
ICAgICAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcCAgICAgICAgfCAyNiArKystLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCAgICAgICAgICB8ICA0ICstCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0
ZS5jcHAgICAgICAgICAgfCAgNCArLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUu
aCAgICAgICAgICAgIHwgIDIgKy0KIC4uLi90YWJsZS9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHAg
ICAgICAgICAgICB8ICA0ICstCiAuLi4vdGFibGUvVGFibGVGb3JtYXR0aW5nU3RhdGUuaCAgICAg
ICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwICAgIHwgMTAgKysrLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aCAgICAgIHwgIDEgKwogLi4uL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNw
cCAgIHwgIDMgKwogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyAgICAgICAgICAgICAgICAg
IHwgIDQgKysKIDIzIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDEwMCBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IDA1
NWUwZDMyNGI5ZC4uZjBhYzA0YjllMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ1N0YXRlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgogCi0jaW5jbHVkZSAiRmxvYXRpbmdTdGF0ZS5oIgog
I2luY2x1ZGUgIkxheW91dEJveEdlb21ldHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KIApAQCAtMzUsOSArMzQsOCBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKEZvcm1hdHRpbmdTdGF0ZSk7CiAKLUZvcm1hdHRpbmdTdGF0
ZTo6Rm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYmIGZsb2F0aW5nU3RhdGUsIFR5
cGUgdHlwZSwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQorRm9ybWF0dGluZ1N0YXRlOjpGb3Jt
YXR0aW5nU3RhdGUoVHlwZSB0eXBlLCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiAgICAgOiBt
X2xheW91dFN0YXRlKGxheW91dFN0YXRlKQotICAgICwgbV9mbG9hdGluZ1N0YXRlKFdURk1vdmUo
ZmxvYXRpbmdTdGF0ZSkpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nU3RhdGUuaAppbmRleCA3YmZmMjQ4ZjBlNGIuLjJmY2NlZWJmNmFhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaApAQCAtMzMsMTUgKzMzLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBCb3g7
Ci1jbGFzcyBGbG9hdGluZ1N0YXRlOwogZW51bSBjbGFzcyBTdHlsZURpZmY7CiAKIGNsYXNzIEZv
cm1hdHRpbmdTdGF0ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9ybWF0dGluZ1N0YXRl
KTsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZvcm1hdHRpbmdTdGF0ZSk7CiBwdWJsaWM6
Ci0gICAgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxv
YXRpbmdTdGF0ZTsgfQotCiAgICAgdm9pZCBtYXJrTmVlZHNMYXlvdXQoY29uc3QgQm94JiwgU3R5
bGVEaWZmKTsKICAgICBib29sIG5lZWRzTGF5b3V0KGNvbnN0IEJveCYpOwogCkBAIC02OSwxMiAr
NjYsMTEgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgQmxv
Y2ssIElubGluZSwgVGFibGUsIEZsZXggfTsKLSAgICBGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0
aW5nU3RhdGU+JiYsIFR5cGUsIExheW91dFN0YXRlJik7CisgICAgRm9ybWF0dGluZ1N0YXRlKFR5
cGUsIExheW91dFN0YXRlJik7CiAgICAgfkZvcm1hdHRpbmdTdGF0ZSgpOwogCiBwcml2YXRlOgog
ICAgIExheW91dFN0YXRlJiBtX2xheW91dFN0YXRlOwotICAgIFJlZjxGbG9hdGluZ1N0YXRlPiBt
X2Zsb2F0aW5nU3RhdGU7CiAgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBJbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzPiBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3hlczsKICAgICBzdGQ6
Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IG1faW50cmluc2ljV2lkdGhDb25z
dHJhaW50czsKICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBXZWFrTGlzdEhhc2hTZXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4IGNmOGY2MTVkOGRjYi4uNTA1YmIwZDEz
MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKIAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRmxleEZv
cm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIkZsb2F0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRCb3hHZW9tZXRyeS5oIgpAQCAtMTU1LDc4ICsxNTQsNDggQEAgRmxleEZvcm1hdHRp
bmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmZvcm1hdHRpbmdTdGF0ZUZvckZsZXhGb3JtYXR0aW5nQ29u
dGV4dChjb25zdAogSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZW5zdXJlSW5s
aW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9v
dCkKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0KLSAgICBhdXRvIGNyZWF0ZSA9IFsmXSB7Ci0gICAgICAg
IC8vIElmIHRoZSBibG9jayBjb250YWluZXIgYm94IHRoYXQgaW5pdGlhdGVzIHRoaXMgaW5saW5l
IGZvcm1hdHRpbmcgY29udGV4dCBhbHNvIGVzdGFibGlzaGVzIGEgYmxvY2sgY29udGV4dCwgdGhl
IGZsb2F0cyBvdXRzaWRlIG9mIHRoZSBmb3JtYXR0aW5nIHJvb3QKLSAgICAgICAgLy8gc2hvdWxk
IG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgY29udGVudCBpbnNpZGUuCi0gICAgICAgIC8vIDxkaXYg
c3R5bGU9ImZsb2F0OiBsZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzogaGlkZGVuIj4g
PC0gaXMgYSBub24taW50cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gdHJp
Z2dlcnMgbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4KLSAgICAgICAgaWYgKGZv
cm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSB8
fCBmb3JtYXR0aW5nQ29udGV4dFJvb3QuaXNJbmxpbmVJbnRlZ3JhdGlvblJvb3QoKSkKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdT
dGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpLCAqdGhpcyk7Ci0KLSAg
ICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZm9ybWF0dGluZyBjb250ZXh0IGluaGVyaXRzIHRoZSBm
bG9hdHMgZnJvbSB0aGUgcGFyZW50IGZvcm1hdHRpbmcgY29udGV4dC4KLSAgICAgICAgLy8gRmlu
ZCB0aGUgZm9ybWF0dGluZyBzdGF0ZSBpbiB3aGljaCB0aGlzIGZvcm1hdHRpbmcgcm9vdCBsaXZl
cywgbm90IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQgdXNlIGl0cyBmbG9hdGluZyBzdGF0ZS4KLSAg
ICAgICAgYXV0byBwYXJlbnRGb3JtYXR0aW5nU3RhdGUgPSBbJl0gKCkgLT4gRm9ybWF0dGluZ1N0
YXRlJiB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGNvbnRhaW5pbmdCbG9jayA6IGNvbnRhaW5p
bmdCbG9ja0NoYWluKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoY29udGFpbmluZ0Jsb2NrLmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ0Nv
bnRleHQoY29udGFpbmluZ0Jsb2NrKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdTdGF0ZUZvckZv
cm1hdHRpbmdDb250ZXh0KEZvcm1hdHRpbmdDb250ZXh0Ojppbml0aWFsQ29udGFpbmluZ0Jsb2Nr
KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICB9OwotICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZvcm1hdHRpbmdTdGF0ZSgpLmZs
b2F0aW5nU3RhdGUoKSwgKnRoaXMpOwotICAgIH07Ci0KLSAgICByZXR1cm4gKm1faW5saW5lRm9y
bWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY3JlYXRlKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgcmV0dXJuICptX2lubGluZUZvcm1hdHRpbmdTdGF0ZXMuZW5zdXJl
KCZmb3JtYXR0aW5nQ29udGV4dFJvb3QsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPElubGluZUZv
cm1hdHRpbmdTdGF0ZT4oKnRoaXMpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIEJsb2NrRm9y
bWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3RhdGUoY29u
c3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KQogewogICAgIEFTU0VSVChmb3Jt
YXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwot
Ci0gICAgYXV0byBjcmVhdGUgPSBbJl0gewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9j
a0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5n
Q29udGV4dFJvb3QpLCAqdGhpcyk7Ci0gICAgfTsKLQotICAgIHJldHVybiAqbV9ibG9ja0Zvcm1h
dHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNyZWF0ZSkuaXRlcmF0
b3ItPnZhbHVlOworICAgIHJldHVybiAqbV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0
dGluZ1N0YXRlPigqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290KTsgfSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCiBUYWJsZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZVRhYmxl
Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkK
IHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzVGFibGVGb3Jt
YXR0aW5nQ29udGV4dCgpKTsKLQotICAgIGF1dG8gY3JlYXRlID0gWyZdIHsKLSAgICAgICAgLy8g
VGFibGUgZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGlu
ZyBzdGF0ZSAtYW5kIGl0IHN0YXlzIGVtcHR5LgotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
YWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0
aW5nQ29udGV4dFJvb3QpLCAqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKLSAgICB9Owot
Ci0gICAgcmV0dXJuICptX3RhYmxlRm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdD
b250ZXh0Um9vdCwgY3JlYXRlKS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICptX3RhYmxl
Rm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCwgWyZdIHsgcmV0
dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KCp0aGlzLCBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIEZsZXhGb3JtYXR0aW5nU3RhdGUm
IExheW91dFN0YXRlOjplbnN1cmVGbGV4Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRS
b290LmVzdGFibGlzaGVzRmxleEZvcm1hdHRpbmdDb250ZXh0KCkpOwogCi0gICAgYXV0byBjcmVh
dGUgPSBbJl0gewotICAgICAgICAvLyBGbGV4IGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0
YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUgLWFuZCBpdCBzdGF5cyBlbXB0eS4KLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxleEZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6
Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpLCAqdGhpcyk7Ci0gICAgfTsKLQog
ICAgIGlmIChpc0ZsZXhGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uKCkpIHsKICAgICAgICAg
aWYgKCFtX3Jvb3RGbGV4Rm9ybWF0dGluZ1N0YXRlRm9ySW50ZWdyYXRpb24pIHsKICAgICAgICAg
ICAgIEFTU0VSVCgmZm9ybWF0dGluZ0NvbnRleHRSb290ID09IG1fcm9vdENvbnRhaW5lci5wdHIo
KSk7Ci0gICAgICAgICAgICBtX3Jvb3RGbGV4Rm9ybWF0dGluZ1N0YXRlRm9ySW50ZWdyYXRpb24g
PSBjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fcm9vdEZsZXhGb3JtYXR0aW5nU3RhdGVGb3JJbnRl
Z3JhdGlvbiA9IG1ha2VVbmlxdWU8RmxleEZvcm1hdHRpbmdTdGF0ZT4oKnRoaXMpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiAqbV9yb290RmxleEZvcm1hdHRpbmdTdGF0ZUZvckludGVncmF0
aW9uOwogICAgIH0KIAotICAgIHJldHVybiAqbV9mbGV4Rm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUo
JmZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY3JlYXRlKS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0
dXJuICptX2ZsZXhGb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ0NvbnRleHRSb290
LCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxGbGV4Rm9ybWF0dGluZ1N0YXRlPigqdGhpcyk7IH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotdm9pZCBMYXlvdXRTdGF0ZTo6ZGVzdHJveUlubGluZUZv
cm1hdHRpbmdTdGF0ZShjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCit2
b2lkIExheW91dFN0YXRlOjpkZXN0cm95QmxvY2tGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVu
dEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KQogeworICAgIEFTU0VSVChmb3JtYXR0aW5nQ29u
dGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIG1faW5s
aW5lRm9ybWF0dGluZ1N0YXRlcy5yZW1vdmUoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiB9CiAK
K3ZvaWQgTGF5b3V0U3RhdGU6OmRlc3Ryb3lJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxl
bWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KQoreworICAgIEFTU0VSVChmb3JtYXR0aW5n
Q29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKTsKKyAgICBt
X2Jsb2NrRm9ybWF0dGluZ1N0YXRlcy5yZW1vdmUoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCk7Cit9
CisKIHZvaWQgTGF5b3V0U3RhdGU6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBMYXlvdXRTaXplJiB2
aWV3cG9ydFNpemUpCiB7CiAgICAgQVNTRVJUKGlzSW5saW5lRm9ybWF0dGluZ0NvbnRleHRJbnRl
Z3JhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKaW5kZXggYzY3OTc0NzI2
NjlmLi4yYWU1NDM3MzI3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCkBAIC02
OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIEZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0
YXRlRm9yRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ1Jvb3Qp
IGNvbnN0OwogCisgICAgdm9pZCBkZXN0cm95QmxvY2tGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxl
bWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKICAgICB2b2lkIGRlc3Ryb3lJbmxpbmVG
b3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsK
IAogICAgIGJvb2wgaGFzRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRp
bmdSb290KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMv
RmxvYXRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5n
U3RhdGUuY3BwCmluZGV4IGJlNTJiNTUzODIwOC4uMzU4MWE1MTkyN2Y0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKQEAgLTQ5LDExICs0OSwx
MiBAQCBGbG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW06OkZsb2F0SXRlbShQb3NpdGlvbiBwb3NpdGlv
biwgQm94R2VvbWV0cnkgYWJzb2x1dGVCb3hHZQogewogfQogCi1GbG9hdGluZ1N0YXRlOjpGbG9h
dGluZ1N0YXRlKExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgRWxlbWVudEJveCYgZm9y
bWF0dGluZ0NvbnRleHRSb290KQorRmxvYXRpbmdTdGF0ZTo6RmxvYXRpbmdTdGF0ZShMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEVsZW1lbnRCb3gmIGJsb2NrRm9ybWF0dGluZ0NvbnRl
eHRSb290KQogICAgIDogbV9sYXlvdXRTdGF0ZShsYXlvdXRTdGF0ZSkKLSAgICAsIG1fZm9ybWF0
dGluZ0NvbnRleHRSb290KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKLSAgICAsIG1faXNMZWZ0VG9S
aWdodERpcmVjdGlvbihmb3JtYXR0aW5nQ29udGV4dFJvb3Quc3R5bGUoKS5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkpCisgICAgLCBtX2Jsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290KGJsb2NrRm9y
bWF0dGluZ0NvbnRleHRSb290KQorICAgICwgbV9pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHRSb290LnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQog
eworICAgIEFTU0VSVChibG9ja0Zvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoKSk7CiB9CiAKIHZvaWQgRmxvYXRpbmdTdGF0ZTo6YXBwZW5kKEZs
b2F0SXRlbSBuZXdGbG9hdEl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxv
YXRpbmdTdGF0ZS5oCmluZGV4IGQ4YmRkMWNmMWNjYS4uODQ5OWMxOTdjNTE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaApAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkxheW91dEVsZW1lbnRCb3guaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NCwxMiArNDMsMTIgQEAgY2xhc3MgUmVjdDsKIC8v
IEZsb2F0aW5nU3RhdGUgaG9sZHMgdGhlIGZsb2F0aW5nIGJveGVzIGZvciBCRkMgdXNpbmcgdGhl
IEJGQydzIGlubGluZSBkaXJlY3Rpb24uCiAvLyBGbG9hdGluZ1N0YXRlIG1heSBiZSBpbmhlcml0
ZWQgYnkgbmVzdGVkIElGQ3Mgd2l0aCBtaXNtYXRhY2hpbmcgaW5saW5lIGRpcmVjdGlvbi4gSW4g
c3VjaCBjYXNlcyBmbG9hdGluZyBib3hlcwogLy8gYXJlIGFkZGVkIHRvIHRoZSBGbG9hdGluZ1N0
YXRlIGFzIGlmIHRoZXkgaGFkIG1hdGNoaW5nIGlubGluZSBkaXJlY3Rpb24uCi1jbGFzcyBGbG9h
dGluZ1N0YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8RmxvYXRpbmdTdGF0ZT4geworY2xhc3MgRmxv
YXRpbmdTdGF0ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChGbG9hdGluZ1N0YXRlKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZsb2F0aW5nU3RhdGU+IGNyZWF0ZShMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGbG9hdGluZ1N0YXRlKGxheW91dFN0YXRlLCBmb3JtYXR0
aW5nQ29udGV4dFJvb3QpKTsgfQorICAgIEZsb2F0aW5nU3RhdGUoTGF5b3V0U3RhdGUmLCBjb25z
dCBFbGVtZW50Qm94JiBibG9ja0Zvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAKLSAgICBjb25zdCBF
bGVtZW50Qm94JiByb290KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7
IH0KKyAgICBjb25zdCBFbGVtZW50Qm94JiByb290KCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja0Zv
cm1hdHRpbmdDb250ZXh0Um9vdDsgfQogCiAgICAgY2xhc3MgRmxvYXRJdGVtIHsKICAgICBwdWJs
aWM6CkBAIC05MiwxMSArOTEsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBGbG9hdGluZ0NvbnRleHQ7Ci0gICAgRmxvYXRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYsIGNv
bnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAgICAgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRTdGF0ZTsgfQogCiAgICAgTGF5
b3V0U3RhdGUmIG1fbGF5b3V0U3RhdGU7Ci0gICAgQ2hlY2tlZFJlZjxjb25zdCBFbGVtZW50Qm94
PiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsKKyAgICBDaGVja2VkUmVmPGNvbnN0IEVsZW1lbnRC
b3g+IG1fYmxvY2tGb3JtYXR0aW5nQ29udGV4dFJvb3Q7CiAgICAgRmxvYXRMaXN0IG1fZmxvYXRz
OwogICAgIGVudW0gY2xhc3MgUG9zaXRpb25UeXBlIHsKICAgICAgICAgTGVmdCA9IDEgPDwgMCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAzNzRjOTNmYzA0ZWQuLjMxMGQ2Njg2
Mjc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtNzk0LDcgKzc5NCw3IEBA
IENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wbGljYXRlZENh
c2VzKGNvbnN0IEJveCYgbGF5b3V0Qm94CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lh
bCAocXVpcms/KSBiZWhhdmlvciBzaW5jZSB0aGUgZG9jdW1lbnQgYm94IGlzIG5vdCBhIGZvcm1h
dHRpbmcgY29udGV4dCByb290IGFuZAogICAgICAgICAgICAgLy8gYWxsIHRoZSBmbG9hdCBib3hl
cyBlbmQgdXAgYXQgdGhlIElDQiBsZXZlbC4KICAgICAgICAgICAgIGF1dG8mIGluaXRpYWxDb250
YWluaW5nQmxvY2sgPSBGb3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbENvbnRhaW5pbmdCbG9jayhk
b2N1bWVudEJveCk7Ci0gICAgICAgICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5n
Q29udGV4dCB7IGZvcm1hdHRpbmdDb250ZXh0KCksIGxheW91dFN0YXRlKCkuZm9ybWF0dGluZ1N0
YXRlRm9yRm9ybWF0dGluZ0NvbnRleHQoaW5pdGlhbENvbnRhaW5pbmdCbG9jaykuZmxvYXRpbmdT
dGF0ZSgpIH07CisgICAgICAgICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29u
dGV4dCB7IGZvcm1hdHRpbmdDb250ZXh0KCksIGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRl
PihsYXlvdXRTdGF0ZSgpLmZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdDb250ZXh0KGluaXRp
YWxDb250YWluaW5nQmxvY2spKS5mbG9hdGluZ1N0YXRlKCkgfTsKICAgICAgICAgICAgIGlmIChh
dXRvIGZsb2F0Qm90dG9tID0gZmxvYXRpbmdDb250ZXh0LmJvdHRvbSgpKSB7CiAgICAgICAgICAg
ICAgICAgYm90dG9tID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oKmZsb2F0Qm90dG9tLCBib3R0b20p
OwogICAgICAgICAgICAgICAgIGF1dG8gZmxvYXRUb3AgPSBmbG9hdGluZ0NvbnRleHQudG9wKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IGRlMmNj
MzYyYmM2Yy4uMzg5NWM1YzVhYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ1N0YXRlLmNwcApAQCAtMzMsOCArMzMsOSBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKIAotQmxvY2tG
b3JtYXR0aW5nU3RhdGU6OkJsb2NrRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYm
IGZsb2F0aW5nU3RhdGUsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKLSAgICA6IEZvcm1hdHRp
bmdTdGF0ZShXVEZNb3ZlKGZsb2F0aW5nU3RhdGUpLCBUeXBlOjpCbG9jaywgbGF5b3V0U3RhdGUp
CitCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6QmxvY2tGb3JtYXR0aW5nU3RhdGUoTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBFbGVtZW50Qm94JiBibG9ja0Zvcm1hdHRpbmdDb250ZXh0Um9v
dCkKKyAgICA6IEZvcm1hdHRpbmdTdGF0ZShUeXBlOjpCbG9jaywgbGF5b3V0U3RhdGUpCisgICAg
LCBtX2Zsb2F0aW5nU3RhdGUobGF5b3V0U3RhdGUsIGJsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXgg
YzY4ODJjZDA5ZmM4Li41OGVkMDBiMWQ2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ1N0YXRlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CkBAIC0zNiw5
ICszNywxMiBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNsYXNzIEJsb2NrRm9ybWF0dGluZ1N0YXRl
IDogcHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChC
bG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CiBwdWJsaWM6Ci0gICAgQmxvY2tGb3JtYXR0aW5nU3RhdGUo
UmVmPEZsb2F0aW5nU3RhdGU+JiYsIExheW91dFN0YXRlJik7CisgICAgQmxvY2tGb3JtYXR0aW5n
U3RhdGUoTGF5b3V0U3RhdGUmLCBjb25zdCBFbGVtZW50Qm94JiBibG9ja0Zvcm1hdHRpbmdDb250
ZXh0Um9vdCk7CiAgICAgfkJsb2NrRm9ybWF0dGluZ1N0YXRlKCk7CiAKKyAgICBjb25zdCBGbG9h
dGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdGluZ1N0YXRl
OyB9CisgICAgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSgpIHsgcmV0dXJuIG1fZmxvYXRp
bmdTdGF0ZTsgfQorCiAgICAgdm9pZCBzZXRVc2VkVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBs
YXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbiYgdXNlZFZlcnRpY2FsTWFyZ2luKSB7
IG1fdXNlZFZlcnRpY2FsTWFyZ2lucy5zZXQobGF5b3V0Qm94LCB1c2VkVmVydGljYWxNYXJnaW4p
OyB9CiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luIHVzZWRWZXJ0aWNhbE1hcmdpbihjb25zdCBCb3gm
IGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV91c2VkVmVydGljYWxNYXJnaW5zLmdldChsYXlv
dXRCb3gpOyB9CiAgICAgYm9vbCBoYXNVc2VkVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBsYXlv
dXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZFZlcnRpY2FsTWFyZ2lucy5jb250YWlucyhsYXlv
dXRCb3gpOyB9CkBAIC00OCw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NsZWFyYW5j
ZShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV9jbGVhcmFuY2VTZXQuY29u
dGFpbnMobGF5b3V0Qm94KTsgfQogCiBwcml2YXRlOgorICAgIEZsb2F0aW5nU3RhdGUgbV9mbG9h
dGluZ1N0YXRlOwogICAgIEhhc2hNYXA8Q2hlY2tlZFJlZjxjb25zdCBCb3g+LCBVc2VkVmVydGlj
YWxNYXJnaW4+IG1fdXNlZFZlcnRpY2FsTWFyZ2luczsKICAgICBIYXNoU2V0PENoZWNrZWRSZWY8
Y29uc3QgQm94Pj4gbV9jbGVhcmFuY2VTZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0xheW91dFN0YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTGF5b3V0
U3RhdGUuaAppbmRleCA4YzM2MWRkMzQyNWQuLmU2MTM1MGJlZGZkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0xheW91dFN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0xheW91dFN0YXRlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBMYXlvdXQgewogCkBAIC0zMywyMCArMzUsMjkgQEAgY2xhc3MgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDsKIC8vIFRoaXMgY2xhc3MgaG9sZHMgYmxvY2sgbGV2ZWwgaW5mb3JtYXRpb24gc2hh
cmVkIGFjcm9zcyBjaGlsZCBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0cy4gCiBjbGFzcyBCbG9j
a0xheW91dFN0YXRlIHsKIHB1YmxpYzoKKyAgICBCbG9ja0xheW91dFN0YXRlKEZsb2F0aW5nU3Rh
dGUmKTsKKworICAgIEZsb2F0aW5nU3RhdGUmIGZsb2F0aW5nU3RhdGUoKSB7IHJldHVybiBtX2Zs
b2F0aW5nU3RhdGU7IH0KKwogICAgIHN0cnVjdCBMaW5lQ2xhbXAgewogICAgICAgICBzaXplX3Qg
bV9tYXhpbXVtTnVtYmVyT2ZMaW5lcyB7IDAgfTsKICAgICAgICAgc2l6ZV90IG1fbnVtYmVyT2ZW
aXNpYmxlTGluZXMgeyAwIH07CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPExpbmVDbGFtcD4g
bGluZUNsYW1wKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQ2xhbXA7IH0KIAotICAgIC8vIEZJWE1F
OiBNb3ZlIEZsb2F0aW5nU3RhdGUgaGVyZS4KIHByaXZhdGU6CiAgICAgZnJpZW5kIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ7CiAKICAgICB2b2lkIHNldExpbmVDbGFtcChMaW5lQ2xhbXAgbGluZUNs
YW1wKSB7IG1fbGluZUNsYW1wID0gbGluZUNsYW1wOyB9CiAKKyAgICBGbG9hdGluZ1N0YXRlJiBt
X2Zsb2F0aW5nU3RhdGU7CiAgICAgc3RkOjpvcHRpb25hbDxMaW5lQ2xhbXA+IG1fbGluZUNsYW1w
OwogfTsKIAoraW5saW5lIEJsb2NrTGF5b3V0U3RhdGU6OkJsb2NrTGF5b3V0U3RhdGUoRmxvYXRp
bmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSkKKyAgICA6IG1fZmxvYXRpbmdTdGF0ZShmbG9hdGluZ1N0
YXRlKQoreworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNl
LmNwcAppbmRleCBiMzlhNDRmZjExZWYuLjI3N2EzODJiZGFlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxh
cHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCkBAIC0zMSw3ICszMSw5IEBACiAjaW5jbHVkZSAi
RmxvYXRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2lu
Y2x1ZGUgIkxheW91dEJveC5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5pbmdCbG9ja0NoYWlu
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRFbGVtZW50Qm94LmgiCisjaW5jbHVkZSAiTGF5
b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oIgogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCkBAIC00MTEsOCArNDEzLDE3IEBAIGJvb2wgQmxvY2tN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChjb25zdCBFbGVtZW50Qm94JiBs
YXlvdXRCb3gpIGNvCiAgICAgICAgICAgICAgICAgaWYgKCFpbmxpbmVGb3JtYXR0aW5nU3RhdGUu
bGluZXMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgICAgICAvLyBBbnkgZmxvYXQgYm94IGluIHRoaXMgZm9ybWF0dGluZyBjb250ZXh0
IHByZXZlbnRzIGNvbGxhcHNpbmcgdGhyb3VnaC4KLSAgICAgICAgICAgICAgICBhdXRvJiBmbG9h
dHMgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpLmZsb2F0cygpOwotICAg
ICAgICAgICAgICAgIGZvciAoYXV0byYgZmxvYXRJdGVtIDogZmxvYXRzKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBwYXJlbnRCbG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IFsmXSAoKSAtPiBCbG9ja0Zv
cm1hdHRpbmdTdGF0ZSYgeworICAgICAgICAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFi
bGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGxheW91dFN0YXRlLmZvcm1hdHRpbmdTdGF0ZUZvckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQobGF5b3V0Qm94KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBjb250YWluaW5n
QmxvY2sgOiBjb250YWluaW5nQmxvY2tDaGFpbihsYXlvdXRCb3gpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5n
Q29udGV4dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXlvdXRTdGF0
ZS5mb3JtYXR0aW5nU3RhdGVGb3JCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnRhaW5pbmdCbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXlvdXRTdGF0ZS5mb3Jt
YXR0aW5nU3RhdGVGb3JCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KEZvcm1hdHRpbmdDb250ZXh0Ojpp
bml0aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkpOworICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBwYXJlbnRCbG9ja0Zvcm1hdHRp
bmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKS5mbG9hdHMoKSkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoZmxvYXRJdGVtLmlzSW5Gb3JtYXR0aW5nQ29udGV4dE9mKGxheW91dEJveCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IDYzOGQ2ZjBkYTVmZi4u
M2IzYzE0MWE5NWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nU3RhdGUuY3Bw
CkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoRmxleEZvcm1hdHRpbmdTdGF0ZSk7CiAKLUZsZXhGb3JtYXR0aW5nU3RhdGU6
OkZsZXhGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+JiYgZmxvYXRpbmdTdGF0ZSwg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQotICAgIDogRm9ybWF0dGluZ1N0YXRlKFdURk1vdmUo
ZmxvYXRpbmdTdGF0ZSksIFR5cGU6OkZsZXgsIGxheW91dFN0YXRlKQorRmxleEZvcm1hdHRpbmdT
dGF0ZTo6RmxleEZvcm1hdHRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCisgICAg
OiBGb3JtYXR0aW5nU3RhdGUoVHlwZTo6RmxleCwgbGF5b3V0U3RhdGUpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4
Rm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IGQxNjllNDgyNGQ4Mi4uMmM3NzMx
ZWMxYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ1N0YXRlLmgKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBGbGV4Rm9ybWF0dGluZ1N0YXRlIDog
cHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChGbGV4
Rm9ybWF0dGluZ1N0YXRlKTsKIHB1YmxpYzoKLSAgICBGbGV4Rm9ybWF0dGluZ1N0YXRlKFJlZjxG
bG9hdGluZ1N0YXRlPiYmLCBMYXlvdXRTdGF0ZSYpOworICAgIEZsZXhGb3JtYXR0aW5nU3RhdGUo
TGF5b3V0U3RhdGUmKTsKICAgICB+RmxleEZvcm1hdHRpbmdTdGF0ZSgpOwogCiAgICAgY29uc3Qg
YXV0byYgbGluZXMoKSBjb25zdCB7IHJldHVybiBtX2xpbmVzOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNmU0OTU1ZGNiZTYxLi4w
NjUyYWJhNWE5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKQEAgLTE0MCwxOSArMTQwLDIyIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250
CiAgICAgY29sbGVjdENvbnRlbnRJZk5lZWRlZCgpOwogCiAgICAgYXV0byYgaW5saW5lSXRlbXMg
PSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwotICAgIGxpbmVMYXlvdXQoaW5saW5l
SXRlbXMsIHsgMCwgaW5saW5lSXRlbXMuc2l6ZSgpIH0sIHsgY29uc3RyYWludHMsIHsgfSB9KTsK
KyAgICAvLyBGSVhNRTogTGV0IHRoZSBjYWxsZXIgcGFzcyBpbiB0aGUgYmxvY2sgbGF5b3V0IHN0
YXRlLiAKKyAgICBhdXRvIGZsb2F0aW5nU3RhdGUgPSBGbG9hdGluZ1N0YXRlIHsgbGF5b3V0U3Rh
dGUoKSwgRm9ybWF0dGluZ0NvbnRleHQ6OmluaXRpYWxDb250YWluaW5nQmxvY2socm9vdCgpKSB9
OworICAgIGF1dG8gYmxvY2tMYXlvdXRTdGF0ZSA9IEJsb2NrTGF5b3V0U3RhdGUgeyBmbG9hdGlu
Z1N0YXRlIH07CisgICAgbGluZUxheW91dChpbmxpbmVJdGVtcywgeyAwLCBpbmxpbmVJdGVtcy5z
aXplKCkgfSwgeyBjb25zdHJhaW50cywgeyB9IH0sIGJsb2NrTGF5b3V0U3RhdGUpOwogICAgIGNv
bXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQoZm9ybWF0dGluZ1N0YXRlKCku
b3V0T2ZGbG93Qm94ZXMoKSwgeyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQs
IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSB9KTsKICAgICBJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXI6OmNvbXB1dGVJc0ZpcnN0SXNMYXN0Qm94Rm9ySW5saW5lQ29udGVudChmb3JtYXR0aW5n
U3RhdGUoKS5ib3hlcygpKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBm
b3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKLXZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnRGb3JJbnRlZ3JhdGlvbihjb25zdCBD
b25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBCbG9ja0xheW91
dFN0YXRlJikKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRl
bnRGb3JJbnRlZ3JhdGlvbihjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0
cmFpbnRzLCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQogewogICAgIGludmFs
aWRhdGVGb3JtYXR0aW5nU3RhdGUoKTsKICAgICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAg
ICAgYXV0byYgaW5saW5lSXRlbXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwog
ICAgIGF1dG8gaW5saW5lQ29uc3RyYWludHMgPSBkb3duY2FzdDxDb25zdHJhaW50c0ZvcklubGlu
ZUNvbnRlbnQ+KGNvbnN0cmFpbnRzKTsKLSAgICBsaW5lTGF5b3V0KGlubGluZUl0ZW1zLCB7IDAs
IGlubGluZUl0ZW1zLnNpemUoKSB9LCBpbmxpbmVDb25zdHJhaW50cyk7CisgICAgbGluZUxheW91
dChpbmxpbmVJdGVtcywgeyAwLCBpbmxpbmVJdGVtcy5zaXplKCkgfSwgaW5saW5lQ29uc3RyYWlu
dHMsIGJsb2NrTGF5b3V0U3RhdGUpOwogICAgIGNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9m
Rmxvd0NvbnRlbnQoZm9ybWF0dGluZ1N0YXRlKCkub3V0T2ZGbG93Qm94ZXMoKSwgeyBpbmxpbmVD
b25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGlubGluZUNvbnN0cmFpbnRzLmxv
Z2ljYWxUb3AoKSB9KTsKICAgICBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbXB1dGVJ
c0ZpcnN0SXNMYXN0Qm94Rm9ySW5saW5lQ29udGVudChmb3JtYXR0aW5nU3RhdGUoKS5ib3hlcygp
KTsKIH0KQEAgLTE3NCwyNCArMTc3LDExIEBAIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhCiAKIExh
eW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRDb250ZW50SGVpZ2h0KCkgY29u
c3QKIHsKLSAgICAvLyAxMC42LjcgJ0F1dG8nIGhlaWdodHMgZm9yIGJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dCByb290cwotCi0gICAgLy8gSWYgaXQgb25seSBoYXMgaW5saW5lLWxldmVsIGNoaWxk
cmVuLCB0aGUgaGVpZ2h0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSB0b3Agb2YgdGhlIHRv
cG1vc3QgbGluZSBib3ggYW5kIHRoZSBib3R0b20gb2YgdGhlIGJvdHRvbW1vc3QgbGluZSBib3gu
Ci0KLSAgICAvLyBJbiBhZGRpdGlvbiwgaWYgdGhlIGVsZW1lbnQgaGFzIGFueSBmbG9hdGluZyBk
ZXNjZW5kYW50cyB3aG9zZSBib3R0b20gbWFyZ2luIGVkZ2UgaXMgYmVsb3cgdGhlIGVsZW1lbnQn
cyBib3R0b20gY29udGVudCBlZGdlLAotICAgIC8vIHRoZW4gdGhlIGhlaWdodCBpcyBpbmNyZWFz
ZWQgdG8gaW5jbHVkZSB0aG9zZSBlZGdlcy4gT25seSBmbG9hdHMgdGhhdCBwYXJ0aWNpcGF0ZSBp
biB0aGlzIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBhcmUgdGFrZW4KLSAgICAvLyBpbnRvIGFj
Y291bnQsIGUuZy4sIGZsb2F0cyBpbnNpZGUgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGRlc2NlbmRh
bnRzIG9yIG90aGVyIGZsb2F0cyBhcmUgbm90LgogICAgIGF1dG8mIGxpbmVzID0gZm9ybWF0dGlu
Z1N0YXRlKCkubGluZXMoKTsKICAgICAvLyBFdmVuIGVtcHR5IGNvbnRlbnQgZ2VuZXJhdGVzIGEg
bGluZS4KICAgICBBU1NFUlQoIWxpbmVzLmlzRW1wdHkoKSk7CiAgICAgYXV0byB0b3AgPSBMYXlv
dXRVbml0IHsgbGluZXMuZmlyc3QoKS50b3AoKSB9OwogICAgIGF1dG8gYm90dG9tID0gTGF5b3V0
VW5pdCB7IGxpbmVzLmxhc3QoKS5ib3R0b20oKSArIGZvcm1hdHRpbmdTdGF0ZSgpLmNsZWFyR2Fw
QWZ0ZXJMYXN0TGluZSgpIH07Ci0KLSAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5n
Q29udGV4dCB7ICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKS5mbG9hdGluZ1N0YXRlKCkgfTsKLSAg
ICBpZiAoYXV0byBmbG9hdEJvdHRvbSA9IGZsb2F0aW5nQ29udGV4dC5ib3R0b20oKSkgewotICAg
ICAgICBib3R0b20gPSBzdGQ6Om1heCgqZmxvYXRCb3R0b20sIGJvdHRvbSk7Ci0gICAgICAgIHRv
cCA9IHN0ZDo6bWluKCpmbG9hdGluZ0NvbnRleHQudG9wKCksIHRvcCk7Ci0gICAgfQogICAgIHJl
dHVybiBib3R0b20gLSB0b3A7CiB9CiAKQEAgLTIxMiw3ICsyMDIsNyBAQCBzdGF0aWMgc2l6ZV90
IGluZGV4T2ZGaXJzdElubGluZUl0ZW1Gb3JOZXh0TGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGlu
ZUNvbnRlbnQmCiAgICAgcmV0dXJuIGxpbmVDb250ZW50UmFuZ2UuZW5kOwogfQogCi12b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVt
cywgY29uc3QgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwg
Y29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cykKK3ZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1z
LCBjb25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBj
b25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBCbG9ja0xheW91
dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXRSYW5n
ZS5pc0VtcHR5KCkpOwogCkBAIC0yMjIsNyArMjEyLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIGNvbnN0IExpbmVC
dWkKICAgICBhdXRvIGxpbmVMb2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7IGNvbnN0cmFp
bnRzLmxvZ2ljYWxUb3AoKSB9OwogICAgIGF1dG8gcHJldmlvdXNMaW5lID0gc3RkOjpvcHRpb25h
bDxMaW5lQnVpbGRlcjo6UHJldmlvdXNMaW5lPiB7IH07CiAgICAgYXV0byBwcmV2aW91c0xpbmVM
YXN0SW5saW5lSXRlbUluZGV4ID0gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsgfTsKLSAgICBhdXRv
JiBmbG9hdGluZ1N0YXRlID0gZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsKKyAgICBh
dXRvJiBmbG9hdGluZ1N0YXRlID0gYmxvY2tMYXlvdXRTdGF0ZS5mbG9hdGluZ1N0YXRlKCk7CiAg
ICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyAqdGhpcywgZmxvYXRp
bmdTdGF0ZSB9OwogICAgIGF1dG8gZmlyc3RJbmxpbmVJdGVtTmVlZHNMYXlvdXQgPSBuZWVkc0xh
eW91dFJhbmdlLnN0YXJ0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaAppbmRleCAzOTZmMmI1YjBlMWIuLmRlY2E4MzM3NWU0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC01NywxMSArNTcsMTEg
QEAgcHVibGljOgogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSYgZm9ybWF0dGlu
Z0dlb21ldHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nR2VvbWV0
cnk7IH0KICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzJiBmb3JtYXR0aW5nUXVpcmtz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nUXVpcmtzOyB9CiAKLSAg
ICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnRGb3JJbnRlZ3JhdGlvbihjb25zdCBDb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQmLCBjb25zdCBCbG9ja0xheW91dFN0YXRlJik7CisgICAgdm9pZCBs
YXlvdXRJbkZsb3dDb250ZW50Rm9ySW50ZWdyYXRpb24oY29uc3QgQ29uc3RyYWludHNGb3JJbkZs
b3dDb250ZW50JiwgQmxvY2tMYXlvdXRTdGF0ZSYpOwogICAgIEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9ySW50ZWdyYXRpb24oKTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGxpbmVMYXlvdXQoSW5saW5lSXRlbXMmLCBjb25zdCBMaW5l
QnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250
ZW50Jik7CisgICAgdm9pZCBsaW5lTGF5b3V0KElubGluZUl0ZW1zJiwgY29uc3QgTGluZUJ1aWxk
ZXI6OklubGluZUl0ZW1SYW5nZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYs
IEJsb2NrTGF5b3V0U3RhdGUmKTsKICAgICB2b2lkIGNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91
dE9mRmxvd0NvbnRlbnQoY29uc3QgRm9ybWF0dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0Jiwg
TGF5b3V0UG9pbnQgY29udGVudEJveFRvcExlZnQpOwogCiAgICAgdm9pZCBjb21wdXRlSW50cmlu
c2ljV2lkdGhGb3JGb3JtYXR0aW5nUm9vdChjb25zdCBCb3gmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IGUxNWU5MDEwYzgxZC4uZjAxMGEx
ZjE4N2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5j
cHAKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogCi1JbmxpbmVGb3JtYXR0aW5n
U3RhdGU6OklubGluZUZvcm1hdHRpbmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0ZT4mJiBmbG9hdGlu
Z1N0YXRlLCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCi0gICAgOiBGb3JtYXR0aW5nU3RhdGUo
V1RGTW92ZShmbG9hdGluZ1N0YXRlKSwgVHlwZTo6SW5saW5lLCBsYXlvdXRTdGF0ZSkKK0lubGlu
ZUZvcm1hdHRpbmdTdGF0ZTo6SW5saW5lRm9ybWF0dGluZ1N0YXRlKExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSkKKyAgICA6IEZvcm1hdHRpbmdTdGF0ZShUeXBlOjpJbmxpbmUsIGxheW91dFN0YXRl
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCmlu
ZGV4IDI1NDJjMTlmOTBhZi4uNjczYTJkYmQ4YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nU3RhdGUuaApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBEaXNwbGF5Qm94
ZXMgPSBWZWN0b3I8SW5saW5lRGlzcGxheTo6Qm94PjsKIGNsYXNzIElubGluZUZvcm1hdHRpbmdT
dGF0ZSA6IHB1YmxpYyBGb3JtYXR0aW5nU3RhdGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKIHB1YmxpYzoKLSAgICBJbmxpbmVGb3JtYXR0aW5n
U3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+JiYsIExheW91dFN0YXRlJik7CisgICAgSW5saW5lRm9y
bWF0dGluZ1N0YXRlKExheW91dFN0YXRlJik7CiAgICAgfklubGluZUZvcm1hdHRpbmdTdGF0ZSgp
OwogCiAgICAgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKCkgeyByZXR1cm4gbV9pbmxpbmVJdGVt
czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmNwcAppbmRleCAy
NmQ5YmQ4OGZiNmQuLjc2YjgyYzVjZmMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZv
cm1hdHRpbmdTdGF0ZS5jcHAKQEAgLTg2LDggKzg2LDggQEAgc3RhdGljIFVuaXF1ZVJlZjxUYWJs
ZUdyaWQ+IGVuc3VyZVRhYmxlR3JpZChjb25zdCBFbGVtZW50Qm94JiB0YWJsZUJveCkKIH0KIAog
Ci1UYWJsZUZvcm1hdHRpbmdTdGF0ZTo6VGFibGVGb3JtYXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5n
U3RhdGU+JiYgZmxvYXRpbmdTdGF0ZSwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBF
bGVtZW50Qm94JiB0YWJsZUJveCkKLSAgICA6IEZvcm1hdHRpbmdTdGF0ZShXVEZNb3ZlKGZsb2F0
aW5nU3RhdGUpLCBUeXBlOjpUYWJsZSwgbGF5b3V0U3RhdGUpCitUYWJsZUZvcm1hdHRpbmdTdGF0
ZTo6VGFibGVGb3JtYXR0aW5nU3RhdGUoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBF
bGVtZW50Qm94JiB0YWJsZUJveCkKKyAgICA6IEZvcm1hdHRpbmdTdGF0ZShUeXBlOjpUYWJsZSwg
bGF5b3V0U3RhdGUpCiAgICAgLCBtX3RhYmxlR3JpZChlbnN1cmVUYWJsZUdyaWQodGFibGVCb3gp
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDg4
M2E4YzhmZDczZS4uZmNmN2U2YjlmNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdTdGF0ZS5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogY2xhc3Mg
VGFibGVGb3JtYXR0aW5nU3RhdGUgOiBwdWJsaWMgRm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKIHB1YmxpYzoKLSAgICBU
YWJsZUZvcm1hdHRpbmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0ZT4mJiwgTGF5b3V0U3RhdGUmLCBj
b25zdCBFbGVtZW50Qm94JiB0YWJsZUJveCk7CisgICAgVGFibGVGb3JtYXR0aW5nU3RhdGUoTGF5
b3V0U3RhdGUmLCBjb25zdCBFbGVtZW50Qm94JiB0YWJsZUJveCk7CiAgICAgflRhYmxlRm9ybWF0
dGluZ1N0YXRlKCk7CiAKICAgICBUYWJsZUdyaWQmIHRhYmxlR3JpZCgpIHsgcmV0dXJuIG1fdGFi
bGVHcmlkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
aW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAK
aW5kZXggNWI2YTJmNDVmYjNkLi40MDAzYjQxZDM0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKIAorI2lu
Y2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiQmxvY2tMYXlvdXRTdGF0
ZS5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkV2
ZW50UmVnaW9uLmgiCkBAIC03NCw2ICs3NSw3IEBAIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlv
biB7CiBMaW5lTGF5b3V0OjpMaW5lTGF5b3V0KFJlbmRlckJsb2NrRmxvdyYgZmxvdykKICAgICA6
IG1fYm94VHJlZShmbG93KQogICAgICwgbV9sYXlvdXRTdGF0ZShmbG93LnZpZXcoKS5lbnN1cmVM
YXlvdXRTdGF0ZSgpKQorICAgICwgbV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZShsYXlvdXRTdGF0ZSgp
LmVuc3VyZUJsb2NrRm9ybWF0dGluZ1N0YXRlKHJvb3RMYXlvdXRCb3goKSkpCiAgICAgLCBtX2lu
bGluZUZvcm1hdHRpbmdTdGF0ZShsYXlvdXRTdGF0ZSgpLmVuc3VyZUlubGluZUZvcm1hdHRpbmdT
dGF0ZShyb290TGF5b3V0Qm94KCkpKQogewogfQpAQCAtODIsNiArODQsNyBAQCBMaW5lTGF5b3V0
Ojp+TGluZUxheW91dCgpCiB7CiAgICAgY2xlYXJJbmxpbmVDb250ZW50KCk7CiAgICAgbGF5b3V0
U3RhdGUoKS5kZXN0cm95SW5saW5lRm9ybWF0dGluZ1N0YXRlKHJvb3RMYXlvdXRCb3goKSk7Cisg
ICAgbGF5b3V0U3RhdGUoKS5kZXN0cm95QmxvY2tGb3JtYXR0aW5nU3RhdGUocm9vdExheW91dEJv
eCgpKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzQ29udGVudFJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIpCkBAIC00NDAsNyArNDQzLDggQEAgdm9pZCBMaW5lTGF5b3V0
OjpsYXlvdXQoKQogICAgIC8vIEZJWE1FOiBEbyBub3QgY2xlYXIgdGhlIGxpbmVzIGFuZCBib3hl
cyBoZXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGNvbnN1bHQgd2l0aCB0aGUgZGFtYWdlIG9iamVj
dCBpbnN0ZWFkLgogICAgIGNsZWFySW5saW5lQ29udGVudCgpOwogICAgIEFTU0VSVChtX2lubGlu
ZUNvbnRlbnRDb25zdHJhaW50cyk7Ci0gICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCB7IHJvb3RMYXlvdXRCb3gsIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLCBtX2xpbmVEYW1hZ2Uu
Z2V0KCkgfS5sYXlvdXRJbkZsb3dDb250ZW50Rm9ySW50ZWdyYXRpb24oKm1faW5saW5lQ29udGVu
dENvbnN0cmFpbnRzLCB7IH0pOworICAgIGF1dG8gYmxvY2tMYXlvdXRTdGF0ZSA9IExheW91dDo6
QmxvY2tMYXlvdXRTdGF0ZSB7IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgp
IH07CisgICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB7IHJvb3RMYXlvdXRCb3gs
IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0KCkgfS5sYXlvdXRJbkZs
b3dDb250ZW50Rm9ySW50ZWdyYXRpb24oKm1faW5saW5lQ29udGVudENvbnN0cmFpbnRzLCBibG9j
a0xheW91dFN0YXRlKTsKIAogICAgIGNvbnN0cnVjdENvbnRlbnQoKTsKIApAQCAtNDU1LDcgKzQ1
OSw3IEBAIHZvaWQgTGluZUxheW91dDo6Y29uc3RydWN0Q29udGVudCgpCiAKICAgICBhdXRvJiBi
bG9ja0Zsb3cgPSBmbG93KCk7CiAgICAgYXV0byYgcm9vdFN0eWxlID0gYmxvY2tGbG93LnN0eWxl
KCk7Ci0gICAgYXV0byBpc0xlZnRUb1JpZ2h0RmxvYXRpbmdTdGF0ZUlubGluZURpcmVjdGlvbiA9
IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCk7CisgICAgYXV0byBpc0xlZnRUb1JpZ2h0RmxvYXRpbmdTdGF0ZUlubGluZURpcmVj
dGlvbiA9IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKTsKICAgICBhdXRvIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gcm9vdFN0
eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAgICAgYXV0byBpc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSA9IHJvb3RTdHlsZS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpOwogICAg
IGZvciAoYXV0byYgcmVuZGVyT2JqZWN0IDogbV9ib3hUcmVlLnJlbmRlcmVycygpKSB7CkBAIC01
NDcsNyArNTUxLDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwcmVwYXJlTGF5b3V0U3RhdGUoKQogCiB2
b2lkIExpbmVMYXlvdXQ6OnByZXBhcmVGbG9hdGluZ1N0YXRlKCkKIHsKLSAgICBhdXRvJiBmbG9h
dGluZ1N0YXRlID0gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOworICAg
IGF1dG8mIGZsb2F0aW5nU3RhdGUgPSBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3Rh
dGUoKTsKICAgICBmbG9hdGluZ1N0YXRlLmNsZWFyKCk7CiAKICAgICBpZiAoIWZsb3coKS5jb250
YWluc0Zsb2F0cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgK
aW5kZXggYWQ3Y2NlZWViZWQzLi42MWE1MGM0Y2E0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgQm94VHJlZSBtX2JveFRyZWU7CiAgICAgV2Vha1B0cjxMYXlvdXQ6OkxheW91dFN0YXRl
PiBtX2xheW91dFN0YXRlOworICAgIExheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGUmIG1fYmxv
Y2tGb3JtYXR0aW5nU3RhdGU7CiAgICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1f
aW5saW5lRm9ybWF0dGluZ1N0YXRlOwogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpDb25zdHJh
aW50c0ZvcklubGluZUNvbnRlbnQ+IG1faW5saW5lQ29udGVudENvbnN0cmFpbnRzOwogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXJ0IG9mIExheW91dFN0YXRlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKaW5kZXggYzhlODc1ZDExYzA5
Li5jN2IzMjgwZjU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Qm94LmNwcApAQCAtOTIsNiArOTIsOSBAQCBib29sIEJveDo6ZXN0YWJsaXNoZXNGb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0CiAKIGJvb2wgQm94Ojplc3RhYmxpc2hlc0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQoKSBjb25zdAogeworICAgIGlmIChpc0lubGluZUludGVncmF0aW9uUm9vdCgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIC8vIElDQiBhbHdheXMgY3JlYXRlcyBhIG5l
dyAoaW5pdGFsKSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuCiAgICAgaWYgKGlzPEluaXRpYWxD
b250YWluaW5nQmxvY2s+KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCBhNDMxNzUwMjg3ZDAuLjIwNWU1ZDFmNjJhZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CkBAIC00OTk0LDYgKzQ5OTQsMTAgQEAgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9hYnNv
bHV0ZS1wb3NpdGlvbmVkLWJveC13aXRoLWlubGluZS1zaWJsaW5nLmh0bWwgWwogZmFzdC9sYXlv
dXRmb3JtYXR0aW5nY29udGV4dC9ibG9jay1vbmx5L2Zsb2F0cy1hbmQtYmxvY2stZm9ybWF0dGlu
Zy1yb290cy5odG1sIFsgU2tpcCBdCiBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb2F0
LWF2b2lkZXItYXZhaWxhYmxlLWhvcml6b250YWwtc3BhY2UyLmh0bWwgWyBTa2lwIF0KIGZhc3Qv
bGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvYXQtYXZvaWRlci13aXRoLWlubGluZS1jb250ZW50
Lmh0bWwgWyBTa2lwIF0KKyMgbmVlZHMgQmxvY2tMYXlvdXRTdGF0ZSBzdXBwb3J0CitmYXN0L2xh
eW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb2F0LWF2b2lkaW5nLWJyLWxhc3QtbGluZS5odG1sIFsg
U2tpcCBdCitmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb2F0LWF2b2lkaW5nLWJyLXNp
bXBsZS5odG1sIFsgU2tpcCBdCitmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2ludHJ1c2l2
ZS1mbG9hdHMtYW5kLXN0cmV0Y2h5LWxpbmVzLXNpbXBsZS5odG1sIFsgU2tpcCBdCiAKICMgTmVl
ZHMgZGlzcGxheSBib3ggc3VwcG9ydC4KIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxl
eC1ib3gtc2ltcGxlLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>