<?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>60185</bug_id>
          
          <creation_ts>2011-05-04 10:46:10 -0700</creation_ts>
          <short_desc>[Cairo] Move the global alpha property from GraphicsContext to PlatformContextCairo</short_desc>
          <delta_ts>2011-06-03 16:42:54 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>alex</cc>
    
    <cc>gustavo</cc>
    
    <cc>krit</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>398058</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-04 10:46:10 -0700</bug_when>
    <thetext>Since Cairo is the only platform using the global alpha property of the GraphicsContextState, we should move this to PlatformContextCairo. This will reduce the number of #ifdefs in GraphicsContext.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398074</commentid>
    <comment_count>1</comment_count>
      <attachid>92283</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-04 10:59:06 -0700</bug_when>
    <thetext>Created attachment 92283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398088</commentid>
    <comment_count>2</comment_count>
      <attachid>92283</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-05-04 11:12:08 -0700</bug_when>
    <thetext>Comment on attachment 92283
Patch

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

Does plaformContext depend on the current state? Does save() and restore() push and pop the globalalpha like expected?
r- because of style issues.

&gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:120
&gt; +            if (platformContext-&gt;globalAlpha() &lt; 1.0f) {

s/1.0f/1/

looks like you need globalAlpha for every condition and mostly more than once. Maybe you can save it in a local variable before the if?

&gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:129
&gt; +            if (platformContext-&gt;globalAlpha() &lt; 1.0f) {

Ditto

&gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:150
&gt; +            if (platformContext-&gt;globalAlpha() &lt; 1.0f) {

Ditto

&gt; Source/WebCore/platform/graphics/cairo/PlatformContextCairo.h:75
&gt; +    float m_globalAlpha;

no initial value 1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398275</commentid>
    <comment_count>3</comment_count>
      <attachid>92321</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-04 14:54:12 -0700</bug_when>
    <thetext>Created attachment 92321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398276</commentid>
    <comment_count>4</comment_count>
      <attachid>92283</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-04 14:56:07 -0700</bug_when>
    <thetext>Comment on attachment 92283
Patch

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

Thanks very much for the quick review, Dirk. I did indeed neglect to address save()/restore() pairs in my previous attempt. I have fixed that in my latest patch by making the image mask stack a more general &quot;state&quot; stack. This matches what Chromium dose for PlatformContextSkia.

&gt;&gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:120
&gt;&gt; +            if (platformContext-&gt;globalAlpha() &lt; 1.0f) {
&gt; 
&gt; s/1.0f/1/
&gt; 
&gt; looks like you need globalAlpha for every condition and mostly more than once. Maybe you can save it in a local variable before the if?

Fixed!

&gt;&gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:129
&gt;&gt; +            if (platformContext-&gt;globalAlpha() &lt; 1.0f) {
&gt; 
&gt; Ditto

Fixed!

&gt;&gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:150
&gt;&gt; +            if (platformContext-&gt;globalAlpha() &lt; 1.0f) {
&gt; 
&gt; Ditto

Fixed!

&gt;&gt; Source/WebCore/platform/graphics/cairo/PlatformContextCairo.h:75
&gt;&gt; +    float m_globalAlpha;
&gt; 
&gt; no initial value 1?

Fixed this as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407814</commentid>
    <comment_count>5</comment_count>
      <attachid>92321</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-05-23 01:38:38 -0700</bug_when>
    <thetext>Comment on attachment 92321
Patch

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

r=me.

&gt; Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp:3
&gt; + * Copyright (c) 2008, Google Inc. All rights reserved.

Why did you add googles copy right here?

&gt; Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp:143
&gt; +float PlatformContextCairo::globalAlpha() const
&gt; +{
&gt; +    return m_state-&gt;m_globalAlpha;
&gt; +}
&gt; +
&gt; +void PlatformContextCairo::setGlobalAlpha(float globalAlpha)
&gt; +{
&gt; +    m_state-&gt;m_globalAlpha = globalAlpha;
&gt; +}

Is this common style for Gtk port? These one-liners can be moved to the headers IMHO. But I&apos;m fine if it is the Gtk way to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409685</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-25 09:29:27 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; &gt; Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp:3
&gt; &gt; + * Copyright (c) 2008, Google Inc. All rights reserved.
&gt; 
&gt; Why did you add googles copy right here?

Some of these changes are similar enough to the Skia version that I thought it would be better to move the copyright. I was consulting the Skia version while writing this one.

&gt; &gt; Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp:143
&gt; &gt; +float PlatformContextCairo::globalAlpha() const
&gt; &gt; +{
&gt; &gt; +    return m_state-&gt;m_globalAlpha;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void PlatformContextCairo::setGlobalAlpha(float globalAlpha)
&gt; &gt; +{
&gt; &gt; +    m_state-&gt;m_globalAlpha = globalAlpha;
&gt; &gt; +}
&gt; 
&gt; Is this common style for Gtk port? These one-liners can be moved to the headers IMHO. But I&apos;m fine if it is the Gtk way to do it.

Putting these in the header file would require including GraphicsContext.h there as well potentially increasing compilation time. I&apos;m happy to move them though, if you think it&apos;s a good trade off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409686</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-25 09:30:42 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; Putting these in the header file would require including GraphicsContext.h there as well potentially increasing compilation time. I&apos;m happy to move them though, if you think it&apos;s a good trade off.

Actually, I&apos;m wrong about this. They must be in the C++ file, since m_stack is only defined there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409727</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-05-25 10:12:10 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; 
&gt; &gt; Putting these in the header file would require including GraphicsContext.h there as well potentially increasing compilation time. I&apos;m happy to move them though, if you think it&apos;s a good trade off.
&gt; 
&gt; Actually, I&apos;m wrong about this. They must be in the C++ file, since m_stack is only defined there.

Ok, than I&apos;m fine with the patch. Land it as it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410029</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-25 16:54:11 -0700</bug_when>
    <thetext>Committed r87336: &lt;http://trac.webkit.org/changeset/87336&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92283</attachid>
            <date>2011-05-04 10:59:06 -0700</date>
            <delta_ts>2011-05-04 14:56:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60185-20110504105905.patch</filename>
            <type>text/plain</type>
            <size>10811</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMzdiM2FlZDI0YTllMjBj
Mjg1OTExYjg3M2Q2M2RlZjMwNTBhNzQ2Li5mYmFlMjI5NmIyYmQ1MTFkNTRmMDEyODQzYTMzMzMx
NDk2M2EzOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDUtMDQgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDYWlyb10gTW92ZSB0aGUgZ2xvYmFsIGFscGhh
IHByb3BlcnR5IGZyb20gR3JhcGhpY3NDb250ZXh0IHRvIFBsYXRmb3JtQ29udGV4dENhaXJvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDE4NQorCisg
ICAgICAgIFJlbW92ZSBDYWlybyAjaWZkZWZzIGZyb20gR3JhcGhpY3NDb250ZXh0LmggYnkgcHVz
aGluZyB0aGUgZ2xvYmFsIGFscGhhCisgICAgICAgIHN0YXRlIGludG8gUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uIFNpbmNlIENhaXJvIGlzIHRoZSBvbmx5IHBsYXRmb3JtIHRoYXQgbmVlZHMKKyAgICAg
ICAgdG8gc3RvcmUgdGhpcywgdGhpcyBpcyB0aGUgcHJvcGVyIHBsYWNlIGZvciBpdC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIFRoaXMgaXMganVzdCBhIGNvZGUgcmVmYWN0b3IuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDogUmVtb3ZlIENhaXJvICNp
ZmRlZnMuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
b250ZXh0U2hhZG93Q2Fpcm8uY3BwOiBBY2Nlc3MgZ2xvYmFsIGFscGhhIGZyb20gUGxhdGZvcm1D
b250ZXh0Q2Fpcm8gbm93LgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6ZHJhd1Jl
Y3RTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOiBTZXQg
dGhlIGdsb2JhbCBhbHBoYSBvbiB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8uCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDogQWNjZXNzIGdsb2JhbCBhbHBoYSBmcm9tIFBs
YXRmb3JtQ29udGV4dENhaXJvIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5oOiBBZGRlZCBnbG9iYWwgYWxwaGEgcHJvcGVydHkgaGVyZS4KKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ29udGV4dENhaXJvOjpzZXRHbG9iYWxBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Z2xvYmFsQWxwaGEpOgorCiAyMDExLTA1LTA0ICBB
bmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYWNjYmQwODRmMDAwNjdmMWM4NjU2NzhhYWY3
ZGU4M2RjZTUxYmQ4Zi4uYjBjYWU0ZWZkMWUyNWY1OWU2NDcxYWU2ZjAxODM0NjIwOThmZGNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKQEAgLTE1NCw5ICsxNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlKCkKICAgICAgICAgICAgIDogc3Ryb2tlVGhpY2tuZXNzKDApCiAg
ICAgICAgICAgICAsIHNoYWRvd0JsdXIoMCkKLSNpZiBVU0UoQ0FJUk8pCi0gICAgICAgICAgICAs
IGdsb2JhbEFscGhhKDEpCi0jZW5kaWYKICAgICAgICAgICAgICwgdGV4dERyYXdpbmdNb2RlKFRl
eHRNb2RlRmlsbCkKICAgICAgICAgICAgICwgc3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKQogICAg
ICAgICAgICAgLCBmaWxsQ29sb3IoQ29sb3I6OmJsYWNrKQpAQCAtMzkwLDkgKzM4Nyw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRNaXRlckxpbWl0KGZsb2F0KTsKIAog
ICAgICAgICB2b2lkIHNldEFscGhhKGZsb2F0KTsKLSNpZiBVU0UoQ0FJUk8pCi0gICAgICAgIGZs
b2F0IGdldEFscGhhKCk7Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVPcGVyYXRvcik7CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wZXJhdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKaW5kZXggZDk2
OGVlOTgzMWVjZjZhNWU2ZGQxYTRhMGFlYjk4ZjViNTM0MDJmZS4uNDMxN2M2ZTEyZDFjNDBhODNh
NDJlYmE4YWFiYThjNGY4MDIwNzQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCkBAIC0y
MDQsNyArMjA0LDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUwNDIKICAgICBpZiAoKCFjb250ZXh0LT5n
ZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSB8fCAoaW50ZXJuYWxT
aGFkb3dXaWR0aCA+IHJlY3Qud2lkdGgoKSkKICAgICAgICAgfHwgKGludGVybmFsU2hhZG93SGVp
Z2h0ID4gcmVjdC5oZWlnaHQoKSkgfHwgKG1fdHlwZSAhPSBCbHVyU2hhZG93KSkgewotICAgICAg
ICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY29udGV4dCwgcmVjdCwgdG9wTGVmdFJhZGl1
cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBj
b250ZXh0LT5nZXRBbHBoYSgpKTsKKyAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KGNvbnRleHQsIHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0
UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmds
b2JhbEFscGhhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMjksNyArMjI5LDcg
QEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVj
dChjb250ZXh0LCBzaGFkb3dSZWN0LCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkp
OwogCiAgICAgaWYgKChzaGFkb3dUZW1wbGF0ZVNpemUud2lkdGgoKSAqIHNoYWRvd1RlbXBsYXRl
U2l6ZS5oZWlnaHQoKSA+IG1fc291cmNlUmVjdC53aWR0aCgpICogbV9zb3VyY2VSZWN0LmhlaWdo
dCgpKSkgewotICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY29udGV4dCwgcmVj
dCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRv
bVJpZ2h0UmFkaXVzLCBjb250ZXh0LT5nZXRBbHBoYSgpKTsKKyAgICAgICAgZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKGNvbnRleHQsIHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFk
aXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPmdsb2JhbEFscGhhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yNTEsNyArMjUxLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBwYXRoLmFkZFJv
dW5kZWRSZWN0KHRlbXBsYXRlUmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJv
dHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKICAgICBhcHBlbmRXZWJDb3JlUGF0
aFRvQ2Fpcm9Db250ZXh0KG1fbGF5ZXJDb250ZXh0LCBwYXRoKTsKIAotICAgIGNhaXJvX3NldF9z
b3VyY2VfcmdiYShtX2xheWVyQ29udGV4dCwgMCwgMCwgMCwgY29udGV4dC0+Z2V0QWxwaGEoKSk7
CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKG1fbGF5ZXJDb250ZXh0LCAwLCAwLCAwLCBjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2xvYmFsQWxwaGEoKSk7CiAgICAgY2Fpcm9fZmlsbCht
X2xheWVyQ29udGV4dCk7CiAKICAgICAvLyBCbHVyIHRoZSBpbWFnZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IDU4
YTdmZDJiMGM4MzFhYzA3ODE1MjAxYmJmMWQzYTQwOWI2NWRkM2EuLjgxOGYyOTJkODBlZTYxMGY1
ZTM2ZTIwNmRkODk3Mjk0YTAwNjBiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMTE3LDI1ICsxMTcsMjUgQEAg
dm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2lt
cGxlRm9udERhdGEqIGZvbnQsIGNvbnMKICAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2Rl
KCkgJiBUZXh0TW9kZUZpbGwpIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmZpbGxHcmFkaWVudCgp
KSB7CiAgICAgICAgICAgICBjYWlyb19zZXRfc291cmNlKGNyLCBjb250ZXh0LT5maWxsR3JhZGll
bnQoKS0+cGxhdGZvcm1HcmFkaWVudCgpKTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRB
bHBoYSgpIDwgMS4wZikgeworICAgICAgICAgICAgaWYgKHBsYXRmb3JtQ29udGV4dC0+Z2xvYmFs
QWxwaGEoKSA8IDEuMGYpIHsKICAgICAgICAgICAgICAgICBjYWlyb19wdXNoX2dyb3VwKGNyKTsK
LSAgICAgICAgICAgICAgICBjYWlyb19wYWludF93aXRoX2FscGhhKGNyLCBjb250ZXh0LT5nZXRB
bHBoYSgpKTsKKyAgICAgICAgICAgICAgICBjYWlyb19wYWludF93aXRoX2FscGhhKGNyLCBwbGF0
Zm9ybUNvbnRleHQtPmdsb2JhbEFscGhhKCkpOwogICAgICAgICAgICAgICAgIGNhaXJvX3BvcF9n
cm91cF90b19zb3VyY2UoY3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGNv
bnRleHQtPmZpbGxQYXR0ZXJuKCkpIHsKICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBhZmZp
bmU7CiAgICAgICAgICAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjb250ZXh0LT5maWxs
UGF0dGVybigpLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oYWZmaW5lKTsKICAgICAgICAgICAgIGNh
aXJvX3NldF9zb3VyY2UoY3IsIHBhdHRlcm4pOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdl
dEFscGhhKCkgPCAxLjBmKSB7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1Db250ZXh0LT5nbG9i
YWxBbHBoYSgpIDwgMS4wZikgewogICAgICAgICAgICAgICAgIGNhaXJvX3B1c2hfZ3JvdXAoY3Ip
OwotICAgICAgICAgICAgICAgIGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIGNvbnRleHQtPmdl
dEFscGhhKCkpOworICAgICAgICAgICAgICAgIGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIHBs
YXRmb3JtQ29udGV4dC0+Z2xvYmFsQWxwaGEoKSk7CiAgICAgICAgICAgICAgICAgY2Fpcm9fcG9w
X2dyb3VwX3RvX3NvdXJjZShjcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWlyb19w
YXR0ZXJuX2Rlc3Ryb3kocGF0dGVybik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBm
bG9hdCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYTsKICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxD
b2xvcigpLmdldFJHQkEocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotICAgICAgICAgICAgY2Fp
cm9fc2V0X3NvdXJjZV9yZ2JhKGNyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSAqIGNvbnRleHQt
PmdldEFscGhhKCkpOworICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNyLCByZWQs
IGdyZWVuLCBibHVlLCBhbHBoYSAqIHBsYXRmb3JtQ29udGV4dC0+Z2xvYmFsQWxwaGEoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChjciwgZm9udCwgZ2x5cGhzLCBu
dW1HbHlwaHMpOwogICAgIH0KQEAgLTE0NywyNSArMTQ3LDI1IEBAIHZvaWQgRm9udDo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250
LCBjb25zCiAgICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJv
a2UgJiYgY29udGV4dC0+c3Ryb2tlVGhpY2tuZXNzKCkgPCAyICogb2Zmc2V0KSB7CiAgICAgICAg
IGlmIChjb250ZXh0LT5zdHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgICAgICBjYWlyb19zZXRf
c291cmNlKGNyLCBjb250ZXh0LT5zdHJva2VHcmFkaWVudCgpLT5wbGF0Zm9ybUdyYWRpZW50KCkp
OwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEFscGhhKCkgPCAxLjBmKSB7CisgICAgICAg
ICAgICBpZiAocGxhdGZvcm1Db250ZXh0LT5nbG9iYWxBbHBoYSgpIDwgMS4wZikgewogICAgICAg
ICAgICAgICAgIGNhaXJvX3B1c2hfZ3JvdXAoY3IpOwotICAgICAgICAgICAgICAgIGNhaXJvX3Bh
aW50X3dpdGhfYWxwaGEoY3IsIGNvbnRleHQtPmdldEFscGhhKCkpOworICAgICAgICAgICAgICAg
IGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIHBsYXRmb3JtQ29udGV4dC0+Z2xvYmFsQWxwaGEo
KSk7CiAgICAgICAgICAgICAgICAgY2Fpcm9fcG9wX2dyb3VwX3RvX3NvdXJjZShjcik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC0+c3Ryb2tlUGF0dGVybigpKSB7
CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYWZmaW5lOwogICAgICAgICAgICAgY2Fpcm9f
cGF0dGVybl90KiBwYXR0ZXJuID0gY29udGV4dC0+c3Ryb2tlUGF0dGVybigpLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oYWZmaW5lKTsKICAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIHBh
dHRlcm4pOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEFscGhhKCkgPCAxLjBmKSB7Cisg
ICAgICAgICAgICBpZiAocGxhdGZvcm1Db250ZXh0LT5nbG9iYWxBbHBoYSgpIDwgMS4wZikgewog
ICAgICAgICAgICAgICAgIGNhaXJvX3B1c2hfZ3JvdXAoY3IpOwotICAgICAgICAgICAgICAgIGNh
aXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIGNvbnRleHQtPmdldEFscGhhKCkpOworICAgICAgICAg
ICAgICAgIGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIHBsYXRmb3JtQ29udGV4dC0+Z2xvYmFs
QWxwaGEoKSk7CiAgICAgICAgICAgICAgICAgY2Fpcm9fcG9wX2dyb3VwX3RvX3NvdXJjZShjcik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWlyb19wYXR0ZXJuX2Rlc3Ryb3kocGF0dGVy
bik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmbG9hdCByZWQsIGdyZWVuLCBibHVl
LCBhbHBoYTsKICAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZUNvbG9yKCkuZ2V0UkdCQShyZWQs
IGdyZWVuLCBibHVlLCBhbHBoYSk7Ci0gICAgICAgICAgICBjYWlyb19zZXRfc291cmNlX3JnYmEo
Y3IsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhICogY29udGV4dC0+Z2V0QWxwaGEoKSk7CisgICAg
ICAgICAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY3IsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhh
ICogcGxhdGZvcm1Db250ZXh0LT5nbG9iYWxBbHBoYSgpKTsKICAgICAgICAgfQogICAgICAgICBj
YWlyb19nbHlwaF9wYXRoKGNyLCBnbHlwaHMsIG51bUdseXBocyk7CiAgICAgICAgIGNhaXJvX3Nl
dF9saW5lX3dpZHRoKGNyLCBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKaW5kZXggZWVmOTdlZDJmNWE3OWYyMmU4MWRkZWY0M2MxNmFkMjAx
MTc0M2NhMC4uMjA4MWNlOTg0ZWY2MzU1OWIzODA2YTVkZDc4ZGU2YjZlYjk5YTgwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTAxMCwxMiArMTAxMCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVyKQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxwaGEpCiB7Ci0gICAgbV9zdGF0ZS5nbG9iYWxBbHBo
YSA9IGFscGhhOwotfQotCi1mbG9hdCBHcmFwaGljc0NvbnRleHQ6OmdldEFscGhhKCkKLXsKLSAg
ICByZXR1cm4gbV9zdGF0ZS5nbG9iYWxBbHBoYTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0
R2xvYmFsQWxwaGEoYWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3ApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4
IGNlN2Q4YjI2YmExOGYwNjNiMDE1ZjViZWUzYThkNDkyM2I4ZDU2YmUuLmJkZmE3NDY4ODRhNTJl
YWE0NjkwNGE5MDY3YzA2N2E2MGMwYWEwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0xNTUsNyArMTU1LDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICBjYWlyb19wYXR0ZXJuX2Rlc3Ryb3kocGF0
dGVybik7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCBkc3RSZWN0LndpZHRoKCksIGRz
dFJlY3QuaGVpZ2h0KCkpOwogICAgIGNhaXJvX2NsaXAoY3IpOwotICAgIGNhaXJvX3BhaW50X3dp
dGhfYWxwaGEoY3IsIGNvbnRleHQtPmdldEFscGhhKCkpOworICAgIGNhaXJvX3BhaW50X3dpdGhf
YWxwaGEoY3IsIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nbG9iYWxBbHBoYSgpKTsKIAog
ICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKaW5kZXgg
OTM3NDE3YWMwOTAwZGYyNzIwNmY1NzIwMTJhNDYxMTZhNzRkYTAyMS4uMzcxNzYzOWU3YjVjMDU4
YmNkZWRiM2U0Y2VmZjEyNTdhMTQyYmQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCkBA
IC02NSw5ICs2NSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNhdmUoKTsKICAgICB2b2lkIHJl
c3RvcmUoKTsKKworICAgIHZvaWQgc2V0R2xvYmFsQWxwaGEoZmxvYXQgZ2xvYmFsQWxwaGEpIHsg
bV9nbG9iYWxBbHBoYSA9IGdsb2JhbEFscGhhOyB9CisgICAgZmxvYXQgZ2xvYmFsQWxwaGEoKSB7
IHJldHVybiBtX2dsb2JhbEFscGhhOyB9CisKICAgICB2b2lkIHB1c2hJbWFnZU1hc2soY2Fpcm9f
c3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHByaXZhdGU6CisgICAgZmxvYXQgbV9n
bG9iYWxBbHBoYTsKICAgICBSZWZQdHI8Y2Fpcm9fdD4gbV9jcjsKICAgICBWZWN0b3I8SW1hZ2VN
YXNrSW5mb3JtYXRpb24+IG1fbWFza0ltYWdlU3RhY2s7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92321</attachid>
            <date>2011-05-04 14:54:12 -0700</date>
            <delta_ts>2011-06-03 16:42:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60185-20110504145410.patch</filename>
            <type>text/plain</type>
            <size>19379</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU3NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZWE2ZWQ5NmZhMWY4NTgy
NGI0NWI4MmQ2NzU4NjliNzNjMjk4NGE4Li4zYzUyNzQwZWE4ZWFjYTJjNTQxMmU0Mzg2ODQ2MWZm
NjZiMmUxYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTIgQEAKIDIwMTEtMDUtMDQgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDYWlyb10gTW92ZSB0aGUgZ2xvYmFsIGFscGhh
IHByb3BlcnR5IGZyb20gR3JhcGhpY3NDb250ZXh0IHRvIFBsYXRmb3JtQ29udGV4dENhaXJvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDE4NQorCisg
ICAgICAgIFJlbW92ZSBDYWlybyAjaWZkZWZzIGZyb20gR3JhcGhpY3NDb250ZXh0LmggYnkgcHVz
aGluZyB0aGUgZ2xvYmFsIGFscGhhCisgICAgICAgIHN0YXRlIGludG8gUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uIFNpbmNlIENhaXJvIGlzIHRoZSBvbmx5IHBsYXRmb3JtIHRoYXQgbmVlZHMKKyAgICAg
ICAgdG8gc3RvcmUgdGhpcywgdGhpcyBpcyB0aGUgcHJvcGVyIHBsYWNlIGZvciBpdC4gQ2hhbmdl
IHRoZSBpbWFnZSBtYXNrIHN0YWNrIGludG8KKyAgICAgICAgYSBtb3JlIGdlbmVyaWMgc3RhdGUg
c3RhY2sgdGhhdCBjYW4ga2VlcCB0cmFjayBvZiB0aGUgbXVsdGlwbGUgYml0cyBvZiBwbGF0Zm9y
bQorICAgICAgICBzcGVjaWZpYyBzdGF0ZSBhbmQgcHJvcGVybHkgaGFuZGxlIHNhdmUvcmVzdG9y
ZSBwYWlycy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgaXMganVzdCBhIGNvZGUgcmVm
YWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDog
UmVtb3ZlIENhaXJvICNpZmRlZnMuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwOiBBY2Nlc3MgZ2xvYmFsIGFscGhh
IGZyb20gUGxhdGZvcm1Db250ZXh0Q2Fpcm8gbm93LgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDYWlyby5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0ds
eXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0UGxhdGZvcm1GaWxsKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpzZXRQbGF0Zm9ybVN0cm9rZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYSk6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkcmF3KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwOiBNb3ZlZCBJbWFnZU1hc2tJbmZvcm1h
dGlvbiBjbGFzcyBmcm9tIHRoZQorICAgICAgICBoZWFkZXIgZmlsZSwgc2luY2UgaXQgY2FuIGJl
IHByaXZhdGUgbm93LiBBYnN0cmFjdCB0aGUgaW1hZ2UgbWFzayBzdGF0ZSBhbmQgdGhlIGdsb2Jh
bCBhbHBoYQorICAgICAgICBpbiBhIGdlbmVyaWMgU3RhdGUgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZU1hc2tJbmZvcm1hdGlvbjo6dXBkYXRlKTogCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZU1hc2tJbmZvcm1hdGlvbjo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU1h
c2tJbmZvcm1hdGlvbjo6bWFza1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VNYXNr
SW5mb3JtYXRpb246Om1hc2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4
dENhaXJvOjpTdGF0ZTo6U3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
Q29udGV4dENhaXJvOjpQbGF0Zm9ybUNvbnRleHRDYWlybyk6IEludGlhbGl6ZSB0aGUgc3RhdGUK
KyAgICAgICAgY2xhc3Mgd2hlbiB0aGlzIGNsYXNzIGlzIGNvbnN0cnVjdGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm86OnJlc3RvcmUpOiBOb3cgcG9wIHRoZSBsYXN0
IHN0YXRlIG9mZiB0aGUgc3RhdGUgc3RhY2suCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNv
bnRleHRDYWlybzo6flBsYXRmb3JtQ29udGV4dENhaXJvKTogQWRkZWQgdGhpcyBzbyB0aGF0IHdl
IGNhbiBmb3J3YXJkCisgICAgICAgIGRlY2xhcmUgdGhlIFN0YXRlIGNsYXNzIGluIHRoZSBoZWFk
ZXIuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6c2F2ZSk6IFB1c2gg
YSBuZXcgc3RhdGUgb250byB0aGUgc3RhY2suCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNv
bnRleHRDYWlybzo6cHVzaEltYWdlTWFzayk6IE9wZXJhdGUgb24gdGhlIHN0YXRlIHN0YWNrIG5v
dy4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvOjpnbG9iYWxBbHBoYSk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm86OnNldEdsb2Jh
bEFscGhhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaDogQ2hhbmdlZCB0aGUgaW1hZ2UgbWFzayBzdGFjaworICAgICAgICBp
bnRvIGEgbW9yZSBnZW5lcmljIHN0YXRlIHN0YWNrLCBtdWNoIGxpa2UgUGxhdGZvcm1Db250ZXh0
Q2hyb21pdW0uCisKKzIwMTEtMDUtMDQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KIAog
ICAgICAgICBGaXggdGhlIEdUSysgMi54IGJ1aWxkIGZvciBXaW5kb3dzLiBJbnN0ZWFkIG9mIG1h
a2luZyBnZXRTdG9ja0ljb24gYSBSZW5kZXJUaGVtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBhY2NiZDA4NGYwMDA2N2Yx
Yzg2NTY3OGFhZjdkZTgzZGNlNTFiZDhmLi5jNGY2YzY0NWM0NzM1MzQ1NTM3MDA5MzA0MDI3MDlj
ZTg1ZThiZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaApAQCAtMTU0LDkgKzE1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUoKQogICAgICAgICAgICAgOiBzdHJva2VUaGlj
a25lc3MoMCkKICAgICAgICAgICAgICwgc2hhZG93Qmx1cigwKQotI2lmIFVTRShDQUlSTykKLSAg
ICAgICAgICAgICwgZ2xvYmFsQWxwaGEoMSkKLSNlbmRpZgogICAgICAgICAgICAgLCB0ZXh0RHJh
d2luZ01vZGUoVGV4dE1vZGVGaWxsKQogICAgICAgICAgICAgLCBzdHJva2VDb2xvcihDb2xvcjo6
YmxhY2spCiAgICAgICAgICAgICAsIGZpbGxDb2xvcihDb2xvcjo6YmxhY2spCkBAIC0xODksOSAr
MTg2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzdHJva2VUaGlja25l
c3M7CiAgICAgICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAKLSNpZiBVU0UoQ0FJUk8pCi0gICAgICAg
IGZsb2F0IGdsb2JhbEFscGhhOwotI2VuZGlmCiAgICAgICAgIFRleHREcmF3aW5nTW9kZUZsYWdz
IHRleHREcmF3aW5nTW9kZTsKIAogICAgICAgICBDb2xvciBzdHJva2VDb2xvcjsKQEAgLTM5MCw5
ICszODQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TWl0ZXJMaW1p
dChmbG9hdCk7CiAKICAgICAgICAgdm9pZCBzZXRBbHBoYShmbG9hdCk7Ci0jaWYgVVNFKENBSVJP
KQotICAgICAgICBmbG9hdCBnZXRBbHBoYSgpOwotI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IpOwogICAgICAgICBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8u
Y3BwCmluZGV4IGQ5NjhlZTk4MzFlY2Y2YTVlNmRkMWE0YTBhZWI5OGY1YjUzNDAyZmUuLjY1Yzc5
MjQ4YWIzZjRmNGYyNDcwZWZkNGYxNDZlMDNkNGQwNmI1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0Nh
aXJvLmNwcApAQCAtMTk5LDEyICsxOTksMTMgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVj
dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAg
ICAgICAgbWF4KGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCksIGJvdHRvbVJpZ2h0UmFkaXVzLmhl
aWdodCgpKTsKIAogICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCk7CisgICAgZmxvYXQgZ2xvYmFsQWxwaGEgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Z2xvYmFsQWxwaGEoKTsKIAogICAgIC8vIGRyYXdTaGFkb3dlZFJlY3Qgc3RpbGwgZG9lcyBu
b3Qgd29yayB3aXRoIHJvdGF0aW9ucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDUwNDIKICAgICBpZiAoKCFjb250ZXh0LT5nZXRDVE0oKS5pc0lkZW50
aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSB8fCAoaW50ZXJuYWxTaGFkb3dXaWR0aCA+IHJl
Y3Qud2lkdGgoKSkKICAgICAgICAgfHwgKGludGVybmFsU2hhZG93SGVpZ2h0ID4gcmVjdC5oZWln
aHQoKSkgfHwgKG1fdHlwZSAhPSBCbHVyU2hhZG93KSkgewotICAgICAgICBkcmF3UmVjdFNoYWRv
d1dpdGhvdXRUaWxpbmcoY29udGV4dCwgcmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRp
dXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBjb250ZXh0LT5nZXRBbHBo
YSgpKTsKKyAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnRleHQsIHJlY3Qs
IHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21S
aWdodFJhZGl1cywgZ2xvYmFsQWxwaGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0y
MjksNyArMjMwLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChjb250ZXh0LCBzaGFkb3dSZWN0LCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4
MSwgeTIgLSB5MSkpOwogCiAgICAgaWYgKChzaGFkb3dUZW1wbGF0ZVNpemUud2lkdGgoKSAqIHNo
YWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fc291cmNlUmVjdC53aWR0aCgpICogbV9zb3Vy
Y2VSZWN0LmhlaWdodCgpKSkgewotICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
Y29udGV4dCwgcmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRS
YWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBjb250ZXh0LT5nZXRBbHBoYSgpKTsKKyAgICAgICAg
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnRleHQsIHJlY3QsIHRvcExlZnRSYWRpdXMs
IHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgZ2xv
YmFsQWxwaGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTEsNyArMjUyLDcgQEAg
dm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHRlbXBsYXRl
UmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJv
dHRvbVJpZ2h0UmFkaXVzKTsKICAgICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KG1f
bGF5ZXJDb250ZXh0LCBwYXRoKTsKIAotICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShtX2xheWVy
Q29udGV4dCwgMCwgMCwgMCwgY29udGV4dC0+Z2V0QWxwaGEoKSk7CisgICAgY2Fpcm9fc2V0X3Nv
dXJjZV9yZ2JhKG1fbGF5ZXJDb250ZXh0LCAwLCAwLCAwLCBnbG9iYWxBbHBoYSk7CiAgICAgY2Fp
cm9fZmlsbChtX2xheWVyQ29udGV4dCk7CiAKICAgICAvLyBCbHVyIHRoZSBpbWFnZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3Bw
CmluZGV4IDU4YTdmZDJiMGM4MzFhYzA3ODE1MjAxYmJmMWQzYTQwOWI2NWRkM2EuLmRlZDJkN2Uz
MGQzY2IxYjZkOTEyYTcwY2M3ZGZkMTdmMGYwOGIyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMTEzLDI5ICsx
MTMsMzIgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnMKIAogICAgIGNhaXJvX3QqIGNyID0gcGxh
dGZvcm1Db250ZXh0LT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOworCisgICAgZmxvYXQgZ2xv
YmFsQWxwaGEgPSBwbGF0Zm9ybUNvbnRleHQtPmdsb2JhbEFscGhhKCk7CisKICAgICBwcmVwYXJl
Q29udGV4dEZvckdseXBoRHJhd2luZyhjciwgZm9udCwgcG9pbnQpOwogICAgIGlmIChjb250ZXh0
LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewogICAgICAgICBpZiAoY29udGV4
dC0+ZmlsbEdyYWRpZW50KCkpIHsKICAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIGNv
bnRleHQtPmZpbGxHcmFkaWVudCgpLT5wbGF0Zm9ybUdyYWRpZW50KCkpOwotICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmdldEFscGhhKCkgPCAxLjBmKSB7CisgICAgICAgICAgICBpZiAoZ2xvYmFs
QWxwaGEgPCAxKSB7CiAgICAgICAgICAgICAgICAgY2Fpcm9fcHVzaF9ncm91cChjcik7Ci0gICAg
ICAgICAgICAgICAgY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgY29udGV4dC0+Z2V0QWxwaGEo
KSk7CisgICAgICAgICAgICAgICAgY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgZ2xvYmFsQWxw
aGEpOwogICAgICAgICAgICAgICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UoY3IpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQtPmZpbGxQYXR0ZXJuKCkpIHsK
ICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBhZmZpbmU7CiAgICAgICAgICAgICBjYWlyb19w
YXR0ZXJuX3QqIHBhdHRlcm4gPSBjb250ZXh0LT5maWxsUGF0dGVybigpLT5jcmVhdGVQbGF0Zm9y
bVBhdHRlcm4oYWZmaW5lKTsKICAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIHBhdHRl
cm4pOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEFscGhhKCkgPCAxLjBmKSB7CisgICAg
ICAgICAgICBpZiAoZ2xvYmFsQWxwaGEgPCAxKSB7CiAgICAgICAgICAgICAgICAgY2Fpcm9fcHVz
aF9ncm91cChjcik7Ci0gICAgICAgICAgICAgICAgY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwg
Y29udGV4dC0+Z2V0QWxwaGEoKSk7CisgICAgICAgICAgICAgICAgY2Fpcm9fcGFpbnRfd2l0aF9h
bHBoYShjciwgZ2xvYmFsQWxwaGEpOwogICAgICAgICAgICAgICAgIGNhaXJvX3BvcF9ncm91cF90
b19zb3VyY2UoY3IpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2Fpcm9fcGF0dGVybl9k
ZXN0cm95KHBhdHRlcm4pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZmxvYXQgcmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGE7CiAgICAgICAgICAgICBjb250ZXh0LT5maWxsQ29sb3IoKS5n
ZXRSR0JBKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKLSAgICAgICAgICAgIGNhaXJvX3NldF9z
b3VyY2VfcmdiYShjciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgKiBjb250ZXh0LT5nZXRBbHBo
YSgpKTsKKyAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjciwgcmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGEgKiBnbG9iYWxBbHBoYSk7CiAgICAgICAgIH0KICAgICAgICAgZHJhd0dseXBo
c1RvQ29udGV4dChjciwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgIH0KQEAgLTE0Nywy
NSArMTUwLDI1IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAgICAgaWYgKGNvbnRleHQtPnRl
eHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UgJiYgY29udGV4dC0+c3Ryb2tlVGhpY2tu
ZXNzKCkgPCAyICogb2Zmc2V0KSB7CiAgICAgICAgIGlmIChjb250ZXh0LT5zdHJva2VHcmFkaWVu
dCgpKSB7CiAgICAgICAgICAgICBjYWlyb19zZXRfc291cmNlKGNyLCBjb250ZXh0LT5zdHJva2VH
cmFkaWVudCgpLT5wbGF0Zm9ybUdyYWRpZW50KCkpOwotICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmdldEFscGhhKCkgPCAxLjBmKSB7CisgICAgICAgICAgICBpZiAoZ2xvYmFsQWxwaGEgPCAxKSB7
CiAgICAgICAgICAgICAgICAgY2Fpcm9fcHVzaF9ncm91cChjcik7Ci0gICAgICAgICAgICAgICAg
Y2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgY29udGV4dC0+Z2V0QWxwaGEoKSk7CisgICAgICAg
ICAgICAgICAgY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgZ2xvYmFsQWxwaGEpOwogICAgICAg
ICAgICAgICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UoY3IpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQtPnN0cm9rZVBhdHRlcm4oKSkgewogICAgICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGFmZmluZTsKICAgICAgICAgICAgIGNhaXJvX3BhdHRlcm5fdCog
cGF0dGVybiA9IGNvbnRleHQtPnN0cm9rZVBhdHRlcm4oKS0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KGFmZmluZSk7CiAgICAgICAgICAgICBjYWlyb19zZXRfc291cmNlKGNyLCBwYXR0ZXJuKTsKLSAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRBbHBoYSgpIDwgMS4wZikgeworICAgICAgICAgICAg
aWYgKGdsb2JhbEFscGhhIDwgMSkgewogICAgICAgICAgICAgICAgIGNhaXJvX3B1c2hfZ3JvdXAo
Y3IpOwotICAgICAgICAgICAgICAgIGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIGNvbnRleHQt
PmdldEFscGhhKCkpOworICAgICAgICAgICAgICAgIGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3Is
IGdsb2JhbEFscGhhKTsKICAgICAgICAgICAgICAgICBjYWlyb19wb3BfZ3JvdXBfdG9fc291cmNl
KGNyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhaXJvX3BhdHRlcm5fZGVzdHJveShw
YXR0ZXJuKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZsb2F0IHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhOwogICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlQ29sb3IoKS5nZXRSR0JB
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKLSAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vf
cmdiYShjciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgKiBjb250ZXh0LT5nZXRBbHBoYSgpKTsK
KyAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjciwgcmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEgKiBnbG9iYWxBbHBoYSk7CiAgICAgICAgIH0KICAgICAgICAgY2Fpcm9fZ2x5cGhfcGF0
aChjciwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChj
ciwgY29udGV4dC0+c3Ryb2tlVGhpY2tuZXNzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCmluZGV4IGVlZjk3ZWQyZjVhNzlmMjJlODFkZGVmNDNjMTZhZDIwMTE3NDNjYTAuLjNhOTI4
YjlmMTc2ZThhNmUzYWQ0ZWNiNDA0MmM1ZTBjNzlmOTBjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFBsYXRm
b3JtRmlsbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNhaXJvX3QqIGNyKQogICAgIGVsc2UK
ICAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgY29udGV4dC0+ZmlsbENvbG9yKCkp
OwogICAgIGNhaXJvX2NsaXBfcHJlc2VydmUoY3IpOwotICAgIGNhaXJvX3BhaW50X3dpdGhfYWxw
aGEoY3IsIHN0YXRlLmdsb2JhbEFscGhhKTsKKyAgICBjYWlyb19wYWludF93aXRoX2FscGhhKGNy
LCBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2xvYmFsQWxwaGEoKSk7CiAgICAgY2Fpcm9f
cmVzdG9yZShjcik7CiAgICAgaWYgKHBhdHRlcm4pCiAgICAgICAgIGNhaXJvX3BhdHRlcm5fZGVz
dHJveShwYXR0ZXJuKTsKQEAgLTkzLDYgKzkzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFBs
YXRmb3JtRmlsbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNhaXJvX3QqIGNyKQogCiBzdGF0
aWMgaW5saW5lIHZvaWQgc2V0UGxhdGZvcm1TdHJva2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjYWlyb190KiBjcikKIHsKKyAgICBmbG9hdCBnbG9iYWxBbHBoYSA9IGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5nbG9iYWxBbHBoYSgpOwogICAgIGNhaXJvX3BhdHRlcm5fdCogcGF0dGVy
biA9IDA7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgCkBAIC0xMDQsMTIgKzEwNSwxMiBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgc2V0UGxhdGZvcm1TdHJva2UoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjYWlyb190KiBjcikKICAgICB9IGVsc2UgaWYgKHN0YXRlLnN0cm9rZUdyYWRpZW50KQog
ICAgICAgICBjYWlyb19zZXRfc291cmNlKGNyLCBzdGF0ZS5zdHJva2VHcmFkaWVudC0+cGxhdGZv
cm1HcmFkaWVudCgpKTsKICAgICBlbHNlICB7Ci0gICAgICAgIENvbG9yIHN0cm9rZUNvbG9yID0g
Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjb250ZXh0LT5zdHJva2VDb2xvcigpLnJnYigpLCBjb250
ZXh0LT5zdHJva2VDb2xvcigpLmFscGhhKCkgLyAyNTUuZiAqIHN0YXRlLmdsb2JhbEFscGhhKTsK
KyAgICAgICAgQ29sb3Igc3Ryb2tlQ29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKGNvbnRl
eHQtPnN0cm9rZUNvbG9yKCkucmdiKCksIGNvbnRleHQtPnN0cm9rZUNvbG9yKCkuYWxwaGEoKSAv
IDI1NS5mICogZ2xvYmFsQWxwaGEpOwogICAgICAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNy
LCBzdHJva2VDb2xvcik7CiAgICAgfQotICAgIGlmIChzdGF0ZS5nbG9iYWxBbHBoYSA8IDEuMGYg
JiYgKHN0YXRlLnN0cm9rZVBhdHRlcm4gfHwgc3RhdGUuc3Ryb2tlR3JhZGllbnQpKSB7CisgICAg
aWYgKGdsb2JhbEFscGhhIDwgMS4wZiAmJiAoc3RhdGUuc3Ryb2tlUGF0dGVybiB8fCBzdGF0ZS5z
dHJva2VHcmFkaWVudCkpIHsKICAgICAgICAgY2Fpcm9fcHVzaF9ncm91cChjcik7Ci0gICAgICAg
IGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIHN0YXRlLmdsb2JhbEFscGhhKTsKKyAgICAgICAg
Y2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgZ2xvYmFsQWxwaGEpOwogICAgICAgICBjYWlyb19w
b3BfZ3JvdXBfdG9fc291cmNlKGNyKTsKICAgICB9CiAgICAgY2Fpcm9fc3Ryb2tlX3ByZXNlcnZl
KGNyKTsKQEAgLTEwMTAsMTIgKzEwMTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TWl0
ZXJMaW1pdChmbG9hdCBtaXRlcikKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZs
b2F0IGFscGhhKQogewotICAgIG1fc3RhdGUuZ2xvYmFsQWxwaGEgPSBhbHBoYTsKLX0KLQotZmxv
YXQgR3JhcGhpY3NDb250ZXh0OjpnZXRBbHBoYSgpCi17Ci0gICAgcmV0dXJuIG1fc3RhdGUuZ2xv
YmFsQWxwaGE7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldEdsb2JhbEFscGhhKGFscGhhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9u
KENvbXBvc2l0ZU9wZXJhdG9yIG9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCBjZTdkOGIyNmJhMThmMDYzYjAx
NWY1YmVlM2E4ZDQ5MjNiOGQ1NmJlLi5iZGZhNzQ2ODg0YTUyZWFhNDY5MDRhOTA2N2MwNjdhNjBj
MGFhMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUNhaXJvLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29u
c3QgRmxvCiAgICAgY2Fpcm9fcGF0dGVybl9kZXN0cm95KHBhdHRlcm4pOwogICAgIGNhaXJvX3Jl
Y3RhbmdsZShjciwgMCwgMCwgZHN0UmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpKTsKICAg
ICBjYWlyb19jbGlwKGNyKTsKLSAgICBjYWlyb19wYWludF93aXRoX2FscGhhKGNyLCBjb250ZXh0
LT5nZXRBbHBoYSgpKTsKKyAgICBjYWlyb19wYWludF93aXRoX2FscGhhKGNyLCBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Z2xvYmFsQWxwaGEoKSk7CiAKICAgICBjb250ZXh0LT5yZXN0b3Jl
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAppbmRleCAwNjFlZTA2YTEzY2YxNTFk
ZjMxMDZjMDBjN2FkMzc4MTIxYjY0MzY2Li41MGNiNmMyZTQ3OGM3Yzk2ZTY3ZmI2ZDRlZWQxZDVh
MjU2N2NlN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChj
KSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMCwyNyArMzEsNzcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisvLyBJbiBDYWlybyBpbWFnZSBtYXNraW5nIGlzIGltbWVkaWF0ZSwgc28gdG8gZW11bGF0
ZSBpbWFnZSBjbGlwcGluZyB3ZSBtdXN0IHNhdmUgbWFza2luZworLy8gZGV0YWlscyBhcyBwYXJ0
IG9mIHRoZSBjb250ZXh0IHN0YXRlIGFuZCBhcHBseSB0aGVtIGR1cmluZyBwbGF0Zm9ybSByZXN0
b3JlLgorY2xhc3MgSW1hZ2VNYXNrSW5mb3JtYXRpb24geworcHVibGljOgorICAgIHZvaWQgdXBk
YXRlKGNhaXJvX3N1cmZhY2VfdCogbWFza1N1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgbWFza1Jl
Y3QpCisgICAgeworICAgICAgICBtX21hc2tTdXJmYWNlID0gbWFza1N1cmZhY2U7CisgICAgICAg
IG1fbWFza1JlY3QgPSBtYXNrUmVjdDsKKyAgICB9CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX21hc2tTdXJmYWNlOyB9CisgICAgY2Fpcm9fc3VyZmFjZV90KiBtYXNrU3Vy
ZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1N1cmZhY2UuZ2V0KCk7IH0KKyAgICBjb25zdCBG
bG9hdFJlY3QmIG1hc2tSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9tYXNrUmVjdDsgfQorCitwcml2
YXRlOgorICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fbWFza1N1cmZhY2U7CisgICAgRmxv
YXRSZWN0IG1fbWFza1JlY3Q7Cit9OworCisKKy8vIEVuY2Fwc3VsYXRlcyB0aGUgYWRkaXRpb25h
bCBwYWludGluZyBzdGF0ZSBpbmZvcm1hdGlvbiB3ZSBzdG9yZSBmb3IgZWFjaAorLy8gcHVzaGVk
IGdyYXBoaWNzIHN0YXRlLgorY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OlN0YXRlIHsKK3B1
YmxpYzoKKyAgICBTdGF0ZSgpCisgICAgICAgIDogbV9nbG9iYWxBbHBoYSgxKQorICAgIHsKKyAg
ICB9CisKKyAgICBTdGF0ZShjb25zdCBTdGF0ZSYgc3RhdGUpCisgICAgICAgIDogbV9nbG9iYWxB
bHBoYShzdGF0ZS5tX2dsb2JhbEFscGhhKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNv
cHkgbV9pbWFnZU1hc2tJbmZvcm1hdGlvbiBiZWNhdXNlIG90aGVyd2lzZSBpdCB3b3VsZCBiZSBh
cHBsaWVkCisgICAgICAgIC8vIG1vcmUgdGhhbiBvbmNlIGR1cmluZyBzdWJzZXF1ZW50IGNhbGxz
IHRvIHJlc3RvcmUoKS4KKyAgICB9CisKKyAgICBJbWFnZU1hc2tJbmZvcm1hdGlvbiBtX2ltYWdl
TWFza0luZm9ybWF0aW9uOworICAgIGZsb2F0IG1fZ2xvYmFsQWxwaGE7Cit9OworCiBQbGF0Zm9y
bUNvbnRleHRDYWlybzo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8oY2Fpcm9fdCogY3IpCiAgICAgOiBt
X2NyKGNyKQogeworICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoU3RhdGUoKSk7CisgICAgbV9zdGF0
ZSA9ICZtX3N0YXRlU3RhY2subGFzdCgpOwogfQogCiB2b2lkIFBsYXRmb3JtQ29udGV4dENhaXJv
OjpyZXN0b3JlKCkKIHsKLSAgICBjb25zdCBJbWFnZU1hc2tJbmZvcm1hdGlvbiYgbWFza0luZm9y
bWF0aW9uID0gbV9tYXNrSW1hZ2VTdGFjay5sYXN0KCk7CisgICAgY29uc3QgSW1hZ2VNYXNrSW5m
b3JtYXRpb24mIG1hc2tJbmZvcm1hdGlvbiA9IG1fc3RhdGUtPm1faW1hZ2VNYXNrSW5mb3JtYXRp
b247CiAgICAgaWYgKG1hc2tJbmZvcm1hdGlvbi5pc1ZhbGlkKCkpIHsKICAgICAgICAgY29uc3Qg
RmxvYXRSZWN0JiBtYXNrUmVjdCA9IG1hc2tJbmZvcm1hdGlvbi5tYXNrUmVjdCgpOwogICAgICAg
ICBjYWlyb19wb3BfZ3JvdXBfdG9fc291cmNlKG1fY3IuZ2V0KCkpOwogICAgICAgICBjYWlyb19t
YXNrX3N1cmZhY2UobV9jci5nZXQoKSwgbWFza0luZm9ybWF0aW9uLm1hc2tTdXJmYWNlKCksIG1h
c2tSZWN0LngoKSwgbWFza1JlY3QueSgpKTsKICAgICB9Ci0gICAgbV9tYXNrSW1hZ2VTdGFjay5y
ZW1vdmVMYXN0KCk7CisKKyAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOworICAgIEFTU0VS
VCghbV9zdGF0ZVN0YWNrLmlzRW1wdHkoKSk7CisgICAgbV9zdGF0ZSA9ICZtX3N0YXRlU3RhY2su
bGFzdCgpOwogCiAgICAgY2Fpcm9fcmVzdG9yZShtX2NyLmdldCgpKTsKIH0KIAorUGxhdGZvcm1D
b250ZXh0Q2Fpcm86On5QbGF0Zm9ybUNvbnRleHRDYWlybygpCit7Cit9CisKIHZvaWQgUGxhdGZv
cm1Db250ZXh0Q2Fpcm86OnNhdmUoKQogewotICAgIG1fbWFza0ltYWdlU3RhY2suYXBwZW5kKElt
YWdlTWFza0luZm9ybWF0aW9uKCkpOworICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoU3RhdGUoKm1f
c3RhdGUpKTsKKyAgICBtX3N0YXRlID0gJm1fc3RhdGVTdGFjay5sYXN0KCk7CiAKICAgICBjYWly
b19zYXZlKG1fY3IuZ2V0KCkpOwogfQpAQCAtNTksOCArMTEwLDggQEAgdm9pZCBQbGF0Zm9ybUNv
bnRleHRDYWlybzo6cHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0
IEZsb2F0UmUKIHsKICAgICAvLyBXZSBtdXN0IGNhbGwgc2F2ZVBsYXRmb3JtU3RhdGUgYXQgbGVh
c3Qgb25jZSBiZWZvcmUgd2UgY2FuIHVzZSBpbWFnZSBtYXNraW5nLAogICAgIC8vIHNpbmNlIHdl
IGFjdHVhbGx5IGFwcGx5IHRoZSBtYXNrIGluIHJlc3RvcmVQbGF0Zm9ybVN0YXRlLgotICAgIEFT
U0VSVCghbV9tYXNrSW1hZ2VTdGFjay5pc0VtcHR5KCkpOwotICAgIG1fbWFza0ltYWdlU3RhY2su
bGFzdCgpLnVwZGF0ZShzdXJmYWNlLCByZWN0KTsKKyAgICBBU1NFUlQoIW1fc3RhdGVTdGFjay5p
c0VtcHR5KCkpOworICAgIG1fc3RhdGUtPm1faW1hZ2VNYXNrSW5mb3JtYXRpb24udXBkYXRlKHN1
cmZhY2UsIHJlY3QpOwogCiAgICAgLy8gQ2Fpcm8gZG9lc24ndCBzdXBwb3J0IHRoZSBub3Rpb24g
b2YgYW4gaW1hZ2UgY2xpcCwgc28gd2UgcHVzaCBhIGdyb3VwIGhlcmUKICAgICAvLyBhbmQgdGhl
biBwYWludCBpdCB0byB0aGUgc3VyZmFjZSB3aXRoIGFuIGltYWdlIG1hc2sgKHdoaWNoIGlzIGFu
IGltbWVkaWF0ZQpAQCAtODEsNSArMTMyLDE0IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OnB1c2hJbWFnZU1hc2soY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlCiAg
ICAgY2Fpcm9fZmlsbChtX2NyLmdldCgpKTsKIH0KIAorZmxvYXQgUGxhdGZvcm1Db250ZXh0Q2Fp
cm86Omdsb2JhbEFscGhhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0ZS0+bV9nbG9iYWxB
bHBoYTsKK30KKwordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6c2V0R2xvYmFsQWxwaGEoZmxv
YXQgZ2xvYmFsQWxwaGEpCit7CisgICAgbV9zdGF0ZS0+bV9nbG9iYWxBbHBoYSA9IGdsb2JhbEFs
cGhhOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aAppbmRleCA5Mzc0MTdhYzA5MDBkZjI3MjA2ZjU3MjAxMmE0NjExNmE3NGRhMDIxLi44NmZmZjI0
OThmNjcwNjFiYmQzNTY1NGM1NWEyN2FmNDAyMzJiMDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENh
aXJvLmgKQEAgLTMxLDI1ICszMSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gSW4g
Q2Fpcm8gaW1hZ2UgbWFza2luZyBpcyBpbW1lZGlhdGUsIHNvIHRvIGVtdWxhdGUgaW1hZ2UgY2xp
cHBpbmcgd2UgbXVzdCBzYXZlIG1hc2tpbmcKLS8vIGRldGFpbHMgYXMgcGFydCBvZiB0aGUgY29u
dGV4dCBzdGF0ZSBhbmQgYXBwbHkgdGhlbSBkdXJpbmcgcGxhdGZvcm0gcmVzdG9yZS4KLWNsYXNz
IEltYWdlTWFza0luZm9ybWF0aW9uIHsKLXB1YmxpYzoKLSAgICB2b2lkIHVwZGF0ZShjYWlyb19z
dXJmYWNlX3QqIG1hc2tTdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIG1hc2tSZWN0KQotICAgIHsK
LSAgICAgICAgbV9tYXNrU3VyZmFjZSA9IG1hc2tTdXJmYWNlOwotICAgICAgICBtX21hc2tSZWN0
ID0gbWFza1JlY3Q7Ci0gICAgfQotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
bV9tYXNrU3VyZmFjZTsgfQotICAgIGNhaXJvX3N1cmZhY2VfdCogbWFza1N1cmZhY2UoKSBjb25z
dCB7IHJldHVybiBtX21hc2tTdXJmYWNlLmdldCgpOyB9Ci0gICAgY29uc3QgRmxvYXRSZWN0JiBt
YXNrUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1JlY3Q7IH0KLQotcHJpdmF0ZToKLSAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX21hc2tTdXJmYWNlOwotICAgIEZsb2F0UmVjdCBtX21h
c2tSZWN0OwotfTsKLQogLy8gTXVjaCBsaWtlIFBsYXRmb3JtQ29udGV4dFNraWEgaW4gdGhlIFNr
aWEgcG9ydCwgdGhpcyBjbGFzcyBob2xkcyBpbmZvcm1hdGlvbiB0aGF0CiAvLyB3b3VsZCBub3Jt
YWxseSBiZSBwcml2YXRlIHRvIEdyYXBoaWNzQ29udGV4dCwgZXhjZXB0IHRoYXQgd2Ugd2FudCB0
byBhbGxvdyBhY2Nlc3MKIC8vIHRvIGl0IGluIEZvbnQgYW5kIEltYWdlIGNvZGUuIFRoaXMgYWxs
b3dzIHVzIHRvIHNlcGFyYXRlIHRoZSBjb25jZXJucyBvZiBDYWlyby1zcGVjaWZpYwpAQCAtNTks
MTcgKzQwLDI1IEBAIGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQbGF0Zm9ybUNvbnRleHRDYWlybyk7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1D
b250ZXh0Q2Fpcm8oY2Fpcm9fdCopOworICAgIH5QbGF0Zm9ybUNvbnRleHRDYWlybygpOwogCiAg
ICAgY2Fpcm9fdCogY3IoKSB7IHJldHVybiBtX2NyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRDcihj
YWlyb190KiBjcikgeyBtX2NyID0gY3I7IH0KIAogICAgIHZvaWQgc2F2ZSgpOwogICAgIHZvaWQg
cmVzdG9yZSgpOworCisgICAgdm9pZCBzZXRHbG9iYWxBbHBoYShmbG9hdCk7CisgICAgZmxvYXQg
Z2xvYmFsQWxwaGEoKSBjb25zdDsKKwogICAgIHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJm
YWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9f
dD4gbV9jcjsKLSAgICBWZWN0b3I8SW1hZ2VNYXNrSW5mb3JtYXRpb24+IG1fbWFza0ltYWdlU3Rh
Y2s7CisKKyAgICBjbGFzcyBTdGF0ZTsKKyAgICBTdGF0ZSogbV9zdGF0ZTsKKyAgICBXVEY6OlZl
Y3RvcjxTdGF0ZT4gbV9zdGF0ZVN0YWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>