<?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>218161</bug_id>
          
          <creation_ts>2020-10-25 11:47:18 -0700</creation_ts>
          <short_desc>[LFC Display] Move code for painting a single Display::Box into its own class</short_desc>
          <delta_ts>2020-10-25 14:35:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</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>1701314</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-25 11:47:18 -0700</bug_when>
    <thetext>[LFC Display] Move code for painting a single Display::Box into its own class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701315</commentid>
    <comment_count>1</comment_count>
      <attachid>412274</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-25 11:48:09 -0700</bug_when>
    <thetext>Created attachment 412274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701332</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-25 14:34:52 -0700</bug_when>
    <thetext>Committed r268960: &lt;https://trac.webkit.org/changeset/268960&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412274.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701333</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-25 14:35:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/70663323&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412274</attachid>
            <date>2020-10-25 11:48:09 -0700</date>
            <delta_ts>2020-10-25 14:34:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218161-20201025114808.patch</filename>
            <type>text/plain</type>
            <size>27273</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGYwYjhjZDJjZWM3MTk3
YjAxMWIzNTQyMjM0MTcwMzUwOTFkMjZhMS4uMmE5ZTBkNGQwNWFkODFlZmM2YzE4M2ZkZTZlMWNj
MTdiNzUxYjI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTEwLTI1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkMgRGlzcGxh
eV0gTW92ZSBjb2RlIGZvciBwYWludGluZyBhIHNpbmdsZSBEaXNwbGF5OjpCb3ggaW50byBpdHMg
b3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTgxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNb3ZlIGJveC1wYWludGluZyBjb2RlIGludG8gaXRzIG93biBjbGFzcywgc28gdGhhdCBDU1NQ
YWludGVyIGlzIGFib3V0IENTUyBzdGFja2luZworICAgICAgICBjb250ZXh0IGxvZ2ljLCBhbmQg
Qm94UGFpbnRlciBpcyBhYm91dCBob3cgdG8gcGFpbnQgYSBzaW5nbGUgYm94LgorCisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94UGFpbnRlcjo6cGFpbnRGaWxsTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94UGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveFBhaW50ZXI6OnBhaW50Qm94RGVj
b3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94UGFpbnRlcjo6cGFpbnRC
b3hDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveFBhaW50ZXI6OnBhaW50
Qm94KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Qm94UGFpbnRlci5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5oLgorICAg
ICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkNTU1BhaW50ZXI6OnJlY3Vyc2l2ZVBhaW50RGVzY2VuZGFudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6cGFpbnRTdGFja2luZ0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6cGFpbnRGaWxsTGF5ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6cGFpbnRC
YWNrZ3JvdW5kSW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkNT
U1BhaW50ZXI6OnBhaW50Qm94RGVjb3JhdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OkNTU1BhaW50ZXI6OnBhaW50Qm94KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5oOgorCiAyMDIwLTEwLTI1ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkMgRGlz
cGxheV0gTW92ZSBkaXNwbGF5IGJveCBjcmVhdGlvbiBhbmQgZ2VvbWV0cnkgY29tcHV0YXRpb24g
b3V0IG9mIERpc3BsYXk6OlRyZWVCdWlsZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDAyN2E1ZTRmNDll
YWNmNDI4NmE2YWM4M2RhNjQwZjMxOTY4YzYyMWEuLjJmZjI1NWI1ZWYxMzUxYWU2M2Y2Y2U5NWQz
ZmE2ZTAxNzQyYWVhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04MTYsNiArODE2LDcgQEAgZGlzcGxh
eS9jc3MvRGlzcGxheUJveC5jcHAKIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hEZWNvcmF0aW9uRGF0
YS5jcHAKIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmNwcAogZGlzcGxheS9jc3MvRGlz
cGxheUJveE1vZGVsQm94LmNwcAorZGlzcGxheS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwCiBk
aXNwbGF5L2Nzcy9EaXNwbGF5Q29udGFpbmVyQm94LmNwcAogZGlzcGxheS9jc3MvRGlzcGxheUNT
U1BhaW50ZXIuY3BwCiBkaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmY2UyMTQ5YTUwNmQzYzZlNjgyYzRjOTFhOWFkNTk3OTFhNTljNDY2Li5iMzAzMzQy
ZDQ1MTE4ZjA5OGE0YTIzM2E0N2E5Y2VmOTJjZjlhNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01OTkwLDYgKzU5OTAsOCBA
QAogCQkwRjYzODNEQzE4NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY1NkZCNTI1NDUyRTU0MDAyMTlGNEMg
LyogRGlzcGxheUJveEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUJveEZhY3Rvcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NTZGQjYyNTQ1MkU1NDAwMjE5RjRD
IC8qIERpc3BsYXlCb3hGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlCb3hG
YWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NTZGQkMyNTQ1RkQ1
NjAwMjE5RjRDIC8qIERpc3BsYXlCb3hQYWludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlC
b3hQYWludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjU2RkJEMjU0NUZE
NTcwMDIxOUY0QyAvKiBEaXNwbGF5Qm94UGFpbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aXNwbGF5Qm94UGFpbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjlG
MkI2MjI4Qjk4RkYwMDhEMzU2NSAvKiBMYXllck92ZXJsYXBNYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGF5ZXJPdmVybGFwTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjlGMkI3
MjI4Qjk4RkYwMDhEMzU2NSAvKiBMYXllck92ZXJsYXBNYXAuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGF5ZXJPdmVybGFwTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2
QTEyQkIxQTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnUGFnZU92ZXJsYXlzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjI5LDYgKzE3NjMxLDggQEAKIAkJCQkwRjY1NkZC
NTI1NDUyRTU0MDAyMTlGNEMgLyogRGlzcGxheUJveEZhY3RvcnkuaCAqLywKIAkJCQkwRjk0NzIy
MDI1MzQwMTA5MDBGMTUzQzggLyogRGlzcGxheUJveE1vZGVsQm94LmNwcCAqLywKIAkJCQkwRjk0
NzIxRTI1MzQwMTA5MDBGMTUzQzggLyogRGlzcGxheUJveE1vZGVsQm94LmggKi8sCisJCQkJMEY2
NTZGQkQyNTQ1RkQ1NzAwMjE5RjRDIC8qIERpc3BsYXlCb3hQYWludGVyLmNwcCAqLywKKwkJCQkw
RjY1NkZCQzI1NDVGRDU2MDAyMTlGNEMgLyogRGlzcGxheUJveFBhaW50ZXIuaCAqLywKIAkJCQkw
RkZGMUI3NDI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheUNvbnRhaW5lckJveC5jcHAgKi8sCiAJ
CQkJMEZGRjFCN0EyNTFCQzY1NzAwOTg3OTVBIC8qIERpc3BsYXlDb250YWluZXJCb3guaCAqLywK
IAkJCQkwRkZGMUI3RDI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheUNTU1BhaW50ZXIuY3BwICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveFBhaW50
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE0ZDZkN2Q2NWEzY2I2OTBlNjU2MDU4OTBjODNhYjExYTYwMjU5NzIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94UGFp
bnRlci5jcHAKQEAgLTAsMCArMSwyNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRGlzcGxheUJveFBhaW50ZXIuaCIKKworI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRl
ICJDb2xvci5oIgorI2luY2x1ZGUgIkRpc3BsYXlCb3hEZWNvcmF0aW9uRGF0YS5oIgorI2luY2x1
ZGUgIkRpc3BsYXlDb250YWluZXJCb3guaCIKKyNpbmNsdWRlICJEaXNwbGF5RmlsbExheWVySW1h
Z2VHZW9tZXRyeS5oIgorI2luY2x1ZGUgIkRpc3BsYXlJbWFnZUJveC5oIgorI2luY2x1ZGUgIkRp
c3BsYXlTdHlsZS5oIgorI2luY2x1ZGUgIkRpc3BsYXlUZXh0Qm94LmgiCisjaW5jbHVkZSAiRGlz
cGxheVRyZWUuaCIKKyNpbmNsdWRlICJGaWxsTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIK
KyNpbmNsdWRlICJUZXh0UnVuLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBE
aXNwbGF5IHsKKwordm9pZCBCb3hQYWludGVyOjpwYWludEZpbGxMYXllcihjb25zdCBCb3hNb2Rl
bEJveCYgYm94LCBjb25zdCBGaWxsTGF5ZXImIGxheWVyLCBjb25zdCBGaWxsTGF5ZXJJbWFnZUdl
b21ldHJ5JiBnZW9tZXRyeSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7CisKKyAgICBh
dXRvIGNsaXBSZWN0Rm9yTGF5ZXIgPSBbXShjb25zdCBCb3hNb2RlbEJveCYgYm94LCBjb25zdCBG
aWxsTGF5ZXImIGxheWVyKSB7CisgICAgICAgIHN3aXRjaCAobGF5ZXIuY2xpcCgpKSB7CisgICAg
ICAgIGNhc2UgRmlsbEJveDo6Qm9yZGVyOgorICAgICAgICAgICAgcmV0dXJuIGJveC5hYnNvbHV0
ZUJvcmRlckJveFJlY3QoKTsKKyAgICAgICAgY2FzZSBGaWxsQm94OjpQYWRkaW5nOgorICAgICAg
ICAgICAgcmV0dXJuIGJveC5hYnNvbHV0ZVBhZGRpbmdCb3hSZWN0KCk7CisgICAgICAgIGNhc2Ug
RmlsbEJveDo6Q29udGVudDoKKyAgICAgICAgICAgIHJldHVybiBib3guYWJzb2x1dGVDb250ZW50
Qm94UmVjdCgpOworICAgICAgICBjYXNlIEZpbGxCb3g6OlRleHQ6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQWJzb2x1dGVGbG9hdFJlY3QoKTsKKyAgICB9
OworCisgICAgc3dpdGNoIChsYXllci5jbGlwKCkpIHsKKyAgICBjYXNlIEZpbGxCb3g6OkJvcmRl
cjoKKyAgICBjYXNlIEZpbGxCb3g6OlBhZGRpbmc6CisgICAgY2FzZSBGaWxsQm94OjpDb250ZW50
OiB7CisgICAgICAgIHN0YXRlU2F2ZXIuc2F2ZSgpOworICAgICAgICBjb250ZXh0LmNsaXAoY2xp
cFJlY3RGb3JMYXllcihib3gsIGxheWVyKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIEZpbGxCb3g6OlRleHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIEZJWE1F
OiBIYW5kbGUgYmFja2dyb3VuZCBjb21wb3NpdGluZyBtb2Rlcy4KKworICAgIGF1dG8qIGJhY2tn
cm91bmRJbWFnZSA9IGxheWVyLmltYWdlKCk7CisgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AgPSBD
b21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlcjsKKworICAgIGlmIChnZW9tZXRyeS5kZXN0UmVj
dCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpbWFnZSA9IGJhY2tn
cm91bmRJbWFnZS0+aW1hZ2UobnVsbHB0ciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CisgICAgaWYg
KCFpbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IGNhbGwgaW1hZ2UtPnVw
ZGF0ZUZyb21TZXR0aW5ncygpLgorCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucyA9
IHsKKyAgICAgICAgb3AgPT0gQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIgPyBsYXllci5j
b21wb3NpdGUoKSA6IG9wLAorICAgICAgICBsYXllci5ibGVuZE1vZGUoKSwKKyAgICAgICAgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywKKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUlt
YWdlLAorICAgICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdAorICAgIH07CisKKyAg
ICBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9G
bG9hdFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCks
IGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBvcHRpb25zKTsKK30KKwordm9pZCBCb3hQYWludGVyOjpw
YWludEJhY2tncm91bmRJbWFnZXMoY29uc3QgQm94TW9kZWxCb3gmIGJveCwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQoreworICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gYm94LnN0eWxlKCk7CisK
KyAgICBWZWN0b3I8Y29uc3QgRmlsbExheWVyKiwgOD4gbGF5ZXJzOworCisgICAgZm9yIChhdXRv
KiBsYXllciA9IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsgbGF5ZXI7IGxheWVyID0gbGF5ZXIt
Pm5leHQoKSkKKyAgICAgICAgbGF5ZXJzLmFwcGVuZChsYXllcik7CisKKyAgICBhdXRvKiBib3hE
ZWNvcmF0aW9uRGF0YSA9IGJveC5ib3hEZWNvcmF0aW9uRGF0YSgpOworICAgIEFTU0VSVChib3hE
ZWNvcmF0aW9uRGF0YSk7CisKKyAgICBhdXRvJiBsYXllckdlb21ldHJ5TGlzdCA9IGJveERlY29y
YXRpb25EYXRhLT5iYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSgpOworCisgICAgZm9yIChpbnQgaSA9
IGxheWVycy5zaXplKCkgLSAxOyBpID49MDsgLS1pKSB7CisgICAgICAgIGNvbnN0IGF1dG8qIGxh
eWVyID0gbGF5ZXJzW2ldOworICAgICAgICBjb25zdCBhdXRvJiBnZW9tZXRyeSA9IGxheWVyR2Vv
bWV0cnlMaXN0W2ldOworICAgICAgICBwYWludEZpbGxMYXllcihib3gsICpsYXllciwgZ2VvbWV0
cnksIGNvbnRleHQpOworICAgIH0KK30KKwordm9pZCBCb3hQYWludGVyOjpwYWludEJveERlY29y
YXRpb25zKGNvbnN0IEJveE1vZGVsQm94JiBib3gsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICAvLyBGSVhNRTogVGFibGUgZGVjb3JhdGlvbiBwYWludGluZyBpcyBzcGVjaWFsLgor
CisgICAgYXV0byBib3JkZXJCb3hSZWN0ID0gYm94LmFic29sdXRlQm9yZGVyQm94UmVjdCgpOwor
CisgICAgY29uc3QgYXV0byYgc3R5bGUgPSBib3guc3R5bGUoKTsKKworICAgIC8vIEJhY2tncm91
bmQgY29sb3IKKyAgICBpZiAoc3R5bGUuaGFzQmFja2dyb3VuZCgpKSB7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QoYm9yZGVyQm94UmVjdCwgc3R5bGUuYmFja2dyb3VuZENvbG9yKCkpOworICAg
ICAgICBpZiAoc3R5bGUuaGFzQmFja2dyb3VuZEltYWdlKCkpCisgICAgICAgICAgICBwYWludEJh
Y2tncm91bmRJbWFnZXMoYm94LCBjb250ZXh0KTsKKyAgICB9CisKKyAgICAvLyBCb3JkZXIKKyAg
ICBpZiAoc3R5bGUuaGFzVmlzaWJsZUJvcmRlcigpKSB7CisgICAgICAgIGF1dG8gZHJhd0JvcmRl
clNpZGUgPSBbJl0oYXV0byBzdGFydCwgYXV0byBlbmQsIGNvbnN0IGF1dG8mIGJvcmRlclN0eWxl
KSB7CisgICAgICAgICAgICBpZiAoIWJvcmRlclN0eWxlLndpZHRoKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKGJvcmRlclN0eWxlLnN0eWxlKCkgPT0gQm9yZGVy
U3R5bGU6Ok5vbmUgfHwgYm9yZGVyU3R5bGUuc3R5bGUoKSA9PSBCb3JkZXJTdHlsZTo6SGlkZGVu
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoYm9yZGVyU3R5bGUuY29sb3IoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9r
ZVRoaWNrbmVzcyhib3JkZXJTdHlsZS53aWR0aCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJh
d0xpbmUoc3RhcnQsIGVuZCk7CisgICAgICAgIH07CisKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworCisgICAgICAgIC8vIFRvcAorICAgICAg
ICB7CisgICAgICAgICAgICBhdXRvIGJvcmRlcldpZHRoID0gc3R5bGUuYm9yZGVyVG9wKCkud2lk
dGgoKTsKKyAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBib3JkZXJCb3hSZWN0Lm1pblhNaW5ZQ29y
bmVyKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9IEZsb2F0UG9pbnQgeyBib3JkZXJCb3hSZWN0
Lm1heFgoKSwgc3RhcnQueSgpICsgYm9yZGVyV2lkdGggfTsKKyAgICAgICAgICAgIGRyYXdCb3Jk
ZXJTaWRlKHN0YXJ0LCBlbmQsIHN0eWxlLmJvcmRlclRvcCgpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFJpZ2h0CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gYm9yZGVyV2lkdGggPSBz
dHlsZS5ib3JkZXJSaWdodCgpLndpZHRoKCk7CisgICAgICAgICAgICBhdXRvIHN0YXJ0ID0gRmxv
YXRQb2ludCB7IGJvcmRlckJveFJlY3QubWF4WCgpIC0gYm9yZGVyV2lkdGgsIGJvcmRlckJveFJl
Y3QueSgpIH07CisgICAgICAgICAgICBhdXRvIGVuZCA9IEZsb2F0UG9pbnQgeyBzdGFydC54KCkg
KyBib3JkZXJXaWR0aCwgYm9yZGVyQm94UmVjdC5tYXhZKCkgfTsKKyAgICAgICAgICAgIGRyYXdC
b3JkZXJTaWRlKHN0YXJ0LCBlbmQsIHN0eWxlLmJvcmRlclJpZ2h0KCkpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gQm90dG9tCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gYm9yZGVyV2lk
dGggPSBzdHlsZS5ib3JkZXJCb3R0b20oKS53aWR0aCgpOworICAgICAgICAgICAgYXV0byBzdGFy
dCA9IEZsb2F0UG9pbnQgeyBib3JkZXJCb3hSZWN0LngoKSwgYm9yZGVyQm94UmVjdC5tYXhZKCkg
LSBib3JkZXJXaWR0aCB9OworICAgICAgICAgICAgYXV0byBlbmQgPSBGbG9hdFBvaW50IHsgYm9y
ZGVyQm94UmVjdC5tYXhYKCksIHN0YXJ0LnkoKSArIGJvcmRlcldpZHRoIH07CisgICAgICAgICAg
ICBkcmF3Qm9yZGVyU2lkZShzdGFydCwgZW5kLCBzdHlsZS5ib3JkZXJCb3R0b20oKSk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBMZWZ0CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gYm9y
ZGVyV2lkdGggPSBzdHlsZS5ib3JkZXJMZWZ0KCkud2lkdGgoKTsKKyAgICAgICAgICAgIGF1dG8g
c3RhcnQgPSBib3JkZXJCb3hSZWN0Lm1pblhNaW5ZQ29ybmVyKCk7CisgICAgICAgICAgICBhdXRv
IGVuZCA9IEZsb2F0UG9pbnQgeyBzdGFydC54KCkgKyBib3JkZXJXaWR0aCwgYm9yZGVyQm94UmVj
dC5tYXhZKCkgfTsKKyAgICAgICAgICAgIGRyYXdCb3JkZXJTaWRlKHN0YXJ0LCBlbmQsIHN0eWxl
LmJvcmRlckxlZnQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQm94UGFpbnRlcjo6
cGFpbnRCb3hDb250ZW50KGNvbnN0IEJveCYgYm94LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgaWYgKGlzPEltYWdlQm94Pihib3gpKSB7CisgICAgICAgIGF1dG8mIGltYWdlQm94
ID0gZG93bmNhc3Q8SW1hZ2VCb3g+KGJveCk7CisgICAgICAgIAorICAgICAgICBhdXRvKiBpbWFn
ZSA9IGltYWdlQm94LmltYWdlKCk7CisgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gaW1hZ2VCb3gu
cmVwbGFjZWRDb250ZW50UmVjdCgpOworCisgICAgICAgIGlmIChpbWFnZSkKKyAgICAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgaW1hZ2VSZWN0KTsKKworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGlmIChpczxUZXh0Qm94Pihib3gpKSB7CisgICAgICAgIGF1dG8m
IHRleHRCb3ggPSBkb3duY2FzdDxUZXh0Qm94Pihib3gpOworCisgICAgICAgIGF1dG8mIHN0eWxl
ID0gYm94LnN0eWxlKCk7CisgICAgICAgIGF1dG8gdGV4dFJlY3QgPSBib3guYWJzb2x1dGVCb3hS
ZWN0KCk7CisKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihzdHlsZS5jb2xvcigpKTsK
KyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc3R5bGUuY29sb3IoKSk7CisKKyAgICAgICAg
Ly8gRklYTUU6IEFkZCBub24tYmFzZWxpbmUgYWxpZ24gcGFpbnRpbmcKKyAgICAgICAgYXV0byBi
YXNlbGluZSA9IHRleHRSZWN0LnkoKSArIHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7Cisg
ICAgICAgIGF1dG8gZXhwYW5zaW9uID0gdGV4dEJveC5leHBhbnNpb24oKTsKKworICAgICAgICBh
dXRvIHRleHRSdW4gPSBUZXh0UnVuIHsgdGV4dEJveC50ZXh0KCkuY29udGVudCgpLnN1YnN0cmlu
Zyh0ZXh0Qm94LnRleHQoKS5zdGFydCgpLCB0ZXh0Qm94LnRleHQoKS5sZW5ndGgoKSksIHRleHRS
ZWN0LngoKSwgZXhwYW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlv
ciB9OworICAgICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFj
ZSgpLCBzdHlsZS50YWJTaXplKCkpOworICAgICAgICBjb250ZXh0LmRyYXdUZXh0KHN0eWxlLmZv
bnRDYXNjYWRlKCksIHRleHRSdW4sIHsgdGV4dFJlY3QueCgpLCBiYXNlbGluZSB9KTsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgQm94UGFpbnRlcjo6cGFpbnRC
b3goY29uc3QgQm94JiBib3gsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KQoreworICAgIGF1dG8gYWJzb2x1dGVSZWN0ID0gYm94LmFic29sdXRlQm94
UmVjdCgpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFjY291bnQgZm9yIHZpc3VhbCBvdmVyZmxv
dy4KKyAgICBpZiAoIWRpcnR5UmVjdC5pbnRlcnNlY3RzKGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1
dGVSZWN0KSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpczxJbWFnZUJveD4oYm94KSkg
eworICAgICAgICBhdXRvJiBpbWFnZUJveCA9IGRvd25jYXN0PEltYWdlQm94Pihib3gpOworICAg
ICAgICAKKyAgICAgICAgYXV0byogaW1hZ2UgPSBpbWFnZUJveC5pbWFnZSgpOworICAgICAgICBh
dXRvIGltYWdlUmVjdCA9IGltYWdlQm94LnJlcGxhY2VkQ29udGVudFJlY3QoKTsKKworICAgICAg
ICBpZiAoaW1hZ2UpCisgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGltYWdl
UmVjdCk7CisgICAgfQorCisgICAgaWYgKGlzPEJveE1vZGVsQm94Pihib3gpKQorICAgICAgICBw
YWludEJveERlY29yYXRpb25zKGRvd25jYXN0PEJveE1vZGVsQm94Pihib3gpLCBjb250ZXh0KTsK
KworICAgIHBhaW50Qm94Q29udGVudChib3gsIGNvbnRleHQpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBEaXNwbGF5Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Qm94UGFpbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMGIyYWYzYWQzNmE4MjFjNDA3YTIzMTM2
MWVkODM4ZmRmNmRkOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L2Nzcy9EaXNwbGF5Qm94UGFpbnRlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisj
aW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEZpbGxMYXllcjsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsK
K2NsYXNzIEludFJlY3Q7CisKK25hbWVzcGFjZSBEaXNwbGF5IHsKKworY2xhc3MgRmlsbExheWVy
SW1hZ2VHZW9tZXRyeTsKK2NsYXNzIEJveDsKK2NsYXNzIEJveE1vZGVsQm94OworCitjbGFzcyBC
b3hQYWludGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBwYWludEJveChjb25zdCBCb3gm
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHN0YXRp
YyB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoY29uc3QgQm94TW9kZWxCb3gmLCBHcmFwaGljc0Nv
bnRleHQmKTsKKyAgICBzdGF0aWMgdm9pZCBwYWludEJveENvbnRlbnQoY29uc3QgQm94JiwgR3Jh
cGhpY3NDb250ZXh0Jik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgcGFpbnRCYWNrZ3Jv
dW5kSW1hZ2VzKGNvbnN0IEJveE1vZGVsQm94JiwgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3Rh
dGljIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgQm94TW9kZWxCb3gmLCBjb25zdCBGaWxsTGF5
ZXImLCBjb25zdCBGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5JiwgR3JhcGhpY3NDb250ZXh0Jik7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmNwcAppbmRleCA3N2MxMmUxOWFm
NGI0MjdlZTY4NmE0NDU0ZmYyMzBlNjkwNjYyNzk4Li4zYzkyZmJhODdhN2U5ZTU1YzNhODRlMjZi
MTc5MDVjMTk1MzJhY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Q1NTUGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUNTU1BhaW50ZXIuY3BwCkBAIC0yOCwyMjIgKzI4LDE2IEBACiAKICNpZiBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5j
bHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJEaXNwbGF5Qm94RGVjb3JhdGlvbkRhdGEuaCIKKyNp
bmNsdWRlICJEaXNwbGF5Qm94UGFpbnRlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlDb250YWluZXJC
b3guaCIKLSNpbmNsdWRlICJEaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5oIgotI2luY2x1
ZGUgIkRpc3BsYXlJbWFnZUJveC5oIgogI2luY2x1ZGUgIkRpc3BsYXlTdHlsZS5oIgotI2luY2x1
ZGUgIkRpc3BsYXlUZXh0Qm94LmgiCiAjaW5jbHVkZSAiRGlzcGxheVRyZWUuaCIKLSNpbmNsdWRl
ICJGaWxsTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCi0jaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKLSNpbmNsdWRlICJMYXlvdXRTdGF0
ZS5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIERpc3BsYXkgewogCi12b2lkIENTU1BhaW50ZXI6OnBhaW50RmlsbExheWVyKGNvbnN0IEJv
eE1vZGVsQm94JiBib3gsIGNvbnN0IEZpbGxMYXllciYgbGF5ZXIsIGNvbnN0IEZpbGxMYXllcklt
YWdlR2VvbWV0cnkmIGdlb21ldHJ5LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLQot
ICAgIGF1dG8gY2xpcFJlY3RGb3JMYXllciA9IFtdKGNvbnN0IEJveE1vZGVsQm94JiBib3gsIGNv
bnN0IEZpbGxMYXllciYgbGF5ZXIpIHsKLSAgICAgICAgc3dpdGNoIChsYXllci5jbGlwKCkpIHsK
LSAgICAgICAgY2FzZSBGaWxsQm94OjpCb3JkZXI6Ci0gICAgICAgICAgICByZXR1cm4gYm94LmFi
c29sdXRlQm9yZGVyQm94UmVjdCgpOwotICAgICAgICBjYXNlIEZpbGxCb3g6OlBhZGRpbmc6Ci0g
ICAgICAgICAgICByZXR1cm4gYm94LmFic29sdXRlUGFkZGluZ0JveFJlY3QoKTsKLSAgICAgICAg
Y2FzZSBGaWxsQm94OjpDb250ZW50OgotICAgICAgICAgICAgcmV0dXJuIGJveC5hYnNvbHV0ZUNv
bnRlbnRCb3hSZWN0KCk7Ci0gICAgICAgIGNhc2UgRmlsbEJveDo6VGV4dDoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBBYnNvbHV0ZUZsb2F0UmVjdCgpOwot
ICAgIH07Ci0KLSAgICBzd2l0Y2ggKGxheWVyLmNsaXAoKSkgewotICAgIGNhc2UgRmlsbEJveDo6
Qm9yZGVyOgotICAgIGNhc2UgRmlsbEJveDo6UGFkZGluZzoKLSAgICBjYXNlIEZpbGxCb3g6OkNv
bnRlbnQ6IHsKLSAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQuY2xp
cChjbGlwUmVjdEZvckxheWVyKGJveCwgbGF5ZXIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgRmlsbEJveDo6VGV4dDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgLy8g
RklYTUU6IEhhbmRsZSBiYWNrZ3JvdW5kIGNvbXBvc2l0aW5nIG1vZGVzLgotCi0gICAgYXV0byog
YmFja2dyb3VuZEltYWdlID0gbGF5ZXIuaW1hZ2UoKTsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBv
cCA9IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyOwotCi0gICAgaWYgKGdlb21ldHJ5LmRl
c3RSZWN0KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGltYWdlID0g
YmFja2dyb3VuZEltYWdlLT5pbWFnZShudWxscHRyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKLSAg
ICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogY2FsbCBpbWFn
ZS0+dXBkYXRlRnJvbVNldHRpbmdzKCkuCi0KLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRp
b25zID0gewotICAgICAgICBvcCA9PSBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciA/IGxh
eWVyLmNvbXBvc2l0ZSgpIDogb3AsCi0gICAgICAgIGxheWVyLmJsZW5kTW9kZSgpLAotICAgICAg
ICBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLAotICAgICAgICBJbWFnZU9yaWVudGF0aW9uOjpG
cm9tSW1hZ2UsCi0gICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0Ci0gICAgfTsK
LQotICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgp
LCB0b0Zsb2F0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNp
emUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIG9wdGlvbnMpOwotfQotCi12b2lkIENTU1BhaW50
ZXI6OnBhaW50QmFja2dyb3VuZEltYWdlcyhjb25zdCBCb3hNb2RlbEJveCYgYm94LCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgY29uc3QgYXV0byYgc3R5bGUgPSBib3guc3R5bGUo
KTsKLQotICAgIFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqLCA4PiBsYXllcnM7Ci0KLSAgICBmb3Ig
KGF1dG8qIGxheWVyID0gc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+bmV4dCgpKQotICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKLQotICAgIGF1dG8q
IGJveERlY29yYXRpb25EYXRhID0gYm94LmJveERlY29yYXRpb25EYXRhKCk7Ci0gICAgQVNTRVJU
KGJveERlY29yYXRpb25EYXRhKTsKLQotICAgIGF1dG8mIGxheWVyR2VvbWV0cnlMaXN0ID0gYm94
RGVjb3JhdGlvbkRhdGEtPmJhY2tncm91bmRJbWFnZUdlb21ldHJ5KCk7Ci0KLSAgICBmb3IgKGlu
dCBpID0gbGF5ZXJzLnNpemUoKSAtIDE7IGkgPj0wOyAtLWkpIHsKLSAgICAgICAgY29uc3QgYXV0
byogbGF5ZXIgPSBsYXllcnNbaV07Ci0gICAgICAgIGNvbnN0IGF1dG8mIGdlb21ldHJ5ID0gbGF5
ZXJHZW9tZXRyeUxpc3RbaV07Ci0gICAgICAgIHBhaW50RmlsbExheWVyKGJveCwgKmxheWVyLCBn
ZW9tZXRyeSwgY29udGV4dCk7Ci0gICAgfQotfQotCi12b2lkIENTU1BhaW50ZXI6OnBhaW50Qm94
RGVjb3JhdGlvbnMoY29uc3QgQm94TW9kZWxCb3gmIGJveCwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQotewotICAgIC8vIEZJWE1FOiBUYWJsZSBkZWNvcmF0aW9uIHBhaW50aW5nIGlzIHNwZWNp
YWwuCi0KLSAgICBhdXRvIGJvcmRlckJveFJlY3QgPSBib3guYWJzb2x1dGVCb3JkZXJCb3hSZWN0
KCk7Ci0KLSAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGJveC5zdHlsZSgpOwotCi0gICAgLy8gQmFj
a2dyb3VuZCBjb2xvcgotICAgIGlmIChzdHlsZS5oYXNCYWNrZ3JvdW5kKCkpIHsKLSAgICAgICAg
Y29udGV4dC5maWxsUmVjdChib3JkZXJCb3hSZWN0LCBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IoKSk7
Ci0gICAgICAgIGlmIChzdHlsZS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkKLSAgICAgICAgICAgIHBh
aW50QmFja2dyb3VuZEltYWdlcyhib3gsIGNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIEJvcmRl
cgotICAgIGlmIChzdHlsZS5oYXNWaXNpYmxlQm9yZGVyKCkpIHsKLSAgICAgICAgYXV0byBkcmF3
Qm9yZGVyU2lkZSA9IFsmXShhdXRvIHN0YXJ0LCBhdXRvIGVuZCwgY29uc3QgYXV0byYgYm9yZGVy
U3R5bGUpIHsKLSAgICAgICAgICAgIGlmICghYm9yZGVyU3R5bGUud2lkdGgoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoYm9yZGVyU3R5bGUuc3R5bGUoKSA9PSBC
b3JkZXJTdHlsZTo6Tm9uZSB8fCBib3JkZXJTdHlsZS5zdHlsZSgpID09IEJvcmRlclN0eWxlOjpI
aWRkZW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihib3JkZXJTdHlsZS5jb2xvcigpKTsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlVGhpY2tuZXNzKGJvcmRlclN0eWxlLndpZHRoKCkpOwotICAgICAgICAgICAgY29udGV4
dC5kcmF3TGluZShzdGFydCwgZW5kKTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0KLSAgICAgICAgLy8gVG9wCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gYm9yZGVyV2lkdGggPSBzdHlsZS5ib3JkZXJUb3Ao
KS53aWR0aCgpOwotICAgICAgICAgICAgYXV0byBzdGFydCA9IGJvcmRlckJveFJlY3QubWluWE1p
bllDb3JuZXIoKTsKLSAgICAgICAgICAgIGF1dG8gZW5kID0gRmxvYXRQb2ludCB7IGJvcmRlckJv
eFJlY3QubWF4WCgpLCBzdGFydC55KCkgKyBib3JkZXJXaWR0aCB9OwotICAgICAgICAgICAgZHJh
d0JvcmRlclNpZGUoc3RhcnQsIGVuZCwgc3R5bGUuYm9yZGVyVG9wKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gUmlnaHQKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBib3JkZXJXaWR0
aCA9IHN0eWxlLmJvcmRlclJpZ2h0KCkud2lkdGgoKTsKLSAgICAgICAgICAgIGF1dG8gc3RhcnQg
PSBGbG9hdFBvaW50IHsgYm9yZGVyQm94UmVjdC5tYXhYKCkgLSBib3JkZXJXaWR0aCwgYm9yZGVy
Qm94UmVjdC55KCkgfTsKLSAgICAgICAgICAgIGF1dG8gZW5kID0gRmxvYXRQb2ludCB7IHN0YXJ0
LngoKSArIGJvcmRlcldpZHRoLCBib3JkZXJCb3hSZWN0Lm1heFkoKSB9OwotICAgICAgICAgICAg
ZHJhd0JvcmRlclNpZGUoc3RhcnQsIGVuZCwgc3R5bGUuYm9yZGVyUmlnaHQoKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBCb3R0b20KLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBib3Jk
ZXJXaWR0aCA9IHN0eWxlLmJvcmRlckJvdHRvbSgpLndpZHRoKCk7Ci0gICAgICAgICAgICBhdXRv
IHN0YXJ0ID0gRmxvYXRQb2ludCB7IGJvcmRlckJveFJlY3QueCgpLCBib3JkZXJCb3hSZWN0Lm1h
eFkoKSAtIGJvcmRlcldpZHRoIH07Ci0gICAgICAgICAgICBhdXRvIGVuZCA9IEZsb2F0UG9pbnQg
eyBib3JkZXJCb3hSZWN0Lm1heFgoKSwgc3RhcnQueSgpICsgYm9yZGVyV2lkdGggfTsKLSAgICAg
ICAgICAgIGRyYXdCb3JkZXJTaWRlKHN0YXJ0LCBlbmQsIHN0eWxlLmJvcmRlckJvdHRvbSgpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIExlZnQKLSAgICAgICAgewotICAgICAgICAgICAgYXV0
byBib3JkZXJXaWR0aCA9IHN0eWxlLmJvcmRlckxlZnQoKS53aWR0aCgpOwotICAgICAgICAgICAg
YXV0byBzdGFydCA9IGJvcmRlckJveFJlY3QubWluWE1pbllDb3JuZXIoKTsKLSAgICAgICAgICAg
IGF1dG8gZW5kID0gRmxvYXRQb2ludCB7IHN0YXJ0LngoKSArIGJvcmRlcldpZHRoLCBib3JkZXJC
b3hSZWN0Lm1heFkoKSB9OwotICAgICAgICAgICAgZHJhd0JvcmRlclNpZGUoc3RhcnQsIGVuZCwg
c3R5bGUuYm9yZGVyTGVmdCgpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBDU1NQYWlu
dGVyOjpwYWludEJveENvbnRlbnQoY29uc3QgQm94JiBib3gsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKLXsKLSAgICBpZiAoaXM8SW1hZ2VCb3g+KGJveCkpIHsKLSAgICAgICAgYXV0byYgaW1h
Z2VCb3ggPSBkb3duY2FzdDxJbWFnZUJveD4oYm94KTsKLSAgICAgICAgCi0gICAgICAgIGF1dG8q
IGltYWdlID0gaW1hZ2VCb3guaW1hZ2UoKTsKLSAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBpbWFn
ZUJveC5yZXBsYWNlZENvbnRlbnRSZWN0KCk7Ci0KLSAgICAgICAgaWYgKGltYWdlKQotICAgICAg
ICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBpbWFnZVJlY3QpOwotCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGlzPFRleHRCb3g+KGJveCkpIHsKLSAgICAgICAg
YXV0byYgdGV4dEJveCA9IGRvd25jYXN0PFRleHRCb3g+KGJveCk7Ci0KLSAgICAgICAgYXV0byYg
c3R5bGUgPSBib3guc3R5bGUoKTsKLSAgICAgICAgYXV0byB0ZXh0UmVjdCA9IGJveC5hYnNvbHV0
ZUJveFJlY3QoKTsKLQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHN0eWxlLmNvbG9y
KCkpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZS5jb2xvcigpKTsKLQotICAg
ICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBhbGlnbiBwYWludGluZwotICAgICAgICBh
dXRvIGJhc2VsaW5lID0gdGV4dFJlY3QueSgpICsgc3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQo
KTsKLSAgICAgICAgYXV0byBleHBhbnNpb24gPSB0ZXh0Qm94LmV4cGFuc2lvbigpOwotCi0gICAg
ICAgIGF1dG8gdGV4dFJ1biA9IFRleHRSdW4geyB0ZXh0Qm94LnRleHQoKS5jb250ZW50KCkuc3Vi
c3RyaW5nKHRleHRCb3gudGV4dCgpLnN0YXJ0KCksIHRleHRCb3gudGV4dCgpLmxlbmd0aCgpKSwg
dGV4dFJlY3QueCgpLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJl
aGF2aW9yIH07Ci0gICAgICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0
ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7Ci0gICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3R5
bGUuZm9udENhc2NhZGUoKSwgdGV4dFJ1biwgeyB0ZXh0UmVjdC54KCksIGJhc2VsaW5lIH0pOwot
ICAgICAgICAKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBDU1NQYWludGVyOjpw
YWludEJveChjb25zdCBCb3gmIGJveCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0gICAgYXV0byBhYnNvbHV0ZVJlY3QgPSBib3guYWJzb2x1
dGVCb3hSZWN0KCk7Ci0gICAgLy8gRklYTUU6IE5lZWQgdG8gYWNjb3VudCBmb3IgdmlzdWFsIG92
ZXJmbG93LgotICAgIGlmICghZGlydHlSZWN0LmludGVyc2VjdHMoZW5jbG9zaW5nSW50UmVjdChh
YnNvbHV0ZVJlY3QpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGlzPEltYWdlQm94Pihi
b3gpKSB7Ci0gICAgICAgIGF1dG8mIGltYWdlQm94ID0gZG93bmNhc3Q8SW1hZ2VCb3g+KGJveCk7
Ci0gICAgICAgIAotICAgICAgICBhdXRvKiBpbWFnZSA9IGltYWdlQm94LmltYWdlKCk7Ci0gICAg
ICAgIGF1dG8gaW1hZ2VSZWN0ID0gaW1hZ2VCb3gucmVwbGFjZWRDb250ZW50UmVjdCgpOwotCi0g
ICAgICAgIGlmIChpbWFnZSkKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwg
aW1hZ2VSZWN0KTsKLSAgICB9Ci0KLSAgICBpZiAoaXM8Qm94TW9kZWxCb3g+KGJveCkpCi0gICAg
ICAgIHBhaW50Qm94RGVjb3JhdGlvbnMoZG93bmNhc3Q8Qm94TW9kZWxCb3g+KGJveCksIGNvbnRl
eHQpOwotCi0gICAgcGFpbnRCb3hDb250ZW50KGJveCwgY29udGV4dCk7Ci19Ci0KIC8vIEZJWE1F
OiBNYWtlIHRoaXMgYW4gaXRlcmF0b3IuCiB2b2lkIENTU1BhaW50ZXI6OnJlY3Vyc2l2ZVBhaW50
RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyQm94JiBjb250YWluZXJCb3gsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgUGFpbnRQaGFzZSBwYWludFBoYXNlKQogewpAQCAtMjU1LDE1ICs0OSwx
NSBAQCB2b2lkIENTU1BhaW50ZXI6OnJlY3Vyc2l2ZVBhaW50RGVzY2VuZGFudHMoY29uc3QgQ29u
dGFpbmVyQm94JiBjb250YWluZXJCb3gsIEdyYQogICAgICAgICBzd2l0Y2ggKHBhaW50UGhhc2Up
IHsKICAgICAgICAgY2FzZSBQYWludFBoYXNlOjpCbG9ja0JhY2tncm91bmRzOgogICAgICAgICAg
ICAgaWYgKCFib3guc3R5bGUoKS5pc0Zsb2F0aW5nKCkgJiYgIWJveC5zdHlsZSgpLmlzUG9zaXRp
b25lZCgpICYmIGlzPEJveE1vZGVsQm94Pihib3gpKQotICAgICAgICAgICAgICAgIHBhaW50Qm94
RGVjb3JhdGlvbnMoZG93bmNhc3Q8Qm94TW9kZWxCb3g+KGJveCksIGNvbnRleHQpOworICAgICAg
ICAgICAgICAgIEJveFBhaW50ZXI6OnBhaW50Qm94RGVjb3JhdGlvbnMoZG93bmNhc3Q8Qm94TW9k
ZWxCb3g+KGJveCksIGNvbnRleHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
UGFpbnRQaGFzZTo6RmxvYXRzOgogICAgICAgICAgICAgaWYgKGJveC5zdHlsZSgpLmlzRmxvYXRp
bmcoKSAmJiAhYm94LnN0eWxlKCkuaXNQb3NpdGlvbmVkKCkgJiYgaXM8Qm94TW9kZWxCb3g+KGJv
eCkpCi0gICAgICAgICAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhkb3duY2FzdDxCb3hNb2Rl
bEJveD4oYm94KSwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgQm94UGFpbnRlcjo6cGFpbnRC
b3hEZWNvcmF0aW9ucyhkb3duY2FzdDxCb3hNb2RlbEJveD4oYm94KSwgY29udGV4dCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYWludFBoYXNlOjpCbG9ja0ZvcmVncm91bmRz
OgogICAgICAgICAgICAgaWYgKCFib3guc3R5bGUoKS5pc0Zsb2F0aW5nKCkgJiYgIWJveC5zdHls
ZSgpLmlzUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgICAgIHBhaW50Qm94Q29udGVudChib3gs
IGNvbnRleHQpOworICAgICAgICAgICAgICAgIEJveFBhaW50ZXI6OnBhaW50Qm94Q29udGVudChi
b3gsIGNvbnRleHQpOwogICAgICAgICB9OwogICAgICAgICBpZiAoaXM8Q29udGFpbmVyQm94Pihi
b3gpKQogICAgICAgICAgICAgcmVjdXJzaXZlUGFpbnREZXNjZW5kYW50cyhkb3duY2FzdDxDb250
YWluZXJCb3g+KGJveCksIGNvbnRleHQsIHBhaW50UGhhc2UpOwpAQCAtMjc0LDcgKzY4LDcgQEAg
dm9pZCBDU1NQYWludGVyOjpwYWludFN0YWNraW5nQ29udGV4dChjb25zdCBCb3hNb2RlbEJveCYg
Y29udGV4dFJvb3QsIEdyYXBoaWNzQ28KIHsKICAgICBVTlVTRURfUEFSQU0oZGlydHlSZWN0KTsK
ICAgICAKLSAgICBwYWludEJveERlY29yYXRpb25zKGNvbnRleHRSb290LCBjb250ZXh0KTsKKyAg
ICBCb3hQYWludGVyOjpwYWludEJveERlY29yYXRpb25zKGNvbnRleHRSb290LCBjb250ZXh0KTsK
IAogICAgIGF1dG8gcGFpbnREZXNjZW5kYW50cyA9IFsmXShjb25zdCBDb250YWluZXJCb3gmIGNv
bnRhaW5lckJveCkgewogICAgICAgICAvLyBGb3IgYWxsIGl0cyBpbi1mbG93LCBub24tcG9zaXRp
b25lZCwgYmxvY2stbGV2ZWwgZGVzY2VuZGFudHMgaW4gdHJlZSBvcmRlcjogSWYgdGhlIGVsZW1l
bnQgaXMgYSBibG9jaywgbGlzdC1pdGVtLCBvciBvdGhlciBibG9jayBlcXVpdmFsZW50OgpAQCAt
MzI1LDEwICsxMTksMTAgQEAgdm9pZCBDU1NQYWludGVyOjpwYWludFN0YWNraW5nQ29udGV4dChj
b25zdCBCb3hNb2RlbEJveCYgY29udGV4dFJvb3QsIEdyYXBoaWNzQ28KICAgICAgICAgICAgIGlm
IChib3gtPnN0eWxlKCkuaXNTdGFja2luZ0NvbnRleHQoKSkKICAgICAgICAgICAgICAgICBwYWlu
dFN0YWNraW5nQ29udGV4dCgqYm94LCBjb250ZXh0LCBkaXJ0eVJlY3QpOwogICAgICAgICAgICAg
ZWxzZSBpZiAoaXM8Q29udGFpbmVyQm94PigqYm94KSkgewotICAgICAgICAgICAgICAgIHBhaW50
Qm94RGVjb3JhdGlvbnMoKmJveCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgQm94UGFpbnRl
cjo6cGFpbnRCb3hEZWNvcmF0aW9ucygqYm94LCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBw
YWludERlc2NlbmRhbnRzKGRvd25jYXN0PENvbnRhaW5lckJveD4oKmJveCkpOwogICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcGFpbnRCb3goKmJveCwgY29udGV4dCwgZGlydHlS
ZWN0KTsKKyAgICAgICAgICAgICAgICBCb3hQYWludGVyOjpwYWludEJveCgqYm94LCBjb250ZXh0
LCBkaXJ0eVJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rp
c3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmgKaW5kZXggNzQ0ZTdhZDhlYTU5MDQzYTU0M2Jk
MzQ2NDg5MDk5M2YwODBkN2Q2MC4uM2I3ZTcxNGE3YjgwODdiYzc0YzU0OTRhYTg5Mjc1YWUxOGMw
YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1Bh
aW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRl
ci5oCkBAIC00NywxNyArNDcsOSBAQCBjbGFzcyBUcmVlOwogY2xhc3MgQ1NTUGFpbnRlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcGFpbnRTdGFja2luZ0NvbnRleHQoY29uc3QgQm94TW9k
ZWxCb3gmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwotICAg
IAogICAgIHN0YXRpYyB2b2lkIHBhaW50VHJlZShjb25zdCBUcmVlJiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAotCiBwcml2YXRlOgotICAgIHN0YXRpYyB2
b2lkIHBhaW50Qm94KGNvbnN0IEJveCYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCk7Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhjb25zdCBC
b3hNb2RlbEJveCYsIEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyB2b2lkIHBhaW50QmFj
a2dyb3VuZEltYWdlcyhjb25zdCBCb3hNb2RlbEJveCYsIEdyYXBoaWNzQ29udGV4dCYpOwotICAg
IHN0YXRpYyB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IEJveE1vZGVsQm94JiwgY29uc3QgRmls
bExheWVyJiwgY29uc3QgRmlsbExheWVySW1hZ2VHZW9tZXRyeSYsIEdyYXBoaWNzQ29udGV4dCYp
OwotICAgIHN0YXRpYyB2b2lkIHBhaW50Qm94Q29udGVudChjb25zdCBCb3gmLCBHcmFwaGljc0Nv
bnRleHQmKTsKLQogICAgIGVudW0gY2xhc3MgUGFpbnRQaGFzZSB7CiAgICAgICAgIEJsb2NrQmFj
a2dyb3VuZHMsCiAgICAgICAgIEZsb2F0cywK
</data>

          </attachment>
      

    </bug>

</bugzilla>