<?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>42203</bug_id>
          
          <creation_ts>2010-07-13 14:43:49 -0700</creation_ts>
          <short_desc>[chromium] GLES2Context is in platform/ and shouldn&apos;t depend on Page</short_desc>
          <delta_ts>2010-07-14 19:27:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>250755</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-13 14:43:49 -0700</bug_when>
    <thetext>[chromium] GLES2Context is in platform/ and shouldn&apos;t depend on Page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250803</commentid>
    <comment_count>1</comment_count>
      <attachid>61428</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-13 16:25:25 -0700</bug_when>
    <thetext>Created attachment 61428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250908</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-13 18:50:07 -0700</bug_when>
    <thetext>My plan for creating GLES2Contexts from WebCore is to have two functions on ChromeClient:

// Returns a GLES2Context used for rendering directly to the screen
PassOwnPtr&lt;GLES2Context&gt; getOnscreenGLES2Context();
// Returns a GLES2Context for rendering offscreen that is capable of sharing
// resources with the compositor&apos;s context
PassOwnPtr&lt;GLES2Context&gt; getOffscreenGLES2Context();

The lifetime of GLES2Contexts is still kind of awkward.  Making two calls to getOnscreenGLES2Context() will return two OwnPtr&lt;&gt;s that each wrap the same underlying object, but deleting a GLES2Context does not destroy the actual underlying object.  Calling GLES2Context::destroy() does do something destructive.  I think it&apos;s still valid to have this be an OwnPtr&lt;&gt; to make sure we don&apos;t leak the wrapper object (which I believe we do currently).

I can post that as a followup or as a separate patch.  Adding stuff to ChromeClient involves a loooot of plumbing so it&apos;s a rather noisy patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251498</commentid>
    <comment_count>3</comment_count>
      <attachid>61581</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-14 16:11:08 -0700</bug_when>
    <thetext>Created attachment 61581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251502</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-14 16:16:54 -0700</bug_when>
    <thetext>This patch adds in the onscreen/offscreen getters to ChromeClientChromium.  They are currently uncalled, but that won&apos;t be true for long.

One unfortunate thing is that this exposes two types of WebCore::GLES2Context&apos;s - those that own their underlying WebKit::WebGLES2Context and those that don&apos;t.  When getting the GLES2Context for compositing, the caller doesn&apos;t want to have ownership.  When getting an offscreen context the caller does want ownership.  I added a flag to the GLES2ContextInternal constructor to allow for both kinds but it&apos;s kind of ugly.  We don&apos;t need the ChromeClientChromium::getOnscreenGLES2Context() function yet so we could delete it for now and figure it out later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251521</commentid>
    <comment_count>5</comment_count>
      <attachid>61581</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-14 16:52:54 -0700</bug_when>
    <thetext>Comment on attachment 61581
Patch

WebKit/chromium/public/WebGLES2Context.h:49
 +      WEBKIT_API virtual bool initialize(WebView*, WebGLES2Context* parent) = 0;
no need for WEBKIT_API on virtual methods.  no need to export
these from WebKit when it is built as a DLL.
WebKit/chromium/src/GLES2ContextInternal.h:55
 +  }
} // namespace WebCore

WebKit/chromium/src/WebViewImpl.cpp:2139
 +      return WebCore::GLES2Context::create(WebCore::GLES2ContextInternal::create(gles2Context(), false));
no need for the WebCore:: prefix in this .cpp file given the 
using declaration at the top of the file.

WebKit/chromium/src/WebViewImpl.cpp:2142
 +  PassOwnPtr&lt;WebCore::GLES2Context&gt; WebViewImpl::getOffscreenGLES2Context()
ditto about the WebCore:: prefix

otherwise, R=me with these nits addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251547</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-14 17:36:52 -0700</bug_when>
    <thetext>Committed r63383: &lt;http://trac.webkit.org/changeset/63383&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251588</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-14 19:21:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63383 might have broken Chromium Mac Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/63384
http://trac.webkit.org/changeset/63385
http://trac.webkit.org/changeset/63386
http://trac.webkit.org/changeset/63389
http://trac.webkit.org/changeset/63383</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251592</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-14 19:27:12 -0700</bug_when>
    <thetext>Fixed the compile error in http://trac.webkit.org/changeset/63392</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61428</attachid>
            <date>2010-07-13 16:25:25 -0700</date>
            <delta_ts>2010-07-14 16:11:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42203-20100713162524.patch</filename>
            <type>text/plain</type>
            <size>17274</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjQ2OGQwMjI0NTdhZTZhM2U2M2ZmNzE1OTI0ZGYxYzU0MDQxNmNkNS4uYjQ1NmI5Mzc2YWM5N2Y4
