<?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>177889</bug_id>
          
          <creation_ts>2017-10-04 12:09:25 -0700</creation_ts>
          <short_desc>Have TextDecorationPainter hold an OptionSet of decorations</short_desc>
          <delta_ts>2017-10-04 16:59:25 -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>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>buildbot</cc>
    
    <cc>mmaxfield</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>1356571</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 12:09:25 -0700</bug_when>
    <thetext>Have TextDecorationPainter hold an OptionSet of decorations. Currently it abuses data type TextDecoration to store a bitmask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356594</commentid>
    <comment_count>1</comment_count>
      <attachid>322705</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 12:50:55 -0700</bug_when>
    <thetext>Created attachment 322705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356596</commentid>
    <comment_count>2</comment_count>
      <attachid>322706</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 12:52:20 -0700</bug_when>
    <thetext>Created attachment 322706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356599</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-04 12:53:42 -0700</bug_when>
    <thetext>Attachment 322706 did not pass style-queue:


ERROR: Source/WebCore/rendering/TextDecorationPainter.cpp:246:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356608</commentid>
    <comment_count>4</comment_count>
      <attachid>322706</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 13:05:51 -0700</bug_when>
    <thetext>Comment on attachment 322706
Patch

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

&gt; Source/WebCore/rendering/TextDecorationPainter.h:71
&gt; -    bool m_isPrinting { false };
&gt; +    bool m_isPrinting;

Will group this bool with the other bool in this class before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356734</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 16:58:11 -0700</bug_when>
    <thetext>Committed r222889: &lt;http://trac.webkit.org/changeset/222889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356735</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-04 16:59:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/34824462&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322705</attachid>
            <date>2017-10-04 12:50:55 -0700</date>
            <delta_ts>2017-10-04 12:52:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177889-20171004125054.patch</filename>
            <type>text/plain</type>
            <size>13355</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMxMWZjNmFiZDI2MTNh
