<?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>55985</bug_id>
          
          <creation_ts>2011-03-08 17:10:52 -0800</creation_ts>
          <short_desc>[chromium] Make updateAndDrawLayers argumentless.</short_desc>
          <delta_ts>2011-03-10 16:32:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>364239</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-03-08 17:10:52 -0800</bug_when>
    <thetext>[chromium] Make updateAndDrawLayers argumentless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364241</commentid>
    <comment_count>1</comment_count>
      <attachid>85112</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-03-08 17:12:36 -0800</bug_when>
    <thetext>Created attachment 85112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364253</commentid>
    <comment_count>2</comment_count>
      <attachid>85112</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-08 17:31:55 -0800</bug_when>
    <thetext>Comment on attachment 85112
Patch

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

Looks great, R-ing for nits as usual.

i wonder if setting the viewport should implicitly invalidate rather than requiring WebViewImpl to specify the viewport and dirty things up.  Resizing the viewport to a different size will always invalidate the entire content area, won&apos;t it?

&gt; Source/WebCore/ChangeLog:7
&gt; +

really need some words here about what&apos;s going on :)

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:184
&gt; +    m_rootLayerContentTiler-&gt;update(*m_rootLayerContentPaint.get(), m_viewportVisibleRect);

nit: &quot;*m_rootLayerContentPaint.get()&quot; ==&gt; &quot;*m_rootLayerContentPaint&quot;

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:197
&gt; +        m_verticalScrollbarTiler-&gt;update(*m_rootLayerScrollbarPaint.get(), m_viewportVisibleRect);

same nit as above - *foo.get() is the same as *foo but more characters

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:209
&gt; +        m_horizontalScrollbarTiler-&gt;update(*m_rootLayerScrollbarPaint.get(), m_viewportVisibleRect);

here as well

&gt; Source/WebKit/chromium/ChangeLog:7
&gt; +