NDQxYmIzYzM5MTcxNDc0ZWE3MzliMDg5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNy0xMyAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJyZWFrcyBhbGwgZGVwZW5kZW5jaWVzIG9uIFBh
Z2UgZnJvbSBwbGF0Zm9ybS8gYW5kIGNsZWFucyB1cCBHTEVTMkNvbnRleHQgbGlmZXRpbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMjAzCisKKyAg
ICAgICAgUmF0aGVyIHRoYW4gY29uc3RydWN0aW5nIGEgR0xFUzJDb250ZXh0IGZyb20gYSBQYWdl
LCBwYXNzIHRoZSBMYXllclJlbmRlcmVyQ2hyb21pdW0KKyAgICAgICAgYSBHTEVTMkNvbnRleHQg
aW4gZnJvbSB0aGUgY29uc3RydWN0b3IuICBUaGlzIHdheSB0aGUgcGxhdGZvcm0vIGRpcmVjdG9y
eSBjYW4gcmVtYWluCisgICAgICAgIGlnbm9yYW50IG9mIFBhZ2UgYW5kIGZyaWVuZHMuICBUZW1w
b3JhcmlseSByZW1vdmVzIChjdXJyZW50bHkgdW51c2VkKSBhYmlsaXR5IHRvCisgICAgICAgIGNv
bnN0cnVjdCBhbiBvZmZzY3JlZW4gR0xFUzJDb250ZXh0IGZyb20gV2ViQ29yZS4gIEknbGwgcmUt
YWRkIHRoYXQgaW4gYSBmb2xsb3cgdXAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9H
TEVTMkNvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorCiAyMDEwLTA3LTEyICBBbmRyZWFzIEts
aW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xp
dmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dMRVMyQ29u
dGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HTEVTMkNvbnRleHQuaAppbmRleCBi
NzIzMjlhOGUwNjFhODYwOGNjMjExMzFlYWIwMTQ5NTg5ZjcyNGQ5Li5kMzc4ODVhMTFmOGMxMTRj
MjQ2MTM2ZmM0ZDcyOGUyYjI4MTg0MGZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0dMRVMyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR0xF
UzJDb250ZXh0LmgKQEAgLTQzLDE0ICs0Myw4IEBAIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIEdMRVMy
Q29udGV4dCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgLy8gQ3JlYXRlcyBh
IEdMIEVTIGNvbnRleHQgdGhhdCBkcmF3cyBkaXJlY3RseSB0byB0aGUgd2luZG93IGFzc29jaWF0
ZWQgd2l0aAotICAgIC8vIHRoZSBQYWdlLgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMRVMyQ29u
dGV4dD4gY3JlYXRlT25zY3JlZW4oUGFnZSopOwotCi0gICAgLy8gQ3JlYXRlcyBhIEdMIEVTIGNv
bnRleHQgdGhhdCByZW5kZXJzIG9mZnNjcmVlbiwgb3B0aW9uYWxseSBhcyBhIGNoaWxkCi0gICAg
Ly8gb2YgdGhlIGdpdmVuIHBhcmVudCBpZiBzcGVjaWZpZWQuCi0gICAgc3RhdGljIFBhc3NPd25Q
dHI8R0xFUzJDb250ZXh0PiBjcmVhdGVPZmZzY3JlZW4oR0xFUzJDb250ZXh0KiBwYXJlbnQpOwot
CisgICAgLy8gVXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gb25seQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEdMRVMyQ29udGV4dD4gY3JlYXRlKFBhc3NPd25QdHI8R0xFUzJDb250ZXh0SW50ZXJu
YWw+KTsKICAgICB+R0xFUzJDb250ZXh0KCk7CiAKICAgICBib29sIG1ha2VDdXJyZW50KCk7CkBA
IC02NSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBnZXRPZmZzY3JlZW5Db250ZW50
UGFyZW50VGV4dHVyZUlkKCk7CiAKIHByaXZhdGU6CisgICAgR0xFUzJDb250ZXh0KCk7CisKICAg
ICBmcmllbmQgY2xhc3MgR0xFUzJDb250ZXh0SW50ZXJuYWw7CiAgICAgT3duUHRyPEdMRVMyQ29u
dGV4dEludGVybmFsPiBtX2ludGVybmFsOwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRl
eCA5YWM1MDZjMmM0NmJhMTBmNjk0NTEwMzg5ODM4NTdlN2JlMDZmMzhkLi5iMDcxMzg1Mzk3NWU4
ZDM4ZDQ3ZGQ1OWJjNzlhNDg0ZmExZDI4YmM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiR0xFUzJDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybUxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJXZWJH
TExheWVyQ2hyb21pdW0uaCIKICNpZiBQTEFURk9STShTS0lBKQpAQCAtMTkwLDI0ICsxODksMjQg
QEAgU2hhZGVyUHJvZ3JhbTo6U2hhZGVyUHJvZ3JhbSgpCiB7CiB9CiAKLVBhc3NPd25QdHI8TGF5
ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShQYWdlKiBw
YWdlKQorUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y3JlYXRlKFBhc3NPd25QdHI8R0xFUzJDb250ZXh0PiBnbGVzMkNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0ocGFnZSk7CisgICAgcmV0dXJuIG5l
dyBMYXllclJlbmRlcmVyQ2hyb21pdW0oZ2xlczJDb250ZXh0KTsKIH0KIAotTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oUGFnZSogcGFnZSkKK0xheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKFBhc3NPd25QdHI8R0xFUzJDb250ZXh0
PiBnbGVzMkNvbnRleHQpCiAgICAgOiBtX3Jvb3RMYXllcigwKQogICAgICwgbV9uZWVkc0Rpc3Bs
YXkoZmFsc2UpCiAgICAgLCBtX3Bvc2l0aW9uTG9jYXRpb24oMCkKICAgICAsIG1fdGV4Q29vcmRM
b2NhdGlvbigxKQotICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX3Jvb3RMYXllclRleHR1cmVX
aWR0aCgwKQogICAgICwgbV9yb290TGF5ZXJUZXh0dXJlSGVpZ2h0KDApCiAgICAgLCBtX3Njcm9s
bFBvc2l0aW9uKEludFBvaW50KC0xLCAtMSkpCiAgICAgLCBtX2N1cnJlbnRTaGFkZXJQcm9ncmFt
VHlwZShOdW1TaGFkZXJQcm9ncmFtVHlwZXMpCisgICAgLCBtX2dsZXMyQ29udGV4dChnbGVzMkNv
bnRleHQpCiB7CiAgICAgbV9xdWFkVmJvSWRzW1ZlcnRpY2VzXSA9IG1fcXVhZFZib0lkc1tMYXll
ckVsZW1lbnRzXSA9IDA7Ci0gICAgbV9oYXJkd2FyZUNvbXBvc2l0aW5nID0gKGluaXRHTCgpICYm
IGluaXRpYWxpemVTaGFyZWRHTE9iamVjdHMoKSk7CisgICAgbV9oYXJkd2FyZUNvbXBvc2l0aW5n
ID0gKG1fZ2xlczJDb250ZXh0ICYmIGluaXRpYWxpemVTaGFyZWRHTE9iamVjdHMoKSk7CiB9CiAK
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6fkxheWVyUmVuZGVyZXJDaHJvbWl1bSgpCkBAIC02NDUs
MTYgKzY0NCw2IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjptYWtlQ29udGV4dEN1cnJl
bnQoKQogICAgIHJldHVybiBtX2dsZXMyQ29udGV4dC0+bWFrZUN1cnJlbnQoKTsKIH0KIAotYm9v
bCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRHTCgpCi17Ci0gICAgbV9nbGVzMkNvbnRleHQg
PSBHTEVTMkNvbnRleHQ6OmNyZWF0ZU9uc2NyZWVuKG1fcGFnZSk7Ci0KLSAgICBpZiAoIW1fZ2xl
czJDb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRDb21tb25BdHRyaWJMb2NhdGlvbnMo
U2hhZGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbSkKIHsKICAgICB1bnNpZ25lZCBwcm9ncmFtSWQgPSBt
X3NoYWRlclByb2dyYW1zW3Byb2dyYW1dLm1fc2hhZGVyUHJvZ3JhbUlkOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKaW5kZXggZGM3ZWE3MGI4Y2Q5NzQzNDRmM2MwYmU2MWQ3OTU4N2Q1OTIwOTczMS4uM2I4
OWRjNmFkMWJmNzcyMzQwN2VlYTEwYjlmZDZkMmJhMWU5NzdmNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oCkBAIC00NSw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdMRVMy
Q29udGV4dDsKLWNsYXNzIFBhZ2U7CiAKIGNsYXNzIFNoYWRlclByb2dyYW0gewogcHVibGljOgpA
QCAtNjAsOSArNTksOSBAQCBwdWJsaWM6CiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2luZyBv
ZiBjb21wb3NpdGVkIHJlbmRlciBsYXllcnMgdXNpbmcgR0wuCiBjbGFzcyBMYXllclJlbmRlcmVy
Q2hyb21pdW0gOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKFBhZ2UqIHBhZ2UpOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKFBhc3NPd25QdHI8
R0xFUzJDb250ZXh0PiBnbGVzMkNvbnRleHQpOwogCi0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVt
KFBhZ2UqIHBhZ2UpOworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShQYXNzT3duUHRyPEdMRVMy
Q29udGV4dD4gZ2xlczJDb250ZXh0KTsKICAgICB+TGF5ZXJSZW5kZXJlckNocm9taXVtKCk7CiAK
ICAgICAvLyBVcGRhdGVzIHRoZSBjb250ZW50cyBvZiB0aGUgcm9vdCBsYXllciB0aGF0IGZhbGwg
aW5zaWRlIHRoZSB1cGRhdGVSZWN0IGFuZCByZWNvbXBvc2l0ZXMKQEAgLTEwNSw3ICsxMDQsNiBA
QCBwcml2YXRlOgogICAgIGVudW0gVmJvSWRzIHsgVmVydGljZXMsIExheWVyRWxlbWVudHMgfTsK
IAogICAgIC8vIFRoZXNlIGFyZSBoZXJlIG9ubHkgdGVtcG9yYXJpbHkgYW5kIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2Ugd2Ugc3dpdGNoIG92ZXIgdG8gR0dMCi0gICAgYm9vbCBpbml0R0woKTsKICAg
ICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgYm9vbCBpbml0aWFsaXplU2hhcmVk
R0xPYmplY3RzKCk7CkBAIC0xNTEsOSArMTQ5LDYgQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1f
cm9vdExheWVyQ2FudmFzU2l6ZTsKIAogICAgIE93blB0cjxHTEVTMkNvbnRleHQ+IG1fZ2xlczJD
b250ZXh0OwotCi0gICAgLy8gVGhlIFdlYkNvcmUgUGFnZSB0aGF0IHRoZSBjb21wb3NpdG9yIHJl
bmRlcnMgaW50by4KLSAgICBQYWdlKiBtX3BhZ2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBj
Y2E3YjY5ODdjZjg1ODI3MDk3M2Y5Y2M4ODNlNDkwMjU0OGIxZmQ2Li5kZmJmNWFiYzRjZWY2MDc5
MWM3MTI1MzNkZjVkZGFhNDExMzk0ZDIxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAxMC0wNy0xMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJyZWFrcyBhbGwgZGVw
ZW5kZW5jaWVzIG9uIFBhZ2UgZnJvbSBwbGF0Zm9ybS8gYW5kIGNsZWFucyB1cCBHTEVTMkNvbnRl
eHQgbGlmZXRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyMjAzCisKKyAgICAgICAgUmF0aGVyIHRoYW4gY29uc3RydWN0aW5nIGEgR0xFUzJDb250
ZXh0IGZyb20gYSBQYWdlLCBwYXNzIHRoZSBMYXllclJlbmRlcmVyQ2hyb21pdW0KKyAgICAgICAg
YSBHTEVTMkNvbnRleHQgaW4gZnJvbSB0aGUgY29uc3RydWN0b3IuICBUaGlzIHdheSB0aGUgcGxh
dGZvcm0vIGRpcmVjdG9yeSBjYW4gcmVtYWluCisgICAgICAgIGlnbm9yYW50IG9mIFBhZ2UgYW5k
IGZyaWVuZHMuICBUZW1wb3JhcmlseSByZW1vdmVzIChjdXJyZW50bHkgdW51c2VkKSBhYmlsaXR5
IHRvCisgICAgICAgIGNvbnN0cnVjdCBhbiBvZmZzY3JlZW4gR0xFUzJDb250ZXh0IGZyb20gV2Vi
Q29yZS4gIEknbGwgcmUtYWRkIHRoYXQgaW4gYSBmb2xsb3cgdXAuCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJHTEVTMkNvbnRleHQuaDoKKyAgICAgICAgKiBz
cmMvR0xFUzJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMRVMyQ29udGV4dEludGVy
bmFsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R0xFUzJDb250ZXh0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xFUzJDb250ZXh0OjpHTEVTMkNvbnRleHQpOgorICAgICAgICAq
IHNyYy9HTEVTMkNvbnRleHRJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdM
RVMyQ29udGV4dEludGVybmFsOjpnZXRXZWJHTEVTMkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xFUzJDb250ZXh0SW50ZXJuYWw6OkdMRVMyQ29udGV4dEludGVybmFsKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0
SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmdldE9uc2NyZWVuR0xFUzJDb250ZXh0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuaDoKKwogMjAxMC0wNy0xMiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDgxNDMwNDliZjY4YjA0OWUxMDY3YjU4NmMwNTdlOTAxODlkMWE4MDQuLmNmZTk1NTM3
N2VlODYwMDJiZTQ1ZGNmZWIwMGNlNGMzZWE1M2JlNjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xLDUg
KzEsNSBAQAogIwotIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNjgsNiArMjY4LDcg
QEAKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvR0xFUzJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9HTEVTMkNv
bnRleHRJbnRlcm5hbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL2d0ay9XZWJGb250SW5mby5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvZ3RrL1dlYkZvbnRJbmZvLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvZ3RrL1dlYklucHV0RXZlbnRGYWN0b3J5LmNwcCcsCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdMRVMyQ29udGV4dC5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJHTEVTMkNvbnRleHQuaAppbmRleCBjNjdmYWYyMDRkZWM5NTBkMDliMzk2OTg4
ZDllNTk4ZjAzNTIyYzQzLi41Nzk0NDM2ZmQxMjg4M2I3ZjNkMTFiZDg2ZmRlMTAwNmJhMzhlOTBk
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdMRVMyQ29udGV4dC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR0xFUzJDb250ZXh0LmgKQEAgLTQ2LDE4ICs0
NiwxOCBAQCBjbGFzcyBXZWJHTEVTMkNvbnRleHQgOiBwdWJsaWMgV2ViTm9uQ29weWFibGUgewog
cHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMRVMyQ29udGV4dCgpIHt9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaW5pdGlhbGl6ZShXZWJWaWV3KiwgV2ViR0xFUzJDb250ZXh0KiBwYXJlbnQpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgbWFrZUN1cnJlbnQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGRl
c3Ryb3koKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN3YXBCdWZmZXJzKCkgPSAwOworICAgIFdF
QktJVF9BUEkgdmlydHVhbCBib29sIGluaXRpYWxpemUoV2ViVmlldyosIFdlYkdMRVMyQ29udGV4
dCogcGFyZW50KSA9IDA7CisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIGJvb2wgbWFrZUN1cnJlbnQo
KSA9IDA7CisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIGJvb2wgZGVzdHJveSgpID0gMDsKKyAgICBX
RUJLSVRfQVBJIHZpcnR1YWwgYm9vbCBzd2FwQnVmZmVycygpID0gMDsKIAogICAgIC8vIFRoZSBm
b2xsb3cgdHdvIGZ1bmN0aW9ucyBhcmUgZm9yIG1hbmFnaW5nIGEgY29udGV4dCB0aGF0IHJlbmRl
cnMgb2Zmc2NyZWVuLgogCiAgICAgLy8gUmVzaXplcyB0aGUgYmFja2luZyBzdG9yZSB1c2VkIGZv
ciBvZmZzY3JlZW4gcmVuZGVyaW5nLgotICAgIHZpcnR1YWwgdm9pZCByZXNpemVPZmZzY3JlZW5D
b250ZW50KGNvbnN0IFdlYlNpemUmKSA9IDA7CisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIHZvaWQg
cmVzaXplT2Zmc2NyZWVuQ29udGVudChjb25zdCBXZWJTaXplJikgPSAwOwogCiAgICAgLy8gUmV0
dXJucyB0aGUgSUQgb2YgdGhlIHRleHR1cmUgdXNlZCBmb3Igb2Zmc2NyZWVuIHJlbmRlcmluZyBp
biB0aGUgY29udGV4dCBvZiB0aGUgcGFyZW50LgotICAgIHZpcnR1YWwgdW5zaWduZWQgZ2V0T2Zm
c2NyZWVuQ29udGVudFBhcmVudFRleHR1cmVJZCgpID0gMDsKKyAgICBXRUJLSVRfQVBJIHZpcnR1
YWwgdW5zaWduZWQgZ2V0T2Zmc2NyZWVuQ29udGVudFBhcmVudFRleHR1cmVJZCgpID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HTEVTMkNvbnRleHQuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9HTEVTMkNvbnRleHQuY3Bw
CmluZGV4IGYzNDI0MzYyY2M5ZmZkYjgyNWM1MTVlNjRlYWY5OTZkNzNjOTMxYmYuLjE3ZDg1OTNh
ODJkYWY5NmNhYzZhYTU5N2UzYmYxM2IxNTJmODliNjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvR0xFUzJDb250ZXh0LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dMRVMy
Q29udGV4dC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgIkdMRVMyQ29udGV4dC5oIgorI2luY2x1ZGUgIkdMRVMyQ29udGV4dEludGVybmFsLmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIldlYkdMRVMyQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldlYktpdC5oIgpAQCAtNTIsNjggKzUzLDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR0xFUzJDb250ZXh0SW50ZXJuYWwg
ewotcHVibGljOgotICAgIEdMRVMyQ29udGV4dEludGVybmFsKCkge30KLSAgICB+R0xFUzJDb250
ZXh0SW50ZXJuYWwoKSB7fQotCi0gICAgYm9vbCBpbml0aWFsaXplT25zY3JlZW4oUGFnZSopOwot
ICAgIGJvb2wgaW5pdGlhbGl6ZU9mZnNjcmVlbihHTEVTMkNvbnRleHQqKTsKLQotICAgIFdlYkdM
RVMyQ29udGV4dCogZ2V0V2ViR0xFUzJDb250ZXh0KCkgeyByZXR1cm4gbV9pbXBsOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgV2ViR0xFUzJDb250ZXh0KiBtX2ltcGw7Ci19OwotCi1ib29sIEdMRVMyQ29u
dGV4dEludGVybmFsOjppbml0aWFsaXplT25zY3JlZW4oUGFnZSogcGFnZSkKK1Bhc3NPd25QdHI8
R0xFUzJDb250ZXh0SW50ZXJuYWw+IEdMRVMyQ29udGV4dEludGVybmFsOjpjcmVhdGUoV2ViR0xF
UzJDb250ZXh0KiBpbXBsKQogewotICAgIEFTU0VSVChwYWdlKTsKLSAgICBXZWJWaWV3SW1wbCog
d2ViVmlldyA9IFdlYlZpZXdJbXBsOjpmcm9tUGFnZShwYWdlKTsKLSAgICBtX2ltcGwgPSB3ZWJW
aWV3LT5nbGVzMkNvbnRleHQoKTsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgR0xFUzJDb250ZXh0SW50ZXJuYWw6
OmluaXRpYWxpemVPZmZzY3JlZW4oR0xFUzJDb250ZXh0KiBwYXJlbnQpCi17Ci0gICAgbV9pbXBs
ID0gd2ViS2l0Q2xpZW50KCktPmNyZWF0ZUdMRVMyQ29udGV4dCgpOwotICAgIGlmICghbV9pbXBs
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtX2ltcGwtPmluaXRpYWxpemUoMCwg
cGFyZW50ID8gcGFyZW50LT5tX2ludGVybmFsLT5tX2ltcGwgOiAwKSkgewotICAgICAgICBkZWxl
dGUgbV9pbXBsOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OworICAgIFBhc3NPd25QdHI8R0xFUzJDb250ZXh0SW50ZXJuYWw+IHJlc3VsdCA9IG5ldyBHTEVT
MkNvbnRleHRJbnRlcm5hbChpbXBsKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzT3du
UHRyPEdMRVMyQ29udGV4dD4gR0xFUzJDb250ZXh0OjpjcmVhdGVPbnNjcmVlbihQYWdlKiBwYWdl
KQorUGFzc093blB0cjxHTEVTMkNvbnRleHQ+IEdMRVMyQ29udGV4dDo6Y3JlYXRlKFBhc3NPd25Q
dHI8R0xFUzJDb250ZXh0SW50ZXJuYWw+IGludGVybmFsKQogewotICAgIEdMRVMyQ29udGV4dElu
dGVybmFsKiBpbnRlcm5hbCA9IG5ldyBHTEVTMkNvbnRleHRJbnRlcm5hbCgpOwotICAgIGlmICgh
aW50ZXJuYWwtPmluaXRpYWxpemVPbnNjcmVlbihwYWdlKSkgewotICAgICAgICBkZWxldGUgaW50
ZXJuYWw7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KICAgICBQYXNzT3duUHRyPEdMRVMyQ29u
dGV4dD4gcmVzdWx0ID0gbmV3IEdMRVMyQ29udGV4dCgpOwotICAgIHJlc3VsdC0+bV9pbnRlcm5h
bC5zZXQoaW50ZXJuYWwpOworICAgIHJlc3VsdC0+bV9pbnRlcm5hbCA9IGludGVybmFsOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NPd25QdHI8R0xFUzJDb250ZXh0PiBHTEVTMkNvbnRl
eHQ6OmNyZWF0ZU9mZnNjcmVlbihHTEVTMkNvbnRleHQqIHBhcmVudCkKK0dMRVMyQ29udGV4dDo6
R0xFUzJDb250ZXh0KCkKIHsKLSAgICBHTEVTMkNvbnRleHRJbnRlcm5hbCogaW50ZXJuYWwgPSBu
ZXcgR0xFUzJDb250ZXh0SW50ZXJuYWwoKTsKLSAgICBpZiAoIWludGVybmFsLT5pbml0aWFsaXpl
T2Zmc2NyZWVuKHBhcmVudCkpIHsKLSAgICAgICAgZGVsZXRlIGludGVybmFsOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0gICAgUGFzc093blB0cjxHTEVTMkNvbnRleHQ+IHJlc3VsdCA9IG5l
dyBHTEVTMkNvbnRleHQoKTsKLSAgICByZXN1bHQtPm1faW50ZXJuYWwuc2V0KGludGVybmFsKTsK
LSAgICByZXR1cm4gcmVzdWx0OwogfQogCi0KIEdMRVMyQ29udGV4dDo6fkdMRVMyQ29udGV4dCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0dMRVMyQ29udGV4dEludGVy
bmFsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dMRVMyQ29udGV4dEludGVybmFsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWE4MDUwNWExNjBiMTFjMmU0ZDk2MzliOTU1NTc1ODA0OGZiNmI0NAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR0xFUzJDb250ZXh0SW50ZXJuYWwuaApAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBXZWJHTEVTMkNvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR0xFUzJDb250ZXh0SW50ZXJuYWwgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PEdMRVMyQ29udGV4dEludGVybmFsPiBjcmVhdGUoV2ViS2l0OjpXZWJHTEVTMkNvbnRleHQqIGlt
cGwpOworCisgICAgV2ViS2l0OjpXZWJHTEVTMkNvbnRleHQqIGdldFdlYkdMRVMyQ29udGV4dCgp
IHsgcmV0dXJuIG1faW1wbDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEdMRVMyQ29udGV4
dEludGVybmFsKFdlYktpdDo6V2ViR0xFUzJDb250ZXh0KiBpbXBsKSB7IG1faW1wbCA9IGltcGw7
IH0KKworICAgIFdlYktpdDo6V2ViR0xFUzJDb250ZXh0KiBtX2ltcGw7Cit9OworCit9CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGQxY2E3MWU2YjA2ZmZlZGE2MWE5YTk4MmE5
MDAxNWJhMzk1Y2RmZTQuLjU4MTk2MjFhYzIxNTdmNGI3ZDk3OTNmMThjZTA0OTgyMzBiZjEwMDYg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC01NCwxMCArNTQsMTIgQEAKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdMRVMyQ29udGV4dC5oIgorI2luY2x1ZGUgIkdMRVMy
Q29udGV4dEludGVybmFsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ29udHJvbGxlci5oIgpAQCAtMjA1OCw3ICsyMDYwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoYWN0aXZlKSB7Ci0gICAgICAgIG1fbGF5ZXJSZW5kZXJlciA9IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKHBhZ2UoKSk7CisgICAgICAgIG1fbGF5ZXJSZW5k
ZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKGdldE9uc2NyZWVuR0xFUzJDb250
ZXh0KCkpOwogICAgICAgICBpZiAobV9sYXllclJlbmRlcmVyLT5oYXJkd2FyZUNvbXBvc2l0aW5n
KCkpCiAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7
CiAgICAgICAgIGVsc2UgewpAQCAtMjEzMiw2ICsyMTM0LDExIEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogCitQYXNzT3duUHRyPFdlYkNvcmU6OkdMRVMyQ29udGV4dD4gV2ViVmll
d0ltcGw6OmdldE9uc2NyZWVuR0xFUzJDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6
R0xFUzJDb250ZXh0OjpjcmVhdGUoV2ViQ29yZTo6R0xFUzJDb250ZXh0SW50ZXJuYWw6OmNyZWF0
ZShnbGVzMkNvbnRleHQoKSkpOworfQorCiAvLyBSZXR1cm5zIHRoZSBHTEVTMiBjb250ZXh0IGFz
c29jaWF0ZWQgd2l0aCB0aGlzIFZpZXcuIElmIG9uZSBkb2Vzbid0IGV4aXN0CiAvLyBpdCB3aWxs
IGdldCBjcmVhdGVkIGZpcnN0LgogV2ViR0xFUzJDb250ZXh0KiBXZWJWaWV3SW1wbDo6Z2xlczJD
b250ZXh0KCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBkYjJhMWQyNzYxYWM3ZDQ3
MDA1ODkxOWY3Y2Y1MWQzNDVjY2FjMGVlLi4zNTJmNzBkYWQzNzJlOTYyYzYxZmI0NzkzMTNkOTQ2
OWZkNzE0MGNiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC01Myw2ICs1Myw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDaHJvbWl1bURhdGFPYmplY3Q7CiBjbGFzcyBG
cmFtZTsKK2NsYXNzIEdMRVMyQ29udGV4dDsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgSGl0
VGVzdFJlc3VsdDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CkBAIC0xODMsNyArMTg0LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3Rp
dmVCYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7CiAgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pOwotICAgIHZpcnR1YWwg
V2ViR0xFUzJDb250ZXh0KiBnbGVzMkNvbnRleHQoKTsKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAK
QEAgLTMxNCw2ICszMTQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Um9vdExheWVyTmVlZHNE
aXNwbGF5KCk7CiAgICAgdm9pZCBzZXRSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpQbGF0Zm9y
bUxheWVyKik7CiAjZW5kaWYKKyAgICAvLyBPbnNjcmVlbiBjb250ZXh0cyBkaXNwbGF5IHRvIHRo
ZSBzY3JlZW4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmlldy4KKyAgICAvLyBPZmZzY3JlZW4gY29u
dGV4dHMgcmVuZGVyIG9mZnNjcmVlbiBidXQgY2FuIHNoYXJlIHJlc291cmNlcyB3aXRoIHRoZQor
ICAgIC8vIG9uc2NyZWVuIGNvbnRleHQgYW5kIHRodXMgY2FuIGJlIGNvbXBvc2l0ZWQuCisgICAg
UGFzc093blB0cjxXZWJDb3JlOjpHTEVTMkNvbnRleHQ+IGdldE9uc2NyZWVuR0xFUzJDb250ZXh0
KCk7CisKKyAgICAvLyBSZXR1cm5zIGFuIG9uc2NyZWVuIGNvbnRleHQKKyAgICB2aXJ0dWFsIFdl
YkdMRVMyQ29udGV4dCogZ2xlczJDb250ZXh0KCk7CiAKICAgICBXZWJDb3JlOjpQb3B1cENvbnRh
aW5lciogc2VsZWN0UG9wdXAoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdFBvcHVwLmdldCgpOyB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61581</attachid>
            <date>2010-07-14 16:11:08 -0700</date>
            <delta_ts>2010-07-14 16:52:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42203-20100714161107.patch</filename>
            <type>text/plain</type>
            <size>23981</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjQ2OGQwMjI0NTdhZTZhM2U2M2ZmNzE1OTI0ZGYxYzU0MDQxNmNkNS4uMzExZTVhZjVjMDNiMTIw
