<?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>131863</bug_id>
          
          <creation_ts>2014-04-18 16:09:32 -0700</creation_ts>
          <short_desc>[iOS WebKit2] Implement CSS viewport units</short_desc>
          <delta_ts>2014-06-11 15:14:51 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>paulo</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1002058</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-18 16:09:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/16279088&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002095</commentid>
    <comment_count>1</comment_count>
      <attachid>229693</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-18 17:38:57 -0700</bug_when>
    <thetext>Created attachment 229693
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002126</commentid>
    <comment_count>2</comment_count>
      <attachid>229693</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-18 20:07:45 -0700</bug_when>
    <thetext>Comment on attachment 229693
WIP

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

Looks good to me.

&gt; Source/WebCore/page/ViewportConfiguration.cpp:108
&gt; +IntSize ViewportConfiguration::layoutSizeForMinimalUI() const

This name is extremely misleading. The layout size is computed from the minimumLayoutSize and all the viewport parameters.

I think I would do this computation out of ViewportConfiguration. ViewportConfiguration is already complicated enough as it is, and the fact that we can use the minimal UI for viewport unit is iOS specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002159</commentid>
    <comment_count>3</comment_count>
      <attachid>229717</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-18 21:58:05 -0700</bug_when>
    <thetext>Created attachment 229717
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002286</commentid>
    <comment_count>4</comment_count>
      <attachid>229717</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-19 14:56:28 -0700</bug_when>
    <thetext>Comment on attachment 229717
patch

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

&gt; Source/WebCore/rendering/RenderView.cpp:1050
&gt; +    IntSize viewportSize = frameView().frame().page()-&gt;viewportSize();
&gt; +    if (!viewportSize.isEmpty())
&gt; +        return viewportSize;

Seems a little strange. I understand that we want to distinguish a size that is set from a size that is not. But it doesn’t seem right that “empty” is now we track “not set”.

&gt; Source/WebCore/rendering/RenderView.h:202
&gt; +    void setViewportSize(IntSize);

In the old days we would invariably have used &quot;const IntSize&amp;&quot;, but I gather that’s just old fashioned attempt at optimizing that didn’t really work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002297</commentid>
    <comment_count>5</comment_count>
      <attachid>229717</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-19 16:04:59 -0700</bug_when>
    <thetext>Comment on attachment 229717
patch

Just a suggestion: maybe viewport size should be stored on FrameView instead of Page. It would make more sense for FrameView/ScrollView to know about the viewport geometry.

RenderView::viewportSize() would just invoke frameView().viewportSize(), and FrameView::viewportSize() would make the decision between the visibleContentRectIncludingScrollbars() and the special viewport size override.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002300</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-19 16:19:07 -0700</bug_when>
    <thetext>What should viewport units report for subframes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002301</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-19 16:22:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; What should viewport units report for subframes?

viewportSize would be empty, RenderView would fallback to visibleContentRectIncludingScrollbars().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002579</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-21 11:24:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 229717 [details])
&gt; Just a suggestion: maybe viewport size should be stored on FrameView instead of Page. It would make more sense for FrameView/ScrollView to know about the viewport geometry.
&gt; 
&gt; RenderView::viewportSize() would just invoke frameView().viewportSize(), and FrameView::viewportSize() would make the decision between the visibleContentRectIncludingScrollbars() and the special viewport size override.

OK, I think that sounds like a reasonable change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002642</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-21 13:23:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/167616</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014945</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-11 15:14:12 -0700</bug_when>
    <thetext>*** Bug 127446 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014948</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-11 15:14:51 -0700</bug_when>
    <thetext>*** Bug 127771 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229693</attachid>
            <date>2014-04-18 17:38:57 -0700</date>
            <delta_ts>2014-04-18 21:58:05 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip.diff</filename>
            <type>text/plain</type>
            <size>14322</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMDdiZjliYi4uMWUyMjZkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTg5OCw2ICs4OTgsNyBAQCBfX1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJh
