<?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>266153</bug_id>
          
          <creation_ts>2023-12-09 13:55:40 -0800</creation_ts>
          <short_desc>[IFC][Ruby] Add support for ruby align on bidi content</short_desc>
          <delta_ts>2023-12-10 08:43:13 -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>1998347</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-12-09 13:55:40 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1998350</commentid>
    <comment_count>1</comment_count>
      <attachid>468955</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-12-09 14:22:05 -0800</bug_when>
    <thetext>Created attachment 468955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1998353</commentid>
    <comment_count>2</comment_count>
      <attachid>468957</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-12-09 14:53:54 -0800</bug_when>
    <thetext>Created attachment 468957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1998441</commentid>
    <comment_count>3</comment_count>
      <attachid>468964</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-12-10 06:49:03 -0800</bug_when>
    <thetext>Created attachment 468964
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1998452</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-12-10 08:42:38 -0800</bug_when>
    <thetext>Committed 271836@main (0d53a80e5f55): &lt;https://commits.webkit.org/271836@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 468964.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1998453</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-12-10 08:43:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/119462479&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468955</attachid>
            <date>2023-12-09 14:22:05 -0800</date>
            <delta_ts>2023-12-09 14:53:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-266153-20231209142204.patch</filename>
            <type>text/plain</type>
            <size>27093</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAxYTEyOGM1OTg3OWNiYTA1M2RhNjM4MWJmZTBkYTcxOGQ2OGE4MjIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBEZWMgMjAyMyAxMzo1NTo1OCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtJRkNdW1J1