needs at least something here about what&apos;s changing

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2302
&gt; +class WebViewImplContentPaintInterface : public TilePaintInterface {
&gt;  public:

this should have a WTF_MAKE_NONCOPYABLE() doohicky before public:

also it&apos;s kind of odd that this is called ...Interface since this is an implementation.  Mebbe WebViewImplPainter?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2306
&gt; +    explicit WebViewImplContentPaintInterface(WebViewImpl* webViewImpl)
&gt;          : m_webViewImpl(webViewImpl)
&gt;      {
&gt;      }

technically this should be in the private section and the public section should have a static PassOwnPtr&lt;&gt; create() function to force people to stick this in an OwnPtr&lt;&gt;

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2323
&gt; -
&gt;  class WebViewImplScrollbarPaintInterface : public TilePaintInterface {
&gt;  public:
&gt;      explicit WebViewImplScrollbarPaintInterface(WebViewImpl* webViewImpl)

comments about WebViewImplContentPaintInterface apply here as well (it should be WTF_MAKE_NONCOPYABLE, should have a create() and no public c&apos;tor, probably shouldn&apos;t have &apos;Interface&apos; in the class name).

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2354
&gt; +            m_layerRenderer-&gt;finish(); // finish all GL rendering before we hide the window?

since you are moving this code, should this be a FIXME or a bug or something?  It&apos;s quite an odd comment.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2391
&gt;      // The visibleRect includes scrollbars whereas the contentRect doesn&apos;t.

seems that this comment can go bye-bye now as well, or get moved down to updateLayerRendererViewport(). it doesn&apos;t make much sense here any more

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2409
&gt; +    RefPtr&lt;LayerRendererChromium&gt; layerRenderer = LayerRendererChromium::create(newContext, adoptPtr(new WebViewImplContentPaintInterface(this)), adoptPtr(new WebViewImplScrollbarPaintInterface(this)));

instead of having adoptPtr() here WebViewImplContentPaintInterface should be have a static PassOwnPtr&lt;&gt; create() function of its own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364279</commentid>
    <comment_count>3</comment_count>
      <attachid>85123</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-03-08 18:27:34 -0800</bug_when>
    <thetext>Created attachment 85123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364282</commentid>
    <comment_count>4</comment_count>
      <attachid>85123</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-08 18:36:58 -0800</bug_when>
    <thetext>Comment on attachment 85123
Patch

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

Looks great!  R=me, vangelis or enne can chime in if they have any feedback before I flip cq+

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:147
&gt; +    LayerTexture* getOffscreenLayerTexture();
&gt; +    void copyOffscreenTextureToDisplay();

i approve of making this private but it seems that getOffscreenLayerTexture() has no callers at all. le sigh...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364568</commentid>
    <comment_count>5</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-03-09 10:20:03 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 85123 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85123&amp;action=review
&gt; 
&gt; Looks great!  R=me, vangelis or enne can chime in if they have any feedback before I flip cq+

Nat talked to me about this patch in person and it sounded great.  There&apos;s no reason that all that tilers and rects had to be passed as function args rather than stored as member variables.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:147
&gt; &gt; +    LayerTexture* getOffscreenLayerTexture();
&gt; &gt; +    void copyOffscreenTextureToDisplay();
&gt; 
&gt; i approve of making this private but it seems that getOffscreenLayerTexture() has no callers at all. le sigh...

I am a little suspicious of this change, though.  +wjmaclean</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364651</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-09 11:33:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:147
&gt; &gt; &gt; +    LayerTexture* getOffscreenLayerTexture();
&gt; &gt; &gt; +    void copyOffscreenTextureToDisplay();
&gt; &gt; 
&gt; &gt; i approve of making this private but it seems that getOffscreenLayerTexture() has no callers at all. le sigh...
&gt; 
&gt; I am a little suspicious of this change, though.  +wjmaclean

it&apos;s changing an uncalled public function to an uncalled private one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364668</commentid>
    <comment_count>7</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-03-09 11:57:18 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 85123 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85123&amp;action=review
&gt; &gt; 
&gt; &gt; Looks great!  R=me, vangelis or enne can chime in if they have any feedback before I flip cq+
&gt; 
&gt; Nat talked to me about this patch in person and it sounded great.  There&apos;s no reason that all that tilers and rects had to be passed as function args rather than stored as member variables.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:147
&gt; &gt; &gt; +    LayerTexture* getOffscreenLayerTexture();
&gt; &gt; &gt; +    void copyOffscreenTextureToDisplay();
&gt; &gt; 
&gt; &gt; i approve of making this private but it seems that getOffscreenLayerTexture() has no callers at all. le sigh...
&gt; 
&gt; I am a little suspicious of this change, though.  +wjmaclean

In the long run I had originally imagined this might be called by something outside LayerRendererChromium, but I&apos;m fine with it being internalized at this point.

I assume the patch doesn&apos;t break --enable-composite-to-texture on chrome, which is my main concern, which it doesn&apos;t look like it will.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365641</commentid>
    <comment_count>8</comment_count>
      <attachid>85123</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-10 16:32:32 -0800</bug_when>
    <thetext>Comment on attachment 85123
Patch

Clearing flags on attachment: 85123

Committed r80785: &lt;http://trac.webkit.org/changeset/80785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365642</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-10 16:32:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85112</attachid>
            <date>2011-03-08 17:12:36 -0800</date>
            <delta_ts>2011-03-08 18:27:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55985-20110308171235.patch</filename>
            <type>text/plain</type>
            <size>30237</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA1NjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0N2RiNjU2MGZhNjhlYTU3
ZGY0NzQyMGYxYmY2YjNmYjhkN2E0NzA4Li43NTExNDg0ZDk5ZGYzZDhiOTE4ZDkxZGM5OGNmNTdm
ODc5MjAxYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDMtMDggIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSB1cGRhdGVBbmREcmF3TGF5ZXJzIGFy
Z3VtZW50bGVzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU1OTg1CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpM
YXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp2ZXJ0aWNhbFNjcm9sbGJhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpob3Jpem9udGFsU2Nyb2xsYmFyUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmludmFsaWRhdGVSb290TGF5ZXJSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29u
dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVS
b290TGF5ZXJTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1Jvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OnNldFZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dXBkYXRlQW5kRHJhd0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpzZXRSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlld3BvcnRTaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXcpOgorCiAyMDExLTAzLTA4ICBB
bmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTdGV2ZSBCbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4
IGU3YjI5OWZjMjM3Y2U4ZDYwYmU3OTczMGZmNzQzMDFiMWMxNTE1MGUuLjgyMzYyZTc4NjU4NjRh
ZTAxOGVmOTZhOTlmYWEzNmFmZDZlZTY4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcApAQCAtOTEsMjEgKzkxLDIzIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojpjb21wYXJlTGF5ZXJaKGNvbnN0IENDTGF5ZXJJbXBsKiBhLCBjb25zdCBDQ0xheWVySW1wCiAg
ICAgcmV0dXJuIGEtPmRyYXdEZXB0aCgpIDwgYi0+ZHJhd0RlcHRoKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorUGFzc1JlZlB0cjxMYXllclJl
bmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NPd25QdHI8VGlsZVBhaW50SW50ZXJmYWNl
PiBjb250ZW50UGFpbnQsIFBhc3NPd25QdHI8VGlsZVBhaW50SW50ZXJmYWNlPiBzY3JvbGxiYXJQ
YWludCkKIHsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVm
UHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFJlZihuZXcgTGF5
ZXJSZW5kZXJlckNocm9taXVtKGNvbnRleHQpKSk7CisgICAgUmVmUHRyPExheWVyUmVuZGVyZXJD
aHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFJlZihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVt
KGNvbnRleHQsIGNvbnRlbnRQYWludCwgc2Nyb2xsYmFyUGFpbnQpKSk7CiAgICAgaWYgKCFsYXll
clJlbmRlcmVyLT5oYXJkd2FyZUNvbXBvc2l0aW5nKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgcmV0dXJuIGxheWVyUmVuZGVyZXIucmVsZWFzZSgpOwogfQogCi1MYXllclJlbmRlcmVyQ2hy
b21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0KQotICAgIDogbV9yb290TGF5ZXIoMCkKLSAgICAsIG1fc2Nyb2xsUG9zaXRpb24o
SW50UG9pbnQoLTEsIC0xKSkKK0xheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NPd25QdHI8
VGlsZVBhaW50SW50ZXJmYWNlPiBjb250ZW50UGFpbnQsIFBhc3NPd25QdHI8VGlsZVBhaW50SW50
ZXJmYWNlPiBzY3JvbGxiYXJQYWludCkKKyAgICA6IG1fdmlld3BvcnRTY3JvbGxQb3NpdGlvbihJ
bnRQb2ludCgtMSwgLTEpKQorICAgICwgbV9yb290TGF5ZXIoMCkKKyAgICAsIG1fcm9vdExheWVy
Q29udGVudFBhaW50KGNvbnRlbnRQYWludCkKKyAgICAsIG1fcm9vdExheWVyU2Nyb2xsYmFyUGFp
bnQoc2Nyb2xsYmFyUGFpbnQpCiAgICAgLCBtX2N1cnJlbnRTaGFkZXIoMCkKICAgICAsIG1fY3Vy
cmVudFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQpA
QCAtMTE0LDggKzExNiw4IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRlCiAgICAgLCBtX2RlZmF1
bHRSZW5kZXJTdXJmYWNlKDApCiB7CiAgICAgbV9oYXJkd2FyZUNvbXBvc2l0aW5nID0gaW5pdGlh
bGl6ZVNoYXJlZE9iamVjdHMoKTsKLSAgICBtX3Jvb3RMYXllclRpbGVyID0gTGF5ZXJUaWxlckNo
cm9taXVtOjpjcmVhdGUodGhpcywgSW50U2l6ZSgyNTYsIDI1NiksIExheWVyVGlsZXJDaHJvbWl1
bTo6Tm9Cb3JkZXJUZXhlbHMpOwotICAgIEFTU0VSVChtX3Jvb3RMYXllclRpbGVyKTsKKyAgICBt
X3Jvb3RMYXllckNvbnRlbnRUaWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMs
IEludFNpemUoMjU2LCAyNTYpLCBMYXllclRpbGVyQ2hyb21pdW06Ok5vQm9yZGVyVGV4ZWxzKTsK
KyAgICBBU1NFUlQobV9yb290TGF5ZXJDb250ZW50VGlsZXIpOwogCiAgICAgbV9oZWFkc1VwRGlz
cGxheSA9IENDSGVhZHNVcERpc3BsYXk6OmNyZWF0ZSh0aGlzKTsKIH0KQEAgLTE0NiwzMCArMTQ4
LDMwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VTaGFkZXIodW5zaWduZWQgcHJv
Z3JhbUlkKQogICAgIH0KIH0KIAotSW50UmVjdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZlcnRp
Y2FsU2Nyb2xsYmFyUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpCitJbnRSZWN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmVydGljYWxT
Y3JvbGxiYXJSZWN0KCkgY29uc3QKIHsKLSAgICBJbnRSZWN0IHZlcnRpY2FsU2Nyb2xsYmFyKElu
dFBvaW50KGNvbnRlbnRSZWN0Lm1heFgoKSwgY29udGVudFJlY3QueSgpKSwgSW50U2l6ZSh2aXNp
YmxlUmVjdC53aWR0aCgpIC0gY29udGVudFJlY3Qud2lkdGgoKSwgdmlzaWJsZVJlY3QuaGVpZ2h0
KCkpKTsKKyAgICBJbnRSZWN0IHZlcnRpY2FsU2Nyb2xsYmFyKEludFBvaW50KG1fdmlld3BvcnRD
b250ZW50UmVjdC5tYXhYKCksIG1fdmlld3BvcnRDb250ZW50UmVjdC55KCkpLCBJbnRTaXplKG1f
dmlld3BvcnRWaXNpYmxlUmVjdC53aWR0aCgpIC0gbV92aWV3cG9ydENvbnRlbnRSZWN0LndpZHRo
KCksIG1fdmlld3BvcnRWaXNpYmxlUmVjdC5oZWlnaHQoKSkpOwogICAgIHJldHVybiB2ZXJ0aWNh
bFNjcm9sbGJhcjsKIH0KIAotSW50UmVjdCBMYXllclJlbmRlcmVyQ2hyb21pdW06Omhvcml6b250
YWxTY3JvbGxiYXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCkKK0ludFJlY3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpob3Jpem9udGFs
U2Nyb2xsYmFyUmVjdCgpIGNvbnN0CiB7Ci0gICAgSW50UmVjdCBob3Jpem9udGFsU2Nyb2xsYmFy
KEludFBvaW50KGNvbnRlbnRSZWN0LngoKSwgY29udGVudFJlY3QubWF4WSgpKSwgSW50U2l6ZSh2
aXNpYmxlUmVjdC53aWR0aCgpLCB2aXNpYmxlUmVjdC5oZWlnaHQoKSAtIGNvbnRlbnRSZWN0Lmhl
aWdodCgpKSk7CisgICAgSW50UmVjdCBob3Jpem9udGFsU2Nyb2xsYmFyKEludFBvaW50KG1fdmll
d3BvcnRDb250ZW50UmVjdC54KCksIG1fdmlld3BvcnRDb250ZW50UmVjdC5tYXhZKCkpLCBJbnRT
aXplKG1fdmlld3BvcnRWaXNpYmxlUmVjdC53aWR0aCgpLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Qu
aGVpZ2h0KCkgLSBtX3ZpZXdwb3J0Q29udGVudFJlY3QuaGVpZ2h0KCkpKTsKICAgICByZXR1cm4g
aG9yaXpvbnRhbFNjcm9sbGJhcjsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06Omlu
dmFsaWRhdGVSb290TGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50
UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQordm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmludmFsaWRhdGVSb290TGF5ZXJSZWN0KGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkKIHsKLSAgICBtX3Jvb3RMYXllclRpbGVyLT5pbnZhbGlkYXRlUmVjdChkaXJ0
eVJlY3QpOworICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyLT5pbnZhbGlkYXRlUmVjdChkaXJ0
eVJlY3QpOwogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXJUaWxlcikgewotICAgICAgICBJ
bnRSZWN0IHNjcm9sbGJhciA9IGhvcml6b250YWxTY3JvbGxiYXJSZWN0KHZpc2libGVSZWN0LCBj
b250ZW50UmVjdCk7CisgICAgICAgIEludFJlY3Qgc2Nyb2xsYmFyID0gaG9yaXpvbnRhbFNjcm9s
bGJhclJlY3QoKTsKICAgICAgICAgaWYgKGRpcnR5UmVjdC5pbnRlcnNlY3RzKHNjcm9sbGJhcikp
IHsKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyLT5zZXRMYXllclBvc2l0
aW9uKHNjcm9sbGJhci5sb2NhdGlvbigpKTsKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9s
bGJhclRpbGVyLT5pbnZhbGlkYXRlUmVjdChkaXJ0eVJlY3QpOwogICAgICAgICB9CiAgICAgfQog
ICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyVGlsZXIpIHsKLSAgICAgICAgSW50UmVjdCBzY3Jv
bGxiYXIgPSB2ZXJ0aWNhbFNjcm9sbGJhclJlY3QodmlzaWJsZVJlY3QsIGNvbnRlbnRSZWN0KTsK
KyAgICAgICAgSW50UmVjdCBzY3JvbGxiYXIgPSB2ZXJ0aWNhbFNjcm9sbGJhclJlY3QoKTsKICAg
ICAgICAgaWYgKGRpcnR5UmVjdC5pbnRlcnNlY3RzKHNjcm9sbGJhcikpIHsKICAgICAgICAgICAg
IG1fdmVydGljYWxTY3JvbGxiYXJUaWxlci0+c2V0TGF5ZXJQb3NpdGlvbihzY3JvbGxiYXIubG9j
YXRpb24oKSk7CiAgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyVGlsZXItPmludmFsaWRh
dGVSZWN0KGRpcnR5UmVjdCk7CkBAIC0xNzcsNzMgKzE3OSw4NyBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0LCBjbwogICAgIH0KIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZVJv
b3RMYXllckNvbnRlbnRzKFRpbGVQYWludEludGVyZmFjZSYgdGlsZVBhaW50LCBjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlUmVjdCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVSb290
TGF5ZXJDb250ZW50cygpCiB7Ci0gICAgbV9yb290TGF5ZXJUaWxlci0+dXBkYXRlKHRpbGVQYWlu
dCwgdmlzaWJsZVJlY3QpOworICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyLT51cGRhdGUoKm1f
cm9vdExheWVyQ29udGVudFBhaW50LmdldCgpLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3QpOwogfQog
Ci12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyU2Nyb2xsYmFycyhU
aWxlUGFpbnRJbnRlcmZhY2UmIHNjcm9sbGJhclBhaW50LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxl
UmVjdCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCit2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dXBkYXRlUm9vdExheWVyU2Nyb2xsYmFycygpCiB7Ci0gICAgaWYgKHZpc2libGVSZWN0
LndpZHRoKCkgPiBjb250ZW50UmVjdC53aWR0aCgpKSB7Ci0gICAgICAgIEludFJlY3QgdmVydGlj
YWxTY3JvbGxiYXIgPSB2ZXJ0aWNhbFNjcm9sbGJhclJlY3QodmlzaWJsZVJlY3QsIGNvbnRlbnRS
ZWN0KTsKKyAgICBpZiAobV92aWV3cG9ydFZpc2libGVSZWN0LndpZHRoKCkgPiBtX3ZpZXdwb3J0
Q29udGVudFJlY3Qud2lkdGgoKSkgeworICAgICAgICBJbnRSZWN0IHZlcnRpY2FsU2Nyb2xsYmFy
ID0gdmVydGljYWxTY3JvbGxiYXJSZWN0KCk7CiAgICAgICAgIEludFNpemUgdGlsZVNpemUgPSB2
ZXJ0aWNhbFNjcm9sbGJhci5zaXplKCkuc2hydW5rVG8oSW50U2l6ZShtX21heFRleHR1cmVTaXpl
LCBtX21heFRleHR1cmVTaXplKSk7CiAgICAgICAgIGlmICghbV92ZXJ0aWNhbFNjcm9sbGJhclRp
bGVyKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhclRpbGVyID0gTGF5ZXJUaWxlckNo
cm9taXVtOjpjcmVhdGUodGhpcywgdGlsZVNpemUsIExheWVyVGlsZXJDaHJvbWl1bTo6Tm9Cb3Jk
ZXJUZXhlbHMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFy
VGlsZXItPnNldFRpbGVTaXplKHRpbGVTaXplKTsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJh
clRpbGVyLT5zZXRMYXllclBvc2l0aW9uKHZlcnRpY2FsU2Nyb2xsYmFyLmxvY2F0aW9uKCkpOwot
ICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyVGlsZXItPnVwZGF0ZShzY3JvbGxiYXJQYWludCwg
dmlzaWJsZVJlY3QpOworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyVGlsZXItPnVwZGF0ZSgq
bV9yb290TGF5ZXJTY3JvbGxiYXJQYWludC5nZXQoKSwgbV92aWV3cG9ydFZpc2libGVSZWN0KTsK
ICAgICB9IGVsc2UKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhclRpbGVyLmNsZWFyKCk7CiAK
LSAgICBpZiAodmlzaWJsZVJlY3QuaGVpZ2h0KCkgPiBjb250ZW50UmVjdC5oZWlnaHQoKSkgewot
ICAgICAgICBJbnRSZWN0IGhvcml6b250YWxTY3JvbGxiYXIgPSBob3Jpem9udGFsU2Nyb2xsYmFy
UmVjdCh2aXNpYmxlUmVjdCwgY29udGVudFJlY3QpOworICAgIGlmIChtX3ZpZXdwb3J0VmlzaWJs
ZVJlY3QuaGVpZ2h0KCkgPiBtX3ZpZXdwb3J0Q29udGVudFJlY3QuaGVpZ2h0KCkpIHsKKyAgICAg
ICAgSW50UmVjdCBob3Jpem9udGFsU2Nyb2xsYmFyID0gaG9yaXpvbnRhbFNjcm9sbGJhclJlY3Qo
KTsKICAgICAgICAgSW50U2l6ZSB0aWxlU2l6ZSA9IGhvcml6b250YWxTY3JvbGxiYXIuc2l6ZSgp
LnNocnVua1RvKEludFNpemUobV9tYXhUZXh0dXJlU2l6ZSwgbV9tYXhUZXh0dXJlU2l6ZSkpOwog
ICAgICAgICBpZiAoIW1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyKQogICAgICAgICAgICAgbV9o
b3Jpem9udGFsU2Nyb2xsYmFyVGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSh0aGlz
LCB0aWxlU2l6ZSwgTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyLT5zZXRUaWxlU2l6
ZSh0aWxlU2l6ZSk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyLT5zZXRMYXll
clBvc2l0aW9uKGhvcml6b250YWxTY3JvbGxiYXIubG9jYXRpb24oKSk7Ci0gICAgICAgIG1faG9y
aXpvbnRhbFNjcm9sbGJhclRpbGVyLT51cGRhdGUoc2Nyb2xsYmFyUGFpbnQsIHZpc2libGVSZWN0
KTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyVGlsZXItPnVwZGF0ZSgqbV9yb290TGF5
ZXJTY3JvbGxiYXJQYWludC5nZXQoKSwgbV92aWV3cG9ydFZpc2libGVSZWN0KTsKICAgICB9IGVs
c2UKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyVGlsZXIuY2xlYXIoKTsKIH0KIAogdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSb290TGF5ZXIoKQogewotICAgIG1fcm9vdExh
eWVyVGlsZXItPmRyYXcobV92aXNpYmxlUmVjdCk7CisgICAgbV9yb290TGF5ZXJDb250ZW50VGls
ZXItPmRyYXcobV92aWV3cG9ydFZpc2libGVSZWN0KTsKIAogICAgIGlmIChtX3ZlcnRpY2FsU2Ny
b2xsYmFyVGlsZXIpCi0gICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJUaWxlci0+ZHJhdyhtX3Zp
c2libGVSZWN0KTsKKyAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhclRpbGVyLT5kcmF3KG1fdmll
d3BvcnRWaXNpYmxlUmVjdCk7CiAKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyVGlsZXIp
Ci0gICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyLT5kcmF3KG1fdmlzaWJsZVJlY3Qp
OworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJUaWxlci0+ZHJhdyhtX3ZpZXdwb3J0Vmlz
aWJsZVJlY3QpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlQW5kRHJh
d0xheWVycyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVQYWludEludGVyZmFjZSYgdGlsZVBh
aW50LCBUaWxlUGFpbnRJbnRlcmZhY2UmIHNjcm9sbGJhclBhaW50KQordm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnNldFZpZXdwb3J0KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQor
eworICAgIGJvb2wgdmlzaWJsZVJlY3RDaGFuZ2VkID0gbV92aWV3cG9ydFZpc2libGVSZWN0LnNp
emUoKSAhPSB2aXNpYmxlUmVjdC5zaXplKCk7CisKKyAgICBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Qg
PSB2aXNpYmxlUmVjdDsKKyAgICBtX3ZpZXdwb3J0Q29udGVudFJlY3QgPSBjb250ZW50UmVjdDsK
KyAgICBtX3ZpZXdwb3J0U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKKworICAgIGlm
ICh2aXNpYmxlUmVjdENoYW5nZWQpIHsKKyAgICAgICAgLy8gUmVzZXQgdGhlIGN1cnJlbnQgcmVu
ZGVyIHN1cmZhY2UgdG8gZm9yY2UgYW4gdXBkYXRlIG9mIHRoZSB2aWV3cG9ydCBhbmQKKyAgICAg
ICAgLy8gcHJvamVjdGlvbiBtYXRyaXggbmV4dCB0aW1lIHVzZVJlbmRlclN1cmZhY2UgaXMgY2Fs
bGVkLgorICAgICAgICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gMDsKKyAgICB9Cit9CisKK3Zv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVBbmREcmF3TGF5ZXJzKCkKIHsKICAgICBB
U1NFUlQobV9oYXJkd2FyZUNvbXBvc2l0aW5nKTsKIAogICAgIGlmICghbV9yb290TGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZVJvb3RMYXllckNvbnRlbnRzKHRpbGVQYWludCwg
dmlzaWJsZVJlY3QpOworICAgIHVwZGF0ZVJvb3RMYXllckNvbnRlbnRzKCk7CisKICAgICAvLyBS
ZWNoZWNrIHRoYXQgd2Ugc3RpbGwgaGF2ZSBhIHJvb3QgbGF5ZXIuIFRoaXMgbWF5IGJlY29tZSBu
dWxsIGlmCiAgICAgLy8gY29tcG9zaXRpbmcgZ2V0cyB0dXJuZWQgb2ZmIGR1cmluZyBhIHBhaW50
IG9wZXJhdGlvbi4KICAgICBpZiAoIW1fcm9vdExheWVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB1cGRhdGVSb290TGF5ZXJTY3JvbGxiYXJzKHNjcm9sbGJhclBhaW50LCB2aXNpYmxlUmVjdCwg
Y29udGVudFJlY3QpOworICAgIHVwZGF0ZVJvb3RMYXllclNjcm9sbGJhcnMoKTsKIAogICAgIFZl
Y3RvcjxDQ0xheWVySW1wbCo+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgdXBkYXRlTGF5
ZXJzKHZpc2libGVSZWN0LCBjb250ZW50UmVjdCwgc2Nyb2xsUG9zaXRpb24sIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOworICAgIHVwZGF0ZUxheWVycyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
IAogICAgIGRyYXdMYXllcnMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiB9CiAKLXZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9z
aXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxD
Q0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQordm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnVwZGF0ZUxheWVycyhWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCkKIHsKICAgICBDQ0xheWVySW1wbCogcm9vdERyYXdMYXllciA9IG1fcm9vdExh
eWVyLT5jY0xheWVySW1wbCgpOwogCkBAIC0yNTEsMjQgKzI2NywxMiBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBj
b25zdCBJbnRSZQogICAgICAgICByb290RHJhd0xheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7
CiAgICAgQVNTRVJUKHJvb3REcmF3TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICAvLyBJ
ZiB0aGUgc2l6ZSBvZiB0aGUgdmlzaWJsZSBhcmVhIGhhcyBjaGFuZ2VkIHRoZW4gYWxsb2NhdGUg
YSBuZXcgdGV4dHVyZQotICAgIC8vIHRvIHN0b3JlIHRoZSBjb250ZW50cyBvZiB0aGUgcm9vdCBs
YXllciBhbmQgYWRqdXN0IHRoZSBwcm9qZWN0aW9uIG1hdHJpeAotICAgIC8vIGFuZCB2aWV3cG9y
dC4KLQotICAgIHJvb3REcmF3TGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+bV9jb250ZW50UmVjdCA9
IEludFJlY3QoSW50UG9pbnQoMCwgMCksIHZpc2libGVSZWN0LnNpemUoKSk7Ci0KLSAgICBpZiAo
dmlzaWJsZVJlY3Quc2l6ZSgpICE9IG1fdmlzaWJsZVJlY3Quc2l6ZSgpKSB7Ci0gICAgICAgIC8v
IFJlc2V0IHRoZSBjdXJyZW50IHJlbmRlciBzdXJmYWNlIHRvIGZvcmNlIGFuIHVwZGF0ZSBvZiB0
aGUgdmlld3BvcnQgYW5kCi0gICAgICAgIC8vIHByb2plY3Rpb24gbWF0cml4IG5leHQgdGltZSB1
c2VSZW5kZXJTdXJmYWNlIGlzIGNhbGxlZC4KLSAgICAgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFj
ZSA9IDA7Ci0gICAgfQotICAgIG1fdmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdDsKKyAgICByb290
RHJhd0xheWVyLT5yZW5kZXJTdXJmYWNlKCktPm1fY29udGVudFJlY3QgPSBJbnRSZWN0KEludFBv
aW50KDAsIDApLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Quc2l6ZSgpKTsKIAotICAgIG1fc2Nyb2xs
UG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKICAgICAvLyBTY2lzc29yIG91dCB0aGUgc2Nyb2xs
YmFycyB0byBhdm9pZCByZW5kZXJpbmcgb24gdG9wIG9mIHRoZW0uCi0gICAgSW50UmVjdCByb290
U2Npc3NvclJlY3QoY29udGVudFJlY3QpOworICAgIEludFJlY3Qgcm9vdFNjaXNzb3JSZWN0KG1f
dmlld3BvcnRDb250ZW50UmVjdCk7CiAgICAgLy8gVGhlIHNjaXNzb3JSZWN0IHNob3VsZCBub3Qg
aW5jbHVkZSB0aGUgc2Nyb2xsIG9mZnNldC4KLSAgICByb290U2Npc3NvclJlY3QubW92ZSgtbV9z
Y3JvbGxQb3NpdGlvbi54KCksIC1tX3Njcm9sbFBvc2l0aW9uLnkoKSk7CisgICAgcm9vdFNjaXNz
b3JSZWN0Lm1vdmUoLW1fdmlld3BvcnRTY3JvbGxQb3NpdGlvbi54KCksIC1tX3ZpZXdwb3J0U2Ny
b2xsUG9zaXRpb24ueSgpKTsKICAgICByb290RHJhd0xheWVyLT5zZXRTY2lzc29yUmVjdChyb290
U2Npc3NvclJlY3QpOwogCiAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSA9IHJvb3REcmF3TGF5
ZXItPnJlbmRlclN1cmZhY2UoKTsKQEAgLTI5Miw3ICsyOTYsNyBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd0xheWVycyhjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVy
U3VyZmFjZQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgLy8gVGhlIEdMIHZpZXdw
b3J0IGNvdmVycyB0aGUgZW50aXJlIHZpc2libGUgYXJlYSwgaW5jbHVkaW5nIHRoZSBzY3JvbGxi
YXJzLgotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwg
bV92aXNpYmxlUmVjdC53aWR0aCgpLCBtX3Zpc2libGVSZWN0LmhlaWdodCgpKSk7CisgICAgR0xD
KG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX3ZpZXdwb3J0Vmlz
aWJsZVJlY3Qud2lkdGgoKSwgbV92aWV3cG9ydFZpc2libGVSZWN0LmhlaWdodCgpKSk7CiAKICAg
ICAvLyBCaW5kIHRoZSBjb21tb24gdmVydGV4IGF0dHJpYnV0ZXMgdXNlZCBmb3IgZHJhd2luZyBh
bGwgdGhlIGxheWVycy4KICAgICBtX3NoYXJlZEdlb21ldHJ5LT5wcmVwYXJlRm9yRHJhdygpOwpA
QCAtMzgyLDcgKzM4Niw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRSb290TGF5
ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBsYXllcikKICAgICBtX3Jvb3RMYXllciA9IGxh
eWVyOwogICAgIGlmIChtX3Jvb3RMYXllcikKICAgICAgICAgbV9yb290TGF5ZXItPnNldExheWVy
UmVuZGVyZXIodGhpcyk7Ci0gICAgbV9yb290TGF5ZXJUaWxlci0+aW52YWxpZGF0ZUVudGlyZUxh
eWVyKCk7CisgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPmludmFsaWRhdGVFbnRpcmVMYXll
cigpOwogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXJUaWxlcikKICAgICAgICAgbV9ob3Jp
em9udGFsU2Nyb2xsYmFyVGlsZXItPmludmFsaWRhdGVFbnRpcmVMYXllcigpOwogICAgIGlmICht
X3ZlcnRpY2FsU2Nyb2xsYmFyVGlsZXIpCkBAIC0zOTEsNyArMzk1LDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IGxh
eWVyKQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHMo
dm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChyZWN0Lm1h
eFgoKSA8PSB2aXNpYmxlUmVjdFNpemUoKS53aWR0aCgpICYmIHJlY3QubWF4WSgpIDw9IHZpc2li
bGVSZWN0U2l6ZSgpLmhlaWdodCgpKTsKKyAgICBBU1NFUlQocmVjdC5tYXhYKCkgPD0gbV92aWV3
cG9ydFZpc2libGVSZWN0LndpZHRoKCkgJiYgcmVjdC5tYXhZKCkgPD0gbV92aWV3cG9ydFZpc2li
bGVSZWN0LmhlaWdodCgpKTsKIAogICAgIGlmICghcGl4ZWxzKQogICAgICAgICByZXR1cm47CkBA
IC05MjAsNyArOTI0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFy
ZWRPYmplY3RzKCkKICAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5kZWxl
dGVGcmFtZWJ1ZmZlcihtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKIAogICAgIC8vIENsZWFy
IHRpbGVycyBiZWZvcmUgdGhlIHRleHR1cmUgbWFuYWdlciwgYXMgdGhleSBoYXZlIHJlZmVyZW5j
ZXMgdG8gdGV4dHVyZXMuCi0gICAgbV9yb290TGF5ZXJUaWxlci5jbGVhcigpOworICAgIG1fcm9v
dExheWVyQ29udGVudFRpbGVyLmNsZWFyKCk7CiAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyVGls
ZXIuY2xlYXIoKTsKICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyVGlsZXIuY2xlYXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA3ZTg4NTBhZmQ1NWFhNmI5ZmM1YzZl
Yzg4NTA0N2IxZTlmYWI4YTVlLi43MzYyYjczYjQ1MmQwN2VlODlmNGUzOGE2MGRiOTViYmJiOWI2
OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtNjYsMTcgKzY2LDE4
IEBAIGNsYXNzIENDSGVhZHNVcERpc3BsYXk7CiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2lu
ZyBvZiBjb21wb3NpdGVkIHJlbmRlciBsYXllcnMgdXNpbmcgR0wuCiBjbGFzcyBMYXllclJlbmRl
cmVyQ2hyb21pdW0gOiBwdWJsaWMgUmVmQ291bnRlZDxMYXllclJlbmRlcmVyQ2hyb21pdW0+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNy
ZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBncmFwaGljc0NvbnRleHQzRCk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8VGlsZVBhaW50SW50ZXJmYWNlPiBj
b250ZW50UGFpbnQsIFBhc3NPd25QdHI8VGlsZVBhaW50SW50ZXJmYWNlPiBzY3JvbGxiYXJQYWlu
dCk7CiAKICAgICB+TGF5ZXJSZW5kZXJlckNocm9taXVtKCk7CiAKICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCgpOwogCi0gICAgdm9pZCBpbnZhbGlkYXRlUm9vdExheWVyUmVjdChjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgdm9pZCBpbnZhbGlkYXRlUm9vdExheWVyUmVjdChj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworCisgICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IElu
dFBvaW50JiBzY3JvbGxQb3NpdGlvbik7CiAKICAgICAvLyB1cGRhdGVzIGFuZCBkcmF3cyB0aGUg
Y3VycmVudCBsYXllcnMgb250byB0aGUgYmFja2J1ZmZlcgotICAgIHZvaWQgdXBkYXRlQW5kRHJh
d0xheWVycyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGlsZVBhaW50SW50ZXJmYWNlJiwgVGlsZVBhaW50SW50ZXJmYWNlJiBzY3Jv
bGxiYXJQYWludCk7CisgICAgdm9pZCB1cGRhdGVBbmREcmF3TGF5ZXJzKCk7CiAKICAgICAvLyB3
YWl0cyBmb3IgcmVuZGVyaW5nIHRvIGZpbmlzaAogICAgIHZvaWQgZmluaXNoKCk7CkBAIC04NCw3
ICs4NSw3IEBAIHB1YmxpYzoKICAgICAvLyBwdXRzIGJhY2tidWZmZXIgb25zY3JlZW4KICAgICB2
b2lkIHByZXNlbnQoKTsKIAotICAgIEludFNpemUgdmlzaWJsZVJlY3RTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV92aXNpYmxlUmVjdC5zaXplKCk7IH0KKyAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRWaXNpYmxlUmVjdC5zaXplKCk7IH0KIAogICAgIHZv
aWQgc2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXIpOwogICAgIExh
eWVyQ2hyb21pdW0qIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CkBA
IC0xMzIsMTIgKzEzMywxMSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4dCgp
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IExheWVyUmVuZGVyZXJDaHJvbWl1bShQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBncmFwaGljc0NvbnRleHQzRCk7CisgICAgZXhw
bGljaXQgTGF5ZXJSZW5kZXJlckNocm9taXVtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
LCBQYXNzT3duUHRyPFRpbGVQYWludEludGVyZmFjZT4gY29udGVudFBhaW50LCBQYXNzT3duUHRy
PFRpbGVQYWludEludGVyZmFjZT4gc2Nyb2xsYmFyUGFpbnQpOwogCi0gICAgdm9pZCB1cGRhdGVM
YXllcnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Ci0gICAgdm9p
ZCB1cGRhdGVSb290TGF5ZXJDb250ZW50cyhUaWxlUGFpbnRJbnRlcmZhY2UmLCBjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlUmVjdCk7Ci0gICAgdm9pZCB1cGRhdGVSb290TGF5ZXJTY3JvbGxiYXJzKFRp
bGVQYWludEludGVyZmFjZSYgc2Nyb2xsYmFyUGFpbnQsIGNvbnN0IEludFJlY3QmIHZpc2libGVS
ZWN0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgdm9pZCB1cGRhdGVMYXllcnMo
VmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIHZvaWQg
dXBkYXRlUm9vdExheWVyQ29udGVudHMoKTsKKyAgICB2b2lkIHVwZGF0ZVJvb3RMYXllclNjcm9s
bGJhcnMoKTsKICAgICB2b2lkIHVwZGF0ZVByb3BlcnRpZXNBbmRSZW5kZXJTdXJmYWNlcyhMYXll
ckNocm9taXVtKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgVmVj
dG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxDQ0xheWVy
SW1wbCo+JiBsYXllckxpc3QpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHNSZWN1cnNpdmUoTGF5
ZXJDaHJvbWl1bSopOwogCkBAIC0xNjEsMTkgKzE2MSwyMiBAQCBwcml2YXRlOgogICAgIGJvb2wg
aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKTsKICAgICB2b2lkIGNsZWFudXBTaGFyZWRPYmplY3Rz
KCk7CiAKLSAgICBzdGF0aWMgSW50UmVjdCB2ZXJ0aWNhbFNjcm9sbGJhclJlY3QoY29uc3QgSW50
UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKLSAgICBzdGF0
aWMgSW50UmVjdCBob3Jpem9udGFsU2Nyb2xsYmFyUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxl
UmVjdCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIEludFJlY3QgdmVydGljYWxT
Y3JvbGxiYXJSZWN0KCkgY29uc3Q7CisgICAgSW50UmVjdCBob3Jpem9udGFsU2Nyb2xsYmFyUmVj
dCgpIGNvbnN0OwogCi0gICAgSW50UmVjdCBtX3Zpc2libGVSZWN0OworICAgIEludFJlY3QgbV92
aWV3cG9ydFZpc2libGVSZWN0OworICAgIEludFJlY3QgbV92aWV3cG9ydENvbnRlbnRSZWN0Owor
ICAgIEludFBvaW50IG1fdmlld3BvcnRTY3JvbGxQb3NpdGlvbjsKIAogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJpeDsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBtX3Jvb3RMYXllcjsKLSAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBtX3Jvb3RMYXll
clRpbGVyOworICAgIE93blB0cjxUaWxlUGFpbnRJbnRlcmZhY2U+IG1fcm9vdExheWVyQ29udGVu
dFBhaW50OworICAgIE93blB0cjxUaWxlUGFpbnRJbnRlcmZhY2U+IG1fcm9vdExheWVyU2Nyb2xs
YmFyUGFpbnQ7CisgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gbV9yb290TGF5ZXJDb250
ZW50VGlsZXI7CiAgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gbV9ob3Jpem9udGFsU2Ny
b2xsYmFyVGlsZXI7CiAgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gbV92ZXJ0aWNhbFNj
cm9sbGJhclRpbGVyOwogCi0gICAgSW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29s
IG1faGFyZHdhcmVDb21wb3NpdGluZzsKIAogICAgIHVuc2lnbmVkIG1fY3VycmVudFNoYWRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggNjA0ZWY2MTllMjUzMDEyMGRl
MDU2OGExYjE0NmY1ODAzNTQ1MWZjOS4uNDA0OTQ0YjY1YTg4YWZjNGRjNDBjNjA3NDRiZGMyODZk
OGY1YWNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTY2LDggKzY2
LDggQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KCkKICAgICAvLyBVc2UgYSBmdWxsc2Ny
ZWVuIHRleHR1cmUgb25seSBpZiB3ZSBuZWVkIHRvLi4uCiAgICAgSW50U2l6ZSBodWRTaXplOwog
ICAgIGlmIChtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZSkgewotICAgICAgICBodWRTaXplLnNldFdp
ZHRoKG1pbigyMDQ4LCBtX2xheWVyUmVuZGVyZXItPnZpc2libGVSZWN0U2l6ZSgpLndpZHRoKCkp
KTsKLSAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQobWluKDIwNDgsIG1fbGF5ZXJSZW5kZXJlci0+
dmlzaWJsZVJlY3RTaXplKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgaHVkU2l6ZS5zZXRXaWR0aCht
aW4oMjA0OCwgbV9sYXllclJlbmRlcmVyLT52aWV3cG9ydFNpemUoKS53aWR0aCgpKSk7CisgICAg
ICAgIGh1ZFNpemUuc2V0SGVpZ2h0KG1pbigyMDQ4LCBtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0
U2l6ZSgpLmhlaWdodCgpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaHVkU2l6ZS5zZXRXaWR0
aCg1MTIpOwogICAgICAgICBodWRTaXplLnNldEhlaWdodCgxMjgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBkODVmMGI3NDMyYzE0ZjEwNDcxOWZkOGM0MzUzNjU3ZTlmMjQzN2VjLi5l
MjUzMjVhOTYzZDEzNDA4YjIyNmFlODQ0NzFkOWEyZWJjZDA5MjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTAzLTA4ICBOYXQgRHVjYSAgPG5kdWNh
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbY2hyb21pdW1dIE1ha2UgdXBkYXRlQW5kRHJhd0xheWVycyBhcmd1bWVudGxlc3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTk4NQor
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnJlc2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwYWludCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzY3JvbGxSb290TGF5ZXJSZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmludmFsaWRhdGVSb290TGF5ZXJSZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGxDb250ZW50UGFpbnRJbnRlcmZhY2U6OldlYlZpZXdJbXBs
Q29udGVudFBhaW50SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpkb0NvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZWFs
bG9jYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlTGF5
ZXJSZW5kZXJlclZpZXdwb3J0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAx
MS0wMy0wOCAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKaW5kZXggNmFlNGYzNTg4NzY2MDhkODRiYzNlODMzODU5Zjk1ZDAzMmIzZTBl
Ni4uOTk3YmU2YzNiNzcwYmQ1NmFlNDg3NmQ3NGQxM2ZiMDA0YWMzY2M3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtOTY1LDYgKzk2NSw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQogICAgICAgICBX
ZWJSZWN0IGRhbWFnZWRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCwgbV9zaXplLmhlaWdodCk7CiAg
ICAgICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgewogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgICAgIHVwZGF0ZUxheWVyUmVuZGVyZXJW
aWV3cG9ydCgpOwogICAgICAgICAgICAgaW52YWxpZGF0ZVJvb3RMYXllclJlY3QoZGFtYWdlZFJl
Y3QpOwogI2VuZGlmCiAgICAgICAgIH0gZWxzZQpAQCAtMTA1Nyw3ICsxMDU4LDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3Qp
CiAgICAgICAgIGlmIChjYW52YXMpIHsKICAgICAgICAgICAgIC8vIENsaXAgcmVjdCB0byB0aGUg
Y29uZmluZXMgb2YgdGhlIHJvb3RMYXllclRleHR1cmUuCiAgICAgICAgICAgICBJbnRSZWN0IHJl
c2l6ZVJlY3QocmVjdCk7Ci0gICAgICAgICAgICByZXNpemVSZWN0LmludGVyc2VjdChJbnRSZWN0
KEludFBvaW50KCksIG1fbGF5ZXJSZW5kZXJlci0+dmlzaWJsZVJlY3RTaXplKCkpKTsKKyAgICAg
ICAgICAgIHJlc2l6ZVJlY3QuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9sYXllclJl
bmRlcmVyLT52aWV3cG9ydFNpemUoKSkpOwogICAgICAgICAgICAgZG9QaXhlbFJlYWRiYWNrVG9D
YW52YXMoY2FudmFzLCByZXNpemVSZWN0KTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMjc5LDYg
KzIyODAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKQog
CiB2b2lkIFdlYlZpZXdJbXBsOjpzY3JvbGxSb290TGF5ZXJSZWN0KGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKKyAgICB1cGRhdGVMYXllclJl
bmRlcmVyVmlld3BvcnQoKTsKICAgICBzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKTsKIH0KIApA
QCAtMjI5MCw1OCArMjI5MiwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjppbnZhbGlkYXRlUm9vdExh
eWVyUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0gICAgSW50UmVjdCBj
b250ZW50UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSk7Ci0gICAgSW50UmVj
dCB2aXNpYmxlUmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlKTsKLQogICAgIElu
dFJlY3QgZGlydHlSZWN0ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhyZWN0KTsKLSAgICBtX2xh
eWVyUmVuZGVyZXItPmludmFsaWRhdGVSb290TGF5ZXJSZWN0KGRpcnR5UmVjdCwgdmlzaWJsZVJl
Y3QsIGNvbnRlbnRSZWN0KTsKKyAgICB1cGRhdGVMYXllclJlbmRlcmVyVmlld3BvcnQoKTsKKyAg
ICBtX2xheWVyUmVuZGVyZXItPmludmFsaWRhdGVSb290TGF5ZXJSZWN0KGRpcnR5UmVjdCk7CiAg
ICAgc2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCk7CiB9CiAKLQotdm9pZCBXZWJWaWV3SW1wbDo6
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQotewotICAgIFBs
YXRmb3JtQnJpZGdlOjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiR1BVLnNldElzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSIsIGFjdGl2ZSAqIDIgKyBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSwgNCk7Ci0KLSAgICBpZiAobV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUg
PT0gYWN0aXZlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWFjdGl2ZSkgewotICAgICAg
ICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IGZhbHNlOwotICAgICAgICBpZiAo
bV9sYXllclJlbmRlcmVyKQotICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5maW5pc2goKTsg
Ly8gZmluaXNoIGFsbCBHTCByZW5kZXJpbmcgYmVmb3JlIHdlIGhpZGUgdGhlIHdpbmRvdz8KLSAg
ICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyhmYWxzZSk7
Ci0gICAgfSBlbHNlIGlmIChtX2xheWVyUmVuZGVyZXIpIHsKLSAgICAgICAgbV9pc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUgPSB0cnVlOwotICAgICAgICBtX2xheWVyUmVuZGVyZXItPnJl
c2l6ZU9uc2NyZWVuQ29udGVudChXZWJDb3JlOjpJbnRTaXplKHN0ZDo6bWF4KDEsIG1fc2l6ZS53
aWR0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCkpKTsKLQotICAgICAgICBt
X2NsaWVudC0+ZGlkQWN0aXZhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKHRydWUpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IG1fdGVt
cG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRC5yZWxlYXNlKCk7Ci0gICAgICAgIGlmICgh
Y29udGV4dCkgewotICAgICAgICAgICAgY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGUoZ2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKCksIG1fcGFnZS0+Y2hyb21lKCksIEdy
YXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dCkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZXNoYXBlKHN0ZDo6bWF4
KDEsIG1fc2l6ZS53aWR0aCksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQpKTsKLSAgICAgICAg
fQotICAgICAgICBtX2xheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0
ZShjb250ZXh0LnJlbGVhc2UoKSk7Ci0gICAgICAgIGlmIChtX2xheWVyUmVuZGVyZXIpIHsKLSAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcodHJ1
ZSk7Ci0gICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7
Ci0gICAgICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IGZhbHNlOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUg
PSBmYWxzZTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoZmFsc2UpOwotICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChwYWdlKCkpCi0gICAgICAgIHBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2V0Q2xpcHNSZXBhaW50cyghbV9pc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUpOwotfQotCi1jbGFzcyBXZWJWaWV3SW1wbFRpbGVQYWludEludGVy
ZmFjZSA6IHB1YmxpYyBUaWxlUGFpbnRJbnRlcmZhY2UgeworY2xhc3MgV2ViVmlld0ltcGxDb250
ZW50UGFpbnRJbnRlcmZhY2UgOiBwdWJsaWMgVGlsZVBhaW50SW50ZXJmYWNlIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBXZWJWaWV3SW1wbFRpbGVQYWludEludGVyZmFjZShXZWJWaWV3SW1wbCog
d2ViVmlld0ltcGwpCisgICAgZXhwbGljaXQgV2ViVmlld0ltcGxDb250ZW50UGFpbnRJbnRlcmZh
Y2UoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsKQogICAgICAgICA6IG1fd2ViVmlld0ltcGwod2Vi
Vmlld0ltcGwpCiAgICAgewogICAgIH0KQEAgLTIzNTksNyArMjMxOCw2IEBAIHByaXZhdGU6CiAg
ICAgV2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7CiB9OwogCi0KIGNsYXNzIFdlYlZpZXdJbXBs
U2Nyb2xsYmFyUGFpbnRJbnRlcmZhY2UgOiBwdWJsaWMgVGlsZVBhaW50SW50ZXJmYWNlIHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJWaWV3SW1wbFNjcm9sbGJhclBhaW50SW50ZXJmYWNlKFdl
YlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCkKQEAgLTIzODMsMjkgKzIzNDEsNjEgQEAgcHJpdmF0ZToK
ICAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKIH07CiAKK3ZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKK3sKKyAgICBQ
bGF0Zm9ybUJyaWRnZTo6aGlzdG9ncmFtRW51bWVyYXRpb24oIkdQVS5zZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUiLCBhY3RpdmUgKiAyICsgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUsIDQpOworCisgICAgaWYgKG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
ID09IGFjdGl2ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFhY3RpdmUpIHsKKyAgICAg
ICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgaWYg
KG1fbGF5ZXJSZW5kZXJlcikKKyAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZmluaXNoKCk7
IC8vIGZpbmlzaCBhbGwgR0wgcmVuZGVyaW5nIGJlZm9yZSB3ZSBoaWRlIHRoZSB3aW5kb3c/Cisg
ICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoZmFsc2Up
OworICAgIH0gZWxzZSBpZiAobV9sYXllclJlbmRlcmVyKSB7CisgICAgICAgIG1faXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5y
ZXNpemVPbnNjcmVlbkNvbnRlbnQoV2ViQ29yZTo6SW50U2l6ZShzdGQ6Om1heCgxLCBtX3NpemUu
d2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQpKSk7CisKKyAgICAgICAg
bV9jbGllbnQtPmRpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyh0cnVlKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX3Rl
bXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QucmVsZWFzZSgpOworICAgICAgICBpZiAo
IWNvbnRleHQpIHsKKyAgICAgICAgICAgIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBtX3BhZ2UtPmNocm9tZSgpLCBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworICAgICAgICAg
ICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVzaGFwZShzdGQ6Om1h
eCgxLCBtX3NpemUud2lkdGgpLCBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KSk7CisgICAgICAg
IH0KKworICAgICAgICBtX2xheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNy
ZWF0ZShjb250ZXh0LnJlbGVhc2UoKSwgYWRvcHRQdHIobmV3IFdlYlZpZXdJbXBsQ29udGVudFBh
aW50SW50ZXJmYWNlKHRoaXMpKSwgYWRvcHRQdHIobmV3IFdlYlZpZXdJbXBsU2Nyb2xsYmFyUGFp
bnRJbnRlcmZhY2UodGhpcykpKTsKKyAgICAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikgeworICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyh0cnVl
KTsKKyAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkID0gZmFsc2U7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9
IGZhbHNlOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21w
b3NpdGluZyhmYWxzZSk7CisgICAgICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgp
LT5tYWluRnJhbWUoKS0+dmlldygpLT5zZXRDbGlwc1JlcGFpbnRzKCFtX2lzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKCkK
IHsKICAgICBBU1NFUlQoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpOwogICAgIGlm
ICghcGFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdl
KCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0KICAgICAvLyBUaGUgdmlzaWJsZVJlY3QgaW5jbHVk
ZXMgc2Nyb2xsYmFycyB3aGVyZWFzIHRoZSBjb250ZW50UmVjdCBkb2Vzbid0LgotICAgIEludFJl
Y3QgdmlzaWJsZVJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSk7Ci0gICAgSW50
UmVjdCBjb250ZW50UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSk7Ci0gICAg
SW50UG9pbnQgc2Nyb2xsKHZpZXctPnNjcm9sbFgoKSwgdmlldy0+c2Nyb2xsWSgpKTsKLQotICAg
IFdlYlZpZXdJbXBsVGlsZVBhaW50SW50ZXJmYWNlIHRpbGVQYWludCh0aGlzKTsKLQotICAgIFdl
YlZpZXdJbXBsU2Nyb2xsYmFyUGFpbnRJbnRlcmZhY2Ugc2Nyb2xsYmFyUGFpbnQodGhpcyk7CiAg
ICAgbV9sYXllclJlbmRlcmVyLT5zZXRDb21wb3NpdGVPZmZzY3JlZW4oc2V0dGluZ3MoKS0+Y29t
cG9zaXRlVG9UZXh0dXJlRW5hYmxlZCgpKTsKIAogICAgIENDSGVhZHNVcERpc3BsYXkqIGh1ZCA9
IG1fbGF5ZXJSZW5kZXJlci0+aGVhZHNVcERpc3BsYXkoKTsKICAgICBodWQtPnNldFNob3dGUFND
b3VudGVyKHNldHRpbmdzKCktPnNob3dGUFNDb3VudGVyKCkpOwogICAgIGh1ZC0+c2V0U2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKHNldHRpbmdzKCktPnNob3dQbGF0Zm9ybUxheWVyVHJlZSgpKTsKIAot
ICAgIG1fbGF5ZXJSZW5kZXJlci0+dXBkYXRlQW5kRHJhd0xheWVycyh2aXNpYmxlUmVjdCwgY29u
dGVudFJlY3QsIHNjcm9sbCwgdGlsZVBhaW50LCBzY3JvbGxiYXJQYWludCk7CisgICAgbV9sYXll
clJlbmRlcmVyLT51cGRhdGVBbmREcmF3TGF5ZXJzKCk7CiAKICAgICBpZiAobV9sYXllclJlbmRl
cmVyLT5pc0NvbXBvc2l0aW5nT2Zmc2NyZWVuKCkpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+
Y29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkoKTsKQEAgLTI0MTYsNyArMjQwNiw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnJlYWxsb2NhdGVSZW5kZXJlcigpCiAgICAgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQgPSBtX2xheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKICAgICBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IG5ld0NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGNv
bnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKCksIG1fcGFnZS0+Y2hyb21lKCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZSBtaWdodCBmYWlsIGFuZCByZXR1cm4gMCwgaW4gdGhhdCBjYXNlIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlIHdpbGwgYWxzbyByZXR1cm4gMC4KLSAgICBSZWZQ
dHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpjcmVhdGUobmV3Q29udGV4dCk7CisgICAgUmVmUHRyPExheWVyUmVuZGVyZXJDaHJv
bWl1bT4gbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKG5ld0Nv
bnRleHQsIGFkb3B0UHRyKG5ldyBXZWJWaWV3SW1wbENvbnRlbnRQYWludEludGVyZmFjZSh0aGlz
KSksIGFkb3B0UHRyKG5ldyBXZWJWaWV3SW1wbFNjcm9sbGJhclBhaW50SW50ZXJmYWNlKHRoaXMp
KSk7CiAKICAgICAvLyBSZWF0dGFjaCB0aGUgcm9vdCBsYXllci4gIENoaWxkIGxheWVycyB3aWxs
IGdldCByZWF0dGFjaGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2YgdXBkYXRlTGF5ZXJzUmVjdXJzaXZl
LgogICAgIGlmIChsYXllclJlbmRlcmVyKQpAQCAtMjQyOCw2ICsyNDE4LDIwIEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnJlYWxsb2NhdGVSZW5kZXJlcigpCiB9CiAjZW5kaWYKIAordm9pZCBXZWJWaWV3
SW1wbDo6dXBkYXRlTGF5ZXJSZW5kZXJlclZpZXdwb3J0KCkKK3sKKyAgICBBU1NFUlQobV9sYXll
clJlbmRlcmVyKTsKKworICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgSW50UmVj
dCBjb250ZW50UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSk7CisgICAgSW50
UmVjdCB2aXNpYmxlUmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlKTsKKyAgICBJ
bnRQb2ludCBzY3JvbGwodmlldy0+c2Nyb2xsWCgpLCB2aWV3LT5zY3JvbGxZKCkpOworCisgICAg
bV9sYXllclJlbmRlcmVyLT5zZXRWaWV3cG9ydCh2aXNpYmxlUmVjdCwgY29udGVudFJlY3QsIHNj
cm9sbCk7Cit9CiAKIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJWaWV3SW1wbDo6Z3JhcGhpY3ND
b250ZXh0M0QoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggMjE2MzcyNTFjMTdhYzgwOWMwNzE1NzBhNWE1ODQzZTc1YmM2NzM1Ni4uODM1Yzk4NTliODZi
M2JlYjM5N2M3ZjIzMWZhNjk4NjQ1ZTM1MGRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC0zOTksNiArMzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRv
Q29tcG9zaXRlKCk7CiAgICAgdm9pZCBkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyhXZWJDYW52YXMq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCByZWFsbG9jYXRlUmVuZGVyZXIo
KTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUmVuZGVyZXJWaWV3cG9ydCgpOwogI2VuZGlmCiAKICAg
ICBXZWJWaWV3Q2xpZW50KiBtX2NsaWVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85123</attachid>
            <date>2011-03-08 18:27:34 -0800</date>
            <delta_ts>2011-03-10 16:32:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55985-20110308182733.patch</filename>
            <type>text/plain</type>
            <size>32210</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA1NjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0N2RiNjU2MGZhNjhlYTU3
ZGY0NzQyMGYxYmY2YjNmYjhkN2E0NzA4Li43ZWQxYTZlMGIwNWY0NTMzZWYyNDIxMzM2YTA4NjFi
OTljZmVhMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDMtMDggIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSB1cGRhdGVBbmREcmF3TGF5ZXJzIGFy
Z3VtZW50bGVzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU1OTg1CisKKyAgICAgICAgTWFkZSB0aGUgVGlsZVBhaW50ZXJzIGFuZCB2aWV3cG9ydCBw
YXJhbWV0ZXJzIGZvcgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0gbWVtYmVyIHZhcmlh
YmxlcyBpbnN0ZWFkIG9mIGFyZ3VtZW50cyBvbgorICAgICAgICB1cGRhdGVBbmREcmF3TGF5ZXJz
LiBJbiBhIGZ1dHVyZSBjaGFuZ2UsIHRoaXMgd2lsbCBhbGxvd3MgdXMgdG8KKyAgICAgICAgZHJh
dyB0aGUgbGF5ZXIgdHJlZSB3aXRob3V0IHRoZSBXZWJWaWV3J3MgYXNzaXN0YW5jZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnZlcnRpY2Fs
U2Nyb2xsYmFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
Omhvcml6b250YWxTY3JvbGxiYXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJvb3RMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVSb290TGF5ZXJDb250ZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZVJvb3RMYXllclNjcm9sbGJh
cnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Um9vdExh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Vmlld3Bv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVBbmRE
cmF3TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBk
YXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFJv
b3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZy
YW1lYnVmZmVyUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp2aWV3cG9ydFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisKIDIwMTEtMDMtMDggIEFuZHJlaSBQb3Blc2N1ICA8
YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggZTdiMjk5ZmMyMzdjZThk
NjBiZTc5NzMwZmY3NDMwMWIxYzE1MTUwZS4uNjdmZWYyMGFiMjlkYjU4M2JiZjYzY2Y5ZDFlMDE4
YWZjMWNiYmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC05
MSwyMSArOTEsMjMgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvbXBhcmVMYXllcloo
Y29uc3QgQ0NMYXllckltcGwqIGEsIGNvbnN0IENDTGF5ZXJJbXAKICAgICByZXR1cm4gYS0+ZHJh
d0RlcHRoKCkgPCBiLT5kcmF3RGVwdGgoKTsKIH0KIAotUGFzc1JlZlB0cjxMYXllclJlbmRlcmVy
Q2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQpCitQYXNzUmVmUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4g
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCwgUGFzc093blB0cjxUaWxlUGFpbnRJbnRlcmZhY2U+IGNvbnRlbnRQYWludCwg
UGFzc093blB0cjxUaWxlUGFpbnRJbnRlcmZhY2U+IHNjcm9sbGJhclBhaW50KQogewogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TGF5ZXJSZW5kZXJl
ckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UmVmKG5ldyBMYXllclJlbmRlcmVyQ2hyb21p
dW0oY29udGV4dCkpKTsKKyAgICBSZWZQdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJl
bmRlcmVyKGFkb3B0UmVmKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY29udGV4dCwgY29udGVu
dFBhaW50LCBzY3JvbGxiYXJQYWludCkpKTsKICAgICBpZiAoIWxheWVyUmVuZGVyZXItPmhhcmR3
YXJlQ29tcG9zaXRpbmcoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbGF5ZXJS
ZW5kZXJlci5yZWxlYXNlKCk7CiB9CiAKLUxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCi0gICAg
OiBtX3Jvb3RMYXllcigwKQotICAgICwgbV9zY3JvbGxQb3NpdGlvbihJbnRQb2ludCgtMSwgLTEp
KQorTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgUGFzc093blB0cjxUaWxlUGFpbnRJbnRlcmZh
Y2U+IGNvbnRlbnRQYWludCwgUGFzc093blB0cjxUaWxlUGFpbnRJbnRlcmZhY2U+IHNjcm9sbGJh
clBhaW50KQorICAgIDogbV92aWV3cG9ydFNjcm9sbFBvc2l0aW9uKEludFBvaW50KC0xLCAtMSkp
CisgICAgLCBtX3Jvb3RMYXllcigwKQorICAgICwgbV9yb290TGF5ZXJDb250ZW50UGFpbnQoY29u
dGVudFBhaW50KQorICAgICwgbV9yb290TGF5ZXJTY3JvbGxiYXJQYWludChzY3JvbGxiYXJQYWlu
dCkKICAgICAsIG1fY3VycmVudFNoYWRlcigwKQogICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFj
ZSgwKQogICAgICwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKDApCkBAIC0xMTQsOCArMTE2LDgg
QEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGUKICAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2Uo
MCkKIHsKICAgICBtX2hhcmR3YXJlQ29tcG9zaXRpbmcgPSBpbml0aWFsaXplU2hhcmVkT2JqZWN0
cygpOwotICAgIG1fcm9vdExheWVyVGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSh0
aGlzLCBJbnRTaXplKDI1NiwgMjU2KSwgTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVs
cyk7Ci0gICAgQVNTRVJUKG1fcm9vdExheWVyVGlsZXIpOworICAgIG1fcm9vdExheWVyQ29udGVu
dFRpbGVyID0gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUodGhpcywgSW50U2l6ZSgyNTYsIDI1
NiksIExheWVyVGlsZXJDaHJvbWl1bTo6Tm9Cb3JkZXJUZXhlbHMpOworICAgIEFTU0VSVChtX3Jv
b3RMYXllckNvbnRlbnRUaWxlcik7CiAKICAgICBtX2hlYWRzVXBEaXNwbGF5ID0gQ0NIZWFkc1Vw
RGlzcGxheTo6Y3JlYXRlKHRoaXMpOwogfQpAQCAtMTQ2LDMwICsxNDgsMzAgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnVzZVNoYWRlcih1bnNpZ25lZCBwcm9ncmFtSWQpCiAgICAgfQog
fQogCi1JbnRSZWN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmVydGljYWxTY3JvbGxiYXJSZWN0
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkK
K0ludFJlY3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2ZXJ0aWNhbFNjcm9sbGJhclJlY3QoKSBj
b25zdAogewotICAgIEludFJlY3QgdmVydGljYWxTY3JvbGxiYXIoSW50UG9pbnQoY29udGVudFJl
Y3QubWF4WCgpLCBjb250ZW50UmVjdC55KCkpLCBJbnRTaXplKHZpc2libGVSZWN0LndpZHRoKCkg
LSBjb250ZW50UmVjdC53aWR0aCgpLCB2aXNpYmxlUmVjdC5oZWlnaHQoKSkpOworICAgIEludFJl
Y3QgdmVydGljYWxTY3JvbGxiYXIoSW50UG9pbnQobV92aWV3cG9ydENvbnRlbnRSZWN0Lm1heFgo
KSwgbV92aWV3cG9ydENvbnRlbnRSZWN0LnkoKSksIEludFNpemUobV92aWV3cG9ydFZpc2libGVS
ZWN0LndpZHRoKCkgLSBtX3ZpZXdwb3J0Q29udGVudFJlY3Qud2lkdGgoKSwgbV92aWV3cG9ydFZp
c2libGVSZWN0LmhlaWdodCgpKSk7CiAgICAgcmV0dXJuIHZlcnRpY2FsU2Nyb2xsYmFyOwogfQog
Ci1JbnRSZWN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aG9yaXpvbnRhbFNjcm9sbGJhclJlY3Qo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQor
SW50UmVjdCBMYXllclJlbmRlcmVyQ2hyb21pdW06Omhvcml6b250YWxTY3JvbGxiYXJSZWN0KCkg
Y29uc3QKIHsKLSAgICBJbnRSZWN0IGhvcml6b250YWxTY3JvbGxiYXIoSW50UG9pbnQoY29udGVu
dFJlY3QueCgpLCBjb250ZW50UmVjdC5tYXhZKCkpLCBJbnRTaXplKHZpc2libGVSZWN0LndpZHRo
KCksIHZpc2libGVSZWN0LmhlaWdodCgpIC0gY29udGVudFJlY3QuaGVpZ2h0KCkpKTsKKyAgICBJ
bnRSZWN0IGhvcml6b250YWxTY3JvbGxiYXIoSW50UG9pbnQobV92aWV3cG9ydENvbnRlbnRSZWN0
LngoKSwgbV92aWV3cG9ydENvbnRlbnRSZWN0Lm1heFkoKSksIEludFNpemUobV92aWV3cG9ydFZp
c2libGVSZWN0LndpZHRoKCksIG1fdmlld3BvcnRWaXNpYmxlUmVjdC5oZWlnaHQoKSAtIG1fdmll
d3BvcnRDb250ZW50UmVjdC5oZWlnaHQoKSkpOwogICAgIHJldHVybiBob3Jpem9udGFsU2Nyb2xs
YmFyOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJvb3RMYXll
clJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6aW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewot
ICAgIG1fcm9vdExheWVyVGlsZXItPmludmFsaWRhdGVSZWN0KGRpcnR5UmVjdCk7CisgICAgbV9y
b290TGF5ZXJDb250ZW50VGlsZXItPmludmFsaWRhdGVSZWN0KGRpcnR5UmVjdCk7CiAgICAgaWYg
KG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyKSB7Ci0gICAgICAgIEludFJlY3Qgc2Nyb2xsYmFy
ID0gaG9yaXpvbnRhbFNjcm9sbGJhclJlY3QodmlzaWJsZVJlY3QsIGNvbnRlbnRSZWN0KTsKKyAg
ICAgICAgSW50UmVjdCBzY3JvbGxiYXIgPSBob3Jpem9udGFsU2Nyb2xsYmFyUmVjdCgpOwogICAg
ICAgICBpZiAoZGlydHlSZWN0LmludGVyc2VjdHMoc2Nyb2xsYmFyKSkgewogICAgICAgICAgICAg
bV9ob3Jpem9udGFsU2Nyb2xsYmFyVGlsZXItPnNldExheWVyUG9zaXRpb24oc2Nyb2xsYmFyLmxv
Y2F0aW9uKCkpOwogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyVGlsZXItPmludmFs
aWRhdGVSZWN0KGRpcnR5UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG1fdmVydGlj
YWxTY3JvbGxiYXJUaWxlcikgewotICAgICAgICBJbnRSZWN0IHNjcm9sbGJhciA9IHZlcnRpY2Fs
U2Nyb2xsYmFyUmVjdCh2aXNpYmxlUmVjdCwgY29udGVudFJlY3QpOworICAgICAgICBJbnRSZWN0
IHNjcm9sbGJhciA9IHZlcnRpY2FsU2Nyb2xsYmFyUmVjdCgpOwogICAgICAgICBpZiAoZGlydHlS
ZWN0LmludGVyc2VjdHMoc2Nyb2xsYmFyKSkgewogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhclRpbGVyLT5zZXRMYXllclBvc2l0aW9uKHNjcm9sbGJhci5sb2NhdGlvbigpKTsKICAgICAg
ICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJUaWxlci0+aW52YWxpZGF0ZVJlY3QoZGlydHlSZWN0
KTsKQEAgLTE3Nyw3MyArMTc5LDk2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbnZh
bGlkYXRlUm9vdExheWVyUmVjdChjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGNvCiAgICAgfQog
fQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29udGVudHMo
VGlsZVBhaW50SW50ZXJmYWNlJiB0aWxlUGFpbnQsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZVJvb3RMYXllckNvbnRlbnRzKCkK
IHsKLSAgICBtX3Jvb3RMYXllclRpbGVyLT51cGRhdGUodGlsZVBhaW50LCB2aXNpYmxlUmVjdCk7
CisgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnVwZGF0ZSgqbV9yb290TGF5ZXJDb250ZW50
UGFpbnQsIG1fdmlld3BvcnRWaXNpYmxlUmVjdCk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp1cGRhdGVSb290TGF5ZXJTY3JvbGxiYXJzKFRpbGVQYWludEludGVyZmFjZSYgc2Ny
b2xsYmFyUGFpbnQsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVSb290TGF5ZXJT
Y3JvbGxiYXJzKCkKIHsKLSAgICBpZiAodmlzaWJsZVJlY3Qud2lkdGgoKSA+IGNvbnRlbnRSZWN0
LndpZHRoKCkpIHsKLSAgICAgICAgSW50UmVjdCB2ZXJ0aWNhbFNjcm9sbGJhciA9IHZlcnRpY2Fs
U2Nyb2xsYmFyUmVjdCh2aXNpYmxlUmVjdCwgY29udGVudFJlY3QpOworICAgIGlmIChtX3ZpZXdw
b3J0VmlzaWJsZVJlY3Qud2lkdGgoKSA+IG1fdmlld3BvcnRDb250ZW50UmVjdC53aWR0aCgpKSB7
CisgICAgICAgIEludFJlY3QgdmVydGljYWxTY3JvbGxiYXIgPSB2ZXJ0aWNhbFNjcm9sbGJhclJl
Y3QoKTsKICAgICAgICAgSW50U2l6ZSB0aWxlU2l6ZSA9IHZlcnRpY2FsU2Nyb2xsYmFyLnNpemUo
KS5zaHJ1bmtUbyhJbnRTaXplKG1fbWF4VGV4dHVyZVNpemUsIG1fbWF4VGV4dHVyZVNpemUpKTsK
ICAgICAgICAgaWYgKCFtX3ZlcnRpY2FsU2Nyb2xsYmFyVGlsZXIpCiAgICAgICAgICAgICBtX3Zl
cnRpY2FsU2Nyb2xsYmFyVGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCB0
aWxlU2l6ZSwgTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJUaWxlci0+c2V0VGlsZVNpemUodGls
ZVNpemUpOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyVGlsZXItPnNldExheWVyUG9zaXRp
b24odmVydGljYWxTY3JvbGxiYXIubG9jYXRpb24oKSk7Ci0gICAgICAgIG1fdmVydGljYWxTY3Jv
bGxiYXJUaWxlci0+dXBkYXRlKHNjcm9sbGJhclBhaW50LCB2aXNpYmxlUmVjdCk7CisgICAgICAg
IG1fdmVydGljYWxTY3JvbGxiYXJUaWxlci0+dXBkYXRlKCptX3Jvb3RMYXllclNjcm9sbGJhclBh
aW50LCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3QpOwogICAgIH0gZWxzZQogICAgICAgICBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyVGlsZXIuY2xlYXIoKTsKIAotICAgIGlmICh2aXNpYmxlUmVjdC5oZWlnaHQo
KSA+IGNvbnRlbnRSZWN0LmhlaWdodCgpKSB7Ci0gICAgICAgIEludFJlY3QgaG9yaXpvbnRhbFNj
cm9sbGJhciA9IGhvcml6b250YWxTY3JvbGxiYXJSZWN0KHZpc2libGVSZWN0LCBjb250ZW50UmVj
dCk7CisgICAgaWYgKG1fdmlld3BvcnRWaXNpYmxlUmVjdC5oZWlnaHQoKSA+IG1fdmlld3BvcnRD
b250ZW50UmVjdC5oZWlnaHQoKSkgeworICAgICAgICBJbnRSZWN0IGhvcml6b250YWxTY3JvbGxi
YXIgPSBob3Jpem9udGFsU2Nyb2xsYmFyUmVjdCgpOwogICAgICAgICBJbnRTaXplIHRpbGVTaXpl
ID0gaG9yaXpvbnRhbFNjcm9sbGJhci5zaXplKCkuc2hydW5rVG8oSW50U2l6ZShtX21heFRleHR1
cmVTaXplLCBtX21heFRleHR1cmVTaXplKSk7CiAgICAgICAgIGlmICghbV9ob3Jpem9udGFsU2Ny
b2xsYmFyVGlsZXIpCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJUaWxlciA9IExh
eWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIHRpbGVTaXplLCBMYXllclRpbGVyQ2hyb21p
dW06Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyVGlsZXItPnNldFRpbGVTaXplKHRpbGVTaXplKTsKICAgICAgICAgbV9ob3Jp
em9udGFsU2Nyb2xsYmFyVGlsZXItPnNldExheWVyUG9zaXRpb24oaG9yaXpvbnRhbFNjcm9sbGJh
ci5sb2NhdGlvbigpKTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyVGlsZXItPnVwZGF0
ZShzY3JvbGxiYXJQYWludCwgdmlzaWJsZVJlY3QpOworICAgICAgICBtX2hvcml6b250YWxTY3Jv
bGxiYXJUaWxlci0+dXBkYXRlKCptX3Jvb3RMYXllclNjcm9sbGJhclBhaW50LCBtX3ZpZXdwb3J0
VmlzaWJsZVJlY3QpOwogICAgIH0gZWxzZQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJU
aWxlci5jbGVhcigpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Jvb3RM
YXllcigpCiB7Ci0gICAgbV9yb290TGF5ZXJUaWxlci0+ZHJhdyhtX3Zpc2libGVSZWN0KTsKKyAg
ICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci0+ZHJhdyhtX3ZpZXdwb3J0VmlzaWJsZVJlY3QpOwog
CiAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXJUaWxlcikKLSAgICAgICAgbV92ZXJ0aWNhbFNj
cm9sbGJhclRpbGVyLT5kcmF3KG1fdmlzaWJsZVJlY3QpOworICAgICAgICBtX3ZlcnRpY2FsU2Ny
b2xsYmFyVGlsZXItPmRyYXcobV92aWV3cG9ydFZpc2libGVSZWN0KTsKIAogICAgIGlmIChtX2hv
cml6b250YWxTY3JvbGxiYXJUaWxlcikKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyVGls
ZXItPmRyYXcobV92aXNpYmxlUmVjdCk7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclRp
bGVyLT5kcmF3KG1fdmlld3BvcnRWaXNpYmxlUmVjdCk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp1cGRhdGVBbmREcmF3TGF5ZXJzKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGls
ZVBhaW50SW50ZXJmYWNlJiB0aWxlUGFpbnQsIFRpbGVQYWludEludGVyZmFjZSYgc2Nyb2xsYmFy
UGFpbnQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Vmlld3BvcnQoY29uc3QgSW50
UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRQ
b2ludCYgc2Nyb2xsUG9zaXRpb24pCit7CisgICAgYm9vbCB2aXNpYmxlUmVjdENoYW5nZWQgPSBt
X3ZpZXdwb3J0VmlzaWJsZVJlY3Quc2l6ZSgpICE9IHZpc2libGVSZWN0LnNpemUoKTsKKworICAg
IG1fdmlld3BvcnRWaXNpYmxlUmVjdCA9IHZpc2libGVSZWN0OworICAgIG1fdmlld3BvcnRDb250
ZW50UmVjdCA9IGNvbnRlbnRSZWN0OworICAgIG1fdmlld3BvcnRTY3JvbGxQb3NpdGlvbiA9IHNj
cm9sbFBvc2l0aW9uOworCisgICAgaWYgKHZpc2libGVSZWN0Q2hhbmdlZCkgeworICAgICAgICAv
LyBSZXNldCB0aGUgY3VycmVudCByZW5kZXIgc3VyZmFjZSB0byBmb3JjZSBhbiB1cGRhdGUgb2Yg
dGhlIHZpZXdwb3J0IGFuZAorICAgICAgICAvLyBwcm9qZWN0aW9uIG1hdHJpeCBuZXh0IHRpbWUg
dXNlUmVuZGVyU3VyZmFjZSBpcyBjYWxsZWQuCisgICAgICAgIG1fY3VycmVudFJlbmRlclN1cmZh
Y2UgPSAwOworCisgICAgICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyLT5pbnZhbGlkYXRlRW50
aXJlTGF5ZXIoKTsKKyAgICAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyKQorICAg
ICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyVGlsZXItPmludmFsaWRhdGVFbnRpcmVMYXll
cigpOworICAgICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhclRpbGVyKQorICAgICAgICAgICAg
bV92ZXJ0aWNhbFNjcm9sbGJhclRpbGVyLT5pbnZhbGlkYXRlRW50aXJlTGF5ZXIoKTsKKyAgICB9
Cit9CisKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVBbmREcmF3TGF5ZXJzKCkK
IHsKICAgICBBU1NFUlQobV9oYXJkd2FyZUNvbXBvc2l0aW5nKTsKIAogICAgIGlmICghbV9yb290
TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZVJvb3RMYXllckNvbnRlbnRzKHRp
bGVQYWludCwgdmlzaWJsZVJlY3QpOworICAgIHVwZGF0ZVJvb3RMYXllckNvbnRlbnRzKCk7CisK
ICAgICAvLyBSZWNoZWNrIHRoYXQgd2Ugc3RpbGwgaGF2ZSBhIHJvb3QgbGF5ZXIuIFRoaXMgbWF5
IGJlY29tZSBudWxsIGlmCiAgICAgLy8gY29tcG9zaXRpbmcgZ2V0cyB0dXJuZWQgb2ZmIGR1cmlu
ZyBhIHBhaW50IG9wZXJhdGlvbi4KICAgICBpZiAoIW1fcm9vdExheWVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICB1cGRhdGVSb290TGF5ZXJTY3JvbGxiYXJzKHNjcm9sbGJhclBhaW50LCB2aXNp
YmxlUmVjdCwgY29udGVudFJlY3QpOworICAgIHVwZGF0ZVJvb3RMYXllclNjcm9sbGJhcnMoKTsK
IAogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAg
dXBkYXRlTGF5ZXJzKHZpc2libGVSZWN0LCBjb250ZW50UmVjdCwgc2Nyb2xsUG9zaXRpb24sIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIHVwZGF0ZUxheWVycyhyZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKIAogICAgIGRyYXdMYXllcnMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisKKyAg
ICBpZiAoaXNDb21wb3NpdGluZ09mZnNjcmVlbigpKQorICAgICAgICBjb3B5T2Zmc2NyZWVuVGV4
dHVyZVRvRGlzcGxheSgpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRl
TGF5ZXJzKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMoVmVj
dG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiB7CiAgICAgQ0NMYXll
ckltcGwqIHJvb3REcmF3TGF5ZXIgPSBtX3Jvb3RMYXllci0+Y2NMYXllckltcGwoKTsKIApAQCAt
MjUxLDI0ICsyNzYsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVy
cyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmUKICAgICAgICAgcm9vdERy
YXdMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIEFTU0VSVChyb290RHJhd0xheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgLy8gSWYgdGhlIHNpemUgb2YgdGhlIHZpc2libGUg
YXJlYSBoYXMgY2hhbmdlZCB0aGVuIGFsbG9jYXRlIGEgbmV3IHRleHR1cmUKLSAgICAvLyB0byBz
dG9yZSB0aGUgY29udGVudHMgb2YgdGhlIHJvb3QgbGF5ZXIgYW5kIGFkanVzdCB0aGUgcHJvamVj
dGlvbiBtYXRyaXgKLSAgICAvLyBhbmQgdmlld3BvcnQuCi0KLSAgICByb290RHJhd0xheWVyLT5y
ZW5kZXJTdXJmYWNlKCktPm1fY29udGVudFJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAsIDApLCB2
aXNpYmxlUmVjdC5zaXplKCkpOwotCi0gICAgaWYgKHZpc2libGVSZWN0LnNpemUoKSAhPSBtX3Zp
c2libGVSZWN0LnNpemUoKSkgewotICAgICAgICAvLyBSZXNldCB0aGUgY3VycmVudCByZW5kZXIg
c3VyZmFjZSB0byBmb3JjZSBhbiB1cGRhdGUgb2YgdGhlIHZpZXdwb3J0IGFuZAotICAgICAgICAv
LyBwcm9qZWN0aW9uIG1hdHJpeCBuZXh0IHRpbWUgdXNlUmVuZGVyU3VyZmFjZSBpcyBjYWxsZWQu
Ci0gICAgICAgIG1fY3VycmVudFJlbmRlclN1cmZhY2UgPSAwOwotICAgIH0KLSAgICBtX3Zpc2li
bGVSZWN0ID0gdmlzaWJsZVJlY3Q7CisgICAgcm9vdERyYXdMYXllci0+cmVuZGVyU3VyZmFjZSgp
LT5tX2NvbnRlbnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCAwKSwgbV92aWV3cG9ydFZpc2li
bGVSZWN0LnNpemUoKSk7CiAKLSAgICBtX3Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247
CiAgICAgLy8gU2Npc3NvciBvdXQgdGhlIHNjcm9sbGJhcnMgdG8gYXZvaWQgcmVuZGVyaW5nIG9u
IHRvcCBvZiB0aGVtLgotICAgIEludFJlY3Qgcm9vdFNjaXNzb3JSZWN0KGNvbnRlbnRSZWN0KTsK
KyAgICBJbnRSZWN0IHJvb3RTY2lzc29yUmVjdChtX3ZpZXdwb3J0Q29udGVudFJlY3QpOwogICAg
IC8vIFRoZSBzY2lzc29yUmVjdCBzaG91bGQgbm90IGluY2x1ZGUgdGhlIHNjcm9sbCBvZmZzZXQu
Ci0gICAgcm9vdFNjaXNzb3JSZWN0Lm1vdmUoLW1fc2Nyb2xsUG9zaXRpb24ueCgpLCAtbV9zY3Jv
bGxQb3NpdGlvbi55KCkpOworICAgIHJvb3RTY2lzc29yUmVjdC5tb3ZlKC1tX3ZpZXdwb3J0U2Ny
b2xsUG9zaXRpb24ueCgpLCAtbV92aWV3cG9ydFNjcm9sbFBvc2l0aW9uLnkoKSk7CiAgICAgcm9v
dERyYXdMYXllci0+c2V0U2Npc3NvclJlY3Qocm9vdFNjaXNzb3JSZWN0KTsKIAogICAgIG1fZGVm
YXVsdFJlbmRlclN1cmZhY2UgPSByb290RHJhd0xheWVyLT5yZW5kZXJTdXJmYWNlKCk7CkBAIC0y
OTIsNyArMzA1LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMoY29u
c3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2UKICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKIAogICAgIC8vIFRoZSBHTCB2aWV3cG9ydCBjb3ZlcnMgdGhlIGVudGlyZSB2aXNp
YmxlIGFyZWEsIGluY2x1ZGluZyB0aGUgc2Nyb2xsYmFycy4KLSAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIG1fdmlzaWJsZVJlY3Qud2lkdGgoKSwgbV92
aXNpYmxlUmVjdC5oZWlnaHQoKSkpOworICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4
dC0+dmlld3BvcnQoMCwgMCwgbV92aWV3cG9ydFZpc2libGVSZWN0LndpZHRoKCksIG1fdmlld3Bv
cnRWaXNpYmxlUmVjdC5oZWlnaHQoKSkpOwogCiAgICAgLy8gQmluZCB0aGUgY29tbW9uIHZlcnRl
eCBhdHRyaWJ1dGVzIHVzZWQgZm9yIGRyYXdpbmcgYWxsIHRoZSBsYXllcnMuCiAgICAgbV9zaGFy
ZWRHZW9tZXRyeS0+cHJlcGFyZUZvckRyYXcoKTsKQEAgLTM4Miw3ICszOTUsNyBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gbGF5ZXIpCiAgICAgbV9yb290TGF5ZXIgPSBsYXllcjsKICAgICBpZiAobV9yb290TGF5ZXIp
CiAgICAgICAgIG1fcm9vdExheWVyLT5zZXRMYXllclJlbmRlcmVyKHRoaXMpOwotICAgIG1fcm9v
dExheWVyVGlsZXItPmludmFsaWRhdGVFbnRpcmVMYXllcigpOworICAgIG1fcm9vdExheWVyQ29u
dGVudFRpbGVyLT5pbnZhbGlkYXRlRW50aXJlTGF5ZXIoKTsKICAgICBpZiAobV9ob3Jpem9udGFs
U2Nyb2xsYmFyVGlsZXIpCiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyLT5pbnZh
bGlkYXRlRW50aXJlTGF5ZXIoKTsKICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhclRpbGVyKQpA
QCAtMzkxLDcgKzQwNCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRSb290TGF5
ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBsYXllcikKIAogdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKLSAgICBBU1NFUlQocmVjdC5tYXhYKCkgPD0gdmlzaWJsZVJlY3RTaXplKCku
d2lkdGgoKSAmJiByZWN0Lm1heFkoKSA8PSB2aXNpYmxlUmVjdFNpemUoKS5oZWlnaHQoKSk7Cisg
ICAgQVNTRVJUKHJlY3QubWF4WCgpIDw9IG1fdmlld3BvcnRWaXNpYmxlUmVjdC53aWR0aCgpICYm
IHJlY3QubWF4WSgpIDw9IG1fdmlld3BvcnRWaXNpYmxlUmVjdC5oZWlnaHQoKSk7CiAKICAgICBp
ZiAoIXBpeGVscykKICAgICAgICAgcmV0dXJuOwpAQCAtOTIwLDcgKzkzMyw3IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIEdMQyht
X2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3JlZW5G
cmFtZWJ1ZmZlcklkKSk7CiAKICAgICAvLyBDbGVhciB0aWxlcnMgYmVmb3JlIHRoZSB0ZXh0dXJl
IG1hbmFnZXIsIGFzIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRvIHRleHR1cmVzLgotICAgIG1fcm9v
dExheWVyVGlsZXIuY2xlYXIoKTsKKyAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci5jbGVhcigp
OwogICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyLmNsZWFyKCk7CiAgICAgbV92ZXJ0aWNh
bFNjcm9sbGJhclRpbGVyLmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggN2U4ODUwYWZkNTVhYTZiOWZjNWM2ZWM4ODUwNDdiMWU5ZmFiOGE1ZS4uNzAzN2Qw
NDNiMWZmZTUwYTRiMzY1MGE5M2RmOWRiNzg1ZmFjYmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTY2LDE3ICs2NiwxOCBAQCBjbGFzcyBDQ0hlYWRzVXBEaXNwbGF5
OwogLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5
ZXJzIHVzaW5nIEdMLgogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIFJlZkNv
dW50ZWQ8TGF5ZXJSZW5kZXJlckNocm9taXVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gZ3JhcGhpY3NDb250ZXh0M0QpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQ
YXNzT3duUHRyPFRpbGVQYWludEludGVyZmFjZT4gY29udGVudFBhaW50LCBQYXNzT3duUHRyPFRp
bGVQYWludEludGVyZmFjZT4gc2Nyb2xsYmFyUGFpbnQpOwogCiAgICAgfkxheWVyUmVuZGVyZXJD
aHJvbWl1bSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKTsKIAotICAgIHZv
aWQgaW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25z
dCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAg
IHZvaWQgaW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsK
KworICAgIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pOwog
CiAgICAgLy8gdXBkYXRlcyBhbmQgZHJhd3MgdGhlIGN1cnJlbnQgbGF5ZXJzIG9udG8gdGhlIGJh
Y2tidWZmZXIKLSAgICB2b2lkIHVwZGF0ZUFuZERyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgdmlz
aWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRQb2ludCYgc2Ny
b2xsUG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVQYWludEludGVy
ZmFjZSYsIFRpbGVQYWludEludGVyZmFjZSYgc2Nyb2xsYmFyUGFpbnQpOworICAgIHZvaWQgdXBk
YXRlQW5kRHJhd0xheWVycygpOwogCiAgICAgLy8gd2FpdHMgZm9yIHJlbmRlcmluZyB0byBmaW5p
c2gKICAgICB2b2lkIGZpbmlzaCgpOwpAQCAtODQsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
cHV0cyBiYWNrYnVmZmVyIG9uc2NyZWVuCiAgICAgdm9pZCBwcmVzZW50KCk7CiAKLSAgICBJbnRT
aXplIHZpc2libGVSZWN0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVJlY3Quc2l6ZSgp
OyB9CisgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0
VmlzaWJsZVJlY3Quc2l6ZSgpOyB9CiAKICAgICB2b2lkIHNldFJvb3RMYXllcihQYXNzUmVmUHRy
PExheWVyQ2hyb21pdW0+IGxheWVyKTsKICAgICBMYXllckNocm9taXVtKiByb290TGF5ZXIoKSB7
IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQpAQCAtOTQsOCArOTUsNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldENvbXBvc2l0ZU9mZnNjcmVlbihib29sKTsKICAgICBib29sIGlzQ29tcG9z
aXRpbmdPZmZzY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9mZnNjcmVlbjsgfQot
ICAgIExheWVyVGV4dHVyZSogZ2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCk7Ci0gICAgdm9pZCBj
b3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogCiAgICAgdW5zaWduZWQgY3JlYXRlTGF5
ZXJUZXh0dXJlKCk7CiAgICAgdm9pZCBkZWxldGVMYXllclRleHR1cmUodW5zaWduZWQpOwpAQCAt
MTMyLDEyICsxMzEsMTEgQEAgcHVibGljOgogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBMYXllclJlbmRlcmVyQ2hyb21pdW0oUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gZ3JhcGhpY3NDb250ZXh0M0QpOworICAgIGV4cGxp
Y2l0IExheWVyUmVuZGVyZXJDaHJvbWl1bShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwg
UGFzc093blB0cjxUaWxlUGFpbnRJbnRlcmZhY2U+IGNvbnRlbnRQYWludCwgUGFzc093blB0cjxU
aWxlUGFpbnRJbnRlcmZhY2U+IHNjcm9sbGJhclBhaW50KTsKIAotICAgIHZvaWQgdXBkYXRlTGF5
ZXJzKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
VmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAgIHZvaWQg
dXBkYXRlUm9vdExheWVyQ29udGVudHMoVGlsZVBhaW50SW50ZXJmYWNlJiwgY29uc3QgSW50UmVj
dCYgdmlzaWJsZVJlY3QpOwotICAgIHZvaWQgdXBkYXRlUm9vdExheWVyU2Nyb2xsYmFycyhUaWxl
UGFpbnRJbnRlcmZhY2UmIHNjcm9sbGJhclBhaW50LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzKFZl
Y3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICB2b2lkIHVw
ZGF0ZVJvb3RMYXllckNvbnRlbnRzKCk7CisgICAgdm9pZCB1cGRhdGVSb290TGF5ZXJTY3JvbGxi
YXJzKCk7CiAgICAgdm9pZCB1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVyU3VyZmFjZXMoTGF5ZXJD
aHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIFZlY3Rv
cjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8Q0NMYXllcklt
cGwqPiYgbGF5ZXJMaXN0KTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzUmVjdXJzaXZlKExheWVy
Q2hyb21pdW0qKTsKIApAQCAtMTQ1LDYgKzE0Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3
TGF5ZXIoQ0NMYXllckltcGwqLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qKTsKIAogICAgIHZvaWQg
ZHJhd1Jvb3RMYXllcigpOworICAgIExheWVyVGV4dHVyZSogZ2V0T2Zmc2NyZWVuTGF5ZXJUZXh0
dXJlKCk7CisgICAgdm9pZCBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogCiAgICAg
Ym9vbCBpc0xheWVyVmlzaWJsZShMYXllckNocm9taXVtKiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAKQEAgLTE2MSwxOSArMTYxLDIy
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0aWFsaXplU2hhcmVkT2JqZWN0cygpOwogICAgIHZv
aWQgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsKIAotICAgIHN0YXRpYyBJbnRSZWN0IHZlcnRpY2Fs
U2Nyb2xsYmFyUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpOwotICAgIHN0YXRpYyBJbnRSZWN0IGhvcml6b250YWxTY3JvbGxiYXJSZWN0
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7
CisgICAgSW50UmVjdCB2ZXJ0aWNhbFNjcm9sbGJhclJlY3QoKSBjb25zdDsKKyAgICBJbnRSZWN0
IGhvcml6b250YWxTY3JvbGxiYXJSZWN0KCkgY29uc3Q7CiAKLSAgICBJbnRSZWN0IG1fdmlzaWJs
ZVJlY3Q7CisgICAgSW50UmVjdCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Q7CisgICAgSW50UmVjdCBt
X3ZpZXdwb3J0Q29udGVudFJlY3Q7CisgICAgSW50UG9pbnQgbV92aWV3cG9ydFNjcm9sbFBvc2l0
aW9uOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9uTWF0cml4OwogCiAg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwotICAgIE93blB0cjxMYXllclRp
bGVyQ2hyb21pdW0+IG1fcm9vdExheWVyVGlsZXI7CisgICAgT3duUHRyPFRpbGVQYWludEludGVy
ZmFjZT4gbV9yb290TGF5ZXJDb250ZW50UGFpbnQ7CisgICAgT3duUHRyPFRpbGVQYWludEludGVy
ZmFjZT4gbV9yb290TGF5ZXJTY3JvbGxiYXJQYWludDsKKyAgICBPd25QdHI8TGF5ZXJUaWxlckNo
cm9taXVtPiBtX3Jvb3RMYXllckNvbnRlbnRUaWxlcjsKICAgICBPd25QdHI8TGF5ZXJUaWxlckNo
cm9taXVtPiBtX2hvcml6b250YWxTY3JvbGxiYXJUaWxlcjsKICAgICBPd25QdHI8TGF5ZXJUaWxl
ckNocm9taXVtPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyVGlsZXI7CiAKLSAgICBJbnRQb2ludCBtX3Nj
cm9sbFBvc2l0aW9uOwogICAgIGJvb2wgbV9oYXJkd2FyZUNvbXBvc2l0aW5nOwogCiAgICAgdW5z
aWduZWQgbV9jdXJyZW50U2hhZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApp
bmRleCA2MDRlZjYxOWUyNTMwMTIwZGUwNTY4YTFiMTQ2ZjU4MDM1NDUxZmM5Li40MDQ5NDRiNjVh
ODhhZmM0ZGM0MGM2MDc0NGJkYzI4NmQ4ZjVhY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmNwcApAQCAtNjYsOCArNjYsOCBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXco
KQogICAgIC8vIFVzZSBhIGZ1bGxzY3JlZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5lZWQgdG8uLi4K
ICAgICBJbnRTaXplIGh1ZFNpemU7CiAgICAgaWYgKG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKSB7
Ci0gICAgICAgIGh1ZFNpemUuc2V0V2lkdGgobWluKDIwNDgsIG1fbGF5ZXJSZW5kZXJlci0+dmlz
aWJsZVJlY3RTaXplKCkud2lkdGgoKSkpOwotICAgICAgICBodWRTaXplLnNldEhlaWdodChtaW4o
MjA0OCwgbV9sYXllclJlbmRlcmVyLT52aXNpYmxlUmVjdFNpemUoKS5oZWlnaHQoKSkpOworICAg
ICAgICBodWRTaXplLnNldFdpZHRoKG1pbigyMDQ4LCBtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0
U2l6ZSgpLndpZHRoKCkpKTsKKyAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQobWluKDIwNDgsIG1f
bGF5ZXJSZW5kZXJlci0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBodWRTaXplLnNldFdpZHRoKDUxMik7CiAgICAgICAgIGh1ZFNpemUuc2V0SGVpZ2h0
KDEyOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ4NWYwYjc0MzJjMTRmMTA0NzE5
ZmQ4YzQzNTM2NTdlOWYyNDM3ZWMuLjk4NTIyMzY5MGNmNzQ5OGIxN2I3NWY4MzVkZmIzMzNjY2E4
ODE2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEt
MDMtMDggIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSB1cGRhdGVBbmRE
cmF3TGF5ZXJzIGFyZ3VtZW50bGVzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU1OTg1CisKKyAgICAgICAgTWFkZSB0aGUgVGlsZVBhaW50ZXJzIGFu
ZCB2aWV3cG9ydCBwYXJhbWV0ZXJzIGZvcgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0g
bWVtYmVyIHZhcmlhYmxlcyBpbnN0ZWFkIG9mIGFyZ3VtZW50cyBvbgorICAgICAgICB1cGRhdGVB
bmREcmF3TGF5ZXJzLiBJbiBhIGZ1dHVyZSBjaGFuZ2UsIHRoaXMgd2lsbCBhbGxvd3MgdXMgdG8K
KyAgICAgICAgZHJhdyB0aGUgbGF5ZXIgdHJlZSB3aXRob3V0IHRoZSBXZWJWaWV3J3MgYXNzaXN0
YW5jZS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpyZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGFp
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Nyb2xsUm9vdExheWVyUmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppbnZhbGlkYXRlUm9vdExheWVyUmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OnBhaW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6V2ViVmlld0ltcGxDb250ZW50
UGFpbnRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsU2Nyb2xsYmFyUGFpbnRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGxTY3JvbGxiYXJQYWludGVyOjpw
YWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsU2Nyb2xsYmFyUGFpbnRlcjo6V2Vi
Vmlld0ltcGxTY3JvbGxiYXJQYWludGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpkb0NvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZWFsbG9jYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRl
TGF5ZXJSZW5kZXJlclZpZXdwb3J0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwog
MjAxMS0wMy0wOCAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggNmFlNGYzNTg4NzY2MDhkODRiYzNlODMzODU5Zjk1ZDAzMmIz
ZTBlNi4uYWZlZDNhZGQxYWE2ZjA1ZGY4ODFjY2RiMTlhYzRiYjRiM2RlY2FkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtOTYyLDEzICs5NjIsMTQg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVzaXplKGNvbnN0IFdlYlNpemUmIG5ld1NpemUpCiAgICAg
fQogCiAgICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIFdlYlJlY3QgZGFtYWdlZFJlY3QoMCwg
MCwgbV9zaXplLndpZHRoLCBtX3NpemUuaGVpZ2h0KTsKICAgICAgICAgaWYgKGlzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQotICAgICAgICAgICAgaW52YWxpZGF0ZVJvb3RMYXllclJlY3QoZGFtYWdlZFJlY3QpOworICAg
ICAgICAgICAgdXBkYXRlTGF5ZXJSZW5kZXJlclZpZXdwb3J0KCk7CiAjZW5kaWYKLSAgICAgICAg
fSBlbHNlCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBXZWJSZWN0IGRhbWFnZWRSZWN0
KDAsIDAsIG1fc2l6ZS53aWR0aCwgbV9zaXplLmhlaWdodCk7CiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkSW52YWxpZGF0ZVJlY3QoZGFtYWdlZFJlY3QpOworICAgICAgICB9CiAgICAgfQogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMTA1Nyw3ICsxMDU4LDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJl
Y3QpCiAgICAgICAgIGlmIChjYW52YXMpIHsKICAgICAgICAgICAgIC8vIENsaXAgcmVjdCB0byB0
aGUgY29uZmluZXMgb2YgdGhlIHJvb3RMYXllclRleHR1cmUuCiAgICAgICAgICAgICBJbnRSZWN0
IHJlc2l6ZVJlY3QocmVjdCk7Ci0gICAgICAgICAgICByZXNpemVSZWN0LmludGVyc2VjdChJbnRS
ZWN0KEludFBvaW50KCksIG1fbGF5ZXJSZW5kZXJlci0+dmlzaWJsZVJlY3RTaXplKCkpKTsKKyAg
ICAgICAgICAgIHJlc2l6ZVJlY3QuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9sYXll
clJlbmRlcmVyLT52aWV3cG9ydFNpemUoKSkpOwogICAgICAgICAgICAgZG9QaXhlbFJlYWRiYWNr
VG9DYW52YXMoY2FudmFzLCByZXNpemVSZWN0KTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMjc5
LDYgKzIyODAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXko
KQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzY3JvbGxSb290TGF5ZXJSZWN0KGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKKyAgICB1cGRhdGVMYXll
clJlbmRlcmVyVmlld3BvcnQoKTsKICAgICBzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKTsKIH0K
IApAQCAtMjI5MCwxNCArMjI5Miw2NiBAQCB2b2lkIFdlYlZpZXdJbXBsOjppbnZhbGlkYXRlUm9v
dExheWVyUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICByZXR1cm47CiAKICAgICBG
cmFtZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0gICAgSW50UmVj
dCBjb250ZW50UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSk7Ci0gICAgSW50
UmVjdCB2aXNpYmxlUmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlKTsKLQogICAg
IEludFJlY3QgZGlydHlSZWN0ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhyZWN0KTsKLSAgICBt
X2xheWVyUmVuZGVyZXItPmludmFsaWRhdGVSb290TGF5ZXJSZWN0KGRpcnR5UmVjdCwgdmlzaWJs
ZVJlY3QsIGNvbnRlbnRSZWN0KTsKKyAgICB1cGRhdGVMYXllclJlbmRlcmVyVmlld3BvcnQoKTsK
KyAgICBtX2xheWVyUmVuZGVyZXItPmludmFsaWRhdGVSb290TGF5ZXJSZWN0KGRpcnR5UmVjdCk7
CiAgICAgc2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCk7CiB9CiAKK2NsYXNzIFdlYlZpZXdJbXBs
Q29udGVudFBhaW50ZXIgOiBwdWJsaWMgVGlsZVBhaW50SW50ZXJmYWNlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyKTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyKj4gY3JlYXRlKFdlYlZp
ZXdJbXBsKiB3ZWJWaWV3SW1wbCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
V2ViVmlld0ltcGxDb250ZW50UGFpbnRlcih3ZWJWaWV3SW1wbCkpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0KQorICAgIHsKKyAgICAgICAgUGFnZSogcGFnZSA9IG1fd2ViVmlld0ltcGwt
PnBhZ2UoKTsKKyAgICAgICAgaWYgKCFwYWdlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOworICAgICAgICB2
aWV3LT5wYWludENvbnRlbnRzKCZjb250ZXh0LCBjb250ZW50UmVjdCk7CisgICAgfQorCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IFdlYlZpZXdJbXBsQ29udGVudFBhaW50ZXIoV2ViVmlld0ltcGwq
IHdlYlZpZXdJbXBsKQorICAgICAgICA6IG1fd2ViVmlld0ltcGwod2ViVmlld0ltcGwpCisgICAg
eworICAgIH0KKworICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOworfTsKKworY2xhc3Mg
V2ViVmlld0ltcGxTY3JvbGxiYXJQYWludGVyIDogcHVibGljIFRpbGVQYWludEludGVyZmFjZSB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViVmlld0ltcGxTY3JvbGxiYXJQYWludGVyKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJWaWV3SW1wbFNjcm9sbGJhclBhaW50
ZXI+IGNyZWF0ZShXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFdlYlZpZXdJbXBsU2Nyb2xsYmFyUGFpbnRlcih3ZWJWaWV3SW1wbCkp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQorICAgIHsKKyAgICAgICAgUGFnZSogcGFn
ZSA9IG1fd2ViVmlld0ltcGwtPnBhZ2UoKTsKKyAgICAgICAgaWYgKCFwYWdlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdlLT5tYWluRnJhbWUoKS0+
dmlldygpOworCisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHN0YXRpY19jYXN0PGZsb2F0Pih2
aWV3LT5zY3JvbGxYKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4odmlldy0+c2Nyb2xsWSgpKSk7Cisg
ICAgICAgIEludFJlY3Qgd2luZG93UmVjdCA9IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udGVu
dFJlY3QpOworICAgICAgICB2aWV3LT5wYWludFNjcm9sbGJhcnMoJmNvbnRleHQsIHdpbmRvd1Jl
Y3QpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJWaWV3SW1wbFNjcm9sbGJh
clBhaW50ZXIoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsKQorICAgICAgICA6IG1fd2ViVmlld0lt
cGwod2ViVmlld0ltcGwpCisgICAgeworICAgIH0KKworICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZp
ZXdJbXBsOworfTsKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogewpAQCAtMjMwOCw4ICsyMzYyLDExIEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkK
IAogICAgIGlmICghYWN0aXZlKSB7CiAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlID0gZmFsc2U7CisgICAgICAgIC8vIFdlIG5lZWQgdG8gZmluaXNoIGFsbCBHTCByZW5k
ZXJpbmcgYmVmb3JlIHNlbmRpbmcKKyAgICAgICAgLy8gZGlkQWN0aXZhdGVBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKGZhbHNlKSB0byBwcmV2ZW50CisgICAgICAgIC8vIGZsaWNrZXJpbmcgd2hlbiBj
b21wb3NpdGluZyB0dXJucyBvZmYuCiAgICAgICAgIGlmIChtX2xheWVyUmVuZGVyZXIpCi0gICAg
ICAgICAgICBtX2xheWVyUmVuZGVyZXItPmZpbmlzaCgpOyAvLyBmaW5pc2ggYWxsIEdMIHJlbmRl
cmluZyBiZWZvcmUgd2UgaGlkZSB0aGUgd2luZG93PworICAgICAgICAgICAgbV9sYXllclJlbmRl
cmVyLT5maW5pc2goKTsKICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQWNjZWxlcmF0ZWRD
b21wb3NpdGluZyhmYWxzZSk7CiAgICAgfSBlbHNlIGlmIChtX2xheWVyUmVuZGVyZXIpIHsKICAg
ICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSB0cnVlOwpAQCAtMjMyNCw3
ICsyMzgxLDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVzaGFwZShzdGQ6Om1heCgxLCBtX3NpemUud2lkdGgpLCBzdGQ6Om1h
eCgxLCBtX3NpemUuaGVpZ2h0KSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9sYXllclJlbmRlcmVy
ID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoY29udGV4dC5yZWxlYXNlKCkpOworCisg
ICAgICAgIG1fbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKGNv
bnRleHQucmVsZWFzZSgpLCBXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcyks
IFdlYlZpZXdJbXBsU2Nyb2xsYmFyUGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgaWYg
KG1fbGF5ZXJSZW5kZXJlcikgewogICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZyh0cnVlKTsKICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlID0gdHJ1ZTsKQEAgLTIzMzksNzYgKzIzOTcsMTkgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQog
ICAgICAgICBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnNldENsaXBzUmVwYWludHMoIW1f
aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKTsKIH0KIAotY2xhc3MgV2ViVmlld0ltcGxU
aWxlUGFpbnRJbnRlcmZhY2UgOiBwdWJsaWMgVGlsZVBhaW50SW50ZXJmYWNlIHsKLXB1YmxpYzoK
LSAgICBleHBsaWNpdCBXZWJWaWV3SW1wbFRpbGVQYWludEludGVyZmFjZShXZWJWaWV3SW1wbCog
d2ViVmlld0ltcGwpCi0gICAgICAgIDogbV93ZWJWaWV3SW1wbCh3ZWJWaWV3SW1wbCkKLSAgICB7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCi0gICAgewotICAgICAgICBQYWdlKiBwYWdl
ID0gbV93ZWJWaWV3SW1wbC0+cGFnZSgpOwotICAgICAgICBpZiAoIXBhZ2UpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2UtPm1haW5GcmFtZSgpLT52
aWV3KCk7Ci0gICAgICAgIHZpZXctPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGNvbnRlbnRSZWN0
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7Ci19
OwotCi0KLWNsYXNzIFdlYlZpZXdJbXBsU2Nyb2xsYmFyUGFpbnRJbnRlcmZhY2UgOiBwdWJsaWMg
VGlsZVBhaW50SW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJWaWV3SW1wbFNj
cm9sbGJhclBhaW50SW50ZXJmYWNlKFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCkKLSAgICAgICAg
OiBtX3dlYlZpZXdJbXBsKHdlYlZpZXdJbXBsKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCkKLSAgICB7Ci0gICAgICAgIFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXdJbXBsLT5wYWdl
KCk7Ci0gICAgICAgIGlmICghcGFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKLQotICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxmbG9hdD4odmlldy0+c2Nyb2xsWCgpKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHZpZXctPnNjcm9sbFkoKSkpOwotICAgICAgICBJbnRSZWN0IHdpbmRvd1Jl
Y3QgPSB2aWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRlbnRSZWN0KTsKLSAgICAgICAgdmlldy0+
cGFpbnRTY3JvbGxiYXJzKCZjb250ZXh0LCB3aW5kb3dSZWN0KTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgV2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7Ci19OwotCiB2b2lkIFdlYlZpZXdJbXBs
Ojpkb0NvbXBvc2l0ZSgpCiB7CiAgICAgQVNTRVJUKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZSgpKTsKICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWVW
aWV3KiB2aWV3ID0gcGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpOwotCi0gICAgLy8gVGhlIHZp
c2libGVSZWN0IGluY2x1ZGVzIHNjcm9sbGJhcnMgd2hlcmVhcyB0aGUgY29udGVudFJlY3QgZG9l
c24ndC4KLSAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0
KHRydWUpOwotICAgIEludFJlY3QgY29udGVudFJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJl
Y3QoZmFsc2UpOwotICAgIEludFBvaW50IHNjcm9sbCh2aWV3LT5zY3JvbGxYKCksIHZpZXctPnNj
cm9sbFkoKSk7Ci0KLSAgICBXZWJWaWV3SW1wbFRpbGVQYWludEludGVyZmFjZSB0aWxlUGFpbnQo
dGhpcyk7Ci0KLSAgICBXZWJWaWV3SW1wbFNjcm9sbGJhclBhaW50SW50ZXJmYWNlIHNjcm9sbGJh
clBhaW50KHRoaXMpOwogICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Q29tcG9zaXRlT2Zmc2NyZWVu
KHNldHRpbmdzKCktPmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKSk7CiAKICAgICBDQ0hlYWRz
VXBEaXNwbGF5KiBodWQgPSBtX2xheWVyUmVuZGVyZXItPmhlYWRzVXBEaXNwbGF5KCk7CiAgICAg
aHVkLT5zZXRTaG93RlBTQ291bnRlcihzZXR0aW5ncygpLT5zaG93RlBTQ291bnRlcigpKTsKICAg
ICBodWQtPnNldFNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncygpLT5zaG93UGxhdGZvcm1M
YXllclRyZWUoKSk7CiAKLSAgICBtX2xheWVyUmVuZGVyZXItPnVwZGF0ZUFuZERyYXdMYXllcnMo
dmlzaWJsZVJlY3QsIGNvbnRlbnRSZWN0LCBzY3JvbGwsIHRpbGVQYWludCwgc2Nyb2xsYmFyUGFp
bnQpOwotCi0gICAgaWYgKG1fbGF5ZXJSZW5kZXJlci0+aXNDb21wb3NpdGluZ09mZnNjcmVlbigp
KQotICAgICAgICBtX2xheWVyUmVuZGVyZXItPmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5
KCk7CisgICAgbV9sYXllclJlbmRlcmVyLT51cGRhdGVBbmREcmF3TGF5ZXJzKCk7CiB9CiAKIHZv
aWQgV2ViVmlld0ltcGw6OnJlYWxsb2NhdGVSZW5kZXJlcigpCkBAIC0yNDE2LDcgKzI0MTcsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpyZWFsbG9jYXRlUmVuZGVyZXIoKQogICAgIEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0ID0gbV9sYXllclJlbmRlcmVyLT5jb250ZXh0KCk7CiAgICAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBuZXdDb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZShjb250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpLCBtX3BhZ2UtPmNocm9tZSgpLCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogICAgIC8vIEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUgbWlnaHQgZmFpbCBhbmQgcmV0dXJuIDAsIGluIHRoYXQgY2Fz
ZSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSB3aWxsIGFsc28gcmV0dXJuIDAuCi0gICAg
UmVmUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Y3JlYXRlKG5ld0NvbnRleHQpOworICAgIFJlZlB0cjxMYXllclJlbmRlcmVy
Q2hyb21pdW0+IGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShu
ZXdDb250ZXh0LCBXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcyksIFdlYlZp
ZXdJbXBsU2Nyb2xsYmFyUGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKIAogICAgIC8vIFJlYXR0YWNo
IHRoZSByb290IGxheWVyLiAgQ2hpbGQgbGF5ZXJzIHdpbGwgZ2V0IHJlYXR0YWNoZWQgYXMgYSBz
aWRlIGVmZmVjdCBvZiB1cGRhdGVMYXllcnNSZWN1cnNpdmUuCiAgICAgaWYgKGxheWVyUmVuZGVy
ZXIpCkBAIC0yNDI4LDYgKzI0MjksMjAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJl
bmRlcmVyKCkKIH0KICNlbmRpZgogCit2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVMYXllclJlbmRl
cmVyVmlld3BvcnQoKQoreworICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOworCisgICAgaWYg
KCFwYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gdmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KGZhbHNlKTsKKyAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdmll
dy0+dmlzaWJsZUNvbnRlbnRSZWN0KHRydWUpOworICAgIEludFBvaW50IHNjcm9sbCh2aWV3LT5z
Y3JvbGxYKCksIHZpZXctPnNjcm9sbFkoKSk7CisKKyAgICBtX2xheWVyUmVuZGVyZXItPnNldFZp
ZXdwb3J0KHZpc2libGVSZWN0LCBjb250ZW50UmVjdCwgc2Nyb2xsKTsKK30KIAogV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAyMTYzNzI1MWMxN2FjODA5YzA3
MTU3MGE1YTU4NDNlNzViYzY3MzU2Li44MzVjOTg1OWI4NmIzYmViMzk3YzdmMjMxZmE2OTg2NDVl
MzUwZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTM5
OSw2ICszOTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9Db21wb3NpdGUoKTsKICAgICB2b2lk
IGRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKFdlYkNhbnZhcyosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKTsKICAgICB2b2lkIHJlYWxsb2NhdGVSZW5kZXJlcigpOworICAgIHZvaWQgdXBkYXRlTGF5
ZXJSZW5kZXJlclZpZXdwb3J0KCk7CiAjZW5kaWYKIAogICAgIFdlYlZpZXdDbGllbnQqIG1fY2xp
ZW50Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>