<?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>193433</bug_id>
          
          <creation_ts>2019-01-14 21:16:14 -0800</creation_ts>
          <short_desc>Avoid redundant repaints during style change</short_desc>
          <delta_ts>2019-06-16 20:56:04 -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>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1494519</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-14 21:16:14 -0800</bug_when>
    <thetext>Avoid redundant repaints during style change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494520</commentid>
    <comment_count>1</comment_count>
      <attachid>359131</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-14 21:16:39 -0800</bug_when>
    <thetext>Created attachment 359131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494521</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-14 21:17:18 -0800</bug_when>
    <thetext>Parking this patch here. In one Speedometer2 run we get:

RenderElement::setStyle - redundant repaint: 6365 calls, mean duration: 0.000504ms

so that&apos;s about 3ms on the entire run. Not much.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359131</attachid>
            <date>2019-01-14 21:16:39 -0800</date>
            <delta_ts>2019-01-14 21:16:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193433-20190114211638.patch</filename>
            <type>text/plain</type>
            <size>28783</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5OTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwN2EyOTM2NDNhZGY2Y2JkY2YzM2Y2
YWQ4MmViMTBkYTNkMzQ3NDMuLmJkOTFkZTNhNDIyYzA0MGYxZWZlN2Q4NzMzZTVlZDQ0ZWFiNDMw
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDEtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgcmVkdW5kYW50IHJlcGFpbnRzIGR1
cmluZyBzdHlsZSBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL1N0YWNrU2hvdC5oOgorICAgICAgICAoV1RGOjpTdGFja1Nob3Q6OmR1
bXAgY29uc3QpOgorCiAyMDE5LTAxLTExICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CiAKICAgICAgICAgRm9sbG93LXVwOiBXb3JrUXVldWU6OmNvbmN1cnJlbnRBcHBseSgpIHBh
c3NlcyBhIHJhdyBwb2ludGVyIHRvIGEgdGVtcG9yYXJ5IFN0cmluZyB0byBUaHJlYWQ6OmNyZWF0
ZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDNkMjdhMmU2YzBkYmI3ZTU2NWY1OWFhOTZlMDQ0MGY4MGUxMTRi
OTEuLjY4OTkyYzg3NjM3ZWMxMTBmMWI3MDdkNGI4YWIxMjIwNGQ4NmRkZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MCBAQAorMjAxOS0wMS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCByZWR1bmRhbnQgcmVwYWludHMgZHVyaW5nIHN0
eWxlIGNoYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzNDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aW5pdGlhbGl6ZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBs
YWNlQ2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6c3R5bGVXaWxsQ2hhbmdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVM
YXllclBvc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVX
aWxsQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bGFzdFJlcGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVw
YWludFVzaW5nQ29udGFpbmVyIGNvbnN0KToKKwogMjAxOS0wMS0xMiAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEJsb2NrL0lubGluRm9ybWF0dGluZ0Nv
bnRleHQgc2hvdWxkIHRha2UgQmxvY2svSW5saW5lRm9ybWF0dGluZ1N0YXRlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1Nob3QuaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5o
CmluZGV4IDdiM2FkOTI0M2I5YWRlMjcxNGVkNjA2NDI1NTQ4NTAyNTQ1NWIxMzQuLjYwNTIzZjdm
NTMyZTNmZjllZmMyNjU4YzIwOWI4OWI5ZmQxOTg1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1N0YWNrU2hvdC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCkBAIC0xMDMs
NiArMTAzLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICFtX3NpemUgJiYgbV9hcnJheS5n
ZXQoKSA9PSBkZWxldGVkVmFsdWVBcnJheSgpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGR1bXAo
KSBjb25zdAorICAgIHsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2UobV9hcnJheS5nZXQoKSwg
bV9zaXplKTsKKyAgICB9CisgICAgCiAgICAgLy8gTWFrZSBTcGVjdHJ1bTw+IGhhcHB5LgogICAg
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IFN0YWNrU2hvdCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZDI1YTdlNjFhN2FlMzRjYjI1
N2UxNGYwZTUyNWM3Mzk4MjI4MmRlOS4uZWYxMDE2YjAxNTMzZGY1ZjA0OGNkNjY5YTcyNTQzMzE2
ODA4NTVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDE5NCw2ICs0MTk0LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKIAogdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKIHsKKy8v
ICAgIFdURkxvZ0Fsd2F5cygiRnJhbWVWaWV3ICVwIHBhaW50Q29udGVudHMiLCB0aGlzKTsKICNp
Zm5kZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFdhcm5pbmdDb2xvcjsKICAgICBpZiAoZnJh
bWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggMzkwOWM1YTM2OTdlYWNmMjg5YjI4OTgwMGI2NzlmOWMwN2Q3OGY3
ZS4uNGM4MDI4ZTA0NzVkMDAzYTY4Yzk5OGMyNGZmMGNlYTIxMjEyYzM1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC00MTAsMTMgKzQxMCwxMyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0c0lmTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJiBvbGRTdHlsZSwgYwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6c3R5bGVX
aWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUpCit2b2lkIFJlbmRlckJsb2NrOjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgYm9vbCYgZGlkUmVwYWludCkKIHsKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUgPSBoYXNJbml0aWFsaXplZFN0eWxlKCkgPyAm
c3R5bGUoKSA6IG51bGxwdHI7CiAgICAgc2V0UmVwbGFjZWQobmV3U3R5bGUuaXNEaXNwbGF5SW5s
aW5lVHlwZSgpKTsKICAgICBpZiAob2xkU3R5bGUpCiAgICAgICAgIHJlbW92ZVBvc2l0aW9uZWRP
YmplY3RzSWZOZWVkZWQoKm9sZFN0eWxlLCBuZXdTdHlsZSk7Ci0gICAgUmVuZGVyQm94OjpzdHls
ZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOworICAgIFJlbmRlckJveDo6c3R5bGVXaWxsQ2hh
bmdlKGRpZmYsIG5ld1N0eWxlLCBkaWRSZXBhaW50KTsKIH0KIAogc3RhdGljIGJvb2wgYm9yZGVy
T3JQYWRkaW5nTG9naWNhbFdpZHRoQ2hhbmdlZChjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKaW5kZXggZmQ3NGFmMTc4MjRkYjNmN2Y5YzI0MGYyZWQ2NGE3ZGQzNTJmN2QzOS4u
NTUzNWFiZGQ3YWEyMDUwOWVkZjJkMTljMDkzYjkzNTBkN2U0ZmRlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTM2NCw3ICszNjQsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2b2lkIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogCi0gICAgdm9pZCBzdHls
ZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUp
IG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBib29sJiBkaWRSZXBhaW50KSBvdmVycmlkZTsKICAg
ICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNMaW5lSWZFbXB0eSgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApp
bmRleCAwZWNmMTFmYTJhNjJlODBhZjE2NWVhMDlhYmZiY2UwMjFkY2U1MDFjLi42ZDY4YTMwZmZm
ODlmNDRkNWQxYTM4OTcwZTc0ZTM3ZjExNjEwZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMjAzNSw3ICsyMDM1LDcgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OnVwZGF0ZVN0eWxlc0ZvckNvbHVtbkNoaWxkcmVuKCkKICAgICAgICAgY2hp
bGQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5
KHN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9jaykpOwogfQogCi12b2lkIFJlbmRlckJsb2NrRmxv
dzo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHls
ZSYgbmV3U3R5bGUpCit2b2lkIFJlbmRlckJsb2NrRmxvdzo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGJvb2wmIGRpZFJl
cGFpbnQpCiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlID0gaGFzSW5pdGlhbGl6
ZWRTdHlsZSgpID8gJnN0eWxlKCkgOiBudWxscHRyOwogICAgIHNfY2FuUHJvcGFnYXRlRmxvYXRJ
bnRvU2libGluZyA9IG9sZFN0eWxlID8gIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSAmJiAhYXZvaWRzRmxvYXRzKCkgOiBmYWxzZTsKQEAgLTIwNTAsNyArMjA1MCw3IEBAIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlJiBuCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSZW5kZXJCbG9jazo6
c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKKyAgICBSZW5kZXJCbG9jazo6c3R5bGVX
aWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlLCBkaWRSZXBhaW50KTsKIH0KIAogdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OmRlbGV0ZUxpbmVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaAppbmRleCBiZGJiZTNjZWI1ZjdmYjY0NTBhMTY4MTljZWQ1NjY5Y2UxM2M3NDEw
Li4xYzExYjc3MzFmODRlOWFlYjdjYWFmMDk5ZmZjNDg2NmE3ODdiYTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgbXVzdFNlcGFyYXRlTWFyZ2luQmVmb3JlRm9yQ2hpbGQoY29uc3Qg
UmVuZGVyQm94JikgY29uc3Q7CiAgICAgYm9vbCBtdXN0U2VwYXJhdGVNYXJnaW5BZnRlckZvckNo
aWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogCi0gICAgdm9pZCBzdHlsZVdpbGxDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUmIG5ld1N0eWxlLCBib29sJiBkaWRSZXBhaW50KSBvdmVycmlkZTsKICAgICB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgY3JlYXRlRmxvYXRpbmdPYmplY3RzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDA2YWViYWY2NWQ1ZGYxOWI3YjAyZGYyYWVm
NjEyNGU2YTY0ZjQ0MmMuLjE5NzJiZjcxZjEwOGM3M2ZkY2ExNDI4MjEyYjAxOWI1MmM1ZWJmYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yNTEsNyArMjUxLDcg
QEAgdm9pZCBSZW5kZXJCb3g6OnJlbW92ZUZsb2F0aW5nT3JQb3NpdGlvbmVkQ2hpbGRGcm9tQmxv
Y2tMaXN0cygpCiAgICAgICAgIFJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0KCp0
aGlzKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQordm9pZCBSZW5kZXJCb3g6OnN0
eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5l
d1N0eWxlLCBib29sJiBkaWRSZXBhaW50KQogewogICAgIHNfaGFkT3ZlcmZsb3dDbGlwID0gaGFz
T3ZlcmZsb3dDbGlwKCk7CiAKQEAgLTI2OSw5ICsyNjksMTMgQEAgdm9pZCBSZW5kZXJCb3g6OnN0
eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5l
d1N0eWwKICAgICAgICAgLy8gdG8gZGlydHkgdGhlIHJlbmRlciB0cmVlIHVzaW5nIHRoZSBvbGQg
cG9zaXRpb24gdmFsdWUgbm93LgogICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2U6
OkxheW91dCAmJiBwYXJlbnQoKSAmJiBvbGRTdHlsZS0+cG9zaXRpb24oKSAhPSBuZXdTdHlsZS5w
b3NpdGlvbigpKSB7CiAgICAgICAgICAgICBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgp
OwotICAgICAgICAgICAgaWYgKG9sZFN0eWxlLT5wb3NpdGlvbigpID09IFBvc2l0aW9uVHlwZTo6
U3RhdGljKQotICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KG5ld1N0eWxlLmhhc091dE9mRmxvd1Bvc2l0aW9uKCkpCisgICAgICAgICAgICBpZiAob2xkU3R5
bGUtPnBvc2l0aW9uKCkgPT0gUG9zaXRpb25UeXBlOjpTdGF0aWMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWRpZFJlcGFpbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwYWludCgpOworICAg
ICAgICAgICAgICAgICAgICBkaWRSZXBhaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJSZW5kZXJCb3ggJXAgc3R5bGVX
aWxsQ2hhbmdlIHdvdWxkIGhhdmUgZG9uZSByZWR1bmRhbnQgcmVwYWludCIsIHRoaXMpOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChuZXdTdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQogICAg
ICAgICAgICAgICAgIHBhcmVudCgpLT5zZXRDaGlsZE5lZWRzTGF5b3V0KCk7CiAgICAgICAgICAg
ICBpZiAoaXNGbG9hdGluZygpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBuZXdTdHls
ZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQogICAgICAgICAgICAgICAgIHJlbW92ZUZsb2F0aW5n
T3JQb3NpdGlvbmVkQ2hpbGRGcm9tQmxvY2tMaXN0cygpOwpAQCAtMjg5LDcgKzI5Myw3IEBAIHZv
aWQgUmVuZGVyQm94OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlJiBuZXdTdHlsCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKKyAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlLCBkaWRSZXBhaW50KTsK
IH0KIAogdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCkBAIC0xNzE2LDYgKzE3MjAsOCBAQCB2b2lk
IFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50
UmVjdCopCiAKIGJvb2wgUmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKFdyYXBw
ZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVyJiBsYXllcnMsIGJvb2wgZHJhd2luZ0Jh
Y2tncm91bmQpCiB7CisvLyAgICBXVEZMb2dBbHdheXMoIlJlbmRlckJveCAlcCByZXBhaW50TGF5
ZXJSZWN0c0ZvckltYWdlICVwIiwgdGhpcywgaW1hZ2UpOworCiAgICAgTGF5b3V0UmVjdCByZW5k
ZXJlclJlY3Q7CiAgICAgUmVuZGVyQm94KiBsYXllclJlbmRlcmVyID0gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDU1MTA2ODUyOTQyOTRhYmY4ZjVkNmVi
MmEwY2FjMjEwNmY2YTZjMTIuLjNkOTQwNjIxZjU1YmZmNGM3ODU2MjE4NDJlMTNiNjYzYzM3ZmJl
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYzNiw3ICs2MzYsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyQm94KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNl
VHlwZUZsYWdzKTsKICAgICBSZW5kZXJCb3goRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNl
VHlwZUZsYWdzKTsKIAotICAgIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlV2ls
bENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgYm9v
bCYgZGlkUmVwYWludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB1cGRhdGVGcm9tU3R5bGUoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBiMzE1
ZTA5NDU5ZGMyMThlNTdkY2NlNjVmMzIyYWM4Nzk5ODM5ZWZiLi5iMmYxM2FjNmNiZDBiMWIxZDRl
NjVhNmM4NWY1YWY5ZTZjZTg3NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMTY0LDEzICsxNjQs
MTMgQEAgc3RhdGljIExheW91dFVuaXQgY29udGVudEhlaWdodEZvckNoaWxkKFJlbmRlckJveCog
Y2hpbGQpCiAgICAgcmV0dXJuIGNoaWxkLT5sb2dpY2FsSGVpZ2h0KCkgLSBjaGlsZC0+Ym9yZGVy
QW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKIH0KIAotdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3g6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUmIG5ld1N0eWxlKQordm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OnN0
eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5l
d1N0eWxlLCBib29sJiBkaWRSZXBhaW50KQogewogICAgIGF1dG8qIG9sZFN0eWxlID0gaGFzSW5p
dGlhbGl6ZWRTdHlsZSgpID8gJnN0eWxlKCkgOiBudWxscHRyOwogICAgIGlmIChvbGRTdHlsZSAm
JiAhb2xkU3R5bGUtPmxpbmVDbGFtcCgpLmlzTm9uZSgpICYmIG5ld1N0eWxlLmxpbmVDbGFtcCgp
LmlzTm9uZSgpKQogICAgICAgICBjbGVhckxpbmVDbGFtcCgpOwogCi0gICAgUmVuZGVyQmxvY2s6
OnN0eWxlV2lsbENoYW5nZShkaWZmLCBuZXdTdHlsZSk7CisgICAgUmVuZGVyQmxvY2s6OnN0eWxl
V2lsbENoYW5nZShkaWZmLCBuZXdTdHlsZSwgZGlkUmVwYWludCk7CiB9CiAKIHZvaWQgUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guaAppbmRleCA5MDEzYTQ2Y2RkMjg5NDY2Y2U3OGJjMWNkMWQ1YWY5NGMwOGY5
MjA4Li5hYTMwNWZlMmQ3MjJmN2ZjOWRlNGM0Y2NhZmNmMTJkZTRjZmRjYjk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdT
dHlsZSwgYm9vbCYgZGlkUmVwYWludCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dEJsb2Nr
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0ID0gMF9sdSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJl
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYzli
OTVkODIzODk5MDdkNjkxM2JkM2M1M2E1ZjZmMGM3MGVkNTVkYS4uNTk1ODNmNzZlZmE0MmFiMWM4
NmNhNWE0NTA3OWJiZTM3MTQ1ZjVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcApAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3Rh
Y2tTdGF0cy5oPgorI2luY2x1ZGUgPHd0Zi9UaW1pbmdTY29wZS5oPgogCiAjaW5jbHVkZSAiUmVu
ZGVyR3JpZC5oIgogCkBAIC0zNzksNyArMzgwLDggQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojppbml0
aWFsaXplU3R5bGUoKQogewogICAgIFN0eWxlOjpsb2FkUGVuZGluZ1Jlc291cmNlcyhtX3N0eWxl
LCBkb2N1bWVudCgpLCBlbGVtZW50KCkpOwogCi0gICAgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZTo6TmV3U3R5bGUsIHN0eWxlKCkpOworICAgIGJvb2wgZGlkUmVwYWludCA9IGZhbHNl
OworICAgIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2U6Ok5ld1N0eWxlLCBzdHlsZSgp
LCBkaWRSZXBhaW50KTsKICAgICBtX2hhc0luaXRpYWxpemVkU3R5bGUgPSB0cnVlOwogICAgIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZTo6TmV3U3R5bGUsIG51bGxwdHIpOwogCkBAIC00
MDgsNyArNDEwLDggQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShSZW5kZXJTdHlsZSYm
IHN0eWxlLCBTdHlsZURpZmZlcmVuY2UgbWluaW1hbFN0eWxlRGkKIAogICAgIFN0eWxlOjpsb2Fk
UGVuZGluZ1Jlc291cmNlcyhzdHlsZSwgZG9jdW1lbnQoKSwgZWxlbWVudCgpKTsKIAotICAgIHN0
eWxlV2lsbENoYW5nZShkaWZmLCBzdHlsZSk7CisgICAgYm9vbCBkaWRSZXBhaW50ID0gZmFsc2U7
CisgICAgc3R5bGVXaWxsQ2hhbmdlKGRpZmYsIHN0eWxlLCBkaWRSZXBhaW50KTsKICAgICBhdXRv
IG9sZFN0eWxlID0gbV9zdHlsZS5yZXBsYWNlKFdURk1vdmUoc3R5bGUpKTsKICAgICBib29sIGRl
dGFjaGVkRnJvbVBhcmVudCA9ICFwYXJlbnQoKTsKIApAQCAtNDQ5LDcgKzQ1MiwxMSBAQCB2b2lk
IFJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlRGlmZmVy
ZW5jZSBtaW5pbWFsU3R5bGVEaQogICAgIGlmICh1cGRhdGVkRGlmZiA9PSBTdHlsZURpZmZlcmVu
Y2U6OlJlcGFpbnRMYXllciB8fCBzaG91bGRSZXBhaW50Rm9yU3R5bGVEaWZmZXJlbmNlKHVwZGF0
ZWREaWZmKSkgewogICAgICAgICAvLyBEbyBhIHJlcGFpbnQgd2l0aCB0aGUgbmV3IHN0eWxlIG5v
dywgZS5nLiwgZm9yIGV4YW1wbGUgaWYgd2UgZ28gZnJvbQogICAgICAgICAvLyBub3QgaGF2aW5n
IGFuIG91dGxpbmUgdG8gaGF2aW5nIGFuIG91dGxpbmUuCi0gICAgICAgIHJlcGFpbnQoKTsKKyAg
ICAgICAgaWYgKGRpZFJlcGFpbnQpIHsKKyAgICAgICAgICAgIFRpbWluZ1Njb3BlIHNjb3BlKCJS
ZW5kZXJFbGVtZW50OjpzZXRTdHlsZSAtIHJlZHVuZGFudCByZXBhaW50IiwgMSk7CisgICAgICAg
ICAgICByZXBhaW50KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVwYWludCgpOwog
ICAgIH0KIH0KIApAQCAtNjk4LDcgKzcwNSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6aW52YWxp
ZGF0ZUNhY2hlZEZpcnN0TGluZVN0eWxlKCkKICAgICAgICAgZGVzY2VuZGFudC5tX2hhc1ZhbGlk
Q2FjaGVkRmlyc3RMaW5lU3R5bGUgPSBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJFbGVtZW50Ojpz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSkKK3ZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGJvb2wmIGRpZFJlcGFpbnQp
CiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMo
KSB8fCBuZXdTdHlsZS5mb250RGVzY3JpcHRpb24oKS5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRG
b250cygpID09IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpObyk7CiAKQEAgLTcyOSwxNCArNzM2
LDI1IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3CiAgICAgICAgICAgICAgICAgICAgIGxheWVy
LT5zZXRIYXNWaXNpYmxlQ29udGVudCgpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxheWVy
LT5oYXNWaXNpYmxlQ29udGVudCgpICYmICh0aGlzID09ICZsYXllci0+cmVuZGVyZXIoKSB8fCBs
YXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNp
YmxlKSkgewogICAgICAgICAgICAgICAgICAgICBsYXllci0+ZGlydHlWaXNpYmxlQ29udGVudFN0
YXR1cygpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGlmZiA+IFN0eWxlRGlmZmVyZW5jZTo6
UmVwYWludExheWVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVwYWludCgpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoZGlmZiA+IFN0eWxlRGlmZmVyZW5jZTo6UmVwYWludExheWVyKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRpZFJlcGFpbnQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBhaW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlkUmVwYWludCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlJlbmRlckVsZW1lbnQgJXAgc3R5
bGVXaWxsQ2hhbmdlIHdvdWxkIGhhdmUgZG9uZSByZWR1bmRhbnQgcmVwYWludCIsIHRoaXMpOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fcGFyZW50ICYmIChuZXdTdHlsZS5vdXRsaW5lU2l6
ZSgpIDwgbV9zdHlsZS5vdXRsaW5lU2l6ZSgpIHx8IHNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZl
cmVuY2UoZGlmZikpKQotICAgICAgICAgICAgcmVwYWludCgpOworICAgICAgICBpZiAobV9wYXJl
bnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXplKCkgPCBtX3N0eWxlLm91dGxpbmVTaXplKCkgfHwg
c2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkpIHsKKyAgICAgICAgICAgIGlm
ICghZGlkUmVwYWludCkgeworICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAg
ICAgICBkaWRSZXBhaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiUmVuZGVyRWxlbWVudCAlcCBzdHlsZVdpbGxDaGFuZ2UgMiB3b3Vs
ZCBoYXZlIGRvbmUgcmVkdW5kYW50IHJlcGFpbnQiLCB0aGlzKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIGlmIChpc0Zsb2F0aW5nKCkgJiYgbV9zdHlsZS5mbG9hdGluZygpICE9IG5ld1N0eWxlLmZs
b2F0aW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZvciBjaGFuZ2VzIGluIGZsb2F0IHN0eWxlcywg
d2UgbmVlZCB0byBjb25jZWl2YWJseSByZW1vdmUgb3Vyc2VsdmVzCiAgICAgICAgICAgICAvLyBm
cm9tIHRoZSBmbG9hdGluZyBvYmplY3RzIGxpc3QuCkBAIC03OTUsMTIgKzgxMywxNiBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgYXJlQ3Vyc29yc0VxdWFsKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25z
dCBSZW5kZXJTdHlsZSogYikKIAogdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogeworLy8g
ICAgV1RGTG9nQWx3YXlzKCJSZW5kZXJFbGVtZW50ICVwIHN0eWxlRGlkQ2hhbmdlIChkaWZmICVk
KSAtIHVwZGF0aW5nIGltYWdlcyIsIHRoaXMsIChpbnQpZGlmZik7CisKICAgICB1cGRhdGVGaWxs
SW1hZ2VzKG9sZFN0eWxlID8gJm9sZFN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkgOiBudWxscHRy
LCBtX3N0eWxlLmJhY2tncm91bmRMYXllcnMoKSk7CiAgICAgdXBkYXRlRmlsbEltYWdlcyhvbGRT
dHlsZSA/ICZvbGRTdHlsZS0+bWFza0xheWVycygpIDogbnVsbHB0ciwgbV9zdHlsZS5tYXNrTGF5
ZXJzKCkpOwogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPmJvcmRlckltYWdl
KCkuaW1hZ2UoKSA6IG51bGxwdHIsIG1fc3R5bGUuYm9yZGVySW1hZ2UoKS5pbWFnZSgpKTsKICAg
ICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgp
IDogbnVsbHB0ciwgbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKTsKICAgICB1cGRhdGVT
aGFwZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPnNoYXBlT3V0c2lkZSgpIDogbnVsbHB0ciwg
bV9zdHlsZS5zaGFwZU91dHNpZGUoKSk7CiAKKy8vICAgIFdURkxvZ0Fsd2F5cygiUmVuZGVyRWxl
bWVudCAlcCBzdHlsZURpZENoYW5nZSAoZGlmZiAlZCkgLSBkb25lIHVwZGF0aW5nIGltYWdlcyIs
IHRoaXMsIChpbnQpZGlmZik7CisKICAgICBTVkdSZW5kZXJTdXBwb3J0OjpzdHlsZUNoYW5nZWQo
KnRoaXMsIG9sZFN0eWxlKTsKIAogICAgIGlmICghbV9wYXJlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBkNDZkZDMzMDA0ZjQwZmI3MzMyNzc2ZTU0NjBi
OTRlYzQ3ZmUyZjhmLi4xYTg3YjY2N2U5MDNhMmE3ZjgwYThjNmQ2MzNjMjcyMjg3ZjMxMTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTI0Nyw3ICsyNDcs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRGaXJzdENoaWxkKFJlbmRlck9iamVjdCogY2hp
bGQpIHsgbV9maXJzdENoaWxkID0gY2hpbGQ7IH0KICAgICB2b2lkIHNldExhc3RDaGlsZChSZW5k
ZXJPYmplY3QqIGNoaWxkKSB7IG1fbGFzdENoaWxkID0gY2hpbGQ7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYg
bmV3U3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGJvb2wmIGRpZFJlcGFpbnQpOwogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSk7CiAKICAgICB2b2lkIGluc2VydGVkSW50b1RyZWUoKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmlu
ZGV4IGIzMGZjN2Y5MmY3ODZlOTk0M2E5YTk3MDllMWRlYWEyNTMwOTQ3M2EuLmQ0YTJmMzk5Y2I5
ZGI3NzYyMWJkZDlkODhkYTFhYzg0YTU1NmJjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTU4NCw3ICsxNTg0LDcgQEAgdm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QW5kUGxhY2VDaGlsZHJlbihMYXlvdXRVbml0JiBjcm9z
c0F4aXNPZmZzZXQsIFZlY3QKICAgICAgICAgICAgIGNoaWxkLm1hcmtGb3JQYWdpbmF0aW9uUmVs
YXlvdXRJZk5lZWRlZCgpOwogICAgICAgICBpZiAoY2hpbGQubmVlZHNMYXlvdXQoKSkKICAgICAg
ICAgICAgIG1fcmVsYWlkT3V0Q2hpbGRyZW4uYWRkKCZjaGlsZCk7Ci0gICAgICAgIGNoaWxkLmxh
eW91dElmTmVlZGVkKCk7CisgICAgICAgIGNoaWxkLmxheW91dElmTmVlZGVkKCk7IC8vIHRoaXMg
bWF5IGhhdmUgcmVwYWludGVkPwogICAgICAgICBpZiAoIWNoaWxkSGFkTGF5b3V0ICYmIGNoaWxk
LmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKSB7CiAgICAgICAgICAgICBjaGlsZC5yZXBh
aW50KCk7CiAgICAgICAgICAgICBjaGlsZC5yZXBhaW50T3ZlcmhhbmdpbmdGbG9hdHModHJ1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA4NWExMDFkYzg2
YzU2M2I1MWM1ZTMxNTBkMzg2ODU2MTkxNGJhYTkxLi4zODEwZDAyNzJjOTk4YTliYmE1NjAxMTFi
ZmY2YjVkOWFiN2Q3ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKQEAgLTIzMCwxMSArMjMwLDExIEBAIGJvb2wgUmVuZGVySW1hZ2U6OnJlcXVpcmVzTGF5ZXIo
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJJbWFnZTo6c3R5bGVX
aWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUpCit2b2lkIFJlbmRlckltYWdlOjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgYm9vbCYgZGlkUmVwYWludCkKIHsKICAg
ICBpZiAoIWhhc0luaXRpYWxpemVkU3R5bGUoKSkKICAgICAgICAgaW1hZ2VSZXNvdXJjZSgpLmlu
aXRpYWxpemUoKnRoaXMpOwotICAgIFJlbmRlclJlcGxhY2VkOjpzdHlsZVdpbGxDaGFuZ2UoZGlm
ZiwgbmV3U3R5bGUpOworICAgIFJlbmRlclJlcGxhY2VkOjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwg
bmV3U3R5bGUsIGRpZFJlcGFpbnQpOwogfQogCiB2b2lkIFJlbmRlckltYWdlOjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCA4MmNjNzQxOWZlMzc0NzU3
OGZhYjZiMjUyZDkwYWVlOGIyM2Q3MDVkLi4xYzAxYWVhNzQxYTYwM2M2MGM5YmI2NTdhZDZiMmRh
NzQwYTdjOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtODYs
NyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZv
cm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8p
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZm9yZWdyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0
KGNvbnN0IExheW91dFJlY3QmIGxvY2FsUmVjdCwgdW5zaWduZWQgbWF4RGVwdGhUb1Rlc3QpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVX
aWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBi
b29sJiBkaWRSZXBhaW50KSBvdmVycmlkZTsKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgaW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggZjA0
MWFmY2UzNTRmN2U4OTU0YWE3Yjg1MjM4OWFlNzc0MWZkYTgyNS4uYmYyNjMwNzI2MDczNWQzZWU0
M2NmOTQzY2FlNmNkY2FhZjExNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKQEAgLTE1NSw5ICsxNTUsOSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZU9m
QW5vbnltb3VzQmxvY2tDb250aW51YXRpb25zKGNvbnN0IFJlbmRlckJsb2NrJiBibG9jaywgYwog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQordm9pZCBSZW5kZXJJbmxp
bmU6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUmIG5ld1N0eWxlLCBib29sJiBkaWRSZXBhaW50KQogewotICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOworICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUsIGRpZFJlcGFpbnQpOwogICAg
IC8vIFJlbmRlcklubGluZXMgZm9yd2FyZCB0aGVpciBhYnNvbHV0ZSBwb3NpdGlvbmVkIGRlc2Nl
bmRhbnRzIHRvIHRoZWlyIChub24tYW5vbnltb3VzKSBjb250YWluaW5nIGJsb2NrLgogICAgIC8v
IENoZWNrIGlmIHRoaXMgbm9uLWFub255bW91cyBjb250YWluaW5nIGJsb2NrIGNhbiBob2xkIHRo
ZSBhYnNvbHV0ZSBwb3NpdGlvbmVkIGVsZW1lbnRzIHdoZW4gdGhlIGlubGluZSBpcyBubyBsb25n
ZXIgcG9zaXRpb25lZC4KICAgICBpZiAoY2FuQ29udGFpbkFic29sdXRlbHlQb3NpdGlvbmVkT2Jq
ZWN0cygpICYmIG5ld1N0eWxlLnBvc2l0aW9uKCkgPT0gUG9zaXRpb25UeXBlOjpTdGF0aWMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCA1NDk3MzM4NjAwOThm
MTAxNDgxMjIyOWExNDMzNTc5NmI4ZWFmYWNhLi5lNTBlZTlkMTkzMTc0YmZlMjk0MzYwZTllNWZh
YzMxMTM0MmZlMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBA
IC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIHdpbGxCZURlc3Ry
b3llZCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5
bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxl
LCBib29sJiBkaWRSZXBhaW50KSBvdmVycmlkZTsKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA4YWQ1MDNlNDY1ZGE4ZDIyNzNhM2EzNjk5ZTQwN2Vj
ODFjZTM4ZDRjLi42YzA0YzlkYmRlZjhiN2M2MGIyMmYyN2EyOWRkMDI3MTc5NzM2ZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTg5Myw3ICs4OTMsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSZW5kZXJHZW9tZXRyeU1h
cCogZ2VvbWV0cnlNYXAsIE9wdGlvblNldAogICAgICAgICBSZXBhaW50TGF5b3V0UmVjdHMgb2xk
UmVjdHMgPSBoYWRSZXBhaW50TGF5b3V0UmVjdHMgPyByZW5kZXJlcigpLnJlcGFpbnRMYXlvdXRS
ZWN0cygpIDogUmVwYWludExheW91dFJlY3RzKCk7CiAgICAgICAgIGNvbXB1dGVSZXBhaW50UmVj
dHMocmVwYWludENvbnRhaW5lciwgZ2VvbWV0cnlNYXApOwogICAgICAgICAKLSAgICAgICAgYXV0
byBoYXNSZXBhaW50TGF5b3V0UmVjdHMgPSByZW5kZXJlcigpLmhhc1JlcGFpbnRMYXlvdXRSZWN0
cygpOworICAgICAgICBhdXRvIGhhc1JlcGFpbnRMYXlvdXRSZWN0cyA9IHJlbmRlcmVyKCkuaGFz
UmVwYWludExheW91dFJlY3RzKCk7IC8vIGxheW91dCBtYXkgaGF2ZSBkb25lIHRoaXMgcmVwYWlu
dC4KICAgICAgICAgUmVwYWludExheW91dFJlY3RzIG5ld1JlY3RzID0gaGFzUmVwYWludExheW91
dFJlY3RzID8gcmVuZGVyZXIoKS5yZXBhaW50TGF5b3V0UmVjdHMoKSA6IFJlcGFpbnRMYXlvdXRS
ZWN0cygpOwogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIEFTU0VSVCB0aGF0IHZhbHVlIGNhbGN1
bGF0ZWQgZm9yIG1fb3V0bGluZUJveCB1c2luZyB0aGUgY2FjaGVkIG9mZnNldCBpcyB0aGUgc2Ft
ZQogICAgICAgICAvLyBhcyB0aGUgdmFsdWUgbm90IHVzaW5nIHRoZSBjYWNoZWQgb2Zmc2V0LCBi
dXQgd2UgY2FuJ3QgZHVlIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNzA0OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwCmluZGV4IDA2ZmNjZGU4Nzc5MTZmOTYyMDM3NjViYThlNjljZjhkYzIwYjc2
ZGEuLmZiYjYzZTljNTRlNjVjODhhNWJjMzQwMzA1MjZjNjgzNmI4NTlhYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAg
LTEwNCw3ICsxMDQsNyBAQCBib29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6Omhhc1NlbGZQYWlu
dGluZ0xheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllciAmJiBtX2xheWVyLT5pc1NlbGZQ
YWludGluZ0xheWVyKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVX
aWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUpCit2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBib29sJiBkaWRSZXBh
aW50KQogewogICAgIHNfd2FzRmxvYXRpbmcgPSBpc0Zsb2F0aW5nKCk7CiAgICAgc19oYWRMYXll
ciA9IGhhc0xheWVyKCk7CkBAIC0xMjMsOCArMTIzLDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTCiAgICAgICAgICAgICAgICAgbGF5ZXIoKS0+cmVwYWludEluY2x1ZGluZ0Rlc2NlbmRhbnRz
KCk7CiAgICAgICAgICAgICAgICAgaWYgKCEob2xkU3R5bGUtPmNsaXAoKSA9PSBuZXdTdHlsZS5j
bGlwKCkpKQogICAgICAgICAgICAgICAgICAgICBsYXllcigpLT5jbGVhckNsaXBSZWN0c0luY2x1
ZGluZ0Rlc2NlbmRhbnRzKCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGRpZmYgPT0gU3R5bGVE
aWZmZXJlbmNlOjpSZXBhaW50IHx8IG5ld1N0eWxlLm91dGxpbmVTaXplKCkgPCBvbGRTdHlsZS0+
b3V0bGluZVNpemUoKSkKLSAgICAgICAgICAgICAgICByZXBhaW50KCk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlOjpSZXBhaW50IHx8IG5ld1N0eWxlLm91
dGxpbmVTaXplKCkgPCBvbGRTdHlsZS0+b3V0bGluZVNpemUoKSkgeworICAgICAgICAgICAgICAg
IGlmICghZGlkUmVwYWludCkgeworICAgICAgICAgICAgICAgICAgICByZXBhaW50KCk7CisgICAg
ICAgICAgICAgICAgICAgIGRpZFJlcGFpbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlJlbmRlckxheWVyTW9kZWxPYmpl
Y3QgJXAgc3R5bGVXaWxsQ2hhbmdlIHdvdWxkIGhhdmUgZG9uZSByZWR1bmRhbnQgcmVwYWludCIs
IHRoaXMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRpZmYgPT0g
U3R5bGVEaWZmZXJlbmNlOjpMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2U6OlNpbXBs
aWZpZWRMYXlvdXQpIHsKQEAgLTE0MywxMiArMTQ4LDE2IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1N0eWxlLmhhc1RyYW5zZm9ybSgpIHx8IG5l
d1N0eWxlLm9wYWNpdHkoKSA8IDEgfHwgbmV3U3R5bGUuaGFzRmlsdGVyKCkgfHwgbmV3U3R5bGUu
aGFzQmFja2Ryb3BGaWx0ZXIoKSkgewogICAgICAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhh
dmUgYSBsYXllciB5ZXQsIGJ1dCB3ZSBhcmUgZ29pbmcgdG8gZ2V0IG9uZSBiZWNhdXNlIG9mIHRy
YW5zZm9ybSBvciBvcGFjaXR5LAogICAgICAgICAgICAgICAgIC8vICB0aGVuIHdlIG5lZWQgdG8g
cmVwYWludCB0aGUgb2xkIHBvc2l0aW9uIG9mIHRoZSBvYmplY3QuCi0gICAgICAgICAgICAgICAg
cmVwYWludCgpOworICAgICAgICAgICAgICAgIGlmICghZGlkUmVwYWludCkgeworICAgICAgICAg
ICAgICAgICAgICByZXBhaW50KCk7CisgICAgICAgICAgICAgICAgICAgIGRpZFJlcGFpbnQgPSB0
cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBXVEZMb2dB
bHdheXMoIlJlbmRlckxheWVyTW9kZWxPYmplY3QgJXAgc3R5bGVXaWxsQ2hhbmdlIDIgd291bGQg
aGF2ZSBkb25lIHJlZHVuZGFudCByZXBhaW50IiwgdGhpcyk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwg
bmV3U3R5bGUpOworICAgIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShkaWZmLCBuZXdT
dHlsZSwgZGlkUmVwYWludCk7CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKaW5k
ZXggZTYwNWE0OGJhNTUxNmZmODRjOTlmOWZhNjZlN2MyMzA2ODg2Y2RmYy4uNWZmYWU1ZTdhYjUz
YzBiNjMwNGJmZDU3NzFhOTdhNWYwOWU3ODAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7CiAgICAgUmVuZGVyTGF5
ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCi0gICAgdm9pZCBz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBib29sJiBkaWRSZXBhaW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxl
KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXgg
Njc2MDE3YzRjNmM3N2EwN2IyMjczOWYwZDU2NzMxNWYyNzZiZTA2NC4uNTMxZGE3Yjg1MGQ0MzFi
ZTQ4N2ZmOTg3N2E3NGYyZTE3NDZmYTA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKQEAgLTczLDYgKzczLDcgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1Nob3QuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtODQ3LDEx
ICs4NDgsNDEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnByb3BhZ2F0ZVJlcGFpbnRUb1BhcmVudFdp
dGhPdXRsaW5lQXV0b0lmTmVlZGVkKGNvbnN0IFJlbmRlckwKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAorI2RlZmluZSBUUkFDS19SRURVTkRBTlRfUkVQQUlOVFMgMAorCisjaWYgVFJB
Q0tfUkVEVU5EQU5UX1JFUEFJTlRTCitzdGF0aWMgY29uc3QgUmVuZGVyT2JqZWN0KiBsYXN0UmVw
YWludE9iamVjdDsKK3N0YXRpYyBXVEY6OlN0YWNrU2hvdCogbGFzdFJlcGFpbnRTdGFjazsKKwor
c3RhdGljIExheW91dFJlY3QmIGxhc3RSZXBhaW50UmVjdCgpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPExheW91dFJlY3Q+IHI7CisgICAgcmV0dXJuIHI7Cit9CisjZW5kaWYKKwogdm9p
ZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIHNo
b3VsZENsaXBUb0xheWVyKSBjb25zdAogewogICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCisjaWYgVFJBQ0tfUkVEVU5EQU5UX1JFUEFJTlRTCisgICAgV1RGTG9nQWx3YXlz
KCJSZW5kZXJPYmplY3QgJXAgcmVwYWludFVzaW5nQ29udGFpbmVyICUuMmYsICUuMmYsICUuMmZ4
JS4yZiIsIHRoaXMsCisgICAgICAgIHIueCgpLnRvRmxvYXQoKSwgci55KCkudG9GbG9hdCgpLCBy
LndpZHRoKCkudG9GbG9hdCgpLCByLmhlaWdodCgpLnRvRmxvYXQoKSk7CisKKyAgICBpZiAobGFz
dFJlcGFpbnRPYmplY3QgPT0gdGhpcyAmJiBsYXN0UmVwYWludFJlY3QoKSA9PSByKSB7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiRHVwbGljYXRlIHJlcGFpbnQgb24gJXAiLCB0aGlzKTsKKyAgICAg
ICAgbGFzdFJlcGFpbnRTdGFjay0+ZHVtcCgpOworICAgICAgICBXVEZMb2dBbHdheXMoIlxuIik7
CisgICAgfQorCisgICAgbGFzdFJlcGFpbnRPYmplY3QgPSB0aGlzOworICAgIGxhc3RSZXBhaW50
UmVjdCgpID0gcjsKKworICAgIGRlbGV0ZSBsYXN0UmVwYWludFN0YWNrOworICAgIGxhc3RSZXBh
aW50U3RhY2sgPSBuZXcgV1RGOjpTdGFja1Nob3QoMTUpOworI2VuZGlmCisKICAgICBpZiAoIXJl
cGFpbnRDb250YWluZXIpCiAgICAgICAgIHJlcGFpbnRDb250YWluZXIgPSAmdmlldygpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>