<?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>202697</bug_id>
          
          <creation_ts>2019-10-08 09:28:46 -0700</creation_ts>
          <short_desc>[LFC][Painting] Add very basic block and inline painting</short_desc>
          <delta_ts>2019-10-08 21:34:47 -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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</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>1577790</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-10-08 09:28:46 -0700</bug_when>
    <thetext>only border/background color with simple text. no phases and z-index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577791</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-08 09:29:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/56076562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577796</commentid>
    <comment_count>2</comment_count>
      <attachid>380435</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-10-08 09:32:07 -0700</bug_when>
    <thetext>Created attachment 380435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577798</commentid>
    <comment_count>3</comment_count>
      <attachid>380437</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-10-08 09:34:06 -0700</bug_when>
    <thetext>Created attachment 380437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577799</commentid>
    <comment_count>4</comment_count>
      <attachid>380437</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-08 09:39:18 -0700</bug_when>
    <thetext>Comment on attachment 380437
Patch

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

&gt; Source/WebCore/layout/displaytree/DisplayPainter.cpp:99
&gt; +static void paintInlineContent(GraphicsContext&amp; context, const Box&amp; absoluteDisplayBox, const RenderStyle&amp; style, const String&amp; content, const Layout::InlineFormattingState&amp; formattingState)

Maybe things like GraphicsContext should become members of the Painter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577802</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-10-08 09:40:38 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; Comment on attachment 380437 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380437&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/displaytree/DisplayPainter.cpp:99
&gt; &gt; +static void paintInlineContent(GraphicsContext&amp; context, const Box&amp; absoluteDisplayBox, const RenderStyle&amp; style, const String&amp; content, const Layout::InlineFormattingState&amp; formattingState)
&gt; 
&gt; Maybe things like GraphicsContext should become members of the Painter?
Yeah, we need to figure out the proper setup here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577817</commentid>
    <comment_count>6</comment_count>
      <attachid>380437</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-08 10:26:37 -0700</bug_when>
    <thetext>Comment on attachment 380437
Patch

Clearing flags on attachment: 380437

Committed r250837: &lt;https://trac.webkit.org/changeset/250837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577818</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-08 10:26:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577824</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-10-08 10:43:55 -0700</bug_when>
    <thetext>Since historically, painting is hard to test, do you think there is anything we can do, as you start adding painting support, to make this more testable? 

For instance, and this is just a for instance, one idea would be to virtualize the GraphicsContext calls, and have a concrete implementation that just logs the calls. Then, for testing, we could do dump calls and test against an expected set of calls (a-la-a dump render tree).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578078</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-10-08 21:34:47 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #8)
&gt; Since historically, painting is hard to test, do you think there is anything
&gt; we can do, as you start adding painting support, to make this more testable? 
&gt; 
&gt; For instance, and this is just a for instance, one idea would be to
&gt; virtualize the GraphicsContext calls, and have a concrete implementation
&gt; that just logs the calls. Then, for testing, we could do dump calls and test
&gt; against an expected set of calls (a-la-a dump render tree).

This is a very good idea. We actually might be able to use the display list recording for this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380435</attachid>
            <date>2019-10-08 09:32:07 -0700</date>
            <delta_ts>2019-10-08 09:34:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202697-20191008093207.patch</filename>
            <type>text/plain</type>
            <size>10813</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM1NjI4ZTM3MDc4ZWI2