YnldIEFkZCBzdXBwb3J0IGZvciBydWJ5IGFsaWduIG9uIGJpZGkgY29udGVudAogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NjE1MwoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgpUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgInJ1YnktYWxpZ246IHNwYWNl
LWFyb3VuZCIgb24gYm90aCBiaWRpIGFuZCBub24tYmlkaSBjb250ZW50LgoKInJ1YnktYWxpZ246
IHNwYWNlLWFyb3VuZCIgY29uc2lzdHMgb2YgMiBhZGp1c3RtZW50cyBhdCBydW4gbGV2ZWwuCi0g
cnVuIHNwYWNpbmcgYXQganVzdGlmaWNhdGlvbiBvcHBvcnR1bml0aWVzIChzaW1pbGFyIHRvIHRl
eHQtYWxpZ246IGp1c3RpZnkpCi0gY29udGVudCBvZmZzZXR0aW5nIHRvIGRpc3RyaWJ1dGUgb25l
IGV4dHJhIGp1c3RpZmljYXRpb24gb3Bwb3J0dW5pdHkgc3BhY2UgYmVmb3JlL2FmdGVyIGJhc2Ug
Y29udGVudAoKSW4gdGhpcyBwYXRjaCB3ZSBzdGFydCBjb21wdXRpbmcgdGhlIG9mZnNldCB2YWx1
ZXMgYXQgc3RlcCAjMSBhbmQgcGFzcyB0aGVtIG92ZXIgdG8gSW5saW5lQ29udGVudEJ1aWxkZXIg
d2hlcmUgdGhlIGZpbmFsIHJ1YnkgcHJvY2Vzc2luZyBoYXBwZW5zICh1c2luZyB2aXN1YWwgb3Jk
ZXIpLgpJbmxpbmVDb250ZW50QWxpZ25lciB0YWtlcyB0aGVzZSBvZmZzZXQgdmFsdWVzIGFuZCBh
ZGp1c3RzIChhbGlnbnMpIHRoZSBkaXNwbGF5IGJveGVzIGFjY29yZGluZ2x5LgoKV2hhdCBtYWtl
cyBpdCBhIGJpdCBtb3JlIHZlcmJvc2UgaXMgdGhlIGZhY3QgdGhhdCB3aGlsZSBub24tYmlkaSBi
YXNlIHJ1bnMgaGF2ZSB0aGUgY29ycmVjdCBzcGFjaW5nIChlLmcuIHdoZW4gYW5ub3RhdGlvbiBp
cyB3aWRlciB0aGFuIHRoZSBiYXNlKSwgd2UgbG9zZSB0aGF0IGluZm9ybWF0aW9uIGF0CnZpc3Vh
bCByZW9yZGVyaW5nICg8LSB3ZSBlc3NlbnRpYWxseSBoYXZlIGEgZmFzdCBwYXRoIGZvciBub24t
YmlkaSBjb250ZW50LCB3aGVyZSBhcyB3ZSBidWlsZCB0aGUgTGluZSBmb3IgbGluZSBicmVha2lu
ZyB3ZSBhbHNvIGNvbXB1dGUgaG9yaXpvbnRhbCBjb250ZW50IHBvc2l0aW9ucykKSXQgc2ltcGx5
IG1lYW5zIHRoYXQgd2hpbGUgbm9uLWJpZGkgY29udGVudCwgb2Zmc2V0dGluZyBtZWFucyBqdXN0
IG1vdmluZyBjb250ZW50IGluc2lkZSB0aGUgYmFzZSB3aXRob3V0IHB1c2hpbmcgYWRqYWNlbnQg
Y29udGVudC9leHBhbmRpbmcgZW5jbG9zaW5nIGlubGluZSBib3hlcywKYmlkaSBjb250ZW50IG5l
ZWRzIGJvdGggKHNlZSBBZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlKS4KCiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFs
aWduZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpzaGlmdERpc3BsYXlCb3gpOgooV2ViQ29yZTo6
TGF5b3V0OjpleHBhbmRJbmxpbmVCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjphbGlnbm1lbnRPZmZz
ZXQpOgooV2ViQ29yZTo6TGF5b3V0OjpleHBhbmRJbmxpbmVCb3hXaXRoRGVzY2VuZGFudHMpOgoo
V2ViQ29yZTo6TGF5b3V0OjpzaGlmdFJ1YnlCYXNlQ29udGVudEJ5QWxpZ25tZW50T2Zmc2V0KToK
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEFsaWduZXI6OmFwcGx5UnVieUFsaWduU3Bh
Y2VBcm91bmQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QWxpZ25lcjo6YXBwbHlS
dWJ5QmFzZUFsaWdubWVudE9mZnNldCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRB
bGlnbmVyOjphcHBseVJ1YnlBbGlnbik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGF5b3V0SW5s
aW5lQ29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvTGluZUxheW91dFJlc3VsdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwOgooV2ViQ29y
ZTo6TGF5b3V0OjpUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50
KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NSdWJ5Q29udGVudCk6CiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHA6CihXZWJDb3JlOjpM
YXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250ZW50
KToKKFdlYkNvcmU6OkxheW91dDo6UnVieUZvcm1hdHRpbmdDb250ZXh0OjphcHBseVJ1YnlBbGln
bik6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YXBwbHlBbGlnbm1l
bnRPZmZzZXRMaXN0KToKKFdlYkNvcmU6OkxheW91dDo6YXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250
ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5oOgotLS0KIC4uLi9pbmxpbmUvSW5s
aW5lQ29udGVudEFsaWduZXIuY3BwICAgICAgICAgICB8IDE0OCArKysrKysrKysrKysrKysrLS0K
IC4uLi9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuaCAgICAgICAgICAgICB8ICAgNiArLQog
Li4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oICAgIHwgICAxICsKIC4u
Li9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8ICAgMiArCiAuLi4v
aW5saW5lL0xpbmVMYXlvdXRSZXN1bHQuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogLi4uL2lu
bGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcCAgICAgIHwgICAxICsKIC4uLi9kaXNw
bGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAgICB8ICAgOCArLQogLi4uL2Rpc3Bs
YXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggICAgIHwgICAyICstCiAuLi4vaW5saW5l
L3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcCAgICAgfCAgMjkgKysrLQogLi4uL2lubGlu
ZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5oICAgICAgIHwgICA2ICstCiAxMCBmaWxlcyBj
aGFuZ2VkLCAxODUgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29u
dGVudEFsaWduZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuY3BwCmluZGV4IGRkYWYzYWUzZDFmOC4uNmUz
ZGNmMjY1N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QWxpZ25lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIu
Y3BwCkBAIC0zMSw2ICszMSwxMDQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBM
YXlvdXQgewogCitzdGF0aWMgaW5saW5lIHZvaWQgc2hpZnREaXNwbGF5Qm94KElubGluZURpc3Bs
YXk6OkJveCYgZGlzcGxheUJveCwgSW5saW5lTGF5b3V0VW5pdCBvZmZzZXQsIElubGluZUZvcm1h
dHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKK3sKKyAgICBpZiAoIW9mZnNl
dCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBp
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5yb290KCkuc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpOworICAgIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gZGlzcGxheUJveC5tb3ZlSG9y
aXpvbnRhbGx5KG9mZnNldCkgOiBkaXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7Cisg
ICAgaWYgKCFkaXNwbGF5Qm94LmlzVGV4dE9yU29mdExpbmVCcmVhaygpICYmICFkaXNwbGF5Qm94
LmlzUm9vdElubGluZUJveCgpKSB7CisgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gaW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goZGlzcGxheUJveC5sYXlvdXRCb3goKSk7
CisgICAgICAgIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gYm94R2VvbWV0cnkubW92ZUhvcml6
b250YWxseShMYXlvdXRVbml0IHsgb2Zmc2V0IH0pIDogYm94R2VvbWV0cnkubW92ZVZlcnRpY2Fs
bHkoTGF5b3V0VW5pdCB7IG9mZnNldCB9KTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBleHBhbmRJbmxpbmVCb3goSW5saW5lTGF5b3V0VW5pdCBleHBhbnNpb24sIElubGluZURpc3Bs
YXk6OkJveCYgZGlzcGxheUJveCwgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1h
dHRpbmdDb250ZXh0KQoreworICAgIEFTU0VSVChkaXNwbGF5Qm94LmlzSW5saW5lQm94KCkpOwor
ICAgIGlmICghZXhwYW5zaW9uKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBpc0hvcml6b250
YWxXcml0aW5nTW9kZSA9IGlubGluZUZvcm1hdHRpbmdDb250ZXh0LnJvb3QoKS5zdHlsZSgpLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CisgICAgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBk
aXNwbGF5Qm94LmV4cGFuZEhvcml6b250YWxseShleHBhbnNpb24pIDogZGlzcGxheUJveC5leHBh
bmRWZXJ0aWNhbGx5KGV4cGFuc2lvbik7CisgICAgaWYgKCFkaXNwbGF5Qm94LmlzVGV4dE9yU29m
dExpbmVCcmVhaygpICYmICFkaXNwbGF5Qm94LmlzUm9vdElubGluZUJveCgpKSB7CisgICAgICAg
IGF1dG8mIGJveEdlb21ldHJ5ID0gaW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JC
b3goZGlzcGxheUJveC5sYXlvdXRCb3goKSk7CisgICAgICAgIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlID8gYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGJveEdlb21ldHJ5LmNvbnRlbnRC
b3hXaWR0aCgpICsgTGF5b3V0VW5pdCB7IGV4cGFuc2lvbiB9KSA6IGJveEdlb21ldHJ5LnNldENv
bnRlbnRCb3hIZWlnaHQoYm94R2VvbWV0cnkuY29udGVudEJveEhlaWdodCgpICsgTGF5b3V0VW5p
dCB7IGV4cGFuc2lvbiB9KTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgSW5saW5lTGF5b3V0
VW5pdCBhbGlnbm1lbnRPZmZzZXQoYXV0byYgbGF0eW91dEJveCwgYXV0byYgYWxpZ25tZW50T2Zm
c2V0TGlzdCkKK3sKKyAgICBhdXRvIGFsaWdubWVudE9mZnNldEVudHJ5ID0gYWxpZ25tZW50T2Zm
c2V0TGlzdC5maW5kKCZsYXR5b3V0Qm94KTsKKyAgICByZXR1cm4gYWxpZ25tZW50T2Zmc2V0RW50
cnkgIT0gYWxpZ25tZW50T2Zmc2V0TGlzdC5lbmQoKSA/IGFsaWdubWVudE9mZnNldEVudHJ5LT52
YWx1ZSA6IDAuZjsKK30KKworc3RydWN0IElubGluZUJveEluZGV4QW5kRXhwYW5zaW9uIHsKKyAg
ICBzaXplX3QgaW5kZXggeyAwIH07CisgICAgSW5saW5lTGF5b3V0VW5pdCBleHBhbnNpb24geyAw
LmYgfTsKK307CitzdGF0aWMgSW5saW5lQm94SW5kZXhBbmRFeHBhbnNpb24gZXhwYW5kSW5saW5l
Qm94V2l0aERlc2NlbmRhbnRzKHNpemVfdCBpbmxpbmVCb3hJbmRleCwgSW5saW5lRGlzcGxheTo6
Qm94ZXMmIGRpc3BsYXlCb3hlcywgY29uc3QgSGFzaE1hcDxjb25zdCBCb3gqLCBJbmxpbmVMYXlv
dXRVbml0PiYgYWxpZ25tZW50T2Zmc2V0TGlzdCwgIElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBp
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKK3sKKyAgICBpZiAoaW5saW5lQm94SW5kZXggPj0gZGlz
cGxheUJveGVzLnNpemUoKSB8fCAhZGlzcGxheUJveGVzW2lubGluZUJveEluZGV4XS5pc0lubGlu
ZUJveCgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
eyBpbmxpbmVCb3hJbmRleCwgeyB9IH07CisgICAgfQorICAgIGF1dG8mIGlubGluZUJveCA9IGRp
c3BsYXlCb3hlc1tpbmxpbmVCb3hJbmRleF0ubGF5b3V0Qm94KCk7CisgICAgYXV0byBkZXNjZW5k
YW50RXhwYW5zaW9uID0gSW5saW5lTGF5b3V0VW5pdCB7IDAuZiB9OworICAgIHNpemVfdCBpbmRl
eCA9IGlubGluZUJveEluZGV4ICsgMTsKKyAgICB3aGlsZSAoaW5kZXggPCBkaXNwbGF5Qm94ZXMu
c2l6ZSgpICYmICZkaXNwbGF5Qm94ZXNbaW5kZXhdLmxheW91dEJveCgpLnBhcmVudCgpID09ICZp
bmxpbmVCb3gpIHsKKyAgICAgICAgaWYgKGRpc3BsYXlCb3hlc1tpbmRleF0uaXNJbmxpbmVCb3go
KSkgeworICAgICAgICAgICAgYXV0byBpbmRleEFuZEV4cGFuc2lvbiA9IGV4cGFuZElubGluZUJv
eFdpdGhEZXNjZW5kYW50cyhpbmRleCwgZGlzcGxheUJveGVzLCBhbGlnbm1lbnRPZmZzZXRMaXN0
LCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CisgICAgICAgICAgICBpbmRleCA9IGluZGV4QW5k
RXhwYW5zaW9uLmluZGV4OworICAgICAgICAgICAgZGVzY2VuZGFudEV4cGFuc2lvbiArPSBpbmRl
eEFuZEV4cGFuc2lvbi5leHBhbnNpb247CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorICAgICAgICArK2luZGV4OworICAgIH0KKyAgICBhdXRvIHRvdGFsRXhwYW5zaW9uID0gMiAq
IGFsaWdubWVudE9mZnNldChpbmxpbmVCb3gsIGFsaWdubWVudE9mZnNldExpc3QpICsgZGVzY2Vu
ZGFudEV4cGFuc2lvbjsKKyAgICBpZiAoaW5saW5lQm94SW5kZXgpIHsKKyAgICAgICAgLy8gUm9v
dCBpbmxpbmUgYm94IGhhcyB0aGUgY29ycmVjdCAoaW5mbGF0ZWQpIGxvZ2ljYWwgd2lkdGguCisg
ICAgICAgIGV4cGFuZElubGluZUJveCh0b3RhbEV4cGFuc2lvbiwgZGlzcGxheUJveGVzW2lubGlu
ZUJveEluZGV4XSwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOworICAgIH0KKyAgICByZXR1cm4g
eyBpbmRleCwgdG90YWxFeHBhbnNpb24gfTsKK30KKworc3RydWN0IEJhc2VJbmRleEFuZE9mZnNl
dCB7CisgICAgc2l6ZV90IGluZGV4IHsgMCB9OworICAgIElubGluZUxheW91dFVuaXQgb2Zmc2V0
IHsgMC5mIH07Cit9Oworc3RhdGljIEJhc2VJbmRleEFuZE9mZnNldCBzaGlmdFJ1YnlCYXNlQ29u
dGVudEJ5QWxpZ25tZW50T2Zmc2V0KEJhc2VJbmRleEFuZE9mZnNldCBiYXNlSW5kZXhBbmRPZmZz
ZXQsIElubGluZURpc3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMsIGNvbnN0IEhhc2hNYXA8Y29u
c3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExpc3QsIElubGluZUZv
cm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKK3sKKyAgICBhdXRvIGJh
c2VJbmRleCA9IGJhc2VJbmRleEFuZE9mZnNldC5pbmRleDsKKyAgICBpZiAoYmFzZUluZGV4ID49
IGRpc3BsYXlCb3hlcy5zaXplKCkgfHwgIWRpc3BsYXlCb3hlc1tiYXNlSW5kZXhdLmxheW91dEJv
eCgpLmlzUnVieUJhc2UoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIHsgYmFzZUluZGV4QW5kT2Zmc2V0LmluZGV4LCB7IH0gfTsKKyAgICB9CisKKyAg
ICAvLyBTaGlmdCBiYXNlIGNvbnRlbnQgd2l0aGluIHRoZSBiYXNlIChubyByZXNpemUpIGFzIHBh
cnQgb2YgdGhlIGFsaWdubWVudCBwcm9jZXNzLgorICAgIGF1dG8mIHJ1YnlCYXNlQm94ID0gZGlz
cGxheUJveGVzW2Jhc2VJbmRleF0ubGF5b3V0Qm94KCk7CisgICAgYXV0byYgcnVieUJveCA9IHJ1
YnlCYXNlQm94LnBhcmVudCgpOworICAgIGF1dG8gYmFzZU9mZnNldCA9IGJhc2VJbmRleEFuZE9m
ZnNldC5vZmZzZXQ7CisgICAgYXV0byBiYXNlQ29udGVudE9mZnNldCA9IGFsaWdubWVudE9mZnNl
dChydWJ5QmFzZUJveCwgYWxpZ25tZW50T2Zmc2V0TGlzdCk7CisgICAgc2l6ZV90IGJhc2VDb250
ZW50SW5kZXggPSBiYXNlSW5kZXggKyAxOworCisgICAgd2hpbGUgKGJhc2VDb250ZW50SW5kZXgg
PCBkaXNwbGF5Qm94ZXMuc2l6ZSgpKSB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBkaXNw
bGF5Qm94ZXNbYmFzZUNvbnRlbnRJbmRleF07CisgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGRp
c3BsYXlCb3gubGF5b3V0Qm94KCk7CisgICAgICAgIGlmICgmbGF5b3V0Qm94LnBhcmVudCgpID09
ICZydWJ5Qm94IHx8ICZsYXlvdXRCb3gucGFyZW50KCkgPT0gJnJ1YnlCb3gucGFyZW50KCkpIHsK
KyAgICAgICAgICAgIC8vIE5vdCBpbiB0aGlzIHJ1YnkgYmFzZSBhbnltb3JlLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNSdWJ5QW5ub3Rh
dGlvbkJveCgpKQorICAgICAgICAgICAgc2hpZnREaXNwbGF5Qm94KGRpc3BsYXlCb3gsIGJhc2VP
ZmZzZXQgKyBiYXNlQ29udGVudE9mZnNldCwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOworICAg
ICAgICBpZiAobGF5b3V0Qm94LmlzUnVieUJhc2UoKSkgeworICAgICAgICAgICAgYmFzZUNvbnRl
bnRJbmRleCA9IHNoaWZ0UnVieUJhc2VDb250ZW50QnlBbGlnbm1lbnRPZmZzZXQoeyBiYXNlQ29u
dGVudEluZGV4LCBiYXNlT2Zmc2V0ICsgYmFzZUNvbnRlbnRPZmZzZXQgfSwgZGlzcGxheUJveGVz
LCBhbGlnbm1lbnRPZmZzZXRMaXN0LCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkuaW5kZXg7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICArK2Jhc2VDb250ZW50SW5k
ZXg7CisgICAgfQorICAgIHJldHVybiB7IGJhc2VDb250ZW50SW5kZXgsIDIgKiBiYXNlQ29udGVu
dE9mZnNldCB9OworfQorCiBzdGF0aWMgdm9pZCBjb21wdXRlZEV4cGFuc2lvbnMoY29uc3QgTGlu
ZTo6UnVuTGlzdCYgcnVucywgV1RGOjpSYW5nZTxzaXplX3Q+IHJ1blJhbmdlLCBzaXplX3QgaGFu
Z2luZ1RyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCwgRXhwYW5zaW9uSW5mbyYgZXhwYW5zaW9uSW5m
bykKIHsKICAgICAvLyBDb2xsZWN0IGFuZCBkaXN0cmlidXRlIHRoZSBleHBhbnNpb24gb3Bwb3J0
dW5pdGllcy4KQEAgLTE0NiwyMSArMjQ0LDUxIEBAIElubGluZUxheW91dFVuaXQgSW5saW5lQ29u
dGVudEFsaWduZXI6OmFwcGx5VGV4dEFsaWduSnVzdGlmeShMaW5lOjpSdW5MaXN0JiBydW5zCiAg
ICAgcmV0dXJuIGFwcGx5RXhwYW5zaW9uT25SYW5nZShydW5zLCBmdWxsUmFuZ2UsIGV4cGFuc2lv
biwgc3BhY2VUb0Rpc3RyaWJ1dGUpOwogfQogCi12b2lkIElubGluZUNvbnRlbnRBbGlnbmVyOjph
cHBseVJ1YnlBbGlnbihMaW5lOjpSdW5MaXN0JiBydW5zLCBXVEY6OlJhbmdlPHNpemVfdD4gcnVi
eUJhc2VSYW5nZSwgSW5saW5lTGF5b3V0VW5pdCBzcGFjZVRvRGlzdHJpYnV0ZSwgc2l6ZV90IGhh
bmdpbmdUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGgpCitJbmxpbmVMYXlvdXRVbml0IElubGluZUNv
bnRlbnRBbGlnbmVyOjphcHBseVJ1YnlBbGlnblNwYWNlQXJvdW5kKExpbmU6OlJ1bkxpc3QmIHJ1
bnMsIFdURjo6UmFuZ2U8c2l6ZV90PiByYW5nZSwgSW5saW5lTGF5b3V0VW5pdCBzcGFjZVRvRGlz
dHJpYnV0ZSkKIHsKLSAgICBpZiAocnVieUJhc2VSYW5nZS5kaXN0YW5jZSgpIDw9IDEpCi0gICAg
ICAgIHJldHVybjsKKyAgICBpZiAocnVucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaWYgKHNwYWNl
VG9EaXN0cmlidXRlIDw9IDApCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGV4cGFu
c2lvbiA9IEV4cGFuc2lvbkluZm8geyB9OworICAgIGNvbXB1dGVkRXhwYW5zaW9ucyhydW5zLCBy
YW5nZSwgeyB9LCBleHBhbnNpb24pOworICAgIC8vIEFueXRoaW5nIHRvIGRpc3RyaWJ1dGU/Cisg
ICAgaWYgKCFleHBhbnNpb24ub3Bwb3J0dW5pdHlDb3VudCkKKyAgICAgICAgcmV0dXJuIHNwYWNl
VG9EaXN0cmlidXRlIC8gMjsKICAgICAvLyBGSVhNRTogcnVieS1hbGlnbjogc3BhY2UtYXJvdW5k
IG9ubHkKICAgICAvLyBBcyBmb3Igc3BhY2UtYmV0d2VlbiBleGNlcHQgdGhhdCB0aGVyZSBleGlz
dHMgYW4gZXh0cmEganVzdGlmaWNhdGlvbiBvcHBvcnR1bml0aWVzIHdob3NlIHNwYWNlIGlzIGRp
c3RyaWJ1dGVkIGhhbGYgYmVmb3JlIGFuZCBoYWxmIGFmdGVyIHRoZSBydWJ5IGNvbnRlbnQuCi0g
ICAgYXV0byBiYXNlQ29udGVudFJ1blJhbmdlID0gV1RGOjpSYW5nZTxzaXplX3Q+IHsgcnVieUJh
c2VSYW5nZS5iZWdpbigpICsgMSwgcnVieUJhc2VSYW5nZS5lbmQoKSAtIDEgfTsKLSAgICBhdXRv
IGV4cGFuc2lvbiA9IEV4cGFuc2lvbkluZm8geyB9OwotICAgIGNvbXB1dGVkRXhwYW5zaW9ucyhy
dW5zLCBiYXNlQ29udGVudFJ1blJhbmdlLCBoYW5naW5nVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3Ro
LCBleHBhbnNpb24pOworICAgIGF1dG8gZXh0cmFFeHBhbnNpb25PcHBvcnR1bml0eVNwYWNlID0g
c3BhY2VUb0Rpc3RyaWJ1dGUgLyAoZXhwYW5zaW9uLm9wcG9ydHVuaXR5Q291bnQgKyAxKTsKKyAg
ICBhcHBseUV4cGFuc2lvbk9uUmFuZ2UocnVucywgcmFuZ2UsIGV4cGFuc2lvbiwgc3BhY2VUb0Rp
c3RyaWJ1dGUgLSBleHRyYUV4cGFuc2lvbk9wcG9ydHVuaXR5U3BhY2UpOworICAgIHJldHVybiBl
eHRyYUV4cGFuc2lvbk9wcG9ydHVuaXR5U3BhY2UgLyAyOworfQogCi0gICAgaWYgKGV4cGFuc2lv
bi5vcHBvcnR1bml0eUNvdW50KSB7Ci0gICAgICAgIGF1dG8gY29udGVudExvZ2ljYWxMZWZ0T2Zm
c2V0ID0gc3BhY2VUb0Rpc3RyaWJ1dGUgLyAoZXhwYW5zaW9uLm9wcG9ydHVuaXR5Q291bnQgKyAx
KSAvIDI7Ci0gICAgICAgIHNwYWNlVG9EaXN0cmlidXRlIC09ICgyICogY29udGVudExvZ2ljYWxM
ZWZ0T2Zmc2V0KTsKLSAgICAgICAgYXBwbHlFeHBhbnNpb25PblJhbmdlKHJ1bnMsIGJhc2VDb250
ZW50UnVuUmFuZ2UsIGV4cGFuc2lvbiwgc3BhY2VUb0Rpc3RyaWJ1dGUpOwordm9pZCBJbmxpbmVD
b250ZW50QWxpZ25lcjo6YXBwbHlSdWJ5QmFzZUFsaWdubWVudE9mZnNldChJbmxpbmVEaXNwbGF5
OjpCb3hlcyYgZGlzcGxheUJveGVzLCBjb25zdCBIYXNoTWFwPGNvbnN0IEJveCosIElubGluZUxh
eW91dFVuaXQ+JiBhbGlnbm1lbnRPZmZzZXRMaXN0LCBBZGp1c3RDb250ZW50T25seUluc2lkZVJ1
YnlCYXNlIGFkanVzdENvbnRlbnRPbmx5SW5zaWRlUnVieUJhc2UsIElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoIWFsaWdubWVu
dE9mZnNldExpc3QuaXNFbXB0eSgpKTsKKworICAgIGF1dG8gY29udGVudE9mZnNldCA9IElubGlu
ZUxheW91dFVuaXQgeyAwLmYgfTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
ZGlzcGxheUJveGVzLnNpemUoKTspIHsKKyAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGRpc3Bs
YXlCb3hlc1tpbmRleF07CisKKyAgICAgICAgaWYgKGFkanVzdENvbnRlbnRPbmx5SW5zaWRlUnVi
eUJhc2UgPT0gQWRqdXN0Q29udGVudE9ubHlJbnNpZGVSdWJ5QmFzZTo6Tm8pCisgICAgICAgICAg
ICBzaGlmdERpc3BsYXlCb3goZGlzcGxheUJveCwgY29udGVudE9mZnNldCwgaW5saW5lRm9ybWF0
dGluZ0NvbnRleHQpOworCisgICAgICAgIGlmIChkaXNwbGF5Qm94LmxheW91dEJveCgpLmlzUnVi
eUJhc2UoKSkgeworICAgICAgICAgICAgYXV0byBiYXNlRW5kSW5kZXhBbmRBbGlnbm1lbnQgPSBz
aGlmdFJ1YnlCYXNlQ29udGVudEJ5QWxpZ25tZW50T2Zmc2V0KHsgaW5kZXgsIGNvbnRlbnRPZmZz
ZXQgfSwgZGlzcGxheUJveGVzLCBhbGlnbm1lbnRPZmZzZXRMaXN0LCBpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCk7CisgICAgICAgICAgICBpbmRleCA9IGJhc2VFbmRJbmRleEFuZEFsaWdubWVudC5p
bmRleDsKKyAgICAgICAgICAgIGlmIChhZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlID09
IEFkanVzdENvbnRlbnRPbmx5SW5zaWRlUnVieUJhc2U6Ok5vKQorICAgICAgICAgICAgICAgIGNv
bnRlbnRPZmZzZXQgKz0gYmFzZUVuZEluZGV4QW5kQWxpZ25tZW50Lm9mZnNldDsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgICsraW5kZXg7CiAgICAgfQorCisgICAg
aWYgKGFkanVzdENvbnRlbnRPbmx5SW5zaWRlUnVieUJhc2UgPT0gQWRqdXN0Q29udGVudE9ubHlJ
bnNpZGVSdWJ5QmFzZTo6Tm8pCisgICAgICAgIGV4cGFuZElubGluZUJveFdpdGhEZXNjZW5kYW50
cygwLCBkaXNwbGF5Qm94ZXMsIGFsaWdubWVudE9mZnNldExpc3QsIGlubGluZUZvcm1hdHRpbmdD
b250ZXh0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGlnbmVy
LmgKaW5kZXggNTdiZDk0NmFlZDViLi5iNTAzNmMyNjQyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGln
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lQ29udGVudEFsaWduZXIuaApAQCAtMzEsNyArMzEsMTEgQEAgbmFtZXNwYWNlIExh
eW91dCB7CiBjbGFzcyBJbmxpbmVDb250ZW50QWxpZ25lciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IElubGluZUxheW91dFVuaXQgYXBwbHlUZXh0QWxpZ25KdXN0aWZ5KExpbmU6OlJ1bkxpc3QmLCBJ
bmxpbmVMYXlvdXRVbml0IHNwYWNlVG9EaXN0cmlidXRlLCBzaXplX3QgaGFuZ2luZ1RyYWlsaW5n
V2hpdGVzcGFjZUxlbmd0aCk7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlSdWJ5QWxpZ24oTGluZTo6
UnVuTGlzdCYsIFdURjo6UmFuZ2U8c2l6ZV90PiBydWJ5QmFzZVJhbmdlLCBJbmxpbmVMYXlvdXRV
bml0IHNwYWNlVG9EaXN0cmlidXRlLCBzaXplX3QgaGFuZ2luZ1RyYWlsaW5nV2hpdGVzcGFjZUxl
bmd0aCk7CisKKyAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBhcHBseVJ1YnlBbGlnblNwYWNl
QXJvdW5kKExpbmU6OlJ1bkxpc3QmLCBXVEY6OlJhbmdlPHNpemVfdD4sIElubGluZUxheW91dFVu
aXQgc3BhY2VUb0Rpc3RyaWJ1dGUpOworCisgICAgZW51bSBjbGFzcyBBZGp1c3RDb250ZW50T25s
eUluc2lkZVJ1YnlCYXNlIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eVJ1YnlCYXNlQWxpZ25tZW50T2Zmc2V0KElubGluZURpc3BsYXk6OkJveGVzJiwgY29uc3QgSGFz
aE1hcDxjb25zdCBCb3gqLCBJbmxpbmVMYXlvdXRVbml0PiYgYWxpZ25tZW50T2Zmc2V0TGlzdCwg
QWRqdXN0Q29udGVudE9ubHlJbnNpZGVSdWJ5QmFzZSwgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQm
KTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBhcHBseUV4cGFuc2lv
bk9uUmFuZ2UoTGluZTo6UnVuTGlzdCYsIFdURjo6UmFuZ2U8c2l6ZV90PiwgY29uc3QgRXhwYW5z
aW9uSW5mbyYsIElubGluZUxheW91dFVuaXQgc3BhY2VUb0Rpc3RyaWJ1dGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZS5oCmluZGV4IGIxZGNiYTE4YTYxOC4uNmU4MTE1N2JkNjFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZS5oCkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5lOwogICAgICAgICBmcmllbmQgY2xhc3MgSW5saW5l
Q29udGVudEFsaWduZXI7CisgICAgICAgIGZyaWVuZCBjbGFzcyBSdWJ5Rm9ybWF0dGluZ0NvbnRl
eHQ7CiAKICAgICAgICAgUnVuKGNvbnN0IElubGluZVRleHRJdGVtJiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIFJ1bihjb25zdCBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbSYsIGNv
bnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggMTdlZjI0N2RhM2RmLi44M2M1
OWZlYWNlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAg
LTQ4LDYgKzQ4LDcgQEAgc3RydWN0IExpbmVDb250ZW50IHsKICAgICBib29sIGVuZHNXaXRoSHlw
aGVuIHsgZmFsc2UgfTsKICAgICBzaXplX3QgcGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0aCB7
IDAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNh
bFdpZHRoIHsgfTsKKyAgICBIYXNoTWFwPGNvbnN0IEJveCosIElubGluZUxheW91dFVuaXQ+IHJ1
YnlBbGlnbm1lbnRPZmZzZXRMaXN0IHsgfTsKIH07CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nQnVp
bGRlciB0b1N0cmluZyhjb25zdCBMaW5lOjpSdW5MaXN0JiBydW5zKQpAQCAtMjYwLDYgKzI2MSw3
IEBAIExpbmVMYXlvdXRSZXN1bHQgTGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQoY29u
c3QgTGluZUlucHV0JiBsaW5lSW5wdXQsIGNvCiAgICAgICAgICwgeyAhcmVzdWx0LmlzSGFuZ2lu
Z1RyYWlsaW5nQ29udGVudFdoaXRlc3BhY2UsIHJlc3VsdC5oYW5naW5nVHJhaWxpbmdDb250ZW50
V2lkdGggfQogICAgICAgICAsIHsgV1RGTW92ZSh2aXN1YWxPcmRlckxpc3QpLCBpbmxpbmVCYXNl
RGlyZWN0aW9uIH0KICAgICAgICAgLCB7IGlzRmlyc3RGb3JtYXR0ZWRMaW5lKCkgPyBMaW5lTGF5
b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RGb3JtYXR0ZWRMaW5lOjpXaXRoaW5JRkMgOiBM
aW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RGb3JtYXR0ZWRMaW5lOjpObywgaXNM
YXN0TGluZSB9CisgICAgICAgICwgV1RGTW92ZShsaW5lQ29udGVudC5ydWJ5QWxpZ25tZW50T2Zm
c2V0TGlzdCkKICAgICAgICAgLCBsaW5lQ29udGVudC5lbmRzV2l0aEh5cGhlbgogICAgICAgICAs
IHJlc3VsdC5ub25TcGFubmluZ0lubGluZUxldmVsQm94Q291bnQKICAgICAgICAgLCB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0xpbmVMYXlvdXRSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0xpbmVMYXlvdXRSZXN1bHQuaAppbmRleCAyYzc1N2MyNjAwMDEuLmUxNTE1
ZDVhMzVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvTGluZUxheW91dFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0xpbmVMYXlvdXRSZXN1bHQuaApAQCAtODUsNiAr
ODUsOSBAQCBzdHJ1Y3QgTGluZUxheW91dFJlc3VsdCB7CiAgICAgICAgIGJvb2wgaXNMYXN0TGlu
ZVdpdGhJbmxpbmVDb250ZW50IHsgdHJ1ZSB9OwogICAgIH07CiAgICAgSXNGaXJzdExhc3QgaXNG
aXJzdExhc3QgeyB9OworCisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBJbmxpbmVMYXlvdXRVbml0
PiBydWJ5QWxpZ25lbW50T2Zmc2V0TGlzdCB7IH07CisKICAgICAvLyBNaXNjCiAgICAgYm9vbCBl
bmRzV2l0aEh5cGhlbiB7IGZhbHNlIH07CiAgICAgc2l6ZV90IG5vblNwYW5uaW5nSW5saW5lTGV2
ZWxCb3hDb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvVGV4dE9ubHlTaW1w
bGVMaW5lQnVpbGRlci5jcHAKaW5kZXggMTZlMTg0YmM2YTEyLi4wMDhlOGFjYzlmMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1Rl
eHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwCkBA
IC0xMTgsNiArMTE4LDcgQEAgTGluZUxheW91dFJlc3VsdCBUZXh0T25seVNpbXBsZUxpbmVCdWls
ZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYKICAgICAgICAgLCB7IGlz
Rmlyc3RGb3JtYXR0ZWRMaW5lKCkgPyBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmly
c3RGb3JtYXR0ZWRMaW5lOjpXaXRoaW5JRkMgOiBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFz
dDo6Rmlyc3RGb3JtYXR0ZWRMaW5lOjpObywgaXNMYXN0TGluZSB9CiAgICAgICAgICwgeyB9CiAg
ICAgICAgICwgeyB9CisgICAgICAgICwgeyB9CiAgICAgICAgICwgbV90cmltbWVkVHJhaWxpbmdX
aGl0ZXNwYWNlV2lkdGgKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDk1OGYz
NjNiNmJkMC4uNTJlYmIyMmE4NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgiCiAKICNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIklubGluZUNvbnRlbnRBbGlnbmVyLmgiCiAj
aW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJv
eFN0eWxlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKQEAgLTEwMyw3ICsxMDQs
NyBAQCBJbmxpbmVEaXNwbGF5OjpCb3hlcyBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmJ1
aWxkKGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgZWxzZQogICAgICAgICBwcm9jZXNzTm9u
QmlkaUNvbnRlbnQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOwogICAgIHByb2Nl
c3NGbG9hdEJveGVzKGxpbmVMYXlvdXRSZXN1bHQpOwotICAgIHByb2Nlc3NSdWJ5Q29udGVudChi
b3hlcyk7CisgICAgcHJvY2Vzc1J1YnlDb250ZW50KGJveGVzLCBsaW5lTGF5b3V0UmVzdWx0KTsK
IAogICAgIGNvbGxlY3RJbmtPdmVyZmxvd0ZvclRleHREZWNvcmF0aW9ucyhib3hlcyk7CiAgICAg
Y29sbGVjdElua092ZXJmbG93Rm9ySW5saW5lQm94ZXMoYm94ZXMpOwpAQCAtMTEwOCwxMSArMTEw
OSwxNCBAQCBzaXplX3QgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzUnVieUJh
c2Uoc2l6ZV90IHJ1YnlCYXNlU3RhcnQsIElubGluZQogICAgIHJldHVybiBydWJ5QmFzZUVuZDsK
IH0KIAotdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NSdWJ5Q29udGVu
dChJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzKQordm9pZCBJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NSdWJ5Q29udGVudChJbmxpbmVEaXNwbGF5OjpCb3hlcyYg
ZGlzcGxheUJveGVzLCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0KQog
ewogICAgIGlmICghbV9oYXNTZWVuUnVieUJhc2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1
dG8gcnVieUJhc2VzTWF5SGF2ZUNvbGxhcHNlZCA9ICFsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlv
bmFsaXR5LnZpc3VhbE9yZGVyTGlzdC5pc0VtcHR5KCk7CisgICAgUnVieUZvcm1hdHRpbmdDb250
ZXh0OjphcHBseUFsaWdubWVudE9mZnNldExpc3QoZGlzcGxheUJveGVzLCBsaW5lTGF5b3V0UmVz
dWx0LnJ1YnlBbGlnbmVtbnRPZmZzZXRMaXN0LCBydWJ5QmFzZXNNYXlIYXZlQ29sbGFwc2VkID8g
UnVieUZvcm1hdHRpbmdDb250ZXh0OjpSdWJ5QmFzZXNNYXlOZWVkUmVzaXppbmc6OlllcyA6IFJ1
YnlGb3JtYXR0aW5nQ29udGV4dDo6UnVieUJhc2VzTWF5TmVlZFJlc2l6aW5nOjpObywgZm9ybWF0
dGluZ0NvbnRleHQoKSk7CisKICAgICBWZWN0b3I8V1RGOjpSYW5nZTxzaXplX3Q+PiBpbnRlcmxp
bmVhclJ1YnlDb2x1bW5SYW5nZUxpc3Q7CiAgICAgVmVjdG9yPHNpemVfdD4gcnVieUJhc2VTdGFy
dEluZGV4TGlzdFdpdGhBbm5vdGF0aW9uOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5k
ZXggPCBkaXNwbGF5Qm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAppbmRl
eCA2NmU1NzkzYTAzZGYuLmNiMjUxZTU5OGZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnNlcnRSdWJ5QW5ub3RhdGlvbkJveChjb25z
dCBCb3gmIGFubm90YXRpb25Cb3gsIHNpemVfdCBpbnNlcnRpb25Qb3NpdGlvbiwgSW5saW5lRGlz
cGxheTo6Qm94ZXMmKTsKIAogICAgIHNpemVfdCBwcm9jZXNzUnVieUJhc2Uoc2l6ZV90IHJ1YnlC
YXNlU3RhcnQsIElubGluZURpc3BsYXk6OkJveGVzJiwgVmVjdG9yPFdURjo6UmFuZ2U8c2l6ZV90
Pj4mIGludGVybGluZWFyUnVieUNvbHVtblJhbmdlTGlzdCwgVmVjdG9yPHNpemVfdD4mIHJ1YnlC
YXNlU3RhcnRJbmRleExpc3RXaXRoQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBwcm9jZXNzUnVieUNv
bnRlbnQoSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKKyAgICB2b2lkIHByb2Nlc3NSdWJ5Q29udGVu
dChJbmxpbmVEaXNwbGF5OjpCb3hlcyYsIGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmKTsKICAgICB2
b2lkIGFwcGx5UnVieU92ZXJoYW5nKElubGluZURpc3BsYXk6OkJveGVzJiwgY29uc3QgVmVjdG9y
PFdURjo6UmFuZ2U8c2l6ZV90Pj4mIGludGVybGluZWFyUnVieUNvbHVtblJhbmdlTGlzdCk7CiAK
ICAgICB2b2lkIHNldElubGluZUJveEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IElubGluZVJl
Y3QmLCBib29sIGlzRmlyc3RJbmxpbmVCb3hGcmFnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNTYxZWMwN2Q1Y2Vl
Li45Nzg1NjQzZWI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlG
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBJbmxpbmVMYXlvdXRVbml0
IFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YmFzZUVuZEFkZGl0aW9uYWxMb2dpY2FsV2lkdGgoY29u
c3QgQm94JgogICAgIHJldHVybiBhbm5vdGF0aW9uQm94TG9naWNhbFdpZHRoKHJ1YnlCYXNlTGF5
b3V0Qm94LCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CiB9CiAKLXN0YXRpYyBzaXplX3QgYXBw
bHlSdWJ5QWxpZ25PbkJhc2VDb250ZW50KHNpemVfdCBydWJ5QmFzZVN0YXJ0LCBMaW5lJiBsaW5l
LCBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQp
CitzaXplX3QgUnVieUZvcm1hdHRpbmdDb250ZXh0OjphcHBseVJ1YnlBbGlnbk9uQmFzZUNvbnRl
bnQoc2l6ZV90IHJ1YnlCYXNlU3RhcnQsIExpbmUmIGxpbmUsIEhhc2hNYXA8Y29uc3QgQm94Kiwg
SW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExpc3QsIGNvbnN0IElubGluZUZvcm1h
dHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKIHsKICAgICBhdXRvJiBydW5z
ID0gbGluZS5ydW5zKCk7CiAgICAgYXV0byYgcnVieUJhc2VMYXlvdXRCb3ggPSBydW5zW3J1YnlC
YXNlU3RhcnRdLmxheW91dEJveCgpOwpAQCAtMjQ4LDE3ICsyNDgsMjYgQEAgc3RhdGljIHNpemVf
dCBhcHBseVJ1YnlBbGlnbk9uQmFzZUNvbnRlbnQoc2l6ZV90IHJ1YnlCYXNlU3RhcnQsIExpbmUm
IGxpbmUsIGNvbnMKICAgICB9CiAKICAgICBhdXRvIGFubm90YXRpb25Cb3hMb2dpY2FsV2lkdGgg
PSBJbmxpbmVMYXlvdXRVbml0IHsgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JC
b3goKmFubm90YXRpb25Cb3gpLm1hcmdpbkJveFdpZHRoKCkgfTsKLSAgICBhdXRvIGJhc2VDb250
ZW50TG9naWNhbFdpZHRoID0gcnVuc1tydWJ5QmFzZUVuZCAtIDFdLmxvZ2ljYWxSaWdodCgpIC0g
cnVuc1tydWJ5QmFzZVN0YXJ0XS5sb2dpY2FsTGVmdCgpOwotCisgICAgYXV0byBiYXNlQ29udGVu
dExvZ2ljYWxXaWR0aCA9IHJ1bnNbcnVieUJhc2VFbmRdLmxvZ2ljYWxMZWZ0KCkgLSBydW5zW3J1
YnlCYXNlU3RhcnRdLmxvZ2ljYWxSaWdodCgpOwogICAgIGlmIChhbm5vdGF0aW9uQm94TG9naWNh
bFdpZHRoIDw9IGJhc2VDb250ZW50TG9naWNhbFdpZHRoKQogICAgICAgICByZXR1cm4gcnVieUJh
c2VFbmQ7CiAKLSAgICBJbmxpbmVDb250ZW50QWxpZ25lcjo6YXBwbHlSdWJ5QWxpZ24obGluZS5y
dW5zKCksIHsgcnVieUJhc2VTdGFydCwgcnVieUJhc2VFbmQgfSwgYW5ub3RhdGlvbkJveExvZ2lj
YWxXaWR0aCAtIGJhc2VDb250ZW50TG9naWNhbFdpZHRoLCB7IH0pOworICAgIC8vIEZJWE1FOiBy
dWJ5LWFsaWduOiBzcGFjZS1hcm91bmQgb25seQorICAgIGF1dG8gc3BhY2VUb0Rpc3RyaWJ1dGUg
PSBhbm5vdGF0aW9uQm94TG9naWNhbFdpZHRoIC0gYmFzZUNvbnRlbnRMb2dpY2FsV2lkdGg7Cisg
ICAgYXV0byBhbGlnbm1lbnRPZmZzZXQgPSBJbmxpbmVDb250ZW50QWxpZ25lcjo6YXBwbHlSdWJ5
QWxpZ25TcGFjZUFyb3VuZChsaW5lLnJ1bnMoKSwgeyBydWJ5QmFzZVN0YXJ0LCBydWJ5QmFzZUVu
ZCArIDEgfSwgc3BhY2VUb0Rpc3RyaWJ1dGUpOworICAgIC8vIFJlc2V0IHRoZSBzcGFjaW5nIHdl
IGFkZGVkIGF0IExpbmVCdWlsZGVyLgorICAgIGF1dG8mIHJ1YnlCYXNlRW5kUnVuID0gcnVuc1ty
dWJ5QmFzZUVuZF07CisgICAgcnVieUJhc2VFbmRSdW4uc2hyaW5rSG9yaXpvbnRhbGx5KHNwYWNl
VG9EaXN0cmlidXRlKTsKKyAgICBydWJ5QmFzZUVuZFJ1bi5tb3ZlSG9yaXpvbnRhbGx5KDIgKiBh
bGlnbm1lbnRPZmZzZXQpOworCisgICAgQVNTRVJUKCFhbGlnbm1lbnRPZmZzZXRMaXN0LmNvbnRh
aW5zKCZydWJ5QmFzZUxheW91dEJveCkpOworICAgIGFsaWdubWVudE9mZnNldExpc3QuYWRkKCZy
dWJ5QmFzZUxheW91dEJveCwgYWxpZ25tZW50T2Zmc2V0KTsKICAgICByZXR1cm4gcnVieUJhc2VF
bmQ7CiB9CiAKLXZvaWQgUnVieUZvcm1hdHRpbmdDb250ZXh0OjphcHBseVJ1YnlBbGlnbihMaW5l
JiBsaW5lLCBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQpCitIYXNoTWFwPGNvbnN0IEJveCosIElubGluZUxheW91dFVuaXQ+IFJ1YnlGb3JtYXR0
aW5nQ29udGV4dDo6YXBwbHlSdWJ5QWxpZ24oTGluZSYgbGluZSwgY29uc3QgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQogeworICAgIEhhc2hNYXA8Y29u
c3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4gYWxpZ25tZW50T2Zmc2V0TGlzdDsKICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXJ1YnkvI2ludGVybGluZWFyLWlubGluZQogICAg
IC8vIFdpdGhpbiBlYWNoIGJhc2UgYW5kIGFubm90YXRpb24gYm94LCBob3cgdGhlIGV4dHJhIHNw
YWNlIGlzIGRpc3RyaWJ1dGVkIHdoZW4gaXRzIGNvbnRlbnQgaXMgbmFycm93ZXIgdGhhbgogICAg
IC8vIHRoZSBtZWFzdXJlIG9mIHRoZSBib3ggaXMgc3BlY2lmaWVkIGJ5IGl0cyBydWJ5LWFsaWdu
IHByb3BlcnR5LgpAQCAtMjY2LDggKzI3NSwxNiBAQCB2b2lkIFJ1YnlGb3JtYXR0aW5nQ29udGV4
dDo6YXBwbHlSdWJ5QWxpZ24oTGluZSYgbGluZSwgY29uc3QgSW5saW5lRm9ybWF0dGluZ0Nvbgog
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBydW5zLnNpemUoKTsgKytpbmRleCkg
ewogICAgICAgICBhdXRvJiBsaW5lUnVuID0gcnVuc1tpbmRleF07CiAgICAgICAgIGlmIChsaW5l
UnVuLmlzSW5saW5lQm94U3RhcnQoKSAmJiBsaW5lUnVuLmxheW91dEJveCgpLmlzUnVieUJhc2Uo
KSkKLSAgICAgICAgICAgIGluZGV4ID0gYXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250ZW50KGluZGV4
LCBsaW5lLCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CisgICAgICAgICAgICBpbmRleCA9IGFw
cGx5UnVieUFsaWduT25CYXNlQ29udGVudChpbmRleCwgbGluZSwgYWxpZ25tZW50T2Zmc2V0TGlz
dCwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOwogICAgIH0KKyAgICByZXR1cm4gYWxpZ25tZW50
T2Zmc2V0TGlzdDsKK30KKwordm9pZCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmFwcGx5QWxpZ25t
ZW50T2Zmc2V0TGlzdChJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzLCBjb25zdCBI
YXNoTWFwPGNvbnN0IEJveCosIElubGluZUxheW91dFVuaXQ+JiBhbGlnbm1lbnRPZmZzZXRMaXN0
LCBSdWJ5QmFzZXNNYXlOZWVkUmVzaXppbmcgcnVieUJhc2VzTWF5TmVlZFJlc2l6aW5nLCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgaWYg
KGFsaWdubWVudE9mZnNldExpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgSW5s
aW5lQ29udGVudEFsaWduZXI6OmFwcGx5UnVieUJhc2VBbGlnbm1lbnRPZmZzZXQoZGlzcGxheUJv
eGVzLCBhbGlnbm1lbnRPZmZzZXRMaXN0LCBydWJ5QmFzZXNNYXlOZWVkUmVzaXppbmcgPT0gUnVi
eUJhc2VzTWF5TmVlZFJlc2l6aW5nOjpObyA/IElubGluZUNvbnRlbnRBbGlnbmVyOjpBZGp1c3RD
b250ZW50T25seUluc2lkZVJ1YnlCYXNlOjpZZXMgOiBJbmxpbmVDb250ZW50QWxpZ25lcjo6QWRq
dXN0Q29udGVudE9ubHlJbnNpZGVSdWJ5QmFzZTo6Tm8sIGlubGluZUZvcm1hdHRpbmdDb250ZXh0
KTsKIH0KIAogSW5saW5lTGF5b3V0UG9pbnQgUnVieUZvcm1hdHRpbmdDb250ZXh0OjpwbGFjZUFu
bm90YXRpb25Cb3goY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgY29uc3QgUmVjdCYgcnVi
eUJhc2VNYXJnaW5Cb3gsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IDUzMDFiMDJjY2RiMy4uODcxZTk5ODAyYjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1
YnlGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5
KGNvbnN0IElubGluZUl0ZW0mIHByZXZpb3VzLCBjb25zdCBJbmxpbmVJdGVtJiBjdXJyZW50KTsK
ICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBhbm5vdGF0aW9uQm94TG9naWNhbFdpZHRoKGNv
bnN0IEJveCYgcnVieUJhc2VMYXlvdXRCb3gsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
Jik7CiAgICAgc3RhdGljIElubGluZUxheW91dFVuaXQgYmFzZUVuZEFkZGl0aW9uYWxMb2dpY2Fs
V2lkdGgoY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgY29uc3QgTGluZTo6UnVuTGlzdCYs
IGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuTGlzdCYs
IGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlS
dWJ5QWxpZ24oTGluZSYsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CisgICAgc3Rh
dGljIEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4gYXBwbHlSdWJ5QWxpZ24o
TGluZSYsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiAKICAgICAvLyBMaW5lIGJv
eCBidWlsZGluZwogICAgIHN0YXRpYyB2b2lkIGFwcGx5QW5ub3RhdGlvbkNvbnRyaWJ1dGlvblRv
TGF5b3V0Qm91bmRzKExpbmVCb3gmLCBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwpA
QCAtNTUsMTIgKzU1LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBv
dmVyaGFuZ0ZvckFubm90YXRpb25CZWZvcmUoY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwg
c2l6ZV90IHJ1YnlCYXNlU3RhcnQsIGNvbnN0IElubGluZURpc3BsYXk6OkJveGVzJiwgY29uc3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBv
dmVyaGFuZ0ZvckFubm90YXRpb25BZnRlcihjb25zdCBCb3gmIHJ1YnlCYXNlTGF5b3V0Qm94LCBX
VEY6OlJhbmdlPHNpemVfdD4gcnVieUJhc2VSYW5nZSwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94
ZXMmLCBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwogCisgICAgZW51bSBjbGFzcyBS
dWJ5QmFzZXNNYXlOZWVkUmVzaXppbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0YXRpYyB2
b2lkIGFwcGx5QWxpZ25tZW50T2Zmc2V0TGlzdChJbmxpbmVEaXNwbGF5OjpCb3hlcyYsIGNvbnN0
IEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExp
c3QsIFJ1YnlCYXNlc01heU5lZWRSZXNpemluZywgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsK
KwogICAgIC8vIE1pc2NlbGxhbmVvdXMgaGVscGVycwogICAgIHN0YXRpYyBib29sIGhhc0ludGVy
bGluZWFyQW5ub3RhdGlvbihjb25zdCBCb3gmIHJ1YnlCYXNlTGF5b3V0Qm94KTsKICAgICBzdGF0
aWMgYm9vbCBoYXNJbnRlckNoYXJhY3RlckFubm90YXRpb24oY29uc3QgQm94JiBydWJ5QmFzZUxh
eW91dEJveCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRqdXN0TGF5b3V0Qm91bmRz
QW5kU3RyZXRjaEFuY2VzdG9yUnVieUJhc2UoTGluZUJveCYsIElubGluZUxldmVsQm94JiBydWJ5
QmFzZUlubGluZUJveCwgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKKyAgICBzdGF0
aWMgc2l6ZV90IGFwcGx5UnVieUFsaWduT25CYXNlQ29udGVudChzaXplX3QgcnVieUJhc2VTdGFy
dCwgTGluZSYsIEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVu
dE9mZnNldExpc3QsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBMYXlvdXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468957</attachid>
            <date>2023-12-09 14:53:54 -0800</date>
            <delta_ts>2023-12-10 06:49:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-266153-20231209145354.patch</filename>
            <type>text/plain</type>
            <size>27885</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2YWFhOTdiMWEzZTczOWY1ZWZmYjRjNGVhN2Q3NDg5NzQ4OWIzMTY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBEZWMgMjAyMyAxMzo1NTo1OCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGJ1Z1tJRkNd