YmNiMDMzMzM2YjcwY2ZhMDcwNGY5MDc3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNy0xNCAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJyZWFrcyBhbGwgZGVwZW5kZW5jaWVzIG9uIFBh
Z2UgZnJvbSBwbGF0Zm9ybS8gYW5kIGNsZWFucyB1cCBHTEVTMkNvbnRleHQgbGlmZXRpbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMjAzCisKKyAg
ICAgICAgUmF0aGVyIHRoYW4gY29uc3RydWN0aW5nIGEgR0xFUzJDb250ZXh0IGZyb20gYSBQYWdl
LCBwYXNzIHRoZSBMYXllclJlbmRlcmVyQ2hyb21pdW0KKyAgICAgICAgYSBHTEVTMkNvbnRleHQg
aW4gZnJvbSB0aGUgY29uc3RydWN0b3IuICBUaGlzIHdheSB0aGUgcGxhdGZvcm0vIGRpcmVjdG9y
eSBjYW4gcmVtYWluCisgICAgICAgIGlnbm9yYW50IG9mIFBhZ2UgYW5kIGZyaWVuZHMuICBBbHNv
IGFkZHMgZnVuY3Rpb25zIG9uIENocm9tZUNsaWVudENocm9taXVtIHRvIHJlcXVlc3QKKyAgICAg
ICAgb25zY3JlZW4gYW5kIG9mZnNjcmVlbiBHTEVTMkNvbnRleHRzIGZvciBjYWxsZXJzIGluIFdl
YkNvcmUgdGhhdCBuZWVkIHRoZW0uCisKKyAgICAgICAgKiBwYWdlL2Nocm9taXVtL0Nocm9tZUNs
aWVudENocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vR0xFUzJDb250ZXh0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaDoKKwogMjAxMC0wNy0xMiAgQW5kcmVhcyBLbGluZyAgPGFuZHJl
YXMua2xpbmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Nocm9tZUNsaWVudENocm9taXVtLmgg
Yi9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAppbmRleCBlODk3
YzE1YjRjZjNmNjBmNTgwYWMzZTRjNTkyYTZkMjhjNDU0N2E0Li40Njk4NWIxYmE5MGYxMWJiYzg4
MTA3YTZjMzc4ZWJjZTI3NzYzYjliIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0v
Q2hyb21lQ2xpZW50Q2hyb21pdW0uaAorKysgYi9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21l
Q2xpZW50Q2hyb21pdW0uaApAQCAtMzksNiArMzksMTAgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eU9i
amVjdDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIAorI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKK2NsYXNzIEdMRVMyQ29udGV4dDsKKyNlbmRpZgorCiAv
LyBDb250YWlucyBDaHJvbWl1bS1zcGVjaWZpYyBleHRlbnNpb25zIHRvIHRoZSBDaHJvbWVDbGll
bnQuICBPbmx5IHB1dAogLy8gdGhpbmdzIGhlcmUgdGhhdCBkb24ndCBtYWtlIHNlbnNlIGZvciBv
dGhlciBwb3J0cy4KIGNsYXNzIENocm9tZUNsaWVudENocm9taXVtIDogcHVibGljIENocm9tZUNs
aWVudCB7CkBAIC01NSw2ICs1OSwxMiBAQCBwdWJsaWM6CiAKICAgICAvLyBOb3RpZmllcyBlbWJl
ZGRlciB0aGF0IHRoZSBzdGF0ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgY2hhbmdl
ZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKEFj
Y2Vzc2liaWxpdHlPYmplY3QqKSA9IDA7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgLy8gUmVxdWVzdCBhIEdMIEVTIDIgY29udGV4dCB0byB1c2UgZm9yIGNvbXBvc2l0
aW5nIHRoaXMgcGFnZSdzIGNvbnRlbnQuCisgICAgdmlydHVhbCBQYXNzT3duUHRyPEdMRVMyQ29u
dGV4dD4gZ2V0T25zY3JlZW5HTEVTMkNvbnRleHQoKSA9IDA7CisgICAgdmlydHVhbCBQYXNzT3du
UHRyPEdMRVMyQ29udGV4dD4gZ2V0T2Zmc2NyZWVuR0xFUzJDb250ZXh0KCkgPSAwOworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0dMRVMyQ29udGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9H
TEVTMkNvbnRleHQuaAppbmRleCBiNzIzMjlhOGUwNjFhODYwOGNjMjExMzFlYWIwMTQ5NTg5Zjcy
NGQ5Li5kMzc4ODVhMTFmOGMxMTRjMjQ2MTM2ZmM0ZDcyOGUyYjI4MTg0MGZmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dMRVMyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vR0xFUzJDb250ZXh0LmgKQEAgLTQzLDE0ICs0Myw4IEBAIGNsYXNz
IFBhZ2U7CiAKIGNsYXNzIEdMRVMyQ29udGV4dCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6Ci0gICAgLy8gQ3JlYXRlcyBhIEdMIEVTIGNvbnRleHQgdGhhdCBkcmF3cyBkaXJlY3RseSB0
byB0aGUgd2luZG93IGFzc29jaWF0ZWQgd2l0aAotICAgIC8vIHRoZSBQYWdlLgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPEdMRVMyQ29udGV4dD4gY3JlYXRlT25zY3JlZW4oUGFnZSopOwotCi0gICAg
Ly8gQ3JlYXRlcyBhIEdMIEVTIGNvbnRleHQgdGhhdCByZW5kZXJzIG9mZnNjcmVlbiwgb3B0aW9u
YWxseSBhcyBhIGNoaWxkCi0gICAgLy8gb2YgdGhlIGdpdmVuIHBhcmVudCBpZiBzcGVjaWZpZWQu
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8R0xFUzJDb250ZXh0PiBjcmVhdGVPZmZzY3JlZW4oR0xF
UzJDb250ZXh0KiBwYXJlbnQpOwotCisgICAgLy8gVXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24g
b25seQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMRVMyQ29udGV4dD4gY3JlYXRlKFBhc3NPd25Q
dHI8R0xFUzJDb250ZXh0SW50ZXJuYWw+KTsKICAgICB+R0xFUzJDb250ZXh0KCk7CiAKICAgICBi
b29sIG1ha2VDdXJyZW50KCk7CkBAIC02NSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBnZXRPZmZzY3JlZW5Db250ZW50UGFyZW50VGV4dHVyZUlkKCk7CiAKIHByaXZhdGU6CisgICAg
R0xFUzJDb250ZXh0KCk7CisKICAgICBmcmllbmQgY2xhc3MgR0xFUzJDb250ZXh0SW50ZXJuYWw7
CiAgICAgT3duUHRyPEdMRVMyQ29udGV4dEludGVybmFsPiBtX2ludGVybmFsOwogfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAppbmRleCA5YWM1MDZjMmM0NmJhMTBmNjk0NTEwMzg5ODM4NTdlN2Jl
MDZmMzhkLi5iMDcxMzg1Mzk3NWU4ZDM4ZDQ3ZGQ1OWJjNzlhNDg0ZmExZDI4YmM3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiR0xFUzJDb250
ZXh0LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybUxheWVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKICNpZiBQTEFURk9STShTS0lB
KQpAQCAtMTkwLDI0ICsxODksMjQgQEAgU2hhZGVyUHJvZ3JhbTo6U2hhZGVyUHJvZ3JhbSgpCiB7
CiB9CiAKLVBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmNyZWF0ZShQYWdlKiBwYWdlKQorUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21p
dW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKFBhc3NPd25QdHI8R0xFUzJDb250ZXh0
PiBnbGVzMkNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0o
cGFnZSk7CisgICAgcmV0dXJuIG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oZ2xlczJDb250ZXh0
KTsKIH0KIAotTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oUGFn
ZSogcGFnZSkKK0xheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKFBh
c3NPd25QdHI8R0xFUzJDb250ZXh0PiBnbGVzMkNvbnRleHQpCiAgICAgOiBtX3Jvb3RMYXllcigw
KQogICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX3Bvc2l0aW9uTG9jYXRpb24o
MCkKICAgICAsIG1fdGV4Q29vcmRMb2NhdGlvbigxKQotICAgICwgbV9wYWdlKHBhZ2UpCiAgICAg
LCBtX3Jvb3RMYXllclRleHR1cmVXaWR0aCgwKQogICAgICwgbV9yb290TGF5ZXJUZXh0dXJlSGVp
Z2h0KDApCiAgICAgLCBtX3Njcm9sbFBvc2l0aW9uKEludFBvaW50KC0xLCAtMSkpCiAgICAgLCBt
X2N1cnJlbnRTaGFkZXJQcm9ncmFtVHlwZShOdW1TaGFkZXJQcm9ncmFtVHlwZXMpCisgICAgLCBt
X2dsZXMyQ29udGV4dChnbGVzMkNvbnRleHQpCiB7CiAgICAgbV9xdWFkVmJvSWRzW1ZlcnRpY2Vz
XSA9IG1fcXVhZFZib0lkc1tMYXllckVsZW1lbnRzXSA9IDA7Ci0gICAgbV9oYXJkd2FyZUNvbXBv
c2l0aW5nID0gKGluaXRHTCgpICYmIGluaXRpYWxpemVTaGFyZWRHTE9iamVjdHMoKSk7CisgICAg
bV9oYXJkd2FyZUNvbXBvc2l0aW5nID0gKG1fZ2xlczJDb250ZXh0ICYmIGluaXRpYWxpemVTaGFy
ZWRHTE9iamVjdHMoKSk7CiB9CiAKIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6fkxheWVyUmVuZGVy
ZXJDaHJvbWl1bSgpCkBAIC02NDUsMTYgKzY0NCw2IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjptYWtlQ29udGV4dEN1cnJlbnQoKQogICAgIHJldHVybiBtX2dsZXMyQ29udGV4dC0+bWFr
ZUN1cnJlbnQoKTsKIH0KIAotYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRHTCgpCi17
Ci0gICAgbV9nbGVzMkNvbnRleHQgPSBHTEVTMkNvbnRleHQ6OmNyZWF0ZU9uc2NyZWVuKG1fcGFn
ZSk7Ci0KLSAgICBpZiAoIW1fZ2xlczJDb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRD
b21tb25BdHRyaWJMb2NhdGlvbnMoU2hhZGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbSkKIHsKICAgICB1
bnNpZ25lZCBwcm9ncmFtSWQgPSBtX3NoYWRlclByb2dyYW1zW3Byb2dyYW1dLm1fc2hhZGVyUHJv
Z3JhbUlkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggZGM3ZWE3MGI4Y2Q5NzQzNDRmM2MwYmU2
MWQ3OTU4N2Q1OTIwOTczMS4uM2I4OWRjNmFkMWJmNzcyMzQwN2VlYTEwYjlmZDZkMmJhMWU5Nzdm
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC00NSw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEdMRVMyQ29udGV4dDsKLWNsYXNzIFBhZ2U7CiAKIGNsYXNzIFNoYWRl
clByb2dyYW0gewogcHVibGljOgpAQCAtNjAsOSArNTksOSBAQCBwdWJsaWM6CiAvLyBDbGFzcyB0
aGF0IGhhbmRsZXMgZHJhd2luZyBvZiBjb21wb3NpdGVkIHJlbmRlciBsYXllcnMgdXNpbmcgR0wu
CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRl
KFBhZ2UqIHBhZ2UpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1
bT4gY3JlYXRlKFBhc3NPd25QdHI8R0xFUzJDb250ZXh0PiBnbGVzMkNvbnRleHQpOwogCi0gICAg
TGF5ZXJSZW5kZXJlckNocm9taXVtKFBhZ2UqIHBhZ2UpOworICAgIExheWVyUmVuZGVyZXJDaHJv
bWl1bShQYXNzT3duUHRyPEdMRVMyQ29udGV4dD4gZ2xlczJDb250ZXh0KTsKICAgICB+TGF5ZXJS
ZW5kZXJlckNocm9taXVtKCk7CiAKICAgICAvLyBVcGRhdGVzIHRoZSBjb250ZW50cyBvZiB0aGUg
cm9vdCBsYXllciB0aGF0IGZhbGwgaW5zaWRlIHRoZSB1cGRhdGVSZWN0IGFuZCByZWNvbXBvc2l0
ZXMKQEAgLTEwNSw3ICsxMDQsNiBAQCBwcml2YXRlOgogICAgIGVudW0gVmJvSWRzIHsgVmVydGlj
ZXMsIExheWVyRWxlbWVudHMgfTsKIAogICAgIC8vIFRoZXNlIGFyZSBoZXJlIG9ubHkgdGVtcG9y
YXJpbHkgYW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2Ugc3dpdGNoIG92ZXIgdG8gR0dMCi0g
ICAgYm9vbCBpbml0R0woKTsKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAg
Ym9vbCBpbml0aWFsaXplU2hhcmVkR0xPYmplY3RzKCk7CkBAIC0xNTEsOSArMTQ5LDYgQEAgcHJp
dmF0ZToKICAgICBJbnRTaXplIG1fcm9vdExheWVyQ2FudmFzU2l6ZTsKIAogICAgIE93blB0cjxH
TEVTMkNvbnRleHQ+IG1fZ2xlczJDb250ZXh0OwotCi0gICAgLy8gVGhlIFdlYkNvcmUgUGFnZSB0
aGF0IHRoZSBjb21wb3NpdG9yIHJlbmRlcnMgaW50by4KLSAgICBQYWdlKiBtX3BhZ2U7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBjY2E3YjY5ODdjZjg1ODI3MDk3M2Y5Y2M4ODNlNDkwMjU0OGIx
ZmQ2Li43YTBmNDc3NWNkMTNiZmIwNjBlMDk2Y2FlNWVhZmRkYzhkYmQ5YWE4IDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wNy0xNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJyZWFrcyBhbGwgZGVwZW5kZW5jaWVzIG9uIFBhZ2UgZnJvbSBwbGF0Zm9ybS8gYW5k
IGNsZWFucyB1cCBHTEVTMkNvbnRleHQgbGlmZXRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMjAzCisKKyAgICAgICAgUmF0aGVyIHRoYW4gY29u
c3RydWN0aW5nIGEgR0xFUzJDb250ZXh0IGZyb20gYSBQYWdlLCBwYXNzIHRoZSBMYXllclJlbmRl
cmVyQ2hyb21pdW0KKyAgICAgICAgYSBHTEVTMkNvbnRleHQgaW4gZnJvbSB0aGUgY29uc3RydWN0
b3IuICBUaGlzIHdheSB0aGUgcGxhdGZvcm0vIGRpcmVjdG9yeSBjYW4gcmVtYWluCisgICAgICAg
IGlnbm9yYW50IG9mIFBhZ2UgYW5kIGZyaWVuZHMuICBBbHNvIGFkZHMgZnVuY3Rpb25zIG9uIENo
cm9tZUNsaWVudENocm9taXVtIHRvIHJlcXVlc3QKKyAgICAgICAgb25zY3JlZW4gYW5kIG9mZnNj
cmVlbiBHTEVTMkNvbnRleHRzIGZvciBjYWxsZXJzIGluIFdlYkNvcmUgdGhhdCBuZWVkIHRoZW0u
IAorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViR0xFUzJDb250
ZXh0Lmg6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjpnZXRPbnNjcmVlbkdMRVMyQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmdldE9mZnNjcmVlbkdMRVMyQ29udGV4dCk6Cisg
ICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvR0xFUzJDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMRVMyQ29udGV4dEludGVybmFsOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R0xFUzJDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xFUzJDb250ZXh0OjpHTEVTMkNvbnRleHQpOgorICAgICAgICAqIHNyYy9HTEVTMkNv
bnRleHRJbnRlcm5hbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R0xFUzJDb250ZXh0
SW50ZXJuYWw6On5HTEVTMkNvbnRleHRJbnRlcm5hbCk6CisgICAgICAgICogc3JjL0dMRVMyQ29u
dGV4dEludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R0xFUzJDb250ZXh0SW50
ZXJuYWw6OmdldFdlYkdMRVMyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTEVTMkNvbnRl
eHRJbnRlcm5hbDo6R0xFUzJDb250ZXh0SW50ZXJuYWwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Z2V0T25z
Y3JlZW5HTEVTMkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Z2V0T2Zm
c2NyZWVuR0xFUzJDb250ZXh0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAx
MC0wNy0xMiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDgxNDMw
NDliZjY4YjA0OWUxMDY3YjU4NmMwNTdlOTAxODlkMWE4MDQuLmE0ZjY4NTFhY2EwNTA4MzBhMDBl
NjczYTVlOGUwYzEwYjc1ZWYxZGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xLDUgKzEsNSBAQAogIwot
IyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNjgsNiArMjY4LDggQEAKICAgICAgICAg
ICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvR0xF
UzJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9HTEVTMkNvbnRleHRJbnRlcm5h
bC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvR0xFUzJDb250ZXh0SW50ZXJuYWwuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9ndGsvV2ViRm9udEluZm8uY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL2d0ay9XZWJGb250SW5mby5oJywKICAgICAgICAgICAgICAgICAnc3JjL2d0ay9XZWJJ
bnB1dEV2ZW50RmFjdG9yeS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJHTEVTMkNvbnRleHQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR0xFUzJDb250
ZXh0LmgKaW5kZXggYzY3ZmFmMjA0ZGVjOTUwZDA5YjM5Njk4OGQ5ZTU5OGYwMzUyMmM0My4uNTc5
NDQzNmZkMTI4ODNiN2YzZDExYmQ4NmZkZTEwMDZiYTM4ZTkwZCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJHTEVTMkNvbnRleHQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkdMRVMyQ29udGV4dC5oCkBAIC00NiwxOCArNDYsMTggQEAgY2xhc3MgV2ViR0xF
UzJDb250ZXh0IDogcHVibGljIFdlYk5vbkNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5XZWJHTEVTMkNvbnRleHQoKSB7fQogCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoV2Vi
VmlldyosIFdlYkdMRVMyQ29udGV4dCogcGFyZW50KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIG1h
a2VDdXJyZW50KCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkZXN0cm95KCkgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBzd2FwQnVmZmVycygpID0gMDsKKyAgICBXRUJLSVRfQVBJIHZpcnR1YWwgYm9v
bCBpbml0aWFsaXplKFdlYlZpZXcqLCBXZWJHTEVTMkNvbnRleHQqIHBhcmVudCkgPSAwOworICAg
IFdFQktJVF9BUEkgdmlydHVhbCBib29sIG1ha2VDdXJyZW50KCkgPSAwOworICAgIFdFQktJVF9B
UEkgdmlydHVhbCBib29sIGRlc3Ryb3koKSA9IDA7CisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIGJv
b2wgc3dhcEJ1ZmZlcnMoKSA9IDA7CiAKICAgICAvLyBUaGUgZm9sbG93IHR3byBmdW5jdGlvbnMg
YXJlIGZvciBtYW5hZ2luZyBhIGNvbnRleHQgdGhhdCByZW5kZXJzIG9mZnNjcmVlbi4KIAogICAg
IC8vIFJlc2l6ZXMgdGhlIGJhY2tpbmcgc3RvcmUgdXNlZCBmb3Igb2Zmc2NyZWVuIHJlbmRlcmlu
Zy4KLSAgICB2aXJ0dWFsIHZvaWQgcmVzaXplT2Zmc2NyZWVuQ29udGVudChjb25zdCBXZWJTaXpl
JikgPSAwOworICAgIFdFQktJVF9BUEkgdmlydHVhbCB2b2lkIHJlc2l6ZU9mZnNjcmVlbkNvbnRl
bnQoY29uc3QgV2ViU2l6ZSYpID0gMDsKIAogICAgIC8vIFJldHVybnMgdGhlIElEIG9mIHRoZSB0
ZXh0dXJlIHVzZWQgZm9yIG9mZnNjcmVlbiByZW5kZXJpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhl
IHBhcmVudC4KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGdldE9mZnNjcmVlbkNvbnRlbnRQYXJlbnRU
ZXh0dXJlSWQoKSA9IDA7CisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIHVuc2lnbmVkIGdldE9mZnNj
cmVlbkNvbnRlbnRQYXJlbnRUZXh0dXJlSWQoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDU0Yzgx
YWE2NzExZmNiNWMyYTQzZjg4MzM5N2Q1NGVmZmIyMzdlYzkuLmE0ZGMxMGIyM2RkYjBkYjU1YmEy
MTIxYWI4NDM4Y2M4ZjBlZGUxYmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudEltcGwuaCIKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIK
ICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVj
dC5oIgogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgog
I2luY2x1ZGUgIkN1cnNvci5oIgpAQCAtNDMsOSArNDMsOSBAQAogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJHTEVTMkNvbnRleHQuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZS5oIgotI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9u
U2VydmljZS5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNTYsNiAr
NTYsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlv
blNlcnZpY2UuaCIKICNpZiBVU0UoVjgpCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2VuZGlmCkBA
IC03MjgsNiArNzI5LDE2IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6c2NoZWR1bGVDb21wb3Np
dGluZ0xheWVyU3luYygpCiB7CiAgICAgbV93ZWJWaWV3LT5zZXRSb290TGF5ZXJOZWVkc0Rpc3Bs
YXkoKTsKIH0KKworUGFzc093blB0cjxHTEVTMkNvbnRleHQ+IENocm9tZUNsaWVudEltcGw6Omdl
dE9uc2NyZWVuR0xFUzJDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3LT5nZXRPbnNj
cmVlbkdMRVMyQ29udGV4dCgpOworfQorCitQYXNzT3duUHRyPEdMRVMyQ29udGV4dD4gQ2hyb21l
Q2xpZW50SW1wbDo6Z2V0T2Zmc2NyZWVuR0xFUzJDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV93
ZWJWaWV3LT5nZXRPZmZzY3JlZW5HTEVTMkNvbnRleHQoKTsKK30KICNlbmRpZgogCiBib29sIENo
cm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViQ29yZTo6
Tm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5kZXggODQz
NTVjMzk5ZTRlZWZlMmYwYzk0ZTZjZDQ5MzZlMDMyYzRkZDQwNS4uNTgxNmFjNjhjNDUzMWJmNjc1
YWY0MmUzYmQ5MWVkMTVkMWYyZmE1YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgKQEAgLTE0NSw3ICsxNDUsMTEgQEAgcHVibGljOgogICAgIC8vIFNldHMgYSBmbGFnIHRv
IHNwZWNpZnkgdGhhdCB0aGUgdmlldyBuZWVkcyB0byBiZSB1cGRhdGVkLCBzbyB3ZSBuZWVkCiAg
ICAgLy8gdG8gZG8gYW4gZWFnZXIgbGF5b3V0IGJlZm9yZSB0aGUgZHJhd2luZy4KICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpOworCisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFdlYkNvcmU6OkdMRVMyQ29udGV4dD4gZ2V0T25zY3JlZW5HTEVTMkNvbnRleHQo
KTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R0xFUzJDb250ZXh0PiBnZXRPZmZz
Y3JlZW5HTEVTMkNvbnRleHQoKTsKICNlbmRpZgorCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
RnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViQ29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvR0xFUzJDb250ZXh0LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
R0xFUzJDb250ZXh0LmNwcAppbmRleCBmMzQyNDM2MmNjOWZmZGI4MjVjNTE1ZTY0ZWFmOTk2ZDcz
YzkzMWJmLi5iNGI0YmIyZDk2ZDdhNmRjMDBlYmU4NzJjZTM3YjUyZDVjYTg3MGNjIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0dMRVMyQ29udGV4dC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9HTEVTMkNvbnRleHQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAKICNpbmNsdWRlICJHTEVTMkNvbnRleHQuaCIKKyNpbmNsdWRlICJHTEVTMkNv
bnRleHRJbnRlcm5hbC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJXZWJHTEVT
MkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKQEAgLTUyLDY4ICs1MywyMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdMRVMy
Q29udGV4dEludGVybmFsIHsKLXB1YmxpYzoKLSAgICBHTEVTMkNvbnRleHRJbnRlcm5hbCgpIHt9
Ci0gICAgfkdMRVMyQ29udGV4dEludGVybmFsKCkge30KLQotICAgIGJvb2wgaW5pdGlhbGl6ZU9u
c2NyZWVuKFBhZ2UqKTsKLSAgICBib29sIGluaXRpYWxpemVPZmZzY3JlZW4oR0xFUzJDb250ZXh0
Kik7Ci0KLSAgICBXZWJHTEVTMkNvbnRleHQqIGdldFdlYkdMRVMyQ29udGV4dCgpIHsgcmV0dXJu
IG1faW1wbDsgfQotCi1wcml2YXRlOgotICAgIFdlYkdMRVMyQ29udGV4dCogbV9pbXBsOwotfTsK
LQotYm9vbCBHTEVTMkNvbnRleHRJbnRlcm5hbDo6aW5pdGlhbGl6ZU9uc2NyZWVuKFBhZ2UqIHBh
Z2UpCitQYXNzT3duUHRyPEdMRVMyQ29udGV4dEludGVybmFsPiBHTEVTMkNvbnRleHRJbnRlcm5h
bDo6Y3JlYXRlKFdlYkdMRVMyQ29udGV4dCogaW1wbCwgYm9vbCBvd25zKQogewotICAgIEFTU0VS
VChwYWdlKTsKLSAgICBXZWJWaWV3SW1wbCogd2ViVmlldyA9IFdlYlZpZXdJbXBsOjpmcm9tUGFn
ZShwYWdlKTsKLSAgICBtX2ltcGwgPSB3ZWJWaWV3LT5nbGVzMkNvbnRleHQoKTsKLSAgICBpZiAo
IW1faW1wbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWJvb2wgR0xFUzJDb250ZXh0SW50ZXJuYWw6OmluaXRpYWxpemVPZmZzY3JlZW4oR0xFUzJDb250
ZXh0KiBwYXJlbnQpCi17Ci0gICAgbV9pbXBsID0gd2ViS2l0Q2xpZW50KCktPmNyZWF0ZUdMRVMy
Q29udGV4dCgpOwotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFtX2ltcGwtPmluaXRpYWxpemUoMCwgcGFyZW50ID8gcGFyZW50LT5tX2ludGVybmFsLT5t
X2ltcGwgOiAwKSkgewotICAgICAgICBkZWxldGUgbV9pbXBsOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIFBhc3NPd25QdHI8R0xFUzJDb250ZXh0
SW50ZXJuYWw+IHJlc3VsdCA9IG5ldyBHTEVTMkNvbnRleHRJbnRlcm5hbChpbXBsLCBvd25zKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzT3duUHRyPEdMRVMyQ29udGV4dD4gR0xFUzJD
b250ZXh0OjpjcmVhdGVPbnNjcmVlbihQYWdlKiBwYWdlKQorUGFzc093blB0cjxHTEVTMkNvbnRl
eHQ+IEdMRVMyQ29udGV4dDo6Y3JlYXRlKFBhc3NPd25QdHI8R0xFUzJDb250ZXh0SW50ZXJuYWw+
IGludGVybmFsKQogewotICAgIEdMRVMyQ29udGV4dEludGVybmFsKiBpbnRlcm5hbCA9IG5ldyBH
TEVTMkNvbnRleHRJbnRlcm5hbCgpOwotICAgIGlmICghaW50ZXJuYWwtPmluaXRpYWxpemVPbnNj
cmVlbihwYWdlKSkgewotICAgICAgICBkZWxldGUgaW50ZXJuYWw7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KICAgICBQYXNzT3duUHRyPEdMRVMyQ29udGV4dD4gcmVzdWx0ID0gbmV3IEdMRVMy
Q29udGV4dCgpOwotICAgIHJlc3VsdC0+bV9pbnRlcm5hbC5zZXQoaW50ZXJuYWwpOworICAgIHJl
c3VsdC0+bV9pbnRlcm5hbCA9IGludGVybmFsOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBh
c3NPd25QdHI8R0xFUzJDb250ZXh0PiBHTEVTMkNvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbihHTEVT
MkNvbnRleHQqIHBhcmVudCkKK0dMRVMyQ29udGV4dDo6R0xFUzJDb250ZXh0KCkKIHsKLSAgICBH
TEVTMkNvbnRleHRJbnRlcm5hbCogaW50ZXJuYWwgPSBuZXcgR0xFUzJDb250ZXh0SW50ZXJuYWwo
KTsKLSAgICBpZiAoIWludGVybmFsLT5pbml0aWFsaXplT2Zmc2NyZWVuKHBhcmVudCkpIHsKLSAg
ICAgICAgZGVsZXRlIGludGVybmFsOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgUGFz
c093blB0cjxHTEVTMkNvbnRleHQ+IHJlc3VsdCA9IG5ldyBHTEVTMkNvbnRleHQoKTsKLSAgICBy
ZXN1bHQtPm1faW50ZXJuYWwuc2V0KGludGVybmFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci0KIEdMRVMyQ29udGV4dDo6fkdMRVMyQ29udGV4dCgpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0dMRVMyQ29udGV4dEludGVybmFsLmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvR0xFUzJDb250ZXh0SW50ZXJuYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZWI2MDI5YTAwMWZh
YTVlM2JlMzFiM2NmMmE4ZDNlYTQ0NGZlNDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0dMRVMyQ29udGV4dEludGVybmFsLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiR0xFUzJDb250ZXh0SW50ZXJuYWwuaCIKKworI2lu
Y2x1ZGUgIldlYkdMRVMyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dMRVMy
Q29udGV4dEludGVybmFsOjpHTEVTMkNvbnRleHRJbnRlcm5hbChXZWJLaXQ6OldlYkdMRVMyQ29u
dGV4dCogaW1wbCwgYm9vbCBvd25zKQorICAgIDogbV9pbXBsKGltcGwpCisgICAgLCBtX293bnMo
b3ducykKK3sKK30KKworR0xFUzJDb250ZXh0SW50ZXJuYWw6On5HTEVTMkNvbnRleHRJbnRlcm5h
bCgpCit7CisgICAgaWYgKG1fb3ducykKKyAgICAgICAgZGVsZXRlIG1faW1wbDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0dM
RVMyQ29udGV4dEludGVybmFsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0dMRVMyQ29udGV4dElu
dGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg0MDA1MDVlYzA2ZDc3MzZkODUyNmI0ZjhiMDE1ZWY1MjEy
MGMxMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR0xFUzJDb250ZXh0
SW50ZXJuYWwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR0xFUzJDb250ZXh0OworfQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEdMRVMyQ29udGV4dEludGVybmFsIHsKK3B1YmxpYzoKKyAg
ICAvLyBJZiAnb3ducycgaXMgc2V0IHRvIHRydWUsIHRoaXMgR0xFUzJDb250ZXh0SW50ZXJuYWwg
dGFrZXMgb3duZXJzaGlwIG9mIHRoZSBwYXNzZWQgaW4gV2ViS2l0OjpXZWJHTEVTMkNvbnRleHQu
CisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xFUzJDb250ZXh0SW50ZXJuYWw+IGNyZWF0ZShXZWJL
aXQ6OldlYkdMRVMyQ29udGV4dCogaW1wbCwgYm9vbCBvd25zKTsKKworICAgIFdlYktpdDo6V2Vi
R0xFUzJDb250ZXh0KiBnZXRXZWJHTEVTMkNvbnRleHQoKSB7IHJldHVybiBtX2ltcGw7IH0KKwor
ICAgIH5HTEVTMkNvbnRleHRJbnRlcm5hbCgpOworCitwcml2YXRlOgorICAgIEdMRVMyQ29udGV4
dEludGVybmFsKFdlYktpdDo6V2ViR0xFUzJDb250ZXh0KiBpbXBsLCBib29sIG93bnMpOworCisg
ICAgYm9vbCBtX293bnM7CisgICAgV2ViS2l0OjpXZWJHTEVTMkNvbnRleHQqIG1faW1wbDsKK307
CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZDFjYTcxZTZiMDZmZmVk
YTYxYTlhOTgyYTkwMDE1YmEzOTVjZGZlNC4uNmI5Yzg3YjM5MTQwN2QzYmQ4ZjI3ZTA1MmUzYzcz
YTVlMTJmOTkwMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTU0LDEwICs1
NCwxMiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgi
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR0xFUzJDb250ZXh0LmgiCisjaW5j
bHVkZSAiR0xFUzJDb250ZXh0SW50ZXJuYWwuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKLSNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCkBAIC0yMDU4LDcgKzIwNjAsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhY3RpdmUpIHsKLSAgICAgICAgbV9sYXllclJl
bmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUocGFnZSgpKTsKKyAgICAgICAg
bV9sYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoZ2V0T25zY3Jl
ZW5HTEVTMkNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2xheWVyUmVuZGVyZXItPmhhcmR3YXJl
Q29tcG9zaXRpbmcoKSkKICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZSB7CkBAIC0yMTMyLDYgKzIxMzQsMTggQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCkKIH0KICNlbmRpZiAvLyBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKK1Bhc3NPd25QdHI8V2ViQ29yZTo6R0xFUzJDb250
ZXh0PiBXZWJWaWV3SW1wbDo6Z2V0T25zY3JlZW5HTEVTMkNvbnRleHQoKQoreworICAgIHJldHVy
biBXZWJDb3JlOjpHTEVTMkNvbnRleHQ6OmNyZWF0ZShXZWJDb3JlOjpHTEVTMkNvbnRleHRJbnRl
cm5hbDo6Y3JlYXRlKGdsZXMyQ29udGV4dCgpLCBmYWxzZSkpOworfQorCitQYXNzT3duUHRyPFdl
YkNvcmU6OkdMRVMyQ29udGV4dD4gV2ViVmlld0ltcGw6OmdldE9mZnNjcmVlbkdMRVMyQ29udGV4
dCgpCit7CisgICAgV2ViR0xFUzJDb250ZXh0KiBjb250ZXh0ID0gd2ViS2l0Q2xpZW50KCktPmNy
ZWF0ZUdMRVMyQ29udGV4dCgpOworICAgIGNvbnRleHQtPmluaXRpYWxpemUoMCwgZ2xlczJDb250
ZXh0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpHTEVTMkNvbnRleHQ6OmNyZWF0ZShXZWJDb3Jl
OjpHTEVTMkNvbnRleHRJbnRlcm5hbDo6Y3JlYXRlKGNvbnRleHQsIHRydWUpKTsKK30KKwogLy8g
UmV0dXJucyB0aGUgR0xFUzIgY29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhpcyBWaWV3LiBJZiBv
bmUgZG9lc24ndCBleGlzdAogLy8gaXQgd2lsbCBnZXQgY3JlYXRlZCBmaXJzdC4KIFdlYkdMRVMy
Q29udGV4dCogV2ViVmlld0ltcGw6OmdsZXMyQ29udGV4dCgpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKaW5kZXggZGIyYTFkMjc2MWFjN2Q0NzAwNTg5MTlmN2NmNTFkMzQ1Y2NhYzBlZS4uMDFi
YzBmNDJhZTVkZjI0MTNmZWQ0MTkyZjRkYzBhZWU3Zjg3MGU0NSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaApAQCAtNTMsNiArNTMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q2hyb21pdW1EYXRhT2JqZWN0OwogY2xhc3MgRnJhbWU7CitjbGFzcyBHTEVTMkNvbnRleHQ7CiBj
bGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBLZXlib2FyZEV2
ZW50OwpAQCAtMTgzLDcgKzE4NCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29s
b3IpOwogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5z
aWduZWQgYWN0aW9uKTsKLSAgICB2aXJ0dWFsIFdlYkdMRVMyQ29udGV4dCogZ2xlczJDb250ZXh0
KCk7CiAKICAgICAvLyBXZWJWaWV3SW1wbAogCkBAIC0zMTQsNiArMzE0LDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpOwogICAgIHZvaWQgc2V0Um9vdEdy
YXBoaWNzTGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1MYXllciopOwogI2VuZGlmCisgICAgLy8gT25z
Y3JlZW4gY29udGV4dHMgZGlzcGxheSB0byB0aGUgc2NyZWVuIGFzc29jaWF0ZWQgd2l0aCB0aGlz
IHZpZXcuCisgICAgLy8gT2Zmc2NyZWVuIGNvbnRleHRzIHJlbmRlciBvZmZzY3JlZW4gYnV0IGNh
biBzaGFyZSByZXNvdXJjZXMgd2l0aCB0aGUKKyAgICAvLyBvbnNjcmVlbiBjb250ZXh0IGFuZCB0
aHVzIGNhbiBiZSBjb21wb3NpdGVkLgorICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6R0xFUzJDb250
ZXh0PiBnZXRPbnNjcmVlbkdMRVMyQ29udGV4dCgpOworICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6
R0xFUzJDb250ZXh0PiBnZXRPZmZzY3JlZW5HTEVTMkNvbnRleHQoKTsKKworICAgIC8vIFJldHVy
bnMgYW4gb25zY3JlZW4gY29udGV4dAorICAgIHZpcnR1YWwgV2ViR0xFUzJDb250ZXh0KiBnbGVz
MkNvbnRleHQoKTsKIAogICAgIFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBzZWxlY3RQb3B1cCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAuZ2V0KCk7IH0KIAo=
</data>
<flag name="review"
          id="49630"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="49633"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>