NDg2MTQyZDRhZDc2ZjA5OWM0ZDliNDJkMC4uMjI0YjgwYjMxNzJiOWY4OTQ0NmI2YmQ0NWE0MDk2
Yzc2MzBlZTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEwLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bUGFpbnRpbmddIEFk
ZCBhIHZlcnkgYmFzaWMgYmxvY2sgYW5kIGlubGluZSBwYWludGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNjk3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjA3NjU2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgdmVyeSBiYXNpYyBib3JkZXIvYmFja2dyb3VuZCBwYWludGlu
ZyB3aXRoIHNpbXBsZSB0ZXh0LiBObyBwaGFzZXMvei1pbmRleC9sYXllcnMgb2YgYW55IGtpbmQu
CisKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oOiBUaGlzIHNlZW1z
IHRvIGJlIGdldHRpbmcgb3V0IG9mIGhhbmQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3g6Om1vdmVCeSk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50QmxvY2tMZXZlbEJveERlY29y
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6cGFpbnRJbmxpbmVDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlBhaW50ZXI6OnBhaW50KToKKyAgICAgICAgKiBs
YXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmlubGluZVJ1bnMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmxpbmVCb3hlcyBjb25zdCk6
CisKIDIwMTktMTAtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NsaXBib2FyZCBBUEldIEludHJvZHVjZSBiaW5kaW5ncyBmb3IgdGhlIGFzeW5j
IENsaXBib2FyZCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheUJveC5oCmluZGV4IGJiNzk1MjdmNWZlNDhhZjU3ZWNjNDk5ZTk5MzExNmRiN2Q1NDcxMjQu
LjJjMzFjYTc2NjljNjExYWU4ZDA1NmUwYWY0ZDI4ZjY1Y2UzMzFkNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAtMzYsMzQgKzM2LDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU3R5bGU7CiAKLW5hbWVzcGFj
ZSBMYXlvdXQgewotY2xhc3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDsKLWNsYXNzIEZsb2F0QXZv
aWRlcjsKLWNsYXNzIEZsb2F0Qm94OwotY2xhc3MgRm9ybWF0dGluZ0NvbnRleHQ7Ci1jbGFzcyBG
bG9hdGluZ0NvbnRleHQ7Ci1jbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKLWNsYXNzIExh
eW91dENvbnRleHQ7Ci1jbGFzcyBMYXlvdXRTdGF0ZTsKLWNsYXNzIFRhYmxlRm9ybWF0dGluZ0Nv
bnRleHQ7Ci19Ci0KIG5hbWVzcGFjZSBEaXNwbGF5IHsKIAogY2xhc3MgQm94IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEJveCk7CiBwdWJsaWM6Ci0gICAgZnJpZW5kIGNsYXNzIExheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDsKLSAgICBmcmllbmQgY2xhc3MgTGF5b3V0OjpGbG9h
dEF2b2lkZXI7Ci0gICAgZnJpZW5kIGNsYXNzIExheW91dDo6RmxvYXRCb3g7Ci0gICAgZnJpZW5k
IGNsYXNzIExheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ7Ci0gICAgZnJpZW5kIGNsYXNzIExheW91
dDo6RmxvYXRpbmdDb250ZXh0OwotICAgIGZyaWVuZCBjbGFzcyBMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdDb250ZXh0OwotICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJ5IGFuZCBzaG91bGQgYmUgcmVt
b3ZlZCB3aGVuIExheW91dENvbnRleHQ6OnJ1biBpcyBubyBsb25nZXIgbmVlZGVkLgotICAgIGZy
aWVuZCBjbGFzcyBMYXlvdXQ6OkxheW91dENvbnRleHQ7Ci0gICAgZnJpZW5kIGNsYXNzIExheW91
dDo6TGF5b3V0U3RhdGU7Ci0gICAgZnJpZW5kIGNsYXNzIExheW91dDo6VGFibGVGb3JtYXR0aW5n
Q29udGV4dDsKLQogICAgIEJveChjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIEJveChjb25zdCBC
b3gmKTsKICAgICB+Qm94KCk7CkBAIC0xNDIsMTggKzExOSwxMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRIYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSB7IG1faGFzRXN0aW1hdGVkTWFyZ2luQmVm
b3JlID0gdHJ1ZTsgfQogI2VuZGlmCiAKLXByaXZhdGU6Ci0gICAgc3RydWN0IFN0eWxlIHsKLSAg
ICAgICAgU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKLQotICAgICAgICBCb3hTaXppbmcgYm94
U2l6aW5nIHsgQm94U2l6aW5nOjpDb250ZW50Qm94IH07Ci0gICAgfTsKLQogICAgIHZvaWQgc2V0
VG9wTGVmdChjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZvaWQgc2V0VG9wKExheW91dFVuaXQp
OwogICAgIHZvaWQgc2V0TGVmdChMYXlvdXRVbml0KTsKICAgICB2b2lkIG1vdmVIb3Jpem9udGFs
bHkoTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV90b3BMZWZ0Lm1vdmUob2Zmc2V0LCAwX2x1KTsgfQog
ICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV90b3BMZWZ0Lm1v
dmUoMF9sdSwgb2Zmc2V0KTsgfQorICAgIHZvaWQgbW92ZUJ5KExheW91dFBvaW50IG9mZnNldCkg
eyBtX3RvcExlZnQubW92ZUJ5KG9mZnNldCk7IH0KIAogICAgIHZvaWQgc2V0Q29udGVudEJveEhl
aWdodChMYXlvdXRVbml0KTsKICAgICB2b2lkIHNldENvbnRlbnRCb3hXaWR0aChMYXlvdXRVbml0
KTsKQEAgLTE2Niw2ICsxMzcsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEJvcmRlcihMYXlv
dXQ6OkVkZ2VzKTsKICAgICB2b2lkIHNldFBhZGRpbmcoT3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4p
OwogCitwcml2YXRlOgorICAgIHN0cnVjdCBTdHlsZSB7CisgICAgICAgIFN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJik7CisKKyAgICAgICAgQm94U2l6aW5nIGJveFNpemluZyB7IEJveFNpemluZzo6
Q29udGVudEJveCB9OworICAgIH07CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdm9pZCBp
bnZhbGlkYXRlTWFyZ2luKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlQm9yZGVyKCkgeyBtX2hhc1Zh
bGlkQm9yZGVyID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlz
cGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCmluZGV4IGIxOWQ1MWM0ZmY2OGI5NGE3NTFiY2Jh
YTc5MjVlZWViY2IzMTc0YzYuLmY5ZDU5ZGUzMjJmZmU5ZjVhNTcwODkwZmFlYTE4OGVlNmNmNGMy
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlQYWludGVyLmNwcApAQCAtMjgsMTQgKzI4LDExOCBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlCb3guaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbmxpbmVG
b3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNpbmNsdWRl
ICJMYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgor
I2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiVGV4dFJ1bi5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheSB7CiAKLXZvaWQgUGFpbnRlcjo6cGFpbnQo
Y29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYpCitzdGF0aWMgdm9p
ZCBwYWludEJsb2NrTGV2ZWxCb3hEZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgQm94JiBhYnNvbHV0ZURpc3BsYXlCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkK
IHsKKyAgICBhdXRvIGJvcmRlckJveEFic29sdXRlVG9wTGVmdCA9IGFic29sdXRlRGlzcGxheUJv
eC50b3BMZWZ0KCk7CisgICAgLy8gQmFja2dyb3VuZCBjb2xvcgorICAgIGlmIChzdHlsZS5oYXNC
YWNrZ3JvdW5kKCkpCisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoeyBib3JkZXJCb3hBYnNvbHV0
ZVRvcExlZnQsIEZsb2F0U2l6ZSB7IGFic29sdXRlRGlzcGxheUJveC5ib3JkZXJCb3hXaWR0aCgp
LCBhYnNvbHV0ZURpc3BsYXlCb3guYm9yZGVyQm94SGVpZ2h0KCkgfSB9LCBzdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IoKSk7CisKKyAgICAvLyBCb3JkZXIKKyAgICBpZiAoc3R5bGUuaGFzQm9yZGVyKCkp
IHsKKworICAgICAgICBhdXRvIGRyYXdCb3JkZXJTaWRlID0gWyZdKGF1dG8gc3RhcnQsIGF1dG8g
ZW5kLCBjb25zdCBhdXRvJiBib3JkZXJTdHlsZSkgeworICAgICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihib3JkZXJTdHlsZS5jb2xvcigpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlVGhpY2tuZXNzKGJvcmRlclN0eWxlLndpZHRoKCkpOworICAgICAgICAgICAgY29udGV4
dC5kcmF3TGluZShzdGFydCwgZW5kKTsKKyAgICAgICAgfTsKKworICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworCisgICAgICAgIGF1dG8gYm9yZGVyQm94
V2lkdGggPSBhYnNvbHV0ZURpc3BsYXlCb3guYm9yZGVyQm94V2lkdGgoKTsKKyAgICAgICAgYXV0
byBib3JkZXJCb3hIZWlnaHQgPSBhYnNvbHV0ZURpc3BsYXlCb3guYm9yZGVyQm94SGVpZ2h0KCk7
CisKKyAgICAgICAgLy8gVG9wCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gYm9yZGVyV2lk
dGggPSBzdHlsZS5ib3JkZXJUb3AoKS53aWR0aCgpOworICAgICAgICAgICAgYXV0byBzdGFydCA9
IExheW91dFBvaW50IHsgYm9yZGVyQm94QWJzb2x1dGVUb3BMZWZ0IH07CisgICAgICAgICAgICBh
dXRvIGVuZCA9IExheW91dFBvaW50IHsgc3RhcnQueCgpICsgYm9yZGVyQm94V2lkdGgsIHN0YXJ0
LnkoKSArIGJvcmRlcldpZHRoIH07CisgICAgICAgICAgICBkcmF3Qm9yZGVyU2lkZShzdGFydCwg
ZW5kLCBzdHlsZS5ib3JkZXJUb3AoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSaWdodAor
ICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGJvcmRlcldpZHRoID0gc3R5bGUuYm9yZGVyUmln
aHQoKS53aWR0aCgpOworICAgICAgICAgICAgYXV0byBzdGFydCA9IExheW91dFBvaW50IHsgYm9y
ZGVyQm94QWJzb2x1dGVUb3BMZWZ0LngoKSArIGJvcmRlckJveFdpZHRoIC0gYm9yZGVyV2lkdGgs
IGJvcmRlckJveEFic29sdXRlVG9wTGVmdC55KCkgfTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0g
TGF5b3V0UG9pbnQgeyBzdGFydC54KCkgKyBib3JkZXJXaWR0aCwgYm9yZGVyQm94QWJzb2x1dGVU
b3BMZWZ0LnkoKSArIGJvcmRlckJveEhlaWdodCB9OworICAgICAgICAgICAgZHJhd0JvcmRlclNp
ZGUoc3RhcnQsIGVuZCwgc3R5bGUuYm9yZGVyUmlnaHQoKSk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBCb3R0b20KKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBib3JkZXJXaWR0aCA9IHN0
eWxlLmJvcmRlckJvdHRvbSgpLndpZHRoKCk7CisgICAgICAgICAgICBhdXRvIHN0YXJ0ID0gTGF5
b3V0UG9pbnQgeyBib3JkZXJCb3hBYnNvbHV0ZVRvcExlZnQueCgpLCBib3JkZXJCb3hBYnNvbHV0
ZVRvcExlZnQueSgpICsgYm9yZGVyQm94SGVpZ2h0IC0gYm9yZGVyV2lkdGggfTsKKyAgICAgICAg
ICAgIGF1dG8gZW5kID0gTGF5b3V0UG9pbnQgeyBzdGFydC54KCkgKyBib3JkZXJCb3hXaWR0aCwg
c3RhcnQueSgpICsgYm9yZGVyV2lkdGggfTsKKyAgICAgICAgICAgIGRyYXdCb3JkZXJTaWRlKHN0
YXJ0LCBlbmQsIHN0eWxlLmJvcmRlckJvdHRvbSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IExlZnQKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBib3JkZXJXaWR0aCA9IHN0eWxlLmJv
cmRlckxlZnQoKS53aWR0aCgpOworICAgICAgICAgICAgYXV0byBzdGFydCA9IGJvcmRlckJveEFi
c29sdXRlVG9wTGVmdDsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gTGF5b3V0UG9pbnQgeyBzdGFy
dC54KCkgKyBib3JkZXJXaWR0aCwgYm9yZGVyQm94QWJzb2x1dGVUb3BMZWZ0LnkoKSArIGJvcmRl
ckJveEhlaWdodCB9OworICAgICAgICAgICAgZHJhd0JvcmRlclNpZGUoc3RhcnQsIGVuZCwgc3R5
bGUuYm9yZGVyTGVmdCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgcGFp
bnRJbmxpbmVDb250ZW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQm94JiBhYnNv
bHV0ZURpc3BsYXlCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBjb25zdCBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0
YXRlKQoreworICAgIC8vIEZJWE1FOiBPbmx5IHZlcnkgc2ltcGxlIHRleHQgcGFpbnRpbmcgZm9y
IG5vdy4KKyAgICBhdXRvJiBsaW5lQm94ID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpWzBd
OworICAgIGZvciAoYXV0byYgcnVuIDogZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKSkgewor
ICAgICAgICBpZiAoIXJ1bi50ZXh0Q29udGV4dCgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUuY29sb3IoKSk7CisgICAgICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKHN0eWxlLmNvbG9yKCkpOworICAgICAgICBhdXRvIGxvZ2ljYWxU
b3BMZWZ0ID0gYWJzb2x1dGVEaXNwbGF5Qm94LnRvcExlZnQoKSArIHJ1bi5sb2dpY2FsVG9wTGVm
dCgpOworICAgICAgICBhdXRvIHRleHRDb250ZXh0ID0gcnVuLnRleHRDb250ZXh0KCkudmFsdWUo
KTsKKyAgICAgICAgYXV0byBydW5Db250ZW50ID0gY29udGVudC5zdWJzdHJpbmcodGV4dENvbnRl
eHQuc3RhcnQoKSwgdGV4dENvbnRleHQubGVuZ3RoKCkpOworICAgICAgICBjb250ZXh0LmRyYXdU
ZXh0KHN0eWxlLmZvbnRDYXNjYWRlKCksIFRleHRSdW4geyBydW5Db250ZW50IH0sIHsgbG9naWNh
bFRvcExlZnQueCgpLCBsb2dpY2FsVG9wTGVmdC55KCkgKyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0
KCkgfSk7CisgICAgfQorfQorCit2b2lkIFBhaW50ZXI6OnBhaW50KGNvbnN0IExheW91dDo6TGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAg
YXV0byBhYnNvbHV0ZURpc3BsYXlCb3ggPSBbJl0oY29uc3QgYXV0byYgbGF5b3V0Qm94KSB7Cisg
ICAgICAgIGF1dG8gYWJzb2x1dGVCb3ggPSBCb3ggeyBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGxheW91dEJveCkgfTsKKyAgICAgICAgZm9yIChhdXRvKiBjb250YWluZXIgPSBs
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5lciAhPSAmbGF5b3V0Qm94LmluaXRp
YWxDb250YWluaW5nQmxvY2soKTsgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxv
Y2soKSkKKyAgICAgICAgICAgIGFic29sdXRlQm94Lm1vdmVCeShsYXlvdXRTdGF0ZS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIpLnRvcExlZnQoKSk7CisgICAgICAgIHJldHVybiBh
YnNvbHV0ZUJveDsKKyAgICB9OworCisgICAgYXV0byYgbGF5b3V0Um9vdCA9IGxheW91dFN0YXRl
LnJvb3QoKTsKKyAgICBhdXRvJiByb290RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3gobGF5b3V0Um9vdCk7CisgICAgY29udGV4dC5maWxsUmVjdCh7IEZsb2F0
UG9pbnQgeyB9LCBGbG9hdFNpemUgeyByb290RGlzcGxheUJveC5ib3JkZXJCb3hXaWR0aCgpLCBy
b290RGlzcGxheUJveC5ib3JkZXJCb3hIZWlnaHQoKSB9IH0sIENvbG9yOjp3aGl0ZSk7CisKKyAg
ICBmb3IgKGF1dG8mIGxheW91dEJveCA6IExheW91dDo6ZGVzY2VuZGFudHNPZlR5cGU8TGF5b3V0
OjpCb3g+KGxheW91dFJvb3QpKSB7CisgICAgICAgIGlmIChsYXlvdXRCb3guaXNCbG9ja0xldmVs
Qm94KCkpIHsKKyAgICAgICAgICAgIHBhaW50QmxvY2tMZXZlbEJveERlY29yYXRpb24oY29udGV4
dCwgYWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dEJveCksIGxheW91dEJveC5zdHlsZSgpKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIG9u
bHkgY292ZXJzIHRoZSBtb3N0IHNpbXBsZSBjYXNlcyBsaWtlIDxkaXY+aW5saW5lIGNvbnRlbnQ8
L2Rpdj4KKyAgICAgICAgLy8gRmluZCBhIHdheSB0byBjb25lY3QgaW5saW5lIHJ1bnMgYW5kIHRo
ZSBpbmxpbmUgY29udGVudC4KKyAgICAgICAgaWYgKGxheW91dEJveC5pc0lubGluZUxldmVsQm94
KCkgJiYgbGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChsYXlv
dXRCb3guaGFzVGV4dENvbnRlbnQoKSk7CisgICAgICAgICAgICBhdXRvJiBjb250YWluaW5nQmxv
Y2sgPSAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICAgICAgYXV0byYgaW5s
aW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGNvbnRhaW5pbmdCbG9j
aykpOworICAgICAgICAgICAgcGFpbnRJbmxpbmVDb250ZW50KGNvbnRleHQsIGFic29sdXRlRGlz
cGxheUJveChjb250YWluaW5nQmxvY2spLCBsYXlvdXRCb3guc3R5bGUoKSwgbGF5b3V0Qm94LnRl
eHRDb250ZW50KCksIGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CisKKyAgICAgICAgfQorICAgIH0K
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0
LmgKaW5kZXggYmRiZjNiM2M2YzBlMTJhZjMzM2M0YzczMjcxZTExNDkzN2JkOTU5NC4uYjRiNzBj
MTc0MjI3ZjFlOWVlMzY0NGE1YzM5ZDVjYmY0NWMxNDBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBGbG9hdEF2b2lkZXI7
CitjbGFzcyBGbG9hdEJveDsKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0OwogY2xhc3MgQm94Owog
Y2xhc3MgTGF5b3V0U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IGE0YjA0
NmQzNGFlOWE0MmQyNTc5Y2RkNzc5NmRlM2Y4NTUxM2ZjZWQuLjM1MzQ1ODg0YjU0NmM2MWQ0NmE0
MmRiNzBmNTgxOTViZjAzYzgxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCkBAIC01
Miw5ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1z
KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtczsgfQogICAgIHZvaWQgYWRkSW5saW5lSXRl
bShzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lSXRlbT4mJiBpbmxpbmVJdGVtKSB7IG1faW5saW5lSXRl
bXMuYXBwZW5kKFdURk1vdmUoaW5saW5lSXRlbSkpOyB9CiAKKyAgICBjb25zdCBJbmxpbmVSdW5z
JiBpbmxpbmVSdW5zKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVSdW5zOyB9CiAgICAgSW5saW5l
UnVucyYgaW5saW5lUnVucygpIHsgcmV0dXJuIG1faW5saW5lUnVuczsgfQogICAgIHZvaWQgYWRk
SW5saW5lUnVuKGNvbnN0IERpc3BsYXk6OlJ1biYgaW5saW5lUnVuKSB7IG1faW5saW5lUnVucy5h
cHBlbmQoaW5saW5lUnVuKTsgfQogCisgICAgY29uc3QgTGluZUJveGVzJiBsaW5lQm94ZXMoKSBj
b25zdCB7IHJldHVybiBtX2xpbmVCb3hlczsgfQogICAgIExpbmVCb3hlcyYgbGluZUJveGVzKCkg
eyByZXR1cm4gbV9saW5lQm94ZXM7IH0KICAgICB2b2lkIGFkZExpbmVCb3goTGluZUJveCBsaW5l
Qm94KSB7IG1fbGluZUJveGVzLmFwcGVuZChsaW5lQm94KTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380437</attachid>
            <date>2019-10-08 09:34:06 -0700</date>
            <delta_ts>2019-10-08 10:26:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202697-20191008093405.patch</filename>
            <type>text/plain</type>
            <size>10811</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM1NjI4ZTM3MDc4ZWI2