W1J1YnldIEFkZCBzdXBwb3J0IGZvciBydWJ5IGFsaWduIG9uIGJpZGkgY29udGVudAogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NjE1MwoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgpUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgInJ1YnktYWxpZ246IHNw
YWNlLWFyb3VuZCIgb24gYm90aCBiaWRpIGFuZCBub24tYmlkaSBjb250ZW50LgoKInJ1YnktYWxp
Z246IHNwYWNlLWFyb3VuZCIgY29uc2lzdHMgb2YgMiBhZGp1c3RtZW50cyBhdCBydW4gbGV2ZWwu
Ci0gcnVuIHNwYWNpbmcgYXQganVzdGlmaWNhdGlvbiBvcHBvcnR1bml0aWVzIChzaW1pbGFyIHRv
IHRleHQtYWxpZ246IGp1c3RpZnkpCi0gY29udGVudCBvZmZzZXR0aW5nIHRvIGRpc3RyaWJ1dGUg
b25lIGV4dHJhIGp1c3RpZmljYXRpb24gb3Bwb3J0dW5pdHkgc3BhY2UgYmVmb3JlL2FmdGVyIGJh
c2UgY29udGVudAoKSW4gdGhpcyBwYXRjaCB3ZSBzdGFydCBjb21wdXRpbmcgdGhlIG9mZnNldCB2
YWx1ZXMgYXQgc3RlcCAjMSBhbmQgcGFzcyB0aGVtIG92ZXIgdG8gSW5saW5lQ29udGVudEJ1aWxk
ZXIgd2hlcmUgdGhlIGZpbmFsIHJ1YnkgcHJvY2Vzc2luZyBoYXBwZW5zICh1c2luZyB2aXN1YWwg
b3JkZXIpLgpJbmxpbmVDb250ZW50QWxpZ25lciB0YWtlcyB0aGVzZSBvZmZzZXQgdmFsdWVzIGFu
ZCBhZGp1c3RzIChhbGlnbnMpIHRoZSBkaXNwbGF5IGJveGVzIGFjY29yZGluZ2x5LgoKV2hhdCBt
YWtlcyBpdCBhIGJpdCBtb3JlIHZlcmJvc2UgaXMgdGhlIGZhY3QgdGhhdCB3aGlsZSBub24tYmlk
aSBiYXNlIHJ1bnMgaGF2ZSB0aGUgY29ycmVjdCBzcGFjaW5nIChlLmcuIHdoZW4gYW5ub3RhdGlv
biBpcyB3aWRlciB0aGFuIHRoZSBiYXNlKSwgd2UgbG9zZSB0aGF0IGluZm9ybWF0aW9uIGF0CnZp
c3VhbCByZW9yZGVyaW5nICg8LSB3ZSBlc3NlbnRpYWxseSBoYXZlIGEgZmFzdCBwYXRoIGZvciBu
b24tYmlkaSBjb250ZW50LCB3aGVyZSBhcyB3ZSBidWlsZCB0aGUgTGluZSBmb3IgbGluZSBicmVh
a2luZyB3ZSBhbHNvIGNvbXB1dGUgaG9yaXpvbnRhbCBjb250ZW50IHBvc2l0aW9ucykKSXQgc2lt
cGx5IG1lYW5zIHRoYXQgd2hpbGUgbm9uLWJpZGkgY29udGVudCwgb2Zmc2V0dGluZyBtZWFucyBq
dXN0IG1vdmluZyBjb250ZW50IGluc2lkZSB0aGUgYmFzZSB3aXRob3V0IHB1c2hpbmcgYWRqYWNl
bnQgY29udGVudC9leHBhbmRpbmcgZW5jbG9zaW5nIGlubGluZSBib3hlcywKYmlkaSBjb250ZW50
IG5lZWRzIGJvdGggKHNlZSBBZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlKS4KCiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVu
dEFsaWduZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpzaGlmdERpc3BsYXlCb3gpOgooV2ViQ29y
ZTo6TGF5b3V0OjpleHBhbmRJbmxpbmVCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjphbGlnbm1lbnRP
ZmZzZXQpOgooV2ViQ29yZTo6TGF5b3V0OjpleHBhbmRJbmxpbmVCb3hXaXRoRGVzY2VuZGFudHMp
OgooV2ViQ29yZTo6TGF5b3V0OjpzaGlmdFJ1YnlCYXNlQ29udGVudEJ5QWxpZ25tZW50T2Zmc2V0
KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEFsaWduZXI6OmFwcGx5UnVieUFsaWdu
U3BhY2VBcm91bmQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QWxpZ25lcjo6YXBw
bHlSdWJ5QmFzZUFsaWdubWVudE9mZnNldCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRl
bnRBbGlnbmVyOjphcHBseVJ1YnlBbGlnbik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuaDoKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGF5b3V0
SW5saW5lQ29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvTGluZUxheW91dFJlc3VsdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwOgooV2Vi
Q29yZTo6TGF5b3V0OjpUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250
ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NSdWJ5Q29udGVudCk6CiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHA6CihXZWJDb3Jl
OjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250
ZW50KToKKFdlYkNvcmU6OkxheW91dDo6UnVieUZvcm1hdHRpbmdDb250ZXh0OjphcHBseVJ1YnlB
bGlnbik6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YXBwbHlBbGln
bm1lbnRPZmZzZXRMaXN0KToKKFdlYkNvcmU6OkxheW91dDo6YXBwbHlSdWJ5QWxpZ25PbkJhc2VD
b250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5oOgotLS0KIC4uLi9pbmxpbmUv
SW5saW5lQ29udGVudEFsaWduZXIuY3BwICAgICAgICAgICB8IDE0OCArKysrKysrKysrKysrKysr
LS0KIC4uLi9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuaCAgICAgICAgICAgICB8ICAgNiAr
LQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oICAgIHwgICAxICsK
IC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8ICAgNCArLQog
Li4uL2lubGluZS9MaW5lTGF5b3V0UmVzdWx0LmggICAgICAgICAgICAgICAgIHwgICAzICsKIC4u
Li9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5jcHAgICAgICB8ICAgMSArCiAuLi4v
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICAgfCAgIDggKy0KIC4uLi9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oICAgICB8ICAgMiArLQogLi4uL2lu
bGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAgICAgIHwgIDI5ICsrKy0KIC4uLi9p
bmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuaCAgICAgICB8ICAgNiArLQogMTAgZmls
ZXMgY2hhbmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUNvbnRlbnRBbGlnbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGlnbmVyLmNwcAppbmRleCBkZGFmM2FlM2QxZjgu
LjZlM2RjZjI2NTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGln
bmVyLmNwcApAQCAtMzEsNiArMzEsMTA0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgTGF5b3V0IHsKIAorc3RhdGljIGlubGluZSB2b2lkIHNoaWZ0RGlzcGxheUJveChJbmxpbmVE
aXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gsIElubGluZUxheW91dFVuaXQgb2Zmc2V0LCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgaWYgKCFv
ZmZzZXQpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
ID0gaW5saW5lRm9ybWF0dGluZ0NvbnRleHQucm9vdCgpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKTsKKyAgICBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IGRpc3BsYXlCb3gubW92
ZUhvcml6b250YWxseShvZmZzZXQpIDogZGlzcGxheUJveC5tb3ZlVmVydGljYWxseShvZmZzZXQp
OworICAgIGlmICghZGlzcGxheUJveC5pc1RleHRPclNvZnRMaW5lQnJlYWsoKSAmJiAhZGlzcGxh
eUJveC5pc1Jvb3RJbmxpbmVCb3goKSkgeworICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGlu
bGluZUZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGRpc3BsYXlCb3gubGF5b3V0Qm94
KCkpOworICAgICAgICBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IGJveEdlb21ldHJ5Lm1vdmVI
b3Jpem9udGFsbHkoTGF5b3V0VW5pdCB7IG9mZnNldCB9KSA6IGJveEdlb21ldHJ5Lm1vdmVWZXJ0
aWNhbGx5KExheW91dFVuaXQgeyBvZmZzZXQgfSk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5l
IHZvaWQgZXhwYW5kSW5saW5lQm94KElubGluZUxheW91dFVuaXQgZXhwYW5zaW9uLCBJbmxpbmVE
aXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gsIElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoZGlzcGxheUJveC5pc0lubGluZUJveCgp
KTsKKyAgICBpZiAoIWV4cGFuc2lvbikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUgPSBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5yb290KCkuc3R5bGUo
KS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOworICAgIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
ID8gZGlzcGxheUJveC5leHBhbmRIb3Jpem9udGFsbHkoZXhwYW5zaW9uKSA6IGRpc3BsYXlCb3gu
ZXhwYW5kVmVydGljYWxseShleHBhbnNpb24pOworICAgIGlmICghZGlzcGxheUJveC5pc1RleHRP
clNvZnRMaW5lQnJlYWsoKSAmJiAhZGlzcGxheUJveC5pc1Jvb3RJbmxpbmVCb3goKSkgeworICAg
ICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGlubGluZUZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5
Rm9yQm94KGRpc3BsYXlCb3gubGF5b3V0Qm94KCkpOworICAgICAgICBpc0hvcml6b250YWxXcml0
aW5nTW9kZSA/IGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChib3hHZW9tZXRyeS5jb250
ZW50Qm94V2lkdGgoKSArIExheW91dFVuaXQgeyBleHBhbnNpb24gfSkgOiBib3hHZW9tZXRyeS5z
ZXRDb250ZW50Qm94SGVpZ2h0KGJveEdlb21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQoKSArIExheW91
dFVuaXQgeyBleHBhbnNpb24gfSk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIElubGluZUxh
eW91dFVuaXQgYWxpZ25tZW50T2Zmc2V0KGF1dG8mIGxhdHlvdXRCb3gsIGF1dG8mIGFsaWdubWVu
dE9mZnNldExpc3QpCit7CisgICAgYXV0byBhbGlnbm1lbnRPZmZzZXRFbnRyeSA9IGFsaWdubWVu
dE9mZnNldExpc3QuZmluZCgmbGF0eW91dEJveCk7CisgICAgcmV0dXJuIGFsaWdubWVudE9mZnNl
dEVudHJ5ICE9IGFsaWdubWVudE9mZnNldExpc3QuZW5kKCkgPyBhbGlnbm1lbnRPZmZzZXRFbnRy
eS0+dmFsdWUgOiAwLmY7Cit9CisKK3N0cnVjdCBJbmxpbmVCb3hJbmRleEFuZEV4cGFuc2lvbiB7
CisgICAgc2l6ZV90IGluZGV4IHsgMCB9OworICAgIElubGluZUxheW91dFVuaXQgZXhwYW5zaW9u
IHsgMC5mIH07Cit9Oworc3RhdGljIElubGluZUJveEluZGV4QW5kRXhwYW5zaW9uIGV4cGFuZElu
bGluZUJveFdpdGhEZXNjZW5kYW50cyhzaXplX3QgaW5saW5lQm94SW5kZXgsIElubGluZURpc3Bs
YXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMsIGNvbnN0IEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5l
TGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExpc3QsICBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgaWYgKGlubGluZUJveEluZGV4ID49
IGRpc3BsYXlCb3hlcy5zaXplKCkgfHwgIWRpc3BsYXlCb3hlc1tpbmxpbmVCb3hJbmRleF0uaXNJ
bmxpbmVCb3goKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIHsgaW5saW5lQm94SW5kZXgsIHsgfSB9OworICAgIH0KKyAgICBhdXRvJiBpbmxpbmVCb3gg
PSBkaXNwbGF5Qm94ZXNbaW5saW5lQm94SW5kZXhdLmxheW91dEJveCgpOworICAgIGF1dG8gZGVz
Y2VuZGFudEV4cGFuc2lvbiA9IElubGluZUxheW91dFVuaXQgeyAwLmYgfTsKKyAgICBzaXplX3Qg
aW5kZXggPSBpbmxpbmVCb3hJbmRleCArIDE7CisgICAgd2hpbGUgKGluZGV4IDwgZGlzcGxheUJv
eGVzLnNpemUoKSAmJiAmZGlzcGxheUJveGVzW2luZGV4XS5sYXlvdXRCb3goKS5wYXJlbnQoKSA9
PSAmaW5saW5lQm94KSB7CisgICAgICAgIGlmIChkaXNwbGF5Qm94ZXNbaW5kZXhdLmlzSW5saW5l
Qm94KCkpIHsKKyAgICAgICAgICAgIGF1dG8gaW5kZXhBbmRFeHBhbnNpb24gPSBleHBhbmRJbmxp
bmVCb3hXaXRoRGVzY2VuZGFudHMoaW5kZXgsIGRpc3BsYXlCb3hlcywgYWxpZ25tZW50T2Zmc2V0
TGlzdCwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOworICAgICAgICAgICAgaW5kZXggPSBpbmRl
eEFuZEV4cGFuc2lvbi5pbmRleDsKKyAgICAgICAgICAgIGRlc2NlbmRhbnRFeHBhbnNpb24gKz0g
aW5kZXhBbmRFeHBhbnNpb24uZXhwYW5zaW9uOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgYXV0byB0b3RhbEV4cGFuc2lvbiA9
IDIgKiBhbGlnbm1lbnRPZmZzZXQoaW5saW5lQm94LCBhbGlnbm1lbnRPZmZzZXRMaXN0KSArIGRl
c2NlbmRhbnRFeHBhbnNpb247CisgICAgaWYgKGlubGluZUJveEluZGV4KSB7CisgICAgICAgIC8v
IFJvb3QgaW5saW5lIGJveCBoYXMgdGhlIGNvcnJlY3QgKGluZmxhdGVkKSBsb2dpY2FsIHdpZHRo
LgorICAgICAgICBleHBhbmRJbmxpbmVCb3godG90YWxFeHBhbnNpb24sIGRpc3BsYXlCb3hlc1tp
bmxpbmVCb3hJbmRleF0sIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KTsKKyAgICB9CisgICAgcmV0
dXJuIHsgaW5kZXgsIHRvdGFsRXhwYW5zaW9uIH07Cit9CisKK3N0cnVjdCBCYXNlSW5kZXhBbmRP
ZmZzZXQgeworICAgIHNpemVfdCBpbmRleCB7IDAgfTsKKyAgICBJbmxpbmVMYXlvdXRVbml0IG9m
ZnNldCB7IDAuZiB9OworfTsKK3N0YXRpYyBCYXNlSW5kZXhBbmRPZmZzZXQgc2hpZnRSdWJ5QmFz
ZUNvbnRlbnRCeUFsaWdubWVudE9mZnNldChCYXNlSW5kZXhBbmRPZmZzZXQgYmFzZUluZGV4QW5k
T2Zmc2V0LCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzLCBjb25zdCBIYXNoTWFw
PGNvbnN0IEJveCosIElubGluZUxheW91dFVuaXQ+JiBhbGlnbm1lbnRPZmZzZXRMaXN0LCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgYXV0
byBiYXNlSW5kZXggPSBiYXNlSW5kZXhBbmRPZmZzZXQuaW5kZXg7CisgICAgaWYgKGJhc2VJbmRl
eCA+PSBkaXNwbGF5Qm94ZXMuc2l6ZSgpIHx8ICFkaXNwbGF5Qm94ZXNbYmFzZUluZGV4XS5sYXlv
dXRCb3goKS5pc1J1YnlCYXNlKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiB7IGJhc2VJbmRleEFuZE9mZnNldC5pbmRleCwgeyB9IH07CisgICAgfQor
CisgICAgLy8gU2hpZnQgYmFzZSBjb250ZW50IHdpdGhpbiB0aGUgYmFzZSAobm8gcmVzaXplKSBh
cyBwYXJ0IG9mIHRoZSBhbGlnbm1lbnQgcHJvY2Vzcy4KKyAgICBhdXRvJiBydWJ5QmFzZUJveCA9
IGRpc3BsYXlCb3hlc1tiYXNlSW5kZXhdLmxheW91dEJveCgpOworICAgIGF1dG8mIHJ1YnlCb3gg
PSBydWJ5QmFzZUJveC5wYXJlbnQoKTsKKyAgICBhdXRvIGJhc2VPZmZzZXQgPSBiYXNlSW5kZXhB
bmRPZmZzZXQub2Zmc2V0OworICAgIGF1dG8gYmFzZUNvbnRlbnRPZmZzZXQgPSBhbGlnbm1lbnRP
ZmZzZXQocnVieUJhc2VCb3gsIGFsaWdubWVudE9mZnNldExpc3QpOworICAgIHNpemVfdCBiYXNl
Q29udGVudEluZGV4ID0gYmFzZUluZGV4ICsgMTsKKworICAgIHdoaWxlIChiYXNlQ29udGVudElu
ZGV4IDwgZGlzcGxheUJveGVzLnNpemUoKSkgeworICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
ZGlzcGxheUJveGVzW2Jhc2VDb250ZW50SW5kZXhdOworICAgICAgICBhdXRvJiBsYXlvdXRCb3gg
PSBkaXNwbGF5Qm94LmxheW91dEJveCgpOworICAgICAgICBpZiAoJmxheW91dEJveC5wYXJlbnQo
KSA9PSAmcnVieUJveCB8fCAmbGF5b3V0Qm94LnBhcmVudCgpID09ICZydWJ5Qm94LnBhcmVudCgp
KSB7CisgICAgICAgICAgICAvLyBOb3QgaW4gdGhpcyBydWJ5IGJhc2UgYW55bW9yZS4KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICghbGF5b3V0Qm94LmlzUnVieUFu
bm90YXRpb25Cb3goKSkKKyAgICAgICAgICAgIHNoaWZ0RGlzcGxheUJveChkaXNwbGF5Qm94LCBi
YXNlT2Zmc2V0ICsgYmFzZUNvbnRlbnRPZmZzZXQsIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KTsK
KyAgICAgICAgaWYgKGxheW91dEJveC5pc1J1YnlCYXNlKCkpIHsKKyAgICAgICAgICAgIGJhc2VD
b250ZW50SW5kZXggPSBzaGlmdFJ1YnlCYXNlQ29udGVudEJ5QWxpZ25tZW50T2Zmc2V0KHsgYmFz
ZUNvbnRlbnRJbmRleCwgYmFzZU9mZnNldCArIGJhc2VDb250ZW50T2Zmc2V0IH0sIGRpc3BsYXlC
b3hlcywgYWxpZ25tZW50T2Zmc2V0TGlzdCwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpLmluZGV4
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgKytiYXNlQ29udGVu
dEluZGV4OworICAgIH0KKyAgICByZXR1cm4geyBiYXNlQ29udGVudEluZGV4LCAyICogYmFzZUNv
bnRlbnRPZmZzZXQgfTsKK30KKwogc3RhdGljIHZvaWQgY29tcHV0ZWRFeHBhbnNpb25zKGNvbnN0
IExpbmU6OlJ1bkxpc3QmIHJ1bnMsIFdURjo6UmFuZ2U8c2l6ZV90PiBydW5SYW5nZSwgc2l6ZV90
IGhhbmdpbmdUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGgsIEV4cGFuc2lvbkluZm8mIGV4cGFuc2lv
bkluZm8pCiB7CiAgICAgLy8gQ29sbGVjdCBhbmQgZGlzdHJpYnV0ZSB0aGUgZXhwYW5zaW9uIG9w
cG9ydHVuaXRpZXMuCkBAIC0xNDYsMjEgKzI0NCw1MSBAQCBJbmxpbmVMYXlvdXRVbml0IElubGlu
ZUNvbnRlbnRBbGlnbmVyOjphcHBseVRleHRBbGlnbkp1c3RpZnkoTGluZTo6UnVuTGlzdCYgcnVu
cwogICAgIHJldHVybiBhcHBseUV4cGFuc2lvbk9uUmFuZ2UocnVucywgZnVsbFJhbmdlLCBleHBh
bnNpb24sIHNwYWNlVG9EaXN0cmlidXRlKTsKIH0KIAotdm9pZCBJbmxpbmVDb250ZW50QWxpZ25l
cjo6YXBwbHlSdWJ5QWxpZ24oTGluZTo6UnVuTGlzdCYgcnVucywgV1RGOjpSYW5nZTxzaXplX3Q+
IHJ1YnlCYXNlUmFuZ2UsIElubGluZUxheW91dFVuaXQgc3BhY2VUb0Rpc3RyaWJ1dGUsIHNpemVf
dCBoYW5naW5nVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoKQorSW5saW5lTGF5b3V0VW5pdCBJbmxp
bmVDb250ZW50QWxpZ25lcjo6YXBwbHlSdWJ5QWxpZ25TcGFjZUFyb3VuZChMaW5lOjpSdW5MaXN0
JiBydW5zLCBXVEY6OlJhbmdlPHNpemVfdD4gcmFuZ2UsIElubGluZUxheW91dFVuaXQgc3BhY2VU
b0Rpc3RyaWJ1dGUpCiB7Ci0gICAgaWYgKHJ1YnlCYXNlUmFuZ2UuZGlzdGFuY2UoKSA8PSAxKQot
ICAgICAgICByZXR1cm47CisgICAgaWYgKHJ1bnMuaXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGlmIChz
cGFjZVRvRGlzdHJpYnV0ZSA8PSAwKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBl
eHBhbnNpb24gPSBFeHBhbnNpb25JbmZvIHsgfTsKKyAgICBjb21wdXRlZEV4cGFuc2lvbnMocnVu
cywgcmFuZ2UsIHsgfSwgZXhwYW5zaW9uKTsKKyAgICAvLyBBbnl0aGluZyB0byBkaXN0cmlidXRl
PworICAgIGlmICghZXhwYW5zaW9uLm9wcG9ydHVuaXR5Q291bnQpCisgICAgICAgIHJldHVybiBz
cGFjZVRvRGlzdHJpYnV0ZSAvIDI7CiAgICAgLy8gRklYTUU6IHJ1YnktYWxpZ246IHNwYWNlLWFy
b3VuZCBvbmx5CiAgICAgLy8gQXMgZm9yIHNwYWNlLWJldHdlZW4gZXhjZXB0IHRoYXQgdGhlcmUg
ZXhpc3RzIGFuIGV4dHJhIGp1c3RpZmljYXRpb24gb3Bwb3J0dW5pdGllcyB3aG9zZSBzcGFjZSBp
cyBkaXN0cmlidXRlZCBoYWxmIGJlZm9yZSBhbmQgaGFsZiBhZnRlciB0aGUgcnVieSBjb250ZW50
LgotICAgIGF1dG8gYmFzZUNvbnRlbnRSdW5SYW5nZSA9IFdURjo6UmFuZ2U8c2l6ZV90PiB7IHJ1
YnlCYXNlUmFuZ2UuYmVnaW4oKSArIDEsIHJ1YnlCYXNlUmFuZ2UuZW5kKCkgLSAxIH07Ci0gICAg
YXV0byBleHBhbnNpb24gPSBFeHBhbnNpb25JbmZvIHsgfTsKLSAgICBjb21wdXRlZEV4cGFuc2lv
bnMocnVucywgYmFzZUNvbnRlbnRSdW5SYW5nZSwgaGFuZ2luZ1RyYWlsaW5nV2hpdGVzcGFjZUxl
bmd0aCwgZXhwYW5zaW9uKTsKKyAgICBhdXRvIGV4dHJhRXhwYW5zaW9uT3Bwb3J0dW5pdHlTcGFj
ZSA9IHNwYWNlVG9EaXN0cmlidXRlIC8gKGV4cGFuc2lvbi5vcHBvcnR1bml0eUNvdW50ICsgMSk7
CisgICAgYXBwbHlFeHBhbnNpb25PblJhbmdlKHJ1bnMsIHJhbmdlLCBleHBhbnNpb24sIHNwYWNl
VG9EaXN0cmlidXRlIC0gZXh0cmFFeHBhbnNpb25PcHBvcnR1bml0eVNwYWNlKTsKKyAgICByZXR1
cm4gZXh0cmFFeHBhbnNpb25PcHBvcnR1bml0eVNwYWNlIC8gMjsKK30KIAotICAgIGlmIChleHBh
bnNpb24ub3Bwb3J0dW5pdHlDb3VudCkgewotICAgICAgICBhdXRvIGNvbnRlbnRMb2dpY2FsTGVm
dE9mZnNldCA9IHNwYWNlVG9EaXN0cmlidXRlIC8gKGV4cGFuc2lvbi5vcHBvcnR1bml0eUNvdW50
ICsgMSkgLyAyOwotICAgICAgICBzcGFjZVRvRGlzdHJpYnV0ZSAtPSAoMiAqIGNvbnRlbnRMb2dp
Y2FsTGVmdE9mZnNldCk7Ci0gICAgICAgIGFwcGx5RXhwYW5zaW9uT25SYW5nZShydW5zLCBiYXNl
Q29udGVudFJ1blJhbmdlLCBleHBhbnNpb24sIHNwYWNlVG9EaXN0cmlidXRlKTsKK3ZvaWQgSW5s
aW5lQ29udGVudEFsaWduZXI6OmFwcGx5UnVieUJhc2VBbGlnbm1lbnRPZmZzZXQoSW5saW5lRGlz
cGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcywgY29uc3QgSGFzaE1hcDxjb25zdCBCb3gqLCBJbmxp
bmVMYXlvdXRVbml0PiYgYWxpZ25tZW50T2Zmc2V0TGlzdCwgQWRqdXN0Q29udGVudE9ubHlJbnNp
ZGVSdWJ5QmFzZSBhZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlLCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgQVNTRVJUKCFhbGln
bm1lbnRPZmZzZXRMaXN0LmlzRW1wdHkoKSk7CisKKyAgICBhdXRvIGNvbnRlbnRPZmZzZXQgPSBJ
bmxpbmVMYXlvdXRVbml0IHsgMC5mIH07CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IGRpc3BsYXlCb3hlcy5zaXplKCk7KSB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBk
aXNwbGF5Qm94ZXNbaW5kZXhdOworCisgICAgICAgIGlmIChhZGp1c3RDb250ZW50T25seUluc2lk
ZVJ1YnlCYXNlID09IEFkanVzdENvbnRlbnRPbmx5SW5zaWRlUnVieUJhc2U6Ok5vKQorICAgICAg
ICAgICAgc2hpZnREaXNwbGF5Qm94KGRpc3BsYXlCb3gsIGNvbnRlbnRPZmZzZXQsIGlubGluZUZv
cm1hdHRpbmdDb250ZXh0KTsKKworICAgICAgICBpZiAoZGlzcGxheUJveC5sYXlvdXRCb3goKS5p
c1J1YnlCYXNlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gYmFzZUVuZEluZGV4QW5kQWxpZ25tZW50
ID0gc2hpZnRSdWJ5QmFzZUNvbnRlbnRCeUFsaWdubWVudE9mZnNldCh7IGluZGV4LCBjb250ZW50
T2Zmc2V0IH0sIGRpc3BsYXlCb3hlcywgYWxpZ25tZW50T2Zmc2V0TGlzdCwgaW5saW5lRm9ybWF0
dGluZ0NvbnRleHQpOworICAgICAgICAgICAgaW5kZXggPSBiYXNlRW5kSW5kZXhBbmRBbGlnbm1l
bnQuaW5kZXg7CisgICAgICAgICAgICBpZiAoYWRqdXN0Q29udGVudE9ubHlJbnNpZGVSdWJ5QmFz
ZSA9PSBBZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlOjpObykKKyAgICAgICAgICAgICAg
ICBjb250ZW50T2Zmc2V0ICs9IGJhc2VFbmRJbmRleEFuZEFsaWdubWVudC5vZmZzZXQ7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICArK2luZGV4OwogICAgIH0KKwor
ICAgIGlmIChhZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlID09IEFkanVzdENvbnRlbnRP
bmx5SW5zaWRlUnVieUJhc2U6Ok5vKQorICAgICAgICBleHBhbmRJbmxpbmVCb3hXaXRoRGVzY2Vu
ZGFudHMoMCwgZGlzcGxheUJveGVzLCBhbGlnbm1lbnRPZmZzZXRMaXN0LCBpbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGlnbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QWxp
Z25lci5oCmluZGV4IDU3YmQ5NDZhZWQ1Yi4uYjUwMzZjMjY0MmE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50
QWxpZ25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUNvbnRlbnRBbGlnbmVyLmgKQEAgLTMxLDcgKzMxLDExIEBAIG5hbWVzcGFj
ZSBMYXlvdXQgewogY2xhc3MgSW5saW5lQ29udGVudEFsaWduZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBJbmxpbmVMYXlvdXRVbml0IGFwcGx5VGV4dEFsaWduSnVzdGlmeShMaW5lOjpSdW5MaXN0
JiwgSW5saW5lTGF5b3V0VW5pdCBzcGFjZVRvRGlzdHJpYnV0ZSwgc2l6ZV90IGhhbmdpbmdUcmFp
bGluZ1doaXRlc3BhY2VMZW5ndGgpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5UnVieUFsaWduKExp
bmU6OlJ1bkxpc3QmLCBXVEY6OlJhbmdlPHNpemVfdD4gcnVieUJhc2VSYW5nZSwgSW5saW5lTGF5
b3V0VW5pdCBzcGFjZVRvRGlzdHJpYnV0ZSwgc2l6ZV90IGhhbmdpbmdUcmFpbGluZ1doaXRlc3Bh
Y2VMZW5ndGgpOworCisgICAgc3RhdGljIElubGluZUxheW91dFVuaXQgYXBwbHlSdWJ5QWxpZ25T
cGFjZUFyb3VuZChMaW5lOjpSdW5MaXN0JiwgV1RGOjpSYW5nZTxzaXplX3Q+LCBJbmxpbmVMYXlv
dXRVbml0IHNwYWNlVG9EaXN0cmlidXRlKTsKKworICAgIGVudW0gY2xhc3MgQWRqdXN0Q29udGVu
dE9ubHlJbnNpZGVSdWJ5QmFzZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgc3RhdGljIHZvaWQg
YXBwbHlSdWJ5QmFzZUFsaWdubWVudE9mZnNldChJbmxpbmVEaXNwbGF5OjpCb3hlcyYsIGNvbnN0
IEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExp
c3QsIEFkanVzdENvbnRlbnRPbmx5SW5zaWRlUnVieUJhc2UsIElubGluZUZvcm1hdHRpbmdDb250
ZXh0Jik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIElubGluZUxheW91dFVuaXQgYXBwbHlFeHBh
bnNpb25PblJhbmdlKExpbmU6OlJ1bkxpc3QmLCBXVEY6OlJhbmdlPHNpemVfdD4sIGNvbnN0IEV4
cGFuc2lvbkluZm8mLCBJbmxpbmVMYXlvdXRVbml0IHNwYWNlVG9EaXN0cmlidXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmUuaAppbmRleCBiMWRjYmExOGE2MTguLjZlODExNTdiZDYxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmUuaApAQCAtMTQzLDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGluZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIElu
bGluZUNvbnRlbnRBbGlnbmVyOworICAgICAgICBmcmllbmQgY2xhc3MgUnVieUZvcm1hdHRpbmdD
b250ZXh0OwogCiAgICAgICAgIFJ1bihjb25zdCBJbmxpbmVUZXh0SXRlbSYsIGNvbnN0IFJlbmRl
clN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGgpOwogICAgICAgICBSdW4oY29uc3QgSW5saW5lU29mdExpbmVCcmVha0l0ZW0m
LCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDE3ZWYyNDdkYTNkZi4u
NDg4ZjlmN2EwYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
CkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBMaW5lQ29udGVudCB7CiAgICAgYm9vbCBlbmRzV2l0
aEh5cGhlbiB7IGZhbHNlIH07CiAgICAgc2l6ZV90IHBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5n
dGggeyAwIH07CiAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xv
Z2ljYWxXaWR0aCB7IH07CisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBJbmxpbmVMYXlvdXRVbml0
PiBydWJ5QWxpZ25tZW50T2Zmc2V0TGlzdCB7IH07CiB9OwogCiBzdGF0aWMgaW5saW5lIFN0cmlu
Z0J1aWxkZXIgdG9TdHJpbmcoY29uc3QgTGluZTo6UnVuTGlzdCYgcnVucykKQEAgLTI2MCw2ICsy
NjEsNyBAQCBMaW5lTGF5b3V0UmVzdWx0IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50
KGNvbnN0IExpbmVJbnB1dCYgbGluZUlucHV0LCBjbwogICAgICAgICAsIHsgIXJlc3VsdC5pc0hh
bmdpbmdUcmFpbGluZ0NvbnRlbnRXaGl0ZXNwYWNlLCByZXN1bHQuaGFuZ2luZ1RyYWlsaW5nQ29u
dGVudFdpZHRoIH0KICAgICAgICAgLCB7IFdURk1vdmUodmlzdWFsT3JkZXJMaXN0KSwgaW5saW5l
QmFzZURpcmVjdGlvbiB9CiAgICAgICAgICwgeyBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpID8gTGlu
ZUxheW91dFJlc3VsdDo6SXNGaXJzdExhc3Q6OkZpcnN0Rm9ybWF0dGVkTGluZTo6V2l0aGluSUZD
IDogTGluZUxheW91dFJlc3VsdDo6SXNGaXJzdExhc3Q6OkZpcnN0Rm9ybWF0dGVkTGluZTo6Tm8s
IGlzTGFzdExpbmUgfQorICAgICAgICAsIFdURk1vdmUobGluZUNvbnRlbnQucnVieUFsaWdubWVu
dE9mZnNldExpc3QpCiAgICAgICAgICwgbGluZUNvbnRlbnQuZW5kc1dpdGhIeXBoZW4KICAgICAg
ICAgLCByZXN1bHQubm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50CiAgICAgICAgICwgeyB9
CkBAIC01MjAsNyArNTIyLDcgQEAgTGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5l
QW5kRmxvYXRDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHMKICAgICAgICAgICAg
ICAgICBhdXRvIGFkZGl0aW9uYWxTcGFjZUZvckFsaWduZWRDb250ZW50ID0gSW5saW5lQ29udGVu
dEFsaWduZXI6OmFwcGx5VGV4dEFsaWduSnVzdGlmeShtX2xpbmUucnVucygpLCBzcGFjZVRvRGlz
dHJpYnV0ZSwgbV9saW5lLmhhbmdpbmdUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGgoKSk7CiAgICAg
ICAgICAgICAgICAgbV9saW5lLmluZmxhdGVDb250ZW50TG9naWNhbFdpZHRoKGFkZGl0aW9uYWxT
cGFjZUZvckFsaWduZWRDb250ZW50KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9saW5lLmhh
c1J1YnlDb250ZW50KCkpCi0gICAgICAgICAgICAgICAgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojph
cHBseVJ1YnlBbGlnbihtX2xpbmUsIGZvcm1hdHRpbmdDb250ZXh0KCkpOworICAgICAgICAgICAg
ICAgIGxpbmVDb250ZW50LnJ1YnlBbGlnbm1lbnRPZmZzZXRMaXN0ID0gUnVieUZvcm1hdHRpbmdD
b250ZXh0OjphcHBseVJ1YnlBbGlnbihtX2xpbmUsIGZvcm1hdHRpbmdDb250ZXh0KCkpOwogCiAg
ICAgICAgICAgICBhdXRvJiBsYXN0VGV4dENvbnRlbnQgPSBtX2xpbmUucnVucygpLmxhc3QoKS50
ZXh0Q29udGVudCgpOwogICAgICAgICAgICAgbGluZUNvbnRlbnQuZW5kc1dpdGhIeXBoZW4gPSBs
YXN0VGV4dENvbnRlbnQgJiYgbGFzdFRleHRDb250ZW50LT5uZWVkc0h5cGhlbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0xpbmVM
YXlvdXRSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0xpbmVMYXlvdXRSZXN1bHQuaAppbmRleCAyYzc1N2MyNjAwMDEuLmUxNTE1ZDVhMzVm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvTGluZUxheW91dFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0xpbmVMYXlvdXRSZXN1bHQuaApAQCAtODUsNiArODUsOSBA
QCBzdHJ1Y3QgTGluZUxheW91dFJlc3VsdCB7CiAgICAgICAgIGJvb2wgaXNMYXN0TGluZVdpdGhJ
bmxpbmVDb250ZW50IHsgdHJ1ZSB9OwogICAgIH07CiAgICAgSXNGaXJzdExhc3QgaXNGaXJzdExh
c3QgeyB9OworCisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBJbmxpbmVMYXlvdXRVbml0PiBydWJ5
QWxpZ25lbW50T2Zmc2V0TGlzdCB7IH07CisKICAgICAvLyBNaXNjCiAgICAgYm9vbCBlbmRzV2l0
aEh5cGhlbiB7IGZhbHNlIH07CiAgICAgc2l6ZV90IG5vblNwYW5uaW5nSW5saW5lTGV2ZWxCb3hD
b3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5l
QnVpbGRlci5jcHAKaW5kZXggMTZlMTg0YmM2YTEyLi4wMDhlOGFjYzlmMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5
U2ltcGxlTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwCkBAIC0xMTgs
NiArMTE4LDcgQEAgTGluZUxheW91dFJlc3VsdCBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjps
YXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYKICAgICAgICAgLCB7IGlzRmlyc3RG
b3JtYXR0ZWRMaW5lKCkgPyBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RGb3Jt
YXR0ZWRMaW5lOjpXaXRoaW5JRkMgOiBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmly
c3RGb3JtYXR0ZWRMaW5lOjpObywgaXNMYXN0TGluZSB9CiAgICAgICAgICwgeyB9CiAgICAgICAg
ICwgeyB9CisgICAgICAgICwgeyB9CiAgICAgICAgICwgbV90cmltbWVkVHJhaWxpbmdXaGl0ZXNw
YWNlV2lkdGgKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDk1OGYzNjNiNmJk
MC4uNTJlYmIyMmE4NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgiCiAKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIklubGluZUNvbnRlbnRBbGlnbmVyLmgiCiAjaW5jbHVk
ZSAiSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxl
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKQEAgLTEwMyw3ICsxMDQsNyBAQCBJ
bmxpbmVEaXNwbGF5OjpCb3hlcyBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmJ1aWxkKGNv
bnN0IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgZWxzZQogICAgICAgICBwcm9jZXNzTm9uQmlkaUNv
bnRlbnQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOwogICAgIHByb2Nlc3NGbG9h
dEJveGVzKGxpbmVMYXlvdXRSZXN1bHQpOwotICAgIHByb2Nlc3NSdWJ5Q29udGVudChib3hlcyk7
CisgICAgcHJvY2Vzc1J1YnlDb250ZW50KGJveGVzLCBsaW5lTGF5b3V0UmVzdWx0KTsKIAogICAg
IGNvbGxlY3RJbmtPdmVyZmxvd0ZvclRleHREZWNvcmF0aW9ucyhib3hlcyk7CiAgICAgY29sbGVj
dElua092ZXJmbG93Rm9ySW5saW5lQm94ZXMoYm94ZXMpOwpAQCAtMTEwOCwxMSArMTEwOSwxNCBA
QCBzaXplX3QgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzUnVieUJhc2Uoc2l6
ZV90IHJ1YnlCYXNlU3RhcnQsIElubGluZQogICAgIHJldHVybiBydWJ5QmFzZUVuZDsKIH0KIAot
dm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NSdWJ5Q29udGVudChJbmxp
bmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzKQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXI6OnByb2Nlc3NSdWJ5Q29udGVudChJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxh
eUJveGVzLCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0KQogewogICAg
IGlmICghbV9oYXNTZWVuUnVieUJhc2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gcnVi
eUJhc2VzTWF5SGF2ZUNvbGxhcHNlZCA9ICFsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5
LnZpc3VhbE9yZGVyTGlzdC5pc0VtcHR5KCk7CisgICAgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojph
cHBseUFsaWdubWVudE9mZnNldExpc3QoZGlzcGxheUJveGVzLCBsaW5lTGF5b3V0UmVzdWx0LnJ1
YnlBbGlnbmVtbnRPZmZzZXRMaXN0LCBydWJ5QmFzZXNNYXlIYXZlQ29sbGFwc2VkID8gUnVieUZv
cm1hdHRpbmdDb250ZXh0OjpSdWJ5QmFzZXNNYXlOZWVkUmVzaXppbmc6OlllcyA6IFJ1YnlGb3Jt
YXR0aW5nQ29udGV4dDo6UnVieUJhc2VzTWF5TmVlZFJlc2l6aW5nOjpObywgZm9ybWF0dGluZ0Nv
bnRleHQoKSk7CisKICAgICBWZWN0b3I8V1RGOjpSYW5nZTxzaXplX3Q+PiBpbnRlcmxpbmVhclJ1
YnlDb2x1bW5SYW5nZUxpc3Q7CiAgICAgVmVjdG9yPHNpemVfdD4gcnVieUJhc2VTdGFydEluZGV4
TGlzdFdpdGhBbm5vdGF0aW9uOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBk
aXNwbGF5Qm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlD
b250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAppbmRleCA2NmU1
NzkzYTAzZGYuLmNiMjUxZTU5OGZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCkBAIC02NCw3ICs2NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnNlcnRSdWJ5QW5ub3RhdGlvbkJveChjb25zdCBCb3gm
IGFubm90YXRpb25Cb3gsIHNpemVfdCBpbnNlcnRpb25Qb3NpdGlvbiwgSW5saW5lRGlzcGxheTo6
Qm94ZXMmKTsKIAogICAgIHNpemVfdCBwcm9jZXNzUnVieUJhc2Uoc2l6ZV90IHJ1YnlCYXNlU3Rh
cnQsIElubGluZURpc3BsYXk6OkJveGVzJiwgVmVjdG9yPFdURjo6UmFuZ2U8c2l6ZV90Pj4mIGlu
dGVybGluZWFyUnVieUNvbHVtblJhbmdlTGlzdCwgVmVjdG9yPHNpemVfdD4mIHJ1YnlCYXNlU3Rh
cnRJbmRleExpc3RXaXRoQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBwcm9jZXNzUnVieUNvbnRlbnQo
SW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKKyAgICB2b2lkIHByb2Nlc3NSdWJ5Q29udGVudChJbmxp
bmVEaXNwbGF5OjpCb3hlcyYsIGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmKTsKICAgICB2b2lkIGFw
cGx5UnVieU92ZXJoYW5nKElubGluZURpc3BsYXk6OkJveGVzJiwgY29uc3QgVmVjdG9yPFdURjo6
UmFuZ2U8c2l6ZV90Pj4mIGludGVybGluZWFyUnVieUNvbHVtblJhbmdlTGlzdCk7CiAKICAgICB2
b2lkIHNldElubGluZUJveEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IElubGluZVJlY3QmLCBi
b29sIGlzRmlyc3RJbmxpbmVCb3hGcmFnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNTYxZWMwN2Q1Y2VlLi45Nzg1
NjQzZWI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0
aW5nQ29udGV4dC5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBJbmxpbmVMYXlvdXRVbml0IFJ1YnlG
b3JtYXR0aW5nQ29udGV4dDo6YmFzZUVuZEFkZGl0aW9uYWxMb2dpY2FsV2lkdGgoY29uc3QgQm94
JgogICAgIHJldHVybiBhbm5vdGF0aW9uQm94TG9naWNhbFdpZHRoKHJ1YnlCYXNlTGF5b3V0Qm94
LCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CiB9CiAKLXN0YXRpYyBzaXplX3QgYXBwbHlSdWJ5
QWxpZ25PbkJhc2VDb250ZW50KHNpemVfdCBydWJ5QmFzZVN0YXJ0LCBMaW5lJiBsaW5lLCBjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCitzaXpl
X3QgUnVieUZvcm1hdHRpbmdDb250ZXh0OjphcHBseVJ1YnlBbGlnbk9uQmFzZUNvbnRlbnQoc2l6
ZV90IHJ1YnlCYXNlU3RhcnQsIExpbmUmIGxpbmUsIEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5l
TGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExpc3QsIGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKIHsKICAgICBhdXRvJiBydW5zID0gbGlu
ZS5ydW5zKCk7CiAgICAgYXV0byYgcnVieUJhc2VMYXlvdXRCb3ggPSBydW5zW3J1YnlCYXNlU3Rh
cnRdLmxheW91dEJveCgpOwpAQCAtMjQ4LDE3ICsyNDgsMjYgQEAgc3RhdGljIHNpemVfdCBhcHBs
eVJ1YnlBbGlnbk9uQmFzZUNvbnRlbnQoc2l6ZV90IHJ1YnlCYXNlU3RhcnQsIExpbmUmIGxpbmUs
IGNvbnMKICAgICB9CiAKICAgICBhdXRvIGFubm90YXRpb25Cb3hMb2dpY2FsV2lkdGggPSBJbmxp
bmVMYXlvdXRVbml0IHsgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmFu
bm90YXRpb25Cb3gpLm1hcmdpbkJveFdpZHRoKCkgfTsKLSAgICBhdXRvIGJhc2VDb250ZW50TG9n
aWNhbFdpZHRoID0gcnVuc1tydWJ5QmFzZUVuZCAtIDFdLmxvZ2ljYWxSaWdodCgpIC0gcnVuc1ty
dWJ5QmFzZVN0YXJ0XS5sb2dpY2FsTGVmdCgpOwotCisgICAgYXV0byBiYXNlQ29udGVudExvZ2lj
YWxXaWR0aCA9IHJ1bnNbcnVieUJhc2VFbmRdLmxvZ2ljYWxMZWZ0KCkgLSBydW5zW3J1YnlCYXNl
U3RhcnRdLmxvZ2ljYWxSaWdodCgpOwogICAgIGlmIChhbm5vdGF0aW9uQm94TG9naWNhbFdpZHRo
IDw9IGJhc2VDb250ZW50TG9naWNhbFdpZHRoKQogICAgICAgICByZXR1cm4gcnVieUJhc2VFbmQ7
CiAKLSAgICBJbmxpbmVDb250ZW50QWxpZ25lcjo6YXBwbHlSdWJ5QWxpZ24obGluZS5ydW5zKCks
IHsgcnVieUJhc2VTdGFydCwgcnVieUJhc2VFbmQgfSwgYW5ub3RhdGlvbkJveExvZ2ljYWxXaWR0
aCAtIGJhc2VDb250ZW50TG9naWNhbFdpZHRoLCB7IH0pOworICAgIC8vIEZJWE1FOiBydWJ5LWFs
aWduOiBzcGFjZS1hcm91bmQgb25seQorICAgIGF1dG8gc3BhY2VUb0Rpc3RyaWJ1dGUgPSBhbm5v
dGF0aW9uQm94TG9naWNhbFdpZHRoIC0gYmFzZUNvbnRlbnRMb2dpY2FsV2lkdGg7CisgICAgYXV0
byBhbGlnbm1lbnRPZmZzZXQgPSBJbmxpbmVDb250ZW50QWxpZ25lcjo6YXBwbHlSdWJ5QWxpZ25T
cGFjZUFyb3VuZChsaW5lLnJ1bnMoKSwgeyBydWJ5QmFzZVN0YXJ0LCBydWJ5QmFzZUVuZCArIDEg
fSwgc3BhY2VUb0Rpc3RyaWJ1dGUpOworICAgIC8vIFJlc2V0IHRoZSBzcGFjaW5nIHdlIGFkZGVk
IGF0IExpbmVCdWlsZGVyLgorICAgIGF1dG8mIHJ1YnlCYXNlRW5kUnVuID0gcnVuc1tydWJ5QmFz
ZUVuZF07CisgICAgcnVieUJhc2VFbmRSdW4uc2hyaW5rSG9yaXpvbnRhbGx5KHNwYWNlVG9EaXN0
cmlidXRlKTsKKyAgICBydWJ5QmFzZUVuZFJ1bi5tb3ZlSG9yaXpvbnRhbGx5KDIgKiBhbGlnbm1l
bnRPZmZzZXQpOworCisgICAgQVNTRVJUKCFhbGlnbm1lbnRPZmZzZXRMaXN0LmNvbnRhaW5zKCZy
dWJ5QmFzZUxheW91dEJveCkpOworICAgIGFsaWdubWVudE9mZnNldExpc3QuYWRkKCZydWJ5QmFz
ZUxheW91dEJveCwgYWxpZ25tZW50T2Zmc2V0KTsKICAgICByZXR1cm4gcnVieUJhc2VFbmQ7CiB9
CiAKLXZvaWQgUnVieUZvcm1hdHRpbmdDb250ZXh0OjphcHBseVJ1YnlBbGlnbihMaW5lJiBsaW5l
LCBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQp
CitIYXNoTWFwPGNvbnN0IEJveCosIElubGluZUxheW91dFVuaXQ+IFJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6YXBwbHlSdWJ5QWxpZ24oTGluZSYgbGluZSwgY29uc3QgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQogeworICAgIEhhc2hNYXA8Y29uc3QgQm94
KiwgSW5saW5lTGF5b3V0VW5pdD4gYWxpZ25tZW50T2Zmc2V0TGlzdDsKICAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXJ1YnkvI2ludGVybGluZWFyLWlubGluZQogICAgIC8vIFdp
dGhpbiBlYWNoIGJhc2UgYW5kIGFubm90YXRpb24gYm94LCBob3cgdGhlIGV4dHJhIHNwYWNlIGlz
IGRpc3RyaWJ1dGVkIHdoZW4gaXRzIGNvbnRlbnQgaXMgbmFycm93ZXIgdGhhbgogICAgIC8vIHRo
ZSBtZWFzdXJlIG9mIHRoZSBib3ggaXMgc3BlY2lmaWVkIGJ5IGl0cyBydWJ5LWFsaWduIHByb3Bl
cnR5LgpAQCAtMjY2LDggKzI3NSwxNiBAQCB2b2lkIFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YXBw
bHlSdWJ5QWxpZ24oTGluZSYgbGluZSwgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbgogICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBydW5zLnNpemUoKTsgKytpbmRleCkgewogICAg
ICAgICBhdXRvJiBsaW5lUnVuID0gcnVuc1tpbmRleF07CiAgICAgICAgIGlmIChsaW5lUnVuLmlz
SW5saW5lQm94U3RhcnQoKSAmJiBsaW5lUnVuLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSkKLSAg
ICAgICAgICAgIGluZGV4ID0gYXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250ZW50KGluZGV4LCBsaW5l
LCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CisgICAgICAgICAgICBpbmRleCA9IGFwcGx5UnVi
eUFsaWduT25CYXNlQ29udGVudChpbmRleCwgbGluZSwgYWxpZ25tZW50T2Zmc2V0TGlzdCwgaW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQpOwogICAgIH0KKyAgICByZXR1cm4gYWxpZ25tZW50T2Zmc2V0
TGlzdDsKK30KKwordm9pZCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmFwcGx5QWxpZ25tZW50T2Zm
c2V0TGlzdChJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzLCBjb25zdCBIYXNoTWFw
PGNvbnN0IEJveCosIElubGluZUxheW91dFVuaXQ+JiBhbGlnbm1lbnRPZmZzZXRMaXN0LCBSdWJ5
QmFzZXNNYXlOZWVkUmVzaXppbmcgcnVieUJhc2VzTWF5TmVlZFJlc2l6aW5nLCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgaWYgKGFsaWdu
bWVudE9mZnNldExpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgSW5saW5lQ29u
dGVudEFsaWduZXI6OmFwcGx5UnVieUJhc2VBbGlnbm1lbnRPZmZzZXQoZGlzcGxheUJveGVzLCBh
bGlnbm1lbnRPZmZzZXRMaXN0LCBydWJ5QmFzZXNNYXlOZWVkUmVzaXppbmcgPT0gUnVieUJhc2Vz
TWF5TmVlZFJlc2l6aW5nOjpObyA/IElubGluZUNvbnRlbnRBbGlnbmVyOjpBZGp1c3RDb250ZW50
T25seUluc2lkZVJ1YnlCYXNlOjpZZXMgOiBJbmxpbmVDb250ZW50QWxpZ25lcjo6QWRqdXN0Q29u
dGVudE9ubHlJbnNpZGVSdWJ5QmFzZTo6Tm8sIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KTsKIH0K
IAogSW5saW5lTGF5b3V0UG9pbnQgUnVieUZvcm1hdHRpbmdDb250ZXh0OjpwbGFjZUFubm90YXRp
b25Cb3goY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgY29uc3QgUmVjdCYgcnVieUJhc2VN
YXJnaW5Cb3gsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29u
dGV4dC5oCmluZGV4IDUzMDFiMDJjY2RiMy4uODcxZTk5ODAyYjlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3Jt
YXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5KGNvbnN0
IElubGluZUl0ZW0mIHByZXZpb3VzLCBjb25zdCBJbmxpbmVJdGVtJiBjdXJyZW50KTsKICAgICBz
dGF0aWMgSW5saW5lTGF5b3V0VW5pdCBhbm5vdGF0aW9uQm94TG9naWNhbFdpZHRoKGNvbnN0IEJv
eCYgcnVieUJhc2VMYXlvdXRCb3gsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiAg
ICAgc3RhdGljIElubGluZUxheW91dFVuaXQgYmFzZUVuZEFkZGl0aW9uYWxMb2dpY2FsV2lkdGgo
Y29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgY29uc3QgTGluZTo6UnVuTGlzdCYsIGNvbnN0
IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuTGlzdCYsIGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlSdWJ5QWxp
Z24oTGluZSYsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CisgICAgc3RhdGljIEhh
c2hNYXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4gYXBwbHlSdWJ5QWxpZ24oTGluZSYs
IGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiAKICAgICAvLyBMaW5lIGJveCBidWls
ZGluZwogICAgIHN0YXRpYyB2b2lkIGFwcGx5QW5ub3RhdGlvbkNvbnRyaWJ1dGlvblRvTGF5b3V0
Qm91bmRzKExpbmVCb3gmLCBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwpAQCAtNTUs
MTIgKzU1LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBvdmVyaGFu
Z0ZvckFubm90YXRpb25CZWZvcmUoY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgc2l6ZV90
IHJ1YnlCYXNlU3RhcnQsIGNvbnN0IElubGluZURpc3BsYXk6OkJveGVzJiwgY29uc3QgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQmKTsKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBvdmVyaGFu
Z0ZvckFubm90YXRpb25BZnRlcihjb25zdCBCb3gmIHJ1YnlCYXNlTGF5b3V0Qm94LCBXVEY6OlJh
bmdlPHNpemVfdD4gcnVieUJhc2VSYW5nZSwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmLCBj
b25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwogCisgICAgZW51bSBjbGFzcyBSdWJ5QmFz
ZXNNYXlOZWVkUmVzaXppbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0YXRpYyB2b2lkIGFw
cGx5QWxpZ25tZW50T2Zmc2V0TGlzdChJbmxpbmVEaXNwbGF5OjpCb3hlcyYsIGNvbnN0IEhhc2hN
YXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExpc3QsIFJ1
YnlCYXNlc01heU5lZWRSZXNpemluZywgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKKwogICAg
IC8vIE1pc2NlbGxhbmVvdXMgaGVscGVycwogICAgIHN0YXRpYyBib29sIGhhc0ludGVybGluZWFy
QW5ub3RhdGlvbihjb25zdCBCb3gmIHJ1YnlCYXNlTGF5b3V0Qm94KTsKICAgICBzdGF0aWMgYm9v
bCBoYXNJbnRlckNoYXJhY3RlckFubm90YXRpb24oY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJv
eCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRqdXN0TGF5b3V0Qm91bmRzQW5kU3Ry
ZXRjaEFuY2VzdG9yUnVieUJhc2UoTGluZUJveCYsIElubGluZUxldmVsQm94JiBydWJ5QmFzZUlu
bGluZUJveCwgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKKyAgICBzdGF0aWMgc2l6
ZV90IGFwcGx5UnVieUFsaWduT25CYXNlQ29udGVudChzaXplX3QgcnVieUJhc2VTdGFydCwgTGlu
ZSYsIEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNl
dExpc3QsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBMYXlvdXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468964</attachid>
            <date>2023-12-10 06:49:03 -0800</date>
            <delta_ts>2023-12-10 08:42:38 -0800</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-266153-20231210064902.patch</filename>
            <type>text/plain</type>
            <size>27885</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkYjBmODA2MzhjOTMwMmM5MjVhMzQ0ZWY0OGUyOWE2ZjEyYTcxZTUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBEZWMgMjAyMyAxMzo1NTo1OCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGJ1Z1tJRkNd