dGlvbjIxeGh0bWxNb2JpbGVQYXJhbWV0ZXJzRXYKIF9fWk43V2ViQ29yZTIxVmlld3BvcnRDb25m
aWd1cmF0aW9uMjJ0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJzRXYKIF9fWk43V2ViQ29yZTIxVmlld3Bv
cnRDb25maWd1cmF0aW9uMjNpbWFnZURvY3VtZW50UGFyYW1ldGVyc0V2CiBfX1pON1dlYkNvcmUy
MVZpZXdwb3J0Q29uZmlndXJhdGlvbjIzc2V0RGVmYXVsdENvbmZpZ3VyYXRpb25FUktOUzBfMTBQ
YXJhbWV0ZXJzRQorX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24zMnNldE1pbmlt
dW1MYXlvdXRTaXplRm9yTWluaW1hbFVJRVJLTlNfN0ludFNpemVFCiBfX1pON1dlYkNvcmUyMVZp
ZXdwb3J0Q29uZmlndXJhdGlvbkMxRXYKIF9fWk43V2ViQ29yZTIxV2luZG93c0xhdGluMUVuY29k
aW5nRXYKIF9fWk43V2ViQ29yZTIxY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyRVBLY21QSzdfX0NGVVJM
CkBAIC0xMDUyLDYgKzEwNTMsNyBAQCBfX1pON1dlYkNvcmU0UGFnZTEzc2V0UGFnaW5hdGlvbkVS
S05TXzEwUGFnaW5hdGlvbkUKIF9fWk43V2ViQ29yZTRQYWdlMTRzZXRJc1ByZXJlbmRlckV2CiBf
X1pON1dlYkNvcmU0UGFnZTE0c2V0TWVkaWFWb2x1bWVFZgogX19aTjdXZWJDb3JlNFBhZ2UxNWFk
ZFNjaGVkdWxlUGFpckVOM1dURjEwUGFzc1JlZlB0cklOUzFfMTJTY2hlZHVsZVBhaXJFRUUKK19f
Wk43V2ViQ29yZTRQYWdlMTVzZXRWaWV3cG9ydFNpemVFTlNfN0ludFNpemVFCiBfX1pON1dlYkNv
cmU0UGFnZTE2Y291bnRGaW5kTWF0Y2hlc0VSS04zV1RGNlN0cmluZ0VoagogX19aTjdXZWJDb3Jl
NFBhZ2UxNnNldENhblN0YXJ0TWVkaWFFYgogX19aTjdXZWJDb3JlNFBhZ2UxNnNldERlZmVyc0xv
YWRpbmdFYgpAQCAtMTc2Nyw2ICsxNzY5LDcgQEAgX19aTks3V2ViQ29yZTIxVXNlckNvbnRlbnRV
UkxQYXR0ZXJuN21hdGNoZXNFUktOU18zVVJMRQogX19aTks3V2ViQ29yZTIxVmlld3BvcnRDb25m
aWd1cmF0aW9uMTBsYXlvdXRTaXplRXYKIF9fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJh
dGlvbjEyaW5pdGlhbFNjYWxlRXYKIF9fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlv
bjEybWluaW11bVNjYWxlRXYKK19fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjIy
bGF5b3V0U2l6ZUZvck1pbmltYWxVSUV2CiBfX1pOSzdXZWJDb3JlMjJXaGVlbEV2ZW50RGVsdGFU
cmFja2VyMzBkb21pbmFudFNjcm9sbEdlc3R1cmVEaXJlY3Rpb25FdgogX19aTks3V2ViQ29yZTIz
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxMW1heGltdW1TaXplRXYKIF9fWk5LN1dlYkNvcmUyM0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlMjBhdXRoZW50aWNhdGlvbkNsaWVudEV2CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCA4NTE4MTg3Li45ZjM2MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY5Myw2
ICs2OTMsMTQgQEAgdm9pZCBQYWdlOjpzZXRNZWRpYVZvbHVtZShmbG9hdCB2b2x1bWUpCiAgICAg
fQogfQogCit2b2lkIFBhZ2U6OnNldFZpZXdwb3J0U2l6ZShJbnRTaXplIHNpemUpCit7CisgICAg
aWYgKG1fdmlld3BvcnRTaXplID09IHNpemUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ZpZXdw
b3J0U2l6ZSA9IHNpemU7CisgICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7Cit9
CisKIHZvaWQgUGFnZTo6c2V0Wm9vbWVkT3V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlKQog
ewogICAgIGlmIChtX3pvb21lZE91dFBhZ2VTY2FsZUZhY3RvciA9PSBzY2FsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKaW5kZXggMzc3YzhmMy4uNTdhNDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI3OSw2ICsyNzks
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRab29tZWRPdXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQp
OwogICAgIGZsb2F0IHpvb21lZE91dFBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
em9vbWVkT3V0UGFnZVNjYWxlRmFjdG9yOyB9CiAKKyAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplKTsKKyAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d3BvcnRTaXplOyB9CisKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZGV2aWNlU2NhbGVGYWN0b3I7IH0KICAgICB2b2lkIHNldERldmljZVNjYWxlRmFjdG9y
KGZsb2F0KTsKIApAQCAtNTAzLDYgKzUwNiw4IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV96b29t
ZWRPdXRQYWdlU2NhbGVGYWN0b3I7CiAgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKIAor
ICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CisKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNl
dDsKIAogICAgIGJvb2wgbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggZjNkMzA1Yi4uOTNm
Mzc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNw
cApAQCAtNDUsNiArNDUsNyBAQCBzdGF0aWMgYm9vbCBjb25zdHJhaW50c0FyZUFsbFJlbGF0aXZl
KGNvbnN0IFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6UGFyYW1ldGVycyYgYwogVmlld3BvcnRDb25m
aWd1cmF0aW9uOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24oKQogICAgIDogbV9jb250ZW50U2l6ZSgx
MDI0LCA3NjgpCiAgICAgLCBtX21pbmltdW1MYXlvdXRTaXplKG1fY29udGVudFNpemUpCisgICAg
LCBtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKG1fY29udGVudFNpemUpCiB7CiAgICAg
Ly8gU2V0dXAgYSByZWFzb25hYmxlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB0byBhdm9pZCBjb21w
dXRpbmcgaW5maW5pdGUgc2NhbGUvc2l6ZXMuCiAgICAgLy8gVGhvc2UgYXJlIHRoZSBvcmlnaW5h
bCBpUGhvbmUgY29uZmlndXJhdGlvbi4KQEAgLTgxLDYgKzgyLDE1IEBAIHZvaWQgVmlld3BvcnRD
b25maWd1cmF0aW9uOjpzZXRNaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBtaW5pbXVt
TGF5b3V0U2l6CiAgICAgdXBkYXRlQ29uZmlndXJhdGlvbigpOwogfQogCit2b2lkIFZpZXdwb3J0
Q29uZmlndXJhdGlvbjo6c2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgSW50
U2l6ZSYgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkpCit7CisgICAgaWYgKG1fbWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUkgPT0gbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkg
PSBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSTsKKyAgICB1cGRhdGVDb25maWd1cmF0aW9u
KCk7Cit9CisKIHZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRWaWV3cG9ydEFyZ3VtZW50
cyhjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMpCiB7CiAgICAgaWYg
KG1fdmlld3BvcnRBcmd1bWVudHMgPT0gdmlld3BvcnRBcmd1bWVudHMpCkBAIC05NSw2ICsxMDUs
MTMgQEAgSW50U2l6ZSBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmxheW91dFNpemUoKSBjb25zdAog
ICAgIHJldHVybiBJbnRTaXplKGxheW91dFdpZHRoKCksIGxheW91dEhlaWdodCgpKTsKIH0KIAor
SW50U2l6ZSBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmxheW91dFNpemVGb3JNaW5pbWFsVUkoKSBj
b25zdAoreworICAgIEludFNpemUgc2l6ZSA9IG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFs
VUk7CisgICAgc2l6ZS5zY2FsZSgxIC8gaW5pdGlhbFNjYWxlKCkpOworICAgIHJldHVybiBzaXpl
OworfQorCiBkb3VibGUgVmlld3BvcnRDb25maWd1cmF0aW9uOjppbml0aWFsU2NhbGUoKSBjb25z
dAogewogICAgIEFTU0VSVCghY29uc3RyYWludHNBcmVBbGxSZWxhdGl2ZShtX2NvbmZpZ3VyYXRp
b24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCmluZGV4
IGQ1YmQ2ZWIuLmM5MDY1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3Bv
cnRDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZp
Z3VyYXRpb24uaApAQCAtNzMsMTAgKzczLDE0IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXpl
JiBtaW5pbXVtTGF5b3V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUxheW91dFNpemU7
IH0KICAgICB2b2lkIHNldE1pbmltdW1MYXlvdXRTaXplKGNvbnN0IEludFNpemUmKTsKIAorICAg
IGNvbnN0IEludFNpemUmIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKCkgY29uc3QgeyBy
ZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSTsgfQorICAgIHZvaWQgc2V0TWlu
aW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgSW50U2l6ZSYpOworCiAgICAgY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92
aWV3cG9ydEFyZ3VtZW50czsgfQogICAgIHZvaWQgc2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmKTsKIAogICAgIEludFNpemUgbGF5b3V0U2l6ZSgpIGNvbnN0Owor
ICAgIEludFNpemUgbGF5b3V0U2l6ZUZvck1pbmltYWxVSSgpIGNvbnN0OwogICAgIGRvdWJsZSBp
bml0aWFsU2NhbGUoKSBjb25zdDsKICAgICBkb3VibGUgbWluaW11bVNjYWxlKCkgY29uc3Q7CiAg
ICAgZG91YmxlIG1heGltdW1TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5t
YXhpbXVtU2NhbGU7IH0KQEAgLTk2LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgUGFyYW1ldGVy
cyBtX2RlZmF1bHRDb25maWd1cmF0aW9uOwogICAgIEludFNpemUgbV9jb250ZW50U2l6ZTsKICAg
ICBJbnRTaXplIG1fbWluaW11bUxheW91dFNpemU7CisgICAgSW50U2l6ZSBtX21pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJOwogICAgIFZpZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1
bWVudHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXgg
ZGY0MDUyMi4uYmMzOWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtMTA0NSw4ICsxMDQ1LDEwIEBAIGJvb2wgUmVuZGVyVmlldzo6c2hvdWxkRGlzYWJsZUxh
eW91dFN0YXRlRm9yU3VidHJlZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zCiAKIEludFNp
emUgUmVuZGVyVmlldzo6dmlld3BvcnRTaXplKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogdmll
d3BvcnRTaXplKCkgaXMgdXNlZCB0byBsYXlvdXQgY29udGVudCBmcm9tIHZpZXdwb3J0IHVuaXRz
LiBPbiBpT1MsIGl0IHNob3VsZCB1c2UgdGhlIGxhc3Qgc3RhYmxlCi0gICAgLy8gdW5vYnNjdXJl
ZCByZWN0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE2Mjc5MDg4Pi4KKyAgICBJbnRTaXplIHZpZXdw
b3J0U2l6ZSA9IGZyYW1lVmlldygpLmZyYW1lKCkucGFnZSgpLT52aWV3cG9ydFNpemUoKTsKKyAg
ICBpZiAoIXZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2aWV3cG9ydFNp
emU7CisKICAgICByZXR1cm4gZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5n
U2Nyb2xsYmFycyhTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCku
c2l6ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCBhMGZm
YmRiLi4yMzIyZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTE5
OSw2ICsxOTksNyBAQCBwdWJsaWM6CiAgICAgSW50ZXJ2YWxBcmVuYSogaW50ZXJ2YWxBcmVuYSgp
OwogCiAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdDsKKyAgICB2b2lkIHNldFZpZXdw
b3J0U2l6ZShJbnRTaXplKTsKIAogICAgIHZvaWQgc2V0UmVuZGVyUXVvdGVIZWFkKFJlbmRlclF1
b3RlKiBoZWFkKSB7IG1fcmVuZGVyUXVvdGVIZWFkID0gaGVhZDsgfQogICAgIFJlbmRlclF1b3Rl
KiByZW5kZXJRdW90ZUhlYWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclF1b3RlSGVhZDsgfQpA
QCAtMzM2LDYgKzMzNyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckxh
eWVyQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93VGhy
ZWFkQ29udHJvbGxlcj4gbV9mbG93VGhyZWFkQ29udHJvbGxlcjsKICAgICBSZWZQdHI8SW50ZXJ2
YWxBcmVuYT4gbV9pbnRlcnZhbEFyZW5hOworICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CiAK
ICAgICBSZW5kZXJRdW90ZSogbV9yZW5kZXJRdW90ZUhlYWQ7CiAgICAgdW5zaWduZWQgbV9yZW5k
ZXJDb3VudGVyQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IGZjNWZkNzguLmQ4MmMzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMDAsNiArMTAwLDcgQEAK
ICAgICBCT09MIF9pc1dhaXRpbmdGb3JOZXdMYXllclRyZWVBZnRlckRpZENvbW1pdExvYWQ7CiAg
ICAgQk9PTCBfaGFzU3RhdGljTWluaW11bUxheW91dFNpemU7CiAgICAgQ0dTaXplIF9taW5pbXVt
TGF5b3V0U2l6ZU92ZXJyaWRlOworICAgIENHU2l6ZSBfbWluaW11bUxheW91dFNpemVPdmVycmlk
ZUZvck1pbmltYWxVSTsKIAogICAgIFVJRWRnZUluc2V0cyBfb2JzY3VyZWRJbnNldHM7CiAgICAg
Ym9vbCBfaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseTsKQEAgLTcxNyw2ICs3
MTgsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmlt
dW1MYXlvdXRTaXplKFdlYktpdDo6V2ViUGFnZVByb3gKICAgICBwYWdlLnNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkludFNpemUoQ0dDZWlsaW5nKHNp
emUud2lkdGgpLCBDR0NlaWxpbmcoc2l6ZS5oZWlnaHQpKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
dm9pZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxV
SShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ0dTaXplJiBzaXplKQoreworICAg
IHBhZ2Uuc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFs
VUkoV2ViQ29yZTo6SW50U2l6ZShDR0NlaWxpbmcoc2l6ZS53aWR0aCksIENHQ2VpbGluZyhzaXpl
LmhlaWdodCkpKTsKK30KKwogLSAodm9pZClfZnJhbWVPckJvdW5kc0NoYW5nZWQKIHsKICAgICBD
R1JlY3QgYm91bmRzID0gc2VsZi5ib3VuZHM7CkBAIC0xMjYyLDYgKzEyNjgsMTggQEAgc3RhdGlj
IGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMg
d2tGaW5kT3B0aW9ucykKICAgICAgICAgc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxh
eW91dFNpemUoKl9wYWdlLCBtaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlKTsKIH0KIAorLSAoQ0dT
aXplKV9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJCit7CisgICAgcmV0dXJu
IF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJOworfQorCistICh2b2lkKV9z
ZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJOihDR1NpemUpbWluaW11bUxh
eW91dFNpemVPdmVycmlkZUZvck1pbmltYWxVSQoreworICAgIF9taW5pbXVtTGF5b3V0U2l6ZU92
ZXJyaWRlRm9yTWluaW1hbFVJID0gbWluaW11bUxheW91dFNpemVPdmVycmlkZUZvck1pbmltYWxV
STsKKyAgICBpZiAoIV9pc0FuaW1hdGluZ1Jlc2l6ZSkKKyAgICAgICAgc2V0Vmlld3BvcnRDb25m
aWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoKl9wYWdlLCBtaW5pbXVtTGF5
b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJKTsKK30KKwogLSAoVUlFZGdlSW5zZXRzKV9vYnNj
dXJlZEluc2V0cwogewogICAgIHJldHVybiBfb2JzY3VyZWRJbnNldHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IGE3NDA4MTAuLjRkMzA0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC05Myw2ICs5Myw3IEBAIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tGaW5kT3B0aW9ucykgewogCiAjaWYgVEFSR0VUX09T
X0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWluaW11bUxheW91dFNp
emVPdmVycmlkZTopIENHU2l6ZSBfbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5p
bWFsVUk6KSBDR1NpemUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk7CiAK
IC8vIERlZmluZSB0aGUgaW5zZXQgb2YgdGhlIHNjcm9sbHZpZXcgdW51c2FibGUgYnkgdGhlIHdl
YiBwYWdlLgogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0T2JzY3VyZWRJbnNldHM6
KSBVSUVkZ2VJbnNldHMgX29ic2N1cmVkSW5zZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDNhYmNkZGMuLjI5Mzc5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU3OSw2ICs1NzksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG1pbmlt
dW1MYXlvdXRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250
ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwg
ZG91YmxlIHRhcmdldFNjYWxlKTsKICAgICAKICAgICB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJh
dGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lk
IHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25z
dCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJik7CiAKICAgICB2b2lkIHNlbGVj
dFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFBhc3NS
ZWZQdHI8R2VzdHVyZUNhbGxiYWNrPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDc2OTJkMWQuLjE2MDNkMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xOTgsNiAr
MTk4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5p
bXVtTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6
ZShzaXplKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRD
b25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKHNp
emUpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMYXllclRy
ZWUoY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgbGF5ZXJUcmVlVHJh
bnNhY3Rpb24pCiB7CiAgICAgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBsYXllclRy
ZWVUcmFuc2FjdGlvbi5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE3NzQwMjIuLjJlZjg3ZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjkz
LDYgKzY5Myw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHNldFZp
ZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKTsKKyAgICB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXpl
Rm9yTWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIGR5bmFtaWNW
aWV3cG9ydFNpemVVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbWluaW11bUxheW91dFNp
emUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0LCBkb3VibGUgc2Nh
bGUpOwogICAgIHZvaWQgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOwogICAgIHZvaWQg
dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IGY5YjgyMDkuLjBjNTdkZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00
NCw2ICs0NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFdo
ZWVsRXZlbnRTeW5jRm9yVGVzdGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpIC0+IChi
b29sIGhhbmRsZWQpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFNldFZpZXdwb3J0Q29uZmlndXJh
dGlvbk1pbmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkKKyAgICBTZXRWaWV3
cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShXZWJDb3JlOjpJ
bnRTaXplIHNpemUpCiAgICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJDb3JlOjpJbnRT
aXplIG1pbmltdW1MYXlvdXRTaXplLCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0RXhwb3NlZENv
bnRlbnRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGRvdWJs
ZSBzY2FsZSkKIAogICAgIEhhbmRsZVRhcChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCAzY2RjNzE0Li5mNzE3NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xNzYyLDYgKzE3NjIsMTIgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKQogICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6
ZUZvck1pbmltYWxVSShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKHNpemUpOworICAgIHZp
ZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpkeW5hbWlj
Vmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEludFNpemUmIG1pbmltdW1MYXlvdXRTaXplLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRVbm9ic2N1cmVkUmVjdCwgZG91YmxlIHRhcmdldFNjYWxlKQogewogICAgIC8vIEZJWE1F
OiB0aGlzIGRvZXMgbm90IGhhbmRsZSB0aGUgY2FzZXMgd2hlcmUgdGhlIGNvbnRlbnQgd291bGQg
Y2hhbmdlIHRoZSBjb250ZW50IHNpemUgb3Igc2Nyb2xsIHBvc2l0aW9uIGZyb20gSmF2YVNjcmlw
dC4KQEAgLTE4ODEsNiArMTg4Nyw3IEBAIHZvaWQgV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0
aW9uQ2hhbmdlZCgpCiAgICAgICAgIHNjYWxlID0gaW5pdGlhbFNjYWxlOwogCiAgICAgbV9wYWdl
LT5zZXRab29tZWRPdXRQYWdlU2NhbGVGYWN0b3IoaW5pdGlhbFNjYWxlKTsKKyAgICBtX3BhZ2Ut
PnNldFZpZXdwb3J0U2l6ZShtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5sYXlvdXRTaXplRm9yTWlu
aW1hbFVJKCkpOwogCiAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWluRnJh
bWUoKS52aWV3KCk7CiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXcuc2Ny
b2xsUG9zaXRpb24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229717</attachid>
            <date>2014-04-18 21:58:05 -0700</date>
            <delta_ts>2014-04-19 16:04:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>viewportunits.diff</filename>
            <type>text/plain</type>
            <size>12753</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlOWI4MWYxLi5iMzIwZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTQtMDQtMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPUyBXZWJLaXQyXSBJbXBsZW1lbnQgQ1NTIHZpZXdwb3J0IHVuaXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE4NjMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzE2Mjc5MDg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAg
ICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp2aWV3cG9ydFNpemUp
OgorICAgICAgICBBZGQgc2V0Vmlld3BvcnRTaXplKCkgYW5kIHZpZXdwb3J0U2l6ZSgpLgorICAg
ICAgICBJZiB0aGUgdmlld3BvcnQgc2l6ZSBjaGFuZ2VzLCB3ZSBoYXZlIHRvIGRvIHN0eWxlIHJl
Y2FsYy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OnZpZXdwb3J0U2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaDoKKyAgICAgICAgSWYgd2UgaGF2ZSBhbiBvdmVycmlkZGVuIHZpZXdwb3J0IHNp
emUsIHVzZSBpdC4KKwogMjAxNC0wNC0xOCAgR2Fib3IgUmFwY3NhbnlpICA8cmdhYm9yQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQVJNNjQgYnVpbGRmaXggYWZ0ZXIgcjE2NzQ3
My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMDdiZjliYi4uNjNmZWQxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTEwNTIsNiArMTA1Miw3IEBAIF9fWk43V2ViQ29yZTRQYWdlMTNzZXRQYWdp
bmF0aW9uRVJLTlNfMTBQYWdpbmF0aW9uRQogX19aTjdXZWJDb3JlNFBhZ2UxNHNldElzUHJlcmVu
ZGVyRXYKIF9fWk43V2ViQ29yZTRQYWdlMTRzZXRNZWRpYVZvbHVtZUVmCiBfX1pON1dlYkNvcmU0
UGFnZTE1YWRkU2NoZWR1bGVQYWlyRU4zV1RGMTBQYXNzUmVmUHRySU5TMV8xMlNjaGVkdWxlUGFp
ckVFRQorX19aTjdXZWJDb3JlNFBhZ2UxNXNldFZpZXdwb3J0U2l6ZUVOU183SW50U2l6ZUUKIF9f
Wk43V2ViQ29yZTRQYWdlMTZjb3VudEZpbmRNYXRjaGVzRVJLTjNXVEY2U3RyaW5nRWhqCiBfX1pO
N1dlYkNvcmU0UGFnZTE2c2V0Q2FuU3RhcnRNZWRpYUViCiBfX1pON1dlYkNvcmU0UGFnZTE2c2V0
RGVmZXJzTG9hZGluZ0ViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA4NTE4MTg3Li45ZjM2MTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY5Myw2ICs2OTMsMTQgQEAgdm9pZCBQYWdlOjpzZXRNZWRp
YVZvbHVtZShmbG9hdCB2b2x1bWUpCiAgICAgfQogfQogCit2b2lkIFBhZ2U6OnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplIHNpemUpCit7CisgICAgaWYgKG1fdmlld3BvcnRTaXplID09IHNpemUpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX3ZpZXdwb3J0U2l6ZSA9IHNpemU7CisgICAgc2V0TmVlZHNS
ZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7Cit9CisKIHZvaWQgUGFnZTo6c2V0Wm9vbWVkT3V0UGFn
ZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlKQogewogICAgIGlmIChtX3pvb21lZE91dFBhZ2VTY2Fs
ZUZhY3RvciA9PSBzY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMzc3YzhmMy4uNTdhNDViZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKQEAgLTI3OSw2ICsyNzksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRab29t
ZWRPdXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIGZsb2F0IHpvb21lZE91dFBhZ2VTY2Fs
ZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fem9vbWVkT3V0UGFnZVNjYWxlRmFjdG9yOyB9CiAK
KyAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShJbnRTaXplKTsKKyAgICBJbnRTaXplIHZpZXdwb3J0
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CisKICAgICBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlU2NhbGVGYWN0b3I7IH0KICAg
ICB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKIApAQCAtNTAzLDYgKzUwNiw4IEBA
IHByaXZhdGU6CiAgICAgZmxvYXQgbV96b29tZWRPdXRQYWdlU2NhbGVGYWN0b3I7CiAgICAgZmxv
YXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKIAorICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CisK
ICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldDsKIAogICAgIGJvb2wgbV9zdXBwcmVzc1Njcm9s
bGJhckFuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5k
ZXggZGY0MDUyMi4uZmQ5MjdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcApAQCAtMTA0NSw4ICsxMDQ1LDkgQEAgYm9vbCBSZW5kZXJWaWV3OjpzaG91bGREaXNhYmxl
TGF5b3V0U3RhdGVGb3JTdWJ0cmVlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnMKIAogSW50
U2l6ZSBSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB2
aWV3cG9ydFNpemUoKSBpcyB1c2VkIHRvIGxheW91dCBjb250ZW50IGZyb20gdmlld3BvcnQgdW5p
dHMuIE9uIGlPUywgaXQgc2hvdWxkIHVzZSB0aGUgbGFzdCBzdGFibGUKLSAgICAvLyB1bm9ic2N1
cmVkIHJlY3QuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTYyNzkwODg+LgorICAgIEludFNpemUgdmll
d3BvcnRTaXplID0gZnJhbWVWaWV3KCkuZnJhbWUoKS5wYWdlKCktPnZpZXdwb3J0U2l6ZSgpOwor
ICAgIGlmICghdmlld3BvcnRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHZpZXdwb3J0
U2l6ZTsKICAgICByZXR1cm4gZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5n
U2Nyb2xsYmFycyhTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCku
c2l6ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCBhMGZm
YmRiLi4yMzIyZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTE5
OSw2ICsxOTksNyBAQCBwdWJsaWM6CiAgICAgSW50ZXJ2YWxBcmVuYSogaW50ZXJ2YWxBcmVuYSgp
OwogCiAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdDsKKyAgICB2b2lkIHNldFZpZXdw
b3J0U2l6ZShJbnRTaXplKTsKIAogICAgIHZvaWQgc2V0UmVuZGVyUXVvdGVIZWFkKFJlbmRlclF1
b3RlKiBoZWFkKSB7IG1fcmVuZGVyUXVvdGVIZWFkID0gaGVhZDsgfQogICAgIFJlbmRlclF1b3Rl
KiByZW5kZXJRdW90ZUhlYWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclF1b3RlSGVhZDsgfQpA
QCAtMzM2LDYgKzMzNyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckxh
eWVyQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93VGhy
ZWFkQ29udHJvbGxlcj4gbV9mbG93VGhyZWFkQ29udHJvbGxlcjsKICAgICBSZWZQdHI8SW50ZXJ2
YWxBcmVuYT4gbV9pbnRlcnZhbEFyZW5hOworICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CiAK
ICAgICBSZW5kZXJRdW90ZSogbV9yZW5kZXJRdW90ZUhlYWQ7CiAgICAgdW5zaWduZWQgbV9yZW5k
ZXJDb3VudGVyQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODAzMGZmZi4uYmE2MDBlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTA0LTE4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV2ViS2l0Ml0gSW1wbGVtZW50IENTUyB2aWV3
cG9ydCB1bml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMxODYzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjI3OTA4OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoc2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFs
VUkpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JN
aW5pbWFsVUldKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92
ZXJyaWRlRm9yTWluaW1hbFVJOl0pOgorICAgICAgICBBZGQgX3NldE1pbmltdW1MYXlvdXRTaXpl
T3ZlcnJpZGVGb3JNaW5pbWFsVUk6LCB3aGljaCBwdXNoZXMgc2FpZCBzaXplCisgICAgICAgIGRv
d24gZnJvbSB0aGUgY2xpZW50IHRvIFdlYlBhZ2VJT1MsIGJlbG93LgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE1pbmltdW1MYXlvdXRTaXpl
Rm9yTWluaW1hbFVJKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKToKKyAgICAgICAg
VXBkYXRlIFBhZ2UncyB2aWV3cG9ydCBzaXplIGJhc2VkIG9uIHRoZSBtaW5pbXVtIGxheW91dCBz
aXplIGZvciBtaW5pbWFsIFVJIChpZiB3ZSBoYXZlIGl0KQorICAgICAgICBvciB0aGUgbm9ybWFs
IG1pbmltdW0gbGF5b3V0IHNpemUsIHNjYWxlZCB0byB0aGUgcGFnZSdzIGluaXRpYWwgc2NhbGUu
CisKIDIwMTQtMDQtMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIEFkZCBhIG5hdmlnYXRpb24gZGVsZWdhdGUgbWV0aG9kIGNvcnJlc3BvbmRpbmcg
dG8gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUgZm9yIHRoZSBtYWluIGZyYW1lCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGZj
NWZkNzguLmMzNDEwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICBCT09MIF9pc1dhaXRpbmdG
b3JOZXdMYXllclRyZWVBZnRlckRpZENvbW1pdExvYWQ7CiAgICAgQk9PTCBfaGFzU3RhdGljTWlu
aW11bUxheW91dFNpemU7CiAgICAgQ0dTaXplIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOwor
ICAgIENHU2l6ZSBfbWluaW11bUxheW91dFNpemVPdmVycmlkZUZvck1pbmltYWxVSTsKIAogICAg
IFVJRWRnZUluc2V0cyBfb2JzY3VyZWRJbnNldHM7CiAgICAgYm9vbCBfaXNDaGFuZ2luZ09ic2N1
cmVkSW5zZXRzSW50ZXJhY3RpdmVseTsKQEAgLTEyNjIsNiArMTI2MywxOCBAQCBzdGF0aWMgaW5s
aW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0Zp
bmRPcHRpb25zKQogICAgICAgICBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0
U2l6ZSgqX3BhZ2UsIG1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUpOwogfQogCistIChDR1NpemUp
X21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUkKK3sKKyAgICByZXR1cm4gX21p
bmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk7Cit9CisKKy0gKHZvaWQpX3NldE1p
bmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk6KENHU2l6ZSlzaXplCit7CisgICAg
X21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUkgPSBzaXplOworICAgIGlmICgh
X2lzQW5pbWF0aW5nUmVzaXplKQorICAgICAgICBfcGFnZS0+c2V0TWluaW11bUxheW91dFNpemVG
b3JNaW5pbWFsVUkoV2ViQ29yZTo6SW50U2l6ZShDR0NlaWxpbmcoc2l6ZS53aWR0aCksIENHQ2Vp
bGluZyhzaXplLmhlaWdodCkpKTsKK30KKwogLSAoVUlFZGdlSW5zZXRzKV9vYnNjdXJlZEluc2V0
cwogewogICAgIHJldHVybiBfb2JzY3VyZWRJbnNldHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGE3NDA4MTAu
LjRkMzA0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC05Myw2ICs5Myw3IEBAIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tGaW5kT3B0aW9ucykgewogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWluaW11bUxheW91dFNpemVPdmVycmlk
ZTopIENHU2l6ZSBfbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldE1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk6KSBD
R1NpemUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk7CiAKIC8vIERlZmlu
ZSB0aGUgaW5zZXQgb2YgdGhlIHNjcm9sbHZpZXcgdW51c2FibGUgYnkgdGhlIHdlYiBwYWdlLgog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0T2JzY3VyZWRJbnNldHM6KSBVSUVkZ2VJ
bnNldHMgX29ic2N1cmVkSW5zZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDNhYmNkZGMuLmMxYTIxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTU3OSw2ICs1NzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkeW5hbWlj
Vmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG1pbmltdW1MYXlvdXRT
aXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgZG91YmxlIHRh
cmdldFNjYWxlKTsKICAgICAKICAgICB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmlt
dW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lkIHNldE1pbmlt
dW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2
b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uJik7CiAKICAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIFBhc3NSZWZQdHI8R2VzdHVyZUNhbGxiYWNrPik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDc2
OTJkMWQuLjJlNDgyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC0xOTgsNiArMTk4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydENv
bmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShzaXplKSwgbV9wYWdlSUQpOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKHNpemUpLCBtX3BhZ2VJRCk7
Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMYXllclRyZWUoY29uc3QgV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgbGF5ZXJUcmVlVHJhbnNhY3Rpb24pCiB7CiAg
ICAgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBsYXllclRyZWVUcmFuc2FjdGlvbi5w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE3NzQwMjIuLmI4MGI0N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjkzLDYgKzY5Myw3IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJh
dGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lk
IHNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KTsKICAgICB2b2lkIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0
RXhwb3NlZENvbnRlbnRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFVub2Jz
Y3VyZWRSZWN0LCBkb3VibGUgc2NhbGUpOwogICAgIHZvaWQgdmlld3BvcnRDb25maWd1cmF0aW9u
Q2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJik7CkBAIC0xMTU4LDYgKzExNTksNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3NjcmVlblNpemU7CiAgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIG1fYXZhaWxhYmxlU2NyZWVuU2l6ZTsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fYmxv
Y2tTZWxlY3Rpb25EZXNpcmVkU2l6ZTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fbWluaW11bUxh
eW91dFNpemVGb3JNaW5pbWFsVUk7CiAjZW5kaWYKIAogICAgIFdlYkluc3BlY3RvckNsaWVudCog
bV9pbnNwZWN0b3JDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGY5YjgyMDkuLjNiMGFlNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC00NCw2ICs0NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFdoZWVsRXZlbnRTeW5jRm9yVGVzdGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQg
ZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFNldFZpZXdw
b3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkK
KyAgICBTZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShXZWJDb3JlOjpJbnRTaXplIHNp
emUpCiAgICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJDb3JlOjpJbnRTaXplIG1pbmlt
dW1MYXlvdXRTaXplLCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0
LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGRvdWJsZSBzY2FsZSkK
IAogICAgIEhhbmRsZVRhcChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAzY2Rj
NzE0Li5lYjEwMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xNzYyLDYgKzE3NjIsMTIgQEAgdm9pZCBXZWJQYWdl
OjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKIH0KIAordm9pZCBX
ZWJQYWdlOjpzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBJbnRTaXplJiBz
aXplKQoreworICAgIG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkgPSBzaXplOworICAg
IHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpkeW5h
bWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEludFNpemUmIG1pbmltdW1MYXlvdXRTaXplLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgZG91YmxlIHRhcmdldFNjYWxlKQogewogICAgIC8vIEZJ
WE1FOiB0aGlzIGRvZXMgbm90IGhhbmRsZSB0aGUgY2FzZXMgd2hlcmUgdGhlIGNvbnRlbnQgd291
bGQgY2hhbmdlIHRoZSBjb250ZW50IHNpemUgb3Igc2Nyb2xsIHBvc2l0aW9uIGZyb20gSmF2YVNj
cmlwdC4KQEAgLTE4ODIsNiArMTg4OCwxMCBAQCB2b2lkIFdlYlBhZ2U6OnZpZXdwb3J0Q29uZmln
dXJhdGlvbkNoYW5nZWQoKQogCiAgICAgbV9wYWdlLT5zZXRab29tZWRPdXRQYWdlU2NhbGVGYWN0
b3IoaW5pdGlhbFNjYWxlKTsKIAorICAgIEludFNpemUgdmlld3BvcnRTaXplID0gIW1fbWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUkuaXNFbXB0eSgpID8gbV9taW5pbXVtTGF5b3V0U2l6ZUZv
ck1pbmltYWxVSSA6IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1MYXlvdXRTaXplKCk7
CisgICAgdmlld3BvcnRTaXplLnNjYWxlKDEgLyBpbml0aWFsU2NhbGUpOworICAgIG1fcGFnZS0+
c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CisKICAgICBGcmFtZVZpZXcmIGZyYW1lVmll
dyA9ICptX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbiA9IGZyYW1lVmlldy5zY3JvbGxQb3NpdGlvbigpOwogICAgIGlmICghbV9oYXNSZWNlaXZl
ZFZpc2libGVDb250ZW50UmVjdHNBZnRlckRpZENvbW1pdExvYWQpIHsK
</data>
<flag name="review"
          id="254086"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>