<?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>43271</bug_id>
          
          <creation_ts>2010-07-30 14:43:48 -0700</creation_ts>
          <short_desc>Short documents may print a second blank page</short_desc>
          <delta_ts>2010-07-31 00:36:15 -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>Printing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>data:text/html,</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>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>darin</cc>
    
    <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>258394</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-07-30 14:43:48 -0700</bug_when>
    <thetext>When printing, elements that stretch to viewport height or whose height is specified as a percentage relative to the viewport have their heights computed relative to the WebView’s height. Often, such as when the WebView fills an entire browser window that takes up the entire height of the screen, those elements become taller than a page. One example, as in the URL, is the html and body elements in a quirks-mode document.

Patch (with cross-platform changes and fix for Mac) forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258397</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-07-30 14:44:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/8257783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258530</commentid>
    <comment_count>2</comment_count>
      <attachid>63138</attachid>
    <who name="">mitz</who>
    <bug_when>2010-07-30 21:08:59 -0700</bug_when>
    <thetext>Created attachment 63138
Use the page height as the viewport height when printing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258533</commentid>
    <comment_count>3</comment_count>
      <attachid>63138</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-30 21:57:54 -0700</bug_when>
    <thetext>Comment on attachment 63138
Use the page height as the viewport height when printing

&gt; +void Frame::setPrinting(bool printing, float pageWidth, float pageHeight, float maximumShrinkRatio, AdjustViewSizeOrNot shouldAdjustViewSize)

I&apos;d prefer const FloatSize&amp; pageSize. Will that work?

&gt;          // This magic is basically copied from khtmlview::print

Wow, you are leaving this comment!?

&gt; +    void forceLayoutForPagination(float pageWidth, float pageHeight, float maximumShrinkFactor, Frame::AdjustViewSizeOrNot);

I&apos;d prefer const FloatSize&amp; pageSize here too. Make sense?

&gt; +    void begin(float width, float height = 0);

What about here? FloatSize?

&gt; -2010-07-30  Joseph Pecoraro  &lt;joepeck@webkit.org&gt;
&gt; +2010-07-30  Dan Bernstein  &lt;mitz@apple.com&gt;

You removed Joe&apos;s change log entry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258537</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-07-30 22:09:48 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 63138 [details])
&gt; &gt; +void Frame::setPrinting(bool printing, float pageWidth, float pageHeight, float maximumShrinkRatio, AdjustViewSizeOrNot shouldAdjustViewSize)
&gt; 
&gt; I&apos;d prefer const FloatSize&amp; pageSize. Will that work?

That’s how I did it at first. Then I confused myself into thinking that a FloatSize with a zero component (which would be used here to mean “use the unscaled visibleHeight()”) was bad. I am going to change back to const FloatSize&amp;.

&gt; 
&gt; &gt;          // This magic is basically copied from khtmlview::print
&gt; 
&gt; Wow, you are leaving this comment!?

Maybe not…

&gt; 
&gt; &gt; +    void forceLayoutForPagination(float pageWidth, float pageHeight, float maximumShrinkFactor, Frame::AdjustViewSizeOrNot);
&gt; 
&gt; I&apos;d prefer const FloatSize&amp; pageSize here too. Make sense?

I am going to change this too.

&gt; 
&gt; &gt; +    void begin(float width, float height = 0);
&gt; 
&gt; What about here? FloatSize?

I was frightened by a comment that said the even the width parameter needs to go away. Not going to change this now.

&gt; 
&gt; &gt; -2010-07-30  Joseph Pecoraro  &lt;joepeck@webkit.org&gt;
&gt; &gt; +2010-07-30  Dan Bernstein  &lt;mitz@apple.com&gt;
&gt; 
&gt; You removed Joe&apos;s change log entry!

Oh noes!

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258550</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-07-30 23:00:37 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/projects/webkit/changeset/64409&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258567</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-07-31 00:10:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Fixed in &lt;http://trac.webkit.org/projects/webkit/changeset/64409&gt;.

This change broke the Apple Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258568</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-07-31 00:10:23 -0700</bug_when>
    <thetext>Attempt to fix the build committed in changeset 64412 &lt;http://trac.webkit.org/changeset/64412&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258569</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-07-31 00:36:15 -0700</bug_when>
    <thetext>Thanks, Daniel!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63138</attachid>
            <date>2010-07-30 21:08:59 -0700</date>
            <delta_ts>2010-07-30 21:57:54 -0700</delta_ts>
            <desc>Use the page height as the viewport height when printing</desc>
            <filename>print-stretch-to-view-height_r2.diff</filename>
            <type>text/plain</type>
            <size>33863</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDQwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDctMzAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODI1Nzc4Mz4gU2hvcnQgZG9jdW1lbnRzIG1heSBwcmludCBhIHNlY29uZCBi
bGFuayBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MzI3MQorCisgICAgICAgIFRlc3Q6IHByaW50aW5nL3N0cmV0Y2gtdG8tdmlldy1oZWlnaHQu
aHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBGcmFtZTo6Zm9yY2VMYXlv
dXRGb3JQYWdpbmF0aW9uKCksIHJlcGxhY2luZyBmb3JjZUxheW91dFdpdGhQYWdlV2lkdGhSYW5n
ZSgpLgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6
OnNldFByaW50aW5nKTogTm93IHRha2VzIGEgcGFnZSB3aWR0aCBhbmQgaGVpZ2h0IGFuZCBhIG1h
eGltdW0gc2hyaW5rIGZhY3RvciBhbmQgcGFzc2VzCisgICAgICAgIHRoZW0gZG93biB0byBmb3Jj
ZUxheW91dEZvclBhZ2luYXRpb24oKS4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0KTogSW5pdGlhbGl6ZSBtX3BhZ2VIZWlnaHQu
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZvcmNlTGF5b3V0Rm9yUGFnaW5hdGlvbik6
IFJlbmFtZWQgZm9yY2VMYXlvdXRXaXRoUGFnZVdpZHRoUmFuZ2UoKSB0byB0aGlzIGFuZAorICAg
ICAgICBjaGFuZ2VkIGl0IHRvIHRha2UgYSBwYWdlIHdpZHRoIGFuZCBoZWlnaHQgYW5kIGEgbWF4
aW11bSBzaHJpbmsgZmFjdG9yLiBTZXRzIG1fcGFnZUhlaWdodCwgd2hpY2ggaXMKKyAgICAgICAg
cXVlcmllZCBieSBSZW5kZXJCb3g6OmNhbGNIZWlnaHQoKSBkdXJpbmcgbGF5b3V0LiBJZiB0aGUg
Z2l2ZW4gcGFnZUhlaWdodCBpcyAwLCBtX3BhZ2VIZWlnaHQgaXMgc2V0CisgICAgICAgIHRvIHRo
ZSB2aXNpYmxlIGhlaWdodCwgcmV0YWluaW5nIHRoZSBiZWhhdmlvciBiZWZvcmUgdGhpcyBjaGFu
Z2UuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6cGFnZUhlaWdodCk6IEFkZGVkIHRoaXMgYWNjZXNzb3IuCisgICAgICAgICogcGFnZS9Q
cmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpiZWdpbik6
IEFkZGVkIGEgaGVpZ2h0IHBhcmFtZXRlciwgdXNlZCB3aGVuIGNhbGxpbmcgc2V0UHJpbnRpbmco
KS4KKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6ZW5kKTogVXBkYXRlZCBmb3Igc2V0
UHJpbnRpbmcoKSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpwYWdl
TnVtYmVyRm9yRWxlbWVudCk6IEFjY291bnQgZm9yIHNocmluay10by1maXQuCisgICAgICAgIChX
ZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eSk6IFBhc3MgMCBmb3IgdGhlIGhlaWdo
dCwgcmV0YWluaW5nIGN1cnJlbnQgYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3JlOjpQcmludENv
bnRleHQ6Om51bWJlck9mUGFnZXMpOiBBY2NvdW50IGZvciBzaHJpbmstdG8tZml0LgorICAgICAg
ICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMpOiBQ
YXNzIHRoZSBwYWdlIHdpZHRoIHRvIGJlZ2luKCkuCisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y2FsY0hlaWdodCk6IFdoZW4gcHJpbnRpbmcsIHVzZSBGcmFtZVZpZXc6
OnBhZ2VIZWlnaHQoKSBhcyB0aGUgYmFzaXMgZm9yCisgICAgICAgIHZpZXdwb3J0LXJlbGF0aXZl
IGhlaWdodHMuCisKIDIwMTAtMDctMzAgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gNjQ0MDMpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03
NjksNyArNzY5LDcgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzIxZmx1c2hEZWZlcnJlZFJlcAog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzIyc2V0QmFzZUJhY2tncm91bmRDb2xvckVOU181Q29sb3JF
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjNsYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MjN1cGRhdGVDYW5IYXZlU2Nyb2xsYmFyc0V2Ci1fX1pON1dlYkNv
cmU5RnJhbWVWaWV3Mjlmb3JjZUxheW91dFdpdGhQYWdlV2lkdGhSYW5nZUVmZmIKK19fWk43V2Vi
Q29yZTlGcmFtZVZpZXcyNGZvcmNlTGF5b3V0Rm9yUGFnaW5hdGlvbkVmZmZOU181RnJhbWUxOUFk
anVzdFZpZXdTaXplT3JOb3RFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91bGRVcGRh
dGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzeW5jQ29tcG9zaXRp
bmdTdGF0ZVJlY3Vyc2l2ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzhzY3JvbGxQb3NpdGlv
bkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEV2CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDY0NDAzKQor
KysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE3LDE2ICs2MTcs
MTYgQEAgdm9pZCBGcmFtZTo6cGFpbnREcmFnQ2FyZXQoR3JhcGhpY3NDb250ZQogI2VuZGlmCiB9
CiAKLXZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGZsb2F0IG1pblBhZ2VX
aWR0aCwgZmxvYXQgbWF4UGFnZVdpZHRoLCBib29sIGFkanVzdFZpZXdTaXplKQordm9pZCBGcmFt
ZTo6c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdl
SGVpZ2h0LCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIEFkanVzdFZpZXdTaXplT3JOb3Qgc2hv
dWxkQWRqdXN0Vmlld1NpemUpCiB7CiAgICAgbV9kb2MtPnNldFByaW50aW5nKHByaW50aW5nKTsK
ICAgICB2aWV3KCktPmFkanVzdE1lZGlhVHlwZUZvclByaW50aW5nKHByaW50aW5nKTsKIAogICAg
IG1fZG9jLT51cGRhdGVTdHlsZVNlbGVjdG9yKCk7Ci0gICAgdmlldygpLT5mb3JjZUxheW91dFdp
dGhQYWdlV2lkdGhSYW5nZShtaW5QYWdlV2lkdGgsIG1heFBhZ2VXaWR0aCwgYWRqdXN0Vmlld1Np
emUpOworICAgIHZpZXcoKS0+Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uKHBhZ2VXaWR0aCwgcGFn
ZUhlaWdodCwgbWF4aW11bVNocmlua1JhdGlvLCBzaG91bGRBZGp1c3RWaWV3U2l6ZSk7CiAKICAg
ICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+c2V0UHJpbnRp
bmcocHJpbnRpbmcsIG1pblBhZ2VXaWR0aCwgbWF4UGFnZVdpZHRoLCBhZGp1c3RWaWV3U2l6ZSk7
CisgICAgICAgIGNoaWxkLT5zZXRQcmludGluZyhwcmludGluZywgcGFnZVdpZHRoLCBwYWdlSGVp
Z2h0LCBtYXhpbXVtU2hyaW5rUmF0aW8sIHNob3VsZEFkanVzdFZpZXdTaXplKTsKIH0KIAogdm9p
ZCBGcmFtZTo6c2V0TmVlZHNSZWFwcGx5U3R5bGVzKCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA2NDQwMykK
KysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNv
bnN0OyAvLyBjYW4gYmUgTlVMTAogCi0gICAgICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmlu
dGluZywgZmxvYXQgbWluUGFnZVdpZHRoLCBmbG9hdCBtYXhQYWdlV2lkdGgsIGJvb2wgYWRqdXN0
Vmlld1NpemUpOworICAgICAgICBlbnVtIEFkanVzdFZpZXdTaXplT3JOb3QgeyBEb05vdEFkanVz
dFZpZXdTaXplLCBBZGp1c3RWaWV3U2l6ZSB9OworICAgICAgICB2b2lkIHNldFByaW50aW5nKGJv
b2wgcHJpbnRpbmcsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCwgZmxvYXQgbWF4
aW11bVNocmlua1JhdGlvLCBBZGp1c3RWaWV3U2l6ZU9yTm90KTsKIAogICAgICAgICBib29sIGlu
Vmlld1NvdXJjZU1vZGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRJblZpZXdTb3VyY2VNb2Rl
KGJvb2wgPSB0cnVlKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA2NDQwMykKKysrIFdl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnJlc2V0KCkKICAgICBtX3dhc1Njcm9sbGVkQnlVc2VyID0gZmFs
c2U7CiAgICAgbV9sYXN0TGF5b3V0U2l6ZSA9IEludFNpemUoKTsKICAgICBtX2xhc3Rab29tRmFj
dG9yID0gMS4wZjsKKyAgICBtX3BhZ2VIZWlnaHQgPSAwOwogICAgIG1fZGVmZXJyaW5nUmVwYWlu
dHMgPSAwOwogICAgIG1fcmVwYWludENvdW50ID0gMDsKICAgICBtX3JlcGFpbnRSZWN0cy5jbGVh
cigpOwpAQCAtMjA0MiwzMyArMjA0MywzNyBAQCB2b2lkIEZyYW1lVmlldzo6Zm9yY2VMYXlvdXQo
Ym9vbCBhbGxvd1N1CiAgICAgLy91bnNjaGVkdWxlUmVsYXlvdXQoKTsKIH0KIAotdm9pZCBGcmFt
ZVZpZXc6OmZvcmNlTGF5b3V0V2l0aFBhZ2VXaWR0aFJhbmdlKGZsb2F0IG1pblBhZ2VXaWR0aCwg
ZmxvYXQgbWF4UGFnZVdpZHRoLCBib29sIF9hZGp1c3RWaWV3U2l6ZSkKK3ZvaWQgRnJhbWVWaWV3
Ojpmb3JjZUxheW91dEZvclBhZ2luYXRpb24oZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVp
Z2h0LCBmbG9hdCBtYXhpbXVtU2hyaW5rRmFjdG9yLCBGcmFtZTo6QWRqdXN0Vmlld1NpemVPck5v
dCBzaG91bGRBZGp1c3RWaWV3U2l6ZSkKIHsKICAgICAvLyBEdW1waW5nIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24obV9mcmFtZS0+cmVuZGVyZXIoKSkuYXNjaWkoKSBpcyBhIGdvb2QgdHJpY2sgdG8g
c2VlCiAgICAgLy8gdGhlIHN0YXRlIG9mIHRoaW5ncyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBsYXlv
dXQKICAgICBSZW5kZXJWaWV3ICpyb290ID0gdG9SZW5kZXJWaWV3KG1fZnJhbWUtPmRvY3VtZW50
KCktPnJlbmRlcmVyKCkpOwogICAgIGlmIChyb290KSB7CiAgICAgICAgIC8vIFRoaXMgbWFnaWMg
aXMgYmFzaWNhbGx5IGNvcGllZCBmcm9tIGtodG1sdmlldzo6cHJpbnQKLSAgICAgICAgaW50IHBh
Z2VXID0gKGludCljZWlsZihtaW5QYWdlV2lkdGgpOworICAgICAgICBpbnQgcGFnZVcgPSBjZWls
ZihwYWdlV2lkdGgpOworICAgICAgICBtX3BhZ2VIZWlnaHQgPSBwYWdlSGVpZ2h0ID8gcGFnZUhl
aWdodCA6IHZpc2libGVIZWlnaHQoKTsKICAgICAgICAgcm9vdC0+c2V0V2lkdGgocGFnZVcpOwog
ICAgICAgICByb290LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAg
ICAgZm9yY2VMYXlvdXQoKTsKIAotICAgICAgICAvLyBJZiB3ZSBkb24ndCBmaXQgaW4gdGhlIG1p
bmltdW0gcGFnZSB3aWR0aCwgd2UnbGwgbGF5IG91dCBhZ2Fpbi4gSWYgd2UgZG9uJ3QgZml0IGlu
IHRoZQotICAgICAgICAvLyBtYXhpbXVtIHBhZ2Ugd2lkdGgsIHdlIHdpbGwgbGF5IG91dCB0byB0
aGUgbWF4aW11bSBwYWdlIHdpZHRoIGFuZCBjbGlwIGV4dHJhIGNvbnRlbnQuCisgICAgICAgIC8v
IElmIHdlIGRvbid0IGZpdCBpbiB0aGUgZ2l2ZW4gcGFnZSB3aWR0aCwgd2UnbGwgbGF5IG91dCBh
Z2Fpbi4gSWYgd2UgZG9uJ3QgZml0IGluIHRoZQorICAgICAgICAvLyBwYWdlIHdpZHRoIHdoZW4g
c2hydW5rLCB3ZSB3aWxsIGxheSBvdXQgYXQgbWF4aW11bSBzaHJpbmsgYW5kIGNsaXAgZXh0cmEg
Y29udGVudC4KICAgICAgICAgLy8gRklYTUU6IFdlIGFyZSBhc3N1bWluZyBhIHNocmluay10by1m
aXQgcHJpbnRpbmcgaW1wbGVtZW50YXRpb24uICBBIGNyb3BwaW5nCiAgICAgICAgIC8vIGltcGxl
bWVudGF0aW9uIHNob3VsZCBub3QgZG8gdGhpcyEKICAgICAgICAgaW50IHJpZ2h0bW9zdFBvcyA9
IHJvb3QtPnJpZ2h0bW9zdFBvc2l0aW9uKCk7Ci0gICAgICAgIGlmIChyaWdodG1vc3RQb3MgPiBt
aW5QYWdlV2lkdGgpIHsKLSAgICAgICAgICAgIHBhZ2VXID0gc3RkOjptaW4ocmlnaHRtb3N0UG9z
LCAoaW50KWNlaWxmKG1heFBhZ2VXaWR0aCkpOworICAgICAgICBpZiAocmlnaHRtb3N0UG9zID4g
cGFnZVdpZHRoKSB7CisgICAgICAgICAgICBwYWdlVyA9IHN0ZDo6bWluPGludD4ocmlnaHRtb3N0
UG9zLCBjZWlsZihwYWdlV2lkdGggKiBtYXhpbXVtU2hyaW5rRmFjdG9yKSk7CisgICAgICAgICAg
ICBpZiAocGFnZUhlaWdodCkKKyAgICAgICAgICAgICAgICBtX3BhZ2VIZWlnaHQgPSBwYWdlVyAv
IHBhZ2VXaWR0aCAqIHBhZ2VIZWlnaHQ7CiAgICAgICAgICAgICByb290LT5zZXRXaWR0aChwYWdl
Vyk7CiAgICAgICAgICAgICByb290LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMo
KTsKICAgICAgICAgICAgIGZvcmNlTGF5b3V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAoX2FkanVzdFZpZXdTaXplKQorICAgIGlmIChzaG91bGRBZGp1c3RWaWV3U2l6ZSkKICAgICAg
ICAgYWRqdXN0Vmlld1NpemUoKTsKKyAgICBtX3BhZ2VIZWlnaHQgPSAwOwogfQogCiB2b2lkIEZy
YW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodChmbG9hdCAqbmV3Qm90dG9tLCBmbG9hdCBvbGRUb3As
IGZsb2F0IG9sZEJvdHRvbSwgZmxvYXQgLypib3R0b21MaW1pdCovKQpJbmRleDogV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAko
cmV2aXNpb24gNjQ0MDMpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OSw3ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1Zpc3VhbGx5Tm9u
RW1wdHkoKSB7IG1faXNWaXN1YWxseU5vbkVtcHR5ID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBmb3Jj
ZUxheW91dChib29sIGFsbG93U3VidHJlZSA9IGZhbHNlKTsKLSAgICB2b2lkIGZvcmNlTGF5b3V0
V2l0aFBhZ2VXaWR0aFJhbmdlKGZsb2F0IG1pblBhZ2VXaWR0aCwgZmxvYXQgbWF4UGFnZVdpZHRo
LCBib29sIGFkanVzdFZpZXdTaXplKTsKKyAgICB2b2lkIGZvcmNlTGF5b3V0Rm9yUGFnaW5hdGlv
bihmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQsIGZsb2F0IG1heGltdW1TaHJpbmtG
YWN0b3IsIEZyYW1lOjpBZGp1c3RWaWV3U2l6ZU9yTm90KTsKKyAgICBpbnQgcGFnZUhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUhlaWdodDsgfQogCiAgICAgdm9pZCBhZGp1c3RQYWdlSGVp
Z2h0KGZsb2F0KiBuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQgb2xkQm90dG9tLCBmbG9h
dCBib3R0b21MaW1pdCk7CiAKQEAgLTMzMiw2ICszMzMsOCBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX21lZGlhVHlwZTsKICAgICBTdHJpbmcgbV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmc7CiAK
KyAgICBpbnQgbV9wYWdlSGVpZ2h0OworCiAgICAgdW5zaWduZWQgbV9lbnF1ZXVlRXZlbnRzOwog
ICAgIFZlY3RvcjxTY2hlZHVsZWRFdmVudCo+IG1fc2NoZWR1bGVkRXZlbnRzOwogICAgIApJbmRl
eDogV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL1ByaW50Q29udGV4dC5jcHAJKHJldmlzaW9uIDY0NDAzKQorKysgV2ViQ29yZS9wYWdlL1By
aW50Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFBy
aW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQCiAgICAgfSB3aGlsZSAocHJpbnRlZFBh
Z2VzSGVpZ2h0IDwgZG9jSGVpZ2h0KTsKIH0KIAotdm9pZCBQcmludENvbnRleHQ6OmJlZ2luKGZs
b2F0IHdpZHRoKQordm9pZCBQcmludENvbnRleHQ6OmJlZ2luKGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpCiB7CiAgICAgQVNTRVJUKCFtX2lzUHJpbnRpbmcpOwogICAgIG1faXNQcmludGluZyA9
IHRydWU7CkBAIC0xMzUsMTEgKzEzNSwxMSBAQCB2b2lkIFByaW50Q29udGV4dDo6YmVnaW4oZmxv
YXQgd2lkdGgpCiAgICAgY29uc3QgZmxvYXQgUHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFjdG9yID0g
Mi4wZjsKIAogICAgIGZsb2F0IG1pbkxheW91dFdpZHRoID0gd2lkdGggKiBQcmludGluZ01pbmlt
dW1TaHJpbmtGYWN0b3I7Ci0gICAgZmxvYXQgbWF4TGF5b3V0V2lkdGggPSB3aWR0aCAqIFByaW50
aW5nTWF4aW11bVNocmlua0ZhY3RvcjsKKyAgICBmbG9hdCBtaW5MYXlvdXRIZWlnaHQgPSBoZWln
aHQgKiBQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3I7CiAKICAgICAvLyBGSVhNRTogVGhpcyB3
aWxsIG1vZGlmeSB0aGUgcmVuZGVyaW5nIG9mIHRoZSBvbi1zY3JlZW4gZnJhbWUuCiAgICAgLy8g
Q291bGQgbGVhZCB0byBmbGlja2VyIGR1cmluZyBwcmludGluZy4KLSAgICBtX2ZyYW1lLT5zZXRQ
cmludGluZyh0cnVlLCBtaW5MYXlvdXRXaWR0aCwgbWF4TGF5b3V0V2lkdGgsIHRydWUpOworICAg
IG1fZnJhbWUtPnNldFByaW50aW5nKHRydWUsIG1pbkxheW91dFdpZHRoLCBtaW5MYXlvdXRIZWln
aHQsIFByaW50aW5nTWF4aW11bVNocmlua0ZhY3RvciAvIFByaW50aW5nTWluaW11bVNocmlua0Zh
Y3RvciwgRnJhbWU6OkFkanVzdFZpZXdTaXplKTsKIH0KIAogdm9pZCBQcmludENvbnRleHQ6OnNw
b29sUGFnZShHcmFwaGljc0NvbnRleHQmIGN0eCwgaW50IHBhZ2VOdW1iZXIsIGZsb2F0IHdpZHRo
KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjplbmQoKQogewogICAgIEFT
U0VSVChtX2lzUHJpbnRpbmcpOwogICAgIG1faXNQcmludGluZyA9IGZhbHNlOwotICAgIG1fZnJh
bWUtPnNldFByaW50aW5nKGZhbHNlLCAwLCAwLCB0cnVlKTsKKyAgICBtX2ZyYW1lLT5zZXRQcmlu
dGluZyhmYWxzZSwgMCwgMCwgMCwgRnJhbWU6OkFkanVzdFZpZXdTaXplKTsKIH0KIAogc3RhdGlj
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBlbmNsb3NpbmdCb3hNb2RlbE9iamVjdChSZW5kZXJPYmpl
Y3QqIG9iamVjdCkKQEAgLTE4NSw4ICsxODUsMTAgQEAgaW50IFByaW50Q29udGV4dDo6cGFnZU51
bWJlckZvckVsZW1lbnQoRQogICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCkt
PmZyYW1lKCk7CiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KEZsb2F0UG9pbnQoMCwgMCksIHBhZ2VT
aXplSW5QaXhlbHMpOwogICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoZnJhbWUpOwotICAg
IHByaW50Q29udGV4dC5iZWdpbihwYWdlUmVjdC53aWR0aCgpKTsKLSAgICBwcmludENvbnRleHQu
Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShwYWdlU2l6ZUluUGl4ZWxzLCBmYWxzZSk7Cisg
ICAgcHJpbnRDb250ZXh0LmJlZ2luKHBhZ2VSZWN0LndpZHRoKCksIHBhZ2VSZWN0LmhlaWdodCgp
KTsKKyAgICBGbG9hdFNpemUgc2NhbGVkUGFnZVNpemUgPSBwYWdlU2l6ZUluUGl4ZWxzOworICAg
IHNjYWxlZFBhZ2VTaXplLnNjYWxlKGZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpLndpZHRo
KCkgLyBwYWdlUmVjdC53aWR0aCgpKTsKKyAgICBwcmludENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0
c1dpdGhQYWdlU2l6ZShzY2FsZWRQYWdlU2l6ZSwgZmFsc2UpOwogCiAgICAgaW50IHRvcCA9IGJv
eC0+b2Zmc2V0VG9wKCk7CiAgICAgaW50IGxlZnQgPSBib3gtPm9mZnNldExlZnQoKTsKQEAgLTI0
Myw4ICsyNDUsMTEgQEAgaW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZgog
CiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KEZsb2F0UG9pbnQoMCwgMCksIHBhZ2VTaXplSW5QaXhl
bHMpOwogICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoZnJhbWUpOwotICAgIHByaW50Q29u
dGV4dC5iZWdpbihwYWdlUmVjdC53aWR0aCgpKTsKLSAgICBwcmludENvbnRleHQuY29tcHV0ZVBh
Z2VSZWN0c1dpdGhQYWdlU2l6ZShwYWdlU2l6ZUluUGl4ZWxzLCBmYWxzZSk7CisgICAgcHJpbnRD
b250ZXh0LmJlZ2luKHBhZ2VSZWN0LndpZHRoKCksIHBhZ2VSZWN0LmhlaWdodCgpKTsKKyAgICAv
LyBBY2NvdW50IGZvciBzaHJpbmstdG8tZml0LgorICAgIEZsb2F0U2l6ZSBzY2FsZWRQYWdlU2l6
ZSA9IHBhZ2VTaXplSW5QaXhlbHM7CisgICAgc2NhbGVkUGFnZVNpemUuc2NhbGUoZnJhbWUtPnZp
ZXcoKS0+Y29udGVudHNTaXplKCkud2lkdGgoKSAvIHBhZ2VSZWN0LndpZHRoKCkpOworICAgIHBy
aW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKHNjYWxlZFBhZ2VTaXplLCBm
YWxzZSk7CiAgICAgcmV0dXJuIHByaW50Q29udGV4dC5wYWdlQ291bnQoKTsKIH0KIApAQCAtMjU2
LDcgKzI2MSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW4KICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKICAgICBQcmludENvbnRleHQg
cHJpbnRDb250ZXh0KGZyYW1lKTsKLSAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVNpemVJblBp
eGVscy53aWR0aCgpKTsKKyAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVNpemVJblBpeGVscy53
aWR0aCgpLCBwYWdlU2l6ZUluUGl4ZWxzLmhlaWdodCgpKTsKIAogICAgIGZsb2F0IHBhZ2VIZWln
aHQ7CiAgICAgcHJpbnRDb250ZXh0LmNvbXB1dGVQYWdlUmVjdHMoRmxvYXRSZWN0KEZsb2F0UG9p
bnQoMCwgMCksIHBhZ2VTaXplSW5QaXhlbHMpLCAwLCAwLCAxLCBwYWdlSGVpZ2h0KTsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmgJKHJldmlzaW9uIDY0NDAzKQorKysgV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUlu
UGl4ZWxzLCBib29sIGFsbG93SG9yaXpvbnRhbE11bHRpUGFnZXMpOwogCiAgICAgLy8gVE9ETzog
ZWxpbWluYXRlIHdpZHRoIHBhcmFtCi0gICAgdm9pZCBiZWdpbihmbG9hdCB3aWR0aCk7CisgICAg
dm9pZCBiZWdpbihmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0ID0gMCk7CiAKICAgICAvLyBUT0RP
OiBlbGltaW5hdGUgd2lkdGggcGFyYW0KICAgICB2b2lkIHNwb29sUGFnZShHcmFwaGljc0NvbnRl
eHQmIGN0eCwgaW50IHBhZ2VOdW1iZXIsIGZsb2F0IHdpZHRoKTsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAkocmV2aXNpb24gNjQ0MDMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEzLDcgKzE1MTMsNyBAQCB2b2lkIFJlbmRlckJv
eDo6Y2FsY0hlaWdodCgpCiAgICAgICAgICYmIChpc1Jvb3QoKSB8fCAoaXNCb2R5KCkgJiYgZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCktPnN0eWxlKCktPmhlaWdodCgp
LmlzUGVyY2VudCgpKSk7CiAgICAgaWYgKHN0cmV0Y2hlc1RvVmlld0hlaWdodCgpIHx8IHByaW50
aW5nTmVlZHNCYXNlSGVpZ2h0KSB7CiAgICAgICAgIGludCBtYXJnaW5zID0gY29sbGFwc2VkTWFy
Z2luVG9wKCkgKyBjb2xsYXBzZWRNYXJnaW5Cb3R0b20oKTsKLSAgICAgICAgaW50IHZpc0hlaWdo
dCA9IGRvY3VtZW50KCktPnByaW50aW5nKCkgPyB2aWV3KCktPmZyYW1lVmlldygpLT52aXNpYmxl
SGVpZ2h0KCkgOiB2aWV3KCktPnZpZXdIZWlnaHQoKTsKKyAgICAgICAgaW50IHZpc0hlaWdodCA9
IGRvY3VtZW50KCktPnByaW50aW5nKCkgPyB2aWV3KCktPmZyYW1lVmlldygpLT5wYWdlSGVpZ2h0
KCkgOiB2aWV3KCktPnZpZXdIZWlnaHQoKTsKICAgICAgICAgaWYgKGlzUm9vdCgpKQogICAgICAg
ICAgICAgc2V0SGVpZ2h0KG1heChoZWlnaHQoKSwgdmlzSGVpZ2h0IC0gbWFyZ2lucykpOwogICAg
ICAgICBlbHNlIHsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDQwMykKKysrIFdlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIxICsxLDMwIEBACi0yMDEwLTA3LTMwICBKb3NlcGgg
UGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisyMDEwLTA3LTMwICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKLSAgICAgICAgRml4IGZvciB0ZXN0cyB0aGF0IGJyb2tlIGFm
dGVyIHI2NDQwMC4gVHJhY2tpbmcgYSBtb3JlCi0gICAgICAgIGlkZWFsIHNvbHV0aW9uIGluIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAotICAgICAgICBTd2l0Y2ggdGhlIGludGVyZmFjZSBi
YWNrIHRvICh1bnNpZ25lZCBsb25nIGxvbmcpLCBhbmQgbW92ZQotICAgICAgICB0aGUgV2ViRGF0
YWJhc2VTZWN1cml0eU9yaWdpbiBpbXBsZW1lbnRhdGlvbiB1cCBpbnRvIFdlYlNlY3VyaXR5T3Jp
Z2luLgotICAgICAgICBUaGUgc3ViY2xhc3NlcycgaW1wbGVtZW50YXRpb25zIHdlcmUgbm90IGdl
dHRpbmcgY2FsbGVkLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODI1Nzc4Mz4gU2hvcnQgZG9j
dW1lbnRzIG1heSBwcmludCBhIHNlY29uZCBibGFuayBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzI3MQogCi0gICAgICAgICogU3RvcmFnZS9X
ZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLm1tOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5tbToKLSAgICAgICAgKC1bV2ViQXBwbGlj
YXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luIHF1b3RhXSk6Ci0gICAgICAgICgtW1dlYkFwcGxpY2F0
aW9uQ2FjaGVTZWN1cml0eU9yaWdpbiBzZXRRdW90YTpdKToKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKLSAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4g
dXNhZ2VdKToKLSAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gcXVvdGFdKToKLSAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gc2V0UXVvdGE6XSk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dlYl9zZXRQcmludGluZ01vZGVSZWN1
cnNpdmVdKTogVXBkYXRlZCBmb3IgYWRkaXRpb25hbCBoZWlnaHQgcGFyYW1ldGVyCisgICAgICAg
IHRvIF9zZXRQcmludGluZzptaW5pbXVtUGFnZVdpZHRoOmhlaWdodDptYXhpbXVtUGFnZVdpZHRo
OmFkanVzdFZpZXdTaXplOi4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dlYl9jbGVhclByaW50
aW5nTW9kZVJlY3Vyc2l2ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dlYl9z
ZXRQcmludGluZ01vZGVSZWN1cnNpdmVBbmRBZGp1c3RWaWV3U2l6ZV0pOiBEaXR0by4KKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgX2JlZ2luUHJpbnRNb2RlV2l0aFBhZ2VXaWR0aDpoZWlnaHQ6c2hy
aW5rVG9GaXQ6XSk6IEFkZGVkIGhlaWdodCBwYXJhbWV0ZXIsCisgICAgICAgIHdoaWNoIGlzIHNj
YWxlZCBhbmQgcGFzc2VkIG9uIHRvIF9zZXRQcmludGluZzptaW5pbXVtUGFnZVdpZHRoOmhlaWdo
dDptYXhpbXVtUGFnZVdpZHRoOmFkanVzdFZpZXdTaXplOi4KKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgX2VuZFByaW50TW9kZV0pOiBVcGRhdGVkIGZvciBhZGRpdGlvbmFsIGhlaWdodCBwYXJhbWV0
ZXIgdG8KKyAgICAgICAgX3NldFByaW50aW5nOm1pbmltdW1QYWdlV2lkdGg6aGVpZ2h0Om1heGlt
dW1QYWdlV2lkdGg6YWRqdXN0Vmlld1NpemU6LgorICAgICAgICAoLVtXZWJIVE1MVmlldyBsYXlv
dXRUb01pbmltdW1QYWdlV2lkdGg6aGVpZ2h0Om1heGltdW1QYWdlV2lkdGg6YWRqdXN0aW5nVmll
d1NpemU6XSk6IEFkZGVkCisgICAgICAgIGhlaWdodCBwYXJhbWV0ZXIsIHdoaWNoIGlzIHBhc3Nl
ZCBvbiB0byBGcmFtZVZpZXc6OmZvcmNlTGF5b3V0Rm9yUGFnaW5hdGlvbigpLgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBsYXlvdXRdKTogVXBkYXRlZCBmb3IgYWRkaXRpb25hbCBoZWlnaHQgcGFy
YW1ldGVyLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2V0UHJpbnRpbmc6bWluaW11bVBhZ2VX
aWR0aDpoZWlnaHQ6bWF4aW11bVBhZ2VXaWR0aDphZGp1c3RWaWV3U2l6ZTpdKTogQWRkZWQgaGVp
Z2h0CisgICAgICAgIHBhcmFtZXRlciwgd2hpY2ggaXMgcGFzc2VkIG9uIHRvIC1sYXlvdXRUb01p
bmltdW1QYWdlV2lkdGg6aGVpZ2h0Om1heGltdW1QYWdlV2lkdGg6YWRqdXN0Vmlld1NpemU6Lgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBhZGp1c3RQYWdlSGVpZ2h0TmV3OnRvcDpib3R0b206bGlt
aXQ6XSk6IFVwZGF0ZWQgZm9yIGFkZGl0aW9uYWwgaGVpZ2h0CisgICAgICAgIHBhcmFtZXRlci4K
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0UGFnZVdpZHRoRm9yUHJpbnRpbmc6XSk6IERpdHRv
LgorICAgICAgICAoLVtXZWJIVE1MVmlldyBrbm93c1BhZ2VSYW5nZTpdKTogUGFzcyB0aGUgYXZh
aWxhYmxlIGhlaWdodCBvbiB0aGUgcGFnZSBvbiB0bworICAgICAgICBfc2V0UHJpbnRpbmc6bWlu
aW11bVBhZ2VXaWR0aDpoZWlnaHQ6bWF4aW11bVBhZ2VXaWR0aDphZGp1c3RWaWV3U2l6ZS4KKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3UHJpdmF0ZS5oOiAKIAogMjAxMC0wNy0zMCAgSm9z
ZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCkluZGV4OiBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCShyZXZpc2lvbiA2NDQwMykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzk5LDcgKzM5OSw3IEBAIC0gKHZvaWQpdG9n
Z2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW8KICNlbmRpZgogCiBAaW50ZXJmYWNlIFdlYkhU
TUxWaWV3IChXZWJGb3J3YXJkRGVjbGFyYXRpb24pIC8vIEZJWE1FOiBQdXQgdGhpcyBpbiBhIG5v
cm1hbCBjYXRlZ29yeSBhbmQgc3RvcCBkb2luZyB0aGUgZm9yd2FyZCBkZWNsYXJhdGlvbiB0cmlj
ay4KLS0gKHZvaWQpX3NldFByaW50aW5nOihCT09MKXByaW50aW5nIG1pbmltdW1QYWdlV2lkdGg6
KGZsb2F0KW1pblBhZ2VXaWR0aCBtYXhpbXVtUGFnZVdpZHRoOihmbG9hdCltYXhQYWdlV2lkdGgg
YWRqdXN0Vmlld1NpemU6KEJPT0wpYWRqdXN0Vmlld1NpemU7CistICh2b2lkKV9zZXRQcmludGlu
ZzooQk9PTClwcmludGluZyBtaW5pbXVtUGFnZVdpZHRoOihmbG9hdCltaW5QYWdlV2lkdGggaGVp
Z2h0OihmbG9hdCltaW5QYWdlSGVpZ2h0IG1heGltdW1QYWdlV2lkdGg6KGZsb2F0KW1heFBhZ2VX
aWR0aCBhZGp1c3RWaWV3U2l6ZTooQk9PTClhZGp1c3RWaWV3U2l6ZTsKIEBlbmQKIAogQGNsYXNz
IE5TVGV4dElucHV0Q29udGV4dDsKQEAgLTEwNDAsNyArMTA0MCw3IEBAIC0gKEJPT0wpX2lzVG9w
SFRNTFZpZXcKIAogLSAodm9pZClfd2ViX3NldFByaW50aW5nTW9kZVJlY3Vyc2l2ZQogewotICAg
IFtzZWxmIF9zZXRQcmludGluZzpZRVMgbWluaW11bVBhZ2VXaWR0aDowLjBmIG1heGltdW1QYWdl
V2lkdGg6MC4wZiBhZGp1c3RWaWV3U2l6ZTpOT107CisgICAgW3NlbGYgX3NldFByaW50aW5nOllF
UyBtaW5pbXVtUGFnZVdpZHRoOjAgaGVpZ2h0OjAgbWF4aW11bVBhZ2VXaWR0aDowIGFkanVzdFZp
ZXdTaXplOk5PXTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBfcHJpdmF0ZS0+ZW51bWVyYXRpbmdT
dWJ2aWV3cyA9IFlFUzsKQEAgLTEwNTIsNyArMTA1Miw3IEBAIC0gKHZvaWQpX3dlYl9zZXRQcmlu
dGluZ01vZGVSZWN1cnNpdmUKIAogICAgIHVuc2lnbmVkIGNvdW50ID0gW2Rlc2NlbmRhbnRXZWJI
VE1MVmlld3MgY291bnRdOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytp
KQotICAgICAgICBbW2Rlc2NlbmRhbnRXZWJIVE1MVmlld3Mgb2JqZWN0QXRJbmRleDppXSBfc2V0
UHJpbnRpbmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYg
YWRqdXN0Vmlld1NpemU6Tk9dOworICAgICAgICBbW2Rlc2NlbmRhbnRXZWJIVE1MVmlld3Mgb2Jq
ZWN0QXRJbmRleDppXSBfc2V0UHJpbnRpbmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6MCBoZWlnaHQ6
MCBtYXhpbXVtUGFnZVdpZHRoOjAgYWRqdXN0Vmlld1NpemU6Tk9dOwogCiAgICAgW2Rlc2NlbmRh
bnRXZWJIVE1MVmlld3MgcmVsZWFzZV07CiAKQEAgLTEwNjMsNyArMTA2Myw3IEBAIC0gKHZvaWQp
X3dlYl9zZXRQcmludGluZ01vZGVSZWN1cnNpdmUKIAogLSAodm9pZClfd2ViX2NsZWFyUHJpbnRp
bmdNb2RlUmVjdXJzaXZlCiB7Ci0gICAgW3NlbGYgX3NldFByaW50aW5nOk5PIG1pbmltdW1QYWdl
V2lkdGg6MC4wZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6Tk9dOworICAg
IFtzZWxmIF9zZXRQcmludGluZzpOTyBtaW5pbXVtUGFnZVdpZHRoOjAgaGVpZ2h0OjAgbWF4aW11
bVBhZ2VXaWR0aDowIGFkanVzdFZpZXdTaXplOk5PXTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBf
cHJpdmF0ZS0+ZW51bWVyYXRpbmdTdWJ2aWV3cyA9IFlFUzsKQEAgLTEwNzUsNyArMTA3NSw3IEBA
IC0gKHZvaWQpX3dlYl9jbGVhclByaW50aW5nTW9kZVJlY3Vyc2l2ZQogCiAgICAgdW5zaWduZWQg
Y291bnQgPSBbZGVzY2VuZGFudFdlYkhUTUxWaWV3cyBjb3VudF07CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIFtbZGVzY2VuZGFudFdlYkhUTUxWaWV3
cyBvYmplY3RBdEluZGV4OmldIF9zZXRQcmludGluZzpOTyBtaW5pbXVtUGFnZVdpZHRoOjAuMGYg
bWF4aW11bVBhZ2VXaWR0aDowLjBmIGFkanVzdFZpZXdTaXplOk5PXTsKKyAgICAgICAgW1tkZXNj
ZW5kYW50V2ViSFRNTFZpZXdzIG9iamVjdEF0SW5kZXg6aV0gX3NldFByaW50aW5nOk5PIG1pbmlt
dW1QYWdlV2lkdGg6MCBoZWlnaHQ6MCBtYXhpbXVtUGFnZVdpZHRoOjAgYWRqdXN0Vmlld1NpemU6
Tk9dOwogCiAgICAgW2Rlc2NlbmRhbnRXZWJIVE1MVmlld3MgcmVsZWFzZV07CiAKQEAgLTEwODYs
NyArMTA4Niw3IEBAIC0gKHZvaWQpX3dlYl9jbGVhclByaW50aW5nTW9kZVJlY3Vyc2l2ZQogCiAt
ICh2b2lkKV93ZWJfc2V0UHJpbnRpbmdNb2RlUmVjdXJzaXZlQW5kQWRqdXN0Vmlld1NpemUKIHsK
LSAgICBbc2VsZiBfc2V0UHJpbnRpbmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVt
UGFnZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6WUVTXTsKKyAgICBbc2VsZiBfc2V0UHJpbnRp
bmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6MCBoZWlnaHQ6MCBtYXhpbXVtUGFnZVdpZHRoOjAgYWRq
dXN0Vmlld1NpemU6WUVTXTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBfcHJpdmF0ZS0+ZW51bWVy
YXRpbmdTdWJ2aWV3cyA9IFlFUzsKQEAgLTEwOTgsNyArMTA5OCw3IEBAIC0gKHZvaWQpX3dlYl9z
ZXRQcmludGluZ01vZGVSZWN1cnNpdmVBbmQKIAogICAgIHVuc2lnbmVkIGNvdW50ID0gW2Rlc2Nl
bmRhbnRXZWJIVE1MVmlld3MgY291bnRdOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
b3VudDsgKytpKQotICAgICAgICBbW2Rlc2NlbmRhbnRXZWJIVE1MVmlld3Mgb2JqZWN0QXRJbmRl
eDppXSBfc2V0UHJpbnRpbmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVtUGFnZVdp
ZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6WUVTXTsKKyAgICAgICAgW1tkZXNjZW5kYW50V2ViSFRN
TFZpZXdzIG9iamVjdEF0SW5kZXg6aV0gX3NldFByaW50aW5nOllFUyBtaW5pbXVtUGFnZVdpZHRo
OjAgaGVpZ2h0OjAgbWF4aW11bVBhZ2VXaWR0aDowIGFkanVzdFZpZXdTaXplOllFU107CiAKICAg
ICBbZGVzY2VuZGFudFdlYkhUTUxWaWV3cyByZWxlYXNlXTsKIApAQCAtMjIzMCwyOSArMjIzMCwz
MSBAQCAtIChCT09MKV9pc0luUHJpbnRNb2RlCiAgICAgcmV0dXJuIF9wcml2YXRlLT5wcmludGlu
ZzsKIH0KIAotLSAoQk9PTClfYmVnaW5QcmludE1vZGVXaXRoUGFnZVdpZHRoOihmbG9hdClwYWdl
V2lkdGggc2hyaW5rVG9GaXQ6KEJPT0wpc2hyaW5rVG9GaXQKKy0gKEJPT0wpX2JlZ2luUHJpbnRN
b2RlV2l0aFBhZ2VXaWR0aDooZmxvYXQpcGFnZVdpZHRoIGhlaWdodDooZmxvYXQpcGFnZUhlaWdo
dCBzaHJpbmtUb0ZpdDooQk9PTClzaHJpbmtUb0ZpdAogewogICAgIEZyYW1lKiBmcmFtZSA9IGNv
cmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIE5POwog
CiAgICAgZmxvYXQgbWluTGF5b3V0V2lkdGggPSAwOworICAgIGZsb2F0IG1pbkxheW91dEhlaWdo
dCA9IDA7CiAgICAgZmxvYXQgbWF4TGF5b3V0V2lkdGggPSAwOwogCiAgICAgLy8gSWYgd2UgYXJl
IGEgZnJhbWVzZXQganVzdCBwcmludCB3aXRoIHRoZSBsYXlvdXQgd2UgaGF2ZSBvbnNjcmVlbiwg
b3RoZXJ3aXNlIHJlbGF5b3V0CiAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBwYWdlIHdpZHRoLgog
ICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5pc0ZyYW1l
U2V0KCkpIHsKICAgICAgICAgbWluTGF5b3V0V2lkdGggPSBzaHJpbmtUb0ZpdCA/IHBhZ2VXaWR0
aCAqIF9XZWJIVE1MVmlld1ByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciA6IHBhZ2VXaWR0aDsK
KyAgICAgICAgbWluTGF5b3V0SGVpZ2h0ID0gc2hyaW5rVG9GaXQgPyBwYWdlSGVpZ2h0ICogX1dl
YkhUTUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yIDogcGFnZUhlaWdodDsKICAgICAg
ICAgbWF4TGF5b3V0V2lkdGggPSBzaHJpbmtUb0ZpdCA/IHBhZ2VXaWR0aCAqIF9XZWJIVE1MVmll
d1ByaW50aW5nTWF4aW11bVNocmlua0ZhY3RvciA6IHBhZ2VXaWR0aDsKICAgICB9Ci0gICAgW3Nl
bGYgX3NldFByaW50aW5nOllFUyBtaW5pbXVtUGFnZVdpZHRoOm1pbkxheW91dFdpZHRoIG1heGlt
dW1QYWdlV2lkdGg6bWF4TGF5b3V0V2lkdGggYWRqdXN0Vmlld1NpemU6WUVTXTsKKyAgICBbc2Vs
ZiBfc2V0UHJpbnRpbmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6bWluTGF5b3V0V2lkdGggaGVpZ2h0
Om1pbkxheW91dEhlaWdodCBtYXhpbXVtUGFnZVdpZHRoOm1heExheW91dFdpZHRoIGFkanVzdFZp
ZXdTaXplOllFU107CiAKICAgICByZXR1cm4gWUVTOwogfQogCiAtICh2b2lkKV9lbmRQcmludE1v
ZGUKIHsKLSAgICBbc2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VXaWR0aDowIG1heGlt
dW1QYWdlV2lkdGg6MCBhZGp1c3RWaWV3U2l6ZTpZRVNdOworICAgIFtzZWxmIF9zZXRQcmludGlu
ZzpOTyBtaW5pbXVtUGFnZVdpZHRoOjAgaGVpZ2h0OjAgbWF4aW11bVBhZ2VXaWR0aDowIGFkanVz
dFZpZXdTaXplOllFU107CiB9CiAKIC0gKENHRmxvYXQpX2FkanVzdGVkQm90dG9tT2ZQYWdlV2l0
aFRvcDooQ0dGbG9hdCl0b3AgYm90dG9tOihDR0Zsb2F0KWJvdHRvbSBsaW1pdDooQ0dGbG9hdCli
b3R0b21MaW1pdApAQCAtMzEwNCw3ICszMTA2LDcgQEAgLSAodm9pZClyZWFwcGx5U3R5bGVzCiAK
IC8vIERvIGEgbGF5b3V0LCBidXQgc2V0IHVwIGEgbmV3IGZpeGVkIHdpZHRoIGZvciB0aGUgcHVy
cG9zZXMgb2YgZG9pbmcgcHJpbnRpbmcgbGF5b3V0LgogLy8gbWluUGFnZVdpZHRoPT0wIGltcGxp
ZXMgYSBub24tcHJpbnRpbmcgbGF5b3V0Ci0tICh2b2lkKWxheW91dFRvTWluaW11bVBhZ2VXaWR0
aDooZmxvYXQpbWluUGFnZVdpZHRoIG1heGltdW1QYWdlV2lkdGg6KGZsb2F0KW1heFBhZ2VXaWR0
aCBhZGp1c3RpbmdWaWV3U2l6ZTooQk9PTClhZGp1c3RWaWV3U2l6ZQorLSAodm9pZClsYXlvdXRU
b01pbmltdW1QYWdlV2lkdGg6KGZsb2F0KW1pblBhZ2VXaWR0aCBoZWlnaHQ6KGZsb2F0KW1pblBh
Z2VIZWlnaHQgbWF4aW11bVBhZ2VXaWR0aDooZmxvYXQpbWF4UGFnZVdpZHRoIGFkanVzdGluZ1Zp
ZXdTaXplOihCT09MKWFkanVzdFZpZXdTaXplCiB7CiAgICAgW3NlbGYgcmVhcHBseVN0eWxlc107
CiAgICAgCkBAIC0zMTIzLDcgKzMxMjUsNyBAQCAtICh2b2lkKWxheW91dFRvTWluaW11bVBhZ2VX
aWR0aDooZmxvYXQpCiAKICAgICBpZiAoRnJhbWVWaWV3KiBjb3JlVmlldyA9IGNvcmVGcmFtZS0+
dmlldygpKSB7CiAgICAgICAgIGlmIChtaW5QYWdlV2lkdGggPiAwLjApCi0gICAgICAgICAgICBj
b3JlVmlldy0+Zm9yY2VMYXlvdXRXaXRoUGFnZVdpZHRoUmFuZ2UobWluUGFnZVdpZHRoLCBtYXhQ
YWdlV2lkdGgsIGFkanVzdFZpZXdTaXplKTsKKyAgICAgICAgICAgIGNvcmVWaWV3LT5mb3JjZUxh
eW91dEZvclBhZ2luYXRpb24obWluUGFnZVdpZHRoLCBtaW5QYWdlSGVpZ2h0LCBtYXhQYWdlV2lk
dGggLyBtaW5QYWdlV2lkdGgsIGFkanVzdFZpZXdTaXplID8gRnJhbWU6OkFkanVzdFZpZXdTaXpl
IDogRnJhbWU6OkRvTm90QWRqdXN0Vmlld1NpemUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGNvcmVWaWV3LT5mb3JjZUxheW91dCghYWRqdXN0Vmlld1NpemUpOwogICAgICAgICAgICAg
aWYgKGFkanVzdFZpZXdTaXplKQpAQCAtMzEzOSw3ICszMTQxLDcgQEAgLSAodm9pZClsYXlvdXRU
b01pbmltdW1QYWdlV2lkdGg6KGZsb2F0KQogCiAtICh2b2lkKWxheW91dAogewotICAgIFtzZWxm
IGxheW91dFRvTWluaW11bVBhZ2VXaWR0aDowLjBmIG1heGltdW1QYWdlV2lkdGg6MC4wZiBhZGp1
c3RpbmdWaWV3U2l6ZTpOT107CisgICAgW3NlbGYgbGF5b3V0VG9NaW5pbXVtUGFnZVdpZHRoOjAg
aGVpZ2h0OjAgbWF4aW11bVBhZ2VXaWR0aDowIGFkanVzdGluZ1ZpZXdTaXplOk5PXTsKIH0KIAog
Ly8gRGVsaXZlciBtb3VzZXVwIGV2ZW50cyB0byB0aGUgRE9NIGZvciBidXR0b24gMi4KQEAgLTM4
MjAsNyArMzgyMiw3IEBAIC0gKHZvaWQpdXBkYXRlQ2VsbDooTlNDZWxsKiljZWxsCiAKIC8vIERv
ZXMgc2V0TmVlZHNEaXNwbGF5Ok5PIGFzIGEgc2lkZSBlZmZlY3Qgd2hlbiBwcmludGluZyBpcyBl
bmRpbmcuCiAvLyBwYWdlV2lkdGggIT0gMCBpbXBsaWVzIHdlIHdpbGwgcmVsYXlvdXQgdG8gYSBu
ZXcgd2lkdGgKLS0gKHZvaWQpX3NldFByaW50aW5nOihCT09MKXByaW50aW5nIG1pbmltdW1QYWdl
V2lkdGg6KGZsb2F0KW1pblBhZ2VXaWR0aCBtYXhpbXVtUGFnZVdpZHRoOihmbG9hdCltYXhQYWdl
V2lkdGggYWRqdXN0Vmlld1NpemU6KEJPT0wpYWRqdXN0Vmlld1NpemUKKy0gKHZvaWQpX3NldFBy
aW50aW5nOihCT09MKXByaW50aW5nIG1pbmltdW1QYWdlV2lkdGg6KGZsb2F0KW1pblBhZ2VXaWR0
aCBoZWlnaHQ6KGZsb2F0KW1pblBhZ2VIZWlnaHQgbWF4aW11bVBhZ2VXaWR0aDooZmxvYXQpbWF4
UGFnZVdpZHRoIGFkanVzdFZpZXdTaXplOihCT09MKWFkanVzdFZpZXdTaXplCiB7CiAgICAgV2Vi
RnJhbWUgKmZyYW1lID0gW3NlbGYgX2ZyYW1lXTsKICAgICBOU0FycmF5ICpzdWJmcmFtZXMgPSBb
ZnJhbWUgY2hpbGRGcmFtZXNdOwpAQCAtMzgzMCw3ICszODMyLDcgQEAgLSAodm9pZClfc2V0UHJp
bnRpbmc6KEJPT0wpcHJpbnRpbmcgbWluaQogICAgICAgICBXZWJGcmFtZSAqc3ViZnJhbWUgPSBb
c3ViZnJhbWVzIG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAgIFdlYkZyYW1lVmlldyAqZnJhbWVW
aWV3ID0gW3N1YmZyYW1lIGZyYW1lVmlld107CiAgICAgICAgIGlmIChbW3N1YmZyYW1lIF9kYXRh
U291cmNlXSBfaXNEb2N1bWVudEhUTUxdKSB7Ci0gICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICop
W2ZyYW1lVmlldyBkb2N1bWVudFZpZXddIF9zZXRQcmludGluZzpwcmludGluZyBtaW5pbXVtUGFn
ZVdpZHRoOjAuMGYgbWF4aW11bVBhZ2VXaWR0aDowLjBmIGFkanVzdFZpZXdTaXplOmFkanVzdFZp
ZXdTaXplXTsKKyAgICAgICAgICAgIFsoV2ViSFRNTFZpZXcgKilbZnJhbWVWaWV3IGRvY3VtZW50
Vmlld10gX3NldFByaW50aW5nOnByaW50aW5nIG1pbmltdW1QYWdlV2lkdGg6MCBoZWlnaHQ6MCBt
YXhpbXVtUGFnZVdpZHRoOjAgYWRqdXN0Vmlld1NpemU6YWRqdXN0Vmlld1NpemVdOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0zODQyLDcgKzM4NDQsNyBAQCAtICh2b2lkKV9zZXRQcmludGluZzoo
Qk9PTClwcmludGluZyBtaW5pCiAgICAgICAgICAgICBfcHJpdmF0ZS0+YXZvaWRpbmdQcmludE9y
cGhhbiA9IE5POwogICAgICAgICBbc2VsZiBzZXROZWVkc1RvQXBwbHlTdHlsZXM6WUVTXTsKICAg
ICAgICAgW3NlbGYgc2V0TmVlZHNMYXlvdXQ6WUVTXTsKLSAgICAgICAgW3NlbGYgbGF5b3V0VG9N
aW5pbXVtUGFnZVdpZHRoOm1pblBhZ2VXaWR0aCBtYXhpbXVtUGFnZVdpZHRoOm1heFBhZ2VXaWR0
aCBhZGp1c3RpbmdWaWV3U2l6ZTphZGp1c3RWaWV3U2l6ZV07CisgICAgICAgIFtzZWxmIGxheW91
dFRvTWluaW11bVBhZ2VXaWR0aDptaW5QYWdlV2lkdGggaGVpZ2h0Om1pblBhZ2VIZWlnaHQgbWF4
aW11bVBhZ2VXaWR0aDptYXhQYWdlV2lkdGggYWRqdXN0aW5nVmlld1NpemU6YWRqdXN0Vmlld1Np
emVdOwogICAgICAgICBpZiAoIXByaW50aW5nKSB7CiAgICAgICAgICAgICAvLyBDYW4ndCBkbyB0
aGlzIHdoZW4gc3RhcnRpbmcgcHJpbnRpbmcgb3IgbmVzdGVkIHByaW50aW5nIHdvbid0IHdvcmss
IHNlZSAzNDkxNDI3LgogICAgICAgICAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5Ok5PXTsKQEAg
LTM4NjMsNyArMzg2NSw3IEBAIC0gKHZvaWQpYWRqdXN0UGFnZUhlaWdodE5ldzooQ0dGbG9hdCAq
KW4KICAgICAvLyBJZiB0aGUgV2ViSFRNTFZpZXcgaXRzZWxmIGlzIHdoYXQgd2UncmUgcHJpbnRp
bmcsIHRoZW4gd2Ugd2lsbCBuZXZlciBoYXZlIHRvIGRvIHRoaXMuCiAgICAgQk9PTCB3YXNJblBy
aW50aW5nTW9kZSA9IF9wcml2YXRlLT5wcmludGluZzsKICAgICBpZiAoIXdhc0luUHJpbnRpbmdN
b2RlKQotICAgICAgICBbc2VsZiBfc2V0UHJpbnRpbmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6MC4w
ZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6Tk9dOworICAgICAgICBbc2Vs
ZiBfc2V0UHJpbnRpbmc6WUVTIG1pbmltdW1QYWdlV2lkdGg6MCBoZWlnaHQ6MCBtYXhpbXVtUGFn
ZVdpZHRoOjAgYWRqdXN0Vmlld1NpemU6Tk9dOwogCiAgICAgKm5ld0JvdHRvbSA9IFtzZWxmIF9h
ZGp1c3RlZEJvdHRvbU9mUGFnZVdpdGhUb3A6b2xkVG9wIGJvdHRvbTpvbGRCb3R0b20gbGltaXQ6
Ym90dG9tTGltaXRdOwogCkBAIC0zODc0LDcgKzM4NzYsNyBAQCAtICh2b2lkKWFkanVzdFBhZ2VI
ZWlnaHROZXc6KENHRmxvYXQgKiluCiAgICAgICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6
QHNlbGVjdG9yKF9kZWxheWVkRW5kUHJpbnRNb2RlOikgd2l0aE9iamVjdDpjdXJyZW5QcmludE9w
ZXJhdGlvbiBhZnRlckRlbGF5OjBdOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAvLyBub3Qg
c3VyZSBpZiB0aGlzIGlzIGFjdHVhbGx5IGV2ZXIgaW52b2tlZCwgaXQgcHJvYmFibHkgc2hvdWxk
bid0IGJlCi0gICAgICAgICAgICBbc2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VXaWR0
aDowLjBmIG1heGltdW1QYWdlV2lkdGg6MC4wZiBhZGp1c3RWaWV3U2l6ZTpOT107CisgICAgICAg
ICAgICBbc2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VXaWR0aDowIGhlaWdodDowIG1h
eGltdW1QYWdlV2lkdGg6MCBhZGp1c3RWaWV3U2l6ZTpOT107CiAgICAgfQogfQogCkBAIC0zOTA0
LDggKzM5MDYsOCBAQCAtIChDR0Zsb2F0KV9wcm92aWRlVG90YWxTY2FsZUZhY3RvckZvclByCiAv
LyBUaGlzIGlzIHVzZWQgZm9yIENhcmJvbiBwcmludGluZy4gQXQgc29tZSBwb2ludCB3ZSBtaWdo
dCB3YW50IHRvIG1ha2UgdGhpcyBwdWJsaWMgQVBJLgogLSAodm9pZClzZXRQYWdlV2lkdGhGb3JQ
cmludGluZzooZmxvYXQpcGFnZVdpZHRoCiB7Ci0gICAgW3NlbGYgX3NldFByaW50aW5nOk5PIG1p
bmltdW1QYWdlV2lkdGg6MC4wZiBtYXhpbXVtUGFnZVdpZHRoOjAuMGYgYWRqdXN0Vmlld1NpemU6
Tk9dOwotICAgIFtzZWxmIF9zZXRQcmludGluZzpZRVMgbWluaW11bVBhZ2VXaWR0aDpwYWdlV2lk
dGggbWF4aW11bVBhZ2VXaWR0aDpwYWdlV2lkdGggYWRqdXN0Vmlld1NpemU6WUVTXTsKKyAgICBb
c2VsZiBfc2V0UHJpbnRpbmc6Tk8gbWluaW11bVBhZ2VXaWR0aDowIGhlaWdodDowIG1heGltdW1Q
YWdlV2lkdGg6MCBhZGp1c3RWaWV3U2l6ZTpOT107CisgICAgW3NlbGYgX3NldFByaW50aW5nOllF
UyBtaW5pbXVtUGFnZVdpZHRoOnBhZ2VXaWR0aCBoZWlnaHQ6MCBtYXhpbXVtUGFnZVdpZHRoOnBh
Z2VXaWR0aCBhZGp1c3RWaWV3U2l6ZTpZRVNdOwogfQogCiAtICh2b2lkKV9lbmRQcmludE1vZGVB
bmRSZXN0b3JlV2luZG93QXV0b2Rpc3BsYXkKQEAgLTM5NDgsOCArMzk1MCw5IEBAIC0gKEJPT0wp
a25vd3NQYWdlUmFuZ2U6KE5TUmFuZ2VQb2ludGVyKXIKICAgICBbc2VsZiBkaXNwbGF5SWZOZWVk
ZWRdOwogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5Ok5PXTsgICAgCiAKKyAgICBb
W3NlbGYgX3dlYlZpZXddIF9hZGp1c3RQcmludGluZ01hcmdpbnNGb3JIZWFkZXJBbmRGb290ZXJd
OwogICAgIE5TUHJpbnRPcGVyYXRpb24gKnByaW50T3BlcmF0aW9uID0gW05TUHJpbnRPcGVyYXRp
b24gY3VycmVudE9wZXJhdGlvbl07Ci0gICAgaWYgKCFbc2VsZiBfYmVnaW5QcmludE1vZGVXaXRo
UGFnZVdpZHRoOltwcmludE9wZXJhdGlvbiBfd2ViX2F2YWlsYWJsZVBhcGVyV2lkdGhdIHNocmlu
a1RvRml0OllFU10pCisgICAgaWYgKCFbc2VsZiBfYmVnaW5QcmludE1vZGVXaXRoUGFnZVdpZHRo
OltwcmludE9wZXJhdGlvbiBfd2ViX2F2YWlsYWJsZVBhcGVyV2lkdGhdIGhlaWdodDpbcHJpbnRP
cGVyYXRpb24gX3dlYl9hdmFpbGFibGVQYXBlckhlaWdodF0gc2hyaW5rVG9GaXQ6WUVTXSkKICAg
ICAgICAgcmV0dXJuIE5POwogCiAgICAgLy8gQ2VydGFpbiB0eXBlcyBvZiBlcnJvcnMsIGluY2x1
ZGluZyBpbnZhbGlkIHBhZ2UgcmFuZ2VzLCBjYW4gY2F1c2UgYmVnaW5Eb2N1bWVudCBhbmQKQEAg
LTM5NTksNyArMzk2Miw2IEBAIC0gKEJPT0wpa25vd3NQYWdlUmFuZ2U6KE5TUmFuZ2VQb2ludGVy
KXIKICAgICAvLyBJZiBub3QgY2FuY2VsbGVkLCB0aGlzIGRlbGF5ZWQgY2FsbCB3aWxsIGJlIGlu
dm9rZWQgaW4gdGhlIG5leHQgcGFzcyB0aHJvdWdoIHRoZSBtYWluIGV2ZW50IGxvb3AsCiAgICAg
Ly8gd2hpY2ggaXMgYWZ0ZXIgYmVnaW5Eb2N1bWVudCBhbmQgZW5kRG9jdW1lbnQgd291bGQgYmUg
Y2FsbGVkLgogICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2RlbGF5ZWRFbmRQ
cmludE1vZGU6KSB3aXRoT2JqZWN0OnByaW50T3BlcmF0aW9uIGFmdGVyRGVsYXk6MF07Ci0gICAg
W1tzZWxmIF93ZWJWaWV3XSBfYWRqdXN0UHJpbnRpbmdNYXJnaW5zRm9ySGVhZGVyQW5kRm9vdGVy
XTsKICAgICAKICAgICAvLyBUaGVyZSBpcyBhIHRoZW9yZXRpY2FsIGNoYW5jZSB0aGF0IHNvbWVv
bmUgY291bGQgZG8gc29tZSBkcmF3aW5nIGJldHdlZW4gaGVyZSBhbmQgZW5kRG9jdW1lbnQsCiAg
ICAgLy8gaWYgc29tZXRoaW5nIGNhdXNlZCBzZXROZWVkc0Rpc3BsYXkgYWZ0ZXIgdGhpcyBwb2lu
dC4gSWYgc28sIGl0J3Mgbm90IGEgYmlnIHRyYWdlZHksIGJlY2F1c2UKSW5kZXg6IFdlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDY0NDAzKQorKysgV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUs
NyArMTM1LDcgQEAgQGludGVyZmFjZSBXZWJIVE1MVmlldyAoV2ViUHJpdmF0ZSkKIC0gKHZvaWQp
X2xheW91dEZvclByaW50aW5nOwogLSAoV2ViQ0dGbG9hdClfYWRqdXN0ZWRCb3R0b21PZlBhZ2VX
aXRoVG9wOihXZWJDR0Zsb2F0KXRvcCBib3R0b206KFdlYkNHRmxvYXQpYm90dG9tIGxpbWl0OihX
ZWJDR0Zsb2F0KWJvdHRvbUxpbWl0OwogLSAoQk9PTClfaXNJblByaW50TW9kZTsKLS0gKEJPT0wp
X2JlZ2luUHJpbnRNb2RlV2l0aFBhZ2VXaWR0aDooZmxvYXQpcGFnZVdpZHRoIHNocmlua1RvRml0
OihCT09MKXNocmlua1RvRml0OworLSAoQk9PTClfYmVnaW5QcmludE1vZGVXaXRoUGFnZVdpZHRo
OihmbG9hdClwYWdlV2lkdGggaGVpZ2h0OihmbG9hdClwYWdlSGVpZ2h0IHNocmlua1RvRml0OihC
T09MKXNocmlua1RvRml0OwogLSAodm9pZClfZW5kUHJpbnRNb2RlOwogCiAtIChCT09MKV9jYW5T
bWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZDsKSW5k
ZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdl
TG9nCShyZXZpc2lvbiA2NDQwMykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDctMzAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODI1Nzc4Mz4gU2hvcnQgZG9jdW1lbnRzIG1heSBwcmludCBhIHNl
Y29uZCBibGFuayBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MzI3MQorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJh
bWU6OnNldFByaW50aW5nKTogVXBkYXRlZCBmb3IgY2hhbmdlcyB0byBGcmFtZTo6c2V0UHJpbnRp
bmcoKS4gUGFzc2luZyAwIGZvciB0aGUKKyAgICAgICAgcGFnZSBoZWlnaHQsIHdoaWNoIG1haW50
YWlucyBleGlzdGluZyBiZWhhdmlvci4KKwogMjAxMC0wNy0zMCAgSm9zZXBoIFBlY29yYXJvICA8
am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4K
SW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViRnJhbWUuY3BwCShyZXZpc2lvbiA2NDQwMykKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTM5LDcgKzE5MzksNyBAQCB2b2lkIFdlYkZyYW1lOjpzZXRQ
cmludGluZyhib29sIHByaW50aW5nCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhp
cyk7CiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7Ci0gICAgY29yZUZyYW1lLT5zZXRQcmludGluZyhw
cmludGluZywgbWluUGFnZVdpZHRoLCBtYXhQYWdlV2lkdGgsIGFkanVzdFZpZXdTaXplKTsKKyAg
ICBjb3JlRnJhbWUtPnNldFByaW50aW5nKHByaW50aW5nLCBtaW5QYWdlV2lkdGgsIDAsIG1heFBh
Z2VXaWR0aCAvIG1pblBhZ2VXaWR0aCwgYWRqdXN0Vmlld1NpemUgPyBGcmFtZTo6QWRqdXN0Vmll
d1NpemUgOiBGcmFtZTpEb05vdEFkanVzdFZpZXdTaXplKTsKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJGcmFtZTo6c2V0SW5QcmludGluZ01vZGUoIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNjQ0MDMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOCBAQAorMjAxMC0wNy0zMCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84MjU3NzgzPiBTaG9ydCBkb2N1bWVudHMgbWF5IHByaW50IGEgc2Vjb25kIGJsYW5r
IHBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQz
MjcxCisKKyAgICAgICAgKiBwcmludGluZy9wYWdlLWJyZWFrLW1hcmdpbi1jb2xsYXBzZWQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHByaW50aW5nL3Jlc291cmNlcy9wYWdlZC1tZWRpYS10ZXN0
LXV0aWxzLmpzOgorICAgICAgICAocmF0aW9Ub1BhZ2VIZWlnaHRUb1BpeGVscyk6IENoYW5nZWQg
dG8gcmVmbGVjdCB0aGUgZGVmYXVsdCBzaHJpbmsgZmFjdG9yIG9mIDEuMjUuCisgICAgICAgICog
cHJpbnRpbmcvc2NyaXB0LXRlc3RzL3N0cmV0Y2gtdG8tdmlldy1oZWlnaHQuanM6IEFkZGVkLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogcHJpbnRpbmcvc3RyZXRjaC10by12aWV3LWhlaWdo
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHByaW50aW5nL3N0cmV0Y2gtdG8tdmll
dy1oZWlnaHQuaHRtbDogQWRkZWQuCisKIDIwMTAtMDctMzAgIERhcmluIEZpc2hlciAgPGRhcmlu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9wcmludGluZy9tZWRpYS1xdWVyaWVzLXByaW50LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvcHJpbnRp
bmcvbWVkaWEtcXVlcmllcy1wcmludC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY0NDAzKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3ByaW50aW5nL21lZGlhLXF1ZXJpZXMtcHJpbnQtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAotbGF5ZXIgYXQgKDAsMCkg
c2l6ZSAxMDAweDU4NQotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgMTAwMHg1ODUKLWxheWVy
IGF0ICgwLDApIHNpemUgMTAwMHg1ODUKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgMTAwMHg1ODUKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDk4NHg1NjkK
K2xheWVyIGF0ICgwLDApIHNpemUgMTAwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXpl
IDEwMDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDEwMDB4NjAwCisgIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDEwMDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA5ODR4NTg0CiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDEw
MHgxMDAgW2JnY29sb3I9IzAwODAwMF0KICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0
ICgwLDEwMCkgc2l6ZSA5ODR4MTgKICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDUzM3gxOApJbmRleDogTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1icmVhay1tYXJn
aW4tY29sbGFwc2VkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wcmlu
dGluZy9wYWdlLWJyZWFrLW1hcmdpbi1jb2xsYXBzZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2
NDQwMykKKysrIExheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtYnJlYWstbWFyZ2luLWNvbGxhcHNl
ZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogCiBQQVNTOiBwYWdlIG51bWJlciBvZiAi
cGFnZTEiIGlzIDEKLUZBSUw6IGV4cGVjdGVkIHBhZ2UgbnVtYmVyIG9mICJwYWdlMiIgaXMgMi4g
V2FzIDE2NworRkFJTDogZXhwZWN0ZWQgcGFnZSBudW1iZXIgb2YgInBhZ2UyIiBpcyAyLiBXYXMg
MTM0CiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVz
dHMvcHJpbnRpbmcvc3RyZXRjaC10by12aWV3LWhlaWdodC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcHJpbnRpbmcvc3RyZXRjaC10by12aWV3LWhlaWdodC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wcmludGluZy9zdHJldGNoLXRvLXZp
ZXctaGVpZ2h0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGVz
dCB0aGF0IHRoZSBoZWlnaHQgb2YgZWxlbWVudHMgd2hvc2UgaGVpZ2h0IGRlcGVuZHMgb24gdGhl
IHZpZXdwb3J0IGhlaWdodCBpcyBjb21wdXRlZCByZWxhdGl2ZSB0byB0aGUgcGFnZSBoZWlnaHQg
d2hlbiBwcmludGluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUzog
bnVtYmVyIG9mIHBhZ2VzIGlzIDEKK1BBU1M6IG51bWJlciBvZiBwYWdlcyBpcyAxCitQQVNTOiBu
dW1iZXIgb2YgcGFnZXMgaXMgMQorQWxsIHRlc3RzIHBhc3NlZAorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcHJp
bnRpbmcvc3RyZXRjaC10by12aWV3LWhlaWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3ByaW50aW5nL3N0cmV0Y2gtdG8tdmlldy1oZWlnaHQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3ByaW50aW5nL3N0cmV0Y2gtdG8tdmlldy1oZWlnaHQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcGFnZWQtbWVkaWEtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvc3RyZXRjaC10by12aWV3LWhlaWdodC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PnJ1blByaW50aW5nVGVzdCh0ZXN0KTs8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvcHJpbnRpbmcvcmVzb3VyY2VzL3BhZ2VkLW1lZGlhLXRlc3QtdXRp
bHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcHJpbnRpbmcvcmVzb3VyY2VzL3BhZ2Vk
LW1lZGlhLXRlc3QtdXRpbHMuanMJKHJldmlzaW9uIDY0NDAzKQorKysgTGF5b3V0VGVzdHMvcHJp
bnRpbmcvcmVzb3VyY2VzL3BhZ2VkLW1lZGlhLXRlc3QtdXRpbHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDcgKzYyLDcgQEAgZnVuY3Rpb24gcnVuUHJpbnRpbmdUZXN0KHRlc3RGdW5jdGlvbikK
IAogZnVuY3Rpb24gcmF0aW9Ub1BhZ2VIZWlnaHRUb1BpeGVscyhoZWlnaHRJblJhdGlvVG9QYWdl
SGVpZ2h0KQogewotICB2YXIgcGFnZUhlaWdodEluUGl4ZWxzID0gNjAwOworICB2YXIgcGFnZUhl
aWdodEluUGl4ZWxzID0gNjAwICogMS4yNTsKICAgcmV0dXJuIE1hdGguZmxvb3IocGFnZUhlaWdo
dEluUGl4ZWxzICogaGVpZ2h0SW5SYXRpb1RvUGFnZUhlaWdodCk7CiB9CiAKSW5kZXg6IExheW91
dFRlc3RzL3ByaW50aW5nL3NjcmlwdC10ZXN0cy9zdHJldGNoLXRvLXZpZXctaGVpZ2h0LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3ByaW50aW5nL3NjcmlwdC10ZXN0cy9zdHJldGNoLXRv
LXZpZXctaGVpZ2h0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcHJpbnRpbmcvc2Ny
aXB0LXRlc3RzL3N0cmV0Y2gtdG8tdmlldy1oZWlnaHQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgdGhlIGhlaWdodCBvZiBlbGVtZW50cyB3
aG9zZSBoZWlnaHQgZGVwZW5kcyBvbiB0aGUgdmlld3BvcnQgaGVpZ2h0IGlzIGNvbXB1dGVkIHJl
bGF0aXZlIHRvIHRoZSBwYWdlIGhlaWdodCB3aGVuIHByaW50aW5nLiIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBudW1iZXJPZlBhZ2VzU2hvdWxkQmUoMSk7CisgICAgbnVtYmVyT2ZQYWdl
c1Nob3VsZEJlKDEsIDEwMDAsIDEwMCk7CisgICAgbnVtYmVyT2ZQYWdlc1Nob3VsZEJlKDEsIDEw
MDAsIDEwMDAwKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNhbmRib3giKSk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwo=
</data>
<flag name="review"
          id="51447"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>