W1J1YnldIEFkZCBzdXBwb3J0IGZvciBydWJ5IGFsaWduIG9uIGJpZGkgY29udGVudAogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NjE1MwoKUmV2aWV3ZWQgYnkgQW50
dGkgS29pdmlzdG8uCgpUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgInJ1YnktYWxpZ246IHNw
YWNlLWFyb3VuZCIgb24gYm90aCBiaWRpIGFuZCBub24tYmlkaSBjb250ZW50LgoKInJ1YnktYWxp
Z246IHNwYWNlLWFyb3VuZCIgY29uc2lzdHMgb2YgMiBhZGp1c3RtZW50cyBhdCBydW4gbGV2ZWwu
Ci0gcnVuIHNwYWNpbmcgYXQganVzdGlmaWNhdGlvbiBvcHBvcnR1bml0aWVzIChzaW1pbGFyIHRv
IHRleHQtYWxpZ246IGp1c3RpZnkpCi0gY29udGVudCBvZmZzZXR0aW5nIHRvIGRpc3RyaWJ1dGUg
b25lIGV4dHJhIGp1c3RpZmljYXRpb24gb3Bwb3J0dW5pdHkgc3BhY2UgYmVmb3JlL2FmdGVyIGJh
c2UgY29udGVudAoKSW4gdGhpcyBwYXRjaCB3ZSBzdGFydCBjb21wdXRpbmcgdGhlIG9mZnNldCB2
YWx1ZXMgYXQgc3RlcCAjMSBhbmQgcGFzcyB0aGVtIG92ZXIgdG8gSW5saW5lQ29udGVudEJ1aWxk
ZXIgd2hlcmUgdGhlIGZpbmFsIHJ1YnkgcHJvY2Vzc2luZyBoYXBwZW5zICh1c2luZyB2aXN1YWwg
b3JkZXIpLgpJbmxpbmVDb250ZW50QWxpZ25lciB0YWtlcyB0aGVzZSBvZmZzZXQgdmFsdWVzIGFu
ZCBhZGp1c3RzIChhbGlnbnMpIHRoZSBkaXNwbGF5IGJveGVzIGFjY29yZGluZ2x5LgoKV2hhdCBt
YWtlcyBpdCBhIGJpdCBtb3JlIHZlcmJvc2UgaXMgdGhlIGZhY3QgdGhhdCB3aGlsZSBub24tYmlk
aSBiYXNlIHJ1bnMgaGF2ZSB0aGUgY29ycmVjdCBzcGFjaW5nIChlLmcuIHdoZW4gYW5ub3RhdGlv
biBpcyB3aWRlciB0aGFuIHRoZSBiYXNlKSwgd2UgbG9zZSB0aGF0IGluZm9ybWF0aW9uIGF0CnZp
c3VhbCByZW9yZGVyaW5nICg8LSB3ZSBlc3NlbnRpYWxseSBoYXZlIGEgZmFzdCBwYXRoIGZvciBu
b24tYmlkaSBjb250ZW50LCB3aGVyZSBhcyB3ZSBidWlsZCB0aGUgTGluZSBmb3IgbGluZSBicmVh
a2luZyB3ZSBhbHNvIGNvbXB1dGUgaG9yaXpvbnRhbCBjb250ZW50IHBvc2l0aW9ucykKSXQgc2lt
cGx5IG1lYW5zIHRoYXQgd2hpbGUgbm9uLWJpZGkgY29udGVudCwgb2Zmc2V0dGluZyBtZWFucyBq
dXN0IG1vdmluZyBjb250ZW50IGluc2lkZSB0aGUgYmFzZSB3aXRob3V0IHB1c2hpbmcgYWRqYWNl
bnQgY29udGVudC9leHBhbmRpbmcgZW5jbG9zaW5nIGlubGluZSBib3hlcywKYmlkaSBjb250ZW50
IG5lZWRzIGJvdGggKHNlZSBBZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlKS4KCiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVu
dEFsaWduZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpzaGlmdERpc3BsYXlCb3gpOgooV2ViQ29y
ZTo6TGF5b3V0OjpleHBhbmRJbmxpbmVCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjphbGlnbm1lbnRP
ZmZzZXQpOgooV2ViQ29yZTo6TGF5b3V0OjpleHBhbmRJbmxpbmVCb3hXaXRoRGVzY2VuZGFudHMp
OgooV2ViQ29yZTo6TGF5b3V0OjpzaGlmdFJ1YnlCYXNlQ29udGVudEJ5QWxpZ25tZW50T2Zmc2V0
KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEFsaWduZXI6OmFwcGx5UnVieUFsaWdu
U3BhY2VBcm91bmQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QWxpZ25lcjo6YXBw
bHlSdWJ5QmFzZUFsaWdubWVudE9mZnNldCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRl
bnRBbGlnbmVyOjphcHBseVJ1YnlBbGlnbik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuaDoKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGF5b3V0
SW5saW5lQ29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvTGluZUxheW91dFJlc3VsdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwOgooV2Vi
Q29yZTo6TGF5b3V0OjpUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250
ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NSdWJ5Q29udGVudCk6CiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHA6CihXZWJDb3Jl
OjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250
ZW50KToKKFdlYkNvcmU6OkxheW91dDo6UnVieUZvcm1hdHRpbmdDb250ZXh0OjphcHBseVJ1YnlB
bGlnbik6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YXBwbHlBbGln
bm1lbnRPZmZzZXRMaXN0KToKKFdlYkNvcmU6OkxheW91dDo6YXBwbHlSdWJ5QWxpZ25PbkJhc2VD
b250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5oOgotLS0KIC4uLi9pbmxpbmUv
SW5saW5lQ29udGVudEFsaWduZXIuY3BwICAgICAgICAgICB8IDE0OCArKysrKysrKysrKysrKysr
LS0KIC4uLi9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuaCAgICAgICAgICAgICB8ICAgNiAr
LQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oICAgIHwgICAxICsK
IC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8ICAgNCArLQog
Li4uL2lubGluZS9MaW5lTGF5b3V0UmVzdWx0LmggICAgICAgICAgICAgICAgIHwgICAzICsKIC4u
Li9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5jcHAgICAgICB8ICAgMSArCiAuLi4v
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICAgfCAgIDggKy0KIC4uLi9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oICAgICB8ICAgMiArLQogLi4uL2lu
bGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAgICAgIHwgIDI5ICsrKy0KIC4uLi9p
bmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuaCAgICAgICB8ICAgNiArLQogMTAgZmls
ZXMgY2hhbmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUNvbnRlbnRBbGlnbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGlnbmVyLmNwcAppbmRleCBkZGFmM2FlM2QxZjgu
LjZlM2RjZjI2NTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGln
bmVyLmNwcApAQCAtMzEsNiArMzEsMTA0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgTGF5b3V0IHsKIAorc3RhdGljIGlubGluZSB2b2lkIHNoaWZ0RGlzcGxheUJveChJbmxpbmVE
aXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gsIElubGluZUxheW91dFVuaXQgb2Zmc2V0LCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgaWYgKCFv
ZmZzZXQpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
ID0gaW5saW5lRm9ybWF0dGluZ0NvbnRleHQucm9vdCgpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKTsKKyAgICBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IGRpc3BsYXlCb3gubW92
ZUhvcml6b250YWxseShvZmZzZXQpIDogZGlzcGxheUJveC5tb3ZlVmVydGljYWxseShvZmZzZXQp
OworICAgIGlmICghZGlzcGxheUJveC5pc1RleHRPclNvZnRMaW5lQnJlYWsoKSAmJiAhZGlzcGxh
eUJveC5pc1Jvb3RJbmxpbmVCb3goKSkgeworICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGlu
bGluZUZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGRpc3BsYXlCb3gubGF5b3V0Qm94
KCkpOworICAgICAgICBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IGJveEdlb21ldHJ5Lm1vdmVI
b3Jpem9udGFsbHkoTGF5b3V0VW5pdCB7IG9mZnNldCB9KSA6IGJveEdlb21ldHJ5Lm1vdmVWZXJ0
aWNhbGx5KExheW91dFVuaXQgeyBvZmZzZXQgfSk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5l
IHZvaWQgZXhwYW5kSW5saW5lQm94KElubGluZUxheW91dFVuaXQgZXhwYW5zaW9uLCBJbmxpbmVE
aXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gsIElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoZGlzcGxheUJveC5pc0lubGluZUJveCgp
KTsKKyAgICBpZiAoIWV4cGFuc2lvbikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUgPSBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5yb290KCkuc3R5bGUo
KS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOworICAgIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
ID8gZGlzcGxheUJveC5leHBhbmRIb3Jpem9udGFsbHkoZXhwYW5zaW9uKSA6IGRpc3BsYXlCb3gu
ZXhwYW5kVmVydGljYWxseShleHBhbnNpb24pOworICAgIGlmICghZGlzcGxheUJveC5pc1RleHRP
clNvZnRMaW5lQnJlYWsoKSAmJiAhZGlzcGxheUJveC5pc1Jvb3RJbmxpbmVCb3goKSkgeworICAg
ICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGlubGluZUZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5
Rm9yQm94KGRpc3BsYXlCb3gubGF5b3V0Qm94KCkpOworICAgICAgICBpc0hvcml6b250YWxXcml0
aW5nTW9kZSA/IGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChib3hHZW9tZXRyeS5jb250
ZW50Qm94V2lkdGgoKSArIExheW91dFVuaXQgeyBleHBhbnNpb24gfSkgOiBib3hHZW9tZXRyeS5z
ZXRDb250ZW50Qm94SGVpZ2h0KGJveEdlb21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQoKSArIExheW91
dFVuaXQgeyBleHBhbnNpb24gfSk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIElubGluZUxh
eW91dFVuaXQgYWxpZ25tZW50T2Zmc2V0KGF1dG8mIGxhdHlvdXRCb3gsIGF1dG8mIGFsaWdubWVu
dE9mZnNldExpc3QpCit7CisgICAgYXV0byBhbGlnbm1lbnRPZmZzZXRFbnRyeSA9IGFsaWdubWVu
dE9mZnNldExpc3QuZmluZCgmbGF0eW91dEJveCk7CisgICAgcmV0dXJuIGFsaWdubWVudE9mZnNl
dEVudHJ5ICE9IGFsaWdubWVudE9mZnNldExpc3QuZW5kKCkgPyBhbGlnbm1lbnRPZmZzZXRFbnRy
eS0+dmFsdWUgOiAwLmY7Cit9CisKK3N0cnVjdCBJbmxpbmVCb3hJbmRleEFuZEV4cGFuc2lvbiB7
CisgICAgc2l6ZV90IGluZGV4IHsgMCB9OworICAgIElubGluZUxheW91dFVuaXQgZXhwYW5zaW9u
IHsgMC5mIH07Cit9Oworc3RhdGljIElubGluZUJveEluZGV4QW5kRXhwYW5zaW9uIGV4cGFuZElu
bGluZUJveFdpdGhEZXNjZW5kYW50cyhzaXplX3QgaW5saW5lQm94SW5kZXgsIElubGluZURpc3Bs
YXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMsIGNvbnN0IEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5l
TGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExpc3QsICBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgaWYgKGlubGluZUJveEluZGV4ID49
IGRpc3BsYXlCb3hlcy5zaXplKCkgfHwgIWRpc3BsYXlCb3hlc1tpbmxpbmVCb3hJbmRleF0uaXNJ
bmxpbmVCb3goKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIHsgaW5saW5lQm94SW5kZXgsIHsgfSB9OworICAgIH0KKyAgICBhdXRvJiBpbmxpbmVCb3gg
PSBkaXNwbGF5Qm94ZXNbaW5saW5lQm94SW5kZXhdLmxheW91dEJveCgpOworICAgIGF1dG8gZGVz
Y2VuZGFudEV4cGFuc2lvbiA9IElubGluZUxheW91dFVuaXQgeyAwLmYgfTsKKyAgICBzaXplX3Qg
aW5kZXggPSBpbmxpbmVCb3hJbmRleCArIDE7CisgICAgd2hpbGUgKGluZGV4IDwgZGlzcGxheUJv
eGVzLnNpemUoKSAmJiAmZGlzcGxheUJveGVzW2luZGV4XS5sYXlvdXRCb3goKS5wYXJlbnQoKSA9
PSAmaW5saW5lQm94KSB7CisgICAgICAgIGlmIChkaXNwbGF5Qm94ZXNbaW5kZXhdLmlzSW5saW5l
Qm94KCkpIHsKKyAgICAgICAgICAgIGF1dG8gaW5kZXhBbmRFeHBhbnNpb24gPSBleHBhbmRJbmxp
bmVCb3hXaXRoRGVzY2VuZGFudHMoaW5kZXgsIGRpc3BsYXlCb3hlcywgYWxpZ25tZW50T2Zmc2V0
TGlzdCwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOworICAgICAgICAgICAgaW5kZXggPSBpbmRl
eEFuZEV4cGFuc2lvbi5pbmRleDsKKyAgICAgICAgICAgIGRlc2NlbmRhbnRFeHBhbnNpb24gKz0g
aW5kZXhBbmRFeHBhbnNpb24uZXhwYW5zaW9uOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgYXV0byB0b3RhbEV4cGFuc2lvbiA9
IDIgKiBhbGlnbm1lbnRPZmZzZXQoaW5saW5lQm94LCBhbGlnbm1lbnRPZmZzZXRMaXN0KSArIGRl
c2NlbmRhbnRFeHBhbnNpb247CisgICAgaWYgKGlubGluZUJveEluZGV4KSB7CisgICAgICAgIC8v
IFJvb3QgaW5saW5lIGJveCBoYXMgdGhlIGNvcnJlY3QgKGluZmxhdGVkKSBsb2dpY2FsIHdpZHRo
LgorICAgICAgICBleHBhbmRJbmxpbmVCb3godG90YWxFeHBhbnNpb24sIGRpc3BsYXlCb3hlc1tp
bmxpbmVCb3hJbmRleF0sIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KTsKKyAgICB9CisgICAgcmV0
dXJuIHsgaW5kZXgsIHRvdGFsRXhwYW5zaW9uIH07Cit9CisKK3N0cnVjdCBCYXNlSW5kZXhBbmRP
ZmZzZXQgeworICAgIHNpemVfdCBpbmRleCB7IDAgfTsKKyAgICBJbmxpbmVMYXlvdXRVbml0IG9m
ZnNldCB7IDAuZiB9OworfTsKK3N0YXRpYyBCYXNlSW5kZXhBbmRPZmZzZXQgc2hpZnRSdWJ5QmFz
ZUNvbnRlbnRCeUFsaWdubWVudE9mZnNldChCYXNlSW5kZXhBbmRPZmZzZXQgYmFzZUluZGV4QW5k
T2Zmc2V0LCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzLCBjb25zdCBIYXNoTWFw
PGNvbnN0IEJveCosIElubGluZUxheW91dFVuaXQ+JiBhbGlnbm1lbnRPZmZzZXRMaXN0LCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgYXV0
byBiYXNlSW5kZXggPSBiYXNlSW5kZXhBbmRPZmZzZXQuaW5kZXg7CisgICAgaWYgKGJhc2VJbmRl
eCA+PSBkaXNwbGF5Qm94ZXMuc2l6ZSgpIHx8ICFkaXNwbGF5Qm94ZXNbYmFzZUluZGV4XS5sYXlv
dXRCb3goKS5pc1J1YnlCYXNlKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiB7IGJhc2VJbmRleEFuZE9mZnNldC5pbmRleCwgeyB9IH07CisgICAgfQor
CisgICAgLy8gU2hpZnQgYmFzZSBjb250ZW50IHdpdGhpbiB0aGUgYmFzZSAobm8gcmVzaXplKSBh
cyBwYXJ0IG9mIHRoZSBhbGlnbm1lbnQgcHJvY2Vzcy4KKyAgICBhdXRvJiBydWJ5QmFzZUJveCA9
IGRpc3BsYXlCb3hlc1tiYXNlSW5kZXhdLmxheW91dEJveCgpOworICAgIGF1dG8mIHJ1YnlCb3gg
PSBydWJ5QmFzZUJveC5wYXJlbnQoKTsKKyAgICBhdXRvIGJhc2VPZmZzZXQgPSBiYXNlSW5kZXhB
bmRPZmZzZXQub2Zmc2V0OworICAgIGF1dG8gYmFzZUNvbnRlbnRPZmZzZXQgPSBhbGlnbm1lbnRP
ZmZzZXQocnVieUJhc2VCb3gsIGFsaWdubWVudE9mZnNldExpc3QpOworICAgIHNpemVfdCBiYXNl
Q29udGVudEluZGV4ID0gYmFzZUluZGV4ICsgMTsKKworICAgIHdoaWxlIChiYXNlQ29udGVudElu
ZGV4IDwgZGlzcGxheUJveGVzLnNpemUoKSkgeworICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
ZGlzcGxheUJveGVzW2Jhc2VDb250ZW50SW5kZXhdOworICAgICAgICBhdXRvJiBsYXlvdXRCb3gg
PSBkaXNwbGF5Qm94LmxheW91dEJveCgpOworICAgICAgICBpZiAoJmxheW91dEJveC5wYXJlbnQo
KSA9PSAmcnVieUJveCB8fCAmbGF5b3V0Qm94LnBhcmVudCgpID09ICZydWJ5Qm94LnBhcmVudCgp
KSB7CisgICAgICAgICAgICAvLyBOb3QgaW4gdGhpcyBydWJ5IGJhc2UgYW55bW9yZS4KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICghbGF5b3V0Qm94LmlzUnVieUFu
bm90YXRpb25Cb3goKSkKKyAgICAgICAgICAgIHNoaWZ0RGlzcGxheUJveChkaXNwbGF5Qm94LCBi
YXNlT2Zmc2V0ICsgYmFzZUNvbnRlbnRPZmZzZXQsIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KTsK
KyAgICAgICAgaWYgKGxheW91dEJveC5pc1J1YnlCYXNlKCkpIHsKKyAgICAgICAgICAgIGJhc2VD
b250ZW50SW5kZXggPSBzaGlmdFJ1YnlCYXNlQ29udGVudEJ5QWxpZ25tZW50T2Zmc2V0KHsgYmFz
ZUNvbnRlbnRJbmRleCwgYmFzZU9mZnNldCArIGJhc2VDb250ZW50T2Zmc2V0IH0sIGRpc3BsYXlC
b3hlcywgYWxpZ25tZW50T2Zmc2V0TGlzdCwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpLmluZGV4
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgKytiYXNlQ29udGVu
dEluZGV4OworICAgIH0KKyAgICByZXR1cm4geyBiYXNlQ29udGVudEluZGV4LCAyICogYmFzZUNv
bnRlbnRPZmZzZXQgfTsKK30KKwogc3RhdGljIHZvaWQgY29tcHV0ZWRFeHBhbnNpb25zKGNvbnN0
IExpbmU6OlJ1bkxpc3QmIHJ1bnMsIFdURjo6UmFuZ2U8c2l6ZV90PiBydW5SYW5nZSwgc2l6ZV90
IGhhbmdpbmdUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGgsIEV4cGFuc2lvbkluZm8mIGV4cGFuc2lv
bkluZm8pCiB7CiAgICAgLy8gQ29sbGVjdCBhbmQgZGlzdHJpYnV0ZSB0aGUgZXhwYW5zaW9uIG9w
cG9ydHVuaXRpZXMuCkBAIC0xNDYsMjEgKzI0NCw1MSBAQCBJbmxpbmVMYXlvdXRVbml0IElubGlu
ZUNvbnRlbnRBbGlnbmVyOjphcHBseVRleHRBbGlnbkp1c3RpZnkoTGluZTo6UnVuTGlzdCYgcnVu
cwogICAgIHJldHVybiBhcHBseUV4cGFuc2lvbk9uUmFuZ2UocnVucywgZnVsbFJhbmdlLCBleHBh
bnNpb24sIHNwYWNlVG9EaXN0cmlidXRlKTsKIH0KIAotdm9pZCBJbmxpbmVDb250ZW50QWxpZ25l
cjo6YXBwbHlSdWJ5QWxpZ24oTGluZTo6UnVuTGlzdCYgcnVucywgV1RGOjpSYW5nZTxzaXplX3Q+
IHJ1YnlCYXNlUmFuZ2UsIElubGluZUxheW91dFVuaXQgc3BhY2VUb0Rpc3RyaWJ1dGUsIHNpemVf
dCBoYW5naW5nVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoKQorSW5saW5lTGF5b3V0VW5pdCBJbmxp
bmVDb250ZW50QWxpZ25lcjo6YXBwbHlSdWJ5QWxpZ25TcGFjZUFyb3VuZChMaW5lOjpSdW5MaXN0
JiBydW5zLCBXVEY6OlJhbmdlPHNpemVfdD4gcmFuZ2UsIElubGluZUxheW91dFVuaXQgc3BhY2VU
b0Rpc3RyaWJ1dGUpCiB7Ci0gICAgaWYgKHJ1YnlCYXNlUmFuZ2UuZGlzdGFuY2UoKSA8PSAxKQot
ICAgICAgICByZXR1cm47CisgICAgaWYgKHJ1bnMuaXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGlmIChz
cGFjZVRvRGlzdHJpYnV0ZSA8PSAwKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBl
eHBhbnNpb24gPSBFeHBhbnNpb25JbmZvIHsgfTsKKyAgICBjb21wdXRlZEV4cGFuc2lvbnMocnVu
cywgcmFuZ2UsIHsgfSwgZXhwYW5zaW9uKTsKKyAgICAvLyBBbnl0aGluZyB0byBkaXN0cmlidXRl
PworICAgIGlmICghZXhwYW5zaW9uLm9wcG9ydHVuaXR5Q291bnQpCisgICAgICAgIHJldHVybiBz
cGFjZVRvRGlzdHJpYnV0ZSAvIDI7CiAgICAgLy8gRklYTUU6IHJ1YnktYWxpZ246IHNwYWNlLWFy
b3VuZCBvbmx5CiAgICAgLy8gQXMgZm9yIHNwYWNlLWJldHdlZW4gZXhjZXB0IHRoYXQgdGhlcmUg
ZXhpc3RzIGFuIGV4dHJhIGp1c3RpZmljYXRpb24gb3Bwb3J0dW5pdGllcyB3aG9zZSBzcGFjZSBp
cyBkaXN0cmlidXRlZCBoYWxmIGJlZm9yZSBhbmQgaGFsZiBhZnRlciB0aGUgcnVieSBjb250ZW50
LgotICAgIGF1dG8gYmFzZUNvbnRlbnRSdW5SYW5nZSA9IFdURjo6UmFuZ2U8c2l6ZV90PiB7IHJ1
YnlCYXNlUmFuZ2UuYmVnaW4oKSArIDEsIHJ1YnlCYXNlUmFuZ2UuZW5kKCkgLSAxIH07Ci0gICAg
YXV0byBleHBhbnNpb24gPSBFeHBhbnNpb25JbmZvIHsgfTsKLSAgICBjb21wdXRlZEV4cGFuc2lv
bnMocnVucywgYmFzZUNvbnRlbnRSdW5SYW5nZSwgaGFuZ2luZ1RyYWlsaW5nV2hpdGVzcGFjZUxl
bmd0aCwgZXhwYW5zaW9uKTsKKyAgICBhdXRvIGV4dHJhRXhwYW5zaW9uT3Bwb3J0dW5pdHlTcGFj
ZSA9IHNwYWNlVG9EaXN0cmlidXRlIC8gKGV4cGFuc2lvbi5vcHBvcnR1bml0eUNvdW50ICsgMSk7
CisgICAgYXBwbHlFeHBhbnNpb25PblJhbmdlKHJ1bnMsIHJhbmdlLCBleHBhbnNpb24sIHNwYWNl
VG9EaXN0cmlidXRlIC0gZXh0cmFFeHBhbnNpb25PcHBvcnR1bml0eVNwYWNlKTsKKyAgICByZXR1
cm4gZXh0cmFFeHBhbnNpb25PcHBvcnR1bml0eVNwYWNlIC8gMjsKK30KIAotICAgIGlmIChleHBh
bnNpb24ub3Bwb3J0dW5pdHlDb3VudCkgewotICAgICAgICBhdXRvIGNvbnRlbnRMb2dpY2FsTGVm
dE9mZnNldCA9IHNwYWNlVG9EaXN0cmlidXRlIC8gKGV4cGFuc2lvbi5vcHBvcnR1bml0eUNvdW50
ICsgMSkgLyAyOwotICAgICAgICBzcGFjZVRvRGlzdHJpYnV0ZSAtPSAoMiAqIGNvbnRlbnRMb2dp
Y2FsTGVmdE9mZnNldCk7Ci0gICAgICAgIGFwcGx5RXhwYW5zaW9uT25SYW5nZShydW5zLCBiYXNl
Q29udGVudFJ1blJhbmdlLCBleHBhbnNpb24sIHNwYWNlVG9EaXN0cmlidXRlKTsKK3ZvaWQgSW5s
aW5lQ29udGVudEFsaWduZXI6OmFwcGx5UnVieUJhc2VBbGlnbm1lbnRPZmZzZXQoSW5saW5lRGlz
cGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcywgY29uc3QgSGFzaE1hcDxjb25zdCBCb3gqLCBJbmxp
bmVMYXlvdXRVbml0PiYgYWxpZ25tZW50T2Zmc2V0TGlzdCwgQWRqdXN0Q29udGVudE9ubHlJbnNp
ZGVSdWJ5QmFzZSBhZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlLCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgQVNTRVJUKCFhbGln
bm1lbnRPZmZzZXRMaXN0LmlzRW1wdHkoKSk7CisKKyAgICBhdXRvIGNvbnRlbnRPZmZzZXQgPSBJ
bmxpbmVMYXlvdXRVbml0IHsgMC5mIH07CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IGRpc3BsYXlCb3hlcy5zaXplKCk7KSB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBk
aXNwbGF5Qm94ZXNbaW5kZXhdOworCisgICAgICAgIGlmIChhZGp1c3RDb250ZW50T25seUluc2lk
ZVJ1YnlCYXNlID09IEFkanVzdENvbnRlbnRPbmx5SW5zaWRlUnVieUJhc2U6Ok5vKQorICAgICAg
ICAgICAgc2hpZnREaXNwbGF5Qm94KGRpc3BsYXlCb3gsIGNvbnRlbnRPZmZzZXQsIGlubGluZUZv
cm1hdHRpbmdDb250ZXh0KTsKKworICAgICAgICBpZiAoZGlzcGxheUJveC5sYXlvdXRCb3goKS5p
c1J1YnlCYXNlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gYmFzZUVuZEluZGV4QW5kQWxpZ25tZW50
ID0gc2hpZnRSdWJ5QmFzZUNvbnRlbnRCeUFsaWdubWVudE9mZnNldCh7IGluZGV4LCBjb250ZW50
T2Zmc2V0IH0sIGRpc3BsYXlCb3hlcywgYWxpZ25tZW50T2Zmc2V0TGlzdCwgaW5saW5lRm9ybWF0
dGluZ0NvbnRleHQpOworICAgICAgICAgICAgaW5kZXggPSBiYXNlRW5kSW5kZXhBbmRBbGlnbm1l
bnQuaW5kZXg7CisgICAgICAgICAgICBpZiAoYWRqdXN0Q29udGVudE9ubHlJbnNpZGVSdWJ5QmFz
ZSA9PSBBZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlOjpObykKKyAgICAgICAgICAgICAg
ICBjb250ZW50T2Zmc2V0ICs9IGJhc2VFbmRJbmRleEFuZEFsaWdubWVudC5vZmZzZXQ7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICArK2luZGV4OwogICAgIH0KKwor
ICAgIGlmIChhZGp1c3RDb250ZW50T25seUluc2lkZVJ1YnlCYXNlID09IEFkanVzdENvbnRlbnRP
bmx5SW5zaWRlUnVieUJhc2U6Ok5vKQorICAgICAgICBleHBhbmRJbmxpbmVCb3hXaXRoRGVzY2Vu
ZGFudHMoMCwgZGlzcGxheUJveGVzLCBhbGlnbm1lbnRPZmZzZXRMaXN0LCBpbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRBbGlnbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QWxp
Z25lci5oCmluZGV4IDU3YmQ5NDZhZWQ1Yi4uYjUwMzZjMjY0MmE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50
QWxpZ25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUNvbnRlbnRBbGlnbmVyLmgKQEAgLTMxLDcgKzMxLDExIEBAIG5hbWVzcGFj
ZSBMYXlvdXQgewogY2xhc3MgSW5saW5lQ29udGVudEFsaWduZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBJbmxpbmVMYXlvdXRVbml0IGFwcGx5VGV4dEFsaWduSnVzdGlmeShMaW5lOjpSdW5MaXN0
JiwgSW5saW5lTGF5b3V0VW5pdCBzcGFjZVRvRGlzdHJpYnV0ZSwgc2l6ZV90IGhhbmdpbmdUcmFp
bGluZ1doaXRlc3BhY2VMZW5ndGgpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5UnVieUFsaWduKExp
bmU6OlJ1bkxpc3QmLCBXVEY6OlJhbmdlPHNpemVfdD4gcnVieUJhc2VSYW5nZSwgSW5saW5lTGF5
b3V0VW5pdCBzcGFjZVRvRGlzdHJpYnV0ZSwgc2l6ZV90IGhhbmdpbmdUcmFpbGluZ1doaXRlc3Bh
Y2VMZW5ndGgpOworCisgICAgc3RhdGljIElubGluZUxheW91dFVuaXQgYXBwbHlSdWJ5QWxpZ25T
cGFjZUFyb3VuZChMaW5lOjpSdW5MaXN0JiwgV1RGOjpSYW5nZTxzaXplX3Q+LCBJbmxpbmVMYXlv
dXRVbml0IHNwYWNlVG9EaXN0cmlidXRlKTsKKworICAgIGVudW0gY2xhc3MgQWRqdXN0Q29udGVu
dE9ubHlJbnNpZGVSdWJ5QmFzZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgc3RhdGljIHZvaWQg
YXBwbHlSdWJ5QmFzZUFsaWdubWVudE9mZnNldChJbmxpbmVEaXNwbGF5OjpCb3hlcyYsIGNvbnN0
IEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExp
c3QsIEFkanVzdENvbnRlbnRPbmx5SW5zaWRlUnVieUJhc2UsIElubGluZUZvcm1hdHRpbmdDb250
ZXh0Jik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIElubGluZUxheW91dFVuaXQgYXBwbHlFeHBh
bnNpb25PblJhbmdlKExpbmU6OlJ1bkxpc3QmLCBXVEY6OlJhbmdlPHNpemVfdD4sIGNvbnN0IEV4
cGFuc2lvbkluZm8mLCBJbmxpbmVMYXlvdXRVbml0IHNwYWNlVG9EaXN0cmlidXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmUuaAppbmRleCBiMWRjYmExOGE2MTguLjZlODExNTdiZDYxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmUuaApAQCAtMTQzLDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGluZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIElu
bGluZUNvbnRlbnRBbGlnbmVyOworICAgICAgICBmcmllbmQgY2xhc3MgUnVieUZvcm1hdHRpbmdD
b250ZXh0OwogCiAgICAgICAgIFJ1bihjb25zdCBJbmxpbmVUZXh0SXRlbSYsIGNvbnN0IFJlbmRl
clN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGgpOwogICAgICAgICBSdW4oY29uc3QgSW5saW5lU29mdExpbmVCcmVha0l0ZW0m
LCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDE3ZWYyNDdkYTNkZi4u
NDg4ZjlmN2EwYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
CkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBMaW5lQ29udGVudCB7CiAgICAgYm9vbCBlbmRzV2l0
aEh5cGhlbiB7IGZhbHNlIH07CiAgICAgc2l6ZV90IHBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5n
dGggeyAwIH07CiAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xv
Z2ljYWxXaWR0aCB7IH07CisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBJbmxpbmVMYXlvdXRVbml0
PiBydWJ5QWxpZ25tZW50T2Zmc2V0TGlzdCB7IH07CiB9OwogCiBzdGF0aWMgaW5saW5lIFN0cmlu
Z0J1aWxkZXIgdG9TdHJpbmcoY29uc3QgTGluZTo6UnVuTGlzdCYgcnVucykKQEAgLTI2MCw2ICsy
NjEsNyBAQCBMaW5lTGF5b3V0UmVzdWx0IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50
KGNvbnN0IExpbmVJbnB1dCYgbGluZUlucHV0LCBjbwogICAgICAgICAsIHsgIXJlc3VsdC5pc0hh
bmdpbmdUcmFpbGluZ0NvbnRlbnRXaGl0ZXNwYWNlLCByZXN1bHQuaGFuZ2luZ1RyYWlsaW5nQ29u
dGVudFdpZHRoIH0KICAgICAgICAgLCB7IFdURk1vdmUodmlzdWFsT3JkZXJMaXN0KSwgaW5saW5l
QmFzZURpcmVjdGlvbiB9CiAgICAgICAgICwgeyBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpID8gTGlu
ZUxheW91dFJlc3VsdDo6SXNGaXJzdExhc3Q6OkZpcnN0Rm9ybWF0dGVkTGluZTo6V2l0aGluSUZD
IDogTGluZUxheW91dFJlc3VsdDo6SXNGaXJzdExhc3Q6OkZpcnN0Rm9ybWF0dGVkTGluZTo6Tm8s
IGlzTGFzdExpbmUgfQorICAgICAgICAsIFdURk1vdmUobGluZUNvbnRlbnQucnVieUFsaWdubWVu
dE9mZnNldExpc3QpCiAgICAgICAgICwgbGluZUNvbnRlbnQuZW5kc1dpdGhIeXBoZW4KICAgICAg
ICAgLCByZXN1bHQubm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50CiAgICAgICAgICwgeyB9
CkBAIC01MjAsNyArNTIyLDcgQEAgTGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5l
QW5kRmxvYXRDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHMKICAgICAgICAgICAg
ICAgICBhdXRvIGFkZGl0aW9uYWxTcGFjZUZvckFsaWduZWRDb250ZW50ID0gSW5saW5lQ29udGVu
dEFsaWduZXI6OmFwcGx5VGV4dEFsaWduSnVzdGlmeShtX2xpbmUucnVucygpLCBzcGFjZVRvRGlz
dHJpYnV0ZSwgbV9saW5lLmhhbmdpbmdUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGgoKSk7CiAgICAg
ICAgICAgICAgICAgbV9saW5lLmluZmxhdGVDb250ZW50TG9naWNhbFdpZHRoKGFkZGl0aW9uYWxT
cGFjZUZvckFsaWduZWRDb250ZW50KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9saW5lLmhh
c1J1YnlDb250ZW50KCkpCi0gICAgICAgICAgICAgICAgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojph
cHBseVJ1YnlBbGlnbihtX2xpbmUsIGZvcm1hdHRpbmdDb250ZXh0KCkpOworICAgICAgICAgICAg
ICAgIGxpbmVDb250ZW50LnJ1YnlBbGlnbm1lbnRPZmZzZXRMaXN0ID0gUnVieUZvcm1hdHRpbmdD
b250ZXh0OjphcHBseVJ1YnlBbGlnbihtX2xpbmUsIGZvcm1hdHRpbmdDb250ZXh0KCkpOwogCiAg
ICAgICAgICAgICBhdXRvJiBsYXN0VGV4dENvbnRlbnQgPSBtX2xpbmUucnVucygpLmxhc3QoKS50
ZXh0Q29udGVudCgpOwogICAgICAgICAgICAgbGluZUNvbnRlbnQuZW5kc1dpdGhIeXBoZW4gPSBs
YXN0VGV4dENvbnRlbnQgJiYgbGFzdFRleHRDb250ZW50LT5uZWVkc0h5cGhlbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0xpbmVM
YXlvdXRSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0xpbmVMYXlvdXRSZXN1bHQuaAppbmRleCAyYzc1N2MyNjAwMDEuLmUxNTE1ZDVhMzVm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvTGluZUxheW91dFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0xpbmVMYXlvdXRSZXN1bHQuaApAQCAtODUsNiArODUsOSBA
QCBzdHJ1Y3QgTGluZUxheW91dFJlc3VsdCB7CiAgICAgICAgIGJvb2wgaXNMYXN0TGluZVdpdGhJ
bmxpbmVDb250ZW50IHsgdHJ1ZSB9OwogICAgIH07CiAgICAgSXNGaXJzdExhc3QgaXNGaXJzdExh
c3QgeyB9OworCisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBJbmxpbmVMYXlvdXRVbml0PiBydWJ5
QWxpZ25lbW50T2Zmc2V0TGlzdCB7IH07CisKICAgICAvLyBNaXNjCiAgICAgYm9vbCBlbmRzV2l0
aEh5cGhlbiB7IGZhbHNlIH07CiAgICAgc2l6ZV90IG5vblNwYW5uaW5nSW5saW5lTGV2ZWxCb3hD
b3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5l
QnVpbGRlci5jcHAKaW5kZXggMTZlMTg0YmM2YTEyLi4wMDhlOGFjYzlmMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5
U2ltcGxlTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwCkBAIC0xMTgs
NiArMTE4LDcgQEAgTGluZUxheW91dFJlc3VsdCBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjps
YXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYKICAgICAgICAgLCB7IGlzRmlyc3RG
b3JtYXR0ZWRMaW5lKCkgPyBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RGb3Jt
YXR0ZWRMaW5lOjpXaXRoaW5JRkMgOiBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmly
c3RGb3JtYXR0ZWRMaW5lOjpObywgaXNMYXN0TGluZSB9CiAgICAgICAgICwgeyB9CiAgICAgICAg
ICwgeyB9CisgICAgICAgICwgeyB9CiAgICAgICAgICwgbV90cmltbWVkVHJhaWxpbmdXaGl0ZXNw
YWNlV2lkdGgKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDk1OGYzNjNiNmJk
MC4uNTJlYmIyMmE4NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgiCiAKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIklubGluZUNvbnRlbnRBbGlnbmVyLmgiCiAjaW5jbHVk
ZSAiSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxl
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKQEAgLTEwMyw3ICsxMDQsNyBAQCBJ
bmxpbmVEaXNwbGF5OjpCb3hlcyBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmJ1aWxkKGNv
bnN0IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgZWxzZQogICAgICAgICBwcm9jZXNzTm9uQmlkaUNv
bnRlbnQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOwogICAgIHByb2Nlc3NGbG9h
dEJveGVzKGxpbmVMYXlvdXRSZXN1bHQpOwotICAgIHByb2Nlc3NSdWJ5Q29udGVudChib3hlcyk7
CisgICAgcHJvY2Vzc1J1YnlDb250ZW50KGJveGVzLCBsaW5lTGF5b3V0UmVzdWx0KTsKIAogICAg
IGNvbGxlY3RJbmtPdmVyZmxvd0ZvclRleHREZWNvcmF0aW9ucyhib3hlcyk7CiAgICAgY29sbGVj
dElua092ZXJmbG93Rm9ySW5saW5lQm94ZXMoYm94ZXMpOwpAQCAtMTEwOCwxMSArMTEwOSwxNCBA
QCBzaXplX3QgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzUnVieUJhc2Uoc2l6
ZV90IHJ1YnlCYXNlU3RhcnQsIElubGluZQogICAgIHJldHVybiBydWJ5QmFzZUVuZDsKIH0KIAot
dm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NSdWJ5Q29udGVudChJbmxp
bmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzKQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXI6OnByb2Nlc3NSdWJ5Q29udGVudChJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxh
eUJveGVzLCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0KQogewogICAg
IGlmICghbV9oYXNTZWVuUnVieUJhc2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gcnVi
eUJhc2VzTWF5SGF2ZUNvbGxhcHNlZCA9ICFsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5
LnZpc3VhbE9yZGVyTGlzdC5pc0VtcHR5KCk7CisgICAgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojph
cHBseUFsaWdubWVudE9mZnNldExpc3QoZGlzcGxheUJveGVzLCBsaW5lTGF5b3V0UmVzdWx0LnJ1
YnlBbGlnbmVtbnRPZmZzZXRMaXN0LCBydWJ5QmFzZXNNYXlIYXZlQ29sbGFwc2VkID8gUnVieUZv
cm1hdHRpbmdDb250ZXh0OjpSdWJ5QmFzZXNNYXlOZWVkUmVzaXppbmc6OlllcyA6IFJ1YnlGb3Jt
YXR0aW5nQ29udGV4dDo6UnVieUJhc2VzTWF5TmVlZFJlc2l6aW5nOjpObywgZm9ybWF0dGluZ0Nv
bnRleHQoKSk7CisKICAgICBWZWN0b3I8V1RGOjpSYW5nZTxzaXplX3Q+PiBpbnRlcmxpbmVhclJ1
YnlDb2x1bW5SYW5nZUxpc3Q7CiAgICAgVmVjdG9yPHNpemVfdD4gcnVieUJhc2VTdGFydEluZGV4
TGlzdFdpdGhBbm5vdGF0aW9uOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBk
aXNwbGF5Qm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlD
b250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAppbmRleCA2NmU1
NzkzYTAzZGYuLmNiMjUxZTU5OGZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCkBAIC02NCw3ICs2NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnNlcnRSdWJ5QW5ub3RhdGlvbkJveChjb25zdCBCb3gm
IGFubm90YXRpb25Cb3gsIHNpemVfdCBpbnNlcnRpb25Qb3NpdGlvbiwgSW5saW5lRGlzcGxheTo6
Qm94ZXMmKTsKIAogICAgIHNpemVfdCBwcm9jZXNzUnVieUJhc2Uoc2l6ZV90IHJ1YnlCYXNlU3Rh
cnQsIElubGluZURpc3BsYXk6OkJveGVzJiwgVmVjdG9yPFdURjo6UmFuZ2U8c2l6ZV90Pj4mIGlu
dGVybGluZWFyUnVieUNvbHVtblJhbmdlTGlzdCwgVmVjdG9yPHNpemVfdD4mIHJ1YnlCYXNlU3Rh
cnRJbmRleExpc3RXaXRoQW5ub3RhdGlvbik7Ci0gICAgdm9pZCBwcm9jZXNzUnVieUNvbnRlbnQo
SW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKKyAgICB2b2lkIHByb2Nlc3NSdWJ5Q29udGVudChJbmxp
bmVEaXNwbGF5OjpCb3hlcyYsIGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmKTsKICAgICB2b2lkIGFw
cGx5UnVieU92ZXJoYW5nKElubGluZURpc3BsYXk6OkJveGVzJiwgY29uc3QgVmVjdG9yPFdURjo6
UmFuZ2U8c2l6ZV90Pj4mIGludGVybGluZWFyUnVieUNvbHVtblJhbmdlTGlzdCk7CiAKICAgICB2
b2lkIHNldElubGluZUJveEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IElubGluZVJlY3QmLCBi
b29sIGlzRmlyc3RJbmxpbmVCb3hGcmFnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNTYxZWMwN2Q1Y2VlLi45Nzg1
NjQzZWI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0
aW5nQ29udGV4dC5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBJbmxpbmVMYXlvdXRVbml0IFJ1YnlG
b3JtYXR0aW5nQ29udGV4dDo6YmFzZUVuZEFkZGl0aW9uYWxMb2dpY2FsV2lkdGgoY29uc3QgQm94
JgogICAgIHJldHVybiBhbm5vdGF0aW9uQm94TG9naWNhbFdpZHRoKHJ1YnlCYXNlTGF5b3V0Qm94
LCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CiB9CiAKLXN0YXRpYyBzaXplX3QgYXBwbHlSdWJ5
QWxpZ25PbkJhc2VDb250ZW50KHNpemVfdCBydWJ5QmFzZVN0YXJ0LCBMaW5lJiBsaW5lLCBjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCitzaXpl
X3QgUnVieUZvcm1hdHRpbmdDb250ZXh0OjphcHBseVJ1YnlBbGlnbk9uQmFzZUNvbnRlbnQoc2l6
ZV90IHJ1YnlCYXNlU3RhcnQsIExpbmUmIGxpbmUsIEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5l
TGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExpc3QsIGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKIHsKICAgICBhdXRvJiBydW5zID0gbGlu
ZS5ydW5zKCk7CiAgICAgYXV0byYgcnVieUJhc2VMYXlvdXRCb3ggPSBydW5zW3J1YnlCYXNlU3Rh
cnRdLmxheW91dEJveCgpOwpAQCAtMjQ4LDE3ICsyNDgsMjYgQEAgc3RhdGljIHNpemVfdCBhcHBs
eVJ1YnlBbGlnbk9uQmFzZUNvbnRlbnQoc2l6ZV90IHJ1YnlCYXNlU3RhcnQsIExpbmUmIGxpbmUs
IGNvbnMKICAgICB9CiAKICAgICBhdXRvIGFubm90YXRpb25Cb3hMb2dpY2FsV2lkdGggPSBJbmxp
bmVMYXlvdXRVbml0IHsgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmFu
bm90YXRpb25Cb3gpLm1hcmdpbkJveFdpZHRoKCkgfTsKLSAgICBhdXRvIGJhc2VDb250ZW50TG9n
aWNhbFdpZHRoID0gcnVuc1tydWJ5QmFzZUVuZCAtIDFdLmxvZ2ljYWxSaWdodCgpIC0gcnVuc1ty
dWJ5QmFzZVN0YXJ0XS5sb2dpY2FsTGVmdCgpOwotCisgICAgYXV0byBiYXNlQ29udGVudExvZ2lj
YWxXaWR0aCA9IHJ1bnNbcnVieUJhc2VFbmRdLmxvZ2ljYWxMZWZ0KCkgLSBydW5zW3J1YnlCYXNl
U3RhcnRdLmxvZ2ljYWxSaWdodCgpOwogICAgIGlmIChhbm5vdGF0aW9uQm94TG9naWNhbFdpZHRo
IDw9IGJhc2VDb250ZW50TG9naWNhbFdpZHRoKQogICAgICAgICByZXR1cm4gcnVieUJhc2VFbmQ7
CiAKLSAgICBJbmxpbmVDb250ZW50QWxpZ25lcjo6YXBwbHlSdWJ5QWxpZ24obGluZS5ydW5zKCks
IHsgcnVieUJhc2VTdGFydCwgcnVieUJhc2VFbmQgfSwgYW5ub3RhdGlvbkJveExvZ2ljYWxXaWR0
aCAtIGJhc2VDb250ZW50TG9naWNhbFdpZHRoLCB7IH0pOworICAgIC8vIEZJWE1FOiBydWJ5LWFs
aWduOiBzcGFjZS1hcm91bmQgb25seQorICAgIGF1dG8gc3BhY2VUb0Rpc3RyaWJ1dGUgPSBhbm5v
dGF0aW9uQm94TG9naWNhbFdpZHRoIC0gYmFzZUNvbnRlbnRMb2dpY2FsV2lkdGg7CisgICAgYXV0
byBhbGlnbm1lbnRPZmZzZXQgPSBJbmxpbmVDb250ZW50QWxpZ25lcjo6YXBwbHlSdWJ5QWxpZ25T
cGFjZUFyb3VuZChsaW5lLnJ1bnMoKSwgeyBydWJ5QmFzZVN0YXJ0LCBydWJ5QmFzZUVuZCArIDEg
fSwgc3BhY2VUb0Rpc3RyaWJ1dGUpOworICAgIC8vIFJlc2V0IHRoZSBzcGFjaW5nIHdlIGFkZGVk
IGF0IExpbmVCdWlsZGVyLgorICAgIGF1dG8mIHJ1YnlCYXNlRW5kUnVuID0gcnVuc1tydWJ5QmFz
ZUVuZF07CisgICAgcnVieUJhc2VFbmRSdW4uc2hyaW5rSG9yaXpvbnRhbGx5KHNwYWNlVG9EaXN0
cmlidXRlKTsKKyAgICBydWJ5QmFzZUVuZFJ1bi5tb3ZlSG9yaXpvbnRhbGx5KDIgKiBhbGlnbm1l
bnRPZmZzZXQpOworCisgICAgQVNTRVJUKCFhbGlnbm1lbnRPZmZzZXRMaXN0LmNvbnRhaW5zKCZy
dWJ5QmFzZUxheW91dEJveCkpOworICAgIGFsaWdubWVudE9mZnNldExpc3QuYWRkKCZydWJ5QmFz
ZUxheW91dEJveCwgYWxpZ25tZW50T2Zmc2V0KTsKICAgICByZXR1cm4gcnVieUJhc2VFbmQ7CiB9
CiAKLXZvaWQgUnVieUZvcm1hdHRpbmdDb250ZXh0OjphcHBseVJ1YnlBbGlnbihMaW5lJiBsaW5l
LCBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQp
CitIYXNoTWFwPGNvbnN0IEJveCosIElubGluZUxheW91dFVuaXQ+IFJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6YXBwbHlSdWJ5QWxpZ24oTGluZSYgbGluZSwgY29uc3QgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQogeworICAgIEhhc2hNYXA8Y29uc3QgQm94
KiwgSW5saW5lTGF5b3V0VW5pdD4gYWxpZ25tZW50T2Zmc2V0TGlzdDsKICAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXJ1YnkvI2ludGVybGluZWFyLWlubGluZQogICAgIC8vIFdp
dGhpbiBlYWNoIGJhc2UgYW5kIGFubm90YXRpb24gYm94LCBob3cgdGhlIGV4dHJhIHNwYWNlIGlz
IGRpc3RyaWJ1dGVkIHdoZW4gaXRzIGNvbnRlbnQgaXMgbmFycm93ZXIgdGhhbgogICAgIC8vIHRo
ZSBtZWFzdXJlIG9mIHRoZSBib3ggaXMgc3BlY2lmaWVkIGJ5IGl0cyBydWJ5LWFsaWduIHByb3Bl
cnR5LgpAQCAtMjY2LDggKzI3NSwxNiBAQCB2b2lkIFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YXBw
bHlSdWJ5QWxpZ24oTGluZSYgbGluZSwgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbgogICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBydW5zLnNpemUoKTsgKytpbmRleCkgewogICAg
ICAgICBhdXRvJiBsaW5lUnVuID0gcnVuc1tpbmRleF07CiAgICAgICAgIGlmIChsaW5lUnVuLmlz
SW5saW5lQm94U3RhcnQoKSAmJiBsaW5lUnVuLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSkKLSAg
ICAgICAgICAgIGluZGV4ID0gYXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250ZW50KGluZGV4LCBsaW5l
LCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CisgICAgICAgICAgICBpbmRleCA9IGFwcGx5UnVi
eUFsaWduT25CYXNlQ29udGVudChpbmRleCwgbGluZSwgYWxpZ25tZW50T2Zmc2V0TGlzdCwgaW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQpOwogICAgIH0KKyAgICByZXR1cm4gYWxpZ25tZW50T2Zmc2V0
TGlzdDsKK30KKwordm9pZCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmFwcGx5QWxpZ25tZW50T2Zm
c2V0TGlzdChJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzLCBjb25zdCBIYXNoTWFw
PGNvbnN0IEJveCosIElubGluZUxheW91dFVuaXQ+JiBhbGlnbm1lbnRPZmZzZXRMaXN0LCBSdWJ5
QmFzZXNNYXlOZWVkUmVzaXppbmcgcnVieUJhc2VzTWF5TmVlZFJlc2l6aW5nLCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7CisgICAgaWYgKGFsaWdu
bWVudE9mZnNldExpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgSW5saW5lQ29u
dGVudEFsaWduZXI6OmFwcGx5UnVieUJhc2VBbGlnbm1lbnRPZmZzZXQoZGlzcGxheUJveGVzLCBh
bGlnbm1lbnRPZmZzZXRMaXN0LCBydWJ5QmFzZXNNYXlOZWVkUmVzaXppbmcgPT0gUnVieUJhc2Vz
TWF5TmVlZFJlc2l6aW5nOjpObyA/IElubGluZUNvbnRlbnRBbGlnbmVyOjpBZGp1c3RDb250ZW50
T25seUluc2lkZVJ1YnlCYXNlOjpZZXMgOiBJbmxpbmVDb250ZW50QWxpZ25lcjo6QWRqdXN0Q29u
dGVudE9ubHlJbnNpZGVSdWJ5QmFzZTo6Tm8sIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KTsKIH0K
IAogSW5saW5lTGF5b3V0UG9pbnQgUnVieUZvcm1hdHRpbmdDb250ZXh0OjpwbGFjZUFubm90YXRp
b25Cb3goY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgY29uc3QgUmVjdCYgcnVieUJhc2VN
YXJnaW5Cb3gsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29u
dGV4dC5oCmluZGV4IDUzMDFiMDJjY2RiMy4uODcxZTk5ODAyYjlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3Jt
YXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5KGNvbnN0
IElubGluZUl0ZW0mIHByZXZpb3VzLCBjb25zdCBJbmxpbmVJdGVtJiBjdXJyZW50KTsKICAgICBz
dGF0aWMgSW5saW5lTGF5b3V0VW5pdCBhbm5vdGF0aW9uQm94TG9naWNhbFdpZHRoKGNvbnN0IEJv
eCYgcnVieUJhc2VMYXlvdXRCb3gsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiAg
ICAgc3RhdGljIElubGluZUxheW91dFVuaXQgYmFzZUVuZEFkZGl0aW9uYWxMb2dpY2FsV2lkdGgo
Y29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgY29uc3QgTGluZTo6UnVuTGlzdCYsIGNvbnN0
IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuTGlzdCYsIGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlSdWJ5QWxp
Z24oTGluZSYsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CisgICAgc3RhdGljIEhh
c2hNYXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4gYXBwbHlSdWJ5QWxpZ24oTGluZSYs
IGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiAKICAgICAvLyBMaW5lIGJveCBidWls
ZGluZwogICAgIHN0YXRpYyB2b2lkIGFwcGx5QW5ub3RhdGlvbkNvbnRyaWJ1dGlvblRvTGF5b3V0
Qm91bmRzKExpbmVCb3gmLCBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwpAQCAtNTUs
MTIgKzU1LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBvdmVyaGFu
Z0ZvckFubm90YXRpb25CZWZvcmUoY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgc2l6ZV90
IHJ1YnlCYXNlU3RhcnQsIGNvbnN0IElubGluZURpc3BsYXk6OkJveGVzJiwgY29uc3QgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQmKTsKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBvdmVyaGFu
Z0ZvckFubm90YXRpb25BZnRlcihjb25zdCBCb3gmIHJ1YnlCYXNlTGF5b3V0Qm94LCBXVEY6OlJh
bmdlPHNpemVfdD4gcnVieUJhc2VSYW5nZSwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmLCBj
b25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwogCisgICAgZW51bSBjbGFzcyBSdWJ5QmFz
ZXNNYXlOZWVkUmVzaXppbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0YXRpYyB2b2lkIGFw
cGx5QWxpZ25tZW50T2Zmc2V0TGlzdChJbmxpbmVEaXNwbGF5OjpCb3hlcyYsIGNvbnN0IEhhc2hN
YXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNldExpc3QsIFJ1
YnlCYXNlc01heU5lZWRSZXNpemluZywgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKKwogICAg
IC8vIE1pc2NlbGxhbmVvdXMgaGVscGVycwogICAgIHN0YXRpYyBib29sIGhhc0ludGVybGluZWFy
QW5ub3RhdGlvbihjb25zdCBCb3gmIHJ1YnlCYXNlTGF5b3V0Qm94KTsKICAgICBzdGF0aWMgYm9v
bCBoYXNJbnRlckNoYXJhY3RlckFubm90YXRpb24oY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJv
eCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRqdXN0TGF5b3V0Qm91bmRzQW5kU3Ry
ZXRjaEFuY2VzdG9yUnVieUJhc2UoTGluZUJveCYsIElubGluZUxldmVsQm94JiBydWJ5QmFzZUlu
bGluZUJveCwgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKKyAgICBzdGF0aWMgc2l6
ZV90IGFwcGx5UnVieUFsaWduT25CYXNlQ29udGVudChzaXplX3QgcnVieUJhc2VTdGFydCwgTGlu
ZSYsIEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5lTGF5b3V0VW5pdD4mIGFsaWdubWVudE9mZnNl
dExpc3QsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBMYXlvdXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>