<?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>213022</bug_id>
          
          <creation_ts>2020-06-10 06:57:32 -0700</creation_ts>
          <short_desc>[WebXR] Add a preliminary implementation of XRWebGLLayer</short_desc>
          <delta_ts>2020-06-22 05:29:16 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>dino</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1661145</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-06-10 06:57:32 -0700</bug_when>
    <thetext>[WebXR] Add a preliminary implementation of XRWebGLLayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661148</commentid>
    <comment_count>1</comment_count>
      <attachid>401538</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-06-10 07:12:30 -0700</bug_when>
    <thetext>Created attachment 401538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663996</commentid>
    <comment_count>2</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-06-18 14:49:22 -0700</bug_when>
    <thetext>Ping reviewers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664279</commentid>
    <comment_count>3</comment_count>
      <attachid>401538</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-19 00:38:19 -0700</bug_when>
    <thetext>Comment on attachment 401538
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:66
&gt; +

Extra line here

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:78
&gt; +                // TODO: Initialize layer&apos;s resources or issue an OperationError.

Use FIXME instead of TODO

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:94
&gt; +    // TODO: implement this

Ditto.

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:120
&gt; +    m_isCompositionDisabled = m_session-&gt;mode() == XRSessionMode::Inline ? true : false;

I guess you don&apos;t need the ? true : false

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:125
&gt; +        m_antialias = init.antialias;

This is duplicated, I would probably remove the previous one.

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:129
&gt; +        computeRecommendedWebGLFramebufferResolution(recommendedSize);

computeRecommendedWebGLFramebufferResolution could return IntSize instead of using a parameter.

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:137
&gt; +        // TODO: create a proper opaque framebuffer.

FIXME

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:207
&gt; +    IntSize nativeSize;
&gt; +    computeNativeWebGLFramebufferResolution(nativeSize);

Better use return value instead of parameter.

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:210
&gt; +    IntSize recommendedSize;
&gt; +    computeRecommendedWebGLFramebufferResolution(recommendedSize);

And here too. Unless those they really need to receive an existing IntSize to be modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664355</commentid>
    <comment_count>4</comment_count>
      <attachid>401538</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-06-19 07:46:42 -0700</bug_when>
    <thetext>Comment on attachment 401538
Patch

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

Thanks for the review!

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:78
&gt;&gt; +                // TODO: Initialize layer&apos;s resources or issue an OperationError.
&gt; 
&gt; Use FIXME instead of TODO

OK

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:120
&gt;&gt; +    m_isCompositionDisabled = m_session-&gt;mode() == XRSessionMode::Inline ? true : false;
&gt; 
&gt; I guess you don&apos;t need the ? true : false

Stupid mistake indeed.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:125
&gt;&gt; +        m_antialias = init.antialias;
&gt; 
&gt; This is duplicated, I would probably remove the previous one.

Right. I&apos;ll also fix the weird characters in the comment.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:129
&gt;&gt; +        computeRecommendedWebGLFramebufferResolution(recommendedSize);
&gt; 
&gt; computeRecommendedWebGLFramebufferResolution could return IntSize instead of using a parameter.

Yes, compiler must be able to do the return value optimization so I agree it&apos;s better to return it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664993</commentid>
    <comment_count>5</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-06-22 05:28:17 -0700</bug_when>
    <thetext>Committed r263346: &lt;https://trac.webkit.org/changeset/263346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664994</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-22 05:29:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/64593229&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401538</attachid>
            <date>2020-06-10 07:12:30 -0700</date>
            <delta_ts>2020-06-19 00:38:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213022-20200610161228.patch</filename>
            <type>text/plain</type>
            <size>18316</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTljOGNlNWFmYWI4NTA1
NWE3ODZjZjlhNzc4YWY3MDkwNjMwOTc5MC4uNWRhYjMwNWQ3MWNjZTkzYmY2OGVjYTgyNWViNWUy
YTM5OWMxM2FmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA2LTEwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
QWRkIGEgcHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2YgWFJXZWJHTExheWVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwMjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHByZWxpbWlu
YXJ5IGltcGxlbWVudGF0aW9uIG9mIFhSV2ViR0xMYXllci4gSXQgZG9lcyBub3QgaGF2ZSBhbnkg
ZnVuY3Rpb25hbGl0eSBhdCB0aGUgbW9tZW50IHNvCisgICAgICAgIGl0IGNhbm5vdCBiZSB1c2Vk
IHRvIHJlbmRlciBXZWJYUiBzdHVmZi4gVGhpcyBwYXRjaCBhZGRzIGFsbCB0aGUgbWFjaGluZXJ5
IHJlcXVpcmVkIHRvIGNyZWF0ZSBhbmQgcHJvcGVybHkKKyAgICAgICAgaW5pdGlhbGl6ZSB0aGUg
bGF5ZXIgYWNjb3JkaW5nIHRvIHRoZSBzcGVjLgorCisgICAgICAgIFR3byBuZXcgd3B0IHRlc3Rz
IGFyZSBwYXNzaW5nIG5vdy4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
Lmg6IEV4cG9zZSBzZXNzaW9uIG1vZGUuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldl
YkdMTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVyOjpjcmVhdGUp
OiBJbXBsZW1lbnRlZCBzcGVjIGZvciBYUldlYkdMTGF5ZXIgY3JlYXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmNvbXB1dGVOYXRpdmVXZWJHTEZyYW1lYnVmZmVyUmVz
b2x1dGlvbik6IEFkZGVkIHdpdGggbW9jayBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSV2ViR0xMYXllcjo6Y29tcHV0ZVJlY29tbWVuZGVkV2ViR0xGcmFtZWJ1ZmZlclJl
c29sdXRpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6V2Vi
WFJXZWJHTExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6ZnJhbWVi
dWZmZXIgY29uc3QpOiBSZXR1cm5lZCB0eXBlIHNob3VsZCBiZSBhIHBvaW50ZXIuCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmZyYW1lYnVmZmVyV2lkdGggY29uc3QpOiBSZXR1
cm4gZnJhbWVidWZmZXIgd2lkdGggaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgcmV0dXJuCisgICAg
ICAgIHRoZSBiYXNlIGNvbnRleHQgd2lkdGguCisgICAgICAgIChXZWJDb3JlOjpXZWJYUldlYkdM
TGF5ZXI6OmZyYW1lYnVmZmVySGVpZ2h0IGNvbnN0KTogRGl0dG8gYnV0IHdpdGggaGVpZ2h0cy4K
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6Z2V0TmF0aXZlRnJhbWVidWZmZXJT
Y2FsZUZhY3Rvcik6IEltcGxlbWVudGVkLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJX
ZWJHTExheWVyLmg6IE5ldyBtZXRob2RzIGFuZCB0eXBlIGFkanVzdG1lbnRzLgorCiAyMDIwLTA2
LTA1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtXZWJYUl0gUmVmYWN0b3IgT3BlblhSIHBsYXRmb3JtIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IGJjZGIzY2E3OGZiNWVhMDE4Yzc1OWNj
MjI2MjhmZWZjNjY3N2ZlZjcuLmY0NmM5NmRmNzlmNTA1ZDI5NTc0YWI3MjU1YmNiNjA5ZjIzYmY4
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAt
ODAsNiArODAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmRlZDsgfQogCisgICAgWFJTZXNzaW9uTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2RlOyB9CisKIHByaXZhdGU6CiAgICAgV2ViWFJTZXNzaW9uKERvY3VtZW50JiwgV2ViWFJTeXN0
ZW0mLCBYUlNlc3Npb25Nb2RlLCBQbGF0Zm9ybVhSOjpEZXZpY2UmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCmluZGV4IDlhNzhlOGIw
YjY3ZDAzMTgxNGE5ZWVhZDZkODIyYzU2YTg3ZjA2YTcuLjhkMWRkZWVhMjg0YmE5ZDRmYWNmZDU5
YTNkOWFiYWMwNTA0OWFiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJXZWJHTExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSV2ViR0xMYXllci5jcHAKQEAgLTI4LDY4ICsyOCwxMzQgQEAKIAogI2lmIEVOQUJMRShX
RUJYUikKIAorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVy
LmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjaWYgRU5BQkxFKFdFQkdM
MikKICNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAjZW5kaWYKKyNpbmNsdWRl
ICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiV2ViWFJWaWV3cG9ydC5oIgogI2luY2x1ZGUgIlhSV2ViR0xMYXllckluaXQu
aCIKKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeGNl
cHRpb25PcjxSZWY8V2ViWFJXZWJHTExheWVyPj4gV2ViWFJXZWJHTExheWVyOjpjcmVhdGUoY29u
c3QgV2ViWFJTZXNzaW9uJiBzZXNzaW9uLCBXZWJYUlJlbmRlcmluZ0NvbnRleHQmJiBjb250ZXh0
LCBjb25zdCBYUldlYkdMTGF5ZXJJbml0JiBpbml0KQorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2Vi
LmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhyd2ViZ2xsYXllci14cndlYmdsbGF5ZXIKK0V4Y2VwdGlv
bk9yPFJlZjxXZWJYUldlYkdMTGF5ZXI+PiBXZWJYUldlYkdMTGF5ZXI6OmNyZWF0ZShXZWJYUlNl
c3Npb24mIHNlc3Npb24sIFdlYlhSUmVuZGVyaW5nQ29udGV4dCYmIGNvbnRleHQsIGNvbnN0IFhS
V2ViR0xMYXllckluaXQmIGluaXQpCiB7Ci0gICAgLy8gVGhlIFhSV2ViR0xMYXllcihzZXNzaW9u
LCBjb250ZXh0LCBsYXllckluaXQpIGNvbnN0cnVjdG9yIE1VU1QgcGVyZm9ybSB0aGUgZm9sbG93
aW5nIHN0ZXBzIHdoZW4gaW52b2tlZDoKLSAgICAvLyAgIDEuIExldCBsYXllciBiZSBhIG5ldyBY
UldlYkdMTGF5ZXIKLQotICAgIC8vICAgMi4gSWYgc2Vzc2lvbuKAmXMgZW5kZWQgdmFsdWUgaXMg
dHJ1ZSwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgor
ICAgIC8vIDEuIExldCBsYXllciBiZSBhIG5ldyBYUldlYkdMTGF5ZXIKKyAgICAvLyAyLiBJZiBz
ZXNzaW9u4oCZcyBlbmRlZCB2YWx1ZSBpcyB0cnVlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJv
ciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKHNlc3Npb24uZW5kZWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICAvLyAgIDMu
IElmIGNvbnRleHQgaXMgbG9zdCwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0
IHRoZXNlIHN0ZXBzLgotICAgIC8vICAgNC4gSWYgY29udGV4dOKAmXMgWFIgY29tcGF0aWJsZSBi
b29sZWFuIGlzIGZhbHNlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCi0gICAgLy8gRklYTUU6IFRPRE8KLQotICAgIC8vICAgNS4gSW5pdGlhbGl6ZSBs
YXllcuKAmXMgY29udGV4dCB0byBjb250ZXh0LgotICAgIC8vICAgNi4gSW5pdGlhbGl6ZSBsYXll
cuKAmXMgYW50aWFsaWFzIHRvIGxheWVySW5pdOKAmXMgYW50aWFsaWFzIHZhbHVlLgotICAgIC8v
ICAgNy4gSWYgbGF5ZXJJbml04oCZcyBpZ25vcmVEZXB0aFZhbHVlcyB2YWx1ZSBpcyBmYWxzZSBh
bmQgdGhlIFhSIENvbXBvc2l0b3Igd2lsbCBtYWtlIHVzZSBvZiBkZXB0aCB2YWx1ZXMsIEluaXRp
YWxpemUgbGF5ZXLigJlzIGlnbm9yZURlcHRoVmFsdWVzIHRvIGZhbHNlLgotICAgIC8vICAgOC4g
RWxzZSBJbml0aWFsaXplIGxheWVy4oCZcyBpZ25vcmVEZXB0aFZhbHVlcyB0byB0cnVlCi0gICAg
Ly8gICA5LiBJbml0aWFsaXplIGxheWVy4oCZcyBmcmFtZWJ1ZmZlciB0byBhIG5ldyBvcGFxdWUg
ZnJhbWVidWZmZXIgY3JlYXRlZCB3aXRoIGNvbnRleHQuCi0gICAgLy8gICAxMC4gSW5pdGlhbGl6
ZSB0aGUgbGF5ZXLigJlzIHN3YXAgY2hhaW4uCi0gICAgLy8gICAxMS4gSWYgbGF5ZXLigJlzIHN3
YXAgY2hhaW4gd2FzIHVuYWJsZSB0byBiZSBjcmVhdGVkIGZvciBhbnkgcmVhc29uLCB0aHJvdyBh
biBPcGVyYXRpb25FcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgLy8gRklYTUU6IFRP
RE8KLQotICAgIC8vICAgMTIuIFJldHVybiBsYXllci4KLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJYUldlYkdMTGF5ZXIoc2Vzc2lvbiwgV1RGTW92ZShjb250ZXh0KSwgaW5pdCkpOwotfQot
Ci1XZWJYUldlYkdMTGF5ZXI6OldlYlhSV2ViR0xMYXllcihjb25zdCBXZWJYUlNlc3Npb24mLCBX
ZWJYUlJlbmRlcmluZ0NvbnRleHQmJiBjb250ZXh0LCBjb25zdCBYUldlYkdMTGF5ZXJJbml0JiBp
bml0KQotICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCi0gICAgLCBtX2FudGlhbGlh
cyhpbml0LmFudGlhbGlhcykKLSAgICAsIG1faWdub3JlRGVwdGhWYWx1ZXMoaW5pdC5pZ25vcmVE
ZXB0aFZhbHVlcykKLXsKLSAgICBtX2ZyYW1lYnVmZmVyLm9iamVjdCA9IFdURjo6c3dpdGNoT24o
bV9jb250ZXh0LAotICAgICAgICBbXShjb25zdCBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0
PiYgY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgUmVmUHRyPFdlYkdMRnJhbWVidWZm
ZXI+IGZyYW1lQnVmZmVyID0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y3JlYXRlKCpjb250ZXh0KTsKLSAg
ICAgICAgICAgIHJldHVybiBmcmFtZUJ1ZmZlcjsKLSAgICAgICAgfSwKLSNpZiBFTkFCTEUoV0VC
R0wyKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4mIGNv
bnRleHQpCisgICAgLy8gMy4gSWYgY29udGV4dCBpcyBsb3N0LCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgLy8gNC4gSWYgc2Vzc2lvbiBpcyBh
biBpbW1lcnNpdmUgc2Vzc2lvbiBhbmQgY29udGV4dOKAmXMgWFIgY29tcGF0aWJsZSBib29sZWFu
IGlzIGZhbHNlLCB0aHJvdworICAgIC8vICAgIGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb250ZXh0LAorICAgICAg
ICBbJl0oY29uc3QgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+JiBiYXNlQ29udGV4
dCkgLT4gRXhjZXB0aW9uT3I8UmVmPFdlYlhSV2ViR0xMYXllcj4+CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBmcmFtZUJ1ZmZlciA9IFdlYkdMRnJhbWVi
dWZmZXI6OmNyZWF0ZSgqY29udGV4dCk7Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWVCdWZmZXI7
CisgICAgICAgICAgICBpZiAoYmFzZUNvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgICAg
ICAgICAgYXV0byBtb2RlID0gc2Vzc2lvbi5tb2RlKCk7CisgICAgICAgICAgICBpZiAoKG1vZGUg
PT0gWFJTZXNzaW9uTW9kZTo6SW1tZXJzaXZlQXIgfHwgbW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJ
bW1lcnNpdmVWcikgJiYgIWJhc2VDb250ZXh0LT5pc1hSQ29tcGF0aWJsZSgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisKKyAgICAg
ICAgICAgIC8vIDUuIEluaXRpYWxpemUgbGF5ZXLigJlzIGNvbnRleHQgdG8gY29udGV4dC4gKHNl
ZSBjb25zdHJ1Y3RvcikKKyAgICAgICAgICAgIC8vIDYuIEluaXRpYWxpemUgbGF5ZXLigJlzIHNl
c3Npb24gdG8gc2Vzc2lvbi4gKHNlZSBjb25zdHJ1Y3RvcikKKyAgICAgICAgICAgIC8vIDcuIElu
aXRpYWxpemUgbGF5ZXLigJlzIGlnbm9yZURlcHRoVmFsdWVzIGFzIGZvbGxvd3MuIChzZWUgY29u
c3RydWN0b3IpCisgICAgICAgICAgICAvLyA4LiBJbml0aWFsaXplIGxheWVy4oCZcyBjb21wb3Np
dGlvbiBkaXNhYmxlZCBib29sZWFuIGFzIGZvbGxvd3MuIChzZWUgY29uc3RydWN0b3IpCisgICAg
ICAgICAgICAvLyA5LiAoc2VlIGNvbnN0cnVjdG9yIGV4Y2VwdCBmb3IgdGhlIHJlc291cmNlcyBp
bml0aWFsaXphdGlvbiBzdGVwIHdoaWNoIGlzIGhhbmRsZWQgaW4gdGhlIGlmIGJsb2NrIGJlbG93
KQorICAgICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcgV2ViWFJXZWJHTExheWVy
KHNlc3Npb24sIFdURk1vdmUoY29udGV4dCksIGluaXQpKTsKKworICAgICAgICAgICAgaWYgKGxh
eWVyLT5tX2lzQ29tcG9zaXRpb25EaXNhYmxlZCkgeworICAgICAgICAgICAgICAgIC8vIDkuNC4g
QWxsb2NhdGUgYW5kIGluaXRpYWxpemUgcmVzb3VyY2VzIGNvbXBhdGlibGUgd2l0aCBzZXNzaW9u
4oCZcyBYUiBkZXZpY2UsIGluY2x1ZGluZyBHUFUgYWNjZXNzaWJsZSBtZW1vcnkgYnVmZmVycywK
KyAgICAgICAgICAgICAgICAvLyAgICAgIGFzIHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhlIGNvbXBv
c2l0aW5nIG9mIGxheWVyLgorICAgICAgICAgICAgICAgIC8vIDkuNS4gSWYgbGF5ZXLigJlzIHJl
c291cmNlcyB3ZXJlIHVuYWJsZSB0byBiZSBjcmVhdGVkIGZvciBhbnkgcmVhc29uLCB0aHJvdyBh
biBPcGVyYXRpb25FcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgICAgICAgICAgICAg
Ly8gVE9ETzogSW5pdGlhbGl6ZSBsYXllcidzIHJlc291cmNlcyBvciBpc3N1ZSBhbiBPcGVyYXRp
b25FcnJvci4KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gMTAuIFJldHVybiBsYXll
ci4KKyAgICAgICAgICAgIHJldHVybiBsYXllcjsKICAgICAgICAgfSwKLSNlbmRpZgogICAgICAg
ICBbXShXVEY6Ok1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogICAgICAgICB9CiAgICAgKTsKIH0KIAorLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jbmF0aXZlLXdlYmdsLWZyYW1lYnVm
ZmVyLXJlc29sdXRpb24KK3ZvaWQgV2ViWFJXZWJHTExheWVyOjpjb21wdXRlTmF0aXZlV2ViR0xG
cmFtZWJ1ZmZlclJlc29sdXRpb24oSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICAvLyBUT0RPOiBpbXBs
ZW1lbnQgdGhpcworICAgIHNpemUuc2V0V2lkdGgoMSk7CisgICAgc2l6ZS5zZXRIZWlnaHQoMSk7
Cit9CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3JlY29tbWVu
ZGVkLXdlYmdsLWZyYW1lYnVmZmVyLXJlc29sdXRpb24KK3ZvaWQgV2ViWFJXZWJHTExheWVyOjpj
b21wdXRlUmVjb21tZW5kZWRXZWJHTEZyYW1lYnVmZmVyUmVzb2x1dGlvbihJbnRTaXplJiBzaXpl
KQoreworICAgIGNvbXB1dGVOYXRpdmVXZWJHTEZyYW1lYnVmZmVyUmVzb2x1dGlvbihzaXplKTsK
K30KKworV2ViWFJXZWJHTExheWVyOjpXZWJYUldlYkdMTGF5ZXIoV2ViWFJTZXNzaW9uJiBzZXNz
aW9uLCBXZWJYUlJlbmRlcmluZ0NvbnRleHQmJiBjb250ZXh0LCBjb25zdCBYUldlYkdMTGF5ZXJJ
bml0JiBpbml0KQorICAgIDogbV9zZXNzaW9uKG1ha2VSZWYoc2Vzc2lvbikpCisgICAgLCBtX2Nv
bnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fYW50aWFsaWFzKGluaXQuYW50aWFsaWFz
KQoreworICAgIC8vIDcuIEluaXRpYWxpemUgbGF5ZXLigJlzIGlnbm9yZURlcHRoVmFsdWVzIGFz
IGZvbGxvd3M6CisgICAgLy8gICA3LjEgSWYgbGF5ZXJJbml04oCZcyBpZ25vcmVEZXB0aFZhbHVl
cyB2YWx1ZSBpcyBmYWxzZSBhbmQgdGhlIFhSIENvbXBvc2l0b3Igd2lsbCBtYWtlIHVzZSBvZiBk
ZXB0aCB2YWx1ZXMsCisgICAgLy8gICAgICAgSW5pdGlhbGl6ZSBsYXllcuKAmXMgaWdub3JlRGVw
dGhWYWx1ZXMgdG8gZmFsc2UuCisgICAgLy8gICA3LjIuIEVsc2UgSW5pdGlhbGl6ZSBsYXllcuKA
mXMgaWdub3JlRGVwdGhWYWx1ZXMgdG8gdHJ1ZQorICAgIC8vIFRPRE86IGFzayBYUiBjb21wb3Np
dG9yIGZvciBkZXB0aCB2YWx1ZSB1c2FnZXMKKyAgICBtX2lnbm9yZURlcHRoVmFsdWVzID0gaW5p
dC5pZ25vcmVEZXB0aFZhbHVlczsKKworICAgIC8vIDguIEluaXRpYWxpemUgbGF5ZXLigJlzIGNv
bXBvc2l0aW9uIGRpc2FibGVkIGJvb2xlYW4gYXMgZm9sbG93czoKKyAgICAvLyAgSWYgc2Vzc2lv
biBpcyBhbiBpbmxpbmUgc2Vzc2lvbiAtPiBJbml0aWFsaXplIGxheWVy4oCZcyBjb21wb3NpdGlv
biBkaXNhYmxlZCB0byB0cnVlCisgICAgLy8gIE90aGVyd2lzZSAtPiBJbml0aWFsaXplIGxheWVy
4oCZcyBjb21wb3NpdGlvbiBkaXNhYmxlZCBib29sZWFuIHRvIGZhbHNlCisgICAgbV9pc0NvbXBv
c2l0aW9uRGlzYWJsZWQgPSBtX3Nlc3Npb24tPm1vZGUoKSA9PSBYUlNlc3Npb25Nb2RlOjpJbmxp
bmUgPyB0cnVlIDogZmFsc2U7CisKKyAgICAvLyA5LiBJZiBsYXllcuKAmXMgY29tcG9zaXRpb24g
ZGlzYWJsZWQgYm9vbGVhbiBpcyBmYWxzZToKKyAgICBpZiAobV9pc0NvbXBvc2l0aW9uRGlzYWJs
ZWQpIHsKKyAgICAgICAgLy8gIDEuIEluaXRpYWxpemUgbGF5ZXLigJlzIGFudGlhbGlhcyB0byBs
YXllckluaXTigJlzIGFudGlhbGlhcyB2YWx1ZS4KKyAgICAgICAgbV9hbnRpYWxpYXMgPSBpbml0
LmFudGlhbGlhczsKKworICAgICAgICAvLyAgMi4gTGV0IGZyYW1lYnVmZmVyU2l6ZSBiZSB0aGUg
cmVjb21tZW5kZWQgV2ViR0wgZnJhbWVidWZmZXIgcmVzb2x1dGlvbiBtdWx0aXBsaWVkIGJ5IGxh
eWVySW5pdOKAmXMgZnJhbWVidWZmZXJTY2FsZUZhY3Rvci4KKyAgICAgICAgSW50U2l6ZSByZWNv
bW1lbmRlZFNpemU7CisgICAgICAgIGNvbXB1dGVSZWNvbW1lbmRlZFdlYkdMRnJhbWVidWZmZXJS
ZXNvbHV0aW9uKHJlY29tbWVuZGVkU2l6ZSk7CisgICAgICAgIG1fZnJhbWVidWZmZXIud2lkdGgg
PSByZWNvbW1lbmRlZFNpemUud2lkdGgoKSAqIGluaXQuZnJhbWVidWZmZXJTY2FsZUZhY3RvcjsK
KyAgICAgICAgbV9mcmFtZWJ1ZmZlci5oZWlnaHQgPSByZWNvbW1lbmRlZFNpemUuaGVpZ2h0KCkg
KiBpbml0LmZyYW1lYnVmZmVyU2NhbGVGYWN0b3I7CisKKyAgICAgICAgLy8gIDMuIEluaXRpYWxp
emUgbGF5ZXLigJlzIGZyYW1lYnVmZmVyIHRvIGEgbmV3IG9wYXF1ZSBmcmFtZWJ1ZmZlciB3aXRo
IHRoZSBkaW1lbnNpb25zIGZyYW1lYnVmZmVyU2l6ZQorICAgICAgICAvLyAgICAgICBjcmVhdGVk
IHdpdGggY29udGV4dCwgc2Vzc2lvbiBpbml0aWFsaXplZCB0byBzZXNzaW9uLCBhbmQgbGF5ZXJJ
bml04oCZcyBkZXB0aCwgc3RlbmNpbCwgYW5kIGFscGhhIHZhbHVlcy4KKyAgICAgICAgLy8gRm9y
IHN0ZXBzIDQgJiA1IHNlZSB0aGUgY3JlYXRlKCkgbWV0aG9kIGFzIHJlc291cmNlcyBpbml0aWFs
aXphdGlvbiBpcyBoYW5kbGVkIG91dHNpZGUgdGhlIGNvbnN0cnVjdG9yIGFzIGl0IG1pZ2h0IHRy
aWdnZXIKKyAgICAgICAgLy8gYW4gT3BlcmF0aW9uRXJyb3IuCisgICAgICAgIC8vIFRPRE86IGNy
ZWF0ZSBhIHByb3BlciBvcGFxdWUgZnJhbWVidWZmZXIuCisgICAgICAgIG1fZnJhbWVidWZmZXIu
b2JqZWN0ID0gV1RGOjpzd2l0Y2hPbihtX2NvbnRleHQsCisgICAgICAgICAgICBbXShjb25zdCBS
ZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4mIGJhc2VDb250ZXh0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGUoKmJh
c2VDb250ZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyAxLiBJbml0aWFsaXplIGxheWVy4oCZcyBhbnRpYWxpYXMgdG8gbGF5ZXLigJlzIGNv
bnRleHQncyBhY3R1YWwgY29udGV4dCBwYXJhbWV0ZXJzIGFudGlhbGlhcyB2YWx1ZS4KKyAgICAg
ICAgbV9hbnRpYWxpYXMgPSBXVEY6OnN3aXRjaE9uKG1fY29udGV4dCwKKyAgICAgICAgICAgIFtd
KGNvbnN0IFJlZlB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiYgY29udGV4dCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dC0+
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZXMudmFsdWUoKS5hbnRpYWxpYXM7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICAvLyAyLiBJbml0aWFsaXplIGxheWVy
4oCZcyBmcmFtZWJ1ZmZlciB0byBudWxsLgorICAgICAgICBtX2ZyYW1lYnVmZmVyLm9iamVjdCA9
IG51bGxwdHI7CisgICAgfQorfQorCiBXZWJYUldlYkdMTGF5ZXI6On5XZWJYUldlYkdMTGF5ZXIo
KSA9IGRlZmF1bHQ7CiAKIGJvb2wgV2ViWFJXZWJHTExheWVyOjphbnRpYWxpYXMoKSBjb25zdApA
QCAtMTAyLDE5ICsxNjgsMjkgQEAgYm9vbCBXZWJYUldlYkdMTGF5ZXI6Omlnbm9yZURlcHRoVmFs
dWVzKCkgY29uc3QKICAgICByZXR1cm4gbV9pZ25vcmVEZXB0aFZhbHVlczsKIH0KIAotY29uc3Qg
V2ViR0xGcmFtZWJ1ZmZlciYgV2ViWFJXZWJHTExheWVyOjpmcmFtZWJ1ZmZlcigpIGNvbnN0CitX
ZWJHTEZyYW1lYnVmZmVyKiBXZWJYUldlYkdMTGF5ZXI6OmZyYW1lYnVmZmVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKm1fZnJhbWVidWZmZXIub2JqZWN0OworICAgIHJldHVybiBtX2ZyYW1lYnVm
ZmVyLm9iamVjdC5nZXQoKTsKIH0KIAogdW5zaWduZWQgV2ViWFJXZWJHTExheWVyOjpmcmFtZWJ1
ZmZlcldpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZWJ1ZmZlci53aWR0aDsKKyAg
ICBpZiAobV9mcmFtZWJ1ZmZlci5vYmplY3QpCisgICAgICAgIHJldHVybiBtX2ZyYW1lYnVmZmVy
LndpZHRoOworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fY29udGV4dCwKKyAgICAgICAgWyZd
KGNvbnN0IFJlZlB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiYgYmFzZUNvbnRleHQpIHsK
KyAgICAgICAgICAgIHJldHVybiBiYXNlQ29udGV4dC0+ZHJhd2luZ0J1ZmZlcldpZHRoKCk7Cisg
ICAgICAgIH0pOwogfQogCiB1bnNpZ25lZCBXZWJYUldlYkdMTGF5ZXI6OmZyYW1lYnVmZmVySGVp
Z2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZWJ1ZmZlci5oZWlnaHQ7CisgICAgaWYg
KG1fZnJhbWVidWZmZXIub2JqZWN0KQorICAgICAgICByZXR1cm4gbV9mcmFtZWJ1ZmZlci5oZWln
aHQ7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZXh0LAorICAgICAgICBbJl0oY29u
c3QgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+JiBiYXNlQ29udGV4dCkgeworICAg
ICAgICAgICAgcmV0dXJuIGJhc2VDb250ZXh0LT5kcmF3aW5nQnVmZmVySGVpZ2h0KCk7CisgICAg
ICAgIH0pOwogfQogCiBSZWZQdHI8V2ViWFJWaWV3cG9ydD4gV2ViWFJXZWJHTExheWVyOjpnZXRW
aWV3cG9ydChjb25zdCBXZWJYUlZpZXcmKQpAQCAtMTIyLDkgKzE5OCwxOSBAQCBSZWZQdHI8V2Vi
WFJWaWV3cG9ydD4gV2ViWFJXZWJHTExheWVyOjpnZXRWaWV3cG9ydChjb25zdCBXZWJYUlZpZXcm
KQogICAgIHJldHVybiB7IH07CiB9CiAKLWRvdWJsZSBXZWJYUldlYkdMTGF5ZXI6OmdldE5hdGl2
ZUZyYW1lYnVmZmVyU2NhbGVGYWN0b3IoY29uc3QgV2ViWFJTZXNzaW9uJikKK2RvdWJsZSBXZWJY
UldlYkdMTGF5ZXI6OmdldE5hdGl2ZUZyYW1lYnVmZmVyU2NhbGVGYWN0b3IoY29uc3QgV2ViWFJT
ZXNzaW9uJiBzZXNzaW9uKQogewotICAgIHJldHVybiAxLjA7CisgICAgaWYgKHNlc3Npb24uZW5k
ZWQoKSkKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIEludFNpemUgbmF0aXZlU2l6ZTsKKyAg
ICBjb21wdXRlTmF0aXZlV2ViR0xGcmFtZWJ1ZmZlclJlc29sdXRpb24obmF0aXZlU2l6ZSk7CisK
KyAgICBJbnRTaXplIHJlY29tbWVuZGVkU2l6ZTsKKyAgICBjb21wdXRlUmVjb21tZW5kZWRXZWJH
TEZyYW1lYnVmZmVyUmVzb2x1dGlvbihyZWNvbW1lbmRlZFNpemUpOworCisgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighcmVjb21tZW5kZWRTaXplLmlzWmVybygp
KTsKKyAgICByZXR1cm4gKG5hdGl2ZVNpemUgLyByZWNvbW1lbmRlZFNpemUpLndpZHRoKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSV2ViR0xMYXllci5oCmluZGV4IDZjODQ3ODhiYTVjYjcxMmFmMWQ5YjI1YzUwNmYw
M2RmODNhZTFiMmUuLjU3NDYwZGUyZDEwMDQxMGFkMjAxNzk5ZDZmOTc2MDIzYTYyYTM0NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaApAQCAt
MzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEludFNpemU7CiBj
bGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwogI2lm
IEVOQUJMRShXRUJHTDIpCkBAIC00OCw3ICs0OSw3IEBAIHN0cnVjdCBYUldlYkdMTGF5ZXJJbml0
OwogCiBjbGFzcyBXZWJYUldlYkdMTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUldlYkdM
TGF5ZXI+IHsKIHB1YmxpYzoKLSAgICAKKwogICAgIHVzaW5nIFdlYlhSUmVuZGVyaW5nQ29udGV4
dCA9IFdURjo6VmFyaWFudDwKICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4K
ICNpZiBFTkFCTEUoV0VCR0wyKQpAQCAtNTYsMTMgKzU3LDEzIEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgID47CiAKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYlhSV2ViR0xMYXllcj4+IGNy
ZWF0ZShjb25zdCBXZWJYUlNlc3Npb24mLCBXZWJYUlJlbmRlcmluZ0NvbnRleHQmJiwgY29uc3Qg
WFJXZWJHTExheWVySW5pdCYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2ViWFJXZWJH
TExheWVyPj4gY3JlYXRlKFdlYlhSU2Vzc2lvbiYsIFdlYlhSUmVuZGVyaW5nQ29udGV4dCYmLCBj
b25zdCBYUldlYkdMTGF5ZXJJbml0Jik7CiAgICAgfldlYlhSV2ViR0xMYXllcigpOwogCiAgICAg
Ym9vbCBhbnRpYWxpYXMoKSBjb25zdDsKICAgICBib29sIGlnbm9yZURlcHRoVmFsdWVzKCkgY29u
c3Q7CiAKLSAgICBjb25zdCBXZWJHTEZyYW1lYnVmZmVyJiBmcmFtZWJ1ZmZlcigpIGNvbnN0Owor
ICAgIFdlYkdMRnJhbWVidWZmZXIqIGZyYW1lYnVmZmVyKCkgY29uc3Q7CiAgICAgdW5zaWduZWQg
ZnJhbWVidWZmZXJXaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGZyYW1lYnVmZmVySGVpZ2h0
KCkgY29uc3Q7CiAKQEAgLTcxLDExICs3MiwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGRvdWJs
ZSBnZXROYXRpdmVGcmFtZWJ1ZmZlclNjYWxlRmFjdG9yKGNvbnN0IFdlYlhSU2Vzc2lvbiYpOwog
CiBwcml2YXRlOgotICAgIFdlYlhSV2ViR0xMYXllcihjb25zdCBXZWJYUlNlc3Npb24mLCBXZWJY
UlJlbmRlcmluZ0NvbnRleHQmJiwgY29uc3QgWFJXZWJHTExheWVySW5pdCYpOworICAgIFdlYlhS
V2ViR0xMYXllcihXZWJYUlNlc3Npb24mLCBXZWJYUlJlbmRlcmluZ0NvbnRleHQmJiwgY29uc3Qg
WFJXZWJHTExheWVySW5pdCYpOworCisgICAgc3RhdGljIHZvaWQgY29tcHV0ZU5hdGl2ZVdlYkdM
RnJhbWVidWZmZXJSZXNvbHV0aW9uKEludFNpemUmKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRl
UmVjb21tZW5kZWRXZWJHTEZyYW1lYnVmZmVyUmVzb2x1dGlvbihJbnRTaXplJik7CiAKKyAgICBS
ZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgV2ViWFJSZW5kZXJpbmdDb250ZXh0IG1f
Y29udGV4dDsKICAgICBib29sIG1fYW50aWFsaWFzIHsgZmFsc2UgfTsKICAgICBib29sIG1faWdu
b3JlRGVwdGhWYWx1ZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0NvbXBvc2l0aW9uRGlzYWJs
ZWQgeyBmYWxzZSB9OwogCiAgICAgc3RydWN0IHsKICAgICAgICAgUmVmUHRyPFdlYkdMRnJhbWVi
dWZmZXI+IG9iamVjdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNTkzNGMzYWFkMWNhNmUyY2EwODhmYjU0YWQzYzE0OTIx
OWEyZjAxLi5hYWVlZjRjZGZjOWJjNmU2MWUwOGViYjAyYzlmNTE3YWQ4NzY2MWFiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMjAtMDYtMTAgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFy
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dlYlhSXSBBZGQgYSBwcmVsaW1pbmFyeSBpbXBsZW1l
bnRhdGlvbiBvZiBYUldlYkdMTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMzAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnM6IEFkZGVkIDIg
bW9yZSB0ZXN0cyB0aGF0IGFyZSBwYXNzaW5nIG5vdy4KKwogMjAyMC0wNi0xMCAgRGllZ28gUGlu
byBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gR2FyZGVu
aW5nLCB1cGRhdGUgZXhwZWN0YXRpb25zIGFmdGVyIHIyNjI4MzQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCmluZGV4IGFjYWU1YWRhNGZhMTYxODgwZWU5ZTgyZTNkYjNjYTdiNjgxZmNlMDQu
LmU4MzZjMDA4NTkxZWI1ZmFjZDdiY2Y5Njc3YzhmODZmN2RkYTE1YWYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA2LTEwICBTZXJnaW8gVmls
bGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0gQWRkIGEg
cHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2YgWFJXZWJHTExheWVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwMjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcgZXhwZWN0YXRpb25z
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9jb25z
dHJ1Y3Rvci5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfc2FtZU9iamVjdC5odHRwcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIwLTA2LTA5ICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2MTg0
MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJXZWJHTExheWVyX2NvbnN0cnVjdG9yLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExh
eWVyX2NvbnN0cnVjdG9yLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjQyM2IzODFk
ZGVjMGU5YjZlMzQzMmM3ODNhZjE4YjAwMjJjMjY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJf
Y29uc3RydWN0b3IuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEVu
c3VyZSB0aGF0IFhSV2ViR0xMYXllcidzIGNvbnN0cnVjdG9yIHRocm93cyBhcHByb3ByaWF0ZSBl
cnJvcnMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2ZyYW1lYnVmZmVyX3NhbWVPYmplY3QuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfc2FtZU9iamVjdC5odHRwcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWJkZGIzZmQxNTg2NjA0NGE5NDQ2YTJlNTliYTM0MTczMjAwZWZm
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2ZyYW1lYnVmZmVyX3NhbWVPYmplY3QuaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSV2ViR0xMYXllci5mcmFtZWJ1
ZmZlciBtZWV0cyBbU2FtZU9iamVjdF0gcmVxdWlyZW1lbnQgCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYmNmYTI2ZTMyZjgwZDNmYTM3MGM0ZGRmZTMx
MjgxMDcwN2M3YmQwYS4uZmJmZDA1NzVjODgxMDk0MmRmOGRhOWQ4Y2ZmZGQyZDY0ODJkYjA4MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTk1Niw2ICs5
NTYsOCBAQCB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcgogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS9pZGxoYXJuZXNzLmh0
dHBzLndpbmRvdy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL3hyRGV2aWNlX2lzU2Vzc2lvblN1
cHBvcnRlZF9pbW1lcnNpdmUtYXIuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIw
OTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS94ckRl
dmljZV9yZXF1ZXN0U2Vzc2lvbl9pbW1lcnNpdmUtYXIuaHR0cHMuaHRtbCBbIFBhc3MgXQord2Vi
a2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
V2ViR0xMYXllcl9jb25zdHJ1Y3Rvci5odHRwcy5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2Iv
MjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVy
X2ZyYW1lYnVmZmVyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQogCiAjIFBhc3Npbmcg
c2luY2UgcjI1OTUzMi4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy11
aS9vdXRsaW5lLTAxOS5odG1sCg==
</data>
<flag name="review"
          id="416940"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>