NzM3ZDAwZjQyZjAxN2VkNDU0Y2NhYzA4Mi4uYmMyY2NhOTZlMzViN2M3ZjJjNjZiZDIzYzA5YTNh
NmUzOTIyNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDE3LTEwLTA0ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBIYXZlIFRleHREZWNvcmF0
aW9uUGFpbnRlciBob2xkIGFuIE9wdGlvblNldCBvZiBkZWNvcmF0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODg5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IFRleHREZWNvcmF0
aW9uUGFpbnRlciBpbXBsaWNpdGx5IG1haW50YWlucyB0aGUgc2V0IG9mIG9uZSBvciBtb3JlIFRl
eHREZWNvcmF0aW9uCisgICAgICAgIGZsYWdzIGluIGEgaW5zdGFuY2UgdmFyaWFibGUgYml0bWFz
ayBvZiB0eXBlIFRleHREZWNvcmF0aW9uLiBJbnN0ZWFkIHdlIHNob3VsZCByZXByZXNlbnQKKyAg
ICAgICAgdGhpcyBzZXQgZXhwbGljaXRseSBhcyBhbiBPcHRpb25TZXQgdG8gaW1wcm92ZSByZWFk
YWJpbGl0eSBvZiB0aGUgY29kZS4KKworICAgICAgICBGb3Igbm93IHdlIGhhdmUgdGhlIFRleHRE
ZWNvcmF0aW9uUGFpbnRlciBjb25zdHJ1Y3RvciBhbmQgVGV4dERlY29yYXRpb25QYWludGVyOjpz
dHlsZXNGb3JSZW5kZXJlcigpCisgICAgICAgIHRvIHRha2UgdGhlIHNldCBvZiBkZWNvcmF0aW9u
cyBhcyBhbiB1bnNpZ25lZCB2YWx1ZSB0byBhdm9pZCB0aGUgbmVlZCB0byB1cGRhdGUgY2FsbGVy
cy4KKyAgICAgICAgV2Ugd2lsbCBsb29rIHRvIGFwcGx5IGEgc2ltaWxhciBjaGFuZ2UgdGhyb3Vn
aG91dCB0aGUgY29kZSBpbiA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3Njg0ND4uCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VkLiBTbywgbm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlRleHREZWNvcmF0aW9u
UGFpbnRlcik6IEZvciBub3csIGNoYW5nZWQgZGF0YSB0eXBlIGZvciBwYXNzZWQKKyAgICAgICAg
ZGVjb3JhdGlvbnMgZnJvbSBUZXh0RGVjb3JhdGlvbiB0byB1bnNpZ25lZCB0byBjb252ZXkgdGhh
dCBpdCBpcyBhIGJpdG1hc2suCisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOiBSZW5hbWVkIGxpbmVzQXJlT3BhcXVlIHRvIGFyZUxp
bmVzT3BhcXVlCisgICAgICAgIHdoaWxlIEkgYW0gaGVyZS4gRml4ZWQgc29tZSBtaW5vciBzdHls
ZSBpc3N1ZXMuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U3R5bGVzRm9yUmVuZGVyZXIpOiBN
b2RpZmllZCB0byB0YWtlIHRoZSByZW1haW5pbmcgZGVjb3JhdGlvbnMgYXMgYW4gT3B0aW9uU2V0
LAorICAgICAgICBhbmQgcmVtb3ZlZCBhbiB1bm5lY2Vzc2FyeSBjb3B5IG9mIHRoZXNlIGRlY29y
YXRpb25zIGJ5IHRha2luZyBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCB0aGV5CisgICAgICAg
IGFyZSBwYXNzZWQgYnkgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBh
aW50ZXI6OnN0eWxlc0ZvclJlbmRlcmVyKTogQ29udmVydCB0aGUgcGFzc2VkIGRlY29yYXRpb25z
IHRvIGFuIE9wdGlvblNldCBhcyBuZWVkZWQgdG8KKyAgICAgICAgcGFzcyB0byBjb2xsZWN0U3R5
bGVzRm9yUmVuZGVyZXIoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmg6IENoYW5nZSBtX2RlY29yYXRpb24gZnJvbSBUZXh0RGVjb3JhdGlvbiB0byBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb24+CisgICAgICAgIGFuZCByZW5hbWUgaXQgdG8gbV9kZWNvcmF0aW9u
cyB0byByZWZsZWN0IHRoYXQgaXQgaXMgdXNlZCBhcyBhIHNldCBvZiBvbmUgb3IgbW9yZSBUZXh0
RGVjb3JhdGlvbiBmbGFncy4KKyAgICAgICAgQWxzbyByZW1vdmUgdW5uZWNlc3NhcnkgaW5pdGlh
bGl6ZXIgZm9yIG1faXNQcmludGluZyB3aGlsZSBJIGFtIGhlcmUuIFRoZXJlIGlzIGV4YWN0bHkg
b25lIGNvbnN0cnVjdG9yCisgICAgICAgIGZvciB0aGlzIGNsYXNzIGFuZCBpdCBpbml0aWFsaXpl
cyBtX2lzUHJpbnRpbmcuCisKKzIwMTctMTAtMDQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgorCiAgICAgICAgIFRlYWNoIFRleHREZWNvcmF0aW9uUGFpbnRlciBhYm91dCBwc2V1
ZG8gc3R5bGVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzc4ODIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNv
cmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmNwcAppbmRleCAyM2YwYzNlMjc4NzY0M2NlMDZkMmM3MzFiMjM4M2U2ZmNjMWYy
OWFhLi4wMjM1OTY0Y2RlNmFkNWYzMmM0NjcyNGM1N2IxZWUyOTY0NzMzOTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAt
MjQxLDEyICsyNDEsMTIgQEAgc3RhdGljIFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGVU
b1N0cm9rZVN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGkKICAgICByZXR1cm4gc3Ry
b2tlU3R5bGU7CiB9CiAKLVRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWlu
dGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwg
Y29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGJvb2wgaXNGaXJzdExpbmUsIFBzZXVkb0lkIHBz
ZXVkb0lkKQorVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBkZWNvcmF0aW9ucywgY29uc3QgUmVuZGVy
VGV4dCYgcmVuZGVyZXIsIGJvb2wgaXNGaXJzdExpbmUsIFBzZXVkb0lkIHBzZXVkb0lkKQogICAg
IDogbV9jb250ZXh0IHsgY29udGV4dCB9Ci0gICAgLCBtX2RlY29yYXRpb24geyBkZWNvcmF0aW9u
IH0KKyAgICAsIG1fZGVjb3JhdGlvbnMgeyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9t
UmF3KGRlY29yYXRpb25zKSB9CiAgICAgLCBtX3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJvbURl
Y29yYXRpb24oKSB9CiAgICAgLCBtX2lzUHJpbnRpbmcgeyByZW5kZXJlci5kb2N1bWVudCgpLnBy
aW50aW5nKCkgfQotICAgICwgbV9zdHlsZXMgeyBzdHlsZXNGb3JSZW5kZXJlcihyZW5kZXJlciwg
bV9kZWNvcmF0aW9uLCBpc0ZpcnN0TGluZSwgcHNldWRvSWQpIH0KKyAgICAsIG1fc3R5bGVzIHsg
c3R5bGVzRm9yUmVuZGVyZXIocmVuZGVyZXIsIGRlY29yYXRpb25zLCBpc0ZpcnN0TGluZSwgcHNl
dWRvSWQpIH0KICAgICAsIG1fbGluZVN0eWxlIHsgaXNGaXJzdExpbmUgPyByZW5kZXJlci5maXJz
dExpbmVTdHlsZSgpIDogcmVuZGVyZXIuc3R5bGUoKSB9CiB7CiB9CkBAIC0yNjIsNyArMjYyLDcg
QEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3Qg
VGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmwKICAgICBtX2NvbnRleHQuc2V0U3Ryb2tlVGhpY2tu
ZXNzKHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKICAgICBGbG9hdFBvaW50IGxvY2FsT3JpZ2lu
ID0gYm94T3JpZ2luOwogCi0gICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0oVGV4dERlY29y
YXRpb24gZGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBzdHlsZSwgY29uc3QgQ29sb3Im
IGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydCwgY29uc3QgRmxvYXRQb2ludCYgZW5kLCBp
bnQgb2Zmc2V0KSB7CisgICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKFRleHREZWNvcmF0
aW9uIGRlY29yYXRpb24sIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUsIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnQsIGNvbnN0IEZsb2F0UG9pbnQmIGVuZCwgaW50
IG9mZnNldCkgewogICAgICAgICBtX2NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IpOwogCiAg
ICAgICAgIGF1dG8gc3Ryb2tlU3R5bGUgPSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHls
ZShzdHlsZSk7CkBAIC0yODUsMTMgKzI4NSwxMiBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRl
cjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAog
ICAgICAgICB9CiAgICAgfTsKIAotICAgIGJvb2wgbGluZXNBcmVPcGFxdWUgPSAhbV9pc1ByaW50
aW5nCi0gICAgICAgICYmICghKG1fZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5l
KSB8fCBtX3N0eWxlcy51bmRlcmxpbmVDb2xvci5pc09wYXF1ZSgpKQotICAgICAgICAmJiAoISht
X2RlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB8fCBtX3N0eWxlcy5vdmVybGlu
ZUNvbG9yLmlzT3BhcXVlKCkpCi0gICAgICAgICYmICghKG1fZGVjb3JhdGlvbiAmIFRleHREZWNv
cmF0aW9uTGluZVRocm91Z2gpIHx8IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IuaXNPcGFxdWUo
KSk7CisgICAgYm9vbCBhcmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRpbmcgJiYgKCFtX2RlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSB8fCBtX3N0eWxlcy51bmRl
cmxpbmVDb2xvci5pc09wYXF1ZSgpKQorICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFp
bnMoVGV4dERlY29yYXRpb25PdmVybGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmVDb2xvci5pc09w
YXF1ZSgpKQorICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRp
b25MaW5lVGhyb3VnaCkgfHwgbV9zdHlsZXMubGluZXRocm91Z2hDb2xvci5pc09wYXF1ZSgpKTsK
IAogICAgIGludCBleHRyYU9mZnNldCA9IDA7Ci0gICAgYm9vbCBjbGlwcGluZyA9ICFsaW5lc0Fy
ZU9wYXF1ZSAmJiBtX3NoYWRvdyAmJiBtX3NoYWRvdy0+bmV4dCgpOworICAgIGJvb2wgY2xpcHBp
bmcgPSAhYXJlTGluZXNPcGFxdWUgJiYgbV9zaGFkb3cgJiYgbV9zaGFkb3ctPm5leHQoKTsKICAg
ICBpZiAoY2xpcHBpbmcpIHsKICAgICAgICAgRmxvYXRSZWN0IGNsaXBSZWN0KGxvY2FsT3JpZ2lu
LCBGbG9hdFNpemUobV93aWR0aCwgbV9iYXNlbGluZSArIDIpKTsKICAgICAgICAgZm9yIChjb25z
dCBTaGFkb3dEYXRhKiBzaGFkb3cgPSBtX3NoYWRvdzsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ct
Pm5leHQoKSkgewpAQCAtMzIzLDIyICszMjIsMjIgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmwK
ICAgICAgICAgICAgIG1fY29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKHNoYWRvd1gsIHNoYWRv
d1kgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+cmFkaXVzKCksIHNoYWRvdy0+Y29sb3IoKSk7CiAg
ICAgICAgICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQoKTsKICAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3Zl
cmZsb3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKQotICAgICAg
ICBpZiAobV9kZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUpIHsKLSAgICAgICAg
ICAgIGNvbnN0IGludCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxl
LnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS5mb250TWV0cmljcygpLCBtX2lu
bGluZVRleHRCb3gsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKKworICAgICAgICAvLyBUaGVz
ZSBkZWNvcmF0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHZpc3VhbCBvdmVyZmxvd3MgY29tcHV0ZWQg
aW4gdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucygpLgorICAgICAgICBpZiAobV9kZWNvcmF0
aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvblVuZGVybGluZSkpIHsKKyAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxp
bmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS5mb250TWV0cmljcygpLCBtX2lubGluZVRleHRCb3gs
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKICAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQg
PSBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eSA/IG1f
d2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHN0YXJ0ID0gbG9jYWxPcmln
aW4gKyBGbG9hdFNpemUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7CiAgICAgICAgICAgICBGbG9h
dFBvaW50IGVuZCA9IGxvY2FsT3JpZ2luICsgRmxvYXRTaXplKG1fd2lkdGgsIG9mZnNldCArIHdh
dnlPZmZzZXQpOwogICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uVW5k
ZXJsaW5lLCBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSwgbV9zdHlsZXMudW5kZXJsaW5lQ29sb3Is
IHN0YXJ0LCBlbmQsIG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlv
biAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKKyAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb25PdmVybGluZSkpIHsKICAgICAgICAgICAgIGZsb2F0IHdh
dnlPZmZzZXQgPSBtX3N0eWxlcy5vdmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVX
YXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgc3RhcnQgPSBs
b2NhbE9yaWdpbiAtIEZsb2F0U2l6ZSgwLCB3YXZ5T2Zmc2V0KTsKICAgICAgICAgICAgIEZsb2F0
UG9pbnQgZW5kID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUobV93aWR0aCwgLXdhdnlPZmZzZXQp
OwogICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIG1f
c3R5bGVzLm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lQ29sb3IsIHN0YXJ0LCBlbmQs
IDApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX2RlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlv
bkxpbmVUaHJvdWdoKSB7CisgICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZVRocm91Z2gpKSB7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHN0YXJ0ID0g
bG9jYWxPcmlnaW4gKyBGbG9hdFNpemUoMCwgMiAqIG1fYmFzZWxpbmUgLyAzKTsKICAgICAgICAg
ICAgIEZsb2F0UG9pbnQgZW5kID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUobV93aWR0aCwgMiAq
IG1fYmFzZWxpbmUgLyAzKTsKICAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3Jh
dGlvbkxpbmVUaHJvdWdoLCBtX3N0eWxlcy5saW5ldGhyb3VnaFN0eWxlLCBtX3N0eWxlcy5saW5l
dGhyb3VnaENvbG9yLCBzdGFydCwgZW5kLCAwKTsKQEAgLTM2NywyNSArMzY2LDI0IEBAIHN0YXRp
YyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIHJl
dHVybiBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0Rmls
bENvbG9yKTsKIH0KIAotc3RhdGljIHZvaWQgY29sbGVjdFN0eWxlc0ZvclJlbmRlcmVyKFRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiByZXN1bHQsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIHVuc2lnbmVkIHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxl
LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKK3N0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJl
cihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVzdWx0LCBjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHJlbWFpbmluZ0RlY29yYXRp
b25zLCBib29sIGZpcnN0TGluZVN0eWxlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICB1bnNp
Z25lZCByZW1haW5pbmdEZWNvcmF0aW9uID0gcmVxdWVzdGVkRGVjb3JhdGlvbnM7Ci0gICAgYXV0
byBleHRyYWN0RGVjb3JhdGlvbnMgPSBbJl0gKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgdW5z
aWduZWQgZGVjb3JhdGlvbnMpIHsKKyAgICBhdXRvIGV4dHJhY3REZWNvcmF0aW9ucyA9IFsmXSAo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29y
YXRpb25zKSB7CiAgICAgICAgIGF1dG8gY29sb3IgPSBkZWNvcmF0aW9uQ29sb3Ioc3R5bGUpOwog
ICAgICAgICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGUo
KTsKIAotICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkg
ewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbiAmPSB+VGV4dERlY29yYXRpb25VbmRl
cmxpbmU7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvblVu
ZGVybGluZSkpIHsKKyAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zIC09IFRleHREZWNv
cmF0aW9uVW5kZXJsaW5lOwogICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZUNvbG9yID0gY29s
b3I7CiAgICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25PdmVy
bGluZSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbiAmPSB+VGV4dERlY29yYXRp
b25PdmVybGluZTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uT3ZlcmxpbmUpKSB7CisgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucyAtPSBUZXh0
RGVjb3JhdGlvbk92ZXJsaW5lOwogICAgICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lQ29sb3IgPSBj
b2xvcjsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxl
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uTGlu
ZVRocm91Z2gpIHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb24gJj0gflRleHREZWNv
cmF0aW9uTGluZVRocm91Z2g7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0
RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSkgeworICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlv
bnMgLT0gVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaDsKICAgICAgICAgICAgIHJlc3VsdC5saW5l
dGhyb3VnaENvbG9yID0gY29sb3I7CiAgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hTdHls
ZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQpAQCAtNDA0LDcgKzQwMiw3IEBAIHN0YXRp
YyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0
eWxlcyYgcmVzdWx0LCBjb25zCiAgICAgYXV0byogY3VycmVudCA9ICZyZW5kZXJlcjsKICAgICBk
byB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcigqY3VycmVu
dCk7Ci0gICAgICAgIGV4dHJhY3REZWNvcmF0aW9ucyhzdHlsZSwgc3R5bGUudGV4dERlY29yYXRp
b24oKSk7CisgICAgICAgIGV4dHJhY3REZWNvcmF0aW9ucyhzdHlsZSwgT3B0aW9uU2V0PFRleHRE
ZWNvcmF0aW9uPjo6ZnJvbVJhdyhzdHlsZS50ZXh0RGVjb3JhdGlvbigpKSk7CiAKICAgICAgICAg
aWYgKGN1cnJlbnQtPmlzUnVieVRleHQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQxMywy
MiArNDExLDIyIEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVj
b3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVzdWx0LCBjb25zCiAgICAgICAgIGlmIChjdXJyZW50
ICYmIGN1cnJlbnQtPmlzQW5vbnltb3VzQmxvY2soKSAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4o
KmN1cnJlbnQpLmNvbnRpbnVhdGlvbigpKQogICAgICAgICAgICAgY3VycmVudCA9IGRvd25jYXN0
PFJlbmRlckJsb2NrPigqY3VycmVudCkuY29udGludWF0aW9uKCk7CiAKLSAgICAgICAgaWYgKCFy
ZW1haW5pbmdEZWNvcmF0aW9uKQorICAgICAgICBpZiAocmVtYWluaW5nRGVjb3JhdGlvbnMuaXNF
bXB0eSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICB9IHdoaWxlIChjdXJyZW50ICYmICFp
czxIVE1MQW5jaG9yRWxlbWVudD4oY3VycmVudC0+bm9kZSgpKSAmJiAhaXM8SFRNTEZvbnRFbGVt
ZW50PihjdXJyZW50LT5ub2RlKCkpKTsKIAogICAgIC8vIElmIHdlIGJhaWxlZCBvdXQsIHVzZSB0
aGUgZWxlbWVudCB3ZSBiYWlsZWQgb3V0IGF0ICh0eXBpY2FsbHkgYSA8Zm9udD4gb3IgPGE+IGVs
ZW1lbnQpLgotICAgIGlmIChyZW1haW5pbmdEZWNvcmF0aW9uICYmIGN1cnJlbnQpCi0gICAgICAg
IGV4dHJhY3REZWNvcmF0aW9ucyhzdHlsZUZvclJlbmRlcmVyKCpjdXJyZW50KSwgcmVtYWluaW5n
RGVjb3JhdGlvbik7CisgICAgaWYgKCFyZW1haW5pbmdEZWNvcmF0aW9ucy5pc0VtcHR5KCkgJiYg
Y3VycmVudCkKKyAgICAgICAgZXh0cmFjdERlY29yYXRpb25zKHN0eWxlRm9yUmVuZGVyZXIoKmN1
cnJlbnQpLCByZW1haW5pbmdEZWNvcmF0aW9ucyk7CiB9CiAKIGF1dG8gVGV4dERlY29yYXRpb25Q
YWludGVyOjpzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1
bnNpZ25lZCByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSwgUHNldWRv
SWQgcHNldWRvSWQpIC0+IFN0eWxlcwogewogICAgIFN0eWxlcyByZXN1bHQ7Ci0gICAgY29sbGVj
dFN0eWxlc0ZvclJlbmRlcmVyKHJlc3VsdCwgcmVuZGVyZXIsIHJlcXVlc3RlZERlY29yYXRpb25z
LCBmYWxzZSwgcHNldWRvSWQpOworICAgIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihyZXN1bHQs
IHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9tUmF3KHJlcXVlc3RlZERl
Y29yYXRpb25zKSwgZmFsc2UsIHBzZXVkb0lkKTsKICAgICBpZiAoZmlyc3RMaW5lU3R5bGUpCi0g
ICAgICAgIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihyZXN1bHQsIHJlbmRlcmVyLCByZXF1ZXN0
ZWREZWNvcmF0aW9ucywgdHJ1ZSwgcHNldWRvSWQpOworICAgICAgICBjb2xsZWN0U3R5bGVzRm9y
UmVuZGVyZXIocmVzdWx0LCByZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPjo6ZnJv
bVJhdyhyZXF1ZXN0ZWREZWNvcmF0aW9ucyksIHRydWUsIHBzZXVkb0lkKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmgKaW5kZXggYjQ2YmUzZDI4ZTU3ZTJhNTc0MzM2YTQ2NjMwNTkyZDRhMzU1NWVi
My4uN2FmMjEyMTc5NTUwNjQ1N2Y2OGY4ZjliMjU2Zjg4ZDM0ZDA4MzA3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDcgKzQxLDggQEAgY2xhc3MgVGV4dFJ1
bjsKICAgICAKIGNsYXNzIFRleHREZWNvcmF0aW9uUGFpbnRlciB7CiBwdWJsaWM6Ci0gICAgVGV4
dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIFRleHREZWNvcmF0aW9uLCBjb25z
dCBSZW5kZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgUHNldWRvSWQgPSBOT1BTRVVETyk7Cisg
ICAgLy8gRklYTUU6IENoYW5nZSBUZXh0RGVjb3JhdGlvbiB0byBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb24+LgorICAgIFRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCB1bnNp
Z25lZCwgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIFBzZXVkb0lkID0gTk9Q
U0VVRE8pOwogICAgIAogICAgIHZvaWQgc2V0SW5saW5lVGV4dEJveChjb25zdCBJbmxpbmVUZXh0
Qm94KiBpbmxpbmVUZXh0Qm94KSB7IG1faW5saW5lVGV4dEJveCA9IGlubGluZVRleHRCb3g7IH0K
ICAgICB2b2lkIHNldEZvbnQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQpIHsgbV9mb250ID0gJmZv
bnQ7IH0KQEAgLTU5LDEzICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFRleHREZWNvcmF0aW9u
U3R5bGUgb3ZlcmxpbmVTdHlsZTsKICAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSBsaW5ldGhy
b3VnaFN0eWxlOwogICAgIH07CisgICAgLy8gRklYTUU6IE1ha2UgcmVxdWVzdGVkRGVjb3JhdGlv
bnMgYW4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPi4KICAgICBzdGF0aWMgU3R5bGVzIHN0eWxl
c0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYsIHVuc2lnbmVkIHJlcXVlc3RlZERlY29y
YXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VVRE8p
OwogICAgICAgICAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7Ci0g
ICAgVGV4dERlY29yYXRpb24gbV9kZWNvcmF0aW9uOworICAgIE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbj4gbV9kZWNvcmF0aW9uczsKICAgICBmbG9hdCBtX3dhdnlPZmZzZXQ7Ci0gICAgYm9vbCBt
X2lzUHJpbnRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1ByaW50aW5nOwogICAgIGZsb2F0
IG1fd2lkdGggeyAwIH07CiAgICAgZmxvYXQgbV9iYXNlbGluZSB7IDAgfTsKICAgICBGbG9hdFBv
aW50IG1fYm94T3JpZ2luOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322706</attachid>
            <date>2017-10-04 12:52:20 -0700</date>
            <delta_ts>2017-10-04 14:54:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177889-20171004125219.patch</filename>
            <type>text/plain</type>
            <size>13470</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMxMWZjNmFiZDI2MTNh
NzM3ZDAwZjQyZjAxN2VkNDU0Y2NhYzA4Mi4uYmMyY2NhOTZlMzViN2M3ZjJjNjZiZDIzYzA5YTNh
NmUzOTIyNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDE3LTEwLTA0ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBIYXZlIFRleHREZWNvcmF0
aW9uUGFpbnRlciBob2xkIGFuIE9wdGlvblNldCBvZiBkZWNvcmF0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODg5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IFRleHREZWNvcmF0
aW9uUGFpbnRlciBpbXBsaWNpdGx5IG1haW50YWlucyB0aGUgc2V0IG9mIG9uZSBvciBtb3JlIFRl
eHREZWNvcmF0aW9uCisgICAgICAgIGZsYWdzIGluIGEgaW5zdGFuY2UgdmFyaWFibGUgYml0bWFz
ayBvZiB0eXBlIFRleHREZWNvcmF0aW9uLiBJbnN0ZWFkIHdlIHNob3VsZCByZXByZXNlbnQKKyAg
ICAgICAgdGhpcyBzZXQgZXhwbGljaXRseSBhcyBhbiBPcHRpb25TZXQgdG8gaW1wcm92ZSByZWFk
YWJpbGl0eSBvZiB0aGUgY29kZS4KKworICAgICAgICBGb3Igbm93IHdlIGhhdmUgdGhlIFRleHRE
ZWNvcmF0aW9uUGFpbnRlciBjb25zdHJ1Y3RvciBhbmQgVGV4dERlY29yYXRpb25QYWludGVyOjpz
dHlsZXNGb3JSZW5kZXJlcigpCisgICAgICAgIHRvIHRha2UgdGhlIHNldCBvZiBkZWNvcmF0aW9u
cyBhcyBhbiB1bnNpZ25lZCB2YWx1ZSB0byBhdm9pZCB0aGUgbmVlZCB0byB1cGRhdGUgY2FsbGVy
cy4KKyAgICAgICAgV2Ugd2lsbCBsb29rIHRvIGFwcGx5IGEgc2ltaWxhciBjaGFuZ2UgdGhyb3Vn
aG91dCB0aGUgY29kZSBpbiA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3Njg0ND4uCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VkLiBTbywgbm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlRleHREZWNvcmF0aW9u
UGFpbnRlcik6IEZvciBub3csIGNoYW5nZWQgZGF0YSB0eXBlIGZvciBwYXNzZWQKKyAgICAgICAg
ZGVjb3JhdGlvbnMgZnJvbSBUZXh0RGVjb3JhdGlvbiB0byB1bnNpZ25lZCB0byBjb252ZXkgdGhh
dCBpdCBpcyBhIGJpdG1hc2suCisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOiBSZW5hbWVkIGxpbmVzQXJlT3BhcXVlIHRvIGFyZUxp
bmVzT3BhcXVlCisgICAgICAgIHdoaWxlIEkgYW0gaGVyZS4gRml4ZWQgc29tZSBtaW5vciBzdHls
ZSBpc3N1ZXMuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U3R5bGVzRm9yUmVuZGVyZXIpOiBN
b2RpZmllZCB0byB0YWtlIHRoZSByZW1haW5pbmcgZGVjb3JhdGlvbnMgYXMgYW4gT3B0aW9uU2V0
LAorICAgICAgICBhbmQgcmVtb3ZlZCBhbiB1bm5lY2Vzc2FyeSBjb3B5IG9mIHRoZXNlIGRlY29y
YXRpb25zIGJ5IHRha2luZyBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCB0aGV5CisgICAgICAg
IGFyZSBwYXNzZWQgYnkgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBh
aW50ZXI6OnN0eWxlc0ZvclJlbmRlcmVyKTogQ29udmVydCB0aGUgcGFzc2VkIGRlY29yYXRpb25z
IHRvIGFuIE9wdGlvblNldCBhcyBuZWVkZWQgdG8KKyAgICAgICAgcGFzcyB0byBjb2xsZWN0U3R5
bGVzRm9yUmVuZGVyZXIoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmg6IENoYW5nZSBtX2RlY29yYXRpb24gZnJvbSBUZXh0RGVjb3JhdGlvbiB0byBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb24+CisgICAgICAgIGFuZCByZW5hbWUgaXQgdG8gbV9kZWNvcmF0aW9u
cyB0byByZWZsZWN0IHRoYXQgaXQgaXMgdXNlZCBhcyBhIHNldCBvZiBvbmUgb3IgbW9yZSBUZXh0
RGVjb3JhdGlvbiBmbGFncy4KKyAgICAgICAgQWxzbyByZW1vdmUgdW5uZWNlc3NhcnkgaW5pdGlh
bGl6ZXIgZm9yIG1faXNQcmludGluZyB3aGlsZSBJIGFtIGhlcmUuIFRoZXJlIGlzIGV4YWN0bHkg
b25lIGNvbnN0cnVjdG9yCisgICAgICAgIGZvciB0aGlzIGNsYXNzIGFuZCBpdCBpbml0aWFsaXpl
cyBtX2lzUHJpbnRpbmcuCisKKzIwMTctMTAtMDQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgorCiAgICAgICAgIFRlYWNoIFRleHREZWNvcmF0aW9uUGFpbnRlciBhYm91dCBwc2V1
ZG8gc3R5bGVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzc4ODIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNv
cmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmNwcAppbmRleCAyM2YwYzNlMjc4NzY0M2NlMDZkMmM3MzFiMjM4M2U2ZmNjMWYy
OWFhLi4wMjM1OTY0Y2RlNmFkNWYzMmM0NjcyNGM1N2IxZWUyOTY0NzMzOTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAt
MjQxLDEyICsyNDEsMTIgQEAgc3RhdGljIFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGVU
b1N0cm9rZVN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGkKICAgICByZXR1cm4gc3Ry
b2tlU3R5bGU7CiB9CiAKLVRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWlu
dGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwg
Y29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGJvb2wgaXNGaXJzdExpbmUsIFBzZXVkb0lkIHBz
ZXVkb0lkKQorVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBkZWNvcmF0aW9ucywgY29uc3QgUmVuZGVy
VGV4dCYgcmVuZGVyZXIsIGJvb2wgaXNGaXJzdExpbmUsIFBzZXVkb0lkIHBzZXVkb0lkKQogICAg
IDogbV9jb250ZXh0IHsgY29udGV4dCB9Ci0gICAgLCBtX2RlY29yYXRpb24geyBkZWNvcmF0aW9u
IH0KKyAgICAsIG1fZGVjb3JhdGlvbnMgeyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9t
UmF3KGRlY29yYXRpb25zKSB9CiAgICAgLCBtX3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJvbURl
Y29yYXRpb24oKSB9CiAgICAgLCBtX2lzUHJpbnRpbmcgeyByZW5kZXJlci5kb2N1bWVudCgpLnBy
aW50aW5nKCkgfQotICAgICwgbV9zdHlsZXMgeyBzdHlsZXNGb3JSZW5kZXJlcihyZW5kZXJlciwg
bV9kZWNvcmF0aW9uLCBpc0ZpcnN0TGluZSwgcHNldWRvSWQpIH0KKyAgICAsIG1fc3R5bGVzIHsg
c3R5bGVzRm9yUmVuZGVyZXIocmVuZGVyZXIsIGRlY29yYXRpb25zLCBpc0ZpcnN0TGluZSwgcHNl
dWRvSWQpIH0KICAgICAsIG1fbGluZVN0eWxlIHsgaXNGaXJzdExpbmUgPyByZW5kZXJlci5maXJz
dExpbmVTdHlsZSgpIDogcmVuZGVyZXIuc3R5bGUoKSB9CiB7CiB9CkBAIC0yNjIsNyArMjYyLDcg
QEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3Qg
VGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmwKICAgICBtX2NvbnRleHQuc2V0U3Ryb2tlVGhpY2tu
ZXNzKHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKICAgICBGbG9hdFBvaW50IGxvY2FsT3JpZ2lu
ID0gYm94T3JpZ2luOwogCi0gICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0oVGV4dERlY29y
YXRpb24gZGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBzdHlsZSwgY29uc3QgQ29sb3Im
IGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydCwgY29uc3QgRmxvYXRQb2ludCYgZW5kLCBp
bnQgb2Zmc2V0KSB7CisgICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKFRleHREZWNvcmF0
aW9uIGRlY29yYXRpb24sIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUsIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnQsIGNvbnN0IEZsb2F0UG9pbnQmIGVuZCwgaW50
IG9mZnNldCkgewogICAgICAgICBtX2NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IpOwogCiAg
ICAgICAgIGF1dG8gc3Ryb2tlU3R5bGUgPSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHls
ZShzdHlsZSk7CkBAIC0yODUsMTMgKzI4NSwxMiBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRl
cjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAog
ICAgICAgICB9CiAgICAgfTsKIAotICAgIGJvb2wgbGluZXNBcmVPcGFxdWUgPSAhbV9pc1ByaW50
aW5nCi0gICAgICAgICYmICghKG1fZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5l
KSB8fCBtX3N0eWxlcy51bmRlcmxpbmVDb2xvci5pc09wYXF1ZSgpKQotICAgICAgICAmJiAoISht
X2RlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB8fCBtX3N0eWxlcy5vdmVybGlu
ZUNvbG9yLmlzT3BhcXVlKCkpCi0gICAgICAgICYmICghKG1fZGVjb3JhdGlvbiAmIFRleHREZWNv
cmF0aW9uTGluZVRocm91Z2gpIHx8IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IuaXNPcGFxdWUo
KSk7CisgICAgYm9vbCBhcmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRpbmcgJiYgKCFtX2RlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSB8fCBtX3N0eWxlcy51bmRl
cmxpbmVDb2xvci5pc09wYXF1ZSgpKQorICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFp
bnMoVGV4dERlY29yYXRpb25PdmVybGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmVDb2xvci5pc09w
YXF1ZSgpKQorICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRp
b25MaW5lVGhyb3VnaCkgfHwgbV9zdHlsZXMubGluZXRocm91Z2hDb2xvci5pc09wYXF1ZSgpKTsK
IAogICAgIGludCBleHRyYU9mZnNldCA9IDA7Ci0gICAgYm9vbCBjbGlwcGluZyA9ICFsaW5lc0Fy
ZU9wYXF1ZSAmJiBtX3NoYWRvdyAmJiBtX3NoYWRvdy0+bmV4dCgpOworICAgIGJvb2wgY2xpcHBp
bmcgPSAhYXJlTGluZXNPcGFxdWUgJiYgbV9zaGFkb3cgJiYgbV9zaGFkb3ctPm5leHQoKTsKICAg
ICBpZiAoY2xpcHBpbmcpIHsKICAgICAgICAgRmxvYXRSZWN0IGNsaXBSZWN0KGxvY2FsT3JpZ2lu
LCBGbG9hdFNpemUobV93aWR0aCwgbV9iYXNlbGluZSArIDIpKTsKICAgICAgICAgZm9yIChjb25z
dCBTaGFkb3dEYXRhKiBzaGFkb3cgPSBtX3NoYWRvdzsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ct
Pm5leHQoKSkgewpAQCAtMzIzLDIyICszMjIsMjIgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmwK
ICAgICAgICAgICAgIG1fY29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKHNoYWRvd1gsIHNoYWRv
d1kgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+cmFkaXVzKCksIHNoYWRvdy0+Y29sb3IoKSk7CiAg
ICAgICAgICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQoKTsKICAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3Zl
cmZsb3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKQotICAgICAg
ICBpZiAobV9kZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUpIHsKLSAgICAgICAg
ICAgIGNvbnN0IGludCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxl
LnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS5mb250TWV0cmljcygpLCBtX2lu
bGluZVRleHRCb3gsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKKworICAgICAgICAvLyBUaGVz
ZSBkZWNvcmF0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHZpc3VhbCBvdmVyZmxvd3MgY29tcHV0ZWQg
aW4gdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucygpLgorICAgICAgICBpZiAobV9kZWNvcmF0
aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvblVuZGVybGluZSkpIHsKKyAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxp
bmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS5mb250TWV0cmljcygpLCBtX2lubGluZVRleHRCb3gs
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKICAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQg
PSBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eSA/IG1f
d2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHN0YXJ0ID0gbG9jYWxPcmln
aW4gKyBGbG9hdFNpemUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7CiAgICAgICAgICAgICBGbG9h
dFBvaW50IGVuZCA9IGxvY2FsT3JpZ2luICsgRmxvYXRTaXplKG1fd2lkdGgsIG9mZnNldCArIHdh
dnlPZmZzZXQpOwogICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uVW5k
ZXJsaW5lLCBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSwgbV9zdHlsZXMudW5kZXJsaW5lQ29sb3Is
IHN0YXJ0LCBlbmQsIG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlv
biAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKKyAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb25PdmVybGluZSkpIHsKICAgICAgICAgICAgIGZsb2F0IHdh
dnlPZmZzZXQgPSBtX3N0eWxlcy5vdmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVX
YXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgc3RhcnQgPSBs
b2NhbE9yaWdpbiAtIEZsb2F0U2l6ZSgwLCB3YXZ5T2Zmc2V0KTsKICAgICAgICAgICAgIEZsb2F0
UG9pbnQgZW5kID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUobV93aWR0aCwgLXdhdnlPZmZzZXQp
OwogICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIG1f
c3R5bGVzLm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lQ29sb3IsIHN0YXJ0LCBlbmQs
IDApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX2RlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlv
bkxpbmVUaHJvdWdoKSB7CisgICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZVRocm91Z2gpKSB7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHN0YXJ0ID0g
bG9jYWxPcmlnaW4gKyBGbG9hdFNpemUoMCwgMiAqIG1fYmFzZWxpbmUgLyAzKTsKICAgICAgICAg
ICAgIEZsb2F0UG9pbnQgZW5kID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUobV93aWR0aCwgMiAq
IG1fYmFzZWxpbmUgLyAzKTsKICAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3Jh
dGlvbkxpbmVUaHJvdWdoLCBtX3N0eWxlcy5saW5ldGhyb3VnaFN0eWxlLCBtX3N0eWxlcy5saW5l
dGhyb3VnaENvbG9yLCBzdGFydCwgZW5kLCAwKTsKQEAgLTM2NywyNSArMzY2LDI0IEBAIHN0YXRp
YyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIHJl
dHVybiBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0Rmls
bENvbG9yKTsKIH0KIAotc3RhdGljIHZvaWQgY29sbGVjdFN0eWxlc0ZvclJlbmRlcmVyKFRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiByZXN1bHQsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIHVuc2lnbmVkIHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxl
LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKK3N0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJl
cihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVzdWx0LCBjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHJlbWFpbmluZ0RlY29yYXRp
b25zLCBib29sIGZpcnN0TGluZVN0eWxlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICB1bnNp
Z25lZCByZW1haW5pbmdEZWNvcmF0aW9uID0gcmVxdWVzdGVkRGVjb3JhdGlvbnM7Ci0gICAgYXV0
byBleHRyYWN0RGVjb3JhdGlvbnMgPSBbJl0gKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgdW5z
aWduZWQgZGVjb3JhdGlvbnMpIHsKKyAgICBhdXRvIGV4dHJhY3REZWNvcmF0aW9ucyA9IFsmXSAo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29y
YXRpb25zKSB7CiAgICAgICAgIGF1dG8gY29sb3IgPSBkZWNvcmF0aW9uQ29sb3Ioc3R5bGUpOwog
ICAgICAgICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGUo
KTsKIAotICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkg
ewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbiAmPSB+VGV4dERlY29yYXRpb25VbmRl
cmxpbmU7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvblVu
ZGVybGluZSkpIHsKKyAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zIC09IFRleHREZWNv
cmF0aW9uVW5kZXJsaW5lOwogICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZUNvbG9yID0gY29s
b3I7CiAgICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25PdmVy
bGluZSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbiAmPSB+VGV4dERlY29yYXRp
b25PdmVybGluZTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uT3ZlcmxpbmUpKSB7CisgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucyAtPSBUZXh0
RGVjb3JhdGlvbk92ZXJsaW5lOwogICAgICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lQ29sb3IgPSBj
b2xvcjsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxl
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uTGlu
ZVRocm91Z2gpIHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb24gJj0gflRleHREZWNv
cmF0aW9uTGluZVRocm91Z2g7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0
RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSkgeworICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlv
bnMgLT0gVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaDsKICAgICAgICAgICAgIHJlc3VsdC5saW5l
dGhyb3VnaENvbG9yID0gY29sb3I7CiAgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hTdHls
ZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQpAQCAtNDA0LDcgKzQwMiw3IEBAIHN0YXRp
YyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0
eWxlcyYgcmVzdWx0LCBjb25zCiAgICAgYXV0byogY3VycmVudCA9ICZyZW5kZXJlcjsKICAgICBk
byB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcigqY3VycmVu
dCk7Ci0gICAgICAgIGV4dHJhY3REZWNvcmF0aW9ucyhzdHlsZSwgc3R5bGUudGV4dERlY29yYXRp
b24oKSk7CisgICAgICAgIGV4dHJhY3REZWNvcmF0aW9ucyhzdHlsZSwgT3B0aW9uU2V0PFRleHRE
ZWNvcmF0aW9uPjo6ZnJvbVJhdyhzdHlsZS50ZXh0RGVjb3JhdGlvbigpKSk7CiAKICAgICAgICAg
aWYgKGN1cnJlbnQtPmlzUnVieVRleHQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQxMywy
MiArNDExLDIyIEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVj
b3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVzdWx0LCBjb25zCiAgICAgICAgIGlmIChjdXJyZW50
ICYmIGN1cnJlbnQtPmlzQW5vbnltb3VzQmxvY2soKSAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4o
KmN1cnJlbnQpLmNvbnRpbnVhdGlvbigpKQogICAgICAgICAgICAgY3VycmVudCA9IGRvd25jYXN0
PFJlbmRlckJsb2NrPigqY3VycmVudCkuY29udGludWF0aW9uKCk7CiAKLSAgICAgICAgaWYgKCFy
ZW1haW5pbmdEZWNvcmF0aW9uKQorICAgICAgICBpZiAocmVtYWluaW5nRGVjb3JhdGlvbnMuaXNF
bXB0eSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICB9IHdoaWxlIChjdXJyZW50ICYmICFp
czxIVE1MQW5jaG9yRWxlbWVudD4oY3VycmVudC0+bm9kZSgpKSAmJiAhaXM8SFRNTEZvbnRFbGVt
ZW50PihjdXJyZW50LT5ub2RlKCkpKTsKIAogICAgIC8vIElmIHdlIGJhaWxlZCBvdXQsIHVzZSB0
aGUgZWxlbWVudCB3ZSBiYWlsZWQgb3V0IGF0ICh0eXBpY2FsbHkgYSA8Zm9udD4gb3IgPGE+IGVs
ZW1lbnQpLgotICAgIGlmIChyZW1haW5pbmdEZWNvcmF0aW9uICYmIGN1cnJlbnQpCi0gICAgICAg
IGV4dHJhY3REZWNvcmF0aW9ucyhzdHlsZUZvclJlbmRlcmVyKCpjdXJyZW50KSwgcmVtYWluaW5n
RGVjb3JhdGlvbik7CisgICAgaWYgKCFyZW1haW5pbmdEZWNvcmF0aW9ucy5pc0VtcHR5KCkgJiYg
Y3VycmVudCkKKyAgICAgICAgZXh0cmFjdERlY29yYXRpb25zKHN0eWxlRm9yUmVuZGVyZXIoKmN1
cnJlbnQpLCByZW1haW5pbmdEZWNvcmF0aW9ucyk7CiB9CiAKIGF1dG8gVGV4dERlY29yYXRpb25Q
YWludGVyOjpzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1
bnNpZ25lZCByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSwgUHNldWRv
SWQgcHNldWRvSWQpIC0+IFN0eWxlcwogewogICAgIFN0eWxlcyByZXN1bHQ7Ci0gICAgY29sbGVj
dFN0eWxlc0ZvclJlbmRlcmVyKHJlc3VsdCwgcmVuZGVyZXIsIHJlcXVlc3RlZERlY29yYXRpb25z
LCBmYWxzZSwgcHNldWRvSWQpOworICAgIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihyZXN1bHQs
IHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9tUmF3KHJlcXVlc3RlZERl
Y29yYXRpb25zKSwgZmFsc2UsIHBzZXVkb0lkKTsKICAgICBpZiAoZmlyc3RMaW5lU3R5bGUpCi0g
ICAgICAgIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihyZXN1bHQsIHJlbmRlcmVyLCByZXF1ZXN0
ZWREZWNvcmF0aW9ucywgdHJ1ZSwgcHNldWRvSWQpOworICAgICAgICBjb2xsZWN0U3R5bGVzRm9y
UmVuZGVyZXIocmVzdWx0LCByZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPjo6ZnJv
bVJhdyhyZXF1ZXN0ZWREZWNvcmF0aW9ucyksIHRydWUsIHBzZXVkb0lkKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmgKaW5kZXggYjQ2YmUzZDI4ZTU3ZTJhNTc0MzM2YTQ2NjMwNTkyZDRhMzU1NWVi
My4uMjJjN2ZjYmRkOWY1MzA0M2VmZWZhMDI1MjViYzE5MjI2NjFkODRiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDcgKzQxLDggQEAgY2xhc3MgVGV4dFJ1
bjsKICAgICAKIGNsYXNzIFRleHREZWNvcmF0aW9uUGFpbnRlciB7CiBwdWJsaWM6Ci0gICAgVGV4
dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIFRleHREZWNvcmF0aW9uLCBjb25z
dCBSZW5kZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgUHNldWRvSWQgPSBOT1BTRVVETyk7Cisg
ICAgLy8gRklYTUU6IE1ha2UgZGVjb3JhdGlvbnMgYW4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
Pi4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODQ0Pi4K
KyAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgdW5zaWduZWQgZGVj
b3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmLCBib29sIGlzRmlyc3RMaW5lLCBQc2V1ZG9JZCA9
IE5PUFNFVURPKTsKICAgICAKICAgICB2b2lkIHNldElubGluZVRleHRCb3goY29uc3QgSW5saW5l
VGV4dEJveCogaW5saW5lVGV4dEJveCkgeyBtX2lubGluZVRleHRCb3ggPSBpbmxpbmVUZXh0Qm94
OyB9CiAgICAgdm9pZCBzZXRGb250KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KSB7IG1fZm9udCA9
ICZmb250OyB9CkBAIC01OSwxMyArNjEsMTQgQEAgcHVibGljOgogICAgICAgICBUZXh0RGVjb3Jh
dGlvblN0eWxlIG92ZXJsaW5lU3R5bGU7CiAgICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgbGlu
ZXRocm91Z2hTdHlsZTsKICAgICB9OworICAgIC8vIEZJWE1FOiBNYWtlIHJlcXVlc3RlZERlY29y
YXRpb25zIGFuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4uIFNlZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Njg0ND4uCiAgICAgc3RhdGljIFN0eWxlcyBzdHls
ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmLCB1bnNpZ25lZCByZXF1ZXN0ZWREZWNv
cmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IE5PUFNFVURP
KTsKICAgICAgICAgCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0Owot
ICAgIFRleHREZWNvcmF0aW9uIG1fZGVjb3JhdGlvbjsKKyAgICBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb24+IG1fZGVjb3JhdGlvbnM7CiAgICAgZmxvYXQgbV93YXZ5T2Zmc2V0OwotICAgIGJvb2wg
bV9pc1ByaW50aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNQcmludGluZzsKICAgICBmbG9h
dCBtX3dpZHRoIHsgMCB9OwogICAgIGZsb2F0IG1fYmFzZWxpbmUgeyAwIH07CiAgICAgRmxvYXRQ
b2ludCBtX2JveE9yaWdpbjsK
</data>
<flag name="review"
          id="342556"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>