NDg2MTQyZDRhZDc2ZjA5OWM0ZDliNDJkMC4uOWMyOWJiNzM5NzdmZGJiZjQxOTQ2Zjc1ZTA5OWNl
NWMyN2ZkMWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEwLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bUGFpbnRpbmddIEFk
ZCB2ZXJ5IGJhc2ljIGJsb2NrIGFuZCBpbmxpbmUgcGFpbnRpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjY5NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTYwNzY1NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyBhIHZlcnkgYmFzaWMgYm9yZGVyL2JhY2tncm91bmQgcGFpbnRpbmcg
d2l0aCBzaW1wbGUgdGV4dC4gTm8gcGhhc2VzL3otaW5kZXgvbGF5ZXJzIG9mIGFueSBraW5kLgor
CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaDogVGhpcyBzZWVtcyB0
byBiZSBnZXR0aW5nIG91dCBvZiBoYW5kLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
Ojptb3ZlQnkpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpwYWludEJsb2NrTGV2ZWxCb3hEZWNvcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50SW5saW5lQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpQYWludGVyOjpwYWludCk6CisgICAgICAgICogbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjppbmxpbmVSdW5zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpsaW5lQm94ZXMgY29uc3QpOgor
CiAyMDE5LTEwLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtDbGlwYm9hcmQgQVBJXSBJbnRyb2R1Y2UgYmluZGluZ3MgZm9yIHRoZSBhc3luYyBD
bGlwYm9hcmQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlCb3guaAppbmRleCBiYjc5NTI3ZjVmZTQ4YWY1N2VjYzQ5OWU5OTMxMTZkYjdkNTQ3MTI0Li4y
YzMxY2E3NjY5YzYxMWFlOGQwNTZlMGFmNGQyOGY2NWNlMzMxZDc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKQEAgLTM2LDM0ICszNiwxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclN0eWxlOwogCi1uYW1lc3BhY2Ug
TGF5b3V0IHsKLWNsYXNzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ7Ci1jbGFzcyBGbG9hdEF2b2lk
ZXI7Ci1jbGFzcyBGbG9hdEJveDsKLWNsYXNzIEZvcm1hdHRpbmdDb250ZXh0OwotY2xhc3MgRmxv
YXRpbmdDb250ZXh0OwotY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7Ci1jbGFzcyBMYXlv
dXRDb250ZXh0OwotY2xhc3MgTGF5b3V0U3RhdGU7Ci1jbGFzcyBUYWJsZUZvcm1hdHRpbmdDb250
ZXh0OwotfQotCiBuYW1lc3BhY2UgRGlzcGxheSB7CiAKIGNsYXNzIEJveCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChCb3gpOwogcHVibGljOgotICAgIGZyaWVuZCBjbGFzcyBMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ7Ci0gICAgZnJpZW5kIGNsYXNzIExheW91dDo6RmxvYXRB
dm9pZGVyOwotICAgIGZyaWVuZCBjbGFzcyBMYXlvdXQ6OkZsb2F0Qm94OwotICAgIGZyaWVuZCBj
bGFzcyBMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OwotICAgIGZyaWVuZCBjbGFzcyBMYXlvdXQ6
OkZsb2F0aW5nQ29udGV4dDsKLSAgICBmcmllbmQgY2xhc3MgTGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDsKLSAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeSBhbmQgc2hvdWxkIGJlIHJlbW92
ZWQgd2hlbiBMYXlvdXRDb250ZXh0OjpydW4gaXMgbm8gbG9uZ2VyIG5lZWRlZC4KLSAgICBmcmll
bmQgY2xhc3MgTGF5b3V0OjpMYXlvdXRDb250ZXh0OwotICAgIGZyaWVuZCBjbGFzcyBMYXlvdXQ6
OkxheW91dFN0YXRlOwotICAgIGZyaWVuZCBjbGFzcyBMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0Nv
bnRleHQ7Ci0KICAgICBCb3goY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICBCb3goY29uc3QgQm94
Jik7CiAgICAgfkJveCgpOwpAQCAtMTQyLDE4ICsxMTksMTIgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0SGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkgeyBtX2hhc0VzdGltYXRlZE1hcmdpbkJlZm9y
ZSA9IHRydWU7IH0KICNlbmRpZgogCi1wcml2YXRlOgotICAgIHN0cnVjdCBTdHlsZSB7Ci0gICAg
ICAgIFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7Ci0KLSAgICAgICAgQm94U2l6aW5nIGJveFNp
emluZyB7IEJveFNpemluZzo6Q29udGVudEJveCB9OwotICAgIH07Ci0KICAgICB2b2lkIHNldFRv
cExlZnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2b2lkIHNldFRvcChMYXlvdXRVbml0KTsK
ICAgICB2b2lkIHNldExlZnQoTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5
KExheW91dFVuaXQgb2Zmc2V0KSB7IG1fdG9wTGVmdC5tb3ZlKG9mZnNldCwgMF9sdSk7IH0KICAg
ICB2b2lkIG1vdmVWZXJ0aWNhbGx5KExheW91dFVuaXQgb2Zmc2V0KSB7IG1fdG9wTGVmdC5tb3Zl
KDBfbHUsIG9mZnNldCk7IH0KKyAgICB2b2lkIG1vdmVCeShMYXlvdXRQb2ludCBvZmZzZXQpIHsg
bV90b3BMZWZ0Lm1vdmVCeShvZmZzZXQpOyB9CiAKICAgICB2b2lkIHNldENvbnRlbnRCb3hIZWln
aHQoTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBzZXRDb250ZW50Qm94V2lkdGgoTGF5b3V0VW5pdCk7
CkBAIC0xNjYsNiArMTM3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRCb3JkZXIoTGF5b3V0
OjpFZGdlcyk7CiAgICAgdm9pZCBzZXRQYWRkaW5nKE9wdGlvbmFsPExheW91dDo6RWRnZXM+KTsK
IAorcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3R5bGUgeworICAgICAgICBTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYpOworCisgICAgICAgIEJveFNpemluZyBib3hTaXppbmcgeyBCb3hTaXppbmc6OkNv
bnRlbnRCb3ggfTsKKyAgICB9OworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZvaWQgaW52
YWxpZGF0ZU1hcmdpbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZUJvcmRlcigpIHsgbV9oYXNWYWxp
ZEJvcmRlciA9IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlz
cGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAppbmRleCBiMTlkNTFjNGZmNjhiOTRhNzUxYmNiYWE3
OTI1ZWVlYmNiMzE3NGM2Li5mOWQ1OWRlMzIyZmZlOWY1YTU3MDg5MGZhZWExODhlZTZjZjRjMmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBh
aW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UGFpbnRlci5jcHAKQEAgLTI4LDE0ICsyOCwxMTggQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9S
TUFUVElOR19DT05URVhUKQogCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJEaXNwbGF5
Qm94LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW5saW5lRm9y
bWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAi
TGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKKyNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlRleHRSdW4uaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXkgewogCi12b2lkIFBhaW50ZXI6OnBhaW50KGNv
bnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKQorc3RhdGljIHZvaWQg
cGFpbnRCbG9ja0xldmVsQm94RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEJveCYgYWJzb2x1dGVEaXNwbGF5Qm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7
CisgICAgYXV0byBib3JkZXJCb3hBYnNvbHV0ZVRvcExlZnQgPSBhYnNvbHV0ZURpc3BsYXlCb3gu
dG9wTGVmdCgpOworICAgIC8vIEJhY2tncm91bmQgY29sb3IKKyAgICBpZiAoc3R5bGUuaGFzQmFj
a2dyb3VuZCgpKQorICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHsgYm9yZGVyQm94QWJzb2x1dGVU
b3BMZWZ0LCBGbG9hdFNpemUgeyBhYnNvbHV0ZURpc3BsYXlCb3guYm9yZGVyQm94V2lkdGgoKSwg
YWJzb2x1dGVEaXNwbGF5Qm94LmJvcmRlckJveEhlaWdodCgpIH0gfSwgc3R5bGUuYmFja2dyb3Vu
ZENvbG9yKCkpOworCisgICAgLy8gQm9yZGVyCisgICAgaWYgKHN0eWxlLmhhc0JvcmRlcigpKSB7
CisKKyAgICAgICAgYXV0byBkcmF3Qm9yZGVyU2lkZSA9IFsmXShhdXRvIHN0YXJ0LCBhdXRvIGVu
ZCwgY29uc3QgYXV0byYgYm9yZGVyU3R5bGUpIHsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoYm9yZGVyU3R5bGUuY29sb3IoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0
cm9rZVRoaWNrbmVzcyhib3JkZXJTdHlsZS53aWR0aCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0xpbmUoc3RhcnQsIGVuZCk7CisgICAgICAgIH07CisKKyAgICAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKworICAgICAgICBhdXRvIGJvcmRlckJveFdp
ZHRoID0gYWJzb2x1dGVEaXNwbGF5Qm94LmJvcmRlckJveFdpZHRoKCk7CisgICAgICAgIGF1dG8g
Ym9yZGVyQm94SGVpZ2h0ID0gYWJzb2x1dGVEaXNwbGF5Qm94LmJvcmRlckJveEhlaWdodCgpOwor
CisgICAgICAgIC8vIFRvcAorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGJvcmRlcldpZHRo
ID0gc3R5bGUuYm9yZGVyVG9wKCkud2lkdGgoKTsKKyAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBM
YXlvdXRQb2ludCB7IGJvcmRlckJveEFic29sdXRlVG9wTGVmdCB9OworICAgICAgICAgICAgYXV0
byBlbmQgPSBMYXlvdXRQb2ludCB7IHN0YXJ0LngoKSArIGJvcmRlckJveFdpZHRoLCBzdGFydC55
KCkgKyBib3JkZXJXaWR0aCB9OworICAgICAgICAgICAgZHJhd0JvcmRlclNpZGUoc3RhcnQsIGVu
ZCwgc3R5bGUuYm9yZGVyVG9wKCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmlnaHQKKyAg
ICAgICAgeworICAgICAgICAgICAgYXV0byBib3JkZXJXaWR0aCA9IHN0eWxlLmJvcmRlclJpZ2h0
KCkud2lkdGgoKTsKKyAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBMYXlvdXRQb2ludCB7IGJvcmRl
ckJveEFic29sdXRlVG9wTGVmdC54KCkgKyBib3JkZXJCb3hXaWR0aCAtIGJvcmRlcldpZHRoLCBi
b3JkZXJCb3hBYnNvbHV0ZVRvcExlZnQueSgpIH07CisgICAgICAgICAgICBhdXRvIGVuZCA9IExh
eW91dFBvaW50IHsgc3RhcnQueCgpICsgYm9yZGVyV2lkdGgsIGJvcmRlckJveEFic29sdXRlVG9w
TGVmdC55KCkgKyBib3JkZXJCb3hIZWlnaHQgfTsKKyAgICAgICAgICAgIGRyYXdCb3JkZXJTaWRl
KHN0YXJ0LCBlbmQsIHN0eWxlLmJvcmRlclJpZ2h0KCkpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQm90dG9tCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gYm9yZGVyV2lkdGggPSBzdHls
ZS5ib3JkZXJCb3R0b20oKS53aWR0aCgpOworICAgICAgICAgICAgYXV0byBzdGFydCA9IExheW91
dFBvaW50IHsgYm9yZGVyQm94QWJzb2x1dGVUb3BMZWZ0LngoKSwgYm9yZGVyQm94QWJzb2x1dGVU
b3BMZWZ0LnkoKSArIGJvcmRlckJveEhlaWdodCAtIGJvcmRlcldpZHRoIH07CisgICAgICAgICAg
ICBhdXRvIGVuZCA9IExheW91dFBvaW50IHsgc3RhcnQueCgpICsgYm9yZGVyQm94V2lkdGgsIHN0
YXJ0LnkoKSArIGJvcmRlcldpZHRoIH07CisgICAgICAgICAgICBkcmF3Qm9yZGVyU2lkZShzdGFy
dCwgZW5kLCBzdHlsZS5ib3JkZXJCb3R0b20oKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBM
ZWZ0CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gYm9yZGVyV2lkdGggPSBzdHlsZS5ib3Jk
ZXJMZWZ0KCkud2lkdGgoKTsKKyAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBib3JkZXJCb3hBYnNv
bHV0ZVRvcExlZnQ7CisgICAgICAgICAgICBhdXRvIGVuZCA9IExheW91dFBvaW50IHsgc3RhcnQu
eCgpICsgYm9yZGVyV2lkdGgsIGJvcmRlckJveEFic29sdXRlVG9wTGVmdC55KCkgKyBib3JkZXJC
b3hIZWlnaHQgfTsKKyAgICAgICAgICAgIGRyYXdCb3JkZXJTaWRlKHN0YXJ0LCBlbmQsIHN0eWxl
LmJvcmRlckxlZnQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHBhaW50
SW5saW5lQ29udGVudChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEJveCYgYWJzb2x1
dGVEaXNwbGF5Qm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFN0cmluZyYgY29u
dGVudCwgY29uc3QgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0
ZSkKK3sKKyAgICAvLyBGSVhNRTogT25seSB2ZXJ5IHNpbXBsZSB0ZXh0IHBhaW50aW5nIGZvciBu
b3cuCisgICAgYXV0byYgbGluZUJveCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKVswXTsK
KyAgICBmb3IgKGF1dG8mIHJ1biA6IGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkpIHsKKyAg
ICAgICAgaWYgKCFydW4udGV4dENvbnRleHQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHN0eWxlLmNvbG9yKCkpOworICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihzdHlsZS5jb2xvcigpKTsKKyAgICAgICAgYXV0byBsb2dpY2FsVG9w
TGVmdCA9IGFic29sdXRlRGlzcGxheUJveC50b3BMZWZ0KCkgKyBydW4ubG9naWNhbFRvcExlZnQo
KTsKKyAgICAgICAgYXV0byB0ZXh0Q29udGV4dCA9IHJ1bi50ZXh0Q29udGV4dCgpLnZhbHVlKCk7
CisgICAgICAgIGF1dG8gcnVuQ29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKHRleHRDb250ZXh0
LnN0YXJ0KCksIHRleHRDb250ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4
dChzdHlsZS5mb250Q2FzY2FkZSgpLCBUZXh0UnVuIHsgcnVuQ29udGVudCB9LCB7IGxvZ2ljYWxU
b3BMZWZ0LngoKSwgbG9naWNhbFRvcExlZnQueSgpICsgbGluZUJveC5iYXNlbGluZU9mZnNldCgp
IH0pOworICAgIH0KK30KKwordm9pZCBQYWludGVyOjpwYWludChjb25zdCBMYXlvdXQ6OkxheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIGF1
dG8gYWJzb2x1dGVEaXNwbGF5Qm94ID0gWyZdKGNvbnN0IGF1dG8mIGxheW91dEJveCkgeworICAg
ICAgICBhdXRvIGFic29sdXRlQm94ID0gQm94IHsgbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveChsYXlvdXRCb3gpIH07CisgICAgICAgIGZvciAoYXV0byogY29udGFpbmVyID0gbGF5
b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWluZXIgIT0gJmxheW91dEJveC5pbml0aWFs
Q29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2Nr
KCkpCisgICAgICAgICAgICBhYnNvbHV0ZUJveC5tb3ZlQnkobGF5b3V0U3RhdGUuZGlzcGxheUJv
eEZvckxheW91dEJveCgqY29udGFpbmVyKS50b3BMZWZ0KCkpOworICAgICAgICByZXR1cm4gYWJz
b2x1dGVCb3g7CisgICAgfTsKKworICAgIGF1dG8mIGxheW91dFJvb3QgPSBsYXlvdXRTdGF0ZS5y
b290KCk7CisgICAgYXV0byYgcm9vdERpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGxheW91dFJvb3QpOworICAgIGNvbnRleHQuZmlsbFJlY3QoeyBGbG9hdFBv
aW50IHsgfSwgRmxvYXRTaXplIHsgcm9vdERpc3BsYXlCb3guYm9yZGVyQm94V2lkdGgoKSwgcm9v
dERpc3BsYXlCb3guYm9yZGVyQm94SGVpZ2h0KCkgfSB9LCBDb2xvcjo6d2hpdGUpOworCisgICAg
Zm9yIChhdXRvJiBsYXlvdXRCb3ggOiBMYXlvdXQ6OmRlc2NlbmRhbnRzT2ZUeXBlPExheW91dDo6
Qm94PihsYXlvdXRSb290KSkgeworICAgICAgICBpZiAobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJv
eCgpKSB7CisgICAgICAgICAgICBwYWludEJsb2NrTGV2ZWxCb3hEZWNvcmF0aW9uKGNvbnRleHQs
IGFic29sdXRlRGlzcGxheUJveChsYXlvdXRCb3gpLCBsYXlvdXRCb3guc3R5bGUoKSk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogVGhpcyBvbmx5
IGNvdmVycyB0aGUgbW9zdCBzaW1wbGUgY2FzZXMgbGlrZSA8ZGl2PmlubGluZSBjb250ZW50PC9k
aXY+CisgICAgICAgIC8vIEZpbmQgYSB3YXkgdG8gY29uZWN0IGlubGluZSBydW5zIGFuZCB0aGUg
aW5saW5lIGNvbnRlbnQuCisgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgp
ICYmIGxheW91dEJveC5pc0Fub255bW91cygpKSB7CisgICAgICAgICAgICBBU1NFUlQobGF5b3V0
Qm94Lmhhc1RleHRDb250ZW50KCkpOworICAgICAgICAgICAgYXV0byYgY29udGFpbmluZ0Jsb2Nr
ID0gKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgICAgIGF1dG8mIGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PExheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRl
PihsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb250YWluaW5nQmxvY2sp
KTsKKyAgICAgICAgICAgIHBhaW50SW5saW5lQ29udGVudChjb250ZXh0LCBhYnNvbHV0ZURpc3Bs
YXlCb3goY29udGFpbmluZ0Jsb2NrKSwgbGF5b3V0Qm94LnN0eWxlKCksIGxheW91dEJveC50ZXh0
Q29udGVudCgpLCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOworCisgICAgICAgIH0KKyAgICB9CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5o
CmluZGV4IGJkYmYzYjNjNmMwZTEyYWYzMzNjNGM3MzI3MWUxMTQ5MzdiZDk1OTQuLmI0YjcwYzE3
NDIyN2YxZTllZTM2NDRhNWMzOWQ1Y2JmNDVjMTQwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgRmxvYXRBdm9pZGVyOwor
Y2xhc3MgRmxvYXRCb3g7CiBjbGFzcyBGb3JtYXR0aW5nQ29udGV4dDsKIGNsYXNzIEJveDsKIGNs
YXNzIExheW91dFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBhNGIwNDZk
MzRhZTlhNDJkMjU3OWNkZDc3OTZkZTNmODU1MTNmY2VkLi4zNTM0NTg4NGI1NDZjNjFkNDZhNDJk
YjcwZjU4MTk1YmYwM2M4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApAQCAtNTIs
OSArNTIsMTEgQEAgcHVibGljOgogICAgIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcygp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbXM7IH0KICAgICB2b2lkIGFkZElubGluZUl0ZW0o
c3RkOjp1bmlxdWVfcHRyPElubGluZUl0ZW0+JiYgaW5saW5lSXRlbSkgeyBtX2lubGluZUl0ZW1z
LmFwcGVuZChXVEZNb3ZlKGlubGluZUl0ZW0pKTsgfQogCisgICAgY29uc3QgSW5saW5lUnVucyYg
aW5saW5lUnVucygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lUnVuczsgfQogICAgIElubGluZVJ1
bnMmIGlubGluZVJ1bnMoKSB7IHJldHVybiBtX2lubGluZVJ1bnM7IH0KICAgICB2b2lkIGFkZElu
bGluZVJ1bihjb25zdCBEaXNwbGF5OjpSdW4mIGlubGluZVJ1bikgeyBtX2lubGluZVJ1bnMuYXBw
ZW5kKGlubGluZVJ1bik7IH0KIAorICAgIGNvbnN0IExpbmVCb3hlcyYgbGluZUJveGVzKCkgY29u
c3QgeyByZXR1cm4gbV9saW5lQm94ZXM7IH0KICAgICBMaW5lQm94ZXMmIGxpbmVCb3hlcygpIHsg
cmV0dXJuIG1fbGluZUJveGVzOyB9CiAgICAgdm9pZCBhZGRMaW5lQm94KExpbmVCb3ggbGluZUJv
eCkgeyBtX2xpbmVCb3hlcy5hcHBlbmQobGluZUJveCk7IH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>